diff --git a/.gitignore b/.gitignore index 7cd6ca0e0..b33f1485c 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ # Windows Compiled files *.exe *.pdb +*.ilk # Compiled Python *.pyc @@ -31,6 +32,8 @@ config.log package.txt lib include +build_info.cpp +/dist.txt # Backup files *~ @@ -39,3 +42,15 @@ include .ninja_deps .ninja_log build.ninja + +# VS Code files +.vscode +*.code-workspace + +# Patches, regects, origs +*.patch +*.rej +*.orig + +# Env files +/scons-env-options.py diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..66f2af71d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,67 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2024, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + +sudo: false +dist: bionic +language: cpp +compiler: + - gcc +python: + - "3.8" + +cache: ccache + +addons: + apt: + update: true + packages: + - scons + - build-essential + - libssl-dev + - binutils-dev + - libiberty-dev + - libmariadb-dev-compat + - libleveldb-dev + - libsnappy-dev + - git + +jobs: + include: + - stage: Build + script: + - scons + - stage: Test + script: + - scons + - cd tests + - scons + - ./testHarness diff --git a/CODE_TAG b/CODE_TAG index eeda1ab93..7b3addcf6 100644 --- a/CODE_TAG +++ b/CODE_TAG @@ -1,7 +1,7 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or diff --git a/COPYING b/COPYING deleted file mode 100644 index e5ab03e12..000000000 --- a/COPYING +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 0012c4ad2..000000000 --- a/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -# Build C! - -FROM debian:testing - -MAINTAINER Joseph Coffland - -# Get the prerequisites -RUN apt-get update && \ - apt-get install -y scons git build-essential libssl-dev \ - libboost-iostreams-dev libboost-system-dev libboost-filesystem-dev \ - libboost-regex-dev libv8-dev - -# Move the source into the image -ADD . /opt/cbang -WORKDIR /opt/cbang -ENV CBANG_HOME /opt/cbang - -# Build it -RUN scons -j 4 - diff --git a/README.md b/README.md index 04921fee6..dad2b44c9 100644 --- a/README.md +++ b/README.md @@ -2,19 +2,21 @@ C! (a.k.a. C-Bang) ================== The C! or cbang library is a collection of C++ utility libraries -developed over the course of +15 years and several major C++ +developed over the course of +20 years and several major C++ application development projects. It should compile and run on -Windows, Linux and OSX using a modern C++ compiler. +Windows, Linux and macOS using a modern C++ compiler such as GNU C++, +clang or MSVC. Many of the facilities of C! are geared towards cross-platform application development and providing basic services that most applications need such as a configuration system, run-time build -information, logging facilities, threads, smart pointers, simple -embedded scripting, etc. +information, configuration and logging facilities, and smart pointers. C!'s philosophy is to create clean, simple, readable, modular and -reusable code. C! also encourages exception based error handling, and -light use of C++ templates and C preprocesor macros. +reusable code. C! also encourages exception based error handling, +light use of C++ templates and C preprocessor macros. Event driven +asynchronous programming is preferred but threading is also fully +supported. C! "leans" on the venerable boost library but also reimplements several boost APIs which are considered by the author to be too @@ -25,76 +27,81 @@ be any sort of grand unifying system for C++ application development. However, I hope you find many parts of the library useful in your C++ development projects. -For licensing information please see the files LICENSE and COPYING. - +For licensing information please see ``LICENSE`` file. # Features - - Smart pointers, both thread safe and non, with downcasting capability. - - Threading, mutexes, conditions & thread local storage - - Soft exit & signal handling + + - Smart pointers, both thread safe and non, with down-casting capability. - Extensively configurable logging facilities. - - Exception class with stack trace capability including line and file info. + - Stack trace capability with function, file and line. (macOS and Linux only) - Exception throwing and catching convenience macros. - - HTTP and HTTPS client and server. + - Command line parsing and configuration file configuration system. + - HTTP, HTTPS and Websocket client and server. + - Automatic ACMEv2 TLS certification acquisition. + - OAuth2 logins. + - Event driven programming via C++ wrapper for libevent. + - Asynchronous IP address / hostname resolution, parsing and manipulation. + - IPv6 support. - Socket client and server with asynchronous capability. - - XMacro based enum implementation. - - PyON Python Object Notation language for serializing and deserializing data. - - Simple scripting language for configuration and text based command server. + - Threading, mutexes, conditions & thread local storage + - Soft exit & signal handling + - GPU detection with OpenCL and CUDA support detection. + - CPU type and feature detection for x86, amd64 and aarch64. + - PCI bus enumeration. + - Embedded Javascript (ECMA) support. + - Dynamic library and symbol loading. + - Subprocess handling. + - Power management and system idle detection. + - XMacro based enumerations with automatic string parsing and printing. - Software build information system. - - A system for compiling in a directory tree of resources. + - Compile in resource trees from directory of files on disk. - Network packet automatic byte order and string packing functionality. - - Temporary directories, directory traversal & file operations - - C++ style number, to and from, string conversions. - - iostream utilities. - - Application configuration system. - - XML facilities. + - Temporary directories, directory traversal & file operations. + - File locking. + - C++ style number conversions to/from string. + - std::iostream and compression utilities. + - JSON, YAML and XML facilities. - TAR file read and write. - Time and timing functions. - OpenSSL C++ interface. - - IP address / hostname resolution, parsing and manipulation. - URL parsing. - Geometric primitives. - - C++ wrapper for libevent. - - Async MariaDB interface using libevent. + - Async MariaDB/MySQL client interface. - Human readable size & time formatting. - Many other utility classes. - Completely contained in it's own C++ namespace. - - Consistent and clean code formating <= 80 column width. - + - Consistent and clean code formatting <= 80 column width. + - Platform independent API. # Prerequisites -## General +## Required - A modern C++ compiler: GNU C++, Intel C++, MSVS - - SCons http://scons.org/ - - openssl http://www.openssl.org/ (optional) - - ChakraCore https://github.com/Microsoft/ChakraCore/ (optional) - - V8 https://developers.google.com/v8/ (optional) - - mariadb https://mariadb.org/ (optional) + - SCons http://scons.org/ -## Debug mode only +## Optional +The following add optional features to C!. - - libbfd ftp://ftp.gnu.org/old-gnu/Manuals/bfd-2.9.1/html_mono/bfd.html - - libiberty https://gcc.gnu.org/onlinedocs/libiberty/ + - openssl http://www.openssl.org/ + - V8 https://developers.google.com/v8/ + - mariadb https://mariadb.org/ + - LevelDB https://github.com/google/leveldb + - Snappy http://google.github.io/snappy/ -## Windows only - - Winsock +## Debug mode +Debug mode is enabled by compiling with ``debug=``. -## OS-X only - - IOKit - - CoreFoundation +Compiling with ``libbfd`` will enhance stack track output on Linux systems. +Install ``binutils-dev`` to get ``libbfd`` on Debian. -## POSIX/Linux only - - pthreads - - libbfd (For debug mode only) +## Debian/Ubuntu install +On most Debian based systems the prerequisites can be installed with the +following command line: -On Debian based systems the prerequisites can be installed with the following -command line: + sudo apt-get install -y scons build-essential libssl-dev binutils-dev \ + libiberty-dev libmariadb-dev-compat libleveldb-dev libsnappy-dev git \ + libzstd-dev - sudo apt-get install scons build-essential libssl-dev binutils-dev \ - libiberty-dev libmariadbclient-dev git - -Unfortunately, at this time, there is no ChakraCore package for Debian. See -the build instructions below. +The necessary library packages can very by Linux distribution type and version. # Build @@ -112,7 +119,7 @@ command line to scons or place in a configuration file named - strict - Enable strict checking - distcc - Enable distcc distributed compile system - ccache - Enable ccache caching compile system - - backtrace_debugger - Enable the printing backtraces + - backtrace_debugger - Enable the printing of stack traces These options are enabled by setting them to 1. For example: @@ -126,76 +133,6 @@ strict checking. # Testing the Build -You can testing C! by going to the *tests* directory in the root of the -cbang source tree, building the test programs and running the test harness: - - cd tests - scons - ./testHarness - -# Troubleshooting - -This section describes some common problems and their solutions. - -## OpenSSL Library Less than v1.0.0 - -If you get an error about the openssl library version being too old then you -either need to upgrade your package or build openssl from source like this: - - wget http://www.openssl.org/source/openssl-1.0.1f.tar.gz - tar xzvf openssl-1.0.1f.tar.gz - cd openssl-1.0.1f - ./config - make - export OPENSSL_HOME=$PWD - -Then try building C!. - -## ChakraCore - -You can either download a prebuilt ChakraCore or build it yourself. Currently -we require a fork of ChakraCore which includes some fixes. - -### Windows Binaries - -You can find windows binaries of ChakraCore here: -https://github.com/CauldronDevelopmentLLC/ChakraCore/releases/tag/v2.0.0.1 - -### Building ChakraCore - -ChakraCore is the Javascript engine used by the Microsoft Edge browser. It -is fast and Open-Source. Unfortunately there currently aren't any readily -available Debian packages for ChakraCore so you will have to build it from -source. - -First make sure you have the prerequisites: - - sudo apt-get install -y cmake clang libunwind-dev libicu-dev - -You need at least cmake 3.2 and clang 3.8. If your system doesn't have these -then you need to build them from source. - - -First download the source code: - - git clone --depth=1 https://github.com/CauldronDevelopmentLLC/ChakraCore.git - -Then build it: - - cd ChakraCore - ./build.sh --static -j 8 - -Next collect the various libraries it produces in to one: - - mkdir tmp - cd tmp - for i in $(find ../Build* -name \*.a); do - ar x $i - done - ar rcs ../libChakraCore.a *.o - cd .. - rm -rf tmp - -Now setup the environment so that the C! build system can find ChakraCore: +You can testing C! by running the test suite: - export CHAKRA_CORE_HOME=$PWD + scons test diff --git a/SConstruct b/SConstruct index 23ce75e75..b1b6b49e5 100644 --- a/SConstruct +++ b/SConstruct @@ -1,81 +1,126 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + import os +import platform + # Version -version = '0.0.1' +version = '1.7.2' libversion = '0' + # Setup env = Environment(ENV = os.environ, TARGET_ARCH = os.environ.get('TARGET_ARCH', 'x86')) env.Tool('config', toolpath = ['.']) env.CBAddVariables( + BoolVariable('v8_compress_pointers', 'Enable pointer compression for libv8', + platform.machine().endswith('64')), BoolVariable('staticlib', 'Build a static library', True), BoolVariable('sharedlib', 'Build a shared library', False), ('soname', 'Shared library soname', 'libcbang%s.so' % libversion), ('libsuffix', 'Suffix for library path, e.g. "64" to get lib64', ''), + ('libpath', 'Library installation path, e.g. "/lib64"', '/lib'), PathVariable('prefix', 'Install path prefix', '/usr/local', PathVariable.PathAccept), ('docdir', 'Path for documentation', '${prefix}/share/doc/cbang'), BoolVariable('with_openssl', 'Build with OpenSSL support', True), ('force_local', 'List of 3rd party libs to be built locally', ''), ('disable_local', 'List of 3rd party libs not to be built locally', '')) -env.CBLoadTools('dist packager compiler cbang build_info resources') +env.CBLoadTools('packager compiler cbang build_info resources') conf = env.CBConfigure() -# Build Info -env.Replace(BUILD_INFO_NS = 'cb::BuildInfo') -env.Replace(RESOURCES_NS = 'cb') - - -# Dist -if 'dist' in COMMAND_LINE_TARGETS: - env.__setitem__('dist_build', '') - # Only files checked in to Subversion - lines = os.popen('svn status -v').readlines() - lines = filter(lambda l: len(l) and l[0] in 'MA ', lines) - files = map(lambda l: l.split()[-1], lines) - files = list(filter(lambda f: not os.path.isdir(f), files)) - - tar = env.TarBZ2Dist('libcbang' + libversion, files) - Alias('dist', tar) - Return() +# Build Info +author = 'Joseph Coffland ' +env.Replace(PACKAGE_VERSION = version) +env.Replace(PACKAGE_AUTHOR = author) +env.Replace(PACKAGE_ORG = 'Cauldron Development') +env.Replace(PACKAGE_COPYRIGHT = 'Cauldron Development, 2003-2025') +env.Replace(PACKAGE_HOMEPAGE = 'https://cauldrondevelopment.com/') +env.Replace(PACKAGE_LICENSE = 'LGPL-2.1-or-later') +env.Replace(BUILD_INFO_NS = 'cb::BuildInfo') +env.Replace(RESOURCES_NS = 'cb') + + +# Local lib control +force_local = env.get('force_local', '') +if hasattr(force_local, 'split'): force_local = force_local.split() +disable_local = env.get('disable_local', '') +if hasattr(disable_local, 'split'): disable_local = disable_local.split() # Configure if not env.GetOption('clean'): conf.CBConfig('compiler') - conf.CBConfig('cbang-deps', with_openssl = env['with_openssl']) + conf.CBConfig('cbang-deps', with_openssl = env['with_openssl'], + with_local_boost = 'boost' not in disable_local) env.CBDefine('USING_CBANG') # Using CBANG macro namespace - if env['PLATFORM'] != 'win32': env.AppendUnique(CCFLAGS = ['-fPIC']) # Local includes env.Append(CPPPATH = ['#/include', '#/src', '#/src/boost']) + # Build third-party libs -force_local = env.get('force_local', '') -if hasattr(force_local, 'split'): force_local = force_local.split() -disable_local = env.get('disable_local', '') -if hasattr(disable_local, 'split'): disable_local = disable_local.split() Export('env conf') -for lib in 'zlib bzip2 sqlite3 expat boost libevent re2 libyaml'.split(): - if lib in disable_local: continue - if not env.CBConfigEnabled(lib) or lib in force_local: - Default(SConscript('src/%s/SConscript' % lib, - variant_dir = 'build/' + lib)) +resources_excludes = [] +for lib in 'ZLib bzip2 lz4 sqlite3 expat boost libevent re2 libyaml'.split(): + if lib in disable_local: resources_excludes.append('licenses/%s\\.txt' % lib) + elif not env.CBConfigEnabled(lib) or lib in force_local: + Default(SConscript( + 'src/%s/SConscript' % lib, variant_dir = 'build/' + lib)) +env.Append(RESOURCES_EXCLUDES = resources_excludes) + +if 'boost' not in disable_local: env.CBConfigDef('HAVE_LOCAL_BOOST') + # Source -subdirs = [ - '', 'script', 'xml', 'util', 'debug', 'config', 'pyon', 'os', 'http', - 'struct', 'log', 'iostream', 'time', 'enum', 'packet', 'net', 'buffer', - 'socket', 'tar', 'io', 'geom', 'parse', 'json', 'db', - 'auth', 'js', 'gpu', 'pci'] +subdirs = [''] + ''' + oauth2 boost comp config db debug dns enum event geom http hw io js json log + net os parse thread time util ws xml json/schema +'''.split() if env.CBConfigEnabled('openssl'): subdirs += ['openssl', 'acmev2'] -if env.CBConfigEnabled('chakra'): subdirs.append('js/chakra') if env.CBConfigEnabled('v8'): subdirs.append('js/v8') -if env.CBConfigEnabled('mariadb'): subdirs.append('db/maria') -if not 'libevent' in disable_local: subdirs.append('event') +if env.CBConfigEnabled('mariadb'): + subdirs += ['db/maria'] + + if env.CBConfigEnabled('leveldb'): + subdirs += ['api', 'api/arg', 'api/handler', 'api/ws'] + +if env['PLATFORM'] == 'win32': subdirs.append('os/win') +elif env['PLATFORM'] == 'darwin': subdirs.append('os/osx') +else: subdirs.append('os/lin') src = [] for dir in subdirs: @@ -86,6 +131,11 @@ for dir in subdirs: conf.Finish() + +# Create config header +if not COMMAND_LINE_TARGETS: env.CBWriteConfigDef('include/cbang/config.h') + + # Build in 'build' import re VariantDir('build', 'src', duplicate = False) @@ -99,39 +149,45 @@ src.append(res) # Build Info info = env.BuildInfo('build/build_info.cpp', []) -AlwaysBuild(info) +if not COMMAND_LINE_TARGETS: AlwaysBuild(info) src.append(info) # Build libs = [] +install = [] +prefix = env.get('prefix') +libsuffix = env.get('libsuffix') +libpath = env.get('libpath') if env.get('staticlib'): libs.append(env.StaticLibrary('lib/cbang', src)) + install.append(env.Install(dir = '%s/%s%s' % (prefix, libpath, libsuffix), + source = libs)) if env.get('sharedlib'): - env.Append(SHLIBSUFFIX = '.' + version) - env.Append(SHLINKFLAGS = '-Wl,-soname -Wl,${soname}') - libs.append(env.SharedLibrary('lib/cbang' + libversion, src)) + shlib = env.SharedLibrary( + 'lib/cbang' + libversion, src, SHLIBVERSION = version, + SONAME = env.get('soname')) + libdir = '%s/%s%s' % (prefix, libpath, libsuffix) + install.append(InstallVersionedLib(dir = libdir, source = shlib)) + libs.append(shlib) for lib in libs: Default(lib) + # Clean Clean(libs, 'build lib include config.log cbang-config.pyc package.txt' .split() + Glob('config/*.pyc')) # Install -prefix = env.get('prefix') -libsuffix = env.get('libsuffix') -install = [env.Install(dir = prefix + '/lib' + libsuffix, source = libs)] - for dir in subdirs: files = Glob('src/cbang/%s/*.h' % dir) files += Glob('src/cbang/%s/*.def' % dir) - install.append(env.Install(dir = prefix + '/include/cbang/' + dir, - source = files)) + dir = prefix + '/include/cbang/' + dir + install.append(env.Install(dir = dir, source = files)) -docs = ['README.md', 'COPYING'] +docs = ['README.md', 'LICENSE'] docdir = env.get('docdir').replace('${prefix}', prefix) install.append(env.Install(dir = docdir, source = docs)) diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 45e32f646..000000000 --- a/appveyor.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: 1.0.{build} -install: -- nuget install WGETWindows -- nuget install openssl -- nuget install boost -build: off diff --git a/config/XML/__init__.py b/config/XML/__init__.py index 78e3b7e53..32afb0ae0 100644 --- a/config/XML/__init__.py +++ b/config/XML/__init__.py @@ -1,21 +1,40 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + import sys from SCons.Script import * -def configure(conf): - env = conf.env - - # libexpat - if conf.CBConfig('expat'): return True - - else: # Glib 2.0 - env.ParseConfig('pkg-config --cflags --libs glib-2.0') - env.ParseConfig('pkg-config --cflags --libs gthread-2.0') - if conf.CBCheckHeader('glib.h'): - env.CBDefine('HAVE_GLIB') - return True - - return False +def configure(conf): return conf.CBConfig('expat') def generate(env): @@ -23,5 +42,4 @@ def generate(env): env.CBLoadTool('expat') -def exists(): - return 1 +def exists(): return 1 diff --git a/config/ZLib/__init__.py b/config/ZLib/__init__.py new file mode 100644 index 000000000..9acc25974 --- /dev/null +++ b/config/ZLib/__init__.py @@ -0,0 +1,48 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + +from SCons.Script import * + + +def configure(conf): + conf.CBCheckHome('zlib', lib_suffix = ['', '/lib'], + inc_suffix = ['/src', '/include']) + conf.CBRequireHeader('zlib.h') + conf.CBRequireLib('z') + + +def generate(env): + env.CBAddConfigTest('ZLib', configure) + + +def exists(): + return 1 diff --git a/config/__init__.py b/config/__init__.py index 8fcbe2e19..c98da361c 100644 --- a/config/__init__.py +++ b/config/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from __future__ import print_function import os @@ -7,6 +39,7 @@ import inspect import types import re +import shlex def CBCheckEnv(ctx, name, require = False): @@ -96,6 +129,7 @@ def CBCheckLib(ctx, lib, unique = False, append = False, **kwargs): if libname: lib = libname if ctx.sconf.CheckLib(lib, autoadd = 0, **kwargs): + if '/' in lib or '\\' in lib: lib = File(lib) if unique: ctx.env.PrependUnique(LIBS = [lib]) else: ctx.env.Prepend(LIBS = [lib]) @@ -247,6 +281,27 @@ def CBDefine(env, defs): env.AppendUnique(CPPDEFINES = defs) +def CBConfigDef(env, defs): + if not type(defs) in (list, tuple): defs = [defs] + env.cb_config_defs.update(defs) + + +def CBWriteConfigDef(env, path): + if not os.path.exists(os.path.dirname(path)): + os.makedirs(os.path.dirname(path)) + + with open(path, 'w') as f: + f.write('// Autogenerated file\n') + f.write('#pragma once\n\n') + + for var in sorted(env.cb_config_defs): + if '=' in var: + name, value = var.split('=', 1) + f.write('#define %s %s\n' % (name, value)) + + else: f.write('#define %s\n' % var) + + def CBAddVariables(env, *args): env.cb_vars += args @@ -277,16 +332,14 @@ def on_config_finish(conf): updated_csig = set() -def decider_hack(dep, target, prev_ni): - from SCons.Util import MD5signature - - #print('%s ?= %s %s' % (dep, target, prev_ni.csig)) +def decider_hack(dep, target, prev_ni, *args, **kwargs): + from hashlib import sha256 ninfo = dep.get_ninfo(); # Make sure csigs get updated if not hasattr(ninfo, 'csig') or str(dep) not in updated_csig: - ninfo.csig = MD5signature(dep.get_contents()) + ninfo.csig = sha256(dep.get_contents()).hexdigest() updated_csig.add(str(dep)) # .csig may not exist, because no target was built yet... @@ -315,19 +368,28 @@ def CBConfigure(env): # Load config files configs = [] - if 'SCONS_OPTIONS' in os.environ: - options = os.environ['SCONS_OPTIONS'] - if not os.path.exists(options): - print('options file "%s" set in SCONS_OPTIONS does not exist' % - options) - Exit(1) - - configs.append(options) - if os.path.exists('default-options.py'): configs.append('default-options.py') if os.path.exists('options.py'): configs.append('options.py') + if 'SCONS_OPTIONS' in os.environ: + options = os.environ['SCONS_OPTIONS'] + if os.path.exists(options): configs.append(options) + else: + if '=' not in options: + print('options file "%s" set in SCONS_OPTIONS does not exist' % + options) + Exit(1) + + env_opts = 'scons-env-options.py' + if os.path.exists(env_opts): os.unlink(env_opts) + with open(env_opts, 'w') as f: + for item in shlex.split(options): + n, v = item.split('=', 1) + f.write('%s="%s"\n' % (n, v)) + + configs.append(env_opts) + # Load variables v = Variables(configs) v.AddVariables(*env.cb_vars) @@ -364,25 +426,18 @@ def CBDownload(env, target, url): opener = urllib.build_opener(urllib.ProxyHandler(handlers)) urllib.install_opener(opener) - f = None - stream = None - try: - stream = urllib.urlopen(url) - f = open(target, 'wb', 0) # Unbuffered - while stream and f: - data = stream.read(1024 * 1024) - if not data: break - f.write(data) - sys.stdout.write('.') - sys.stdout.flush() + with urllib.urlopen(url) as stream: + with open(target, 'wb', 0) as f: # Unbuffered + while stream and f: + data = stream.read(1024 * 1024) + if not data: break + f.write(data) + sys.stdout.write('.') + sys.stdout.flush() sys.stdout.write('ok\n') sys.stdout.flush() - finally: - if f is not None: f.close() - if stream is not None: stream.close() - def CBAddConfigFinishCB(env, cb): env.cb_finish_cbs.append(cb) @@ -398,22 +453,41 @@ def CBBuildSetRegex(env, pats): def generate(env): + def version_less(a, b): + return a.major < b.major or (a.major == b.major and a.minor < b.minor) + + + class objdict(object): + def __init__(self, **kwargs): + self.__dict__ = kwargs + + # Check Python version + v2 = objdict(major = 2, minor = 7) + v3 = objdict(major = 3, minor = 1) + v = sys.version_info + + if (2 < v.major and version_less(v, v3)) or version_less(v, v2): + raise Exception("C! requires Python %d.%d+ or %d.%d+ found %d.%d." % ( + v2.major, v2.minor, v3.major, v3.minor, v.major, v.minor)) + # Add member variables env.cb_loaded = set() env.cb_enabled = set() env.cb_methods = {} - env.cb_deps_methods = {} env.cb_tests = {} env.cb_vars = [] env.cb_paths = [] env.cb_finish_cbs = [] env.cb_configure_cbs = [] + env.cb_config_defs = set() # Add methods env.AddMethod(CBTryLoadTool) env.AddMethod(CBLoadTool) env.AddMethod(CBLoadTools) env.AddMethod(CBDefine) + env.AddMethod(CBConfigDef) + env.AddMethod(CBWriteConfigDef) env.AddMethod(CBAddVariables) env.AddMethod(CBAddTest) env.AddMethod(CBAddConfigTest) diff --git a/config/app/__init__.py b/config/app/__init__.py index 700b09143..e5ec5da28 100644 --- a/config/app/__init__.py +++ b/config/app/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + ''' Builds an OSX application bundle ''' @@ -23,7 +55,8 @@ def build_function(target, source, env): # Create Info.plist import plistlib plist_template = env.get('app_plist_template', None) - if plist_template is not None: info = plistlib.readPlist(plist_template) + if plist_template is not None: + with open(plist_template, 'rb') as f: info = plistlib.load(f) else: info = {} # Info.plist keys @@ -46,7 +79,7 @@ def build_function(target, source, env): if other is not None: info.update(other) info_file = os.path.join(contents_dir, 'Info.plist') - plistlib.writePlist(info, info_file) + with open(info_file, 'wb') as f: plistlib.dump(info, f) # Let 'app_programs' override 'programs' if 'app_programs' in env: programs_key = 'app_programs' diff --git a/config/build_info/__init__.py b/config/build_info/__init__.py index c371513db..242f81a3d 100644 --- a/config/build_info/__init__.py +++ b/config/build_info/__init__.py @@ -1,165 +1,176 @@ -from __future__ import print_function +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ import textwrap +import os import re import sys +import shutil from platform import release import subprocess from SCons.Script import * +from collections import OrderedDict -def escstr(s): - return s.replace('\\', '\\\\').replace('"', '\\"') +def escstr(s): return s.replace('\\', '\\\\').replace('"', '\\"') -def which(program): - import os - def is_exe(fpath): - return os.path.isfile(fpath) and os.access(fpath, os.X_OK) +def svn_get_info(): + svn = shutil.which('svn') + if not svn: return None, None - fpath, fname = os.path.split(program) - if fpath: - if is_exe(program): - return program - else: - for path in os.environ["PATH"].split(os.pathsep): - path = path.strip('"') - exe_file = os.path.join(path, program) - if is_exe(exe_file): - return exe_file + revision, branch = None, None - return None + try: + p = subprocess.Popen(['svn', 'info'], stderr = subprocess.PIPE, + stdout = subprocess.PIPE) + out, err = p.communicate() + if isinstance(out, bytes): out = out.decode() + for line in out.splitlines(): + if line.startswith('Revision: '): revision = line[10:].strip() + elif line.startswith('URL: '): + branch = line[5:].strip() + branch = re.sub(r'https?://[\w\.]+/(svn/)?', '', branch) -def svn_get_info(): - svn = which('svn') - if not svn: return None, None + except Exception as e: print(e) - revision, branch = None, None + return revision, branch - try: - p = subprocess.Popen(['svn', 'info'], stderr = subprocess.PIPE, - stdout = subprocess.PIPE) - out, err = p.communicate() - if isinstance(out, bytes): out = out.decode() - for line in out.splitlines(): - if line.startswith('Revision: '): revision = line[10:].strip() - elif line.startswith('URL: '): - branch = line[5:].strip() - branch = re.sub(r'https?://[\w\.]+/(svn/)?', '', branch) +def git_get_info(): + if not shutil.which('git'): return None, None - except Exception as e: print(e) + revision, branch = None, None - return revision, branch + try: + p = subprocess.Popen(['git', 'rev-parse', 'HEAD'], + stderr = subprocess.PIPE, stdout = subprocess.PIPE) + out, err = p.communicate() + if isinstance(out, bytes): out = out.decode() + revision = out.strip() + except Exception as e: print(e) -def git_get_info(): - revision, branch = None, None + try: + p = subprocess.Popen(['git', 'rev-parse', '--abbrev-ref', 'HEAD'], + stderr = subprocess.PIPE, stdout = subprocess.PIPE) + out, err = p.communicate() + if isinstance(out, bytes): out = out.decode() + branch = out.strip() - try: - p = subprocess.Popen(['git', 'rev-parse', 'HEAD'], - stderr = subprocess.PIPE, stdout = subprocess.PIPE) - out, err = p.communicate() - if isinstance(out, bytes): out = out.decode() - revision = out.strip() + except Exception as e: print(e) - except Exception as e: print(e) + return revision, branch - try: - p = subprocess.Popen(['git', 'rev-parse', '--abbrev-ref', 'HEAD'], - stderr = subprocess.PIPE, stdout = subprocess.PIPE) - out, err = p.communicate() - if isinstance(out, bytes): out = out.decode() - branch = out.strip() - except Exception as e: print(e) +def build_function(target, source, env): + items = [] - return revision, branch + for name in env['BUILD_INFO_PACKAGE_VARS']: + var = 'PACKAGE_' + name.upper() + if env.get(var): items.append((name, '"%s"' % env[var])) + items.append(('Date', '__DATE__')) + items.append(('Time', '__TIME__')) -def build_function(target, source, env): - contents = ( - ' void addBuildInfo(const char *category) {\n' - ' Info &info = Info::instance();\n' - '\n' - ' info.add(category, "Version", "$PACKAGE_VERSION");\n' - ' info.add(category, "Author", "$PACKAGE_AUTHOR");\n' - ' info.add(category, "Org", "$PACKAGE_ORG");\n' - ' info.add(category, "Copyright", "$PACKAGE_COPYRIGHT");\n' - ' info.add(category, "Homepage", "$PACKAGE_HOMEPAGE");\n' - ' info.add(category, "License", "$PACKAGE_LICENSE");\n' - ' info.add(category, "Date", __DATE__);\n' - ' info.add(category, "Time", __TIME__);\n') - - revision, branch = svn_get_info() - if revision is None: revision, branch = git_get_info() - - if revision is not None: - contents += ( - ' info.add(category, "Revision", "%s");\n' - ' info.add(category, "Branch", "%s");\n') % ( - revision, branch) - - if env.get('debug', False): mode = 'Debug' - else: mode = 'Release' - - contents += ( - ' info.add(category, "Compiler", COMPILER);\n' - ' info.add(category, "Options", "%s");\n' - ' info.add(category, "Platform", "%s");\n' - ' info.add(category, "Bits", String(COMPILER_BITS));\n' - ' info.add(category, "Mode", "%s");\n' - ' }') % ( - escstr(' '.join(env['CXXFLAGS'] + env['CCFLAGS'])), - sys.platform.lower() + ' ' + release(), mode, - ) - - target = str(target[0]) - f = open(target, 'w') + revision, branch = svn_get_info() + if revision is None: revision, branch = git_get_info() + + if revision is not None: + items.append(('Revision', '"%s"' % revision)) + items.append(('Branch', '"%s"' % branch)) + mode = 'Debug' if env.get('debug', False) else 'Release' + cflags = escstr(' '.join(env['CXXFLAGS'] + env['CCFLAGS'])) + platform = sys.platform.lower() + ' ' + release() + + items.append(('Compiler', 'COMPILER')) + items.append(('Options', '"%s"' % cflags)) + items.append(('Platform', '"%s"' % platform)) + items.append(('Bits', 'String(COMPILER_BITS)')) + items.append(('Mode', '"%s"' % mode)) + + target = str(target[0]) + with open(target, 'w') as f: note = ('WARNING: This file was auto generated. Please do NOT ' 'edit directly or check in to source control.') f.write( - '/' + ('*' * 75) + '\\\n ' + - '\n '.join(textwrap.wrap(note)) + '\n' + - '\\' + ('*' * 75) + '/\n' - '\n' - '#include \n' - '#include \n' - '#include \n\n' - 'using namespace cb;\n\n' - ) + '/' + ('*' * 75) + '\\\n ' + + '\n '.join(textwrap.wrap(note)) + '\n' + + '\\' + ('*' * 75) + '/\n' + '\n' + '#include \n' + '#include \n' + '#include \n\n' + 'using namespace cb;\n\n' + ) ns = env.subst('$BUILD_INFO_NS') if ns: - for namespace in ns.split('::'): - f.write(env.subst('namespace %s {\n' % namespace)) + for namespace in ns.split('::'): + f.write(env.subst('namespace %s {\n' % namespace)) + + f.write( + ' void addBuildInfo(const char *category) {\n' + ' Info &info = Info::instance();\n' + ' info.add(category, true);\n' + ) - f.write(env.subst(contents) + '\n') + for name, value in items: + f.write(' info.add(category, "%s", %s);\n' % (name, value)) - if ns: - parts = ns.split('::') - parts.reverse() - for namespace in parts: - f.write('} // namespace %s\n' % namespace) + f.write(' }\n') - f.close() + if ns: + parts = ns.split('::') + parts.reverse() + for namespace in parts: + f.write('} // namespace %s\n' % namespace) - return None + return None def generate(env): - env.SetDefault(BUILD_INFO_NS = 'BuildInfo') + env.SetDefault(BUILD_INFO_NS = 'BuildInfo') + env.SetDefault(BUILD_INFO_PACKAGE_VARS = + 'Version Author Org Copyright Homepage License'.split()) - bld = Builder(action = build_function, - source_factory = SCons.Node.FS.Entry, - source_scanner = SCons.Defaults.DirScanner) - env.Append(BUILDERS = {'BuildInfo' : bld}) + bld = Builder(action = build_function, source_factory = SCons.Node.FS.Entry, + source_scanner = SCons.Defaults.DirScanner) + env.Append(BUILDERS = {'BuildInfo' : bld}) - return True + return True -def exists(env): - return 1 +def exists(env): return 1 diff --git a/config/bzip2/__init__.py b/config/bzip2/__init__.py index 3d80112a6..ddd59c50a 100644 --- a/config/bzip2/__init__.py +++ b/config/bzip2/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * diff --git a/config/cbang/__init__.py b/config/cbang/__init__.py index 05e9fee6a..afa82bc12 100644 --- a/config/cbang/__init__.py +++ b/config/cbang/__init__.py @@ -1,5 +1,38 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * import inspect +import platform import os @@ -8,30 +41,33 @@ def GetHome(): return os.path.dirname(os.path.abspath(path)) -def configure_deps(conf, local = True, with_openssl = True): +def configure_deps(conf, local = True, with_openssl = True, + with_local_boost = True): env = conf.env - conf.CBConfig('zlib', not local) + conf.CBConfig('ZLib', not local) conf.CBConfig('bzip2', not local) + conf.CBConfig('lz4', not local) conf.CBConfig('XML', not local) conf.CBConfig('sqlite3', not local) - if conf.CBConfig('event', False): conf.CBConfig('re2', not local) conf.CBConfig('libyaml', not local) + conf.CBConfig('leveldb', False) - if conf.CBCheckLib('leveldb') and conf.CBCheckLib('snappy'): - conf.CBCheckHome('leveldb') - if conf.CBCheckCXXHeader('leveldb/db.h'): - env.CBDefine('HAVE_LEVELDB') - + env.AppendUnique(prefer_dynamic = ['mariadbclient']) if conf.CBCheckCHeader('mysql/mysql.h') and \ (conf.CBCheckLib('mariadbclient') or conf.CBCheckLib('mysqlclient')) and \ conf.CBCheckFunc('mysql_real_connect_start'): - env.CBDefine('HAVE_MARIADB') + env.CBConfigDef('HAVE_MARIADB') env.cb_enabled.add('mariadb') # Boost if env['PLATFORM'] == 'win32': env.CBDefine('BOOST_ALL_NO_LIB') + if not with_local_boost: + conf.CBRequireLib('boost_filesystem') + conf.CBRequireLib('boost_iostreams') + conf.CBRequireLib('boost_regex') + conf.CBRequireLib('boost_system') # clock_gettime() needed by boost iterprocess if env['PLATFORM'] == 'posix' and int(env.get('cross_osx', 0)) == 0 \ @@ -39,8 +75,13 @@ def configure_deps(conf, local = True, with_openssl = True): conf.CBRequireLib('rt') conf.CBRequireFunc('clock_gettime') - if with_openssl: conf.CBConfig('openssl', False, version = '1.0.0') - conf.CBConfig('chakra', False) + # Must be after 'rt' + if conf.CBConfig('event', False): conf.CBConfig('re2', not local) + + # EPoll support + if conf.CBCheckFunc('epoll_create1'): env.CBConfigDef('HAVE_EPOLL') + + if with_openssl: conf.CBConfig('openssl', False, version = '1.1.0') conf.CBConfig('v8', False) if env['PLATFORM'] == 'win32' or int(env.get('cross_mingw', 0)): @@ -54,24 +95,40 @@ def configure_deps(conf, local = True, with_openssl = True): if env['PLATFORM'] == 'darwin' or int(env.get('cross_osx', 0)): if not (conf.CheckOSXFramework('CoreServices') and conf.CheckOSXFramework('IOKit') and + conf.CheckOSXFramework('Security') and + conf.CheckOSXFramework('SystemConfiguration') and conf.CheckOSXFramework('CoreFoundation')): - raise SCons.Errors.StopError( - 'Need CoreServices, IOKit & CoreFoundation frameworks') + raise SCons.Errors.StopError('Need CoreServices, IOKit, Security ' + '& CoreFoundation frameworks') + + # sd-bus + if (env['PLATFORM'] == 'posix' and + conf.CBCheckCHeader('systemd/sd-bus.h') and conf.CBCheckLib('systemd')): + conf.CBCheckLib('cap') + env.CBConfigDef('HAVE_SYSTEMD') conf.CBConfig('valgrind', False) # Debug if env.get('debug', 0): - if conf.CBCheckCHeader('execinfo.h') and \ - conf.CBCheckCHeader('bfd.h') and \ - conf.CBCheckLib('iberty') and conf.CBCheckLib('bfd'): - env.CBDefine('HAVE_CBANG_BACKTRACE') + if conf.CBCheckCHeader('execinfo.h'): + if conf.CBCheckCHeader('bfd.h') and conf.CBCheckLib('bfd'): + env.CBConfigDef('HAVE_BFD') + + conf.CBCheckLib('iberty') + conf.CBCheckLib('sframe') + conf.CBCheckLib('zstd') + env.CBConfigDef('HAVE_CBANG_BACKTRACE') + + # Check bfd for API change + if not conf.CBCheckFunc('bfd_get_error_handler'): + env.CBConfigDef('HAVE_BFD_ERROR_HANDLER_VPRINTFLIKE') elif env.get('backtrace_debugger', 0): raise SCons.Errors.StopError( - 'execinfo.h, bfd.h and libbfd needed for backtrace_debuger') + 'execinfo.h needed for backtrace_debuger') - env.CBDefine('DEBUG_LEVEL=' + str(env.get('debug_level', 1))) + env.CBDefine('CBANG_DEBUG_LEVEL=' + str(env.get('debug_level', 1))) def configure(conf): @@ -82,11 +139,19 @@ def configure(conf): home + '/src/boost']) env.AppendUnique(LIBPATH = [home + '/lib']) + with open(home + '/include/cbang/config.h', 'r') as f: + config = f.read() + with_openssl = config.find('#define HAVE_OPENSSL') != -1 + with_local_boost = config.find('#define HAVE_LOCAL_BOOST') != -1 + if not env.CBConfigEnabled('cbang-deps'): - conf.CBConfig('cbang-deps', local = False) + conf.CBConfig('cbang-deps', local = False, with_openssl = with_openssl, + with_local_boost = with_local_boost) + + if with_local_boost: conf.CBRequireLib('cbang-boost') - conf.CBRequireLib('cbang-boost') conf.CBRequireLib('cbang') + if platform.system() == 'FreeBSD': conf.CBRequireLib('sysinfo') conf.CBRequireCXXHeader('cbang/Exception.h') env.CBDefine('HAVE_CBANG') @@ -99,8 +164,8 @@ def generate(env): BoolVariable('backtrace_debugger', 'Enable backtrace debugger', 0), ('debug_level', 'Set log debug level', 1)) - env.CBLoadTools('''sqlite3 openssl pthreads valgrind osx zlib bzip2 - XML chakra v8 event re2 libyaml'''.split(), GetHome() + '/..') + env.CBLoadTools('''sqlite3 openssl pthreads valgrind osx ZLib bzip2 lz4 + XML v8 event re2 libyaml leveldb'''.split(), GetHome() + '/..') def exists(env): diff --git a/config/chakra/__init__.py b/config/chakra/__init__.py deleted file mode 100644 index b10aac257..000000000 --- a/config/chakra/__init__.py +++ /dev/null @@ -1,35 +0,0 @@ -from SCons.Script import * -import platform - - -def configure(conf): - conf.CBCheckHome('chakra_core', lib_suffix = ['/'], - inc_suffix = ['/lib/Jsrt', '/include']) - - conf.CBRequireCXXHeader('ChakraCore.h') - - if conf.env['PLATFORM'] != 'win32': - conf.CBRequireLib('stdc++') - conf.CBRequireLib('m') - - conf.CBCheckLib('icuuc') - conf.CBCheckLib('unwind-x86_64') - - if int(conf.env.get('static')) or int(conf.env.get('mostly_static')): - conf.CBCheckLib('icudata') - conf.CBCheckLib('unwind') - conf.CBCheckLib('lzma') - - conf.CBRequireLib('ChakraCore') - - conf.CBRequireFunc('JsCreateRuntime') - - conf.env.CBDefine('HAVE_CHAKRA') - - -def generate(env): - env.CBAddConfigTest('chakra', configure) - - -def exists(): - return 1 diff --git a/config/codesign/__init__.py b/config/codesign/__init__.py new file mode 100644 index 000000000..852c5b350 --- /dev/null +++ b/config/codesign/__init__.py @@ -0,0 +1,188 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + +''' codesign - macOS codesign/productsign functions ''' + +import os, platform, shutil + +from SCons.Script import * +from SCons.Action import CommandAction + +''' TODO +Add builder Codesign(sources) + prog = env.Program(...) + sign = env.Codesign(prog) + Default(sign) + Depends(sign, prog) +''' + +def UnlockKeychain(env, keychain=None, password=None): + if keychain is None: keychain = env.get('sign_keychain') + if keychain: name = keychain + else: name = 'default-keychain' + if password: + cmd = ['security', 'unlock-keychain', '-p', password] + if keychain: cmd += [keychain] + try: + sanitized_cmd = cmd[:3] + ['****'] + if keychain: sanitized_cmd += [keychain] + print('@', sanitized_cmd) + # returns 0 if keychain already unlocked, even if pass is wrong + ret = CommandAction(cmd).execute(None, [], env) + if ret: raise Exception( + 'unlock-keychain failed, return code %s' % str(ret)) + print('keychain "%s" is unlocked' % name) + except Exception as e: + print('unable to unlock keychain "%s"' % name) + raise e + else: + print('skipping unlock "%s"' % name + '; no password given') + + +def SignExecutable(env, target): + if env.get('sign_disable'): return + keychain = env.get('sign_keychain') + sign = env.get('sign_id_app') + prefix = env.get('sign_prefix') + cmd = ['codesign', '-f', '--timestamp', '--options', 'runtime'] + if keychain: cmd += ['--keychain', keychain] + if prefix: + if not prefix.endswith('.'): prefix += '.' + cmd += ['--prefix', prefix] + else: + raise Exception('unable to codesign %s; no sign_prefix given' % target) + if sign: cmd += ['--sign', sign] + else: + raise Exception('unable to codesign %s; no sign_id_app given' % target) + if not (os.path.isfile(target) and os.access(target, os.X_OK)): + raise Exception('unable to codesign %s; not an executable' % target) + # FIXME should not try to sign executable scripts + cmd += [target] + env.RunCommandOrRaise(cmd) + + +def SignApplication(env, target): + if env.get('sign_disable'): return + keychain = env.get('sign_keychain') + sign = env.get('sign_id_app') + cmd = ['codesign', '-f', '--timestamp', '--options', 'runtime'] + try: + ver = tuple([int(x) for x in platform.mac_ver()[0].split('.')]) + # all bundles in an app must also be signed on 10.7+ + # easy way to do this is just to codesign --deep + # only ok if there are no sandbox entitlements for this app + if ver >= (10,7): cmd += ['--deep'] + except: pass + if keychain: cmd += ['--keychain', keychain] + if sign: cmd += ['--sign', sign] + else: + raise Exception('unable to codesign %s; no sign_id_app given' % target) + if not os.path.isdir(target) or not target.endswith('.app'): + raise Exception('unable to codesign %s; not an app' % target) + epath = os.path.join(target, 'Contents/Resources/entitlements.plist') + if os.path.isfile(epath): cmd += ['--entitlements', epath] + cmd += [target] + # sign any bundled libraries before singning app + # https://github.com/FoldingAtHome/fah-issues/issues/1576 + # find libs under target dir, ignoring symlinks + paths = [] + for root, dirs, files in os.walk(target): + for file in files: + e = os.path.splitext(file)[1] + if e in ('.so', '.dylib'): + path = os.path.join(root, file) + if not os.path.islink(path): + paths.append(path) + # sign each lib + for path in paths: + # some macports built libs are missing execute bits + if not os.access(path, os.X_OK): + print ('warning: setting execute perms on ' + path) + os.chmod(path, 0o755) + SignExecutable(env, path) + # finally, sign app + env.RunCommandOrRaise(cmd) + + +def SignPackage(env, target, source): + # expect source 'somewhere/tmpname.pkg', target elsewhere/finalname.pkg + if env.get('sign_disable'): return + sign = env.get('sign_id_installer') + keychain = env.get('sign_keychain') + if not sign: + raise Exception('unable to sign; no sign_id_installer provided') + # FIXME should do more than this to verify flat pkg + x, ext = os.path.splitext(source) + if not (os.path.isfile(source) and ext in ('.pkg', '.mpkg')): + raise Exception('unable to sign; not a flat package: ' + source) + cmd = ['productsign','--timestamp', '--sign', sign] + if keychain: cmd += ['--keychain', keychain] + cmd += [source, target] + env.RunCommandOrRaise(cmd) + + +def SignOrCopyPackage(env, target, source): + if env.get('sign_id_installer') and not env.get('sign_disable'): + SignPackage(env, target, source) + return + print('WARNING: NOT signing package %s; copying instead.' % source, + file=sys.stderr) + shutil.copy2(source, target) + + +def generate(env): + if env['PLATFORM'] == 'darwin' or int(env.get('cross_osx', 0)): + env.CBAddVariables( + # put sign_* in scons_options.py (build.json) + # if not sign_keychain, the default (login) keychain will be used + # if not sign_id_installer, productsign will be skipped + # sign_id_app is required for sign_apps and sign_tools + # sign_prefix is required for sign_tools + # global; cannot currently be overridden per-component + BoolVariable('sign_disable', 'Disable codesign', 0), + ('sign_keychain', 'Keychain that has signatures'), + ('sign_id_installer', 'Installer signature name'), + ('sign_id_app', 'Application/Tool signature name'), + ('sign_prefix', 'codesign identifier prefix'), + ) + + env.AddMethod(UnlockKeychain) + env.AddMethod(SignExecutable) + env.AddMethod(SignApplication) + env.AddMethod(SignPackage) + env.AddMethod(SignOrCopyPackage) + + return True + + +def exists(): + return 1 diff --git a/config/compiler/__init__.py b/config/compiler/__init__.py index dc23cb47e..431a96dcc 100644 --- a/config/compiler/__init__.py +++ b/config/compiler/__init__.py @@ -1,4 +1,34 @@ -from __future__ import print_function +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ import copy import re @@ -29,8 +59,7 @@ def CheckRDynamic(context): env = context.env flags = env['LINKFLAGS'] context.env.AppendUnique(LINKFLAGS = ['-rdynamic']) - result = context.TryLink('int main(int argc, char *argv[]) {return 0;}', - '.c') + result = context.TryLink('int main() {return 0;}\n', '.c') context.Result(result) env['LINKFLAGS'] = flags return result @@ -41,68 +70,45 @@ def configure(conf, cstd = 'c99'): if env.GetOption('clean'): return # Get options - cc = env.get('cc', '').strip() - cxx = env.get('cxx', '').strip() - ranlib = env.get('ranlib', '').strip() - debug = int(env.get('debug')) - optimize = int(env.get('optimize')) + cc = env.get('cc', '').strip() + cxx = env.get('cxx', '').strip() + ranlib = env.get('ranlib', '').strip() + ar = env.get('ar', '').strip() + strip = env.get('strip', '').strip() + debug = int(env.get('debug')) + optimize = int(env.get('optimize')) if optimize == -1: optimize = not debug - globalopt = int(env.get('globalopt')) - mach = env.get('mach') - auto_dispatch = int(env.get('auto_dispatch')) - strict = int(env.get('strict')) - threaded = int(env.get('threaded')) - profile = int(env.get('profile')) - tcmalloc = int(env.get('tcmalloc')) - gperf = int(env.get('gperf')) - depends = int(env.get('depends')) - compiler = env.get('compiler') - distcc = int(env.get('distcc')) - ccache = int(env.get('ccache')) - ccflags = env.get('ccflags') - cxxflags = env.get('cxxflags') - linkflags = env.get('linkflags') - cxxstd = env.get('cxxstd') - platform = env.get('platform') - static = int(env.get('static')) - num_jobs = env.get('num_jobs') - osx_min_ver = env.get('osx_min_ver') - osx_sdk_root = env.get('osx_sdk_root') - osx_archs = env.get('osx_archs') - win32_thread = env.get('win32_thread') - cross_mingw = int(env.get('cross_mingw')) - - if cross_mingw: - res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR') - res_builder = \ - SCons.Builder.Builder(action = res_action, suffix='.o', - source_scanner = SCons.Tool.SourceFileScanner) - SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan) - - env['RC'] = 'windres' - env['RCFLAGS'] = SCons.Util.CLVar('') - env['RCINCFLAGS'] = '$( ${_concat(RCINCPREFIX, CPPPATH, ' +\ - 'RCINCSUFFIX, __env__, RDirs, TARGET)} $)' - env['RCINCPREFIX'] = '--include-dir ' - env['RCINCSUFFIX'] = '' - env['RCCOM'] = '$RC $RCINCFLAGS $RCINCPREFIX $SOURCE.dir $RCFLAGS ' +\ - '-i $SOURCE -o $TARGET' - env['BUILDERS']['RES'] = res_builder - env['PROGSUFFIX'] = '.exe' - - env.CBDefine('WINVER=0x0600') - env.CBDefine('_WIN32_WINNT=0x0600') - env.CBDefine('_POSIX_SOURCE') + globalopt = int(env.get('globalopt')) + mach = env.get('mach') + strict = int(env.get('strict')) + threaded = int(env.get('threaded')) + profile = int(env.get('profile')) + tcmalloc = int(env.get('tcmalloc')) + gperf = int(env.get('gperf')) + depends = int(env.get('depends')) + compiler = env.get('compiler') + distcc = int(env.get('distcc')) + ccache = int(env.get('ccache')) + ccflags = env.get('ccflags') + cxxflags = env.get('cxxflags') + linkflags = env.get('linkflags') + libs = env.get('libs') + cxxstd = env.get('cxxstd') + dbgstdcxx = env.get('dbgstdcxx') + platform = env.get('platform') + static = int(env.get('static')) + num_jobs = env.get('num_jobs') + osx_min_ver = env.get('osx_min_ver') + osx_sdk_root = env.get('osx_sdk_root') + osx_archs = env.get('osx_archs') + win32_thread = env.get('win32_thread') + lto = env.get('lto') if platform != '': env.Replace(PLATFORM = platform) # Select compiler compiler_mode = None - # Prefer Intel compiler - if compiler == 'default' and os.environ.get('INTEL_LICENSE_FILE', False): - compiler = 'intel' - if compiler: if compiler == 'gnu': Tool('gcc')(env) @@ -114,30 +120,6 @@ def configure(conf, cstd = 'c99'): env.Replace(CXX = 'clang++') compiler_mode = 'gnu' - elif compiler == 'intel': - Tool('intelc')(env) - env['ENV']['INTEL_LICENSE_FILE'] = ( - os.environ.get('INTEL_LICENSE_FILE', '')) - - if env['PLATFORM'] == 'win32': compiler_mode = 'msvc' - else: compiler_mode = 'gnu' - - if compiler_mode == 'msvc': - env.Replace(AR = 'xilib') - - # Work around double CCFLAGS bug - env.Replace(CXXFLAGS = ['/TP']) - - # Fix INCLUDE - env.PrependENVPath('INCLUDE', os.environ.get('INCLUDE', '')) - - elif compiler == 'linux-mingw': - env.Replace(CC = 'i586-mingw32msvc-gcc') - env.Replace(CXX = 'i586-mingw32msvc-g++') - env.Replace(RANLIB = 'i586-mingw32msvc-ranlib') - env.Replace(PROGSUFFIX = '.exe') - compiler_mode = 'gnu' - elif compiler == 'posix': Tool('cc')(env) Tool('cxx')(env) @@ -146,16 +128,6 @@ def configure(conf, cstd = 'c99'): Tool('as')(env) compiler_mode = 'unknown' - elif compiler in ['hp', 'sgi', 'sun', 'aix']: - Tool(compiler + 'cc')(env) - Tool(compiler + 'c++')(env) - Tool(compiler + 'link')(env) - - if compiler in ['sgi', 'sun']: - Tool(compiler + 'ar')(env) - - compiler_mode = 'unknown' - elif compiler != 'default': Tool(compiler)(env) @@ -169,21 +141,24 @@ def configure(conf, cstd = 'c99'): _cc = env['CC'] if _cc == 'cl': compiler = 'msvc' elif _cc == 'gcc': compiler = 'gnu' - elif _cc == 'icl' or _cc == 'icc': compiler = 'intel' if cc: env.Replace(CC = cc) if cxx: env.Replace(CXX = cxx) if ranlib: env.Replace(RANLIB = ranlib) + if ar: env.Replace(AR = ar) + if strip: env.Replace(STRIP = strip) - env.__setitem__('compiler', compiler) - env.__setitem__('compiler_mode', compiler_mode) + env['compiler'] = compiler + env['compiler_mode'] = compiler_mode + env['BUILD_MODE'] = 'debug' if debug else 'release' - print(' Compiler:', env['CC'], '(%s)' % compiler) - print(' Platform:', env['PLATFORM']) - print(' Mode:', compiler_mode) - print(' Arch:', env['TARGET_ARCH']) + print(' Compiler:', env['CC'], '(%s)' % compiler) + print(' Platform:', env['PLATFORM']) + print('Compiler Mode:', compiler_mode) + print(' Build Mode:', env['BUILD_MODE']) + print(' Arch:', env['TARGET_ARCH']) - if compiler == 'gnu': print('GCC Version:', gcc_version_str(env)) + if compiler == 'gnu': print(' GCC Version:', gcc_version_str(env)) # SCONS_JOBS environment variable @@ -209,31 +184,17 @@ def configure(conf, cstd = 'c99'): env.Replace(CC = 'ccache ' + env['CC']) env.Replace(CXX = 'ccache ' + env['CXX']) - # Exceptions if compiler_mode == 'msvc': env.AppendUnique(CCFLAGS = ['/EHa']) # Asynchronous # Disable troublesome warnings - warnings = [] if compiler_mode == 'msvc': env.CBDefine('_CRT_SECURE_NO_WARNINGS') - warnings += [4297, 4103] - if compiler == 'intel': warnings += [1786] - - if compiler == 'intel': warnings += [279] - - if compiler == 'intel': - warnings = map(str, warnings) - if compiler_mode == 'msvc': - env.AppendUnique(CCFLAGS = ['/Qdiag-disable:' + ','.join(warnings)]) - else: - env.AppendUnique(CCFLAGS = ['-diag-disable', ','.join(warnings)]) - - elif compiler_mode == 'msvc': - for warning in warnings: env.AppendUnique(CCFLAGS = ['/wd%d' % warning]) + for warning in [4297, 4103]: + env.AppendUnique(CCFLAGS = ['/wd%d' % warning]) # Profiler flags @@ -259,14 +220,15 @@ def configure(conf, cstd = 'c99'): env.AppendUnique(prefer_dynamic = ['profiler']) conf.CBRequireLib('profiler') + # Method overrides + if compiler == 'gnu' and strict: + env.AppendUnique(CXXFLAGS = ['-Wsuggest-override']) # Debug flags - if compiler_mode == 'msvc': env['PDB'] = '${TARGET}.pdb' - if debug: if compiler_mode == 'msvc': env.AppendUnique(CCFLAGS = ['/W1']) - env['CCPDBFLAGS'] = '/Zi /Fd${TARGET}.pdb' + env['PDB'] = '${TARGET}.pdb' env.AppendUnique(LINKFLAGS = ['/DEBUG', '/MAP:${TARGET}.map']) elif compiler_mode == 'gnu': @@ -274,8 +236,6 @@ def configure(conf, cstd = 'c99'): env.AppendUnique(CCFLAGS = ['-g', '-Wall']) if conf.CheckRDynamic(): env.AppendUnique(LINKFLAGS = ['-rdynamic']) # for backtrace - elif compiler == 'intel': - env.AppendUnique(CCFLAGS = ['-g', '-diag-enable', 'warn']) else: # clang and others env.AppendUnique(CCFLAGS = ['-g', '-Wall']) @@ -283,17 +243,14 @@ def configure(conf, cstd = 'c99'): env.CBDefine('DEBUG') - if not optimize and compiler == 'intel' and \ - env['TARGET_ARCH'] == 'x86': - if compiler_mode == 'gnu': - env.AppendUnique(CCFLAGS = ['-mia32']) - elif compiler_mode == 'msvc': - env.AppendUnique(CCFLAGS = ['/arch:IA32']) + else: # !debug + if compiler_mode == 'gnu': # Strip symbols + if compiler != 'clang': env.AppendUnique(LINKFLAGS = ['-Wl,-s']) + env.AppendUnique(LINKFLAGS = ['-Wl,-x']) - else: - if compiler_mode == 'gnu': - # Don't add debug info and enable dead code removal - env.AppendUnique(LINKFLAGS = ['-Wl,-S', '-Wl,-x']) + if lto and compiler == 'gnu': # Link time optimization + env.AppendUnique(LINKFLAGS = ['-flto=auto']) + env.AppendUnique(CCFLAGS = ['-flto=auto']) env.CBDefine('NDEBUG') @@ -301,87 +258,42 @@ def configure(conf, cstd = 'c99'): # Optimizations if optimize: if compiler_mode == 'gnu': - env.AppendUnique(CCFLAGS = ['-O3', '-funroll-loops']) + env.AppendUnique(CCFLAGS = ['-O3']) elif compiler_mode == 'msvc': - env.AppendUnique(CCFLAGS = ['/Ox']) - if compiler == 'intel' and not globalopt: - env.AppendUnique(LINKFLAGS = ['/Qnoipo']) + env.AppendUnique(CCFLAGS = ['/O2', '/Zc:throwingNew']) # Whole program optimizations if globalopt: - if compiler == 'intel': - if compiler_mode == 'gnu': - env.AppendUnique(LINKFLAGS = ['-ipo']) - env.AppendUnique(CCFLAGS = ['-ipo']) - elif compiler_mode == 'msvc': - env.AppendUnique(LINKFLAGS = ['/Qipo']) - env.AppendUnique(CCFLAGS = ['/Qipo']) - - elif compiler == 'msvc': + if compiler == 'msvc': env.AppendUnique(CCFLAGS = ['/GL']) env.AppendUnique(LINKFLAGS = ['/LTCG']) env.AppendUnique(ARFLAGS = ['/LTCG']) # Instruction set optimizations - if compiler == 'intel': - if env['TARGET_ARCH'].lower() in ('64bit', 'x64', 'amd64'): - opt_base, opt_auto = 'SSE2', 'SSE3,SSSE3,SSE4.1,SSE4.2' - else: opt_base, opt_auto = 'SSE', 'SSE2,SSE3,SSSE3,SSE4.1,SSE4.2' - - if mach: opt_base = mach - - if compiler_mode == 'gnu': - env.AppendUnique(CCFLAGS = ['-m' + opt_base.lower()]) - if auto_dispatch: - env.AppendUnique(CCFLAGS = ['-ax' + opt_auto]) - - elif compiler_mode == 'msvc': - env.AppendUnique(CCFLAGS = ['/arch:' + opt_base.upper()]) - if auto_dispatch: - env.AppendUnique(CCFLAGS = ['/Qax' + opt_auto]) - - elif compiler == 'msvc': + if compiler == 'msvc': if mach: env.AppendUnique(CCFLAGS = ['/arch:' + mach.upper()]) elif mach: env.AppendUnique(CCFLAGS = ['-m' + mach.lower()]) - # Intel threading optimizations - if compiler == 'intel': - if compiler_mode == 'msvc': - env.AppendUnique(CCFLAGS = ['/Qopenmp']) - else: - env.AppendUnique(CCFLAGS = ['-openmp']) - - if compiler_mode == 'msvc': env.PrependUnique(LIBS = ['libiomp5mt']) - else: env.PrependUnique(LIBS = ['iomp5']) - - - # Pointer disambiguation - if compiler == 'intel': - if compiler_mode == 'gnu': - env.AppendUnique(CCFLAGS = ['-restrict']) - elif compiler_mode == 'msvc': - env.AppendUnique(CCFLAGS = ['/Qrestrict']) + # Position independent code + if env['PLATFORM'] != 'win32': env.AppendUnique(CCFLAGS = ['-fPIC']) + if (compiler_mode == 'gnu' and (5,) <= gcc_version(env) and + compiler != 'clang'): env.AppendUnique(LINKFLAGS = '-no-pie') + # Alignment + if compiler_mode == 'gnu' and (7,) <= gcc_version(env): + if not (compiler == 'clang' and env['PLATFORM'] == 'darwin'): + env.AppendUnique(CXXFLAGS = ['-faligned-new']) # Dependency files if depends and compiler_mode == 'gnu': env.AppendUnique(CCFLAGS = ['-MMD -MF ${TARGET}.d']) - # No PIE with GCC 6+ - if compiler_mode == 'gnu' and (5,) <= gcc_version(env): - env.AppendUnique(CCFLAGS = '-fno-pie') - env.AppendUnique(LINKFLAGS = '-no-pie') - - # C mode - if cstd: - if compiler_mode == 'gnu': - env.AppendUnique(CFLAGS = ['-std=' + cstd]) - elif compiler_mode == 'msvc' and compiler == 'intel': - env.AppendUnique(CFLAGS = ['/Qstd=' + cstd]) + if cstd and compiler_mode == 'gnu': + env.AppendUnique(CFLAGS = ['-std=' + cstd]) # C++ mode if cxxstd: @@ -391,6 +303,12 @@ def configure(conf, cstd = 'c99'): if cxxstd in ('c++14', 'c++17', 'c++20'): env.AppendUnique(CXXFLAGS = ['/std:' + cxxstd]) + # GNU libstdc++ debugging + if dbgstdcxx and compiler_mode == 'gnu': + env.CBDefine('_GLIBCXX_DEBUG') + env.CBDefine('_GLIBCXX_DEBUG_BACKTRACE') + conf.CBRequireLib('stdc++_libbacktrace') + # Threads if threaded: @@ -411,68 +329,65 @@ def configure(conf, cstd = 'c99'): # Link flags if compiler_mode == 'msvc' and not optimize: - env.AppendUnique(LINKFLAGS = ['/INCREMENTAL']) - - if compiler_mode == 'msvc' or int(env.get('cross_mingw', 0)): - if env.get('compiler_mode') == 'gnu': - env.Append(LINKFLAGS = ['-Wl,-subsystem,${subsystem}']) - - elif env.get('compiler_mode') == 'msvc': - env.Append(LINKFLAGS = [ - '/subsystem:${subsystem},${subsystem_version}']) + env.AppendUnique(LINKFLAGS = ['/INCREMENTAL:NO']) + if compiler_mode == 'msvc': + env.Append(LINKFLAGS = ['/subsystem:${subsystem},${subsystem_version}']) # static if static: if compiler_mode == 'gnu' and env['PLATFORM'] != 'darwin': env.AppendUnique(LINKFLAGS = ['-static']) + elif env.get('mostly_static', False) and compiler == 'gnu': + env.AppendUnique(LINKFLAGS = ['-static-libstdc++', '-static-libgcc']) + + + # Don't link unneeded dynamic libs + if compiler == 'gnu' and env['PLATFORM'] != 'darwin': + env.PrependUnique(LINKFLAGS = ['-Wl,--as-needed']) + + # For windows + if compiler_mode == 'msvc': env.CBDefine('NOMINMAX') # For darwin - if env['PLATFORM'] == 'darwin' or int(env.get('cross_osx', 0)): + if env['PLATFORM'] == 'darwin': env.CBDefine('__APPLE__') - if osx_archs and compiler == 'gnu': + + if osx_archs and compiler_mode == 'gnu': # note: only apple compilers support multipe -arch options for arch in osx_archs.split(): env.Append(CCFLAGS = ['-arch', arch]) env.Append(LINKFLAGS = ['-arch', arch]) + if osx_min_ver: flag = '-mmacosx-version-min=' + osx_min_ver env.AppendUnique(LINKFLAGS = [flag]) env.AppendUnique(CCFLAGS = [flag]) + if osx_sdk_root: env.Append(CCFLAGS = ['-isysroot', osx_sdk_root]) - # intel linker allegedly requires -isyslibroot - # but that seems to confuse gcc if compiler == 'gnu': env.Append(LINKFLAGS = ['-isysroot', osx_sdk_root]) - elif compiler == 'intel': - # untested - #env.Append(LINKFLAGS = ['-Wl,-isyslibroot,' + osx_sdk_root]) - pass - - if int(env.get('cross_osx', 0)): - env['FRAMEWORKPATHPREFIX'] = '-F' - env['_FRAMEWORKPATH'] = \ - '${_concat(FRAMEWORKPATHPREFIX, FRAMEWORKPATH, "", __env__)}' - env['_FRAMEWORKS'] = \ - '${_concat("-framework ", FRAMEWORKS, "", __env__)}' - env['LINKCOM'] = env['LINKCOM'] + \ - ' $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS' - env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -dynamiclib') - env['SHLINKCOM'] = env['SHLINKCOM'] + \ - ' $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS' - env['LDMODULEPREFIX'] = '' - env['LDMODULESUFFIX'] = '' - env['LDMODULEFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -bundle') - env['LDMODULECOM'] = '$LDMODULE -o ${TARGET} $LDMODULEFLAGS ' + \ - '$SOURCES $_LIBDIRFLAGS $_LIBFLAGS $_FRAMEWORKPATH ' + \ - '$_FRAMEWORKS $FRAMEWORKSFLAGS' + + env.Replace(ARCOM = 'rm -f $TARGET; $AR $ARFLAGS $TARGET $SOURCES') + + # Both gcc and clang treat signedness of char depending on target platform. + # For Intel x86 and x86_64, it's a signed type by default. + # For ARM (including AArch64), it's an unsigned type by default. + # There are several places in the code, where 'char' implicitly assumed to + # be a signed type. The simplest way to avoid problems in such a case is to + # ask the compiler to treat the 'char" as a signed type regardless of target + # platform. + if compiler_mode == 'gnu': + env.Append(CFLAGS = ['-fsigned-char']) + env.Append(CXXFLAGS = ['-fsigned-char']) # User flags (Must be last) if ccflags: env.Append(CCFLAGS = ccflags.split()) if cxxflags: env.Append(CXXFLAGS = cxxflags.split()) if linkflags: env.Append(LINKFLAGS = linkflags.split()) + if libs: env.Append(LIBS = libs.split()) def get_lib_path_env(env): @@ -551,7 +466,7 @@ def prefer_static_libs(env): def CBConfConsole(env, entry = 'mainCRTStartup'): - if env['PLATFORM'] == 'win32' or int(env.get('cross_mingw', 0)): + if env['PLATFORM'] == 'win32': env.Replace(subsystem = 'windows') if env.get('compiler_mode') == 'msvc': @@ -564,18 +479,19 @@ def generate(env): env.CBAddConfigFinishCB(prefer_static_libs) env.AddMethod(CBConfConsole) - env.SetDefault(PREFER_DYNAMIC = 'pthread dl'.split()) + env.SetDefault(PREFER_DYNAMIC = 'pthread dl rt'.split()) env.SetDefault(PREFER_STATIC = []) env.SetDefault(REQUIRE_STATIC = []) env.CBAddVariables( ('cc', 'Set C compiler executable', ''), ('cxx', 'Set C++ compiler executable', ''), + ('ar', 'Set ar executable', ''), ('ranlib', 'Set ranlib executable', ''), + ('strip', 'Set strip executable', ''), ('optimize', 'Enable or disable optimizations', -1), ('globalopt', 'Enable or disable global optimizations', 0), ('mach', 'Set machine instruction set', ''), - ('auto_dispatch', 'Enable auto-dispatch of optimized code paths', 1), BoolVariable('debug', 'Enable or disable debug options', os.getenv('DEBUG_MODE', 0)), BoolVariable('strict', 'Enable or disable strict options', 1), @@ -586,18 +502,20 @@ def generate(env): BoolVariable('depends', 'Enable or disable dependency files', 0), BoolVariable('distcc', 'Enable or disable distributed builds', 0), BoolVariable('ccache', 'Enable or disable cached builds', 0), + BoolVariable('lto', 'Enable or disable link-time optimization', 0), EnumVariable('platform', 'Override default platform', '', - allowed_values = ('', 'win32', 'posix', 'darwin')), + allowed_values = ('', 'win32', 'posix', 'darwin')), ('ccflags', 'Set extra C and C++ compiler flags', None), ('cxxflags', 'Set extra C++ compiler flags', None), ('linkflags', 'Set extra linker flags', None), - EnumVariable('cxxstd', 'Set C++ language standard', 'c++11', - allowed_values = ('c++98', 'c++11', 'c++14', 'c++17', - 'c++20')), - EnumVariable('compiler', 'Select compiler', 'default', - allowed_values = ('default', 'gnu', 'intel', 'mingw', 'msvc', - 'linux-mingw', 'aix', 'posix', 'hp', 'sgi', - 'sun', 'clang')), + ('libs', 'Set extra libs', None), + EnumVariable( + 'cxxstd', 'Set C++ language standard', 'c++17', + allowed_values = ('c++98', 'c++11', 'c++14', 'c++17', 'c++20')), + BoolVariable('dbgstdcxx', 'Enable GNU libstdc++ debugging', 0), + EnumVariable( + 'compiler', 'Select compiler', 'default', + allowed_values = ('default', 'gnu', 'msvc', 'posix', 'clang')), BoolVariable('static', 'Link to static libraries', 0), BoolVariable('mostly_static', 'Prefer static libraries', 0), ('prefer_static', 'Libraries where the static version is prefered', ''), @@ -605,16 +523,15 @@ def generate(env): ('prefer_dynamic', 'Libraries where the dynamic version is prefered, ' + 'regardless of "mostly_static"', ''), ('num_jobs', 'Set the concurrency level.', -1), - ('osx_min_ver', 'Set minimum support OSX version.', '10.6'), + ('osx_min_ver', 'Set minimum supported OSX version.', None), ('osx_sdk_root', 'Set OSX SDK root.', None), - ('osx_archs', 'Set OSX gcc target architectures.', 'x86_64'), - EnumVariable('win32_thread', 'Windows thread mode.', 'static', - allowed_values = ('static', 'dynamic')), - BoolVariable('cross_mingw', 'Enable mingw cross compile mode', 0), - BoolVariable('cross_osx', 'Enable OSX cross compile mode', 0), - EnumVariable('subsystem', 'Windows subsystem', 'console', - allowed_values = ('windows', 'console', 'posix', - 'native')), + ('osx_archs', 'Set OSX gcc target architectures.', None), + EnumVariable( + 'win32_thread', 'Windows thread mode.', 'static', + allowed_values = ('static', 'dynamic')), + EnumVariable( + 'subsystem', 'Windows subsystem', 'console', + allowed_values = ('windows', 'console', 'posix', 'native')), ('subsystem_version', 'Windows subsystem version', 6) ) diff --git a/config/deb/__init__.py b/config/deb/__init__.py index 7d18f1814..c0399c032 100644 --- a/config/deb/__init__.py +++ b/config/deb/__init__.py @@ -1,9 +1,42 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from __future__ import print_function import os import shutil import string import math +import subprocess from SCons.Script import * from SCons.Action import CommandAction @@ -17,36 +50,32 @@ def get_total_file_size(path): return total -def replace_underscore(s): - return s.replace('_', '-') +def replace_underscore(s): return s.replace('_', '-') def write_control(path, env, installed_size): - f = None - try: - f = open(path, 'w') - + with open(path, 'w') as f: write_var = env.WriteVariable - write_var(env, f, 'Package', 'package_name_lower', None, + write_var(env, f, 'Package', 'package_name_lower', None, replace_underscore) - write_var(env, f, 'Version', 'version', None, replace_underscore) + write_var(env, f, 'Version', 'version', None, replace_underscore) write_var(env, f, 'Standards-Version', 'deb_standards_version') - write_var(env, f, 'Maintainer', 'maintainer') - write_var(env, f, 'Priority', 'deb_priority') - write_var(env, f, 'Section', 'deb_section') - write_var(env, f, 'Bugs', 'bug_url') - write_var(env, f, 'Homepage', 'url') - write_var(env, f, 'Essential', 'deb_essential') + write_var(env, f, 'Maintainer', 'maintainer') + write_var(env, f, 'Priority', 'deb_priority') + write_var(env, f, 'Section', 'deb_section') + write_var(env, f, 'Bugs', 'bug_url') + write_var(env, f, 'Homepage', 'url') + write_var(env, f, 'Essential', 'deb_essential') write_var(env, f, 'Distribution', 'deb_distribution') - write_var(env, f, 'Depends', 'deb_depends') - write_var(env, f, 'Pre-Depends', 'deb_pre_depends') - write_var(env, f, 'Recommends', 'deb_recommends') - write_var(env, f, 'Suggests', 'deb_suggests') - write_var(env, f, 'Breaks', 'deb_breaks') - write_var(env, f, 'Conflicts', 'deb_conflicts') - write_var(env, f, 'Provides', 'deb_provides') - write_var(env, f, 'Replaces', 'deb_replaces') - write_var(env, f, 'Enhances', 'deb_enhances') + write_var(env, f, 'Depends', 'deb_depends') + write_var(env, f, 'Pre-Depends', 'deb_pre_depends') + write_var(env, f, 'Recommends', 'deb_recommends') + write_var(env, f, 'Suggests', 'deb_suggests') + write_var(env, f, 'Breaks', 'deb_breaks') + write_var(env, f, 'Conflicts', 'deb_conflicts') + write_var(env, f, 'Provides', 'deb_provides') + write_var(env, f, 'Replaces', 'deb_replaces') + write_var(env, f, 'Enhances', 'deb_enhances') write_var(env, f, 'Architecture', 'package_arch', env.GetPackageArch()) f.write('Installed-Size: %d\n' % math.ceil(installed_size / 1024)) @@ -57,10 +86,6 @@ def write_control(path, env, installed_size): f.write(' %s\n' % line) - finally: - if f is not None: f.close() - - def install_files(env, key, target, perms = 0o644, dperms = 0o755): if key in env: env.CopyToPackage(env.get(key), target, perms, dperms) @@ -92,23 +117,19 @@ def build_function(target, source, env): install_files(env, 'icons', build_dir + '/usr/share/pixmaps') install_files(env, 'mime', build_dir + '/usr/share/mime/packages') install_files(env, 'platform_independent', build_dir + '/usr/share/' + name) + install_files(env, 'misc', build_dir) + install_files(env, 'systemd', build_dir + '/lib/systemd/system') # Dirs docs_dir = build_dir + '/usr/share/doc/' + name # Create conffiles - filename = build_dir + '/DEBIAN/conffiles' - f = None - try: - conffiles = get_files(env, 'init_d', '/etc/init.d') - if conffiles is not None: + conffiles = get_files(env, 'init_d', '/etc/init.d') + if conffiles: + def opener(path, flags): return os.open(path, flags, 0o644) + with open(build_dir + '/DEBIAN/conffiles', 'w', opener = opener) as f: for src, dst, mode in conffiles: - if f is None: f = open(filename, 'w') f.write(dst + '\n') - finally: - if f is not None: - f.close() - os.chmod(filename, 0o644) # Debian changelog changelog = build_dir + '/DEBIAN/changelog' @@ -136,9 +157,33 @@ def build_function(target, source, env): # Strip exectuables if not int(env.get('debug')): - for src, dst, mode in get_files(env, 'programs', - build_dir + '/usr/bin'): - CommandAction('strip ' + dst).execute(dst, [dst], env) + for src, dst, mode in get_files( + env, 'programs', build_dir + '/usr/bin'): + CommandAction( + env.get('STRIP', 'strip') + ' ' + dst).execute(dst, [dst], env) + + # Library dependencies + if 'programs' in env: + progs = ['usr/bin/' + os.path.basename(prog) for prog in env.get('programs')] + + # dummy debian/control required + os.makedirs(build_dir + '/debian', 0o755) + open(build_dir + '/debian/control', 'w').close() + + proc = subprocess.run(['/usr/bin/dpkg-shlibdeps', + '--ignore-missing-info', '-O'] + progs, + stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, + cwd=build_dir, universal_newlines=True) + + if proc.stdout: + libdeps = proc.stdout[len('shlibs:Depends='):].strip() + print('library dependencies: %s' % libdeps) + + # env.Append() does not appear to work with pre-existing strings + if env.get('deb_depends'): env['deb_depends'] += ', ' + libdeps + else: env.Append(deb_depends = libdeps) + + shutil.rmtree(build_dir + '/debian') # Create debian control total_size = get_total_file_size(build_dir) diff --git a/config/dist/__init__.py b/config/dist/__init__.py index e889d0dd3..4efdb8312 100644 --- a/config/dist/__init__.py +++ b/config/dist/__init__.py @@ -1,6 +1,39 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + import os import sys import tarfile +import zipfile import re import platform import time @@ -9,14 +42,15 @@ def find_files(path, exclude = None): if not os.path.exists(path): return [] - if exclude: - dir, filename = os.path.split(path) - if exclude.match(filename): return [] - if not os.path.isdir(path): return [path] + dir, filename = os.path.split(path) + + if exclude and exclude.match(filename): return [] + if not os.path.isdir(path): return [(path, filename)] files = [] for f in os.listdir(path): - files += find_files(path + '/' + f, exclude) + children = find_files(path + '/' + f, exclude) + files += [(path, filename + '/' + name) for path, name in children] return files @@ -24,54 +58,85 @@ def find_files(path, exclude = None): def modify_targets(target, source, env): if env.get('debug', False): mode = 'debug' else: mode = 'release' + mode = env.get('PACKAGE_MODE', mode) dist_ver = env.get('dist_version', env.subst('$PACKAGE_VERSION')) vars = { - 'machine' : platform.machine(), - 'bits' : platform.architecture()[0], - 'system' : platform.system(), - 'release' : platform.release(), - 'version' : dist_ver, - 'date' : time.strftime('%Y%m%d'), - 'mode' : mode, + 'machine': platform.machine(), + 'bits': platform.architecture()[0], + 'system': platform.system(), + 'release': platform.release(), + 'version': dist_ver, + 'date': time.strftime('%Y%m%d'), + 'mode': mode, } build = env.get('dist_build') if len(build) and build[0] not in '-_': build = '_' + build if len(dist_ver): build = '_' + dist_ver + build - target = ((str(target[0]) + build) % vars % env._dict) + '.tar.bz2' + target = ((str(target[0]) + build) % vars % env._dict) + '.tar' return [target.lower(), source] +def modify_targets_bz2(target, source, env): + target, source = modify_targets(target, source, env) + return [target + '.bz2', source] + + +def modify_targets_zip(target, source, env): + target, source = modify_targets(target, source, env) + target = target[:-3] + 'zip' + return [target, source] + + def build_function(target, source, env): target = str(target[0]) # Write 'dist.txt' - f = None - try: - f = open('dist.txt', 'w') - f.write(target) - finally: - if f is not None: f.close() + with open('dist.txt', 'w') as f: f.write(target) + + m = re.match(r'^(.*)\.tar(\.\w+)?$', target) + dist_name = m.group(1) + + mode = 'w:bz2' if target.endswith('.bz2') else 'w' + + with tarfile.open(target, mode = mode) as tar: + exclude_pats = env.get('DIST_EXCLUDES') + exclude_re = re.compile('^((' + ')|('.join(exclude_pats) + '))$') + + for src in map(str, source): + for path, name in find_files(src, exclude_re): + tar.add(path, dist_name + '/' + name) + + +def build_function_zip(target, source, env): + target = str(target[0]) + + # Write 'dist.txt' + with open('dist.txt', 'w') as f: f.write(target) - dist_name = os.path.splitext(os.path.splitext(target)[0])[0] + m = re.match(r'^(.*)\.zip$', target) + dist_name = m.group(1) - tar = tarfile.open(target, mode = 'w:bz2') + compression = env.get('compression', zipfile.ZIP_DEFLATED) + if compression is None: compression = zipfile.ZIP_STORED - exclude_pats = env.get('DIST_EXCLUDES') - exclude_re = re.compile('^((' + ')|('.join(exclude_pats) + '))$') + with zipfile.ZipFile(target, mode = 'w', compression = compression) as zip: + exclude_pats = env.get('DIST_EXCLUDES') + exclude_re = re.compile('^((' + ')|('.join(exclude_pats) + '))$') - for src in map(str, source): - for file in find_files(src, exclude_re): - tar.add(file, dist_name + '/' + file) + for src in map(str, source): + for path, name in find_files(src, exclude_re): + zip.write(path, dist_name + '/' + name) def generate(env): env.SetDefault(DIST_EXCLUDES = [r'\.svn', r'\.sconsign.dblite', r'.*\.obj', - r'\.sconf_temp', r'.*~', r'.*\.o']) + r'\.sconf_temp', r'.*~', r'.*\.o', + r'\.DS_Store']) env.CBAddVariables( ('dist_version', 'Set dist file version', None), @@ -81,7 +146,18 @@ def generate(env): source_factory = SCons.Node.FS.Entry, source_scanner = SCons.Defaults.DirScanner, emitter = modify_targets) - env.Append(BUILDERS = {'TarBZ2Dist' : bld}) + bld_bz2 = Builder(action = build_function, + source_factory = SCons.Node.FS.Entry, + source_scanner = SCons.Defaults.DirScanner, + emitter = modify_targets_bz2) + bld_zip = Builder(action = build_function_zip, + source_factory = SCons.Node.FS.Entry, + source_scanner = SCons.Defaults.DirScanner, + emitter = modify_targets_zip) + + env.Append(BUILDERS = {'ZipDist' : bld_zip}) + env.Append(BUILDERS = {'TarBZ2Dist' : bld_bz2}) + env.Append(BUILDERS = {'TarDist' : bld}) return True diff --git a/config/distpkg/__init__.py b/config/distpkg/__init__.py deleted file mode 100644 index 49098fba1..000000000 --- a/config/distpkg/__init__.py +++ /dev/null @@ -1,155 +0,0 @@ -''' -Builds an OSX distribution package -''' - -import os -import shutil - -from SCons.Script import * - - -def build_function(target, source, env): - target = str(target[0]) - - # Create package build dir - if target[-4:] != '.zip': raise Exception('Expected .zip in package name') - build_dir = target[:-4] # Remove .zip - if os.path.exists(build_dir): shutil.rmtree(build_dir) - - # Make dirs - contents_dir = os.path.join(build_dir, 'Contents') - packages_dir = os.path.join(contents_dir, 'Packages') - resources_dir = os.path.join(contents_dir, 'Resources') - for d in (contents_dir, packages_dir, resources_dir): os.makedirs(d, 0o775) - - # Load package info - pkg_info = [] - packages = env.get('distpkg_packages', []) - for p in packages: - infofile = os.path.join(p, 'Contents/Info.plist') - if os.path.exists(infofile): - import plistlib - pkg_info.append(plistlib.readPlist(infofile)) - else: raise Exception('Missing %s' % infofile) - - # Create distribution.dist - from xml.etree.ElementTree import ElementTree, Element, SubElement - root = Element('installer-script', {'minSpecVersion': '1.0'}) - - if env.get('distpkg_root_volume_only', False): rootVolumeOnly = 'false' - else: rootVolumeOnly = 'true' - if env.get('distpkg_allow_external_scripts', False): - allowExternalScripts = 'yes' - else: allowExternalScripts = 'no' - - SubElement(root, 'options', { - 'rootVolumeOnly': rootVolumeOnly, - 'allow-external-scripts': allowExternalScripts, - 'customize': env.get('distpkg_customize', 'allow'), - }) - - SubElement(root, 'title').text = env.get('summary') - for key in 'conclusion license readme welcome'.split(): - if 'distpkg_' + key in env: - SubElement(root, key, {'file': env.get('distpkg_' + key)}) - - background = env.get('distpkg_background', None) - if background: - SubElement(root, 'background', { - 'file': background, - 'alignment': 'bottomleft', - 'scaling': 'none', - }) - - pkg_target = env.get('distpkg_target', '10.5') - pkg_arch = env.get('distpkg_arch', None) - SubElement(root, 'installation-check', {'script': 'pm_install_check();'}) - SubElement(root, 'volume-check', {'script': 'pm_volume_check();'}) - script_text = """ -function pm_volume_check() { - if(!(my.target.systemVersion && - system.compareVersions(my.target.systemVersion.ProductVersion, '""" + \ - pkg_target + """') >= 0)) { - my.result.title = 'Unable to Install'; - my.result.message = 'OSX """ + pkg_target + """ or later is required.'; - my.result.type = 'Fatal'; - return false; - } - return true; -} -function pm_install_check() { - if((system.sysctl('hw.cputype') == '18')) { - my.result.title = 'Unable to Install'; - my.result.message = 'An intel-based Mac is required.'; - my.result.type = 'Fatal'; - return false; - }""" - if pkg_arch == 'x86_64': - script_text += """ - if(system.sysctl('hw.optional.x86_64') == false) { - my.result.title = 'Unable to Install'; - my.result.message = 'A 64-bit cpu is required (core 2 duo or better).'; - my.result.type = 'Fatal'; - return false; - }""" - script_text += """ - return true; -} -""" - SubElement(root, 'script').text = script_text - - outline = SubElement(root, 'choices-outline') - for i in range(len(pkg_info)): - info = pkg_info[i] - id = info['CFBundleIdentifier'] - choice_id = 'choice' + str(i) - choice_title = os.path.basename(packages[i]) - SubElement(outline, 'line', {'choice': choice_id}) - - choice = SubElement(root, 'choice', { - 'id': choice_id, - 'title': choice_title, - 'description': '', - }) - - SubElement(choice, 'pkg-ref', {'id': id}) - - pkg_path = 'file:./Contents/Packages/' + os.path.basename(packages[i]) - pkg_ref_info = { - 'id': id, - 'installKBytes': str(info['IFPkgFlagInstalledSize']), - 'version': info['CFBundleShortVersionString'], - } - try: - if info['IFPkgFlagAuthorizationAction'] == 'RootAuthorization': - pkg_ref_info['auth'] = 'Root' - except: pass - SubElement(root, 'pkg-ref', pkg_ref_info).text = pkg_path - - tree = ElementTree(root) - f = None - try: - f = open(contents_dir + '/distribution.dist', 'w') - tree.write(f, 'utf-8') - finally: - if f is not None: f.close() - - # Install files - env.InstallFiles('distpkg_resources', resources_dir) - env.InstallFiles('distpkg_packages', packages_dir, perms = 0) - - # Zip results - env.ZipDir(target, build_dir) - - -def generate(env): - bld = Builder(action = build_function, - source_factory = SCons.Node.FS.Entry, - source_scanner = SCons.Defaults.DirScanner) - env.Append(BUILDERS = {'DistPkg' : bld}) - - return True - - -def exists(): - return 1 diff --git a/config/event/__init__.py b/config/event/__init__.py index 1625f4f9d..bc3a26fdb 100644 --- a/config/event/__init__.py +++ b/config/event/__init__.py @@ -1,9 +1,41 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * def configure(conf): conf.CBCheckHome('event', lib_suffix = ['/src'], inc_suffix = ['/include']) - conf.CBRequireHeader('event.h') + conf.CBRequireHeader('event2/event.h') conf.CBRequireLib('event') diff --git a/config/expat/__init__.py b/config/expat/__init__.py index 7db05bb2a..0b1ce9fb0 100644 --- a/config/expat/__init__.py +++ b/config/expat/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * @@ -15,8 +47,6 @@ def configure(conf): else: conf.CBRequireLib('expat') - env.CBDefine('HAVE_EXPAT') - def generate(env): env.CBAddConfigTest('expat', configure) diff --git a/config/find_dlls/__init__.py b/config/find_dlls/__init__.py index 37d88b981..b4266d818 100644 --- a/config/find_dlls/__init__.py +++ b/config/find_dlls/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + import os import sys import re diff --git a/config/flatdistpkg/__init__.py b/config/flatdistpkg/__init__.py index 63df2090b..a9326336b 100644 --- a/config/flatdistpkg/__init__.py +++ b/config/flatdistpkg/__init__.py @@ -1,154 +1,114 @@ -# flatdistpkg.py -from __future__ import print_function - -import os, platform, shutil +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + +''' flatdistpkg ''' + +import os +import shutil +import glob +import re import config import zipfile +import mimetypes +mimetypes.init() from SCons.Script import * -from SCons.Action import CommandAction import glob -try: - import json -except ImportError: - import simplejson as json -from pprint import pprint +import json +deps = ['codesign', 'notarize', 'compiler'] -filename_package_build_txt = 'package.txt' -filename_package_desc_txt = 'package-description.txt' -filename_package_info_json = 'package-parameters.json' filename_distribution_xml = 'distribution.xml' -build_dir = 'build' -build_dir_tmp = build_dir + '/distpkg/tmp' -build_dir_resources = build_dir + '/distpkg/Resources' -build_dir_packages = build_dir + '/distpkg/Packages' -build_dir_stage = build_dir + '/flatpkg' # appended with /package_name +build_dir = 'build/flatdistpkg' +build_dir_tmp = build_dir + '/tmp' +build_dir_resources = build_dir + '/Resources' +build_dir_packages = build_dir + '/Packages' build_dirs = [ build_dir_tmp, build_dir_resources, - build_dir_packages, build_dir_stage, + build_dir_packages, ] # probably don't need these; info should be passed via FlatDistPackager() default_src_resources = 'Resources' # going to generate this from scratch, so won't need template -default_src_distribution_xml = 'src/distribution.xml' +default_src_distribution_xml = 'osx/distribution.xml' build_dir_distribution_xml = \ os.path.join(build_dir_tmp, filename_distribution_xml) -def RunCommandOrRaise(env, cmd): - print('@', cmd) - ret = CommandAction(cmd).execute(None, [], env) - if ret: raise Exception('command failed, return code %s' % str(ret)) - - def clean_old_build(env): # rm intermediate build stuff - # do not rm old build products, descriptions + # do not rm old build products if os.path.exists(build_dir): shutil.rmtree(build_dir) -def setup_dirs(env): - return - # FUTURE USE - # build/distpkg/package_name/{tmp,Resources,Packages} - # build/flatpkg/package_name/{root,Resources,Scripts} - # useful if a project creates multiple distpkg - # clean_old_build would need to only rm build/distpkg/thisname - # would also want to separate flatpkg building - name = env['package_name'] - env['build_dir'] = 'build' - env['build_dir_tmp'] = tmp = \ - build_dir + '/distpkg/' + name + '/tmp' - env['build_dir_resources'] = res = \ - build_dir + '/distpkg/' + name + '/Resources' - env['build_dir_packages'] = packs = \ - build_dir + '/distpkg/' + name + '/Packages' - env['build_dir_stage'] = stage = build_dir + '/flatpkg' - env['build_dirs'] = [tmp,res,packs,stage] - env['build_dir_distribution_xml'] = \ - os.path.join(tmp, filename_distribution_xml) - - def create_dirs(env): - #setup_dirs(env) - dirs = build_dirs #+ env.get('build_dirs',[]) - for d in dirs: + for d in build_dirs: if not os.path.isdir(d): os.makedirs(d, 0o755) - #env.Dir(build_dir) - # above fails with - # scons: *** [fah-installer_7.2.12_intel.pkg.zip] TypeError : - # Tried to lookup File 'build' as a Dir. -def remove_cruft_from_directory(d, env): - if not (d and os.path.isdir(d) and d.startswith('build/')): - return - # rm any lingering cruft (.svn .DS_Store) - # other candidates may include - # ._??*, resource forks, ACLs, xattrs - # In SConstruct, should use env['package_ignores'] += ['.DS_Store'] - # FIXME NOT FULLY IMPLEMENTED - # FIXME should probably use os.walk() - cmd = ['find',d,'-type','f','-name','.DS_Store','-print','-delete'] - env.RunCommand(cmd) - return - # feels too dangerous - cmd = ['find', d, '-type', 'd', '-name', '.svn', '-exec', - 'rm', '-rf', '{}', ';', '-prune', '-print'] - env.RunCommand(cmd) - # UNTESTED: - cruft_files = ['.DS_Store'] - cruft_dirs = ['.svn'] - for root, dirs, files in os.walk(d): - for name in cruft_files: - if name in files: - path = os.path.join(root, name) - print('WOULD BE deleting ' + path) - #os.remove(path) - for name in cruft_dirs: - if name in dirs: - dirs.remove(name) - path = os.path.join(root, name) - print('WOULD BE deleting directory ' + path) - #shutil.rmtree(path) - - -def rename_prepostflight_scripts(scripts_dir): - # unless PackageInfo says otherwise, - # flat pkgs only use pre/postinstall - pre1 = os.path.join(scripts_dir, 'preflight') - pre2 = os.path.join(scripts_dir, 'preinstall') - post1 = os.path.join(scripts_dir, 'postflight') - post2 = os.path.join(scripts_dir, 'postinstall') - if os.path.isfile(pre1) and not os.path.exists(pre2): - print('renaming %s to %s' % (pre1, pre2)) - os.rename(pre1, pre2) - if os.path.isfile(post1) and not os.path.exists(post2): - print('renaming %s to %s' % (post1, post2)) - os.rename(post1, post2) +def migrate_distpkg_keys(env): + # copy all distpkg_* values to pkg_* + # do not delete distpkg_* keys; they may be expected elsewhere + count = 0 + for key in env.keys(): + if key.startswith('distpkg_'): + key0 = key[4:] # pkg_ + if key0 in env: + raise Exception(f'error: both {key} and {key0} exist') + env[key0] = env[key] + print(f'NOTE: copied value of key {key} to {key0}') + count += 1 + if 0 < count: + print(f'NOTE: {count} distpkg_ keys copied; such keys are deprecated') def build_component_pkg(info, env): # FIXME -- possibly incomplete and makes assumptions # build component from info using pkgbuild - # uses globals build_dir_stage, build_dir_packages + # uses globals build_dir_packages name = info.get('name') home = info.get('home') pkg_id = info.get('pkg_id') - # if no comp version, use distpkg version + # if no component version, use package version version = info.get('version', env.get('version')) root = info.get('root') - resources = info.get('resources') - pkg_resources = info.get('pkg_resources') - install_to = info.get('install_to', '/') + install_to = info.get('install_to', env.get('pkg_install_to', '/')) pkg_nopayload = info.get('pkg_nopayload', False) if not name: @@ -160,73 +120,40 @@ def build_component_pkg(info, env): if not version: raise Exception('no version for component %s' % name) - stage = os.path.join(build_dir_stage, name) - stage_resources = os.path.join(stage, 'Resources') - target = os.path.join(build_dir_packages, name + '.pkg') - # FIXME uses knowledge of how pkg.py works + # default value is for benefit of old projects (v7 installer) if not root: root = home + '/build/pkg/root' - if not resources: - resources = home + '/build/pkg/Resources' - - # FIXME uses knowledge of layout of most projects - if pkg_resources is None: - d = os.path.join(home,'osx/Resources') - if d and os.path.isdir(d): - pkg_resources = [[d, '.']] - # FIXME uses knowledge of how pkg_scripts has been used - # doesn't handle pkg_scripts as tuple list, like pkg_resources always is + # default value is for benefit of old projects (v7 installer) scripts = os.path.join(home, info.get('pkg_scripts', 'osx/scripts')) - stage_scripts = None - if scripts: - scripts_dir_name = os.path.basename(scripts) - stage_scripts = os.path.join(stage, scripts_dir_name) - - # make needed dirs - if not os.path.isdir(stage): os.makedirs(stage) - # if root doesn't exist, do full build of root, same as pkg.py does - # need package-parameters.json to do so - # TODO - if not os.path.isdir(root): - pass + # if pkg_files exists, always copy to root, same as pkg module does + # Note that this creates root if it doesn't yet exist + pkg_files = info.get('pkg_files') + if pkg_files and not pkg_nopayload: + if os.path.exists(root): + shutil.rmtree(root) + env.CopyToPackage(pkg_files, root) if not os.path.isdir(root) and not pkg_nopayload: raise Exception('%s component root does not exist! %s' % (name, root)) - # try to copy scripts to our stage and use that to avoid most cruft - # also allows renaming scripts before pkgbuild - if scripts and os.path.isdir(scripts): - env.CopyToPackage(scripts, stage, perms = 0o755) - - # copy resources to our stage for future distpkg use - if resources and os.path.isdir(resources): - env.CopyToPackage(resources, stage) - elif pkg_resources: - env.CopyToPackage(pkg_resources, stage_resources) - - # not needed, done later to expanded distpkg anyway - #remove_cruft_from_directory(stage, env) - - rename_prepostflight_scripts(stage_scripts) + callback = info.get('pre_sign_callback') + if callback: + callback(info) # if any apps/tools should be codesign'd do that now # assumes project didn't do it when creating its distroot # TODO clone env and add info so all sign_ vars can be overridden - sign_apps = info.get('sign_apps', []) - for path in sign_apps: - if not path.startswith('/'): - path = os.path.join(root, path) - sign_application(path, env) - - sign_tools = info.get('sign_tools', []) - for path in sign_tools: - if not path.startswith('/'): - path = os.path.join(root, path) - sign_executable(path, env) + for pattern in info.get('sign_apps', []): + for path in glob.glob(os.path.join(root, pattern)): + env.SignApplication(path) + + for pattern in info.get('sign_tools', []): + for path in glob.glob(os.path.join(root, pattern)): + env.SignExecutable(path) cmd = ['pkgbuild', '--install-location', install_to, @@ -239,20 +166,19 @@ def build_component_pkg(info, env): else: cmd += ['--root', root] - if stage_scripts and os.path.isdir(stage_scripts): - cmd += ['--scripts', stage_scripts] - elif scripts and os.path.isdir(scripts): + if scripts and os.path.isdir(scripts): cmd += ['--scripts', scripts] cmd += [target] - RunCommandOrRaise(env, cmd) + env.RunCommandOrRaise(cmd) def build_component_pkgs(env): - components = env.get('distpkg_components', None) + components = env.get('pkg_components', None) if not components: - # in future, maybe handle as implicit pkg+distpkg if pkg_type dist - raise Exception('no components specified') + # TODO: instead create components for single-pkg dist + # and set any needed pkg_ vars + raise Exception('no pkg_components specified') # validate and fill-in any missing info for info in components: @@ -263,49 +189,12 @@ def build_component_pkgs(env): raise Exception('home not provided for component ' + name) # name and pkg_id are also required, but may be in json - # try to load pkg info json, if exists - # merge with components info - # FIXME UNTESTED AND MAYBE INCOMPLETE - if not info.get('params_json_loaded'): - jsonfile = os.path.join(home, filename_package_info_json) - if os.path.isfile(jsonfile): - print('loading info from %s' % jsonfile) - info2 = json.load(jsonfile) - # merge - # trust what we were passed over what json says - # this allows distpkg to override component pkg info - info2.update(info) - info = info2 - info['params_json_loaded'] = True - name = info.get('name') if not info.get('package_name'): info['package_name'] = name if not info.get('package_name_lower'): info['package_name_lower'] = name.lower() - # try to get description, if still none - desc = info.get('short_description', '').strip() - if not desc: - desc = info.get('description', '').strip() - if not desc: - fname = os.path.join(home, filename_package_desc_txt) - if os.path.isfile(fname): - f = None - try: - f = open(fname, 'r') - desc = f.read().strip() - finally: - if f is not None: f.close() - if not desc: - desc = info.get('summary', '').strip() - if desc: - desc = desc.replace('\n',' ') - desc = desc.replace(' ',' ').replace(' ',' ') - desc = desc.replace('. ','. ') - if desc: - info['short_description'] = desc - for info in components: try: build_component_pkg(info, env) @@ -313,13 +202,14 @@ def build_component_pkgs(env): print('unable to build component ' + info.get('name')) raise e - # replace distpkg_components with modified/created info list - env['distpkg_components'] = components + # replace pkg_components with modified/created info list + env['pkg_components'] = components def build_product_pkg(target, source, env): version = env.get('version') - pkg_id = env.get('distpkg_id') + if not version: raise Exception('version is not set') + pkg_id = env.get('pkg_id') cmd = ['productbuild', '--distribution', build_dir_distribution_xml, '--package-path', build_dir_packages, @@ -328,129 +218,27 @@ def build_product_pkg(target, source, env): ] if pkg_id: cmd += ['--identifier', pkg_id] cmd += [target] - RunCommandOrRaise(env, cmd) + env.RunCommandOrRaise(cmd) def expand_flat_pkg(target, source, env): cmd = ['pkgutil', '--expand', source, target] - RunCommandOrRaise(env, cmd) + env.RunCommandOrRaise(cmd) def flatten_to_pkg(target, source, env): cmd = ['pkgutil', '--flatten', source, target] - RunCommandOrRaise(env, cmd) - - -def unlock_keychain(env, keychain=None, password=None): - if keychain is None: keychain = env.get('sign_keychain', None) - if keychain: name = keychain - else: name = 'default-keychain' - if password is None: - passfile = os.path.expanduser('~/.ssh/p') - if os.path.isfile(passfile): - f = None - try: - f = open(passfile, 'r') - password = f.read().strip('\n') - finally: - if f is not None: f.close() - if password: - cmd = ['security', 'unlock-keychain', '-p', password] - if keychain: cmd += [keychain] - try: - sanitized_cmd = cmd[:3] + ['xxxxxx'] - if keychain: sanitized_cmd += [keychain] - print('@', sanitized_cmd) - # returns 0 if keychain already unlocked, even if pass is wrong - ret = CommandAction(cmd).execute(None, [], env) - if ret: raise Exception( - 'unlock-keychain failed, return code %s' % str(ret)) - except Exception as e: - print('unable to unlock keychain "%s"' % name) - raise e - else: - print('skipping unlock "%s"' % name + '; no password given') - - -def sign_flat_package(target, source, env): - # expect source 'somewhere/tmpname.pkg', target elsewhere/finalname.pkg - sign = env.get('sign_id_installer', None) - keychain = env.get('sign_keychain', None) - if not sign: - raise Exception('unable to sign; no sign_id_installer provided') - # FIXME should do more than this - x, ext = os.path.splitext(source) - if not (os.path.isfile(source) and ext in ('.pkg', '.mpkg')): - raise Exception('unable to sign; not a flat package: ' + source) - cmd = ['productsign', '--sign', sign] - if keychain: - cmd += ['--keychain', keychain] - cmd += [source, target] - RunCommandOrRaise(env, cmd) - - -def sign_or_copy_product_pkg(target, source, env): - if env.get('sign_id_installer'): - sign_flat_package(target, source, env) - return - print('NOT signing package; no sign_id_installer provided; copying ' - 'instead...') - shutil.copy2(source, target) - - -def sign_application(target, env): - keychain = env.get('sign_keychain') - sign = env.get('sign_id_app') - cmd = ['codesign', '-f'] - try: - ver = tuple([int(x) for x in platform.mac_ver()[0].split('.')]) - # all bundles in an app must also be signed on 10.7+ - # easy way to do this is just to codesign --deep - # only ok if there are no sandbox entitlements for this app - if ver >= (10,7): cmd += ['--deep'] - except: pass - if keychain: - cmd += ['--keychain', keychain] - if sign: - cmd += ['--sign', sign] - else: - raise Exception('unable to codesign %s; no sign_id_app given' % target) - if not os.path.isdir(target) or not target.endswith('.app'): - raise Exception('unable to codesign %s; not an app' % target) - cmd += [target] - RunCommandOrRaise(env, cmd) - - -def sign_executable(target, env): - keychain = env.get('sign_keychain') - sign = env.get('sign_id_app') - prefix = env.get('sign_prefix') - cmd = ['codesign', '-f'] - if keychain: - cmd += ['--keychain', keychain] - if prefix: - if not prefix.endswith('.'): prefix += '.' - cmd += ['--prefix', prefix] - else: - raise Exception('unable to codesign %s; no sign_prefix given' % target) - if sign: - cmd += ['--sign', sign] - else: - raise Exception('unable to codesign %s; no sign_id_app given' % target) - if not (os.path.isfile(target) and os.access(target, os.X_OK)): - raise Exception('unable to codesign %s; not an executable' % target) - # FIXME should not try to sign executable scripts - cmd += [target] - RunCommandOrRaise(env, cmd) + env.RunCommandOrRaise(cmd) def build_or_copy_distribution_template(env): + # TODO: use env pkg_distribution if exists; escape values to insert into it target = build_dir_distribution_xml source = default_src_distribution_xml build_distribution_template(env, target) - if os.path.exists(target): return + if os.path.exists(target): return # assume build succeeded print('WARNING: did not generate distribution.xml; ' 'using pre-built template %s' % source) @@ -460,6 +248,7 @@ def build_or_copy_distribution_template(env): # sometimes after a 'scons --clean', above fails with # scons: *** [fah-installer_7.2.12_intel.pkg.zip] TypeError : # Tried to lookup File 'build' as a Dir. + # TODO: filter it, don't just copy shutil.copy2(source, target) @@ -469,36 +258,44 @@ def build_distribution_template(env, target=None): print('generating ' + target) - distpkg_target = env.get('distpkg_target', '10.5') - distpkg_arch = env.get('distpkg_arch') - if not distpkg_arch: - distpkg_arch = env.get('package_arch') - if distpkg_arch in (None, '', 'intel'): - print('using distpkg_arch i386 instead of "%s"' % distpkg_arch) - distpkg_arch = 'i386' + pkg_target = env.get('pkg_target', '10.5') + ver = tuple([int(x) for x in pkg_target.split('.')]) + pkg_arch = env.get('pkg_arch') + if not pkg_arch: + pkg_arch = env.get('osx_archs') + + # handle some aberrant values + if pkg_arch in (None, '', 'intel'): + print('using pkg_arch i386 instead of "%s"' % pkg_arch) + pkg_arch = 'i386' + # some projects might be passing package_arch + if pkg_arch == 'universal': + pkg_arch = 'x86_64 arm64' + + hostArchitectures = ','.join(pkg_arch.split()) # generate new tree import xml.etree.ElementTree as etree - root = etree.Element('installer-script', {'minSpecVersion':'1'}) + root = etree.Element('installer-gui-script', {'minSpecVersion':'2'}) tree = etree.ElementTree(root) - etree.SubElement(root, 'title').text = \ - env.get('package_name_lower') + '_title' + title = env.get('summary', env.get('package_name')) + title = title.replace('\n',' ').replace('\t',' ') + version = env.get('version') + if version and not version in title: title += ' ' + version + etree.SubElement(root, 'title').text = title # non-root pkg installs are very buggy, so this should stay True - distpkg_root_volume_only = env.get('distpkg_root_volume_only', True) - allow_external = env.get('distpkg_allow_external_scripts', False) + pkg_root_volume_only = env.get('pkg_root_volume_only', True) + allow_external = env.get('pkg_allow_external_scripts', False) if allow_external: allow_external = 'yes' else: allow_external = 'no' - allow_ppc = distpkg_arch and 'ppc' in distpkg_arch and \ - (distpkg_target.split('.') < '10.6'.split('.')) - if allow_ppc: hostArchitectures = 'i386,ppc' - else: hostArchitectures = 'i386' - if distpkg_root_volume_only: rootVolumeOnly = 'true' + allow_ppc = 'ppc' in pkg_arch.lower() and ver < (10,6) + if pkg_root_volume_only: rootVolumeOnly = 'true' else: rootVolumeOnly = 'false' opts = { 'allow-external-scripts': allow_external, - 'customize': env.get('distpkg_customize', 'allow'), + 'customize': env.get('pkg_customize', 'allow'), # i386 covers both 32 and 64 bit kernel, NOT cpu # cpu 64 bit check must be done in script 'hostArchitectures': hostArchitectures, @@ -506,13 +303,8 @@ def build_distribution_template(env, target=None): } etree.SubElement(root, 'options', opts) - # WARNING domains element is buggy for anything other then root-only. - # It also leads to support questions, because default selection must be - # clicked before can click continue. And it gives an uninformative, - # unhelpful message if volume check fails. - # So, disabled for now. May need to enable in the future if - # options rootVolumeOnly becomes unsupported. - if False and distpkg_root_volume_only: + # WARNING domains element can be buggy for anything other than root-only. + if (10,13) <= ver and pkg_root_volume_only: etree.SubElement(root, 'domains', { 'enable_anywhere': 'false', 'enable_currentUserHome': 'false', @@ -520,14 +312,26 @@ def build_distribution_template(env, target=None): }) for key in 'welcome license readme conclusion'.split(): - if 'distpkg_' + key in env: - etree.SubElement(root, key, {'file': env.get('distpkg_' + key)}) + if 'pkg_' + key in env: + etree.SubElement(root, key, {'file': env.get('pkg_' + key)}) - background = env.get('distpkg_background', None) + background = env.get('pkg_background', None) if background: + mtype = mimetypes.guess_type(background)[0] etree.SubElement(root, 'background', { 'alignment': 'bottomleft', 'file': background, + 'mime-type': mtype, + 'scaling': 'none', + }) + # dark mode background; defaults to same image as light + background = env.get('pkg_background_dark', background) + if background: + mtype = mimetypes.guess_type(background)[0] + etree.SubElement(root, 'background-darkAqua', { + 'alignment': 'bottomleft', + 'file': background, + 'mime-type': mtype, 'scaling': 'none', }) @@ -536,14 +340,15 @@ def build_distribution_template(env, target=None): vc = etree.SubElement(root, 'volume-check', { 'script': 'volume_check();'}) - if distpkg_target: + if pkg_target: e = etree.Element('allowed-os-versions') - etree.SubElement(e, 'os-version', {'min':distpkg_target}) + etree.SubElement(e, 'os-version', {'min':pkg_target}) vc.append(e) # options hostArchitectures is sufficient on 10.5+, but no clear # message is given by Installer.app, so we still want potential # hw.cputype check in install_check + # allowed-os-versions req macOS 10.6.6+, so volume_check is still needed script_text = """ function is_min_version(ver) { if (my.target && my.target.systemVersion && @@ -561,9 +366,9 @@ def build_distribution_template(env, target=None): return false; } function volume_check() { - if (!is_min_version('""" + distpkg_target + """')) { + if (!is_min_version('""" + pkg_target + """')) { my.result.title = 'Unable to Install'; - my.result.message = 'OSX """ + distpkg_target + \ + my.result.message = 'macOS """ + pkg_target + \ """ or later is required.'; my.result.type = 'Fatal'; return false; @@ -572,17 +377,16 @@ def build_distribution_template(env, target=None): } function install_check() {""" - if not (distpkg_arch and 'ppc' in distpkg_arch) and \ - (distpkg_target.split('.') < '10.6'.split('.')): + if not allow_ppc and ver < (10,6,6): script_text += """ if (system.sysctl('hw.cputype') == '18') { my.result.title = 'Unable to Install'; - my.result.message = 'An Intel-based Mac is required.'; + my.result.message = 'PowerPC Mac is not supported.'; my.result.type = 'Fatal'; return false; }""" - if distpkg_arch == 'x86_64': + if pkg_arch == 'x86_64': script_text += """ if (have_64_bit_cpu() == false) { my.result.title = 'Unable to Install'; @@ -598,23 +402,26 @@ def build_distribution_template(env, target=None): outline = etree.SubElement(root, 'choices-outline') - components = env.get('distpkg_components') + components = env.get('pkg_components') pkgrefs = [] for info in components: pkg_id = info.get('pkg_id') name_lower = info.get('package_name_lower') - pkg_target = info.get('distpkg_target', distpkg_target) + cpkg_target = info.get('pkg_target', pkg_target) + pkg_ver = tuple([int(x) for x in cpkg_target.split('.')]) choice_id = name_lower # remove any dots or spaces in choice_id for 10.5 compatibility choice_id = choice_id.replace('.','').replace(' ','') - choice_title = info.get('package_name', info.get('summary')) - # description is in Localizable.strings - choice_desc = info.get('package_name_lower') + '_desc' + title = info.get('package_name', info.get('summary')) + title = title.replace('\\n','\n').replace('\\t','\t').replace('\\"','"') + desc = info.get('description', '') + desc = desc.replace('\\n','\n').replace('\\t','\t').replace('\\"','"') + desc = desc.replace('\r\n', '\n').replace('\n', '__CR__') etree.SubElement(outline, 'line', {'choice':choice_id}) choice = etree.SubElement(root, 'choice', { 'id': choice_id, - 'title': choice_title, - 'description': choice_desc, + 'title': title, + 'description': desc, }) etree.SubElement(choice, 'pkg-ref', {'id': pkg_id}) pkg_path = info.get('package_name') + '.pkg' @@ -622,7 +429,7 @@ def build_distribution_template(env, target=None): 'id': pkg_id, # version and installKBytes will be added by productbuild } - if distpkg_root_volume_only or info.get('pkg_root_volume_only'): + if pkg_root_volume_only or info.get('pkg_root_volume_only'): pkg_ref_info['auth'] = 'Root' ref = etree.Element('pkg-ref', pkg_ref_info) ref.text = pkg_path @@ -634,36 +441,39 @@ def build_distribution_template(env, target=None): for app_id in must_close_apps: etree.SubElement(must_close, 'app', {'id':app_id}) pkgrefs.append(r) - # if appropriate, add start_{enabled,selected} attrs and script - if pkg_target and pkg_target.split('.') > distpkg_target.split('.'): - # add start_{enabled,selected} attrs to choice - # add min version scripts to script_text + # if appropriate, add {enabled,selected} attrs and script + if pkg_ver > ver: # TODO add arch checks if component has diff reqs than distpkg - choice.set('start_enabled', name_lower + '_start_enabled()') - choice.set('start_selected', name_lower + '_start_selected()') + munged_name = 'is_' + re.sub(r'[^A-Za-z0-9]+', '_', name_lower) + choice.set('enabled', munged_name + '_enabled();') + choice.set('selected', munged_name + '_enabled();') script_text += """ -function """ + name_lower + """_start_enabled() { - return is_min_version('""" + pkg_target + """'); -} -function """ + name_lower + """_start_selected() { - return is_min_version('""" + pkg_target + """'); +function """ + munged_name + """_enabled() { + return is_min_version('""" + cpkg_target + """'); } """ for ref in pkgrefs: root.append(ref) - etree.SubElement(root, 'script').text = script_text + etree.SubElement(root, 'script').text = '__SCRIPT_TEXT__' + script_text = '' # save tree to target - f = None - try: - f = open(target, 'w') - tree.write(f, encoding='utf-8') - finally: - if f is not None: f.close() + try: etree.indent(tree) + except: pass + # do NOT use 'utf-8' for ElementTree.write() + with open(target, 'w') as f: tree.write(f, encoding = 'unicode') + with open(target, 'r') as f: contents = f.read() + contents = contents.replace('__SCRIPT_TEXT__', script_text) + with open(target, 'w') as f: f.write(contents) def patch_expanded_pkg_distribution(target, source, env): # fixup whatever needs changing for < 10.6.6 compatibility + pkg_target = env.get('pkg_target', '10.5') + ver = tuple([int(x) for x in pkg_target.split('.')]) + if ver >= (10,6,6): + return + fpath = os.path.join(target, 'Distribution') # load xml tree = None @@ -682,12 +492,7 @@ def patch_expanded_pkg_distribution(target, source, env): print('changing minSpecVersion from %s to 1' % minSpecVersion) root.set('minSpecVersion', '1') # overwrite back to fpath - f = None - try: - f = open(fpath, 'w') - tree.write(f, encoding='utf-8') - finally: - if f is not None: f.close() + with open(fpath, 'w') as f: tree.write(f, encoding = 'unicode') # FIXME detect any failures somehow return # failed to load xml @@ -695,63 +500,47 @@ def patch_expanded_pkg_distribution(target, source, env): print('WARNING: pkg may require OSX 10.6.6 or later') -def create_localizable_strings(env): - print('generating Localizable.strings') - # English only for now - components = env.get('distpkg_components', []) - if components is None: components = [] - lines = [] - - # FUTURE - # load template files into lines - # src/Localizable.strings - # Resources/en.lproj/Localizable.strings - # ... - - # add distpkg summary aka dist package title - summary = env.get('summary', env.get('package_name')) - if summary: - key = env.get('package_name_lower') + '_title' - line = '"%s" = "%s";' % (key, summary) - lines.append(line) - # really should merge multiple Localizable.strings files, for mult lang - for comp in components: - key = comp['name'].lower() + '_desc' - value = comp.get('short_description', comp.get('description', '')) - line = '"%s" = "%s";' % (key, value) - lines.append(line) - if not value: - print('no description found for component ' + comp['name']) - # save it (overwrites if exists) - d = build_dir_resources + '/en.lproj' - if not os.path.isdir(d): os.makedirs(d, 0o755) - fname = d + '/Localizable.strings' - print('writing ' + fname) - env.WriteStringToFile(fname, lines) +def patch_expanded_pkg_distribution_cr(target, env): + # replace __CR__ with in Distribution + fpath = os.path.join(target, 'Distribution') + if not os.path.isfile(fpath): + raise Exception('Distribution xml file does not exist:', fpath) + with open(fpath, 'r') as f: contents = f.read() + contents = str(contents).replace('__CR__', ' ') + with open(fpath, 'w') as f: f.write(contents) def flat_dist_pkg_build(target, source, env): - # expect target package_name_version_arch.pkg.zip - target_zip = str(target[0]) + # expect target one of + # package_name_version_arch.pkg + # package_name_version_arch.mpkg.zip + # package_name_version_arch.pkg.zip + target_pkg = str(target[0]) + target_zip = None + if target_pkg.endswith('.zip'): + target_zip = target_pkg + target_pkg = os.path.splitext(target_pkg)[0] # validate target, source, env - # tolerate .mpkg, because installer seems semi-ok with it - # TODO allow no .zip, and no ZipDir() - target_pkg, ext = os.path.splitext(target_zip) - if ext != '.zip': raise Exception('Expected .zip in package name') + # tolerate .mpkg if also .zip target_base, ext = os.path.splitext(target_pkg) if not ext in ('.pkg', '.mpkg'): raise Exception('Expected .pkg or .mpkg in package name') + if ext == '.mpkg' and not target_zip: + raise Exception('Cannot create .mpkg without .zip') # .mpkg causes errors in log, and does not work on 10.5, # so use .pkg for flat package, even if final target is .mpkg.zip if ext == '.mpkg': target_pkg = target_base + '.pkg' + migrate_distpkg_keys(env) + # flat packages require OS X 10.5+ - distpkg_target = env.get('distpkg_target', '10.5') - if distpkg_target.split('.') < '10.5'.split('.'): + pkg_target = env.get('pkg_target', '10.5') + ver = tuple([int(x) for x in pkg_target.split('.')]) + if ver < (10,5): raise Exception( 'incompatible configuration: flat package and osx pre-10.5 (%s)' - % distpkg_target) + % pkg_target) clean_old_build(env) create_dirs(env) @@ -763,27 +552,20 @@ def flat_dist_pkg_build(target, source, env): # TODO: more validation here ... name = env.get('package_name') - print('Building "%s" flat, target %s' % (name, distpkg_target)) + print('Building "%s", target %s' % (name, pkg_target)) # copy our own dist Resources - if env.get('distpkg_resources'): - env.InstallFiles('distpkg_resources', build_dir_resources) - elif env.get('pkg_resources'): + if env.get('pkg_resources'): env.InstallFiles('pkg_resources', build_dir_resources) - unlock_keychain(env) + env.UnlockKeychain() build_component_pkgs(env) # probably not needed # I think build_component_pkgs always raises on any failure - components = env.get('distpkg_components') - if components is None or not len(components): - raise Exception('No distpkg_components. Cannot continue.') - - # create Localizable.strings with dist title, component descriptions - # this must be done AFTER components are built - create_localizable_strings(env) + if not env.get('pkg_components'): + raise Exception('No pkg_components. Cannot continue.') build_or_copy_distribution_template(env) @@ -792,36 +574,18 @@ def flat_dist_pkg_build(target, source, env): expand_flat_pkg(target_pkg_expanded, target_pkg_tmp, env) patch_expanded_pkg_distribution(target_pkg_expanded, [], env) + patch_expanded_pkg_distribution_cr(target_pkg_expanded, env) - # if built any components using home/osx/scripts, we still need to rename - for d in glob.glob(os.path.join(target_pkg_expanded, '*.pkg/Scripts')): - rename_prepostflight_scripts(d) - - remove_cruft_from_directory(target_pkg_expanded, env) + cmd = ['find',target_pkg_expanded,'-type','f','-name','.DS_Store','-delete'] + env.RunCommand(cmd) flatten_to_pkg(target_unsigned, target_pkg_expanded, env) - sign_or_copy_product_pkg(target_pkg, target_unsigned, env) - - env.ZipDir(target_zip, target_pkg) + env.SignOrCopyPackage(target_pkg, target_unsigned) - # write package-description.txt - # these are currently also generated by - # {client,viewer}/SConstruct and control/setup.py - # it should be done by pkg.py - # or projects can drop a package-parameters.json so we can get all info - desc = env.get('short_description', '').strip() - if not desc: - desc = env.get('description', '').strip() - if not desc: - desc = env.get('summary', '').strip() - # note: desc may be '', write anyway - print('writing ' + filename_package_desc_txt) - env.WriteStringToFile(filename_package_desc_txt, desc) + env.NotarizeWaitStaple(target_pkg, timeout = 1200) - # write package.txt - print('writing ' + filename_package_build_txt) - env.WriteStringToFile(filename_package_build_txt, target_zip) + if target_zip: env.ZipDir(target_zip, target_pkg) def generate(env): @@ -829,6 +593,8 @@ def generate(env): source_factory = SCons.Node.FS.Entry, source_scanner = SCons.Defaults.DirScanner) env.Append(BUILDERS = {'FlatDistPkg' : bld}) + for tool in deps: + env.CBLoadTool(tool) return True diff --git a/config/freetype2/__init__.py b/config/freetype2/__init__.py index ff18a6fe0..904c1bfc9 100644 --- a/config/freetype2/__init__.py +++ b/config/freetype2/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + import os from SCons.Script import * @@ -10,8 +42,13 @@ def configure(conf): if not 'FREETYPE2_INCLUDE' in os.environ: try: - env.ParseConfig('freetype-config --cflags') - except OSError: pass + env.ParseConfig('pkg-config freetype2 --cflags') + except OSError: + try: + env.ParseConfig('freetype-config --cflags') + except OSError: + pass + if env['PLATFORM'] == 'darwin' or int(env.get('cross_osx', 0)): if not conf.CheckOSXFramework('CoreServices'): @@ -19,15 +56,17 @@ def configure(conf): conf.CBRequireCHeader('ft2build.h') conf.CBRequireLib('freetype') - conf.CBConfig('zlib') + conf.CBConfig('ZLib') conf.CBCheckLib('png') + conf.CBCheckLib('brotlidec') + conf.CBCheckLib('brotlicommon') return True def generate(env): env.CBAddConfigTest('freetype2', configure) - env.CBLoadTools('osx zlib') + env.CBLoadTools('osx ZLib') def exists(): diff --git a/config/leveldb/__init__.py b/config/leveldb/__init__.py new file mode 100644 index 000000000..965671c90 --- /dev/null +++ b/config/leveldb/__init__.py @@ -0,0 +1,47 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + +from SCons.Script import * + + +def configure(conf): + conf.CBCheckHome('leveldb') + conf.CBRequireLib('snappy') + conf.CBRequireLib('leveldb') + conf.CBRequireCXXHeader('leveldb/db.h') + conf.env.CBConfigDef('HAVE_LEVELDB') + + +def generate(env): env.CBAddConfigTest('leveldb', configure) + + +def exists(): return 1 diff --git a/config/libyaml/__init__.py b/config/libyaml/__init__.py index b6e8f9b3b..6015cd4f9 100644 --- a/config/libyaml/__init__.py +++ b/config/libyaml/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * diff --git a/config/lz4/__init__.py b/config/lz4/__init__.py new file mode 100644 index 000000000..384fd9197 --- /dev/null +++ b/config/lz4/__init__.py @@ -0,0 +1,45 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + +from SCons.Script import * + + +def configure(conf): + conf.CBCheckHome( + 'lz4', lib_suffix = ['', '/lib'], inc_suffix = ['/src', '/include']) + conf.CBRequireHeader('lz4frame.h') + conf.CBRequireLib('lz4') + conf.CBCheckLib('xxhash') + + +def generate(env): env.CBAddConfigTest('lz4', configure) +def exists(): return 1 diff --git a/config/malloc/__init__.py b/config/malloc/__init__.py index bb095d4c3..05f386b25 100644 --- a/config/malloc/__init__.py +++ b/config/malloc/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + import os from SCons.Script import * diff --git a/config/ninja/__init__.py b/config/ninja/__init__.py index 71dc5bb03..03f86de1a 100644 --- a/config/ninja/__init__.py +++ b/config/ninja/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + # Copyright (c) 2014 The Native Client Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -62,8 +94,8 @@ def CustomCommandPrinter(cmd, targets, source, env): def WriteFile(): dest_temp = '%s.tmp' % dest_file - ninja_fh = open(dest_temp, 'w') - ninja_fh.write("""\ + with open(dest_temp, 'w') as ninja_fh: + ninja_fh.write("""\ # Generated by scons_to_ninja.py # Generic rule for handling any command. @@ -78,28 +110,28 @@ def WriteFile(): command = rm -f $out && cp -l $in $out """) - for node in node_list: - dest_path = node.get_path() - cmds = node_map[node] - deps = [GetRealNode(dep).get_path() for dep in node.all_children()] - - action = node.builder.action - if type(action) == SCons.Action.FunctionAction: - funcname = action.function_name() - if funcname == 'installFunc': - assert len(deps) == 1, len(deps) - ninja_fh.write('\nbuild %s: install %s\n' - % (dest_path, ' '.join(deps))) - continue - else: - sys.stderr.write('Ninja build: Unknown FunctionAction, ' - '%r: skipping target %r\n' - % (funcname, dest_path)) - continue - - ninja_fh.write('\nbuild %s: cmd %s\n' - % (dest_path, ' '.join(deps))) - ninja_fh.write(' cmd = %s\n' % ' && '.join(cmds)) + for node in node_list: + dest_path = node.get_path() + cmds = node_map[node] + deps = [GetRealNode(dep).get_path() for dep in node.all_children()] + + action = node.builder.action + if type(action) == SCons.Action.FunctionAction: + funcname = action.function_name() + if funcname == 'installFunc': + assert len(deps) == 1, len(deps) + ninja_fh.write('\nbuild %s: install %s\n' + % (dest_path, ' '.join(deps))) + continue + else: + sys.stderr.write('Ninja build: Unknown FunctionAction, ' + '%r: skipping target %r\n' + % (funcname, dest_path)) + continue + + ninja_fh.write('\nbuild %s: cmd %s\n' + % (dest_path, ' '.join(deps))) + ninja_fh.write(' cmd = %s\n' % ' && '.join(cmds)) # Make the result file visible atomically. os.rename(dest_temp, dest_file) diff --git a/config/notarize/__init__.py b/config/notarize/__init__.py new file mode 100644 index 000000000..d21135664 --- /dev/null +++ b/config/notarize/__init__.py @@ -0,0 +1,136 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + +''' notarize ''' + +import os +import sys +import subprocess +import re +import time +try: + import json +except ImportError: + import simplejson as json + +from SCons.Script import * + +deps = ['codesign'] # uses some sign_ vars + + +def notarize_sanity_check(env, fpath): + if env.get('notarize_disable'): + print('NOTE: notarize_disable is True', file=sys.stderr) + return + if env.get('sign_disable'): + env['notarize_disable'] = True + print('WARNING: setting notarize_disable because sign_disable is set', + file=sys.stderr) + return + if not os.path.isfile(fpath): + raise Exception('ERROR: file does not exist: \"%s\"' % fpath) + # if invaid config disable notarization and print warning + notarize_profile = env.get('notarize_profile') + if not notarize_profile: + env['notarize_disable'] = True + print('WARNING: notarize_profile is not set', file=sys.stderr) + print('WARNING: setting notarize_disable True', file=sys.stderr) + if not env.get('sign_prefix'): + print('WARNING: sign_prefix is not set', file=sys.stderr) + + +def notarize_staple_file(fpath): + cmd = ['/usr/bin/xcrun', 'stapler', 'staple', fpath] + print('Stapling ' + fpath) + # Maybe check exit code; loop if fail until timeout + # Note: failure to staple may not be fatal, assuming + # the notarization request will be approved sometime later. + # Stapling just allows offline validation by Gatekeeper. + # It would be bad for staple to fail when status was "success". + ret = subprocess.call(cmd) + if ret != 0: + print('WARNING: unable to staple ' + fpath, file=sys.stderr) + return ret + + +def NotarizeWaitStaple(env, fpath, timeout=0): + notarize_sanity_check(env, fpath) + if env.get('sign_disable'): return False + if env.get('notarize_disable'): return False + if not env.get('notarize_profile'): return False + if timeout < 0: timeout = 0 + elif timeout > 3600: timeout = 3600 + notarize_profile = env.get('notarize_profile') + cmd = ['/usr/bin/xcrun', 'notarytool', 'submit', '--wait'] + if timeout: cmd += ['--timeout', str(timeout)] + cmd += ['-p', notarize_profile, fpath] + print('@', cmd) + ret = subprocess.call(cmd) + if ret != 0: + raise Exception('ERROR: unable to notarize \"%s\"' % fpath) + ret = notarize_staple_file(fpath) + if ret != 0: + print('ERROR: Stapling failed, though notarize may have succeeded', + file=sys.stderr) + print('Done notarizing.') + return ret == 0 + + +def generate(env): + if env['PLATFORM'] == 'darwin' or int(env.get('cross_osx', 0)): + env.CBAddVariables( + # set these vars in scons-options.py + # sign_prefix is prepended tp pkg filename to make identifier + # You should at least disable notarization for debug builds + # Really, only pkgs users can download need be notarized + BoolVariable('notarize_disable', 'Disable notarization', 0), + ('notarize_profile', 'The notarytool keychain item profile name'), + # if using notarize_profile, you do not need user, pass, asc, team + ('notarize_user', 'The deveoper AppleID email used to notarize.' + + ' Need not be same as codesign account.'), + # The 10-character asc and team are allegedly optional if + # there is only one developer in notarize_user account. + # If both are specified, only asc is used. + ('notarize_asc', 'The developer asc provider id'), + ('notarize_team', 'The developer team id'), + ) + + env.AddMethod(NotarizeWaitStaple) + + for tool in deps: + env.CBLoadTool(tool) + + return True + + +def exists(): + return 1 diff --git a/config/nsi/__init__.py b/config/nsi/__init__.py index 7421c01f1..e47c103ff 100644 --- a/config/nsi/__init__.py +++ b/config/nsi/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * from SCons.Action import CommandAction @@ -35,16 +67,9 @@ def build_function(target, source, env): env['PACKAGE_ARCH'] = platform.architecture()[0][:2] tmp = nsi + '.tmp' - input = None - output = None - try: - input = open(nsi, 'r') - output = open(tmp, 'w') - output.write(input.read() % env) - - finally: - if input is not None: input.close() - if output is not None: output.close() + with open(nsi, 'r') as input: + with open(tmp, 'w') as output: + output.write(input.read() % env) action = CommandAction('$NSISCOM $NSISOPTS ' + tmp) ret = action.execute(target, [tmp], env) diff --git a/config/opengl/__init__.py b/config/opengl/__init__.py index 5e8b14f4c..3ee19364d 100644 --- a/config/opengl/__init__.py +++ b/config/opengl/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * diff --git a/config/openssl/__init__.py b/config/openssl/__init__.py index b4e8f6137..c433b3dc9 100644 --- a/config/openssl/__init__.py +++ b/config/openssl/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + import os from SCons.Script import * @@ -6,17 +38,19 @@ def check_version(context, version): context.Message("Checking for openssl version >= %s..." % version) version = version.split('.') - src = '#include \nint main() {\nreturn (' - src += version[0] + '<= (OPENSSL_VERSION_NUMBER >> 28)' - if 1 < len(version): - src += ' && ' + version[1] + \ - '<= ((OPENSSL_VERSION_NUMBER >> 20) & 0xf)' - if 2 < len(version): - src += ' && ' + version[2] + \ - '<= ((OPENSSL_VERSION_NUMBER >> 12) & 0xf)' - src += ') ? 0 : 1;}\n' - - ret = context.TryRun(src, '.cpp')[0] + version += [0] * (3 - len(version)) + + src = ''' + #include + int main() { + const unsigned v = (%s << 28) + (%s << 20) + (%s << 12); + int a[1 - 2 * (OPENSSL_VERSION_NUMBER < v)]; + a[0] = 0; + return a[0]; + } + ''' % tuple(version) + + ret = context.TryCompile(src, '.cpp') context.Result(ret) return ret @@ -29,10 +63,13 @@ def configure(conf, version = None): lib_suffix = ['/out32', '/lib', '']) if env['PLATFORM'] == 'posix': conf.CBCheckLib('dl') + conf.CBCheckLib('zstd') if (conf.CBCheckCHeader('openssl/ssl.h') and (conf.CBCheckLib('crypto') and conf.CBCheckLib('ssl')) or + (conf.CBCheckLib('libcrypto') and + conf.CBCheckLib('libssl')) or (conf.CBCheckLib('libeay32MT') and conf.CBCheckLib('ssleay32MT')) or (conf.CBCheckLib('libeay32') and @@ -40,14 +77,14 @@ def configure(conf, version = None): if env['PLATFORM'] == 'win32' or int(env.get('cross_mingw', 0)): if not conf.CBCheckLib('ws2_32'): conf.CBRequireLib('wsock32') - for lib in ['advapi32', 'gdi32', 'user32']: + for lib in ['advapi32', 'gdi32', 'user32', 'crypt32']: conf.CBRequireLib(lib) if version is not None: if not conf.OpenSSLVersion(version): raise Exception('Insufficient OpenSSL version') - env.CBDefine('HAVE_OPENSSL') + env.CBConfigDef('HAVE_OPENSSL') return True else: raise Exception('Need openssl') diff --git a/config/osx/__init__.py b/config/osx/__init__.py index 10111856a..0799b174e 100644 --- a/config/osx/__init__.py +++ b/config/osx/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + import platform from SCons.Script import * @@ -10,7 +42,7 @@ def CheckOSXFramework(ctx, name): save_FRAMEWORKS = env['FRAMEWORKS'] env.PrependUnique(FRAMEWORKS = [name]) result = \ - ctx.TryLink('int main(int argc, char **argv) {return 0;}', '.c') + ctx.TryLink('int main() {return 0;}\n', '.c') ctx.Result(result) if not result: diff --git a/config/packager/__init__.py b/config/packager/__init__.py index caf20bd44..d0c625312 100644 --- a/config/packager/__init__.py +++ b/config/packager/__init__.py @@ -1,4 +1,34 @@ -from __future__ import print_function +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ import os, platform, shutil, subprocess @@ -7,7 +37,16 @@ from SCons.Script import * from SCons.Action import CommandAction -deps = ['nsi', 'pkg', 'distpkg', 'flatdistpkg', 'app', 'deb', 'rpm'] +deps = ['nsi', 'pkg', 'flatdistpkg', 'app', 'deb', 'rpm'] + + +def get_dist(): + if os.path.exists('/etc/os-release'): + with open('/etc/os-release', 'r') as f: + for line in f: + if line.startswith('ID='): + return line[3:].strip(' \n\r"').lower() + return 'unknown' # Older versions of Python don't have shutil.ignore_patterns() @@ -21,6 +60,17 @@ def _ignore_patterns(path, names): return _ignore_patterns +def ignore_match(*patterns): + import fnmatch + + def _ignore(path): + for pattern in patterns: + if fnmatch.fnmatch(path, pattern): return True + return False + + return _ignore + + def recursive_zip(path, archive, ignores): if os.path.isdir(path): names = os.listdir(path) else: @@ -73,7 +123,7 @@ def _GetPackageType(env): else: raise Exception('Invalid pkg package type "%s"' % pkg_type) elif env['PLATFORM'] == 'posix': - dist = platform.dist()[0].lower() + dist = get_dist() if dist in ['debian', 'ubuntu']: return 'deb' if dist in ['centos', 'redhat', 'fedora']: return 'rpm' @@ -135,6 +185,7 @@ def GetPackageName(env, name, without_build = False, type = None): if type == 'rpm': name += '.' + arch else: name += seps[0] + arch # deb and others + if type == 'mpkg': type = 'pkg' # bundle mpkg is deprecated name += '.' + type if type in ('app', 'mpkg'): name += '.zip' @@ -205,6 +256,39 @@ def ResolvePackageFileMap(env, sources, target): return list(resolve_file_map(sources, target, ignores)) +def ReplaceVariablesInFiles( + env, sources, target, replace_all = False, ignore = None): + if ignore is None: + ignore = ignore_match(*env.get('PACKAGE_EXCLUDES')) + + if not isinstance(sources, (list, tuple)): sources = [sources] + + os.makedirs(target, exist_ok = True) + + for src in sources: + if ignore(os.path.basename(src)): continue + + replace = src.endswith('.in') + dst = target + '/' + os.path.basename(src[:-3] if replace else src) + + if os.path.isdir(src): + for name in os.listdir(src): + env.ReplaceVariablesInFiles( + src + '/' + name, dst, replace_all or replace, ignore) + + elif os.path.isfile(src) and ( + (replace_all and not os.path.islink(src)) or replace): + print('replacing variables "%s" -> "%s"' % (src, dst)) + with open(src, 'r') as inF: + with open(dst, 'w') as outF: + outF.write(inF.read() % env) + + shutil.copymode(src, dst) + + else: shutil.copy2(src, dst) + + + def CopyToPackage(env, sources, target, perms = 0o644, dperms = 0o755): ignores = ignore_patterns(*env.get('PACKAGE_EXCLUDES')) @@ -230,15 +314,17 @@ def RunCommand(env, cmd): CommandAction(cmd).execute(None, [], env) +def RunCommandOrRaise(env, cmd): + print('@', cmd) + ret = CommandAction(cmd).execute(None, [], env) + if ret: raise Exception('command failed, return code %s' % str(ret)) + + def WriteStringToFile(env, path, contents): if not isinstance(contents, (list, tuple)): contents = [contents] - f = None - try: - f = open(path, 'w') + with open(path, 'w') as f: for line in contents: f.write(line + '\n') - finally: - if f is not None: f.close() def Packager(env, name, **kwargs): @@ -275,11 +361,7 @@ def Packager(env, name, **kwargs): return (app, pkg) - elif type == 'mpkg': - if 'distpkg_components' in kwargs: - return env.FlatDistPkg(target, [], **kwargs) - else: - return env.DistPkg(target, [], **kwargs) + elif type == 'mpkg':return env.FlatDistPkg(target, [], **kwargs) elif type == 'deb': return env.Deb(target, [], **kwargs) elif type == 'rpm': return env.RPM(target, [], **kwargs) @@ -294,28 +376,14 @@ def generate(env): if env['PLATFORM'] == 'darwin' or int(env.get('cross_osx', 0)): env.CBAddVariables( - # put sign_* in scons-options.py - # if not sign_keychain, the default (login) keychain will be used - # if not sign_id_installer, productsign will be skipped - # sign_id_app is required for sign_apps and sign_tools - # sign_prefix is required for sign_tools - # global; cannot currently be overridden per-component - ('sign_keychain', 'Keychain that has signatures'), - ('sign_id_installer', 'Installer signature name'), - ('sign_id_app', 'Application/Tool signature name'), - ('sign_prefix', 'codesign identifier prefix'), + ('osx_min_ver', 'Set minimum supported OSX version.'), ) - env.SetDefault(PACKAGE_EXCLUDES = ['.svn', '.sconsign.dblite', + env.SetDefault(PACKAGE_EXCLUDES = ['.DS_Store', '.svn', '.sconsign.dblite', '.sconf_temp', '*~', '*.o', '*.obj']) - env.CBLoadTool('nsi') - env.CBLoadTool('pkg') - env.CBLoadTool('distpkg') - env.CBLoadTool('flatdistpkg') - env.CBLoadTool('app') - env.CBLoadTool('deb') - env.CBLoadTool('rpm') + for tool in deps: + env.CBLoadTool(tool) env.AddMethod(FindFiles) env.AddMethod(WriteVariable) @@ -325,7 +393,9 @@ def generate(env): env.AddMethod(CopyToPackage) env.AddMethod(InstallFiles) env.AddMethod(RunCommand) + env.AddMethod(RunCommandOrRaise) env.AddMethod(ResolvePackageFileMap) + env.AddMethod(ReplaceVariablesInFiles) env.AddMethod(WriteStringToFile) env.AddMethod(ZipDir) env.AddMethod(Packager) diff --git a/config/pkg/__init__.py b/config/pkg/__init__.py index 4d10a6c4b..4b9b9e355 100644 --- a/config/pkg/__init__.py +++ b/config/pkg/__init__.py @@ -1,18 +1,57 @@ -from __future__ import print_function - -'''Builds an OSX single application package''' +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + +'''Builds an OSX single component flat dist package''' import os import shutil +import glob from SCons.Script import * -from SCons.Action import CommandAction + +deps = ['codesign', 'notarize'] -def RunCommandOrRaise(env, cmd): - print('@', cmd) - ret = CommandAction(cmd).execute(None, [], env) - if ret: raise Exception('command failed, return code %s' % str(ret)) +# https://stackoverflow.com/a/65450788 +# fast xml escape +xml_escape_table = str.maketrans({ + "<": "<", + ">": ">", + "&": "&", + "'": "'", + '"': """, +}) +def xml_escape(txt): + return txt.translate(xml_escape_table) def InstallApps(env, key, target): @@ -29,74 +68,107 @@ def InstallApps(env, key, target): def build_function(target, source, env): - # Create package build dir + # delete old package build dir build_dir = 'build/pkg' if os.path.exists(build_dir): shutil.rmtree(build_dir) + # pkg_id + if env.get('app_id') and not env.get('pkg_id'): + env.Replace(pkg_id = env.get('app_id') + '.pkg') + if not env.get('pkg_id'): + raise Exception('neither pkg_id nor app_id is set') + + version = env.get('version') + if not version: raise Exception('version is not set') + # Make root dir root_dir = os.path.join(build_dir, 'root') - os.makedirs(root_dir, 0o775) + os.makedirs(root_dir, 0o755) + + build_dir_packages = os.path.join(build_dir, 'Packages') + os.makedirs(build_dir_packages, 0o755) + + build_dir_resources = os.path.join(build_dir, 'Resources') + os.makedirs(build_dir_resources, 0o755) # Apps - if 'pkg_apps' in env: + if env.get('pkg_apps'): d = os.path.join(root_dir, 'Applications') - os.makedirs(d, 0o775) + os.makedirs(d, 0o755) InstallApps(env, 'pkg_apps', d) # Other files - if 'pkg_files' in env: + if env.get('pkg_files'): env.InstallFiles('pkg_files', root_dir) - # pkg_id - if 'app_id' in env and not 'pkg_id' in env: - env.Replace(pkg_id = env.get('app_id') + '.pkg') + pkg_resources = env.get('pkg_resources') + if pkg_resources: + if not isinstance(pkg_resources, (list, tuple)): + pkg_resources = [[pkg_resources, '.']] + env.CopyToPackage(pkg_resources, build_dir_resources) + + for pattern in env.get('sign_apps', []): + for path in glob.glob(os.path.join(root_dir, pattern)): + env.SignApplication(path) + + for pattern in env.get('sign_tools', []): + for path in glob.glob(os.path.join(root_dir, pattern)): + env.SignExecutable(path) - # pkgbuild command + # build component pkg cmd = ['${PKGBUILD}', '--root', root_dir, '--id', env.get('pkg_id'), - '--version', env.get('version'), + '--version', version, '--install-location', env.get('pkg_install_to', '/'), ] - if 'pkg_scripts' in env: cmd += ['--scripts', env.get('pkg_scripts')] - if 'pkg_plist' in env: cmd += ['--component-plist', env.get('pkg_plist')] - cmd += [build_dir + '/%s.pkg' % env.get('package_name')] + if env.get('pkg_scripts'): cmd += ['--scripts', env.get('pkg_scripts')] + if env.get('pkg_plist'): cmd += ['--component-plist', env.get('pkg_plist')] + component_pkg = build_dir_packages + '/%s.pkg' % env.get('package_name') + cmd += [component_pkg] - RunCommandOrRaise(env, cmd) + env.RunCommandOrRaise(cmd) # Filter distribution.xml dist = None - if 'pkg_distribution' in env: - f = open(env.get('pkg_distribution'), 'r') - data = f.read() - f.close() + if env.get('pkg_distribution'): + with open(env.get('pkg_distribution'), 'r') as f: data = f.read() dist = build_dir + '/distribution.xml' - f = open(dist, 'w') - f.write(data % env) - f.close() + # make xml escaped str values dict for distribution.xml insertion + xenv = {} + for key in env.keys(): + value = env[key] + if isinstance(value, (str, bytes)): + xenv[key] = xml_escape(str(value)) + with open(dist, 'w') as f: f.write(data % xenv) + # TODO else build distribution.xml similar to flatdistpkg # productbuild command - cmd = ['${PRODUCTBUILD}'] + cmd = ['${PRODUCTBUILD}', '--version', version] if dist: cmd += ['--distribution', dist] - cmd += ['--package-path', build_dir] + cmd += ['--package-path', build_dir_packages] + elif component_pkg: + print("WARNING: No distribution specified. Using --package.") + cmd += ['--package', component_pkg] else: - print("WARNING: No distribution specified. Attempting to build " - "using --root. Package will not have Resources and will put " - "wrong package id in receipts.") + print("WARNING: No distribution specified. Using --root.") cmd += ['--root', root_dir, env.get('pkg_install_to', '/'), - '--id', env.get('pkg_id'), - '--version', env.get('version')] - if 'pkg_scripts' in env: cmd += ['--scripts', env.get('pkg_scripts')] - if 'pkg_resources' in env: - cmd += ['--resources', env.get('pkg_resources')] - if 'sign_id_installer' in env: - cmd += ['--sign', env.get('sign_id_installer')] - if 'sign_keychain' in env: + '--id', env.get('pkg_id')] + scripts = env.get('pkg_scripts') + if scripts: cmd += ['--scripts', scripts] + + cmd += ['--resources', build_dir_resources] + + if env.get('sign_id_installer') and not env.get('sign_disable'): + cmd += ['--sign', env.get('sign_id_installer'), '--timestamp'] + if env.get('sign_keychain'): cmd += ['--keychain', env.get('sign_keychain')] + cmd += [str(target[0])] - RunCommandOrRaise(env, cmd) + env.RunCommandOrRaise(cmd) + env.NotarizeWaitStaple(str(target[0]), timeout = 1200) def generate(env): @@ -108,6 +180,8 @@ def generate(env): source_scanner = SCons.Defaults.DirScanner) env.Append(BUILDERS = {'Pkg' : bld}) + for tool in deps: env.CBLoadTool(tool) + return True diff --git a/config/pthreads/__init__.py b/config/pthreads/__init__.py index eed35de13..45b0d5c29 100644 --- a/config/pthreads/__init__.py +++ b/config/pthreads/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * @@ -5,7 +37,7 @@ def configure(conf): conf.CBCheckHome('pthreads') conf.CBRequireHeader('pthread.h') conf.CBRequireLib('pthread') - conf.env.CBDefine('HAVE_PTHREADS') + conf.env.CBConfigDef('HAVE_PTHREADS') def generate(env): diff --git a/config/python/__init__.py b/config/python/__init__.py index 233dca896..52e35f414 100644 --- a/config/python/__init__.py +++ b/config/python/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from __future__ import print_function from SCons.Script import * @@ -17,7 +49,7 @@ def try_config(conf, command): if conf.CheckHeader('Python.h') and conf.CheckFunc('Py_Initialize'): env.ParseConfig(command) - env.CBDefine('HAVE_PYTHON'); + env.CBConfigDef('HAVE_PYTHON'); env.Prepend(LIBS = ['util', 'm', 'dl', 'z']) return True diff --git a/config/python/python-config.py b/config/python/python-config.py index 61cc48706..96674090b 100644 --- a/config/python/python-config.py +++ b/config/python/python-config.py @@ -1,4 +1,37 @@ #!env python + +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from __future__ import print_function import sys diff --git a/config/re2/__init__.py b/config/re2/__init__.py index 735ee84d3..ef0bbbad9 100644 --- a/config/re2/__init__.py +++ b/config/re2/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * diff --git a/config/resources/__init__.py b/config/resources/__init__.py index d2e08deef..91e7f8bdb 100644 --- a/config/resources/__init__.py +++ b/config/resources/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from __future__ import print_function import os @@ -11,235 +43,198 @@ from SCons.Script import * -col = 0 - -class ResourceContext: - def __init__(self): pass +resource_version = 2 -def start_file(ctx, path): - f = open(path, 'w') +class ResourceContext: + def __init__(self): pass - note = ('WARNING: This file was auto generated. Please do NOT ' - 'edit directly or check in to source control.') - f.write( - '/' + ('*' * 75) + '\\\n ' + - '\n '.join(textwrap.wrap(note)) + '\n' + - '\\' + ('*' * 75) + '/\n' - '\n' - '#include \n\n' - 'using namespace cb;\n\n' - ) +def start_file(ctx, f): + note = ('WARNING: This file was auto generated. Please do NOT ' + 'edit directly or check in to source control.') - if ctx.ns: - for namespace in ctx.ns.split('::'): - f.write('namespace %s {\n' % namespace) + f.write( + '/' + ('*' * 75) + '\\\n ' + + '\n '.join(textwrap.wrap(note)) + '\n' + + '\\' + ('*' * 75) + '/\n' + '\n' + '#include \n\n' + 'using namespace cb;\n\n') - return f + if ctx.ns: + for namespace in ctx.ns.split('::'): + f.write('namespace %s {\n' % namespace) def end_file(ctx, f): - if ctx.ns: - for namespace in ctx.ns.split('::'): - f.write('} // namespace %s\n' % namespace) - - f.close() + if ctx.ns: + for namespace in ctx.ns.split('::'): + f.write('} // namespace %s\n' % namespace) def write_string(ctx, output, s, newline = 0): - l = len(s) + l = len(s) - if newline or ctx.col + l > 80: - output.write('\n') - ctx.col = 0 + if newline or ctx.col + l > 80: + output.write('\n') + ctx.col = 0 - i = s.rfind('\n') - if i != -1: ctx.col = l - (i + 1) - else: ctx.col += l + i = s.rfind('\n') + if i != -1: ctx.col = l - (i + 1) + else: ctx.col += l - output.write(s) + output.write(s) def is_excluded(exclude, path): - return exclude != None and exclude.search(path) != None + return exclude != None and exclude.search(path) != None def write_resource(ctx, output, data_dir, path, children = None, exclude = None): - name = os.path.basename(path) - if is_excluded(ctx.exclude, path): return + name = os.path.basename(path) + if is_excluded(ctx.exclude, path): return - is_dir = os.path.isdir(path) - id = ctx.next_id - ctx.next_id += 1 - length = 0 + is_dir = os.path.isdir(path) + id = ctx.next_id + ctx.next_id += 1 + length = 0 - if is_dir: - typeStr = 'Directory' - child_resources = [] + if is_dir: + typeStr = 'Directory' + child_resources = [] - for filename in os.listdir(path): - write_resource(ctx, output, data_dir, os.path.join(path, filename), - child_resources, exclude) + for filename in os.listdir(path): + write_resource(ctx, output, data_dir, os.path.join(path, filename), + child_resources, exclude) - write_string(ctx, output, 'const Resource *children%d[] = {' % id) + write_string(ctx, output, 'const Resource *children%d[] = {' % id) - for res in child_resources: - write_string(ctx, output, '&resource%d,' % res) + for res in child_resources: + write_string(ctx, output, '&resource%d,' % res) - write_string(ctx, output, '0};\n') + write_string(ctx, output, '0};\n') - else: - out_path = '%s/data%d.cpp' % (data_dir, id) - print('Writing resource: %s to %s' % (path, out_path)) + else: + out_path = '%s/data%d.cpp' % (data_dir, id) + print('Writing resource: %s to %s' % (path, out_path)) - typeStr = 'File' - f = open(path, 'rb') + typeStr = 'File' + with open(path, 'rb') as f: + prototype = 'extern const unsigned char data%d[]' % id - prototype = 'extern const unsigned char data%d[]' % id + write_string(ctx, output, '%s;\n' % prototype) - write_string(ctx, output, '%s;\n' % prototype) - - out = start_file(ctx, out_path) + with open(out_path, 'w') as out: + start_file(ctx, out) write_string(ctx, out, prototype + ' = {') while True: - count = 0 - for c in f.read(102400): - if not isinstance(c, int): c = ord(c) - write_string(ctx, out, '%d,' % c) - count += 1 + count = 0 + for c in f.read(102400): + if not isinstance(c, int): c = ord(c) + write_string(ctx, out, '%d,' % c) + count += 1 - if count == 0: break - length += count + if count == 0: break + length += count write_string(ctx, out, '0};\n') end_file(ctx, out) - if children != None: children.append(id) - - output.write('extern const %sResource resource%d("%s", ' % - (typeStr, id, name)) - - if is_dir: output.write('children%d' % id) - else: output.write('(const char *)data%d, %d' % (id, length)) - - output.write(');\n') - + if children != None: children.append(id) -def update_time(ctx, path): - if not os.path.exists(path): return 0 - exclude = ctx.exclude - if exclude is not None and exclude.search(path) is not None: return 0 + output.write('extern const %sResource resource%d("%s", ' % + (typeStr, id, name)) - if os.path.isdir(path): - updated = 0 + if is_dir: output.write('children%d' % id) + else: output.write('(const char *)data%d, %d' % (id, length)) - for name in os.listdir(path): - t = os.stat(path)[stat.ST_MTIME] - if updated < t: updated = t - t = update_time(os.path.join(path, name), exclude) - if updated < t: updated = t - - return updated - - else: return os.stat(path)[stat.ST_MTIME] + output.write(');\n') def get_exclude(env): - pattern = None - for ex in env.get('RESOURCES_EXCLUDES'): - if pattern == None: pattern = '' - else: pattern += '|' - pattern += '(%s)' % ex + pattern = None + for ex in env.get('RESOURCES_EXCLUDES'): + if pattern == None: pattern = '' + else: pattern += '|' + pattern += '(%s)' % ex - return re.compile(pattern) + return re.compile(pattern) def resources_build(target, source, env): - ctx = ResourceContext() - ctx.env = env - ctx.ns = env.get('RESOURCES_NS') - ctx.exclude = get_exclude(env) - ctx.next_id = 0 - ctx.col = 0 - - target = str(target[0]) - - # Check update times - if not env.get('RESOURCES_ALWAYS_BUILD'): - if os.path.exists(target): - updated = False - lastUpdate = os.stat(target)[stat.ST_MTIME] + ctx = ResourceContext() + ctx.env = env + ctx.ns = env.get('RESOURCES_NS') + ctx.exclude = get_exclude(env) + ctx.next_id = 0 + ctx.col = 0 - for src in source: - if lastUpdate < update_time(ctx, str(src)): - updated = True - break + target = str(target[0]) - if not updated: return + data_dir = os.path.splitext(target)[0] + ".data" + if os.path.exists(data_dir): shutil.rmtree(data_dir) + os.mkdir(data_dir) - data_dir = os.path.splitext(target)[0] + ".data" - if os.path.exists(data_dir): shutil.rmtree(data_dir) - os.mkdir(data_dir) - - # Write resources - f = start_file(ctx, target) + # Write resources + with open(target, 'w') as f: + start_file(ctx, f) for src in source: - write_resource(ctx, f, data_dir, str(src)) + write_resource(ctx, f, data_dir, str(src)) + + nsParts = ctx.ns.lower().split('::') + f.write(('void loadResources() {\n' + ' cb::ResourceManager::instance().add("%s", &resource0);\n' + '}\n') % '.'.join(nsParts)) end_file(ctx, f) def get_targets(exclude, path, data_dir, count = [0]): - if is_excluded(exclude, path): return [] + if is_excluded(exclude, path): return [] - id = count[0] - count[0] += 1 + if not os.path.exists(path): + raise Exception('Resource "%s" does not exist' % path) - if os.path.isdir(path): - targets = [] + id = count[0] + count[0] += 1 - for name in os.listdir(path): - targets += \ - get_targets(exclude, os.path.join(path, name), data_dir, count) + if os.path.isdir(path): + targets = [] - return targets + for name in os.listdir(path): + child = os.path.join(path, name) + targets += get_targets(exclude, child, data_dir, count) - else: - target = '%s/data%d.cpp' % (data_dir, id) - return [File(target)] + return targets + return Depends(File('data%d.cpp' % id, data_dir), path) -def modify_targets(target, source, env): - exclude = get_exclude(env) - name = str(target[0]) - data_dir = os.path.splitext(name)[0] + ".data" - target += get_targets(exclude, str(source[0]), data_dir, [0]) - print(tuple(map(str, target))) - Depends(target, FindFile('cbang/util/Resource.h', env['CPPPATH'])) - return target, source - -def resources_message(target, source, env): - return 'building resource file "%s"' % str(target[0]) +def modify_targets(target, source, env): + exclude = get_exclude(env) + name = str(target[0]) + base, ext = os.path.splitext(name) + data_dir = '%s.v%d.data' % (base, resource_version) + target = ['%s.v%d%s' % (base, resource_version, ext)] + count = [0] + for s in source: target += get_targets(exclude, str(s), data_dir, count) + return target, source def generate(env): - env.SetDefault(RESOURCES_NS = '') - env.SetDefault(RESOURCES_EXCLUDES = [r'\.svn', r'.*~']) - env.SetDefault(RESOURCES_ALWAYS_BUILD = True) + env.SetDefault(RESOURCES_NS = '') + env.SetDefault(RESOURCES_EXCLUDES = [r'\.svn', r'~$']) - bld = env.Builder(action = resources_build, - source_factory = SCons.Node.FS.Entry, - source_scanner = SCons.Defaults.DirScanner, - emitter = modify_targets) - env.Append(BUILDERS = {'Resources' : bld}) + bld = env.Builder(action = resources_build, + source_factory = SCons.Node.FS.Entry, + emitter = modify_targets) + env.Append(BUILDERS = {'Resources' : bld}) -def exists(): - return True +def exists(): return True diff --git a/config/rpm/__init__.py b/config/rpm/__init__.py index 52ea357d0..90984073b 100644 --- a/config/rpm/__init__.py +++ b/config/rpm/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + import os import shutil @@ -18,16 +50,13 @@ def write_spec_script(f, env, name, var): if var in env: script = env.get(var) - input = None - try: - input = open(script, 'r') - contents = input.read().strip() - - finally: - if input is not None: input.close() + with open(script, 'r') as input: contents = input.read().strip() f.write('%%%s\n%s\n\n' % (name, contents)) + elif name == 'install': + f.write('%install\ncp -aT %{cbang_build} %{buildroot}\n\n') + def install_files(f, env, key, build_dir, path, prefix = None, perms = None, dperms = 0o755): @@ -35,53 +64,77 @@ def install_files(f, env, key, build_dir, path, prefix = None, perms = None, if key in env: target = build_dir + path + value = env.get(key) # Copy - env.CopyToPackage(env.get(key), target, perms, dperms) + env.CopyToPackage(value, target, perms, dperms) # Write files list - for src, dst, mode in env.ResolvePackageFileMap(env.get(key), target): - if prefix is not None: f.write(prefix + ' ') - f.write(dst[len(build_dir):] + '\n') + if key != 'documents': + for src, dst, mode in env.ResolvePackageFileMap(value, target): + if prefix is not None: f.write(prefix + ' ') + f.write(dst[len(build_dir):] + '\n') + + +def install_dirs(f, env, key, build_dir, prefix = None, dperms = 0o755): + # Create dirs and write dirs list + for dir in env.get(key): + target = build_dir + '/' + dir.lstrip('/') + print("creating directory %s" % target) + os.makedirs(target, dperms) + if prefix: f.write(prefix + ' ') + else: f.write('%dir ') + f.write(target[len(build_dir):] + '\n') def build_function(target, source, env): name = env.get('package_name_lower') # Create package build dir - build_dir = 'build/%s-RPM' % name + # SPEC's %install section is responsible for populating BUILDROOT (aka + # %{buildroot} or $RPM_BUILD_ROOT) using our custom %{cbang_build} macro as + # source + build_dir = 'build/%s-BUILD' % name if os.path.exists(build_dir): shutil.rmtree(build_dir) os.makedirs(build_dir) - # Create the SPEC file - spec_file = 'build/%s.spec' % name - f = None - try: - f = open(spec_file, 'w') + # Create directories needed by rpmbuild + for dir in ['BUILD', 'BUILDROOT', 'RPMS', 'SOURCES', 'SPECS', 'SRPMS']: + dir = 'build/' + dir + if os.path.exists(dir): shutil.rmtree(dir) + os.makedirs(dir) + # Create the SPEC file + spec_file = 'build/SPECS/%s.spec' % name + with open(spec_file, 'w') as f: # Create the preamble write_var = env.WriteVariable write_var(env, f, 'Summary', 'summary') - write_var(env, f, 'Name', 'package_name_lower', None, replace_dash) + write_var(env, f, 'Name', 'package_name_lower') write_var(env, f, 'Version', 'version', None, replace_dash) write_var(env, f, 'Release', 'package_build', '1', replace_dash) write_var(env, f, 'License', 'rpm_license') write_var(env, f, 'Group', 'rpm_group') write_var(env, f, 'URL', 'url') + write_var(env, f, 'BugURL', 'bug_url') write_var(env, f, 'Vendor', 'vendor') write_var(env, f, 'Packager', 'maintainer') - write_var(env, f, 'Icon', 'icon') - write_var(env, f, 'Prefix', 'prefix') #write_var(env, f, 'BuildArch', 'package_arch', env.GetPackageArch()) write_var(env, f, 'Provides', 'rpm_provides', multi = True) write_var(env, f, 'Conflicts', 'rpm_conflicts', multi = True) write_var(env, f, 'Obsoletes', 'rpm_obsoletes', multi = True) + write_var(env, f, 'Recommends', 'rpm_recommends', multi = True) + write_var(env, f, 'Suggests', 'rpm_suggests', multi = True) write_var(env, f, 'BuildRequires', 'rpm_build_requires', multi = True) - write_var(env, f, 'Requires(pre)', 'rpm_pre_requires', multi = True) write_var(env, f, 'Requires', 'rpm_requires', multi = True) + write_var(env, f, 'Requires(pre)', 'rpm_pre_requires', multi = True) + write_var(env, f, 'Requires(preun)', 'rpm_preun_requires', multi = True) + write_var(env, f, 'Requires(post)', 'rpm_post_requires', multi = True) write_var(env, f, 'Requires(postun)', 'rpm_postun_requires', multi = True) + f.write('\n') + # Description write_spec_text_section(f, env, 'description', 'description') @@ -94,44 +147,53 @@ def build_function(target, source, env): if 'rpm_filelist' in env: f.write('%%files -f %s\n' % env.get('rpm_filelist')) else: f.write('%files\n') - f.write('%defattr(- root root)\n') + + # See https://bugzilla.redhat.com/show_bug.cgi?id=1113233#c3 + if 'documents' in env: + f.write('/usr/share/doc/' + name + '\n') for files in [ - ['documents', '/usr/share/doc/' + name, '%doc', None], - ['programs', '/usr/bin', '%attr(0775 root root)', 0o755], - ['scripts', '/usr/bin', '%attr(0775 root root)', 0o755], + ['documents', '/usr/share/doc/' + name, None, None], + ['programs', '/usr/bin', None, 0o755], + ['scripts', '/usr/bin', None, 0o755], ['desktop_menu', '/usr/share/applications', None, None], - ['init_d', '/etc/init.d', '%config %attr(0775 root root)', None], + ['init_d', '/etc/init.d', '%config', 0o755], ['config', '/etc/' + name, '%config', None], ['icons', '/usr/share/pixmaps', None, None], ['mime', '/usr/share/mime/packages', None, None], ['platform_independent', '/usr/share/' + name, None, None], + ['misc', '/', None, None], + ['systemd', '/usr/lib/systemd/system', None, None], ]: install_files(f, env, files[0], build_dir, files[1], files[2], files[3]) + install_dirs(f, env, 'rpm_client_dirs', build_dir, + '%attr(-,' + name + ',' + name + ') %dir') + # ChangeLog write_spec_text_section(f, env, 'changelog', 'rpm_changelog') - finally: - if f is not None: f.close() - - # Create directories needed by rpmbuild - for dir in ['BUILD', 'BUILDROOT', 'RPMS', 'SOURCES', 'SPECS', 'SRPMS']: - dir = 'build/' + dir - if not os.path.exists(dir): os.makedirs(dir) - + # rpmbuild strips debug information from binaries by default if %install + # section is present (may be empty) + if int(env.get('debug')): + # Fedora/RHEL + cmddebug = ' --define "__strip /usr/bin/true"' + # openSUSE + env.Append(ENV = {'NO_BRP_STRIP_DEBUG' : 'true'}) + else: cmddebug = '' # Build the package - build_dir = os.path.realpath(build_dir) - cmd = 'rpmbuild -bb --buildroot %s --define "_topdir %s/build" ' \ - '--target %s %s' % ( - build_dir, os.getcwd(), env.GetPackageArch(), spec_file) - CommandAction(cmd).execute(target, [build_dir], env) + target = str(target[0]) + cmd = 'rpmbuild -bb --define "_topdir %s/build" --define ' \ + '"_rpmfilename %s" --define "cbang_build %s" ' \ + '--define "__brp_mangle_shebangs %%{nil}"' '%s --target %s %s' % ( + os.getcwd(), target, os.path.realpath(build_dir), cmddebug, + env.GetPackageArch(), spec_file) + CommandAction(cmd).execute(target, [], env) # Move the package - target = str(target[0]) - path = 'build/RPMS/' + env.GetPackageArch() + '/' + target + path = 'build/RPMS/' + target shutil.move(path, target) diff --git a/config/run_distutils/__init__.py b/config/run_distutils/__init__.py index 72b4db58b..bea819bfe 100644 --- a/config/run_distutils/__init__.py +++ b/config/run_distutils/__init__.py @@ -1,12 +1,47 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * +import os def generate(env): env.SetDefault(RUN_DISTUTILS = 'python') env.SetDefault(RUN_DISTUTILSOPTS = 'build') - env['RUN_DISTUTILS'] = 'python' - env['RUN_DISTUTILSOPTS'] = 'build' + if 'RUN_DISTUTILS' in os.environ: + env['RUN_DISTUTILS'] = os.environ['RUN_DISTUTILS'] + if 'RUN_DISTUTILSOPTS' in os.environ: + env['RUN_DISTUTILSOPTS'] = os.environ['RUN_DISTUTILSOPTS'] bld = Builder(action = '$RUN_DISTUTILS $SOURCE $RUN_DISTUTILSOPTS') env.Append(BUILDERS = {'RunDistUtils' : bld}) diff --git a/config/sqlite3/__init__.py b/config/sqlite3/__init__.py index 4b8da70fd..ef2d9c241 100644 --- a/config/sqlite3/__init__.py +++ b/config/sqlite3/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * @@ -15,7 +47,7 @@ def configure(conf): conf.CBRequireHeader('sqlite3.h') conf.CBRequireFunc('sqlite3_backup_init') - env.CBDefine('HAVE_LIBSQLITE') + env.CBConfigDef('HAVE_LIBSQLITE') def generate(env): diff --git a/config/test/__init__.py b/config/test/__init__.py index 9fdde648c..a5b76cabe 100644 --- a/config/test/__init__.py +++ b/config/test/__init__.py @@ -1,4 +1,37 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * +import shlex def run_tests(env): @@ -6,16 +39,27 @@ def run_tests(env): import subprocess import sys - sys.exit(subprocess.call(shlex.split(env.get('TEST_COMMAND')))) + cmd = shlex.split(env.get('TEST_COMMAND')) + print('Executing:', cmd) + sys.exit(subprocess.call(cmd)) def generate(env): import os + import sys + + python = sys.executable + + dir = os.path.dirname(os.path.realpath(__file__)) + testHarness = dir + '/../../tests/testHarness' - cmd = 'python tests/testHarness -C tests --diff-failed --view-failed ' \ - '--view-unfiltered --save-failed --build' + if env['PLATFORM'] == 'win32': + python = python.replace('\\', '\\\\') + testHarness = testHarness.replace('\\', '\\\\') - if 'DOCKBOT_MASTER_PORT' in os.environ: cmd += ' --no-color' + cmd = [python, testHarness, '-C', 'tests', '--diff-failed', '--view-failed', + '--view-unfiltered', '--save-failed', '--build'] + cmd = ' '.join([shlex.quote(s) for s in cmd]) # shlex.join() not in < 3.8 env.CBAddVariables(('TEST_COMMAND', '`test` target command line', cmd)) diff --git a/config/v8/__init__.py b/config/v8/__init__.py index 74c889796..04019f1f7 100644 --- a/config/v8/__init__.py +++ b/config/v8/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * import platform @@ -7,14 +39,21 @@ def configure(conf): if conf.env.get('debug', False): lib_suffix.append('/build/Release/lib') else: lib_suffix.append('/build/Debug/lib') + if not 'V8_INCLUDE' in os.environ and not 'V8_HOME' in os.environ: + os.environ['V8_INCLUDE'] = '/usr/include/v8' + conf.CBCheckHome('v8', lib_suffix = lib_suffix) if conf.env['PLATFORM'] == 'win32' or int(conf.env.get('cross_mingw', 0)): conf.CBRequireLib('winmm') + conf.CBCheckLib('dbghelp') conf.CBRequireCXXHeader('v8.h') + conf.CBRequireCXXHeader('libplatform/libplatform.h') - if not conf.CBCheckLib('v8'): + if conf.CBCheckLib('v8_monolith'): pass + elif conf.CBCheckLib('v8'): conf.CBCheckLib('v8_libplatform') + else: conf.CBRequireLib('v8_snapshot') if not conf.CBCheckLib('v8_base'): @@ -22,7 +61,10 @@ def configure(conf): conf.CBRequireLib('v8_base.x64') else: conf.CBRequireLib('v8_base.ia32') - conf.env.CBDefine('HAVE_V8') + if conf.env.get('v8_compress_pointers'): + conf.env.CBConfigDef('V8_COMPRESS_POINTERS') + + conf.env.CBConfigDef('HAVE_V8') def generate(env): diff --git a/config/valgrind/__init__.py b/config/valgrind/__init__.py index 2b8966aa3..b05029932 100644 --- a/config/valgrind/__init__.py +++ b/config/valgrind/__init__.py @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2025, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + from SCons.Script import * @@ -8,7 +40,7 @@ def configure(conf): conf.CBCheckHeader('valgrind/drd.h') and \ conf.CBCheckHeader('valgrind/helgrind.h') and \ conf.CBCheckHeader('valgrind/memcheck.h'): - env.CBDefine('HAVE_VALGRIND') + env.CBConfigDef('HAVE_VALGRIND') def generate(env): diff --git a/config/zlib/__init__.py b/config/zlib/__init__.py deleted file mode 100644 index 6be57f669..000000000 --- a/config/zlib/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -from SCons.Script import * - - -def configure(conf): - conf.CBCheckHome('zlib', lib_suffix = ['', '/lib'], - inc_suffix = ['/src', '/include']) - conf.CBRequireHeader('zlib.h') - conf.CBRequireLib('z') - - -def generate(env): - env.CBAddConfigTest('zlib', configure) - - -def exists(): - return 1 diff --git a/debian/changelog b/debian/changelog index 0dd4f7350..5ff26c03c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,5 @@ -cbang (0.0.0) UNRELEASED; urgency=low +cbang (1.3.3-1) unstable; urgency=low - * Initial release. + * Initial release. (Closes: #949344) -- Joseph Coffland Fri, 13 Jan 2012 16:25:58 -0800 diff --git a/debian/compat b/debian/compat index 45a4fb75d..f599e28b8 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -8 +10 diff --git a/debian/control b/debian/control index febb878ba..5e841a799 100644 --- a/debian/control +++ b/debian/control @@ -2,15 +2,9 @@ Source: cbang Maintainer: Joseph Coffland Section: libs Priority: optional -Standards-Version: 3.9.2 +Standards-Version: 4.4.1 Homepage: http://cbang.org/ -Vcs-Svn: svn://cauldrondevelopment.com/svn/cbang/trunk/cbang -Vcs-Browser: https://cauldrondevelopment.com/svn/cbang/trunk/cbang -Build-Depends: debhelper (>= 8), cdbs, libexpat1-dev, - libssl-dev, libsqlite3-dev, libboost-iostreams-dev (>= 1.40.0), - libboost-filesystem-dev (>= 1.40.0), libboost-system-dev (>= 1.40.0), - libboost-regex-dev (>= 1.40.0) - +Build-Depends: debhelper (>= 11), cdbs, scons, libssl-dev, libnode-dev Package: libcbang0-dev Provides: libcbang-dev @@ -35,22 +29,14 @@ Description: C! development files reusable code. C! also encourages exception based error handling, and light use of C++ templates and C preprocesor macros. . - C! "leans" on the venerable boost library but also reimplements - several boost APIs which are considered by the author to be too - template heavy, less readable or overly complicated in boost. - . The code was developed on an as needed basis and was never intended to be any sort of grand unifying system for C++ application development. However, I hope you find many parts of the library useful in your C++ development projects. - Package: libcbang0 Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, libexpat1, - libssl1.0.0, libsqlite3-0, libboost-iostreams (>= 1.40.0), - libboost-filesystem (>= 1.40.0), libboost-system (>= 1.40.0), - libboost-regex (>= 1.40.0) +Depends: ${shlibs:Depends}, ${misc:Depends}, libssl1.1, libnode Description: C! is a collection of cross-platform C++ utility libraries C! is a collection of C++ utility libraries developed over the course of +10 years and several major C++ application development @@ -67,10 +53,6 @@ Description: C! is a collection of cross-platform C++ utility libraries reusable code. C! also encourages exception based error handling, and light use of C++ templates and C preprocesor macros. . - C! "leans" on the venerable boost library but also reimplements - several boost APIs which are considered by the author to be too - template heavy, less readable or overly complicated in boost. - . The code was developed on an as needed basis and was never intended to be any sort of grand unifying system for C++ application development. However, I hope you find many parts of the library useful in your C++ diff --git a/debian/copyright b/debian/copyright index 09c787682..80fe1e9f5 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,11 +1,11 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: C! +Upstream-Name: cbang Upstream-Contact: Joseph Coffland -Source: https://cauldrondevelopment.com/svn/cbang/trunk/cbang +Source: https://github.com/CauldronDevelopmentLLC/cbang Files: * -Copyright: 2003-2014, Cauldron Development LLC, Stanford University -License: GPL-2+ +Copyright: 2003-2024 Cauldron Development LLC +License: LGPL-2.1-or-later This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or @@ -23,3 +23,174 @@ License: GPL-2+ can be found at `/usr/share/common-licenses/GPL-2'. . A special exception to the GPL is granted for linking with openssl. + +Files: src/libevent/* +Copyright: 2002-2007 Niels Provos + 2007-2012 Niels Provos and Nick Mathewson +License: + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: src/bzip2/* +Copyright: 1996-2010 Julian R Seward +License: BSD-variant + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + . + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + . + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: src/expat/* +Copyright: + Copyright (C) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper + Copyright (C) 2001-2017 Expat maintainers +License: MIT + +Files: src/libyaml/* +Copyright: 2006, Kirill Simonov +License: Expat + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + “Softwareâ€), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + . + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED “AS ISâ€, WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +Files: src/re2/* +Copyright: 2002-2018, Google Inc., + 2014, Samsung Electronics, + 2010-2016, Stefano Rivera +License: BSD-3-google + +Files: src/re2/src/util/utf.h src/re2/src/util/rune.cc +Copyright: 2002, Lucent Technologies +License: Lucent + Permission to use, copy, modify, and distribute this software for any purpose + without fee is hereby granted, provided that this entire notice is included in + all copies of any software which is or includes a copy or modification of this + software and in all copies of the supporting documentation for such software. + . + THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED + WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY + REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS + SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +Files: src/sqlite3/* +Copyright: D. Richard Hipp +License: public-domain + The files listed have been put on the public domain by the sqlite3 + contributors. + +Files: src/zlib/* +Copyright: 1995-2013 Jean-loup Gailly and Mark Adler +License: Zlib + +Files: src/boost/* +Copyright: Boost project contributors +License: BSL-1.0 +Comment: + For a few files it is difficult or impossible to establish an actual + copyright holder; most of such files carry little to no creative + content, so the mere fact that they are covered by copyright + protection is not obvious. Most probably all such files can safely be + considered under the Boost Software License. + +Files: src/boost/libs/iostreams/* +Copyright: Jonathan Turkanis +License: BSL-1.0 + +Files: + src/boost/libs/filesystem/* + src/boost/libs/system/* +Copyright: Beman Dawes +License: BSL-1.0 + +Files: + src/boost/libs/iostreams/src/bzip2.cpp + src/boost/libs/iostreams/src/file_descriptor.cpp + src/boost/libs/iostreams/src/gzip.cpp + src/boost/libs/iostreams/src/zlib.cpp +Copyright: + CodeRage LLC + Jonathan Turkanis +License: BSL-1.0 + +Files: src/boost/libs/iostreams/src/mapped_file.cpp +Copyright: + Craig Henderson + Jonathan Graehl + Jonathan Turkanis + Jorge Lodos +License: BSL-1.0 + +Files: src/boost/libs/regex/* +Copyright: John Maddock +License: BSL-1.0 + +Files: src/boost/libs/filesystem/src/utf8_codecvt_facet.cpp +Copyright: Vladimir Prus +License: BSL-1.0 + +Files: src/boost/libs/filesystem/src/operations.cpp +Copyright: + Beman Dawes + Dietmar Kuehl +License: BSL-1.0 diff --git a/debian/rules b/debian/rules index e78639af5..c0fe89645 100755 --- a/debian/rules +++ b/debian/rules @@ -9,7 +9,7 @@ include /usr/share/cdbs/1/rules/debhelper.mk LIBPKGNAME = libcbang0 #SONAME = "$(DEB_UPSTREAM_VERSION)" -DEB_SCONS_OPTIONS = sharedlib=1 ccache=1 -j 8 +DEB_SCONS_OPTIONS = sharedlib=1 -j8 DEB_SCONS_INSTALL_OPTIONS += prefix="$(cdbs_curdestdir)/usr" DEB_DH_MAKESHLIBS_ARGS = -- -c4 diff --git a/debian/watch b/debian/watch new file mode 100644 index 000000000..97854d7fb --- /dev/null +++ b/debian/watch @@ -0,0 +1,4 @@ +version=4 +opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%$1.tar.gz%" \ + https://github.com/CauldronDevelopmentLLC/cbang/tags \ + (?:.*?/)?v?(\d[\d.]*)\.tar\.gz debian uupdate diff --git a/docs/www/Makefile b/docs/www/Makefile index 673c889e7..c2b0d3443 100644 --- a/docs/www/Makefile +++ b/docs/www/Makefile @@ -1,3 +1,35 @@ +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2024, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + all: index.html %.html: %.jade diff --git a/docs/www/css/style.css b/docs/www/css/style.css index e777850cb..4b0844f82 100644 --- a/docs/www/css/style.css +++ b/docs/www/css/style.css @@ -1,3 +1,35 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2024, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + html * { padding: 0; margin: 0; diff --git a/docs/www/index.jade b/docs/www/index.jade index 06df37a5d..374d2c33a 100644 --- a/docs/www/index.jade +++ b/docs/www/index.jade @@ -1,3 +1,35 @@ +//-///////////////////////////////////////////////////////////////////////////// +//- // +//- This file is part of the C! library. A.K.A the cbang library. // +//- // +//- Copyright (c) 2021-2024, Cauldron Development Oy // +//- Copyright (c) 2003-2021, Cauldron Development LLC // +//- All rights reserved. // +//- // +//- The C! library is free software: you can redistribute it and/or // +//- modify it under the terms of the GNU Lesser General Public License // +//- as published by the Free Software Foundation, either version 2.1 of // +//- the License, or (at your option) any later version. // +//- // +//- The C! library is distributed in the hope that it will be useful, // +//- but WITHOUT ANY WARRANTY; without even the implied warranty of // +//- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // +//- Lesser General Public License for more details. // +//- // +//- You should have received a copy of the GNU Lesser General Public // +//- License along with the C! library. If not, see // +//- . // +//- // +//- In addition, BSD licensing may be granted on a case by case basis // +//- by written permission from at least one of the copyright holders. // +//- You may request written permission by emailing the authors. // +//- // +//- For information regarding this software email: // +//- Joseph Coffland // +//- joseph@cauldrondevelopment.com // +//- // +//-///////////////////////////////////////////////////////////////////////////// + - var repoURL = 'https://github.com/CauldronDevelopmentLLC/cbang'; doctype html diff --git a/docs/www/js/main.js b/docs/www/js/main.js index 328b8d078..d1fac74e5 100644 --- a/docs/www/js/main.js +++ b/docs/www/js/main.js @@ -1,3 +1,35 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2024, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + $(function () { // Open external links in new tab $('a').each(function (index, a) { diff --git a/scripts/build-with-asan.sh b/scripts/build-with-asan.sh new file mode 100755 index 000000000..1b39be3b1 --- /dev/null +++ b/scripts/build-with-asan.sh @@ -0,0 +1,13 @@ +#!/bin/bash -e + +if [ "$CBANG_HOME" == "" ]; then + echo CBANG_HOME not set + exit 1 +fi + +CCFLAGS=-fsanitize=address +LDFLAGS="-fsanitize=address -static-libasan" + +export SCONS_OPTIONS="ccflags='$CCFLAGS' linkflags='$LDFLAGS' libs=bfd debug=1" + +scons -C "$CBANG_HOME" "$@" diff --git a/scripts/update_boost.sh b/scripts/update_boost.sh old mode 100755 new mode 100644 index 569d209cc..04c8b2849 --- a/scripts/update_boost.sh +++ b/scripts/update_boost.sh @@ -1,9 +1,41 @@ #!/bin/bash -e -VERSION=1.69.0 +################################################################################ +# # +# This file is part of the C! library. A.K.A the cbang library. # +# # +# Copyright (c) 2021-2024, Cauldron Development Oy # +# Copyright (c) 2003-2021, Cauldron Development LLC # +# All rights reserved. # +# # +# The C! library is free software: you can redistribute it and/or # +# modify it under the terms of the GNU Lesser General Public License # +# as published by the Free Software Foundation, either version 2.1 of # +# the License, or (at your option) any later version. # +# # +# The C! library is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # +# Lesser General Public License for more details. # +# # +# You should have received a copy of the GNU Lesser General Public # +# License along with the C! library. If not, see # +# . # +# # +# In addition, BSD licensing may be granted on a case by case basis # +# by written permission from at least one of the copyright holders. # +# You may request written permission by emailing the authors. # +# # +# For information regarding this software email: # +# Joseph Coffland # +# joseph@cauldrondevelopment.com # +# # +################################################################################ + +VERSION=1.83.0 NAME=boost_$(echo $VERSION | tr . _) PKG=$NAME.7z -URL=https://sf.net/projects/boost/files/boost/$VERSION/$PKG +URL=https://boostorg.jfrog.io/artifactory/main/release/$VERSION/source/$PKG BCP=./$NAME/dist/bin/bcp # Get boost @@ -27,6 +59,10 @@ $BCP --scan --boost=$NAME --unix-lines $( # Remove uneeded files for PATH in Jamroot libs/config libs/date_time libs/smart_ptr \ + $(find src/boost/boost -name edg -o -name dmc \ + -o -name no_ctps -o -name no_ttp -o -name mwcw \ + -o -name msvc70 -o -name msvc60 -o -name bcc_pre590 \ + -o -name bcc551 -o -name bcc) \ "libs/iostreams/src/lzma.cpp" \ "libs/iostreams/src/zstd.*"; do /bin/rm -rf src/boost/$PATH diff --git a/src/zlib/LICENSE b/src/ZLib/LICENSE similarity index 100% rename from src/zlib/LICENSE rename to src/ZLib/LICENSE diff --git a/src/ZLib/SConscript b/src/ZLib/SConscript new file mode 100644 index 000000000..273779e66 --- /dev/null +++ b/src/ZLib/SConscript @@ -0,0 +1,15 @@ +Import('*') + +env = env.Clone() + +if env.get('compiler') == 'clang': + env.Append(CCFLAGS = ['-Wno-shift-negative-value', + '-Wno-unknown-warning-option', + '-Wno-deprecated-non-prototype']) + +lib = env.Library('#/lib/z', Glob('*.c')) + +hdrs = env.Install(dir = '#/include', source = ['zlib.h', 'zconf.h']) +Depends(lib, hdrs) + +Return('lib') diff --git a/src/zlib/adler32.c b/src/ZLib/adler32.c similarity index 92% rename from src/zlib/adler32.c rename to src/ZLib/adler32.c index a868f073d..d0be4380a 100644 --- a/src/zlib/adler32.c +++ b/src/ZLib/adler32.c @@ -1,5 +1,5 @@ /* adler32.c -- compute the Adler-32 checksum of a data stream - * Copyright (C) 1995-2011 Mark Adler + * Copyright (C) 1995-2011, 2016 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -7,11 +7,9 @@ #include "zutil.h" -#define local static - local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2)); -#define BASE 65521 /* largest prime smaller than 65536 */ +#define BASE 65521U /* largest prime smaller than 65536 */ #define NMAX 5552 /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ @@ -62,10 +60,10 @@ local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2)); #endif /* ========================================================================= */ -uLong ZEXPORT adler32(adler, buf, len) +uLong ZEXPORT adler32_z(adler, buf, len) uLong adler; const Bytef *buf; - uInt len; + z_size_t len; { unsigned long sum2; unsigned n; @@ -132,6 +130,15 @@ uLong ZEXPORT adler32(adler, buf, len) return adler | (sum2 << 16); } +/* ========================================================================= */ +uLong ZEXPORT adler32(adler, buf, len) + uLong adler; + const Bytef *buf; + uInt len; +{ + return adler32_z(adler, buf, len); +} + /* ========================================================================= */ local uLong adler32_combine_(adler1, adler2, len2) uLong adler1; @@ -156,7 +163,7 @@ local uLong adler32_combine_(adler1, adler2, len2) sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem; if (sum1 >= BASE) sum1 -= BASE; if (sum1 >= BASE) sum1 -= BASE; - if (sum2 >= (BASE << 1)) sum2 -= (BASE << 1); + if (sum2 >= ((unsigned long)BASE << 1)) sum2 -= ((unsigned long)BASE << 1); if (sum2 >= BASE) sum2 -= BASE; return sum1 | (sum2 << 16); } diff --git a/src/ZLib/compress.c b/src/ZLib/compress.c new file mode 100644 index 000000000..e2db404ab --- /dev/null +++ b/src/ZLib/compress.c @@ -0,0 +1,86 @@ +/* compress.c -- compress a memory buffer + * Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#define ZLIB_INTERNAL +#include "zlib.h" + +/* =========================================================================== + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least 0.1% larger than sourceLen plus + 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ +int ZEXPORT compress2 (dest, destLen, source, sourceLen, level) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong sourceLen; + int level; +{ + z_stream stream; + int err; + const uInt max = (uInt)-1; + uLong left; + + left = *destLen; + *destLen = 0; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + stream.opaque = (voidpf)0; + + err = deflateInit(&stream, level); + if (err != Z_OK) return err; + + stream.next_out = dest; + stream.avail_out = 0; + stream.next_in = (z_const Bytef *)source; + stream.avail_in = 0; + + do { + if (stream.avail_out == 0) { + stream.avail_out = left > (uLong)max ? max : (uInt)left; + left -= stream.avail_out; + } + if (stream.avail_in == 0) { + stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen; + sourceLen -= stream.avail_in; + } + err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH); + } while (err == Z_OK); + + *destLen = stream.total_out; + deflateEnd(&stream); + return err == Z_STREAM_END ? Z_OK : err; +} + +/* =========================================================================== + */ +int ZEXPORT compress (dest, destLen, source, sourceLen) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong sourceLen; +{ + return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); +} + +/* =========================================================================== + If the default memLevel or windowBits for deflateInit() is changed, then + this function needs to be updated. + */ +uLong ZEXPORT compressBound (sourceLen) + uLong sourceLen; +{ + return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13; +} diff --git a/src/zlib/crc32.c b/src/ZLib/crc32.c similarity index 91% rename from src/zlib/crc32.c rename to src/ZLib/crc32.c index 979a7190a..9580440c0 100644 --- a/src/zlib/crc32.c +++ b/src/ZLib/crc32.c @@ -1,5 +1,5 @@ /* crc32.c -- compute the CRC-32 of a data stream - * Copyright (C) 1995-2006, 2010, 2011, 2012 Mark Adler + * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h * * Thanks to Rodney Brown for his contribution of faster @@ -30,17 +30,15 @@ #include "zutil.h" /* for STDC and FAR definitions */ -#define local static - /* Definitions for doing the crc four data bytes at a time. */ #if !defined(NOBYFOUR) && defined(Z_U4) # define BYFOUR #endif #ifdef BYFOUR local unsigned long crc32_little OF((unsigned long, - const unsigned char FAR *, unsigned)); + const unsigned char FAR *, z_size_t)); local unsigned long crc32_big OF((unsigned long, - const unsigned char FAR *, unsigned)); + const unsigned char FAR *, z_size_t)); # define TBLS 8 #else # define TBLS 1 @@ -201,10 +199,10 @@ const z_crc_t FAR * ZEXPORT get_crc_table() #define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1 /* ========================================================================= */ -unsigned long ZEXPORT crc32(crc, buf, len) +unsigned long ZEXPORT crc32_z(crc, buf, len) unsigned long crc; const unsigned char FAR *buf; - uInt len; + z_size_t len; { if (buf == Z_NULL) return 0UL; @@ -235,8 +233,29 @@ unsigned long ZEXPORT crc32(crc, buf, len) return crc ^ 0xffffffffUL; } +/* ========================================================================= */ +unsigned long ZEXPORT crc32(crc, buf, len) + unsigned long crc; + const unsigned char FAR *buf; + uInt len; +{ + return crc32_z(crc, buf, len); +} + #ifdef BYFOUR +/* + This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit + integer pointer type. This violates the strict aliasing rule, where a + compiler can assume, for optimization purposes, that two pointers to + fundamentally different types won't ever point to the same memory. This can + manifest as a problem only if one of the pointers is written to. This code + only reads from those pointers. So long as this code remains isolated in + this compilation unit, there won't be a problem. For this reason, this code + should not be copied and pasted into a compilation unit in which other code + writes to the buffer that is passed to these routines. + */ + /* ========================================================================= */ #define DOLIT4 c ^= *buf4++; \ c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \ @@ -247,7 +266,7 @@ unsigned long ZEXPORT crc32(crc, buf, len) local unsigned long crc32_little(crc, buf, len) unsigned long crc; const unsigned char FAR *buf; - unsigned len; + z_size_t len; { register z_crc_t c; register const z_crc_t FAR *buf4; @@ -278,7 +297,7 @@ local unsigned long crc32_little(crc, buf, len) } /* ========================================================================= */ -#define DOBIG4 c ^= *++buf4; \ +#define DOBIG4 c ^= *buf4++; \ c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \ crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24] #define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4 @@ -287,7 +306,7 @@ local unsigned long crc32_little(crc, buf, len) local unsigned long crc32_big(crc, buf, len) unsigned long crc; const unsigned char FAR *buf; - unsigned len; + z_size_t len; { register z_crc_t c; register const z_crc_t FAR *buf4; @@ -300,7 +319,6 @@ local unsigned long crc32_big(crc, buf, len) } buf4 = (const z_crc_t FAR *)(const void FAR *)buf; - buf4--; while (len >= 32) { DOBIG32; len -= 32; @@ -309,7 +327,6 @@ local unsigned long crc32_big(crc, buf, len) DOBIG4; len -= 4; } - buf4++; buf = (const unsigned char FAR *)buf4; if (len) do { diff --git a/src/zlib/crc32.h b/src/ZLib/crc32.h similarity index 100% rename from src/zlib/crc32.h rename to src/ZLib/crc32.h diff --git a/src/zlib/deflate.c b/src/ZLib/deflate.c similarity index 75% rename from src/zlib/deflate.c rename to src/ZLib/deflate.c index 65a9644ca..1ec761448 100644 --- a/src/zlib/deflate.c +++ b/src/ZLib/deflate.c @@ -1,5 +1,5 @@ /* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler + * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -52,7 +52,7 @@ #include "deflate.h" const char deflate_copyright[] = - " deflate 1.2.8 Copyright 1995-2013 Jean-loup Gailly and Mark Adler "; + " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -73,6 +73,8 @@ typedef enum { typedef block_state (*compress_func) OF((deflate_state *s, int flush)); /* Compression function. Returns the block state after the call. */ +local int deflateStateCheck OF((z_streamp strm)); +local void slide_hash OF((deflate_state *s)); local void fill_window OF((deflate_state *s)); local block_state deflate_stored OF((deflate_state *s, int flush)); local block_state deflate_fast OF((deflate_state *s, int flush)); @@ -84,15 +86,16 @@ local block_state deflate_huff OF((deflate_state *s, int flush)); local void lm_init OF((deflate_state *s)); local void putShortMSB OF((deflate_state *s, uInt b)); local void flush_pending OF((z_streamp strm)); -local int read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); +local unsigned read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); #ifdef ASMV +# pragma message("Assembler code may have bugs -- use at your own risk") void match_init OF((void)); /* asm code initialization */ uInt longest_match OF((deflate_state *s, IPos cur_match)); #else local uInt longest_match OF((deflate_state *s, IPos cur_match)); #endif -#ifdef DEBUG +#ifdef ZLIB_DEBUG local void check_match OF((deflate_state *s, IPos start, IPos match, int length)); #endif @@ -148,21 +151,14 @@ local const config configuration_table[10] = { * meaning. */ -#define EQUAL 0 -/* result of memcmp for equal strings */ - -#ifndef NO_DUMMY_DECL -struct static_tree_desc_s {int dummy;}; /* for buggy compilers */ -#endif - /* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */ -#define RANK(f) (((f) << 1) - ((f) > 4 ? 9 : 0)) +#define RANK(f) (((f) * 2) - ((f) > 4 ? 9 : 0)) /* =========================================================================== * Update a hash value with the given input byte - * IN assertion: all calls to to UPDATE_HASH are made with consecutive - * input characters, so that a running hash key can be computed from the - * previous key instead of complete recalculation each time. + * IN assertion: all calls to UPDATE_HASH are made with consecutive input + * characters, so that a running hash key can be computed from the previous + * key instead of complete recalculation each time. */ #define UPDATE_HASH(s,h,c) (h = (((h)<hash_shift) ^ (c)) & s->hash_mask) @@ -173,9 +169,9 @@ struct static_tree_desc_s {int dummy;}; /* for buggy compilers */ * the previous length of the hash chain. * If this file is compiled with -DFASTEST, the compression level is forced * to 1, and no hash chains are maintained. - * IN assertion: all calls to to INSERT_STRING are made with consecutive - * input characters and the first MIN_MATCH bytes of str are valid - * (except for the last MIN_MATCH-1 bytes of the input file). + * IN assertion: all calls to INSERT_STRING are made with consecutive input + * characters and the first MIN_MATCH bytes of str are valid (except for + * the last MIN_MATCH-1 bytes of the input file). */ #ifdef FASTEST #define INSERT_STRING(s, str, match_head) \ @@ -197,6 +193,37 @@ struct static_tree_desc_s {int dummy;}; /* for buggy compilers */ s->head[s->hash_size-1] = NIL; \ zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head)); +/* =========================================================================== + * Slide the hash table when sliding the window down (could be avoided with 32 + * bit values at the expense of memory usage). We slide even when level == 0 to + * keep the hash table consistent if we switch back to level > 0 later. + */ +local void slide_hash(s) + deflate_state *s; +{ + unsigned n, m; + Posf *p; + uInt wsize = s->w_size; + + n = s->hash_size; + p = &s->head[n]; + do { + m = *--p; + *p = (Pos)(m >= wsize ? m - wsize : NIL); + } while (--n); + n = wsize; +#ifndef FASTEST + p = &s->prev[n]; + do { + m = *--p; + *p = (Pos)(m >= wsize ? m - wsize : NIL); + /* If n is not on any hash chain, prev[n] is garbage but + * its value will never be used. + */ + } while (--n); +#endif +} + /* ========================================================================= */ int ZEXPORT deflateInit_(strm, level, version, stream_size) z_streamp strm; @@ -270,7 +297,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, #endif if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || - strategy < 0 || strategy > Z_FIXED) { + strategy < 0 || strategy > Z_FIXED || (windowBits == 8 && wrap != 1)) { return Z_STREAM_ERROR; } if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ @@ -278,14 +305,15 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, if (s == Z_NULL) return Z_MEM_ERROR; strm->state = (struct internal_state FAR *)s; s->strm = strm; + s->status = INIT_STATE; /* to pass state test in deflateReset() */ s->wrap = wrap; s->gzhead = Z_NULL; - s->w_bits = windowBits; + s->w_bits = (uInt)windowBits; s->w_size = 1 << s->w_bits; s->w_mask = s->w_size - 1; - s->hash_bits = memLevel + 7; + s->hash_bits = (uInt)memLevel + 7; s->hash_size = 1 << s->hash_bits; s->hash_mask = s->hash_size - 1; s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); @@ -319,6 +347,31 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, return deflateReset(strm); } +/* ========================================================================= + * Check for a valid deflate stream state. Return 0 if ok, 1 if not. + */ +local int deflateStateCheck (strm) + z_streamp strm; +{ + deflate_state *s; + if (strm == Z_NULL || + strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) + return 1; + s = strm->state; + if (s == Z_NULL || s->strm != strm || (s->status != INIT_STATE && +#ifdef GZIP + s->status != GZIP_STATE && +#endif + s->status != EXTRA_STATE && + s->status != NAME_STATE && + s->status != COMMENT_STATE && + s->status != HCRC_STATE && + s->status != BUSY_STATE && + s->status != FINISH_STATE)) + return 1; + return 0; +} + /* ========================================================================= */ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) z_streamp strm; @@ -331,7 +384,7 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) unsigned avail; z_const unsigned char *next; - if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL) + if (deflateStateCheck(strm) || dictionary == Z_NULL) return Z_STREAM_ERROR; s = strm->state; wrap = s->wrap; @@ -388,14 +441,35 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) return Z_OK; } +/* ========================================================================= */ +int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength) + z_streamp strm; + Bytef *dictionary; + uInt *dictLength; +{ + deflate_state *s; + uInt len; + + if (deflateStateCheck(strm)) + return Z_STREAM_ERROR; + s = strm->state; + len = s->strstart + s->lookahead; + if (len > s->w_size) + len = s->w_size; + if (dictionary != Z_NULL && len) + zmemcpy(dictionary, s->window + s->strstart + s->lookahead - len, len); + if (dictLength != Z_NULL) + *dictLength = len; + return Z_OK; +} + /* ========================================================================= */ int ZEXPORT deflateResetKeep (strm) z_streamp strm; { deflate_state *s; - if (strm == Z_NULL || strm->state == Z_NULL || - strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) { + if (deflateStateCheck(strm)) { return Z_STREAM_ERROR; } @@ -410,7 +484,11 @@ int ZEXPORT deflateResetKeep (strm) if (s->wrap < 0) { s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */ } - s->status = s->wrap ? INIT_STATE : BUSY_STATE; + s->status = +#ifdef GZIP + s->wrap == 2 ? GZIP_STATE : +#endif + s->wrap ? INIT_STATE : BUSY_STATE; strm->adler = #ifdef GZIP s->wrap == 2 ? crc32(0L, Z_NULL, 0) : @@ -440,8 +518,8 @@ int ZEXPORT deflateSetHeader (strm, head) z_streamp strm; gz_headerp head; { - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - if (strm->state->wrap != 2) return Z_STREAM_ERROR; + if (deflateStateCheck(strm) || strm->state->wrap != 2) + return Z_STREAM_ERROR; strm->state->gzhead = head; return Z_OK; } @@ -452,7 +530,7 @@ int ZEXPORT deflatePending (strm, pending, bits) int *bits; z_streamp strm; { - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; if (pending != Z_NULL) *pending = strm->state->pending; if (bits != Z_NULL) @@ -469,7 +547,7 @@ int ZEXPORT deflatePrime (strm, bits, value) deflate_state *s; int put; - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; s = strm->state; if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3)) return Z_BUF_ERROR; @@ -494,9 +572,8 @@ int ZEXPORT deflateParams(strm, level, strategy) { deflate_state *s; compress_func func; - int err = Z_OK; - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; s = strm->state; #ifdef FASTEST @@ -510,13 +587,22 @@ int ZEXPORT deflateParams(strm, level, strategy) func = configuration_table[s->level].func; if ((strategy != s->strategy || func != configuration_table[level].func) && - strm->total_in != 0) { + s->high_water) { /* Flush the last buffer: */ - err = deflate(strm, Z_BLOCK); - if (err == Z_BUF_ERROR && s->pending == 0) - err = Z_OK; + int err = deflate(strm, Z_BLOCK); + if (err == Z_STREAM_ERROR) + return err; + if (strm->avail_out == 0) + return Z_BUF_ERROR; } if (s->level != level) { + if (s->level == 0 && s->matches != 0) { + if (s->matches == 1) + slide_hash(s); + else + CLEAR_HASH(s); + s->matches = 0; + } s->level = level; s->max_lazy_match = configuration_table[level].max_lazy; s->good_match = configuration_table[level].good_length; @@ -524,7 +610,7 @@ int ZEXPORT deflateParams(strm, level, strategy) s->max_chain_length = configuration_table[level].max_chain; } s->strategy = strategy; - return err; + return Z_OK; } /* ========================================================================= */ @@ -537,12 +623,12 @@ int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain) { deflate_state *s; - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; s = strm->state; - s->good_match = good_length; - s->max_lazy_match = max_lazy; + s->good_match = (uInt)good_length; + s->max_lazy_match = (uInt)max_lazy; s->nice_match = nice_length; - s->max_chain_length = max_chain; + s->max_chain_length = (uInt)max_chain; return Z_OK; } @@ -569,14 +655,13 @@ uLong ZEXPORT deflateBound(strm, sourceLen) { deflate_state *s; uLong complen, wraplen; - Bytef *str; /* conservative upper bound for compressed data */ complen = sourceLen + ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5; /* if can't get parameters, return conservative bound plus zlib wrapper */ - if (strm == Z_NULL || strm->state == Z_NULL) + if (deflateStateCheck(strm)) return complen + 6; /* compute wrapper length */ @@ -588,9 +673,11 @@ uLong ZEXPORT deflateBound(strm, sourceLen) case 1: /* zlib wrapper */ wraplen = 6 + (s->strstart ? 4 : 0); break; +#ifdef GZIP case 2: /* gzip wrapper */ wraplen = 18; if (s->gzhead != Z_NULL) { /* user-supplied gzip header */ + Bytef *str; if (s->gzhead->extra != Z_NULL) wraplen += 2 + s->gzhead->extra_len; str = s->gzhead->name; @@ -607,6 +694,7 @@ uLong ZEXPORT deflateBound(strm, sourceLen) wraplen += 2; } break; +#endif default: /* for compiler happiness */ wraplen = 6; } @@ -634,10 +722,10 @@ local void putShortMSB (s, b) } /* ========================================================================= - * Flush as much pending output as possible. All deflate() output goes - * through this function so some applications may wish to modify it - * to avoid allocating a large strm->next_out buffer and copying into it. - * (See also read_buf()). + * Flush as much pending output as possible. All deflate() output, except for + * some deflate_stored() output, goes through this function so some + * applications may wish to modify it to avoid allocating a large + * strm->next_out buffer and copying into it. (See also read_buf()). */ local void flush_pending(strm) z_streamp strm; @@ -654,13 +742,23 @@ local void flush_pending(strm) strm->next_out += len; s->pending_out += len; strm->total_out += len; - strm->avail_out -= len; - s->pending -= len; + strm->avail_out -= len; + s->pending -= len; if (s->pending == 0) { s->pending_out = s->pending_buf; } } +/* =========================================================================== + * Update the header CRC with the bytes s->pending_buf[beg..s->pending - 1]. + */ +#define HCRC_UPDATE(beg) \ + do { \ + if (s->gzhead->hcrc && s->pending > (beg)) \ + strm->adler = crc32(strm->adler, s->pending_buf + (beg), \ + s->pending - (beg)); \ + } while (0) + /* ========================================================================= */ int ZEXPORT deflate (strm, flush) z_streamp strm; @@ -669,230 +767,229 @@ int ZEXPORT deflate (strm, flush) int old_flush; /* value of flush param for previous deflate call */ deflate_state *s; - if (strm == Z_NULL || strm->state == Z_NULL || - flush > Z_BLOCK || flush < 0) { + if (deflateStateCheck(strm) || flush > Z_BLOCK || flush < 0) { return Z_STREAM_ERROR; } s = strm->state; if (strm->next_out == Z_NULL || - (strm->next_in == Z_NULL && strm->avail_in != 0) || + (strm->avail_in != 0 && strm->next_in == Z_NULL) || (s->status == FINISH_STATE && flush != Z_FINISH)) { ERR_RETURN(strm, Z_STREAM_ERROR); } if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR); - s->strm = strm; /* just in case */ old_flush = s->last_flush; s->last_flush = flush; + /* Flush as much pending output as possible */ + if (s->pending != 0) { + flush_pending(strm); + if (strm->avail_out == 0) { + /* Since avail_out is 0, deflate will be called again with + * more output space, but possibly with both pending and + * avail_in equal to zero. There won't be anything to do, + * but this is not an error situation so make sure we + * return OK instead of BUF_ERROR at next call of deflate: + */ + s->last_flush = -1; + return Z_OK; + } + + /* Make sure there is something to do and avoid duplicate consecutive + * flushes. For repeated and useless calls with Z_FINISH, we keep + * returning Z_STREAM_END instead of Z_BUF_ERROR. + */ + } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) && + flush != Z_FINISH) { + ERR_RETURN(strm, Z_BUF_ERROR); + } + + /* User must not provide more input after the first FINISH: */ + if (s->status == FINISH_STATE && strm->avail_in != 0) { + ERR_RETURN(strm, Z_BUF_ERROR); + } + /* Write the header */ if (s->status == INIT_STATE) { -#ifdef GZIP - if (s->wrap == 2) { - strm->adler = crc32(0L, Z_NULL, 0); - put_byte(s, 31); - put_byte(s, 139); - put_byte(s, 8); - if (s->gzhead == Z_NULL) { - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, s->level == 9 ? 2 : - (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? - 4 : 0)); - put_byte(s, OS_CODE); - s->status = BUSY_STATE; - } - else { - put_byte(s, (s->gzhead->text ? 1 : 0) + - (s->gzhead->hcrc ? 2 : 0) + - (s->gzhead->extra == Z_NULL ? 0 : 4) + - (s->gzhead->name == Z_NULL ? 0 : 8) + - (s->gzhead->comment == Z_NULL ? 0 : 16) - ); - put_byte(s, (Byte)(s->gzhead->time & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff)); - put_byte(s, s->level == 9 ? 2 : - (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? - 4 : 0)); - put_byte(s, s->gzhead->os & 0xff); - if (s->gzhead->extra != Z_NULL) { - put_byte(s, s->gzhead->extra_len & 0xff); - put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); - } - if (s->gzhead->hcrc) - strm->adler = crc32(strm->adler, s->pending_buf, - s->pending); - s->gzindex = 0; - s->status = EXTRA_STATE; - } - } + /* zlib header */ + uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; + uInt level_flags; + + if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) + level_flags = 0; + else if (s->level < 6) + level_flags = 1; + else if (s->level == 6) + level_flags = 2; else -#endif - { - uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; - uInt level_flags; - - if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) - level_flags = 0; - else if (s->level < 6) - level_flags = 1; - else if (s->level == 6) - level_flags = 2; - else - level_flags = 3; - header |= (level_flags << 6); - if (s->strstart != 0) header |= PRESET_DICT; - header += 31 - (header % 31); + level_flags = 3; + header |= (level_flags << 6); + if (s->strstart != 0) header |= PRESET_DICT; + header += 31 - (header % 31); + + putShortMSB(s, header); + /* Save the adler32 of the preset dictionary: */ + if (s->strstart != 0) { + putShortMSB(s, (uInt)(strm->adler >> 16)); + putShortMSB(s, (uInt)(strm->adler & 0xffff)); + } + strm->adler = adler32(0L, Z_NULL, 0); + s->status = BUSY_STATE; + + /* Compression must start with an empty pending buffer */ + flush_pending(strm); + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; + } + } +#ifdef GZIP + if (s->status == GZIP_STATE) { + /* gzip header */ + strm->adler = crc32(0L, Z_NULL, 0); + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (s->gzhead == Z_NULL) { + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s->level == 9 ? 2 : + (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? + 4 : 0)); + put_byte(s, OS_CODE); s->status = BUSY_STATE; - putShortMSB(s, header); - /* Save the adler32 of the preset dictionary: */ - if (s->strstart != 0) { - putShortMSB(s, (uInt)(strm->adler >> 16)); - putShortMSB(s, (uInt)(strm->adler & 0xffff)); + /* Compression must start with an empty pending buffer */ + flush_pending(strm); + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; + } + } + else { + put_byte(s, (s->gzhead->text ? 1 : 0) + + (s->gzhead->hcrc ? 2 : 0) + + (s->gzhead->extra == Z_NULL ? 0 : 4) + + (s->gzhead->name == Z_NULL ? 0 : 8) + + (s->gzhead->comment == Z_NULL ? 0 : 16) + ); + put_byte(s, (Byte)(s->gzhead->time & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff)); + put_byte(s, s->level == 9 ? 2 : + (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? + 4 : 0)); + put_byte(s, s->gzhead->os & 0xff); + if (s->gzhead->extra != Z_NULL) { + put_byte(s, s->gzhead->extra_len & 0xff); + put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); } - strm->adler = adler32(0L, Z_NULL, 0); + if (s->gzhead->hcrc) + strm->adler = crc32(strm->adler, s->pending_buf, + s->pending); + s->gzindex = 0; + s->status = EXTRA_STATE; } } -#ifdef GZIP if (s->status == EXTRA_STATE) { if (s->gzhead->extra != Z_NULL) { - uInt beg = s->pending; /* start of bytes to update crc */ - - while (s->gzindex < (s->gzhead->extra_len & 0xffff)) { - if (s->pending == s->pending_buf_size) { - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - flush_pending(strm); - beg = s->pending; - if (s->pending == s->pending_buf_size) - break; + ulg beg = s->pending; /* start of bytes to update crc */ + uInt left = (s->gzhead->extra_len & 0xffff) - s->gzindex; + while (s->pending + left > s->pending_buf_size) { + uInt copy = s->pending_buf_size - s->pending; + zmemcpy(s->pending_buf + s->pending, + s->gzhead->extra + s->gzindex, copy); + s->pending = s->pending_buf_size; + HCRC_UPDATE(beg); + s->gzindex += copy; + flush_pending(strm); + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; } - put_byte(s, s->gzhead->extra[s->gzindex]); - s->gzindex++; - } - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - if (s->gzindex == s->gzhead->extra_len) { - s->gzindex = 0; - s->status = NAME_STATE; + beg = 0; + left -= copy; } + zmemcpy(s->pending_buf + s->pending, + s->gzhead->extra + s->gzindex, left); + s->pending += left; + HCRC_UPDATE(beg); + s->gzindex = 0; } - else - s->status = NAME_STATE; + s->status = NAME_STATE; } if (s->status == NAME_STATE) { if (s->gzhead->name != Z_NULL) { - uInt beg = s->pending; /* start of bytes to update crc */ + ulg beg = s->pending; /* start of bytes to update crc */ int val; - do { if (s->pending == s->pending_buf_size) { - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); + HCRC_UPDATE(beg); flush_pending(strm); - beg = s->pending; - if (s->pending == s->pending_buf_size) { - val = 1; - break; + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; } + beg = 0; } val = s->gzhead->name[s->gzindex++]; put_byte(s, val); } while (val != 0); - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - if (val == 0) { - s->gzindex = 0; - s->status = COMMENT_STATE; - } + HCRC_UPDATE(beg); + s->gzindex = 0; } - else - s->status = COMMENT_STATE; + s->status = COMMENT_STATE; } if (s->status == COMMENT_STATE) { if (s->gzhead->comment != Z_NULL) { - uInt beg = s->pending; /* start of bytes to update crc */ + ulg beg = s->pending; /* start of bytes to update crc */ int val; - do { if (s->pending == s->pending_buf_size) { - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); + HCRC_UPDATE(beg); flush_pending(strm); - beg = s->pending; - if (s->pending == s->pending_buf_size) { - val = 1; - break; + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; } + beg = 0; } val = s->gzhead->comment[s->gzindex++]; put_byte(s, val); } while (val != 0); - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - if (val == 0) - s->status = HCRC_STATE; + HCRC_UPDATE(beg); } - else - s->status = HCRC_STATE; + s->status = HCRC_STATE; } if (s->status == HCRC_STATE) { if (s->gzhead->hcrc) { - if (s->pending + 2 > s->pending_buf_size) + if (s->pending + 2 > s->pending_buf_size) { flush_pending(strm); - if (s->pending + 2 <= s->pending_buf_size) { - put_byte(s, (Byte)(strm->adler & 0xff)); - put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); - strm->adler = crc32(0L, Z_NULL, 0); - s->status = BUSY_STATE; + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; + } } + put_byte(s, (Byte)(strm->adler & 0xff)); + put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); + strm->adler = crc32(0L, Z_NULL, 0); } - else - s->status = BUSY_STATE; - } -#endif + s->status = BUSY_STATE; - /* Flush as much pending output as possible */ - if (s->pending != 0) { + /* Compression must start with an empty pending buffer */ flush_pending(strm); - if (strm->avail_out == 0) { - /* Since avail_out is 0, deflate will be called again with - * more output space, but possibly with both pending and - * avail_in equal to zero. There won't be anything to do, - * but this is not an error situation so make sure we - * return OK instead of BUF_ERROR at next call of deflate: - */ + if (s->pending != 0) { s->last_flush = -1; return Z_OK; } - - /* Make sure there is something to do and avoid duplicate consecutive - * flushes. For repeated and useless calls with Z_FINISH, we keep - * returning Z_STREAM_END instead of Z_BUF_ERROR. - */ - } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) && - flush != Z_FINISH) { - ERR_RETURN(strm, Z_BUF_ERROR); - } - - /* User must not provide more input after the first FINISH: */ - if (s->status == FINISH_STATE && strm->avail_in != 0) { - ERR_RETURN(strm, Z_BUF_ERROR); } +#endif /* Start a new block or continue the current one. */ @@ -900,9 +997,10 @@ int ZEXPORT deflate (strm, flush) (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) { block_state bstate; - bstate = s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : - (s->strategy == Z_RLE ? deflate_rle(s, flush) : - (*(configuration_table[s->level].func))(s, flush)); + bstate = s->level == 0 ? deflate_stored(s, flush) : + s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : + s->strategy == Z_RLE ? deflate_rle(s, flush) : + (*(configuration_table[s->level].func))(s, flush); if (bstate == finish_started || bstate == finish_done) { s->status = FINISH_STATE; @@ -926,7 +1024,7 @@ int ZEXPORT deflate (strm, flush) } else if (flush != Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ _tr_stored_block(s, (char*)0, 0L, 0); /* For a full flush, this empty block will be recognized - * as a special marker by inflate_sink(). + * as a special marker by inflate_sync(). */ if (flush == Z_FULL_FLUSH) { CLEAR_HASH(s); /* forget history */ @@ -944,7 +1042,6 @@ int ZEXPORT deflate (strm, flush) } } } - Assert(strm->avail_out > 0, "bug2"); if (flush != Z_FINISH) return Z_OK; if (s->wrap <= 0) return Z_STREAM_END; @@ -981,18 +1078,9 @@ int ZEXPORT deflateEnd (strm) { int status; - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; status = strm->state->status; - if (status != INIT_STATE && - status != EXTRA_STATE && - status != NAME_STATE && - status != COMMENT_STATE && - status != HCRC_STATE && - status != BUSY_STATE && - status != FINISH_STATE) { - return Z_STREAM_ERROR; - } /* Deallocate in reverse order of allocations: */ TRY_FREE(strm, strm->state->pending_buf); @@ -1023,7 +1111,7 @@ int ZEXPORT deflateCopy (dest, source) ushf *overlay; - if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) { + if (deflateStateCheck(source) || dest == Z_NULL) { return Z_STREAM_ERROR; } @@ -1073,7 +1161,7 @@ int ZEXPORT deflateCopy (dest, source) * allocating a large strm->next_in buffer and copying from it. * (See also flush_pending()). */ -local int read_buf(strm, buf, size) +local unsigned read_buf(strm, buf, size) z_streamp strm; Bytef *buf; unsigned size; @@ -1097,7 +1185,7 @@ local int read_buf(strm, buf, size) strm->next_in += len; strm->total_in += len; - return (int)len; + return len; } /* =========================================================================== @@ -1151,9 +1239,9 @@ local uInt longest_match(s, cur_match) { unsigned chain_length = s->max_chain_length;/* max hash chain length */ register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ + register Bytef *match; /* matched string */ register int len; /* length of current match */ - int best_len = s->prev_length; /* best match length so far */ + int best_len = (int)s->prev_length; /* best match length so far */ int nice_match = s->nice_match; /* stop if match long enough */ IPos limit = s->strstart > (IPos)MAX_DIST(s) ? s->strstart - (IPos)MAX_DIST(s) : NIL; @@ -1188,7 +1276,7 @@ local uInt longest_match(s, cur_match) /* Do not look for matches beyond the end of the input. This is necessary * to make deflate deterministic. */ - if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; + if ((uInt)nice_match > s->lookahead) nice_match = (int)s->lookahead; Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); @@ -1349,7 +1437,11 @@ local uInt longest_match(s, cur_match) #endif /* FASTEST */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG + +#define EQUAL 0 +/* result of memcmp for equal strings */ + /* =========================================================================== * Check that the match at match_start is indeed a match. */ @@ -1375,7 +1467,7 @@ local void check_match(s, start, match, length) } #else # define check_match(s, start, match, length) -#endif /* DEBUG */ +#endif /* ZLIB_DEBUG */ /* =========================================================================== * Fill the window when the lookahead becomes insufficient. @@ -1390,8 +1482,7 @@ local void check_match(s, start, match, length) local void fill_window(s) deflate_state *s; { - register unsigned n, m; - register Posf *p; + unsigned n; unsigned more; /* Amount of free space at the end of the window. */ uInt wsize = s->w_size; @@ -1418,35 +1509,11 @@ local void fill_window(s) */ if (s->strstart >= wsize+MAX_DIST(s)) { - zmemcpy(s->window, s->window+wsize, (unsigned)wsize); + zmemcpy(s->window, s->window+wsize, (unsigned)wsize - more); s->match_start -= wsize; s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ s->block_start -= (long) wsize; - - /* Slide the hash table (could be avoided with 32 bit values - at the expense of memory usage). We slide even when level == 0 - to keep the hash table consistent if we switch back to level > 0 - later. (Using level 0 permanently is not an optimal usage of - zlib, so we don't care about this pathological case.) - */ - n = s->hash_size; - p = &s->head[n]; - do { - m = *--p; - *p = (Pos)(m >= wsize ? m-wsize : NIL); - } while (--n); - - n = wsize; -#ifndef FASTEST - p = &s->prev[n]; - do { - m = *--p; - *p = (Pos)(m >= wsize ? m-wsize : NIL); - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - } while (--n); -#endif + slide_hash(s); more += wsize; } if (s->strm->avail_in == 0) break; @@ -1552,70 +1619,199 @@ local void fill_window(s) if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \ } +/* Maximum stored block length in deflate format (not including header). */ +#define MAX_STORED 65535 + +/* Minimum of a and b. */ +#define MIN(a, b) ((a) > (b) ? (b) : (a)) + /* =========================================================================== * Copy without compression as much as possible from the input stream, return * the current block state. - * This function does not insert new strings in the dictionary since - * uncompressible data is probably not useful. This function is used - * only for the level=0 compression option. - * NOTE: this function should be optimized to avoid extra copying from - * window to pending_buf. + * + * In case deflateParams() is used to later switch to a non-zero compression + * level, s->matches (otherwise unused when storing) keeps track of the number + * of hash table slides to perform. If s->matches is 1, then one hash table + * slide will be done when switching. If s->matches is 2, the maximum value + * allowed here, then the hash table will be cleared, since two or more slides + * is the same as a clear. + * + * deflate_stored() is written to minimize the number of times an input byte is + * copied. It is most efficient with large input and output buffers, which + * maximizes the opportunites to have a single copy from next_in to next_out. */ local block_state deflate_stored(s, flush) deflate_state *s; int flush; { - /* Stored blocks are limited to 0xffff bytes, pending_buf is limited - * to pending_buf_size, and each stored block has a 5 byte header: + /* Smallest worthy block size when not flushing or finishing. By default + * this is 32K. This can be as small as 507 bytes for memLevel == 1. For + * large input and output buffers, the stored block size will be larger. */ - ulg max_block_size = 0xffff; - ulg max_start; - - if (max_block_size > s->pending_buf_size - 5) { - max_block_size = s->pending_buf_size - 5; - } + unsigned min_block = MIN(s->pending_buf_size - 5, s->w_size); - /* Copy as much as possible from input to output: */ - for (;;) { - /* Fill the window as much as possible: */ - if (s->lookahead <= 1) { - - Assert(s->strstart < s->w_size+MAX_DIST(s) || - s->block_start >= (long)s->w_size, "slide too late"); + /* Copy as many min_block or larger stored blocks directly to next_out as + * possible. If flushing, copy the remaining available input to next_out as + * stored blocks, if there is enough space. + */ + unsigned len, left, have, last = 0; + unsigned used = s->strm->avail_in; + do { + /* Set len to the maximum size block that we can copy directly with the + * available input data and output space. Set left to how much of that + * would be copied from what's left in the window. + */ + len = MAX_STORED; /* maximum deflate stored block length */ + have = (s->bi_valid + 42) >> 3; /* number of header bytes */ + if (s->strm->avail_out < have) /* need room for header */ + break; + /* maximum stored block length that will fit in avail_out: */ + have = s->strm->avail_out - have; + left = s->strstart - s->block_start; /* bytes left in window */ + if (len > (ulg)left + s->strm->avail_in) + len = left + s->strm->avail_in; /* limit len to the input */ + if (len > have) + len = have; /* limit len to the output */ + + /* If the stored block would be less than min_block in length, or if + * unable to copy all of the available input when flushing, then try + * copying to the window and the pending buffer instead. Also don't + * write an empty block when flushing -- deflate() does that. + */ + if (len < min_block && ((len == 0 && flush != Z_FINISH) || + flush == Z_NO_FLUSH || + len != left + s->strm->avail_in)) + break; - fill_window(s); - if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more; + /* Make a dummy stored block in pending to get the header bytes, + * including any pending bits. This also updates the debugging counts. + */ + last = flush == Z_FINISH && len == left + s->strm->avail_in ? 1 : 0; + _tr_stored_block(s, (char *)0, 0L, last); + + /* Replace the lengths in the dummy stored block with len. */ + s->pending_buf[s->pending - 4] = len; + s->pending_buf[s->pending - 3] = len >> 8; + s->pending_buf[s->pending - 2] = ~len; + s->pending_buf[s->pending - 1] = ~len >> 8; + + /* Write the stored block header bytes. */ + flush_pending(s->strm); + +#ifdef ZLIB_DEBUG + /* Update debugging counts for the data about to be copied. */ + s->compressed_len += len << 3; + s->bits_sent += len << 3; +#endif - if (s->lookahead == 0) break; /* flush the current block */ + /* Copy uncompressed bytes from the window to next_out. */ + if (left) { + if (left > len) + left = len; + zmemcpy(s->strm->next_out, s->window + s->block_start, left); + s->strm->next_out += left; + s->strm->avail_out -= left; + s->strm->total_out += left; + s->block_start += left; + len -= left; } - Assert(s->block_start >= 0L, "block gone"); - - s->strstart += s->lookahead; - s->lookahead = 0; - - /* Emit a stored block if pending_buf will be full: */ - max_start = s->block_start + max_block_size; - if (s->strstart == 0 || (ulg)s->strstart >= max_start) { - /* strstart == 0 is possible when wraparound on 16-bit machine */ - s->lookahead = (uInt)(s->strstart - max_start); - s->strstart = (uInt)max_start; - FLUSH_BLOCK(s, 0); + + /* Copy uncompressed bytes directly from next_in to next_out, updating + * the check value. + */ + if (len) { + read_buf(s->strm, s->strm->next_out, len); + s->strm->next_out += len; + s->strm->avail_out -= len; + s->strm->total_out += len; } - /* Flush if we may have to slide, otherwise block_start may become - * negative and the data will be gone: + } while (last == 0); + + /* Update the sliding window with the last s->w_size bytes of the copied + * data, or append all of the copied data to the existing window if less + * than s->w_size bytes were copied. Also update the number of bytes to + * insert in the hash tables, in the event that deflateParams() switches to + * a non-zero compression level. + */ + used -= s->strm->avail_in; /* number of input bytes directly copied */ + if (used) { + /* If any input was used, then no unused input remains in the window, + * therefore s->block_start == s->strstart. */ - if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) { - FLUSH_BLOCK(s, 0); + if (used >= s->w_size) { /* supplant the previous history */ + s->matches = 2; /* clear hash */ + zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size); + s->strstart = s->w_size; } + else { + if (s->window_size - s->strstart <= used) { + /* Slide the window down. */ + s->strstart -= s->w_size; + zmemcpy(s->window, s->window + s->w_size, s->strstart); + if (s->matches < 2) + s->matches++; /* add a pending slide_hash() */ + } + zmemcpy(s->window + s->strstart, s->strm->next_in - used, used); + s->strstart += used; + } + s->block_start = s->strstart; + s->insert += MIN(used, s->w_size - s->insert); } - s->insert = 0; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); + if (s->high_water < s->strstart) + s->high_water = s->strstart; + + /* If the last block was written to next_out, then done. */ + if (last) return finish_done; + + /* If flushing and all input has been consumed, then done. */ + if (flush != Z_NO_FLUSH && flush != Z_FINISH && + s->strm->avail_in == 0 && (long)s->strstart == s->block_start) + return block_done; + + /* Fill the window with any remaining input. */ + have = s->window_size - s->strstart - 1; + if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) { + /* Slide the window down. */ + s->block_start -= s->w_size; + s->strstart -= s->w_size; + zmemcpy(s->window, s->window + s->w_size, s->strstart); + if (s->matches < 2) + s->matches++; /* add a pending slide_hash() */ + have += s->w_size; /* more space now */ } - if ((long)s->strstart > s->block_start) - FLUSH_BLOCK(s, 0); - return block_done; + if (have > s->strm->avail_in) + have = s->strm->avail_in; + if (have) { + read_buf(s->strm, s->window + s->strstart, have); + s->strstart += have; + } + if (s->high_water < s->strstart) + s->high_water = s->strstart; + + /* There was not enough avail_out to write a complete worthy or flushed + * stored block to next_out. Write a stored block to pending instead, if we + * have enough input for a worthy block, or if flushing and there is enough + * room for the remaining input as a stored block in the pending buffer. + */ + have = (s->bi_valid + 42) >> 3; /* number of header bytes */ + /* maximum stored block length that will fit in pending: */ + have = MIN(s->pending_buf_size - have, MAX_STORED); + min_block = MIN(have, s->w_size); + left = s->strstart - s->block_start; + if (left >= min_block || + ((left || flush == Z_FINISH) && flush != Z_NO_FLUSH && + s->strm->avail_in == 0 && left <= have)) { + len = MIN(left, have); + last = flush == Z_FINISH && s->strm->avail_in == 0 && + len == left ? 1 : 0; + _tr_stored_block(s, (charf *)s->window + s->block_start, len, last); + s->block_start += len; + flush_pending(s->strm); + } + + /* We've done all we can with the available input and output. */ + return last ? finish_started : need_more; } /* =========================================================================== @@ -1892,7 +2088,7 @@ local block_state deflate_rle(s, flush) prev == *++scan && prev == *++scan && prev == *++scan && prev == *++scan && scan < strend); - s->match_length = MAX_MATCH - (int)(strend - scan); + s->match_length = MAX_MATCH - (uInt)(strend - scan); if (s->match_length > s->lookahead) s->match_length = s->lookahead; } diff --git a/src/zlib/deflate.h b/src/ZLib/deflate.h similarity index 92% rename from src/zlib/deflate.h rename to src/ZLib/deflate.h index ce0299edd..23ecdd312 100644 --- a/src/zlib/deflate.h +++ b/src/ZLib/deflate.h @@ -1,5 +1,5 @@ /* deflate.h -- internal compression state - * Copyright (C) 1995-2012 Jean-loup Gailly + * Copyright (C) 1995-2016 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -51,13 +51,16 @@ #define Buf_size 16 /* size of bit buffer in bi_buf */ -#define INIT_STATE 42 -#define EXTRA_STATE 69 -#define NAME_STATE 73 -#define COMMENT_STATE 91 -#define HCRC_STATE 103 -#define BUSY_STATE 113 -#define FINISH_STATE 666 +#define INIT_STATE 42 /* zlib header -> BUSY_STATE */ +#ifdef GZIP +# define GZIP_STATE 57 /* gzip header -> BUSY_STATE | EXTRA_STATE */ +#endif +#define EXTRA_STATE 69 /* gzip extra block -> NAME_STATE */ +#define NAME_STATE 73 /* gzip file name -> COMMENT_STATE */ +#define COMMENT_STATE 91 /* gzip comment -> HCRC_STATE */ +#define HCRC_STATE 103 /* gzip header CRC -> BUSY_STATE */ +#define BUSY_STATE 113 /* deflate -> FINISH_STATE */ +#define FINISH_STATE 666 /* stream complete */ /* Stream status */ @@ -83,7 +86,7 @@ typedef struct static_tree_desc_s static_tree_desc; typedef struct tree_desc_s { ct_data *dyn_tree; /* the dynamic tree */ int max_code; /* largest code with non zero frequency */ - static_tree_desc *stat_desc; /* the corresponding static tree */ + const static_tree_desc *stat_desc; /* the corresponding static tree */ } FAR tree_desc; typedef ush Pos; @@ -100,10 +103,10 @@ typedef struct internal_state { Bytef *pending_buf; /* output still pending */ ulg pending_buf_size; /* size of pending_buf */ Bytef *pending_out; /* next pending byte to output to the stream */ - uInt pending; /* nb of bytes in the pending buffer */ + ulg pending; /* nb of bytes in the pending buffer */ int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ gz_headerp gzhead; /* gzip header information to write */ - uInt gzindex; /* where in extra, name, or comment */ + ulg gzindex; /* where in extra, name, or comment */ Byte method; /* can only be DEFLATED */ int last_flush; /* value of flush param for previous deflate call */ @@ -249,7 +252,7 @@ typedef struct internal_state { uInt matches; /* number of string matches in current block */ uInt insert; /* bytes at end of window left to insert */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG ulg compressed_len; /* total bit length of compressed file mod 2^32 */ ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ #endif @@ -275,7 +278,7 @@ typedef struct internal_state { /* Output a byte on the stream. * IN assertion: there is enough room in pending_buf. */ -#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);} +#define put_byte(s, c) {s->pending_buf[s->pending++] = (Bytef)(c);} #define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) @@ -309,7 +312,7 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, * used. */ -#ifndef DEBUG +#ifndef ZLIB_DEBUG /* Inline versions of _tr_tally for speed: */ #if defined(GEN_TREES_H) || !defined(STDC) @@ -328,8 +331,8 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, flush = (s->last_lit == s->lit_bufsize-1); \ } # define _tr_tally_dist(s, distance, length, flush) \ - { uch len = (length); \ - ush dist = (distance); \ + { uch len = (uch)(length); \ + ush dist = (ush)(distance); \ s->d_buf[s->last_lit] = dist; \ s->l_buf[s->last_lit++] = len; \ dist--; \ diff --git a/src/zlib/gzguts.h b/src/ZLib/gzguts.h similarity index 89% rename from src/zlib/gzguts.h rename to src/ZLib/gzguts.h index d87659d03..990a4d251 100644 --- a/src/zlib/gzguts.h +++ b/src/ZLib/gzguts.h @@ -1,5 +1,5 @@ /* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler + * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -25,6 +25,10 @@ # include # include #endif + +#ifndef _POSIX_SOURCE +# define _POSIX_SOURCE +#endif #include #ifdef _WIN32 @@ -35,6 +39,10 @@ # include #endif +#if defined(_WIN32) || defined(__CYGWIN__) +# define WIDECHAR +#endif + #ifdef WINAPI_FAMILY # define open _open # define read _read @@ -95,18 +103,19 @@ # endif #endif -/* unlike snprintf (which is required in C99, yet still not supported by - Microsoft more than a decade later!), _snprintf does not guarantee null - termination of the result -- however this is only used in gzlib.c where +/* unlike snprintf (which is required in C99), _snprintf does not guarantee + null termination of the result -- however this is only used in gzlib.c where the result is assured to fit in the space provided */ -#ifdef _MSC_VER +#if defined(_MSC_VER) && _MSC_VER < 1900 # define snprintf _snprintf #endif #ifndef local # define local static #endif -/* compile with -Dlocal if your debugger can't find static symbols */ +/* since "static" is used to mean two completely different things in C, we + define "local" for the non-static meaning of "static", for readability + (compile with -Dlocal if your debugger can't find static symbols) */ /* gz* functions always use library allocation functions */ #ifndef STDC @@ -170,7 +179,7 @@ typedef struct { char *path; /* path or fd for error messages */ unsigned size; /* buffer size, zero if not allocated yet */ unsigned want; /* requested buffer size, default is GZBUFSIZE */ - unsigned char *in; /* input buffer */ + unsigned char *in; /* input buffer (double-sized when writing) */ unsigned char *out; /* output buffer (double-sized when reading) */ int direct; /* 0 if processing gzip, 1 if transparent */ /* just for reading */ diff --git a/src/zlib/infback.c b/src/ZLib/infback.c similarity index 99% rename from src/zlib/infback.c rename to src/ZLib/infback.c index f3833c2e4..59679ecbf 100644 --- a/src/zlib/infback.c +++ b/src/ZLib/infback.c @@ -1,5 +1,5 @@ /* infback.c -- inflate using a call-back interface - * Copyright (C) 1995-2011 Mark Adler + * Copyright (C) 1995-2016 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -61,7 +61,7 @@ int stream_size; Tracev((stderr, "inflate: allocated\n")); strm->state = (struct internal_state FAR *)state; state->dmax = 32768U; - state->wbits = windowBits; + state->wbits = (uInt)windowBits; state->wsize = 1U << windowBits; state->window = window; state->wnext = 0; diff --git a/src/zlib/inffast.c b/src/ZLib/inffast.c similarity index 85% rename from src/zlib/inffast.c rename to src/ZLib/inffast.c index bda59ceb6..0dbd1dbc0 100644 --- a/src/zlib/inffast.c +++ b/src/ZLib/inffast.c @@ -1,5 +1,5 @@ /* inffast.c -- fast decoding - * Copyright (C) 1995-2008, 2010, 2013 Mark Adler + * Copyright (C) 1995-2017 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -8,26 +8,9 @@ #include "inflate.h" #include "inffast.h" -#ifndef ASMINF - -/* Allow machine dependent optimization for post-increment or pre-increment. - Based on testing to date, - Pre-increment preferred for: - - PowerPC G3 (Adler) - - MIPS R5000 (Randers-Pehrson) - Post-increment preferred for: - - none - No measurable difference: - - Pentium III (Anderson) - - M68060 (Nikl) - */ -#ifdef POSTINC -# define OFF 0 -# define PUP(a) *(a)++ +#ifdef ASMINF +# pragma message("Assembler code may have bugs -- use at your own risk") #else -# define OFF 1 -# define PUP(a) *++(a) -#endif /* Decode literal, length, and distance codes and write out the resulting @@ -96,9 +79,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ /* copy state to local variables */ state = (struct inflate_state FAR *)strm->state; - in = strm->next_in - OFF; + in = strm->next_in; last = in + (strm->avail_in - 5); - out = strm->next_out - OFF; + out = strm->next_out; beg = out - (start - strm->avail_out); end = out + (strm->avail_out - 257); #ifdef INFLATE_STRICT @@ -119,9 +102,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ input data or output space */ do { if (bits < 15) { - hold += (unsigned long)(PUP(in)) << bits; + hold += (unsigned long)(*in++) << bits; bits += 8; - hold += (unsigned long)(PUP(in)) << bits; + hold += (unsigned long)(*in++) << bits; bits += 8; } here = lcode[hold & lmask]; @@ -134,14 +117,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? "inflate: literal '%c'\n" : "inflate: literal 0x%02x\n", here.val)); - PUP(out) = (unsigned char)(here.val); + *out++ = (unsigned char)(here.val); } else if (op & 16) { /* length base */ len = (unsigned)(here.val); op &= 15; /* number of extra bits */ if (op) { if (bits < op) { - hold += (unsigned long)(PUP(in)) << bits; + hold += (unsigned long)(*in++) << bits; bits += 8; } len += (unsigned)hold & ((1U << op) - 1); @@ -150,9 +133,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ } Tracevv((stderr, "inflate: length %u\n", len)); if (bits < 15) { - hold += (unsigned long)(PUP(in)) << bits; + hold += (unsigned long)(*in++) << bits; bits += 8; - hold += (unsigned long)(PUP(in)) << bits; + hold += (unsigned long)(*in++) << bits; bits += 8; } here = dcode[hold & dmask]; @@ -165,10 +148,10 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ dist = (unsigned)(here.val); op &= 15; /* number of extra bits */ if (bits < op) { - hold += (unsigned long)(PUP(in)) << bits; + hold += (unsigned long)(*in++) << bits; bits += 8; if (bits < op) { - hold += (unsigned long)(PUP(in)) << bits; + hold += (unsigned long)(*in++) << bits; bits += 8; } } @@ -196,30 +179,30 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ #ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR if (len <= op - whave) { do { - PUP(out) = 0; + *out++ = 0; } while (--len); continue; } len -= op - whave; do { - PUP(out) = 0; + *out++ = 0; } while (--op > whave); if (op == 0) { from = out - dist; do { - PUP(out) = PUP(from); + *out++ = *from++; } while (--len); continue; } #endif } - from = window - OFF; + from = window; if (wnext == 0) { /* very common case */ from += wsize - op; if (op < len) { /* some from window */ len -= op; do { - PUP(out) = PUP(from); + *out++ = *from++; } while (--op); from = out - dist; /* rest from output */ } @@ -230,14 +213,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ if (op < len) { /* some from end of window */ len -= op; do { - PUP(out) = PUP(from); + *out++ = *from++; } while (--op); - from = window - OFF; + from = window; if (wnext < len) { /* some from start of window */ op = wnext; len -= op; do { - PUP(out) = PUP(from); + *out++ = *from++; } while (--op); from = out - dist; /* rest from output */ } @@ -248,35 +231,35 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ if (op < len) { /* some from window */ len -= op; do { - PUP(out) = PUP(from); + *out++ = *from++; } while (--op); from = out - dist; /* rest from output */ } } while (len > 2) { - PUP(out) = PUP(from); - PUP(out) = PUP(from); - PUP(out) = PUP(from); + *out++ = *from++; + *out++ = *from++; + *out++ = *from++; len -= 3; } if (len) { - PUP(out) = PUP(from); + *out++ = *from++; if (len > 1) - PUP(out) = PUP(from); + *out++ = *from++; } } else { from = out - dist; /* copy direct from output */ do { /* minimum length is three */ - PUP(out) = PUP(from); - PUP(out) = PUP(from); - PUP(out) = PUP(from); + *out++ = *from++; + *out++ = *from++; + *out++ = *from++; len -= 3; } while (len > 2); if (len) { - PUP(out) = PUP(from); + *out++ = *from++; if (len > 1) - PUP(out) = PUP(from); + *out++ = *from++; } } } @@ -313,8 +296,8 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ hold &= (1U << bits) - 1; /* update state and return */ - strm->next_in = in + OFF; - strm->next_out = out + OFF; + strm->next_in = in; + strm->next_out = out; strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); strm->avail_out = (unsigned)(out < end ? 257 + (end - out) : 257 - (out - end)); diff --git a/src/zlib/inffast.h b/src/ZLib/inffast.h similarity index 100% rename from src/zlib/inffast.h rename to src/ZLib/inffast.h diff --git a/src/zlib/inffixed.h b/src/ZLib/inffixed.h similarity index 100% rename from src/zlib/inffixed.h rename to src/ZLib/inffixed.h diff --git a/src/zlib/inflate.c b/src/ZLib/inflate.c similarity index 93% rename from src/zlib/inflate.c rename to src/ZLib/inflate.c index 870f89bb4..ac333e8c2 100644 --- a/src/zlib/inflate.c +++ b/src/ZLib/inflate.c @@ -1,5 +1,5 @@ /* inflate.c -- zlib decompression - * Copyright (C) 1995-2012 Mark Adler + * Copyright (C) 1995-2016 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -92,6 +92,7 @@ #endif /* function prototypes */ +local int inflateStateCheck OF((z_streamp strm)); local void fixedtables OF((struct inflate_state FAR *state)); local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, unsigned copy)); @@ -101,12 +102,26 @@ local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf, unsigned len)); +local int inflateStateCheck(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + if (strm == Z_NULL || + strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) + return 1; + state = (struct inflate_state FAR *)strm->state; + if (state == Z_NULL || state->strm != strm || + state->mode < HEAD || state->mode > SYNC) + return 1; + return 0; +} + int ZEXPORT inflateResetKeep(strm) z_streamp strm; { struct inflate_state FAR *state; - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; strm->total_in = strm->total_out = state->total = 0; strm->msg = Z_NULL; @@ -131,7 +146,7 @@ z_streamp strm; { struct inflate_state FAR *state; - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; state->wsize = 0; state->whave = 0; @@ -147,7 +162,7 @@ int windowBits; struct inflate_state FAR *state; /* get the state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; /* extract wrap request from windowBits parameter */ @@ -156,7 +171,7 @@ int windowBits; windowBits = -windowBits; } else { - wrap = (windowBits >> 4) + 1; + wrap = (windowBits >> 4) + 5; #ifdef GUNZIP if (windowBits < 48) windowBits &= 15; @@ -210,7 +225,9 @@ int stream_size; if (state == Z_NULL) return Z_MEM_ERROR; Tracev((stderr, "inflate: allocated\n")); strm->state = (struct internal_state FAR *)state; + state->strm = strm; state->window = Z_NULL; + state->mode = HEAD; /* to pass state test in inflateReset2() */ ret = inflateReset2(strm, windowBits); if (ret != Z_OK) { ZFREE(strm, state); @@ -234,17 +251,17 @@ int value; { struct inflate_state FAR *state; - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; if (bits < 0) { state->hold = 0; state->bits = 0; return Z_OK; } - if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR; + if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; value &= (1L << bits) - 1; - state->hold += value << state->bits; - state->bits += bits; + state->hold += (unsigned)value << state->bits; + state->bits += (uInt)bits; return Z_OK; } @@ -625,7 +642,7 @@ int flush; static const unsigned short order[19] = /* permutation of code lengths */ {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - if (strm == Z_NULL || strm->state == Z_NULL || strm->next_out == Z_NULL || + if (inflateStateCheck(strm) || strm->next_out == Z_NULL || (strm->next_in == Z_NULL && strm->avail_in != 0)) return Z_STREAM_ERROR; @@ -645,6 +662,8 @@ int flush; NEEDBITS(16); #ifdef GUNZIP if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ + if (state->wbits == 0) + state->wbits = 15; state->check = crc32(0L, Z_NULL, 0); CRC2(state->check, hold); INITBITS(); @@ -672,7 +691,7 @@ int flush; len = BITS(4) + 8; if (state->wbits == 0) state->wbits = len; - else if (len > state->wbits) { + if (len > 15 || len > state->wbits) { strm->msg = (char *)"invalid window size"; state->mode = BAD; break; @@ -699,14 +718,16 @@ int flush; } if (state->head != Z_NULL) state->head->text = (int)((hold >> 8) & 1); - if (state->flags & 0x0200) CRC2(state->check, hold); + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); INITBITS(); state->mode = TIME; case TIME: NEEDBITS(32); if (state->head != Z_NULL) state->head->time = hold; - if (state->flags & 0x0200) CRC4(state->check, hold); + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC4(state->check, hold); INITBITS(); state->mode = OS; case OS: @@ -715,7 +736,8 @@ int flush; state->head->xflags = (int)(hold & 0xff); state->head->os = (int)(hold >> 8); } - if (state->flags & 0x0200) CRC2(state->check, hold); + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); INITBITS(); state->mode = EXLEN; case EXLEN: @@ -724,7 +746,8 @@ int flush; state->length = (unsigned)(hold); if (state->head != Z_NULL) state->head->extra_len = (unsigned)hold; - if (state->flags & 0x0200) CRC2(state->check, hold); + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); INITBITS(); } else if (state->head != Z_NULL) @@ -742,7 +765,7 @@ int flush; len + copy > state->head->extra_max ? state->head->extra_max - len : copy); } - if (state->flags & 0x0200) + if ((state->flags & 0x0200) && (state->wrap & 4)) state->check = crc32(state->check, next, copy); have -= copy; next += copy; @@ -761,9 +784,9 @@ int flush; if (state->head != Z_NULL && state->head->name != Z_NULL && state->length < state->head->name_max) - state->head->name[state->length++] = len; + state->head->name[state->length++] = (Bytef)len; } while (len && copy < have); - if (state->flags & 0x0200) + if ((state->flags & 0x0200) && (state->wrap & 4)) state->check = crc32(state->check, next, copy); have -= copy; next += copy; @@ -782,9 +805,9 @@ int flush; if (state->head != Z_NULL && state->head->comment != Z_NULL && state->length < state->head->comm_max) - state->head->comment[state->length++] = len; + state->head->comment[state->length++] = (Bytef)len; } while (len && copy < have); - if (state->flags & 0x0200) + if ((state->flags & 0x0200) && (state->wrap & 4)) state->check = crc32(state->check, next, copy); have -= copy; next += copy; @@ -796,7 +819,7 @@ int flush; case HCRC: if (state->flags & 0x0200) { NEEDBITS(16); - if (hold != (state->check & 0xffff)) { + if ((state->wrap & 4) && hold != (state->check & 0xffff)) { strm->msg = (char *)"header crc mismatch"; state->mode = BAD; break; @@ -1177,11 +1200,11 @@ int flush; out -= left; strm->total_out += out; state->total += out; - if (out) + if ((state->wrap & 4) && out) strm->adler = state->check = UPDATE(state->check, put - out, out); out = left; - if (( + if ((state->wrap & 4) && ( #ifdef GUNZIP state->flags ? hold : #endif @@ -1240,10 +1263,10 @@ int flush; strm->total_in += in; strm->total_out += out; state->total += out; - if (state->wrap && out) + if ((state->wrap & 4) && out) strm->adler = state->check = UPDATE(state->check, strm->next_out - out, out); - strm->data_type = state->bits + (state->last ? 64 : 0) + + strm->data_type = (int)state->bits + (state->last ? 64 : 0) + (state->mode == TYPE ? 128 : 0) + (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) @@ -1255,7 +1278,7 @@ int ZEXPORT inflateEnd(strm) z_streamp strm; { struct inflate_state FAR *state; - if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; if (state->window != Z_NULL) ZFREE(strm, state->window); @@ -1273,7 +1296,7 @@ uInt *dictLength; struct inflate_state FAR *state; /* check state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; /* copy dictionary */ @@ -1298,7 +1321,7 @@ uInt dictLength; int ret; /* check state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; if (state->wrap != 0 && state->mode != DICT) return Z_STREAM_ERROR; @@ -1330,7 +1353,7 @@ gz_headerp head; struct inflate_state FAR *state; /* check state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; @@ -1383,7 +1406,7 @@ z_streamp strm; struct inflate_state FAR *state; /* check parameters */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; @@ -1430,7 +1453,7 @@ z_streamp strm; { struct inflate_state FAR *state; - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; return state->mode == STORED && state->bits == 0; } @@ -1445,8 +1468,7 @@ z_streamp source; unsigned wsize; /* check input */ - if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL || - source->zalloc == (alloc_func)0 || source->zfree == (free_func)0) + if (inflateStateCheck(source) || dest == Z_NULL) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)source->state; @@ -1467,6 +1489,7 @@ z_streamp source; /* copy state */ zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); + copy->strm = dest; if (state->lencode >= state->codes && state->lencode <= state->codes + ENOUGH - 1) { copy->lencode = copy->codes + (state->lencode - state->codes); @@ -1488,25 +1511,51 @@ int subvert; { struct inflate_state FAR *state; - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; - state->sane = !subvert; #ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + state->sane = !subvert; return Z_OK; #else + (void)subvert; state->sane = 1; return Z_DATA_ERROR; #endif } +int ZEXPORT inflateValidate(strm, check) +z_streamp strm; +int check; +{ + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (check) + state->wrap |= 4; + else + state->wrap &= ~4; + return Z_OK; +} + long ZEXPORT inflateMark(strm) z_streamp strm; { struct inflate_state FAR *state; - if (strm == Z_NULL || strm->state == Z_NULL) return -1L << 16; + if (inflateStateCheck(strm)) + return -(1L << 16); state = (struct inflate_state FAR *)strm->state; - return ((long)(state->back) << 16) + + return (long)(((unsigned long)((long)state->back)) << 16) + (state->mode == COPY ? state->length : (state->mode == MATCH ? state->was - state->length : 0)); } + +unsigned long ZEXPORT inflateCodesUsed(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + if (inflateStateCheck(strm)) return (unsigned long)-1; + state = (struct inflate_state FAR *)strm->state; + return (unsigned long)(state->next - state->codes); +} diff --git a/src/zlib/inflate.h b/src/ZLib/inflate.h similarity index 94% rename from src/zlib/inflate.h rename to src/ZLib/inflate.h index 95f4986d4..a46cce6b6 100644 --- a/src/zlib/inflate.h +++ b/src/ZLib/inflate.h @@ -1,5 +1,5 @@ /* inflate.h -- internal inflate state definition - * Copyright (C) 1995-2009 Mark Adler + * Copyright (C) 1995-2016 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -18,7 +18,7 @@ /* Possible inflate modes between inflate() calls */ typedef enum { - HEAD, /* i: waiting for magic header */ + HEAD = 16180, /* i: waiting for magic header */ FLAGS, /* i: waiting for method and flags (gzip) */ TIME, /* i: waiting for modification time (gzip) */ OS, /* i: waiting for extra flags and operating system (gzip) */ @@ -77,11 +77,14 @@ typedef enum { CHECK -> LENGTH -> DONE */ -/* state maintained between inflate() calls. Approximately 10K bytes. */ +/* State maintained between inflate() calls -- approximately 7K bytes, not + including the allocated sliding window, which is up to 32K bytes. */ struct inflate_state { + z_streamp strm; /* pointer back to this zlib stream */ inflate_mode mode; /* current inflate mode */ int last; /* true if processing last block */ - int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ + int wrap; /* bit 0 true for zlib, bit 1 true for gzip, + bit 2 true to validate check value */ int havedict; /* true if dictionary provided */ int flags; /* gzip header method and flags (0 if zlib) */ unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */ diff --git a/src/zlib/inftrees.c b/src/ZLib/inftrees.c similarity index 95% rename from src/zlib/inftrees.c rename to src/ZLib/inftrees.c index 44d89cf24..2ea08fc13 100644 --- a/src/zlib/inftrees.c +++ b/src/ZLib/inftrees.c @@ -1,5 +1,5 @@ /* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2013 Mark Adler + * Copyright (C) 1995-2017 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -9,7 +9,7 @@ #define MAXBITS 15 const char inflate_copyright[] = - " inflate 1.2.8 Copyright 1995-2013 Mark Adler "; + " inflate 1.2.11 Copyright 1995-2017 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -54,7 +54,7 @@ unsigned short FAR *work; code FAR *next; /* next available space in table */ const unsigned short FAR *base; /* base value table to use */ const unsigned short FAR *extra; /* extra bits table to use */ - int end; /* use base and extra for symbol > end */ + unsigned match; /* use base and extra for symbol >= match */ unsigned short count[MAXBITS+1]; /* number of codes of each length */ unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ static const unsigned short lbase[31] = { /* Length codes 257..285 base */ @@ -62,7 +62,7 @@ unsigned short FAR *work; 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78}; + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202}; static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, @@ -181,19 +181,17 @@ unsigned short FAR *work; switch (type) { case CODES: base = extra = work; /* dummy value--not used */ - end = 19; + match = 20; break; case LENS: base = lbase; - base -= 257; extra = lext; - extra -= 257; - end = 256; + match = 257; break; - default: /* DISTS */ + default: /* DISTS */ base = dbase; extra = dext; - end = -1; + match = 0; } /* initialize state for loop */ @@ -216,13 +214,13 @@ unsigned short FAR *work; for (;;) { /* create table entry */ here.bits = (unsigned char)(len - drop); - if ((int)(work[sym]) < end) { + if (work[sym] + 1U < match) { here.op = (unsigned char)0; here.val = work[sym]; } - else if ((int)(work[sym]) > end) { - here.op = (unsigned char)(extra[work[sym]]); - here.val = base[work[sym]]; + else if (work[sym] >= match) { + here.op = (unsigned char)(extra[work[sym] - match]); + here.val = base[work[sym] - match]; } else { here.op = (unsigned char)(32 + 64); /* end of block */ diff --git a/src/zlib/inftrees.h b/src/ZLib/inftrees.h similarity index 100% rename from src/zlib/inftrees.h rename to src/ZLib/inftrees.h diff --git a/src/zlib/trees.c b/src/ZLib/trees.c similarity index 95% rename from src/zlib/trees.c rename to src/ZLib/trees.c index 1fd7759ef..50cf4b457 100644 --- a/src/zlib/trees.c +++ b/src/ZLib/trees.c @@ -1,5 +1,5 @@ /* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2012 Jean-loup Gailly + * Copyright (C) 1995-2017 Jean-loup Gailly * detect_data_type() function provided freely by Cosmin Truta, 2006 * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -36,7 +36,7 @@ #include "deflate.h" -#ifdef DEBUG +#ifdef ZLIB_DEBUG # include #endif @@ -122,13 +122,13 @@ struct static_tree_desc_s { int max_length; /* max bit length for the codes */ }; -local static_tree_desc static_l_desc = +local const static_tree_desc static_l_desc = {static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS}; -local static_tree_desc static_d_desc = +local const static_tree_desc static_d_desc = {static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; -local static_tree_desc static_bl_desc = +local const static_tree_desc static_bl_desc = {(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; /* =========================================================================== @@ -152,18 +152,16 @@ local int detect_data_type OF((deflate_state *s)); local unsigned bi_reverse OF((unsigned value, int length)); local void bi_windup OF((deflate_state *s)); local void bi_flush OF((deflate_state *s)); -local void copy_block OF((deflate_state *s, charf *buf, unsigned len, - int header)); #ifdef GEN_TREES_H local void gen_trees_header OF((void)); #endif -#ifndef DEBUG +#ifndef ZLIB_DEBUG # define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) /* Send a code of the given tree. c and tree must not have side effects */ -#else /* DEBUG */ +#else /* !ZLIB_DEBUG */ # define send_code(s, c, tree) \ { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \ send_bits(s, tree[c].Code, tree[c].Len); } @@ -182,7 +180,7 @@ local void gen_trees_header OF((void)); * Send a value on a given number of bits. * IN assertion: length <= 16 and value fits in length bits. */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG local void send_bits OF((deflate_state *s, int value, int length)); local void send_bits(s, value, length) @@ -208,12 +206,12 @@ local void send_bits(s, value, length) s->bi_valid += length; } } -#else /* !DEBUG */ +#else /* !ZLIB_DEBUG */ #define send_bits(s, value, length) \ { int len = length;\ if (s->bi_valid > (int)Buf_size - len) {\ - int val = value;\ + int val = (int)value;\ s->bi_buf |= (ush)val << s->bi_valid;\ put_short(s, s->bi_buf);\ s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\ @@ -223,7 +221,7 @@ local void send_bits(s, value, length) s->bi_valid += len;\ }\ } -#endif /* DEBUG */ +#endif /* ZLIB_DEBUG */ /* the arguments must not have side effects */ @@ -317,7 +315,7 @@ local void tr_static_init() * Genererate the file trees.h describing the static trees. */ #ifdef GEN_TREES_H -# ifndef DEBUG +# ifndef ZLIB_DEBUG # include # endif @@ -394,7 +392,7 @@ void ZLIB_INTERNAL _tr_init(s) s->bi_buf = 0; s->bi_valid = 0; -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len = 0L; s->bits_sent = 0L; #endif @@ -522,12 +520,12 @@ local void gen_bitlen(s, desc) xbits = 0; if (n >= base) xbits = extra[n-base]; f = tree[n].Freq; - s->opt_len += (ulg)f * (bits + xbits); - if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits); + s->opt_len += (ulg)f * (unsigned)(bits + xbits); + if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits); } if (overflow == 0) return; - Trace((stderr,"\nbit length overflow\n")); + Tracev((stderr,"\nbit length overflow\n")); /* This happens for example on obj2 and pic of the Calgary corpus */ /* Find the first bit length which could increase: */ @@ -554,9 +552,8 @@ local void gen_bitlen(s, desc) m = s->heap[--h]; if (m > max_code) continue; if ((unsigned) tree[m].Len != (unsigned) bits) { - Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); - s->opt_len += ((long)bits - (long)tree[m].Len) - *(long)tree[m].Freq; + Tracev((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); + s->opt_len += ((ulg)bits - tree[m].Len) * tree[m].Freq; tree[m].Len = (ush)bits; } n--; @@ -578,7 +575,7 @@ local void gen_codes (tree, max_code, bl_count) ushf *bl_count; /* number of codes at each bit length */ { ush next_code[MAX_BITS+1]; /* next code value for each bit length */ - ush code = 0; /* running code value */ + unsigned code = 0; /* running code value */ int bits; /* bit index */ int n; /* code index */ @@ -586,7 +583,8 @@ local void gen_codes (tree, max_code, bl_count) * without bit reversal. */ for (bits = 1; bits <= MAX_BITS; bits++) { - next_code[bits] = code = (code + bl_count[bits-1]) << 1; + code = (code + bl_count[bits-1]) << 1; + next_code[bits] = (ush)code; } /* Check that the bit counts in bl_count are consistent. The last code * must be all ones. @@ -599,7 +597,7 @@ local void gen_codes (tree, max_code, bl_count) int len = tree[n].Len; if (len == 0) continue; /* Now reverse the bits */ - tree[n].Code = bi_reverse(next_code[len]++, len); + tree[n].Code = (ush)bi_reverse(next_code[len]++, len); Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ", n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1)); @@ -821,7 +819,7 @@ local int build_bl_tree(s) if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; } /* Update opt_len to include the bit length tree and counts */ - s->opt_len += 3*(max_blindex+1) + 5+5+4; + s->opt_len += 3*((ulg)max_blindex+1) + 5+5+4; Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", s->opt_len, s->static_len)); @@ -869,11 +867,17 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) int last; /* one if this is the last block for a file */ { send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ -#ifdef DEBUG + bi_windup(s); /* align on byte boundary */ + put_short(s, (ush)stored_len); + put_short(s, (ush)~stored_len); + zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len); + s->pending += stored_len; +#ifdef ZLIB_DEBUG s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; s->compressed_len += (stored_len + 4) << 3; + s->bits_sent += 2*16; + s->bits_sent += stored_len<<3; #endif - copy_block(s, buf, (unsigned)stored_len, 1); /* with header */ } /* =========================================================================== @@ -894,7 +898,7 @@ void ZLIB_INTERNAL _tr_align(s) { send_bits(s, STATIC_TREES<<1, 3); send_code(s, END_BLOCK, static_ltree); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 10L; /* 3 for block type, 7 for EOB */ #endif bi_flush(s); @@ -902,7 +906,7 @@ void ZLIB_INTERNAL _tr_align(s) /* =========================================================================== * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and output the encoded block to the zip file. + * trees or store, and write out the encoded block. */ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) deflate_state *s; @@ -974,7 +978,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) send_bits(s, (STATIC_TREES<<1)+last, 3); compress_block(s, (const ct_data *)static_ltree, (const ct_data *)static_dtree); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 3 + s->static_len; #endif } else { @@ -983,7 +987,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) max_blindex+1); compress_block(s, (const ct_data *)s->dyn_ltree, (const ct_data *)s->dyn_dtree); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 3 + s->opt_len; #endif } @@ -995,7 +999,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) if (last) { bi_windup(s); -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->compressed_len += 7; /* align on byte boundary */ #endif } @@ -1090,7 +1094,7 @@ local void compress_block(s, ltree, dtree) send_code(s, code, dtree); /* send the distance code */ extra = extra_dbits[code]; if (extra != 0) { - dist -= base_dist[code]; + dist -= (unsigned)base_dist[code]; send_bits(s, dist, extra); /* send the extra distance bits */ } } /* literal or match pair ? */ @@ -1193,34 +1197,7 @@ local void bi_windup(s) } s->bi_buf = 0; s->bi_valid = 0; -#ifdef DEBUG +#ifdef ZLIB_DEBUG s->bits_sent = (s->bits_sent+7) & ~7; #endif } - -/* =========================================================================== - * Copy a stored block, storing first the length and its - * one's complement if requested. - */ -local void copy_block(s, buf, len, header) - deflate_state *s; - charf *buf; /* the input data */ - unsigned len; /* its length */ - int header; /* true if block header must be written */ -{ - bi_windup(s); /* align on byte boundary */ - - if (header) { - put_short(s, (ush)len); - put_short(s, (ush)~len); -#ifdef DEBUG - s->bits_sent += 2*16; -#endif - } -#ifdef DEBUG - s->bits_sent += (ulg)len<<3; -#endif - while (len--) { - put_byte(s, *buf++); - } -} diff --git a/src/zlib/trees.h b/src/ZLib/trees.h similarity index 100% rename from src/zlib/trees.h rename to src/ZLib/trees.h diff --git a/src/ZLib/uncompr.c b/src/ZLib/uncompr.c new file mode 100644 index 000000000..f03a1a865 --- /dev/null +++ b/src/ZLib/uncompr.c @@ -0,0 +1,93 @@ +/* uncompr.c -- decompress a memory buffer + * Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#define ZLIB_INTERNAL +#include "zlib.h" + +/* =========================================================================== + Decompresses the source buffer into the destination buffer. *sourceLen is + the byte length of the source buffer. Upon entry, *destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, + *destLen is the size of the decompressed data and *sourceLen is the number + of source bytes consumed. Upon return, source + *sourceLen points to the + first unused input byte. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, or + Z_DATA_ERROR if the input data was corrupted, including if the input data is + an incomplete zlib stream. +*/ +int ZEXPORT uncompress2 (dest, destLen, source, sourceLen) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong *sourceLen; +{ + z_stream stream; + int err; + const uInt max = (uInt)-1; + uLong len, left; + Byte buf[1]; /* for detection of incomplete stream when *destLen == 0 */ + + len = *sourceLen; + if (*destLen) { + left = *destLen; + *destLen = 0; + } + else { + left = 1; + dest = buf; + } + + stream.next_in = (z_const Bytef *)source; + stream.avail_in = 0; + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + stream.opaque = (voidpf)0; + + err = inflateInit(&stream); + if (err != Z_OK) return err; + + stream.next_out = dest; + stream.avail_out = 0; + + do { + if (stream.avail_out == 0) { + stream.avail_out = left > (uLong)max ? max : (uInt)left; + left -= stream.avail_out; + } + if (stream.avail_in == 0) { + stream.avail_in = len > (uLong)max ? max : (uInt)len; + len -= stream.avail_in; + } + err = inflate(&stream, Z_NO_FLUSH); + } while (err == Z_OK); + + *sourceLen -= len + stream.avail_in; + if (dest != buf) + *destLen = stream.total_out; + else if (stream.total_out && err == Z_BUF_ERROR) + left = 1; + + inflateEnd(&stream); + return err == Z_STREAM_END ? Z_OK : + err == Z_NEED_DICT ? Z_DATA_ERROR : + err == Z_BUF_ERROR && left + stream.avail_out ? Z_DATA_ERROR : + err; +} + +int ZEXPORT uncompress (dest, destLen, source, sourceLen) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong sourceLen; +{ + return uncompress2(dest, destLen, source, &sourceLen); +} diff --git a/src/zlib/zconf.h b/src/ZLib/zconf.h similarity index 93% rename from src/zlib/zconf.h rename to src/ZLib/zconf.h index 9987a7755..5e1d68a00 100644 --- a/src/zlib/zconf.h +++ b/src/ZLib/zconf.h @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. + * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -17,7 +17,7 @@ #ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ # define Z_PREFIX_SET -/* all linked symbols */ +/* all linked symbols and init macros */ # define _dist_code z__dist_code # define _length_code z__length_code # define _tr_align z__tr_align @@ -29,6 +29,7 @@ # define adler32 z_adler32 # define adler32_combine z_adler32_combine # define adler32_combine64 z_adler32_combine64 +# define adler32_z z_adler32_z # ifndef Z_SOLO # define compress z_compress # define compress2 z_compress2 @@ -37,10 +38,14 @@ # define crc32 z_crc32 # define crc32_combine z_crc32_combine # define crc32_combine64 z_crc32_combine64 +# define crc32_z z_crc32_z # define deflate z_deflate # define deflateBound z_deflateBound # define deflateCopy z_deflateCopy # define deflateEnd z_deflateEnd +# define deflateGetDictionary z_deflateGetDictionary +# define deflateInit z_deflateInit +# define deflateInit2 z_deflateInit2 # define deflateInit2_ z_deflateInit2_ # define deflateInit_ z_deflateInit_ # define deflateParams z_deflateParams @@ -67,6 +72,8 @@ # define gzeof z_gzeof # define gzerror z_gzerror # define gzflush z_gzflush +# define gzfread z_gzfread +# define gzfwrite z_gzfwrite # define gzgetc z_gzgetc # define gzgetc_ z_gzgetc_ # define gzgets z_gzgets @@ -78,7 +85,6 @@ # define gzopen_w z_gzopen_w # endif # define gzprintf z_gzprintf -# define gzvprintf z_gzvprintf # define gzputc z_gzputc # define gzputs z_gzputs # define gzread z_gzread @@ -89,32 +95,39 @@ # define gztell z_gztell # define gztell64 z_gztell64 # define gzungetc z_gzungetc +# define gzvprintf z_gzvprintf # define gzwrite z_gzwrite # endif # define inflate z_inflate # define inflateBack z_inflateBack # define inflateBackEnd z_inflateBackEnd +# define inflateBackInit z_inflateBackInit # define inflateBackInit_ z_inflateBackInit_ +# define inflateCodesUsed z_inflateCodesUsed # define inflateCopy z_inflateCopy # define inflateEnd z_inflateEnd +# define inflateGetDictionary z_inflateGetDictionary # define inflateGetHeader z_inflateGetHeader +# define inflateInit z_inflateInit +# define inflateInit2 z_inflateInit2 # define inflateInit2_ z_inflateInit2_ # define inflateInit_ z_inflateInit_ # define inflateMark z_inflateMark # define inflatePrime z_inflatePrime # define inflateReset z_inflateReset # define inflateReset2 z_inflateReset2 +# define inflateResetKeep z_inflateResetKeep # define inflateSetDictionary z_inflateSetDictionary -# define inflateGetDictionary z_inflateGetDictionary # define inflateSync z_inflateSync # define inflateSyncPoint z_inflateSyncPoint # define inflateUndermine z_inflateUndermine -# define inflateResetKeep z_inflateResetKeep +# define inflateValidate z_inflateValidate # define inflate_copyright z_inflate_copyright # define inflate_fast z_inflate_fast # define inflate_table z_inflate_table # ifndef Z_SOLO # define uncompress z_uncompress +# define uncompress2 z_uncompress2 # endif # define zError z_zError # ifndef Z_SOLO @@ -224,9 +237,19 @@ # define z_const #endif -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL +#ifdef Z_SOLO + typedef unsigned long z_size_t; +#else +# define z_longlong long long +# if defined(NO_SIZE_T) + typedef unsigned NO_SIZE_T z_size_t; +# elif defined(STDC) +# include + typedef size_t z_size_t; +# else + typedef unsigned long z_size_t; +# endif +# undef z_longlong #endif /* Maximum value for memLevel in deflateInit2 */ @@ -256,7 +279,7 @@ Of course this will generally degrade compression (there's no free lunch). The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes + that is, 32K for windowBits=15 (default value) plus about 7 kilobytes for small objects. */ diff --git a/src/zlib/zlib.h b/src/ZLib/zlib.h similarity index 82% rename from src/zlib/zlib.h rename to src/ZLib/zlib.h index 3e0c7672a..f09cdaf1e 100644 --- a/src/zlib/zlib.h +++ b/src/ZLib/zlib.h @@ -1,7 +1,7 @@ /* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.8, April 28th, 2013 + version 1.2.11, January 15th, 2017 - Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -37,11 +37,11 @@ extern "C" { #endif -#define ZLIB_VERSION "1.2.8" -#define ZLIB_VERNUM 0x1280 +#define ZLIB_VERSION "1.2.11" +#define ZLIB_VERNUM 0x12b0 #define ZLIB_VER_MAJOR 1 #define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 8 +#define ZLIB_VER_REVISION 11 #define ZLIB_VER_SUBREVISION 0 /* @@ -65,7 +65,8 @@ extern "C" { with "gz". The gzip format is different from the zlib format. gzip is a gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - This library can optionally read and write gzip streams in memory as well. + This library can optionally read and write gzip and raw deflate streams in + memory as well. The zlib format was designed to be compact and fast for use in memory and on communications channels. The gzip format was designed for single- @@ -74,7 +75,7 @@ extern "C" { The library does not install any signal handler. The decoder checks the consistency of the compressed data, so the library should never crash - even in case of corrupted input. + even in the case of corrupted input. */ typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); @@ -87,7 +88,7 @@ typedef struct z_stream_s { uInt avail_in; /* number of bytes available at next_in */ uLong total_in; /* total number of input bytes read so far */ - Bytef *next_out; /* next output byte should be put there */ + Bytef *next_out; /* next output byte will go here */ uInt avail_out; /* remaining free space at next_out */ uLong total_out; /* total number of bytes output so far */ @@ -98,8 +99,9 @@ typedef struct z_stream_s { free_func zfree; /* used to free the internal state */ voidpf opaque; /* private data object passed to zalloc and zfree */ - int data_type; /* best guess about the data type: binary or text */ - uLong adler; /* adler32 value of the uncompressed data */ + int data_type; /* best guess about the data type: binary or text + for deflate, or the decoding state for inflate */ + uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */ uLong reserved; /* reserved for future use */ } z_stream; @@ -142,7 +144,9 @@ typedef gz_header FAR *gz_headerp; zalloc must return Z_NULL if there is not enough memory for the object. If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. + thread safe. In that case, zlib is thread-safe. When zalloc and zfree are + Z_NULL on entry to the initialization function, they are set to internal + routines that use the standard library functions malloc() and free(). On 16-bit systems, the functions zalloc and zfree must be able to allocate exactly 65536 bytes, but will not be required to allocate more than this if @@ -155,7 +159,7 @@ typedef gz_header FAR *gz_headerp; The fields total_in and total_out can be used for statistics or progress reports. After compression, total_in holds the total size of the - uncompressed data and may be saved for use in the decompressor (particularly + uncompressed data and may be saved for use by the decompressor (particularly if the decompressor wants to decompress everything in a single step). */ @@ -200,7 +204,7 @@ typedef gz_header FAR *gz_headerp; #define Z_TEXT 1 #define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ #define Z_UNKNOWN 2 -/* Possible values of the data_type field (though see inflate()) */ +/* Possible values of the data_type field for deflate() */ #define Z_DEFLATED 8 /* The deflate compression method (the only one supported in this version) */ @@ -258,11 +262,11 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); enough room in the output buffer), next_in and avail_in are updated and processing will resume at this point for the next call of deflate(). - - Provide more output starting at next_out and update next_out and avail_out + - Generate more output starting at next_out and update next_out and avail_out accordingly. This action is forced if the parameter flush is non zero. Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). Some - output may be provided even if flush is not set. + should be set only when necessary. Some output may be provided even if + flush is zero. Before the call of deflate(), the application should ensure that at least one of the actions is possible, by providing more input and/or consuming more @@ -271,7 +275,9 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); output when it wants, for example when the output buffer is full (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK and with zero avail_out, it must be called again after making room in the output - buffer because there might be more output pending. + buffer because there might be more output pending. See deflatePending(), + which can be used if desired to determine whether or not there is more ouput + in that case. Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to decide how much data to accumulate before producing output, in order to @@ -292,8 +298,8 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. This completes the current deflate block and follows it with an empty fixed codes block that is 10 bits long. This assures that enough bytes are output - in order for the decompressor to finish the block before the empty fixed code - block. + in order for the decompressor to finish the block before the empty fixed + codes block. If flush is set to Z_BLOCK, a deflate block is completed and emitted, as for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to @@ -319,34 +325,38 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); If the parameter flush is set to Z_FINISH, pending input is processed, pending output is flushed and deflate returns with Z_STREAM_END if there was - enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the stream - are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least the - value returned by deflateBound (see below). Then deflate is guaranteed to - return Z_STREAM_END. If not enough output space is provided, deflate will - not return Z_STREAM_END, and it must be called again as described above. - - deflate() sets strm->adler to the adler32 checksum of all input read - so far (that is, total_in bytes). + enough output space. If deflate returns with Z_OK or Z_BUF_ERROR, this + function must be called again with Z_FINISH and more output space (updated + avail_out) but no more input data, until it returns with Z_STREAM_END or an + error. After deflate has returned Z_STREAM_END, the only possible operations + on the stream are deflateReset or deflateEnd. + + Z_FINISH can be used in the first deflate call after deflateInit if all the + compression is to be done in a single step. In order to complete in one + call, avail_out must be at least the value returned by deflateBound (see + below). Then deflate is guaranteed to return Z_STREAM_END. If not enough + output space is provided, deflate will not return Z_STREAM_END, and it must + be called again as described above. + + deflate() sets strm->adler to the Adler-32 checksum of all input read + so far (that is, total_in bytes). If a gzip stream is being generated, then + strm->adler will be the CRC-32 checksum of the input read so far. (See + deflateInit2 below.) deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered - binary. This field is only for information purposes and does not affect the - compression algorithm in any manner. + the input data type (Z_BINARY or Z_TEXT). If in doubt, the data is + considered binary. This field is only for information purposes and does not + affect the compression algorithm in any manner. deflate() returns Z_OK if some progress has been made (more input processed or more output produced), Z_STREAM_END if all input has been consumed and all output has been produced (only when flush is set to Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible - (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not - fatal, and deflate() can be called again with more input and more output - space to continue compressing. + if next_in or next_out was Z_NULL or the state was inadvertently written over + by the application), or Z_BUF_ERROR if no progress is possible (for example + avail_in or avail_out was zero). Note that Z_BUF_ERROR is not fatal, and + deflate() can be called again with more input and more output space to + continue compressing. */ @@ -369,23 +379,21 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); Initializes the internal stream state for decompression. The fields next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. If next_in is not Z_NULL and avail_in is large enough (the - exact value depends on the compression method), inflateInit determines the - compression method from the zlib header and allocates all data structures - accordingly; otherwise the allocation will be deferred to the first call of - inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to - use default allocation functions. + the caller. In the current version of inflate, the provided input is not + read or consumed. The allocation of a sliding window will be deferred to + the first call of inflate (if the decompression does not complete on the + first call). If zalloc and zfree are set to Z_NULL, inflateInit updates + them to use default allocation functions. inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_VERSION_ERROR if the zlib library version is incompatible with the version assumed by the caller, or Z_STREAM_ERROR if the parameters are invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit() does not process any header information -- that is deferred - until inflate() is called. + there is no error message. inflateInit does not perform any decompression. + Actual decompression will be done by inflate(). So next_in, and avail_in, + next_out, and avail_out are unused and unchanged. The current + implementation of inflateInit() does not process any header information -- + that is deferred until inflate() is called. */ @@ -401,17 +409,20 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); - Decompress more input starting at next_in and update next_in and avail_in accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing will - resume at this point for the next call of inflate(). + enough room in the output buffer), then next_in and avail_in are updated + accordingly, and processing will resume at this point for the next call of + inflate(). - - Provide more output starting at next_out and update next_out and avail_out + - Generate more output starting at next_out and update next_out and avail_out accordingly. inflate() provides as much output as possible, until there is no more input data or no more space in the output buffer (see below about the flush parameter). Before the call of inflate(), the application should ensure that at least one of the actions is possible, by providing more input and/or consuming more - output, and updating the next_* and avail_* values accordingly. The + output, and updating the next_* and avail_* values accordingly. If the + caller of inflate() does not provide both available input and available + output space, it is possible that there will be no progress made. The application can consume the uncompressed output when it wants, for example when the output buffer is full (avail_out == 0), or after each call of inflate(). If inflate returns Z_OK and with zero avail_out, it must be @@ -428,7 +439,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); gets to the end of that block, or when it runs out of data. The Z_BLOCK option assists in appending to or combining deflate streams. - Also to assist in this, on return inflate() will set strm->data_type to the + To assist in this, on return inflate() always sets strm->data_type to the number of unused bits in the last byte taken from strm->next_in, plus 64 if inflate() is currently decoding the last block in the deflate stream, plus 128 if inflate() returned immediately after decoding an end-of-block code or @@ -454,7 +465,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); this case all pending input is processed and all pending output is flushed; avail_out must be large enough to hold all of the uncompressed data for the operation to complete. (The size of the uncompressed data may have been - saved by the compressor for this purpose.) The use of Z_FINISH is not + saved by the compressor for this purpose.) The use of Z_FINISH is not required to perform an inflation in one step. However it may be used to inform inflate that a faster approach can be used for the single inflate() call. Z_FINISH also informs inflate to not maintain a sliding window if the @@ -476,32 +487,33 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); chosen by the compressor and returns Z_NEED_DICT; otherwise it sets strm->adler to the Adler-32 checksum of all output produced so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed adler32 + below. At the end of the stream, inflate() checks that its computed Adler-32 checksum is equal to that saved by the compressor and returns Z_STREAM_END only if the checksum is correct. inflate() can decompress and check either zlib-wrapped or gzip-wrapped deflate data. The header type is detected automatically, if requested when initializing with inflateInit2(). Any information contained in the gzip - header is not retained, so applications that need that information should - instead use raw inflate, see inflateInit2() below, or inflateBack() and - perform their own processing of the gzip header and trailer. When processing + header is not retained unless inflateGetHeader() is used. When processing gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output - producted so far. The CRC-32 is checked against the gzip trailer. + produced so far. The CRC-32 is checked against the gzip trailer, as is the + uncompressed length, modulo 2^32. inflate() returns Z_OK if some progress has been made (more input processed or more output produced), Z_STREAM_END if the end of the compressed data has been reached and all uncompressed output has been produced, Z_NEED_DICT if a preset dictionary is needed at this point, Z_DATA_ERROR if the input data was corrupted (input stream not conforming to the zlib format or incorrect check - value), Z_STREAM_ERROR if the stream structure was inconsistent (for example - next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, - Z_BUF_ERROR if no progress is possible or if there was not enough room in the - output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + value, in which case strm->msg points to a string with a more specific + error), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL, or the state was inadvertently written over + by the application), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR + if no progress was possible or if there was not enough room in the output + buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and inflate() can be called again with more input and more output space to continue decompressing. If Z_DATA_ERROR is returned, the application may then call inflateSync() to look for a good compression block if a partial - recovery of the data is desired. + recovery of the data is to be attempted. */ @@ -511,9 +523,8 @@ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); This function discards any unprocessed input and does not flush any pending output. - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). + inflateEnd returns Z_OK if success, or Z_STREAM_ERROR if the stream state + was inconsistent. */ @@ -544,16 +555,29 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, compression at the expense of memory usage. The default value is 15 if deflateInit is used instead. + For the current implementation of deflate(), a windowBits value of 8 (a + window size of 256 bytes) is not supported. As a result, a request for 8 + will result in 9 (a 512-byte window). In that case, providing 8 to + inflateInit2() will result in an error when the zlib header with 9 is + checked against the initialization of inflate(). The remedy is to not use 8 + with deflateInit2() with this initialization, or at least in that case use 9 + with inflateInit2(). + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute an adler32 check value. + with no zlib header or trailer, and will not compute a check value. windowBits can also be greater than 15 for optional gzip encoding. Add 16 to windowBits to write a simple gzip header and trailer around the compressed data instead of a zlib wrapper. The gzip header will have no file name, no extra data, no comment, no modification time (set to zero), no - header crc, and the operating system will be set to 255 (unknown). If a - gzip stream is being written, strm->adler is a crc32 instead of an adler32. + header crc, and the operating system will be set to the appropriate value, + if the operating system was determined at compile time. If a gzip stream is + being written, strm->adler is a CRC-32 instead of an Adler-32. + + For raw deflate or gzip encoding, a request for a 256-byte window is + rejected as invalid, since only the zlib header provides a means of + transmitting the window size to the decompressor. The memLevel parameter specifies how much memory should be allocated for the internal compression state. memLevel=1 uses minimum memory but is @@ -614,12 +638,12 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, addition, the current implementation of deflate will use at most the window size minus 262 bytes of the provided dictionary. - Upon return of this function, strm->adler is set to the adler32 value + Upon return of this function, strm->adler is set to the Adler-32 value of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The adler32 value + which dictionary has been used by the compressor. (The Adler-32 value applies to the whole dictionary even if only a subset of the dictionary is actually used by the compressor.) If a raw deflate was requested, then the - adler32 value is not computed and strm->adler is not set. + Adler-32 value is not computed and strm->adler is not set. deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is @@ -628,6 +652,28 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, not perform any compression: this will be done by deflate(). */ +ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm, + Bytef *dictionary, + uInt *dictLength)); +/* + Returns the sliding dictionary being maintained by deflate. dictLength is + set to the number of bytes in the dictionary, and that many bytes are copied + to dictionary. dictionary must have enough space, where 32768 bytes is + always enough. If deflateGetDictionary() is called with dictionary equal to + Z_NULL, then only the dictionary length is returned, and nothing is copied. + Similary, if dictLength is Z_NULL, then it is not set. + + deflateGetDictionary() may return a length less than the window size, even + when more than the window size in input has been provided. It may return up + to 258 bytes less in that case, due to how zlib's implementation of deflate + manages the sliding window and lookahead for matches, where matches can be + up to 258 bytes long. If the application needs the last window-size bytes of + input, then that would need to be saved by the application outside of zlib. + + deflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, z_streamp source)); /* @@ -648,10 +694,10 @@ ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); /* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. The - stream will keep the same compression level and any other attributes that - may have been set by deflateInit2. + This function is equivalent to deflateEnd followed by deflateInit, but + does not free and reallocate the internal compression state. The stream + will leave the compression level and any other attributes that may have been + set unchanged. deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL). @@ -662,20 +708,36 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, int strategy)); /* Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2. This can be + interpretation of level and strategy is as in deflateInit2(). This can be used to switch between compression and straight copy of the input data, or to switch to a different kind of input data requiring a different strategy. - If the compression level is changed, the input available so far is - compressed with the old level (and may be flushed); the new level will take - effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to be - compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if - strm->avail_out was zero. + If the compression approach (which is a function of the level) or the + strategy is changed, and if any input has been consumed in a previous + deflate() call, then the input available so far is compressed with the old + level and strategy using deflate(strm, Z_BLOCK). There are three approaches + for the compression levels 0, 1..3, and 4..9 respectively. The new level + and strategy will take effect at the next call of deflate(). + + If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does + not have enough output space to complete, then the parameter change will not + take effect. In this case, deflateParams() can be called again with the + same parameters and more output space to try again. + + In order to assure a change in the parameters on the first try, the + deflate stream should be flushed using deflate() with Z_BLOCK or other flush + request until strm.avail_out is not zero, before calling deflateParams(). + Then no more input data should be provided before the deflateParams() call. + If this is done, the old level and strategy will be applied to the data + compressed before deflateParams(), and the new level and strategy will be + applied to the the data compressed after deflateParams(). + + deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream + state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if + there was not enough output space to complete the compression of the + available input data before a change in the strategy or approach. Note that + in the case of a Z_BUF_ERROR, the parameters are not changed. A return + value of Z_BUF_ERROR is not fatal, in which case deflateParams() can be + retried with more output space. */ ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, @@ -793,7 +855,7 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, is for use with other formats that use the deflate compressed data format such as zip. Those formats provide their own check values. If a custom format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an adler32 or a crc32 be applied to + recommended that a check value such as an Adler-32 or a CRC-32 be applied to the uncompressed data as is done in the zlib, gzip, and zip formats. For most applications, the zlib format should be used as is. Note that comments above on the use in deflateInit2() applies to the magnitude of windowBits. @@ -802,7 +864,10 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, 32 to windowBits to enable zlib and gzip decoding with automatic header detection, or add 16 to decode only the gzip format (the zlib format will return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a - crc32 instead of an adler32. + CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see + below), inflate() will not automatically decode concatenated gzip streams. + inflate() will return Z_STREAM_END at the end of the gzip stream. The state + would need to be reset to continue decoding a subsequent gzip stream. inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_VERSION_ERROR if the zlib library version is incompatible with the @@ -823,7 +888,7 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, Initializes the decompression dictionary from the given uncompressed byte sequence. This function must be called immediately after a call of inflate, if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the adler32 value returned by that call of inflate. + can be determined from the Adler-32 value returned by that call of inflate. The compressor and decompressor must use exactly the same dictionary (see deflateSetDictionary). For raw inflate, this function can be called at any time to set the dictionary. If the provided dictionary is smaller than the @@ -834,7 +899,7 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect adler32 value). inflateSetDictionary does not + expected one (incorrect Adler-32 value). inflateSetDictionary does not perform any decompression: this will be done by subsequent calls of inflate(). */ @@ -892,7 +957,7 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); /* This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate all the internal decompression state. The + but does not free and reallocate the internal decompression state. The stream will keep attributes that may have been set by inflateInit2. inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source @@ -904,7 +969,9 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, /* This function is the same as inflateReset, but it also permits changing the wrap and window size requests. The windowBits parameter is interpreted - the same as it is for inflateInit2. + the same as it is for inflateInit2. If the window size is changed, then the + memory allocated for the window is freed, and the window will be reallocated + by inflate() if needed. inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL), or if @@ -956,7 +1023,7 @@ ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); location in the input stream can be determined from avail_in and data_type as noted in the description for the Z_BLOCK flush parameter for inflate. - inflateMark returns the value noted above or -1 << 16 if the provided + inflateMark returns the value noted above, or -65536 if the provided source stream state was inconsistent. */ @@ -1048,9 +1115,9 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, This routine would normally be used in a utility that reads zip or gzip files and writes out uncompressed files. The utility would decode the header and process the trailer on its own, hence this routine expects only - the raw deflate stream to decompress. This is different from the normal - behavior of inflate(), which expects either a zlib or gzip header and - trailer around the deflate stream. + the raw deflate stream to decompress. This is different from the default + behavior of inflate(), which expects a zlib header and trailer around the + deflate stream. inflateBack() uses two subroutines supplied by the caller that are then called by inflateBack() for input and output. inflateBack() calls those @@ -1059,12 +1126,12 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, parameters and return types are defined above in the in_func and out_func typedefs. inflateBack() will call in(in_desc, &buf) which should return the number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero--buf is ignored in that - case--and inflateBack() will return a buffer error. inflateBack() will call - out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() - should return zero on success, or non-zero on failure. If out() returns - non-zero, inflateBack() will return with an error. Neither in() nor out() - are permitted to change the contents of the window provided to + there is no input available, in() must return zero -- buf is ignored in that + case -- and inflateBack() will return a buffer error. inflateBack() will + call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. + out() should return zero on success, or non-zero on failure. If out() + returns non-zero, inflateBack() will return with an error. Neither in() nor + out() are permitted to change the contents of the window provided to inflateBackInit(), which is also the buffer that out() uses to write from. The length written by out() will be at most the window size. Any non-zero amount of input may be provided by in(). @@ -1092,7 +1159,7 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, using strm->next_in which will be Z_NULL only if in() returned an error. If strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning non-zero. (in() will always be called before out(), so strm->next_in is - assured to be defined if out() returns non-zero.) Note that inflateBack() + assured to be defined if out() returns non-zero.) Note that inflateBack() cannot return Z_OK. */ @@ -1114,7 +1181,7 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); 7.6: size of z_off_t Compiler, assembler, and debug options: - 8: DEBUG + 8: ZLIB_DEBUG 9: ASMV or ASMINF -- use ASM code 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention 11: 0 (reserved) @@ -1164,7 +1231,8 @@ ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be at least the value returned by compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. + compressed data. compress() is equivalent to compress2() with a level + parameter of Z_DEFAULT_COMPRESSION. compress returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output @@ -1180,7 +1248,7 @@ ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be at least the value returned by compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. + compressed data. compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, @@ -1203,7 +1271,7 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, uncompressed data. (The size of the uncompressed data must have been saved previously by the compressor and transmitted to the decompressor by some mechanism outside the scope of this compression library.) Upon exit, destLen - is the actual size of the uncompressed buffer. + is the actual size of the uncompressed data. uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output @@ -1212,6 +1280,14 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, buffer with the uncompressed data up to that point. */ +ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong *sourceLen)); +/* + Same as uncompress, except that sourceLen is a pointer, where the + length of the source is *sourceLen. On return, *sourceLen is the number of + source bytes consumed. +*/ + /* gzip file access functions */ /* @@ -1290,10 +1366,9 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); default buffer size is 8192 bytes. This function must be called after gzopen() or gzdopen(), and before any other calls that read or write the file. The buffer memory allocation is always deferred to the first read or - write. Two buffers are allocated, either both of the specified size when - writing, or one of the specified size and the other twice that size when - reading. A larger buffer size of, for example, 64K or 128K bytes will - noticeably increase the speed of decompression (reading). + write. Three times that size in buffer space is allocated. A larger buffer + size of, for example, 64K or 128K bytes will noticeably increase the speed + of decompression (reading). The new buffer size also affects the maximum length for gzprintf(). @@ -1304,10 +1379,12 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); /* Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. + of deflateInit2 for the meaning of these parameters. Previously provided + data is flushed before the parameter change. - gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not - opened for writing. + gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not + opened for writing, Z_ERRNO if there is an error writing the flushed data, + or Z_MEM_ERROR if there is a memory allocation error. */ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); @@ -1335,7 +1412,35 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); case. gzread returns the number of uncompressed bytes actually read, less than - len for end of file, or -1 for error. + len for end of file, or -1 for error. If len is too large to fit in an int, + then nothing is read, -1 is returned, and the error state is set to + Z_STREAM_ERROR. +*/ + +ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, + gzFile file)); +/* + Read up to nitems items of size size from file to buf, otherwise operating + as gzread() does. This duplicates the interface of stdio's fread(), with + size_t request and return types. If the library defines size_t, then + z_size_t is identical to size_t. If not, then z_size_t is an unsigned + integer type that can contain a pointer. + + gzfread() returns the number of full items read of size size, or zero if + the end of the file was reached and a full item could not be read, or if + there was an error. gzerror() must be consulted if zero is returned in + order to determine if there was an error. If the multiplication of size and + nitems overflows, i.e. the product does not fit in a z_size_t, then nothing + is read, zero is returned, and the error state is set to Z_STREAM_ERROR. + + In the event that the end of file is reached and only a partial item is + available at the end, i.e. the remaining uncompressed data length is not a + multiple of size, then the final partial item is nevetheless read into buf + and the end-of-file flag is set. The length of the partial item read is not + provided, but could be inferred from the result of gztell(). This behavior + is the same as the behavior of fread() implementations in common libraries, + but it prevents the direct use of gzfread() to read a concurrently written + file, reseting and retrying on end-of-file, when size is not 1. */ ZEXTERN int ZEXPORT gzwrite OF((gzFile file, @@ -1346,19 +1451,33 @@ ZEXTERN int ZEXPORT gzwrite OF((gzFile file, error. */ +ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, + z_size_t nitems, gzFile file)); +/* + gzfwrite() writes nitems items of size size from buf to file, duplicating + the interface of stdio's fwrite(), with size_t request and return types. If + the library defines size_t, then z_size_t is identical to size_t. If not, + then z_size_t is an unsigned integer type that can contain a pointer. + + gzfwrite() returns the number of full items written of size size, or zero + if there was an error. If the multiplication of size and nitems overflows, + i.e. the product does not fit in a z_size_t, then nothing is written, zero + is returned, and the error state is set to Z_STREAM_ERROR. +*/ + ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); /* Converts, formats, and writes the arguments to the compressed file under control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written, or 0 in case of error. The number of - uncompressed bytes written is limited to 8191, or one less than the buffer - size given to gzbuffer(). The caller should assure that this limit is not - exceeded. If it is exceeded, then gzprintf() will return an error (0) with - nothing written. In this case, there may also be a buffer overflow with - unpredictable consequences, which is possible only if zlib was compiled with - the insecure functions sprintf() or vsprintf() because the secure snprintf() - or vsnprintf() functions were not available. This can be determined using - zlibCompileFlags(). + uncompressed bytes actually written, or a negative zlib error code in case + of error. The number of uncompressed bytes written is limited to 8191, or + one less than the buffer size given to gzbuffer(). The caller should assure + that this limit is not exceeded. If it is exceeded, then gzprintf() will + return an error (0) with nothing written. In this case, there may also be a + buffer overflow with unpredictable consequences, which is possible only if + zlib was compiled with the insecure functions sprintf() or vsprintf() + because the secure snprintf() or vsnprintf() functions were not available. + This can be determined using zlibCompileFlags(). */ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); @@ -1418,7 +1537,7 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); If the flush parameter is Z_FINISH, the remaining data is written and the gzip stream is completed in the output. If gzwrite() is called again, a new gzip stream will be started in the output. gzread() is able to read such - concatented gzip streams. + concatenated gzip streams. gzflush should be called only when strictly necessary because it will degrade compression if called too often. @@ -1572,7 +1691,7 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); return the updated checksum. If buf is Z_NULL, this function returns the required initial value for the checksum. - An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed much faster. Usage example: @@ -1585,6 +1704,12 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); if (adler != original_adler) error(); */ +ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf, + z_size_t len)); +/* + Same as adler32(), but with a size_t length. +*/ + /* ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, z_off_t len2)); @@ -1614,6 +1739,12 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); if (crc != original_crc) error(); */ +ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf, + z_size_t len)); +/* + Same as crc32(), but with a size_t length. +*/ + /* ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); @@ -1644,19 +1775,35 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, unsigned char FAR *window, const char *version, int stream_size)); -#define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -#define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -#define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -#define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) +#ifdef Z_PREFIX_SET +# define z_deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +# define z_inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +# define z_deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +# define z_inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +# define z_inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) +#else +# define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +# define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +# define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +# define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +# define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) +#endif #ifndef Z_SOLO @@ -1676,10 +1823,10 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ #ifdef Z_PREFIX_SET # undef z_gzgetc # define z_gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) #else # define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) #endif /* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or @@ -1737,19 +1884,16 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ #endif /* !Z_SOLO */ -/* hack for buggy compilers */ -#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) - struct internal_state {int dummy;}; -#endif - /* undocumented functions */ ZEXTERN const char * ZEXPORT zError OF((int)); ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); +ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int)); +ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp)); ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); -#if defined(_WIN32) && !defined(Z_SOLO) +#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO) ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, const char *mode)); #endif diff --git a/src/zlib/zutil.c b/src/ZLib/zutil.c similarity index 86% rename from src/zlib/zutil.c rename to src/ZLib/zutil.c index 23d2ebef0..a76c6b0c7 100644 --- a/src/zlib/zutil.c +++ b/src/ZLib/zutil.c @@ -1,5 +1,5 @@ /* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-2005, 2010, 2011, 2012 Jean-loup Gailly. + * Copyright (C) 1995-2017 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -10,21 +10,18 @@ # include "gzguts.h" #endif -#ifndef NO_DUMMY_DECL -struct internal_state {int dummy;}; /* for buggy compilers */ -#endif - z_const char * const z_errmsg[10] = { -"need dictionary", /* Z_NEED_DICT 2 */ -"stream end", /* Z_STREAM_END 1 */ -"", /* Z_OK 0 */ -"file error", /* Z_ERRNO (-1) */ -"stream error", /* Z_STREAM_ERROR (-2) */ -"data error", /* Z_DATA_ERROR (-3) */ -"insufficient memory", /* Z_MEM_ERROR (-4) */ -"buffer error", /* Z_BUF_ERROR (-5) */ -"incompatible version",/* Z_VERSION_ERROR (-6) */ -""}; + (z_const char *)"need dictionary", /* Z_NEED_DICT 2 */ + (z_const char *)"stream end", /* Z_STREAM_END 1 */ + (z_const char *)"", /* Z_OK 0 */ + (z_const char *)"file error", /* Z_ERRNO (-1) */ + (z_const char *)"stream error", /* Z_STREAM_ERROR (-2) */ + (z_const char *)"data error", /* Z_DATA_ERROR (-3) */ + (z_const char *)"insufficient memory", /* Z_MEM_ERROR (-4) */ + (z_const char *)"buffer error", /* Z_BUF_ERROR (-5) */ + (z_const char *)"incompatible version",/* Z_VERSION_ERROR (-6) */ + (z_const char *)"" +}; const char * ZEXPORT zlibVersion() @@ -61,7 +58,7 @@ uLong ZEXPORT zlibCompileFlags() case 8: flags += 2 << 6; break; default: flags += 3 << 6; } -#ifdef DEBUG +#ifdef ZLIB_DEBUG flags += 1 << 8; #endif #if defined(ASMV) || defined(ASMINF) @@ -115,8 +112,8 @@ uLong ZEXPORT zlibCompileFlags() return flags; } -#ifdef DEBUG - +#ifdef ZLIB_DEBUG +#include # ifndef verbose # define verbose 0 # endif @@ -219,9 +216,11 @@ local ptr_table table[MAX_PTR]; voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) { - voidpf buf = opaque; /* just to make some compilers happy */ + voidpf buf; ulg bsize = (ulg)items*size; + (void)opaque; + /* If we allocate less than 65520 bytes, we assume that farmalloc * will return a usable pointer which doesn't have to be normalized. */ @@ -244,6 +243,9 @@ voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) { int n; + + (void)opaque; + if (*(ush*)&ptr != 0) { /* object < 64K */ farfree(ptr); return; @@ -259,7 +261,6 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) next_ptr--; return; } - ptr = opaque; /* just to make some compilers happy */ Assert(0, "zcfree: ptr not found"); } @@ -278,13 +279,13 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size) { - if (opaque) opaque = 0; /* to make compiler happy */ + (void)opaque; return _halloc((long)items, size); } void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) { - if (opaque) opaque = 0; /* to make compiler happy */ + (void)opaque; _hfree(ptr); } @@ -306,7 +307,7 @@ voidpf ZLIB_INTERNAL zcalloc (opaque, items, size) unsigned items; unsigned size; { - if (opaque) items += size - size; /* make compiler happy */ + (void)opaque; return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) : (voidpf)calloc(items, size); } @@ -315,8 +316,8 @@ void ZLIB_INTERNAL zcfree (opaque, ptr) voidpf opaque; voidpf ptr; { + (void)opaque; free(ptr); - if (opaque) return; /* make compiler happy */ } #endif /* MY_ZCALLOC */ diff --git a/src/zlib/zutil.h b/src/ZLib/zutil.h similarity index 88% rename from src/zlib/zutil.h rename to src/ZLib/zutil.h index 24ab06b1c..b079ea6a8 100644 --- a/src/zlib/zutil.h +++ b/src/ZLib/zutil.h @@ -1,5 +1,5 @@ /* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. + * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -36,7 +36,9 @@ #ifndef local # define local static #endif -/* compile with -Dlocal if your debugger can't find static symbols */ +/* since "static" is used to mean two completely different things in C, we + define "local" for the non-static meaning of "static", for readability + (compile with -Dlocal if your debugger can't find static symbols) */ typedef unsigned char uch; typedef uch FAR uchf; @@ -98,28 +100,38 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif #ifdef AMIGA -# define OS_CODE 0x01 +# define OS_CODE 1 #endif #if defined(VAXC) || defined(VMS) -# define OS_CODE 0x02 +# define OS_CODE 2 # define F_OPEN(name, mode) \ fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") #endif +#ifdef __370__ +# if __TARGET_LIB__ < 0x20000000 +# define OS_CODE 4 +# elif __TARGET_LIB__ < 0x40000000 +# define OS_CODE 11 +# else +# define OS_CODE 8 +# endif +#endif + #if defined(ATARI) || defined(atarist) -# define OS_CODE 0x05 +# define OS_CODE 5 #endif #ifdef OS2 -# define OS_CODE 0x06 +# define OS_CODE 6 # if defined(M_I86) && !defined(Z_SOLO) # include # endif #endif #if defined(MACOS) || defined(TARGET_OS_MAC) -# define OS_CODE 0x07 +# define OS_CODE 7 # ifndef Z_SOLO # if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os # include /* for fdopen */ @@ -131,18 +143,24 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # endif #endif -#ifdef TOPS20 -# define OS_CODE 0x0a +#ifdef __acorn +# define OS_CODE 13 #endif -#ifdef WIN32 -# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ -# define OS_CODE 0x0b -# endif +#if defined(WIN32) && !defined(__CYGWIN__) +# define OS_CODE 10 +#endif + +#ifdef _BEOS_ +# define OS_CODE 16 +#endif + +#ifdef __TOS_OS400__ +# define OS_CODE 18 #endif -#ifdef __50SERIES /* Prime/PRIMOS */ -# define OS_CODE 0x0f +#ifdef __APPLE__ +# define OS_CODE 19 #endif #if defined(_BEOS_) || defined(RISCOS) @@ -177,7 +195,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ /* common defaults */ #ifndef OS_CODE -# define OS_CODE 0x03 /* assume Unix */ +# define OS_CODE 3 /* assume Unix */ #endif #ifndef F_OPEN @@ -216,7 +234,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif /* Diagnostic functions */ -#ifdef DEBUG +#ifdef ZLIB_DEBUG # include extern int ZLIB_INTERNAL z_verbose; extern void ZLIB_INTERNAL z_error OF((char *m)); diff --git a/src/boost/SConscript b/src/boost/SConscript index 71c9481b1..e3b2f9fea 100644 --- a/src/boost/SConscript +++ b/src/boost/SConscript @@ -8,13 +8,13 @@ env = env.Clone() # Remove warnings import re -flags = env.subst('${CCFLAGS}') -flags = re.sub(r'-W((all)|(error))(=[^\s$]+)?(\s|$)', '', flags) -env.Replace(CCFLAGS = flags) +pat = r'-W((all)|(error)|(suggest-override))(=[^\s$]+)?(\s|$)' +env.Replace(CCFLAGS = re.sub(pat, '', env.subst('${CCFLAGS}'))) +env.Replace(CXXFLAGS = re.sub(pat, '', env.subst('${CXXFLAGS}'))) # Build boost lib src = [] -for lib in ['iostreams', 'filesystem', 'system', 'regex']: +for lib in ['iostreams', 'filesystem', 'system']: src += Glob('libs/%s/src/*.cpp' % lib) lib = env.Library('#/lib/cbang-boost', src) diff --git a/src/boost/boost/algorithm/string/compare.hpp b/src/boost/boost/algorithm/string/compare.hpp index f610b3643..a2673c8f3 100644 --- a/src/boost/boost/algorithm/string/compare.hpp +++ b/src/boost/boost/algorithm/string/compare.hpp @@ -65,7 +65,7 @@ namespace boost { template< typename T1, typename T2 > bool operator()( const T1& Arg1, const T2& Arg2 ) const { - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + #if defined(BOOST_BORLANDC) && (BOOST_BORLANDC >= 0x560) && (BOOST_BORLANDC <= 0x564) && !defined(_USE_OLD_RW_STL) return std::toupper(Arg1)==std::toupper(Arg2); #else return std::toupper(Arg1,m_Loc)==std::toupper(Arg2,m_Loc); @@ -118,7 +118,7 @@ namespace boost { template< typename T1, typename T2 > bool operator()( const T1& Arg1, const T2& Arg2 ) const { - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + #if defined(BOOST_BORLANDC) && (BOOST_BORLANDC >= 0x560) && (BOOST_BORLANDC <= 0x564) && !defined(_USE_OLD_RW_STL) return std::toupper(Arg1)(Arg1,m_Loc)(Arg2,m_Loc); @@ -171,7 +171,7 @@ namespace boost { template< typename T1, typename T2 > bool operator()( const T1& Arg1, const T2& Arg2 ) const { - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + #if defined(BOOST_BORLANDC) && (BOOST_BORLANDC >= 0x560) && (BOOST_BORLANDC <= 0x564) && !defined(_USE_OLD_RW_STL) return std::toupper(Arg1)<=std::toupper(Arg2); #else return std::toupper(Arg1,m_Loc)<=std::toupper(Arg2,m_Loc); diff --git a/src/boost/boost/algorithm/string/detail/case_conv.hpp b/src/boost/boost/algorithm/string/detail/case_conv.hpp index bd45c04cc..220b858ad 100644 --- a/src/boost/boost/algorithm/string/detail/case_conv.hpp +++ b/src/boost/boost/algorithm/string/detail/case_conv.hpp @@ -15,6 +15,9 @@ #include #include +#include +#include +#include #include namespace boost { @@ -40,7 +43,7 @@ namespace boost { // Operation CharT operator ()( CharT Ch ) const { - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + #if defined(BOOST_BORLANDC) && (BOOST_BORLANDC >= 0x560) && (BOOST_BORLANDC <= 0x564) && !defined(_USE_OLD_RW_STL) return std::tolower( static_cast::type> ( Ch )); #else return std::tolower( Ch, *m_Loc ); @@ -62,7 +65,7 @@ namespace boost { // Operation CharT operator ()( CharT Ch ) const { - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + #if defined(BOOST_BORLANDC) && (BOOST_BORLANDC >= 0x560) && (BOOST_BORLANDC <= 0x564) && !defined(_USE_OLD_RW_STL) return std::toupper( static_cast::type> ( Ch )); #else return std::toupper( Ch, *m_Loc ); diff --git a/src/boost/boost/algorithm/string/detail/find_format_all.hpp b/src/boost/boost/algorithm/string/detail/find_format_all.hpp index ae1e5da6c..535583712 100644 --- a/src/boost/boost/algorithm/string/detail/find_format_all.hpp +++ b/src/boost/boost/algorithm/string/detail/find_format_all.hpp @@ -18,6 +18,8 @@ #include #include +#include + namespace boost { namespace algorithm { namespace detail { diff --git a/src/boost/boost/algorithm/string/detail/finder.hpp b/src/boost/boost/algorithm/string/detail/finder.hpp index 5bf36a940..c9bc32d86 100644 --- a/src/boost/boost/algorithm/string/detail/finder.hpp +++ b/src/boost/boost/algorithm/string/detail/finder.hpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include #include @@ -127,8 +127,8 @@ namespace boost { if( boost::empty(m_Search) ) return result_type( End, End ); - typedef BOOST_STRING_TYPENAME boost::detail:: - iterator_traits::iterator_category category; + typedef BOOST_STRING_TYPENAME + std::iterator_traits::iterator_category category; return findit( Begin, End, category() ); } @@ -344,9 +344,8 @@ namespace boost { typedef iterator_range result_type; input_iterator_type It=Begin; - for( - unsigned int Index=0; - Index::iterator_category category; + typedef BOOST_STRING_TYPENAME + std::iterator_traits::iterator_category category; return ::boost::algorithm::detail::find_head_impl( Begin, End, N, category() ); } @@ -397,10 +396,12 @@ namespace boost { input_iterator_type It2=Begin; // Advance It2 by N increments - for( Index=0; Index result_type; input_iterator_type It=End; - for( - unsigned int Index=0; - Index::iterator_category category; + typedef BOOST_STRING_TYPENAME + std::iterator_traits::iterator_category category; return ::boost::algorithm::detail::find_tail_impl( Begin, End, N, category() ); } diff --git a/src/boost/boost/algorithm/string/detail/formatter.hpp b/src/boost/boost/algorithm/string/detail/formatter.hpp index 9fd16e2f3..98c051b39 100644 --- a/src/boost/boost/algorithm/string/detail/formatter.hpp +++ b/src/boost/boost/algorithm/string/detail/formatter.hpp @@ -42,7 +42,7 @@ namespace boost { m_Format(::boost::begin(Format), ::boost::end(Format)) {} // Operation -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) template result_type& operator()(const Range2T&) { diff --git a/src/boost/boost/algorithm/string/find_format.hpp b/src/boost/boost/algorithm/string/find_format.hpp index deb4bd9b4..97549edba 100644 --- a/src/boost/boost/algorithm/string/find_format.hpp +++ b/src/boost/boost/algorithm/string/find_format.hpp @@ -12,7 +12,6 @@ #define BOOST_STRING_FIND_FORMAT_HPP #include -#include #include #include #include @@ -40,7 +39,7 @@ namespace boost { this substring and replace it in the input. The result is a modified copy of the input. It is returned as a sequence or copied to the output iterator. - + \param Output An output iterator to which the result will be copied \param Input An input sequence \param Finder A Finder object used to search for a match to be replaced diff --git a/src/boost/boost/algorithm/string/formatter.hpp b/src/boost/boost/algorithm/string/formatter.hpp index 1295d6721..c05495092 100644 --- a/src/boost/boost/algorithm/string/formatter.hpp +++ b/src/boost/boost/algorithm/string/formatter.hpp @@ -11,7 +11,6 @@ #ifndef BOOST_STRING_FORMATTER_HPP #define BOOST_STRING_FORMATTER_HPP -#include #include #include #include diff --git a/src/boost/boost/align/align.hpp b/src/boost/boost/align/align.hpp new file mode 100644 index 000000000..17d91537d --- /dev/null +++ b/src/boost/boost/align/align.hpp @@ -0,0 +1,19 @@ +/* +Copyright 2014-2015 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGN_HPP +#define BOOST_ALIGN_ALIGN_HPP + +#include + +#if !defined(BOOST_NO_CXX11_STD_ALIGN) && !defined(BOOST_LIBSTDCXX_VERSION) +#include +#else +#include +#endif + +#endif diff --git a/src/boost/boost/align/aligned_alloc.hpp b/src/boost/boost/align/aligned_alloc.hpp new file mode 100644 index 000000000..bad433064 --- /dev/null +++ b/src/boost/boost/align/aligned_alloc.hpp @@ -0,0 +1,47 @@ +/* +Copyright 2014-2015 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNED_ALLOC_HPP +#define BOOST_ALIGN_ALIGNED_ALLOC_HPP + +#include + +#if defined(BOOST_HAS_UNISTD_H) +#include +#endif + +#if defined(__APPLE__) || defined(__APPLE_CC__) || defined(macintosh) +#include +#endif + +#if defined(BOOST_ALIGN_USE_ALIGN) +#include +#elif defined(BOOST_ALIGN_USE_NEW) +#include +#elif defined(_MSC_VER) && !defined(UNDER_CE) +#include +#elif defined(__MINGW32__) && (__MSVCRT_VERSION__ >= 0x0700) +#include +#elif defined(__MINGW32__) +#include +#elif MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 +#include +#elif MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 +#include +#elif defined(__ANDROID__) +#include +#elif defined(__SunOS_5_11) || defined(__SunOS_5_12) +#include +#elif defined(sun) || defined(__sun) +#include +#elif defined(_POSIX_VERSION) +#include +#else +#include +#endif + +#endif diff --git a/src/boost/boost/align/alignment_of.hpp b/src/boost/boost/align/alignment_of.hpp new file mode 100644 index 000000000..5483cf373 --- /dev/null +++ b/src/boost/boost/align/alignment_of.hpp @@ -0,0 +1,54 @@ +/* +Copyright 2014-2016 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNMENT_OF_HPP +#define BOOST_ALIGN_ALIGNMENT_OF_HPP + +#include +#include + +#if defined(_MSC_VER) && defined(__clang__) +#include +#elif defined(BOOST_MSVC) +#include +#elif defined(__GNUC__) && defined(__unix__) && !defined(__LP64__) +#include +#elif defined(BOOST_CLANG) && !defined(__x86_64__) +#include +#elif !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#include +#elif defined(__ghs__) && (__GHS_VERSION_NUMBER >= 600) +#include +#elif defined(BOOST_CODEGEARC) +#include +#elif defined(BOOST_CLANG) +#include +#elif __GNUC__ > 4 +#include +#elif (__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) +#include +#else +#include +#endif + +namespace boost { +namespace alignment { + +template +struct alignment_of + : detail::alignment_of::type>::type { }; + +#if !defined(BOOST_NO_CXX14_VARIABLE_TEMPLATES) +template +constexpr std::size_t alignment_of_v = alignment_of::value; +#endif + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/alignment_of_forward.hpp b/src/boost/boost/align/alignment_of_forward.hpp new file mode 100644 index 000000000..87d2c29da --- /dev/null +++ b/src/boost/boost/align/alignment_of_forward.hpp @@ -0,0 +1,20 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNMENT_OF_FORWARD_HPP +#define BOOST_ALIGN_ALIGNMENT_OF_FORWARD_HPP + +namespace boost { +namespace alignment { + +template +struct alignment_of; + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/align.hpp b/src/boost/boost/align/detail/align.hpp new file mode 100644 index 000000000..42b29fbeb --- /dev/null +++ b/src/boost/boost/align/detail/align.hpp @@ -0,0 +1,38 @@ +/* +Copyright 2014-2020 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGN_HPP +#define BOOST_ALIGN_DETAIL_ALIGN_HPP + +#include +#include + +namespace boost { +namespace alignment { + +inline void* +align(std::size_t alignment, std::size_t size, void*& ptr, + std::size_t& space) +{ + BOOST_ASSERT(boost::alignment::detail::is_alignment(alignment)); + if (size <= space) { + char* p = reinterpret_cast(~(alignment - 1) & + (reinterpret_cast(ptr) + alignment - 1)); + std::size_t n = p - static_cast(ptr); + if (n <= space - size) { + ptr = p; + space -= n; + return p; + } + } + return 0; +} + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/align_cxx11.hpp b/src/boost/boost/align/detail/align_cxx11.hpp new file mode 100644 index 000000000..59ae267f3 --- /dev/null +++ b/src/boost/boost/align/detail/align_cxx11.hpp @@ -0,0 +1,21 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGN_CXX11_HPP +#define BOOST_ALIGN_DETAIL_ALIGN_CXX11_HPP + +#include + +namespace boost { +namespace alignment { + +using std::align; + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/aligned_alloc.hpp b/src/boost/boost/align/detail/aligned_alloc.hpp new file mode 100644 index 000000000..e940ef970 --- /dev/null +++ b/src/boost/boost/align/detail/aligned_alloc.hpp @@ -0,0 +1,52 @@ +/* +Copyright 2014-2015 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_HPP + +#include +#include +#include +#include +#include + +namespace boost { +namespace alignment { + +inline void* +aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT +{ + BOOST_ASSERT(detail::is_alignment(alignment)); + enum { + N = alignment_of::value + }; + if (alignment < N) { + alignment = N; + } + std::size_t n = size + alignment - N; + void* p = std::malloc(sizeof(void*) + n); + if (p) { + void* r = static_cast(p) + sizeof(void*); + (void)boost::alignment::align(alignment, size, r, n); + *(static_cast(r) - 1) = p; + p = r; + } + return p; +} + +inline void +aligned_free(void* ptr) BOOST_NOEXCEPT +{ + if (ptr) { + std::free(*(static_cast(ptr) - 1)); + } +} + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/aligned_alloc_android.hpp b/src/boost/boost/align/detail/aligned_alloc_android.hpp new file mode 100644 index 000000000..1fd1ff5e7 --- /dev/null +++ b/src/boost/boost/align/detail/aligned_alloc_android.hpp @@ -0,0 +1,34 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_ANDROID_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_ANDROID_HPP + +#include +#include +#include + +namespace boost { +namespace alignment { + +inline void* +aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT +{ + BOOST_ASSERT(detail::is_alignment(alignment)); + return ::memalign(alignment, size); +} + +inline void +aligned_free(void* ptr) BOOST_NOEXCEPT +{ + ::free(ptr); +} + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/aligned_alloc_macos.hpp b/src/boost/boost/align/detail/aligned_alloc_macos.hpp new file mode 100644 index 000000000..25a51cf04 --- /dev/null +++ b/src/boost/boost/align/detail/aligned_alloc_macos.hpp @@ -0,0 +1,44 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MACOS_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MACOS_HPP + +#include +#include +#include + +namespace boost { +namespace alignment { + +inline void* +aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT +{ + BOOST_ASSERT(detail::is_alignment(alignment)); + if (size == 0) { + return 0; + } + if (alignment < sizeof(void*)) { + alignment = sizeof(void*); + } + void* p; + if (::posix_memalign(&p, alignment, size) != 0) { + p = 0; + } + return p; +} + +inline void +aligned_free(void* ptr) BOOST_NOEXCEPT +{ + ::free(ptr); +} + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/aligned_alloc_mingw.hpp b/src/boost/boost/align/detail/aligned_alloc_mingw.hpp new file mode 100644 index 000000000..75814eac9 --- /dev/null +++ b/src/boost/boost/align/detail/aligned_alloc_mingw.hpp @@ -0,0 +1,34 @@ +/* +Copyright 2020 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MINGW_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MINGW_HPP + +#include +#include +#include + +namespace boost { +namespace alignment { + +inline void* +aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT +{ + BOOST_ASSERT(detail::is_alignment(alignment)); + return ::__mingw_aligned_malloc(size, alignment); +} + +inline void +aligned_free(void* ptr) BOOST_NOEXCEPT +{ + ::__mingw_aligned_free(ptr); +} + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/aligned_alloc_msvc.hpp b/src/boost/boost/align/detail/aligned_alloc_msvc.hpp new file mode 100644 index 000000000..99e898f39 --- /dev/null +++ b/src/boost/boost/align/detail/aligned_alloc_msvc.hpp @@ -0,0 +1,34 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MSVC_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MSVC_HPP + +#include +#include +#include + +namespace boost { +namespace alignment { + +inline void* +aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT +{ + BOOST_ASSERT(detail::is_alignment(alignment)); + return ::_aligned_malloc(size, alignment); +} + +inline void +aligned_free(void* ptr) BOOST_NOEXCEPT +{ + ::_aligned_free(ptr); +} + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/aligned_alloc_new.hpp b/src/boost/boost/align/detail/aligned_alloc_new.hpp new file mode 100644 index 000000000..ca330b032 --- /dev/null +++ b/src/boost/boost/align/detail/aligned_alloc_new.hpp @@ -0,0 +1,52 @@ +/* +Copyright 2014-2015 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_NEW_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_NEW_HPP + +#include +#include +#include +#include +#include + +namespace boost { +namespace alignment { + +inline void* +aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT +{ + BOOST_ASSERT(detail::is_alignment(alignment)); + enum { + N = alignment_of::value + }; + if (alignment < N) { + alignment = N; + } + std::size_t n = size + alignment - N; + void* p = ::operator new(sizeof(void*) + n, std::nothrow); + if (p) { + void* r = static_cast(p) + sizeof(void*); + (void)boost::alignment::align(alignment, size, r, n); + *(static_cast(r) - 1) = p; + p = r; + } + return p; +} + +inline void +aligned_free(void* ptr) BOOST_NOEXCEPT +{ + if (ptr) { + ::operator delete(*(static_cast(ptr) - 1)); + } +} + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/aligned_alloc_posix.hpp b/src/boost/boost/align/detail/aligned_alloc_posix.hpp new file mode 100644 index 000000000..30b7e9179 --- /dev/null +++ b/src/boost/boost/align/detail/aligned_alloc_posix.hpp @@ -0,0 +1,41 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_POSIX_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_POSIX_HPP + +#include +#include +#include + +namespace boost { +namespace alignment { + +inline void* +aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT +{ + BOOST_ASSERT(detail::is_alignment(alignment)); + if (alignment < sizeof(void*)) { + alignment = sizeof(void*); + } + void* p; + if (::posix_memalign(&p, alignment, size) != 0) { + p = 0; + } + return p; +} + +inline void +aligned_free(void* ptr) BOOST_NOEXCEPT +{ + ::free(ptr); +} + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/aligned_alloc_sunos.hpp b/src/boost/boost/align/detail/aligned_alloc_sunos.hpp new file mode 100644 index 000000000..186c68784 --- /dev/null +++ b/src/boost/boost/align/detail/aligned_alloc_sunos.hpp @@ -0,0 +1,34 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_SUNOS_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_SUNOS_HPP + +#include +#include +#include + +namespace boost { +namespace alignment { + +inline void* +aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT +{ + BOOST_ASSERT(detail::is_alignment(alignment)); + return ::memalign(alignment, size); +} + +inline void +aligned_free(void* ptr) BOOST_NOEXCEPT +{ + ::free(ptr); +} + +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/alignment_of.hpp b/src/boost/boost/align/detail/alignment_of.hpp new file mode 100644 index 000000000..147410b29 --- /dev/null +++ b/src/boost/boost/align/detail/alignment_of.hpp @@ -0,0 +1,31 @@ +/* +Copyright 2014-2015 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_HPP + +#include + +namespace boost { +namespace alignment { +namespace detail { + +template +struct offset_value { + char value; + T object; +}; + +template +struct alignment_of + : min_size) - sizeof(T)> { }; + +} /* detail */ +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/alignment_of_clang.hpp b/src/boost/boost/align/detail/alignment_of_clang.hpp new file mode 100644 index 000000000..7bda00299 --- /dev/null +++ b/src/boost/boost/align/detail/alignment_of_clang.hpp @@ -0,0 +1,26 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CLANG_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CLANG_HPP + +#include +#include + +namespace boost { +namespace alignment { +namespace detail { + +template +struct alignment_of + : integral_constant { }; + +} /* detail */ +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/alignment_of_codegear.hpp b/src/boost/boost/align/detail/alignment_of_codegear.hpp new file mode 100644 index 000000000..6cac7b822 --- /dev/null +++ b/src/boost/boost/align/detail/alignment_of_codegear.hpp @@ -0,0 +1,26 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CODEGEAR_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CODEGEAR_HPP + +#include +#include + +namespace boost { +namespace alignment { +namespace detail { + +template +struct alignment_of + : integral_constant { }; + +} /* detail */ +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/alignment_of_cxx11.hpp b/src/boost/boost/align/detail/alignment_of_cxx11.hpp new file mode 100644 index 000000000..93dad019c --- /dev/null +++ b/src/boost/boost/align/detail/alignment_of_cxx11.hpp @@ -0,0 +1,23 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CXX11_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CXX11_HPP + +#include + +namespace boost { +namespace alignment { +namespace detail { + +using std::alignment_of; + +} /* detail */ +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/alignment_of_gcc.hpp b/src/boost/boost/align/detail/alignment_of_gcc.hpp new file mode 100644 index 000000000..2b716c076 --- /dev/null +++ b/src/boost/boost/align/detail/alignment_of_gcc.hpp @@ -0,0 +1,26 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_GCC_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_GCC_HPP + +#include +#include + +namespace boost { +namespace alignment { +namespace detail { + +template +struct alignment_of + : integral_constant { }; + +} /* detail */ +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/alignment_of_msvc.hpp b/src/boost/boost/align/detail/alignment_of_msvc.hpp new file mode 100644 index 000000000..0a6e7ecff --- /dev/null +++ b/src/boost/boost/align/detail/alignment_of_msvc.hpp @@ -0,0 +1,32 @@ +/* +Copyright 2014-2015 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_MSVC_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_MSVC_HPP + +#include + +namespace boost { +namespace alignment { +namespace detail { + +template +struct offset_value { + T first; + char value; + T second; +}; + +template +struct alignment_of + : min_size) - (sizeof(T) << 1)> { }; + +} /* detail */ +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/element_type.hpp b/src/boost/boost/align/detail/element_type.hpp new file mode 100644 index 000000000..bd0a70411 --- /dev/null +++ b/src/boost/boost/align/detail/element_type.hpp @@ -0,0 +1,91 @@ +/* +Copyright 2015 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ELEMENT_TYPE_HPP +#define BOOST_ALIGN_DETAIL_ELEMENT_TYPE_HPP + +#include + +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#include +#else +#include +#endif + +namespace boost { +namespace alignment { +namespace detail { + +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +using std::remove_reference; +using std::remove_all_extents; +using std::remove_cv; +#else +template +struct remove_reference { + typedef T type; +}; + +template +struct remove_reference { + typedef T type; +}; + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +template +struct remove_reference { + typedef T type; +}; +#endif + +template +struct remove_all_extents { + typedef T type; +}; + +template +struct remove_all_extents { + typedef typename remove_all_extents::type type; +}; + +template +struct remove_all_extents { + typedef typename remove_all_extents::type type; +}; + +template +struct remove_cv { + typedef T type; +}; + +template +struct remove_cv { + typedef T type; +}; + +template +struct remove_cv { + typedef T type; +}; + +template +struct remove_cv { + typedef T type; +}; +#endif + +template +struct element_type { + typedef typename remove_cv::type>::type>::type type; +}; + +} /* detail */ +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/integral_constant.hpp b/src/boost/boost/align/detail/integral_constant.hpp new file mode 100644 index 000000000..e467e3485 --- /dev/null +++ b/src/boost/boost/align/detail/integral_constant.hpp @@ -0,0 +1,53 @@ +/* +Copyright 2014-2016 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_INTEGRAL_CONSTANT_HPP +#define BOOST_ALIGN_DETAIL_INTEGRAL_CONSTANT_HPP + +#include + +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#include +#endif + +namespace boost { +namespace alignment { +namespace detail { + +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +using std::integral_constant; +using std::true_type; +using std::false_type; +#else +template +struct integral_constant { + typedef T value_type; + typedef integral_constant type; + + BOOST_CONSTEXPR operator value_type() const BOOST_NOEXCEPT { + return Value; + } + + BOOST_CONSTEXPR value_type operator()() const BOOST_NOEXCEPT { + return Value; + } + + BOOST_STATIC_CONSTEXPR T value = Value; +}; + +template +BOOST_CONSTEXPR_OR_CONST T integral_constant::value; + +typedef integral_constant true_type; +typedef integral_constant false_type; +#endif + +} /* detail */ +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/is_alignment.hpp b/src/boost/boost/align/detail/is_alignment.hpp new file mode 100644 index 000000000..0ec57c16f --- /dev/null +++ b/src/boost/boost/align/detail/is_alignment.hpp @@ -0,0 +1,28 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_IS_ALIGNMENT_HPP +#define BOOST_ALIGN_DETAIL_IS_ALIGNMENT_HPP + +#include +#include + +namespace boost { +namespace alignment { +namespace detail { + +BOOST_CONSTEXPR inline bool +is_alignment(std::size_t value) BOOST_NOEXCEPT +{ + return (value > 0) && ((value & (value - 1)) == 0); +} + +} /* detail */ +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/align/detail/min_size.hpp b/src/boost/boost/align/detail/min_size.hpp new file mode 100644 index 000000000..688d6cf00 --- /dev/null +++ b/src/boost/boost/align/detail/min_size.hpp @@ -0,0 +1,26 @@ +/* +Copyright 2014 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_MIN_SIZE_HPP +#define BOOST_ALIGN_DETAIL_MIN_SIZE_HPP + +#include +#include + +namespace boost { +namespace alignment { +namespace detail { + +template +struct min_size + : integral_constant { }; + +} /* detail */ +} /* alignment */ +} /* boost */ + +#endif diff --git a/src/boost/boost/array.hpp b/src/boost/boost/array.hpp index fdbe00d8a..dbbb5a2c2 100644 --- a/src/boost/boost/array.hpp +++ b/src/boost/boost/array.hpp @@ -41,13 +41,12 @@ #endif #include +#include #include #include +#include #include -#include -// Handles broken standard libraries better than -#include #include #include @@ -183,7 +182,7 @@ namespace boost { // check range (may be private because it is static) static BOOST_CONSTEXPR bool rangecheck (size_type i) { - return i > size() ? boost::throw_exception(std::out_of_range ("array<>: index out of range")), true : true; + return i >= size() ? boost::throw_exception(std::out_of_range ("array<>: index out of range")), true : true; } }; diff --git a/src/boost/boost/assert/source_location.hpp b/src/boost/boost/assert/source_location.hpp new file mode 100644 index 000000000..632055bc1 --- /dev/null +++ b/src/boost/boost/assert/source_location.hpp @@ -0,0 +1,192 @@ +#ifndef BOOST_ASSERT_SOURCE_LOCATION_HPP_INCLUDED +#define BOOST_ASSERT_SOURCE_LOCATION_HPP_INCLUDED + +// http://www.boost.org/libs/assert +// +// Copyright 2019, 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// http://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(__cpp_lib_source_location) && __cpp_lib_source_location >= 201907L +# include +#endif + +namespace boost +{ + +struct source_location +{ +private: + + char const * file_; + char const * function_; + boost::uint_least32_t line_; + boost::uint_least32_t column_; + +public: + + BOOST_CONSTEXPR source_location() BOOST_NOEXCEPT: file_( "" ), function_( "" ), line_( 0 ), column_( 0 ) + { + } + + BOOST_CONSTEXPR source_location( char const * file, boost::uint_least32_t ln, char const * function, boost::uint_least32_t col = 0 ) BOOST_NOEXCEPT: file_( file ), function_( function ), line_( ln ), column_( col ) + { + } + +#if defined(__cpp_lib_source_location) && __cpp_lib_source_location >= 201907L + + BOOST_CONSTEXPR source_location( std::source_location const& loc ) BOOST_NOEXCEPT: file_( loc.file_name() ), function_( loc.function_name() ), line_( loc.line() ), column_( loc.column() ) + { + } + +#endif + + BOOST_CONSTEXPR char const * file_name() const BOOST_NOEXCEPT + { + return file_; + } + + BOOST_CONSTEXPR char const * function_name() const BOOST_NOEXCEPT + { + return function_; + } + + BOOST_CONSTEXPR boost::uint_least32_t line() const BOOST_NOEXCEPT + { + return line_; + } + + BOOST_CONSTEXPR boost::uint_least32_t column() const BOOST_NOEXCEPT + { + return column_; + } + +#if defined(BOOST_MSVC) +# pragma warning( push ) +# pragma warning( disable: 4996 ) +#endif + +#if ( defined(_MSC_VER) && _MSC_VER < 1900 ) || ( defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) ) +# define BOOST_ASSERT_SNPRINTF(buffer, format, arg) std::sprintf(buffer, format, arg) +#else +# define BOOST_ASSERT_SNPRINTF(buffer, format, arg) std::snprintf(buffer, sizeof(buffer)/sizeof(buffer[0]), format, arg) +#endif + + std::string to_string() const + { + unsigned long ln = line(); + + if( ln == 0 ) + { + return "(unknown source location)"; + } + + std::string r = file_name(); + + char buffer[ 16 ]; + + BOOST_ASSERT_SNPRINTF( buffer, ":%lu", ln ); + r += buffer; + + unsigned long co = column(); + + if( co ) + { + BOOST_ASSERT_SNPRINTF( buffer, ":%lu", co ); + r += buffer; + } + + char const* fn = function_name(); + + if( *fn != 0 ) + { + r += " in function '"; + r += fn; + r += '\''; + } + + return r; + } + +#undef BOOST_ASSERT_SNPRINTF + +#if defined(BOOST_MSVC) +# pragma warning( pop ) +#endif + + inline friend bool operator==( source_location const& s1, source_location const& s2 ) BOOST_NOEXCEPT + { + return std::strcmp( s1.file_, s2.file_ ) == 0 && std::strcmp( s1.function_, s2.function_ ) == 0 && s1.line_ == s2.line_ && s1.column_ == s2.column_; + } + + inline friend bool operator!=( source_location const& s1, source_location const& s2 ) BOOST_NOEXCEPT + { + return !( s1 == s2 ); + } +}; + +template std::basic_ostream & operator<<( std::basic_ostream & os, source_location const & loc ) +{ + os << loc.to_string(); + return os; +} + +} // namespace boost + +#if defined(BOOST_DISABLE_CURRENT_LOCATION) + +# define BOOST_CURRENT_LOCATION ::boost::source_location() + +#elif defined(BOOST_MSVC) && BOOST_MSVC >= 1926 + +// std::source_location::current() is available in -std:c++20, but fails with consteval errors before 19.31, and doesn't produce +// the correct result under 19.31, so prefer the built-ins +# define BOOST_CURRENT_LOCATION ::boost::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION(), __builtin_COLUMN()) + +#elif defined(BOOST_MSVC) + +// __LINE__ is not a constant expression under /ZI (edit and continue) for 1925 and before + +# define BOOST_CURRENT_LOCATION_IMPL_1(x) BOOST_CURRENT_LOCATION_IMPL_2(x) +# define BOOST_CURRENT_LOCATION_IMPL_2(x) (x##0 / 10) + +# define BOOST_CURRENT_LOCATION ::boost::source_location(__FILE__, BOOST_CURRENT_LOCATION_IMPL_1(__LINE__), "") + +#elif defined(__cpp_lib_source_location) && __cpp_lib_source_location >= 201907L && !defined(__NVCC__) + +// Under nvcc, __builtin_source_location is not constexpr +// https://github.com/boostorg/assert/issues/32 + +# define BOOST_CURRENT_LOCATION ::boost::source_location(::std::source_location::current()) + +#elif defined(BOOST_CLANG) && BOOST_CLANG_VERSION >= 90000 + +# define BOOST_CURRENT_LOCATION ::boost::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION(), __builtin_COLUMN()) + +#elif defined(BOOST_GCC) && BOOST_GCC >= 70000 + +// The built-ins are available in 4.8+, but are not constant expressions until 7 +# define BOOST_CURRENT_LOCATION ::boost::source_location(__builtin_FILE(), __builtin_LINE(), __builtin_FUNCTION()) + +#elif defined(BOOST_GCC) && BOOST_GCC >= 50000 + +// __PRETTY_FUNCTION__ is allowed outside functions under GCC, but 4.x suffers from codegen bugs +# define BOOST_CURRENT_LOCATION ::boost::source_location(__FILE__, __LINE__, __PRETTY_FUNCTION__) + +#else + +// __func__ macros aren't allowed outside functions, but BOOST_CURRENT_LOCATION is +# define BOOST_CURRENT_LOCATION ::boost::source_location(__FILE__, __LINE__, "") + +#endif + +#endif // #ifndef BOOST_ASSERT_SOURCE_LOCATION_HPP_INCLUDED diff --git a/src/boost/boost/atomic/atomic_ref.hpp b/src/boost/boost/atomic/atomic_ref.hpp new file mode 100644 index 000000000..a28d0d7dc --- /dev/null +++ b/src/boost/boost/atomic/atomic_ref.hpp @@ -0,0 +1,98 @@ +/* + * 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) + * + * Copyright (c) 2020-2021 Andrey Semashev + */ +/*! + * \file atomic/atomic_ref.hpp + * + * This header contains definition of \c atomic_ref template. + */ + +#ifndef BOOST_ATOMIC_ATOMIC_REF_HPP_INCLUDED_ +#define BOOST_ATOMIC_ATOMIC_REF_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { + +//! Atomic reference to external object +template< typename T > +class atomic_ref : + public atomics::detail::base_atomic_ref< T, typename atomics::detail::classify< T >::type, false > +{ +private: + typedef atomics::detail::base_atomic_ref< T, typename atomics::detail::classify< T >::type, false > base_type; + typedef typename base_type::value_arg_type value_arg_type; + +public: + typedef typename base_type::value_type value_type; + + BOOST_STATIC_ASSERT_MSG(sizeof(value_type) > 0u, "boost::atomic_ref requires T to be a complete type"); +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_IS_TRIVIALLY_COPYABLE) + BOOST_STATIC_ASSERT_MSG(atomics::detail::is_trivially_copyable< value_type >::value, "boost::atomic_ref requires T to be a trivially copyable type"); +#endif + +private: + typedef typename base_type::storage_type storage_type; + +public: + BOOST_DEFAULTED_FUNCTION(atomic_ref(atomic_ref const& that) BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL : base_type(static_cast< base_type const& >(that)) {}) + BOOST_FORCEINLINE explicit atomic_ref(value_type& v) BOOST_NOEXCEPT : base_type(v) + { + // Check that referenced object alignment satisfies required alignment + BOOST_ASSERT((((atomics::detail::uintptr_t)this->m_value) & (base_type::required_alignment - 1u)) == 0u); + } + + BOOST_FORCEINLINE value_type operator= (value_arg_type v) const BOOST_NOEXCEPT + { + this->store(v); + return v; + } + + BOOST_FORCEINLINE operator value_type() const BOOST_NOEXCEPT + { + return this->load(); + } + + BOOST_DELETED_FUNCTION(atomic_ref& operator= (atomic_ref const&)) +}; + +#if !defined(BOOST_NO_CXX17_DEDUCTION_GUIDES) +template< typename T > +atomic_ref(T&) -> atomic_ref< T >; +#endif // !defined(BOOST_NO_CXX17_DEDUCTION_GUIDES) + +//! Atomic reference factory function +template< typename T > +BOOST_FORCEINLINE atomic_ref< T > make_atomic_ref(T& value) BOOST_NOEXCEPT +{ + return atomic_ref< T >(value); +} + +} // namespace atomics + +using atomics::atomic_ref; +using atomics::make_atomic_ref; + +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_ATOMIC_REF_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/capabilities.hpp b/src/boost/boost/atomic/capabilities.hpp new file mode 100644 index 000000000..690225702 --- /dev/null +++ b/src/boost/boost/atomic/capabilities.hpp @@ -0,0 +1,21 @@ +/* + * 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) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/capabilities.hpp + * + * This header defines feature capabilities macros. + */ + +#ifndef BOOST_ATOMIC_CAPABILITIES_HPP_INCLUDED_ +#define BOOST_ATOMIC_CAPABILITIES_HPP_INCLUDED_ + +#include +#include +#include + +#endif // BOOST_ATOMIC_CAPABILITIES_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/addressof.hpp b/src/boost/boost/atomic/detail/addressof.hpp new file mode 100644 index 000000000..0a1fbedd2 --- /dev/null +++ b/src/boost/boost/atomic/detail/addressof.hpp @@ -0,0 +1,65 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/addressof.hpp + * + * This header defines \c addressof helper function. It is similar to \c boost::addressof but it is more + * lightweight and also contains a workaround for some compiler warnings. + */ + +#ifndef BOOST_ATOMIC_DETAIL_ADDRESSOF_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_ADDRESSOF_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// Detection logic is based on boost/core/addressof.hpp +#if defined(BOOST_MSVC_FULL_VER) && BOOST_MSVC_FULL_VER >= 190024215 +#define BOOST_ATOMIC_DETAIL_HAS_BUILTIN_ADDRESSOF +#elif defined(BOOST_GCC) && BOOST_GCC >= 70000 +#define BOOST_ATOMIC_DETAIL_HAS_BUILTIN_ADDRESSOF +#elif defined(__has_builtin) +#if __has_builtin(__builtin_addressof) +#define BOOST_ATOMIC_DETAIL_HAS_BUILTIN_ADDRESSOF +#endif +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename T > +BOOST_FORCEINLINE +#if defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_ADDRESSOF) +BOOST_CONSTEXPR +#endif +T* addressof(T& value) BOOST_NOEXCEPT +{ +#if defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_ADDRESSOF) + return __builtin_addressof(value); +#else + // Note: The point of using a local struct as the intermediate type instead of char is to avoid gcc warnings + // if T is a const volatile char*: + // warning: casting 'const volatile char* const' to 'const volatile char&' does not dereference pointer + // The local struct makes sure T is not related to the cast target type. + struct opaque_type; + return reinterpret_cast< T* >(&const_cast< opaque_type& >(reinterpret_cast< const volatile opaque_type& >(value))); +#endif +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_ADDRESSOF_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/aligned_variable.hpp b/src/boost/boost/atomic/detail/aligned_variable.hpp new file mode 100644 index 000000000..6794f0b8e --- /dev/null +++ b/src/boost/boost/atomic/detail/aligned_variable.hpp @@ -0,0 +1,57 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/aligned_variable.hpp + * + * This header defines a convenience macro for declaring aligned variables + */ + +#ifndef BOOST_ATOMIC_DETAIL_ALIGNED_VARIABLE_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_ALIGNED_VARIABLE_HPP_INCLUDED_ + +#include +#if defined(BOOST_ATOMIC_DETAIL_NO_CXX11_ALIGNAS) +#include +#include +#endif +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_ALIGNAS) + +#define BOOST_ATOMIC_DETAIL_ALIGNED_VAR(var_alignment, var_type, var_name) \ + alignas(var_alignment) var_type var_name + +#define BOOST_ATOMIC_DETAIL_ALIGNED_VAR_TPL(var_alignment, var_type, var_name) \ + alignas(var_alignment) var_type var_name + +#else // !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_ALIGNAS) + +// Note: Some compilers cannot use constant expressions in alignment attributes or alignas, so we have to use the union trick +#define BOOST_ATOMIC_DETAIL_ALIGNED_VAR(var_alignment, var_type, var_name) \ + union \ + { \ + var_type var_name; \ + boost::type_with_alignment< var_alignment >::type BOOST_JOIN(var_name, _aligner); \ + } + +#define BOOST_ATOMIC_DETAIL_ALIGNED_VAR_TPL(var_alignment, var_type, var_name) \ + union \ + { \ + var_type var_name; \ + typename boost::type_with_alignment< var_alignment >::type BOOST_JOIN(var_name, _aligner); \ + } + +#endif // !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_ALIGNAS) + +#include + +#endif // BOOST_ATOMIC_DETAIL_ALIGNED_VARIABLE_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/atomic_flag_impl.hpp b/src/boost/boost/atomic/detail/atomic_flag_impl.hpp new file mode 100644 index 000000000..d6026a98f --- /dev/null +++ b/src/boost/boost/atomic/detail/atomic_flag_impl.hpp @@ -0,0 +1,129 @@ +/* + * 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) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014, 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/atomic_flag_impl.hpp + * + * This header contains implementation of \c atomic_flag. + */ + +#ifndef BOOST_ATOMIC_DETAIL_ATOMIC_FLAG_IMPL_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_ATOMIC_FLAG_IMPL_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +/* + * IMPLEMENTATION NOTE: All interface functions MUST be declared with BOOST_FORCEINLINE, + * see comment for convert_memory_order_to_gcc in gcc_atomic_memory_order_utils.hpp. + */ + +namespace boost { +namespace atomics { +namespace detail { + +#if defined(BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_UNION_INIT) || defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) +#define BOOST_ATOMIC_NO_ATOMIC_FLAG_INIT +#else +#define BOOST_ATOMIC_FLAG_INIT {} +#endif + +//! Atomic flag implementation +template< bool IsInterprocess > +struct atomic_flag_impl +{ + // Prefer 4-byte storage as most platforms support waiting/notifying operations without a lock pool for 32-bit integers + typedef atomics::detail::core_operations< 4u, false, IsInterprocess > core_operations; + typedef atomics::detail::wait_operations< core_operations > wait_operations; + typedef typename core_operations::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = core_operations::is_always_lock_free; + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = wait_operations::always_has_native_wait_notify; + + BOOST_ATOMIC_DETAIL_ALIGNED_VAR_TPL(core_operations::storage_alignment, storage_type, m_storage); + + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT atomic_flag_impl() BOOST_NOEXCEPT : m_storage(0u) + { + } + + BOOST_FORCEINLINE bool is_lock_free() const volatile BOOST_NOEXCEPT + { + return is_always_lock_free; + } + + BOOST_FORCEINLINE bool has_native_wait_notify() const volatile BOOST_NOEXCEPT + { + return wait_operations::has_native_wait_notify(m_storage); + } + + BOOST_FORCEINLINE bool test(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + return !!core_operations::load(m_storage, order); + } + + BOOST_FORCEINLINE bool test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return core_operations::test_and_set(m_storage, order); + } + + BOOST_FORCEINLINE void clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + core_operations::clear(m_storage, order); + } + + BOOST_FORCEINLINE bool wait(bool old_val, memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return !!wait_operations::wait(m_storage, static_cast< storage_type >(old_val), order); + } + + BOOST_FORCEINLINE void notify_one() volatile BOOST_NOEXCEPT + { + wait_operations::notify_one(m_storage); + } + + BOOST_FORCEINLINE void notify_all() volatile BOOST_NOEXCEPT + { + wait_operations::notify_all(m_storage); + } + + BOOST_DELETED_FUNCTION(atomic_flag_impl(atomic_flag_impl const&)) + BOOST_DELETED_FUNCTION(atomic_flag_impl& operator= (atomic_flag_impl const&)) +}; + +#if defined(BOOST_NO_CXX17_INLINE_VARIABLES) +template< bool IsInterprocess > +BOOST_CONSTEXPR_OR_CONST bool atomic_flag_impl< IsInterprocess >::is_always_lock_free; +template< bool IsInterprocess > +BOOST_CONSTEXPR_OR_CONST bool atomic_flag_impl< IsInterprocess >::always_has_native_wait_notify; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_ATOMIC_FLAG_IMPL_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/atomic_impl.hpp b/src/boost/boost/atomic/detail/atomic_impl.hpp new file mode 100644 index 000000000..1cd6fcc2f --- /dev/null +++ b/src/boost/boost/atomic/detail/atomic_impl.hpp @@ -0,0 +1,1265 @@ +/* + * 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) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014-2020 Andrey Semashev + */ +/*! + * \file atomic/detail/atomic_impl.hpp + * + * This header contains implementation of \c atomic template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_ATOMIC_IMPL_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_ATOMIC_IMPL_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if !defined(BOOST_ATOMIC_NO_FLOATING_POINT) +#include +#include +#include +#endif +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_UNION_INIT) && !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_BITWISE_CAST) +#define BOOST_ATOMIC_DETAIL_CONSTEXPR_ATOMIC_CTOR BOOST_CONSTEXPR +#else +#define BOOST_ATOMIC_DETAIL_CONSTEXPR_ATOMIC_CTOR +#endif + +/* + * IMPLEMENTATION NOTE: All interface functions MUST be declared with BOOST_FORCEINLINE, + * see comment for convert_memory_order_to_gcc in gcc_atomic_memory_order_utils.hpp. + */ + +namespace boost { +namespace atomics { +namespace detail { + +template< typename T, bool Signed, bool Interprocess > +class base_atomic_common +{ +public: + typedef T value_type; + +protected: + typedef atomics::detail::core_operations< storage_size_of< value_type >::value, Signed, Interprocess > core_operations; + typedef atomics::detail::wait_operations< core_operations > wait_operations; + typedef typename atomics::detail::conditional< sizeof(value_type) <= sizeof(void*), value_type, value_type const& >::type value_arg_type; + typedef typename core_operations::storage_type storage_type; + +protected: + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment ? core_operations::storage_alignment : atomics::detail::alignment_of< value_type >::value; + +public: + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = core_operations::is_always_lock_free; + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = wait_operations::always_has_native_wait_notify; + +protected: + BOOST_ATOMIC_DETAIL_ALIGNED_VAR_TPL(storage_alignment, storage_type, m_storage); + +public: + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT base_atomic_common() BOOST_NOEXCEPT : m_storage() + { + } + + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT explicit base_atomic_common(storage_type v) BOOST_NOEXCEPT : m_storage(v) + { + } + + BOOST_FORCEINLINE value_type& value() BOOST_NOEXCEPT { return *reinterpret_cast< value_type* >(&m_storage); } + BOOST_FORCEINLINE value_type volatile& value() volatile BOOST_NOEXCEPT { return *reinterpret_cast< volatile value_type* >(&m_storage); } + BOOST_FORCEINLINE value_type const& value() const BOOST_NOEXCEPT { return *reinterpret_cast< const value_type* >(&m_storage); } + BOOST_FORCEINLINE value_type const volatile& value() const volatile BOOST_NOEXCEPT { return *reinterpret_cast< const volatile value_type* >(&m_storage); } + +protected: + BOOST_FORCEINLINE storage_type& storage() BOOST_NOEXCEPT { return m_storage; } + BOOST_FORCEINLINE storage_type volatile& storage() volatile BOOST_NOEXCEPT { return m_storage; } + BOOST_FORCEINLINE storage_type const& storage() const BOOST_NOEXCEPT { return m_storage; } + BOOST_FORCEINLINE storage_type const volatile& storage() const volatile BOOST_NOEXCEPT { return m_storage; } + +public: + BOOST_FORCEINLINE bool is_lock_free() const volatile BOOST_NOEXCEPT + { + // C++17 requires all instances of atomic<> return a value consistent with is_always_lock_free here. + // Boost.Atomic also enforces the required alignment of the atomic storage, so we can always return is_always_lock_free. + return is_always_lock_free; + } + + BOOST_FORCEINLINE bool has_native_wait_notify() const volatile BOOST_NOEXCEPT + { + return wait_operations::has_native_wait_notify(this->storage()); + } + + BOOST_FORCEINLINE void notify_one() volatile BOOST_NOEXCEPT + { + wait_operations::notify_one(this->storage()); + } + + BOOST_FORCEINLINE void notify_all() volatile BOOST_NOEXCEPT + { + wait_operations::notify_all(this->storage()); + } +}; + +#if defined(BOOST_NO_CXX17_INLINE_VARIABLES) +template< typename T, bool Signed, bool Interprocess > +BOOST_CONSTEXPR_OR_CONST bool base_atomic_common< T, Signed, Interprocess >::is_always_lock_free; +template< typename T, bool Signed, bool Interprocess > +BOOST_CONSTEXPR_OR_CONST bool base_atomic_common< T, Signed, Interprocess >::always_has_native_wait_notify; +#endif + + +template< typename T, bool Interprocess, bool IsTriviallyDefaultConstructible = atomics::detail::is_trivially_default_constructible< T >::value > +class base_atomic_generic; + +template< typename T, bool Interprocess > +class base_atomic_generic< T, Interprocess, true > : + public base_atomic_common< T, false, Interprocess > +{ +private: + typedef base_atomic_common< T, false, Interprocess > base_type; + +protected: + typedef typename base_type::storage_type storage_type; + typedef typename base_type::value_arg_type value_arg_type; + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic_generic() BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL {}) + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_ATOMIC_CTOR explicit base_atomic_generic(value_arg_type v) BOOST_NOEXCEPT : + base_type(atomics::detail::bitwise_cast< storage_type >(v)) + { + } +}; + +template< typename T, bool Interprocess > +class base_atomic_generic< T, Interprocess, false > : + public base_atomic_common< T, false, Interprocess > +{ +private: + typedef base_atomic_common< T, false, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + +protected: + typedef typename base_type::storage_type storage_type; + typedef typename base_type::value_arg_type value_arg_type; + +public: + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_ATOMIC_CTOR explicit base_atomic_generic(value_arg_type v = value_type()) BOOST_NOEXCEPT : + base_type(atomics::detail::bitwise_cast< storage_type >(v)) + { + } +}; + + +template< typename T, typename Kind, bool Interprocess > +class base_atomic; + +//! General template. Implementation for user-defined types, such as structs, and pointers to non-object types +template< typename T, bool Interprocess > +class base_atomic< T, void, Interprocess > : + public base_atomic_generic< T, Interprocess > +{ +private: + typedef base_atomic_generic< T, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef typename base_type::storage_type storage_type; + typedef typename base_type::value_arg_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, sizeof(value_type) != sizeof(storage_type) || atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_ATOMIC_CTOR base_atomic() BOOST_NOEXCEPT_IF(atomics::detail::is_nothrow_default_constructible< value_type >::value) : base_type() + { + } + + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_ATOMIC_CTOR explicit base_atomic(value_arg_type v) BOOST_NOEXCEPT : base_type(v) + { + } + + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), atomics::detail::bitwise_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(core_operations::load(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type exchange(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::exchange(this->storage(), atomics::detail::bitwise_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE value_type wait(value_arg_type old_val, memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(wait_operations::wait(this->storage(), atomics::detail::bitwise_cast< storage_type >(old_val), order)); + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } +}; + + +//! Implementation for enums +template< typename T, bool Interprocess > +class base_atomic< T, const int, Interprocess > : + public base_atomic_common< T, false, Interprocess > +{ +private: + typedef base_atomic_common< T, false, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef typename base_type::storage_type storage_type; + typedef typename base_type::value_arg_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, sizeof(value_type) != sizeof(storage_type) || atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic() BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL {}) + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT explicit base_atomic(value_arg_type v) BOOST_NOEXCEPT : base_type(static_cast< storage_type >(v)) + { + } + + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(core_operations::load(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type exchange(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::exchange(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE value_type wait(value_arg_type old_val, memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(wait_operations::wait(this->storage(), static_cast< storage_type >(old_val), order)); + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } +}; + + +//! Implementation for integers +template< typename T, bool Interprocess > +class base_atomic< T, int, Interprocess > : + public base_atomic_common< T, atomics::detail::is_signed< T >::value, Interprocess > +{ +private: + typedef base_atomic_common< T, atomics::detail::is_signed< T >::value, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + typedef value_type difference_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef atomics::detail::extra_operations< core_operations > extra_operations; + typedef typename base_type::storage_type storage_type; + typedef value_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, sizeof(value_type) != sizeof(storage_type) || atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic() BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL {}) + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT explicit base_atomic(value_arg_type v) BOOST_NOEXCEPT : base_type(static_cast< storage_type >(v)) {} + + // Standard methods + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::integral_truncate< value_type >(core_operations::load(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(core_operations::fetch_add(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(core_operations::fetch_sub(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type exchange(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(core_operations::exchange(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE value_type fetch_and(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(core_operations::fetch_and(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type fetch_or(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(core_operations::fetch_or(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type fetch_xor(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(core_operations::fetch_xor(this->storage(), static_cast< storage_type >(v), order)); + } + + // Boost.Atomic extensions + BOOST_FORCEINLINE value_type fetch_negate(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(extra_operations::fetch_negate(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type fetch_complement(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(extra_operations::fetch_complement(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(extra_operations::add(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(extra_operations::sub(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type negate(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(extra_operations::negate(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type bitwise_and(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(extra_operations::bitwise_and(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type bitwise_or(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(extra_operations::bitwise_or(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type bitwise_xor(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(extra_operations::bitwise_xor(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type bitwise_complement(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::integral_truncate< value_type >(extra_operations::bitwise_complement(this->storage(), order)); + } + + BOOST_FORCEINLINE void opaque_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_operations::opaque_add(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE void opaque_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_operations::opaque_sub(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE void opaque_negate(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_operations::opaque_negate(this->storage(), order); + } + + BOOST_FORCEINLINE void opaque_and(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_operations::opaque_and(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE void opaque_or(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_operations::opaque_or(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE void opaque_xor(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_operations::opaque_xor(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE void opaque_complement(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_operations::opaque_complement(this->storage(), order); + } + + BOOST_FORCEINLINE bool add_and_test(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_operations::add_and_test(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool sub_and_test(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_operations::sub_and_test(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool negate_and_test(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_operations::negate_and_test(this->storage(), order); + } + + BOOST_FORCEINLINE bool and_and_test(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_operations::and_and_test(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool or_and_test(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_operations::or_and_test(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool xor_and_test(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_operations::xor_and_test(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool complement_and_test(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_operations::complement_and_test(this->storage(), order); + } + + BOOST_FORCEINLINE bool bit_test_and_set(unsigned int bit_number, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(bit_number < sizeof(value_type) * 8u); + return extra_operations::bit_test_and_set(this->storage(), bit_number, order); + } + + BOOST_FORCEINLINE bool bit_test_and_reset(unsigned int bit_number, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(bit_number < sizeof(value_type) * 8u); + return extra_operations::bit_test_and_reset(this->storage(), bit_number, order); + } + + BOOST_FORCEINLINE bool bit_test_and_complement(unsigned int bit_number, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(bit_number < sizeof(value_type) * 8u); + return extra_operations::bit_test_and_complement(this->storage(), bit_number, order); + } + + // Operators + BOOST_FORCEINLINE value_type operator++(int) volatile BOOST_NOEXCEPT + { + return fetch_add(1); + } + + BOOST_FORCEINLINE value_type operator++() volatile BOOST_NOEXCEPT + { + return add(1); + } + + BOOST_FORCEINLINE value_type operator--(int) volatile BOOST_NOEXCEPT + { + return fetch_sub(1); + } + + BOOST_FORCEINLINE value_type operator--() volatile BOOST_NOEXCEPT + { + return sub(1); + } + + BOOST_FORCEINLINE value_type operator+=(difference_type v) volatile BOOST_NOEXCEPT + { + return add(v); + } + + BOOST_FORCEINLINE value_type operator-=(difference_type v) volatile BOOST_NOEXCEPT + { + return sub(v); + } + + BOOST_FORCEINLINE value_type operator&=(value_type v) volatile BOOST_NOEXCEPT + { + return bitwise_and(v); + } + + BOOST_FORCEINLINE value_type operator|=(value_type v) volatile BOOST_NOEXCEPT + { + return bitwise_or(v); + } + + BOOST_FORCEINLINE value_type operator^=(value_type v) volatile BOOST_NOEXCEPT + { + return bitwise_xor(v); + } + + BOOST_FORCEINLINE value_type wait(value_type old_val, memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::integral_truncate< value_type >(wait_operations::wait(this->storage(), static_cast< storage_type >(old_val), order)); + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::integral_truncate< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::integral_truncate< value_type >(old_value); + return res; + } +}; + +//! Implementation for bool +template< bool Interprocess > +class base_atomic< bool, int, Interprocess > : + public base_atomic_common< bool, false, Interprocess > +{ +private: + typedef base_atomic_common< bool, false, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef typename base_type::storage_type storage_type; + typedef value_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, sizeof(value_type) != sizeof(storage_type) || atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic() BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL {}) + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT explicit base_atomic(value_arg_type v) BOOST_NOEXCEPT : base_type(static_cast< storage_type >(v)) {} + + // Standard methods + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return !!core_operations::load(this->storage(), order); + } + + BOOST_FORCEINLINE value_type exchange(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return !!core_operations::exchange(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE value_type wait(value_type old_val, memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return !!wait_operations::wait(this->storage(), static_cast< storage_type >(old_val), order); + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = !!old_value; + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = !!old_value; + return res; + } +}; + + +#if !defined(BOOST_ATOMIC_NO_FLOATING_POINT) + +//! Implementation for floating point types +template< typename T, bool Interprocess > +class base_atomic< T, float, Interprocess > : + public base_atomic_common< T, false, Interprocess > +{ +private: + typedef base_atomic_common< T, false, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + typedef value_type difference_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef atomics::detail::extra_operations< core_operations > extra_operations; + typedef atomics::detail::fp_operations< extra_operations, value_type > fp_operations; + typedef atomics::detail::extra_fp_operations< fp_operations > extra_fp_operations; + typedef typename base_type::storage_type storage_type; + typedef value_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, + atomics::detail::value_size_of< value_type >::value != sizeof(storage_type) || atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment + > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic() BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL {}) + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_ATOMIC_CTOR explicit base_atomic(value_arg_type v) BOOST_NOEXCEPT : + base_type(atomics::detail::bitwise_fp_cast< storage_type >(v)) + { + } + + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), atomics::detail::bitwise_fp_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_fp_cast< value_type >(core_operations::load(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return fp_operations::fetch_add(this->storage(), v, order); + } + + BOOST_FORCEINLINE value_type fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return fp_operations::fetch_sub(this->storage(), v, order); + } + + BOOST_FORCEINLINE value_type exchange(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::bitwise_fp_cast< value_type >(core_operations::exchange(this->storage(), atomics::detail::bitwise_fp_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + // Boost.Atomic extensions + BOOST_FORCEINLINE value_type fetch_negate(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_fp_operations::fetch_negate(this->storage(), order); + } + + BOOST_FORCEINLINE value_type add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_fp_operations::add(this->storage(), v, order); + } + + BOOST_FORCEINLINE value_type sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_fp_operations::sub(this->storage(), v, order); + } + + BOOST_FORCEINLINE value_type negate(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_fp_operations::negate(this->storage(), order); + } + + BOOST_FORCEINLINE void opaque_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_fp_operations::opaque_add(this->storage(), v, order); + } + + BOOST_FORCEINLINE void opaque_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_fp_operations::opaque_sub(this->storage(), v, order); + } + + BOOST_FORCEINLINE void opaque_negate(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_fp_operations::opaque_negate(this->storage(), order); + } + + // Operators + BOOST_FORCEINLINE value_type operator+=(difference_type v) volatile BOOST_NOEXCEPT + { + return add(v); + } + + BOOST_FORCEINLINE value_type operator-=(difference_type v) volatile BOOST_NOEXCEPT + { + return sub(v); + } + + BOOST_FORCEINLINE value_type wait(value_arg_type old_val, memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_fp_cast< value_type >(wait_operations::wait(this->storage(), atomics::detail::bitwise_fp_cast< storage_type >(old_val), order)); + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_fp_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_fp_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, atomics::detail::bitwise_fp_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_fp_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_fp_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_fp_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, atomics::detail::bitwise_fp_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_fp_cast< value_type >(old_value); + return res; + } +}; + +#endif // !defined(BOOST_ATOMIC_NO_FLOATING_POINT) + + +//! Implementation for pointers to object types +template< typename T, bool Interprocess > +class base_atomic< T*, void*, Interprocess > : + public base_atomic_common< T*, false, Interprocess > +{ +private: + typedef base_atomic_common< T*, false, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + typedef std::ptrdiff_t difference_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef atomics::detail::extra_operations< core_operations > extra_operations; + typedef typename base_type::storage_type storage_type; + typedef value_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, sizeof(value_type) != sizeof(storage_type) || atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + + // uintptr_storage_type is the minimal storage type that is enough to store pointers. The actual storage_type theoretically may be larger, + // if the target architecture only supports atomic ops on larger data. Typically, though, they are the same type. + typedef atomics::detail::uintptr_t uintptr_storage_type; + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic() BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL {}) + BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_ATOMIC_CTOR explicit base_atomic(value_arg_type v) BOOST_NOEXCEPT : + base_type(atomics::detail::bitwise_cast< uintptr_storage_type >(v)) + { + } + + // Standard methods + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), atomics::detail::bitwise_cast< uintptr_storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(static_cast< uintptr_storage_type >(core_operations::load(this->storage(), order))); + } + + BOOST_FORCEINLINE value_type fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(static_cast< uintptr_storage_type >(core_operations::fetch_add(this->storage(), static_cast< uintptr_storage_type >(v * sizeof(T)), order))); + } + + BOOST_FORCEINLINE value_type fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(static_cast< uintptr_storage_type >(core_operations::fetch_sub(this->storage(), static_cast< uintptr_storage_type >(v * sizeof(T)), order))); + } + + BOOST_FORCEINLINE value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(static_cast< uintptr_storage_type >(core_operations::exchange(this->storage(), atomics::detail::bitwise_cast< uintptr_storage_type >(v), order))); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + // Boost.Atomic extensions + BOOST_FORCEINLINE value_type add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(static_cast< uintptr_storage_type >(extra_operations::add(this->storage(), static_cast< uintptr_storage_type >(v * sizeof(T)), order))); + } + + BOOST_FORCEINLINE value_type sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(static_cast< uintptr_storage_type >(extra_operations::sub(this->storage(), static_cast< uintptr_storage_type >(v * sizeof(T)), order))); + } + + BOOST_FORCEINLINE void opaque_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_operations::opaque_add(this->storage(), static_cast< uintptr_storage_type >(v * sizeof(T)), order); + } + + BOOST_FORCEINLINE void opaque_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + extra_operations::opaque_sub(this->storage(), static_cast< uintptr_storage_type >(v * sizeof(T)), order); + } + + BOOST_FORCEINLINE bool add_and_test(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_operations::add_and_test(this->storage(), static_cast< uintptr_storage_type >(v * sizeof(T)), order); + } + + BOOST_FORCEINLINE bool sub_and_test(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return extra_operations::sub_and_test(this->storage(), static_cast< uintptr_storage_type >(v * sizeof(T)), order); + } + + // Operators + BOOST_FORCEINLINE value_type operator++(int) volatile BOOST_NOEXCEPT + { + return fetch_add(1); + } + + BOOST_FORCEINLINE value_type operator++() volatile BOOST_NOEXCEPT + { + return add(1); + } + + BOOST_FORCEINLINE value_type operator--(int) volatile BOOST_NOEXCEPT + { + return fetch_sub(1); + } + + BOOST_FORCEINLINE value_type operator--() volatile BOOST_NOEXCEPT + { + return sub(1); + } + + BOOST_FORCEINLINE value_type operator+=(difference_type v) volatile BOOST_NOEXCEPT + { + return add(v); + } + + BOOST_FORCEINLINE value_type operator-=(difference_type v) volatile BOOST_NOEXCEPT + { + return sub(v); + } + + BOOST_FORCEINLINE value_type wait(value_arg_type old_val, memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(static_cast< uintptr_storage_type >(wait_operations::wait(this->storage(), atomics::detail::bitwise_cast< uintptr_storage_type >(old_val), order))); + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_cast< uintptr_storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_cast< uintptr_storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, atomics::detail::bitwise_cast< uintptr_storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(static_cast< uintptr_storage_type >(old_value)); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) volatile BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_cast< uintptr_storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) volatile BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_cast< uintptr_storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, atomics::detail::bitwise_cast< uintptr_storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(static_cast< uintptr_storage_type >(old_value)); + return res; + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_ATOMIC_IMPl_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/atomic_ref_impl.hpp b/src/boost/boost/atomic/detail/atomic_ref_impl.hpp new file mode 100644 index 000000000..7a4fdde4b --- /dev/null +++ b/src/boost/boost/atomic/detail/atomic_ref_impl.hpp @@ -0,0 +1,1228 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/atomic_ref_impl.hpp + * + * This header contains implementation of \c atomic_ref template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_ATOMIC_REF_IMPL_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_ATOMIC_REF_IMPL_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if !defined(BOOST_ATOMIC_NO_FLOATING_POINT) +#include +#include +#include +#endif +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +/* + * IMPLEMENTATION NOTE: All interface functions MUST be declared with BOOST_FORCEINLINE, + * see comment for convert_memory_order_to_gcc in gcc_atomic_memory_order_utils.hpp. + */ + +namespace boost { +namespace atomics { +namespace detail { + +template< typename T, bool Signed, bool Interprocess > +struct is_atomic_ref_lock_free +{ + typedef T value_type; + typedef atomics::detail::core_operations< sizeof(value_type), Signed, Interprocess > core_operations; + typedef typename core_operations::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool value = sizeof(value_type) == sizeof(storage_type) && core_operations::is_always_lock_free; +}; + +template< typename T, bool Signed, bool Interprocess > +class base_atomic_ref_common +{ +public: + typedef T value_type; + +protected: + typedef typename atomics::detail::remove_cv< value_type >::type unqualified_value_type; + typedef typename atomics::detail::conditional< + atomics::detail::is_atomic_ref_lock_free< T, Signed, Interprocess >::value, + atomics::detail::core_operations< sizeof(value_type), Signed, Interprocess >, + atomics::detail::core_operations_emulated< sizeof(value_type), atomics::detail::alignment_of< value_type >::value, Signed, Interprocess > + >::type core_operations; + typedef atomics::detail::wait_operations< core_operations > wait_operations; + typedef typename atomics::detail::conditional< sizeof(value_type) <= sizeof(void*), value_type, value_type const& >::type value_arg_type; + typedef typename core_operations::storage_type storage_type; + BOOST_STATIC_ASSERT_MSG(sizeof(storage_type) == sizeof(value_type), "Boost.Atomic internal error: atomic_ref storage size doesn't match the value size"); + +public: + static BOOST_CONSTEXPR_OR_CONST std::size_t required_alignment = atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment ? core_operations::storage_alignment : atomics::detail::alignment_of< value_type >::value; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = core_operations::is_always_lock_free; + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = wait_operations::always_has_native_wait_notify; + +protected: + value_type* m_value; + +public: + BOOST_FORCEINLINE explicit base_atomic_ref_common(value_type& v) BOOST_NOEXCEPT : m_value(atomics::detail::addressof(v)) + { + BOOST_ATOMIC_DETAIL_CLEAR_PADDING(const_cast< unqualified_value_type* >(m_value)); + } + + BOOST_FORCEINLINE value_type& value() const BOOST_NOEXCEPT { return *m_value; } + +protected: + BOOST_FORCEINLINE storage_type& storage() const BOOST_NOEXCEPT + { + return *reinterpret_cast< storage_type* >(const_cast< unqualified_value_type* >(m_value)); + } + +public: + BOOST_FORCEINLINE bool is_lock_free() const BOOST_NOEXCEPT + { + // C++20 specifies that is_lock_free returns true if operations on *all* objects of the atomic_ref type are lock-free. + // This does not allow to return true or false depending on the referenced object runtime alignment. Currently, Boost.Atomic + // follows this specification, although we may support runtime alignment checking in the future. + return is_always_lock_free; + } + + BOOST_FORCEINLINE bool has_native_wait_notify() const BOOST_NOEXCEPT + { + return wait_operations::has_native_wait_notify(this->storage()); + } + + BOOST_FORCEINLINE void notify_one() const BOOST_NOEXCEPT + { + wait_operations::notify_one(this->storage()); + } + + BOOST_FORCEINLINE void notify_all() const BOOST_NOEXCEPT + { + wait_operations::notify_all(this->storage()); + } +}; + +#if defined(BOOST_NO_CXX17_INLINE_VARIABLES) +template< typename T, bool Signed, bool Interprocess > +BOOST_CONSTEXPR_OR_CONST std::size_t base_atomic_ref_common< T, Signed, Interprocess >::required_alignment; +template< typename T, bool Signed, bool Interprocess > +BOOST_CONSTEXPR_OR_CONST bool base_atomic_ref_common< T, Signed, Interprocess >::is_always_lock_free; +template< typename T, bool Signed, bool Interprocess > +BOOST_CONSTEXPR_OR_CONST bool base_atomic_ref_common< T, Signed, Interprocess >::always_has_native_wait_notify; +#endif + + +template< typename T, typename Kind, bool Interprocess > +class base_atomic_ref; + +//! General template. Implementation for user-defined types, such as structs, and pointers to non-object types +template< typename T, bool Interprocess > +class base_atomic_ref< T, void, Interprocess > : + public base_atomic_ref_common< T, false, Interprocess > +{ +private: + typedef base_atomic_ref_common< T, false, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef typename base_type::storage_type storage_type; + typedef typename base_type::value_arg_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic_ref(base_atomic_ref const& that) BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL : base_type(static_cast< base_type const& >(that)) {}) + BOOST_FORCEINLINE explicit base_atomic_ref(value_type& v) BOOST_NOEXCEPT : base_type(v) + { + } + + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), atomics::detail::bitwise_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(core_operations::load(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type exchange(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::exchange(this->storage(), atomics::detail::bitwise_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE value_type wait(value_arg_type old_val, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(wait_operations::wait(this->storage(), atomics::detail::bitwise_cast< storage_type >(old_val), order)); + } + + BOOST_DELETED_FUNCTION(base_atomic_ref& operator=(base_atomic_ref const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } +}; + + +//! Implementation for enums +template< typename T, bool Interprocess > +class base_atomic_ref< T, const int, Interprocess > : + public base_atomic_ref_common< T, false, Interprocess > +{ +private: + typedef base_atomic_ref_common< T, false, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef typename base_type::storage_type storage_type; + typedef typename base_type::value_arg_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic_ref(base_atomic_ref const& that) BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL : base_type(static_cast< base_type const& >(that)) {}) + BOOST_FORCEINLINE explicit base_atomic_ref(value_type& v) BOOST_NOEXCEPT : base_type(v) + { + } + + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(core_operations::load(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type exchange(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::exchange(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE value_type wait(value_arg_type old_val, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(wait_operations::wait(this->storage(), static_cast< storage_type >(old_val), order)); + } + + BOOST_DELETED_FUNCTION(base_atomic_ref& operator=(base_atomic_ref const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } +}; + + +//! Implementation for integers +template< typename T, bool Interprocess > +class base_atomic_ref< T, int, Interprocess > : + public base_atomic_ref_common< T, atomics::detail::is_signed< T >::value, Interprocess > +{ +private: + typedef base_atomic_ref_common< T, atomics::detail::is_signed< T >::value, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + typedef typename base_type::value_type difference_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef atomics::detail::extra_operations< core_operations > extra_operations; + typedef typename base_type::storage_type storage_type; + typedef value_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic_ref(base_atomic_ref const& that) BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL : base_type(static_cast< base_type const& >(that)) {}) + BOOST_FORCEINLINE explicit base_atomic_ref(value_type& v) BOOST_NOEXCEPT : base_type(v) + { + } + + // Standard methods + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(core_operations::load(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type fetch_add(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::fetch_add(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::fetch_sub(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type exchange(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::exchange(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE value_type fetch_and(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::fetch_and(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type fetch_or(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::fetch_or(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type fetch_xor(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::fetch_xor(this->storage(), static_cast< storage_type >(v), order)); + } + + // Boost.Atomic extensions + BOOST_FORCEINLINE value_type fetch_negate(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::fetch_negate(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type fetch_complement(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::fetch_complement(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type add(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::add(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type sub(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::sub(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type negate(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::negate(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type bitwise_and(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::bitwise_and(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type bitwise_or(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::bitwise_or(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type bitwise_xor(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::bitwise_xor(this->storage(), static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type bitwise_complement(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::bitwise_complement(this->storage(), order)); + } + + BOOST_FORCEINLINE void opaque_add(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_operations::opaque_add(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE void opaque_sub(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_operations::opaque_sub(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE void opaque_negate(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_operations::opaque_negate(this->storage(), order); + } + + BOOST_FORCEINLINE void opaque_and(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_operations::opaque_and(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE void opaque_or(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_operations::opaque_or(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE void opaque_xor(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_operations::opaque_xor(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE void opaque_complement(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_operations::opaque_complement(this->storage(), order); + } + + BOOST_FORCEINLINE bool add_and_test(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_operations::add_and_test(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool sub_and_test(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_operations::sub_and_test(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool negate_and_test(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_operations::negate_and_test(this->storage(), order); + } + + BOOST_FORCEINLINE bool and_and_test(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_operations::and_and_test(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool or_and_test(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_operations::or_and_test(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool xor_and_test(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_operations::xor_and_test(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool complement_and_test(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_operations::complement_and_test(this->storage(), order); + } + + BOOST_FORCEINLINE bool bit_test_and_set(unsigned int bit_number, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(bit_number < sizeof(value_type) * 8u); + return extra_operations::bit_test_and_set(this->storage(), bit_number, order); + } + + BOOST_FORCEINLINE bool bit_test_and_reset(unsigned int bit_number, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(bit_number < sizeof(value_type) * 8u); + return extra_operations::bit_test_and_reset(this->storage(), bit_number, order); + } + + BOOST_FORCEINLINE bool bit_test_and_complement(unsigned int bit_number, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(bit_number < sizeof(value_type) * 8u); + return extra_operations::bit_test_and_complement(this->storage(), bit_number, order); + } + + // Operators + BOOST_FORCEINLINE value_type operator++(int) const BOOST_NOEXCEPT + { + return fetch_add(1); + } + + BOOST_FORCEINLINE value_type operator++() const BOOST_NOEXCEPT + { + return add(1); + } + + BOOST_FORCEINLINE value_type operator--(int) const BOOST_NOEXCEPT + { + return fetch_sub(1); + } + + BOOST_FORCEINLINE value_type operator--() const BOOST_NOEXCEPT + { + return sub(1); + } + + BOOST_FORCEINLINE value_type operator+=(difference_type v) const BOOST_NOEXCEPT + { + return add(v); + } + + BOOST_FORCEINLINE value_type operator-=(difference_type v) const BOOST_NOEXCEPT + { + return sub(v); + } + + BOOST_FORCEINLINE value_type operator&=(value_type v) const BOOST_NOEXCEPT + { + return bitwise_and(v); + } + + BOOST_FORCEINLINE value_type operator|=(value_type v) const BOOST_NOEXCEPT + { + return bitwise_or(v); + } + + BOOST_FORCEINLINE value_type operator^=(value_type v) const BOOST_NOEXCEPT + { + return bitwise_xor(v); + } + + BOOST_FORCEINLINE value_type wait(value_arg_type old_val, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(wait_operations::wait(this->storage(), static_cast< storage_type >(old_val), order)); + } + + BOOST_DELETED_FUNCTION(base_atomic_ref& operator=(base_atomic_ref const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } +}; + +//! Implementation for bool +template< bool Interprocess > +class base_atomic_ref< bool, int, Interprocess > : + public base_atomic_ref_common< bool, false, Interprocess > +{ +private: + typedef base_atomic_ref_common< bool, false, Interprocess > base_type; + +public: + typedef bool value_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef typename base_type::storage_type storage_type; + typedef value_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic_ref(base_atomic_ref const& that) BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL : base_type(static_cast< base_type const& >(that)) {}) + BOOST_FORCEINLINE explicit base_atomic_ref(value_type& v) BOOST_NOEXCEPT : base_type(v) + { + } + + // Standard methods + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return !!core_operations::load(this->storage(), order); + } + + BOOST_FORCEINLINE value_type exchange(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return !!core_operations::exchange(this->storage(), static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE value_type wait(value_arg_type old_val, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return !!wait_operations::wait(this->storage(), static_cast< storage_type >(old_val), order); + } + + BOOST_DELETED_FUNCTION(base_atomic_ref& operator=(base_atomic_ref const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = !!old_value; + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), static_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = static_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = !!old_value; + return res; + } +}; + + +#if !defined(BOOST_ATOMIC_NO_FLOATING_POINT) + +//! Implementation for floating point types +template< typename T, bool Interprocess > +class base_atomic_ref< T, float, Interprocess > : + public base_atomic_ref_common< T, false, Interprocess > +{ +private: + typedef base_atomic_ref_common< T, false, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + typedef typename base_type::value_type difference_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef atomics::detail::extra_operations< core_operations > extra_operations; + typedef atomics::detail::fp_operations< extra_operations, value_type > fp_operations; + typedef atomics::detail::extra_fp_operations< fp_operations > extra_fp_operations; + typedef typename base_type::storage_type storage_type; + typedef value_type value_arg_type; + +private: +#if defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::integral_constant< bool, atomics::detail::value_size_of< value_type >::value != sizeof(storage_type) > has_padding_bits; +#endif +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, has_padding_bits::value || atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic_ref(base_atomic_ref const& that) BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL : base_type(static_cast< base_type const& >(that)) {}) + BOOST_FORCEINLINE explicit base_atomic_ref(value_type& v) BOOST_NOEXCEPT : base_type(v) + { + // We only need to call clear_padding_bits if the compiler does not implement + // BOOST_ATOMIC_DETAIL_CLEAR_PADDING, which is called in the base class constructor. +#if defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + this->clear_padding_bits(has_padding_bits()); +#endif // defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + } + + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), atomics::detail::bitwise_fp_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_fp_cast< value_type >(core_operations::load(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type fetch_add(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return fp_operations::fetch_add(this->storage(), v, order); + } + + BOOST_FORCEINLINE value_type fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return fp_operations::fetch_sub(this->storage(), v, order); + } + + BOOST_FORCEINLINE value_type exchange(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_fp_cast< value_type >(core_operations::exchange(this->storage(), atomics::detail::bitwise_fp_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + // Boost.Atomic extensions + BOOST_FORCEINLINE value_type fetch_negate(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_fp_operations::fetch_negate(this->storage(), order); + } + + BOOST_FORCEINLINE value_type add(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_fp_operations::add(this->storage(), v, order); + } + + BOOST_FORCEINLINE value_type sub(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_fp_operations::sub(this->storage(), v, order); + } + + BOOST_FORCEINLINE value_type negate(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_fp_operations::negate(this->storage(), order); + } + + BOOST_FORCEINLINE void opaque_add(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_fp_operations::opaque_add(this->storage(), v, order); + } + + BOOST_FORCEINLINE void opaque_sub(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_fp_operations::opaque_sub(this->storage(), v, order); + } + + BOOST_FORCEINLINE void opaque_negate(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_fp_operations::opaque_negate(this->storage(), order); + } + + // Operators + BOOST_FORCEINLINE value_type operator+=(difference_type v) const BOOST_NOEXCEPT + { + return add(v); + } + + BOOST_FORCEINLINE value_type operator-=(difference_type v) const BOOST_NOEXCEPT + { + return sub(v); + } + + BOOST_FORCEINLINE value_type wait(value_arg_type old_val, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_fp_cast< value_type >(wait_operations::wait(this->storage(), atomics::detail::bitwise_fp_cast< storage_type >(old_val), order)); + } + + BOOST_DELETED_FUNCTION(base_atomic_ref& operator=(base_atomic_ref const&)) + +private: +#if defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + BOOST_FORCEINLINE void clear_padding_bits(atomics::detail::false_type) const BOOST_NOEXCEPT + { + } + + BOOST_FORCEINLINE void clear_padding_bits(atomics::detail::true_type) const BOOST_NOEXCEPT + { + atomics::detail::clear_tail_padding_bits< atomics::detail::value_size_of< value_type >::value >(this->storage()); + } +#endif // defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_fp_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_fp_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, atomics::detail::bitwise_fp_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_fp_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_fp_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_fp_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, atomics::detail::bitwise_fp_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_fp_cast< value_type >(old_value); + return res; + } +}; + +#endif // !defined(BOOST_ATOMIC_NO_FLOATING_POINT) + + +//! Implementation for pointers to object types +template< typename T, bool Interprocess > +class base_atomic_ref< T*, void*, Interprocess > : + public base_atomic_ref_common< T*, false, Interprocess > +{ +private: + typedef base_atomic_ref_common< T*, false, Interprocess > base_type; + +public: + typedef typename base_type::value_type value_type; + typedef std::ptrdiff_t difference_type; + +protected: + typedef typename base_type::core_operations core_operations; + typedef typename base_type::wait_operations wait_operations; + typedef atomics::detail::extra_operations< core_operations > extra_operations; + typedef typename base_type::storage_type storage_type; + typedef value_type value_arg_type; + +private: +#if !defined(BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS) || !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + typedef atomics::detail::true_type cxchg_use_bitwise_cast; +#else + typedef atomics::detail::integral_constant< bool, atomics::detail::alignment_of< value_type >::value <= core_operations::storage_alignment > cxchg_use_bitwise_cast; +#endif + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic_ref(base_atomic_ref const& that) BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL : base_type(static_cast< base_type const& >(that)) {}) + BOOST_FORCEINLINE explicit base_atomic_ref(value_type& v) BOOST_NOEXCEPT : base_type(v) + { + } + + // Standard methods + BOOST_FORCEINLINE void store(value_arg_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + core_operations::store(this->storage(), atomics::detail::bitwise_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(core_operations::load(this->storage(), order)); + } + + BOOST_FORCEINLINE value_type fetch_add(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::fetch_add(this->storage(), static_cast< storage_type >(v * sizeof(T)), order)); + } + + BOOST_FORCEINLINE value_type fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::fetch_sub(this->storage(), static_cast< storage_type >(v * sizeof(T)), order)); + } + + BOOST_FORCEINLINE value_type exchange(value_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(core_operations::exchange(this->storage(), atomics::detail::bitwise_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_strong_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order) const BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + return compare_exchange_weak_impl(expected, desired, success_order, failure_order, cxchg_use_bitwise_cast()); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_arg_type desired, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + // Boost.Atomic extensions + BOOST_FORCEINLINE value_type add(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::add(this->storage(), static_cast< storage_type >(v * sizeof(T)), order)); + } + + BOOST_FORCEINLINE value_type sub(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return atomics::detail::bitwise_cast< value_type >(extra_operations::sub(this->storage(), static_cast< storage_type >(v * sizeof(T)), order)); + } + + BOOST_FORCEINLINE void opaque_add(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_operations::opaque_add(this->storage(), static_cast< storage_type >(v * sizeof(T)), order); + } + + BOOST_FORCEINLINE void opaque_sub(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + extra_operations::opaque_sub(this->storage(), static_cast< storage_type >(v * sizeof(T)), order); + } + + BOOST_FORCEINLINE bool add_and_test(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_operations::add_and_test(this->storage(), static_cast< storage_type >(v * sizeof(T)), order); + } + + BOOST_FORCEINLINE bool sub_and_test(difference_type v, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + return extra_operations::sub_and_test(this->storage(), static_cast< storage_type >(v * sizeof(T)), order); + } + + // Operators + BOOST_FORCEINLINE value_type operator++(int) const BOOST_NOEXCEPT + { + return fetch_add(1); + } + + BOOST_FORCEINLINE value_type operator++() const BOOST_NOEXCEPT + { + return add(1); + } + + BOOST_FORCEINLINE value_type operator--(int) const BOOST_NOEXCEPT + { + return fetch_sub(1); + } + + BOOST_FORCEINLINE value_type operator--() const BOOST_NOEXCEPT + { + return sub(1); + } + + BOOST_FORCEINLINE value_type operator+=(difference_type v) const BOOST_NOEXCEPT + { + return add(v); + } + + BOOST_FORCEINLINE value_type operator-=(difference_type v) const BOOST_NOEXCEPT + { + return sub(v); + } + + BOOST_FORCEINLINE value_type wait(value_arg_type old_val, memory_order order = memory_order_seq_cst) const BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::bitwise_cast< value_type >(wait_operations::wait(this->storage(), atomics::detail::bitwise_cast< storage_type >(old_val), order)); + } + + BOOST_DELETED_FUNCTION(base_atomic_ref& operator=(base_atomic_ref const&)) + +private: + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_strong(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_strong(this->storage(), old_value, atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::false_type) const BOOST_NOEXCEPT + { + return core_operations::compare_exchange_weak(this->storage(), reinterpret_cast< storage_type& >(expected), atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + } + + BOOST_FORCEINLINE bool compare_exchange_weak_impl(value_type& expected, value_arg_type desired, memory_order success_order, memory_order failure_order, atomics::detail::true_type) const BOOST_NOEXCEPT + { + storage_type old_value = atomics::detail::bitwise_cast< storage_type >(expected); + const bool res = core_operations::compare_exchange_weak(this->storage(), old_value, atomics::detail::bitwise_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::bitwise_cast< value_type >(old_value); + return res; + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_ATOMIC_REF_IMPL_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/bitwise_cast.hpp b/src/boost/boost/atomic/detail/bitwise_cast.hpp new file mode 100644 index 000000000..da5e6e641 --- /dev/null +++ b/src/boost/boost/atomic/detail/bitwise_cast.hpp @@ -0,0 +1,158 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2013-2018, 2020-2021 Andrey Semashev + */ +/*! + * \file atomic/detail/bitwise_cast.hpp + * + * This header defines \c bitwise_cast used to convert between storage and value types + */ + +#ifndef BOOST_ATOMIC_DETAIL_BITWISE_CAST_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_BITWISE_CAST_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_NO_HAS_UNIQUE_OBJECT_REPRESENTATIONS) + +#if defined(__has_builtin) +#if __has_builtin(__builtin_bit_cast) +#define BOOST_ATOMIC_DETAIL_BIT_CAST(x, y) __builtin_bit_cast(x, y) +#endif +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_BIT_CAST) && defined(BOOST_MSVC) && BOOST_MSVC >= 1926 +#define BOOST_ATOMIC_DETAIL_BIT_CAST(x, y) __builtin_bit_cast(x, y) +#endif + +#endif // !defined(BOOST_ATOMIC_DETAIL_NO_HAS_UNIQUE_OBJECT_REPRESENTATIONS) + +#if defined(BOOST_NO_CXX11_CONSTEXPR) || !defined(BOOST_ATOMIC_DETAIL_BIT_CAST) || !defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_ADDRESSOF) +#define BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_BITWISE_CAST +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_BITWISE_CAST) +#define BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST BOOST_CONSTEXPR +#else +#define BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST +#endif + +#if defined(BOOST_GCC) && BOOST_GCC >= 80000 +#pragma GCC diagnostic push +// copying an object of non-trivial type X from an array of Y. This is benign because we use memcpy to copy trivially copyable objects. +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< std::size_t ValueSize, typename To > +BOOST_FORCEINLINE void clear_tail_padding_bits(To& to, atomics::detail::true_type) BOOST_NOEXCEPT +{ + BOOST_ATOMIC_DETAIL_MEMSET(reinterpret_cast< unsigned char* >(atomics::detail::addressof(to)) + ValueSize, 0, sizeof(To) - ValueSize); +} + +template< std::size_t ValueSize, typename To > +BOOST_FORCEINLINE void clear_tail_padding_bits(To&, atomics::detail::false_type) BOOST_NOEXCEPT +{ +} + +template< std::size_t ValueSize, typename To > +BOOST_FORCEINLINE void clear_tail_padding_bits(To& to) BOOST_NOEXCEPT +{ + atomics::detail::clear_tail_padding_bits< ValueSize >(to, atomics::detail::integral_constant< bool, ValueSize < sizeof(To) >()); +} + +template< typename To, std::size_t FromValueSize, typename From > +BOOST_FORCEINLINE To bitwise_cast_memcpy(From const& from) BOOST_NOEXCEPT +{ + typedef typename atomics::detail::remove_cv< To >::type unqualified_to_t; + unqualified_to_t to; +#if !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) + From from2(from); + BOOST_ATOMIC_DETAIL_CLEAR_PADDING(atomics::detail::addressof(from2)); + BOOST_ATOMIC_DETAIL_MEMCPY + ( + atomics::detail::addressof(to), + atomics::detail::addressof(from2), + (FromValueSize < sizeof(unqualified_to_t) ? FromValueSize : sizeof(unqualified_to_t)) + ); +#else + BOOST_ATOMIC_DETAIL_MEMCPY + ( + atomics::detail::addressof(to), + atomics::detail::addressof(from), + (FromValueSize < sizeof(unqualified_to_t) ? FromValueSize : sizeof(unqualified_to_t)) + ); +#endif + atomics::detail::clear_tail_padding_bits< FromValueSize >(to); + return to; +} + +#if defined(BOOST_ATOMIC_DETAIL_BIT_CAST) + +template< typename To, std::size_t FromValueSize, typename From > +BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_cast_impl(From const& from, atomics::detail::true_type) BOOST_NOEXCEPT +{ + // This implementation is only called when the From type has no padding and From and To have the same size + return BOOST_ATOMIC_DETAIL_BIT_CAST(typename atomics::detail::remove_cv< To >::type, from); +} + +template< typename To, std::size_t FromValueSize, typename From > +BOOST_FORCEINLINE To bitwise_cast_impl(From const& from, atomics::detail::false_type) BOOST_NOEXCEPT +{ + return atomics::detail::bitwise_cast_memcpy< To, FromValueSize >(from); +} + +template< typename To, std::size_t FromValueSize, typename From > +BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_cast(From const& from) BOOST_NOEXCEPT +{ + return atomics::detail::bitwise_cast_impl< To, FromValueSize >(from, atomics::detail::integral_constant< bool, + FromValueSize == sizeof(To) && atomics::detail::has_unique_object_representations< From >::value >()); +} + +#else // defined(BOOST_ATOMIC_DETAIL_BIT_CAST) + +template< typename To, std::size_t FromValueSize, typename From > +BOOST_FORCEINLINE To bitwise_cast(From const& from) BOOST_NOEXCEPT +{ + return atomics::detail::bitwise_cast_memcpy< To, FromValueSize >(from); +} + +#endif // defined(BOOST_ATOMIC_DETAIL_BIT_CAST) + +//! Converts the source object to the target type, possibly by padding or truncating it on the right, and clearing any padding bits (if supported by compiler). Preserves value bits unchanged. +template< typename To, typename From > +BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_cast(From const& from) BOOST_NOEXCEPT +{ + return atomics::detail::bitwise_cast< To, sizeof(From) >(from); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#if defined(BOOST_GCC) && BOOST_GCC >= 80000 +#pragma GCC diagnostic pop +#endif + +#include + +#endif // BOOST_ATOMIC_DETAIL_BITWISE_CAST_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/bitwise_fp_cast.hpp b/src/boost/boost/atomic/detail/bitwise_fp_cast.hpp new file mode 100644 index 000000000..09538c576 --- /dev/null +++ b/src/boost/boost/atomic/detail/bitwise_fp_cast.hpp @@ -0,0 +1,118 @@ +/* + * 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) + * + * Copyright (c) 2018, 2021 Andrey Semashev + */ +/*! + * \file atomic/detail/bitwise_fp_cast.hpp + * + * This header defines \c bitwise_fp_cast used to convert between storage and floating point value types + */ + +#ifndef BOOST_ATOMIC_DETAIL_BITWISE_FP_CAST_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_BITWISE_FP_CAST_HPP_INCLUDED_ + +#include +#include +#include +#include +#if defined(BOOST_ATOMIC_DETAIL_BIT_CAST) +#include +#endif +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +/*! + * \brief The type trait returns the size of the value of the specified floating point type + * + * This size may be less than sizeof(T) if the implementation uses padding bytes for a particular FP type. This is + * often the case with 80-bit extended double, which is stored in 12 or 16 initial bytes with tail padding filled with garbage. + */ +template< typename T > +struct value_size_of +{ + static BOOST_CONSTEXPR_OR_CONST std::size_t value = sizeof(T); +}; + +#if defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE) +template< > +struct value_size_of< float > +{ + static BOOST_CONSTEXPR_OR_CONST std::size_t value = BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE; +}; +#endif + +#if defined(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE) +template< > +struct value_size_of< double > +{ + static BOOST_CONSTEXPR_OR_CONST std::size_t value = BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE; +}; +#endif + +#if defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE) +template< > +struct value_size_of< long double > +{ + static BOOST_CONSTEXPR_OR_CONST std::size_t value = BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE; +}; +#endif + +template< typename T > +struct value_size_of< const T > : value_size_of< T > {}; + +template< typename T > +struct value_size_of< volatile T > : value_size_of< T > {}; + +template< typename T > +struct value_size_of< const volatile T > : value_size_of< T > {}; + + +#if !defined(BOOST_ATOMIC_NO_CLEAR_PADDING) +// BOOST_ATOMIC_DETAIL_CLEAR_PADDING, which is used in bitwise_cast, will clear the tail padding bits in the source object. +// We don't need to specify the actual value size to avoid redundant zeroing of the tail padding. +#define BOOST_ATOMIC_DETAIL_BITWISE_FP_CAST_VALUE_SIZE_OF(x) sizeof(x) +#else +#define BOOST_ATOMIC_DETAIL_BITWISE_FP_CAST_VALUE_SIZE_OF(x) atomics::detail::value_size_of< x >::value +#endif + +#if defined(BOOST_ATOMIC_DETAIL_BIT_CAST) + +//! Similar to bitwise_cast, but either \c From or \c To is expected to be a floating point type. Attempts to detect the actual value size in the source object and considers the rest of the object as padding. +template< typename To, typename From > +BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_fp_cast(From const& from) BOOST_NOEXCEPT +{ + // For floating point types, has_unique_object_representations is typically false even if the type contains no padding bits. + // Here, we rely on our detection of the actual value size to select constexpr bit_cast implementation when possible. We assume + // here that floating point value bits are contiguous. + return atomics::detail::bitwise_cast_impl< To, BOOST_ATOMIC_DETAIL_BITWISE_FP_CAST_VALUE_SIZE_OF(From) >(from, atomics::detail::integral_constant< bool, + atomics::detail::value_size_of< From >::value == sizeof(From) && atomics::detail::value_size_of< From >::value == sizeof(To) >()); +} + +#else // defined(BOOST_ATOMIC_DETAIL_BIT_CAST) + +//! Similar to bitwise_cast, but either \c From or \c To is expected to be a floating point type. Attempts to detect the actual value size in the source object and considers the rest of the object as padding. +template< typename To, typename From > +BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_fp_cast(From const& from) BOOST_NOEXCEPT +{ + return atomics::detail::bitwise_cast< To, BOOST_ATOMIC_DETAIL_BITWISE_FP_CAST_VALUE_SIZE_OF(From) >(from); +} + +#endif // defined(BOOST_ATOMIC_DETAIL_BIT_CAST) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_BITWISE_FP_CAST_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/capabilities.hpp b/src/boost/boost/atomic/detail/capabilities.hpp new file mode 100644 index 000000000..088bbcfc7 --- /dev/null +++ b/src/boost/boost/atomic/detail/capabilities.hpp @@ -0,0 +1,217 @@ +/* + * 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) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/capabilities.hpp + * + * This header defines core feature capabilities macros. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPABILITIES_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPABILITIES_HPP_INCLUDED_ + +#include +#include +#include +#if !defined(BOOST_ATOMIC_NO_FLOATING_POINT) +#include +#endif + +#if defined(BOOST_ATOMIC_DETAIL_CORE_BACKEND_HEADER) +#include BOOST_ATOMIC_DETAIL_CORE_BACKEND_HEADER(boost/atomic/detail/caps_) +#elif defined(BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND_HEADER) +#include BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND_HEADER(boost/atomic/detail/caps_arch_) +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#ifndef BOOST_ATOMIC_INT8_LOCK_FREE +#define BOOST_ATOMIC_INT8_LOCK_FREE 0 +#endif + +#ifndef BOOST_ATOMIC_INT16_LOCK_FREE +#define BOOST_ATOMIC_INT16_LOCK_FREE 0 +#endif + +#ifndef BOOST_ATOMIC_INT32_LOCK_FREE +#define BOOST_ATOMIC_INT32_LOCK_FREE 0 +#endif + +#ifndef BOOST_ATOMIC_INT64_LOCK_FREE +#define BOOST_ATOMIC_INT64_LOCK_FREE 0 +#endif + +#ifndef BOOST_ATOMIC_INT128_LOCK_FREE +#define BOOST_ATOMIC_INT128_LOCK_FREE 0 +#endif + + +#ifndef BOOST_ATOMIC_CHAR_LOCK_FREE +#define BOOST_ATOMIC_CHAR_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#endif + +#ifndef BOOST_ATOMIC_CHAR8_T_LOCK_FREE +#define BOOST_ATOMIC_CHAR8_T_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#endif + +#ifndef BOOST_ATOMIC_CHAR16_T_LOCK_FREE +#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#endif + +#ifndef BOOST_ATOMIC_CHAR32_T_LOCK_FREE +#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#endif + +#ifndef BOOST_ATOMIC_WCHAR_T_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 1 +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 2 +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 4 +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 8 +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_SHORT_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 1 +#define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 2 +#define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 4 +#define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 8 +#define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_SHORT_LOCK_FREE 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_INT_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_SIZEOF_INT == 1 +#define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 2 +#define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 4 +#define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 8 +#define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_INT_LOCK_FREE 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_LONG_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 1 +#define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 2 +#define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 4 +#define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 8 +#define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_LONG_LOCK_FREE 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_LLONG_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 1 +#define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 2 +#define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 4 +#define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 8 +#define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_POINTER_LOCK_FREE +#if (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER + 0) == 8 +#define BOOST_ATOMIC_POINTER_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#elif (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER + 0) == 4 +#define BOOST_ATOMIC_POINTER_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#else +#define BOOST_ATOMIC_POINTER_LOCK_FREE 0 +#endif +#endif + +#define BOOST_ATOMIC_ADDRESS_LOCK_FREE BOOST_ATOMIC_POINTER_LOCK_FREE + +#ifndef BOOST_ATOMIC_BOOL_LOCK_FREE +// We store bools in 1-byte storage in all backends +#define BOOST_ATOMIC_BOOL_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#endif + +#ifndef BOOST_ATOMIC_FLAG_LOCK_FREE +// atomic_flag uses 4-byte storage +#define BOOST_ATOMIC_FLAG_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#endif + +#if !defined(BOOST_ATOMIC_NO_FLOATING_POINT) + +#if !defined(BOOST_ATOMIC_FLOAT_LOCK_FREE) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT) +#if BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT == 2 +#define BOOST_ATOMIC_FLOAT_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT == 4 +#define BOOST_ATOMIC_FLOAT_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT == 8 +#define BOOST_ATOMIC_FLOAT_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT > 8 && BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT <= 16 +#define BOOST_ATOMIC_FLOAT_LOCK_FREE BOOST_ATOMIC_INT128_LOCK_FREE +#else +#define BOOST_ATOMIC_FLOAT_LOCK_FREE 0 +#endif +#endif + +#if !defined(BOOST_ATOMIC_DOUBLE_LOCK_FREE) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE) +#if BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE == 2 +#define BOOST_ATOMIC_DOUBLE_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE == 4 +#define BOOST_ATOMIC_DOUBLE_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE == 8 +#define BOOST_ATOMIC_DOUBLE_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE > 8 && BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE <= 16 +#define BOOST_ATOMIC_DOUBLE_LOCK_FREE BOOST_ATOMIC_INT128_LOCK_FREE +#else +#define BOOST_ATOMIC_DOUBLE_LOCK_FREE 0 +#endif +#endif + +#if !defined(BOOST_ATOMIC_LONG_DOUBLE_LOCK_FREE) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE) +#if BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE == 2 +#define BOOST_ATOMIC_LONG_DOUBLE_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE == 4 +#define BOOST_ATOMIC_LONG_DOUBLE_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE == 8 +#define BOOST_ATOMIC_LONG_DOUBLE_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE > 8 && BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE <= 16 +#define BOOST_ATOMIC_LONG_DOUBLE_LOCK_FREE BOOST_ATOMIC_INT128_LOCK_FREE +#else +#define BOOST_ATOMIC_LONG_DOUBLE_LOCK_FREE 0 +#endif +#endif + +#endif // !defined(BOOST_ATOMIC_NO_FLOATING_POINT) + +#ifndef BOOST_ATOMIC_THREAD_FENCE +#define BOOST_ATOMIC_THREAD_FENCE 0 +#endif + +#ifndef BOOST_ATOMIC_SIGNAL_FENCE +#define BOOST_ATOMIC_SIGNAL_FENCE 0 +#endif + +#endif // BOOST_ATOMIC_DETAIL_CAPABILITIES_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_arch_gcc_aarch32.hpp b/src/boost/boost/atomic/detail/caps_arch_gcc_aarch32.hpp new file mode 100644 index 000000000..70217ba82 --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_arch_gcc_aarch32.hpp @@ -0,0 +1,53 @@ +/* + * 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) + * + * Copyright (c) 2020, 2022 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_arch_gcc_aarch32.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_AARCH32_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_AARCH32_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__ARMEL__) || \ + (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || \ + (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \ + defined(BOOST_WINDOWS) +#define BOOST_ATOMIC_DETAIL_AARCH32_LITTLE_ENDIAN +#elif defined(__ARMEB__) || \ + defined(__ARM_BIG_ENDIAN) || \ + (defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || \ + (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) +#define BOOST_ATOMIC_DETAIL_AARCH32_BIG_ENDIAN +#else +#include +#if BOOST_ENDIAN_LITTLE_BYTE +#define BOOST_ATOMIC_DETAIL_AARCH32_LITTLE_ENDIAN +#elif BOOST_ENDIAN_BIG_BYTE +#define BOOST_ATOMIC_DETAIL_AARCH32_BIG_ENDIAN +#else +#error "Boost.Atomic: Failed to determine AArch32 endianness, the target platform is not supported. Please, report to the developers (patches are welcome)." +#endif +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_AARCH32_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_arch_gcc_aarch64.hpp b/src/boost/boost/atomic/detail/caps_arch_gcc_aarch64.hpp new file mode 100644 index 000000000..8c2d2eb12 --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_arch_gcc_aarch64.hpp @@ -0,0 +1,65 @@ +/* + * 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) + * + * Copyright (c) 2020, 2022 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_arch_gcc_aarch64.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_AARCH64_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_AARCH64_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__AARCH64EL__) || \ + (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || \ + (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \ + defined(BOOST_WINDOWS) +#define BOOST_ATOMIC_DETAIL_AARCH64_LITTLE_ENDIAN +#elif defined(__AARCH64EB__) || \ + defined(__ARM_BIG_ENDIAN) || \ + (defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || \ + (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) +#define BOOST_ATOMIC_DETAIL_AARCH64_BIG_ENDIAN +#else +#include +#if BOOST_ENDIAN_LITTLE_BYTE +#define BOOST_ATOMIC_DETAIL_AARCH64_LITTLE_ENDIAN +#elif BOOST_ENDIAN_BIG_BYTE +#define BOOST_ATOMIC_DETAIL_AARCH64_BIG_ENDIAN +#else +#error "Boost.Atomic: Failed to determine AArch64 endianness, the target platform is not supported. Please, report to the developers (patches are welcome)." +#endif +#endif + +#if defined(__ARM_FEATURE_ATOMICS) +// ARMv8.1 added Large System Extensions, which includes cas, swp, and a number of other read-modify-write instructions +#define BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE +#endif + +#if defined(__ARM_FEATURE_COMPLEX) +// ARMv8.3 added Release Consistency processor consistent (RCpc) memory model, which includes ldapr and similar instructions. +// Unfortunately, there seems to be no dedicated __ARM_FEATURE macro for this, so we use __ARM_FEATURE_COMPLEX, which is also defined starting ARMv8.3. +#define BOOST_ATOMIC_DETAIL_AARCH64_HAS_RCPC +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#define BOOST_ATOMIC_INT128_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_AARCH64_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_arch_gcc_alpha.hpp b/src/boost/boost/atomic/detail/caps_arch_gcc_alpha.hpp new file mode 100644 index 000000000..1c46ea86d --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_arch_gcc_alpha.hpp @@ -0,0 +1,34 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_arch_gcc_alpha.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_ALPHA_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_ALPHA_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_ALPHA_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_arch_gcc_arm.hpp b/src/boost/boost/atomic/detail/caps_arch_gcc_arm.hpp new file mode 100644 index 000000000..caf585a07 --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_arch_gcc_arm.hpp @@ -0,0 +1,103 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2009 Phil Endecott + * Copyright (c) 2013 Tim Blechmann + * ARM Code by Phil Endecott, based on other architectures. + * Copyright (c) 2014, 2020, 2022 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_arch_gcc_arm.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_ARM_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__ARMEL__) || \ + (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || \ + (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \ + defined(BOOST_WINDOWS) +#define BOOST_ATOMIC_DETAIL_ARM_LITTLE_ENDIAN +#elif defined(__ARMEB__) || \ + defined(__ARM_BIG_ENDIAN) || \ + (defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || \ + (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) +#define BOOST_ATOMIC_DETAIL_ARM_BIG_ENDIAN +#else +#include +#if BOOST_ENDIAN_LITTLE_BYTE +#define BOOST_ATOMIC_DETAIL_ARM_LITTLE_ENDIAN +#elif BOOST_ENDIAN_BIG_BYTE +#define BOOST_ATOMIC_DETAIL_ARM_BIG_ENDIAN +#else +#error "Boost.Atomic: Failed to determine ARM endianness, the target platform is not supported. Please, report to the developers (patches are welcome)." +#endif +#endif + +#if defined(__GNUC__) && defined(__arm__) && (BOOST_ATOMIC_DETAIL_ARM_ARCH >= 6) + +#if BOOST_ATOMIC_DETAIL_ARM_ARCH > 6 +// ARMv7 and later have dmb instruction +#define BOOST_ATOMIC_DETAIL_ARM_HAS_DMB 1 +#endif + +#if defined(__ARM_FEATURE_LDREX) + +#if (__ARM_FEATURE_LDREX & 1) +#define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB 1 +#endif +#if (__ARM_FEATURE_LDREX & 2) +#define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH 1 +#endif +#if (__ARM_FEATURE_LDREX & 8) +#define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD 1 +#endif + +#else // defined(__ARM_FEATURE_LDREX) + +#if !(defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6Z__)) + +// ARMv6k and ARMv7 have 8 and 16-bit ldrex/strex variants, but at least GCC 4.7 fails to compile them. GCC 4.9 is known to work. +#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 +#define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB 1 +#define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH 1 +#endif + +#if !(((defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__)) && defined(__thumb__)) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7M__)) +// ARMv6k and ARMv7 except ARMv7-M have 64-bit ldrex/strex variants. +// Unfortunately, GCC (at least 4.7.3 on Ubuntu) does not allocate register pairs properly when targeting ARMv6k Thumb, +// which is required for ldrexd/strexd instructions, so we disable 64-bit support. When targeting ARMv6k ARM +// or ARMv7 (both ARM and Thumb 2) it works as expected. +#define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD 1 +#endif + +#endif // !(defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6Z__)) + +#endif // defined(__ARM_FEATURE_LDREX) + +#endif // defined(__GNUC__) && defined(__arm__) && (BOOST_ATOMIC_DETAIL_ARM_ARCH >= 6) + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD) +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#endif +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_arch_gcc_ppc.hpp b/src/boost/boost/atomic/detail/caps_arch_gcc_ppc.hpp new file mode 100644 index 000000000..f3826fb16 --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_arch_gcc_ppc.hpp @@ -0,0 +1,55 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_arch_gcc_ppc.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_PPC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_PPC_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__POWERPC__) || defined(__PPC__) + +#if defined(_ARCH_PWR8) +// Power8 and later architectures have 8 and 16-bit instructions +#define BOOST_ATOMIC_DETAIL_PPC_HAS_LBARX_STBCX +#define BOOST_ATOMIC_DETAIL_PPC_HAS_LHARX_STHCX +#endif + +#if defined(__powerpc64__) || defined(__PPC64__) +// Power7 and later architectures in 64-bit mode have 64-bit instructions +#define BOOST_ATOMIC_DETAIL_PPC_HAS_LDARX_STDCX +#if defined(_ARCH_PWR8) +// Power8 also has 128-bit instructions +#define BOOST_ATOMIC_DETAIL_PPC_HAS_LQARX_STQCX +#endif +#endif + +#endif // defined(__POWERPC__) || defined(__PPC__) + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#if defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LDARX_STDCX) +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#endif +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_PPC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_arch_gcc_sparc.hpp b/src/boost/boost/atomic/detail/caps_arch_gcc_sparc.hpp new file mode 100644 index 000000000..d5913eb5b --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_arch_gcc_sparc.hpp @@ -0,0 +1,34 @@ +/* + * 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) + * + * Copyright (c) 2010 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_arch_gcc_sparc.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_SPARC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_SPARC_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_SPARC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_arch_gcc_x86.hpp b/src/boost/boost/atomic/detail/caps_arch_gcc_x86.hpp new file mode 100644 index 000000000..908853f70 --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_arch_gcc_x86.hpp @@ -0,0 +1,74 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2013 - 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_arch_gcc_x86.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_X86_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__GNUC__) + +#if defined(__i386__) &&\ + (\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) ||\ + defined(__i586__) || defined(__i686__) || defined(__SSE__)\ + ) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B 1 +#endif + +#if defined(__x86_64__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1 +#endif + +#if defined(__x86_64__) || defined(__SSE2__) +// Use mfence only if SSE2 is available +#define BOOST_ATOMIC_DETAIL_X86_HAS_MFENCE 1 +#endif + +#else // defined(__GNUC__) + +#if defined(__i386__) && !defined(BOOST_ATOMIC_NO_CMPXCHG8B) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B 1 +#endif + +#if defined(__x86_64__) && !defined(BOOST_ATOMIC_NO_CMPXCHG16B) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1 +#endif + +#if !defined(BOOST_ATOMIC_NO_MFENCE) +#define BOOST_ATOMIC_DETAIL_X86_HAS_MFENCE 1 +#endif + +#endif // defined(__GNUC__) + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#if defined(__x86_64__) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#endif +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) +#define BOOST_ATOMIC_INT128_LOCK_FREE 2 +#endif +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_ARCH_GCC_X86_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_arch_msvc_arm.hpp b/src/boost/boost/atomic/detail/caps_arch_msvc_arm.hpp new file mode 100644 index 000000000..a992ba126 --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_arch_msvc_arm.hpp @@ -0,0 +1,34 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2012 - 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_arch_msvc_arm.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_ARCH_MSVC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_ARCH_MSVC_ARM_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_ARCH_MSVC_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_arch_msvc_x86.hpp b/src/boost/boost/atomic/detail/caps_arch_msvc_x86.hpp new file mode 100644 index 000000000..46fbd16b5 --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_arch_msvc_x86.hpp @@ -0,0 +1,61 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2012 - 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_arch_msvc_x86.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_ARCH_MSVC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_ARCH_MSVC_X86_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(_M_IX86) && _M_IX86 >= 500 +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B 1 +#endif + +#if defined(_M_AMD64) && !defined(BOOST_ATOMIC_NO_CMPXCHG16B) +#if defined(__clang__) +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1 +#endif +#elif _MSC_VER >= 1500 +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1 +#endif +#endif + +#if defined(_MSC_VER) && (defined(_M_AMD64) || (defined(_M_IX86) && defined(_M_IX86_FP) && _M_IX86_FP >= 2)) +// Use mfence only if SSE2 is available +#define BOOST_ATOMIC_DETAIL_X86_HAS_MFENCE 1 +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 + +#if defined(_M_AMD64) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#endif + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) +#define BOOST_ATOMIC_INT128_LOCK_FREE 2 +#endif + +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_ARCH_MSVC_X86_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_gcc_atomic.hpp b/src/boost/boost/atomic/detail/caps_gcc_atomic.hpp new file mode 100644 index 000000000..bc1f862af --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_gcc_atomic.hpp @@ -0,0 +1,158 @@ +/* + * 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) + * + * Copyright (c) 2014, 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_gcc_atomic.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_GCC_ATOMIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_GCC_ATOMIC_HPP_INCLUDED_ + +#include +#include + +#if defined(BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND_HEADER) +#include BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND_HEADER(boost/atomic/detail/caps_arch_) +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// Translate type-based lock-free macros to size-based ones +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT8_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE + +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 2 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 2 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 2 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 2 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE +#else +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE 0 +#endif + +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 4 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 4 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 4 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 4 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE +#else +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE 0 +#endif + +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 8 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 8 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 8 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 8 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE +#else +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE 0 +#endif + +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 16 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 16 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 16 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 16 +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE +#else +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE 0 +#endif + +// On x86-64, clang 3.4 does not implement 128-bit __atomic* intrinsics even though it defines __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16: +// https://bugs.llvm.org/show_bug.cgi?id=19149 +// Another problem exists with gcc 7 and later, as it requires to link with libatomic to use 16-byte intrinsics: +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80878 +// Both clang and gcc do generate cmpxchg16b for __sync_val_compare_and_swap though. +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) &&\ + (\ + (defined(BOOST_CLANG) && (__clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 5))) ||\ + (defined(BOOST_GCC) && BOOST_GCC >= 70000)\ + ) +#undef BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE 0 +#endif + +// On 32-bit x86, there is a clang bug for 64-bit atomics: https://bugs.llvm.org/show_bug.cgi?id=19355. The compiler defines +// __GCC_ATOMIC_LLONG_LOCK_FREE to 1 when the target architecture supports 64-bit atomic instructions (i.e. the value should be 2). +// Additionally, any clang version requires to link with libatomic for 64-bit __atomic* intrinsics on x86. It does generate +// cmpxchg8b for __sync_val_compare_and_swap though. +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) && defined(BOOST_CLANG) +#undef BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE 0 +#endif + +// Override arch-specific macros if atomic intrinsics provide better guarantees +#if !defined(BOOST_ATOMIC_INT128_LOCK_FREE) || (BOOST_ATOMIC_INT128_LOCK_FREE < BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE) +#undef BOOST_ATOMIC_INT128_LOCK_FREE +#define BOOST_ATOMIC_INT128_LOCK_FREE BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE +#endif + +#if !defined(BOOST_ATOMIC_INT64_LOCK_FREE) || (BOOST_ATOMIC_INT64_LOCK_FREE < BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE) || (BOOST_ATOMIC_INT64_LOCK_FREE < BOOST_ATOMIC_INT128_LOCK_FREE) +#undef BOOST_ATOMIC_INT64_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE >= BOOST_ATOMIC_INT128_LOCK_FREE +#define BOOST_ATOMIC_INT64_LOCK_FREE BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_INT64_LOCK_FREE BOOST_ATOMIC_INT128_LOCK_FREE +#endif +#endif + +#if !defined(BOOST_ATOMIC_INT32_LOCK_FREE) || (BOOST_ATOMIC_INT32_LOCK_FREE < BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE) || (BOOST_ATOMIC_INT32_LOCK_FREE < BOOST_ATOMIC_INT64_LOCK_FREE) +#undef BOOST_ATOMIC_INT32_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE >= BOOST_ATOMIC_INT64_LOCK_FREE +#define BOOST_ATOMIC_INT32_LOCK_FREE BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE +#else +#define BOOST_ATOMIC_INT32_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#endif +#endif + +#if !defined(BOOST_ATOMIC_INT16_LOCK_FREE) || (BOOST_ATOMIC_INT16_LOCK_FREE < BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE) || (BOOST_ATOMIC_INT16_LOCK_FREE < BOOST_ATOMIC_INT32_LOCK_FREE) +#undef BOOST_ATOMIC_INT16_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE >= BOOST_ATOMIC_INT32_LOCK_FREE +#define BOOST_ATOMIC_INT16_LOCK_FREE BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE +#else +#define BOOST_ATOMIC_INT16_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#endif +#endif + +#if !defined(BOOST_ATOMIC_INT8_LOCK_FREE) || (BOOST_ATOMIC_INT8_LOCK_FREE < BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT8_LOCK_FREE) || (BOOST_ATOMIC_INT8_LOCK_FREE < BOOST_ATOMIC_INT16_LOCK_FREE) +#undef BOOST_ATOMIC_INT8_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT8_LOCK_FREE >= BOOST_ATOMIC_INT16_LOCK_FREE +#define BOOST_ATOMIC_INT8_LOCK_FREE BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT8_LOCK_FREE +#else +#define BOOST_ATOMIC_INT8_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#endif +#endif + +#if !defined(BOOST_ATOMIC_POINTER_LOCK_FREE) || (BOOST_ATOMIC_POINTER_LOCK_FREE < __GCC_ATOMIC_POINTER_LOCK_FREE) +#undef BOOST_ATOMIC_POINTER_LOCK_FREE +#define BOOST_ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE +#endif + +#if !defined(BOOST_ATOMIC_THREAD_FENCE) || (BOOST_ATOMIC_THREAD_FENCE < 2) +#undef BOOST_ATOMIC_THREAD_FENCE +#define BOOST_ATOMIC_THREAD_FENCE 2 +#endif +#if !defined(BOOST_ATOMIC_SIGNAL_FENCE) || (BOOST_ATOMIC_SIGNAL_FENCE < 2) +#undef BOOST_ATOMIC_SIGNAL_FENCE +#define BOOST_ATOMIC_SIGNAL_FENCE 2 +#endif + +#endif // BOOST_ATOMIC_DETAIL_CAPS_GCC_ATOMIC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_gcc_sync.hpp b/src/boost/boost/atomic/detail/caps_gcc_sync.hpp new file mode 100644 index 000000000..b6bb3c269 --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_gcc_sync.hpp @@ -0,0 +1,54 @@ +/* + * 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) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_gcc_sync.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_GCC_SYNC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_GCC_SYNC_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#endif +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#endif +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#endif +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#endif +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_INT128_LOCK_FREE 2 +#endif + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_GCC_SYNC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_linux_arm.hpp b/src/boost/boost/atomic/detail/caps_linux_arm.hpp new file mode 100644 index 000000000..be0a35b40 --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_linux_arm.hpp @@ -0,0 +1,35 @@ +/* + * 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) + * + * Copyright (c) 2009, 2011 Helge Bahmann + * Copyright (c) 2009 Phil Endecott + * Copyright (c) 2013 Tim Blechmann + * Linux-specific code by Phil Endecott + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_linux_arm.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_LINUX_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_LINUX_ARM_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_LINUX_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/caps_windows.hpp b/src/boost/boost/atomic/detail/caps_windows.hpp new file mode 100644 index 000000000..b2b01c3e5 --- /dev/null +++ b/src/boost/boost/atomic/detail/caps_windows.hpp @@ -0,0 +1,33 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2012 - 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_windows.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_WINDOWS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_WINDOWS_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_WINDOWS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/cas_based_exchange.hpp b/src/boost/boost/atomic/detail/cas_based_exchange.hpp new file mode 100644 index 000000000..6fb4baac3 --- /dev/null +++ b/src/boost/boost/atomic/detail/cas_based_exchange.hpp @@ -0,0 +1,50 @@ +/* + * 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) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/cas_based_exchange.hpp + * + * This header contains CAS-based implementation of exchange operation. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAS_BASED_EXCHANGE_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAS_BASED_EXCHANGE_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base > +struct cas_based_exchange : + public Base +{ + typedef typename Base::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val; + atomics::detail::non_atomic_load(storage, old_val); + while (!Base::compare_exchange_weak(storage, old_val, v, order, memory_order_relaxed)) {} + return old_val; + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CAS_BASED_EXCHANGE_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/classify.hpp b/src/boost/boost/atomic/detail/classify.hpp new file mode 100644 index 000000000..68096e72d --- /dev/null +++ b/src/boost/boost/atomic/detail/classify.hpp @@ -0,0 +1,90 @@ +/* + * 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) + * + * Copyright (c) 2020-2021 Andrey Semashev + */ +/*! + * \file atomic/detail/classify.hpp + * + * This header contains type traits for type classification. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CLASSIFY_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CLASSIFY_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename T, bool IsFunction = atomics::detail::is_function< T >::value > +struct classify_pointer +{ + typedef void* type; +}; + +template< typename T > +struct classify_pointer< T, true > +{ + typedef void type; +}; + +template< + typename T, + bool IsInt = atomics::detail::is_integral< T >::value, + bool IsFloat = atomics::detail::is_floating_point< T >::value, + bool IsEnum = atomics::detail::is_enum< T >::value +> +struct classify +{ + typedef void type; +}; + +template< typename T > +struct classify< T, true, false, false > { typedef int type; }; + +#if !defined(BOOST_ATOMIC_NO_FLOATING_POINT) +template< typename T > +struct classify< T, false, true, false > { typedef float type; }; +#endif + +template< typename T > +struct classify< T, false, false, true > { typedef const int type; }; + +template< typename T > +struct classify< T*, false, false, false > { typedef typename classify_pointer< T >::type type; }; + +template< > +struct classify< void*, false, false, false > { typedef void type; }; + +template< > +struct classify< const void*, false, false, false > { typedef void type; }; + +template< > +struct classify< volatile void*, false, false, false > { typedef void type; }; + +template< > +struct classify< const volatile void*, false, false, false > { typedef void type; }; + +template< typename T, typename U > +struct classify< T U::*, false, false, false > { typedef void type; }; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CLASSIFY_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/config.hpp b/src/boost/boost/atomic/detail/config.hpp new file mode 100644 index 000000000..62872b545 --- /dev/null +++ b/src/boost/boost/atomic/detail/config.hpp @@ -0,0 +1,143 @@ +/* + * 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) + * + * Copyright (c) 2012 Hartmut Kaiser + * Copyright (c) 2014-2018, 2020-2021 Andrey Semashev + */ +/*! + * \file atomic/detail/config.hpp + * + * This header defines configuraion macros for Boost.Atomic + */ + +#ifndef BOOST_ATOMIC_DETAIL_CONFIG_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CONFIG_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__CUDACC__) +// nvcc does not support alternatives ("q,m") in asm statement constraints +#define BOOST_ATOMIC_DETAIL_NO_ASM_CONSTRAINT_ALTERNATIVES +// nvcc does not support condition code register ("cc") clobber in asm statements +#define BOOST_ATOMIC_DETAIL_NO_ASM_CLOBBER_CC +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_NO_ASM_CLOBBER_CC) +#define BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC "cc" +#define BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "cc", +#else +#define BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC +#define BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA +#endif + +#if (defined(__i386__) || defined(__x86_64__)) && (defined(__clang__) || (defined(BOOST_GCC) && BOOST_GCC < 40500) || defined(__SUNPRO_CC)) +// This macro indicates that the compiler does not support allocating eax:edx or rax:rdx register pairs ("A") in asm blocks +#define BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS +#endif + +#if defined(__i386__) && (defined(__PIC__) || defined(__PIE__)) && !(defined(__clang__) || (defined(BOOST_GCC) && BOOST_GCC >= 50100)) +// This macro indicates that asm blocks should preserve ebx value unchanged. Some compilers are able to maintain ebx themselves +// around the asm blocks. For those compilers we don't need to save/restore ebx in asm blocks. +#define BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX +#endif + +#if defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#if !(defined(BOOST_LIBSTDCXX11) && BOOST_LIBSTDCXX_VERSION >= 40700) /* libstdc++ from gcc >= 4.7 in C++11 mode */ +// This macro indicates that there is not even a basic standard header that is sufficient for most Boost.Atomic needs. +#define BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS +#endif +#endif // defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) + +#if defined(BOOST_NO_CXX11_ALIGNAS) ||\ + (defined(BOOST_GCC) && BOOST_GCC < 40900) ||\ + (defined(BOOST_MSVC) && BOOST_MSVC < 1910 && defined(_M_IX86)) +// gcc prior to 4.9 doesn't support alignas with a constant expression as an argument. +// MSVC 14.0 does support alignas, but in 32-bit mode emits "error C2719: formal parameter with requested alignment of N won't be aligned" for N > 4, +// when aligned types are used in function arguments, even though the std::max_align_t type has alignment of 8. +#define BOOST_ATOMIC_DETAIL_NO_CXX11_ALIGNAS +#endif + +#if defined(BOOST_NO_CXX11_CONSTEXPR) || (defined(BOOST_GCC) && BOOST_GCC < 40800) +// This macro indicates that the compiler doesn't support constexpr constructors that initialize one member +// of an anonymous union member of the class. +#define BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_UNION_INIT +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_UNION_INIT) +#define BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT BOOST_CONSTEXPR +#else +#define BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT +#endif + +// Enable pointer/reference casts between storage and value when possible. +// Note: Despite that MSVC does not employ strict aliasing rules for optimizations +// and does not require an explicit markup for types that may alias, we still don't +// enable the optimization for this compiler because at least MSVC-8 and 9 are known +// to generate broken code sometimes when casts are used. +#define BOOST_ATOMIC_DETAIL_MAY_ALIAS BOOST_MAY_ALIAS +#if !defined(BOOST_NO_MAY_ALIAS) +#define BOOST_ATOMIC_DETAIL_STORAGE_TYPE_MAY_ALIAS +#endif + +#if defined(__GCC_ASM_FLAG_OUTPUTS__) +// The compiler supports output values in flag registers. +// See: https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html, Section 6.44.3. +#define BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS +#endif + +#if defined(BOOST_INTEL) || (defined(BOOST_GCC) && BOOST_GCC < 40700) ||\ + (defined(BOOST_CLANG) && !defined(__apple_build_version__) && (__clang_major__ * 100 + __clang_minor__) < 302) ||\ + (defined(__clang__) && defined(__apple_build_version__) && (__clang_major__ * 100 + __clang_minor__) < 402) +// Intel compiler (at least 18.0 update 1) breaks if noexcept specification is used in defaulted function declarations: +// error: the default constructor of "boost::atomics::atomic" cannot be referenced -- it is a deleted function +// GCC 4.6 doesn't seem to support that either. Clang 3.1 deduces wrong noexcept for the defaulted function and fails as well. +#define BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL +#define BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL BOOST_NOEXCEPT +#else +#define BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL BOOST_NOEXCEPT +#define BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL +#endif + +#if defined(__has_builtin) +#if __has_builtin(__builtin_constant_p) +#define BOOST_ATOMIC_DETAIL_IS_CONSTANT(x) __builtin_constant_p(x) +#endif +#if __has_builtin(__builtin_clear_padding) +#define BOOST_ATOMIC_DETAIL_CLEAR_PADDING(x) __builtin_clear_padding(x) +#elif __has_builtin(__builtin_zero_non_value_bits) +#define BOOST_ATOMIC_DETAIL_CLEAR_PADDING(x) __builtin_zero_non_value_bits(x) +#endif +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_IS_CONSTANT) && defined(__GNUC__) +#define BOOST_ATOMIC_DETAIL_IS_CONSTANT(x) __builtin_constant_p(x) +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_IS_CONSTANT) +#define BOOST_ATOMIC_DETAIL_IS_CONSTANT(x) false +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_CLEAR_PADDING) && defined(BOOST_MSVC) && BOOST_MSVC >= 1927 +// Note that as of MSVC 19.29 this intrinsic does not clear padding in unions: +// https://developercommunity.visualstudio.com/t/__builtin_zero_non_value_bits-does-not-c/1551510 +#define BOOST_ATOMIC_DETAIL_CLEAR_PADDING(x) __builtin_zero_non_value_bits(x) +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_CLEAR_PADDING) +#define BOOST_ATOMIC_NO_CLEAR_PADDING +#define BOOST_ATOMIC_DETAIL_CLEAR_PADDING(x) +#endif + +#if (defined(__BYTE_ORDER__) && defined(__FLOAT_WORD_ORDER__) && __BYTE_ORDER__ == __FLOAT_WORD_ORDER__) ||\ + defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64) +// This macro indicates that integer and floating point endianness is the same +#define BOOST_ATOMIC_DETAIL_INT_FP_ENDIAN_MATCH +#endif + +#endif // BOOST_ATOMIC_DETAIL_CONFIG_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_operations.hpp b/src/boost/boost/atomic/detail/core_arch_operations.hpp new file mode 100644 index 000000000..4bcb45dcc --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_operations.hpp @@ -0,0 +1,50 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_operations.hpp + * + * This header defines core atomic operations, including the emulated version. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPERATIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPERATIONS_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +#if defined(BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND_HEADER) +#include BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND_HEADER(boost/atomic/detail/core_arch_ops_) +#endif + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Default specialization that falls back to lock-based implementation +template< std::size_t Size, bool Signed, bool Interprocess > +struct core_arch_operations : + public core_operations_emulated< Size, storage_traits< Size >::alignment, Signed, Interprocess > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPERATIONS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_operations_fwd.hpp b/src/boost/boost/atomic/detail/core_arch_operations_fwd.hpp new file mode 100644 index 000000000..884e4d039 --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_operations_fwd.hpp @@ -0,0 +1,38 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_operations_fwd.hpp + * + * This header contains forward declaration of the \c core_arch_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPERATIONS_FWD_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPERATIONS_FWD_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< std::size_t Size, bool Signed, bool Interprocess > +struct core_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPERATIONS_FWD_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp b/src/boost/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp new file mode 100644 index 000000000..2284169ef --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp @@ -0,0 +1,1121 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_ops_gcc_aarch32.hpp + * + * This header contains implementation of the \c core_arch_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH32_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH32_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +// ARMv8 (AArch32) instruction set is similar to ARMv7, but adds +// lda(b/h) and ldaex(b/h/d) instructions for acquire loads and +// stl(b/h) and stlex(b/h/d) instructions for release stores. This +// makes explicit memory fences unnecessary for implementation of +// the majority of the atomic operations. +// +// ARMv8 deprecates applying "it" hints to some instructions, including +// strex. It also deprecates "it" hints applying to more than one +// of the following conditional instructions. This means we have to +// use conditional jumps instead of making other instructions conditional. + +struct core_arch_operations_gcc_aarch32_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 1u, Signed, Interprocess > : + public core_arch_operations_gcc_aarch32_base +{ + typedef typename storage_traits< 1u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 1u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 1u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + { + __asm__ __volatile__ + ( + "stlb %[value], %[storage]\n\t" + : [storage] "=Q" (storage) + : [value] "r" (v) + : "memory" + ); + } + else + { + storage = v; + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { + __asm__ __volatile__ + ( + "ldab %[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + else + { + v = storage; + } + + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[original], %[storage]\n\t"\ + "st" st_mo "exb %[tmp], %[value], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [tmp] "=&r" (tmp), [original] "=&r" (original), [storage] "+Q" (storage)\ + : [value] "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; + bool success; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "uxtb %[expected], %[expected]\n\t"\ + "mov %[success], #0\n\t"\ + "ld" ld_mo "exb %[original], %[storage]\n\t"\ + "cmp %[original], %[expected]\n\t"\ + "bne 1f\n\t"\ + "st" st_mo "exb %[success], %[desired], %[storage]\n\t"\ + "eor %[success], %[success], #1\n\t"\ + "1:\n\t"\ + : [original] "=&r" (original), [success] "=&r" (success), [storage] "+Q" (storage)\ + : [expected] "r" (expected), [desired] "r" (desired)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(success_order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; + bool success; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "uxtb %[expected], %[expected]\n\t"\ + "mov %[success], #0\n\t"\ + "1:\n\t"\ + "ld" ld_mo "exb %[original], %[storage]\n\t"\ + "cmp %[original], %[expected]\n\t"\ + "bne 2f\n\t"\ + "st" st_mo "exb %[success], %[desired], %[storage]\n\t"\ + "eors %[success], %[success], #1\n\t"\ + "beq 1b\n\t"\ + "2:\n\t"\ + : [original] "=&r" (original), [success] "=&r" (success), [storage] "+Q" (storage)\ + : [expected] "r" (expected), [desired] "r" (desired)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(success_order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[original], %[storage]\n\t"\ + "add %[result], %[original], %[value]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[original], %[storage]\n\t"\ + "sub %[result], %[original], %[value]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[original], %[storage]\n\t"\ + "and %[result], %[original], %[value]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[original], %[storage]\n\t"\ + "orr %[result], %[original], %[value]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[original], %[storage]\n\t"\ + "eor %[result], %[original], %[value]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 2u, Signed, Interprocess > : + public core_arch_operations_gcc_aarch32_base +{ + typedef typename storage_traits< 2u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 2u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 2u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + { + __asm__ __volatile__ + ( + "stlh %[value], %[storage]\n\t" + : [storage] "=Q" (storage) + : [value] "r" (v) + : "memory" + ); + } + else + { + storage = v; + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { + __asm__ __volatile__ + ( + "ldah %[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + else + { + v = storage; + } + + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[original], %[storage]\n\t"\ + "st" st_mo "exh %[tmp], %[value], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [tmp] "=&r" (tmp), [original] "=&r" (original), [storage] "+Q" (storage)\ + : [value] "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; + bool success; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "uxth %[expected], %[expected]\n\t"\ + "mov %[success], #0\n\t"\ + "ld" ld_mo "exh %[original], %[storage]\n\t"\ + "cmp %[original], %[expected]\n\t"\ + "bne 1f\n\t"\ + "st" st_mo "exh %[success], %[desired], %[storage]\n\t"\ + "eor %[success], %[success], #1\n\t"\ + "1:\n\t"\ + : [original] "=&r" (original), [success] "=&r" (success), [storage] "+Q" (storage)\ + : [expected] "r" (expected), [desired] "r" (desired)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(success_order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; + bool success; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "uxth %[expected], %[expected]\n\t"\ + "mov %[success], #0\n\t"\ + "1:\n\t"\ + "ld" ld_mo "exh %[original], %[storage]\n\t"\ + "cmp %[original], %[expected]\n\t"\ + "bne 2f\n\t"\ + "st" st_mo "exh %[success], %[desired], %[storage]\n\t"\ + "eors %[success], %[success], #1\n\t"\ + "beq 1b\n\t"\ + "2:\n\t"\ + : [original] "=&r" (original), [success] "=&r" (success), [storage] "+Q" (storage)\ + : [expected] "r" (expected), [desired] "r" (desired)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(success_order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[original], %[storage]\n\t"\ + "add %[result], %[original], %[value]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[original], %[storage]\n\t"\ + "sub %[result], %[original], %[value]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[original], %[storage]\n\t"\ + "and %[result], %[original], %[value]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[original], %[storage]\n\t"\ + "orr %[result], %[original], %[value]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[original], %[storage]\n\t"\ + "eor %[result], %[original], %[value]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 4u, Signed, Interprocess > : + public core_arch_operations_gcc_aarch32_base +{ + typedef typename storage_traits< 4u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + { + __asm__ __volatile__ + ( + "stl %[value], %[storage]\n\t" + : [storage] "=Q" (storage) + : [value] "r" (v) + : "memory" + ); + } + else + { + storage = v; + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { + __asm__ __volatile__ + ( + "lda %[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + else + { + v = storage; + } + + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[original], %[storage]\n\t"\ + "st" st_mo "ex %[tmp], %[value], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [tmp] "=&r" (tmp), [original] "=&r" (original), [storage] "+Q" (storage)\ + : [value] "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; + bool success; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "mov %[success], #0\n\t"\ + "ld" ld_mo "ex %[original], %[storage]\n\t"\ + "cmp %[original], %[expected]\n\t"\ + "bne 1f\n\t"\ + "st" st_mo "ex %[success], %[desired], %[storage]\n\t"\ + "eor %[success], %[success], #1\n\t"\ + "1:\n\t"\ + : [original] "=&r" (original), [success] "=&r" (success), [storage] "+Q" (storage)\ + : [expected] "Ir" (expected), [desired] "r" (desired)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(success_order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; + bool success; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "mov %[success], #0\n\t"\ + "1:\n\t"\ + "ld" ld_mo "ex %[original], %[storage]\n\t"\ + "cmp %[original], %[expected]\n\t"\ + "bne 2f\n\t"\ + "st" st_mo "ex %[success], %[desired], %[storage]\n\t"\ + "eors %[success], %[success], #1\n\t"\ + "beq 1b\n\t"\ + "2:\n\t"\ + : [original] "=&r" (original), [success] "=&r" (success), [storage] "+Q" (storage)\ + : [expected] "Ir" (expected), [desired] "r" (desired)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(success_order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[original], %[storage]\n\t"\ + "add %[result], %[original], %[value]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[original], %[storage]\n\t"\ + "sub %[result], %[original], %[value]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[original], %[storage]\n\t"\ + "and %[result], %[original], %[value]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[original], %[storage]\n\t"\ + "orr %[result], %[original], %[value]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[original], %[storage]\n\t"\ + "eor %[result], %[original], %[value]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + + +// Unlike 32-bit operations, for 64-bit loads and stores we must use ldrexd/strexd. +// Other instructions result in a non-atomic sequence of 32-bit or more fine-grained accesses. +// See "ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile", Section E2.2 "Atomicity in the ARM architecture". +// Section E2.3.7 "Memory barriers", subsection "Load-Acquire, Store-Release" extends atomicity guarantees given for ldrexd/strexd +// to the new ldaexd/stlexd instructions with acquire/release semantics. +// +// In the asm blocks below we have to use 32-bit register pairs to compose 64-bit values. In order to pass the 64-bit operands +// to/from asm blocks, we use undocumented gcc feature: the lower half (Rt) of the operand is accessible normally, via the numbered +// placeholder (e.g. %0), and the upper half (Rt2) - via the same placeholder with an 'H' after the '%' sign (e.g. %H0). +// See: http://hardwarebug.org/2010/07/06/arm-inline-asm-secrets/ +// +// The ldrexd and strexd instructions operate on pairs of registers, meaning that each load loads two integers from memory in +// successive address order, to the first and second registers in the pair, respectively, and store similarly stores two integers. +// The order of these integers does not depend on the active endianness mode (although the byte order in the integers themselves +// obviously does depend on endianness). This means we need to account for the current endianness mode ourselves, where it matters. + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_arch_operations_gcc_aarch32_base +{ + typedef typename storage_traits< 8u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + exchange(storage, v, order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { + __asm__ __volatile__ + ( + "ldaexd %0, %H0, %1\n\t" + : "=&r" (original) // %0 + : "Q" (storage) // %1 + ); + } + else + { + __asm__ __volatile__ + ( + "ldrexd %0, %H0, %1\n\t" + : "=&r" (original) // %0 + : "Q" (storage) // %1 + ); + } + + return original; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %1, %H1, %2\n\t"\ + "st" st_mo "exd %0, %3, %H3, %2\n\t"\ + "teq %0, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (tmp), "=&r" (original), "+Q" (storage)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; + bool success; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "mov %1, #0\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "cmp %0, %3\n\t"\ + "it eq\n\t"\ + "cmpeq %H0, %H3\n\t"\ + "bne 1f\n\t"\ + "st" st_mo "exd %1, %4, %H4, %2\n\t"\ + "eor %1, %1, #1\n\t"\ + "1:\n\t"\ + : "=&r" (original), "=&r" (success), "+Q" (storage)\ + : "r" (expected), "r" (desired)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(success_order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + expected = original; + + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; + bool success; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "mov %1, #0\n\t"\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "cmp %0, %3\n\t"\ + "it eq\n\t"\ + "cmpeq %H0, %H3\n\t"\ + "bne 2f\n\t"\ + "st" st_mo "exd %1, %4, %H4, %2\n\t"\ + "eors %1, %1, #1\n\t"\ + "beq 1b\n\t"\ + "2:\n\t"\ + : "=&r" (original), "=&r" (success), "+Q" (storage)\ + : "r" (expected), "r" (desired)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(success_order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + expected = original; + + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "adds " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(3) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(0) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(4) "\n\t"\ + "adc " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(3) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(0) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(4) "\n\t"\ + "st" st_mo "exd %1, %3, %H3, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (original), "=&r" (tmp), "+Q" (storage), "=&r" (result)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "subs " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(3) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(0) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(4) "\n\t"\ + "sbc " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(3) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(0) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(4) "\n\t"\ + "st" st_mo "exd %1, %3, %H3, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (original), "=&r" (tmp), "+Q" (storage), "=&r" (result)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "and %3, %0, %4\n\t"\ + "and %H3, %H0, %H4\n\t"\ + "st" st_mo "exd %1, %3, %H3, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (original), "=&r" (tmp), "+Q" (storage), "=&r" (result)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "orr %3, %0, %4\n\t"\ + "orr %H3, %H0, %H4\n\t"\ + "st" st_mo "exd %1, %3, %H3, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (original), "=&r" (tmp), "+Q" (storage), "=&r" (result)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "eor %3, %0, %4\n\t"\ + "eor %H3, %H0, %H4\n\t"\ + "st" st_mo "exd %1, %3, %H3, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (original), "=&r" (tmp), "+Q" (storage), "=&r" (result)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH32_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp b/src/boost/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp new file mode 100644 index 000000000..1c39fb6cf --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp @@ -0,0 +1,1909 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_ops_gcc_aarch64.hpp + * + * This header contains implementation of the \c core_arch_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH64_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH64_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +struct core_arch_operations_gcc_aarch64_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; +}; + +// Due to bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63359 we have to explicitly specify size of the registers +// to use in the asm blocks below. Use %w prefix for the 32-bit registers and %x for 64-bit ones. + +// A note about compare_exchange implementations. Since failure_order must never include release semantics and +// must not be stronger than success_order, we can always use success_order to select instructions. Thus, when +// CAS fails, only the acquire semantics of success_order is applied, which may be stronger than failure_order. + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 1u, Signed, Interprocess > : + public core_arch_operations_gcc_aarch64_base +{ + typedef typename storage_traits< 1u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 1u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 1u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + { + __asm__ __volatile__ + ( + "stlrb %w[value], %[storage]\n\t" + : [storage] "=Q" (storage) + : [value] "r" (v) + : "memory" + ); + } + else + { + storage = v; + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_RCPC) + if (order == memory_order_consume || order == memory_order_acquire) + { + __asm__ __volatile__ + ( + "ldaprb %w[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + else +#endif + { + __asm__ __volatile__ + ( + "ldarb %w[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + } + else + { + v = storage; + } + + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "swp" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[original], %[storage]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[value], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + original = expected; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "cas" ld_mo st_mo "b %w[original], %w[desired], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "+r" (original)\ + : [desired] "r" (desired)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) + bool success = original == expected; +#else + bool success; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "uxtb %w[expected], %w[expected]\n\t"\ + "mov %w[success], #0\n\t"\ + "ld" ld_mo "xrb %w[original], %[storage]\n\t"\ + "cmp %w[original], %w[expected]\n\t"\ + "b.ne 1f\n\t"\ + "st" st_mo "xrb %w[success], %w[desired], %[storage]\n\t"\ + "eor %w[success], %w[success], #1\n\t"\ + "1:\n\t"\ + : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [desired] "r" (desired), [expected] "r" (expected)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) +#endif +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + original = expected; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "cas" ld_mo st_mo "b %w[original], %w[desired], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "+r" (original)\ + : [desired] "r" (desired)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) + bool success = original == expected; +#else + bool success; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "uxtb %w[expected], %w[expected]\n\t"\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[original], %[storage]\n\t"\ + "cmp %w[original], %w[expected]\n\t"\ + "b.ne 2f\n\t"\ + "st" st_mo "xrb %w[success], %w[desired], %[storage]\n\t"\ + "cbnz %w[success], 1b\n\t"\ + "2:\n\t"\ + "cset %w[success], eq\n\t"\ + : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [desired] "r" (desired), [expected] "r" (expected)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) +#endif +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldadd" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[original], %[storage]\n\t"\ + "add %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Ir" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + v = -v; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldadd" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); + +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[original], %[storage]\n\t"\ + "sub %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Ir" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + v = ~v; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldclr" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[original], %[storage]\n\t"\ + "and %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Kr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldset" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[original], %[storage]\n\t"\ + "orr %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Kr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldeor" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[original], %[storage]\n\t"\ + "eor %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Kr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 2u, Signed, Interprocess > : + public core_arch_operations_gcc_aarch64_base +{ + typedef typename storage_traits< 2u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 2u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 2u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + { + __asm__ __volatile__ + ( + "stlrh %w[value], %[storage]\n\t" + : [storage] "=Q" (storage) + : [value] "r" (v) + : "memory" + ); + } + else + { + storage = v; + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_RCPC) + if (order == memory_order_consume || order == memory_order_acquire) + { + __asm__ __volatile__ + ( + "ldaprh %w[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + else +#endif + { + __asm__ __volatile__ + ( + "ldarh %w[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + } + else + { + v = storage; + } + + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "swp" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[original], %[storage]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[value], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + original = expected; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "cas" ld_mo st_mo "h %w[original], %w[desired], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "+r" (original)\ + : [desired] "r" (desired)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) + bool success = original == expected; +#else + bool success; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "uxth %w[expected], %w[expected]\n\t"\ + "mov %w[success], #0\n\t"\ + "ld" ld_mo "xrh %w[original], %[storage]\n\t"\ + "cmp %w[original], %w[expected]\n\t"\ + "b.ne 1f\n\t"\ + "st" st_mo "xrh %w[success], %w[desired], %[storage]\n\t"\ + "eor %w[success], %w[success], #1\n\t"\ + "1:\n\t"\ + : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [desired] "r" (desired), [expected] "r" (expected)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) +#endif +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + original = expected; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "cas" ld_mo st_mo "h %w[original], %w[desired], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "+r" (original)\ + : [desired] "r" (desired)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) + bool success = original == expected; +#else + bool success; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "uxth %w[expected], %w[expected]\n\t"\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[original], %[storage]\n\t"\ + "cmp %w[original], %w[expected]\n\t"\ + "b.ne 2f\n\t"\ + "st" st_mo "xrh %w[success], %w[desired], %[storage]\n\t"\ + "cbnz %w[success], 1b\n\t"\ + "2:\n\t"\ + "cset %w[success], eq\n\t"\ + : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [desired] "r" (desired), [expected] "r" (expected)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) +#endif +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldadd" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[original], %[storage]\n\t"\ + "add %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Ir" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + v = -v; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldadd" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); + +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[original], %[storage]\n\t"\ + "sub %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Ir" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + v = ~v; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldclr" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[original], %[storage]\n\t"\ + "and %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Kr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldset" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[original], %[storage]\n\t"\ + "orr %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Kr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldeor" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[original], %[storage]\n\t"\ + "eor %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Kr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 4u, Signed, Interprocess > : + public core_arch_operations_gcc_aarch64_base +{ + typedef typename storage_traits< 4u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + { + __asm__ __volatile__ + ( + "stlr %w[value], %[storage]\n\t" + : [storage] "=Q" (storage) + : [value] "r" (v) + : "memory" + ); + } + else + { + storage = v; + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_RCPC) + if (order == memory_order_consume || order == memory_order_acquire) + { + __asm__ __volatile__ + ( + "ldapr %w[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + else +#endif + { + __asm__ __volatile__ + ( + "ldar %w[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + } + else + { + v = storage; + } + + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "swp" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[original], %[storage]\n\t"\ + "st" st_mo "xr %w[tmp], %w[value], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + original = expected; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "cas" ld_mo st_mo " %w[original], %w[desired], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "+r" (original)\ + : [desired] "r" (desired)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) + bool success = original == expected; +#else + bool success; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "mov %w[success], #0\n\t"\ + "ld" ld_mo "xr %w[original], %[storage]\n\t"\ + "cmp %w[original], %w[expected]\n\t"\ + "b.ne 1f\n\t"\ + "st" st_mo "xr %w[success], %w[desired], %[storage]\n\t"\ + "eor %w[success], %w[success], #1\n\t"\ + "1:\n\t"\ + : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [desired] "r" (desired), [expected] "Ir" (expected)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) +#endif +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + original = expected; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "cas" ld_mo st_mo " %w[original], %w[desired], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "+r" (original)\ + : [desired] "r" (desired)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) + bool success = original == expected; +#else + bool success; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[original], %[storage]\n\t"\ + "cmp %w[original], %w[expected]\n\t"\ + "b.ne 2f\n\t"\ + "st" st_mo "xr %w[success], %w[desired], %[storage]\n\t"\ + "cbnz %w[success], 1b\n\t"\ + "2:\n\t"\ + "cset %w[success], eq\n\t"\ + : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [desired] "r" (desired), [expected] "Ir" (expected)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) +#endif +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldadd" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[original], %[storage]\n\t"\ + "add %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Ir" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + v = -v; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldadd" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); + +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[original], %[storage]\n\t"\ + "sub %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Ir" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + v = ~v; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldclr" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[original], %[storage]\n\t"\ + "and %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Kr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldset" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[original], %[storage]\n\t"\ + "orr %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Kr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldeor" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[original], %[storage]\n\t"\ + "eor %w[result], %w[original], %w[value]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Kr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_arch_operations_gcc_aarch64_base +{ + typedef typename storage_traits< 8u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + { + __asm__ __volatile__ + ( + "stlr %x[value], %[storage]\n\t" + : [storage] "=Q" (storage) + : [value] "r" (v) + : "memory" + ); + } + else + { + storage = v; + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_RCPC) + if (order == memory_order_consume || order == memory_order_acquire) + { + __asm__ __volatile__ + ( + "ldapr %x[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + else +#endif + { + __asm__ __volatile__ + ( + "ldar %x[value], %[storage]\n\t" + : [value] "=r" (v) + : [storage] "Q" (storage) + : "memory" + ); + } + } + else + { + v = storage; + } + + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "swp" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[original], %[storage]\n\t"\ + "st" st_mo "xr %w[tmp], %x[value], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + original = expected; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "cas" ld_mo st_mo " %x[original], %x[desired], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "+r" (original)\ + : [desired] "r" (desired)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) + bool success = original == expected; +#else + bool success; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "mov %w[success], #0\n\t"\ + "ld" ld_mo "xr %x[original], %[storage]\n\t"\ + "cmp %x[original], %x[expected]\n\t"\ + "b.ne 1f\n\t"\ + "st" st_mo "xr %w[success], %x[desired], %[storage]\n\t"\ + "eor %w[success], %w[success], #1\n\t"\ + "1:\n\t"\ + : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [desired] "r" (desired), [expected] "Ir" (expected)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) +#endif +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + original = expected; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "cas" ld_mo st_mo " %x[original], %x[desired], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "+r" (original)\ + : [desired] "r" (desired)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) + bool success = original == expected; +#else + bool success; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[original], %[storage]\n\t"\ + "cmp %x[original], %x[expected]\n\t"\ + "b.ne 2f\n\t"\ + "st" st_mo "xr %w[success], %x[desired], %[storage]\n\t"\ + "cbnz %w[success], 1b\n\t"\ + "2:\n\t"\ + "cset %w[success], eq\n\t"\ + : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [desired] "r" (desired), [expected] "Ir" (expected)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) +#endif +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + expected = original; + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldadd" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[original], %[storage]\n\t"\ + "add %x[result], %x[original], %x[value]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Ir" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + v = -v; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldadd" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); + +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[original], %[storage]\n\t"\ + "sub %x[result], %x[original], %x[value]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Ir" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + v = ~v; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldclr" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[original], %[storage]\n\t"\ + "and %x[result], %x[original], %x[value]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Lr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldset" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[original], %[storage]\n\t"\ + "orr %x[result], %x[original], %x[value]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Lr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "ldeor" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\ + : [storage] "+Q" (storage), [original] "=r" (original)\ + : [value] "r" (v)\ + : "memory"\ + ); +#else + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[original], %[storage]\n\t"\ + "eor %x[result], %x[original], %x[value]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : [value] "Lr" (v)\ + : "memory"\ + ); +#endif + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +// For 128-bit atomic operations we always have to use ldxp+stxp (optionally, with acquire/release semantics), even in load and store operations. +// ARM Architecture Reference Manual Armv8, for Armv8-A architecture profile, Section B2.2.1 "Requirements for single-copy atomicity" +// specifies that ldxp does not guarantee an atomic load, and we have to perform ldxp+stxp loop to ensure that the loaded value +// is consistent with a previous atomic store. +// +// The ldxp and stxp instructions operate on pairs of registers, meaning that each load loads two integers from memory in +// successive address order, to the first and second registers in the pair, respectively, and store similarly stores two integers. +// The order of these integers does not depend on the active endianness mode (although the byte order in the integers themselves +// obviously does depend on endianness). This means we need to account for the current endianness mode ourselves, where it matters. +// +// Unlike AArch32/A32 or ARMv7, ldxp/stxp do not require adjacent even+odd registers in the pair and accept any two different +// registers. Still, it may be more preferable to select the adjacent registers as 128-bit objects are represented by two adjacent +// registers in the ABI. Unfortunately, clang 10 and probably older doesn't seem to support allocating register pairs in the asm blocks, +// like in ARMv7. For now we use a union to convert between a pair of 64-bit elements and 128-bit storage. + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 16u, Signed, Interprocess > : + public core_arch_operations_gcc_aarch64_base +{ + typedef typename storage_traits< 16u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 16u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 16u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + // Union to convert between two 64-bit registers and a 128-bit storage + union storage_union + { + storage_type as_storage; + uint64_t as_uint64[2u]; + }; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + exchange(storage, v, order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_union v; + uint32_t tmp; + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { + __asm__ __volatile__ + ( + "1:\n\t" + "ldaxp %x[value_0], %x[value_1], %[storage]\n\t" + "stxp %w[tmp], %x[value_0], %x[value_1], %[storage]\n\t" + "cbnz %w[tmp], 1b\n\t" + : [tmp] "=&r" (tmp), [value_0] "=&r" (v.as_uint64[0u]), [value_1] "=&r" (v.as_uint64[1u]) + : [storage] "Q" (storage) + : "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "1:\n\t" + "ldxp %x[value_0], %x[value_1], %[storage]\n\t" + "stxp %w[tmp], %x[value_0], %x[value_1], %[storage]\n\t" + "cbnz %w[tmp], 1b\n\t" + : [tmp] "=&r" (tmp), [value_0] "=&r" (v.as_uint64[0u]), [value_1] "=&r" (v.as_uint64[1u]) + : [storage] "Q" (storage) + : "memory" + ); + } + + return v.as_storage; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union original; + storage_union value = { v }; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\ + "st" st_mo "xp %w[tmp], %x[value_0], %x[value_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u])\ + : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original.as_storage; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_union original; + storage_union e = { expected }; + storage_union d = { desired }; + bool success; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "mov %w[success], #0\n\t"\ + "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\ + "cmp %x[original_0], %x[expected_0]\n\t"\ + "ccmp %x[original_1], %x[expected_1], #0, eq\n\t"\ + "b.ne 1f\n\t"\ + "st" st_mo "xp %w[success], %x[desired_0], %x[desired_1], %[storage]\n\t"\ + "eor %w[success], %w[success], #1\n\t"\ + "1:\n\t"\ + : [success] "=&r" (success), [storage] "+Q" (storage), [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u])\ + : [desired_0] "r" (d.as_uint64[0u]), [desired_1] "r" (d.as_uint64[1u]), [expected_0] "r" (e.as_uint64[0u]), [expected_1] "r" (e.as_uint64[1u])\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + expected = original.as_storage; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_union original; + storage_union e = { expected }; + storage_union d = { desired }; + bool success; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\ + "cmp %x[original_0], %x[expected_0]\n\t"\ + "ccmp %x[original_1], %x[expected_1], #0, eq\n\t"\ + "b.ne 2f\n\t"\ + "st" st_mo "xp %w[success], %x[desired_0], %x[desired_1], %[storage]\n\t"\ + "cbnz %w[success], 1b\n\t"\ + "2:\n\t"\ + "cset %w[success], eq\n\t"\ + : [success] "=&r" (success), [storage] "+Q" (storage), [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u])\ + : [desired_0] "r" (d.as_uint64[0u]), [desired_1] "r" (d.as_uint64[1u]), [expected_0] "r" (e.as_uint64[0u]), [expected_1] "r" (e.as_uint64[1u])\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + expected = original.as_storage; + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union original; + storage_union value = { v }; + storage_union result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\ + "adds %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[original_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "]\n\t"\ + "adc %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[original_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original.as_storage; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union original; + storage_union value = { v }; + storage_union result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\ + "subs %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[original_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "]\n\t"\ + "sbc %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[original_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original.as_storage; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union original; + storage_union value = { v }; + storage_union result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\ + "and %x[result_0], %x[original_0], %x[value_0]\n\t"\ + "and %x[result_1], %x[original_1], %x[value_1]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : [value_0] "Lr" (value.as_uint64[0u]), [value_1] "Lr" (value.as_uint64[1u])\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original.as_storage; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union original; + storage_union value = { v }; + storage_union result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\ + "orr %x[result_0], %x[original_0], %x[value_0]\n\t"\ + "orr %x[result_1], %x[original_1], %x[value_1]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : [value_0] "Lr" (value.as_uint64[0u]), [value_1] "Lr" (value.as_uint64[1u])\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original.as_storage; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union original; + storage_union value = { v }; + storage_union result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\ + "eor %x[result_0], %x[original_0], %x[value_0]\n\t"\ + "eor %x[result_1], %x[original_1], %x[value_1]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : [value_0] "Lr" (value.as_uint64[0u]), [value_1] "Lr" (value.as_uint64[1u])\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original.as_storage; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH64_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp b/src/boost/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp new file mode 100644 index 000000000..d26d53da8 --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp @@ -0,0 +1,867 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_ops_gcc_alpha.hpp + * + * This header contains implementation of the \c core_arch_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_ALPHA_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_ALPHA_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +/* + Refer to http://h71000.www7.hp.com/doc/82final/5601/5601pro_004.html + (HP OpenVMS systems documentation) and the Alpha Architecture Reference Manual. + */ + +/* + NB: The most natural thing would be to write the increment/decrement + operators along the following lines: + + __asm__ __volatile__ + ( + "1: ldl_l %0,%1 \n" + "addl %0,1,%0 \n" + "stl_c %0,%1 \n" + "beq %0,1b\n" + : "=&b" (tmp) + : "m" (value) + : "cc" + ); + + However according to the comments on the HP website and matching + comments in the Linux kernel sources this defies branch prediction, + as the cpu assumes that backward branches are always taken; so + instead copy the trick from the Linux kernel, introduce a forward + branch and back again. + + I have, however, had a hard time measuring the difference between + the two versions in microbenchmarks -- I am leaving it in nevertheless + as it apparently does not hurt either. +*/ + +struct core_arch_operations_gcc_alpha_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + __asm__ __volatile__ ("mb" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + __asm__ __volatile__ ("mb" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("mb" ::: "memory"); + } +}; + + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 4u, Signed, Interprocess > : + public core_arch_operations_gcc_alpha_base +{ + typedef typename storage_traits< 4u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "mov %3, %1\n\t" + "ldl_l %0, %2\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (tmp) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + int success; + storage_type current; + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %2, %4\n\t" // current = *(&storage) + "cmpeq %2, %0, %3\n\t" // success = current == expected + "mov %2, %0\n\t" // expected = current + "beq %3, 2f\n\t" // if (success == 0) goto end + "stl_c %1, %4\n\t" // storage = desired; desired = store succeeded + "mov %1, %3\n\t" // success = desired + "2:\n\t" + : "+r" (expected), // %0 + "+r" (desired), // %1 + "=&r" (current), // %2 + "=&r" (success) // %3 + : "m" (storage) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + storage_type current, tmp; + fence_before(success_order); + __asm__ __volatile__ + ( + "1:\n\t" + "mov %5, %1\n\t" // tmp = desired + "ldl_l %2, %4\n\t" // current = *(&storage) + "cmpeq %2, %0, %3\n\t" // success = current == expected + "mov %2, %0\n\t" // expected = current + "beq %3, 2f\n\t" // if (success == 0) goto end + "stl_c %1, %4\n\t" // storage = tmp; tmp = store succeeded + "beq %1, 3f\n\t" // if (tmp == 0) goto retry + "mov %1, %3\n\t" // success = tmp + "2:\n\t" + + ".subsection 2\n\t" + "3: br 1b\n\t" + ".previous\n\t" + + : "+r" (expected), // %0 + "=&r" (tmp), // %1 + "=&r" (current), // %2 + "=&r" (success) // %3 + : "m" (storage), // %4 + "r" (desired) // %5 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "addl %0, %3, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "subl %0, %3, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "and %0, %3, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "bis %0, %3, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "xor %0, %3, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, 0, order); + } +}; + + +template< bool Interprocess > +struct core_arch_operations< 1u, false, Interprocess > : + public core_arch_operations< 4u, false, Interprocess > +{ + typedef core_arch_operations< 4u, false, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + base_type::fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "addl %0, %3, %1\n\t" + "zapnot %1, 1, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + base_type::fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "subl %0, %3, %1\n\t" + "zapnot %1, 1, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + +template< bool Interprocess > +struct core_arch_operations< 1u, true, Interprocess > : + public core_arch_operations< 4u, true, Interprocess > +{ + typedef core_arch_operations< 4u, true, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + base_type::fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "addl %0, %3, %1\n\t" + "sextb %1, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + base_type::fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "subl %0, %3, %1\n\t" + "sextb %1, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + + +template< bool Interprocess > +struct core_arch_operations< 2u, false, Interprocess > : + public core_arch_operations< 4u, false, Interprocess > +{ + typedef core_arch_operations< 4u, false, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + base_type::fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "addl %0, %3, %1\n\t" + "zapnot %1, 3, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + base_type::fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "subl %0, %3, %1\n\t" + "zapnot %1, 3, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + +template< bool Interprocess > +struct core_arch_operations< 2u, true, Interprocess > : + public core_arch_operations< 4u, true, Interprocess > +{ + typedef core_arch_operations< 4u, true, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + base_type::fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "addl %0, %3, %1\n\t" + "sextw %1, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + base_type::fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldl_l %0, %2\n\t" + "subl %0, %3, %1\n\t" + "sextw %1, %1\n\t" + "stl_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_arch_operations_gcc_alpha_base +{ + typedef typename storage_traits< 8u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "mov %3, %1\n\t" + "ldq_l %0, %2\n\t" + "stq_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (tmp) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + int success; + storage_type current; + __asm__ __volatile__ + ( + "1:\n\t" + "ldq_l %2, %4\n\t" // current = *(&storage) + "cmpeq %2, %0, %3\n\t" // success = current == expected + "mov %2, %0\n\t" // expected = current + "beq %3, 2f\n\t" // if (success == 0) goto end + "stq_c %1, %4\n\t" // storage = desired; desired = store succeeded + "mov %1, %3\n\t" // success = desired + "2:\n\t" + : "+r" (expected), // %0 + "+r" (desired), // %1 + "=&r" (current), // %2 + "=&r" (success) // %3 + : "m" (storage) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + storage_type current, tmp; + fence_before(success_order); + __asm__ __volatile__ + ( + "1:\n\t" + "mov %5, %1\n\t" // tmp = desired + "ldq_l %2, %4\n\t" // current = *(&storage) + "cmpeq %2, %0, %3\n\t" // success = current == expected + "mov %2, %0\n\t" // expected = current + "beq %3, 2f\n\t" // if (success == 0) goto end + "stq_c %1, %4\n\t" // storage = tmp; tmp = store succeeded + "beq %1, 3f\n\t" // if (tmp == 0) goto retry + "mov %1, %3\n\t" // success = tmp + "2:\n\t" + + ".subsection 2\n\t" + "3: br 1b\n\t" + ".previous\n\t" + + : "+r" (expected), // %0 + "=&r" (tmp), // %1 + "=&r" (current), // %2 + "=&r" (success) // %3 + : "m" (storage), // %4 + "r" (desired) // %5 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldq_l %0, %2\n\t" + "addq %0, %3, %1\n\t" + "stq_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldq_l %0, %2\n\t" + "subq %0, %3, %1\n\t" + "stq_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldq_l %0, %2\n\t" + "and %0, %3, %1\n\t" + "stq_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldq_l %0, %2\n\t" + "bis %0, %3, %1\n\t" + "stq_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n\t" + "ldq_l %0, %2\n\t" + "xor %0, %3, %1\n\t" + "stq_c %1, %2\n\t" + "beq %1, 2f\n\t" + + ".subsection 2\n\t" + "2: br 1b\n\t" + ".previous\n\t" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_ALPHA_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_ops_gcc_arm.hpp b/src/boost/boost/atomic/detail/core_arch_ops_gcc_arm.hpp new file mode 100644 index 000000000..d9f8ad0f9 --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_ops_gcc_arm.hpp @@ -0,0 +1,1417 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014, 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_ops_gcc_arm.hpp + * + * This header contains implementation of the \c core_arch_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_ARM_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +// From the ARM Architecture Reference Manual for architecture v6: +// +// LDREX{} , [] +// Specifies the destination register for the memory word addressed by +// Specifies the register containing the address. +// +// STREX{} , , [] +// Specifies the destination register for the returned status value. +// 0 if the operation updates memory +// 1 if the operation fails to update memory +// Specifies the register containing the word to be stored to memory. +// Specifies the register containing the address. +// Rd must not be the same register as Rm or Rn. +// +// ARM v7 is like ARM v6 plus: +// There are half-word and byte versions of the LDREX and STREX instructions, +// LDREXH, LDREXB, STREXH and STREXB. +// There are also double-word versions, LDREXD and STREXD. +// (Actually it looks like these are available from version 6k onwards.) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 4u, Signed, Interprocess > : + public core_arch_operations_gcc_arm_base +{ + typedef typename storage_traits< 4u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // load the original value + "strex %[tmp], %[value], %[storage]\n\t" // store the replacement, tmp = store failed + "teq %[tmp], #0\n\t" // check if store succeeded + "bne 1b\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [tmp] "=&l" (tmp), [original] "=&r" (original), [storage] "+Q" (storage) + : [value] "r" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + bool success = false; +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + uint32_t tmp; +#endif + storage_type original; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "cmp %[original], %[expected]\n\t" // flags = original==expected + "itt eq\n\t" // [hint that the following 2 instructions are conditional on flags.equal] + "strexeq %[success], %[desired], %[storage]\n\t" // if (flags.equal) *(&storage) = desired, success = store failed + "eoreq %[success], %[success], #1\n\t" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded) + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), + [success] "+r" (success), +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + [tmp] "=&l" (tmp), +#endif + [storage] "+Q" (storage) + : [expected] "Ir" (expected), + [desired] "r" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = original; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + bool success = false; +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + uint32_t tmp; +#endif + storage_type original; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "cmp %[original], %[expected]\n\t" // flags = original==expected + "bne 2f\n\t" // if (!flags.equal) goto end + "strex %[success], %[desired], %[storage]\n\t" // *(&storage) = desired, success = store failed + "eors %[success], %[success], #1\n\t" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0 + "beq 1b\n\t" // if (flags.equal) goto retry + "2:\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), + [success] "+r" (success), +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + [tmp] "=&l" (tmp), +#endif + [storage] "+Q" (storage) + : [expected] "Ir" (expected), + [desired] "r" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = original; + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "add %[result], %[original], %[value]\n\t" // result = original + value + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "sub %[result], %[original], %[value]\n\t" // result = original - value + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "and %[result], %[original], %[value]\n\t" // result = original & value + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "orr %[result], %[original], %[value]\n\t" // result = original | value + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "eor %[result], %[original], %[value]\n\t" // result = original ^ value + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 1u, Signed, Interprocess > : + public core_arch_operations_gcc_arm_base +{ + typedef typename storage_traits< 1u >::type storage_type; + typedef typename storage_traits< 4u >::type extended_storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 1u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 1u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + extended_storage_type original; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // load the original value and zero-extend to 32 bits + "strexb %[tmp], %[value], %[storage]\n\t" // store the replacement, tmp = store failed + "teq %[tmp], #0\n\t" // check if store succeeded + "bne 1b\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [tmp] "=&l" (tmp), [original] "=&r" (original), [storage] "+Q" (storage) + : [value] "r" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + bool success = false; +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + uint32_t tmp; +#endif + extended_storage_type original; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "cmp %[original], %[expected]\n\t" // flags = original==expected + "itt eq\n\t" // [hint that the following 2 instructions are conditional on flags.equal] + "strexbeq %[success], %[desired], %[storage]\n\t" // if (flags.equal) *(&storage) = desired, success = store failed + "eoreq %[success], %[success], #1\n\t" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded) + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), + [success] "+r" (success), +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + [tmp] "=&l" (tmp), +#endif + [storage] "+Q" (storage) + : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), + [desired] "r" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = static_cast< storage_type >(original); + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + bool success = false; +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + uint32_t tmp; +#endif + extended_storage_type original; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "cmp %[original], %[expected]\n\t" // flags = original==expected + "bne 2f\n\t" // if (!flags.equal) goto end + "strexb %[success], %[desired], %[storage]\n\t" // *(&storage) = desired, success = store failed + "eors %[success], %[success], #1\n\t" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0 + "beq 1b\n\t" // if (flags.equal) goto retry + "2:\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), + [success] "+r" (success), +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + [tmp] "=&l" (tmp), +#endif + [storage] "+Q" (storage) + : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), + [desired] "r" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = static_cast< storage_type >(original); + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "add %[result], %[original], %[value]\n\t" // result = original + value + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "sub %[result], %[original], %[value]\n\t" // result = original - value + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "and %[result], %[original], %[value]\n\t" // result = original & value + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "orr %[result], %[original], %[value]\n\t" // result = original | value + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "eor %[result], %[original], %[value]\n\t" // result = original ^ value + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +#else // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB) + +template< bool Interprocess > +struct core_arch_operations< 1u, false, Interprocess > : + public core_arch_operations< 4u, false, Interprocess > +{ + typedef core_arch_operations< 4u, false, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "add %[result], %[original], %[value]\n\t" // result = original + value + "uxtb %[result], %[result]\n\t" // zero extend result from 8 to 32 bits + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "sub %[result], %[original], %[value]\n\t" // result = original - value + "uxtb %[result], %[result]\n\t" // zero extend result from 8 to 32 bits + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + +template< bool Interprocess > +struct core_arch_operations< 1u, true, Interprocess > : + public core_arch_operations< 4u, true, Interprocess > +{ + typedef core_arch_operations< 4u, true, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "add %[result], %[original], %[value]\n\t" // result = original + value + "sxtb %[result], %[result]\n\t" // sign extend result from 8 to 32 bits + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "sub %[result], %[original], %[value]\n\t" // result = original - value + "sxtb %[result], %[result]\n\t" // sign extend result from 8 to 32 bits + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB) + +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 2u, Signed, Interprocess > : + public core_arch_operations_gcc_arm_base +{ + typedef typename storage_traits< 2u >::type storage_type; + typedef typename storage_traits< 4u >::type extended_storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 2u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 2u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + extended_storage_type original; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // load the original value and zero-extend to 32 bits + "strexh %[tmp], %[value], %[storage]\n\t" // store the replacement, tmp = store failed + "teq %[tmp], #0\n\t" // check if store succeeded + "bne 1b\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [tmp] "=&l" (tmp), [original] "=&r" (original), [storage] "+Q" (storage) + : [value] "r" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + bool success = false; +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + uint32_t tmp; +#endif + extended_storage_type original; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "cmp %[original], %[expected]\n\t" // flags = original==expected + "itt eq\n\t" // [hint that the following 2 instructions are conditional on flags.equal] + "strexheq %[success], %[desired], %[storage]\n\t" // if (flags.equal) *(&storage) = desired, success = store failed + "eoreq %[success], %[success], #1\n\t" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded) + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), + [success] "+r" (success), +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + [tmp] "=&l" (tmp), +#endif + [storage] "+Q" (storage) + : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), + [desired] "r" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = static_cast< storage_type >(original); + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + bool success = false; +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + uint32_t tmp; +#endif + extended_storage_type original; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "cmp %[original], %[expected]\n\t" // flags = original==expected + "bne 2f\n\t" // if (!flags.equal) goto end + "strexh %[success], %[desired], %[storage]\n\t" // *(&storage) = desired, success = store failed + "eors %[success], %[success], #1\n\t" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0 + "beq 1b\n\t" // if (flags.equal) goto retry + "2:\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), + [success] "+r" (success), +#if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + [tmp] "=&l" (tmp), +#endif + [storage] "+Q" (storage) + : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), + [desired] "r" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = static_cast< storage_type >(original); + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "add %[result], %[original], %[value]\n\t" // result = original + value + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "sub %[result], %[original], %[value]\n\t" // result = original - value + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "and %[result], %[original], %[value]\n\t" // result = original & value + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "orr %[result], %[original], %[value]\n\t" // result = original | value + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "eor %[result], %[original], %[value]\n\t" // result = original ^ value + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +#else // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH) + +template< bool Interprocess > +struct core_arch_operations< 2u, false, Interprocess > : + public core_arch_operations< 4u, false, Interprocess > +{ + typedef core_arch_operations< 4u, false, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "add %[result], %[original], %[value]\n\t" // result = original + value + "uxth %[result], %[result]\n\t" // zero extend result from 16 to 32 bits + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "sub %[result], %[original], %[value]\n\t" // result = original - value + "uxth %[result], %[result]\n\t" // zero extend result from 16 to 32 bits + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + +template< bool Interprocess > +struct core_arch_operations< 2u, true, Interprocess > : + public core_arch_operations< 4u, true, Interprocess > +{ + typedef core_arch_operations< 4u, true, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "add %[result], %[original], %[value]\n\t" // result = original + value + "sxth %[result], %[result]\n\t" // sign extend result from 16 to 32 bits + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "sub %[result], %[original], %[value]\n\t" // result = original - value + "sxth %[result], %[result]\n\t" // sign extend result from 16 to 32 bits + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH) + +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD) + +// Unlike 32-bit operations, for 64-bit loads and stores we must use ldrexd/strexd. +// Any other instructions result in a non-atomic sequence of 32-bit accesses. +// See "ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition", +// Section A3.5.3 "Atomicity in the ARM architecture". + +// In the asm blocks below we have to use 32-bit register pairs to compose 64-bit values. +// In order to pass the 64-bit operands to/from asm blocks, we use undocumented gcc feature: +// the lower half (Rt) of the operand is accessible normally, via the numbered placeholder (e.g. %0), +// and the upper half (Rt2) - via the same placeholder with an 'H' after the '%' sign (e.g. %H0). +// See: http://hardwarebug.org/2010/07/06/arm-inline-asm-secrets/ + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_arch_operations_gcc_arm_base +{ + typedef typename storage_traits< 8u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + exchange(storage, v, order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + // ARMv7 says ldrex (and other load-exclusive instructions) can be used without a matching strex, see + // "ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition", Section A3.4.5 "Load-Exclusive and Store-Exclusive usage restrictions". + storage_type original; +#if defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED) + __asm__ __volatile__ + ( + "ldrexd %0, %H0, %1\n\t" + : "=&r" (original) // %0 + : "Q" (storage) // %1 + ); +#else + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "ldrexd %1, %H1, %2\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original) // %1 + : "Q" (storage) // %2 + ); +#endif + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %2\n\t" // load the original value + "strexd %0, %3, %H3, %2\n\t" // store the replacement, tmp = store failed + "teq %0, #0\n\t" // check if store succeeded + "bne 1b\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "+Q" (storage) // %2 + : "r" (v) // %3 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + storage_type original; + bool success = false; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "cmp %1, %4\n\t" // flags = original.lo==expected.lo + "it eq\n\t" // [hint that the following 1 instruction is conditional on flags.equal] + "cmpeq %H1, %H4\n\t" // if (flags.equal) flags = original.hi==expected.hi + "bne 1f\n\t" + "strexd %2, %5, %H5, %3\n\t" // *(&storage) = desired, success = store failed + "eor %2, %2, #1\n\t" // success ^= 1 (i.e. make it 1 if store succeeded) + "1:\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "+r" (success), // %2 + "+Q" (storage) // %3 + : "r" (expected), // %4 + "r" (desired) // %5 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = original; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + storage_type original; + bool success = false; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "cmp %1, %4\n\t" // flags = original.lo==expected.lo + "it eq\n\t" // [hint that the following 1 instruction is conditional on flags.equal] + "cmpeq %H1, %H4\n\t" // if (flags.equal) flags = original.hi==expected.hi + "bne 2f\n\t" + "strexd %2, %5, %H5, %3\n\t" // *(&storage) = desired, success = store failed + "eors %2, %2, #1\n\t" // success ^= 1 (i.e. make it 1 if store succeeded), flags.equal = success == 0 + "beq 1b\n\t" // if (flags.equal) goto retry + "2:\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "+r" (success), // %2 + "+Q" (storage) // %3 + : "r" (expected), // %4 + "r" (desired) // %5 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = original; + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "adds " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(4) "\n\t" // result = original + value + "adc " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(4) "\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : "r" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "subs " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(4) "\n\t" // result = original - value + "sbc " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(4) "\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : "r" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "and %2, %1, %4\n\t" // result = original & value + "and %H2, %H1, %H4\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : "r" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "orr %2, %1, %4\n\t" // result = original | value + "orr %H2, %H1, %H4\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : "r" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "eor %2, %1, %4\n\t" // result = original ^ value + "eor %H2, %H1, %H4\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : "r" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp b/src/boost/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp new file mode 100644 index 000000000..b37d99d8c --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp @@ -0,0 +1,1218 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_ops_gcc_ppc.hpp + * + * This header contains implementation of the \c core_arch_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_PPC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_PPC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +// The implementation below uses information from this document: +// http://www.rdrop.com/users/paulmck/scalability/paper/N2745r.2010.02.19a.html + +/* + Refer to: Motorola: "Programming Environments Manual for 32-Bit + Implementations of the PowerPC Architecture", Appendix E: + "Synchronization Programming Examples" for an explanation of what is + going on here (can be found on the web at various places by the + name "MPCFPE32B.pdf", Google is your friend...) + + Most of the atomic operations map to instructions in a relatively + straight-forward fashion, but "load"s may at first glance appear + a bit strange as they map to: + + lwz %rX, addr + cmpw %rX, %rX + bne- 1f + 1: + + That is, the CPU is forced to perform a branch that "formally" depends + on the value retrieved from memory. This scheme has an overhead of + about 1-2 clock cycles per load, but it allows to map "acquire" to + the "isync" instruction instead of "sync" uniformly and for all type + of atomic operations. Since "isync" has a cost of about 15 clock + cycles, while "sync" hast a cost of about 50 clock cycles, the small + penalty to atomic loads more than compensates for this. + + Byte- and halfword-sized atomic values are implemented in two ways. + When 8 and 16-bit instructions are available (in Power8 and later), + they are used. Otherwise operations are realized by encoding the + value to be represented into a word, performing sign/zero extension + as appropriate. This means that after add/sub operations the value + needs fixing up to accurately preserve the wrap-around semantic of + the smaller type. (Nothing special needs to be done for the bit-wise + and the "exchange type" operators as the compiler already sees to + it that values carried in registers are extended appropriately and + everything falls into place naturally). + + The register constraint "b" instructs gcc to use any register + except r0; this is sometimes required because the encoding for + r0 is used to signify "constant zero" in a number of instructions, + making r0 unusable in this place. For simplicity this constraint + is used everywhere since I am to lazy to look this up on a + per-instruction basis, and ppc has enough registers for this not + to pose a problem. +*/ + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 4u, Signed, Interprocess > : + public core_arch_operations_gcc_ppc_base +{ + typedef typename storage_traits< 4u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + __asm__ __volatile__ + ( + "stw %1, %0\n\t" + : "+m" (storage) + : "r" (v) + ); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("sync" ::: "memory"); + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { + __asm__ __volatile__ + ( + "lwz %0, %1\n\t" + "cmpw %0, %0\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+4") + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "isync\n\t" + : "=&r" (v) + : "m" (storage) + : "cr0", "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lwz %0, %1\n\t" + : "=&r" (v) + : "m" (storage) + ); + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y1\n\t" + "stwcx. %2,%y1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-8") + : "=&b" (original), "+Z" (storage) + : "b" (v) + : "cr0" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n\t" + "lwarx %0,%y2\n\t" + "cmpw %0, %3\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+16") + "stwcx. %4,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+8") + "li %1, 1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("0") + "lwarx %0,%y2\n\t" + "cmpw %0, %3\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+16") + "stwcx. %4,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "0b", "-16") + "li %1, 1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "and %1,%0,%3\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "or %1,%0,%3\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "xor %1,%0,%3\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +#if defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LBARX_STBCX) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 1u, Signed, Interprocess > : + public core_arch_operations_gcc_ppc_base +{ + typedef typename storage_traits< 1u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 1u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 1u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + __asm__ __volatile__ + ( + "stb %1, %0\n\t" + : "+m" (storage) + : "r" (v) + ); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("sync" ::: "memory"); + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { + __asm__ __volatile__ + ( + "lbz %0, %1\n\t" + "cmpw %0, %0\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+4") + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "isync\n\t" + : "=&r" (v) + : "m" (storage) + : "cr0", "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lbz %0, %1\n\t" + : "=&r" (v) + : "m" (storage) + ); + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y1\n\t" + "stbcx. %2,%y1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-8") + : "=&b" (original), "+Z" (storage) + : "b" (v) + : "cr0" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n\t" + "lbarx %0,%y2\n\t" + "cmpw %0, %3\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+16") + "stbcx. %4,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+8") + "li %1, 1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("0") + "lbarx %0,%y2\n\t" + "cmpw %0, %3\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+16") + "stbcx. %4,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "0b", "-16") + "li %1, 1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "and %1,%0,%3\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "or %1,%0,%3\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "xor %1,%0,%3\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +#else // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LBARX_STBCX) + +template< bool Interprocess > +struct core_arch_operations< 1u, false, Interprocess > : + public core_arch_operations< 4u, false, Interprocess > +{ + typedef core_arch_operations< 4u, false, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + base_type::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "rlwinm %1, %1, 0, 0xff\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-16") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + base_type::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "rlwinm %1, %1, 0, 0xff\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-16") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + +template< bool Interprocess > +struct core_arch_operations< 1u, true, Interprocess > : + public core_arch_operations< 4u, true, Interprocess > +{ + typedef core_arch_operations< 4u, true, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + base_type::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "extsb %1, %1\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-16") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + base_type::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "extsb %1, %1\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-16") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LBARX_STBCX) + +#if defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LHARX_STHCX) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 2u, Signed, Interprocess > : + public core_arch_operations_gcc_ppc_base +{ + typedef typename storage_traits< 2u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 2u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 2u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + __asm__ __volatile__ + ( + "sth %1, %0\n\t" + : "+m" (storage) + : "r" (v) + ); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("sync" ::: "memory"); + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { + __asm__ __volatile__ + ( + "lhz %0, %1\n\t" + "cmpw %0, %0\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+4") + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "isync\n\t" + : "=&r" (v) + : "m" (storage) + : "cr0", "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lhz %0, %1\n\t" + : "=&r" (v) + : "m" (storage) + ); + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y1\n\t" + "sthcx. %2,%y1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-8") + : "=&b" (original), "+Z" (storage) + : "b" (v) + : "cr0" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n\t" + "lharx %0,%y2\n\t" + "cmpw %0, %3\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+16") + "sthcx. %4,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+8") + "li %1, 1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("0") + "lharx %0,%y2\n\t" + "cmpw %0, %3\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+16") + "sthcx. %4,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "0b", "-16") + "li %1, 1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "and %1,%0,%3\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "or %1,%0,%3\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "xor %1,%0,%3\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +#else // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LHARX_STHCX) + +template< bool Interprocess > +struct core_arch_operations< 2u, false, Interprocess > : + public core_arch_operations< 4u, false, Interprocess > +{ + typedef core_arch_operations< 4u, false, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + base_type::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "rlwinm %1, %1, 0, 0xffff\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-16") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + base_type::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "rlwinm %1, %1, 0, 0xffff\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-16") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + +template< bool Interprocess > +struct core_arch_operations< 2u, true, Interprocess > : + public core_arch_operations< 4u, true, Interprocess > +{ + typedef core_arch_operations< 4u, true, Interprocess > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + base_type::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "extsh %1, %1\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-16") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + base_type::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "extsh %1, %1\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-16") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + base_type::fence_after(order); + return original; + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LHARX_STHCX) + +#if defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LDARX_STDCX) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_arch_operations_gcc_ppc_base +{ + typedef typename storage_traits< 8u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + __asm__ __volatile__ + ( + "std %1, %0\n\t" + : "+m" (storage) + : "r" (v) + ); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("sync" ::: "memory"); + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + { + __asm__ __volatile__ + ( + "ld %0, %1\n\t" + "cmpd %0, %0\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+4") + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "isync\n\t" + : "=&b" (v) + : "m" (storage) + : "cr0", "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "ld %0, %1\n\t" + : "=&b" (v) + : "m" (storage) + ); + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y1\n\t" + "stdcx. %2,%y1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-8") + : "=&b" (original), "+Z" (storage) + : "b" (v) + : "cr0" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n\t" + "ldarx %0,%y2\n\t" + "cmpd %0, %3\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+16") + "stdcx. %4,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+8") + "li %1, 1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("0") + "ldarx %0,%y2\n\t" + "cmpd %0, %3\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1f", "+16") + "stdcx. %4,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "0b", "-16") + "li %1, 1\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "and %1,%0,%3\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "or %1,%0,%3\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "xor %1,%0,%3\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LDARX_STDCX) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_PPC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp b/src/boost/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp new file mode 100644 index 000000000..d3cd23ffe --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp @@ -0,0 +1,215 @@ +/* + * 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) + * + * Copyright (c) 2010 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_ops_gcc_sparc.hpp + * + * This header contains implementation of the \c core_arch_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_SPARC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_SPARC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +struct gcc_sparc_cas_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = true; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("membar #Sync" ::: "memory"); + else if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + __asm__ __volatile__ ("membar #StoreStore | #LoadStore" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("membar #Sync" ::: "memory"); + else if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + __asm__ __volatile__ ("membar #StoreStore | #LoadStore" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("membar #Sync" ::: "memory"); + } +}; + +template< bool Signed, bool Interprocess > +struct gcc_sparc_cas32 : + public gcc_sparc_cas_base +{ + typedef typename storage_traits< 4u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + storage_type previous = expected; + __asm__ __volatile__ + ( + "cas [%1], %2, %0" + : "+r" (desired) + : "r" (&storage), "r" (previous) + : "memory" + ); + const bool success = (desired == previous); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = desired; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + __asm__ __volatile__ + ( + "swap [%1], %0" + : "+r" (v) + : "r" (&storage) + : "memory" + ); + fence_after(order); + return v; + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 4u, Signed, Interprocess > : + public core_operations_cas_based< gcc_sparc_cas32< Signed, Interprocess > > +{ +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 1u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_arch_operations< 4u, Signed, Interprocess >, 1u, Signed > +{ +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 2u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_arch_operations< 4u, Signed, Interprocess >, 2u, Signed > +{ +}; + +template< bool Signed, bool Interprocess > +struct gcc_sparc_cas64 : + public gcc_sparc_cas_base +{ + typedef typename storage_traits< 8u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + storage_type previous = expected; + __asm__ __volatile__ + ( + "casx [%1], %2, %0" + : "+r" (desired) + : "r" (&storage), "r" (previous) + : "memory" + ); + const bool success = (desired == previous); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = desired; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_operations_cas_based< cas_based_exchange< gcc_sparc_cas64< Signed, Interprocess > > > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_ARCH_OPS_GCC_SPARC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_ops_gcc_x86.hpp b/src/boost/boost/atomic/detail/core_arch_ops_gcc_x86.hpp new file mode 100644 index 000000000..667618ed7 --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_ops_gcc_x86.hpp @@ -0,0 +1,1110 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_ops_gcc_x86.hpp + * + * This header contains implementation of the \c core_arch_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_X86_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) +#include +#include +#include +#include +#endif +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +struct core_arch_operations_gcc_x86_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + __asm__ __volatile__ ("" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + __asm__ __volatile__ ("" ::: "memory"); + } +}; + +template< std::size_t Size, bool Signed, bool Interprocess, typename Derived > +struct core_arch_operations_gcc_x86 : + public core_arch_operations_gcc_x86_base +{ + typedef typename storage_traits< Size >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = Size; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = Size; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_seq_cst) + { + fence_before(order); + storage = v; + fence_after(order); + } + else + { + Derived::exchange(storage, v, order); + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return Derived::fetch_add(storage, -v, order); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return Derived::compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!Derived::exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 1u, Signed, Interprocess > : + public core_arch_operations_gcc_x86< 1u, Signed, Interprocess, core_arch_operations< 1u, Signed, Interprocess > > +{ + typedef core_arch_operations_gcc_x86< 1u, Signed, Interprocess, core_arch_operations< 1u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + typedef typename storage_traits< 4u >::type temp_storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xaddb %0, %1" + : "+q" (v), "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "xchgb %0, %1" + : "+q" (v), "+m" (storage) + : + : "memory" + ); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + bool success; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchgb %3, %1" + : "+a" (previous), "+m" (storage), "=@ccz" (success) + : "q" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#else // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchgb %3, %1\n\t" + "sete %2" + : "+a" (previous), "+m" (storage), "=q" (success) + : "q" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + expected = previous; + return success; + } + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, result)\ + temp_storage_type new_val;\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: mov %[arg], %2\n\t"\ + op " %%al, %b2\n\t"\ + "lock; cmpxchgb %b2, %[storage]\n\t"\ + "jne 1b"\ + : [res] "+a" (result), [storage] "+m" (storage), "=&q" (new_val)\ + : [arg] "ir" ((temp_storage_type)argument)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andb", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orb", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorb", v, res); + return res; + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 2u, Signed, Interprocess > : + public core_arch_operations_gcc_x86< 2u, Signed, Interprocess, core_arch_operations< 2u, Signed, Interprocess > > +{ + typedef core_arch_operations_gcc_x86< 2u, Signed, Interprocess, core_arch_operations< 2u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + typedef typename storage_traits< 4u >::type temp_storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xaddw %0, %1" + : "+q" (v), "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "xchgw %0, %1" + : "+q" (v), "+m" (storage) + : + : "memory" + ); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + bool success; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchgw %3, %1" + : "+a" (previous), "+m" (storage), "=@ccz" (success) + : "q" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#else // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchgw %3, %1\n\t" + "sete %2" + : "+a" (previous), "+m" (storage), "=q" (success) + : "q" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + expected = previous; + return success; + } + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, result)\ + temp_storage_type new_val;\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: mov %[arg], %2\n\t"\ + op " %%ax, %w2\n\t"\ + "lock; cmpxchgw %w2, %[storage]\n\t"\ + "jne 1b"\ + : [res] "+a" (result), [storage] "+m" (storage), "=&q" (new_val)\ + : [arg] "ir" ((temp_storage_type)argument)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andw", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orw", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorw", v, res); + return res; + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 4u, Signed, Interprocess > : + public core_arch_operations_gcc_x86< 4u, Signed, Interprocess, core_arch_operations< 4u, Signed, Interprocess > > +{ + typedef core_arch_operations_gcc_x86< 4u, Signed, Interprocess, core_arch_operations< 4u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xaddl %0, %1" + : "+r" (v), "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "xchgl %0, %1" + : "+r" (v), "+m" (storage) + : + : "memory" + ); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + bool success; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchgl %3, %1" + : "+a" (previous), "+m" (storage), "=@ccz" (success) + : "r" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#else // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchgl %3, %1\n\t" + "sete %2" + : "+a" (previous), "+m" (storage), "=q" (success) + : "r" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + expected = previous; + return success; + } + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, result)\ + storage_type new_val;\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: mov %[arg], %[new_val]\n\t"\ + op " %%eax, %[new_val]\n\t"\ + "lock; cmpxchgl %[new_val], %[storage]\n\t"\ + "jne 1b"\ + : [res] "+a" (result), [storage] "+m" (storage), [new_val] "=&r" (new_val)\ + : [arg] "ir" (argument)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andl", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orl", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorl", v, res); + return res; + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP +}; + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) + +// Note: In the 32-bit PIC code guarded with BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX below we have to avoid using memory +// operand constraints because the compiler may choose to use ebx as the base register for that operand. At least, clang +// is known to do that. For this reason we have to pre-compute a pointer to storage and pass it in edi. For the same reason +// we cannot save ebx to the stack with a mov instruction, so we use esi as a scratch register and restore it afterwards. +// Alternatively, we could push/pop the register to the stack, but exchanging the registers is faster. +// The need to pass a pointer in edi is a bit wasteful because normally the memory operand would use a base pointer +// with an offset (e.g. `this` + offset). But unfortunately, there seems to be no way around it. + +template< bool Signed, bool Interprocess > +struct gcc_dcas_x86 +{ + typedef typename storage_traits< 8u >::type storage_type; + typedef uint32_t BOOST_ATOMIC_DETAIL_MAY_ALIAS aliasing_uint32_t; +#if defined(__SSE2__) + typedef uint32_t xmm_t __attribute__((__vector_size__(16))); +#elif defined(__SSE__) + typedef float xmm_t __attribute__((__vector_size__(16))); +#endif + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = true; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if (BOOST_LIKELY(order != memory_order_seq_cst && (((uintptr_t)&storage) & 7u) == 0u)) + { +#if defined(__SSE__) +#if defined(__SSE2__) + xmm_t value = { static_cast< uint32_t >(v), static_cast< uint32_t >(v >> 32u), 0u, 0u }; +#else + xmm_t value; + BOOST_ATOMIC_DETAIL_MEMSET(&value, 0, sizeof(value)); + BOOST_ATOMIC_DETAIL_MEMCPY(&value, &v, sizeof(v)); +#endif + __asm__ __volatile__ + ( +#if defined(__AVX__) + "vmovq %[value], %[storage]\n\t" +#elif defined(__SSE2__) + "movq %[value], %[storage]\n\t" +#else + "movlps %[value], %[storage]\n\t" +#endif + : [storage] "=m" (storage) + : [value] "x" (value) + : "memory" + ); +#else // defined(__SSE__) + __asm__ __volatile__ + ( + "fildll %[value]\n\t" + "fistpll %[storage]\n\t" + : [storage] "=m" (storage) + : [value] "m" (v) + : "memory" + ); +#endif // defined(__SSE__) + } + else + { +#if defined(BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX) + __asm__ __volatile__ + ( + "xchgl %%ebx, %%esi\n\t" + "movl %%eax, %%ebx\n\t" + "movl (%[dest]), %%eax\n\t" + "movl 4(%[dest]), %%edx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg8b (%[dest])\n\t" + "jne 1b\n\t" + "xchgl %%ebx, %%esi\n\t" + : + : "a" ((uint32_t)v), "c" ((uint32_t)(v >> 32u)), [dest] "D" (&storage) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "edx", "memory" + ); +#else // defined(BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX) + __asm__ __volatile__ + ( + "movl %[dest_lo], %%eax\n\t" + "movl %[dest_hi], %%edx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg8b %[dest_lo]\n\t" + "jne 1b\n\t" + : [dest_lo] "=m" (storage), [dest_hi] "=m" (reinterpret_cast< volatile aliasing_uint32_t* >(&storage)[1]) + : [value_lo] "b" ((uint32_t)v), "c" ((uint32_t)(v >> 32u)) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "eax", "edx", "memory" + ); +#endif // defined(BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX) + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type value; + + if (BOOST_LIKELY((((uintptr_t)&storage) & 7u) == 0u)) + { +#if defined(__SSE__) + xmm_t v; + __asm__ __volatile__ + ( +#if defined(__AVX__) + "vmovq %[storage], %[value]\n\t" +#elif defined(__SSE2__) + "movq %[storage], %[value]\n\t" +#else + "xorps %[value], %[value]\n\t" + "movlps %[storage], %[value]\n\t" +#endif + : [value] "=x" (v) + : [storage] "m" (storage) + : "memory" + ); +#if defined(__SSE2__) && (!defined(BOOST_GCC) || BOOST_GCC >= 40800) + // gcc prior to 4.8 don't support subscript operator for vector types + value = static_cast< storage_type >(v[0]) | (static_cast< storage_type >(v[1]) << 32u); +#else + BOOST_ATOMIC_DETAIL_MEMCPY(&value, &v, sizeof(value)); +#endif +#else // defined(__SSE__) + __asm__ __volatile__ + ( + "fildll %[storage]\n\t" + "fistpll %[value]\n\t" + : [value] "=m" (value) + : [storage] "m" (storage) + : "memory" + ); +#endif // defined(__SSE__) + } + else + { + // Note that despite const qualification cmpxchg8b below may issue a store to the storage. The storage value + // will not change, but this prevents the storage to reside in read-only memory. + +#if defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + + uint32_t value_bits[2]; + + // We don't care for comparison result here; the previous value will be stored into value anyway. + // Also we don't care for ebx and ecx values, they just have to be equal to eax and edx before cmpxchg8b. + __asm__ __volatile__ + ( + "movl %%ebx, %%eax\n\t" + "movl %%ecx, %%edx\n\t" + "lock; cmpxchg8b %[storage]\n\t" + : "=&a" (value_bits[0]), "=&d" (value_bits[1]) + : [storage] "m" (storage) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + value = static_cast< storage_type >(value_bits[0]) | (static_cast< storage_type >(value_bits[1]) << 32u); + +#else // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + + // We don't care for comparison result here; the previous value will be stored into value anyway. + // Also we don't care for ebx and ecx values, they just have to be equal to eax and edx before cmpxchg8b. + __asm__ __volatile__ + ( + "movl %%ebx, %%eax\n\t" + "movl %%ecx, %%edx\n\t" + "lock; cmpxchg8b %[storage]\n\t" + : "=&A" (value) + : [storage] "m" (storage) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + } + + return value; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { +#if defined(__clang__) + + // Clang cannot allocate eax:edx register pairs but it has sync intrinsics + storage_type old_expected = expected; + expected = __sync_val_compare_and_swap(&storage, old_expected, desired); + return expected == old_expected; + +#elif defined(BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX) + + bool success; + +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "xchgl %%ebx, %%esi\n\t" + "lock; cmpxchg8b (%[dest])\n\t" + "xchgl %%ebx, %%esi\n\t" + : "+A" (expected), [success] "=@ccz" (success) + : "S" ((uint32_t)desired), "c" ((uint32_t)(desired >> 32u)), [dest] "D" (&storage) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#else // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "xchgl %%ebx, %%esi\n\t" + "lock; cmpxchg8b (%[dest])\n\t" + "xchgl %%ebx, %%esi\n\t" + "sete %[success]\n\t" + : "+A" (expected), [success] "=qm" (success) + : "S" ((uint32_t)desired), "c" ((uint32_t)(desired >> 32u)), [dest] "D" (&storage) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + + return success; + +#else // defined(BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX) + + bool success; + +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchg8b %[dest]\n\t" + : "+A" (expected), [dest] "+m" (storage), [success] "=@ccz" (success) + : "b" ((uint32_t)desired), "c" ((uint32_t)(desired >> 32u)) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#else // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchg8b %[dest]\n\t" + "sete %[success]\n\t" + : "+A" (expected), [dest] "+m" (storage), [success] "=qm" (success) + : "b" ((uint32_t)desired), "c" ((uint32_t)(desired >> 32u)) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + + return success; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX) + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX) +#if defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + + uint32_t old_bits[2]; + __asm__ __volatile__ + ( + "xchgl %%ebx, %%esi\n\t" + "movl (%[dest]), %%eax\n\t" + "movl 4(%[dest]), %%edx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg8b (%[dest])\n\t" + "jne 1b\n\t" + "xchgl %%ebx, %%esi\n\t" + : "=a" (old_bits[0]), "=d" (old_bits[1]) + : "S" ((uint32_t)v), "c" ((uint32_t)(v >> 32u)), [dest] "D" (&storage) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + + storage_type old_value; + BOOST_ATOMIC_DETAIL_MEMCPY(&old_value, old_bits, sizeof(old_value)); + return old_value; + +#else // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + + storage_type old_value; + __asm__ __volatile__ + ( + "xchgl %%ebx, %%esi\n\t" + "movl (%[dest]), %%eax\n\t" + "movl 4(%[dest]), %%edx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg8b (%[dest])\n\t" + "jne 1b\n\t" + "xchgl %%ebx, %%esi\n\t" + : "=A" (old_value) + : "S" ((uint32_t)v), "c" ((uint32_t)(v >> 32u)), [dest] "D" (&storage) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + return old_value; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) +#else // defined(BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX) +#if defined(__MINGW32__) && ((__GNUC__+0) * 100 + (__GNUC_MINOR__+0)) < 407 + + // MinGW gcc up to 4.6 has problems with allocating registers in the asm blocks below + uint32_t old_bits[2]; + __asm__ __volatile__ + ( + "movl (%[dest]), %%eax\n\t" + "movl 4(%[dest]), %%edx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg8b (%[dest])\n\t" + "jne 1b\n\t" + : "=&a" (old_bits[0]), "=&d" (old_bits[1]) + : "b" ((uint32_t)v), "c" ((uint32_t)(v >> 32u)), [dest] "DS" (&storage) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + + storage_type old_value; + BOOST_ATOMIC_DETAIL_MEMCPY(&old_value, old_bits, sizeof(old_value)); + return old_value; + +#elif defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + + uint32_t old_bits[2]; + __asm__ __volatile__ + ( + "movl %[dest_lo], %%eax\n\t" + "movl %[dest_hi], %%edx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg8b %[dest_lo]\n\t" + "jne 1b\n\t" + : "=&a" (old_bits[0]), "=&d" (old_bits[1]), [dest_lo] "+m" (storage), [dest_hi] "+m" (reinterpret_cast< volatile aliasing_uint32_t* >(&storage)[1]) + : "b" ((uint32_t)v), "c" ((uint32_t)(v >> 32u)) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + + storage_type old_value; + BOOST_ATOMIC_DETAIL_MEMCPY(&old_value, old_bits, sizeof(old_value)); + return old_value; + +#else // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + + storage_type old_value; + __asm__ __volatile__ + ( + "movl %[dest_lo], %%eax\n\t" + "movl %[dest_hi], %%edx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg8b %[dest_lo]\n\t" + "jne 1b\n\t" + : "=&A" (old_value), [dest_lo] "+m" (storage), [dest_hi] "+m" (reinterpret_cast< volatile aliasing_uint32_t* >(&storage)[1]) + : "b" ((uint32_t)v), "c" ((uint32_t)(v >> 32u)) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + return old_value; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) +#endif // defined(BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX) + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_operations_cas_based< gcc_dcas_x86< Signed, Interprocess > > +{ +}; + +#elif defined(__x86_64__) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_arch_operations_gcc_x86< 8u, Signed, Interprocess, core_arch_operations< 8u, Signed, Interprocess > > +{ + typedef core_arch_operations_gcc_x86< 8u, Signed, Interprocess, core_arch_operations< 8u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xaddq %0, %1" + : "+r" (v), "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "xchgq %0, %1" + : "+r" (v), "+m" (storage) + : + : "memory" + ); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + bool success; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchgq %3, %1" + : "+a" (previous), "+m" (storage), "=@ccz" (success) + : "r" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#else // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchgq %3, %1\n\t" + "sete %2" + : "+a" (previous), "+m" (storage), "=q" (success) + : "r" (desired) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + expected = previous; + return success; + } + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, result)\ + storage_type new_val;\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: movq %[arg], %[new_val]\n\t"\ + op " %%rax, %[new_val]\n\t"\ + "lock; cmpxchgq %[new_val], %[storage]\n\t"\ + "jne 1b"\ + : [res] "+a" (result), [storage] "+m" (storage), [new_val] "=&r" (new_val)\ + : [arg] "r" (argument)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andq", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orq", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorq", v, res); + return res; + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP +}; + +#endif + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +template< bool Signed, bool Interprocess > +struct gcc_dcas_x86_64 +{ + typedef typename storage_traits< 16u >::type storage_type; + typedef uint64_t BOOST_ATOMIC_DETAIL_MAY_ALIAS aliasing_uint64_t; +#if defined(__AVX__) + typedef uint64_t __attribute__((__vector_size__(16))) xmm_t; +#endif + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 16u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 16u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = true; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { +#if defined(__AVX__) + if (BOOST_LIKELY(order != memory_order_seq_cst && (((uintptr_t)&storage) & 15u) == 0u)) + { + // According to SDM Volume 3, 8.1.1 Guaranteed Atomic Operations, processors supporting AVX guarantee + // aligned vector moves to be atomic. +#if defined(BOOST_HAS_INT128) + xmm_t value = { static_cast< uint64_t >(v), static_cast< uint64_t >(v >> 64u) }; +#else + xmm_t value; + BOOST_ATOMIC_DETAIL_MEMCPY(&value, &v, sizeof(v)); +#endif + __asm__ __volatile__ + ( + "vmovdqa %[value], %[storage]\n\t" + : [storage] "=m" (storage) + : [value] "x" (value) + : "memory" + ); + + return; + } +#endif // defined(__AVX__) + + __asm__ __volatile__ + ( + "movq %[dest_lo], %%rax\n\t" + "movq %[dest_hi], %%rdx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg16b %[dest_lo]\n\t" + "jne 1b\n\t" + : [dest_lo] "=m" (storage), [dest_hi] "=m" (reinterpret_cast< volatile aliasing_uint64_t* >(&storage)[1]) + : "b" (reinterpret_cast< const aliasing_uint64_t* >(&v)[0]), "c" (reinterpret_cast< const aliasing_uint64_t* >(&v)[1]) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "rax", "rdx", "memory" + ); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order) BOOST_NOEXCEPT + { +#if defined(__AVX__) + if (BOOST_LIKELY((((uintptr_t)&storage) & 15u) == 0u)) + { + // According to SDM Volume 3, 8.1.1 Guaranteed Atomic Operations, processors supporting AVX guarantee + // aligned vector moves to be atomic. + xmm_t v; + __asm__ __volatile__ + ( + "vmovdqa %[storage], %[value]\n\t" + : [value] "=x" (v) + : [storage] "m" (storage) + : "memory" + ); + +#if defined(BOOST_HAS_INT128) && (!defined(BOOST_GCC) || BOOST_GCC >= 40800) + // gcc prior to 4.8 don't support subscript operator for vector types + storage_type value = static_cast< storage_type >(v[0]) | (static_cast< storage_type >(v[1]) << 64u); +#else + storage_type value; + BOOST_ATOMIC_DETAIL_MEMCPY(&value, &v, sizeof(v)); +#endif + return value; + } +#endif // defined(__AVX__) + + // Note that despite const qualification cmpxchg16b below may issue a store to the storage. The storage value + // will not change, but this prevents the storage to reside in read-only memory. + +#if defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + + uint64_t value_bits[2]; + + // We don't care for comparison result here; the previous value will be stored into value anyway. + // Also we don't care for rbx and rcx values, they just have to be equal to rax and rdx before cmpxchg16b. + __asm__ __volatile__ + ( + "movq %%rbx, %%rax\n\t" + "movq %%rcx, %%rdx\n\t" + "lock; cmpxchg16b %[storage]\n\t" + : "=&a" (value_bits[0]), "=&d" (value_bits[1]) + : [storage] "m" (storage) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + +#if defined(BOOST_HAS_INT128) + storage_type value = static_cast< storage_type >(value_bits[0]) | (static_cast< storage_type >(value_bits[1]) << 64u); +#else + storage_type value; + BOOST_ATOMIC_DETAIL_MEMCPY(&value, value_bits, sizeof(value)); +#endif + return value; + +#else // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + + storage_type value; + + // We don't care for comparison result here; the previous value will be stored into value anyway. + // Also we don't care for rbx and rcx values, they just have to be equal to rax and rdx before cmpxchg16b. + __asm__ __volatile__ + ( + "movq %%rbx, %%rax\n\t" + "movq %%rcx, %%rdx\n\t" + "lock; cmpxchg16b %[storage]\n\t" + : "=&A" (value) + : [storage] "m" (storage) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + + return value; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { +#if defined(__clang__) + + // Clang cannot allocate rax:rdx register pairs but it has sync intrinsics + storage_type old_expected = expected; + expected = __sync_val_compare_and_swap(&storage, old_expected, desired); + return expected == old_expected; + +#elif defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + + // Some compilers can't allocate rax:rdx register pair either but also don't support 128-bit __sync_val_compare_and_swap + bool success; + __asm__ __volatile__ + ( + "lock; cmpxchg16b %[dest]\n\t" + "sete %[success]\n\t" + : [dest] "+m" (storage), "+a" (reinterpret_cast< aliasing_uint64_t* >(&expected)[0]), "+d" (reinterpret_cast< aliasing_uint64_t* >(&expected)[1]), [success] "=q" (success) + : "b" (reinterpret_cast< const aliasing_uint64_t* >(&desired)[0]), "c" (reinterpret_cast< const aliasing_uint64_t* >(&desired)[1]) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + + return success; + +#else // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + + bool success; + +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchg16b %[dest]\n\t" + : "+A" (expected), [dest] "+m" (storage), "=@ccz" (success) + : "b" (reinterpret_cast< const aliasing_uint64_t* >(&desired)[0]), "c" (reinterpret_cast< const aliasing_uint64_t* >(&desired)[1]) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#else // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; cmpxchg16b %[dest]\n\t" + "sete %[success]\n\t" + : "+A" (expected), [dest] "+m" (storage), [success] "=qm" (success) + : "b" (reinterpret_cast< const aliasing_uint64_t* >(&desired)[0]), "c" (reinterpret_cast< const aliasing_uint64_t* >(&desired)[1]) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif // defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + + return success; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + uint64_t old_bits[2]; + __asm__ __volatile__ + ( + "movq %[dest_lo], %%rax\n\t" + "movq %[dest_hi], %%rdx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg16b %[dest_lo]\n\t" + "jne 1b\n\t" + : [dest_lo] "+m" (storage), [dest_hi] "+m" (reinterpret_cast< volatile aliasing_uint64_t* >(&storage)[1]), "=&a" (old_bits[0]), "=&d" (old_bits[1]) + : "b" (reinterpret_cast< const aliasing_uint64_t* >(&v)[0]), "c" (reinterpret_cast< const aliasing_uint64_t* >(&v)[1]) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + +#if defined(BOOST_HAS_INT128) + storage_type old_value = static_cast< storage_type >(old_bits[0]) | (static_cast< storage_type >(old_bits[1]) << 64u); +#else + storage_type old_value; + BOOST_ATOMIC_DETAIL_MEMCPY(&old_value, old_bits, sizeof(old_value)); +#endif + return old_value; +#else // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + storage_type old_value; + __asm__ __volatile__ + ( + "movq %[dest_lo], %%rax\n\t" + "movq %[dest_hi], %%rdx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg16b %[dest_lo]\n\t" + "jne 1b\n\t" + : "=&A" (old_value), [dest_lo] "+m" (storage), [dest_hi] "+m" (reinterpret_cast< volatile aliasing_uint64_t* >(&storage)[1]) + : "b" (reinterpret_cast< const aliasing_uint64_t* >(&v)[0]), "c" (reinterpret_cast< const aliasing_uint64_t* >(&v)[1]) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + + return old_value; +#endif // defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 16u, Signed, Interprocess > : + public core_operations_cas_based< gcc_dcas_x86_64< Signed, Interprocess > > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_X86_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_ops_msvc_arm.hpp b/src/boost/boost/atomic/detail/core_arch_ops_msvc_arm.hpp new file mode 100644 index 000000000..bc8682193 --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_ops_msvc_arm.hpp @@ -0,0 +1,828 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_ops_msvc_arm.hpp + * + * This header contains implementation of the \c core_arch_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_MSVC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_MSVC_ARM_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +extern "C" { +__int8 __iso_volatile_load8(const volatile __int8*); +__int16 __iso_volatile_load16(const volatile __int16*); +__int32 __iso_volatile_load32(const volatile __int32*); +__int64 __iso_volatile_load64(const volatile __int64*); +void __iso_volatile_store8(volatile __int8*, __int8); +void __iso_volatile_store16(volatile __int16*, __int16); +void __iso_volatile_store32(volatile __int32*, __int32); +void __iso_volatile_store64(volatile __int64*, __int64); +} +#if defined(BOOST_MSVC) +#pragma intrinsic(__iso_volatile_load8) +#pragma intrinsic(__iso_volatile_load16) +#pragma intrinsic(__iso_volatile_load32) +#pragma intrinsic(__iso_volatile_load64) +#pragma intrinsic(__iso_volatile_store8) +#pragma intrinsic(__iso_volatile_store16) +#pragma intrinsic(__iso_volatile_store32) +#pragma intrinsic(__iso_volatile_store64) +#endif + +#define BOOST_ATOMIC_DETAIL_ARM_LOAD8(p) __iso_volatile_load8((const volatile __int8*)(p)) +#define BOOST_ATOMIC_DETAIL_ARM_LOAD16(p) __iso_volatile_load16((const volatile __int16*)(p)) +#define BOOST_ATOMIC_DETAIL_ARM_LOAD32(p) __iso_volatile_load32((const volatile __int32*)(p)) +#define BOOST_ATOMIC_DETAIL_ARM_LOAD64(p) __iso_volatile_load64((const volatile __int64*)(p)) +#define BOOST_ATOMIC_DETAIL_ARM_STORE8(p, v) __iso_volatile_store8((volatile __int8*)(p), (__int8)(v)) +#define BOOST_ATOMIC_DETAIL_ARM_STORE16(p, v) __iso_volatile_store16((volatile __int16*)(p), (__int16)(v)) +#define BOOST_ATOMIC_DETAIL_ARM_STORE32(p, v) __iso_volatile_store32((volatile __int32*)(p), (__int32)(v)) +#define BOOST_ATOMIC_DETAIL_ARM_STORE64(p, v) __iso_volatile_store64((volatile __int64*)(p), (__int64)(v)) + +namespace boost { +namespace atomics { +namespace detail { + +// A note about memory_order_consume. Technically, this architecture allows to avoid +// unnecessary memory barrier after consume load since it supports data dependency ordering. +// However, some compiler optimizations may break a seemingly valid code relying on data +// dependency tracking by injecting bogus branches to aid out of order execution. +// This may happen not only in Boost.Atomic code but also in user's code, which we have no +// control of. See this thread: http://lists.boost.org/Archives/boost/2014/06/213890.php. +// For this reason we promote memory_order_consume to memory_order_acquire. + +struct core_arch_operations_msvc_arm_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void fence_before_store(memory_order order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + fence_arch_operations::hardware_full_fence(); + + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + if (order == memory_order_seq_cst) + fence_arch_operations::hardware_full_fence(); + + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void fence_after_load(memory_order order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + fence_arch_operations::hardware_full_fence(); + + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE BOOST_CONSTEXPR memory_order cas_common_order(memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + // Combine order flags together and promote memory_order_consume to memory_order_acquire + return static_cast< memory_order >(((static_cast< unsigned int >(failure_order) | static_cast< unsigned int >(success_order)) & ~static_cast< unsigned int >(memory_order_consume)) + | (((static_cast< unsigned int >(failure_order) | static_cast< unsigned int >(success_order)) & static_cast< unsigned int >(memory_order_consume)) << 1u)); + } +}; + +template< std::size_t Size, bool Signed, bool Interprocess, typename Derived > +struct core_arch_operations_msvc_arm : + public core_arch_operations_msvc_arm_base +{ + typedef typename storage_traits< Size >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = Size; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = storage_traits< Size >::alignment; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + typedef typename boost::atomics::detail::make_signed< storage_type >::type signed_storage_type; + return Derived::fetch_add(storage, static_cast< storage_type >(-static_cast< signed_storage_type >(v)), order); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return Derived::compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!Derived::exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + Derived::store(storage, (storage_type)0, order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 1u, Signed, Interprocess > : + public core_arch_operations_msvc_arm< 1u, Signed, Interprocess, core_arch_operations< 1u, Signed, Interprocess > > +{ + typedef core_arch_operations_msvc_arm< 1u, Signed, Interprocess, core_arch_operations< 1u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before_store(order); + BOOST_ATOMIC_DETAIL_ARM_STORE8(&storage, v); + base_type::fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = BOOST_ATOMIC_DETAIL_ARM_LOAD8(&storage); + base_type::fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected, old_val; + + switch (base_type::cas_common_order(success_order, failure_order)) + { + case memory_order_relaxed: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_RELAXED(&storage, desired, previous)); + break; + case memory_order_consume: + case memory_order_acquire: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_ACQUIRE(&storage, desired, previous)); + break; + case memory_order_release: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_RELEASE(&storage, desired, previous)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8(&storage, desired, previous)); + break; + } + expected = old_val; + + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND8_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND8_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND8_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND8(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR8_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR8_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR8_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR8(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR8_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR8_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR8_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR8(&storage, v)); + break; + } + return v; + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 2u, Signed, Interprocess > : + public core_arch_operations_msvc_arm< 2u, Signed, Interprocess, core_arch_operations< 2u, Signed, Interprocess > > +{ + typedef core_arch_operations_msvc_arm< 2u, Signed, Interprocess, core_arch_operations< 2u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before_store(order); + BOOST_ATOMIC_DETAIL_ARM_STORE16(&storage, v); + base_type::fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = BOOST_ATOMIC_DETAIL_ARM_LOAD16(&storage); + base_type::fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected, old_val; + + switch (base_type::cas_common_order(success_order, failure_order)) + { + case memory_order_relaxed: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_RELAXED(&storage, desired, previous)); + break; + case memory_order_consume: + case memory_order_acquire: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_ACQUIRE(&storage, desired, previous)); + break; + case memory_order_release: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_RELEASE(&storage, desired, previous)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16(&storage, desired, previous)); + break; + } + expected = old_val; + + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND16_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND16_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND16_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND16(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR16_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR16_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR16_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR16(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR16_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR16_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR16_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR16(&storage, v)); + break; + } + return v; + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 4u, Signed, Interprocess > : + public core_arch_operations_msvc_arm< 4u, Signed, Interprocess, core_arch_operations< 4u, Signed, Interprocess > > +{ + typedef core_arch_operations_msvc_arm< 4u, Signed, Interprocess, core_arch_operations< 4u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before_store(order); + BOOST_ATOMIC_DETAIL_ARM_STORE32(&storage, v); + base_type::fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = BOOST_ATOMIC_DETAIL_ARM_LOAD32(&storage); + base_type::fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected, old_val; + + switch (base_type::cas_common_order(success_order, failure_order)) + { + case memory_order_relaxed: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_RELAXED(&storage, desired, previous)); + break; + case memory_order_consume: + case memory_order_acquire: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_ACQUIRE(&storage, desired, previous)); + break; + case memory_order_release: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_RELEASE(&storage, desired, previous)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&storage, desired, previous)); + break; + } + expected = old_val; + + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR(&storage, v)); + break; + } + return v; + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_arch_operations_msvc_arm< 8u, Signed, Interprocess, core_arch_operations< 8u, Signed, Interprocess > > +{ + typedef core_arch_operations_msvc_arm< 8u, Signed, Interprocess, core_arch_operations< 8u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before_store(order); + BOOST_ATOMIC_DETAIL_ARM_STORE64(&storage, v); + base_type::fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = BOOST_ATOMIC_DETAIL_ARM_LOAD64(&storage); + base_type::fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected, old_val; + + switch (base_type::cas_common_order(success_order, failure_order)) + { + case memory_order_relaxed: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_RELAXED(&storage, desired, previous)); + break; + case memory_order_consume: + case memory_order_acquire: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_ACQUIRE(&storage, desired, previous)); + break; + case memory_order_release: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_RELEASE(&storage, desired, previous)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(&storage, desired, previous)); + break; + } + expected = old_val; + + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND64_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND64_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND64_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND64(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR64_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR64_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR64_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR64(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR64_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR64_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR64_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR64(&storage, v)); + break; + } + return v; + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#undef BOOST_ATOMIC_DETAIL_ARM_LOAD8 +#undef BOOST_ATOMIC_DETAIL_ARM_LOAD16 +#undef BOOST_ATOMIC_DETAIL_ARM_LOAD32 +#undef BOOST_ATOMIC_DETAIL_ARM_LOAD64 +#undef BOOST_ATOMIC_DETAIL_ARM_STORE8 +#undef BOOST_ATOMIC_DETAIL_ARM_STORE16 +#undef BOOST_ATOMIC_DETAIL_ARM_STORE32 +#undef BOOST_ATOMIC_DETAIL_ARM_STORE64 + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_MSVC_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_arch_ops_msvc_x86.hpp b/src/boost/boost/atomic/detail/core_arch_ops_msvc_x86.hpp new file mode 100644 index 000000000..a54c16830 --- /dev/null +++ b/src/boost/boost/atomic/detail/core_arch_ops_msvc_x86.hpp @@ -0,0 +1,903 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_arch_ops_msvc_x86.hpp + * + * This header contains implementation of the \c core_arch_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_MSVC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_MSVC_X86_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) +#include +#include +#include +#endif +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) && defined(__AVX__) +#include +#include +#endif +#include +#if !defined(_M_IX86) && !(defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8) && defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16)) +#include +#endif +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +/* + * Implementation note for asm blocks. + * + * http://msdn.microsoft.com/en-us/data/k1a8ss06%28v=vs.105%29 + * + * Some SSE types require eight-byte stack alignment, forcing the compiler to emit dynamic stack-alignment code. + * To be able to access both the local variables and the function parameters after the alignment, the compiler + * maintains two frame pointers. If the compiler performs frame pointer omission (FPO), it will use EBP and ESP. + * If the compiler does not perform FPO, it will use EBX and EBP. To ensure code runs correctly, do not modify EBX + * in asm code if the function requires dynamic stack alignment as it could modify the frame pointer. + * Either move the eight-byte aligned types out of the function, or avoid using EBX. + * + * Since we have no way of knowing that the compiler uses FPO, we have to always save and restore ebx + * whenever we have to clobber it. Additionally, we disable warning C4731 in header.hpp so that the compiler + * doesn't spam about ebx use. + */ + +struct core_arch_operations_msvc_x86_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void fence_before(memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void fence_after(memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void fence_after_load(memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + // On x86 and x86_64 there is no need for a hardware barrier, + // even if seq_cst memory order is requested, because all + // seq_cst writes are implemented with lock-prefixed operations + // or xchg which has implied lock prefix. Therefore normal loads + // are already ordered with seq_cst stores on these architectures. + } +}; + +template< std::size_t Size, bool Signed, bool Interprocess, typename Derived > +struct core_arch_operations_msvc_x86 : + public core_arch_operations_msvc_x86_base +{ + typedef typename storage_traits< Size >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = Size; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = storage_traits< Size >::alignment; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_seq_cst) + { + fence_before(order); + storage = v; + fence_after(order); + } + else + { + Derived::exchange(storage, v, order); + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + typedef typename boost::atomics::detail::make_signed< storage_type >::type signed_storage_type; + return Derived::fetch_add(storage, static_cast< storage_type >(-static_cast< signed_storage_type >(v)), order); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return Derived::compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!Derived::exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 4u, Signed, Interprocess > : + public core_arch_operations_msvc_x86< 4u, Signed, Interprocess, core_arch_operations< 4u, Signed, Interprocess > > +{ + typedef core_arch_operations_msvc_x86< 4u, Signed, Interprocess, core_arch_operations< 4u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&storage, v)); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + storage_type old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&storage, desired, previous)); + expected = old_val; + return (previous == old_val); + } + +#if defined(BOOST_ATOMIC_INTERLOCKED_AND) + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND(&storage, v)); + } +#else + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res & v, order, memory_order_relaxed)) {} + return res; + } +#endif + +#if defined(BOOST_ATOMIC_INTERLOCKED_OR) + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR(&storage, v)); + } +#else + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res | v, order, memory_order_relaxed)) {} + return res; + } +#endif + +#if defined(BOOST_ATOMIC_INTERLOCKED_XOR) + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR(&storage, v)); + } +#else + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res ^ v, order, memory_order_relaxed)) {} + return res; + } +#endif +}; + +#if defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 1u, Signed, Interprocess > : + public core_arch_operations_msvc_x86< 1u, Signed, Interprocess, core_arch_operations< 1u, Signed, Interprocess > > +{ + typedef core_arch_operations_msvc_x86< 1u, Signed, Interprocess, core_arch_operations< 1u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8(&storage, v)); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + storage_type old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8(&storage, desired, previous)); + expected = old_val; + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND8(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR8(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR8(&storage, v)); + } +}; + +#elif defined(_M_IX86) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 1u, Signed, Interprocess > : + public core_arch_operations_msvc_x86< 1u, Signed, Interprocess, core_arch_operations< 1u, Signed, Interprocess > > +{ + typedef core_arch_operations_msvc_x86< 1u, Signed, Interprocess, core_arch_operations< 1u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock xadd byte ptr [edx], al + mov v, al + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + xchg byte ptr [edx], al + mov v, al + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order) BOOST_NOEXCEPT + { + base_type::fence_before(success_order); + bool success; + __asm + { + mov esi, expected + mov edi, storage + movzx eax, byte ptr [esi] + movzx edx, desired + lock cmpxchg byte ptr [edi], dl + mov byte ptr [esi], al + sete success + }; + // The success and failure fences are equivalent anyway + base_type::fence_after(success_order); + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, byte ptr [edi] + align 16 + again: + mov dl, al + and dl, cl + lock cmpxchg byte ptr [edi], dl + jne again + mov v, al + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, byte ptr [edi] + align 16 + again: + mov dl, al + or dl, cl + lock cmpxchg byte ptr [edi], dl + jne again + mov v, al + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, byte ptr [edi] + align 16 + again: + mov dl, al + xor dl, cl + lock cmpxchg byte ptr [edi], dl + jne again + mov v, al + }; + base_type::fence_after(order); + return v; + } +}; + +#else + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 1u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_arch_operations< 4u, Signed, Interprocess >, 1u, Signed > +{ +}; + +#endif + +#if defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 2u, Signed, Interprocess > : + public core_arch_operations_msvc_x86< 2u, Signed, Interprocess, core_arch_operations< 2u, Signed, Interprocess > > +{ + typedef core_arch_operations_msvc_x86< 2u, Signed, Interprocess, core_arch_operations< 2u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16(&storage, v)); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + storage_type old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16(&storage, desired, previous)); + expected = old_val; + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND16(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR16(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR16(&storage, v)); + } +}; + +#elif defined(_M_IX86) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 2u, Signed, Interprocess > : + public core_arch_operations_msvc_x86< 2u, Signed, Interprocess, core_arch_operations< 2u, Signed, Interprocess > > +{ + typedef core_arch_operations_msvc_x86< 2u, Signed, Interprocess, core_arch_operations< 2u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock xadd word ptr [edx], ax + mov v, ax + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + xchg word ptr [edx], ax + mov v, ax + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order) BOOST_NOEXCEPT + { + base_type::fence_before(success_order); + bool success; + __asm + { + mov esi, expected + mov edi, storage + movzx eax, word ptr [esi] + movzx edx, desired + lock cmpxchg word ptr [edi], dx + mov word ptr [esi], ax + sete success + }; + // The success and failure fences are equivalent anyway + base_type::fence_after(success_order); + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, word ptr [edi] + align 16 + again: + mov dx, ax + and dx, cx + lock cmpxchg word ptr [edi], dx + jne again + mov v, ax + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, word ptr [edi] + align 16 + again: + mov dx, ax + or dx, cx + lock cmpxchg word ptr [edi], dx + jne again + mov v, ax + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, word ptr [edi] + align 16 + again: + mov dx, ax + xor dx, cx + lock cmpxchg word ptr [edi], dx + jne again + mov v, ax + }; + base_type::fence_after(order); + return v; + } +}; + +#else + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 2u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_arch_operations< 4u, Signed, Interprocess >, 2u, Signed > +{ +}; + +#endif + + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) + +template< bool Signed, bool Interprocess > +struct msvc_dcas_x86 +{ + typedef typename storage_traits< 8u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = true; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + + // Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3A, 8.1.1. Guaranteed Atomic Operations: + // + // The Pentium processor (and newer processors since) guarantees that the following additional memory operations will always be carried out atomically: + // * Reading or writing a quadword aligned on a 64-bit boundary + // + // Luckily, the memory is almost always 8-byte aligned in our case because atomic<> uses 64 bit native types for storage and dynamic memory allocations + // have at least 8 byte alignment. The only unfortunate case is when atomic is placed on the stack and it is not 8-byte aligned (like on 32 bit Windows). + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + storage_type volatile* p = &storage; + if (BOOST_LIKELY(order != memory_order_seq_cst && ((uintptr_t)p & 7u) == 0u)) + { +#if defined(_M_IX86_FP) && _M_IX86_FP >= 2 +#if defined(__AVX__) + __asm + { + mov edx, p + vmovq xmm4, v + vmovq qword ptr [edx], xmm4 + }; +#else + __asm + { + mov edx, p + movq xmm4, v + movq qword ptr [edx], xmm4 + }; +#endif +#else + __asm + { + mov edx, p + fild v + fistp qword ptr [edx] + }; +#endif + } + else + { + uint32_t backup; + __asm + { + mov backup, ebx + mov edi, p + mov ebx, dword ptr [v] + mov ecx, dword ptr [v + 4] + mov eax, dword ptr [edi] + mov edx, dword ptr [edi + 4] + align 16 + again: + lock cmpxchg8b qword ptr [edi] + jne again + mov ebx, backup + }; + } + + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + storage_type const volatile* p = &storage; + storage_type value; + + if (BOOST_LIKELY(((uintptr_t)p & 7u) == 0u)) + { +#if defined(_M_IX86_FP) && _M_IX86_FP >= 2 +#if defined(__AVX__) + __asm + { + mov edx, p + vmovq xmm4, qword ptr [edx] + vmovq value, xmm4 + }; +#else + __asm + { + mov edx, p + movq xmm4, qword ptr [edx] + movq value, xmm4 + }; +#endif +#else + __asm + { + mov edx, p + fild qword ptr [edx] + fistp value + }; +#endif + } + else + { + // We don't care for comparison result here; the previous value will be stored into value anyway. + // Also we don't care for ebx and ecx values, they just have to be equal to eax and edx before cmpxchg8b. + __asm + { + mov edi, p + mov eax, ebx + mov edx, ecx + lock cmpxchg8b qword ptr [edi] + mov dword ptr [value], eax + mov dword ptr [value + 4], edx + }; + } + + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + return value; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + // MSVC-11 in 32-bit mode sometimes generates messed up code without compiler barriers, + // even though the _InterlockedCompareExchange64 intrinsic already provides one. + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + storage_type volatile* p = &storage; +#if defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64) + const storage_type old_val = (storage_type)BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(p, desired, expected); + const bool result = (old_val == expected); + expected = old_val; +#else + bool result; + uint32_t backup; + __asm + { + mov backup, ebx + mov edi, p + mov esi, expected + mov ebx, dword ptr [desired] + mov ecx, dword ptr [desired + 4] + mov eax, dword ptr [esi] + mov edx, dword ptr [esi + 4] + lock cmpxchg8b qword ptr [edi] + mov dword ptr [esi], eax + mov dword ptr [esi + 4], edx + mov ebx, backup + sete result + }; +#endif + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + return result; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + storage_type volatile* p = &storage; + uint32_t backup; + __asm + { + mov backup, ebx + mov edi, p + mov ebx, dword ptr [v] + mov ecx, dword ptr [v + 4] + mov eax, dword ptr [edi] + mov edx, dword ptr [edi + 4] + align 16 + again: + lock cmpxchg8b qword ptr [edi] + jne again + mov ebx, backup + mov dword ptr [v], eax + mov dword ptr [v + 4], edx + }; + + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + return v; + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_operations_cas_based< msvc_dcas_x86< Signed, Interprocess > > +{ +}; + +#elif defined(_M_AMD64) + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 8u, Signed, Interprocess > : + public core_arch_operations_msvc_x86< 8u, Signed, Interprocess, core_arch_operations< 8u, Signed, Interprocess > > +{ + typedef core_arch_operations_msvc_x86< 8u, Signed, Interprocess, core_arch_operations< 8u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(&storage, v)); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + storage_type old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(&storage, desired, previous)); + expected = old_val; + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND64(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR64(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR64(&storage, v)); + } +}; + +#endif + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +template< bool Signed, bool Interprocess > +struct msvc_dcas_x86_64 +{ + typedef typename storage_traits< 16u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = true; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 16u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 16u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { +#if defined(__AVX__) + if (BOOST_LIKELY(order != memory_order_seq_cst && (((uintptr_t)&storage) & 15u) == 0u)) + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + __m128i value; + BOOST_ATOMIC_DETAIL_MEMCPY(&value, &v, sizeof(value)); + _mm_store_si128(const_cast< __m128i* >(reinterpret_cast< volatile __m128i* >(&storage)), value); + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + return; + } +#endif // defined(__AVX__) + + storage_type value = const_cast< storage_type& >(storage); + while (!BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE128(&storage, v, &value)) {} + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type value; +#if defined(__AVX__) + if (BOOST_LIKELY((((uintptr_t)&storage) & 15u) == 0u)) + { + __m128i v = _mm_load_si128(const_cast< const __m128i* >(reinterpret_cast< const volatile __m128i* >(&storage))); + BOOST_ATOMIC_DETAIL_MEMCPY(&value, &v, sizeof(value)); + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + return value; + } +#endif // defined(__AVX__) + + value = storage_type(); + BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE128(&storage, value, &value); + return value; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + return !!BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE128(&storage, desired, &expected); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_arch_operations< 16u, Signed, Interprocess > : + public core_operations_cas_based< cas_based_exchange< msvc_dcas_x86_64< Signed, Interprocess > > > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_MSVC_X86_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_operations.hpp b/src/boost/boost/atomic/detail/core_operations.hpp new file mode 100644 index 000000000..abb71f9c2 --- /dev/null +++ b/src/boost/boost/atomic/detail/core_operations.hpp @@ -0,0 +1,49 @@ +/* + * 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) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_operations.hpp + * + * This header defines core atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_HPP_INCLUDED_ + +#include +#include +#include +#include + +#if defined(BOOST_ATOMIC_DETAIL_CORE_BACKEND_HEADER) +#include BOOST_ATOMIC_DETAIL_CORE_BACKEND_HEADER(boost/atomic/detail/core_ops_) +#endif + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Default specialization that falls back to architecture-specific implementation +template< std::size_t Size, bool Signed, bool Interprocess > +struct core_operations : + public core_arch_operations< Size, Signed, Interprocess > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_operations_emulated.hpp b/src/boost/boost/atomic/detail/core_operations_emulated.hpp new file mode 100644 index 000000000..bffbeba1d --- /dev/null +++ b/src/boost/boost/atomic/detail/core_operations_emulated.hpp @@ -0,0 +1,195 @@ +/* + * 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) + * + * Copyright (c) 2014, 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/core_operations_emulated.hpp + * + * This header contains lock pool-based implementation of the core atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_EMULATED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_EMULATED_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< std::size_t Size, std::size_t Alignment, bool = Alignment >= storage_traits< Size >::native_alignment > +struct core_operations_emulated_base +{ + typedef typename storage_traits< Size >::type storage_type; +}; + +template< std::size_t Size, std::size_t Alignment > +struct core_operations_emulated_base< Size, Alignment, false > +{ + typedef buffer_storage< Size, Alignment > storage_type; +}; + +//! Emulated implementation of core atomic operations +template< std::size_t Size, std::size_t Alignment, bool Signed, bool Interprocess > +struct core_operations_emulated : + public core_operations_emulated_base< Size, Alignment > +{ + typedef core_operations_emulated_base< Size, Alignment > base_type; + + // Define storage_type to have alignment not greater than Alignment. This will allow operations to work with value_types + // that possibly have weaker alignment requirements than storage_traits< Size >::type would. This is important for atomic_ref<>. + // atomic<> will allow higher alignment requirement than its value_type. + // Note that storage_type should be an integral type, if possible, so that arithmetic and bitwise operations are possible. + typedef typename base_type::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = Size; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = Alignment >= storage_traits< Size >::alignment ? storage_traits< Size >::alignment : Alignment; + + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = false; + + typedef lock_pool::scoped_lock< storage_alignment > scoped_lock; + + static void store(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + scoped_lock lock(&storage); + const_cast< storage_type& >(storage) = v; + } + + static storage_type load(storage_type const volatile& storage, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + scoped_lock lock(&storage); + return const_cast< storage_type const& >(storage); + } + + static storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type old_val = s; + s += v; + return old_val; + } + + static storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type old_val = s; + s -= v; + return old_val; + } + + static storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type old_val = s; + s = v; + return old_val; + } + + static bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type old_val = s; + const bool res = old_val == expected; + if (res) + s = desired; + expected = old_val; + + return res; + } + + static bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + // Note: This function is the exact copy of compare_exchange_strong. The reason we're not just forwarding the call + // is that MSVC-12 ICEs in this case. + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type old_val = s; + const bool res = old_val == expected; + if (res) + s = desired; + expected = old_val; + + return res; + } + + static storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type old_val = s; + s &= v; + return old_val; + } + + static storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type old_val = s; + s |= v; + return old_val; + } + + static storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type old_val = s; + s ^= v; + return old_val; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + store(storage, (storage_type)0, order); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_EMULATED_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_operations_emulated_fwd.hpp b/src/boost/boost/atomic/detail/core_operations_emulated_fwd.hpp new file mode 100644 index 000000000..443e2d46c --- /dev/null +++ b/src/boost/boost/atomic/detail/core_operations_emulated_fwd.hpp @@ -0,0 +1,38 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/core_operations_emulated_fwd.hpp + * + * This header forward-declares lock pool-based implementation of the core atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_EMULATED_FWD_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_EMULATED_FWD_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< std::size_t Size, std::size_t Alignment, bool Signed, bool Interprocess > +struct core_operations_emulated; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_EMULATED_FWD_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_operations_fwd.hpp b/src/boost/boost/atomic/detail/core_operations_fwd.hpp new file mode 100644 index 000000000..febce5cdb --- /dev/null +++ b/src/boost/boost/atomic/detail/core_operations_fwd.hpp @@ -0,0 +1,38 @@ +/* + * 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) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_operations_fwd.hpp + * + * This header contains forward declaration of the \c core_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_FWD_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_FWD_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< std::size_t Size, bool Signed, bool Interprocess > +struct core_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_OPERATIONS_FWD_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_ops_cas_based.hpp b/src/boost/boost/atomic/detail/core_ops_cas_based.hpp new file mode 100644 index 000000000..b7423e7e3 --- /dev/null +++ b/src/boost/boost/atomic/detail/core_ops_cas_based.hpp @@ -0,0 +1,94 @@ +/* + * 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) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_ops_cas_based.hpp + * + * This header contains CAS-based implementation of core atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_OPS_CAS_BASED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_OPS_CAS_BASED_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base > +struct core_operations_cas_based : + public Base +{ + typedef typename Base::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = true; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val; + atomics::detail::non_atomic_load(storage, old_val); + while (!Base::compare_exchange_weak(storage, old_val, old_val + v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val; + atomics::detail::non_atomic_load(storage, old_val); + while (!Base::compare_exchange_weak(storage, old_val, old_val - v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val; + atomics::detail::non_atomic_load(storage, old_val); + while (!Base::compare_exchange_weak(storage, old_val, old_val & v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val; + atomics::detail::non_atomic_load(storage, old_val); + while (!Base::compare_exchange_weak(storage, old_val, old_val | v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val; + atomics::detail::non_atomic_load(storage, old_val); + while (!Base::compare_exchange_weak(storage, old_val, old_val ^ v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!Base::exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + Base::store(storage, (storage_type)0, order); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_OPS_CAS_BASED_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_ops_gcc_atomic.hpp b/src/boost/boost/atomic/detail/core_ops_gcc_atomic.hpp new file mode 100644 index 000000000..d0d93cf00 --- /dev/null +++ b/src/boost/boost/atomic/detail/core_ops_gcc_atomic.hpp @@ -0,0 +1,306 @@ +/* + * 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) + * + * Copyright (c) 2014, 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/core_ops_gcc_atomic.hpp + * + * This header contains implementation of the \c core_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_OPS_GCC_ATOMIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_OPS_GCC_ATOMIC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#if BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT8_LOCK_FREE < BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE || BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE < BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE ||\ + BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE < BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE || BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE < BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE +// There are platforms where we need to use larger storage types +#include +#include +#endif +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__INTEL_COMPILER) +// This is used to suppress warning #32013 described in gcc_atomic_memory_order_utils.hpp +// for Intel Compiler. +// In debug builds the compiler does not inline any functions, so basically +// every atomic function call results in this warning. I don't know any other +// way to selectively disable just this one warning. +#pragma system_header +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< std::size_t Size, bool Signed, bool Interprocess > +struct core_operations_gcc_atomic +{ + typedef typename storage_traits< Size >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = Size; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = storage_traits< Size >::alignment; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + + // Note: In the current implementation, core_operations_gcc_atomic are used only when the particularly sized __atomic + // intrinsics are always lock-free (i.e. the corresponding LOCK_FREE macro is 2). Therefore it is safe to + // always set is_always_lock_free to true here. + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { +#if defined(BOOST_GCC) && BOOST_GCC < 100100 && (defined(__x86_64__) || defined(__i386__)) + // gcc up to 10.1 generates mov + mfence for seq_cst stores, which is slower than xchg + if (order != memory_order_seq_cst) + __atomic_store_n(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + else + __atomic_exchange_n(&storage, v, __ATOMIC_SEQ_CST); +#else + __atomic_store_n(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); +#endif + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_RCPC) + // At least gcc 9.3 and clang 10 do not generate relaxed ldapr instructions that are available in ARMv8.3-RCPC extension. + // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95751 + typedef atomics::detail::core_arch_operations< storage_size, is_signed, is_interprocess > core_arch_operations; + return core_arch_operations::load(storage, order); +#else + return __atomic_load_n(&storage, atomics::detail::convert_memory_order_to_gcc(order)); +#endif + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_fetch_add(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_fetch_sub(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_exchange_n(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return __atomic_compare_exchange_n + ( + &storage, &expected, desired, false, + atomics::detail::convert_memory_order_to_gcc(success_order), + atomics::detail::convert_memory_order_to_gcc(failure_order) + ); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return __atomic_compare_exchange_n + ( + &storage, &expected, desired, true, + atomics::detail::convert_memory_order_to_gcc(success_order), + atomics::detail::convert_memory_order_to_gcc(failure_order) + ); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_fetch_and(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_fetch_or(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_fetch_xor(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return __atomic_test_and_set(&storage, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + __atomic_clear(const_cast< storage_type* >(&storage), atomics::detail::convert_memory_order_to_gcc(order)); + } +}; + +// We want to only enable __atomic* intrinsics when the corresponding BOOST_ATOMIC_DETAIL_GCC_ATOMIC_*_LOCK_FREE macro indicates +// the same or better lock-free guarantees as the BOOST_ATOMIC_*_LOCK_FREE macro. Otherwise, we want to leave core_operations +// unspecialized, so that core_arch_operations is used instead. + +#if BOOST_ATOMIC_INT128_LOCK_FREE > 0 && BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE >= BOOST_ATOMIC_INT128_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 16u, Signed, Interprocess > : + public core_operations_gcc_atomic< 16u, Signed, Interprocess > +{ +}; + +#endif + +#if BOOST_ATOMIC_INT64_LOCK_FREE > 0 +#if BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE >= BOOST_ATOMIC_INT64_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 8u, Signed, Interprocess > : + public core_operations_gcc_atomic< 8u, Signed, Interprocess > +{ +}; + +#elif BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE >= BOOST_ATOMIC_INT64_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 8u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_gcc_atomic< 16u, Signed, Interprocess >, 8u, Signed > +{ +}; + +#endif +#endif // BOOST_ATOMIC_INT64_LOCK_FREE > 0 + + +#if BOOST_ATOMIC_INT32_LOCK_FREE > 0 +#if BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE >= BOOST_ATOMIC_INT32_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 4u, Signed, Interprocess > : + public core_operations_gcc_atomic< 4u, Signed, Interprocess > +{ +}; + +#elif BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE >= BOOST_ATOMIC_INT32_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 4u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_gcc_atomic< 8u, Signed, Interprocess >, 4u, Signed > +{ +}; + +#elif BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE >= BOOST_ATOMIC_INT32_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 8u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_gcc_atomic< 16u, Signed, Interprocess >, 4u, Signed > +{ +}; + +#endif +#endif // BOOST_ATOMIC_INT32_LOCK_FREE > 0 + + +#if BOOST_ATOMIC_INT16_LOCK_FREE > 0 +#if BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE >= BOOST_ATOMIC_INT16_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 2u, Signed, Interprocess > : + public core_operations_gcc_atomic< 2u, Signed, Interprocess > +{ +}; + +#elif BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE >= BOOST_ATOMIC_INT16_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 2u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_gcc_atomic< 4u, Signed, Interprocess >, 2u, Signed > +{ +}; + +#elif BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE >= BOOST_ATOMIC_INT16_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 2u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_gcc_atomic< 8u, Signed, Interprocess >, 2u, Signed > +{ +}; + +#elif BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE >= BOOST_ATOMIC_INT16_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 2u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_gcc_atomic< 16u, Signed, Interprocess >, 2u, Signed > +{ +}; + +#endif +#endif // BOOST_ATOMIC_INT16_LOCK_FREE > 0 + + +#if BOOST_ATOMIC_INT8_LOCK_FREE > 0 +#if BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT8_LOCK_FREE >= BOOST_ATOMIC_INT8_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 1u, Signed, Interprocess > : + public core_operations_gcc_atomic< 1u, Signed, Interprocess > +{ +}; + +#elif BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT16_LOCK_FREE >= BOOST_ATOMIC_INT8_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 1u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_gcc_atomic< 2u, Signed, Interprocess >, 1u, Signed > +{ +}; + +#elif BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT32_LOCK_FREE >= BOOST_ATOMIC_INT8_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 1u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_gcc_atomic< 4u, Signed, Interprocess >, 1u, Signed > +{ +}; + +#elif BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT64_LOCK_FREE >= BOOST_ATOMIC_INT8_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 1u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_gcc_atomic< 8u, Signed, Interprocess >, 1u, Signed > +{ +}; + +#elif BOOST_ATOMIC_DETAIL_GCC_ATOMIC_INT128_LOCK_FREE >= BOOST_ATOMIC_INT8_LOCK_FREE + +template< bool Signed, bool Interprocess > +struct core_operations< 1u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_gcc_atomic< 16u, Signed, Interprocess >, 1u, Signed > +{ +}; + +#endif +#endif // BOOST_ATOMIC_INT8_LOCK_FREE > 0 + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_OPS_GCC_ATOMIC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_ops_gcc_sync.hpp b/src/boost/boost/atomic/detail/core_ops_gcc_sync.hpp new file mode 100644 index 000000000..c979643eb --- /dev/null +++ b/src/boost/boost/atomic/detail/core_ops_gcc_sync.hpp @@ -0,0 +1,263 @@ +/* + * 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) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_ops_gcc_sync.hpp + * + * This header contains implementation of the \c core_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_OPS_GCC_SYNC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_OPS_GCC_SYNC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +struct core_operations_gcc_sync_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void fence_before_store(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + __sync_synchronize(); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __sync_synchronize(); + } + + static BOOST_FORCEINLINE void fence_after_load(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_acquire) | static_cast< unsigned int >(memory_order_consume))) != 0u) + __sync_synchronize(); + } +}; + +template< std::size_t Size, bool Signed, bool Interprocess > +struct core_operations_gcc_sync : + public core_operations_gcc_sync_base +{ + typedef typename storage_traits< Size >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = Size; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = storage_traits< storage_size >::alignment; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + // In general, we cannot guarantee atomicity of plain loads and stores of anything larger than a single byte on + // an arbitrary CPU architecture. However, all modern architectures seem to guarantee atomic loads and stores of + // suitably aligned objects of up to a pointer size. For larger objects we should probably use intrinsics to guarantee + // atomicity. If there appears an architecture where this doesn't hold, this threshold needs to be updated (patches are welcome). + typedef atomics::detail::integral_constant< bool, storage_size <= sizeof(void*) > plain_stores_loads_are_atomic; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + store(storage, v, order, plain_stores_loads_are_atomic()); + } + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order, atomics::detail::true_type) BOOST_NOEXCEPT + { + fence_before_store(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order, atomics::detail::false_type) BOOST_NOEXCEPT + { + exchange(storage, v, order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return load(storage, order, plain_stores_loads_are_atomic()); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order, atomics::detail::true_type) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order, atomics::detail::false_type) BOOST_NOEXCEPT + { + // Note: don't use fetch_add or other arithmetics here since storage_type may not be an arithmetic type. + storage_type expected = storage_type(); + storage_type desired = expected; + // We don't care if CAS succeeds or not. If it does, it will just write the same value there was before. + return __sync_val_compare_and_swap(const_cast< storage_type volatile* >(&storage), expected, desired); + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return __sync_fetch_and_add(&storage, v); + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return __sync_fetch_and_sub(&storage, v); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + // GCC docs mention that not all architectures may support full exchange semantics for this intrinsic. However, GCC's implementation of + // std::atomic<> uses this intrinsic unconditionally. We do so as well. In case if some architectures actually don't support this, we can always + // add a check here and fall back to a CAS loop. + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + __sync_synchronize(); + return __sync_lock_test_and_set(&storage, v); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type expected2 = expected; + storage_type old_val = __sync_val_compare_and_swap(&storage, expected2, desired); + + if (old_val == expected2) + { + return true; + } + else + { + expected = old_val; + return false; + } + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return __sync_fetch_and_and(&storage, v); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return __sync_fetch_and_or(&storage, v); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return __sync_fetch_and_xor(&storage, v); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + __sync_synchronize(); + return !!__sync_lock_test_and_set(&storage, 1); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + __sync_lock_release(&storage); + if (order == memory_order_seq_cst) + __sync_synchronize(); + } +}; + +#if BOOST_ATOMIC_INT8_LOCK_FREE > 0 +template< bool Signed, bool Interprocess > +struct core_operations< 1u, Signed, Interprocess > : +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1) + public core_operations_gcc_sync< 1u, Signed, Interprocess > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) + public extending_cas_based_arithmetic< core_operations_gcc_sync< 2u, Signed, Interprocess >, 1u, Signed > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) + public extending_cas_based_arithmetic< core_operations_gcc_sync< 4u, Signed, Interprocess >, 1u, Signed > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) + public extending_cas_based_arithmetic< core_operations_gcc_sync< 8u, Signed, Interprocess >, 1u, Signed > +#else + public extending_cas_based_arithmetic< core_operations_gcc_sync< 16u, Signed, Interprocess >, 1u, Signed > +#endif +{ +}; +#endif + +#if BOOST_ATOMIC_INT16_LOCK_FREE > 0 +template< bool Signed, bool Interprocess > +struct core_operations< 2u, Signed, Interprocess > : +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) + public core_operations_gcc_sync< 2u, Signed, Interprocess > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) + public extending_cas_based_arithmetic< core_operations_gcc_sync< 4u, Signed, Interprocess >, 2u, Signed > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) + public extending_cas_based_arithmetic< core_operations_gcc_sync< 8u, Signed, Interprocess >, 2u, Signed > +#else + public extending_cas_based_arithmetic< core_operations_gcc_sync< 16u, Signed, Interprocess >, 2u, Signed > +#endif +{ +}; +#endif + +#if BOOST_ATOMIC_INT32_LOCK_FREE > 0 +template< bool Signed, bool Interprocess > +struct core_operations< 4u, Signed, Interprocess > : +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) + public core_operations_gcc_sync< 4u, Signed, Interprocess > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) + public extending_cas_based_arithmetic< core_operations_gcc_sync< 8u, Signed, Interprocess >, 4u, Signed > +#else + public extending_cas_based_arithmetic< core_operations_gcc_sync< 16u, Signed, Interprocess >, 4u, Signed > +#endif +{ +}; +#endif + +#if BOOST_ATOMIC_INT64_LOCK_FREE > 0 +template< bool Signed, bool Interprocess > +struct core_operations< 8u, Signed, Interprocess > : +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) + public core_operations_gcc_sync< 8u, Signed, Interprocess > +#else + public extending_cas_based_arithmetic< core_operations_gcc_sync< 16u, Signed, Interprocess >, 8u, Signed > +#endif +{ +}; +#endif + +#if BOOST_ATOMIC_INT128_LOCK_FREE > 0 +template< bool Signed, bool Interprocess > +struct core_operations< 16u, Signed, Interprocess > : + public core_operations_gcc_sync< 16u, Signed, Interprocess > +{ +}; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_OPS_GCC_SYNC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_ops_linux_arm.hpp b/src/boost/boost/atomic/detail/core_ops_linux_arm.hpp new file mode 100644 index 000000000..72cf33b1c --- /dev/null +++ b/src/boost/boost/atomic/detail/core_ops_linux_arm.hpp @@ -0,0 +1,169 @@ +/* + * 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) + * + * Copyright (c) 2009, 2011 Helge Bahmann + * Copyright (c) 2009 Phil Endecott + * Copyright (c) 2013 Tim Blechmann + * Linux-specific code by Phil Endecott + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_ops_linux_arm.hpp + * + * This header contains implementation of the \c core_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_OPS_LINUX_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_OPS_LINUX_ARM_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +// Different ARM processors have different atomic instructions. In particular, +// architecture versions before v6 (which are still in widespread use, e.g. the +// Intel/Marvell XScale chips like the one in the NSLU2) have only atomic swap. +// On Linux the kernel provides some support that lets us abstract away from +// these differences: it provides emulated CAS and barrier functions at special +// addresses that are guaranteed not to be interrupted by the kernel. Using +// this facility is slightly slower than inline assembler would be, but much +// faster than a system call. +// +// https://lwn.net/Articles/314561/ +// +// While this emulated CAS is "strong" in the sense that it does not fail +// "spuriously" (i.e.: it never fails to perform the exchange when the value +// found equals the value expected), it does not return the found value on +// failure. To satisfy the atomic API, compare_exchange_{weak|strong} must +// return the found value on failure, and we have to manually load this value +// after the emulated CAS reports failure. This in turn introduces a race +// between the CAS failing (due to the "wrong" value being found) and subsequently +// loading (which might turn up the "right" value). From an application's +// point of view this looks like "spurious failure", and therefore the +// emulated CAS is only good enough to provide compare_exchange_weak +// semantics. + +struct linux_arm_cas_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = true; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void fence_before_store(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + fence_operations::hardware_full_fence(); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + fence_operations::hardware_full_fence(); + } + + static BOOST_FORCEINLINE void fence_after_load(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + fence_operations::hardware_full_fence(); + } +}; + +template< bool Signed, bool Interprocess > +struct linux_arm_cas : + public linux_arm_cas_base +{ + typedef typename storage_traits< 4u >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before_store(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + while (true) + { + storage_type tmp = expected; + if (compare_exchange_weak(storage, tmp, desired, success_order, failure_order)) + return true; + if (tmp != expected) + { + expected = tmp; + return false; + } + } + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + typedef storage_type (*kernel_cmpxchg32_t)(storage_type oldval, storage_type newval, volatile storage_type* ptr); + + if (((kernel_cmpxchg32_t)0xffff0fc0)(expected, desired, &storage) == 0) + { + return true; + } + else + { + expected = storage; + return false; + } + } +}; + +template< bool Signed, bool Interprocess > +struct core_operations< 1u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_cas_based< cas_based_exchange< linux_arm_cas< Signed, Interprocess > > >, 1u, Signed > +{ +}; + +template< bool Signed, bool Interprocess > +struct core_operations< 2u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations_cas_based< cas_based_exchange< linux_arm_cas< Signed, Interprocess > > >, 2u, Signed > +{ +}; + +template< bool Signed, bool Interprocess > +struct core_operations< 4u, Signed, Interprocess > : + public core_operations_cas_based< cas_based_exchange< linux_arm_cas< Signed, Interprocess > > > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_OPS_LINUX_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/core_ops_windows.hpp b/src/boost/boost/atomic/detail/core_ops_windows.hpp new file mode 100644 index 000000000..9b2ee290b --- /dev/null +++ b/src/boost/boost/atomic/detail/core_ops_windows.hpp @@ -0,0 +1,201 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/core_ops_windows.hpp + * + * This header contains implementation of the \c core_operations template. + * + * This implementation is the most basic version for Windows. It should + * work for any non-MSVC-like compilers as long as there are Interlocked WinAPI + * functions available. This version is also used for WinCE. + * + * Notably, this implementation is not as efficient as other + * versions based on compiler intrinsics. + */ + +#ifndef BOOST_ATOMIC_DETAIL_CORE_OPS_WINDOWS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CORE_OPS_WINDOWS_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +struct core_operations_windows_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void fence_before(memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void fence_after(memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } +}; + +template< std::size_t Size, bool Signed, bool Interprocess, typename Derived > +struct core_operations_windows : + public core_operations_windows_base +{ + typedef typename storage_traits< Size >::type storage_type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = Size; + static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = storage_traits< Size >::alignment; + static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed; + static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + Derived::exchange(storage, v, order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return Derived::fetch_add(const_cast< storage_type volatile& >(storage), (storage_type)0, order); + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + typedef typename boost::atomics::detail::make_signed< storage_type >::type signed_storage_type; + return Derived::fetch_add(storage, static_cast< storage_type >(-static_cast< signed_storage_type >(v)), order); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return Derived::compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!Derived::exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } +}; + +template< bool Signed, bool Interprocess > +struct core_operations< 4u, Signed, bool Interprocess > : + public core_operations_windows< 4u, Signed, Interprocess, core_operations< 4u, Signed, Interprocess > > +{ + typedef core_operations_windows< 4u, Signed, Interprocess, core_operations< 4u, Signed, Interprocess > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(&storage, v)); + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&storage, v)); + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + base_type::fence_before(success_order); + storage_type old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&storage, desired, previous)); + expected = old_val; + // The success and failure fences are the same anyway + base_type::fence_after(success_order); + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_INTERLOCKED_AND) + base_type::fence_before(order); + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND(&storage, v)); + base_type::fence_after(order); + return v; +#else + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res & v, order, memory_order_relaxed)) {} + return res; +#endif + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_INTERLOCKED_OR) + base_type::fence_before(order); + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR(&storage, v)); + base_type::fence_after(order); + return v; +#else + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res | v, order, memory_order_relaxed)) {} + return res; +#endif + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_INTERLOCKED_XOR) + base_type::fence_before(order); + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR(&storage, v)); + base_type::fence_after(order); + return v; +#else + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res ^ v, order, memory_order_relaxed)) {} + return res; +#endif + } +}; + +template< bool Signed, bool Interprocess > +struct core_operations< 1u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations< 4u, Signed, Interprocess >, 1u, Signed > +{ +}; + +template< bool Signed, bool Interprocess > +struct core_operations< 2u, Signed, Interprocess > : + public extending_cas_based_arithmetic< core_operations< 4u, Signed, Interprocess >, 2u, Signed > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_CORE_OPS_WINDOWS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extending_cas_based_arithmetic.hpp b/src/boost/boost/atomic/detail/extending_cas_based_arithmetic.hpp new file mode 100644 index 000000000..8384646a5 --- /dev/null +++ b/src/boost/boost/atomic/detail/extending_cas_based_arithmetic.hpp @@ -0,0 +1,72 @@ +/* + * 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) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/extending_cas_based_arithmetic.hpp + * + * This header contains a boilerplate of core atomic operations that require sign/zero extension in arithmetic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTENDING_CAS_BASED_ARITHMETIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTENDING_CAS_BASED_ARITHMETIC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base, std::size_t Size, bool Signed > +struct extending_cas_based_arithmetic : + public Base +{ + typedef typename Base::storage_type storage_type; + typedef typename storage_traits< Size >::type emulated_storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val; + atomics::detail::non_atomic_load(storage, old_val); + storage_type new_val; + do + { + new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(old_val + v)); + } + while (!Base::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed)); + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val; + atomics::detail::non_atomic_load(storage, old_val); + storage_type new_val; + do + { + new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(old_val - v)); + } + while (!Base::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed)); + return old_val; + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTENDING_CAS_BASED_ARITHMETIC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_fp_operations.hpp b/src/boost/boost/atomic/detail/extra_fp_operations.hpp new file mode 100644 index 000000000..daf47e5ed --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_fp_operations.hpp @@ -0,0 +1,28 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_fp_operations.hpp + * + * This header defines extra floating point atomic operations, including the generic version. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_FP_OPERATIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_FP_OPERATIONS_HPP_INCLUDED_ + +#include +#include + +#if !defined(BOOST_ATOMIC_DETAIL_EXTRA_FP_BACKEND_GENERIC) +#include BOOST_ATOMIC_DETAIL_EXTRA_FP_BACKEND_HEADER(boost/atomic/detail/extra_fp_ops_) +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_FP_OPERATIONS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_fp_operations_fwd.hpp b/src/boost/boost/atomic/detail/extra_fp_operations_fwd.hpp new file mode 100644 index 000000000..1751e6ddb --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_fp_operations_fwd.hpp @@ -0,0 +1,38 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_fp_operations_fwd.hpp + * + * This header contains forward declaration of the \c extra_fp_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_FP_OPERATIONS_FWD_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_FP_OPERATIONS_FWD_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base, typename Value = typename Base::value_type, std::size_t Size = sizeof(typename Base::storage_type), bool = Base::is_always_lock_free > +struct extra_fp_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_FP_OPERATIONS_FWD_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_fp_ops_emulated.hpp b/src/boost/boost/atomic/detail/extra_fp_ops_emulated.hpp new file mode 100644 index 000000000..565926824 --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_fp_ops_emulated.hpp @@ -0,0 +1,118 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_fp_ops_emulated.hpp + * + * This header contains emulated (lock-based) implementation of the extra floating point atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_FP_OPS_EMULATED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_FP_OPS_EMULATED_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Emulated implementation of extra floating point operations +template< typename Base, typename Value, std::size_t Size > +struct extra_fp_operations_emulated : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + typedef Value value_type; + typedef typename base_type::scoped_lock scoped_lock; + + static value_type fetch_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + value_type old_val = atomics::detail::bitwise_fp_cast< value_type >(s); + value_type new_val = -old_val; + s = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + return old_val; + } + + static value_type negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + value_type old_val = atomics::detail::bitwise_fp_cast< value_type >(s); + value_type new_val = -old_val; + s = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + return new_val; + } + + static value_type add(storage_type volatile& storage, value_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + value_type old_val = atomics::detail::bitwise_fp_cast< value_type >(s); + value_type new_val = old_val + v; + s = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + return new_val; + } + + static value_type sub(storage_type volatile& storage, value_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + value_type old_val = atomics::detail::bitwise_fp_cast< value_type >(s); + value_type new_val = old_val - v; + s = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + return new_val; + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + fetch_negate(storage, order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, value_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + base_type::fetch_add(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, value_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + base_type::fetch_sub(storage, v, order); + } +}; + +template< typename Base, typename Value, std::size_t Size > +struct extra_fp_operations< Base, Value, Size, false > : + public extra_fp_operations_emulated< Base, Value, Size > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_FP_OPS_EMULATED_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_fp_ops_generic.hpp b/src/boost/boost/atomic/detail/extra_fp_ops_generic.hpp new file mode 100644 index 000000000..cc95b08c5 --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_fp_ops_generic.hpp @@ -0,0 +1,192 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_fp_ops_generic.hpp + * + * This header contains generic implementation of the extra floating point atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_FP_OPS_GENERIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_FP_OPS_GENERIC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(BOOST_GCC) && BOOST_GCC >= 60000 +#pragma GCC diagnostic push +// ignoring attributes on template argument X - this warning is because we need to pass storage_type as a template argument; no problem in this case +#pragma GCC diagnostic ignored "-Wignored-attributes" +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Negate implementation +template< + typename Base, + typename Value, + std::size_t Size +#if defined(BOOST_ATOMIC_DETAIL_INT_FP_ENDIAN_MATCH) + , bool = atomics::detail::is_iec559< Value >::value && atomics::detail::is_integral< typename Base::storage_type >::value +#endif +> +struct extra_fp_negate_generic : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + typedef Value value_type; + + static BOOST_FORCEINLINE value_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type old_storage, new_storage; + value_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_storage); + do + { + old_val = atomics::detail::bitwise_fp_cast< value_type >(old_storage); + new_val = -old_val; + new_storage = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + } + while (!base_type::compare_exchange_weak(storage, old_storage, new_storage, order, memory_order_relaxed)); + return old_val; + } + + static BOOST_FORCEINLINE value_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type old_storage, new_storage; + value_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_storage); + do + { + old_val = atomics::detail::bitwise_fp_cast< value_type >(old_storage); + new_val = -old_val; + new_storage = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + } + while (!base_type::compare_exchange_weak(storage, old_storage, new_storage, order, memory_order_relaxed)); + return new_val; + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + fetch_negate(storage, order); + } +}; + +#if defined(BOOST_ATOMIC_DETAIL_INT_FP_ENDIAN_MATCH) + +//! Negate implementation for IEEE 754 / IEC 559 floating point types. We leverage the fact that the sign bit is the most significant bit in the value. +template< typename Base, typename Value, std::size_t Size > +struct extra_fp_negate_generic< Base, Value, Size, true > : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + typedef Value value_type; + + //! The mask with only one sign bit set to 1 + static BOOST_CONSTEXPR_OR_CONST storage_type sign_mask = static_cast< storage_type >(1u) << (atomics::detail::value_size_of< value_type >::value * 8u - 1u); + + static BOOST_FORCEINLINE value_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return atomics::detail::bitwise_fp_cast< value_type >(base_type::fetch_xor(storage, sign_mask, order)); + } + + static BOOST_FORCEINLINE value_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return atomics::detail::bitwise_fp_cast< value_type >(base_type::bitwise_xor(storage, sign_mask, order)); + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::opaque_xor(storage, sign_mask, order); + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_INT_FP_ENDIAN_MATCH) + +//! Generic implementation of floating point operations +template< typename Base, typename Value, std::size_t Size > +struct extra_fp_operations_generic : + public extra_fp_negate_generic< Base, Value, Size > +{ + typedef extra_fp_negate_generic< Base, Value, Size > base_type; + typedef typename base_type::storage_type storage_type; + typedef Value value_type; + + static BOOST_FORCEINLINE value_type add(storage_type volatile& storage, value_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_storage, new_storage; + value_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_storage); + do + { + old_val = atomics::detail::bitwise_fp_cast< value_type >(old_storage); + new_val = old_val + v; + new_storage = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + } + while (!base_type::compare_exchange_weak(storage, old_storage, new_storage, order, memory_order_relaxed)); + return new_val; + } + + static BOOST_FORCEINLINE value_type sub(storage_type volatile& storage, value_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_storage, new_storage; + value_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_storage); + do + { + old_val = atomics::detail::bitwise_fp_cast< value_type >(old_storage); + new_val = old_val - v; + new_storage = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + } + while (!base_type::compare_exchange_weak(storage, old_storage, new_storage, order, memory_order_relaxed)); + return new_val; + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, value_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_add(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, value_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_sub(storage, v, order); + } +}; + +// Default extra_fp_operations template definition will be used unless specialized for a specific platform +template< typename Base, typename Value, std::size_t Size > +struct extra_fp_operations< Base, Value, Size, true > : + public extra_fp_operations_generic< Base, Value, Size > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#if defined(BOOST_GCC) && BOOST_GCC >= 60000 +#pragma GCC diagnostic pop +#endif + +#include + +#endif // BOOST_ATOMIC_DETAIL_FP_OPS_GENERIC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_operations.hpp b/src/boost/boost/atomic/detail/extra_operations.hpp new file mode 100644 index 000000000..0cfe47523 --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_operations.hpp @@ -0,0 +1,28 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_operations.hpp + * + * This header defines extra atomic operations, including the generic version. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPERATIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPERATIONS_HPP_INCLUDED_ + +#include +#include + +#if !defined(BOOST_ATOMIC_DETAIL_EXTRA_BACKEND_GENERIC) +#include BOOST_ATOMIC_DETAIL_EXTRA_BACKEND_HEADER(boost/atomic/detail/extra_ops_) +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPERATIONS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_operations_fwd.hpp b/src/boost/boost/atomic/detail/extra_operations_fwd.hpp new file mode 100644 index 000000000..14c4d0366 --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_operations_fwd.hpp @@ -0,0 +1,38 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_operations_fwd.hpp + * + * This header contains forward declaration of the \c extra_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPERATIONS_FWD_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPERATIONS_FWD_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base, std::size_t Size = sizeof(typename Base::storage_type), bool Signed = Base::is_signed, bool = Base::is_always_lock_free > +struct extra_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPERATIONS_FWD_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_ops_emulated.hpp b/src/boost/boost/atomic/detail/extra_ops_emulated.hpp new file mode 100644 index 000000000..22f0c1fb5 --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_ops_emulated.hpp @@ -0,0 +1,258 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_ops_emulated.hpp + * + * This header contains emulated (lock-based) implementation of the extra atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPS_EMULATED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPS_EMULATED_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Emulated implementation of extra operations +template< typename Base, std::size_t Size, bool Signed > +struct extra_operations_emulated : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + typedef typename base_type::scoped_lock scoped_lock; + + static storage_type fetch_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type old_val = s; + s = static_cast< storage_type >(-old_val); + return old_val; + } + + static storage_type negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type new_val = static_cast< storage_type >(-s); + s = new_val; + return new_val; + } + + static storage_type add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type new_val = s; + new_val += v; + s = new_val; + return new_val; + } + + static storage_type sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type new_val = s; + new_val -= v; + s = new_val; + return new_val; + } + + static storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type new_val = s; + new_val &= v; + s = new_val; + return new_val; + } + + static storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type new_val = s; + new_val |= v; + s = new_val; + return new_val; + } + + static storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type new_val = s; + new_val ^= v; + s = new_val; + return new_val; + } + + static storage_type fetch_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type old_val = s; + s = static_cast< storage_type >(~old_val); + return old_val; + } + + static storage_type bitwise_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + storage_type new_val = static_cast< storage_type >(~s); + s = new_val; + return new_val; + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + base_type::fetch_add(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + base_type::fetch_sub(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + fetch_negate(storage, order); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + base_type::fetch_and(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + base_type::fetch_or(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + base_type::fetch_xor(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + fetch_complement(storage, order); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + return !!add(storage, v, order); + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + return !!sub(storage, v, order); + } + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + return !!negate(storage, order); + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + return !!bitwise_and(storage, v, order); + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + return !!bitwise_or(storage, v, order); + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + return !!bitwise_xor(storage, v, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + return !!bitwise_complement(storage, order); + } + + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type mask = static_cast< storage_type >(static_cast< storage_type >(1u) << bit_number); + storage_type old_val = base_type::fetch_or(storage, mask, order); + return !!(old_val & mask); + } + + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type mask = static_cast< storage_type >(static_cast< storage_type >(1u) << bit_number); + storage_type old_val = base_type::fetch_and(storage, ~mask, order); + return !!(old_val & mask); + } + + static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type mask = static_cast< storage_type >(static_cast< storage_type >(1u) << bit_number); + storage_type old_val = base_type::fetch_xor(storage, mask, order); + return !!(old_val & mask); + } +}; + +template< typename Base, std::size_t Size, bool Signed > +struct extra_operations< Base, Size, Signed, false > : + public extra_operations_emulated< Base, Size, Signed > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPS_EMULATED_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_ops_gcc_aarch32.hpp b/src/boost/boost/atomic/detail/extra_ops_gcc_aarch32.hpp new file mode 100644 index 000000000..52b919ca2 --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_ops_gcc_aarch32.hpp @@ -0,0 +1,1060 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_ops_gcc_aarch32.hpp + * + * This header contains implementation of the extra atomic operations for AArch32. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_AARCH32_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_AARCH32_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base > +struct extra_operations_gcc_aarch32_common : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + // Note: For opaque operations prefer operations returning the resulting values instead of the original values + // as these operations require less registers. + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::negate(storage, order); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::bitwise_complement(storage, order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::add(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::sub(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::bitwise_and(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::bitwise_or(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::bitwise_xor(storage, v, order); + } + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::negate(storage, order); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::add(storage, v, order); + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::sub(storage, v, order); + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_and(storage, v, order); + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_or(storage, v, order); + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_xor(storage, v, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_complement(storage, order); + } +}; + +template< typename Base, std::size_t Size, bool Signed > +struct extra_operations_gcc_aarch32; + +template< typename Base, bool Signed > +struct extra_operations_gcc_aarch32< Base, 1u, Signed > : + public extra_operations_generic< Base, 1u, Signed > +{ + typedef extra_operations_generic< Base, 1u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[original], %[storage]\n\t"\ + "rsb %[result], %[original], #0\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[result], %[storage]\n\t"\ + "rsb %[result], #0\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[result], %[storage]\n\t"\ + "add %[result], %[value]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[result], %[storage]\n\t"\ + "sub %[result], %[value]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[result], %[storage]\n\t"\ + "and %[result], %[value]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[result], %[storage]\n\t"\ + "orr %[result], %[value]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[result], %[storage]\n\t"\ + "eor %[result], %[value]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[original], %[storage]\n\t"\ + "mvn %[result], %[original]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exb %[result], %[storage]\n\t"\ + "mvn %[result], %[result]\n\t"\ + "st" st_mo "exb %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 1u, Signed, true > : + public extra_operations_gcc_aarch32_common< extra_operations_gcc_aarch32< Base, 1u, Signed > > +{ +}; + + +template< typename Base, bool Signed > +struct extra_operations_gcc_aarch32< Base, 2u, Signed > : + public extra_operations_generic< Base, 2u, Signed > +{ + typedef extra_operations_generic< Base, 2u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[original], %[storage]\n\t"\ + "rsb %[result], %[original], #0\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[result], %[storage]\n\t"\ + "rsb %[result], #0\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[result], %[storage]\n\t"\ + "add %[result], %[value]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[result], %[storage]\n\t"\ + "sub %[result], %[value]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[result], %[storage]\n\t"\ + "and %[result], %[value]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[result], %[storage]\n\t"\ + "orr %[result], %[value]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[result], %[storage]\n\t"\ + "eor %[result], %[value]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[original], %[storage]\n\t"\ + "mvn %[result], %[original]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exh %[result], %[storage]\n\t"\ + "mvn %[result], %[result]\n\t"\ + "st" st_mo "exh %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 2u, Signed, true > : + public extra_operations_gcc_aarch32_common< extra_operations_gcc_aarch32< Base, 2u, Signed > > +{ +}; + +template< typename Base, bool Signed > +struct extra_operations_gcc_aarch32< Base, 4u, Signed > : + public extra_operations_generic< Base, 4u, Signed > +{ + typedef extra_operations_generic< Base, 4u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[original], %[storage]\n\t"\ + "rsb %[result], %[original], #0\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[result], %[storage]\n\t"\ + "rsb %[result], #0\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[result], %[storage]\n\t"\ + "add %[result], %[value]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[result], %[storage]\n\t"\ + "sub %[result], %[value]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[result], %[storage]\n\t"\ + "and %[result], %[value]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[result], %[storage]\n\t"\ + "orr %[result], %[value]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[result], %[storage]\n\t"\ + "eor %[result], %[value]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : [value] "Ir" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[original], %[storage]\n\t"\ + "mvn %[result], %[original]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [original] "=&r" (original), [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "ex %[result], %[storage]\n\t"\ + "mvn %[result], %[result]\n\t"\ + "st" st_mo "ex %[tmp], %[result], %[storage]\n\t"\ + "teq %[tmp], #0\n\t"\ + "bne 1b\n\t"\ + : [result] "=&r" (result), [tmp] "=&r" (tmp), [storage] "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 4u, Signed, true > : + public extra_operations_gcc_aarch32_common< extra_operations_gcc_aarch32< Base, 4u, Signed > > +{ +}; + +template< typename Base, bool Signed > +struct extra_operations_gcc_aarch32< Base, 8u, Signed > : + public extra_operations_generic< Base, 8u, Signed > +{ + typedef extra_operations_generic< Base, 8u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "mvn %3, %0\n\t"\ + "mvn %H3, %H0\n\t"\ + "adds " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(3) ", #1\n\t"\ + "adc " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(3) ", #0\n\t"\ + "st" st_mo "exd %1, %3, %H3, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (original), "=&r" (tmp), "+Q" (storage), "=&r" (result)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "mvn %0, %0\n\t"\ + "mvn %H0, %H0\n\t"\ + "adds " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(0) ", #1\n\t"\ + "adc " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(0) ", #0\n\t"\ + "st" st_mo "exd %1, %0, %H0, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (result), "=&r" (tmp), "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "adds " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(0) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(3) "\n\t"\ + "adc " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(0) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(3) "\n\t"\ + "st" st_mo "exd %1, %0, %H0, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (result), "=&r" (tmp), "+Q" (storage)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "subs " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(0) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(3) "\n\t"\ + "sbc " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(0) ", " BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(3) "\n\t"\ + "st" st_mo "exd %1, %0, %H0, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (result), "=&r" (tmp), "+Q" (storage)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "and %0, %3\n\t"\ + "and %H0, %H3\n\t"\ + "st" st_mo "exd %1, %0, %H0, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (result), "=&r" (tmp), "+Q" (storage)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "orr %0, %3\n\t"\ + "orr %H0, %H3\n\t"\ + "st" st_mo "exd %1, %0, %H0, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (result), "=&r" (tmp), "+Q" (storage)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "eor %0, %3\n\t"\ + "eor %H0, %H3\n\t"\ + "st" st_mo "exd %1, %0, %H0, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (result), "=&r" (tmp), "+Q" (storage)\ + : "r" (v)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "mvn %3, %0\n\t"\ + "mvn %H3, %H0\n\t"\ + "st" st_mo "exd %1, %3, %H3, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (original), "=&r" (tmp), "+Q" (storage), "=&r" (result)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "exd %0, %H0, %2\n\t"\ + "mvn %0, %0\n\t"\ + "mvn %H0, %H0\n\t"\ + "st" st_mo "exd %1, %0, %H0, %2\n\t"\ + "teq %1, #0\n\t"\ + "bne 1b\n\t"\ + : "=&r" (result), "=&r" (tmp), "+Q" (storage)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN + + return result; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 8u, Signed, true > : + public extra_operations_gcc_aarch32_common< extra_operations_gcc_aarch32< Base, 8u, Signed > > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_AARCH32_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_ops_gcc_aarch64.hpp b/src/boost/boost/atomic/detail/extra_ops_gcc_aarch64.hpp new file mode 100644 index 000000000..3e1f1b6ee --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_ops_gcc_aarch64.hpp @@ -0,0 +1,1330 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_ops_gcc_aarch64.hpp + * + * This header contains implementation of the extra atomic operations for AArch64. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_AARCH64_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_AARCH64_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base > +struct extra_operations_gcc_aarch64_common : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + // Note: For opaque operations prefer operations returning the resulting values instead of the original values + // as these operations require less registers. That is unless LSE is available, in which case + // it is better to use the dedicated atomic instructions. The LSE check is done in the base_type, + // where needed (e.g. for 128-bit operations there are no LSE instructions). + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::negate(storage, order); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::bitwise_complement(storage, order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::add(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::sub(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::bitwise_and(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::bitwise_or(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::bitwise_xor(storage, v, order); + } + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::negate(storage, order); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::add(storage, v, order); + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::sub(storage, v, order); + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_and(storage, v, order); + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_or(storage, v, order); + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_xor(storage, v, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_complement(storage, order); + } +}; + +template< typename Base, std::size_t Size, bool Signed > +struct extra_operations_gcc_aarch64; + +template< typename Base, bool Signed > +struct extra_operations_gcc_aarch64< Base, 1u, Signed > : + public extra_operations_generic< Base, 1u, Signed > +{ + typedef extra_operations_generic< Base, 1u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[original], %[storage]\n\t"\ + "neg %w[result], %w[original]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[result], %[storage]\n\t"\ + "neg %w[result], %w[result]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + +#if !defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[result], %[storage]\n\t"\ + "add %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Ir" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[result], %[storage]\n\t"\ + "sub %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Ir" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[result], %[storage]\n\t"\ + "and %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Kr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[result], %[storage]\n\t"\ + "orr %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Kr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[result], %[storage]\n\t"\ + "eor %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Kr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[original], %[storage]\n\t"\ + "mvn %w[result], %w[original]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrb %w[result], %[storage]\n\t"\ + "mvn %w[result], %w[result]\n\t"\ + "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + +#endif // !defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 1u, Signed, true > : + public extra_operations_gcc_aarch64_common< extra_operations_gcc_aarch64< Base, 1u, Signed > > +{ +}; + + +template< typename Base, bool Signed > +struct extra_operations_gcc_aarch64< Base, 2u, Signed > : + public extra_operations_generic< Base, 2u, Signed > +{ + typedef extra_operations_generic< Base, 2u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[original], %[storage]\n\t"\ + "neg %w[result], %w[original]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[result], %[storage]\n\t"\ + "neg %w[result], %w[result]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + +#if !defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[result], %[storage]\n\t"\ + "add %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Ir" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[result], %[storage]\n\t"\ + "sub %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Ir" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[result], %[storage]\n\t"\ + "and %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Kr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[result], %[storage]\n\t"\ + "orr %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Kr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[result], %[storage]\n\t"\ + "eor %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Kr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[original], %[storage]\n\t"\ + "mvn %w[result], %w[original]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xrh %w[result], %[storage]\n\t"\ + "mvn %w[result], %w[result]\n\t"\ + "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + +#endif // !defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 2u, Signed, true > : + public extra_operations_gcc_aarch64_common< extra_operations_gcc_aarch64< Base, 2u, Signed > > +{ +}; + + +template< typename Base, bool Signed > +struct extra_operations_gcc_aarch64< Base, 4u, Signed > : + public extra_operations_generic< Base, 4u, Signed > +{ + typedef extra_operations_generic< Base, 4u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[original], %[storage]\n\t"\ + "neg %w[result], %w[original]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[result], %[storage]\n\t"\ + "neg %w[result], %w[result]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + +#if !defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[result], %[storage]\n\t"\ + "add %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Ir" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[result], %[storage]\n\t"\ + "sub %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Ir" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[result], %[storage]\n\t"\ + "and %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Kr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[result], %[storage]\n\t"\ + "orr %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Kr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[result], %[storage]\n\t"\ + "eor %w[result], %w[result], %w[value]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Kr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[original], %[storage]\n\t"\ + "mvn %w[result], %w[original]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %w[result], %[storage]\n\t"\ + "mvn %w[result], %w[result]\n\t"\ + "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + +#endif // !defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 4u, Signed, true > : + public extra_operations_gcc_aarch64_common< extra_operations_gcc_aarch64< Base, 4u, Signed > > +{ +}; + + +template< typename Base, bool Signed > +struct extra_operations_gcc_aarch64< Base, 8u, Signed > : + public extra_operations_generic< Base, 8u, Signed > +{ + typedef extra_operations_generic< Base, 8u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[original], %[storage]\n\t"\ + "neg %x[result], %x[original]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[result], %[storage]\n\t"\ + "neg %x[result], %x[result]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + +#if !defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[result], %[storage]\n\t"\ + "add %x[result], %x[result], %x[value]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Ir" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[result], %[storage]\n\t"\ + "sub %x[result], %x[result], %x[value]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Ir" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[result], %[storage]\n\t"\ + "and %x[result], %x[result], %x[value]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Lr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[result], %[storage]\n\t"\ + "orr %x[result], %x[result], %x[value]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Lr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[result], %[storage]\n\t"\ + "eor %x[result], %x[result], %x[value]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : [value] "Lr" (v)\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[original], %[storage]\n\t"\ + "mvn %x[result], %x[original]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xr %x[result], %[storage]\n\t"\ + "mvn %x[result], %x[result]\n\t"\ + "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [result] "=&r" (result)\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result; + } + +#endif // !defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE) +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 8u, Signed, true > : + public extra_operations_gcc_aarch64_common< extra_operations_gcc_aarch64< Base, 8u, Signed > > +{ +}; + + +template< typename Base, bool Signed > +struct extra_operations_gcc_aarch64< Base, 16u, Signed > : + public extra_operations_generic< Base, 16u, Signed > +{ + typedef extra_operations_generic< Base, 16u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + typedef typename base_type::storage_union storage_union; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_union original; + storage_union result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\ + "mvn %x[result_0], %x[original_0]\n\t"\ + "mvn %x[result_1], %x[original_1]\n\t"\ + "adds %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], #1\n\t"\ + "adc %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], xzr\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original.as_storage; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_union result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[result_0], %x[result_1], %[storage]\n\t"\ + "mvn %x[result_0], %x[result_0]\n\t"\ + "mvn %x[result_1], %x[result_1]\n\t"\ + "adds %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], #1\n\t"\ + "adc %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], xzr\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result.as_storage; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union result; + storage_union value = { v }; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[result_0], %x[result_1], %[storage]\n\t"\ + "adds %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "]\n\t"\ + "adc %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result.as_storage; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union result; + storage_union value = { v }; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[result_0], %x[result_1], %[storage]\n\t"\ + "subs %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "]\n\t"\ + "sbc %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result.as_storage; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union result; + storage_union value = { v }; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[result_0], %x[result_1], %[storage]\n\t"\ + "and %x[result_0], %x[result_0], %x[value_0]\n\t"\ + "and %x[result_1], %x[result_1], %x[value_1]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : [value_0] "Lr" (value.as_uint64[0u]), [value_1] "Lr" (value.as_uint64[1u])\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result.as_storage; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union result; + storage_union value = { v }; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[result_0], %x[result_1], %[storage]\n\t"\ + "orr %x[result_0], %x[result_0], %x[value_0]\n\t"\ + "orr %x[result_1], %x[result_1], %x[value_1]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : [value_0] "Lr" (value.as_uint64[0u]), [value_1] "Lr" (value.as_uint64[1u])\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result.as_storage; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_union result; + storage_union value = { v }; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[result_0], %x[result_1], %[storage]\n\t"\ + "eor %x[result_0], %x[result_0], %x[value_0]\n\t"\ + "eor %x[result_1], %x[result_1], %x[value_1]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : [value_0] "Lr" (value.as_uint64[0u]), [value_1] "Lr" (value.as_uint64[1u])\ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result.as_storage; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_union original; + storage_union result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\ + "mvn %x[result_0], %x[original_0]\n\t"\ + "mvn %x[result_1], %x[original_1]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return original.as_storage; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_union result; + uint32_t tmp; + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\ + __asm__ __volatile__\ + (\ + "1:\n\t"\ + "ld" ld_mo "xp %x[result_0], %x[result_1], %[storage]\n\t"\ + "mvn %x[result_0], %x[result_0]\n\t"\ + "mvn %x[result_1], %x[result_1]\n\t"\ + "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\ + "cbnz %w[tmp], 1b\n\t"\ + : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\ + [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\ + : \ + : "memory"\ + ); + + BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order) +#undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN + + return result.as_storage; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 16u, Signed, true > : + public extra_operations_gcc_aarch64_common< extra_operations_gcc_aarch64< Base, 16u, Signed > > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_AARCH64_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_ops_gcc_arm.hpp b/src/boost/boost/atomic/detail/extra_ops_gcc_arm.hpp new file mode 100644 index 000000000..c7fb0b2e6 --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_ops_gcc_arm.hpp @@ -0,0 +1,1119 @@ +/* + * 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) + * + * Copyright (c) 2017 - 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_ops_gcc_arm.hpp + * + * This header contains implementation of the extra atomic operations for ARM. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_ARM_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base > +struct extra_operations_gcc_arm_common : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_negate(storage, order); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_complement(storage, order); + } + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::negate(storage, order); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::add(storage, v, order); + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::sub(storage, v, order); + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_and(storage, v, order); + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_or(storage, v, order); + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_xor(storage, v, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_complement(storage, order); + } +}; + +template< typename Base, std::size_t Size, bool Signed > +struct extra_operations_gcc_arm; + +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB) + +template< typename Base, bool Signed > +struct extra_operations_gcc_arm< Base, 1u, Signed > : + public extra_operations_generic< Base, 1u, Signed > +{ + typedef extra_operations_generic< Base, 1u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + typedef typename storage_traits< 4u >::type extended_storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "rsb %[result], %[original], #0\n\t" // result = 0 - original + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "rsb %[result], %[original], #0\n\t" // result = 0 - original + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "add %[result], %[original], %[value]\n\t" // result = original + value + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "sub %[result], %[original], %[value]\n\t" // result = original - value + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "and %[result], %[original], %[value]\n\t" // result = original & value + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "orr %[result], %[original], %[value]\n\t" // result = original | value + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "eor %[result], %[original], %[value]\n\t" // result = original ^ value + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "mvn %[result], %[original]\n\t" // result = NOT original + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "mvn %[result], %[original]\n\t" // result = NOT original + "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 1u, Signed, true > : + public extra_operations_gcc_arm_common< extra_operations_gcc_arm< Base, 1u, Signed > > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB) + +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH) + +template< typename Base, bool Signed > +struct extra_operations_gcc_arm< Base, 2u, Signed > : + public extra_operations_generic< Base, 2u, Signed > +{ + typedef extra_operations_generic< Base, 2u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + typedef typename storage_traits< 4u >::type extended_storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "rsb %[result], %[original], #0\n\t" // result = 0 - original + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "rsb %[result], %[original], #0\n\t" // result = 0 - original + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "add %[result], %[original], %[value]\n\t" // result = original + value + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "sub %[result], %[original], %[value]\n\t" // result = original - value + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "and %[result], %[original], %[value]\n\t" // result = original & value + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "orr %[result], %[original], %[value]\n\t" // result = original | value + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "eor %[result], %[original], %[value]\n\t" // result = original ^ value + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "mvn %[result], %[original]\n\t" // result = NOT original + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(original); + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + extended_storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage)) + "mvn %[result], %[original]\n\t" // result = NOT original + "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return static_cast< storage_type >(result); + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 2u, Signed, true > : + public extra_operations_gcc_arm_common< extra_operations_gcc_arm< Base, 2u, Signed > > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH) + +template< typename Base, bool Signed > +struct extra_operations_gcc_arm< Base, 4u, Signed > : + public extra_operations_generic< Base, 4u, Signed > +{ + typedef extra_operations_generic< Base, 4u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "rsb %[result], %[original], #0\n\t" // result = 0 - original + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "rsb %[result], %[original], #0\n\t" // result = 0 - original + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "add %[result], %[original], %[value]\n\t" // result = original + value + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "sub %[result], %[original], %[value]\n\t" // result = original - value + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "and %[result], %[original], %[value]\n\t" // result = original & value + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "orr %[result], %[original], %[value]\n\t" // result = original | value + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "eor %[result], %[original], %[value]\n\t" // result = original ^ value + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "Ir" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "mvn %[result], %[original]\n\t" // result = NOT original + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n\t" + "ldrex %[original], %[storage]\n\t" // original = *(&storage) + "mvn %[result], %[original]\n\t" // result = NOT original + "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 4u, Signed, true > : + public extra_operations_gcc_arm_common< extra_operations_gcc_arm< Base, 4u, Signed > > +{ +}; + +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD) + +template< typename Base, bool Signed > +struct extra_operations_gcc_arm< Base, 8u, Signed > : + public extra_operations_generic< Base, 8u, Signed > +{ + typedef extra_operations_generic< Base, 8u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "mvn %2, %1\n\t" // result = NOT original + "mvn %H2, %H1\n\t" + "adds " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(2) ", #1\n\t" // result = result + 1 + "adc " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(2) ", #0\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "mvn %2, %1\n\t" // result = NOT original + "mvn %H2, %H1\n\t" + "adds " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(2) ", #1\n\t" // result = result + 1 + "adc " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(2) ", #0\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "adds " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(4) "\n\t" // result = original + value + "adc " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(4) "\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : "r" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "subs " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(4) "\n\t" // result = original - value + "sbc " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(4) "\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : "r" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "and %2, %1, %4\n\t" // result = original & value + "and %H2, %H1, %H4\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : "r" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "orr %2, %1, %4\n\t" // result = original | value + "orr %H2, %H1, %H4\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : "r" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "eor %2, %1, %4\n\t" // result = original ^ value + "eor %H2, %H1, %H4\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : "r" (v) // %4 + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "mvn %2, %1\n\t" // result = NOT original + "mvn %H2, %H1\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_arm_base::fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n\t" + "ldrexd %1, %H1, %3\n\t" // original = *(&storage) + "mvn %2, %1\n\t" // result = NOT original + "mvn %H2, %H1\n\t" + "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed + "teq %0, #0\n\t" // flags = tmp==0 + "bne 1b\n\t" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result), // %2 + "+Q" (storage) // %3 + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_arm_base::fence_after(order); + return result; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 8u, Signed, true > : + public extra_operations_gcc_arm_common< extra_operations_gcc_arm< Base, 8u, Signed > > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_ops_gcc_ppc.hpp b/src/boost/boost/atomic/detail/extra_ops_gcc_ppc.hpp new file mode 100644 index 000000000..9b5e9b98c --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_ops_gcc_ppc.hpp @@ -0,0 +1,844 @@ +/* + * 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) + * + * Copyright (c) 2017 - 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_ops_gcc_ppc.hpp + * + * This header contains implementation of the extra atomic operations for PowerPC. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_PPC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_PPC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base > +struct extra_operations_gcc_ppc_common : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_negate(storage, order); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_complement(storage, order); + } + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::negate(storage, order); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::add(storage, v, order); + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::sub(storage, v, order); + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_and(storage, v, order); + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_or(storage, v, order); + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_xor(storage, v, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!base_type::bitwise_complement(storage, order); + } +}; + +template< typename Base, std::size_t Size, bool Signed > +struct extra_operations_gcc_ppc; + +#if defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LBARX_STBCX) + +template< typename Base, bool Signed > +struct extra_operations_gcc_ppc< Base, 1u, Signed > : + public extra_operations_generic< Base, 1u, Signed > +{ + typedef extra_operations_generic< Base, 1u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "neg %1,%0\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "neg %1,%0\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "and %1,%0,%3\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "or %1,%0,%3\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "xor %1,%0,%3\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "nor %1,%0,%0\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lbarx %0,%y2\n\t" + "nor %1,%0,%0\n\t" + "stbcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 1u, Signed, true > : + public extra_operations_gcc_ppc_common< extra_operations_gcc_ppc< Base, 1u, Signed > > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LBARX_STBCX) + +#if defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LHARX_STHCX) + +template< typename Base, bool Signed > +struct extra_operations_gcc_ppc< Base, 2u, Signed > : + public extra_operations_generic< Base, 2u, Signed > +{ + typedef extra_operations_generic< Base, 2u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "neg %1,%0\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "neg %1,%0\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "and %1,%0,%3\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "or %1,%0,%3\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "xor %1,%0,%3\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "nor %1,%0,%0\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lharx %0,%y2\n\t" + "nor %1,%0,%0\n\t" + "sthcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LHARX_STHCX) + +template< typename Base, bool Signed > +struct extra_operations_gcc_ppc< Base, 4u, Signed > : + public extra_operations_generic< Base, 4u, Signed > +{ + typedef extra_operations_generic< Base, 4u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "neg %1,%0\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "neg %1,%0\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "and %1,%0,%3\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "or %1,%0,%3\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "xor %1,%0,%3\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "nor %1,%0,%0\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "lwarx %0,%y2\n\t" + "nor %1,%0,%0\n\t" + "stwcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 4u, Signed, true > : + public extra_operations_gcc_ppc_common< extra_operations_gcc_ppc< Base, 4u, Signed > > +{ +}; + +#if defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LDARX_STDCX) + +template< typename Base, bool Signed > +struct extra_operations_gcc_ppc< Base, 8u, Signed > : + public extra_operations_generic< Base, 8u, Signed > +{ + typedef extra_operations_generic< Base, 8u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "neg %1,%0\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "neg %1,%0\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "add %1,%0,%3\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "sub %1,%0,%3\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "and %1,%0,%3\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "or %1,%0,%3\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, result; + core_arch_operations_gcc_ppc_base::fence_before(order); + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "xor %1,%0,%3\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : "b" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "nor %1,%0,%0\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + core_arch_operations_gcc_ppc_base::fence_before(order); + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1") + "ldarx %0,%y2\n\t" + "nor %1,%0,%0\n\t" + "stdcx. %1,%y2\n\t" + BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP("bne-", "1b", "-12") + : "=&b" (original), "=&b" (result), "+Z" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC + ); + core_arch_operations_gcc_ppc_base::fence_after(order); + return result; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 8u, Signed, true > : + public extra_operations_gcc_ppc_common< extra_operations_gcc_ppc< Base, 8u, Signed > > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LDARX_STDCX) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_ARM_PPC_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_ops_gcc_x86.hpp b/src/boost/boost/atomic/detail/extra_ops_gcc_x86.hpp new file mode 100644 index 000000000..38012b627 --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_ops_gcc_x86.hpp @@ -0,0 +1,1786 @@ +/* + * 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) + * + * Copyright (c) 2015 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_ops_gcc_x86.hpp + * + * This header contains implementation of the extra atomic operations for x86. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_X86_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base, bool Signed > +struct extra_operations< Base, 1u, Signed, true > : + public extra_operations_generic< Base, 1u, Signed > +{ + typedef extra_operations_generic< Base, 1u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + typedef typename storage_traits< 4u >::type temp_storage_type; + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, original, result)\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: movzbl %[orig], %2\n\t"\ + op " %b2\n\t"\ + "lock; cmpxchgb %b2, %[storage]\n\t"\ + "jne 1b"\ + : [orig] "+a" (original), [storage] "+m" (storage), "=&q" (result)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("negb", original, result); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("notb", original, result); + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("negb", original, result); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("notb", original, result); + return static_cast< storage_type >(result); + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, original, result)\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: mov %[arg], %2\n\t"\ + op " %%al, %b2\n\t"\ + "lock; cmpxchgb %b2, %[storage]\n\t"\ + "jne 1b"\ + : [orig] "+a" (original), [storage] "+m" (storage), "=&q" (result)\ + : [arg] "ir" ((temp_storage_type)argument)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andb", v, original, result); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orb", v, original, result); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorb", v, original, result); + return static_cast< storage_type >(result); + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!negate(storage, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!bitwise_complement(storage, order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incb %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addb %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decb %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subb %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; negb %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; andb %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; orb %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xorb %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; notb %[storage]\n\t" + : [storage] "+m" (storage) + : + : "memory" + ); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incb %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : + : "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addb %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "iq" (v) + : "memory" + ); + } +#else + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incb %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addb %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } +#endif + return res; + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decb %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : + : "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subb %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "iq" (v) + : "memory" + ); + } +#else + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decb %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subb %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } +#endif + return res; + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; andb %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "iq" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; andb %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; orb %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "iq" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; orb %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; xorb %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "iq" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; xorb %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 2u, Signed, true > : + public extra_operations_generic< Base, 2u, Signed > +{ + typedef extra_operations_generic< Base, 2u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + typedef typename storage_traits< 4u >::type temp_storage_type; + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, original, result)\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: movzwl %[orig], %2\n\t"\ + op " %w2\n\t"\ + "lock; cmpxchgw %w2, %[storage]\n\t"\ + "jne 1b"\ + : [orig] "+a" (original), [storage] "+m" (storage), "=&q" (result)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("negw", original, result); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("notw", original, result); + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("negw", original, result); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("notw", original, result); + return static_cast< storage_type >(result); + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, original, result)\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: mov %[arg], %2\n\t"\ + op " %%ax, %w2\n\t"\ + "lock; cmpxchgw %w2, %[storage]\n\t"\ + "jne 1b"\ + : [orig] "+a" (original), [storage] "+m" (storage), "=&q" (result)\ + : [arg] "ir" ((temp_storage_type)argument)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andw", v, original, result); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orw", v, original, result); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + temp_storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorw", v, original, result); + return static_cast< storage_type >(result); + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!negate(storage, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!bitwise_complement(storage, order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incw %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addw %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decw %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subw %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; negw %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; andw %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; orw %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xorw %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; notw %[storage]\n\t" + : [storage] "+m" (storage) + : + : "memory" + ); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incw %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : + : "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addw %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "iq" (v) + : "memory" + ); + } +#else + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incw %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addw %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } +#endif + return res; + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decw %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : + : "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subw %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "iq" (v) + : "memory" + ); + } +#else + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decw %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subw %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } +#endif + return res; + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; andw %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "iq" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; andw %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; orw %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "iq" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; orw %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; xorw %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "iq" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; xorw %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "iq" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; btsw %[bit_number], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccc" (res) + : [bit_number] "Kq" ((uint16_t)bit_number) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; btsw %[bit_number], %[storage]\n\t" + "setc %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [bit_number] "Kq" ((uint16_t)bit_number) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; btrw %[bit_number], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccc" (res) + : [bit_number] "Kq" ((uint16_t)bit_number) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; btrw %[bit_number], %[storage]\n\t" + "setc %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [bit_number] "Kq" ((uint16_t)bit_number) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; btcw %[bit_number], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccc" (res) + : [bit_number] "Kq" ((uint16_t)bit_number) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; btcw %[bit_number], %[storage]\n\t" + "setc %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [bit_number] "Kq" ((uint16_t)bit_number) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 4u, Signed, true > : + public extra_operations_generic< Base, 4u, Signed > +{ + typedef extra_operations_generic< Base, 4u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, original, result)\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: mov %[orig], %[res]\n\t"\ + op " %[res]\n\t"\ + "lock; cmpxchgl %[res], %[storage]\n\t"\ + "jne 1b"\ + : [orig] "+a" (original), [storage] "+m" (storage), [res] "=&r" (result)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("negl", original, result); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("notl", original, result); + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("negl", original, result); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("notl", original, result); + return result; + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, original, result)\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: mov %[arg], %[res]\n\t"\ + op " %%eax, %[res]\n\t"\ + "lock; cmpxchgl %[res], %[storage]\n\t"\ + "jne 1b"\ + : [orig] "+a" (original), [storage] "+m" (storage), [res] "=&r" (result)\ + : [arg] "ir" (argument)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andl", v, original, result); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orl", v, original, result); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorl", v, original, result); + return static_cast< storage_type >(result); + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!negate(storage, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!bitwise_complement(storage, order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incl %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addl %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "ir" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decl %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subl %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "ir" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; negl %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; andl %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "ir" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; orl %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "ir" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xorl %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "ir" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; notl %[storage]\n\t" + : [storage] "+m" (storage) + : + : "memory" + ); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incl %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : + : "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addl %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "ir" (v) + : "memory" + ); + } +#else + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incl %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addl %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "ir" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } +#endif + return res; + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decl %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : + : "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subl %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "ir" (v) + : "memory" + ); + } +#else + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decl %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subl %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "ir" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } +#endif + return res; + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; andl %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "ir" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; andl %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "ir" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; orl %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "ir" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; orl %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "ir" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; xorl %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "ir" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; xorl %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "ir" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; btsl %[bit_number], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccc" (res) + : [bit_number] "Kr" ((uint32_t)bit_number) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; btsl %[bit_number], %[storage]\n\t" + "setc %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [bit_number] "Kr" ((uint32_t)bit_number) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; btrl %[bit_number], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccc" (res) + : [bit_number] "Kr" ((uint32_t)bit_number) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; btrl %[bit_number], %[storage]\n\t" + "setc %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [bit_number] "Kr" ((uint32_t)bit_number) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; btcl %[bit_number], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccc" (res) + : [bit_number] "Kr" ((uint32_t)bit_number) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; btcl %[bit_number], %[storage]\n\t" + "setc %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [bit_number] "Kr" ((uint32_t)bit_number) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } +}; + +#if defined(__x86_64__) + +template< typename Base, bool Signed > +struct extra_operations< Base, 8u, Signed, true > : + public extra_operations_generic< Base, 8u, Signed > +{ + typedef extra_operations_generic< Base, 8u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, original, result)\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: mov %[orig], %[res]\n\t"\ + op " %[res]\n\t"\ + "lock; cmpxchgq %[res], %[storage]\n\t"\ + "jne 1b"\ + : [orig] "+a" (original), [storage] "+m" (storage), [res] "=&r" (result)\ + : \ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("negq", original, result); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("notq", original, result); + return original; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("negq", original, result); + return result; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("notq", original, result); + return result; + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, original, result)\ + __asm__ __volatile__\ + (\ + ".align 16\n\t"\ + "1: mov %[arg], %[res]\n\t"\ + op " %%rax, %[res]\n\t"\ + "lock; cmpxchgq %[res], %[storage]\n\t"\ + "jne 1b"\ + : [orig] "+a" (original), [storage] "+m" (storage), [res] "=&r" (result)\ + : [arg] "r" (argument)\ + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\ + ) + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andq", v, original, result); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orq", v, original, result); + return static_cast< storage_type >(result); + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type original = storage; + storage_type result; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorq", v, original, result); + return static_cast< storage_type >(result); + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!negate(storage, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!bitwise_complement(storage, order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incq %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addq %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "er" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decq %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subq %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "er" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; negq %[storage]\n\t" + : [storage] "+m" (storage) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; andq %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "er" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; orq %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "er" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xorq %[argument], %[storage]\n\t" + : [storage] "+m" (storage) + : [argument] "er" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; notq %[storage]\n\t" + : [storage] "+m" (storage) + : + : "memory" + ); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incq %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : + : "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addq %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "er" (v) + : "memory" + ); + } +#else + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; incq %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; addq %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "er" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } +#endif + return res; + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decq %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : + : "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subq %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "er" (v) + : "memory" + ); + } +#else + if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1) + { + __asm__ __volatile__ + ( + "lock; decq %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } + else + { + __asm__ __volatile__ + ( + "lock; subq %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "er" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); + } +#endif + return res; + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; andq %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "er" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; andq %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "er" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; orq %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "er" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; orq %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "er" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; xorq %[argument], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccnz" (res) + : [argument] "er" (v) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; xorq %[argument], %[storage]\n\t" + "setnz %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [argument] "er" (v) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; btsq %[bit_number], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccc" (res) + : [bit_number] "Kr" ((uint64_t)bit_number) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; btsq %[bit_number], %[storage]\n\t" + "setc %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [bit_number] "Kr" ((uint64_t)bit_number) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; btrq %[bit_number], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccc" (res) + : [bit_number] "Kr" ((uint64_t)bit_number) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; btrq %[bit_number], %[storage]\n\t" + "setc %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [bit_number] "Kr" ((uint64_t)bit_number) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } + + static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + bool res; +#if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS) + __asm__ __volatile__ + ( + "lock; btcq %[bit_number], %[storage]\n\t" + : [storage] "+m" (storage), [result] "=@ccc" (res) + : [bit_number] "Kr" ((uint64_t)bit_number) + : "memory" + ); +#else + __asm__ __volatile__ + ( + "lock; btcq %[bit_number], %[storage]\n\t" + "setc %[result]\n\t" + : [storage] "+m" (storage), [result] "=q" (res) + : [bit_number] "Kr" ((uint64_t)bit_number) + : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory" + ); +#endif + return res; + } +}; + +#endif // defined(__x86_64__) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_X86_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_ops_generic.hpp b/src/boost/boost/atomic/detail/extra_ops_generic.hpp new file mode 100644 index 000000000..0d40443ec --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_ops_generic.hpp @@ -0,0 +1,394 @@ +/* + * 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) + * + * Copyright (c) 2015 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_ops_generic.hpp + * + * This header contains generic implementation of the extra atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPS_GENERIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPS_GENERIC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Generic implementation of extra operations +template< typename Base, std::size_t Size, bool Signed, bool = Base::full_cas_based > +struct extra_operations_generic : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + typedef typename storage_traits< Size >::type emulated_storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val; + atomics::detail::non_atomic_load(storage, old_val); + while (!base_type::compare_exchange_weak(storage, old_val, atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(-old_val)), order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_val); + do + { + new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(-old_val)); + } + while (!base_type::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed)); + return new_val; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return base_type::fetch_add(storage, v, order) + v; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return base_type::fetch_sub(storage, v, order) - v; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return base_type::fetch_and(storage, v, order) & v; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return base_type::fetch_or(storage, v, order) | v; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return base_type::fetch_xor(storage, v, order) ^ v; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return base_type::fetch_xor(storage, atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(~static_cast< emulated_storage_type >(0u))), order); + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + const storage_type mask = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(~static_cast< emulated_storage_type >(0u))); + return base_type::fetch_xor(storage, mask, order) ^ mask; + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_add(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_sub(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + fetch_negate(storage, order); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_and(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_or(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_xor(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + fetch_complement(storage, order); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!static_cast< emulated_storage_type >(add(storage, v, order)); + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!static_cast< emulated_storage_type >(sub(storage, v, order)); + } + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!negate(storage, order); + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!bitwise_and(storage, v, order); + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!bitwise_or(storage, v, order); + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!bitwise_xor(storage, v, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!static_cast< emulated_storage_type >(bitwise_complement(storage, order)); + } + + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + const storage_type mask = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(static_cast< emulated_storage_type >(1u) << bit_number)); + storage_type old_val = base_type::fetch_or(storage, mask, order); + return !!(old_val & mask); + } + + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + const storage_type mask = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(static_cast< emulated_storage_type >(1u) << bit_number)); + storage_type old_val = base_type::fetch_and(storage, ~mask, order); + return !!(old_val & mask); + } + + static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + const storage_type mask = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(static_cast< emulated_storage_type >(1u) << bit_number)); + storage_type old_val = base_type::fetch_xor(storage, mask, order); + return !!(old_val & mask); + } +}; + +//! Specialization for cases when the platform only natively supports CAS +template< typename Base, std::size_t Size, bool Signed > +struct extra_operations_generic< Base, Size, Signed, true > : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + typedef typename storage_traits< Size >::type emulated_storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val; + atomics::detail::non_atomic_load(storage, old_val); + while (!base_type::compare_exchange_weak(storage, old_val, atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(-old_val)), order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_val); + do + { + new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(-old_val)); + } + while (!base_type::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed)); + return new_val; + } + + static BOOST_FORCEINLINE storage_type add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_val); + do + { + new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(old_val + v)); + } + while (!base_type::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed)); + return new_val; + } + + static BOOST_FORCEINLINE storage_type sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_val); + do + { + new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(old_val - v)); + } + while (!base_type::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed)); + return new_val; + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_val); + do + { + new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(old_val & v)); + } + while (!base_type::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed)); + return new_val; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_val); + do + { + new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(old_val | v)); + } + while (!base_type::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed)); + return new_val; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_val); + do + { + new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(old_val ^ v)); + } + while (!base_type::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed)); + return new_val; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return base_type::fetch_xor(storage, atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(~static_cast< emulated_storage_type >(0u))), order); + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return bitwise_xor(storage, atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(~static_cast< emulated_storage_type >(0u))), order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_add(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_sub(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + fetch_negate(storage, order); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_and(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_or(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fetch_xor(storage, v, order); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + fetch_complement(storage, order); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!static_cast< emulated_storage_type >(add(storage, v, order)); + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!static_cast< emulated_storage_type >(sub(storage, v, order)); + } + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!negate(storage, order); + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!bitwise_and(storage, v, order); + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!bitwise_or(storage, v, order); + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return !!bitwise_xor(storage, v, order); + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!static_cast< emulated_storage_type >(bitwise_complement(storage, order)); + } + + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + const storage_type mask = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(static_cast< emulated_storage_type >(1u) << bit_number)); + storage_type old_val = base_type::fetch_or(storage, mask, order); + return !!(old_val & mask); + } + + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + const storage_type mask = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(static_cast< emulated_storage_type >(1u) << bit_number)); + storage_type old_val = base_type::fetch_and(storage, ~mask, order); + return !!(old_val & mask); + } + + static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + const storage_type mask = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(static_cast< emulated_storage_type >(1u) << bit_number)); + storage_type old_val = base_type::fetch_xor(storage, mask, order); + return !!(old_val & mask); + } +}; + +// Default extra_operations template definition will be used unless specialized for a specific platform +template< typename Base, std::size_t Size, bool Signed > +struct extra_operations< Base, Size, Signed, true > : + public extra_operations_generic< Base, Size, Signed > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPS_GENERIC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_ops_msvc_arm.hpp b/src/boost/boost/atomic/detail/extra_ops_msvc_arm.hpp new file mode 100644 index 000000000..280cc4e25 --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_ops_msvc_arm.hpp @@ -0,0 +1,108 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_ops_msvc_arm.hpp + * + * This header contains implementation of the extra atomic operations for ARM. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPS_MSVC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPS_MSVC_ARM_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if defined(BOOST_ATOMIC_INTERLOCKED_BTS) && defined(BOOST_ATOMIC_INTERLOCKED_BTR) + +template< typename Base, std::size_t Size, bool Signed > +struct extra_operations< Base, 4u, Signed, true > : + public extra_operations_generic< Base, 4u, Signed > +{ + typedef extra_operations_generic< Base, 4u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_INTERLOCKED_BTS_RELAXED) && defined(BOOST_ATOMIC_INTERLOCKED_BTS_ACQUIRE) && defined(BOOST_ATOMIC_INTERLOCKED_BTS_RELEASE) + bool result; + switch (order) + { + case memory_order_relaxed: + result = !!BOOST_ATOMIC_INTERLOCKED_BTS_RELAXED(&storage, bit_number); + break; + case memory_order_consume: + case memory_order_acquire: + result = !!BOOST_ATOMIC_INTERLOCKED_BTS_ACQUIRE(&storage, bit_number); + break; + case memory_order_release: + result = !!BOOST_ATOMIC_INTERLOCKED_BTS_RELEASE(&storage, bit_number); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + result = !!BOOST_ATOMIC_INTERLOCKED_BTS(&storage, bit_number); + break; + } + return result; +#else + return !!BOOST_ATOMIC_INTERLOCKED_BTS(&storage, bit_number); +#endif + } + + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_INTERLOCKED_BTR_RELAXED) && defined(BOOST_ATOMIC_INTERLOCKED_BTR_ACQUIRE) && defined(BOOST_ATOMIC_INTERLOCKED_BTR_RELEASE) + bool result; + switch (order) + { + case memory_order_relaxed: + result = !!BOOST_ATOMIC_INTERLOCKED_BTR_RELAXED(&storage, bit_number); + break; + case memory_order_consume: + case memory_order_acquire: + result = !!BOOST_ATOMIC_INTERLOCKED_BTR_ACQUIRE(&storage, bit_number); + break; + case memory_order_release: + result = !!BOOST_ATOMIC_INTERLOCKED_BTR_RELEASE(&storage, bit_number); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + result = !!BOOST_ATOMIC_INTERLOCKED_BTR(&storage, bit_number); + break; + } + return result; +#else + return !!BOOST_ATOMIC_INTERLOCKED_BTR(&storage, bit_number); +#endif + } +}; + +#endif // defined(BOOST_ATOMIC_INTERLOCKED_BTS) && defined(BOOST_ATOMIC_INTERLOCKED_BTR) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPS_MSVC_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/extra_ops_msvc_x86.hpp b/src/boost/boost/atomic/detail/extra_ops_msvc_x86.hpp new file mode 100644 index 000000000..87247d47c --- /dev/null +++ b/src/boost/boost/atomic/detail/extra_ops_msvc_x86.hpp @@ -0,0 +1,1328 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/extra_ops_msvc_x86.hpp + * + * This header contains implementation of the extra atomic operations for x86. + */ + +#ifndef BOOST_ATOMIC_DETAIL_EXTRA_OPS_MSVC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_EXTRA_OPS_MSVC_X86_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if defined(_M_IX86) + +template< typename Base, bool Signed > +struct extra_operations< Base, 1u, Signed, true > : + public extra_operations_generic< Base, 1u, Signed > +{ + typedef extra_operations_generic< Base, 1u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type old_val; + __asm + { + mov ecx, storage + movzx eax, byte ptr [ecx] + align 16 + again: + mov edx, eax + neg dl + lock cmpxchg byte ptr [ecx], dl + jne again + mov old_val, al + }; + base_type::fence_after(order); + return old_val; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type new_val; + __asm + { + mov ecx, storage + movzx eax, byte ptr [ecx] + align 16 + again: + mov edx, eax + neg dl + lock cmpxchg byte ptr [ecx], dl + jne again + mov new_val, dl + }; + base_type::fence_after(order); + return new_val; + } + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov ecx, storage + movzx eax, byte ptr [ecx] + align 16 + again: + mov edx, eax + neg dl + lock cmpxchg byte ptr [ecx], dl + jne again + test dl, dl + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov ecx, storage + movzx eax, byte ptr [ecx] + align 16 + again: + mov edx, eax + neg dl + lock cmpxchg byte ptr [ecx], dl + jne again + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, byte ptr [edi] + align 16 + again: + mov dl, al + and dl, cl + lock cmpxchg byte ptr [edi], dl + jne again + mov v, dl + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, byte ptr [edi] + align 16 + again: + mov dl, al + or dl, cl + lock cmpxchg byte ptr [edi], dl + jne again + mov v, dl + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, byte ptr [edi] + align 16 + again: + mov dl, al + xor dl, cl + lock cmpxchg byte ptr [edi], dl + jne again + mov v, dl + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type old_val; + __asm + { + mov ecx, storage + movzx eax, byte ptr [ecx] + align 16 + again: + mov edx, eax + not dl + lock cmpxchg byte ptr [ecx], dl + jne again + mov old_val, al + }; + base_type::fence_after(order); + return old_val; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type new_val; + __asm + { + mov ecx, storage + movzx eax, byte ptr [ecx] + align 16 + again: + mov edx, eax + not dl + lock cmpxchg byte ptr [ecx], dl + jne again + mov new_val, dl + }; + base_type::fence_after(order); + return new_val; + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov ecx, storage + movzx eax, byte ptr [ecx] + align 16 + again: + mov edx, eax + not dl + lock cmpxchg byte ptr [ecx], dl + jne again + test dl, dl + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov ecx, storage + movzx eax, byte ptr [ecx] + align 16 + again: + mov edx, eax + not dl + lock cmpxchg byte ptr [ecx], dl + jne again + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock add byte ptr [edx], al + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock sub byte ptr [edx], al + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + lock neg byte ptr [edx] + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock and byte ptr [edx], al + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock or byte ptr [edx], al + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock xor byte ptr [edx], al + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + lock not byte ptr [edx] + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + movzx eax, v + lock add byte ptr [edx], al + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + movzx eax, v + lock sub byte ptr [edx], al + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + movzx eax, v + lock and byte ptr [edx], al + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + movzx eax, v + lock or byte ptr [edx], al + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + movzx eax, v + lock xor byte ptr [edx], al + setnz result + }; + base_type::fence_after(order); + return result; + } +}; + +template< typename Base, bool Signed > +struct extra_operations< Base, 2u, Signed, true > : + public extra_operations_generic< Base, 2u, Signed > +{ + typedef extra_operations_generic< Base, 2u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type old_val; + __asm + { + mov ecx, storage + movzx eax, word ptr [ecx] + align 16 + again: + mov edx, eax + neg dx + lock cmpxchg word ptr [ecx], dx + jne again + mov old_val, ax + }; + base_type::fence_after(order); + return old_val; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type new_val; + __asm + { + mov ecx, storage + movzx eax, word ptr [ecx] + align 16 + again: + mov edx, eax + neg dx + lock cmpxchg word ptr [ecx], dx + jne again + mov new_val, dx + }; + base_type::fence_after(order); + return new_val; + } + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov ecx, storage + movzx eax, word ptr [ecx] + align 16 + again: + mov edx, eax + neg dx + lock cmpxchg word ptr [ecx], dx + jne again + test dx, dx + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov ecx, storage + movzx eax, word ptr [ecx] + align 16 + again: + mov edx, eax + neg dx + lock cmpxchg word ptr [ecx], dx + jne again + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, word ptr [edi] + align 16 + again: + mov dx, ax + and dx, cx + lock cmpxchg word ptr [edi], dx + jne again + mov v, dx + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, word ptr [edi] + align 16 + again: + mov dx, ax + or dx, cx + lock cmpxchg word ptr [edi], dx + jne again + mov v, dx + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + movzx ecx, v + xor edx, edx + movzx eax, word ptr [edi] + align 16 + again: + mov dx, ax + xor dx, cx + lock cmpxchg word ptr [edi], dx + jne again + mov v, dx + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type old_val; + __asm + { + mov ecx, storage + movzx eax, word ptr [ecx] + align 16 + again: + mov edx, eax + not dx + lock cmpxchg word ptr [ecx], dx + jne again + mov old_val, ax + }; + base_type::fence_after(order); + return old_val; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type new_val; + __asm + { + mov ecx, storage + movzx eax, word ptr [ecx] + align 16 + again: + mov edx, eax + not dx + lock cmpxchg word ptr [ecx], dx + jne again + mov new_val, dx + }; + base_type::fence_after(order); + return new_val; + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov ecx, storage + movzx eax, word ptr [ecx] + align 16 + again: + mov edx, eax + not dx + lock cmpxchg word ptr [ecx], dx + jne again + test dx, dx + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov ecx, storage + movzx eax, word ptr [ecx] + align 16 + again: + mov edx, eax + not dx + lock cmpxchg word ptr [ecx], dx + jne again + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock add word ptr [edx], ax + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock sub word ptr [edx], ax + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + lock neg word ptr [edx] + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock and word ptr [edx], ax + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock or word ptr [edx], ax + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock xor word ptr [edx], ax + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + lock not word ptr [edx] + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + movzx eax, v + lock add word ptr [edx], ax + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + movzx eax, v + lock sub word ptr [edx], ax + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + movzx eax, v + lock and word ptr [edx], ax + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + movzx eax, v + lock or word ptr [edx], ax + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + movzx eax, v + lock xor word ptr [edx], ax + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, bit_number + lock bts word ptr [edx], ax + setc result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, bit_number + lock btr word ptr [edx], ax + setc result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, bit_number + lock btc word ptr [edx], ax + setc result + }; + base_type::fence_after(order); + return result; + } +}; + +#endif // defined(_M_IX86) + +#if defined(_M_IX86) || (defined(BOOST_ATOMIC_INTERLOCKED_BTS) && defined(BOOST_ATOMIC_INTERLOCKED_BTR)) + +template< typename Base, bool Signed > +struct extra_operations< Base, 4u, Signed, true > : + public extra_operations_generic< Base, 4u, Signed > +{ + typedef extra_operations_generic< Base, 4u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + +#if defined(_M_IX86) + static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type old_val; + __asm + { + mov ecx, storage + mov eax, dword ptr [ecx] + align 16 + again: + mov edx, eax + neg edx + lock cmpxchg dword ptr [ecx], edx + jne again + mov old_val, eax + }; + base_type::fence_after(order); + return old_val; + } + + static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type new_val; + __asm + { + mov ecx, storage + mov eax, dword ptr [ecx] + align 16 + again: + mov edx, eax + neg edx + lock cmpxchg dword ptr [ecx], edx + jne again + mov new_val, edx + }; + base_type::fence_after(order); + return new_val; + } + + static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov ecx, storage + mov eax, dword ptr [ecx] + align 16 + again: + mov edx, eax + neg edx + lock cmpxchg dword ptr [ecx], edx + jne again + test edx, edx + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov ecx, storage + mov eax, dword ptr [ecx] + align 16 + again: + mov edx, eax + neg edx + lock cmpxchg dword ptr [ecx], edx + jne again + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + mov ecx, v + xor edx, edx + mov eax, dword ptr [edi] + align 16 + again: + mov edx, eax + and edx, ecx + lock cmpxchg dword ptr [edi], edx + jne again + mov v, edx + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + mov ecx, v + xor edx, edx + mov eax, dword ptr [edi] + align 16 + again: + mov edx, eax + or edx, ecx + lock cmpxchg dword ptr [edi], edx + jne again + mov v, edx + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edi, storage + mov ecx, v + xor edx, edx + mov eax, dword ptr [edi] + align 16 + again: + mov edx, eax + xor edx, ecx + lock cmpxchg dword ptr [edi], edx + jne again + mov v, edx + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type old_val; + __asm + { + mov ecx, storage + mov eax, dword ptr [ecx] + align 16 + again: + mov edx, eax + not edx + lock cmpxchg dword ptr [ecx], edx + jne again + mov old_val, eax + }; + base_type::fence_after(order); + return old_val; + } + + static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + storage_type new_val; + __asm + { + mov ecx, storage + mov eax, dword ptr [ecx] + align 16 + again: + mov edx, eax + not edx + lock cmpxchg dword ptr [ecx], edx + jne again + mov new_val, edx + }; + base_type::fence_after(order); + return new_val; + } + + static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov ecx, storage + mov eax, dword ptr [ecx] + align 16 + again: + mov edx, eax + not edx + lock cmpxchg dword ptr [ecx], edx + jne again + test edx, edx + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov ecx, storage + mov eax, dword ptr [ecx] + align 16 + again: + mov edx, eax + not edx + lock cmpxchg dword ptr [ecx], edx + jne again + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + mov eax, v + lock add dword ptr [edx], eax + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + mov eax, v + lock sub dword ptr [edx], eax + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + lock neg dword ptr [edx] + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + mov eax, v + lock and dword ptr [edx], eax + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + mov eax, v + lock or dword ptr [edx], eax + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + mov eax, v + lock xor dword ptr [edx], eax + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + lock not dword ptr [edx] + }; + base_type::fence_after(order); + } + + static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, v + lock add dword ptr [edx], eax + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, v + lock sub dword ptr [edx], eax + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, v + lock and dword ptr [edx], eax + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, v + lock or dword ptr [edx], eax + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, v + lock xor dword ptr [edx], eax + setnz result + }; + base_type::fence_after(order); + return result; + } + + static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, bit_number + lock btc dword ptr [edx], eax + setc result + }; + base_type::fence_after(order); + return result; + } +#endif // defined(_M_IX86) + +#if defined(BOOST_ATOMIC_INTERLOCKED_BTS) + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + return !!BOOST_ATOMIC_INTERLOCKED_BTS(&storage, bit_number); + } +#elif defined(_M_IX86) + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, bit_number + lock bts dword ptr [edx], eax + setc result + }; + base_type::fence_after(order); + return result; + } +#endif + +#if defined(BOOST_ATOMIC_INTERLOCKED_BTR) + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT + { + return !!BOOST_ATOMIC_INTERLOCKED_BTR(&storage, bit_number); + } +#elif defined(_M_IX86) + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + bool result; + __asm + { + mov edx, storage + mov eax, bit_number + lock btr dword ptr [edx], eax + setc result + }; + base_type::fence_after(order); + return result; + } +#endif +}; + +#endif // defined(_M_IX86) || (defined(BOOST_ATOMIC_INTERLOCKED_BTS) && defined(BOOST_ATOMIC_INTERLOCKED_BTR)) + +#if defined(BOOST_ATOMIC_INTERLOCKED_BTS64) && defined(BOOST_ATOMIC_INTERLOCKED_BTR64) + +template< typename Base, bool Signed > +struct extra_operations< Base, 8u, Signed, true > : + public extra_operations_generic< Base, 8u, Signed > +{ + typedef extra_operations_generic< Base, 8u, Signed > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + return !!BOOST_ATOMIC_INTERLOCKED_BTS64(&storage, bit_number); + } + + static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order order) BOOST_NOEXCEPT + { + return !!BOOST_ATOMIC_INTERLOCKED_BTR64(&storage, bit_number); + } +}; + +#endif // defined(BOOST_ATOMIC_INTERLOCKED_BTS64) && defined(BOOST_ATOMIC_INTERLOCKED_BTR64) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_EXTRA_OPS_MSVC_X86_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_arch_operations.hpp b/src/boost/boost/atomic/detail/fence_arch_operations.hpp new file mode 100644 index 000000000..dcf39712d --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_arch_operations.hpp @@ -0,0 +1,41 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_arch_operations.hpp + * + * This header defines architecture-specific fence atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPERATIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPERATIONS_HPP_INCLUDED_ + +#include +#include + +#if defined(BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND_HEADER) +#include BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND_HEADER(boost/atomic/detail/fence_arch_ops_) +#else +#include + +namespace boost { +namespace atomics { +namespace detail { + +typedef fence_operations_emulated fence_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#endif // BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPERATIONS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp new file mode 100644 index 000000000..aff436c9b --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp @@ -0,0 +1,60 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_arch_ops_gcc_aarch32.hpp + * + * This header contains implementation of the \c fence_arch_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_AARCH32_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_AARCH32_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations for AArch32 +struct fence_arch_operations_gcc_aarch32 +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + { + if (order == memory_order_consume || order == memory_order_acquire) + __asm__ __volatile__ ("dmb ishld\n\t" ::: "memory"); + else + __asm__ __volatile__ ("dmb ish\n\t" ::: "memory"); + } + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); + } +}; + +typedef fence_arch_operations_gcc_aarch32 fence_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_AARCH32_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp new file mode 100644 index 000000000..90bd295c5 --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp @@ -0,0 +1,58 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_arch_ops_gcc_aarch64.hpp + * + * This header contains implementation of the \c fence_arch_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_AARCH64_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_AARCH64_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations for AArch64 +struct fence_arch_operations_gcc_aarch64 +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + { + if (order == memory_order_consume || order == memory_order_acquire) + __asm__ __volatile__ ("dmb ishld\n\t" ::: "memory"); + else + __asm__ __volatile__ ("dmb ish\n\t" ::: "memory"); + } + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); + } +}; + +typedef fence_arch_operations_gcc_aarch64 fence_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_AARCH64_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp new file mode 100644 index 000000000..0180df0c0 --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp @@ -0,0 +1,53 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_arch_ops_gcc_alpha.hpp + * + * This header contains implementation of the \c fence_arch_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_ALPHA_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_ALPHA_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations for Alpha +struct fence_arch_operations_gcc_alpha +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + __asm__ __volatile__ ("mb" ::: "memory"); + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); + } +}; + +typedef fence_arch_operations_gcc_alpha fence_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_ALPHA_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp new file mode 100644 index 000000000..42fedc614 --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp @@ -0,0 +1,90 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_arch_ops_gcc_arm.hpp + * + * This header contains implementation of the \c fence_arch_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_ARM_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations for legacy ARM +struct fence_arch_operations_gcc_arm +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + hardware_full_fence(); + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); + } + + static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT + { + // A memory barrier is effected using a "co-processor 15" instruction, + // though a separate assembler mnemonic is available for it in v7. + +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_DMB) + // Older binutils (supposedly, older than 2.21.1) didn't support symbolic or numeric arguments of the "dmb" instruction such as "ish" or "#11". + // As a workaround we have to inject encoded bytes of the instruction. There are two encodings for the instruction: ARM and Thumb. See ARM Architecture Reference Manual, A8.8.43. + // Since we cannot detect binutils version at compile time, we'll have to always use this hack. + __asm__ __volatile__ + ( +#if defined(__thumb2__) + ".short 0xF3BF, 0x8F5B\n\t" // dmb ish +#else + ".word 0xF57FF05B\n\t" // dmb ish +#endif + : + : + : "memory" + ); +#else + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "mcr p15, 0, r0, c7, c10, 5\n\t" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : "=&l" (tmp) + : + : "memory" + ); +#endif + } +}; + +typedef fence_arch_operations_gcc_arm fence_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp new file mode 100644 index 000000000..3507d90cd --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp @@ -0,0 +1,68 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_arch_ops_gcc_ppc.hpp + * + * This header contains implementation of the \c fence_arch_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_PPC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_PPC_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations for PowerPC +struct fence_arch_operations_gcc_ppc +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + { +#if defined(__powerpc64__) || defined(__PPC64__) + if (order != memory_order_seq_cst) + __asm__ __volatile__ ("lwsync" ::: "memory"); + else + __asm__ __volatile__ ("sync" ::: "memory"); +#else + __asm__ __volatile__ ("sync" ::: "memory"); +#endif + } + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + { +#if defined(__ibmxl__) || defined(__IBMCPP__) + __fence(); +#else + __asm__ __volatile__ ("" ::: "memory"); +#endif + } + } +}; + +typedef fence_arch_operations_gcc_ppc fence_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_PPC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp new file mode 100644 index 000000000..71115bc58 --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp @@ -0,0 +1,70 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_arch_ops_gcc_sparc.hpp + * + * This header contains implementation of the \c fence_arch_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_SPARC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_SPARC_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations for SPARC +struct fence_arch_operations_gcc_sparc +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_release: + __asm__ __volatile__ ("membar #StoreStore | #LoadStore" ::: "memory"); + break; + case memory_order_consume: + case memory_order_acquire: + __asm__ __volatile__ ("membar #LoadLoad | #LoadStore" ::: "memory"); + break; + case memory_order_acq_rel: + __asm__ __volatile__ ("membar #LoadLoad | #LoadStore | #StoreStore" ::: "memory"); + break; + case memory_order_seq_cst: + __asm__ __volatile__ ("membar #Sync" ::: "memory"); + break; + case memory_order_relaxed: + default: + break; + } + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); + } +}; + +typedef fence_arch_operations_gcc_sparc fence_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_SPARC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp new file mode 100644 index 000000000..8845b9c6a --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp @@ -0,0 +1,69 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_arch_ops_gcc_x86.hpp + * + * This header contains implementation of the \c fence_arch_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_X86_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations for x86 +struct fence_arch_operations_gcc_x86 +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + { + // We could generate mfence for a seq_cst fence here, but a dummy lock-prefixed instruction is enough + // and is faster than mfence on most modern x86 CPUs (as of 2020). + // Note that we want to apply the atomic operation on any location so that: + // - It is not shared with other threads. A variable on the stack suits this well. + // - It is likely in cache. Being close to the top of the stack fits this well. + // - It does not alias existing data on the stack, so that we don't introduce a false data dependency. + // See some performance data here: https://shipilev.net/blog/2014/on-the-fence-with-dependencies/ + // Unfortunately, to make tools like valgrind happy, we have to initialize the dummy, which is + // otherwise not needed. + unsigned char dummy = 0u; + __asm__ __volatile__ ("lock; notb %0" : "+m" (dummy) : : "memory"); + } + else if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_acquire) | static_cast< unsigned int >(memory_order_release))) != 0u) + { + __asm__ __volatile__ ("" ::: "memory"); + } + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); + } +}; + +typedef fence_arch_operations_gcc_x86 fence_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_GCC_X86_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp b/src/boost/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp new file mode 100644 index 000000000..eaf718049 --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp @@ -0,0 +1,66 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_arch_ops_msvc_arm.hpp + * + * This header contains implementation of the \c fence_arch_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_MSVC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_MSVC_ARM_HPP_INCLUDED_ + +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +extern "C" void __dmb(unsigned int); +#if defined(BOOST_MSVC) +#pragma intrinsic(__dmb) +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations for ARM +struct fence_arch_operations_msvc_arm +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + if (order != memory_order_relaxed) + hardware_full_fence(); + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT + { + __dmb(0xB); // _ARM_BARRIER_ISH, see armintr.h from MSVC 11 and later + } +}; + +typedef fence_arch_operations_msvc_arm fence_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_MSVC_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp b/src/boost/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp new file mode 100644 index 000000000..2cfb96153 --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp @@ -0,0 +1,66 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_arch_ops_msvc_x86.hpp + * + * This header contains implementation of the \c fence_arch_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_MSVC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_MSVC_X86_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations for x86 +struct fence_arch_operations_msvc_x86 +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + { + // See the comment in fence_ops_gcc_x86.hpp as to why we're not using mfence here. + // We're not using __faststorefence() here because it generates an atomic operation + // on [rsp]/[esp] location, which may alias valid data and cause false data dependency. + boost::uint32_t dummy; + BOOST_ATOMIC_INTERLOCKED_INCREMENT(&dummy); + } + else if (order != memory_order_relaxed) + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } +}; + +typedef fence_arch_operations_msvc_x86 fence_arch_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_ARCH_OPS_MSVC_X86_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_operations.hpp b/src/boost/boost/atomic/detail/fence_operations.hpp new file mode 100644 index 000000000..e015c5dbc --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_operations.hpp @@ -0,0 +1,41 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_operations.hpp + * + * This header defines fence atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_OPERATIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_OPERATIONS_HPP_INCLUDED_ + +#include +#include + +#if defined(BOOST_ATOMIC_DETAIL_CORE_BACKEND_HEADER) +#include BOOST_ATOMIC_DETAIL_CORE_BACKEND_HEADER(boost/atomic/detail/fence_ops_) +#else +#include + +namespace boost { +namespace atomics { +namespace detail { + +typedef fence_arch_operations fence_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#endif // BOOST_ATOMIC_DETAIL_FENCE_OPERATIONS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_operations_emulated.hpp b/src/boost/boost/atomic/detail/fence_operations_emulated.hpp new file mode 100644 index 000000000..faf4a5f9e --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_operations_emulated.hpp @@ -0,0 +1,50 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_operations_emulated.hpp + * + * This header contains implementation of the \c fence_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_OPERATIONS_EMULATED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_OPERATIONS_EMULATED_HPP_INCLUDED_ + +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations based on lock pool +struct fence_operations_emulated +{ + static BOOST_FORCEINLINE void thread_fence(memory_order) BOOST_NOEXCEPT + { + atomics::detail::lock_pool::thread_fence(); + } + + static BOOST_FORCEINLINE void signal_fence(memory_order) BOOST_NOEXCEPT + { + atomics::detail::lock_pool::signal_fence(); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_OPERATIONS_EMULATED_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_ops_gcc_atomic.hpp b/src/boost/boost/atomic/detail/fence_ops_gcc_atomic.hpp new file mode 100644 index 000000000..b1520f73d --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_ops_gcc_atomic.hpp @@ -0,0 +1,75 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_ops_gcc_atomic.hpp + * + * This header contains implementation of the \c fence_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_OPS_GCC_ATOMIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_OPS_GCC_ATOMIC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__INTEL_COMPILER) +// This is used to suppress warning #32013 described in gcc_atomic_memory_order_utils.hpp +// for Intel Compiler. +// In debug builds the compiler does not inline any functions, so basically +// every atomic function call results in this warning. I don't know any other +// way to selectively disable just this one warning. +#pragma system_header +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations based on gcc __atomic* intrinsics +struct fence_operations_gcc_atomic +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { +#if defined(__x86_64__) || defined(__i386__) + if (order != memory_order_seq_cst) + { + __atomic_thread_fence(atomics::detail::convert_memory_order_to_gcc(order)); + } + else + { + // gcc, clang, icc and probably other compilers generate mfence for a seq_cst fence, + // while a dummy lock-prefixed instruction would be enough and faster. See the comment in fence_ops_gcc_x86.hpp. + fence_arch_operations::thread_fence(order); + } +#else + __atomic_thread_fence(atomics::detail::convert_memory_order_to_gcc(order)); +#endif + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + __atomic_signal_fence(atomics::detail::convert_memory_order_to_gcc(order)); + } +}; + +typedef fence_operations_gcc_atomic fence_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_OPS_GCC_ATOMIC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_ops_gcc_sync.hpp b/src/boost/boost/atomic/detail/fence_ops_gcc_sync.hpp new file mode 100644 index 000000000..f803e8956 --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_ops_gcc_sync.hpp @@ -0,0 +1,53 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_ops_gcc_sync.hpp + * + * This header contains implementation of the \c fence_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_OPS_GCC_SYNC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_OPS_GCC_SYNC_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations based on gcc __sync* intrinsics +struct fence_operations_gcc_sync +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + __sync_synchronize(); + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); + } +}; + +typedef fence_operations_gcc_sync fence_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_OPS_GCC_SYNC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_ops_linux_arm.hpp b/src/boost/boost/atomic/detail/fence_ops_linux_arm.hpp new file mode 100644 index 000000000..1848e9cec --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_ops_linux_arm.hpp @@ -0,0 +1,64 @@ +/* + * 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) + * + * Copyright (c) 2009, 2011 Helge Bahmann + * Copyright (c) 2009 Phil Endecott + * Copyright (c) 2013 Tim Blechmann + * Linux-specific code by Phil Endecott + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_ops_linux_arm.hpp + * + * This header contains implementation of the \c fence_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_OPS_LINUX_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_OPS_LINUX_ARM_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations based on Linux-specific system routines +struct fence_operations_linux_arm +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + hardware_full_fence(); + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); + } + + static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT + { + // See the comment in core_ops_linux_arm.hpp regarding the function pointer below + typedef void (*kernel_dmb_t)(void); + ((kernel_dmb_t)0xffff0fa0)(); + } +}; + +typedef fence_operations_linux_arm fence_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_OPS_LINUX_ARM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fence_ops_windows.hpp b/src/boost/boost/atomic/detail/fence_ops_windows.hpp new file mode 100644 index 000000000..4ce1b9006 --- /dev/null +++ b/src/boost/boost/atomic/detail/fence_ops_windows.hpp @@ -0,0 +1,67 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/fence_ops_windows.hpp + * + * This header contains implementation of the \c fence_operations struct. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FENCE_OPS_WINDOWS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FENCE_OPS_WINDOWS_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Fence operations based on Windows-specific system calls or intrinsics +struct fence_operations_windows +{ + static BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + if (order == memory_order_seq_cst) + hardware_full_fence(); + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + } + + static BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_relaxed) + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT + { + boost::uint32_t tmp; + BOOST_ATOMIC_INTERLOCKED_INCREMENT(&tmp); + } +}; + +typedef fence_operations_windows fence_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FENCE_OPS_WINDOWS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/float_sizes.hpp b/src/boost/boost/atomic/detail/float_sizes.hpp new file mode 100644 index 000000000..bcc792cf2 --- /dev/null +++ b/src/boost/boost/atomic/detail/float_sizes.hpp @@ -0,0 +1,142 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/float_sizes.hpp + * + * This header defines macros for testing buitin floating point type sizes + */ + +#ifndef BOOST_ATOMIC_DETAIL_FLOAT_SIZES_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FLOAT_SIZES_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// Detect value sizes of the different floating point types. The value sizes may be less than the corresponding type sizes +// if the type contains padding bits. This is typical e.g. with 80-bit extended float types, which are often represented as 128-bit types. +// See: https://en.wikipedia.org/wiki/IEEE_754 +// For Intel x87 extended double see: https://en.wikipedia.org/wiki/Extended_precision#x86_Architecture_Extended_Precision_Format +// For IBM extended double (a.k.a. double-double) see: https://en.wikipedia.org/wiki/Long_double#Implementations, https://gcc.gnu.org/wiki/Ieee128PowerPC +#if (FLT_RADIX+0) == 2 + +#if ((FLT_MANT_DIG+0) == 11) && ((FLT_MAX_EXP+0) == 16) // IEEE 754 binary16 +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE 2 +#elif ((FLT_MANT_DIG+0) == 24) && ((FLT_MAX_EXP+0) == 128) // IEEE 754 binary32 +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE 4 +#elif ((FLT_MANT_DIG+0) == 53) && ((FLT_MAX_EXP+0) == 1024) // IEEE 754 binary64 +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE 8 +#elif ((FLT_MANT_DIG+0) == 64) && ((FLT_MAX_EXP+0) == 16384) // x87 extended double +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE 10 +#elif ((FLT_MANT_DIG+0) == 106) && ((FLT_MAX_EXP+0) == 1024) // IBM extended double +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE 16 +#elif ((FLT_MANT_DIG+0) == 113) && ((FLT_MAX_EXP+0) == 16384) // IEEE 754 binary128 +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE 16 +#elif ((FLT_MANT_DIG+0) == 237) && ((FLT_MAX_EXP+0) == 262144) // IEEE 754 binary256 +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE 32 +#endif + +#if ((DBL_MANT_DIG+0) == 11) && ((DBL_MAX_EXP+0) == 16) // IEEE 754 binary16 +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE 2 +#elif ((DBL_MANT_DIG+0) == 24) && ((DBL_MAX_EXP+0) == 128) // IEEE 754 binary32 +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE 4 +#elif ((DBL_MANT_DIG+0) == 53) && ((DBL_MAX_EXP+0) == 1024) // IEEE 754 binary64 +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE 8 +#elif ((DBL_MANT_DIG+0) == 64) && ((DBL_MAX_EXP+0) == 16384) // x87 extended double +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE 10 +#elif ((DBL_MANT_DIG+0) == 106) && ((DBL_MAX_EXP+0) == 1024) // IBM extended double +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE 16 +#elif ((DBL_MANT_DIG+0) == 113) && ((DBL_MAX_EXP+0) == 16384) // IEEE 754 binary128 +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE 16 +#elif ((DBL_MANT_DIG+0) == 237) && ((DBL_MAX_EXP+0) == 262144) // IEEE 754 binary256 +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE 32 +#endif + +#if ((LDBL_MANT_DIG+0) == 11) && ((LDBL_MAX_EXP+0) == 16) // IEEE 754 binary16 +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE 2 +#elif ((LDBL_MANT_DIG+0) == 24) && ((LDBL_MAX_EXP+0) == 128) // IEEE 754 binary32 +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE 4 +#elif ((LDBL_MANT_DIG+0) == 53) && ((LDBL_MAX_EXP+0) == 1024) // IEEE 754 binary64 +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE 8 +#elif ((LDBL_MANT_DIG+0) == 64) && ((LDBL_MAX_EXP+0) == 16384) // x87 extended double +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE 10 +#elif ((LDBL_MANT_DIG+0) == 106) && ((LDBL_MAX_EXP+0) == 1024) // IBM extended double +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE 16 +#elif ((LDBL_MANT_DIG+0) == 113) && ((LDBL_MAX_EXP+0) == 16384) // IEEE 754 binary128 +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE 16 +#elif ((LDBL_MANT_DIG+0) == 237) && ((LDBL_MAX_EXP+0) == 262144) // IEEE 754 binary256 +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE 32 +#endif + +#elif (FLT_RADIX+0) == 10 + +#if ((FLT_MANT_DIG+0) == 7) && ((FLT_MAX_EXP+0) == 97) // IEEE 754 decimal32 +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE 4 +#elif ((FLT_MANT_DIG+0) == 16) && ((FLT_MAX_EXP+0) == 385) // IEEE 754 decimal64 +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE 8 +#elif ((FLT_MANT_DIG+0) == 34) && ((FLT_MAX_EXP+0) == 6145) // IEEE 754 decimal128 +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE 16 +#endif + +#if ((DBL_MANT_DIG+0) == 7) && ((DBL_MAX_EXP+0) == 97) // IEEE 754 decimal32 +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE 4 +#elif ((DBL_MANT_DIG+0) == 16) && ((DBL_MAX_EXP+0) == 385) // IEEE 754 decimal64 +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE 8 +#elif ((DBL_MANT_DIG+0) == 34) && ((DBL_MAX_EXP+0) == 6145) // IEEE 754 decimal128 +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE 16 +#endif + +#if ((LDBL_MANT_DIG+0) == 7) && ((LDBL_MAX_EXP+0) == 97) // IEEE 754 decimal32 +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE 4 +#elif ((LDBL_MANT_DIG+0) == 16) && ((LDBL_MAX_EXP+0) == 385) // IEEE 754 decimal64 +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE 8 +#elif ((LDBL_MANT_DIG+0) == 34) && ((LDBL_MAX_EXP+0) == 6145) // IEEE 754 decimal128 +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE 16 +#endif + +#endif + +// GCC and compatible compilers define internal macros with builtin type traits +#if defined(__SIZEOF_FLOAT__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT __SIZEOF_FLOAT__ +#endif +#if defined(__SIZEOF_DOUBLE__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE __SIZEOF_DOUBLE__ +#endif +#if defined(__SIZEOF_LONG_DOUBLE__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE __SIZEOF_LONG_DOUBLE__ +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE) + +#define BOOST_ATOMIC_DETAIL_ALIGN_SIZE_TO_POWER_OF_2(x)\ + ((x) == 1u ? 1u : ((x) == 2u ? 2u : ((x) <= 4u ? 4u : ((x) <= 8u ? 8u : ((x) <= 16u ? 16u : ((x) <= 32u ? 32u : (x))))))) + +// Make our best guess. These sizes may not be accurate, but they are good enough to estimate the size of the storage required to hold these types. +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE) +#define BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT BOOST_ATOMIC_DETAIL_ALIGN_SIZE_TO_POWER_OF_2(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE) +#endif +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE) +#define BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE BOOST_ATOMIC_DETAIL_ALIGN_SIZE_TO_POWER_OF_2(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE) +#endif +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE) +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE BOOST_ATOMIC_DETAIL_ALIGN_SIZE_TO_POWER_OF_2(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE) +#endif + +#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE) + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT) ||\ + !defined(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE) ||\ + !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE) +#error Boost.Atomic: Failed to determine builtin floating point type sizes, the target platform is not supported. Please, report to the developers (patches are welcome). +#endif + +#endif // BOOST_ATOMIC_DETAIL_FLOAT_SIZES_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/footer.hpp b/src/boost/boost/atomic/detail/footer.hpp new file mode 100644 index 000000000..2f62021f1 --- /dev/null +++ b/src/boost/boost/atomic/detail/footer.hpp @@ -0,0 +1,24 @@ +/* + * Copyright Andrey Semashev 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) + */ + +#if !defined(BOOST_ATOMIC_ENABLE_WARNINGS) + +#if defined(BOOST_MSVC) + +#pragma warning(pop) + +#elif defined(BOOST_GCC) && BOOST_GCC >= 40600 + +#pragma GCC diagnostic pop + +#elif defined(BOOST_CLANG) + +#pragma clang diagnostic pop + +#endif + +#endif // !defined(BOOST_ATOMIC_ENABLE_WARNINGS) diff --git a/src/boost/boost/atomic/detail/fp_operations.hpp b/src/boost/boost/atomic/detail/fp_operations.hpp new file mode 100644 index 000000000..3f559ea8b --- /dev/null +++ b/src/boost/boost/atomic/detail/fp_operations.hpp @@ -0,0 +1,28 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/fp_operations.hpp + * + * This header defines floating point atomic operations, including the generic version. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FP_OPERATIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FP_OPERATIONS_HPP_INCLUDED_ + +#include +#include + +#if !defined(BOOST_ATOMIC_DETAIL_FP_BACKEND_GENERIC) +#include BOOST_ATOMIC_DETAIL_FP_BACKEND_HEADER(boost/atomic/detail/fp_ops_) +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#endif // BOOST_ATOMIC_DETAIL_FP_OPERATIONS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fp_operations_fwd.hpp b/src/boost/boost/atomic/detail/fp_operations_fwd.hpp new file mode 100644 index 000000000..4d9ef9ce5 --- /dev/null +++ b/src/boost/boost/atomic/detail/fp_operations_fwd.hpp @@ -0,0 +1,38 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/fp_operations_fwd.hpp + * + * This header contains forward declaration of the \c fp_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FP_OPERATIONS_FWD_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FP_OPERATIONS_FWD_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base, typename Value, std::size_t Size = sizeof(typename Base::storage_type), bool = Base::is_always_lock_free > +struct fp_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FP_OPERATIONS_FWD_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fp_ops_emulated.hpp b/src/boost/boost/atomic/detail/fp_ops_emulated.hpp new file mode 100644 index 000000000..96d1c40a1 --- /dev/null +++ b/src/boost/boost/atomic/detail/fp_ops_emulated.hpp @@ -0,0 +1,78 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/fp_ops_emulated.hpp + * + * This header contains emulated (lock-based) implementation of the floating point atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FP_OPS_EMULATED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FP_OPS_EMULATED_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Emulated implementation of floating point operations +template< typename Base, typename Value, std::size_t Size > +struct fp_operations_emulated : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + typedef Value value_type; + typedef typename base_type::scoped_lock scoped_lock; + + static value_type fetch_add(storage_type volatile& storage, value_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + value_type old_val = atomics::detail::bitwise_fp_cast< value_type >(s); + value_type new_val = old_val + v; + s = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + return old_val; + } + + static value_type fetch_sub(storage_type volatile& storage, value_type v, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type& s = const_cast< storage_type& >(storage); + scoped_lock lock(&storage); + value_type old_val = atomics::detail::bitwise_fp_cast< value_type >(s); + value_type new_val = old_val - v; + s = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + return old_val; + } +}; + +template< typename Base, typename Value, std::size_t Size > +struct fp_operations< Base, Value, Size, false > : + public fp_operations_emulated< Base, Value, Size > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FP_OPS_EMULATED_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/fp_ops_generic.hpp b/src/boost/boost/atomic/detail/fp_ops_generic.hpp new file mode 100644 index 000000000..3d384f511 --- /dev/null +++ b/src/boost/boost/atomic/detail/fp_ops_generic.hpp @@ -0,0 +1,86 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/fp_ops_generic.hpp + * + * This header contains generic implementation of the floating point atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_FP_OPS_GENERIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FP_OPS_GENERIC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Generic implementation of floating point operations +template< typename Base, typename Value, std::size_t Size > +struct fp_operations_generic : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + typedef Value value_type; + + static BOOST_FORCEINLINE value_type fetch_add(storage_type volatile& storage, value_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_storage, new_storage; + value_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_storage); + do + { + old_val = atomics::detail::bitwise_fp_cast< value_type >(old_storage); + new_val = old_val + v; + new_storage = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + } + while (!base_type::compare_exchange_weak(storage, old_storage, new_storage, order, memory_order_relaxed)); + return old_val; + } + + static BOOST_FORCEINLINE value_type fetch_sub(storage_type volatile& storage, value_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_storage, new_storage; + value_type old_val, new_val; + atomics::detail::non_atomic_load(storage, old_storage); + do + { + old_val = atomics::detail::bitwise_fp_cast< value_type >(old_storage); + new_val = old_val - v; + new_storage = atomics::detail::bitwise_fp_cast< storage_type >(new_val); + } + while (!base_type::compare_exchange_weak(storage, old_storage, new_storage, order, memory_order_relaxed)); + return old_val; + } +}; + +// Default fp_operations template definition will be used unless specialized for a specific platform +template< typename Base, typename Value, std::size_t Size > +struct fp_operations< Base, Value, Size, true > : + public fp_operations_generic< Base, Value, Size > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_FP_OPS_GENERIC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/futex.hpp b/src/boost/boost/atomic/detail/futex.hpp new file mode 100644 index 000000000..363e57a69 --- /dev/null +++ b/src/boost/boost/atomic/detail/futex.hpp @@ -0,0 +1,154 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/futex.hpp + * + * This header defines wrappers around futex syscall. + * + * http://man7.org/linux/man-pages/man2/futex.2.html + * https://man.openbsd.org/futex + */ + +#ifndef BOOST_ATOMIC_DETAIL_FUTEX_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_FUTEX_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__linux__) || defined(__OpenBSD__) || defined(__NETBSD__) || defined(__NetBSD__) + +#include + +#if defined(SYS_futex) +#define BOOST_ATOMIC_DETAIL_SYS_FUTEX SYS_futex +#elif defined(SYS_futex_time64) +// On some 32-bit targets (e.g. riscv32) SYS_futex is not defined and instead SYS_futex_time64 is implemented, +// which is equivalent to SYS_futex but uses 64-bit time_t. +#define BOOST_ATOMIC_DETAIL_SYS_FUTEX SYS_futex_time64 +#elif defined(__NR_futex) +// Some Android NDKs (Google NDK and older Crystax.NET NDK versions) don't define SYS_futex. +#define BOOST_ATOMIC_DETAIL_SYS_FUTEX __NR_futex +#elif defined(SYS___futex) +// NetBSD defines SYS___futex, which has slightly different parameters. Basically, it has decoupled timeout and val2 parameters: +// int __futex(int *addr1, int op, int val1, const struct timespec *timeout, int *addr2, int val2, int val3); +// https://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/sys/syscall.h +// http://bxr.su/NetBSD/sys/kern/sys_futex.c +#define BOOST_ATOMIC_DETAIL_SYS_FUTEX SYS___futex +#define BOOST_ATOMIC_DETAIL_NETBSD_FUTEX +#endif + +#if defined(BOOST_ATOMIC_DETAIL_SYS_FUTEX) + +#include +#if defined(__linux__) +#include +#else +#include +#endif +#include +#include + +#define BOOST_ATOMIC_DETAIL_HAS_FUTEX + +#if defined(FUTEX_PRIVATE_FLAG) +#define BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG FUTEX_PRIVATE_FLAG +#elif defined(__ANDROID__) +// On Android, futex.h is lacking many definitions, but the actual Linux kernel supports the API in full. +#define BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG 128 +#else +#define BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG 0 +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Invokes an operation on the futex +BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, const void* timeout = NULL, void* addr2 = NULL, unsigned int val3 = 0) BOOST_NOEXCEPT +{ +#if !defined(BOOST_ATOMIC_DETAIL_NETBSD_FUTEX) + return ::syscall(BOOST_ATOMIC_DETAIL_SYS_FUTEX, addr1, op, val1, timeout, addr2, val3); +#else + // Pass 0 in val2. + return ::syscall(BOOST_ATOMIC_DETAIL_SYS_FUTEX, addr1, op, val1, timeout, addr2, 0u, val3); +#endif +} + +//! Invokes an operation on the futex +BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, unsigned int val2, void* addr2 = NULL, unsigned int val3 = 0) BOOST_NOEXCEPT +{ +#if !defined(BOOST_ATOMIC_DETAIL_NETBSD_FUTEX) + return ::syscall(BOOST_ATOMIC_DETAIL_SYS_FUTEX, addr1, op, val1, static_cast< atomics::detail::uintptr_t >(val2), addr2, val3); +#else + // Pass NULL in timeout. + return ::syscall(BOOST_ATOMIC_DETAIL_SYS_FUTEX, addr1, op, val1, static_cast< void* >(NULL), addr2, val2, val3); +#endif +} + +//! Checks that the value \c pval is \c expected and blocks +BOOST_FORCEINLINE int futex_wait(void* pval, unsigned int expected) BOOST_NOEXCEPT +{ + return futex_invoke(pval, FUTEX_WAIT, expected); +} + +//! Checks that the value \c pval is \c expected and blocks +BOOST_FORCEINLINE int futex_wait_private(void* pval, unsigned int expected) BOOST_NOEXCEPT +{ + return futex_invoke(pval, FUTEX_WAIT | BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG, expected); +} + +//! Wakes the specified number of threads waiting on the futex +BOOST_FORCEINLINE int futex_signal(void* pval, unsigned int count = 1u) BOOST_NOEXCEPT +{ + return futex_invoke(pval, FUTEX_WAKE, count); +} + +//! Wakes the specified number of threads waiting on the futex +BOOST_FORCEINLINE int futex_signal_private(void* pval, unsigned int count = 1u) BOOST_NOEXCEPT +{ + return futex_invoke(pval, FUTEX_WAKE | BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG, count); +} + +//! Wakes all threads waiting on the futex +BOOST_FORCEINLINE int futex_broadcast(void* pval) BOOST_NOEXCEPT +{ + return futex_signal(pval, (~static_cast< unsigned int >(0u)) >> 1); +} + +//! Wakes all threads waiting on the futex +BOOST_FORCEINLINE int futex_broadcast_private(void* pval) BOOST_NOEXCEPT +{ + return futex_signal_private(pval, (~static_cast< unsigned int >(0u)) >> 1); +} + +//! Wakes the wake_count threads waiting on the futex pval1 and requeues up to requeue_count of the blocked threads onto another futex pval2 +BOOST_FORCEINLINE int futex_requeue(void* pval1, void* pval2, unsigned int wake_count = 1u, unsigned int requeue_count = (~static_cast< unsigned int >(0u)) >> 1) BOOST_NOEXCEPT +{ + return futex_invoke(pval1, FUTEX_REQUEUE, wake_count, requeue_count, pval2); +} + +//! Wakes the wake_count threads waiting on the futex pval1 and requeues up to requeue_count of the blocked threads onto another futex pval2 +BOOST_FORCEINLINE int futex_requeue_private(void* pval1, void* pval2, unsigned int wake_count = 1u, unsigned int requeue_count = (~static_cast< unsigned int >(0u)) >> 1) BOOST_NOEXCEPT +{ + return futex_invoke(pval1, FUTEX_REQUEUE | BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG, wake_count, requeue_count, pval2); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // defined(BOOST_ATOMIC_DETAIL_SYS_FUTEX) + +#endif // defined(__linux__) || defined(__OpenBSD__) || defined(__NETBSD__) || defined(__NetBSD__) + +#endif // BOOST_ATOMIC_DETAIL_FUTEX_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/gcc_arm_asm_common.hpp b/src/boost/boost/atomic/detail/gcc_arm_asm_common.hpp new file mode 100644 index 000000000..cb78d4a69 --- /dev/null +++ b/src/boost/boost/atomic/detail/gcc_arm_asm_common.hpp @@ -0,0 +1,79 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014, 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/gcc_arm_asm_common.hpp + * + * This header contains basic utilities for gcc asm-based ARM backend. + */ + +#ifndef BOOST_ATOMIC_DETAIL_GCC_ARM_ASM_COMMON_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_GCC_ARM_ASM_COMMON_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// A memory barrier is effected using a "co-processor 15" instruction, +// though a separate assembler mnemonic is available for it in v7. +// +// "Thumb 1" is a subset of the ARM instruction set that uses a 16-bit encoding. It +// doesn't include all instructions and in particular it doesn't include the co-processor +// instruction used for the memory barrier or the load-locked/store-conditional +// instructions. So, if we're compiling in "Thumb 1" mode, we need to wrap all of our +// asm blocks with code to temporarily change to ARM mode. +// +// You can only change between ARM and Thumb modes when branching using the bx instruction. +// bx takes an address specified in a register. The least significant bit of the address +// indicates the mode, so 1 is added to indicate that the destination code is Thumb. +// A temporary register is needed for the address and is passed as an argument to these +// macros. It must be one of the "low" registers accessible to Thumb code, specified +// using the "l" attribute in the asm statement. +// +// Architecture v7 introduces "Thumb 2", which does include (almost?) all of the ARM +// instruction set. (Actually, there was an extension of v6 called v6T2 which supported +// "Thumb 2" mode, but its architecture manual is no longer available, referring to v7.) +// So in v7 we don't need to change to ARM mode; we can write "universal +// assembler" which will assemble to Thumb 2 or ARM code as appropriate. The only thing +// we need to do to make this "universal" assembler mode work is to insert "IT" instructions +// to annotate the conditional instructions. These are ignored in other modes (e.g. v6), +// so they can always be present. + +// A note about memory_order_consume. Technically, this architecture allows to avoid +// unnecessary memory barrier after consume load since it supports data dependency ordering. +// However, some compiler optimizations may break a seemingly valid code relying on data +// dependency tracking by injecting bogus branches to aid out of order execution. +// This may happen not only in Boost.Atomic code but also in user's code, which we have no +// control of. See this thread: http://lists.boost.org/Archives/boost/2014/06/213890.php. +// For this reason we promote memory_order_consume to memory_order_acquire. + +#if defined(__thumb__) && !defined(__thumb2__) +#define BOOST_ATOMIC_DETAIL_ARM_ASM_START(TMPREG) "adr " #TMPREG ", 8f\n\t" "bx " #TMPREG "\n\t" ".arm\n\t" ".align 4\n\t" "8:\n\t" +#define BOOST_ATOMIC_DETAIL_ARM_ASM_END(TMPREG) "adr " #TMPREG ", 9f + 1\n\t" "bx " #TMPREG "\n\t" ".thumb\n\t" ".align 2\n\t" "9:\n\t" +#define BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(var) "=&l" (var) +#else +// Indicate that start/end macros are empty and the tmpreg is not needed +#define BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED +#define BOOST_ATOMIC_DETAIL_ARM_ASM_START(TMPREG) +#define BOOST_ATOMIC_DETAIL_ARM_ASM_END(TMPREG) +#define BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(var) "=&l" (var) +#endif + +#if defined(BOOST_ATOMIC_DETAIL_ARM_LITTLE_ENDIAN) +#define BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(arg) "%" BOOST_STRINGIZE(arg) +#define BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(arg) "%H" BOOST_STRINGIZE(arg) +#else +#define BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(arg) "%H" BOOST_STRINGIZE(arg) +#define BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(arg) "%" BOOST_STRINGIZE(arg) +#endif + +#endif // BOOST_ATOMIC_DETAIL_GCC_ARM_ASM_COMMON_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp b/src/boost/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp new file mode 100644 index 000000000..b65abec47 --- /dev/null +++ b/src/boost/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp @@ -0,0 +1,66 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/gcc_atomic_memory_order_utils.hpp + * + * This header contains utilities for working with gcc atomic memory order constants. + */ + +#ifndef BOOST_ATOMIC_DETAIL_GCC_ATOMIC_MEMORY_ORDER_UTILS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_GCC_ATOMIC_MEMORY_ORDER_UTILS_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +/*! + * The function converts \c boost::memory_order values to the compiler-specific constants. + * + * NOTE: The intention is that the function is optimized away by the compiler, and the + * compiler-specific constants are passed to the intrinsics. Unfortunately, constexpr doesn't + * work in this case because the standard atomics interface require memory ordering + * constants to be passed as function arguments, at which point they stop being constexpr. + * However, it is crucial that the compiler sees constants and not runtime values, + * because otherwise it just ignores the ordering value and always uses seq_cst. + * This is the case with Intel C++ Compiler 14.0.3 (Composer XE 2013 SP1, update 3) and + * gcc 4.8.2. Intel Compiler issues a warning in this case: + * + * warning #32013: Invalid memory order specified. Defaulting to seq_cst memory order. + * + * while gcc acts silently. + * + * To mitigate the problem ALL functions, including the atomic<> members must be + * declared with BOOST_FORCEINLINE. In this case the compilers are able to see that + * all functions are called with constant orderings and call intrinstcts properly. + * + * Unfortunately, this still doesn't work in debug mode as the compiler doesn't + * propagate constants even when functions are marked with BOOST_FORCEINLINE. In this case + * all atomic operaions will be executed with seq_cst semantics. + */ +BOOST_FORCEINLINE BOOST_CONSTEXPR int convert_memory_order_to_gcc(memory_order order) BOOST_NOEXCEPT +{ + return (order == memory_order_relaxed ? __ATOMIC_RELAXED : (order == memory_order_consume ? __ATOMIC_CONSUME : + (order == memory_order_acquire ? __ATOMIC_ACQUIRE : (order == memory_order_release ? __ATOMIC_RELEASE : + (order == memory_order_acq_rel ? __ATOMIC_ACQ_REL : __ATOMIC_SEQ_CST))))); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_GCC_ATOMIC_MEMORY_ORDER_UTILS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/gcc_ppc_asm_common.hpp b/src/boost/boost/atomic/detail/gcc_ppc_asm_common.hpp new file mode 100644 index 000000000..7f905c055 --- /dev/null +++ b/src/boost/boost/atomic/detail/gcc_ppc_asm_common.hpp @@ -0,0 +1,33 @@ +/* + * 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) + * + * Copyright (c) 2021 Andrey Semashev + */ +/*! + * \file atomic/detail/gcc_ppc_asm_common.hpp + * + * This header contains basic utilities for gcc asm-based PowerPC backend. + */ + +#ifndef BOOST_ATOMIC_DETAIL_GCC_PPC_ASM_COMMON_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_GCC_PPC_ASM_COMMON_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined(_AIX) +#define BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL(label) label ":\n\t" +#define BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP(insn, label, offset) insn " " label "\n\t" +#else +// Standard assembler tool (as) on AIX does not support numeric jump labels, so we have to use offsets instead. +// https://github.com/boostorg/atomic/pull/50 +#define BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL(label) +#define BOOST_ATOMIC_DETAIL_PPC_ASM_JUMP(insn, label, offset) insn " $" offset "\n\t" +#endif + +#endif // BOOST_ATOMIC_DETAIL_GCC_PPC_ASM_COMMON_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/header.hpp b/src/boost/boost/atomic/detail/header.hpp new file mode 100644 index 000000000..124b8da74 --- /dev/null +++ b/src/boost/boost/atomic/detail/header.hpp @@ -0,0 +1,72 @@ +/* + * Copyright Andrey Semashev 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) + */ + +#include + +#if !defined(BOOST_ATOMIC_ENABLE_WARNINGS) + +#if defined(BOOST_MSVC) + +#pragma warning(push, 3) +// 'm_A' : class 'A' needs to have dll-interface to be used by clients of class 'B' +#pragma warning(disable: 4251) +// non dll-interface class 'A' used as base for dll-interface class 'B' +#pragma warning(disable: 4275) +// 'this' : used in base member initializer list +#pragma warning(disable: 4355) +// 'int' : forcing value to bool 'true' or 'false' (performance warning) +#pragma warning(disable: 4800) +// unreferenced formal parameter +#pragma warning(disable: 4100) +// conditional expression is constant +#pragma warning(disable: 4127) +// default constructor could not be generated +#pragma warning(disable: 4510) +// copy constructor could not be generated +#pragma warning(disable: 4511) +// assignment operator could not be generated +#pragma warning(disable: 4512) +// function marked as __forceinline not inlined +#pragma warning(disable: 4714) +// decorated name length exceeded, name was truncated +#pragma warning(disable: 4503) +// declaration of 'A' hides previous local declaration +#pragma warning(disable: 4456) +// declaration of 'A' hides global declaration +#pragma warning(disable: 4459) +// 'X': This function or variable may be unsafe. Consider using Y instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +#pragma warning(disable: 4996) +// 'A' : multiple assignment operators specified +#pragma warning(disable: 4522) +// unary minus operator applied to unsigned type, result still unsigned +#pragma warning(disable: 4146) +// frame pointer register 'ebx' modified by inline assembly code +#pragma warning(disable: 4731) +// alignment is sensitive to packing +#pragma warning(disable: 4121) +// 'struct_name' : structure was padded due to __declspec(align()) +#pragma warning(disable: 4324) + +#elif defined(BOOST_GCC) && BOOST_GCC >= 40600 + +#pragma GCC diagnostic push +// unused parameter 'arg' +#pragma GCC diagnostic ignored "-Wunused-parameter" +// missing initializer for member var +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" + +#elif defined(BOOST_CLANG) + +#pragma clang diagnostic push +// unused parameter 'arg' +#pragma clang diagnostic ignored "-Wunused-parameter" +// missing initializer for member var +#pragma clang diagnostic ignored "-Wmissing-field-initializers" + +#endif + +#endif // !defined(BOOST_ATOMIC_ENABLE_WARNINGS) diff --git a/src/boost/boost/atomic/detail/int_sizes.hpp b/src/boost/boost/atomic/detail/int_sizes.hpp new file mode 100644 index 000000000..9ae5f964e --- /dev/null +++ b/src/boost/boost/atomic/detail/int_sizes.hpp @@ -0,0 +1,164 @@ +/* + * 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) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/int_sizes.hpp + * + * This header defines macros for testing buitin integer type sizes + */ + +#ifndef BOOST_ATOMIC_DETAIL_INT_SIZES_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_INT_SIZES_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// GCC and compatible compilers define internal macros with builtin type traits +#if defined(__SIZEOF_SHORT__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT __SIZEOF_SHORT__ +#endif +#if defined(__SIZEOF_INT__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_INT __SIZEOF_INT__ +#endif +#if defined(__SIZEOF_LONG__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG __SIZEOF_LONG__ +#endif +#if defined(__SIZEOF_LONG_LONG__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG __SIZEOF_LONG_LONG__ +#endif +#if defined(__SIZEOF_WCHAR_T__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T __SIZEOF_WCHAR_T__ +#endif +#if defined(__SIZEOF_POINTER__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER __SIZEOF_POINTER__ +#elif defined(_MSC_VER) +#if defined(_M_AMD64) || defined(_M_ARM64) || defined(_M_IA64) +#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 8 +#else +#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 4 +#endif +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT) ||\ + !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LLONG) ||\ + !defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) + +// Try to deduce sizes from limits +#include +#if defined(__has_include) +#if __has_include() +#include +#endif +#endif +#include + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT) +#if (USHRT_MAX + 0) == 0xff +#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 1 +#elif (USHRT_MAX + 0) == 0xffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 2 +#elif (USHRT_MAX + 0) == 0xffffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 4 +#elif (USHRT_MAX + 0) == UINT64_C(0xffffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 8 +#endif +#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT) + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT) +#if (UINT_MAX + 0) == 0xff +#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 1 +#elif (UINT_MAX + 0) == 0xffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 2 +#elif (UINT_MAX + 0) == 0xffffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 4 +#elif (UINT_MAX + 0) == UINT64_C(0xffffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 8 +#endif +#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT) + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG) +#if (ULONG_MAX + 0) == 0xff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 1 +#elif (ULONG_MAX + 0) == 0xffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 2 +#elif (ULONG_MAX + 0) == 0xffffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 4 +#elif (ULONG_MAX + 0) == UINT64_C(0xffffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 8 +#endif +#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG) + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LLONG) +#if defined(__hpux) // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 8 +#else + +// The list of the non-standard macros (the ones except ULLONG_MAX) is taken from cstdint.hpp +#if defined(ULLONG_MAX) +#define BOOST_ATOMIC_DETAIL_ULLONG_MAX ULLONG_MAX +#elif defined(ULONG_LONG_MAX) +#define BOOST_ATOMIC_DETAIL_ULLONG_MAX ULONG_LONG_MAX +#elif defined(ULONGLONG_MAX) +#define BOOST_ATOMIC_DETAIL_ULLONG_MAX ULONGLONG_MAX +#elif defined(_LLONG_MAX) // strangely enough, this one seems to be holding the limit for the unsigned integer +#define BOOST_ATOMIC_DETAIL_ULLONG_MAX _LLONG_MAX +#endif + +#if (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == 0xff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 1 +#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == 0xffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 2 +#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == 0xffffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 4 +#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == UINT64_C(0xffffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 8 +#endif + +#endif // defined(__hpux) +#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LLONG) + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && defined(UINTPTR_MAX) +#if (UINTPTR_MAX + 0) == 0xffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 2 +#elif (UINTPTR_MAX + 0) == 0xffffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 4 +#elif (UINTPTR_MAX + 0) == UINT64_C(0xffffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 8 +#endif +#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && defined(UINTPTR_MAX) + +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T) + +#include +#include + +#if defined(_MSC_VER) && (_MSC_VER <= 1310 || defined(UNDER_CE) && _MSC_VER <= 1500) +// MSVC 7.1 and MSVC 8 (arm) define WCHAR_MAX to a value not suitable for constant expressions +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 2 +#elif (WCHAR_MAX + 0) == 0xff || (WCHAR_MAX + 0) == 0x7f +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 1 +#elif (WCHAR_MAX + 0) == 0xffff || (WCHAR_MAX + 0) == 0x7fff +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 2 +#elif (WCHAR_MAX + 0) == 0xffffffff || (WCHAR_MAX + 0) == 0x7fffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 4 +#elif (WCHAR_MAX + 0) == UINT64_C(0xffffffffffffffff) || (WCHAR_MAX + 0) == INT64_C(0x7fffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 8 +#endif +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT) ||\ + !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LLONG) ||\ + !defined(BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T) +#error Boost.Atomic: Failed to determine builtin integer sizes, the target platform is not supported. Please, report to the developers (patches are welcome). +#endif + +#endif // BOOST_ATOMIC_DETAIL_INT_SIZES_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/integral_conversions.hpp b/src/boost/boost/atomic/detail/integral_conversions.hpp new file mode 100644 index 000000000..54116a6b4 --- /dev/null +++ b/src/boost/boost/atomic/detail/integral_conversions.hpp @@ -0,0 +1,108 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/integral_conversions.hpp + * + * This header defines sign/zero extension and truncation utilities for Boost.Atomic. The tools assume two's complement signed integer representation. + */ + +#ifndef BOOST_ATOMIC_DETAIL_INTEGRAL_CONVERSIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_INTEGRAL_CONVERSIONS_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Output, typename Input > +BOOST_FORCEINLINE Output zero_extend_impl(Input input, atomics::detail::true_type) BOOST_NOEXCEPT +{ + // Note: If we are casting with truncation or to the same-sized output, don't cause signed integer overflow by this chain of conversions + return atomics::detail::bitwise_cast< Output >(static_cast< typename atomics::detail::make_unsigned< Output >::type >( + static_cast< typename atomics::detail::make_unsigned< Input >::type >(input))); +} + +template< typename Output, typename Input > +BOOST_FORCEINLINE Output zero_extend_impl(Input input, atomics::detail::false_type) BOOST_NOEXCEPT +{ + return static_cast< Output >(static_cast< typename atomics::detail::make_unsigned< Input >::type >(input)); +} + +//! Zero-extends or truncates (wraps) input operand to fit in the output type +template< typename Output, typename Input > +BOOST_FORCEINLINE Output zero_extend(Input input) BOOST_NOEXCEPT +{ + return atomics::detail::zero_extend_impl< Output >(input, atomics::detail::integral_constant< bool, atomics::detail::is_signed< Output >::value >()); +} + +//! Truncates (wraps) input operand to fit in the output type +template< typename Output, typename Input > +BOOST_FORCEINLINE Output integral_truncate(Input input) BOOST_NOEXCEPT +{ + // zero_extend does the truncation + return atomics::detail::zero_extend< Output >(input); +} + +template< typename Output, typename Input > +BOOST_FORCEINLINE Output sign_extend_impl(Input input, atomics::detail::true_type) BOOST_NOEXCEPT +{ + return atomics::detail::integral_truncate< Output >(input); +} + +template< typename Output, typename Input > +BOOST_FORCEINLINE Output sign_extend_impl(Input input, atomics::detail::false_type) BOOST_NOEXCEPT +{ + return static_cast< Output >(atomics::detail::bitwise_cast< typename atomics::detail::make_signed< Input >::type >(input)); +} + +//! Sign-extends or truncates (wraps) input operand to fit in the output type +template< typename Output, typename Input > +BOOST_FORCEINLINE Output sign_extend(Input input) BOOST_NOEXCEPT +{ + return atomics::detail::sign_extend_impl< Output >(input, atomics::detail::integral_constant< bool, sizeof(Output) <= sizeof(Input) >()); +} + +//! Sign-extends or truncates (wraps) input operand to fit in the output type +template< typename Output, typename Input > +BOOST_FORCEINLINE Output integral_extend(Input input, atomics::detail::true_type) BOOST_NOEXCEPT +{ + return atomics::detail::sign_extend< Output >(input); +} + +//! Zero-extends or truncates (wraps) input operand to fit in the output type +template< typename Output, typename Input > +BOOST_FORCEINLINE Output integral_extend(Input input, atomics::detail::false_type) BOOST_NOEXCEPT +{ + return atomics::detail::zero_extend< Output >(input); +} + +//! Sign- or zero-extends or truncates (wraps) input operand to fit in the output type +template< bool Signed, typename Output, typename Input > +BOOST_FORCEINLINE Output integral_extend(Input input) BOOST_NOEXCEPT +{ + return atomics::detail::integral_extend< Output >(input, atomics::detail::integral_constant< bool, Signed >()); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_INTEGRAL_CONVERSIONS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/interlocked.hpp b/src/boost/boost/atomic/detail/interlocked.hpp new file mode 100644 index 000000000..1c4eeeefc --- /dev/null +++ b/src/boost/boost/atomic/detail/interlocked.hpp @@ -0,0 +1,546 @@ +#ifndef BOOST_ATOMIC_DETAIL_INTERLOCKED_HPP +#define BOOST_ATOMIC_DETAIL_INTERLOCKED_HPP + +// Copyright (c) 2009 Helge Bahmann +// Copyright (c) 2012 - 2014, 2017 Andrey Semashev +// +// 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) + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(_WIN32_WCE) + +#if _WIN32_WCE >= 0x600 + +extern "C" long __cdecl _InterlockedCompareExchange(long volatile*, long, long); +extern "C" long __cdecl _InterlockedExchangeAdd(long volatile*, long); +extern "C" long __cdecl _InterlockedExchange(long volatile*, long); +extern "C" long __cdecl _InterlockedIncrement(long volatile*); +extern "C" long __cdecl _InterlockedDecrement(long volatile*); + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) _InterlockedCompareExchange((long*)(dest), exchange, compare) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, addend) _InterlockedExchangeAdd((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) _InterlockedExchange((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_INCREMENT(dest) _InterlockedIncrement((long*)(dest)) +#define BOOST_ATOMIC_INTERLOCKED_DECREMENT(dest) _InterlockedDecrement((long*)(dest)) + +#else // _WIN32_WCE >= 0x600 + +extern "C" long __cdecl InterlockedCompareExchange(long*, long, long); +extern "C" long __cdecl InterlockedExchangeAdd(long*, long); +extern "C" long __cdecl InterlockedExchange(long*, long); +extern "C" long __cdecl InterlockedIncrement(long*); +extern "C" long __cdecl InterlockedDecrement(long*); + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) InterlockedCompareExchange((long*)(dest), exchange, compare) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, addend) InterlockedExchangeAdd((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) InterlockedExchange((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_INCREMENT(dest) InterlockedIncrement((long*)(dest)) +#define BOOST_ATOMIC_INTERLOCKED_DECREMENT(dest) InterlockedDecrement((long*)(dest)) + +#endif // _WIN32_WCE >= 0x600 + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) ((void*)BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE((long*)(dest), (long)(exchange), (long)(compare))) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE((long*)(dest), (long)(exchange))) + +#elif defined(_MSC_VER) && _MSC_VER >= 1310 + +#if _MSC_VER < 1400 + +extern "C" long __cdecl _InterlockedCompareExchange(long volatile*, long, long); +extern "C" long __cdecl _InterlockedExchangeAdd(long volatile*, long); +extern "C" long __cdecl _InterlockedExchange(long volatile*, long); +extern "C" long __cdecl _InterlockedIncrement(long volatile*); +extern "C" long __cdecl _InterlockedDecrement(long volatile*); + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedCompareExchange) +#pragma intrinsic(_InterlockedExchangeAdd) +#pragma intrinsic(_InterlockedExchange) +#pragma intrinsic(_InterlockedIncrement) +#pragma intrinsic(_InterlockedDecrement) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) _InterlockedCompareExchange((long*)(dest), exchange, compare) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, addend) _InterlockedExchangeAdd((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) _InterlockedExchange((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_INCREMENT(dest) _InterlockedIncrement((long*)(dest)) +#define BOOST_ATOMIC_INTERLOCKED_DECREMENT(dest) _InterlockedDecrement((long*)(dest)) + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) ((void*)BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE((long*)(dest), (long)(exchange), (long)(compare))) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE((long*)(dest), (long)(exchange))) + +#else // _MSC_VER < 1400 + +#include + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedCompareExchange) +#pragma intrinsic(_InterlockedExchangeAdd) +#pragma intrinsic(_InterlockedExchange) +#pragma intrinsic(_InterlockedIncrement) +#pragma intrinsic(_InterlockedDecrement) +#pragma intrinsic(_InterlockedAnd) +#pragma intrinsic(_InterlockedOr) +#pragma intrinsic(_InterlockedXor) +#pragma intrinsic(_interlockedbittestandset) +#pragma intrinsic(_interlockedbittestandreset) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) _InterlockedCompareExchange((long*)(dest), (long)(exchange), (long)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, addend) _InterlockedExchangeAdd((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) _InterlockedExchange((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_INCREMENT(dest) _InterlockedIncrement((long*)(dest)) +#define BOOST_ATOMIC_INTERLOCKED_DECREMENT(dest) _InterlockedDecrement((long*)(dest)) +#define BOOST_ATOMIC_INTERLOCKED_AND(dest, arg) _InterlockedAnd((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR(dest, arg) _InterlockedOr((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR(dest, arg) _InterlockedXor((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_BTS(dest, arg) _interlockedbittestandset((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_BTR(dest, arg) _interlockedbittestandreset((long*)(dest), (long)(arg)) + +#if defined(_M_AMD64) +#if defined(BOOST_MSVC) +#pragma intrinsic(_interlockedbittestandset64) +#pragma intrinsic(_interlockedbittestandreset64) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_BTS64(dest, arg) _interlockedbittestandset64((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_BTR64(dest, arg) _interlockedbittestandreset64((__int64*)(dest), (__int64)(arg)) +#endif // defined(_M_AMD64) + +#if (defined(_M_IX86) && _M_IX86 >= 500) || defined(_M_AMD64) || defined(_M_IA64) +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedCompareExchange64) +#endif +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(dest, exchange, compare) _InterlockedCompareExchange64((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#endif + +#if _MSC_VER >= 1500 && defined(_M_AMD64) +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedCompareExchange128) +#endif +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE128(dest, exchange, compare) _InterlockedCompareExchange128((__int64*)(dest), ((const __int64*)(&exchange))[1], ((const __int64*)(&exchange))[0], (__int64*)(compare)) +#endif + +#if _MSC_VER >= 1600 + +// MSVC 2010 and later provide intrinsics for 8 and 16 bit integers. +// Note that for each bit count these macros must be either all defined or all not defined. +// Otherwise atomic<> operations will be implemented inconsistently. + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedCompareExchange8) +#pragma intrinsic(_InterlockedExchangeAdd8) +#pragma intrinsic(_InterlockedExchange8) +#pragma intrinsic(_InterlockedAnd8) +#pragma intrinsic(_InterlockedOr8) +#pragma intrinsic(_InterlockedXor8) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8(dest, exchange, compare) _InterlockedCompareExchange8((char*)(dest), (char)(exchange), (char)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8(dest, addend) _InterlockedExchangeAdd8((char*)(dest), (char)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE8(dest, newval) _InterlockedExchange8((char*)(dest), (char)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_AND8(dest, arg) _InterlockedAnd8((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR8(dest, arg) _InterlockedOr8((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR8(dest, arg) _InterlockedXor8((char*)(dest), (char)(arg)) + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedCompareExchange16) +#pragma intrinsic(_InterlockedExchangeAdd16) +#pragma intrinsic(_InterlockedExchange16) +#pragma intrinsic(_InterlockedAnd16) +#pragma intrinsic(_InterlockedOr16) +#pragma intrinsic(_InterlockedXor16) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16(dest, exchange, compare) _InterlockedCompareExchange16((short*)(dest), (short)(exchange), (short)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16(dest, addend) _InterlockedExchangeAdd16((short*)(dest), (short)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE16(dest, newval) _InterlockedExchange16((short*)(dest), (short)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_AND16(dest, arg) _InterlockedAnd16((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR16(dest, arg) _InterlockedOr16((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR16(dest, arg) _InterlockedXor16((short*)(dest), (short)(arg)) + +#endif // _MSC_VER >= 1600 + +#if defined(_M_AMD64) || defined(_M_IA64) + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedExchangeAdd64) +#pragma intrinsic(_InterlockedExchange64) +#pragma intrinsic(_InterlockedAnd64) +#pragma intrinsic(_InterlockedOr64) +#pragma intrinsic(_InterlockedXor64) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(dest, addend) _InterlockedExchangeAdd64((__int64*)(dest), (__int64)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(dest, newval) _InterlockedExchange64((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_AND64(dest, arg) _InterlockedAnd64((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR64(dest, arg) _InterlockedOr64((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR64(dest, arg) _InterlockedXor64((__int64*)(dest), (__int64)(arg)) + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedCompareExchangePointer) +#pragma intrinsic(_InterlockedExchangePointer) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) _InterlockedCompareExchangePointer((void**)(dest), (void*)(exchange), (void*)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) _InterlockedExchangePointer((void**)(dest), (void*)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64((long*)(dest), byte_offset)) + +#elif defined(_M_IX86) + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) ((void*)_InterlockedCompareExchange((long*)(dest), (long)(exchange), (long)(compare))) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) ((void*)_InterlockedExchange((long*)(dest), (long)(newval))) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD((long*)(dest), byte_offset)) + +#endif + +#if _MSC_VER >= 1700 && (defined(_M_ARM) || defined(_M_ARM64)) + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedExchangeAdd64) +#pragma intrinsic(_InterlockedExchange64) +#pragma intrinsic(_InterlockedAnd64) +#pragma intrinsic(_InterlockedOr64) +#pragma intrinsic(_InterlockedXor64) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(dest, addend) _InterlockedExchangeAdd64((__int64*)(dest), (__int64)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(dest, newval) _InterlockedExchange64((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_AND64(dest, arg) _InterlockedAnd64((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR64(dest, arg) _InterlockedOr64((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR64(dest, arg) _InterlockedXor64((__int64*)(dest), (__int64)(arg)) + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedCompareExchange8_nf) +#pragma intrinsic(_InterlockedCompareExchange8_acq) +#pragma intrinsic(_InterlockedCompareExchange8_rel) +#pragma intrinsic(_InterlockedCompareExchange16_nf) +#pragma intrinsic(_InterlockedCompareExchange16_acq) +#pragma intrinsic(_InterlockedCompareExchange16_rel) +#pragma intrinsic(_InterlockedCompareExchange_nf) +#pragma intrinsic(_InterlockedCompareExchange_acq) +#pragma intrinsic(_InterlockedCompareExchange_rel) +#pragma intrinsic(_InterlockedCompareExchange64) +#pragma intrinsic(_InterlockedCompareExchange64_nf) +#pragma intrinsic(_InterlockedCompareExchange64_acq) +#pragma intrinsic(_InterlockedCompareExchange64_rel) +#pragma intrinsic(_InterlockedCompareExchangePointer) +#pragma intrinsic(_InterlockedCompareExchangePointer_nf) +#pragma intrinsic(_InterlockedCompareExchangePointer_acq) +#pragma intrinsic(_InterlockedCompareExchangePointer_rel) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_RELAXED(dest, exchange, compare) _InterlockedCompareExchange8_nf((char*)(dest), (char)(exchange), (char)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_ACQUIRE(dest, exchange, compare) _InterlockedCompareExchange8_acq((char*)(dest), (char)(exchange), (char)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_RELEASE(dest, exchange, compare) _InterlockedCompareExchange8_rel((char*)(dest), (char)(exchange), (char)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_RELAXED(dest, exchange, compare) _InterlockedCompareExchange16_nf((short*)(dest), (short)(exchange), (short)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_ACQUIRE(dest, exchange, compare) _InterlockedCompareExchange16_acq((short*)(dest), (short)(exchange), (short)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_RELEASE(dest, exchange, compare) _InterlockedCompareExchange16_rel((short*)(dest), (short)(exchange), (short)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_RELAXED(dest, exchange, compare) _InterlockedCompareExchange_nf((long*)(dest), (long)(exchange), (long)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_ACQUIRE(dest, exchange, compare) _InterlockedCompareExchange_acq((long*)(dest), (long)(exchange), (long)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_RELEASE(dest, exchange, compare) _InterlockedCompareExchange_rel((long*)(dest), (long)(exchange), (long)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(dest, exchange, compare) _InterlockedCompareExchange64((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_RELAXED(dest, exchange, compare) _InterlockedCompareExchange64_nf((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_ACQUIRE(dest, exchange, compare) _InterlockedCompareExchange64_acq((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_RELEASE(dest, exchange, compare) _InterlockedCompareExchange64_rel((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) _InterlockedCompareExchangePointer((void**)(dest), (void*)(exchange), (void*)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER_RELAXED(dest, exchange, compare) _InterlockedCompareExchangePointer_nf((void**)(dest), (void*)(exchange), (void*)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER_ACQUIRE(dest, exchange, compare) _InterlockedCompareExchangePointer_acq((void**)(dest), (void*)(exchange), (void*)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER_RELEASE(dest, exchange, compare) _InterlockedCompareExchangePointer_rel((void**)(dest), (void*)(exchange), (void*)(compare)) + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedExchangeAdd8_nf) +#pragma intrinsic(_InterlockedExchangeAdd8_acq) +#pragma intrinsic(_InterlockedExchangeAdd8_rel) +#pragma intrinsic(_InterlockedExchangeAdd16_nf) +#pragma intrinsic(_InterlockedExchangeAdd16_acq) +#pragma intrinsic(_InterlockedExchangeAdd16_rel) +#pragma intrinsic(_InterlockedExchangeAdd_nf) +#pragma intrinsic(_InterlockedExchangeAdd_acq) +#pragma intrinsic(_InterlockedExchangeAdd_rel) +#pragma intrinsic(_InterlockedExchangeAdd64_nf) +#pragma intrinsic(_InterlockedExchangeAdd64_acq) +#pragma intrinsic(_InterlockedExchangeAdd64_rel) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_RELAXED(dest, addend) _InterlockedExchangeAdd8_nf((char*)(dest), (char)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_ACQUIRE(dest, addend) _InterlockedExchangeAdd8_acq((char*)(dest), (char)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_RELEASE(dest, addend) _InterlockedExchangeAdd8_rel((char*)(dest), (char)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_RELAXED(dest, addend) _InterlockedExchangeAdd16_nf((short*)(dest), (short)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_ACQUIRE(dest, addend) _InterlockedExchangeAdd16_acq((short*)(dest), (short)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_RELEASE(dest, addend) _InterlockedExchangeAdd16_rel((short*)(dest), (short)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELAXED(dest, addend) _InterlockedExchangeAdd_nf((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_ACQUIRE(dest, addend) _InterlockedExchangeAdd_acq((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELEASE(dest, addend) _InterlockedExchangeAdd_rel((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_RELAXED(dest, addend) _InterlockedExchangeAdd64_nf((__int64*)(dest), (__int64)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_ACQUIRE(dest, addend) _InterlockedExchangeAdd64_acq((__int64*)(dest), (__int64)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_RELEASE(dest, addend) _InterlockedExchangeAdd64_rel((__int64*)(dest), (__int64)(addend)) + +#if defined(_M_ARM64) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64((__int64*)(dest), byte_offset)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER_RELAXED(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_RELAXED((__int64*)(dest), byte_offset)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER_ACQUIRE(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_ACQUIRE((__int64*)(dest), byte_offset)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER_RELEASE(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_RELEASE((__int64*)(dest), byte_offset)) +#else +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD((long*)(dest), byte_offset)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER_RELAXED(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELAXED((long*)(dest), byte_offset)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER_ACQUIRE(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_ACQUIRE((long*)(dest), byte_offset)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER_RELEASE(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELEASE((long*)(dest), byte_offset)) +#endif + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedExchange8_nf) +#pragma intrinsic(_InterlockedExchange8_acq) +#pragma intrinsic(_InterlockedExchange16_nf) +#pragma intrinsic(_InterlockedExchange16_acq) +#pragma intrinsic(_InterlockedExchange_nf) +#pragma intrinsic(_InterlockedExchange_acq) +#pragma intrinsic(_InterlockedExchange64_nf) +#pragma intrinsic(_InterlockedExchange64_acq) +#pragma intrinsic(_InterlockedExchangePointer) +#pragma intrinsic(_InterlockedExchangePointer_nf) +#pragma intrinsic(_InterlockedExchangePointer_acq) +#if _MSC_VER >= 1800 +#pragma intrinsic(_InterlockedExchange8_rel) +#pragma intrinsic(_InterlockedExchange16_rel) +#pragma intrinsic(_InterlockedExchange_rel) +#pragma intrinsic(_InterlockedExchange64_rel) +#pragma intrinsic(_InterlockedExchangePointer_rel) +#endif +#endif + +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_RELAXED(dest, newval) _InterlockedExchange8_nf((char*)(dest), (char)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_ACQUIRE(dest, newval) _InterlockedExchange8_acq((char*)(dest), (char)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_RELAXED(dest, newval) _InterlockedExchange16_nf((short*)(dest), (short)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_ACQUIRE(dest, newval) _InterlockedExchange16_acq((short*)(dest), (short)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_RELAXED(dest, newval) _InterlockedExchange_nf((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ACQUIRE(dest, newval) _InterlockedExchange_acq((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_RELAXED(dest, newval) _InterlockedExchange64_nf((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_ACQUIRE(dest, newval) _InterlockedExchange64_acq((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) _InterlockedExchangePointer((void**)(dest), (void*)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER_RELAXED(dest, newval) _InterlockedExchangePointer_nf((void**)(dest), (void*)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER_ACQUIRE(dest, newval) _InterlockedExchangePointer_acq((void**)(dest), (void*)(newval)) + +#if _MSC_VER >= 1800 +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_RELEASE(dest, newval) _InterlockedExchange8_rel((char*)(dest), (char)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_RELEASE(dest, newval) _InterlockedExchange16_rel((short*)(dest), (short)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_RELEASE(dest, newval) _InterlockedExchange_rel((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_RELEASE(dest, newval) _InterlockedExchange64_rel((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER_RELEASE(dest, newval) _InterlockedExchangePointer_rel((void**)(dest), (void*)(newval)) +#else +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_RELEASE(dest, newval) BOOST_ATOMIC_INTERLOCKED_EXCHANGE8(dest, newval) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_RELEASE(dest, newval) BOOST_ATOMIC_INTERLOCKED_EXCHANGE16(dest, newval) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_RELEASE(dest, newval) BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_RELEASE(dest, newval) BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(dest, newval) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER_RELEASE(dest, newval) BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) +#endif + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedAnd8_nf) +#pragma intrinsic(_InterlockedAnd8_acq) +#pragma intrinsic(_InterlockedAnd8_rel) +#pragma intrinsic(_InterlockedAnd16_nf) +#pragma intrinsic(_InterlockedAnd16_acq) +#pragma intrinsic(_InterlockedAnd16_rel) +#pragma intrinsic(_InterlockedAnd_nf) +#pragma intrinsic(_InterlockedAnd_acq) +#pragma intrinsic(_InterlockedAnd_rel) +#pragma intrinsic(_InterlockedAnd64_nf) +#pragma intrinsic(_InterlockedAnd64_acq) +#pragma intrinsic(_InterlockedAnd64_rel) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_AND8_RELAXED(dest, arg) _InterlockedAnd8_nf((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND8_ACQUIRE(dest, arg) _InterlockedAnd8_acq((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND8_RELEASE(dest, arg) _InterlockedAnd8_rel((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND16_RELAXED(dest, arg) _InterlockedAnd16_nf((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND16_ACQUIRE(dest, arg) _InterlockedAnd16_acq((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND16_RELEASE(dest, arg) _InterlockedAnd16_rel((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND_RELAXED(dest, arg) _InterlockedAnd_nf((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND_ACQUIRE(dest, arg) _InterlockedAnd_acq((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND_RELEASE(dest, arg) _InterlockedAnd_rel((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND64_RELAXED(dest, arg) _InterlockedAnd64_nf((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND64_ACQUIRE(dest, arg) _InterlockedAnd64_acq((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND64_RELEASE(dest, arg) _InterlockedAnd64_rel((__int64*)(dest), (__int64)(arg)) + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedOr8_nf) +#pragma intrinsic(_InterlockedOr8_acq) +#pragma intrinsic(_InterlockedOr8_rel) +#pragma intrinsic(_InterlockedOr16_nf) +#pragma intrinsic(_InterlockedOr16_acq) +#pragma intrinsic(_InterlockedOr16_rel) +#pragma intrinsic(_InterlockedOr_nf) +#pragma intrinsic(_InterlockedOr_acq) +#pragma intrinsic(_InterlockedOr_rel) +#pragma intrinsic(_InterlockedOr64_nf) +#pragma intrinsic(_InterlockedOr64_acq) +#pragma intrinsic(_InterlockedOr64_rel) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_OR8_RELAXED(dest, arg) _InterlockedOr8_nf((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR8_ACQUIRE(dest, arg) _InterlockedOr8_acq((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR8_RELEASE(dest, arg) _InterlockedOr8_rel((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR16_RELAXED(dest, arg) _InterlockedOr16_nf((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR16_ACQUIRE(dest, arg) _InterlockedOr16_acq((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR16_RELEASE(dest, arg) _InterlockedOr16_rel((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR_RELAXED(dest, arg) _InterlockedOr_nf((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR_ACQUIRE(dest, arg) _InterlockedOr_acq((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR_RELEASE(dest, arg) _InterlockedOr_rel((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR64_RELAXED(dest, arg) _InterlockedOr64_nf((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR64_ACQUIRE(dest, arg) _InterlockedOr64_acq((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR64_RELEASE(dest, arg) _InterlockedOr64_rel((__int64*)(dest), (__int64)(arg)) + +#if defined(BOOST_MSVC) +#pragma intrinsic(_InterlockedXor8_nf) +#pragma intrinsic(_InterlockedXor8_acq) +#pragma intrinsic(_InterlockedXor8_rel) +#pragma intrinsic(_InterlockedXor16_nf) +#pragma intrinsic(_InterlockedXor16_acq) +#pragma intrinsic(_InterlockedXor16_rel) +#pragma intrinsic(_InterlockedXor_nf) +#pragma intrinsic(_InterlockedXor_acq) +#pragma intrinsic(_InterlockedXor_rel) +#pragma intrinsic(_InterlockedXor64_nf) +#pragma intrinsic(_InterlockedXor64_acq) +#pragma intrinsic(_InterlockedXor64_rel) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_XOR8_RELAXED(dest, arg) _InterlockedXor8_nf((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR8_ACQUIRE(dest, arg) _InterlockedXor8_acq((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR8_RELEASE(dest, arg) _InterlockedXor8_rel((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR16_RELAXED(dest, arg) _InterlockedXor16_nf((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR16_ACQUIRE(dest, arg) _InterlockedXor16_acq((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR16_RELEASE(dest, arg) _InterlockedXor16_rel((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR_RELAXED(dest, arg) _InterlockedXor_nf((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR_ACQUIRE(dest, arg) _InterlockedXor_acq((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR_RELEASE(dest, arg) _InterlockedXor_rel((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR64_RELAXED(dest, arg) _InterlockedXor64_nf((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR64_ACQUIRE(dest, arg) _InterlockedXor64_acq((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR64_RELEASE(dest, arg) _InterlockedXor64_rel((__int64*)(dest), (__int64)(arg)) + +#if defined(BOOST_MSVC) +#pragma intrinsic(_interlockedbittestandset_nf) +#pragma intrinsic(_interlockedbittestandset_acq) +#pragma intrinsic(_interlockedbittestandset_rel) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_BTS_RELAXED(dest, arg) _interlockedbittestandset_nf((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_BTS_ACQUIRE(dest, arg) _interlockedbittestandset_acq((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_BTS_RELEASE(dest, arg) _interlockedbittestandset_rel((long*)(dest), (long)(arg)) + +#if defined(BOOST_MSVC) +#pragma intrinsic(_interlockedbittestandreset_nf) +#pragma intrinsic(_interlockedbittestandreset_acq) +#pragma intrinsic(_interlockedbittestandreset_rel) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_BTR_RELAXED(dest, arg) _interlockedbittestandreset_nf((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_BTR_ACQUIRE(dest, arg) _interlockedbittestandreset_acq((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_BTR_RELEASE(dest, arg) _interlockedbittestandreset_rel((long*)(dest), (long)(arg)) + +#endif // _MSC_VER >= 1700 && defined(_M_ARM) + +#endif // _MSC_VER < 1400 + +#else // defined(_MSC_VER) && _MSC_VER >= 1310 + +#if defined(BOOST_USE_WINDOWS_H) + +#include + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) InterlockedCompareExchange((long*)(dest), (long)(exchange), (long)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) InterlockedExchange((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, addend) InterlockedExchangeAdd((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_INCREMENT(dest) InterlockedIncrement((long*)(dest)) +#define BOOST_ATOMIC_INTERLOCKED_DECREMENT(dest) InterlockedDecrement((long*)(dest)) + +#if defined(_WIN64) + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(dest, exchange, compare) InterlockedCompareExchange64((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(dest, newval) InterlockedExchange64((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(dest, addend) InterlockedExchangeAdd64((__int64*)(dest), (__int64)(addend)) + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) InterlockedCompareExchangePointer((void**)(dest), (void*)(exchange), (void*)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) InterlockedExchangePointer((void**)(dest), (void*)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(dest, byte_offset)) + +#else // defined(_WIN64) + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) ((void*)BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, byte_offset)) + +#endif // defined(_WIN64) + +#else // defined(BOOST_USE_WINDOWS_H) + +#if defined(__MINGW64__) +#define BOOST_ATOMIC_INTERLOCKED_IMPORT +#else +#define BOOST_ATOMIC_INTERLOCKED_IMPORT __declspec(dllimport) +#endif + +namespace boost { +namespace atomics { +namespace detail { + +extern "C" { + +BOOST_ATOMIC_INTERLOCKED_IMPORT long __stdcall InterlockedCompareExchange(long volatile*, long, long); +BOOST_ATOMIC_INTERLOCKED_IMPORT long __stdcall InterlockedExchange(long volatile*, long); +BOOST_ATOMIC_INTERLOCKED_IMPORT long __stdcall InterlockedExchangeAdd(long volatile*, long); +BOOST_ATOMIC_INTERLOCKED_IMPORT long __stdcall InterlockedIncrement(long volatile*, long); +BOOST_ATOMIC_INTERLOCKED_IMPORT long __stdcall InterlockedDecrement(long volatile*, long); + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) boost::atomics::detail::InterlockedCompareExchange((long*)(dest), (long)(exchange), (long)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) boost::atomics::detail::InterlockedExchange((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, addend) boost::atomics::detail::InterlockedExchangeAdd((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_INCREMENT(dest) boost::atomics::detail::InterlockedIncrement((long*)(dest)) +#define BOOST_ATOMIC_INTERLOCKED_DECREMENT(dest) boost::atomics::detail::InterlockedDecrement((long*)(dest)) + +#if defined(_WIN64) + +BOOST_ATOMIC_INTERLOCKED_IMPORT __int64 __stdcall InterlockedCompareExchange64(__int64 volatile*, __int64, __int64); +BOOST_ATOMIC_INTERLOCKED_IMPORT __int64 __stdcall InterlockedExchange64(__int64 volatile*, __int64); +BOOST_ATOMIC_INTERLOCKED_IMPORT __int64 __stdcall InterlockedExchangeAdd64(__int64 volatile*, __int64); + +BOOST_ATOMIC_INTERLOCKED_IMPORT void* __stdcall InterlockedCompareExchangePointer(void* volatile*, void*, void*); +BOOST_ATOMIC_INTERLOCKED_IMPORT void* __stdcall InterlockedExchangePointer(void* volatile*, void*); + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(dest, exchange, compare) boost::atomics::detail::InterlockedCompareExchange64((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(dest, newval) boost::atomics::detail::InterlockedExchange64((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(dest, addend) boost::atomics::detail::InterlockedExchangeAdd64((__int64*)(dest), (__int64)(addend)) + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) boost::atomics::detail::InterlockedCompareExchangePointer((void**)(dest), (void*)(exchange), (void*)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) boost::atomics::detail::InterlockedExchangePointer((void**)(dest), (void*)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(dest, byte_offset)) + +#else // defined(_WIN64) + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) ((void*)BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, byte_offset)) + +#endif // defined(_WIN64) + +} // extern "C" + +} // namespace detail +} // namespace atomics +} // namespace boost + +#undef BOOST_ATOMIC_INTERLOCKED_IMPORT + +#endif // defined(BOOST_USE_WINDOWS_H) + +#endif // defined(_MSC_VER) + +#endif diff --git a/src/boost/boost/atomic/detail/intptr.hpp b/src/boost/boost/atomic/detail/intptr.hpp new file mode 100644 index 000000000..b007988b8 --- /dev/null +++ b/src/boost/boost/atomic/detail/intptr.hpp @@ -0,0 +1,46 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/intptr.hpp + * + * This header defines (u)intptr_t types. + */ + +#ifndef BOOST_ATOMIC_DETAIL_INTPTR_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_INTPTR_HPP_INCLUDED_ + +#include +#if defined(BOOST_HAS_INTPTR_T) +#include +#endif +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_HAS_INTPTR_T) +using boost::uintptr_t; +using boost::intptr_t; +#else +typedef std::size_t uintptr_t; +typedef std::ptrdiff_t intptr_t; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_INTPTR_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/link.hpp b/src/boost/boost/atomic/detail/link.hpp new file mode 100644 index 000000000..8a733788b --- /dev/null +++ b/src/boost/boost/atomic/detail/link.hpp @@ -0,0 +1,58 @@ +/* + * 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) + * + * Copyright (c) 2012 Hartmut Kaiser + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/config.hpp + * + * This header defines macros for linking with compiled library of Boost.Atomic + */ + +#ifndef BOOST_ATOMIC_DETAIL_LINK_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_LINK_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +/////////////////////////////////////////////////////////////////////////////// +// Set up dll import/export options +#if (defined(BOOST_ATOMIC_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && \ + !defined(BOOST_ATOMIC_STATIC_LINK) + +#if defined(BOOST_ATOMIC_SOURCE) +#define BOOST_ATOMIC_DECL BOOST_SYMBOL_EXPORT +#define BOOST_ATOMIC_BUILD_DLL +#else +#define BOOST_ATOMIC_DECL BOOST_SYMBOL_IMPORT +#endif + +#endif // building a shared library + +#ifndef BOOST_ATOMIC_DECL +#define BOOST_ATOMIC_DECL +#endif + +/////////////////////////////////////////////////////////////////////////////// +// Auto library naming +#if !defined(BOOST_ATOMIC_SOURCE) && !defined(BOOST_ALL_NO_LIB) && \ + !defined(BOOST_ATOMIC_NO_LIB) + +#define BOOST_LIB_NAME boost_atomic + +// tell the auto-link code to select a dll when required: +#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_ATOMIC_DYN_LINK) +#define BOOST_DYN_LINK +#endif + +#include + +#endif // auto-linking disabled + +#endif diff --git a/src/boost/boost/atomic/detail/lock_pool.hpp b/src/boost/boost/atomic/detail/lock_pool.hpp new file mode 100644 index 000000000..65d4217e3 --- /dev/null +++ b/src/boost/boost/atomic/detail/lock_pool.hpp @@ -0,0 +1,151 @@ +/* + * 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) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013-2014, 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/lock_pool.hpp + * + * This header contains declaration of the lock pool used to emulate atomic ops. + */ + +#ifndef BOOST_ATOMIC_DETAIL_LOCK_POOL_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_LOCK_POOL_HPP_INCLUDED_ + +#include +#include +#include +#include +#if defined(BOOST_WINDOWS) +#include +#elif defined(BOOST_HAS_NANOSLEEP) +#include +#else +#include +#endif +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +BOOST_FORCEINLINE void wait_some() BOOST_NOEXCEPT +{ +#if defined(BOOST_WINDOWS) + boost::winapi::SwitchToThread(); +#elif defined(BOOST_HAS_NANOSLEEP) + // Do not use sched_yield or pthread_yield as at least on Linux it doesn't block the thread if there are no other + // pending threads on the current CPU. Proper sleeping is guaranteed to block the thread, which allows other threads + // to potentially migrate to this CPU and complete the tasks we're waiting for. + struct ::timespec ts = {}; + ts.tv_sec = 0; + ts.tv_nsec = 1000; + ::nanosleep(&ts, NULL); +#else + ::usleep(1); +#endif +} + +namespace lock_pool { + +BOOST_ATOMIC_DECL void* short_lock(atomics::detail::uintptr_t h) BOOST_NOEXCEPT; +BOOST_ATOMIC_DECL void* long_lock(atomics::detail::uintptr_t h) BOOST_NOEXCEPT; +BOOST_ATOMIC_DECL void unlock(void* ls) BOOST_NOEXCEPT; + +BOOST_ATOMIC_DECL void* allocate_wait_state(void* ls, const volatile void* addr) BOOST_NOEXCEPT; +BOOST_ATOMIC_DECL void free_wait_state(void* ls, void* ws) BOOST_NOEXCEPT; +BOOST_ATOMIC_DECL void wait(void* ls, void* ws) BOOST_NOEXCEPT; +BOOST_ATOMIC_DECL void notify_one(void* ls, const volatile void* addr) BOOST_NOEXCEPT; +BOOST_ATOMIC_DECL void notify_all(void* ls, const volatile void* addr) BOOST_NOEXCEPT; + +BOOST_ATOMIC_DECL void thread_fence() BOOST_NOEXCEPT; +BOOST_ATOMIC_DECL void signal_fence() BOOST_NOEXCEPT; + +template< std::size_t Alignment > +BOOST_FORCEINLINE atomics::detail::uintptr_t hash_ptr(const volatile void* addr) BOOST_NOEXCEPT +{ + atomics::detail::uintptr_t ptr = (atomics::detail::uintptr_t)addr; + atomics::detail::uintptr_t h = ptr / Alignment; + + // Since many malloc/new implementations return pointers with higher alignment + // than indicated by Alignment, it makes sense to mix higher bits + // into the lower ones. On 64-bit platforms, malloc typically aligns to 16 bytes, + // on 32-bit - to 8 bytes. + BOOST_CONSTEXPR_OR_CONST std::size_t malloc_alignment = sizeof(void*) >= 8u ? 16u : 8u; + BOOST_IF_CONSTEXPR (Alignment != malloc_alignment) + h ^= ptr / malloc_alignment; + + return h; +} + +template< std::size_t Alignment, bool LongLock = false > +class scoped_lock +{ +private: + void* m_lock; + +public: + explicit scoped_lock(const volatile void* addr) BOOST_NOEXCEPT + { + atomics::detail::uintptr_t h = lock_pool::hash_ptr< Alignment >(addr); + BOOST_IF_CONSTEXPR (!LongLock) + m_lock = lock_pool::short_lock(h); + else + m_lock = lock_pool::long_lock(h); + } + ~scoped_lock() BOOST_NOEXCEPT + { + lock_pool::unlock(m_lock); + } + + void* get_lock_state() const BOOST_NOEXCEPT + { + return m_lock; + } + + BOOST_DELETED_FUNCTION(scoped_lock(scoped_lock const&)) + BOOST_DELETED_FUNCTION(scoped_lock& operator=(scoped_lock const&)) +}; + +template< std::size_t Alignment > +class scoped_wait_state : + public scoped_lock< Alignment, true > +{ +private: + void* m_wait_state; + +public: + explicit scoped_wait_state(const volatile void* addr) BOOST_NOEXCEPT : + scoped_lock< Alignment, true >(addr) + { + m_wait_state = lock_pool::allocate_wait_state(this->get_lock_state(), addr); + } + ~scoped_wait_state() BOOST_NOEXCEPT + { + lock_pool::free_wait_state(this->get_lock_state(), m_wait_state); + } + + void wait() BOOST_NOEXCEPT + { + lock_pool::wait(this->get_lock_state(), m_wait_state); + } + + BOOST_DELETED_FUNCTION(scoped_wait_state(scoped_wait_state const&)) + BOOST_DELETED_FUNCTION(scoped_wait_state& operator=(scoped_wait_state const&)) +}; + +} // namespace lock_pool +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_LOCK_POOL_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/memory_order_utils.hpp b/src/boost/boost/atomic/detail/memory_order_utils.hpp new file mode 100644 index 000000000..335a84f6b --- /dev/null +++ b/src/boost/boost/atomic/detail/memory_order_utils.hpp @@ -0,0 +1,47 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/memory_order_utils.hpp + * + * This header contains utilities related to memory order constants. + */ + +#ifndef BOOST_ATOMIC_DETAIL_MEMORY_ORDER_UTILS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_MEMORY_ORDER_UTILS_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +BOOST_FORCEINLINE BOOST_CONSTEXPR memory_order deduce_failure_order(memory_order order) BOOST_NOEXCEPT +{ + return order == memory_order_acq_rel ? memory_order_acquire : (order == memory_order_release ? memory_order_relaxed : order); +} + +BOOST_FORCEINLINE BOOST_CONSTEXPR bool cas_failure_order_must_not_be_stronger_than_success_order(memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT +{ + // 15 == (memory_order_seq_cst | memory_order_consume), see memory_order.hpp + // Given the enum values we can test the strength of memory order requirements with this single condition. + return (static_cast< unsigned int >(failure_order) & 15u) <= (static_cast< unsigned int >(success_order) & 15u); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_MEMORY_ORDER_UTILS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/once_flag.hpp b/src/boost/boost/atomic/detail/once_flag.hpp new file mode 100644 index 000000000..237777fe6 --- /dev/null +++ b/src/boost/boost/atomic/detail/once_flag.hpp @@ -0,0 +1,43 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/once_flag.hpp + * + * This header declares \c once_flag structure for controlling one time initialization + */ + +#ifndef BOOST_ATOMIC_DETAIL_ONCE_FLAG_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_ONCE_FLAG_HPP_INCLUDED_ + +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +typedef atomics::detail::core_operations< 1u, false, false > once_flag_operations; + +struct once_flag +{ + BOOST_ATOMIC_DETAIL_ALIGNED_VAR(once_flag_operations::storage_alignment, once_flag_operations::storage_type, m_flag); +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_ONCE_FLAG_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/ops_gcc_aarch32_common.hpp b/src/boost/boost/atomic/detail/ops_gcc_aarch32_common.hpp new file mode 100644 index 000000000..308322b2d --- /dev/null +++ b/src/boost/boost/atomic/detail/ops_gcc_aarch32_common.hpp @@ -0,0 +1,53 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_aarch32_common.hpp + * + * This header contains basic utilities for gcc AArch32 backend. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_AARCH32_COMMON_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_AARCH32_COMMON_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(mo)\ + switch (mo)\ + {\ + case memory_order_relaxed:\ + BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN("r", "r")\ + break;\ + \ + case memory_order_consume:\ + case memory_order_acquire:\ + BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN("a", "r")\ + break;\ + \ + case memory_order_release:\ + BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN("r", "l")\ + break;\ + \ + default:\ + BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN("a", "l")\ + break;\ + } + +#if defined(BOOST_ATOMIC_DETAIL_AARCH32_LITTLE_ENDIAN) +#define BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(arg) "%" BOOST_STRINGIZE(arg) +#define BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(arg) "%H" BOOST_STRINGIZE(arg) +#else +#define BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_LO(arg) "%H" BOOST_STRINGIZE(arg) +#define BOOST_ATOMIC_DETAIL_AARCH32_ASM_ARG_HI(arg) "%" BOOST_STRINGIZE(arg) +#endif + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_AARCH32_COMMON_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/ops_gcc_aarch64_common.hpp b/src/boost/boost/atomic/detail/ops_gcc_aarch64_common.hpp new file mode 100644 index 000000000..8aebe1825 --- /dev/null +++ b/src/boost/boost/atomic/detail/ops_gcc_aarch64_common.hpp @@ -0,0 +1,53 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_aarch64_common.hpp + * + * This header contains basic utilities for gcc AArch64 backend. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_AARCH64_COMMON_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_AARCH64_COMMON_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(mo)\ + switch (mo)\ + {\ + case memory_order_relaxed:\ + BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN("", "")\ + break;\ + \ + case memory_order_consume:\ + case memory_order_acquire:\ + BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN("a", "")\ + break;\ + \ + case memory_order_release:\ + BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN("", "l")\ + break;\ + \ + default:\ + BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN("a", "l")\ + break;\ + } + +#if defined(BOOST_ATOMIC_DETAIL_AARCH64_LITTLE_ENDIAN) +#define BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "0" +#define BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "1" +#else +#define BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "1" +#define BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "0" +#endif + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_AARCH64_COMMON_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/ops_gcc_arm_common.hpp b/src/boost/boost/atomic/detail/ops_gcc_arm_common.hpp new file mode 100644 index 000000000..aceb3d6f6 --- /dev/null +++ b/src/boost/boost/atomic/detail/ops_gcc_arm_common.hpp @@ -0,0 +1,63 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_arm_common.hpp + * + * This header contains basic utilities for gcc ARM backend. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_COMMON_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_COMMON_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +struct core_arch_operations_gcc_arm_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + fence_arch_operations::hardware_full_fence(); + } + + static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + fence_arch_operations::hardware_full_fence(); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + fence_arch_operations::hardware_full_fence(); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_COMMON_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/ops_gcc_ppc_common.hpp b/src/boost/boost/atomic/detail/ops_gcc_ppc_common.hpp new file mode 100644 index 000000000..bd8248324 --- /dev/null +++ b/src/boost/boost/atomic/detail/ops_gcc_ppc_common.hpp @@ -0,0 +1,73 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_ppc_common.hpp + * + * This header contains basic utilities for gcc PowerPC backend. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_PPC_COMMON_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_PPC_COMMON_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +// The implementation below uses information from this document: +// http://www.rdrop.com/users/paulmck/scalability/paper/N2745r.2010.02.19a.html + +// A note about memory_order_consume. Technically, this architecture allows to avoid +// unnecessary memory barrier after consume load since it supports data dependency ordering. +// However, some compiler optimizations may break a seemingly valid code relying on data +// dependency tracking by injecting bogus branches to aid out of order execution. +// This may happen not only in Boost.Atomic code but also in user's code, which we have no +// control of. See this thread: http://lists.boost.org/Archives/boost/2014/06/213890.php. +// For this reason we promote memory_order_consume to memory_order_acquire. + +struct core_arch_operations_gcc_ppc_base +{ + static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false; + static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true; + + static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT + { +#if defined(__powerpc64__) || defined(__PPC64__) + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("sync" ::: "memory"); + else if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + __asm__ __volatile__ ("lwsync" ::: "memory"); +#else + if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u) + __asm__ __volatile__ ("sync" ::: "memory"); +#endif + } + + static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT + { + if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u) + __asm__ __volatile__ ("isync" ::: "memory"); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_PPC_COMMON_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/ops_msvc_common.hpp b/src/boost/boost/atomic/detail/ops_msvc_common.hpp new file mode 100644 index 000000000..f7ff00cc6 --- /dev/null +++ b/src/boost/boost/atomic/detail/ops_msvc_common.hpp @@ -0,0 +1,43 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014, 2019 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_msvc_common.hpp + * + * This header contains common tools for MSVC implementation of the atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_MSVC_COMMON_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_MSVC_COMMON_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// Define compiler barriers +#if defined(__INTEL_COMPILER) +#define BOOST_ATOMIC_DETAIL_COMPILER_BARRIER() __memory_barrier() +#elif defined(__clang__) +#define BOOST_ATOMIC_DETAIL_COMPILER_BARRIER() __atomic_signal_fence(__ATOMIC_SEQ_CST) +#elif defined(_MSC_VER) && !defined(_WIN32_WCE) +extern "C" void _ReadWriteBarrier(void); +#pragma intrinsic(_ReadWriteBarrier) +#define BOOST_ATOMIC_DETAIL_COMPILER_BARRIER() _ReadWriteBarrier() +#endif + +#ifndef BOOST_ATOMIC_DETAIL_COMPILER_BARRIER +#define BOOST_ATOMIC_DETAIL_COMPILER_BARRIER() +#endif + +#include + +#endif // BOOST_ATOMIC_DETAIL_OPS_MSVC_COMMON_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/pause.hpp b/src/boost/boost/atomic/detail/pause.hpp new file mode 100644 index 000000000..efd037e45 --- /dev/null +++ b/src/boost/boost/atomic/detail/pause.hpp @@ -0,0 +1,61 @@ +/* + * 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) + * + * (C) Copyright 2013 Tim Blechmann + * (C) Copyright 2013, 2020 Andrey Semashev + */ + +#ifndef BOOST_ATOMIC_DETAIL_PAUSE_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_PAUSE_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(_MSC_VER) +#if defined(_M_AMD64) || defined(_M_IX86) +extern "C" void _mm_pause(void); +#if defined(BOOST_MSVC) +#pragma intrinsic(_mm_pause) +#endif +#elif defined(_M_ARM64) || defined(_M_ARM) +extern "C" void __yield(void); +#if defined(BOOST_MSVC) +#pragma intrinsic(__yield) +#endif +#endif +#endif + +namespace boost { +namespace atomics { +namespace detail { + +BOOST_FORCEINLINE void pause() BOOST_NOEXCEPT +{ +#if defined(_MSC_VER) +#if defined(_M_AMD64) || defined(_M_IX86) + _mm_pause(); +#elif defined(_M_ARM64) || defined(_M_ARM) + __yield(); +#endif +#elif defined(__GNUC__) +#if defined(__i386__) || defined(__x86_64__) + __asm__ __volatile__("pause;" : : : "memory"); +#elif (defined(__ARM_ARCH) && __ARM_ARCH >= 8) || defined(__ARM_ARCH_8A__) || defined(__aarch64__) + __asm__ __volatile__("yield;" : : : "memory"); +#endif +#endif +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_PAUSE_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/platform.hpp b/src/boost/boost/atomic/detail/platform.hpp new file mode 100644 index 000000000..eb32d509b --- /dev/null +++ b/src/boost/boost/atomic/detail/platform.hpp @@ -0,0 +1,209 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2014-2018, 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/platform.hpp + * + * This header defines macros for the target platform detection + */ + +#ifndef BOOST_ATOMIC_DETAIL_PLATFORM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_PLATFORM_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__GNUC__) && defined(__arm__) + +// Newer gcc versions define __ARM_ARCH. Older ones don't, so we have to deduce ARM arch version from a bunch of version-specific macros. +#if defined(__ARM_ARCH) +#define BOOST_ATOMIC_DETAIL_ARM_ARCH __ARM_ARCH +#elif defined(__ARM_ARCH_8A__) +#define BOOST_ATOMIC_DETAIL_ARM_ARCH 8 +#elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) ||\ + defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) ||\ + defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7S__) +#define BOOST_ATOMIC_DETAIL_ARM_ARCH 7 +#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) ||\ + defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) ||\ + defined(__ARM_ARCH_6ZK__) +#define BOOST_ATOMIC_DETAIL_ARM_ARCH 6 +#else +// We are not interested in older versions - they don't support atomic ops +#define BOOST_ATOMIC_DETAIL_ARM_ARCH 0 +#endif + +#endif // defined(__GNUC__) && defined(__arm__) + +#if !defined(BOOST_ATOMIC_FORCE_FALLBACK) + +// Determine the target platform. +// The target platform describes the compiler and target architecture. It can be used by more generic backends, such as the ones +// based on compiler intrinsics, to implement specialized operations in a non-generic way. + +#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) + +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND gcc_x86 +#define BOOST_ATOMIC_DETAIL_EXTRA_BACKEND gcc_x86 + +#elif defined(__GNUC__) && defined(__aarch64__) + +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND gcc_aarch64 +#define BOOST_ATOMIC_DETAIL_EXTRA_BACKEND gcc_aarch64 + +#elif defined(__GNUC__) && defined(__arm__) && (BOOST_ATOMIC_DETAIL_ARM_ARCH >= 6) + +#if (BOOST_ATOMIC_DETAIL_ARM_ARCH >= 8) +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND gcc_aarch32 +#define BOOST_ATOMIC_DETAIL_EXTRA_BACKEND gcc_aarch32 +#else +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND gcc_arm +#define BOOST_ATOMIC_DETAIL_EXTRA_BACKEND gcc_arm +#endif + +#elif defined(__GNUC__) && (defined(__POWERPC__) || defined(__PPC__)) + +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND gcc_ppc +#define BOOST_ATOMIC_DETAIL_EXTRA_BACKEND gcc_ppc + +#elif (defined(__GNUC__) || defined(__SUNPRO_CC)) && (defined(__sparcv8plus) || defined(__sparc_v9__)) + +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND gcc_sparc + +#elif defined(__GNUC__) && defined(__alpha__) + +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND gcc_alpha + +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) + +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND msvc_x86 + +#elif defined(_MSC_VER) && _MSC_VER >= 1700 && (defined(_M_ARM) || defined(_M_ARM64)) + +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND msvc_arm + +#endif + +// Compiler-based backends + +// IBM XL C++ Compiler has to be checked before GCC/Clang as it pretends to be one but does not support __atomic* intrinsics. +// It does support GCC inline assembler though. +#if !(defined(__ibmxl__) || defined(__IBMCPP__)) &&\ + ((defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 407)) ||\ + (defined(BOOST_CLANG) && ((__clang_major__ * 100 + __clang_minor__) >= 302))) &&\ + (\ + (__GCC_ATOMIC_BOOL_LOCK_FREE == 2) ||\ + (__GCC_ATOMIC_CHAR_LOCK_FREE == 2) ||\ + (__GCC_ATOMIC_SHORT_LOCK_FREE == 2) ||\ + (__GCC_ATOMIC_INT_LOCK_FREE == 2) ||\ + (__GCC_ATOMIC_LONG_LOCK_FREE == 2) ||\ + (__GCC_ATOMIC_LLONG_LOCK_FREE == 2)\ + ) + +#define BOOST_ATOMIC_DETAIL_CORE_BACKEND gcc_atomic + +// GCC __sync* instrinsics backend is less efficient than asm-based backends, so use it only when nothing better is available. +#elif !defined(BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND) &&\ + defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 401) &&\ + (\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1) ||\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) ||\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) ||\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) ||\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16)\ + ) + +#define BOOST_ATOMIC_DETAIL_CORE_BACKEND gcc_sync + +#endif + +// OS-based backends + +#if !defined(BOOST_ATOMIC_DETAIL_CORE_BACKEND) && !defined(BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND) + +#if defined(__linux__) && defined(__arm__) + +#define BOOST_ATOMIC_DETAIL_CORE_BACKEND linux_arm + +#elif defined(BOOST_WINDOWS) || defined(_WIN32_CE) + +#define BOOST_ATOMIC_DETAIL_CORE_BACKEND windows + +#endif + +#endif // !defined(BOOST_ATOMIC_DETAIL_CORE_BACKEND) + +// Waiting and notifying operations backends +#if defined(BOOST_WINDOWS) + +#define BOOST_ATOMIC_DETAIL_WAIT_BACKEND windows + +#else // defined(BOOST_WINDOWS) + +#include + +#if defined(BOOST_ATOMIC_DETAIL_HAS_FUTEX) +#define BOOST_ATOMIC_DETAIL_WAIT_BACKEND futex +#elif defined(__APPLE__) +#if !defined(BOOST_ATOMIC_NO_DARWIN_ULOCK) && (\ + (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 100000) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ >= 100000) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ >= 30000)) +// Darwin 16+ supports ulock API +#define BOOST_ATOMIC_DETAIL_WAIT_BACKEND darwin_ulock +#endif // __ENVIRONMENT_*_VERSION_MIN_REQUIRED__ +#elif defined(__FreeBSD__) +#include +// FreeBSD prior to 7.0 had _umtx_op with a different signature +#if defined(__FreeBSD_version) && __FreeBSD_version >= 700000 +#define BOOST_ATOMIC_DETAIL_WAIT_BACKEND freebsd_umtx +#endif // defined(__FreeBSD_version) && __FreeBSD_version >= 700000 +#elif defined(__DragonFly__) +#define BOOST_ATOMIC_DETAIL_WAIT_BACKEND dragonfly_umtx +#endif + +#endif // defined(BOOST_WINDOWS) + +#endif // !defined(BOOST_ATOMIC_FORCE_FALLBACK) + +#if !defined(BOOST_ATOMIC_DETAIL_FP_BACKEND) +#define BOOST_ATOMIC_DETAIL_FP_BACKEND generic +#define BOOST_ATOMIC_DETAIL_FP_BACKEND_GENERIC +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_EXTRA_BACKEND) +#define BOOST_ATOMIC_DETAIL_EXTRA_BACKEND generic +#define BOOST_ATOMIC_DETAIL_EXTRA_BACKEND_GENERIC +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_EXTRA_FP_BACKEND) +#define BOOST_ATOMIC_DETAIL_EXTRA_FP_BACKEND generic +#define BOOST_ATOMIC_DETAIL_EXTRA_FP_BACKEND_GENERIC +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_WAIT_BACKEND) +#define BOOST_ATOMIC_DETAIL_WAIT_BACKEND generic +#define BOOST_ATOMIC_DETAIL_WAIT_BACKEND_GENERIC +#endif + +#if defined(BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND) +#define BOOST_ATOMIC_DETAIL_CORE_ARCH_BACKEND_HEADER(prefix) +#endif +#if defined(BOOST_ATOMIC_DETAIL_CORE_BACKEND) +#define BOOST_ATOMIC_DETAIL_CORE_BACKEND_HEADER(prefix) +#endif +#define BOOST_ATOMIC_DETAIL_FP_BACKEND_HEADER(prefix) +#define BOOST_ATOMIC_DETAIL_EXTRA_BACKEND_HEADER(prefix) +#define BOOST_ATOMIC_DETAIL_EXTRA_FP_BACKEND_HEADER(prefix) +#define BOOST_ATOMIC_DETAIL_WAIT_BACKEND_HEADER(prefix) + +#endif // BOOST_ATOMIC_DETAIL_PLATFORM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/storage_traits.hpp b/src/boost/boost/atomic/detail/storage_traits.hpp new file mode 100644 index 000000000..7d1286994 --- /dev/null +++ b/src/boost/boost/atomic/detail/storage_traits.hpp @@ -0,0 +1,187 @@ +/* + * 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) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2013 - 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/storage_traits.hpp + * + * This header defines underlying types used as storage + */ + +#ifndef BOOST_ATOMIC_DETAIL_STORAGE_TRAITS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_STORAGE_TRAITS_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename T > +BOOST_FORCEINLINE void non_atomic_load(T const volatile& from, T& to) BOOST_NOEXCEPT +{ + to = from; +} + +template< std::size_t Size, std::size_t Alignment = 1u > +struct BOOST_ATOMIC_DETAIL_MAY_ALIAS buffer_storage +{ + typedef unsigned char data_type[Size]; + BOOST_ATOMIC_DETAIL_ALIGNED_VAR_TPL(Alignment, data_type, data); + + BOOST_FORCEINLINE bool operator! () const BOOST_NOEXCEPT + { + return (data[0] == 0u && BOOST_ATOMIC_DETAIL_MEMCMP(data, data + 1, Size - 1u) == 0); + } + + BOOST_FORCEINLINE bool operator== (buffer_storage const& that) const BOOST_NOEXCEPT + { + return BOOST_ATOMIC_DETAIL_MEMCMP(data, that.data, Size) == 0; + } + + BOOST_FORCEINLINE bool operator!= (buffer_storage const& that) const BOOST_NOEXCEPT + { + return BOOST_ATOMIC_DETAIL_MEMCMP(data, that.data, Size) != 0; + } +}; + +template< std::size_t Size, std::size_t Alignment > +BOOST_FORCEINLINE void non_atomic_load(buffer_storage< Size, Alignment > const volatile& from, buffer_storage< Size, Alignment >& to) BOOST_NOEXCEPT +{ + BOOST_ATOMIC_DETAIL_MEMCPY(to.data, const_cast< unsigned char const* >(from.data), Size); +} + +template< std::size_t Size > +struct storage_traits +{ + typedef buffer_storage< Size, 1u > type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t native_alignment = 1u; + + // By default, prefer the maximum supported alignment + static BOOST_CONSTEXPR_OR_CONST std::size_t alignment = 16u; +}; + +template< > +struct storage_traits< 1u > +{ + typedef boost::uint8_t BOOST_ATOMIC_DETAIL_MAY_ALIAS type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t native_alignment = 1u; + static BOOST_CONSTEXPR_OR_CONST std::size_t alignment = 1u; +}; + +template< > +struct storage_traits< 2u > +{ + typedef boost::uint16_t BOOST_ATOMIC_DETAIL_MAY_ALIAS type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t native_alignment = atomics::detail::alignment_of< boost::uint16_t >::value; + static BOOST_CONSTEXPR_OR_CONST std::size_t alignment = 2u; +}; + +template< > +struct storage_traits< 4u > +{ + typedef boost::uint32_t BOOST_ATOMIC_DETAIL_MAY_ALIAS type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t native_alignment = atomics::detail::alignment_of< boost::uint32_t >::value; + static BOOST_CONSTEXPR_OR_CONST std::size_t alignment = 4u; +}; + +template< > +struct storage_traits< 8u > +{ + typedef boost::uint64_t BOOST_ATOMIC_DETAIL_MAY_ALIAS type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t native_alignment = atomics::detail::alignment_of< boost::uint64_t >::value; + static BOOST_CONSTEXPR_OR_CONST std::size_t alignment = 8u; +}; + +#if defined(BOOST_HAS_INT128) + +template< > +struct storage_traits< 16u > +{ + typedef boost::uint128_type BOOST_ATOMIC_DETAIL_MAY_ALIAS type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t native_alignment = atomics::detail::alignment_of< boost::uint128_type >::value; + static BOOST_CONSTEXPR_OR_CONST std::size_t alignment = 16u; +}; + +#else + +#if (__cplusplus >= 201103L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L)) &&\ + (!defined(BOOST_GCC_VERSION) || BOOST_GCC_VERSION >= 40900) +using std::max_align_t; +#else + +#if defined(BOOST_MSVC) +#pragma warning(push) +// alignment is sensitive to packing +#pragma warning(disable: 4121) +#endif + +class max_align_helper; +union max_align_t +{ + void* ptr; + void (*fun_ptr)(); + int max_align_helper::*mem_ptr; + void (max_align_helper::*mem_fun_ptr)(); + long long ll; + long double ld; +#if defined(BOOST_HAS_INT128) + boost::int128_type i128; +#endif +#if defined(BOOST_HAS_FLOAT128) + boost::float128_type f128; +#endif +}; + +#if defined(BOOST_MSVC) +#pragma warning(pop) +#endif + +#endif // __cplusplus >= 201103L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L) + +template< > +struct storage_traits< 16u > +{ + typedef buffer_storage< 16u, atomics::detail::alignment_of< atomics::detail::max_align_t >::value > type; + + static BOOST_CONSTEXPR_OR_CONST std::size_t native_alignment = atomics::detail::alignment_of< atomics::detail::max_align_t >::value; + static BOOST_CONSTEXPR_OR_CONST std::size_t alignment = 16u; +}; + +#endif + +template< typename T > +struct storage_size_of +{ + static BOOST_CONSTEXPR_OR_CONST std::size_t size = sizeof(T); + static BOOST_CONSTEXPR_OR_CONST std::size_t value = (size == 3u ? 4u : (size >= 5u && size <= 7u ? 8u : (size >= 9u && size <= 15u ? 16u : size))); +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_STORAGE_TRAITS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/string_ops.hpp b/src/boost/boost/atomic/detail/string_ops.hpp new file mode 100644 index 000000000..562ca846a --- /dev/null +++ b/src/boost/boost/atomic/detail/string_ops.hpp @@ -0,0 +1,61 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/string_ops.hpp + * + * This header defines string operations for Boost.Atomic + */ + +#ifndef BOOST_ATOMIC_DETAIL_STRING_OPS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_STRING_OPS_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__has_builtin) +#if __has_builtin(__builtin_memcpy) +#define BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMCPY +#endif +#if __has_builtin(__builtin_memcmp) +#define BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMCMP +#endif +#if __has_builtin(__builtin_memset) +#define BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMSET +#endif +#elif defined(BOOST_GCC) +#define BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMCPY +#define BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMCMP +#define BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMSET +#endif + +#if defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMCPY) +#define BOOST_ATOMIC_DETAIL_MEMCPY __builtin_memcpy +#else +#define BOOST_ATOMIC_DETAIL_MEMCPY std::memcpy +#endif + +#if defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMCMP) +#define BOOST_ATOMIC_DETAIL_MEMCMP __builtin_memcmp +#else +#define BOOST_ATOMIC_DETAIL_MEMCMP std::memcmp +#endif + +#if defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMSET) +#define BOOST_ATOMIC_DETAIL_MEMSET __builtin_memset +#else +#define BOOST_ATOMIC_DETAIL_MEMSET std::memset +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMCPY) || !defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMCMP) || !defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_MEMSET) +#include +#endif + +#endif // BOOST_ATOMIC_DETAIL_STRING_OPS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/alignment_of.hpp b/src/boost/boost/atomic/detail/type_traits/alignment_of.hpp new file mode 100644 index 000000000..61c4f323f --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/alignment_of.hpp @@ -0,0 +1,51 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/alignment_of.hpp + * + * This header defines \c alignment_of type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_ALIGNMENT_OF_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_ALIGNMENT_OF_HPP_INCLUDED_ + +#include + +#if defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) ||\ + (defined(BOOST_GCC) && BOOST_GCC < 80100) ||\ + (defined(BOOST_CLANG) && !defined(__apple_build_version__) && __clang_major__ < 9) ||\ + (defined(BOOST_CLANG) && defined(__apple_build_version__) && __clang_major__ < 10) +// For some compilers std::alignment_of gives the wrong result for 64-bit types on 32-bit targets +#define BOOST_ATOMIC_DETAIL_NO_CXX11_STD_ALIGNMENT_OF +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_STD_ALIGNMENT_OF) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_STD_ALIGNMENT_OF) +using std::alignment_of; +#else +using boost::alignment_of; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_ALIGNMENT_OF_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/conditional.hpp b/src/boost/boost/atomic/detail/type_traits/conditional.hpp new file mode 100644 index 000000000..8002b8805 --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/conditional.hpp @@ -0,0 +1,42 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/conditional.hpp + * + * This header defines \c conditional type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_CONDITIONAL_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_CONDITIONAL_HPP_INCLUDED_ + +#include +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +using std::conditional; +#else +using boost::conditional; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_CONDITIONAL_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/has_unique_object_representations.hpp b/src/boost/boost/atomic/detail/type_traits/has_unique_object_representations.hpp new file mode 100644 index 000000000..c8210379e --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/has_unique_object_representations.hpp @@ -0,0 +1,143 @@ +/* + * 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) + * + * Copyright (c) 2021 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/has_unique_object_representations.hpp + * + * This header defines \c has_unique_object_representations type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_HAS_UNIQUE_OBJECT_REPRESENTATIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_HAS_UNIQUE_OBJECT_REPRESENTATIONS_HPP_INCLUDED_ + +#include +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if (defined(__cpp_lib_has_unique_object_representations) && __cpp_lib_has_unique_object_representations >= 201606) || \ + (defined(_CPPLIB_VER) && _CPPLIB_VER >= 650 && defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION >= 141 && defined(_HAS_CXX17) && _HAS_CXX17 != 0) + +namespace boost { +namespace atomics { +namespace detail { + +using std::has_unique_object_representations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#else // defined(__cpp_lib_has_unique_object_representations) ... + +#if (defined(__GNUC__) && __GNUC__ >= 7) || (defined(BOOST_MSVC) && BOOST_MSVC >= 1929) || \ + (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1900) +#define BOOST_ATOMIC_DETAIL_HAS_UNIQUE_OBJECT_REPRESENTATIONS(x) __has_unique_object_representations(x) +#elif defined(__is_identifier) +#if !__is_identifier(__has_unique_object_representations) +#define BOOST_ATOMIC_DETAIL_HAS_UNIQUE_OBJECT_REPRESENTATIONS(x) __has_unique_object_representations(x) +#endif +#endif + +#if defined(BOOST_ATOMIC_DETAIL_HAS_UNIQUE_OBJECT_REPRESENTATIONS) + +#include +#include + +namespace boost { +namespace atomics { +namespace detail { + +template< typename T > +struct has_unique_object_representations : + public atomics::detail::integral_constant< bool, BOOST_ATOMIC_DETAIL_HAS_UNIQUE_OBJECT_REPRESENTATIONS(T) > +{ +}; + +template< typename T > +struct has_unique_object_representations< T[] > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +template< typename T, std::size_t N > +struct has_unique_object_representations< T[N] > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +template< typename T > +struct has_unique_object_representations< const T > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +template< typename T > +struct has_unique_object_representations< volatile T > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +template< typename T > +struct has_unique_object_representations< const volatile T > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +template< typename T > +struct has_unique_object_representations< const T[] > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +template< typename T > +struct has_unique_object_representations< volatile T[] > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +template< typename T > +struct has_unique_object_representations< const volatile T[] > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +template< typename T, std::size_t N > +struct has_unique_object_representations< const T[N] > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +template< typename T, std::size_t N > +struct has_unique_object_representations< volatile T[N] > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +template< typename T, std::size_t N > +struct has_unique_object_representations< const volatile T[N] > : + public atomics::detail::has_unique_object_representations< T > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#else // defined(BOOST_ATOMIC_DETAIL_HAS_UNIQUE_OBJECT_REPRESENTATIONS) + +#define BOOST_ATOMIC_DETAIL_NO_HAS_UNIQUE_OBJECT_REPRESENTATIONS + +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_UNIQUE_OBJECT_REPRESENTATIONS) + +#endif // defined(__cpp_lib_has_unique_object_representations) ... + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_HAS_UNIQUE_OBJECT_REPRESENTATIONS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/integral_constant.hpp b/src/boost/boost/atomic/detail/type_traits/integral_constant.hpp new file mode 100644 index 000000000..7b04af383 --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/integral_constant.hpp @@ -0,0 +1,46 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/integral_constant.hpp + * + * This header defines \c integral_constant wrapper + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP_INCLUDED_ + +#include +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +using std::integral_constant; +using std::true_type; +using std::false_type; +#else +using boost::integral_constant; +using boost::true_type; +using boost::false_type; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/is_enum.hpp b/src/boost/boost/atomic/detail/type_traits/is_enum.hpp new file mode 100644 index 000000000..f6cda1e1f --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/is_enum.hpp @@ -0,0 +1,42 @@ +/* + * 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) + * + * Copyright (c) 2021 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/is_enum.hpp + * + * This header defines \c is_enum type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_ENUM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_ENUM_HPP_INCLUDED_ + +#include +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +using std::is_enum; +#else +using boost::is_enum; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_ENUM_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/is_floating_point.hpp b/src/boost/boost/atomic/detail/type_traits/is_floating_point.hpp new file mode 100644 index 000000000..717052f49 --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/is_floating_point.hpp @@ -0,0 +1,43 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/is_floating_point.hpp + * + * This header defines \c is_floating_point type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_FLOATING_POINT_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_FLOATING_POINT_HPP_INCLUDED_ + +#include +// Some versions of libstdc++ don't consider __float128 a floating point type. Use Boost.TypeTraits because of that. +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) && !defined(BOOST_HAS_FLOAT128) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) && !defined(BOOST_HAS_FLOAT128) +using std::is_floating_point; +#else +using boost::is_floating_point; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_FLOATING_POINT_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/is_function.hpp b/src/boost/boost/atomic/detail/type_traits/is_function.hpp new file mode 100644 index 000000000..632cf4ce8 --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/is_function.hpp @@ -0,0 +1,42 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/is_function.hpp + * + * This header defines \c is_function type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_FUNCTION_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_FUNCTION_HPP_INCLUDED_ + +#include +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +using std::is_function; +#else +using boost::is_function; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_FUNCTION_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/is_iec559.hpp b/src/boost/boost/atomic/detail/type_traits/is_iec559.hpp new file mode 100644 index 000000000..d94bbcc9f --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/is_iec559.hpp @@ -0,0 +1,47 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/is_iec559.hpp + * + * This header defines \c is_iec559 type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_IEC559_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_IEC559_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename T > +struct is_iec559 +{ + static BOOST_CONSTEXPR_OR_CONST bool value = !!std::numeric_limits< T >::is_iec559; +}; + +#if defined(BOOST_HAS_FLOAT128) +// libstdc++ does not specialize numeric_limits for __float128 +template< > +struct is_iec559< boost::float128_type > +{ + static BOOST_CONSTEXPR_OR_CONST bool value = true; +}; +#endif // defined(BOOST_HAS_FLOAT128) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_IEC559_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/is_integral.hpp b/src/boost/boost/atomic/detail/type_traits/is_integral.hpp new file mode 100644 index 000000000..ff46ee390 --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/is_integral.hpp @@ -0,0 +1,43 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/is_integral.hpp + * + * This header defines \c is_integral type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_INTEGRAL_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_INTEGRAL_HPP_INCLUDED_ + +#include +// Some versions of libstdc++ don't consider __int128 an integral type. Use Boost.TypeTraits because of that. +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) && !defined(BOOST_HAS_INT128) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) && !defined(BOOST_HAS_INT128) +using std::is_integral; +#else +using boost::is_integral; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_INTEGRAL_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp b/src/boost/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp new file mode 100644 index 000000000..053532164 --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp @@ -0,0 +1,46 @@ +/* + * 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) + * + * Copyright (c) 2021 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/is_nothrow_default_constructible.hpp + * + * This header defines \c is_nothrow_default_constructible type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED_ + +#include +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +using std::is_nothrow_default_constructible; +#elif !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) +template< typename T > +using is_nothrow_default_constructible = boost::has_nothrow_constructor< T >; +#else +template< typename T > +struct is_nothrow_default_constructible : public boost::has_nothrow_constructor< T > {}; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/is_signed.hpp b/src/boost/boost/atomic/detail/type_traits/is_signed.hpp new file mode 100644 index 000000000..6a69ad07b --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/is_signed.hpp @@ -0,0 +1,43 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/is_signed.hpp + * + * This header defines \c is_signed type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_SIGNED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_SIGNED_HPP_INCLUDED_ + +#include +// Some versions of libstdc++ don't consider __int128 an integral type. Use Boost.TypeTraits because of that. +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) && !defined(BOOST_HAS_INT128) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) && !defined(BOOST_HAS_INT128) +using std::is_signed; +#else +using boost::is_signed; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_SIGNED_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/is_trivially_copyable.hpp b/src/boost/boost/atomic/detail/type_traits/is_trivially_copyable.hpp new file mode 100644 index 000000000..e32fc7df2 --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/is_trivially_copyable.hpp @@ -0,0 +1,45 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/is_trivially_copyable.hpp + * + * This header defines \c is_trivially_copyable type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_TRIVIALLY_COPYABLE_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_TRIVIALLY_COPYABLE_HPP_INCLUDED_ + +#include +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#include +#else +// For std::is_trivially_copyable we require a genuine support from the compiler. +// Fallback to is_pod or a false negative result in Boost.TypeTraits is not acceptable +// as this trait will be used in a static assert and may deny valid uses of boost::atomic/atomic_ref. +#define BOOST_ATOMIC_DETAIL_NO_CXX11_IS_TRIVIALLY_COPYABLE +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_IS_TRIVIALLY_COPYABLE) + +namespace boost { +namespace atomics { +namespace detail { + +using std::is_trivially_copyable; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_IS_TRIVIALLY_COPYABLE) + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_TRIVIALLY_COPYABLE_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp b/src/boost/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp new file mode 100644 index 000000000..125c003fb --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp @@ -0,0 +1,46 @@ +/* + * 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) + * + * Copyright (c) 2018 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/is_trivially_default_constructible.hpp + * + * This header defines \c is_trivially_default_constructible type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED_ + +#include +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +using std::is_trivially_default_constructible; +#elif !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) +template< typename T > +using is_trivially_default_constructible = boost::has_trivial_constructor< T >; +#else +template< typename T > +struct is_trivially_default_constructible : public boost::has_trivial_constructor< T > {}; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/make_signed.hpp b/src/boost/boost/atomic/detail/type_traits/make_signed.hpp new file mode 100644 index 000000000..8dee8043d --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/make_signed.hpp @@ -0,0 +1,43 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/make_signed.hpp + * + * This header defines \c make_signed type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_MAKE_SIGNED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_MAKE_SIGNED_HPP_INCLUDED_ + +#include +// Some versions of libstdc++ don't consider __int128 an integral type. Use Boost.TypeTraits because of that. +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) && !defined(BOOST_HAS_INT128) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) && !defined(BOOST_HAS_INT128) +using std::make_signed; +#else +using boost::make_signed; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_MAKE_SIGNED_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/make_unsigned.hpp b/src/boost/boost/atomic/detail/type_traits/make_unsigned.hpp new file mode 100644 index 000000000..7ca92bdea --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/make_unsigned.hpp @@ -0,0 +1,43 @@ +/* + * 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) + * + * Copyright (c) 2017 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/make_unsigned.hpp + * + * This header defines \c make_unsigned type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_MAKE_UNSIGNED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_MAKE_UNSIGNED_HPP_INCLUDED_ + +#include +// Some versions of libstdc++ don't consider __int128 an integral type. Use Boost.TypeTraits because of that. +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) && !defined(BOOST_HAS_INT128) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) && !defined(BOOST_HAS_INT128) +using std::make_unsigned; +#else +using boost::make_unsigned; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_MAKE_UNSIGNED_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/type_traits/remove_cv.hpp b/src/boost/boost/atomic/detail/type_traits/remove_cv.hpp new file mode 100644 index 000000000..7e07f02ce --- /dev/null +++ b/src/boost/boost/atomic/detail/type_traits/remove_cv.hpp @@ -0,0 +1,42 @@ +/* + * 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) + * + * Copyright (c) 2023 Andrey Semashev + */ +/*! + * \file atomic/detail/type_traits/remove_cv.hpp + * + * This header defines \c remove_cv type trait + */ + +#ifndef BOOST_ATOMIC_DETAIL_TYPE_TRAITS_REMOVE_CV_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_TYPE_TRAITS_REMOVE_CV_HPP_INCLUDED_ + +#include +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +#include +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS) +using std::remove_cv; +#else +using boost::remove_cv; +#endif + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_TYPE_TRAITS_REMOVE_CV_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_capabilities.hpp b/src/boost/boost/atomic/detail/wait_capabilities.hpp new file mode 100644 index 000000000..e366257df --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_capabilities.hpp @@ -0,0 +1,363 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_capabilities.hpp + * + * This header defines waiting/notifying operations capabilities macros. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_CAPABILITIES_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_CAPABILITIES_HPP_INCLUDED_ + +#include +#include +#include +#if !defined(BOOST_ATOMIC_NO_FLOATING_POINT) +#include +#endif + +#if !defined(BOOST_ATOMIC_EMULATED) && !defined(BOOST_ATOMIC_DETAIL_WAIT_BACKEND_GENERIC) +#include BOOST_ATOMIC_DETAIL_WAIT_BACKEND_HEADER(boost/atomic/detail/wait_caps_) +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY 0 +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT8_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_INT8_IPC_WAIT_NOTIFY 0 +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY 0 +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY 0 +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY 0 +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY 0 +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY 0 +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY 0 +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT128_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_INT128_WAIT_NOTIFY 0 +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT128_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_INT128_IPC_WAIT_NOTIFY 0 +#endif + + +#ifndef BOOST_ATOMIC_HAS_NATIVE_CHAR_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_CHAR_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_CHAR_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_CHAR_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_IPC_WAIT_NOTIFY +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_CHAR8_T_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_CHAR8_T_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_CHAR8_T_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_CHAR8_T_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_IPC_WAIT_NOTIFY +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_CHAR16_T_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_CHAR16_T_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_CHAR16_T_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_CHAR16_T_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_CHAR32_T_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_CHAR32_T_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_CHAR32_T_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_CHAR32_T_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_WAIT_NOTIFY +#if BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 1 +#define BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 2 +#define BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 4 +#define BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 8 +#define BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_WAIT_NOTIFY 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_IPC_WAIT_NOTIFY +#if BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 1 +#define BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 2 +#define BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 4 +#define BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 8 +#define BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_WCHAR_T_IPC_WAIT_NOTIFY 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_SHORT_WAIT_NOTIFY +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 1 +#define BOOST_ATOMIC_HAS_NATIVE_SHORT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 2 +#define BOOST_ATOMIC_HAS_NATIVE_SHORT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 4 +#define BOOST_ATOMIC_HAS_NATIVE_SHORT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 8 +#define BOOST_ATOMIC_HAS_NATIVE_SHORT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_SHORT_WAIT_NOTIFY 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_SHORT_IPC_WAIT_NOTIFY +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 1 +#define BOOST_ATOMIC_HAS_NATIVE_SHORT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 2 +#define BOOST_ATOMIC_HAS_NATIVE_SHORT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 4 +#define BOOST_ATOMIC_HAS_NATIVE_SHORT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 8 +#define BOOST_ATOMIC_HAS_NATIVE_SHORT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_SHORT_IPC_WAIT_NOTIFY 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT_WAIT_NOTIFY +#if BOOST_ATOMIC_DETAIL_SIZEOF_INT == 1 +#define BOOST_ATOMIC_HAS_NATIVE_INT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 2 +#define BOOST_ATOMIC_HAS_NATIVE_INT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 4 +#define BOOST_ATOMIC_HAS_NATIVE_INT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 8 +#define BOOST_ATOMIC_HAS_NATIVE_INT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_INT_WAIT_NOTIFY 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_INT_IPC_WAIT_NOTIFY +#if BOOST_ATOMIC_DETAIL_SIZEOF_INT == 1 +#define BOOST_ATOMIC_HAS_NATIVE_INT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 2 +#define BOOST_ATOMIC_HAS_NATIVE_INT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 4 +#define BOOST_ATOMIC_HAS_NATIVE_INT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 8 +#define BOOST_ATOMIC_HAS_NATIVE_INT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_INT_IPC_WAIT_NOTIFY 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_LONG_WAIT_NOTIFY +#if BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 1 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 2 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 4 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 8 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_LONG_WAIT_NOTIFY 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_LONG_IPC_WAIT_NOTIFY +#if BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 1 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 2 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 4 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 8 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_LONG_IPC_WAIT_NOTIFY 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_LLONG_WAIT_NOTIFY +#if BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 1 +#define BOOST_ATOMIC_HAS_NATIVE_LLONG_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 2 +#define BOOST_ATOMIC_HAS_NATIVE_LLONG_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 4 +#define BOOST_ATOMIC_HAS_NATIVE_LLONG_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 8 +#define BOOST_ATOMIC_HAS_NATIVE_LLONG_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_LLONG_WAIT_NOTIFY 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_LLONG_IPC_WAIT_NOTIFY +#if BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 1 +#define BOOST_ATOMIC_HAS_NATIVE_LLONG_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 2 +#define BOOST_ATOMIC_HAS_NATIVE_LLONG_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 4 +#define BOOST_ATOMIC_HAS_NATIVE_LLONG_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 8 +#define BOOST_ATOMIC_HAS_NATIVE_LLONG_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_LLONG_IPC_WAIT_NOTIFY 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_POINTER_WAIT_NOTIFY +#if (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER + 0) == 8 +#define BOOST_ATOMIC_HAS_NATIVE_POINTER_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY +#elif (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER + 0) == 4 +#define BOOST_ATOMIC_HAS_NATIVE_POINTER_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_POINTER_WAIT_NOTIFY 0 +#endif +#endif + +#define BOOST_ATOMIC_HAS_NATIVE_ADDRESS_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_POINTER_WAIT_NOTIFY + +#ifndef BOOST_ATOMIC_HAS_NATIVE_POINTER_IPC_WAIT_NOTIFY +#if (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER + 0) == 8 +#define BOOST_ATOMIC_HAS_NATIVE_POINTER_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY +#elif (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER + 0) == 4 +#define BOOST_ATOMIC_HAS_NATIVE_POINTER_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_POINTER_IPC_WAIT_NOTIFY 0 +#endif +#endif + +#define BOOST_ATOMIC_HAS_NATIVE_ADDRESS_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_POINTER_IPC_WAIT_NOTIFY + +// We store bools in 1-byte storage in all backends +#ifndef BOOST_ATOMIC_HAS_NATIVE_BOOL_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_BOOL_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_BOOL_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_BOOL_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT8_IPC_WAIT_NOTIFY +#endif + +#ifndef BOOST_ATOMIC_HAS_NATIVE_FLAG_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_FLAG_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#endif +#ifndef BOOST_ATOMIC_HAS_NATIVE_FLAG_IPC_WAIT_NOTIFY +#define BOOST_ATOMIC_HAS_NATIVE_FLAG_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#endif + +#if !defined(BOOST_ATOMIC_NO_FLOATING_POINT) + +#if !defined(BOOST_ATOMIC_HAS_NATIVE_FLOAT_WAIT_NOTIFY) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT) +#if BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT == 2 +#define BOOST_ATOMIC_HAS_NATIVE_FLOAT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT == 4 +#define BOOST_ATOMIC_HAS_NATIVE_FLOAT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT == 8 +#define BOOST_ATOMIC_HAS_NATIVE_FLOAT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT > 8 && BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT <= 16 +#define BOOST_ATOMIC_HAS_NATIVE_FLOAT_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT128_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_FLOAT_WAIT_NOTIFY 0 +#endif +#endif + +#if !defined(BOOST_ATOMIC_HAS_NATIVE_FLOAT_IPC_WAIT_NOTIFY) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT) +#if BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT == 2 +#define BOOST_ATOMIC_HAS_NATIVE_FLOAT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT == 4 +#define BOOST_ATOMIC_HAS_NATIVE_FLOAT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT == 8 +#define BOOST_ATOMIC_HAS_NATIVE_FLOAT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT > 8 && BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT <= 16 +#define BOOST_ATOMIC_HAS_NATIVE_FLOAT_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT128_IPC_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_FLOAT_IPC_WAIT_NOTIFY 0 +#endif +#endif + +#if !defined(BOOST_ATOMIC_HAS_NATIVE_DOUBLE_WAIT_NOTIFY) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE) +#if BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE == 2 +#define BOOST_ATOMIC_HAS_NATIVE_DOUBLE_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE == 4 +#define BOOST_ATOMIC_HAS_NATIVE_DOUBLE_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE == 8 +#define BOOST_ATOMIC_HAS_NATIVE_DOUBLE_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE > 8 && BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE <= 16 +#define BOOST_ATOMIC_HAS_NATIVE_DOUBLE_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT128_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_DOUBLE_WAIT_NOTIFY 0 +#endif +#endif + +#if !defined(BOOST_ATOMIC_HAS_NATIVE_DOUBLE_IPC_WAIT_NOTIFY) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE) +#if BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE == 2 +#define BOOST_ATOMIC_HAS_NATIVE_DOUBLE_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE == 4 +#define BOOST_ATOMIC_HAS_NATIVE_DOUBLE_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE == 8 +#define BOOST_ATOMIC_HAS_NATIVE_DOUBLE_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE > 8 && BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE <= 16 +#define BOOST_ATOMIC_HAS_NATIVE_DOUBLE_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT128_IPC_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_DOUBLE_IPC_WAIT_NOTIFY 0 +#endif +#endif + +#if !defined(BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_WAIT_NOTIFY) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE) +#if BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE == 2 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE == 4 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE == 8 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE > 8 && BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE <= 16 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT128_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_WAIT_NOTIFY 0 +#endif +#endif + +#if !defined(BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_IPC_WAIT_NOTIFY) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE) +#if BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE == 2 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT16_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE == 4 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE == 8 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE > 8 && BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE <= 16 +#define BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_IPC_WAIT_NOTIFY BOOST_ATOMIC_HAS_NATIVE_INT128_IPC_WAIT_NOTIFY +#else +#define BOOST_ATOMIC_HAS_NATIVE_LONG_DOUBLE_IPC_WAIT_NOTIFY 0 +#endif +#endif + +#endif // !defined(BOOST_ATOMIC_NO_FLOATING_POINT) + +#endif // BOOST_ATOMIC_DETAIL_WAIT_CAPABILITIES_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_caps_darwin_ulock.hpp b/src/boost/boost/atomic/detail/wait_caps_darwin_ulock.hpp new file mode 100644 index 000000000..47f083ba7 --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_caps_darwin_ulock.hpp @@ -0,0 +1,58 @@ +/* + * 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) + * + * Copyright (c) 2021 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_caps_darwin_ulock.hpp + * + * This header defines waiting/notifying operations capabilities macros. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_CAPS_DARWIN_ULOCK_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_CAPS_DARWIN_ULOCK_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY BOOST_ATOMIC_INT32_LOCK_FREE + +// Darwin 19+ (Mac OS 10.15+, iOS 13.0+, tvOS 13.0+, watchOS 6.0+) adds support for 64-bit +// and inter-process ulock operations. +// https://shift.click/blog/futex-like-apis/#darwin-macos-ios-tvos-watchos-and-more +// https://github.com/thomcc/ulock-sys/blob/2597e63cc5372459a903c292a3919d385a3e3789/src/lib.rs +#if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101500) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 130000) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ >= 130000) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ >= 60000) +#define BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK64 +#define BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED +#endif + +// Darwin 20+ (Mac OS 11.0+, iOS 14.0+, tvOS 14.0+, watchOS 7.0+) introduces __ulock_wait2, which accepts +// the timeout in nanoseconds. __ulock_wait is a wrapper on top of __ulock_wait2. +#if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 110000) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 140000) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ >= 140000) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ >= 70000) +#define BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_WAIT2 +#endif + +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) +#define BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY BOOST_ATOMIC_INT32_LOCK_FREE +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) + +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK64) +#define BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY BOOST_ATOMIC_INT64_LOCK_FREE +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) +#define BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY BOOST_ATOMIC_INT64_LOCK_FREE +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK64) + +#endif // BOOST_ATOMIC_DETAIL_WAIT_CAPS_DARWIN_ULOCK_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_caps_dragonfly_umtx.hpp b/src/boost/boost/atomic/detail/wait_caps_dragonfly_umtx.hpp new file mode 100644 index 000000000..a8fb6a1d1 --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_caps_dragonfly_umtx.hpp @@ -0,0 +1,30 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_caps_dragonfly_umtx.hpp + * + * This header defines waiting/notifying operations capabilities macros. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_CAPS_DRAGONFLY_UMTX_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_CAPS_DRAGONFLY_UMTX_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// DragonFly BSD umtx_sleep/umtx_wakeup use physical address to the atomic object as a key, which means it should support address-free operations. +// https://man.dragonflybsd.org/?command=umtx§ion=2 + +#define BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY BOOST_ATOMIC_INT32_LOCK_FREE +#define BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY BOOST_ATOMIC_INT32_LOCK_FREE + +#endif // BOOST_ATOMIC_DETAIL_WAIT_CAPS_DRAGONFLY_UMTX_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_caps_freebsd_umtx.hpp b/src/boost/boost/atomic/detail/wait_caps_freebsd_umtx.hpp new file mode 100644 index 000000000..038a73364 --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_caps_freebsd_umtx.hpp @@ -0,0 +1,40 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_caps_freebsd_umtx.hpp + * + * This header defines waiting/notifying operations capabilities macros. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_CAPS_FREEBSD_UMTX_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_CAPS_FREEBSD_UMTX_HPP_INCLUDED_ + +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// FreeBSD _umtx_op uses physical address to the atomic object as a key, which means it should support address-free operations. +// https://www.freebsd.org/cgi/man.cgi?query=_umtx_op&apropos=0&sektion=2&manpath=FreeBSD+11-current&format=html + +#if (defined(UMTX_OP_WAIT_UINT) && BOOST_ATOMIC_DETAIL_SIZEOF_INT == 4) ||\ + (defined(UMTX_OP_WAIT) && BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 4) +#define BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY BOOST_ATOMIC_INT32_LOCK_FREE +#define BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY BOOST_ATOMIC_INT32_LOCK_FREE +#endif + +#if defined(UMTX_OP_WAIT) && BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 8 +#define BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY BOOST_ATOMIC_INT64_LOCK_FREE +#define BOOST_ATOMIC_HAS_NATIVE_INT64_IPC_WAIT_NOTIFY BOOST_ATOMIC_INT64_LOCK_FREE +#endif + +#endif // BOOST_ATOMIC_DETAIL_WAIT_CAPS_FREEBSD_UMTX_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_caps_futex.hpp b/src/boost/boost/atomic/detail/wait_caps_futex.hpp new file mode 100644 index 000000000..2a1d35146 --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_caps_futex.hpp @@ -0,0 +1,31 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_caps_futex.hpp + * + * This header defines waiting/notifying operations capabilities macros. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_CAPS_FUTEX_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_CAPS_FUTEX_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(BOOST_ATOMIC_DETAIL_HAS_FUTEX) +// futexes are always 32-bit and they always supported address-free operations +#define BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY BOOST_ATOMIC_INT32_LOCK_FREE +#define BOOST_ATOMIC_HAS_NATIVE_INT32_IPC_WAIT_NOTIFY BOOST_ATOMIC_INT32_LOCK_FREE +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_FUTEX) + +#endif // BOOST_ATOMIC_DETAIL_WAIT_CAPS_FUTEX_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_caps_windows.hpp b/src/boost/boost/atomic/detail/wait_caps_windows.hpp new file mode 100644 index 000000000..89097da75 --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_caps_windows.hpp @@ -0,0 +1,57 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_caps_windows.hpp + * + * This header defines waiting/notifying operations capabilities macros. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_CAPS_WINDOWS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_CAPS_WINDOWS_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// MSDN says WaitOnAddress, WakeByAddressSingle and WakeByAddressAll only support notifications between threads of the same process, so no address-free operations. +// https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-waitonaddress +// https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-wakebyaddresssingle +// https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-wakebyaddressall + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN8 && (BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM) + +#define BOOST_ATOMIC_DETAIL_WINDOWS_HAS_WAIT_ON_ADDRESS + +#define BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY BOOST_ATOMIC_INT8_LOCK_FREE +#define BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY BOOST_ATOMIC_INT16_LOCK_FREE +#define BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY BOOST_ATOMIC_INT32_LOCK_FREE +#define BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY BOOST_ATOMIC_INT64_LOCK_FREE + +#else // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN8 && (BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM) + +// Since we'll detect availability of WaitOnAddress etc. at run time, we have to define capability macros to 1 instead of 2 +#if BOOST_ATOMIC_INT8_LOCK_FREE > 0 +#define BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY 1 +#endif +#if BOOST_ATOMIC_INT16_LOCK_FREE > 0 +#define BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY 1 +#endif +#if BOOST_ATOMIC_INT32_LOCK_FREE > 0 +#define BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY 1 +#endif +#if BOOST_ATOMIC_INT64_LOCK_FREE > 0 +#define BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY 1 +#endif + +#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN8 && (BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM) + +#endif // BOOST_ATOMIC_DETAIL_WAIT_CAPS_WINDOWS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_on_address.hpp b/src/boost/boost/atomic/detail/wait_on_address.hpp new file mode 100644 index 000000000..f0e789d7d --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_on_address.hpp @@ -0,0 +1,65 @@ +/* + * 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) + * + * Copyright (c) 2021 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_on_address.hpp + * + * This header contains declaration of runtime detection of \c WaitOnAddress and related APIs on Windows. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_ON_ADDRESS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_ON_ADDRESS_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +typedef boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +wait_on_address_t( + volatile boost::winapi::VOID_* addr, + boost::winapi::PVOID_ compare_addr, + boost::winapi::SIZE_T_ size, + boost::winapi::DWORD_ timeout_ms); + +typedef boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +wake_by_address_t(boost::winapi::PVOID_ addr); + +extern BOOST_ATOMIC_DECL wait_on_address_t* wait_on_address; +extern BOOST_ATOMIC_DECL wake_by_address_t* wake_by_address_single; +extern BOOST_ATOMIC_DECL wake_by_address_t* wake_by_address_all; + +extern BOOST_ATOMIC_DECL once_flag wait_functions_once_flag; +BOOST_ATOMIC_DECL void initialize_wait_functions() BOOST_NOEXCEPT; + +BOOST_FORCEINLINE void ensure_wait_functions_initialized() BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT_MSG(once_flag_operations::is_always_lock_free, "Boost.Atomic unsupported target platform: native atomic operations not implemented for bytes"); + if (BOOST_LIKELY(once_flag_operations::load(wait_functions_once_flag.m_flag, boost::memory_order_acquire) == 0u)) + return; + + initialize_wait_functions(); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_WAIT_ON_ADDRESS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_operations.hpp b/src/boost/boost/atomic/detail/wait_operations.hpp new file mode 100644 index 000000000..1de476655 --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_operations.hpp @@ -0,0 +1,28 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_operations.hpp + * + * This header defines waiting/notifying atomic operations, including the generic version. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_OPERATIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_OPERATIONS_HPP_INCLUDED_ + +#include +#include + +#if !defined(BOOST_ATOMIC_DETAIL_WAIT_BACKEND_GENERIC) +#include BOOST_ATOMIC_DETAIL_WAIT_BACKEND_HEADER(boost/atomic/detail/wait_ops_) +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#endif // BOOST_ATOMIC_DETAIL_WAIT_OPERATIONS_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_operations_fwd.hpp b/src/boost/boost/atomic/detail/wait_operations_fwd.hpp new file mode 100644 index 000000000..f10b377bc --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_operations_fwd.hpp @@ -0,0 +1,43 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_operations_fwd.hpp + * + * This header contains forward declaration of the \c wait_operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_OPERATIONS_FWD_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_OPERATIONS_FWD_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< + typename Base, + std::size_t Size = sizeof(typename Base::storage_type), + bool AlwaysLockFree = Base::is_always_lock_free, + bool Interprocess = Base::is_interprocess +> +struct wait_operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_WAIT_OPERATIONS_FWD_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_ops_darwin_ulock.hpp b/src/boost/boost/atomic/detail/wait_ops_darwin_ulock.hpp new file mode 100644 index 000000000..271168418 --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_ops_darwin_ulock.hpp @@ -0,0 +1,158 @@ +/* + * 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) + * + * Copyright (c) 2021 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_ops_darwin_ulock.hpp + * + * This header contains implementation of the waiting/notifying atomic operations based on Darwin systems using ulock syscalls. + * + * https://github.com/apple/darwin-xnu/blob/master/bsd/sys/ulock.h + * https://github.com/apple/darwin-xnu/blob/master/bsd/kern/sys_ulock.c + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_OPS_DARWIN_ULOCK_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_OPS_DARWIN_ULOCK_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +extern "C" { +// Timeout is in microseconds with zero meaning no timeout +int __ulock_wait(uint32_t operation, void* addr, uint64_t value, uint32_t timeout); +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_WAIT2) +// Timeout is in nanoseconds with zero meaning no timeout +int __ulock_wait2(uint32_t operation, void* addr, uint64_t value, uint64_t timeout, uint64_t value2); +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_WAIT2) +int __ulock_wake(uint32_t operation, void* addr, uint64_t wake_value); +} // extern "C" + +enum ulock_op +{ + ulock_op_compare_and_wait = 1, +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) + ulock_op_compare_and_wait_shared = 3, +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK64) + ulock_op_compare_and_wait64 = 5, +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) + ulock_op_compare_and_wait64_shared = 6, +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK64) + + // Flags for __ulock_wake + ulock_flag_wake_all = 0x00000100, + + // Generic flags + ulock_flag_no_errno = 0x01000000 +}; + +template< typename Base, uint32_t Opcode > +struct wait_operations_darwin_ulock_common : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = true; + + static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } + + static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT + { + storage_type new_val = base_type::load(storage, order); + while (new_val == old_val) + { +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_WAIT2) + __ulock_wait2(Opcode | ulock_flag_no_errno, const_cast< storage_type* >(&storage), old_val, 0u, 0u); +#else + __ulock_wait(Opcode | ulock_flag_no_errno, const_cast< storage_type* >(&storage), old_val, 0u); +#endif + new_val = base_type::load(storage, order); + } + + return new_val; + } + + static BOOST_FORCEINLINE void notify_one(storage_type volatile& storage) BOOST_NOEXCEPT + { + while (true) + { + const int res = __ulock_wake(Opcode | ulock_flag_no_errno, const_cast< storage_type* >(&storage), 0u); + if (BOOST_LIKELY(res != -EINTR)) + break; + } + } + + static BOOST_FORCEINLINE void notify_all(storage_type volatile& storage) BOOST_NOEXCEPT + { + while (true) + { + const int res = __ulock_wake(Opcode | ulock_flag_wake_all | ulock_flag_no_errno, const_cast< storage_type* >(&storage), 0u); + if (BOOST_LIKELY(res != -EINTR)) + break; + } + } +}; + +template< typename Base > +struct wait_operations< Base, sizeof(uint32_t), true, false > : + public wait_operations_darwin_ulock_common< Base, ulock_op_compare_and_wait > +{ +}; + +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) + +template< typename Base > +struct wait_operations< Base, sizeof(uint32_t), true, true > : + public wait_operations_darwin_ulock_common< Base, ulock_op_compare_and_wait_shared > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) + +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK64) + +template< typename Base > +struct wait_operations< Base, sizeof(uint64_t), true, false > : + public wait_operations_darwin_ulock_common< Base, ulock_op_compare_and_wait64 > +{ +}; + +#if defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) + +template< typename Base > +struct wait_operations< Base, sizeof(uint64_t), true, true > : + public wait_operations_darwin_ulock_common< Base, ulock_op_compare_and_wait64_shared > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK_SHARED) +#endif // defined(BOOST_ATOMIC_DETAIL_HAS_DARWIN_ULOCK64) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_WAIT_OPS_DARWIN_ULOCK_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp b/src/boost/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp new file mode 100644 index 000000000..56db240da --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp @@ -0,0 +1,75 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_ops_dragonfly_umtx.hpp + * + * This header contains implementation of the waiting/notifying atomic operations based on DragonFly BSD umtx. + * https://man.dragonflybsd.org/?command=umtx§ion=2 + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_OPS_DRAGONFLY_UMTX_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_OPS_DRAGONFLY_UMTX_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base, bool Interprocess > +struct wait_operations< Base, sizeof(int), true, Interprocess > : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = true; + + static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } + + static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT + { + storage_type new_val = base_type::load(storage, order); + while (new_val == old_val) + { + ::umtx_sleep(reinterpret_cast< int* >(const_cast< storage_type* >(&storage)), static_cast< int >(old_val), 0); + new_val = base_type::load(storage, order); + } + + return new_val; + } + + static BOOST_FORCEINLINE void notify_one(storage_type volatile& storage) BOOST_NOEXCEPT + { + ::umtx_wakeup(reinterpret_cast< int* >(const_cast< storage_type* >(&storage)), 1); + } + + static BOOST_FORCEINLINE void notify_all(storage_type volatile& storage) BOOST_NOEXCEPT + { + ::umtx_wakeup(reinterpret_cast< int* >(const_cast< storage_type* >(&storage)), 0); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_WAIT_OPS_DRAGONFLY_UMTX_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_ops_emulated.hpp b/src/boost/boost/atomic/detail/wait_ops_emulated.hpp new file mode 100644 index 000000000..cb2e88371 --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_ops_emulated.hpp @@ -0,0 +1,97 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_ops_emulated.hpp + * + * This header contains emulated (lock-based) implementation of the waiting and notifying atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_OPS_EMULATED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_OPS_EMULATED_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Emulated implementation of waiting and notifying operations +template< typename Base > +struct wait_operations_emulated : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + typedef lock_pool::scoped_lock< base_type::storage_alignment, true > scoped_lock; + typedef lock_pool::scoped_wait_state< base_type::storage_alignment > scoped_wait_state; + + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = false; + + static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT + { + return false; + } + + static +#if defined(BOOST_MSVC) && BOOST_MSVC < 1500 + // In some cases, when this function is inlined, MSVC-8 (VS2005) x64 generates broken code that returns a bogus value from this function. + BOOST_NOINLINE +#endif + storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + storage_type const& s = const_cast< storage_type const& >(storage); + scoped_wait_state wait_state(&storage); + storage_type new_val = s; + while (new_val == old_val) + { + wait_state.wait(); + new_val = s; + } + + return new_val; + } + + static void notify_one(storage_type volatile& storage) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + scoped_lock lock(&storage); + lock_pool::notify_one(lock.get_lock_state(), &storage); + } + + static void notify_all(storage_type volatile& storage) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(!base_type::is_interprocess, "Boost.Atomic: operation invoked on a non-lock-free inter-process atomic object"); + scoped_lock lock(&storage); + lock_pool::notify_all(lock.get_lock_state(), &storage); + } +}; + +template< typename Base, std::size_t Size, bool Interprocess > +struct wait_operations< Base, Size, false, Interprocess > : + public wait_operations_emulated< Base > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_WAIT_OPS_EMULATED_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_ops_freebsd_umtx.hpp b/src/boost/boost/atomic/detail/wait_ops_freebsd_umtx.hpp new file mode 100644 index 000000000..2d3f587ff --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_ops_freebsd_umtx.hpp @@ -0,0 +1,119 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_ops_freebsd_umtx.hpp + * + * This header contains implementation of the waiting/notifying atomic operations based on FreeBSD _umtx_op syscall. + * https://www.freebsd.org/cgi/man.cgi?query=_umtx_op&apropos=0&sektion=2&manpath=FreeBSD+11-current&format=html + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_OPS_FREEBSD_UMTX_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_OPS_FREEBSD_UMTX_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if defined(UMTX_OP_WAIT_UINT) || defined(UMTX_OP_WAIT) + +template< typename Base > +struct wait_operations_freebsd_umtx_common : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = true; + + static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } + + static BOOST_FORCEINLINE void notify_one(storage_type volatile& storage) BOOST_NOEXCEPT + { + ::_umtx_op(const_cast< storage_type* >(&storage), UMTX_OP_WAKE, 1u, NULL, NULL); + } + + static BOOST_FORCEINLINE void notify_all(storage_type volatile& storage) BOOST_NOEXCEPT + { + ::_umtx_op(const_cast< storage_type* >(&storage), UMTX_OP_WAKE, (~static_cast< unsigned int >(0u)) >> 1, NULL, NULL); + } +}; + +#endif // defined(UMTX_OP_WAIT_UINT) || defined(UMTX_OP_WAIT) + +// UMTX_OP_WAIT_UINT only appeared in FreeBSD 8.0 +#if defined(UMTX_OP_WAIT_UINT) && BOOST_ATOMIC_DETAIL_SIZEOF_INT < BOOST_ATOMIC_DETAIL_SIZEOF_LONG + +template< typename Base, bool Interprocess > +struct wait_operations< Base, sizeof(unsigned int), true, Interprocess > : + public wait_operations_freebsd_umtx_common< Base > +{ + typedef wait_operations_freebsd_umtx_common< Base > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT + { + storage_type new_val = base_type::load(storage, order); + while (new_val == old_val) + { + ::_umtx_op(const_cast< storage_type* >(&storage), UMTX_OP_WAIT_UINT, old_val, NULL, NULL); + new_val = base_type::load(storage, order); + } + + return new_val; + } +}; + +#endif // defined(UMTX_OP_WAIT_UINT) && BOOST_ATOMIC_DETAIL_SIZEOF_INT < BOOST_ATOMIC_DETAIL_SIZEOF_LONG + +#if defined(UMTX_OP_WAIT) + +template< typename Base, bool Interprocess > +struct wait_operations< Base, sizeof(unsigned long), true, Interprocess > : + public wait_operations_freebsd_umtx_common< Base > +{ + typedef wait_operations_freebsd_umtx_common< Base > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT + { + storage_type new_val = base_type::load(storage, order); + while (new_val == old_val) + { + ::_umtx_op(const_cast< storage_type* >(&storage), UMTX_OP_WAIT, old_val, NULL, NULL); + new_val = base_type::load(storage, order); + } + + return new_val; + } +}; + +#endif // defined(UMTX_OP_WAIT) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_WAIT_OPS_FREEBSD_UMTX_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_ops_futex.hpp b/src/boost/boost/atomic/detail/wait_ops_futex.hpp new file mode 100644 index 000000000..bb748c8d4 --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_ops_futex.hpp @@ -0,0 +1,111 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_ops_futex.hpp + * + * This header contains implementation of the waiting/notifying atomic operations based on futexes. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_OPS_FUTEX_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_OPS_FUTEX_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base > +struct wait_operations< Base, 4u, true, false > : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = true; + + static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } + + static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT + { + storage_type new_val = base_type::load(storage, order); + while (new_val == old_val) + { + atomics::detail::futex_wait_private(const_cast< storage_type* >(&storage), old_val); + new_val = base_type::load(storage, order); + } + + return new_val; + } + + static BOOST_FORCEINLINE void notify_one(storage_type volatile& storage) BOOST_NOEXCEPT + { + atomics::detail::futex_signal_private(const_cast< storage_type* >(&storage)); + } + + static BOOST_FORCEINLINE void notify_all(storage_type volatile& storage) BOOST_NOEXCEPT + { + atomics::detail::futex_broadcast_private(const_cast< storage_type* >(&storage)); + } +}; + +template< typename Base > +struct wait_operations< Base, 4u, true, true > : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = true; + + static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } + + static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT + { + storage_type new_val = base_type::load(storage, order); + while (new_val == old_val) + { + atomics::detail::futex_wait(const_cast< storage_type* >(&storage), old_val); + new_val = base_type::load(storage, order); + } + + return new_val; + } + + static BOOST_FORCEINLINE void notify_one(storage_type volatile& storage) BOOST_NOEXCEPT + { + atomics::detail::futex_signal(const_cast< storage_type* >(&storage)); + } + + static BOOST_FORCEINLINE void notify_all(storage_type volatile& storage) BOOST_NOEXCEPT + { + atomics::detail::futex_broadcast(const_cast< storage_type* >(&storage)); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_WAIT_OPS_FUTEX_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_ops_generic.hpp b/src/boost/boost/atomic/detail/wait_ops_generic.hpp new file mode 100644 index 000000000..f8f7071a7 --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_ops_generic.hpp @@ -0,0 +1,143 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_ops_generic.hpp + * + * This header contains generic (lock-based) implementation of the waiting/notifying atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_OPS_GENERIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_OPS_GENERIC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Generic implementation of waiting/notifying operations +template< typename Base, bool Interprocess > +struct wait_operations_generic; + +template< typename Base > +struct wait_operations_generic< Base, false > : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + typedef lock_pool::scoped_lock< base_type::storage_alignment, true > scoped_lock; + typedef lock_pool::scoped_wait_state< base_type::storage_alignment > scoped_wait_state; + + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = false; + + static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT + { + return false; + } + + static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT + { + storage_type new_val = base_type::load(storage, order); + if (new_val == old_val) + { + scoped_wait_state wait_state(&storage); + new_val = base_type::load(storage, order); + while (new_val == old_val) + { + wait_state.wait(); + new_val = base_type::load(storage, order); + } + } + + return new_val; + } + + static BOOST_FORCEINLINE void notify_one(storage_type volatile& storage) BOOST_NOEXCEPT + { + scoped_lock lock(&storage); + lock_pool::notify_one(lock.get_lock_state(), &storage); + } + + static BOOST_FORCEINLINE void notify_all(storage_type volatile& storage) BOOST_NOEXCEPT + { + scoped_lock lock(&storage); + lock_pool::notify_all(lock.get_lock_state(), &storage); + } +}; + +template< typename Base > +struct wait_operations_generic< Base, true > : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = false; + + static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT + { + return false; + } + + static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT + { + storage_type new_val = base_type::load(storage, order); + if (new_val == old_val) + { + for (unsigned int i = 0u; i < 16u; ++i) + { + atomics::detail::pause(); + new_val = base_type::load(storage, order); + if (new_val != old_val) + goto finish; + } + + do + { + atomics::detail::wait_some(); + new_val = base_type::load(storage, order); + } + while (new_val == old_val); + } + + finish: + return new_val; + } + + static BOOST_FORCEINLINE void notify_one(storage_type volatile&) BOOST_NOEXCEPT + { + } + + static BOOST_FORCEINLINE void notify_all(storage_type volatile&) BOOST_NOEXCEPT + { + } +}; + +template< typename Base, std::size_t Size, bool Interprocess > +struct wait_operations< Base, Size, true, Interprocess > : + public wait_operations_generic< Base, Interprocess > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_WAIT_OPS_GENERIC_HPP_INCLUDED_ diff --git a/src/boost/boost/atomic/detail/wait_ops_windows.hpp b/src/boost/boost/atomic/detail/wait_ops_windows.hpp new file mode 100644 index 000000000..1cea388ba --- /dev/null +++ b/src/boost/boost/atomic/detail/wait_ops_windows.hpp @@ -0,0 +1,179 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file atomic/detail/wait_ops_windows.hpp + * + * This header contains implementation of the waiting/notifying atomic operations on Windows. + */ + +#ifndef BOOST_ATOMIC_DETAIL_WAIT_OPS_WINDOWS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_WAIT_OPS_WINDOWS_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#if defined(BOOST_ATOMIC_DETAIL_WINDOWS_HAS_WAIT_ON_ADDRESS) +#include +#if (defined(BOOST_ATOMIC_FORCE_AUTO_LINK) || (!defined(BOOST_ALL_NO_LIB) && !defined(BOOST_ATOMIC_NO_LIB))) && !defined(BOOST_ATOMIC_NO_SYNCHRONIZATION_LIB) +#define BOOST_LIB_NAME "synchronization" +#if defined(BOOST_AUTO_LINK_NOMANGLE) +#include +#else // defined(BOOST_AUTO_LINK_NOMANGLE) +#define BOOST_AUTO_LINK_NOMANGLE +#include +#undef BOOST_AUTO_LINK_NOMANGLE +#endif // defined(BOOST_AUTO_LINK_NOMANGLE) +#endif // (defined(BOOST_ATOMIC_FORCE_AUTO_LINK) || (!defined(BOOST_ALL_NO_LIB) && !defined(BOOST_ATOMIC_NO_LIB))) && !defined(BOOST_ATOMIC_NO_SYNCHRONIZATION_LIB) +#else // defined(BOOST_ATOMIC_DETAIL_WINDOWS_HAS_WAIT_ON_ADDRESS) +#include +#include +#include +#endif // defined(BOOST_ATOMIC_DETAIL_WINDOWS_HAS_WAIT_ON_ADDRESS) +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if defined(BOOST_ATOMIC_DETAIL_WINDOWS_HAS_WAIT_ON_ADDRESS) + +template< typename Base, std::size_t Size > +struct wait_operations_windows : + public Base +{ + typedef Base base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = true; + + static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } + + static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT + { + storage_type new_val = base_type::load(storage, order); + while (new_val == old_val) + { + boost::winapi::WaitOnAddress(const_cast< storage_type* >(&storage), &old_val, Size, boost::winapi::infinite); + new_val = base_type::load(storage, order); + } + + return new_val; + } + + static BOOST_FORCEINLINE void notify_one(storage_type volatile& storage) BOOST_NOEXCEPT + { + boost::winapi::WakeByAddressSingle(const_cast< storage_type* >(&storage)); + } + + static BOOST_FORCEINLINE void notify_all(storage_type volatile& storage) BOOST_NOEXCEPT + { + boost::winapi::WakeByAddressAll(const_cast< storage_type* >(&storage)); + } +}; + +#else // defined(BOOST_ATOMIC_DETAIL_WINDOWS_HAS_WAIT_ON_ADDRESS) + +template< typename Base, std::size_t Size > +struct wait_operations_windows : + public atomics::detail::wait_operations_generic< Base, false > +{ + typedef atomics::detail::wait_operations_generic< Base, false > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = false; + + static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT + { + ensure_wait_functions_initialized(); + return atomics::detail::wait_on_address != NULL; + } + + static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT + { + ensure_wait_functions_initialized(); + + if (BOOST_LIKELY(atomics::detail::wait_on_address != NULL)) + { + storage_type new_val = base_type::load(storage, order); + while (new_val == old_val) + { + atomics::detail::wait_on_address(const_cast< storage_type* >(&storage), &old_val, Size, boost::winapi::infinite); + new_val = base_type::load(storage, order); + } + + return new_val; + } + else + { + return base_type::wait(storage, old_val, order); + } + } + + static BOOST_FORCEINLINE void notify_one(storage_type volatile& storage) BOOST_NOEXCEPT + { + ensure_wait_functions_initialized(); + + if (BOOST_LIKELY(atomics::detail::wake_by_address_single != NULL)) + atomics::detail::wake_by_address_single(const_cast< storage_type* >(&storage)); + else + base_type::notify_one(storage); + } + + static BOOST_FORCEINLINE void notify_all(storage_type volatile& storage) BOOST_NOEXCEPT + { + ensure_wait_functions_initialized(); + + if (BOOST_LIKELY(atomics::detail::wake_by_address_all != NULL)) + atomics::detail::wake_by_address_all(const_cast< storage_type* >(&storage)); + else + base_type::notify_all(storage); + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_WINDOWS_HAS_WAIT_ON_ADDRESS) + +template< typename Base > +struct wait_operations< Base, 1u, true, false > : + public wait_operations_windows< Base, 1u > +{ +}; + +template< typename Base > +struct wait_operations< Base, 2u, true, false > : + public wait_operations_windows< Base, 2u > +{ +}; + +template< typename Base > +struct wait_operations< Base, 4u, true, false > : + public wait_operations_windows< Base, 4u > +{ +}; + +template< typename Base > +struct wait_operations< Base, 8u, true, false > : + public wait_operations_windows< Base, 8u > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_DETAIL_WAIT_OPS_WINDOWS_HPP_INCLUDED_ diff --git a/src/boost/boost/concept/assert.hpp b/src/boost/boost/concept/assert.hpp index 2db8e3fc9..07e09f0b8 100644 --- a/src/boost/boost/concept/assert.hpp +++ b/src/boost/boost/concept/assert.hpp @@ -29,7 +29,7 @@ # ifdef BOOST_MSVC # include -# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +# elif BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) # include # else # include diff --git a/src/boost/boost/concept/detail/general.hpp b/src/boost/boost/concept/detail/general.hpp index d18ec0ea9..c673fed61 100644 --- a/src/boost/boost/concept/detail/general.hpp +++ b/src/boost/boost/concept/detail/general.hpp @@ -28,7 +28,14 @@ namespace detail template struct requirement { +# if defined(BOOST_GCC) && (BOOST_GCC >= 110000) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wnonnull" +# endif static void failed() { ((Model*)0)->~Model(); } +# if defined(BOOST_GCC) && (BOOST_GCC >= 110000) +# pragma GCC diagnostic pop +# endif }; struct failed {}; @@ -36,7 +43,14 @@ struct failed {}; template struct requirement { +# if defined(BOOST_GCC) && (BOOST_GCC >= 110000) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wnonnull" +# endif static void failed() { ((Model*)0)->~Model(); } +# if defined(BOOST_GCC) && (BOOST_GCC >= 110000) +# pragma GCC diagnostic pop +# endif }; # ifdef BOOST_OLD_CONCEPT_SUPPORT @@ -44,7 +58,14 @@ struct requirement template struct constraint { +# if defined(BOOST_GCC) && (BOOST_GCC >= 110000) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wnonnull" +# endif static void failed() { ((Model*)0)->constraints(); } +# if defined(BOOST_GCC) && (BOOST_GCC >= 110000) +# pragma GCC diagnostic pop +# endif }; template diff --git a/src/boost/boost/concept/usage.hpp b/src/boost/boost/concept/usage.hpp index 26fa1f979..aff3b9618 100644 --- a/src/boost/boost/concept/usage.hpp +++ b/src/boost/boost/concept/usage.hpp @@ -13,7 +13,14 @@ namespace boost { namespace concepts { template struct usage_requirements { +# if defined(BOOST_GCC) && (BOOST_GCC >= 110000) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wnonnull" +# endif ~usage_requirements() { ((Model*)0)->~Model(); } +# if defined(BOOST_GCC) && (BOOST_GCC >= 110000) +# pragma GCC diagnostic pop +# endif }; # if BOOST_WORKAROUND(__GNUC__, <= 3) diff --git a/src/boost/boost/concept_check.hpp b/src/boost/boost/concept_check.hpp index ef307eb8e..893a1439c 100644 --- a/src/boost/boost/concept_check.hpp +++ b/src/boost/boost/concept_check.hpp @@ -352,7 +352,7 @@ namespace boost private: void test(boost::false_type) { - f(first,second); + (void) f(first,second); Return r = f(first, second); // require operator() (void)r; } diff --git a/src/boost/boost/config.hpp b/src/boost/boost/config.hpp index a84864318..42dc8c501 100644 --- a/src/boost/boost/config.hpp +++ b/src/boost/boost/config.hpp @@ -1,8 +1,8 @@ // Boost config.hpp configuration header file ------------------------------// // (C) Copyright John Maddock 2002. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org/libs/config for most recent version. @@ -57,6 +57,10 @@ # include BOOST_PLATFORM_CONFIG #endif +#define BOOST_NO_AUTO_PTR +#define BOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF +#define BOOST_FILESYSTEM_SINGLE_THREADED + // get config suffix code: #include diff --git a/src/boost/boost/config/abi_prefix.hpp b/src/boost/boost/config/abi_prefix.hpp index 10cf51d62..ec4a72203 100644 --- a/src/boost/boost/config/abi_prefix.hpp +++ b/src/boost/boost/config/abi_prefix.hpp @@ -19,7 +19,7 @@ # include BOOST_ABI_PREFIX #endif -#if defined( __BORLANDC__ ) +#if defined( BOOST_BORLANDC ) #pragma nopushoptwarn #endif diff --git a/src/boost/boost/config/abi_suffix.hpp b/src/boost/boost/config/abi_suffix.hpp index 21da961fd..256f63153 100644 --- a/src/boost/boost/config/abi_suffix.hpp +++ b/src/boost/boost/config/abi_suffix.hpp @@ -20,8 +20,6 @@ # include BOOST_ABI_SUFFIX #endif -#if defined( __BORLANDC__ ) +#if defined( BOOST_BORLANDC ) #pragma nopushoptwarn #endif - - diff --git a/src/boost/boost/config/assert_cxx03.hpp b/src/boost/boost/config/assert_cxx03.hpp new file mode 100644 index 000000000..00df0fe56 --- /dev/null +++ b/src/boost/boost/config/assert_cxx03.hpp @@ -0,0 +1,211 @@ +// This file was automatically generated on Sun Jun 5 16:50:18 2022 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-21. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + +#include + +#ifdef BOOST_NO_ADL_BARRIER +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_ADL_BARRIER." +#endif +#ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP." +#endif +#ifdef BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS." +#endif +#ifdef BOOST_NO_COMPLETE_VALUE_INITIALIZATION +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION." +#endif +#ifdef BOOST_NO_CTYPE_FUNCTIONS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_CTYPE_FUNCTIONS." +#endif +#ifdef BOOST_NO_CV_SPECIALIZATIONS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_CV_SPECIALIZATIONS." +#endif +#ifdef BOOST_NO_CV_VOID_SPECIALIZATIONS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_CV_VOID_SPECIALIZATIONS." +#endif +#ifdef BOOST_NO_CWCHAR +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_CWCHAR." +#endif +#ifdef BOOST_NO_CWCTYPE +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_CWCTYPE." +#endif +#ifdef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_DEPENDENT_NESTED_DERIVATIONS." +#endif +#ifdef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS." +#endif +#ifdef BOOST_NO_EXCEPTIONS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_EXCEPTIONS." +#endif +#ifdef BOOST_NO_EXCEPTION_STD_NAMESPACE +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_EXCEPTION_STD_NAMESPACE." +#endif +#ifdef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS." +#endif +#ifdef BOOST_NO_FENV_H +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_FENV_H." +#endif +#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_FUNCTION_TEMPLATE_ORDERING." +#endif +#ifdef BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS." +#endif +#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_INCLASS_MEMBER_INITIALIZATION." +#endif +#ifdef BOOST_NO_INTEGRAL_INT64_T +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_INTEGRAL_INT64_T." +#endif +#ifdef BOOST_NO_INTRINSIC_WCHAR_T +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_INTRINSIC_WCHAR_T." +#endif +#ifdef BOOST_NO_IOSFWD +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_IOSFWD." +#endif +#ifdef BOOST_NO_IOSTREAM +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_IOSTREAM." +#endif +#ifdef BOOST_NO_IS_ABSTRACT +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_IS_ABSTRACT." +#endif +#ifdef BOOST_NO_LIMITS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_LIMITS." +#endif +#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS." +#endif +#ifdef BOOST_NO_LONG_LONG +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_LONG_LONG." +#endif +#ifdef BOOST_NO_LONG_LONG_NUMERIC_LIMITS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_LONG_LONG_NUMERIC_LIMITS." +#endif +#ifdef BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS." +#endif +#ifdef BOOST_NO_MEMBER_TEMPLATES +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_MEMBER_TEMPLATES." +#endif +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_MEMBER_TEMPLATE_FRIENDS." +#endif +#ifdef BOOST_NO_MEMBER_TEMPLATE_KEYWORD +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_MEMBER_TEMPLATE_KEYWORD." +#endif +#ifdef BOOST_NO_NESTED_FRIENDSHIP +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_NESTED_FRIENDSHIP." +#endif +#ifdef BOOST_NO_OPERATORS_IN_NAMESPACE +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_OPERATORS_IN_NAMESPACE." +#endif +#ifdef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS." +#endif +#ifdef BOOST_NO_POINTER_TO_MEMBER_CONST +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_POINTER_TO_MEMBER_CONST." +#endif +#ifdef BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS." +#endif +#ifdef BOOST_NO_PRIVATE_IN_AGGREGATE +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_PRIVATE_IN_AGGREGATE." +#endif +#ifdef BOOST_NO_RESTRICT_REFERENCES +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_RESTRICT_REFERENCES." +#endif +#ifdef BOOST_NO_RTTI +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_RTTI." +#endif +#ifdef BOOST_NO_SFINAE +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_SFINAE." +#endif +#ifdef BOOST_NO_SFINAE_EXPR +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_SFINAE_EXPR." +#endif +#ifdef BOOST_NO_STDC_NAMESPACE +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STDC_NAMESPACE." +#endif +#ifdef BOOST_NO_STD_ALLOCATOR +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_ALLOCATOR." +#endif +#ifdef BOOST_NO_STD_DISTANCE +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_DISTANCE." +#endif +#ifdef BOOST_NO_STD_ITERATOR +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_ITERATOR." +#endif +#ifdef BOOST_NO_STD_ITERATOR_TRAITS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_ITERATOR_TRAITS." +#endif +#ifdef BOOST_NO_STD_LOCALE +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_LOCALE." +#endif +#ifdef BOOST_NO_STD_MESSAGES +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_MESSAGES." +#endif +#ifdef BOOST_NO_STD_MIN_MAX +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_MIN_MAX." +#endif +#ifdef BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN." +#endif +#ifdef BOOST_NO_STD_TYPEINFO +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_TYPEINFO." +#endif +#ifdef BOOST_NO_STD_USE_FACET +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_USE_FACET." +#endif +#ifdef BOOST_NO_STD_WSTREAMBUF +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_WSTREAMBUF." +#endif +#ifdef BOOST_NO_STD_WSTRING +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STD_WSTRING." +#endif +#ifdef BOOST_NO_STRINGSTREAM +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_STRINGSTREAM." +#endif +#ifdef BOOST_NO_TEMPLATED_IOSTREAMS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_TEMPLATED_IOSTREAMS." +#endif +#ifdef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS." +#endif +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION." +#endif +#ifdef BOOST_NO_TEMPLATE_TEMPLATES +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_TEMPLATE_TEMPLATES." +#endif +#ifdef BOOST_NO_TWO_PHASE_NAME_LOOKUP +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_TWO_PHASE_NAME_LOOKUP." +#endif +#ifdef BOOST_NO_TYPEID +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_TYPEID." +#endif +#ifdef BOOST_NO_TYPENAME_WITH_CTOR +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_TYPENAME_WITH_CTOR." +#endif +#ifdef BOOST_NO_UNREACHABLE_RETURN_DETECTION +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_UNREACHABLE_RETURN_DETECTION." +#endif +#ifdef BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE." +#endif +#ifdef BOOST_NO_USING_TEMPLATE +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_USING_TEMPLATE." +#endif +#ifdef BOOST_NO_VOID_RETURNS +# error "Your compiler appears not to be fully C++03 compliant. Detected via defect macro BOOST_NO_VOID_RETURNS." +#endif diff --git a/src/boost/boost/config/assert_cxx11.hpp b/src/boost/boost/config/assert_cxx11.hpp new file mode 100644 index 000000000..6a9a1f047 --- /dev/null +++ b/src/boost/boost/config/assert_cxx11.hpp @@ -0,0 +1,209 @@ +// This file was automatically generated on Sun Jun 5 16:50:18 2022 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-21. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + +#include +#include + +#ifdef BOOST_NO_CXX11_ADDRESSOF +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_ADDRESSOF." +#endif +#ifdef BOOST_NO_CXX11_ALIGNAS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_ALIGNAS." +#endif +#ifdef BOOST_NO_CXX11_ALLOCATOR +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_ALLOCATOR." +#endif +#ifdef BOOST_NO_CXX11_AUTO_DECLARATIONS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_AUTO_DECLARATIONS." +#endif +#ifdef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS." +#endif +#ifdef BOOST_NO_CXX11_CHAR16_T +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_CHAR16_T." +#endif +#ifdef BOOST_NO_CXX11_CHAR32_T +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_CHAR32_T." +#endif +#ifdef BOOST_NO_CXX11_CONSTEXPR +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_CONSTEXPR." +#endif +#ifdef BOOST_NO_CXX11_DECLTYPE +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_DECLTYPE." +#endif +#ifdef BOOST_NO_CXX11_DECLTYPE_N3276 +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_DECLTYPE_N3276." +#endif +#ifdef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_DEFAULTED_FUNCTIONS." +#endif +#ifdef BOOST_NO_CXX11_DEFAULTED_MOVES +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_DEFAULTED_MOVES." +#endif +#ifdef BOOST_NO_CXX11_DELETED_FUNCTIONS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_DELETED_FUNCTIONS." +#endif +#ifdef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS." +#endif +#ifdef BOOST_NO_CXX11_EXTERN_TEMPLATE +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_EXTERN_TEMPLATE." +#endif +#ifdef BOOST_NO_CXX11_FINAL +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_FINAL." +#endif +#ifdef BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS." +#endif +#ifdef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS." +#endif +#ifdef BOOST_NO_CXX11_HDR_ARRAY +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_ARRAY." +#endif +#ifdef BOOST_NO_CXX11_HDR_ATOMIC +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_ATOMIC." +#endif +#ifdef BOOST_NO_CXX11_HDR_CHRONO +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_CHRONO." +#endif +#ifdef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_CONDITION_VARIABLE." +#endif +#ifdef BOOST_NO_CXX11_HDR_EXCEPTION +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_EXCEPTION." +#endif +#ifdef BOOST_NO_CXX11_HDR_FORWARD_LIST +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_FORWARD_LIST." +#endif +#ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_FUNCTIONAL." +#endif +#ifdef BOOST_NO_CXX11_HDR_FUTURE +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_FUTURE." +#endif +#ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_INITIALIZER_LIST." +#endif +#ifdef BOOST_NO_CXX11_HDR_MUTEX +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_MUTEX." +#endif +#ifdef BOOST_NO_CXX11_HDR_RANDOM +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_RANDOM." +#endif +#ifdef BOOST_NO_CXX11_HDR_RATIO +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_RATIO." +#endif +#ifdef BOOST_NO_CXX11_HDR_REGEX +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_REGEX." +#endif +#ifdef BOOST_NO_CXX11_HDR_SYSTEM_ERROR +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_SYSTEM_ERROR." +#endif +#ifdef BOOST_NO_CXX11_HDR_THREAD +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_THREAD." +#endif +#ifdef BOOST_NO_CXX11_HDR_TUPLE +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_TUPLE." +#endif +#ifdef BOOST_NO_CXX11_HDR_TYPEINDEX +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_TYPEINDEX." +#endif +#ifdef BOOST_NO_CXX11_HDR_TYPE_TRAITS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_TYPE_TRAITS." +#endif +#ifdef BOOST_NO_CXX11_HDR_UNORDERED_MAP +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_UNORDERED_MAP." +#endif +#ifdef BOOST_NO_CXX11_HDR_UNORDERED_SET +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_HDR_UNORDERED_SET." +#endif +#ifdef BOOST_NO_CXX11_INLINE_NAMESPACES +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_INLINE_NAMESPACES." +#endif +#ifdef BOOST_NO_CXX11_LAMBDAS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_LAMBDAS." +#endif +#ifdef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS." +#endif +#ifdef BOOST_NO_CXX11_NOEXCEPT +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_NOEXCEPT." +#endif +#ifdef BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS." +#endif +#ifdef BOOST_NO_CXX11_NULLPTR +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_NULLPTR." +#endif +#ifdef BOOST_NO_CXX11_NUMERIC_LIMITS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_NUMERIC_LIMITS." +#endif +#ifdef BOOST_NO_CXX11_OVERRIDE +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_OVERRIDE." +#endif +#ifdef BOOST_NO_CXX11_POINTER_TRAITS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_POINTER_TRAITS." +#endif +#ifdef BOOST_NO_CXX11_RANGE_BASED_FOR +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_RANGE_BASED_FOR." +#endif +#ifdef BOOST_NO_CXX11_RAW_LITERALS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_RAW_LITERALS." +#endif +#ifdef BOOST_NO_CXX11_REF_QUALIFIERS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_REF_QUALIFIERS." +#endif +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_RVALUE_REFERENCES." +#endif +#ifdef BOOST_NO_CXX11_SCOPED_ENUMS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_SCOPED_ENUMS." +#endif +#ifdef BOOST_NO_CXX11_SFINAE_EXPR +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_SFINAE_EXPR." +#endif +#ifdef BOOST_NO_CXX11_SMART_PTR +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_SMART_PTR." +#endif +#ifdef BOOST_NO_CXX11_STATIC_ASSERT +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_STATIC_ASSERT." +#endif +#ifdef BOOST_NO_CXX11_STD_ALIGN +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_STD_ALIGN." +#endif +#ifdef BOOST_NO_CXX11_TEMPLATE_ALIASES +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_TEMPLATE_ALIASES." +#endif +#ifdef BOOST_NO_CXX11_THREAD_LOCAL +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_THREAD_LOCAL." +#endif +#ifdef BOOST_NO_CXX11_TRAILING_RESULT_TYPES +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_TRAILING_RESULT_TYPES." +#endif +#ifdef BOOST_NO_CXX11_UNICODE_LITERALS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_UNICODE_LITERALS." +#endif +#ifdef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX." +#endif +#ifdef BOOST_NO_CXX11_UNRESTRICTED_UNION +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_UNRESTRICTED_UNION." +#endif +#ifdef BOOST_NO_CXX11_USER_DEFINED_LITERALS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_USER_DEFINED_LITERALS." +#endif +#ifdef BOOST_NO_CXX11_VARIADIC_MACROS +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_VARIADIC_MACROS." +#endif +#ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES +# error "Your compiler appears not to be fully C++11 compliant. Detected via defect macro BOOST_NO_CXX11_VARIADIC_TEMPLATES." +#endif diff --git a/src/boost/boost/config/assert_cxx14.hpp b/src/boost/boost/config/assert_cxx14.hpp new file mode 100644 index 000000000..9319bd180 --- /dev/null +++ b/src/boost/boost/config/assert_cxx14.hpp @@ -0,0 +1,47 @@ +// This file was automatically generated on Sun Jun 5 16:50:18 2022 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-21. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + +#include +#include + +#ifdef BOOST_NO_CXX14_AGGREGATE_NSDMI +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_AGGREGATE_NSDMI." +#endif +#ifdef BOOST_NO_CXX14_BINARY_LITERALS +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_BINARY_LITERALS." +#endif +#ifdef BOOST_NO_CXX14_CONSTEXPR +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_CONSTEXPR." +#endif +#ifdef BOOST_NO_CXX14_DECLTYPE_AUTO +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_DECLTYPE_AUTO." +#endif +#ifdef BOOST_NO_CXX14_DIGIT_SEPARATORS +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_DIGIT_SEPARATORS." +#endif +#ifdef BOOST_NO_CXX14_GENERIC_LAMBDAS +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_GENERIC_LAMBDAS." +#endif +#ifdef BOOST_NO_CXX14_HDR_SHARED_MUTEX +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_HDR_SHARED_MUTEX." +#endif +#ifdef BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES." +#endif +#ifdef BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION." +#endif +#ifdef BOOST_NO_CXX14_STD_EXCHANGE +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_STD_EXCHANGE." +#endif +#ifdef BOOST_NO_CXX14_VARIABLE_TEMPLATES +# error "Your compiler appears not to be fully C++14 compliant. Detected via defect macro BOOST_NO_CXX14_VARIABLE_TEMPLATES." +#endif diff --git a/src/boost/boost/config/assert_cxx17.hpp b/src/boost/boost/config/assert_cxx17.hpp new file mode 100644 index 000000000..9ec4680b1 --- /dev/null +++ b/src/boost/boost/config/assert_cxx17.hpp @@ -0,0 +1,62 @@ +// This file was automatically generated on Sun Jun 5 16:50:18 2022 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-21. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + +#include +#include + +#ifdef BOOST_NO_CXX17_DEDUCTION_GUIDES +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_DEDUCTION_GUIDES." +#endif +#ifdef BOOST_NO_CXX17_FOLD_EXPRESSIONS +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_FOLD_EXPRESSIONS." +#endif +#ifdef BOOST_NO_CXX17_HDR_ANY +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_HDR_ANY." +#endif +#ifdef BOOST_NO_CXX17_HDR_CHARCONV +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_HDR_CHARCONV." +#endif +#ifdef BOOST_NO_CXX17_HDR_EXECUTION +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_HDR_EXECUTION." +#endif +#ifdef BOOST_NO_CXX17_HDR_FILESYSTEM +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_HDR_FILESYSTEM." +#endif +#ifdef BOOST_NO_CXX17_HDR_MEMORY_RESOURCE +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_HDR_MEMORY_RESOURCE." +#endif +#ifdef BOOST_NO_CXX17_HDR_OPTIONAL +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_HDR_OPTIONAL." +#endif +#ifdef BOOST_NO_CXX17_HDR_STRING_VIEW +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_HDR_STRING_VIEW." +#endif +#ifdef BOOST_NO_CXX17_HDR_VARIANT +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_HDR_VARIANT." +#endif +#ifdef BOOST_NO_CXX17_IF_CONSTEXPR +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_IF_CONSTEXPR." +#endif +#ifdef BOOST_NO_CXX17_INLINE_VARIABLES +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_INLINE_VARIABLES." +#endif +#ifdef BOOST_NO_CXX17_ITERATOR_TRAITS +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_ITERATOR_TRAITS." +#endif +#ifdef BOOST_NO_CXX17_STD_APPLY +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_STD_APPLY." +#endif +#ifdef BOOST_NO_CXX17_STD_INVOKE +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_STD_INVOKE." +#endif +#ifdef BOOST_NO_CXX17_STRUCTURED_BINDINGS +# error "Your compiler appears not to be fully C++17 compliant. Detected via defect macro BOOST_NO_CXX17_STRUCTURED_BINDINGS." +#endif diff --git a/src/boost/boost/config/assert_cxx20.hpp b/src/boost/boost/config/assert_cxx20.hpp new file mode 100644 index 000000000..0f35db721 --- /dev/null +++ b/src/boost/boost/config/assert_cxx20.hpp @@ -0,0 +1,59 @@ +// This file was automatically generated on Sun Jun 5 16:50:18 2022 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-21. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + +#include +#include + +#ifdef BOOST_NO_CXX20_HDR_BARRIER +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_BARRIER." +#endif +#ifdef BOOST_NO_CXX20_HDR_BIT +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_BIT." +#endif +#ifdef BOOST_NO_CXX20_HDR_COMPARE +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_COMPARE." +#endif +#ifdef BOOST_NO_CXX20_HDR_CONCEPTS +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_CONCEPTS." +#endif +#ifdef BOOST_NO_CXX20_HDR_COROUTINE +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_COROUTINE." +#endif +#ifdef BOOST_NO_CXX20_HDR_FORMAT +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_FORMAT." +#endif +#ifdef BOOST_NO_CXX20_HDR_LATCH +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_LATCH." +#endif +#ifdef BOOST_NO_CXX20_HDR_NUMBERS +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_NUMBERS." +#endif +#ifdef BOOST_NO_CXX20_HDR_RANGES +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_RANGES." +#endif +#ifdef BOOST_NO_CXX20_HDR_SEMAPHORE +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_SEMAPHORE." +#endif +#ifdef BOOST_NO_CXX20_HDR_SOURCE_LOCATION +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_SOURCE_LOCATION." +#endif +#ifdef BOOST_NO_CXX20_HDR_SPAN +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_SPAN." +#endif +#ifdef BOOST_NO_CXX20_HDR_STOP_TOKEN +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_STOP_TOKEN." +#endif +#ifdef BOOST_NO_CXX20_HDR_SYNCSTREAM +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_SYNCSTREAM." +#endif +#ifdef BOOST_NO_CXX20_HDR_VERSION +# error "Your compiler appears not to be fully C++20 compliant. Detected via defect macro BOOST_NO_CXX20_HDR_VERSION." +#endif diff --git a/src/boost/boost/config/assert_cxx98.hpp b/src/boost/boost/config/assert_cxx98.hpp new file mode 100644 index 000000000..f372f4949 --- /dev/null +++ b/src/boost/boost/config/assert_cxx98.hpp @@ -0,0 +1,23 @@ +// This file was automatically generated on Wed Mar 3 08:46:11 2021 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + +#include +#include + +#ifdef BOOST_NO_CXX98_BINDERS +# error "Your compiler appears not to be fully C++98 compliant. Detected via defect macro BOOST_NO_CXX98_BINDERS." +#endif +#ifdef BOOST_NO_CXX98_FUNCTION_BASE +# error "Your compiler appears not to be fully C++98 compliant. Detected via defect macro BOOST_NO_CXX98_FUNCTION_BASE." +#endif +#ifdef BOOST_NO_CXX98_RANDOM_SHUFFLE +# error "Your compiler appears not to be fully C++98 compliant. Detected via defect macro BOOST_NO_CXX98_RANDOM_SHUFFLE." +#endif diff --git a/src/boost/boost/config/auto_link.hpp b/src/boost/boost/config/auto_link.hpp index 291d2dccc..1c2c3c9c7 100644 --- a/src/boost/boost/config/auto_link.hpp +++ b/src/boost/boost/config/auto_link.hpp @@ -51,6 +51,7 @@ BOOST_LIB_PREFIX + BOOST_LIB_ARCH_AND_MODEL_OPT "-" + BOOST_LIB_VERSION + + BOOST_LIB_SUFFIX These are defined as: @@ -78,6 +79,7 @@ BOOST_LIB_ARCH_AND_MODEL_OPT: The architecture and address model BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. +BOOST_LIB_SUFFIX: Static/import libraries extension (".lib", ".a") for the compiler. ***************************************************************************/ @@ -97,9 +99,11 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. // Only include what follows for known and supported compilers: // #if defined(BOOST_MSVC) \ - || defined(__BORLANDC__) \ + || defined(BOOST_EMBTC_WINDOWS) \ + || defined(BOOST_BORLANDC) \ || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \ - || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200)) + || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200)) \ + || (defined(BOOST_CLANG) && defined(BOOST_WINDOWS) && defined(_MSC_VER) && (__clang_major__ >= 4)) #ifndef BOOST_VERSION_HPP # include @@ -173,12 +177,27 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. // vc14: # define BOOST_LIB_TOOLSET "vc140" -# elif defined(BOOST_MSVC) +# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1920) // vc14.1: # define BOOST_LIB_TOOLSET "vc141" -# elif defined(__BORLANDC__) +# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1930) + + // vc14.2: +# define BOOST_LIB_TOOLSET "vc142" + +# elif defined(BOOST_MSVC) + + // vc14.3: +# define BOOST_LIB_TOOLSET "vc143" + +# elif defined(BOOST_EMBTC_WINDOWS) + + // Embarcadero Clang based compilers: +# define BOOST_LIB_TOOLSET "embtc" + +# elif defined(BOOST_BORLANDC) // CBuilder 6: # define BOOST_LIB_TOOLSET "bcb" @@ -198,6 +217,11 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. // Metrowerks CodeWarrior 9.x # define BOOST_LIB_TOOLSET "cw9" +# elif defined(BOOST_CLANG) && defined(BOOST_WINDOWS) && defined(_MSC_VER) && (__clang_major__ >= 4) + + // Clang on Windows +# define BOOST_LIB_TOOLSET "clangw" BOOST_STRINGIZE(__clang_major__) + # endif #endif // BOOST_LIB_TOOLSET @@ -323,12 +347,32 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # endif -#elif defined(__BORLANDC__) +#elif defined(BOOST_EMBTC_WINDOWS) + +# ifdef _RTLDLL + +# if defined(_DEBUG) +# define BOOST_LIB_RT_OPT "-d" +# else +# define BOOST_LIB_RT_OPT +# endif + +# else + +# if defined(_DEBUG) +# define BOOST_LIB_RT_OPT "-sd" +# else +# define BOOST_LIB_RT_OPT "-s" +# endif + +# endif + +#elif defined(BOOST_BORLANDC) // // figure out whether we want the debug builds or not: // -#if __BORLANDC__ > 0x561 +#if BOOST_BORLANDC > 0x561 #pragma defineonoption BOOST_BORLAND_DEBUG -v #endif // @@ -346,7 +390,7 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # elif defined(BOOST_BORLAND_DEBUG) # define BOOST_LIB_RT_OPT "-d" # elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) -# define BOOST_LIB_RT_OPT -y +# define BOOST_LIB_RT_OPT "-y" # else # define BOOST_LIB_RT_OPT # endif @@ -404,30 +448,36 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. && defined(BOOST_LIB_ARCH_AND_MODEL_OPT) \ && defined(BOOST_LIB_VERSION) -#ifdef BOOST_AUTO_LINK_TAGGED -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib") +#if defined(BOOST_EMBTC_WIN64) +# define BOOST_LIB_SUFFIX ".a" +#else +# define BOOST_LIB_SUFFIX ".lib" +#endif + +#ifdef BOOST_AUTO_LINK_NOMANGLE +# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX) # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib") +# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX) # endif -#elif defined(BOOST_AUTO_LINK_SYSTEM) -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") +#elif defined(BOOST_AUTO_LINK_TAGGED) +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT BOOST_LIB_SUFFIX) # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT BOOST_LIB_SUFFIX) # endif -#elif defined(BOOST_AUTO_LINK_NOMANGLE) -# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") +#elif defined(BOOST_AUTO_LINK_SYSTEM) +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX) # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX) # endif #elif defined(BOOST_LIB_BUILDID) -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) BOOST_LIB_SUFFIX) # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) BOOST_LIB_SUFFIX) # endif #else -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION BOOST_LIB_SUFFIX) # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION BOOST_LIB_SUFFIX) # endif #endif @@ -470,5 +520,6 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #if defined(BOOST_DYN_LINK) # undef BOOST_DYN_LINK #endif - - +#if defined(BOOST_LIB_SUFFIX) +# undef BOOST_LIB_SUFFIX +#endif diff --git a/src/boost/boost/config/compiler/borland.hpp b/src/boost/boost/config/compiler/borland.hpp index f9fb41769..caf4c1e48 100644 --- a/src/boost/boost/config/compiler/borland.hpp +++ b/src/boost/boost/config/compiler/borland.hpp @@ -194,11 +194,14 @@ #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS #define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_ALIGNOF #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_OVERRIDE #define BOOST_NO_CXX11_THREAD_LOCAL +#define BOOST_NO_CXX11_UNRESTRICTED_UNION // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) @@ -332,4 +335,5 @@ // (Niels Dekker, LKEB, April 2010) #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION -#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__) +#define BOOST_BORLANDC __BORLANDC__ +#define BOOST_COMPILER "Classic Borland C++ version " BOOST_STRINGIZE(__BORLANDC__) diff --git a/src/boost/boost/config/compiler/clang.hpp b/src/boost/boost/config/compiler/clang.hpp index 2fb3a0b07..010e11377 100644 --- a/src/boost/boost/config/compiler/clang.hpp +++ b/src/boost/boost/config/compiler/clang.hpp @@ -57,6 +57,14 @@ # define BOOST_HAS_STDINT_H #endif +#if (defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)) && !defined(_CRAYC) +#if (__clang_major__ >= 4) && defined(__has_include) +#if __has_include() +# define BOOST_HAS_FLOAT128 +#endif +#endif +#endif + #define BOOST_HAS_NRVO @@ -232,6 +240,10 @@ # define BOOST_NO_CXX11_ALIGNAS #endif +#if !__has_feature(cxx_alignof) +# define BOOST_NO_CXX11_ALIGNOF +#endif + #if !__has_feature(cxx_trailing_return) # define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #endif @@ -242,6 +254,11 @@ #if !__has_feature(cxx_override_control) # define BOOST_NO_CXX11_FINAL +# define BOOST_NO_CXX11_OVERRIDE +#endif + +#if !__has_feature(cxx_unrestricted_unions) +# define BOOST_NO_CXX11_UNRESTRICTED_UNION #endif #if !(__has_feature(__cxx_binary_literals__) || __has_extension(__cxx_binary_literals__)) @@ -312,11 +329,18 @@ // All versions with __cplusplus above this value seem to support this: # define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif -// -// __builtin_unreachable: -#if defined(__has_builtin) && __has_builtin(__builtin_unreachable) + +// Unreachable code markup +#if defined(__has_builtin) +#if __has_builtin(__builtin_unreachable) #define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable(); #endif +#endif + +// Deprecated symbol markup +#if __has_attribute(deprecated) +#define BOOST_DEPRECATED(msg) __attribute__((deprecated(msg))) +#endif #if (__clang_major__ == 3) && (__clang_minor__ == 0) // Apparently a clang bug: @@ -338,3 +362,5 @@ // Macro used to identify the Clang compiler. #define BOOST_CLANG 1 +// BOOST_CLANG_VERSION +#include diff --git a/src/boost/boost/config/compiler/clang_version.hpp b/src/boost/boost/config/compiler/clang_version.hpp new file mode 100644 index 000000000..68b600b8b --- /dev/null +++ b/src/boost/boost/config/compiler/clang_version.hpp @@ -0,0 +1,83 @@ +// Copyright 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt) + +#if !defined(__APPLE__) + +# define BOOST_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__ % 100) + +#else +# define BOOST_CLANG_REPORTED_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__ % 100) + +// https://en.wikipedia.org/wiki/Xcode#Toolchain_versions + +# if BOOST_CLANG_REPORTED_VERSION >= 140000 +# define BOOST_CLANG_VERSION 140000 + +# elif BOOST_CLANG_REPORTED_VERSION >= 130100 +# define BOOST_CLANG_VERSION 130000 + +# elif BOOST_CLANG_REPORTED_VERSION >= 130000 +# define BOOST_CLANG_VERSION 120000 + +# elif BOOST_CLANG_REPORTED_VERSION >= 120005 +# define BOOST_CLANG_VERSION 110100 + +# elif BOOST_CLANG_REPORTED_VERSION >= 120000 +# define BOOST_CLANG_VERSION 100000 + +# elif BOOST_CLANG_REPORTED_VERSION >= 110003 +# define BOOST_CLANG_VERSION 90000 + +# elif BOOST_CLANG_REPORTED_VERSION >= 110000 +# define BOOST_CLANG_VERSION 80000 + +# elif BOOST_CLANG_REPORTED_VERSION >= 100001 +# define BOOST_CLANG_VERSION 70000 + +# elif BOOST_CLANG_REPORTED_VERSION >= 100000 +# define BOOST_CLANG_VERSION 60001 + +# elif BOOST_CLANG_REPORTED_VERSION >= 90100 +# define BOOST_CLANG_VERSION 50002 + +# elif BOOST_CLANG_REPORTED_VERSION >= 90000 +# define BOOST_CLANG_VERSION 40000 + +# elif BOOST_CLANG_REPORTED_VERSION >= 80000 +# define BOOST_CLANG_VERSION 30900 + +# elif BOOST_CLANG_REPORTED_VERSION >= 70300 +# define BOOST_CLANG_VERSION 30800 + +# elif BOOST_CLANG_REPORTED_VERSION >= 70000 +# define BOOST_CLANG_VERSION 30700 + +# elif BOOST_CLANG_REPORTED_VERSION >= 60100 +# define BOOST_CLANG_VERSION 30600 + +# elif BOOST_CLANG_REPORTED_VERSION >= 60000 +# define BOOST_CLANG_VERSION 30500 + +# elif BOOST_CLANG_REPORTED_VERSION >= 50100 +# define BOOST_CLANG_VERSION 30400 + +# elif BOOST_CLANG_REPORTED_VERSION >= 50000 +# define BOOST_CLANG_VERSION 30300 + +# elif BOOST_CLANG_REPORTED_VERSION >= 40200 +# define BOOST_CLANG_VERSION 30200 + +# elif BOOST_CLANG_REPORTED_VERSION >= 30100 +# define BOOST_CLANG_VERSION 30100 + +# elif BOOST_CLANG_REPORTED_VERSION >= 20100 +# define BOOST_CLANG_VERSION 30000 + +# else +# define BOOST_CLANG_VERSION 20900 + +# endif + +# undef BOOST_CLANG_REPORTED_VERSION +#endif diff --git a/src/boost/boost/config/compiler/codegear.hpp b/src/boost/boost/config/compiler/codegear.hpp index fe5b921e6..26a91af17 100644 --- a/src/boost/boost/config/compiler/codegear.hpp +++ b/src/boost/boost/config/compiler/codegear.hpp @@ -9,18 +9,10 @@ // CodeGear C++ compiler setup: -#if !defined( BOOST_WITH_CODEGEAR_WARNINGS ) -// these warnings occur frequently in optimized template code -# pragma warn -8004 // var assigned value, but never used -# pragma warn -8008 // condition always true/false -# pragma warn -8066 // dead code can never execute -# pragma warn -8104 // static members with ctors not threadsafe -# pragma warn -8105 // reference member in class without ctors -#endif // // versions check: -// last known and checked version is 0x621 -#if (__CODEGEARC__ > 0x621) +// last known and checked version is 0x740 +#if (__CODEGEARC__ > 0x740) # if defined(BOOST_ASSERT_CONFIG) # error "boost: Unknown compiler version - please run the configure tests and report the results" # else @@ -28,6 +20,153 @@ # endif #endif +#ifdef __clang__ // Clang enhanced Windows compiler + +# include "clang.hpp" +# define BOOST_NO_CXX11_THREAD_LOCAL +# define BOOST_NO_CXX11_ATOMIC_SMART_PTR + +// This bug has been reported to Embarcadero + +#if defined(BOOST_HAS_INT128) +#undef BOOST_HAS_INT128 +#endif +#if defined(BOOST_HAS_FLOAT128) +#undef BOOST_HAS_FLOAT128 +#endif + +// The clang-based compilers can not do 128 atomic exchanges + +#define BOOST_ATOMIC_NO_CMPXCHG16B + +// 32 functions are missing from the current RTL in cwchar, so it really can not be used even if it exists + +# define BOOST_NO_CWCHAR + +# ifndef __MT__ /* If compiling in single-threaded mode, assume there is no CXX11_HDR_ATOMIC */ +# define BOOST_NO_CXX11_HDR_ATOMIC +# endif + +/* temporarily disable this until we can link against fegetround fesetround feholdexcept */ + +#define BOOST_NO_FENV_H + +/* Reported this bug to Embarcadero with the latest C++ Builder Rio release */ + +#define BOOST_NO_CXX11_HDR_EXCEPTION + +// +// check for exception handling support: +// +#if !defined(_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) +# define BOOST_NO_EXCEPTIONS +#endif + +/* + +// On non-Win32 platforms let the platform config figure this out: +#ifdef _WIN32 +# define BOOST_HAS_STDINT_H +#endif + +// +// __int64: +// +#if !defined(__STRICT_ANSI__) +# define BOOST_HAS_MS_INT64 +#endif +// +// all versions have a : +// +#if !defined(__STRICT_ANSI__) +# define BOOST_HAS_DIRENT_H +#endif +// +// Disable Win32 support in ANSI mode: +// +# pragma defineonoption BOOST_DISABLE_WIN32 -A +// +// MSVC compatibility mode does some nasty things: +// TODO: look up if this doesn't apply to the whole 12xx range +// +#if defined(_MSC_VER) && (_MSC_VER <= 1200) +# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +# define BOOST_NO_VOID_RETURNS +#endif +// + +*/ + +// Specific settings for Embarcadero drivers +# define BOOST_EMBTC __CODEGEARC__ +# define BOOST_EMBTC_FULL_VER ((__clang_major__ << 16) | \ + (__clang_minor__ << 8) | \ + __clang_patchlevel__ ) + +// Detecting which Embarcadero driver is being used +#if defined(BOOST_EMBTC) +# if defined(_WIN64) +# define BOOST_EMBTC_WIN64 1 +# define BOOST_EMBTC_WINDOWS 1 +# ifndef BOOST_USE_WINDOWS_H +# define BOOST_USE_WINDOWS_H +# endif +# elif defined(_WIN32) +# define BOOST_EMBTC_WIN32C 1 +# define BOOST_EMBTC_WINDOWS 1 +# ifndef BOOST_USE_WINDOWS_H +# define BOOST_USE_WINDOWS_H +# endif +# elif defined(__APPLE__) && defined(__arm__) +# define BOOST_EMBTC_IOSARM 1 +# define BOOST_EMBTC_IOS 1 +# elif defined(__APPLE__) && defined(__aarch64__) +# define BOOST_EMBTC_IOSARM64 1 +# define BOOST_EMBTC_IOS 1 +# elif defined(__ANDROID__) && defined(__arm__) +# define BOOST_EMBTC_AARM 1 +# define BOOST_EMBTC_ANDROID 1 +# elif +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown Embarcadero driver" +# else +# warning "Unknown Embarcadero driver" +# endif /* defined(BOOST_ASSERT_CONFIG) */ +# endif +#endif /* defined(BOOST_EMBTC) */ + +#if defined(BOOST_EMBTC_WINDOWS) + +#if !defined(_chdir) +#define _chdir(x) chdir(x) +#endif + +#if !defined(_dup2) +#define _dup2(x,y) dup2(x,y) +#endif + +#endif + +# undef BOOST_COMPILER +# define BOOST_COMPILER "Embarcadero-Clang C++ version " BOOST_STRINGIZE(__CODEGEARC__) " clang: " __clang_version__ +// # define __CODEGEARC_CLANG__ __CODEGEARC__ +// # define __EMBARCADERO_CLANG__ __CODEGEARC__ +// # define __BORLANDC_CLANG__ __BORLANDC__ + +#else // #if !defined(__clang__) + +# define BOOST_CODEGEARC __CODEGEARC__ +# define BOOST_BORLANDC __BORLANDC__ + +#if !defined( BOOST_WITH_CODEGEAR_WARNINGS ) +// these warnings occur frequently in optimized template code +# pragma warn -8004 // var assigned value, but never used +# pragma warn -8008 // condition always true/false +# pragma warn -8066 // dead code can never execute +# pragma warn -8104 // static members with ctors not threadsafe +# pragma warn -8105 // reference member in class without ctors +#endif + // CodeGear C++ Builder 2009 #if (__CODEGEARC__ <= 0x613) # define BOOST_NO_INTEGRAL_INT64_T @@ -78,6 +217,8 @@ # define BOOST_HAS_PRAGMA_ONCE #endif +#define BOOST_NO_FENV_H + // // C++0x macros: // @@ -119,11 +260,15 @@ #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS #define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_ALIGNOF #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_OVERRIDE #define BOOST_NO_CXX11_THREAD_LOCAL +#define BOOST_NO_CXX11_DECLTYPE_N3276 +#define BOOST_NO_CXX11_UNRESTRICTED_UNION // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) @@ -237,3 +382,4 @@ #define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__) +#endif // #if !defined(__clang__) diff --git a/src/boost/boost/config/compiler/common_edg.hpp b/src/boost/boost/config/compiler/common_edg.hpp index 6adbf406e..6786c9bec 100644 --- a/src/boost/boost/config/compiler/common_edg.hpp +++ b/src/boost/boost/config/compiler/common_edg.hpp @@ -77,37 +77,60 @@ #define BOOST_NO_CXX11_AUTO_DECLARATIONS #define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS -#define BOOST_NO_CXX11_CHAR16_T -#define BOOST_NO_CXX11_CHAR32_T -#define BOOST_NO_CXX11_CONSTEXPR -#define BOOST_NO_CXX11_DECLTYPE -#define BOOST_NO_CXX11_DECLTYPE_N3276 #define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS #define BOOST_NO_CXX11_DELETED_FUNCTIONS #define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS -#define BOOST_NO_CXX11_LAMBDAS #define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS #define BOOST_NO_CXX11_NOEXCEPT #define BOOST_NO_CXX11_NULLPTR -#define BOOST_NO_CXX11_RANGE_BASED_FOR -#define BOOST_NO_CXX11_RAW_LITERALS #define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR #define BOOST_NO_CXX11_SFINAE_EXPR #define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_TEMPLATE_ALIASES -#define BOOST_NO_CXX11_UNICODE_LITERALS -#define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX -#define BOOST_NO_CXX11_USER_DEFINED_LITERALS #define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_ALIGNOF #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_OVERRIDE #define BOOST_NO_CXX11_THREAD_LOCAL +#define BOOST_NO_CXX11_UNRESTRICTED_UNION + +//__cpp_decltype 200707 possibly? +#define BOOST_NO_CXX11_DECLTYPE +#define BOOST_NO_CXX11_DECLTYPE_N3276 + +#if !defined(__cpp_unicode_characters) || (__cpp_unicode_characters < 200704) +# define BOOST_NO_CXX11_CHAR16_T +# define BOOST_NO_CXX11_CHAR32_T +#endif +#if !defined(__cpp_unicode_literals) || (__cpp_unicode_literals < 200710) +# define BOOST_NO_CXX11_UNICODE_LITERALS +#endif +#if !defined(__cpp_user_defined_literals) || (__cpp_user_defined_literals < 200809) +# define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#endif +#if !defined(__cpp_variadic_templates) || (__cpp_variadic_templates < 200704) +# define BOOST_NO_CXX11_VARIADIC_TEMPLATES +#endif +#if !defined(__cpp_constexpr) || (__cpp_constexpr < 200907) +# define BOOST_NO_CXX11_CONSTEXPR +#endif +#if !defined(__cpp_lambdas) || (__cpp_lambdas < 200907) +# define BOOST_NO_CXX11_LAMBDAS +#endif +#if !defined(__cpp_range_based_for) || (__cpp_range_based_for < 200710) +# define BOOST_NO_CXX11_RANGE_BASED_FOR +#endif +#if !defined(__cpp_raw_strings) || (__cpp_raw_strings < 200610) +# define BOOST_NO_CXX11_RAW_LITERALS +#endif + // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) diff --git a/src/boost/boost/config/compiler/cray.hpp b/src/boost/boost/config/compiler/cray.hpp index 979ea69c8..7ad5b54b0 100644 --- a/src/boost/boost/config/compiler/cray.hpp +++ b/src/boost/boost/config/compiler/cray.hpp @@ -201,6 +201,7 @@ #define BOOST_NO_CXX11_DELETED_FUNCTIONS #define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_OVERRIDE #define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_CXX11_LAMBDAS #define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS @@ -220,6 +221,7 @@ #define BOOST_NO_CXX11_USER_DEFINED_LITERALS #define BOOST_NO_CXX11_VARIADIC_MACROS #define BOOST_NO_CXX11_VARIADIC_TEMPLATES +#define BOOST_NO_CXX11_UNRESTRICTED_UNION #define BOOST_NO_SFINAE_EXPR #define BOOST_NO_TWO_PHASE_NAME_LOOKUP @@ -274,6 +276,7 @@ #undef BOOST_NO_CXX11_DELETED_FUNCTIONS #undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS #undef BOOST_NO_CXX11_FINAL +#undef BOOST_NO_CXX11_OVERRIDE #undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS #undef BOOST_NO_CXX11_LAMBDAS #undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS @@ -293,6 +296,7 @@ #undef BOOST_NO_CXX11_USER_DEFINED_LITERALS #undef BOOST_NO_CXX11_VARIADIC_MACROS #undef BOOST_NO_CXX11_VARIADIC_TEMPLATES +#undef BOOST_NO_CXX11_UNRESTRICTED_UNION #undef BOOST_NO_SFINAE_EXPR #undef BOOST_NO_TWO_PHASE_NAME_LOOKUP #undef BOOST_MATH_DISABLE_STD_FPCLASSIFY @@ -344,6 +348,7 @@ #undef BOOST_NO_CXX11_CHAR32_T #undef BOOST_NO_CXX11_INLINE_NAMESPACES #undef BOOST_NO_CXX11_FINAL +#undef BOOST_NO_CXX11_OVERRIDE #undef BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS #undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_CXX11_SFINAE_EXPR // This is correct, even though '*_fail.cpp' test fails. @@ -370,6 +375,7 @@ #if __cplusplus >= 201103L #undef BOOST_NO_CXX11_ALIGNAS +#undef BOOST_NO_CXX11_ALIGNOF #undef BOOST_NO_CXX11_DECLTYPE_N3276 #define BOOST_NO_CXX11_HDR_ATOMIC #undef BOOST_NO_CXX11_HDR_FUNCTIONAL diff --git a/src/boost/boost/config/compiler/digitalmars.hpp b/src/boost/boost/config/compiler/digitalmars.hpp index 51817de7c..9baff234d 100644 --- a/src/boost/boost/config/compiler/digitalmars.hpp +++ b/src/boost/boost/config/compiler/digitalmars.hpp @@ -79,11 +79,14 @@ #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS #define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_ALIGNOF #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_OVERRIDE #define BOOST_NO_CXX11_THREAD_LOCAL +#define BOOST_NO_CXX11_UNRESTRICTED_UNION // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) diff --git a/src/boost/boost/config/compiler/gcc.hpp b/src/boost/boost/config/compiler/gcc.hpp index 4d568e90d..3d88d1ca4 100644 --- a/src/boost/boost/config/compiler/gcc.hpp +++ b/src/boost/boost/config/compiler/gcc.hpp @@ -219,6 +219,7 @@ # define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS # define BOOST_NO_CXX11_RAW_LITERALS # define BOOST_NO_CXX11_UNICODE_LITERALS +# define BOOST_NO_CXX11_ALIGNOF #endif // C++0x features in 4.5.1 and later @@ -232,7 +233,6 @@ // C++0x features in 4.6.n and later // #if (BOOST_GCC_VERSION < 40600) || !defined(BOOST_GCC_CXX11) -#define BOOST_NO_CXX11_CONSTEXPR #define BOOST_NO_CXX11_DEFAULTED_MOVES #define BOOST_NO_CXX11_NOEXCEPT #define BOOST_NO_CXX11_NULLPTR @@ -243,16 +243,19 @@ // C++0x features in 4.7.n and later // #if (BOOST_GCC_VERSION < 40700) || !defined(BOOST_GCC_CXX11) +// Note that while constexpr is partly supported in gcc-4.6 it's a +// pre-std version with several bugs: +# define BOOST_NO_CXX11_CONSTEXPR # define BOOST_NO_CXX11_FINAL # define BOOST_NO_CXX11_TEMPLATE_ALIASES # define BOOST_NO_CXX11_USER_DEFINED_LITERALS # define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS +# define BOOST_NO_CXX11_OVERRIDE #endif // C++0x features in 4.8.n and later // #if (BOOST_GCC_VERSION < 40800) || !defined(BOOST_GCC_CXX11) -# define BOOST_NO_CXX11_ALIGNAS # define BOOST_NO_CXX11_THREAD_LOCAL # define BOOST_NO_CXX11_SFINAE_EXPR #endif @@ -265,6 +268,20 @@ # define BOOST_NO_CXX14_BINARY_LITERALS #endif +// C++0x features in 4.9.n and later +// +#if (BOOST_GCC_VERSION < 40900) || !defined(BOOST_GCC_CXX11) +// Although alignas support is added in gcc 4.8, it does not accept +// dependent constant expressions as an argument until gcc 4.9. +# define BOOST_NO_CXX11_ALIGNAS +#endif + +// C++0x features in 5.1 and later +// +#if (BOOST_GCC_VERSION < 50100) || !defined(BOOST_GCC_CXX11) +# define BOOST_NO_CXX11_UNRESTRICTED_UNION +#endif + // C++14 features in 4.9.0 and later // #if (BOOST_GCC_VERSION < 40900) || (__cplusplus < 201300) @@ -307,9 +324,10 @@ # define BOOST_FALLTHROUGH __attribute__((fallthrough)) #endif -#ifdef __MINGW32__ -// Currently (June 2017) thread_local is broken on mingw for all current compiler releases, see +#if (__GNUC__ < 11) && defined(__MINGW32__) && !defined(__MINGW64__) +// thread_local was broken on mingw for all 32bit compiler releases prior to 11.x, see // https://sourceforge.net/p/mingw-w64/bugs/527/ +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83562 // Not setting this causes program termination on thread exit. #define BOOST_NO_CXX11_THREAD_LOCAL #endif @@ -323,12 +341,18 @@ // Type aliasing hint. Supported since gcc 3.3. #define BOOST_MAY_ALIAS __attribute__((__may_alias__)) -// -// __builtin_unreachable: -#if BOOST_GCC_VERSION >= 40800 +// Unreachable code markup +#if BOOST_GCC_VERSION >= 40500 #define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable(); #endif +// Deprecated symbol markup +#if BOOST_GCC_VERSION >= 40500 +#define BOOST_DEPRECATED(msg) __attribute__((deprecated(msg))) +#else +#define BOOST_DEPRECATED(msg) __attribute__((deprecated)) +#endif + #ifndef BOOST_COMPILER # define BOOST_COMPILER "GNU C++ version " __VERSION__ #endif @@ -342,7 +366,7 @@ // versions check: // we don't know gcc prior to version 3.30: -#if (BOOST_GCC_VERSION< 30300) +#if (BOOST_GCC_VERSION < 30300) # error "Compiler not configured - please reconfigure" #endif // diff --git a/src/boost/boost/config/compiler/gcc_xml.hpp b/src/boost/boost/config/compiler/gcc_xml.hpp index 618577521..bdba02418 100644 --- a/src/boost/boost/config/compiler/gcc_xml.hpp +++ b/src/boost/boost/config/compiler/gcc_xml.hpp @@ -57,11 +57,14 @@ # define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX # define BOOST_NO_CXX11_USER_DEFINED_LITERALS # define BOOST_NO_CXX11_ALIGNAS +# define BOOST_NO_CXX11_ALIGNOF # define BOOST_NO_CXX11_TRAILING_RESULT_TYPES # define BOOST_NO_CXX11_INLINE_NAMESPACES # define BOOST_NO_CXX11_REF_QUALIFIERS # define BOOST_NO_CXX11_FINAL +# define BOOST_NO_CXX11_OVERRIDE # define BOOST_NO_CXX11_THREAD_LOCAL +# define BOOST_NO_CXX11_UNRESTRICTED_UNION // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) diff --git a/src/boost/boost/config/compiler/hp_acc.hpp b/src/boost/boost/config/compiler/hp_acc.hpp index 330bd6090..5bf6c1fcc 100644 --- a/src/boost/boost/config/compiler/hp_acc.hpp +++ b/src/boost/boost/config/compiler/hp_acc.hpp @@ -121,10 +121,12 @@ #define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_USER_DEFINED_LITERALS #define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_ALIGNOF #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_THREAD_LOCAL +#define BOOST_NO_CXX11_UNRESTRICTED_UNION /* See https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443331 and diff --git a/src/boost/boost/config/compiler/intel.hpp b/src/boost/boost/config/compiler/intel.hpp index ae6093009..2203bece9 100644 --- a/src/boost/boost/config/compiler/intel.hpp +++ b/src/boost/boost/config/compiler/intel.hpp @@ -483,6 +483,7 @@ template<> struct assert_intrinsic_wchar_t {}; // BOOST_NO_CXX11_ALIGNAS #if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40800)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 190021730)) # undef BOOST_NO_CXX11_ALIGNAS +# undef BOOST_NO_CXX11_ALIGNOF #endif // BOOST_NO_CXX11_TRAILING_RESULT_TYPES @@ -501,8 +502,15 @@ template<> struct assert_intrinsic_wchar_t {}; #endif // BOOST_NO_CXX11_FINAL +// BOOST_NO_CXX11_OVERRIDE #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40700)) && (!defined(_MSC_VER) || (_MSC_VER >= 1700)) # undef BOOST_NO_CXX11_FINAL +# undef BOOST_NO_CXX11_OVERRIDE +#endif + +// BOOST_NO_CXX11_UNRESTRICTED_UNION +#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 50100)) && (!defined(_MSC_VER)) +# undef BOOST_NO_CXX11_UNRESTRICTED_UNION #endif #endif // defined(BOOST_INTEL_STDCXX0X) diff --git a/src/boost/boost/config/compiler/metrowerks.hpp b/src/boost/boost/config/compiler/metrowerks.hpp index bb06ffb34..05362b136 100644 --- a/src/boost/boost/config/compiler/metrowerks.hpp +++ b/src/boost/boost/config/compiler/metrowerks.hpp @@ -122,11 +122,14 @@ #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS #define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_ALIGNOF #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_OVERRIDE #define BOOST_NO_CXX11_THREAD_LOCAL +#define BOOST_NO_CXX11_UNRESTRICTED_UNION // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) diff --git a/src/boost/boost/config/compiler/mpw.hpp b/src/boost/boost/config/compiler/mpw.hpp index 8977c40e3..9b758d682 100644 --- a/src/boost/boost/config/compiler/mpw.hpp +++ b/src/boost/boost/config/compiler/mpw.hpp @@ -71,11 +71,14 @@ #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS #define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_ALIGNOF #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_OVERRIDE #define BOOST_NO_CXX11_THREAD_LOCAL +#define BOOST_NO_CXX11_UNRESTRICTED_UNION // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) diff --git a/src/boost/boost/config/compiler/nvcc.hpp b/src/boost/boost/config/compiler/nvcc.hpp index 55da64eba..fe560b2c7 100644 --- a/src/boost/boost/config/compiler/nvcc.hpp +++ b/src/boost/boost/config/compiler/nvcc.hpp @@ -22,6 +22,7 @@ // BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device #define BOOST_GPU_ENABLED __host__ __device__ +#if !defined(__clang__) || defined(__NVCC__) // A bug in version 7.0 of CUDA prevents use of variadic templates in some occasions // https://svn.boost.org/trac/boost/ticket/11897 // This is fixed in 7.5. As the following version macro was introduced in 7.5 an existance @@ -38,6 +39,8 @@ # define BOOST_NO_CXX11_CONSTEXPR #endif +#endif + #ifdef __CUDACC__ // // When compiing .cu files, there's a bunch of stuff that doesn't work with msvc: diff --git a/src/boost/boost/config/compiler/pathscale.hpp b/src/boost/boost/config/compiler/pathscale.hpp index 747b97379..1606df6d6 100644 --- a/src/boost/boost/config/compiler/pathscale.hpp +++ b/src/boost/boost/config/compiler/pathscale.hpp @@ -84,11 +84,14 @@ # define BOOST_NO_CXX11_HDR_CHRONO # define BOOST_NO_CXX11_USER_DEFINED_LITERALS # define BOOST_NO_CXX11_ALIGNAS +# define BOOST_NO_CXX11_ALIGNOF # define BOOST_NO_CXX11_TRAILING_RESULT_TYPES # define BOOST_NO_CXX11_INLINE_NAMESPACES # define BOOST_NO_CXX11_REF_QUALIFIERS # define BOOST_NO_CXX11_FINAL +# define BOOST_NO_CXX11_OVERRIDE # define BOOST_NO_CXX11_THREAD_LOCAL +# define BOOST_NO_CXX11_UNRESTRICTED_UNION // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) diff --git a/src/boost/boost/config/compiler/sunpro_cc.hpp b/src/boost/boost/config/compiler/sunpro_cc.hpp index d2aac1aa0..2a6660d51 100644 --- a/src/boost/boost/config/compiler/sunpro_cc.hpp +++ b/src/boost/boost/config/compiler/sunpro_cc.hpp @@ -86,6 +86,12 @@ # define BOOST_SYMBOL_VISIBLE __global #endif +// Deprecated symbol markup +// Oracle Studio 12.4 supports deprecated attribute with a message; this is the first release that supports the attribute. +#if (__SUNPRO_CC >= 0x5130) +#define BOOST_DEPRECATED(msg) __attribute__((deprecated(msg))) +#endif + #if (__SUNPRO_CC < 0x5130) // C++03 features in 12.4: #define BOOST_NO_TWO_PHASE_NAME_LOOKUP @@ -120,9 +126,12 @@ #define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_ALIGNOF #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_OVERRIDE +#define BOOST_NO_CXX11_UNRESTRICTED_UNION #endif #if (__SUNPRO_CC < 0x5140) || (__cplusplus < 201103) diff --git a/src/boost/boost/config/compiler/vacpp.hpp b/src/boost/boost/config/compiler/vacpp.hpp index fdb10ed42..f9ace1e15 100644 --- a/src/boost/boost/config/compiler/vacpp.hpp +++ b/src/boost/boost/config/compiler/vacpp.hpp @@ -133,11 +133,14 @@ # define BOOST_NO_CXX11_VARIADIC_MACROS #endif #define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_ALIGNOF #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_OVERRIDE #define BOOST_NO_CXX11_THREAD_LOCAL +#define BOOST_NO_CXX11_UNRESTRICTED_UNION // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) diff --git a/src/boost/boost/config/compiler/visualc.hpp b/src/boost/boost/config/compiler/visualc.hpp index 66ac5a23b..617efe322 100644 --- a/src/boost/boost/config/compiler/visualc.hpp +++ b/src/boost/boost/config/compiler/visualc.hpp @@ -43,6 +43,9 @@ # error "Compiler not supported or configured - please reconfigure" #endif +// VS2005 (VC8) docs: __assume has been in Visual C++ for multiple releases +#define BOOST_UNREACHABLE_RETURN(x) __assume(0); + #if _MSC_FULL_VER < 180020827 # define BOOST_NO_FENV_H #endif @@ -104,12 +107,20 @@ # define BOOST_NO_RTTI #endif +// Deprecated symbol markup +#if (_MSC_VER >= 1400) +#define BOOST_DEPRECATED(msg) __declspec(deprecated(msg)) +#else +// MSVC 7.1 only supports the attribute without a message +#define BOOST_DEPRECATED(msg) __declspec(deprecated) +#endif + // // TR1 features: // #if (_MSC_VER >= 1700) && defined(_HAS_CXX17) && (_HAS_CXX17 > 0) -// # define BOOST_HAS_TR1_HASH // don't know if this is true yet. -// # define BOOST_HAS_TR1_TYPE_TRAITS // don't know if this is true yet. +// # define BOOST_HAS_TR1_HASH // don't know if this is true yet. +// # define BOOST_HAS_TR1_TYPE_TRAITS // don't know if this is true yet. # define BOOST_HAS_TR1_UNORDERED_MAP # define BOOST_HAS_TR1_UNORDERED_SET #endif @@ -141,6 +152,7 @@ # define BOOST_NO_CXX11_FINAL # define BOOST_NO_CXX11_RANGE_BASED_FOR # define BOOST_NO_CXX11_SCOPED_ENUMS +# define BOOST_NO_CXX11_OVERRIDE #endif // _MSC_VER < 1700 // C++11 features supported by VC++ 12 (aka 2013). @@ -171,6 +183,7 @@ # define BOOST_NO_CXX11_REF_QUALIFIERS # define BOOST_NO_CXX11_USER_DEFINED_LITERALS # define BOOST_NO_CXX11_ALIGNAS +# define BOOST_NO_CXX11_ALIGNOF # define BOOST_NO_CXX11_INLINE_NAMESPACES # define BOOST_NO_CXX11_CHAR16_T # define BOOST_NO_CXX11_CHAR32_T @@ -182,6 +195,7 @@ # define BOOST_NO_CXX14_GENERIC_LAMBDAS # define BOOST_NO_CXX14_DIGIT_SEPARATORS # define BOOST_NO_CXX11_THREAD_LOCAL +# define BOOST_NO_CXX11_UNRESTRICTED_UNION #endif // C++11 features supported by VC++ 14 update 3 (aka 2015) // @@ -202,8 +216,9 @@ #if (_MSC_VER < 1911) || (_MSVC_LANG < 201703) # define BOOST_NO_CXX17_STRUCTURED_BINDINGS # define BOOST_NO_CXX17_IF_CONSTEXPR -# define BOOST_NO_CXX17_HDR_OPTIONAL -# define BOOST_NO_CXX17_HDR_STRING_VIEW +// Let the defaults handle these now: +//# define BOOST_NO_CXX17_HDR_OPTIONAL +//# define BOOST_NO_CXX17_HDR_STRING_VIEW #endif // MSVC including version 14 has not yet completely @@ -230,7 +245,9 @@ // if this is in effect or not, in any case nothing in Boost is currently using this, so we'll just go // on defining it for now: // +#if (_MSC_FULL_VER < 193030705) || (_MSVC_LANG < 202004) # define BOOST_NO_TWO_PHASE_NAME_LOOKUP +#endif #if (_MSC_VER < 1912) || (_MSVC_LANG < 201402) // Supported from msvc-15.5 onwards: @@ -254,7 +271,7 @@ #ifndef BOOST_NO_CXX11_THREAD_LOCAL # define BOOST_NO_CXX11_THREAD_LOCAL #endif -#ifndef BOOST_NO_SFINAE_EXPR +#if !defined(BOOST_NO_SFINAE_EXPR) && !defined(_MSVC_LANG) # define BOOST_NO_SFINAE_EXPR #endif #ifndef BOOST_NO_CXX11_REF_QUALIFIERS @@ -277,6 +294,17 @@ # define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp" #endif +// +// Approximate compiler conformance version +// +#ifdef _MSVC_LANG +# define BOOST_CXX_VERSION _MSVC_LANG +#elif defined(_HAS_CXX17) +# define BOOST_CXX_VERSION 201703L +#elif BOOST_MSVC >= 1916 +# define BOOST_CXX_VERSION 201402L +#endif + #ifndef BOOST_COMPILER // TODO: // these things are mostly bogus. 1200 means version 12.0 of the compiler. The @@ -313,7 +341,7 @@ # endif # else # if _MSC_VER < 1200 - // Note: Versions up to 7.0 aren't supported. + // Note: Versions up to 10.0 aren't supported. # define BOOST_COMPILER_VERSION 5.0 # elif _MSC_VER < 1300 # define BOOST_COMPILER_VERSION 6.0 @@ -335,6 +363,10 @@ # define BOOST_COMPILER_VERSION 14.0 # elif _MSC_VER < 1920 # define BOOST_COMPILER_VERSION 14.1 +# elif _MSC_VER < 1930 +# define BOOST_COMPILER_VERSION 14.2 +# elif _MSC_VER < 1940 +# define BOOST_COMPILER_VERSION 14.3 # else # define BOOST_COMPILER_VERSION _MSC_VER # endif @@ -346,8 +378,8 @@ #include // -// last known and checked version is 19.12.25830.2 (VC++ 2017.3): -#if (_MSC_VER > 1912) +// last known and checked version is 19.3x (VS2022): +#if (_MSC_VER >= 1940) # if defined(BOOST_ASSERT_CONFIG) # error "Boost.Config is older than your current compiler version." # elif !defined(BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE) diff --git a/src/boost/boost/config/compiler/xlcpp.hpp b/src/boost/boost/config/compiler/xlcpp.hpp index 4ab853775..34df5b982 100644 --- a/src/boost/boost/config/compiler/xlcpp.hpp +++ b/src/boost/boost/config/compiler/xlcpp.hpp @@ -184,6 +184,10 @@ # define BOOST_NO_CXX11_ALIGNAS #endif +#if !__has_feature(cxx_alignof) +# define BOOST_NO_CXX11_ALIGNOF +#endif + #if !__has_feature(cxx_trailing_return) # define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #endif @@ -194,6 +198,11 @@ #if !__has_feature(cxx_override_control) # define BOOST_NO_CXX11_FINAL +# define BOOST_NO_CXX11_OVERRIDE +#endif + +#if !__has_feature(cxx_unrestricted_unions) +# define BOOST_NO_CXX11_UNRESTRICTED_UNION #endif #if !(__has_feature(__cxx_binary_literals__) || __has_extension(__cxx_binary_literals__)) @@ -265,6 +274,10 @@ # define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif +// Deprecated symbol markup +#if __has_attribute(deprecated) +#define BOOST_DEPRECATED(msg) __attribute__((deprecated(msg))) +#endif // Unused attribute: #if defined(__GNUC__) && (__GNUC__ >= 4) @@ -283,3 +296,4 @@ // Macro used to identify the Clang compiler. #define BOOST_CLANG 1 +#define BOOST_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) diff --git a/src/boost/boost/config/compiler/xlcpp_zos.hpp b/src/boost/boost/config/compiler/xlcpp_zos.hpp index be463931b..acbf59e79 100644 --- a/src/boost/boost/config/compiler/xlcpp_zos.hpp +++ b/src/boost/boost/config/compiler/xlcpp_zos.hpp @@ -140,7 +140,10 @@ #define BOOST_NO_CXX11_THREAD_LOCAL #define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_OVERRIDE #define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_ALIGNOF +#define BOOST_NO_CXX11_UNRESTRICTED_UNION #define BOOST_NO_CXX14_VARIABLE_TEMPLATES #define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION #define BOOST_NO_CXX14_AGGREGATE_NSDMI diff --git a/src/boost/boost/config/detail/cxx_composite.hpp b/src/boost/boost/config/detail/cxx_composite.hpp new file mode 100644 index 000000000..06b4e2447 --- /dev/null +++ b/src/boost/boost/config/detail/cxx_composite.hpp @@ -0,0 +1,203 @@ +// This file was automatically generated on Sun Jun 5 16:50:18 2022 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-21. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + +#if defined(BOOST_NO_ADL_BARRIER)\ + || defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)\ + || defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)\ + || defined(BOOST_NO_COMPLETE_VALUE_INITIALIZATION)\ + || defined(BOOST_NO_CTYPE_FUNCTIONS)\ + || defined(BOOST_NO_CV_SPECIALIZATIONS)\ + || defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)\ + || defined(BOOST_NO_CWCHAR)\ + || defined(BOOST_NO_CWCTYPE)\ + || defined(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS)\ + || defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS)\ + || defined(BOOST_NO_EXCEPTIONS)\ + || defined(BOOST_NO_EXCEPTION_STD_NAMESPACE)\ + || defined(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS)\ + || defined(BOOST_NO_FENV_H)\ + || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)\ + || defined(BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS)\ + || defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)\ + || defined(BOOST_NO_INTEGRAL_INT64_T)\ + || defined(BOOST_NO_INTRINSIC_WCHAR_T)\ + || defined(BOOST_NO_IOSFWD)\ + || defined(BOOST_NO_IOSTREAM)\ + || defined(BOOST_NO_IS_ABSTRACT)\ + || defined(BOOST_NO_LIMITS)\ + || defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS)\ + || defined(BOOST_NO_LONG_LONG)\ + || defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)\ + || defined(BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS)\ + || defined(BOOST_NO_MEMBER_TEMPLATES)\ + || defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)\ + || defined(BOOST_NO_MEMBER_TEMPLATE_KEYWORD)\ + || defined(BOOST_NO_NESTED_FRIENDSHIP)\ + || defined(BOOST_NO_OPERATORS_IN_NAMESPACE)\ + || defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)\ + || defined(BOOST_NO_POINTER_TO_MEMBER_CONST)\ + || defined(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS)\ + || defined(BOOST_NO_PRIVATE_IN_AGGREGATE)\ + || defined(BOOST_NO_RESTRICT_REFERENCES)\ + || defined(BOOST_NO_RTTI)\ + || defined(BOOST_NO_SFINAE)\ + || defined(BOOST_NO_SFINAE_EXPR)\ + || defined(BOOST_NO_STDC_NAMESPACE)\ + || defined(BOOST_NO_STD_ALLOCATOR)\ + || defined(BOOST_NO_STD_DISTANCE)\ + || defined(BOOST_NO_STD_ITERATOR)\ + || defined(BOOST_NO_STD_ITERATOR_TRAITS)\ + || defined(BOOST_NO_STD_LOCALE)\ + || defined(BOOST_NO_STD_MESSAGES)\ + || defined(BOOST_NO_STD_MIN_MAX)\ + || defined(BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN)\ + || defined(BOOST_NO_STD_TYPEINFO)\ + || defined(BOOST_NO_STD_USE_FACET)\ + || defined(BOOST_NO_STD_WSTREAMBUF)\ + || defined(BOOST_NO_STD_WSTRING)\ + || defined(BOOST_NO_STRINGSTREAM)\ + || defined(BOOST_NO_TEMPLATED_IOSTREAMS)\ + || defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ + || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)\ + || defined(BOOST_NO_TEMPLATE_TEMPLATES)\ + || defined(BOOST_NO_TWO_PHASE_NAME_LOOKUP)\ + || defined(BOOST_NO_TYPEID)\ + || defined(BOOST_NO_TYPENAME_WITH_CTOR)\ + || defined(BOOST_NO_UNREACHABLE_RETURN_DETECTION)\ + || defined(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE)\ + || defined(BOOST_NO_USING_TEMPLATE)\ + || defined(BOOST_NO_VOID_RETURNS) +# define BOOST_NO_CXX03 +#endif + +#if defined(BOOST_NO_CXX03)\ + || defined(BOOST_NO_CXX11_ADDRESSOF)\ + || defined(BOOST_NO_CXX11_ALIGNAS)\ + || defined(BOOST_NO_CXX11_ALLOCATOR)\ + || defined(BOOST_NO_CXX11_AUTO_DECLARATIONS)\ + || defined(BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS)\ + || defined(BOOST_NO_CXX11_CHAR16_T)\ + || defined(BOOST_NO_CXX11_CHAR32_T)\ + || defined(BOOST_NO_CXX11_CONSTEXPR)\ + || defined(BOOST_NO_CXX11_DECLTYPE)\ + || defined(BOOST_NO_CXX11_DECLTYPE_N3276)\ + || defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS)\ + || defined(BOOST_NO_CXX11_DEFAULTED_MOVES)\ + || defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)\ + || defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS)\ + || defined(BOOST_NO_CXX11_EXTERN_TEMPLATE)\ + || defined(BOOST_NO_CXX11_FINAL)\ + || defined(BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS)\ + || defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS)\ + || defined(BOOST_NO_CXX11_HDR_ARRAY)\ + || defined(BOOST_NO_CXX11_HDR_ATOMIC)\ + || defined(BOOST_NO_CXX11_HDR_CHRONO)\ + || defined(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE)\ + || defined(BOOST_NO_CXX11_HDR_EXCEPTION)\ + || defined(BOOST_NO_CXX11_HDR_FORWARD_LIST)\ + || defined(BOOST_NO_CXX11_HDR_FUNCTIONAL)\ + || defined(BOOST_NO_CXX11_HDR_FUTURE)\ + || defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)\ + || defined(BOOST_NO_CXX11_HDR_MUTEX)\ + || defined(BOOST_NO_CXX11_HDR_RANDOM)\ + || defined(BOOST_NO_CXX11_HDR_RATIO)\ + || defined(BOOST_NO_CXX11_HDR_REGEX)\ + || defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR)\ + || defined(BOOST_NO_CXX11_HDR_THREAD)\ + || defined(BOOST_NO_CXX11_HDR_TUPLE)\ + || defined(BOOST_NO_CXX11_HDR_TYPEINDEX)\ + || defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)\ + || defined(BOOST_NO_CXX11_HDR_UNORDERED_MAP)\ + || defined(BOOST_NO_CXX11_HDR_UNORDERED_SET)\ + || defined(BOOST_NO_CXX11_INLINE_NAMESPACES)\ + || defined(BOOST_NO_CXX11_LAMBDAS)\ + || defined(BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS)\ + || defined(BOOST_NO_CXX11_NOEXCEPT)\ + || defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS)\ + || defined(BOOST_NO_CXX11_NULLPTR)\ + || defined(BOOST_NO_CXX11_NUMERIC_LIMITS)\ + || defined(BOOST_NO_CXX11_OVERRIDE)\ + || defined(BOOST_NO_CXX11_POINTER_TRAITS)\ + || defined(BOOST_NO_CXX11_RANGE_BASED_FOR)\ + || defined(BOOST_NO_CXX11_RAW_LITERALS)\ + || defined(BOOST_NO_CXX11_REF_QUALIFIERS)\ + || defined(BOOST_NO_CXX11_RVALUE_REFERENCES)\ + || defined(BOOST_NO_CXX11_SCOPED_ENUMS)\ + || defined(BOOST_NO_CXX11_SFINAE_EXPR)\ + || defined(BOOST_NO_CXX11_SMART_PTR)\ + || defined(BOOST_NO_CXX11_STATIC_ASSERT)\ + || defined(BOOST_NO_CXX11_STD_ALIGN)\ + || defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)\ + || defined(BOOST_NO_CXX11_THREAD_LOCAL)\ + || defined(BOOST_NO_CXX11_TRAILING_RESULT_TYPES)\ + || defined(BOOST_NO_CXX11_UNICODE_LITERALS)\ + || defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)\ + || defined(BOOST_NO_CXX11_UNRESTRICTED_UNION)\ + || defined(BOOST_NO_CXX11_USER_DEFINED_LITERALS)\ + || defined(BOOST_NO_CXX11_VARIADIC_MACROS)\ + || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) +# define BOOST_NO_CXX11 +#endif + +#if defined(BOOST_NO_CXX11)\ + || defined(BOOST_NO_CXX14_AGGREGATE_NSDMI)\ + || defined(BOOST_NO_CXX14_BINARY_LITERALS)\ + || defined(BOOST_NO_CXX14_CONSTEXPR)\ + || defined(BOOST_NO_CXX14_DECLTYPE_AUTO)\ + || defined(BOOST_NO_CXX14_DIGIT_SEPARATORS)\ + || defined(BOOST_NO_CXX14_GENERIC_LAMBDAS)\ + || defined(BOOST_NO_CXX14_HDR_SHARED_MUTEX)\ + || defined(BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES)\ + || defined(BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION)\ + || defined(BOOST_NO_CXX14_STD_EXCHANGE)\ + || defined(BOOST_NO_CXX14_VARIABLE_TEMPLATES) +# define BOOST_NO_CXX14 +#endif + +#if defined(BOOST_NO_CXX14)\ + || defined(BOOST_NO_CXX17_DEDUCTION_GUIDES)\ + || defined(BOOST_NO_CXX17_FOLD_EXPRESSIONS)\ + || defined(BOOST_NO_CXX17_HDR_ANY)\ + || defined(BOOST_NO_CXX17_HDR_CHARCONV)\ + || defined(BOOST_NO_CXX17_HDR_EXECUTION)\ + || defined(BOOST_NO_CXX17_HDR_FILESYSTEM)\ + || defined(BOOST_NO_CXX17_HDR_MEMORY_RESOURCE)\ + || defined(BOOST_NO_CXX17_HDR_OPTIONAL)\ + || defined(BOOST_NO_CXX17_HDR_STRING_VIEW)\ + || defined(BOOST_NO_CXX17_HDR_VARIANT)\ + || defined(BOOST_NO_CXX17_IF_CONSTEXPR)\ + || defined(BOOST_NO_CXX17_INLINE_VARIABLES)\ + || defined(BOOST_NO_CXX17_ITERATOR_TRAITS)\ + || defined(BOOST_NO_CXX17_STD_APPLY)\ + || defined(BOOST_NO_CXX17_STD_INVOKE)\ + || defined(BOOST_NO_CXX17_STRUCTURED_BINDINGS) +# define BOOST_NO_CXX17 +#endif + +#if defined(BOOST_NO_CXX17)\ + || defined(BOOST_NO_CXX20_HDR_BARRIER)\ + || defined(BOOST_NO_CXX20_HDR_BIT)\ + || defined(BOOST_NO_CXX20_HDR_COMPARE)\ + || defined(BOOST_NO_CXX20_HDR_CONCEPTS)\ + || defined(BOOST_NO_CXX20_HDR_COROUTINE)\ + || defined(BOOST_NO_CXX20_HDR_FORMAT)\ + || defined(BOOST_NO_CXX20_HDR_LATCH)\ + || defined(BOOST_NO_CXX20_HDR_NUMBERS)\ + || defined(BOOST_NO_CXX20_HDR_RANGES)\ + || defined(BOOST_NO_CXX20_HDR_SEMAPHORE)\ + || defined(BOOST_NO_CXX20_HDR_SOURCE_LOCATION)\ + || defined(BOOST_NO_CXX20_HDR_SPAN)\ + || defined(BOOST_NO_CXX20_HDR_STOP_TOKEN)\ + || defined(BOOST_NO_CXX20_HDR_SYNCSTREAM)\ + || defined(BOOST_NO_CXX20_HDR_VERSION) +# define BOOST_NO_CXX20 +#endif + diff --git a/src/boost/boost/config/detail/select_compiler_config.hpp b/src/boost/boost/config/detail/select_compiler_config.hpp index 280dd5b34..fbd770d00 100644 --- a/src/boost/boost/config/detail/select_compiler_config.hpp +++ b/src/boost/boost/config/detail/select_compiler_config.hpp @@ -39,7 +39,7 @@ // Intel # define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp" -#elif defined __clang__ && !defined(__ibmxl__) +#elif defined __clang__ && !defined(__ibmxl__) && !defined(__CODEGEARC__) // Clang C++ emulates GCC, so it has to appear early. # define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp" diff --git a/src/boost/boost/config/detail/select_platform_config.hpp b/src/boost/boost/config/detail/select_platform_config.hpp index f84fb8f7d..a31223092 100644 --- a/src/boost/boost/config/detail/select_platform_config.hpp +++ b/src/boost/boost/config/detail/select_platform_config.hpp @@ -88,6 +88,11 @@ #elif defined(__CloudABI__) // Nuxi CloudABI: # define BOOST_PLATFORM_CONFIG "boost/config/platform/cloudabi.hpp" + +#elif defined (__wasm__) +// Web assembly: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/wasm.hpp" + #else # if defined(unix) \ diff --git a/src/boost/boost/config/detail/select_stdlib_config.hpp b/src/boost/boost/config/detail/select_stdlib_config.hpp index 8f16c1a84..4c77a7533 100644 --- a/src/boost/boost/config/detail/select_stdlib_config.hpp +++ b/src/boost/boost/config/detail/select_stdlib_config.hpp @@ -11,10 +11,21 @@ // locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed: -// First include to determine if some version of STLport is in use as the std lib +// First, check if __has_include is available and include can be located, +// otherwise include to determine if some version of STLport is in use as the std lib // (do not rely on this header being included since users can short-circuit this header // if they know whose std lib they are using.) -#ifdef __cplusplus +#if defined(__cplusplus) && defined(__has_include) +# if __has_include() +// It should be safe to include `` when it is present without checking +// the actual C++ language version as it consists solely of macro definitions. +// [version.syn] p1: The header supplies implementation-dependent +// information about the C++ standard library (e.g., version number and release date). +# include +# else +# include +# endif +#elif defined(__cplusplus) # include #else # include diff --git a/src/boost/boost/config/detail/suffix.hpp b/src/boost/boost/config/detail/suffix.hpp index 82eee4144..68d2b11a8 100644 --- a/src/boost/boost/config/detail/suffix.hpp +++ b/src/boost/boost/config/detail/suffix.hpp @@ -35,7 +35,7 @@ #endif // -// ensure that visibility macros are always defined, thus symplifying use +// ensure that visibility macros are always defined, thus simplifying use // #ifndef BOOST_SYMBOL_EXPORT # define BOOST_SYMBOL_EXPORT @@ -47,6 +47,22 @@ # define BOOST_SYMBOL_VISIBLE #endif +// +// disable explicitly enforced visibility +// +#if defined(BOOST_DISABLE_EXPLICIT_SYMBOL_VISIBILITY) + +#undef BOOST_SYMBOL_EXPORT +#define BOOST_SYMBOL_EXPORT + +#undef BOOST_SYMBOL_IMPORT +#define BOOST_SYMBOL_IMPORT + +#undef BOOST_SYMBOL_VISIBLE +#define BOOST_SYMBOL_VISIBLE + +#endif + // // look for long long by looking for the appropriate macros in . // Note that we use limits.h rather than climits for maximal portability, @@ -54,7 +70,7 @@ // no namespace issues from this. // #if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG) \ - && !defined(BOOST_MSVC) && !defined(__BORLANDC__) + && !defined(BOOST_MSVC) && !defined(BOOST_BORLANDC) # include # if (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX)) # define BOOST_HAS_LONG_LONG @@ -475,6 +491,16 @@ namespace std { # define BOOST_CTOR_TYPENAME #endif +// +// If we're on a CUDA device (note DEVICE not HOST, irrespective of compiler) then disable __int128 and __float128 support if present: +// +#if defined(__CUDA_ARCH__) && defined(BOOST_HAS_FLOAT128) +# undef BOOST_HAS_FLOAT128 +#endif +#if defined(__CUDA_ARCH__) && defined(BOOST_HAS_INT128) +# undef BOOST_HAS_INT128 +#endif + // long long workaround ------------------------------------------// // On gcc (and maybe other compilers?) long long is alway supported // but it's use may generate either warnings (with -ansi), or errors @@ -529,10 +555,13 @@ namespace boost { # define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) // When BOOST_NO_STD_TYPEINFO is defined, we can just import -// the global definition into std namespace: -#if defined(BOOST_NO_STD_TYPEINFO) && defined(__cplusplus) +// the global definition into std namespace, +// see https://svn.boost.org/trac10/ticket/4115 +#if defined(BOOST_NO_STD_TYPEINFO) && defined(__cplusplus) && defined(BOOST_MSVC) #include namespace std{ using ::type_info; } +// Since we do now have typeinfo, undef the macro: +#undef BOOST_NO_STD_TYPEINFO #endif // ---------------------------------------------------------------------------// @@ -619,6 +648,9 @@ namespace std{ using ::type_info; } // nvcc doesn't always parse __noinline__, // see: https://svn.boost.org/trac/boost/ticket/9392 # define BOOST_NOINLINE __attribute__ ((noinline)) +# elif defined(__HIP__) + // See https://github.com/boostorg/config/issues/392 +# define BOOST_NOINLINE __attribute__ ((noinline)) # else # define BOOST_NOINLINE __attribute__ ((__noinline__)) # endif @@ -634,7 +666,7 @@ namespace std{ using ::type_info; } #if !defined(BOOST_NORETURN) # if defined(_MSC_VER) # define BOOST_NORETURN __declspec(noreturn) -# elif defined(__GNUC__) +# elif defined(__GNUC__) || defined(__CODEGEARC__) && defined(__clang__) # define BOOST_NORETURN __attribute__ ((__noreturn__)) # elif defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130) # if __has_attribute(noreturn) @@ -652,6 +684,23 @@ namespace std{ using ::type_info; } # define BOOST_NORETURN #endif +// BOOST_DEPRECATED -------------------------------------------// +// The macro can be used to mark deprecated symbols, such as functions, objects and types. +// Any code that uses these symbols will produce warnings, possibly with a message specified +// as an argument. The warnings can be suppressed by defining BOOST_ALLOW_DEPRECATED_SYMBOLS +// or BOOST_ALLOW_DEPRECATED. +#if !defined(BOOST_DEPRECATED) && __cplusplus >= 201402 +#define BOOST_DEPRECATED(msg) [[deprecated(msg)]] +#endif + +#if defined(BOOST_ALLOW_DEPRECATED_SYMBOLS) || defined(BOOST_ALLOW_DEPRECATED) +#undef BOOST_DEPRECATED +#endif + +#if !defined(BOOST_DEPRECATED) +#define BOOST_DEPRECATED(msg) +#endif + // Branch prediction hints // These macros are intended to wrap conditional expressions that yield true or false // @@ -667,6 +716,12 @@ namespace std{ using ::type_info; } # define BOOST_UNLIKELY(x) x #endif +#if !defined(BOOST_NO_CXX11_OVERRIDE) +# define BOOST_OVERRIDE override +#else +# define BOOST_OVERRIDE +#endif + // Type and data alignment specification // #if !defined(BOOST_ALIGNMENT) @@ -943,6 +998,14 @@ namespace std{ using ::type_info; } // ------------------ End of deprecated macros for 1.51 --------------------------- +// +// Helper macro for marking types and methods final +// +#if !defined(BOOST_NO_CXX11_FINAL) +# define BOOST_FINAL final +#else +# define BOOST_FINAL +#endif // // Helper macros BOOST_NOEXCEPT, BOOST_NOEXCEPT_IF, BOOST_NOEXCEPT_EXPR @@ -985,16 +1048,82 @@ namespace std{ using ::type_info; } #else #define BOOST_CXX14_CONSTEXPR constexpr #endif +#if !defined(BOOST_NO_CXX17_STRUCTURED_BINDINGS) && defined(BOOST_NO_CXX11_HDR_TUPLE) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif + +// +// C++17 inline variables +// +#if !defined(BOOST_NO_CXX17_INLINE_VARIABLES) +#define BOOST_INLINE_VARIABLE inline +#else +#define BOOST_INLINE_VARIABLE +#endif +// +// C++17 if constexpr +// +#if !defined(BOOST_NO_CXX17_IF_CONSTEXPR) +# define BOOST_IF_CONSTEXPR if constexpr +#else +# define BOOST_IF_CONSTEXPR if +#endif + +#define BOOST_INLINE_CONSTEXPR BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST // // Unused variable/typedef workarounds: // +#ifndef BOOST_ATTRIBUTE_UNUSED +# if defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130) +# if __has_attribute(maybe_unused) +# define BOOST_ATTRIBUTE_UNUSED [[maybe_unused]] +# endif +# elif defined(__has_cpp_attribute) +# if __has_cpp_attribute(maybe_unused) +# define BOOST_ATTRIBUTE_UNUSED [[maybe_unused]] +# endif +# endif +#endif + #ifndef BOOST_ATTRIBUTE_UNUSED # define BOOST_ATTRIBUTE_UNUSED #endif +// +// [[nodiscard]]: +// +#if defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130) +#if __has_attribute(nodiscard) +# define BOOST_ATTRIBUTE_NODISCARD [[nodiscard]] +#endif +#if __has_attribute(no_unique_address) +# define BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS [[no_unique_address]] +#endif +#elif defined(__has_cpp_attribute) +// clang-6 accepts [[nodiscard]] with -std=c++14, but warns about it -pedantic +#if __has_cpp_attribute(nodiscard) && !(defined(__clang__) && (__cplusplus < 201703L)) && !(defined(__GNUC__) && (__cplusplus < 201100)) +# define BOOST_ATTRIBUTE_NODISCARD [[nodiscard]] +#endif +#if __has_cpp_attribute(no_unique_address) && !(defined(__GNUC__) && (__cplusplus < 201100)) +# define BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS [[no_unique_address]] +#endif +#endif +#ifndef BOOST_ATTRIBUTE_NODISCARD +# define BOOST_ATTRIBUTE_NODISCARD +#endif +#ifndef BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS +# define BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS +#endif + #define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST +#if !defined(BOOST_NO_CXX11_NULLPTR) +# define BOOST_NULLPTR nullptr +#else +# define BOOST_NULLPTR 0 +#endif + // // Set BOOST_HAS_STATIC_ASSERT when BOOST_NO_CXX11_STATIC_ASSERT is not defined // @@ -1024,9 +1153,16 @@ namespace std{ using ::type_info; } #endif // This is a catch all case for obsolete compilers / std libs: -#if !defined(__has_include) +#if !defined(_YVALS) && !defined(_CPPLIB_VER) // msvc std lib already configured +#if (!defined(__has_include) || (__cplusplus < 201700)) # define BOOST_NO_CXX17_HDR_OPTIONAL # define BOOST_NO_CXX17_HDR_STRING_VIEW +# define BOOST_NO_CXX17_HDR_VARIANT +# define BOOST_NO_CXX17_HDR_ANY +# define BOOST_NO_CXX17_HDR_MEMORY_RESOURCE +# define BOOST_NO_CXX17_HDR_CHARCONV +# define BOOST_NO_CXX17_HDR_EXECUTION +# define BOOST_NO_CXX17_HDR_FILESYSTEM #else #if !__has_include() # define BOOST_NO_CXX17_HDR_OPTIONAL @@ -1034,7 +1170,116 @@ namespace std{ using ::type_info; } #if !__has_include() # define BOOST_NO_CXX17_HDR_STRING_VIEW #endif +#if !__has_include() +# define BOOST_NO_CXX17_HDR_VARIANT +#endif +#if !__has_include() +# define BOOST_NO_CXX17_HDR_ANY +#endif +#if !__has_include() +# define BOOST_NO_CXX17_HDR_MEMORY_RESOURCE +#endif +#if !__has_include() +# define BOOST_NO_CXX17_HDR_CHARCONV +#endif +#if !__has_include() +# define BOOST_NO_CXX17_HDR_EXECUTION +#endif +#if !__has_include() +# define BOOST_NO_CXX17_HDR_FILESYSTEM +#endif +#endif +#endif +// +// Define the std level that the compiler claims to support: +// +#ifndef BOOST_CXX_VERSION +# define BOOST_CXX_VERSION __cplusplus +#endif + +#if (!defined(__has_include) || (BOOST_CXX_VERSION < 201704)) +# define BOOST_NO_CXX20_HDR_BARRIER +# define BOOST_NO_CXX20_HDR_FORMAT +# define BOOST_NO_CXX20_HDR_SOURCE_LOCATION +# define BOOST_NO_CXX20_HDR_BIT +# define BOOST_NO_CXX20_HDR_LATCH +# define BOOST_NO_CXX20_HDR_SPAN +# define BOOST_NO_CXX20_HDR_COMPARE +# define BOOST_NO_CXX20_HDR_NUMBERS +# define BOOST_NO_CXX20_HDR_STOP_TOKEN +# define BOOST_NO_CXX20_HDR_CONCEPTS +# define BOOST_NO_CXX20_HDR_RANGES +# define BOOST_NO_CXX20_HDR_SYNCSTREAM +# define BOOST_NO_CXX20_HDR_COROUTINE +# define BOOST_NO_CXX20_HDR_SEMAPHORE +#else +#if (!__has_include() || !defined(__cpp_lib_barrier) || (__cpp_lib_barrier < 201907L)) && !defined(BOOST_NO_CXX20_HDR_BARRIER) +# define BOOST_NO_CXX20_HDR_BARRIER +#endif +#if (!__has_include() || !defined(__cpp_lib_format) || (__cpp_lib_format < 201907L)) && !defined(BOOST_NO_CXX20_HDR_FORMAT) +# define BOOST_NO_CXX20_HDR_FORMAT #endif +#if (!__has_include() || !defined(__cpp_lib_source_location) || (__cpp_lib_source_location < 201907L)) && !defined(BOOST_NO_CXX20_HDR_SOURCE_LOCATION) +# define BOOST_NO_CXX20_HDR_SOURCE_LOCATION +#endif +#if (!__has_include() || !defined(__cpp_lib_bit_cast) || (__cpp_lib_bit_cast < 201806L) || !defined(__cpp_lib_bitops) || (__cpp_lib_bitops < 201907L) || !defined(__cpp_lib_endian) || (__cpp_lib_endian < 201907L)) && !defined(BOOST_NO_CXX20_HDR_BIT) +# define BOOST_NO_CXX20_HDR_BIT +#endif +#if (!__has_include() || !defined(__cpp_lib_latch) || (__cpp_lib_latch < 201907L)) && !defined(BOOST_NO_CXX20_HDR_LATCH) +# define BOOST_NO_CXX20_HDR_LATCH +#endif +#if (!__has_include() || !defined(__cpp_lib_span) || (__cpp_lib_span < 202002L)) && !defined(BOOST_NO_CXX20_HDR_SPAN) +# define BOOST_NO_CXX20_HDR_SPAN +#endif +#if (!__has_include() || !defined(__cpp_lib_three_way_comparison) || (__cpp_lib_three_way_comparison < 201907L)) && !defined(BOOST_NO_CXX20_HDR_COMPARE) +# define BOOST_NO_CXX20_HDR_COMPARE +#endif +#if (!__has_include() || !defined(__cpp_lib_math_constants) || (__cpp_lib_math_constants < 201907L)) && !defined(BOOST_NO_CXX20_HDR_NUMBERS) +# define BOOST_NO_CXX20_HDR_NUMBERS +#endif +#if (!__has_include() || !defined(__cpp_lib_jthread) || (__cpp_lib_jthread < 201911L)) && !defined(BOOST_NO_CXX20_HDR_STOP_TOKEN) +# define BOOST_NO_CXX20_HDR_STOP_TOKEN +#endif +#if (!__has_include() || !defined(__cpp_lib_concepts) || (__cpp_lib_concepts < 202002L)) && !defined(_YVALS) && !defined(_CPPLIB_VER) && !defined(BOOST_NO_CXX20_HDR_CONCEPTS) +# define BOOST_NO_CXX20_HDR_CONCEPTS +#endif +#if (!__has_include() || !defined(__cpp_lib_ranges) || (__cpp_lib_ranges < 201911L)) && !defined(BOOST_NO_CXX20_HDR_RANGES) +# define BOOST_NO_CXX20_HDR_RANGES +#endif +#if (!__has_include() || !defined(__cpp_lib_syncbuf) || (__cpp_lib_syncbuf < 201803L)) && !defined(BOOST_NO_CXX20_HDR_SYNCSTREAM) +# define BOOST_NO_CXX20_HDR_SYNCSTREAM +#endif +#if (!__has_include() || !defined(__cpp_lib_coroutine) || (__cpp_lib_coroutine < 201902L)) && !defined(BOOST_NO_CXX20_HDR_COROUTINE) +# define BOOST_NO_CXX20_HDR_COROUTINE +#endif +#if (!__has_include() || !defined(__cpp_lib_semaphore) || (__cpp_lib_semaphore < 201907L)) && !defined(BOOST_NO_CXX20_HDR_SEMAPHORE) +# define BOOST_NO_CXX20_HDR_SEMAPHORE +#endif +#endif + +#if defined(__cplusplus) && defined(__has_include) +#if !__has_include() +# define BOOST_NO_CXX20_HDR_VERSION +#else +// For convenience, this is always included: +# include +#endif +#else +# define BOOST_NO_CXX20_HDR_VERSION +#endif + +#if defined(BOOST_MSVC) +#if (BOOST_MSVC < 1914) || (_MSVC_LANG < 201703) +# define BOOST_NO_CXX17_DEDUCTION_GUIDES +#endif +#elif !defined(__cpp_deduction_guides) || (__cpp_deduction_guides < 201606) +# define BOOST_NO_CXX17_DEDUCTION_GUIDES +#endif + +// +// Define composite agregate macros: +// +#include // // Finish off with checks for macros that are depricated / no longer supported, diff --git a/src/boost/boost/config/header_deprecated.hpp b/src/boost/boost/config/header_deprecated.hpp index ed7295a28..c622bad80 100644 --- a/src/boost/boost/config/header_deprecated.hpp +++ b/src/boost/boost/config/header_deprecated.hpp @@ -17,7 +17,7 @@ #include -#if defined(BOOST_ALLOW_DEPRECATED_HEADERS) +#if defined(BOOST_ALLOW_DEPRECATED_HEADERS) || defined(BOOST_ALLOW_DEPRECATED) # define BOOST_HEADER_DEPRECATED(a) #else # define BOOST_HEADER_DEPRECATED(a) BOOST_PRAGMA_MESSAGE("This header is deprecated. Use " a " instead.") diff --git a/src/boost/boost/config/platform/bsd.hpp b/src/boost/boost/config/platform/bsd.hpp index 47299597e..d211c48d8 100644 --- a/src/boost/boost/config/platform/bsd.hpp +++ b/src/boost/boost/config/platform/bsd.hpp @@ -28,7 +28,8 @@ // FreeBSD has but does not // advertise the fact in : // -#if (defined(__FreeBSD__) && (__FreeBSD__ >= 3)) || defined(__DragonFly__) +#if (defined(__FreeBSD__) && (__FreeBSD__ >= 3)) \ + || defined(__OpenBSD__) || defined(__DragonFly__) # define BOOST_HAS_NL_TYPES_H #endif @@ -56,7 +57,8 @@ #endif #if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \ - || (defined(__NetBSD_GCC__) && (__NetBSD_GCC__ >= 2095003)) || defined(__DragonFly__)) + || (defined(__NetBSD_GCC__) && (__NetBSD_GCC__ >= 2095003)) \ + || defined(__OpenBSD__) || defined(__DragonFly__)) # define BOOST_NO_CWCHAR #endif // @@ -74,13 +76,8 @@ #define BOOST_HAS_GETTIMEOFDAY #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE #define BOOST_HAS_SIGACTION +#define BOOST_HAS_CLOCK_GETTIME // boilerplate code: #define BOOST_HAS_UNISTD_H #include - - - - - - diff --git a/src/boost/boost/config/platform/cygwin.hpp b/src/boost/boost/config/platform/cygwin.hpp index 40204f7cb..f2f861b04 100644 --- a/src/boost/boost/config/platform/cygwin.hpp +++ b/src/boost/boost/config/platform/cygwin.hpp @@ -42,8 +42,11 @@ # define BOOST_HAS_STDINT_H #endif +#include +#if (CYGWIN_VERSION_API_MAJOR == 0 && CYGWIN_VERSION_API_MINOR < 231) /// Cygwin has no fenv.h #define BOOST_NO_FENV_H +#endif // Cygwin has it's own which breaks unless the correct compiler flags are used: #ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX diff --git a/src/boost/boost/config/platform/vxworks.hpp b/src/boost/boost/config/platform/vxworks.hpp index bfb6b061b..1fd8e1b7f 100644 --- a/src/boost/boost/config/platform/vxworks.hpp +++ b/src/boost/boost/config/platform/vxworks.hpp @@ -12,40 +12,17 @@ // like (GCC 2.96) . Do not even think of getting this to work, // a miserable failure will be guaranteed! // -// Equally, this file has been tested for RTPs (Real Time Processes) -// only, not for DKMs (Downloadable Kernel Modules). These two types -// of executables differ largely in the available functionality of -// the C-library, STL, and so on. A DKM uses a C89 library with no -// wide character support and no guarantee of ANSI C. The same Dinkum +// VxWorks supports C++ linkage in the kernel with +// DKMs (Downloadable Kernel Modules). But, until recently +// the kernel used a C89 library with no +// wide character support and no guarantee of ANSI C. +// Regardless of the C library the same Dinkum // STL library is used in both contexts. // // Similarly the Dinkum abridged STL that supports the loosely specified // embedded C++ standard has not been tested and is unlikely to work // on anything but the simplest library. // ==================================================================== -// -// Additional Configuration -// ------------------------------------------------------------------- -// -// Because of the ordering of include files and other issues the following -// additional definitions worked better outside this file. -// -// When building the log library add the following to the b2 invocation -// define=BOOST_LOG_WITHOUT_IPC -// and -// -DBOOST_LOG_WITHOUT_DEFAULT_FACTORIES -// to your compile options. -// -// When building the test library add -// -DBOOST_TEST_LIMITED_SIGNAL_DETAILS -// to your compile options -// -// When building containers library add -// -DHAVE_MORECORE=0 -// to your c compile options so dlmalloc heap library is compiled -// without brk() calls -// -// ==================================================================== // // Some important information regarding the usage of POSIX semaphores: // ------------------------------------------------------------------- @@ -112,30 +89,20 @@ // -------------------------------- #define BOOST_PLATFORM "vxWorks" -// Special behaviour for DKMs: -#ifdef _WRS_KERNEL - // DKMs do not have the -header, - // but apparently they do have an intrinsic wchar_t meanwhile! -# define BOOST_NO_CWCHAR - - // Lots of wide-functions and -headers are unavailable for DKMs as well: -# define BOOST_NO_CWCTYPE -# define BOOST_NO_SWPRINTF -# define BOOST_NO_STD_WSTRING -# define BOOST_NO_STD_WSTREAMBUF -#endif // Generally available headers: #define BOOST_HAS_UNISTD_H #define BOOST_HAS_STDINT_H #define BOOST_HAS_DIRENT_H -#define BOOST_HAS_SLIST +//#define BOOST_HAS_SLIST // vxWorks does not have installed an iconv-library by default, // so unfortunately no Unicode support from scratch is available! // Thus, instead it is suggested to switch to ICU, as this seems // to be the most complete and portable option... -#define BOOST_LOCALE_WITH_ICU +#ifndef BOOST_LOCALE_WITH_ICU + #define BOOST_LOCALE_WITH_ICU +#endif // Generally available functionality: #define BOOST_HAS_THREADS @@ -170,16 +137,18 @@ # ifndef _POSIX_THREADS # define _POSIX_THREADS 1 # endif +// no sysconf( _SC_PAGESIZE) in kernel +# define BOOST_THREAD_USES_GETPAGESIZE #endif #if (_WRS_VXWORKS_MAJOR < 7) // vxWorks-around: #defines CLOCKS_PER_SEC as sysClkRateGet() but // miserably fails to #include the required to make // sysClkRateGet() available! So we manually include it here. -#ifdef __RTP__ -# include -# include -#endif +# ifdef __RTP__ +# include +# include +# endif // vxWorks-around: In the macros INT32_C(), UINT32_C(), INT64_C() and // UINT64_C() are defined erroneously, yielding not a signed/ @@ -188,30 +157,47 @@ // when trying to define several constants which do not fit into a // long type! We correct them here by redefining. -#include +# include + +// Special behaviour for DKMs: // Some macro-magic to do the job -#define VX_JOIN(X, Y) VX_DO_JOIN(X, Y) -#define VX_DO_JOIN(X, Y) VX_DO_JOIN2(X, Y) -#define VX_DO_JOIN2(X, Y) X##Y +# define VX_JOIN(X, Y) VX_DO_JOIN(X, Y) +# define VX_DO_JOIN(X, Y) VX_DO_JOIN2(X, Y) +# define VX_DO_JOIN2(X, Y) X##Y // Correctly setup the macros -#undef INT32_C -#undef UINT32_C -#undef INT64_C -#undef UINT64_C -#define INT32_C(x) VX_JOIN(x, L) -#define UINT32_C(x) VX_JOIN(x, UL) -#define INT64_C(x) VX_JOIN(x, LL) -#define UINT64_C(x) VX_JOIN(x, ULL) +# undef INT32_C +# undef UINT32_C +# undef INT64_C +# undef UINT64_C +# define INT32_C(x) VX_JOIN(x, L) +# define UINT32_C(x) VX_JOIN(x, UL) +# define INT64_C(x) VX_JOIN(x, LL) +# define UINT64_C(x) VX_JOIN(x, ULL) // #include Libraries required for the following function adaption -#include +# include #endif // _WRS_VXWORKS_MAJOR < 7 #include #include +#if defined(_WRS_KERNEL) && (_CPPLIB_VER < 700) + // recent kernels use Dinkum clib v7.00+ + // with widechar but older kernels + // do not have the -header, + // but apparently they do have an intrinsic wchar_t meanwhile! +# define BOOST_NO_CWCHAR + + // Lots of wide-functions and -headers are unavailable for DKMs as well: +# define BOOST_NO_CWCTYPE +# define BOOST_NO_SWPRINTF +# define BOOST_NO_STD_WSTRING +# define BOOST_NO_STD_WSTREAMBUF +#endif + + // Use C-linkage for the following helper functions #ifdef __cplusplus extern "C" { @@ -253,9 +239,9 @@ inline int truncate(const char *p, off_t l){ } #ifdef __GNUC__ -#define ___unused __attribute__((unused)) +# define ___unused __attribute__((unused)) #else -#define ___unused +# define ___unused #endif // Fake symlink handling by dummy functions: @@ -291,7 +277,7 @@ inline int gettimeofday(struct timeval *tv, void * /*tzv*/) { * to avoid conflict with MPL operator times */ #if (_WRS_VXWORKS_MAJOR < 7) -#ifdef __cplusplus +# ifdef __cplusplus // vxWorks provides neither struct tms nor function times()! // We implement an empty dummy-function, simply setting the user @@ -327,25 +313,25 @@ struct tms{ namespace std { using ::times; } -#endif // __cplusplus +# endif // __cplusplus #endif // _WRS_VXWORKS_MAJOR < 7 #ifdef __cplusplus -extern "C" void bzero (void *, size_t); // FD_ZERO uses bzero() but doesn't include strings.h +extern "C" void bzero (void *, size_t); // FD_ZERO uses bzero() but doesn't include strings.h // Put the selfmade functions into the std-namespace, just in case namespace std { -# ifdef __RTP__ +# ifdef __RTP__ using ::getrlimit; using ::setrlimit; -# endif +# endif using ::truncate; using ::symlink; using ::readlink; -#if (_WRS_VXWORKS_MAJOR < 7) +# if (_WRS_VXWORKS_MAJOR < 7) using ::gettimeofday; -#endif +# endif } #endif // __cplusplus @@ -355,10 +341,12 @@ namespace std { // Include signal.h which might contain a typo to be corrected here #include + #if (_WRS_VXWORKS_MAJOR < 7) -#define getpagesize() sysconf(_SC_PAGESIZE) // getpagesize is deprecated anyway! +# define getpagesize() sysconf(_SC_PAGESIZE) // getpagesize is deprecated anyway! inline int lstat(p, b) { return stat(p, b); } // lstat() == stat(), as vxWorks has no symlinks! #endif + #ifndef S_ISSOCK # define S_ISSOCK(mode) ((mode & S_IFMT) == S_IFSOCK) // Is file a socket? #endif @@ -379,7 +367,7 @@ typedef int locale_t; // locale_t is a POSIX-ex // vxWorks 7 adds C++11 support // however it is optional, and does not match exactly the support determined // by examining the Dinkum STL version and GCC version (or ICC and DCC) -#ifndef _WRS_CONFIG_LANG_LIB_CPLUS_CPLUS_USER_2011 +#if !( defined( _WRS_CONFIG_LANG_LIB_CPLUS_CPLUS_USER_2011) || defined(_WRS_CONFIG_LIBCPLUS_STD)) # define BOOST_NO_CXX11_ADDRESSOF // C11 addressof operator on memory location # define BOOST_NO_CXX11_ALLOCATOR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR @@ -408,9 +396,9 @@ typedef int locale_t; // locale_t is a POSIX-ex # define BOOST_NO_CXX11_HDR_UNORDERED_MAP # define BOOST_NO_CXX11_HDR_UNORDERED_SET #else -#ifndef BOOST_SYSTEM_NO_DEPRECATED -# define BOOST_SYSTEM_NO_DEPRECATED // workaround link error in spirit -#endif +# ifndef BOOST_SYSTEM_NO_DEPRECATED +# define BOOST_SYSTEM_NO_DEPRECATED // workaround link error in spirit +# endif #endif @@ -418,6 +406,8 @@ typedef int locale_t; // locale_t is a POSIX-ex #undef NONE // restrict is an iostreams class #undef restrict +// affects some typeof tests +#undef V7 // use fake poll() from Unix layer in ASIO to get full functionality // most libraries will use select() but this define allows 'iostream' functionality @@ -430,4 +420,3 @@ typedef int locale_t; // locale_t is a POSIX-ex # define BOOST_ASIO_DISABLE_SERIAL_PORT #endif - diff --git a/src/boost/boost/config/platform/wasm.hpp b/src/boost/boost/config/platform/wasm.hpp new file mode 100644 index 000000000..489ba1f22 --- /dev/null +++ b/src/boost/boost/config/platform/wasm.hpp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2020. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// WASM specific config options: + +#define BOOST_PLATFORM "Wasm" + +#ifdef __has_include +#if __has_include() +# define BOOST_HAS_UNISTD_H +#endif +#endif + +// boilerplate code: +#include +// +// fenv lacks the C++11 macros: +// +#define BOOST_NO_FENV_H diff --git a/src/boost/boost/config/requires_threads.hpp b/src/boost/boost/config/requires_threads.hpp index b79723b88..9cbe261dc 100644 --- a/src/boost/boost/config/requires_threads.hpp +++ b/src/boost/boost/config/requires_threads.hpp @@ -54,7 +54,7 @@ // Compaq Tru64 Unix cxx # error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread" -#elif defined __BORLANDC__ +#elif defined BOOST_BORLANDC // Borland # error "Compiler threading support is not turned on. Please set the correct command line options for threading: -tWM" diff --git a/src/boost/boost/config/stdlib/dinkumware.hpp b/src/boost/boost/config/stdlib/dinkumware.hpp index f41534f9f..634538625 100644 --- a/src/boost/boost/config/stdlib/dinkumware.hpp +++ b/src/boost/boost/config/stdlib/dinkumware.hpp @@ -22,7 +22,7 @@ #if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306) // full dinkumware 3.06 and above // fully conforming provided the compiler supports it: -# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(__BORLANDC__) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h +# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(BOOST_BORLANDC) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h # define BOOST_NO_STDC_NAMESPACE # endif # if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC) @@ -68,12 +68,12 @@ // the same applies to other compilers that sit on top // of vc7.1 (Intel and Comeau): // -#if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(__BORLANDC__) +#if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(BOOST_BORLANDC) # define BOOST_STD_EXTENSION_NAMESPACE stdext #endif -#if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(__BORLANDC__)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306) +#if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(BOOST_BORLANDC)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306) // if we're using a dinkum lib that's // been configured for VC6/7 then there is // no iterator traits (true even for icl) @@ -86,20 +86,24 @@ # define BOOST_NO_STD_LOCALE #endif +#if ((defined(BOOST_MSVC) && BOOST_MSVC >= 1400) || (defined(__clang__) && defined(_MSC_VER))) && (_MSC_VER < 1800) // Fix for VC++ 8.0 on up ( I do not have a previous version to test ) // or clang-cl. If exceptions are off you must manually include the // header before including the header. Admittedly // trying to use Boost libraries or the standard C++ libraries without // exception support is not suggested but currently clang-cl ( v 3.4 ) // does not support exceptions and must be compiled with exceptions off. -#if !_HAS_EXCEPTIONS && ((defined(BOOST_MSVC) && BOOST_MSVC >= 1400) || (defined(__clang__) && defined(_MSC_VER))) +#if !_HAS_EXCEPTIONS #include #endif #include -#if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (defined(__ghs__) && !_HAS_NAMESPACE) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) \ - && !defined(__VXWORKS__) +#if !_HAS_EXCEPTIONS # define BOOST_NO_STD_TYPEINFO #endif +#endif +#if defined(__ghs__) && !_HAS_NAMESPACE +# define BOOST_NO_STD_TYPEINFO +#endif // C++0x headers implemented in 520 (as shipped by Microsoft) // @@ -136,6 +140,7 @@ # define BOOST_NO_CXX11_HDR_RATIO # define BOOST_NO_CXX11_HDR_THREAD # define BOOST_NO_CXX11_ATOMIC_SMART_PTR +# define BOOST_NO_CXX11_HDR_EXCEPTION #endif // C++0x headers implemented in 610 (as shipped by Microsoft) @@ -171,14 +176,29 @@ #endif // C++17 features -#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1910) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) +#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) \ + || ((!defined(BOOST_MSVC) || (BOOST_MSVC < 1910))) && (!defined(__clang__) || !defined(_MSC_VER) || (_MSC_VER < 1929))\ + || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) # define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_ITERATOR_TRAITS +# define BOOST_NO_CXX17_HDR_STRING_VIEW +# define BOOST_NO_CXX17_HDR_OPTIONAL +# define BOOST_NO_CXX17_HDR_VARIANT +# define BOOST_NO_CXX17_HDR_ANY +# define BOOST_NO_CXX17_HDR_MEMORY_RESOURCE +# define BOOST_NO_CXX17_HDR_CHARCONV +# define BOOST_NO_CXX17_HDR_EXECUTION +# define BOOST_NO_CXX17_HDR_FILESYSTEM #endif #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) || !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 201709) # define BOOST_NO_CXX17_STD_INVOKE #endif +// C++20 features which aren't configured in suffix.hpp correctly: +#if !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 202008L) || !defined(_HAS_CXX20) || (_HAS_CXX20 == 0) +# define BOOST_NO_CXX20_HDR_CONCEPTS +#endif + #if !(!defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1912) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0)) // Deprecated std::iterator: # define BOOST_NO_STD_ITERATOR @@ -199,7 +219,15 @@ // Bug specific to VC14, // See https://connect.microsoft.com/VisualStudio/feedback/details/1348277/link-error-when-using-std-codecvt-utf8-utf16-char16-t // and discussion here: http://blogs.msdn.com/b/vcblog/archive/2014/11/12/visual-studio-2015-preview-now-available.aspx?PageIndex=2 -#if defined(_CPPLIB_VER) && (_CPPLIB_VER == 650) +#if defined(_CPPLIB_VER) && (_CPPLIB_VER == 650) && (!defined(_MSVC_STL_VERSION) || (_MSVC_STL_VERSION < 142)) +# define BOOST_NO_CXX11_HDR_CODECVT +#endif + +#if (_MSVC_LANG > 201700) && !defined(BOOST_NO_CXX11_HDR_CODECVT) +// +// is deprected as of C++17, and by default MSVC emits hard errors +// if you try to use it, so mark it as unavailable: +// # define BOOST_NO_CXX11_HDR_CODECVT #endif @@ -212,8 +240,16 @@ # define BOOST_NO_CXX98_RANDOM_SHUFFLE # define BOOST_NO_CXX98_FUNCTION_BASE # define BOOST_NO_CXX98_BINDERS +# elif defined(_HAS_DEPRECATED_ADAPTOR_TYPEDEFS) && (_HAS_DEPRECATED_ADAPTOR_TYPEDEFS == 0) +# define BOOST_NO_CXX98_BINDERS # endif #endif +// +// Things deprecated in C++20: +// +#if defined(_HAS_CXX20) +# define BOOST_NO_CXX11_ATOMIC_SMART_PTR +#endif // @@ -251,6 +287,36 @@ # define BOOST_DINKUMWARE_STDLIB 1 #endif +// BOOST_MSSTL_VERSION: as _MSVC_STL_VERSION, but for earlier releases as well + +#if defined(_MSVC_STL_VERSION) // VS2017 (14.1) and above +# define BOOST_MSSTL_VERSION _MSVC_STL_VERSION + +#elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 650 // VS2015 (14.0) +# define BOOST_MSSTL_VERSION 140 + +#elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 610 // VS2013 (12.0) +# define BOOST_MSSTL_VERSION 120 + +#elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 540 // VS2012 (11.0) +# define BOOST_MSSTL_VERSION 110 + +#elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 // VS2010 (10.0) +# define BOOST_MSSTL_VERSION 100 + +#elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 505 // VS2008SP1 (9.0) +# define BOOST_MSSTL_VERSION 91 + +#elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 503 // VS2008 (also 9.0) +# define BOOST_MSSTL_VERSION 90 + +#elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 405 // VS2005 (8.0) +# define BOOST_MSSTL_VERSION 80 + +#endif + +// + #ifdef _CPPLIB_VER # define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER) #else diff --git a/src/boost/boost/config/stdlib/libcomo.hpp b/src/boost/boost/config/stdlib/libcomo.hpp index 5d77b5892..0ddf08ebd 100644 --- a/src/boost/boost/config/stdlib/libcomo.hpp +++ b/src/boost/boost/config/stdlib/libcomo.hpp @@ -39,6 +39,7 @@ # define BOOST_NO_CXX11_HDR_CHRONO # define BOOST_NO_CXX11_HDR_CODECVT # define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +# define BOOST_NO_CXX11_HDR_EXCEPTION # define BOOST_NO_CXX11_HDR_FORWARD_LIST # define BOOST_NO_CXX11_HDR_FUTURE # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST diff --git a/src/boost/boost/config/stdlib/libcpp.hpp b/src/boost/boost/config/stdlib/libcpp.hpp index f00264cf8..9bc2f5615 100644 --- a/src/boost/boost/config/stdlib/libcpp.hpp +++ b/src/boost/boost/config/stdlib/libcpp.hpp @@ -41,6 +41,7 @@ # define BOOST_NO_CXX11_HDR_CODECVT # define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +# define BOOST_NO_CXX11_HDR_EXCEPTION # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST # define BOOST_NO_CXX11_HDR_MUTEX # define BOOST_NO_CXX11_HDR_RANDOM @@ -91,6 +92,7 @@ # define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_HDR_OPTIONAL # define BOOST_NO_CXX17_HDR_STRING_VIEW +# define BOOST_NO_CXX17_HDR_VARIANT #endif #if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR) # define BOOST_NO_AUTO_PTR @@ -102,8 +104,34 @@ # define BOOST_NO_CXX98_BINDERS #endif -#define BOOST_NO_CXX17_ITERATOR_TRAITS +#if defined(__cplusplus) && defined(__has_include) +#if __has_include() +#include + +#if !defined(__cpp_lib_execution) || (__cpp_lib_execution < 201603L) +# define BOOST_NO_CXX17_HDR_EXECUTION +#endif +#if !defined(__cpp_lib_invoke) || (__cpp_lib_invoke < 201411L) +#define BOOST_NO_CXX17_STD_INVOKE +#endif + +#if(_LIBCPP_VERSION < 9000) +// as_writable_bytes is missing. +# define BOOST_NO_CXX20_HDR_SPAN +#endif + +#else +#define BOOST_NO_CXX17_STD_INVOKE // Invoke support is incomplete (no invoke_result) +#define BOOST_NO_CXX17_HDR_EXECUTION +#endif +#else #define BOOST_NO_CXX17_STD_INVOKE // Invoke support is incomplete (no invoke_result) +#define BOOST_NO_CXX17_HDR_EXECUTION +#endif + +#if _LIBCPP_VERSION < 10000 // What's the correct version check here? +#define BOOST_NO_CXX17_ITERATOR_TRAITS +#endif #if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL) // This is a bit of a sledgehammer, because really it's just libc++abi that has no @@ -140,4 +168,13 @@ # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +#if _LIBCPP_VERSION >= 15000 +// +// Unary function is now deprecated in C++11 and later: +// +#if __cplusplus >= 201103L +#define BOOST_NO_CXX98_FUNCTION_BASE +#endif +#endif + // --- end --- diff --git a/src/boost/boost/config/stdlib/libstdcpp3.hpp b/src/boost/boost/config/stdlib/libstdcpp3.hpp index f9354a917..160fd44f8 100644 --- a/src/boost/boost/config/stdlib/libstdcpp3.hpp +++ b/src/boost/boost/config/stdlib/libstdcpp3.hpp @@ -94,6 +94,20 @@ #endif #endif +#if defined(__has_include) +#if defined(BOOST_HAS_HASH) +#if !__has_include(BOOST_HASH_SET_HEADER) || (__GNUC__ >= 10) +#undef BOOST_HAS_HASH +#undef BOOST_HAS_SET_HEADER +#undef BOOST_HAS_MAP_HEADER +#endif +#if !__has_include(BOOST_SLIST_HEADER) +#undef BOOST_HAS_SLIST +#undef BOOST_HAS_SLIST_HEADER +#endif +#endif +#endif + // // Decide whether we have C++11 support turned on: // @@ -125,7 +139,26 @@ // #ifdef __clang__ -#if __has_include() +#ifdef _GLIBCXX_RELEASE +# define BOOST_LIBSTDCXX_VERSION (_GLIBCXX_RELEASE * 10000 + 100) +#else +// +// We figure out which gcc version issued this std lib +// by checking which headers are available: +// +#if __has_include() +# define BOOST_LIBSTDCXX_VERSION 120100 +#elif __has_include() +# define BOOST_LIBSTDCXX_VERSION 110100 +#elif __has_include() +# define BOOST_LIBSTDCXX_VERSION 100100 +#elif __has_include() +# define BOOST_LIBSTDCXX_VERSION 90100 +#elif __has_include() +# define BOOST_LIBSTDCXX_VERSION 80100 +#elif __has_include() +# define BOOST_LIBSTDCXX_VERSION 70100 +#elif __has_include() # define BOOST_LIBSTDCXX_VERSION 60100 #elif __has_include() # define BOOST_LIBSTDCXX_VERSION 50100 @@ -144,6 +177,34 @@ #elif __has_include() # define BOOST_LIBSTDCXX_VERSION 40300 #endif +#endif +// +// If BOOST_HAS_FLOAT128 is set, now that we know the std lib is libstdc++3, check to see if the std lib is +// configured to support this type. If not disable it: +// +#if defined(BOOST_HAS_FLOAT128) && !defined(_GLIBCXX_USE_FLOAT128) +# undef BOOST_HAS_FLOAT128 +#endif + +#if (BOOST_LIBSTDCXX_VERSION >= 100000) && defined(BOOST_HAS_HASH) +// +// hash_set/hash_map deprecated and have terminal bugs: +// +#undef BOOST_HAS_HASH +#undef BOOST_HAS_SET_HEADER +#undef BOOST_HAS_MAP_HEADER +#endif + + +#if (BOOST_LIBSTDCXX_VERSION >= 100000) && defined(BOOST_HAS_HASH) +// +// hash_set/hash_map deprecated and have terminal bugs: +// +#undef BOOST_HAS_HASH +#undef BOOST_HAS_SET_HEADER +#undef BOOST_HAS_MAP_HEADER +#endif + #if (BOOST_LIBSTDCXX_VERSION < 50100) // libstdc++ does not define this function as it's deprecated in C++11, but clang still looks for it, @@ -206,8 +267,9 @@ extern "C" char *gets (char *__s); # if !_GLIBCXX_DEPRECATED # define BOOST_NO_AUTO_PTR # endif -# elif !_GLIBCXX_USE_DEPRECATED +# elif !defined(_GLIBCXX_USE_DEPRECATED) || !_GLIBCXX_USE_DEPRECATED # define BOOST_NO_AUTO_PTR +# define BOOST_NO_CXX98_BINDERS # endif #endif @@ -231,6 +293,7 @@ extern "C" char *gets (char *__s); # define BOOST_NO_CXX11_HDR_RATIO # define BOOST_NO_CXX11_HDR_SYSTEM_ERROR # define BOOST_NO_CXX11_SMART_PTR +# define BOOST_NO_CXX11_HDR_EXCEPTION #else # define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG # define BOOST_HAS_TR1_COMPLEX_OVERLOADS @@ -279,10 +342,6 @@ extern "C" char *gets (char *__s); # define BOOST_NO_CXX14_STD_EXCHANGE #endif -#if defined(__clang_major__) && ((__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 7))) -// As of clang-3.6, libstdc++ header throws up errors with clang: -# define BOOST_NO_CXX11_HDR_ATOMIC -#endif // // C++0x features in GCC 5.1 and later // @@ -301,6 +360,7 @@ extern "C" char *gets (char *__s); # define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_HDR_OPTIONAL # define BOOST_NO_CXX17_HDR_STRING_VIEW +# define BOOST_NO_CXX17_HDR_VARIANT #endif #if defined(__has_include) @@ -309,10 +369,83 @@ extern "C" char *gets (char *__s); #elif __cplusplus <= 201103 # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +// +// has a dependency to Intel's thread building blocks: +// unless these are installed seperately, including leads +// to inscrutable errors inside libstdc++'s own headers. +// +#if (BOOST_LIBSTDCXX_VERSION < 100100) +#if !__has_include() +#define BOOST_NO_CXX17_HDR_EXECUTION +#endif +#endif #elif __cplusplus < 201402 || (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11) # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +#if BOOST_LIBSTDCXX_VERSION < 100100 +// +// The header may be present but is incomplete: +// +# define BOOST_NO_CXX17_HDR_CHARCONV +#endif + +#if BOOST_LIBSTDCXX_VERSION < 110000 +// +// Header may be present but lacks std::bit_cast: +// +#define BOOST_NO_CXX20_HDR_BIT +#endif + +#if BOOST_LIBSTDCXX_VERSION >= 120000 +// +// Unary function is now deprecated in C++11 and later: +// +#if __cplusplus >= 201103L +#define BOOST_NO_CXX98_FUNCTION_BASE +#endif +#endif + +#ifndef __cpp_impl_coroutine +# define BOOST_NO_CXX20_HDR_COROUTINE +#endif + +// +// These next defines are mostly for older clang versions with a newer libstdc++ : +// +#if !defined(__cpp_lib_concepts) +#if !defined(BOOST_NO_CXX20_HDR_COMPARE) +# define BOOST_NO_CXX20_HDR_COMPARE +#endif +#if !defined(BOOST_NO_CXX20_HDR_CONCEPTS) +# define BOOST_NO_CXX20_HDR_CONCEPTS +#endif +#if !defined(BOOST_NO_CXX20_HDR_SPAN) +# define BOOST_NO_CXX20_HDR_SPAN +#endif +#if !defined(BOOST_NO_CXX20_HDR_RANGES) +# define BOOST_NO_CXX20_HDR_RANGES +#endif +#endif + +#if defined(__clang__) +#if (__clang_major__ < 11) && !defined(BOOST_NO_CXX20_HDR_RANGES) +# define BOOST_NO_CXX20_HDR_RANGES +#endif +#if (__clang_major__ < 10) && (BOOST_LIBSTDCXX_VERSION >= 110000) && !defined(BOOST_NO_CXX11_HDR_CHRONO) +// Old clang can't parse : +# define BOOST_NO_CXX11_HDR_CHRONO +# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +#endif +#endif + +#if defined(__clang__) && (BOOST_LIBSTDCXX_VERSION < 40300) && !defined(BOOST_NO_CXX11_NULLPTR) +# define BOOST_NO_CXX11_NULLPTR +#endif +#if defined(__clang__) && (BOOST_LIBSTDCXX_VERSION < 40300) && defined(BOOST_HAS_INT128) && defined(__APPLE_CC__) +#undef BOOST_HAS_INT128 +#endif + // // Headers not present on Solaris with the Oracle compiler: #if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x5140) @@ -341,7 +474,7 @@ extern "C" char *gets (char *__s); # endif #endif -#if (!defined(_GTHREAD_USE_MUTEX_TIMEDLOCK) || (_GTHREAD_USE_MUTEX_TIMEDLOCK == 0)) && !defined(BOOST_NO_CXX11_HDR_MUTEX) +#if (!defined(_GTHREAD_USE_MUTEX_TIMEDLOCK) || (_GTHREAD_USE_MUTEX_TIMEDLOCK == 0)) && !defined(BOOST_NO_CXX11_HDR_MUTEX) && (__GNUC__ < 6) // Timed mutexes are not always available: # define BOOST_NO_CXX11_HDR_MUTEX #endif diff --git a/src/boost/boost/config/stdlib/modena.hpp b/src/boost/boost/config/stdlib/modena.hpp index 9b1b1c839..63a075ba8 100644 --- a/src/boost/boost/config/stdlib/modena.hpp +++ b/src/boost/boost/config/stdlib/modena.hpp @@ -51,6 +51,7 @@ # define BOOST_NO_CXX11_HDR_ATOMIC # define BOOST_NO_CXX11_STD_ALIGN # define BOOST_NO_CXX11_ADDRESSOF +# define BOOST_NO_CXX11_HDR_EXCEPTION #if defined(__has_include) #if !__has_include() diff --git a/src/boost/boost/config/stdlib/msl.hpp b/src/boost/boost/config/stdlib/msl.hpp index ad5649953..139f71845 100644 --- a/src/boost/boost/config/stdlib/msl.hpp +++ b/src/boost/boost/config/stdlib/msl.hpp @@ -75,6 +75,7 @@ # define BOOST_NO_CXX11_HDR_ATOMIC # define BOOST_NO_CXX11_STD_ALIGN # define BOOST_NO_CXX11_ADDRESSOF +# define BOOST_NO_CXX11_HDR_EXCEPTION #if defined(__has_include) #if !__has_include() diff --git a/src/boost/boost/config/stdlib/roguewave.hpp b/src/boost/boost/config/stdlib/roguewave.hpp index f63f79d14..747d4dd53 100644 --- a/src/boost/boost/config/stdlib/roguewave.hpp +++ b/src/boost/boost/config/stdlib/roguewave.hpp @@ -59,7 +59,7 @@ // // Borland version of numeric_limits lacks __int64 specialisation: // -#ifdef __BORLANDC__ +#ifdef BOOST_BORLANDC # define BOOST_NO_MS_INT64_NUMERIC_LIMITS #endif @@ -187,6 +187,7 @@ # define BOOST_NO_CXX11_HDR_ATOMIC # define BOOST_NO_CXX11_STD_ALIGN # define BOOST_NO_CXX11_ADDRESSOF +# define BOOST_NO_CXX11_HDR_EXCEPTION #if defined(__has_include) #if !__has_include() diff --git a/src/boost/boost/config/stdlib/sgi.hpp b/src/boost/boost/config/stdlib/sgi.hpp index b47310a7a..6a568832c 100644 --- a/src/boost/boost/config/stdlib/sgi.hpp +++ b/src/boost/boost/config/stdlib/sgi.hpp @@ -145,6 +145,7 @@ # define BOOST_NO_CXX11_HDR_ATOMIC # define BOOST_NO_CXX11_STD_ALIGN # define BOOST_NO_CXX11_ADDRESSOF +# define BOOST_NO_CXX11_HDR_EXCEPTION #if defined(__has_include) #if !__has_include() diff --git a/src/boost/boost/config/stdlib/stlport.hpp b/src/boost/boost/config/stdlib/stlport.hpp index 0272974cf..503625429 100644 --- a/src/boost/boost/config/stdlib/stlport.hpp +++ b/src/boost/boost/config/stdlib/stlport.hpp @@ -62,11 +62,11 @@ // then the io stream facets are not available in namespace std:: // #ifdef _STLPORT_VERSION -# if !(_STLPORT_VERSION >= 0x500) && !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__) +# if !(_STLPORT_VERSION >= 0x500) && !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(BOOST_BORLANDC) # define BOOST_NO_STD_LOCALE # endif #else -# if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__) +# if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(BOOST_BORLANDC) # define BOOST_NO_STD_LOCALE # endif #endif @@ -128,7 +128,7 @@ // BCB6 does cause problems. If we detect C++ Builder, then don't define // BOOST_NO_STDC_NAMESPACE // -#if !defined(__BORLANDC__) && !defined(__DMC__) +#if !defined(BOOST_BORLANDC) && !defined(__DMC__) // // If STLport is using it's own namespace, and the real names are in // the global namespace, then we duplicate STLport's using declarations @@ -143,7 +143,7 @@ # define BOOST_NO_STDC_NAMESPACE # define BOOST_NO_EXCEPTION_STD_NAMESPACE # endif -#elif defined(__BORLANDC__) && __BORLANDC__ < 0x560 +#elif defined(BOOST_BORLANDC) && BOOST_BORLANDC < 0x560 // STLport doesn't import std::abs correctly: #include namespace std { using ::abs; } @@ -192,7 +192,7 @@ namespace std{ using _STLP_VENDOR_CSTD::strcmp; using _STLP_VENDOR_CSTD::strcpy; // Borland ships a version of STLport with C++ Builder 6 that lacks // hashtables and the like: // -#if defined(__BORLANDC__) && (__BORLANDC__ == 0x560) +#if defined(BOOST_BORLANDC) && (BOOST_BORLANDC == 0x560) # undef BOOST_HAS_HASH #endif @@ -235,6 +235,7 @@ namespace boost { using std::min; using std::max; } # define BOOST_NO_CXX11_HDR_ATOMIC # define BOOST_NO_CXX11_STD_ALIGN # define BOOST_NO_CXX11_ADDRESSOF +# define BOOST_NO_CXX11_HDR_EXCEPTION #if defined(__has_include) #if !__has_include() diff --git a/src/boost/boost/config/stdlib/vacpp.hpp b/src/boost/boost/config/stdlib/vacpp.hpp index 3809a8147..1dacf88ef 100644 --- a/src/boost/boost/config/stdlib/vacpp.hpp +++ b/src/boost/boost/config/stdlib/vacpp.hpp @@ -51,6 +51,7 @@ # define BOOST_NO_CXX11_HDR_ATOMIC # define BOOST_NO_CXX11_STD_ALIGN # define BOOST_NO_CXX11_ADDRESSOF +# define BOOST_NO_CXX11_HDR_EXCEPTION #if defined(__has_include) #if !__has_include() diff --git a/src/boost/boost/config/stdlib/xlcpp_zos.hpp b/src/boost/boost/config/stdlib/xlcpp_zos.hpp index bb3759789..3712ba27a 100644 --- a/src/boost/boost/config/stdlib/xlcpp_zos.hpp +++ b/src/boost/boost/config/stdlib/xlcpp_zos.hpp @@ -50,6 +50,7 @@ #define BOOST_NO_CXX11_HDR_CHRONO #define BOOST_NO_CXX11_HDR_ATOMIC #define BOOST_NO_CXX11_HDR_ARRAY +#define BOOST_NO_CXX11_HDR_EXCEPTION #define BOOST_NO_CXX11_STD_ALIGN #define BOOST_NO_CXX14_STD_EXCHANGE diff --git a/src/boost/boost/config/user.hpp b/src/boost/boost/config/user.hpp index 4d323c370..144139226 100644 --- a/src/boost/boost/config/user.hpp +++ b/src/boost/boost/config/user.hpp @@ -1,8 +1,8 @@ // boost/config/user.hpp ---------------------------------------------------// // (C) Copyright John Maddock 2001. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // Do not check in modified versions of this file, diff --git a/src/boost/boost/config/workaround.hpp b/src/boost/boost/config/workaround.hpp index 5c5043af0..684acf9c6 100644 --- a/src/boost/boost/config/workaround.hpp +++ b/src/boost/boost/config/workaround.hpp @@ -50,6 +50,21 @@ #else #define __CODEGEARC___WORKAROUND_GUARD 0 #endif +#ifndef BOOST_BORLANDC +#define BOOST_BORLANDC_WORKAROUND_GUARD 1 +#else +#define BOOST_BORLANDC_WORKAROUND_GUARD 0 +#endif +#ifndef BOOST_CODEGEARC +#define BOOST_CODEGEARC_WORKAROUND_GUARD 1 +#else +#define BOOST_CODEGEARC_WORKAROUND_GUARD 0 +#endif +#ifndef BOOST_EMBTC +#define BOOST_EMBTC_WORKAROUND_GUARD 1 +#else +#define BOOST_EMBTC_WORKAROUND_GUARD 0 +#endif #ifndef _MSC_VER #define _MSC_VER_WORKAROUND_GUARD 1 #else @@ -177,6 +192,11 @@ #else #define _COMPILER_VERSION_WORKAROUND_GUARD 0 #endif +#ifndef __clang_major__ +#define __clang_major___WORKAROUND_GUARD 1 +#else +#define __clang_major___WORKAROUND_GUARD 0 +#endif #ifndef _RWSTD_VER #define _RWSTD_VER_WORKAROUND_GUARD 1 @@ -239,6 +259,12 @@ #else #define BOOST_INTEL_WORKAROUND_GUARD 0 #endif +#ifndef BOOST_CLANG_VERSION +#define BOOST_CLANG_VERSION_WORKAROUND_GUARD 1 +#else +#define BOOST_CLANG_VERSION_WORKAROUND_GUARD 0 +#endif + // Always define to zero, if it's used it'll be defined my MPL: #define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0 diff --git a/src/boost/boost/container/container_fwd.hpp b/src/boost/boost/container/container_fwd.hpp index c7a17f331..ffe933440 100644 --- a/src/boost/boost/container/container_fwd.hpp +++ b/src/boost/boost/container/container_fwd.hpp @@ -24,7 +24,9 @@ //! - boost::container::vector //! - boost::container::stable_vector //! - boost::container::static_vector +//! - boost::container::small_vector_base //! - boost::container::small_vector +//! - boost::container::devector //! - boost::container::slist //! - boost::container::list //! - boost::container::set @@ -94,97 +96,186 @@ template class new_allocator; template - ,class Options = void> + ,class Allocator = void + ,class Options = void> class vector; template > + ,class Allocator = void > class stable_vector; -template +template < class T + , std::size_t Capacity + , class Options = void> class static_vector; -template < class T, std::size_t N - , class Allocator= new_allocator > +template < class T + , class Allocator = void + , class Options = void > +class small_vector_base; + +template < class T + , std::size_t N + , class Allocator = void + , class Options = void > class small_vector; template > + ,class Allocator = void + ,class Options = void> +class devector; + +template class deque; template > + ,class Allocator = void > class list; template > + ,class Allocator = void > class slist; template - ,class Allocator = new_allocator + ,class Allocator = void ,class Options = void> class set; template - ,class Allocator = new_allocator + ,class Allocator = void ,class Options = void > class multiset; template - ,class Allocator = new_allocator > + ,class Allocator = void ,class Options = void > class map; template - ,class Allocator = new_allocator > + ,class Allocator = void ,class Options = void > class multimap; template - ,class Allocator = new_allocator > + ,class Allocator = void > class flat_set; template - ,class Allocator = new_allocator > + ,class Allocator = void > class flat_multiset; template - ,class Allocator = new_allocator > > + ,class Allocator = void > class flat_map; template - ,class Allocator = new_allocator > > + ,class Allocator = void > class flat_multimap; +#ifndef BOOST_NO_CXX11_TEMPLATE_ALIASES + +//! Alias templates for small_flat_[multi]{set|map} using small_vector as container + +template < class Key + , std::size_t N + , class Compare = std::less + , class SmallVectorAllocator = void + , class SmallVectorOptions = void > +using small_flat_set = flat_set>; + +template < class Key + , std::size_t N + , class Compare = std::less + , class SmallVectorAllocator = void + , class SmallVectorOptions = void > +using small_flat_multiset = flat_multiset>; + +template < class Key + , class T + , std::size_t N + , class Compare = std::less + , class SmallVectorAllocator = void + , class SmallVectorOptions = void > +using small_flat_map = flat_map, N, SmallVectorAllocator, SmallVectorOptions>>; + +template < class Key + , class T + , std::size_t N + , class Compare = std::less + , class SmallVectorAllocator = void + , class SmallVectorOptions = void > +using small_flat_multimap = flat_multimap, N, SmallVectorAllocator, SmallVectorOptions>>; + +#endif // #ifndef BOOST_NO_CXX11_TEMPLATE_ALIASES + + +//! A portable metafunction to obtain a small_flat_set +template < class Key + , std::size_t N + , class Compare = std::less + , class SmallVectorAllocator = void + , class SmallVectorOptions = void > +struct small_flat_set_of +{ + typedef flat_set > type; +}; + +//! A portable metafunction to obtain a small_flat_multiset +template < class Key + , std::size_t N + , class Compare = std::less + , class SmallVectorAllocator = void + , class SmallVectorOptions = void > +struct small_flat_multiset_of +{ + typedef flat_multiset > type; +}; + +//! A portable metafunction to obtain a small_flat_map +template < class Key + , class T + , std::size_t N + , class Compare = std::less + , class SmallVectorAllocator = void + , class SmallVectorOptions = void > +struct small_flat_map_of +{ + typedef flat_map, N, SmallVectorAllocator, SmallVectorOptions> > type; +}; + +//! A portable metafunction to obtain a small_flat_multimap +template < class Key + , class T + , std::size_t N + , class Compare = std::less + , class SmallVectorAllocator = void + , class SmallVectorOptions = void > +struct small_flat_multimap_of +{ + typedef flat_multimap, N, SmallVectorAllocator, SmallVectorOptions> > type; +}; + template - ,class Allocator = new_allocator > + ,class Allocator = void > class basic_string; -typedef basic_string - - ,new_allocator > -string; - -typedef basic_string - - ,new_allocator > -wstring; +typedef basic_string string; +typedef basic_string wstring; static const std::size_t ADP_nodes_per_block = 256u; static const std::size_t ADP_max_free_blocks = 2u; @@ -288,6 +379,7 @@ struct dummy } //detail_really_deep_namespace { +typedef const std::piecewise_construct_t & piecewise_construct_t; #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED diff --git a/src/boost/boost/container/detail/std_fwd.hpp b/src/boost/boost/container/detail/std_fwd.hpp index 9ab3ba929..82f1373a4 100644 --- a/src/boost/boost/container/detail/std_fwd.hpp +++ b/src/boost/boost/container/detail/std_fwd.hpp @@ -53,6 +53,9 @@ struct allocator_arg_t; struct piecewise_construct_t; +template +struct pointer_traits; + BOOST_MOVE_STD_NS_END #include diff --git a/src/boost/boost/container_hash/detail/float_functions.hpp b/src/boost/boost/container_hash/detail/float_functions.hpp deleted file mode 100644 index 56ce01d5e..000000000 --- a/src/boost/boost/container_hash/detail/float_functions.hpp +++ /dev/null @@ -1,336 +0,0 @@ - -// Copyright 2005-2009 Daniel James. -// 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) - -#if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_FLOAT_FUNCTIONS_HPP) -#define BOOST_FUNCTIONAL_HASH_DETAIL_FLOAT_FUNCTIONS_HPP - -#include -#if defined(BOOST_HAS_PRAGMA_ONCE) -#pragma once -#endif - -#include - -// Set BOOST_HASH_CONFORMANT_FLOATS to 1 for libraries known to have -// sufficiently good floating point support to not require any -// workarounds. -// -// When set to 0, the library tries to automatically -// use the best available implementation. This normally works well, but -// breaks when ambiguities are created by odd namespacing of the functions. -// -// Note that if this is set to 0, the library should still take full -// advantage of the platform's floating point support. - -#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) -# define BOOST_HASH_CONFORMANT_FLOATS 0 -#elif defined(__LIBCOMO__) -# define BOOST_HASH_CONFORMANT_FLOATS 0 -#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER) -// Rogue Wave library: -# define BOOST_HASH_CONFORMANT_FLOATS 0 -#elif defined(_LIBCPP_VERSION) -// libc++ -# define BOOST_HASH_CONFORMANT_FLOATS 1 -#elif defined(__GLIBCPP__) || defined(__GLIBCXX__) -// GNU libstdc++ 3 -# if defined(__GNUC__) && __GNUC__ >= 4 -# define BOOST_HASH_CONFORMANT_FLOATS 1 -# else -# define BOOST_HASH_CONFORMANT_FLOATS 0 -# endif -#elif defined(__STL_CONFIG_H) -// generic SGI STL -# define BOOST_HASH_CONFORMANT_FLOATS 0 -#elif defined(__MSL_CPP__) -// MSL standard lib: -# define BOOST_HASH_CONFORMANT_FLOATS 0 -#elif defined(__IBMCPP__) -// VACPP std lib (probably conformant for much earlier version). -# if __IBMCPP__ >= 1210 -# define BOOST_HASH_CONFORMANT_FLOATS 1 -# else -# define BOOST_HASH_CONFORMANT_FLOATS 0 -# endif -#elif defined(MSIPL_COMPILE_H) -// Modena C++ standard library -# define BOOST_HASH_CONFORMANT_FLOATS 0 -#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) -// Dinkumware Library (this has to appear after any possible replacement libraries): -# if _CPPLIB_VER >= 405 -# define BOOST_HASH_CONFORMANT_FLOATS 1 -# else -# define BOOST_HASH_CONFORMANT_FLOATS 0 -# endif -#else -# define BOOST_HASH_CONFORMANT_FLOATS 0 -#endif - -#if BOOST_HASH_CONFORMANT_FLOATS - -// The standard library is known to be compliant, so don't use the -// configuration mechanism. - -namespace boost { - namespace hash_detail { - template - struct call_ldexp { - typedef Float float_type; - inline Float operator()(Float x, int y) const { - return std::ldexp(x, y); - } - }; - - template - struct call_frexp { - typedef Float float_type; - inline Float operator()(Float x, int* y) const { - return std::frexp(x, y); - } - }; - - template - struct select_hash_type - { - typedef Float type; - }; - } -} - -#else // BOOST_HASH_CONFORMANT_FLOATS == 0 - -// The C++ standard requires that the C float functions are overloarded -// for float, double and long double in the std namespace, but some of the older -// library implementations don't support this. On some that don't, the C99 -// float functions (frexpf, frexpl, etc.) are available. -// -// The following tries to automatically detect which are available. - -namespace boost { - namespace hash_detail { - - // Returned by dummy versions of the float functions. - - struct not_found { - // Implicitly convertible to float and long double in order to avoid - // a compile error when the dummy float functions are used. - - inline operator float() const { return 0; } - inline operator long double() const { return 0; } - }; - - // A type for detecting the return type of functions. - - template struct is; - template <> struct is { char x[10]; }; - template <> struct is { char x[20]; }; - template <> struct is { char x[30]; }; - template <> struct is { char x[40]; }; - - // Used to convert the return type of a function to a type for sizeof. - - template is float_type(T); - - // call_ldexp - // - // This will get specialized for float and long double - - template struct call_ldexp - { - typedef double float_type; - - inline double operator()(double a, int b) const - { - using namespace std; - return ldexp(a, b); - } - }; - - // call_frexp - // - // This will get specialized for float and long double - - template struct call_frexp - { - typedef double float_type; - - inline double operator()(double a, int* b) const - { - using namespace std; - return frexp(a, b); - } - }; - } -} - -// A namespace for dummy functions to detect when the actual function we want -// isn't available. ldexpl, ldexpf etc. might be added tby the macros below. -// -// AFAICT these have to be outside of the boost namespace, as if they're in -// the boost namespace they'll always be preferable to any other function -// (since the arguments are built in types, ADL can't be used). - -namespace boost_hash_detect_float_functions { - template boost::hash_detail::not_found ldexp(Float, int); - template boost::hash_detail::not_found frexp(Float, int*); -} - -// Macros for generating specializations of call_ldexp and call_frexp. -// -// check_cpp and check_c99 check if the C++ or C99 functions are available. -// -// Then the call_* functions select an appropriate implementation. -// -// I used c99_func in a few places just to get a unique name. -// -// Important: when using 'using namespace' at namespace level, include as -// little as possible in that namespace, as Visual C++ has an odd bug which -// can cause the namespace to be imported at the global level. This seems to -// happen mainly when there's a template in the same namesapce. - -#define BOOST_HASH_CALL_FLOAT_FUNC(cpp_func, c99_func, type1, type2) \ -namespace boost_hash_detect_float_functions { \ - template \ - boost::hash_detail::not_found c99_func(Float, type2); \ -} \ - \ -namespace boost { \ - namespace hash_detail { \ - namespace c99_func##_detect { \ - using namespace std; \ - using namespace boost_hash_detect_float_functions; \ - \ - struct check { \ - static type1 x; \ - static type2 y; \ - BOOST_STATIC_CONSTANT(bool, cpp = \ - sizeof(float_type(cpp_func(x,y))) \ - == sizeof(is)); \ - BOOST_STATIC_CONSTANT(bool, c99 = \ - sizeof(float_type(c99_func(x,y))) \ - == sizeof(is)); \ - }; \ - } \ - \ - template \ - struct call_c99_##c99_func : \ - boost::hash_detail::call_##cpp_func {}; \ - \ - template <> \ - struct call_c99_##c99_func { \ - typedef type1 float_type; \ - \ - template \ - inline type1 operator()(type1 a, T b) const \ - { \ - using namespace std; \ - return c99_func(a, b); \ - } \ - }; \ - \ - template \ - struct call_cpp_##c99_func : \ - call_c99_##c99_func< \ - ::boost::hash_detail::c99_func##_detect::check::c99 \ - > {}; \ - \ - template <> \ - struct call_cpp_##c99_func { \ - typedef type1 float_type; \ - \ - template \ - inline type1 operator()(type1 a, T b) const \ - { \ - using namespace std; \ - return cpp_func(a, b); \ - } \ - }; \ - \ - template <> \ - struct call_##cpp_func : \ - call_cpp_##c99_func< \ - ::boost::hash_detail::c99_func##_detect::check::cpp \ - > {}; \ - } \ -} - -#define BOOST_HASH_CALL_FLOAT_MACRO(cpp_func, c99_func, type1, type2) \ -namespace boost { \ - namespace hash_detail { \ - \ - template <> \ - struct call_##cpp_func { \ - typedef type1 float_type; \ - inline type1 operator()(type1 x, type2 y) const { \ - return c99_func(x, y); \ - } \ - }; \ - } \ -} - -#if defined(ldexpf) -BOOST_HASH_CALL_FLOAT_MACRO(ldexp, ldexpf, float, int) -#else -BOOST_HASH_CALL_FLOAT_FUNC(ldexp, ldexpf, float, int) -#endif - -#if defined(ldexpl) -BOOST_HASH_CALL_FLOAT_MACRO(ldexp, ldexpl, long double, int) -#else -BOOST_HASH_CALL_FLOAT_FUNC(ldexp, ldexpl, long double, int) -#endif - -#if defined(frexpf) -BOOST_HASH_CALL_FLOAT_MACRO(frexp, frexpf, float, int*) -#else -BOOST_HASH_CALL_FLOAT_FUNC(frexp, frexpf, float, int*) -#endif - -#if defined(frexpl) -BOOST_HASH_CALL_FLOAT_MACRO(frexp, frexpl, long double, int*) -#else -BOOST_HASH_CALL_FLOAT_FUNC(frexp, frexpl, long double, int*) -#endif - -#undef BOOST_HASH_CALL_FLOAT_MACRO -#undef BOOST_HASH_CALL_FLOAT_FUNC - - -namespace boost -{ - namespace hash_detail - { - template - struct select_hash_type_impl { - typedef double type; - }; - - template <> - struct select_hash_type_impl { - typedef float type; - }; - - template <> - struct select_hash_type_impl { - typedef long double type; - }; - - - // select_hash_type - // - // If there is support for a particular floating point type, use that - // otherwise use double (there's always support for double). - - template - struct select_hash_type : select_hash_type_impl< - BOOST_DEDUCED_TYPENAME call_ldexp::float_type, - BOOST_DEDUCED_TYPENAME call_frexp::float_type - > {}; - } -} - -#endif // BOOST_HASH_CONFORMANT_FLOATS - -#endif diff --git a/src/boost/boost/container_hash/detail/hash_float.hpp b/src/boost/boost/container_hash/detail/hash_float.hpp deleted file mode 100644 index 0a8d4d100..000000000 --- a/src/boost/boost/container_hash/detail/hash_float.hpp +++ /dev/null @@ -1,271 +0,0 @@ - -// Copyright 2005-2012 Daniel James. -// 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) - -#if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER) -#define BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER - -#include -#if defined(BOOST_HAS_PRAGMA_ONCE) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(BOOST_MSVC) -#pragma warning(push) -#if BOOST_MSVC >= 1400 -#pragma warning(disable:6294) // Ill-defined for-loop: initial condition does - // not satisfy test. Loop body not executed -#endif -#endif - -// Can we use fpclassify? - -// STLport -#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) -#define BOOST_HASH_USE_FPCLASSIFY 0 - -// GNU libstdc++ 3 -#elif defined(__GLIBCPP__) || defined(__GLIBCXX__) -# if (defined(__USE_ISOC99) || defined(_GLIBCXX_USE_C99_MATH)) && \ - !(defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)) -# define BOOST_HASH_USE_FPCLASSIFY 1 -# else -# define BOOST_HASH_USE_FPCLASSIFY 0 -# endif - -// Everything else -#else -# define BOOST_HASH_USE_FPCLASSIFY 0 -#endif - -namespace boost -{ - namespace hash_detail - { - inline void hash_float_combine(std::size_t& seed, std::size_t value) - { - seed ^= value + (seed<<6) + (seed>>2); - } - - //////////////////////////////////////////////////////////////////////// - // Binary hash function - // - // Only used for floats with known iec559 floats, and certain values in - // numeric_limits - - inline std::size_t hash_binary(char* ptr, std::size_t length) - { - std::size_t seed = 0; - - if (length >= sizeof(std::size_t)) { - std::memcpy(&seed, ptr, sizeof(std::size_t)); - length -= sizeof(std::size_t); - ptr += sizeof(std::size_t); - - while(length >= sizeof(std::size_t)) { - std::size_t buffer = 0; - std::memcpy(&buffer, ptr, sizeof(std::size_t)); - hash_float_combine(seed, buffer); - length -= sizeof(std::size_t); - ptr += sizeof(std::size_t); - } - } - - if (length > 0) { - std::size_t buffer = 0; - std::memcpy(&buffer, ptr, length); - hash_float_combine(seed, buffer); - } - - return seed; - } - - template - struct enable_binary_hash - { - BOOST_STATIC_CONSTANT(bool, value = - std::numeric_limits::is_iec559 && - std::numeric_limits::digits == digits && - std::numeric_limits::radix == 2 && - std::numeric_limits::max_exponent == max_exponent); - }; - - template - inline std::size_t float_hash_impl(Float v, - BOOST_DEDUCED_TYPENAME boost::enable_if_c< - enable_binary_hash::value, - std::size_t>::type) - { - return hash_binary((char*) &v, 4); - } - - - template - inline std::size_t float_hash_impl(Float v, - BOOST_DEDUCED_TYPENAME boost::enable_if_c< - enable_binary_hash::value, - std::size_t>::type) - { - return hash_binary((char*) &v, 8); - } - - template - inline std::size_t float_hash_impl(Float v, - BOOST_DEDUCED_TYPENAME boost::enable_if_c< - enable_binary_hash::value, - std::size_t>::type) - { - return hash_binary((char*) &v, 10); - } - - template - inline std::size_t float_hash_impl(Float v, - BOOST_DEDUCED_TYPENAME boost::enable_if_c< - enable_binary_hash::value, - std::size_t>::type) - { - return hash_binary((char*) &v, 16); - } - - //////////////////////////////////////////////////////////////////////// - // Portable hash function - // - // Used as a fallback when the binary hash function isn't supported. - - template - inline std::size_t float_hash_impl2(T v) - { - boost::hash_detail::call_frexp frexp; - boost::hash_detail::call_ldexp ldexp; - - int exp = 0; - - v = frexp(v, &exp); - - // A postive value is easier to hash, so combine the - // sign with the exponent and use the absolute value. - if(v < 0) { - v = -v; - exp += limits::max_exponent - - limits::min_exponent; - } - - v = ldexp(v, limits::digits); - std::size_t seed = static_cast(v); - v -= static_cast(seed); - - // ceiling(digits(T) * log2(radix(T))/ digits(size_t)) - 1; - std::size_t const length - = (limits::digits * - boost::static_log2::radix>::value - + limits::digits - 1) - / limits::digits; - - for(std::size_t i = 0; i != length; ++i) - { - v = ldexp(v, limits::digits); - std::size_t part = static_cast(v); - v -= static_cast(part); - hash_float_combine(seed, part); - } - - hash_float_combine(seed, static_cast(exp)); - - return seed; - } - -#if !defined(BOOST_HASH_DETAIL_TEST_WITHOUT_GENERIC) - template - inline std::size_t float_hash_impl(T v, ...) - { - typedef BOOST_DEDUCED_TYPENAME select_hash_type::type type; - return float_hash_impl2(static_cast(v)); - } -#endif - } -} - -#if BOOST_HASH_USE_FPCLASSIFY - -#include - -namespace boost -{ - namespace hash_detail - { - template - inline std::size_t float_hash_value(T v) - { -#if defined(fpclassify) - switch (fpclassify(v)) -#elif BOOST_HASH_CONFORMANT_FLOATS - switch (std::fpclassify(v)) -#else - using namespace std; - switch (fpclassify(v)) -#endif - { - case FP_ZERO: - return 0; - case FP_INFINITE: - return (std::size_t)(v > 0 ? -1 : -2); - case FP_NAN: - return (std::size_t)(-3); - case FP_NORMAL: - case FP_SUBNORMAL: - return float_hash_impl(v, 0); - default: - BOOST_ASSERT(0); - return 0; - } - } - } -} - -#else // !BOOST_HASH_USE_FPCLASSIFY - -namespace boost -{ - namespace hash_detail - { - template - inline bool is_zero(T v) - { -#if !defined(__GNUC__) && !defined(__clang__) - return v == 0; -#else - // GCC's '-Wfloat-equal' will complain about comparing - // v to 0, but because it disables warnings for system - // headers it won't complain if you use std::equal_to to - // compare with 0. Resulting in this silliness: - return std::equal_to()(v, 0); -#endif - } - - template - inline std::size_t float_hash_value(T v) - { - return boost::hash_detail::is_zero(v) ? 0 : float_hash_impl(v, 0); - } - } -} - -#endif // BOOST_HASH_USE_FPCLASSIFY - -#undef BOOST_HASH_USE_FPCLASSIFY - -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - -#endif diff --git a/src/boost/boost/container_hash/detail/hash_mix.hpp b/src/boost/boost/container_hash/detail/hash_mix.hpp new file mode 100644 index 000000000..62e71fbc9 --- /dev/null +++ b/src/boost/boost/container_hash/detail/hash_mix.hpp @@ -0,0 +1,113 @@ +// Copyright 2022 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_HASH_DETAIL_HASH_MIX_HPP +#define BOOST_HASH_DETAIL_HASH_MIX_HPP + +#include +#include +#include + +namespace boost +{ +namespace hash_detail +{ + +template struct hash_mix_impl; + +// hash_mix for 64 bit size_t +// +// The general "xmxmx" form of state of the art 64 bit mixers originates +// from Murmur3 by Austin Appleby, which uses the following function as +// its "final mix": +// +// k ^= k >> 33; +// k *= 0xff51afd7ed558ccd; +// k ^= k >> 33; +// k *= 0xc4ceb9fe1a85ec53; +// k ^= k >> 33; +// +// (https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp) +// +// It has subsequently been improved multiple times by different authors +// by changing the constants. The most well known improvement is the +// so-called "variant 13" function by David Stafford: +// +// k ^= k >> 30; +// k *= 0xbf58476d1ce4e5b9; +// k ^= k >> 27; +// k *= 0x94d049bb133111eb; +// k ^= k >> 31; +// +// (https://zimbry.blogspot.com/2011/09/better-bit-mixing-improving-on.html) +// +// This mixing function is used in the splitmix64 RNG: +// http://xorshift.di.unimi.it/splitmix64.c +// +// We use Jon Maiga's implementation from +// http://jonkagstrom.com/mx3/mx3_rev2.html +// +// x ^= x >> 32; +// x *= 0xe9846af9b1a615d; +// x ^= x >> 32; +// x *= 0xe9846af9b1a615d; +// x ^= x >> 28; +// +// An equally good alternative is Pelle Evensen's Moremur: +// +// x ^= x >> 27; +// x *= 0x3C79AC492BA7B653; +// x ^= x >> 33; +// x *= 0x1C69B3F74AC4AE35; +// x ^= x >> 27; +// +// (https://mostlymangling.blogspot.com/2019/12/stronger-better-morer-moremur-better.html) + +template<> struct hash_mix_impl<64> +{ + inline static boost::uint64_t fn( boost::uint64_t x ) + { + boost::uint64_t const m = (boost::uint64_t(0xe9846af) << 32) + 0x9b1a615d; + + x ^= x >> 32; + x *= m; + x ^= x >> 32; + x *= m; + x ^= x >> 28; + + return x; + } +}; + +// hash_mix for 32 bit size_t +// +// We use the "best xmxmx" implementation from +// https://github.com/skeeto/hash-prospector/issues/19 + +template<> struct hash_mix_impl<32> +{ + inline static boost::uint32_t fn( boost::uint32_t x ) + { + boost::uint32_t const m1 = 0x21f0aaad; + boost::uint32_t const m2 = 0x735a2d97; + + x ^= x >> 16; + x *= m1; + x ^= x >> 15; + x *= m2; + x ^= x >> 15; + + return x; + } +}; + +inline std::size_t hash_mix( std::size_t v ) +{ + return hash_mix_impl::fn( v ); +} + +} // namespace hash_detail +} // namespace boost + +#endif // #ifndef BOOST_HASH_DETAIL_HASH_MIX_HPP diff --git a/src/boost/boost/container_hash/detail/hash_range.hpp b/src/boost/boost/container_hash/detail/hash_range.hpp new file mode 100644 index 000000000..19e5bbb05 --- /dev/null +++ b/src/boost/boost/container_hash/detail/hash_range.hpp @@ -0,0 +1,410 @@ +// Copyright 2022 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_HASH_DETAIL_HASH_RANGE_HPP +#define BOOST_HASH_DETAIL_HASH_RANGE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost +{ +namespace hash_detail +{ + +template struct is_char_type: public boost::false_type {}; + +#if CHAR_BIT == 8 + +template<> struct is_char_type: public boost::true_type {}; +template<> struct is_char_type: public boost::true_type {}; +template<> struct is_char_type: public boost::true_type {}; + +#if defined(__cpp_char8_t) && __cpp_char8_t >= 201811L +template<> struct is_char_type: public boost::true_type {}; +#endif + +#if defined(__cpp_lib_byte) && __cpp_lib_byte >= 201603L +template<> struct is_char_type: public boost::true_type {}; +#endif + +#endif + +// generic version + +template +inline typename boost::enable_if_< + !is_char_type::value_type>::value, +std::size_t >::type + hash_range( std::size_t seed, It first, It last ) +{ + for( ; first != last; ++first ) + { + hash_combine::value_type>( seed, *first ); + } + + return seed; +} + +// specialized char[] version, 32 bit + +template inline boost::uint32_t read32le( It p ) +{ + // clang 5+, gcc 5+ figure out this pattern and use a single mov on x86 + // gcc on s390x and power BE even knows how to use load-reverse + + boost::uint32_t w = + static_cast( static_cast( p[0] ) ) | + static_cast( static_cast( p[1] ) ) << 8 | + static_cast( static_cast( p[2] ) ) << 16 | + static_cast( static_cast( p[3] ) ) << 24; + + return w; +} + +#if defined(_MSC_VER) && !defined(__clang__) + +template inline boost::uint32_t read32le( T* p ) +{ + boost::uint32_t w; + + std::memcpy( &w, p, 4 ); + return w; +} + +#endif + +inline boost::uint64_t mul32( boost::uint32_t x, boost::uint32_t y ) +{ + return static_cast( x ) * y; +} + +template +inline typename boost::enable_if_< + is_char_type::value_type>::value && + is_same::iterator_category, std::random_access_iterator_tag>::value && + std::numeric_limits::digits <= 32, +std::size_t>::type + hash_range( std::size_t seed, It first, It last ) +{ + It p = first; + std::size_t n = static_cast( last - first ); + + boost::uint32_t const q = 0x9e3779b9U; + boost::uint32_t const k = 0xe35e67b1U; // q * q + + boost::uint64_t h = mul32( static_cast( seed ) + q, k ); + boost::uint32_t w = static_cast( h & 0xFFFFFFFF ); + + h ^= n; + + while( n >= 4 ) + { + boost::uint32_t v1 = read32le( p ); + + w += q; + h ^= mul32( v1 + w, k ); + + p += 4; + n -= 4; + } + + { + boost::uint32_t v1 = 0; + + if( n >= 1 ) + { + std::size_t const x1 = ( n - 1 ) & 2; // 1: 0, 2: 0, 3: 2 + std::size_t const x2 = n >> 1; // 1: 0, 2: 1, 3: 1 + + v1 = + static_cast( static_cast( p[ static_cast( x1 ) ] ) ) << x1 * 8 | + static_cast( static_cast( p[ static_cast( x2 ) ] ) ) << x2 * 8 | + static_cast( static_cast( p[ 0 ] ) ); + } + + w += q; + h ^= mul32( v1 + w, k ); + } + + w += q; + h ^= mul32( static_cast( h & 0xFFFFFFFF ) + w, static_cast( h >> 32 ) + w + k ); + + return static_cast( h & 0xFFFFFFFF ) ^ static_cast( h >> 32 ); +} + +template +inline typename boost::enable_if_< + is_char_type::value_type>::value && + !is_same::iterator_category, std::random_access_iterator_tag>::value && + std::numeric_limits::digits <= 32, +std::size_t>::type + hash_range( std::size_t seed, It first, It last ) +{ + std::size_t n = 0; + + boost::uint32_t const q = 0x9e3779b9U; + boost::uint32_t const k = 0xe35e67b1U; // q * q + + boost::uint64_t h = mul32( static_cast( seed ) + q, k ); + boost::uint32_t w = static_cast( h & 0xFFFFFFFF ); + + boost::uint32_t v1 = 0; + + for( ;; ) + { + v1 = 0; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ); + ++first; + ++n; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ) << 8; + ++first; + ++n; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ) << 16; + ++first; + ++n; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ) << 24; + ++first; + ++n; + + w += q; + h ^= mul32( v1 + w, k ); + } + + h ^= n; + + w += q; + h ^= mul32( v1 + w, k ); + + w += q; + h ^= mul32( static_cast( h & 0xFFFFFFFF ) + w, static_cast( h >> 32 ) + w + k ); + + return static_cast( h & 0xFFFFFFFF ) ^ static_cast( h >> 32 ); +} + +// specialized char[] version, 64 bit + +template inline boost::uint64_t read64le( It p ) +{ + boost::uint64_t w = + static_cast( static_cast( p[0] ) ) | + static_cast( static_cast( p[1] ) ) << 8 | + static_cast( static_cast( p[2] ) ) << 16 | + static_cast( static_cast( p[3] ) ) << 24 | + static_cast( static_cast( p[4] ) ) << 32 | + static_cast( static_cast( p[5] ) ) << 40 | + static_cast( static_cast( p[6] ) ) << 48 | + static_cast( static_cast( p[7] ) ) << 56; + + return w; +} + +#if defined(_MSC_VER) && !defined(__clang__) + +template inline boost::uint64_t read64le( T* p ) +{ + boost::uint64_t w; + + std::memcpy( &w, p, 8 ); + return w; +} + +#endif + +template +inline typename boost::enable_if_< + is_char_type::value_type>::value && + is_same::iterator_category, std::random_access_iterator_tag>::value && + (std::numeric_limits::digits > 32), +std::size_t>::type + hash_range( std::size_t seed, It first, It last ) +{ + It p = first; + std::size_t n = static_cast( last - first ); + + boost::uint64_t const q = static_cast( 0x9e3779b9 ) << 32 | 0x7f4a7c15; + boost::uint64_t const k = static_cast( 0xdf442d22 ) << 32 | 0xce4859b9; // q * q + + boost::uint64_t w = mulx( seed + q, k ); + boost::uint64_t h = w ^ n; + + while( n >= 8 ) + { + boost::uint64_t v1 = read64le( p ); + + w += q; + h ^= mulx( v1 + w, k ); + + p += 8; + n -= 8; + } + + { + boost::uint64_t v1 = 0; + + if( n >= 4 ) + { + v1 = static_cast( read32le( p + static_cast( n - 4 ) ) ) << ( n - 4 ) * 8 | read32le( p ); + } + else if( n >= 1 ) + { + std::size_t const x1 = ( n - 1 ) & 2; // 1: 0, 2: 0, 3: 2 + std::size_t const x2 = n >> 1; // 1: 0, 2: 1, 3: 1 + + v1 = + static_cast( static_cast( p[ static_cast( x1 ) ] ) ) << x1 * 8 | + static_cast( static_cast( p[ static_cast( x2 ) ] ) ) << x2 * 8 | + static_cast( static_cast( p[ 0 ] ) ); + } + + w += q; + h ^= mulx( v1 + w, k ); + } + + return mulx( h + w, k ); +} + +template +inline typename boost::enable_if_< + is_char_type::value_type>::value && + !is_same::iterator_category, std::random_access_iterator_tag>::value && + (std::numeric_limits::digits > 32), +std::size_t>::type + hash_range( std::size_t seed, It first, It last ) +{ + std::size_t n = 0; + + boost::uint64_t const q = static_cast( 0x9e3779b9 ) << 32 | 0x7f4a7c15; + boost::uint64_t const k = static_cast( 0xdf442d22 ) << 32 | 0xce4859b9; // q * q + + boost::uint64_t w = mulx( seed + q, k ); + boost::uint64_t h = w; + + boost::uint64_t v1 = 0; + + for( ;; ) + { + v1 = 0; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ); + ++first; + ++n; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ) << 8; + ++first; + ++n; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ) << 16; + ++first; + ++n; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ) << 24; + ++first; + ++n; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ) << 32; + ++first; + ++n; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ) << 40; + ++first; + ++n; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ) << 48; + ++first; + ++n; + + if( first == last ) + { + break; + } + + v1 |= static_cast( static_cast( *first ) ) << 56; + ++first; + ++n; + + w += q; + h ^= mulx( v1 + w, k ); + } + + h ^= n; + + w += q; + h ^= mulx( v1 + w, k ); + + return mulx( h + w, k ); +} + +} // namespace hash_detail +} // namespace boost + +#endif // #ifndef BOOST_HASH_DETAIL_HASH_RANGE_HPP diff --git a/src/boost/boost/container_hash/detail/hash_tuple_like.hpp b/src/boost/boost/container_hash/detail/hash_tuple_like.hpp new file mode 100644 index 000000000..79bf18f4c --- /dev/null +++ b/src/boost/boost/container_hash/detail/hash_tuple_like.hpp @@ -0,0 +1,156 @@ +// Copyright 2005-2009 Daniel James. +// Copyright 2021 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_HASH_DETAIL_HASH_TUPLE_LIKE_HPP +#define BOOST_HASH_DETAIL_HASH_TUPLE_LIKE_HPP + +#include +#include +#include +#include +#include +#include + +#if defined(BOOST_NO_CXX11_HDR_TUPLE) + +// no support for tuple-likes + +#else + +#include + +namespace boost +{ +namespace hash_detail +{ + +template +inline +typename boost::enable_if_<(I == std::tuple_size::value), void>::type + hash_combine_tuple_like( std::size_t&, T const& ) +{ +} + +template +inline +typename boost::enable_if_<(I < std::tuple_size::value), void>::type + hash_combine_tuple_like( std::size_t& seed, T const& v ) +{ + using std::get; + boost::hash_combine( seed, get( v ) ); + + boost::hash_detail::hash_combine_tuple_like( seed, v ); +} + +template +inline std::size_t hash_tuple_like( T const& v ) +{ + std::size_t seed = 0; + + boost::hash_detail::hash_combine_tuple_like<0>( seed, v ); + + return seed; +} + +} // namespace hash_detail + +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) + +#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1800) + +template +inline +typename boost::enable_if_< + container_hash::is_tuple_like::value && !container_hash::is_range::value, +std::size_t>::type + hash_value( T const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +#else + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +#endif + +#else + +inline std::size_t hash_value( std::tuple<> const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +template +inline std::size_t hash_value( std::tuple const& v ) +{ + return boost::hash_detail::hash_tuple_like( v ); +} + +#endif // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) + +} // namespace boost + +#endif // #if defined(BOOST_NO_CXX11_HDR_TUPLE) + +#endif // #ifndef BOOST_HASH_DETAIL_HASH_TUPLE_LIKE_HPP diff --git a/src/boost/boost/container_hash/detail/limits.hpp b/src/boost/boost/container_hash/detail/limits.hpp deleted file mode 100644 index 266e2a82b..000000000 --- a/src/boost/boost/container_hash/detail/limits.hpp +++ /dev/null @@ -1,62 +0,0 @@ - -// Copyright 2005-2009 Daniel James. -// 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) -// -// On some platforms std::limits gives incorrect values for long double. -// This tries to work around them. - -#if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER) -#define BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER - -#include -#if defined(BOOST_HAS_PRAGMA_ONCE) -#pragma once -#endif - -#include - -// On OpenBSD, numeric_limits is not reliable for long doubles, but -// the macros defined in are and support long double when STLport -// doesn't. - -#if defined(__OpenBSD__) || defined(_STLP_NO_LONG_DOUBLE) -#include -#endif - -namespace boost -{ - namespace hash_detail - { - template - struct limits : std::numeric_limits {}; - -#if defined(__OpenBSD__) || defined(_STLP_NO_LONG_DOUBLE) - template <> - struct limits - : std::numeric_limits - { - static long double epsilon() { - return LDBL_EPSILON; - } - - static long double (max)() { - return LDBL_MAX; - } - - static long double (min)() { - return LDBL_MIN; - } - - BOOST_STATIC_CONSTANT(int, digits = LDBL_MANT_DIG); - BOOST_STATIC_CONSTANT(int, max_exponent = LDBL_MAX_EXP); - BOOST_STATIC_CONSTANT(int, min_exponent = LDBL_MIN_EXP); -#if defined(_STLP_NO_LONG_DOUBLE) - BOOST_STATIC_CONSTANT(int, radix = FLT_RADIX); -#endif - }; -#endif // __OpenBSD__ - } -} - -#endif diff --git a/src/boost/boost/container_hash/detail/mulx.hpp b/src/boost/boost/container_hash/detail/mulx.hpp new file mode 100644 index 000000000..874bd370f --- /dev/null +++ b/src/boost/boost/container_hash/detail/mulx.hpp @@ -0,0 +1,79 @@ +// Copyright 2022, 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_HASH_DETAIL_MULX_HPP +#define BOOST_HASH_DETAIL_MULX_HPP + +#include +#if defined(_MSC_VER) +# include +#endif + +namespace boost +{ +namespace hash_detail +{ + +#if defined(_MSC_VER) && defined(_M_X64) && !defined(__clang__) + +__forceinline boost::uint64_t mulx( boost::uint64_t x, boost::uint64_t y ) +{ + boost::uint64_t r2; + boost::uint64_t r = _umul128( x, y, &r2 ); + return r ^ r2; +} + +#elif defined(_MSC_VER) && defined(_M_ARM64) && !defined(__clang__) + +__forceinline boost::uint64_t mulx( boost::uint64_t x, boost::uint64_t y ) +{ + boost::uint64_t r = x * y; + boost::uint64_t r2 = __umulh( x, y ); + return r ^ r2; +} + +#elif defined(__SIZEOF_INT128__) + +inline boost::uint64_t mulx( boost::uint64_t x, boost::uint64_t y ) +{ + __uint128_t r = static_cast<__uint128_t>( x ) * y; + return static_cast( r ) ^ static_cast( r >> 64 ); +} + +#else + +inline boost::uint64_t mulx( boost::uint64_t x, boost::uint64_t y ) +{ + boost::uint64_t x1 = static_cast( x ); + boost::uint64_t x2 = x >> 32; + + boost::uint64_t y1 = static_cast( y ); + boost::uint64_t y2 = y >> 32; + + boost::uint64_t r3 = x2 * y2; + + boost::uint64_t r2a = x1 * y2; + + r3 += r2a >> 32; + + boost::uint64_t r2b = x2 * y1; + + r3 += r2b >> 32; + + boost::uint64_t r1 = x1 * y1; + + boost::uint64_t r2 = (r1 >> 32) + static_cast( r2a ) + static_cast( r2b ); + + r1 = (r2 << 32) + static_cast( r1 ); + r3 += r2 >> 32; + + return r1 ^ r3; +} + +#endif + +} // namespace hash_detail +} // namespace boost + +#endif // #ifndef BOOST_HASH_DETAIL_MULX_HPP diff --git a/src/boost/boost/container_hash/detail/requires_cxx11.hpp b/src/boost/boost/container_hash/detail/requires_cxx11.hpp new file mode 100644 index 000000000..91638f4ac --- /dev/null +++ b/src/boost/boost/container_hash/detail/requires_cxx11.hpp @@ -0,0 +1,22 @@ +#ifndef BOOST_HASH_DETAIL_REQUIRES_CXX11_HPP_INCLUDED +#define BOOST_HASH_DETAIL_REQUIRES_CXX11_HPP_INCLUDED + +// Copyright 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include + +#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || \ + defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + defined(BOOST_NO_CXX11_DECLTYPE) || \ + defined(BOOST_NO_CXX11_CONSTEXPR) || \ + defined(BOOST_NO_CXX11_NOEXCEPT) || \ + defined(BOOST_NO_CXX11_HDR_TUPLE) + +BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.ContainerHash 1.82 and will be removed in Boost.ContainerHash 1.84. Please open an issue in https://github.com/boostorg/container_hash if you want it retained.") + +#endif + +#endif // #ifndef BOOST_HASH_DETAIL_REQUIRES_CXX11_HPP_INCLUDED diff --git a/src/boost/boost/container_hash/extensions.hpp b/src/boost/boost/container_hash/extensions.hpp deleted file mode 100644 index 0c20dc523..000000000 --- a/src/boost/boost/container_hash/extensions.hpp +++ /dev/null @@ -1,414 +0,0 @@ - -// Copyright 2005-2009 Daniel James. -// 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) - -// Based on Peter Dimov's proposal -// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf -// issue 6.18. - -// This implements the extensions to the standard. -// It's undocumented, so you shouldn't use it.... - -#if !defined(BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP) -#define BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP - -#include -#if defined(BOOST_HAS_PRAGMA_ONCE) -#pragma once -#endif - -#include -#include -#include -#include -#include - -#if !defined(BOOST_NO_CXX11_HDR_ARRAY) -# include -#endif - -#if !defined(BOOST_NO_CXX11_HDR_TUPLE) -# include -#endif - -#if !defined(BOOST_NO_CXX11_HDR_MEMORY) -# include -#endif - -#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) -#include -#endif - -namespace boost -{ - template - std::size_t hash_value(std::pair const&); - template - std::size_t hash_value(std::vector const&); - template - std::size_t hash_value(std::list const& v); - template - std::size_t hash_value(std::deque const& v); - template - std::size_t hash_value(std::set const& v); - template - std::size_t hash_value(std::multiset const& v); - template - std::size_t hash_value(std::map const& v); - template - std::size_t hash_value(std::multimap const& v); - - template - std::size_t hash_value(std::complex const&); - - template - std::size_t hash_value(std::pair const& v) - { - std::size_t seed = 0; - boost::hash_combine(seed, v.first); - boost::hash_combine(seed, v.second); - return seed; - } - - inline std::size_t hash_range( - std::vector::iterator first, - std::vector::iterator last) - { - std::size_t seed = 0; - - for(; first != last; ++first) - { - hash_combine(seed, *first); - } - - return seed; - } - - inline std::size_t hash_range( - std::vector::const_iterator first, - std::vector::const_iterator last) - { - std::size_t seed = 0; - - for(; first != last; ++first) - { - hash_combine(seed, *first); - } - - return seed; - } - - inline void hash_range( - std::size_t& seed, - std::vector::iterator first, - std::vector::iterator last) - { - for(; first != last; ++first) - { - hash_combine(seed, *first); - } - } - - inline void hash_range( - std::size_t& seed, - std::vector::const_iterator first, - std::vector::const_iterator last) - { - for(; first != last; ++first) - { - hash_combine(seed, *first); - } - } - - template - std::size_t hash_value(std::vector const& v) - { - return boost::hash_range(v.begin(), v.end()); - } - - template - std::size_t hash_value(std::list const& v) - { - return boost::hash_range(v.begin(), v.end()); - } - - template - std::size_t hash_value(std::deque const& v) - { - return boost::hash_range(v.begin(), v.end()); - } - - template - std::size_t hash_value(std::set const& v) - { - return boost::hash_range(v.begin(), v.end()); - } - - template - std::size_t hash_value(std::multiset const& v) - { - return boost::hash_range(v.begin(), v.end()); - } - - template - std::size_t hash_value(std::map const& v) - { - return boost::hash_range(v.begin(), v.end()); - } - - template - std::size_t hash_value(std::multimap const& v) - { - return boost::hash_range(v.begin(), v.end()); - } - - template - std::size_t hash_value(std::complex const& v) - { - boost::hash hasher; - std::size_t seed = hasher(v.imag()); - seed ^= hasher(v.real()) + (seed<<6) + (seed>>2); - return seed; - } - -#if !defined(BOOST_NO_CXX11_HDR_ARRAY) - template - std::size_t hash_value(std::array const& v) - { - return boost::hash_range(v.begin(), v.end()); - } -#endif - -#if !defined(BOOST_NO_CXX11_HDR_TUPLE) - namespace hash_detail { - template - inline typename boost::enable_if_c<(I == std::tuple_size::value), - void>::type - hash_combine_tuple(std::size_t&, T const&) - { - } - - template - inline typename boost::enable_if_c<(I < std::tuple_size::value), - void>::type - hash_combine_tuple(std::size_t& seed, T const& v) - { - boost::hash_combine(seed, std::get(v)); - boost::hash_detail::hash_combine_tuple(seed, v); - } - - template - inline std::size_t hash_tuple(T const& v) - { - std::size_t seed = 0; - boost::hash_detail::hash_combine_tuple<0>(seed, v); - return seed; - } - } - -#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } -#else - - inline std::size_t hash_value(std::tuple<> const& v) - { - return boost::hash_detail::hash_tuple(v); - } - - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } - - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } - - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } - - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } - - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } - - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } - - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } - - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } - - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } - - template - inline std::size_t hash_value(std::tuple const& v) - { - return boost::hash_detail::hash_tuple(v); - } - -#endif - -#endif - -#if !defined(BOOST_NO_CXX11_SMART_PTR) - template - inline std::size_t hash_value(std::shared_ptr const& x) { - return boost::hash_value(x.get()); - } - - template - inline std::size_t hash_value(std::unique_ptr const& x) { - return boost::hash_value(x.get()); - } -#endif - - // - // call_hash_impl - // - - // On compilers without function template ordering, this deals with arrays. - -#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - namespace hash_detail - { - template - struct call_hash_impl - { - template - struct inner - { - static std::size_t call(T const& v) - { - using namespace boost; - return hash_value(v); - } - }; - }; - - template <> - struct call_hash_impl - { - template - struct inner - { - static std::size_t call(Array const& v) - { - const int size = sizeof(v) / sizeof(*v); - return boost::hash_range(v, v + size); - } - }; - }; - - template - struct call_hash - : public call_hash_impl::value> - ::BOOST_NESTED_TEMPLATE inner - { - }; - } -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING - - // - // boost::hash - // - - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - - template struct hash - : boost::hash_detail::hash_base - { -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - std::size_t operator()(T const& val) const - { - return hash_value(val); - } -#else - std::size_t operator()(T const& val) const - { - return hash_detail::call_hash::call(val); - } -#endif - }; - -#if BOOST_WORKAROUND(__DMC__, <= 0x848) - template struct hash - : boost::hash_detail::hash_base - { - std::size_t operator()(const T* val) const - { - return boost::hash_range(val, val+n); - } - }; -#endif - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // On compilers without partial specialization, boost::hash - // has already been declared to deal with pointers, so just - // need to supply the non-pointer version of hash_impl. - - namespace hash_detail - { - template - struct hash_impl; - - template <> - struct hash_impl - { - template - struct inner - : boost::hash_detail::hash_base - { -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - std::size_t operator()(T const& val) const - { - return hash_value(val); - } -#else - std::size_t operator()(T const& val) const - { - return hash_detail::call_hash::call(val); - } -#endif - }; - }; - } -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -} - -#endif diff --git a/src/boost/boost/container_hash/hash.hpp b/src/boost/boost/container_hash/hash.hpp index 4988c70bd..d3dbe69b4 100644 --- a/src/boost/boost/container_hash/hash.hpp +++ b/src/boost/boost/container_hash/hash.hpp @@ -1,33 +1,52 @@ - // Copyright 2005-2014 Daniel James. -// 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) - -// Based on Peter Dimov's proposal -// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf -// issue 6.18. -// -// This also contains public domain code from MurmurHash. From the -// MurmurHash header: +// Copyright 2021, 2022 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt -// MurmurHash3 was written by Austin Appleby, and is placed in the public -// domain. The author hereby disclaims copyright to this source code. +// Based on Peter Dimov's proposal +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf +// issue 6.18. -#if !defined(BOOST_FUNCTIONAL_HASH_HASH_HPP) +#ifndef BOOST_FUNCTIONAL_HASH_HASH_HPP #define BOOST_FUNCTIONAL_HASH_HASH_HPP #include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -#include +#if defined(BOOST_DESCRIBE_CXX14) +# include +#endif + +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_NO_CXX11_SMART_PTR) +# include #endif #if !defined(BOOST_NO_CXX11_HDR_TYPEINDEX) @@ -38,724 +57,621 @@ #include #endif -#if defined(BOOST_MSVC) -#pragma warning(push) - -#if BOOST_MSVC >= 1400 -#pragma warning(disable:6295) // Ill-defined for-loop : 'unsigned int' values - // are always of range '0' to '4294967295'. - // Loop executes infinitely. -#endif - -#endif - -#if BOOST_WORKAROUND(__GNUC__, < 3) \ - && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) -#define BOOST_HASH_CHAR_TRAITS string_char_traits -#else -#define BOOST_HASH_CHAR_TRAITS char_traits -#endif - -#if defined(_MSC_VER) -# define BOOST_FUNCTIONAL_HASH_ROTL32(x, r) _rotl(x,r) -#else -# define BOOST_FUNCTIONAL_HASH_ROTL32(x, r) (x << r) | (x >> (32 - r)) -#endif - -// Detect whether standard library has C++17 headers - -#if !defined(BOOST_HASH_CXX17) -# if defined(BOOST_MSVC) -# if defined(_HAS_CXX17) && _HAS_CXX17 -# define BOOST_HASH_CXX17 1 -# endif -# elif defined(__cplusplus) && __cplusplus >= 201703 -# define BOOST_HASH_CXX17 1 -# endif -#endif - -#if !defined(BOOST_HASH_CXX17) -# define BOOST_HASH_CXX17 0 -#endif - -#if BOOST_HASH_CXX17 && defined(__has_include) -# if !defined(BOOST_HASH_HAS_STRING_VIEW) && __has_include() -# define BOOST_HASH_HAS_STRING_VIEW 1 -# endif -# if !defined(BOOST_HASH_HAS_OPTIONAL) && __has_include() -# define BOOST_HASH_HAS_OPTIONAL 1 -# endif -# if !defined(BOOST_HASH_HAS_VARIANT) && __has_include() -# define BOOST_HASH_HAS_VARIANT 1 -# endif -#endif - -#if !defined(BOOST_HASH_HAS_STRING_VIEW) -# define BOOST_HASH_HAS_STRING_VIEW 0 +#if !defined(BOOST_NO_CXX17_HDR_OPTIONAL) +#include #endif -#if !defined(BOOST_HASH_HAS_OPTIONAL) -# define BOOST_HASH_HAS_OPTIONAL 0 +#if !defined(BOOST_NO_CXX17_HDR_VARIANT) +#include #endif -#if !defined(BOOST_HASH_HAS_VARIANT) -# define BOOST_HASH_HAS_VARIANT 0 +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) +# include #endif -#if BOOST_HASH_HAS_STRING_VIEW -# include -#endif +namespace boost +{ -#if BOOST_HASH_HAS_OPTIONAL -# include -#endif + // + // boost::hash_value + // -#if BOOST_HASH_HAS_VARIANT -# include -#endif + // integral types -namespace boost -{ namespace hash_detail { -#if defined(_HAS_AUTO_PTR_ETC) && !_HAS_AUTO_PTR_ETC - template - struct hash_base + template sizeof(std::size_t)), + bool is_unsigned = boost::is_unsigned::value, + std::size_t size_t_bits = sizeof(std::size_t) * CHAR_BIT, + std::size_t type_bits = sizeof(T) * CHAR_BIT> + struct hash_integral_impl; + + template struct hash_integral_impl { - typedef T argument_type; - typedef std::size_t result_type; + static std::size_t fn( T v ) + { + return static_cast( v ); + } }; -#else - template - struct hash_base : std::unary_function {}; -#endif - struct enable_hash_value { typedef std::size_t type; }; - - template struct basic_numbers {}; - template struct long_numbers; - template struct ulong_numbers; - template struct float_numbers {}; - - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; - -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; -#endif - -#if !defined(BOOST_NO_CXX11_CHAR16_T) - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; -#endif + template struct hash_integral_impl + { + static std::size_t fn( T v ) + { + typedef typename boost::make_unsigned::type U; -#if !defined(BOOST_NO_CXX11_CHAR32_T) - template <> struct basic_numbers : - boost::hash_detail::enable_hash_value {}; -#endif + if( v >= 0 ) + { + return hash_integral_impl::fn( static_cast( v ) ); + } + else + { + return ~hash_integral_impl::fn( static_cast( ~static_cast( v ) ) ); + } + } + }; - // long_numbers is defined like this to allow for separate - // specialization for long_long and int128_type, in case - // they conflict. - template struct long_numbers2 {}; - template struct ulong_numbers2 {}; - template struct long_numbers : long_numbers2 {}; - template struct ulong_numbers : ulong_numbers2 {}; - -#if !defined(BOOST_NO_LONG_LONG) - template <> struct long_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct ulong_numbers : - boost::hash_detail::enable_hash_value {}; -#endif + template struct hash_integral_impl + { + static std::size_t fn( T v ) + { + std::size_t seed = 0; -#if defined(BOOST_HAS_INT128) - template <> struct long_numbers2 : - boost::hash_detail::enable_hash_value {}; - template <> struct ulong_numbers2 : - boost::hash_detail::enable_hash_value {}; -#endif + seed = static_cast( v >> 32 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v & 0xFFFFFFFF ) + hash_detail::hash_mix( seed ); - template <> struct float_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct float_numbers : - boost::hash_detail::enable_hash_value {}; - template <> struct float_numbers : - boost::hash_detail::enable_hash_value {}; - } + return seed; + } + }; - template - typename boost::hash_detail::basic_numbers::type hash_value(T); - template - typename boost::hash_detail::long_numbers::type hash_value(T); - template - typename boost::hash_detail::ulong_numbers::type hash_value(T); + template struct hash_integral_impl + { + static std::size_t fn( T v ) + { + std::size_t seed = 0; - template - typename boost::enable_if, std::size_t>::type - hash_value(T); + seed = static_cast( v >> 96 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v >> 64 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v >> 32 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v ) + hash_detail::hash_mix( seed ); -#if !BOOST_WORKAROUND(__DMC__, <= 0x848) - template std::size_t hash_value(T* const&); -#else - template std::size_t hash_value(T*); -#endif + return seed; + } + }; -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - template< class T, unsigned N > - std::size_t hash_value(const T (&x)[N]); + template struct hash_integral_impl + { + static std::size_t fn( T v ) + { + std::size_t seed = 0; - template< class T, unsigned N > - std::size_t hash_value(T (&x)[N]); -#endif + seed = static_cast( v >> 64 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v ) + hash_detail::hash_mix( seed ); - template - std::size_t hash_value( - std::basic_string, A> const&); + return seed; + } + }; -#if BOOST_HASH_HAS_STRING_VIEW - template - std::size_t hash_value( - std::basic_string_view > const&); -#endif + } // namespace hash_detail template - typename boost::hash_detail::float_numbers::type hash_value(T); + typename boost::enable_if_::value, std::size_t>::type + hash_value( T v ) + { + return hash_detail::hash_integral_impl::fn( v ); + } + + // enumeration types -#if BOOST_HASH_HAS_OPTIONAL template - std::size_t hash_value(std::optional const&); -#endif + typename boost::enable_if_::value, std::size_t>::type + hash_value( T v ) + { + // This should in principle return the equivalent of + // + // boost::hash_value( to_underlying(v) ); + // + // However, the C++03 implementation of underlying_type, + // + // conditional, make_signed, make_unsigned>::type::type + // + // generates a legitimate -Wconversion warning in is_signed, + // because -1 is not a valid enum value when all the enumerators + // are nonnegative. + // + // So the legacy implementation will have to do for now. + + return static_cast( v ); + } -#if BOOST_HASH_HAS_VARIANT - std::size_t hash_value(std::monostate); - template - std::size_t hash_value(std::variant const&); -#endif + // floating point types -#if !defined(BOOST_NO_CXX11_HDR_TYPEINDEX) - std::size_t hash_value(std::type_index); -#endif + namespace hash_detail + { + template::digits> + struct hash_float_impl; -#if !defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) - std::size_t hash_value(std::error_code const&); - std::size_t hash_value(std::error_condition const&); -#endif + // float + template struct hash_float_impl + { + static std::size_t fn( T v ) + { + boost::uint32_t w; + std::memcpy( &w, &v, sizeof( v ) ); - // Implementation + return w; + } + }; - namespace hash_detail - { - template - inline std::size_t hash_value_signed(T val) + // double + template struct hash_float_impl { - const unsigned int size_t_bits = std::numeric_limits::digits; - // ceiling(std::numeric_limits::digits / size_t_bits) - 1 - const int length = (std::numeric_limits::digits - 1) - / static_cast(size_t_bits); - - std::size_t seed = 0; - T positive = val < 0 ? -1 - val : val; - - // Hopefully, this loop can be unrolled. - for(unsigned int i = length * size_t_bits; i > 0; i -= size_t_bits) - { - seed ^= (std::size_t) (positive >> i) + (seed<<6) + (seed>>2); - } - seed ^= (std::size_t) val + (seed<<6) + (seed>>2); - - return seed; - } + static std::size_t fn( T v ) + { + boost::uint64_t w; + std::memcpy( &w, &v, sizeof( v ) ); - template - inline std::size_t hash_value_unsigned(T val) + return hash_value( w ); + } + }; + + // 80 bit long double in 12 bytes + template struct hash_float_impl { - const unsigned int size_t_bits = std::numeric_limits::digits; - // ceiling(std::numeric_limits::digits / size_t_bits) - 1 - const int length = (std::numeric_limits::digits - 1) - / static_cast(size_t_bits); + static std::size_t fn( T v ) + { + boost::uint64_t w[ 2 ] = {}; + std::memcpy( &w, &v, 80 / CHAR_BIT ); - std::size_t seed = 0; + std::size_t seed = 0; - // Hopefully, this loop can be unrolled. - for(unsigned int i = length * size_t_bits; i > 0; i -= size_t_bits) - { - seed ^= (std::size_t) (val >> i) + (seed<<6) + (seed>>2); - } - seed ^= (std::size_t) val + (seed<<6) + (seed>>2); + seed = hash_value( w[0] ) + hash_detail::hash_mix( seed ); + seed = hash_value( w[1] ) + hash_detail::hash_mix( seed ); - return seed; - } + return seed; + } + }; - template - inline void hash_combine_impl(SizeT& seed, SizeT value) + // 80 bit long double in 16 bytes + template struct hash_float_impl { - seed ^= value + 0x9e3779b9 + (seed<<6) + (seed>>2); - } + static std::size_t fn( T v ) + { + boost::uint64_t w[ 2 ] = {}; + std::memcpy( &w, &v, 80 / CHAR_BIT ); - inline void hash_combine_impl(boost::uint32_t& h1, - boost::uint32_t k1) - { - const uint32_t c1 = 0xcc9e2d51; - const uint32_t c2 = 0x1b873593; + std::size_t seed = 0; - k1 *= c1; - k1 = BOOST_FUNCTIONAL_HASH_ROTL32(k1,15); - k1 *= c2; + seed = hash_value( w[0] ) + hash_detail::hash_mix( seed ); + seed = hash_value( w[1] ) + hash_detail::hash_mix( seed ); - h1 ^= k1; - h1 = BOOST_FUNCTIONAL_HASH_ROTL32(h1,13); - h1 = h1*5+0xe6546b64; - } + return seed; + } + }; + // 128 bit long double + template struct hash_float_impl + { + static std::size_t fn( T v ) + { + boost::uint64_t w[ 2 ]; + std::memcpy( &w, &v, sizeof( v ) ); -// Don't define 64-bit hash combine on platforms without 64 bit integers, -// and also not for 32-bit gcc as it warns about the 64-bit constant. -#if !defined(BOOST_NO_INT64_T) && \ - !(defined(__GNUC__) && ULONG_MAX == 0xffffffff) + std::size_t seed = 0; - inline void hash_combine_impl(boost::uint64_t& h, - boost::uint64_t k) - { - const boost::uint64_t m = UINT64_C(0xc6a4a7935bd1e995); - const int r = 47; +#if defined(__FLOAT_WORD_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__ - k *= m; - k ^= k >> r; - k *= m; + seed = hash_value( w[1] ) + hash_detail::hash_mix( seed ); + seed = hash_value( w[0] ) + hash_detail::hash_mix( seed ); - h ^= k; - h *= m; +#else - // Completely arbitrary number, to prevent 0's - // from hashing to 0. - h += 0xe6546b64; - } + seed = hash_value( w[0] ) + hash_detail::hash_mix( seed ); + seed = hash_value( w[1] ) + hash_detail::hash_mix( seed ); -#endif // BOOST_NO_INT64_T - } +#endif + return seed; + } + }; - template - typename boost::hash_detail::basic_numbers::type hash_value(T v) - { - return static_cast(v); - } + } // namespace hash_detail template - typename boost::hash_detail::long_numbers::type hash_value(T v) + typename boost::enable_if_::value, std::size_t>::type + hash_value( T v ) { - return hash_detail::hash_value_signed(v); + return boost::hash_detail::hash_float_impl::fn( v + 0 ); } - template - typename boost::hash_detail::ulong_numbers::type hash_value(T v) + // pointer types + + // `x + (x >> 3)` adjustment by Alberto Barbati and Dave Harris. + template std::size_t hash_value( T* const& v ) { - return hash_detail::hash_value_unsigned(v); + boost::uintptr_t x = reinterpret_cast( v ); + return boost::hash_value( x + (x >> 3) ); } - template - typename boost::enable_if, std::size_t>::type - hash_value(T v) + // array types + + template + inline std::size_t hash_value( T const (&x)[ N ] ) { - return static_cast(v); + return boost::hash_range( x, x + N ); } - // Implementation by Alberto Barbati and Dave Harris. -#if !BOOST_WORKAROUND(__DMC__, <= 0x848) - template std::size_t hash_value(T* const& v) -#else - template std::size_t hash_value(T* v) -#endif + template + inline std::size_t hash_value( T (&x)[ N ] ) { -#if defined(__VMS) && __INITIAL_POINTER_SIZE == 64 - // for some reason ptrdiff_t on OpenVMS compiler with - // 64 bit is not 64 bit !!! - std::size_t x = static_cast( - reinterpret_cast(v)); -#else - std::size_t x = static_cast( - reinterpret_cast(v)); -#endif - return x + (x >> 3); + return boost::hash_range( x, x + N ); } -#if defined(BOOST_MSVC) -#pragma warning(push) -#if BOOST_MSVC <= 1400 -#pragma warning(disable:4267) // 'argument' : conversion from 'size_t' to - // 'unsigned int', possible loss of data - // A misguided attempt to detect 64-bit - // incompatability. -#endif -#endif + // complex template - inline void hash_combine(std::size_t& seed, T const& v) + std::size_t hash_value( std::complex const& v ) { - boost::hash hasher; - return boost::hash_detail::hash_combine_impl(seed, hasher(v)); + std::size_t re = boost::hash()( v.real() ); + std::size_t im = boost::hash()( v.imag() ); + + return re + hash_detail::hash_mix( im ); } -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif + // pair - template - inline std::size_t hash_range(It first, It last) + template + std::size_t hash_value( std::pair const& v ) { std::size_t seed = 0; - for(; first != last; ++first) - { - hash_combine(seed, *first); - } + boost::hash_combine( seed, v.first ); + boost::hash_combine( seed, v.second ); return seed; } - template - inline void hash_range(std::size_t& seed, It first, It last) - { - for(; first != last; ++first) - { - hash_combine(seed, *first); - } - } + // ranges (list, set, deque...) -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551)) - template - inline std::size_t hash_range(T* first, T* last) + template + typename boost::enable_if_::value && !container_hash::is_contiguous_range::value && !container_hash::is_unordered_range::value, std::size_t>::type + hash_value( T const& v ) { - std::size_t seed = 0; + return boost::hash_range( v.begin(), v.end() ); + } - for(; first != last; ++first) - { - boost::hash hasher; - seed ^= hasher(*first) + 0x9e3779b9 + (seed<<6) + (seed>>2); - } + // contiguous ranges (string, vector, array) - return seed; + template + typename boost::enable_if_::value, std::size_t>::type + hash_value( T const& v ) + { + return boost::hash_range( v.data(), v.data() + v.size() ); } - template - inline void hash_range(std::size_t& seed, T* first, T* last) + // unordered ranges (unordered_set, unordered_map) + + template + typename boost::enable_if_::value, std::size_t>::type + hash_value( T const& v ) { - for(; first != last; ++first) - { - boost::hash hasher; - seed ^= hasher(*first) + 0x9e3779b9 + (seed<<6) + (seed>>2); - } + return boost::hash_unordered_range( v.begin(), v.end() ); } -#endif -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - template< class T, unsigned N > - inline std::size_t hash_value(const T (&x)[N]) +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && ( \ + ( defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142 ) || \ + ( !defined(_MSVC_STL_VERSION) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 ) ) + + // resolve ambiguity with unconstrained stdext::hash_value in :-/ + + template class L, class... T> + typename boost::enable_if_>::value && !container_hash::is_contiguous_range>::value && !container_hash::is_unordered_range>::value, std::size_t>::type + hash_value( L const& v ) { - return hash_range(x, x + N); + return boost::hash_range( v.begin(), v.end() ); } - template< class T, unsigned N > - inline std::size_t hash_value(T (&x)[N]) + // contiguous ranges (string, vector, array) + + template class L, class... T> + typename boost::enable_if_>::value, std::size_t>::type + hash_value( L const& v ) { - return hash_range(x, x + N); + return boost::hash_range( v.data(), v.data() + v.size() ); } -#endif - template - inline std::size_t hash_value( - std::basic_string, A> const& v) + template class L, class T, std::size_t N> + typename boost::enable_if_>::value, std::size_t>::type + hash_value( L const& v ) { - return hash_range(v.begin(), v.end()); + return boost::hash_range( v.data(), v.data() + v.size() ); } -#if BOOST_HASH_HAS_STRING_VIEW - template - inline std::size_t hash_value( - std::basic_string_view > const& v) + // unordered ranges (unordered_set, unordered_map) + + template class L, class... T> + typename boost::enable_if_>::value, std::size_t>::type + hash_value( L const& v ) { - return hash_range(v.begin(), v.end()); + return boost::hash_unordered_range( v.begin(), v.end() ); } + +#endif + + // described classes + +#if defined(BOOST_DESCRIBE_CXX14) + +#if defined(_MSC_VER) && _MSC_VER == 1900 +# pragma warning(push) +# pragma warning(disable: 4100) // unreferenced formal parameter #endif template - typename boost::hash_detail::float_numbers::type hash_value(T v) + typename boost::enable_if_::value, std::size_t>::type + hash_value( T const& v ) { - return boost::hash_detail::float_hash_value(v); - } + static_assert( !boost::is_union::value, "described unions are not supported" ); -#if BOOST_HASH_HAS_OPTIONAL - template - inline std::size_t hash_value(std::optional const& v) { - if (!v) { - // Arbitray value for empty optional. - return 0x12345678; - } else { - boost::hash hf; - return hf(*v); - } + std::size_t r = 0; + + using Bd = describe::describe_bases; + + mp11::mp_for_each([&](auto D){ + + using B = typename decltype(D)::type; + boost::hash_combine( r, (B const&)v ); + + }); + + using Md = describe::describe_members; + + mp11::mp_for_each([&](auto D){ + + boost::hash_combine( r, v.*D.pointer ); + + }); + + return r; } + +#if defined(_MSC_VER) && _MSC_VER == 1900 +# pragma warning(pop) #endif -#if BOOST_HASH_HAS_VARIANT - inline std::size_t hash_value(std::monostate) { - return 0x87654321; +#endif + + // std::unique_ptr, std::shared_ptr + +#if !defined(BOOST_NO_CXX11_SMART_PTR) + + template + std::size_t hash_value( std::shared_ptr const& x ) + { + return boost::hash_value( x.get() ); } - template - inline std::size_t hash_value(std::variant const& v) { - std::size_t seed = 0; - hash_combine(seed, v.index()); - std::visit([&seed](auto&& x) { hash_combine(seed, x); }, v); - return seed; + template + std::size_t hash_value( std::unique_ptr const& x ) + { + return boost::hash_value( x.get() ); } + #endif + // std::type_index #if !defined(BOOST_NO_CXX11_HDR_TYPEINDEX) - inline std::size_t hash_value(std::type_index v) + + inline std::size_t hash_value( std::type_index const& v ) { return v.hash_code(); } + #endif + // std::error_code, std::error_condition + #if !defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) - inline std::size_t hash_value(std::error_code const& v) { + + inline std::size_t hash_value( std::error_code const& v ) + { std::size_t seed = 0; - hash_combine(seed, v.value()); - hash_combine(seed, &v.category()); + + boost::hash_combine( seed, v.value() ); + boost::hash_combine( seed, &v.category() ); + return seed; } - inline std::size_t hash_value(std::error_condition const& v) { + inline std::size_t hash_value( std::error_condition const& v ) + { std::size_t seed = 0; - hash_combine(seed, v.value()); - hash_combine(seed, &v.category()); + + boost::hash_combine( seed, v.value() ); + boost::hash_combine( seed, &v.category() ); + return seed; } + +#endif + + // std::nullptr_t + +#if !defined(BOOST_NO_CXX11_NULLPTR) + + template + typename boost::enable_if_::value, std::size_t>::type + hash_value( T const& /*v*/ ) + { + return boost::hash_value( static_cast( nullptr ) ); + } + +#endif + + // std::optional + +#if !defined(BOOST_NO_CXX17_HDR_OPTIONAL) + + template + std::size_t hash_value( std::optional const& v ) + { + if( !v ) + { + // Arbitray value for empty optional. + return 0x12345678; + } + else + { + return boost::hash()(*v); + } + } + +#endif + + // std::variant + +#if !defined(BOOST_NO_CXX17_HDR_VARIANT) + + inline std::size_t hash_value( std::monostate ) + { + return 0x87654321; + } + + template + std::size_t hash_value( std::variant const& v ) + { + std::size_t seed = 0; + + hash_combine( seed, v.index() ); + std::visit( [&seed](auto&& x) { hash_combine(seed, x); }, v ); + + return seed; + } + #endif // - // boost::hash + // boost::hash_combine // - // Define the specializations required by the standard. The general purpose - // boost::hash is defined later in extensions.hpp if - // BOOST_HASH_NO_EXTENSIONS is not defined. + template + inline void hash_combine( std::size_t& seed, T const& v ) + { + seed = boost::hash_detail::hash_mix( seed + 0x9e3779b9 + boost::hash()( v ) ); + } - // BOOST_HASH_SPECIALIZE - define a specialization for a type which is - // passed by copy. // - // BOOST_HASH_SPECIALIZE_REF - define a specialization for a type which is - // passed by const reference. + // boost::hash_range // - // These are undefined later. - -#define BOOST_HASH_SPECIALIZE(type) \ - template <> struct hash \ - : public boost::hash_detail::hash_base \ - { \ - std::size_t operator()(type v) const \ - { \ - return boost::hash_value(v); \ - } \ - }; -#define BOOST_HASH_SPECIALIZE_REF(type) \ - template <> struct hash \ - : public boost::hash_detail::hash_base \ - { \ - std::size_t operator()(type const& v) const \ - { \ - return boost::hash_value(v); \ - } \ - }; + template + inline void hash_range( std::size_t& seed, It first, It last ) + { + seed = hash_detail::hash_range( seed, first, last ); + } -#define BOOST_HASH_SPECIALIZE_TEMPLATE_REF(type) \ - struct hash \ - : public boost::hash_detail::hash_base \ - { \ - std::size_t operator()(type const& v) const \ - { \ - return boost::hash_value(v); \ - } \ - }; + template + inline std::size_t hash_range( It first, It last ) + { + std::size_t seed = 0; - BOOST_HASH_SPECIALIZE(bool) - BOOST_HASH_SPECIALIZE(char) - BOOST_HASH_SPECIALIZE(signed char) - BOOST_HASH_SPECIALIZE(unsigned char) -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) - BOOST_HASH_SPECIALIZE(wchar_t) -#endif -#if !defined(BOOST_NO_CXX11_CHAR16_T) - BOOST_HASH_SPECIALIZE(char16_t) -#endif -#if !defined(BOOST_NO_CXX11_CHAR32_T) - BOOST_HASH_SPECIALIZE(char32_t) -#endif - BOOST_HASH_SPECIALIZE(short) - BOOST_HASH_SPECIALIZE(unsigned short) - BOOST_HASH_SPECIALIZE(int) - BOOST_HASH_SPECIALIZE(unsigned int) - BOOST_HASH_SPECIALIZE(long) - BOOST_HASH_SPECIALIZE(unsigned long) - - BOOST_HASH_SPECIALIZE(float) - BOOST_HASH_SPECIALIZE(double) - BOOST_HASH_SPECIALIZE(long double) - - BOOST_HASH_SPECIALIZE_REF(std::string) -#if !defined(BOOST_NO_STD_WSTRING) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) - BOOST_HASH_SPECIALIZE_REF(std::wstring) -#endif -#if !defined(BOOST_NO_CXX11_CHAR16_T) - BOOST_HASH_SPECIALIZE_REF(std::basic_string) -#endif -#if !defined(BOOST_NO_CXX11_CHAR32_T) - BOOST_HASH_SPECIALIZE_REF(std::basic_string) -#endif + hash_range( seed, first, last ); -#if BOOST_HASH_HAS_STRING_VIEW - BOOST_HASH_SPECIALIZE_REF(std::string_view) -# if !defined(BOOST_NO_STD_WSTRING) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) - BOOST_HASH_SPECIALIZE_REF(std::wstring_view) -# endif -# if !defined(BOOST_NO_CXX11_CHAR16_T) - BOOST_HASH_SPECIALIZE_REF(std::basic_string_view) -# endif -# if !defined(BOOST_NO_CXX11_CHAR32_T) - BOOST_HASH_SPECIALIZE_REF(std::basic_string_view) -# endif -#endif + return seed; + } -#if !defined(BOOST_NO_LONG_LONG) - BOOST_HASH_SPECIALIZE(boost::long_long_type) - BOOST_HASH_SPECIALIZE(boost::ulong_long_type) -#endif + // + // boost::hash_unordered_range + // -#if defined(BOOST_HAS_INT128) - BOOST_HASH_SPECIALIZE(boost::int128_type) - BOOST_HASH_SPECIALIZE(boost::uint128_type) -#endif + template + inline void hash_unordered_range( std::size_t& seed, It first, It last ) + { + std::size_t r = 0; + std::size_t const s2( seed ); -#if BOOST_HASH_HAS_OPTIONAL - template - BOOST_HASH_SPECIALIZE_TEMPLATE_REF(std::optional) -#endif + for( ; first != last; ++first ) + { + std::size_t s3( s2 ); -#if !defined(BOOST_HASH_HAS_VARIANT) - template - BOOST_HASH_SPECIALIZE_TEMPLATE_REF(std::variant) - BOOST_HASH_SPECIALIZE(std::monostate) -#endif + hash_combine::value_type>( s3, *first ); -#if !defined(BOOST_NO_CXX11_HDR_TYPEINDEX) - BOOST_HASH_SPECIALIZE(std::type_index) -#endif + r += s3; + } -#undef BOOST_HASH_SPECIALIZE -#undef BOOST_HASH_SPECIALIZE_REF -#undef BOOST_HASH_SPECIALIZE_TEMPLATE_REF + seed += r; + } -// Specializing boost::hash for pointers. + template + inline std::size_t hash_unordered_range( It first, It last ) + { + std::size_t seed = 0; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) + hash_unordered_range( seed, first, last ); - template - struct hash - : public boost::hash_detail::hash_base + return seed; + } + + // + // boost::hash + // + + template struct hash { - std::size_t operator()(T* v) const - { -#if !BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) - return boost::hash_value(v); -#else - std::size_t x = static_cast( - reinterpret_cast(v)); + typedef T argument_type; + typedef std::size_t result_type; - return x + (x >> 3); -#endif + std::size_t operator()( T const& val ) const + { + return hash_value( val ); } }; -#else +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && ( \ + ( defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142 ) || \ + ( !defined(_MSVC_STL_VERSION) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 ) ) - // For compilers without partial specialization, we define a - // boost::hash for all remaining types. But hash_impl is only defined - // for pointers in 'extensions.hpp' - so when BOOST_HASH_NO_EXTENSIONS - // is defined there will still be a compile error for types not supported - // in the standard. + // Dinkumware has stdext::hash_value for basic_string in :-/ - namespace hash_detail + template struct hash< std::basic_string > { - template - struct hash_impl; + typedef std::basic_string argument_type; + typedef std::size_t result_type; - template <> - struct hash_impl + std::size_t operator()( std::basic_string const& val ) const { - template - struct inner - : public boost::hash_detail::hash_base - { - std::size_t operator()(T val) const - { -#if !BOOST_WORKAROUND(__SUNPRO_CC, <= 590) - return boost::hash_value(val); -#else - std::size_t x = static_cast( - reinterpret_cast(val)); + return boost::hash_value( val ); + } + }; - return x + (x >> 3); #endif - } - }; - }; - } - template struct hash - : public boost::hash_detail::hash_impl::value> - ::BOOST_NESTED_TEMPLATE inner + // boost::unordered::hash_is_avalanching + + namespace unordered { - }; + template struct hash_is_avalanching; + template struct hash_is_avalanching< boost::hash< std::basic_string > >: boost::is_integral {}; + // boost::is_integral is false, but should be true (https://github.com/boostorg/type_traits/issues/175) +#if defined(__cpp_char8_t) && __cpp_char8_t >= 201811L + template<> struct hash_is_avalanching< boost::hash< std::basic_string > >: boost::true_type {}; #endif -} -#undef BOOST_HASH_CHAR_TRAITS -#undef BOOST_FUNCTIONAL_HASH_ROTL32 +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) + + template struct hash_is_avalanching< boost::hash< std::basic_string_view > >: boost::is_integral {}; -#if defined(BOOST_MSVC) -#pragma warning(pop) +#if defined(__cpp_char8_t) && __cpp_char8_t >= 201811L + template<> struct hash_is_avalanching< boost::hash< std::basic_string_view > >: boost::true_type {}; #endif -#endif // BOOST_FUNCTIONAL_HASH_HASH_HPP +#endif + } // namespace unordered -// Include this outside of the include guards in case the file is included -// twice - once with BOOST_HASH_NO_EXTENSIONS defined, and then with it -// undefined. +} // namespace boost -#if !defined(BOOST_HASH_NO_EXTENSIONS) \ - && !defined(BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP) -#include -#endif +#endif // #ifndef BOOST_FUNCTIONAL_HASH_HASH_HPP diff --git a/src/boost/boost/container_hash/hash_fwd.hpp b/src/boost/boost/container_hash/hash_fwd.hpp index e4889b8ac..c29ce6731 100644 --- a/src/boost/boost/container_hash/hash_fwd.hpp +++ b/src/boost/boost/container_hash/hash_fwd.hpp @@ -1,36 +1,37 @@ - // Copyright 2005-2009 Daniel James. -// 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) - -// Based on Peter Dimov's proposal -// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf -// issue 6.18. +// Copyright 2021, 2022 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt -#if !defined(BOOST_FUNCTIONAL_HASH_FWD_HPP) +#ifndef BOOST_FUNCTIONAL_HASH_FWD_HPP #define BOOST_FUNCTIONAL_HASH_FWD_HPP -#include #include -#if defined(BOOST_HAS_PRAGMA_ONCE) -#pragma once -#endif - - namespace boost { - template struct hash; - template void hash_combine(std::size_t& seed, T const& v); +namespace container_hash +{ + +template struct is_range; +template struct is_contiguous_range; +template struct is_unordered_range; +template struct is_described_class; +template struct is_tuple_like; + +} // namespace container_hash + +template struct hash; + +template void hash_combine( std::size_t& seed, T const& v ); + +template void hash_range( std::size_t&, It, It ); +template std::size_t hash_range( It, It ); - template std::size_t hash_range(It, It); - template void hash_range(std::size_t&, It, It); +template void hash_unordered_range( std::size_t&, It, It ); +template std::size_t hash_unordered_range( It, It ); -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551)) - template inline std::size_t hash_range(T*, T*); - template inline void hash_range(std::size_t&, T*, T*); -#endif -} +} // namespace boost -#endif +#endif // #ifndef BOOST_FUNCTIONAL_HASH_FWD_HPP diff --git a/src/boost/boost/container_hash/is_contiguous_range.hpp b/src/boost/boost/container_hash/is_contiguous_range.hpp new file mode 100644 index 000000000..457a6011d --- /dev/null +++ b/src/boost/boost/container_hash/is_contiguous_range.hpp @@ -0,0 +1,92 @@ +// Copyright 2017, 2018 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_HASH_IS_CONTIGUOUS_RANGE_HPP_INCLUDED +#define BOOST_HASH_IS_CONTIGUOUS_RANGE_HPP_INCLUDED + +#include +#include +#include +#include +#include + +#if !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_SFINAE_EXPR) && !BOOST_WORKAROUND(BOOST_GCC, < 40700) && !BOOST_WORKAROUND(BOOST_MSVC, < 1910) + +#include +#include +#include +#include + +namespace boost +{ +namespace hash_detail +{ + +template + integral_constant< bool, is_same::value_type, T>::value && is_integral::value > + is_contiguous_range_check( It first, It last, T const*, T const*, S ); + +template decltype( is_contiguous_range_check( declval().begin(), declval().end(), declval().data(), declval().data() + declval().size(), declval().size() ) ) is_contiguous_range_( int ); +template false_type is_contiguous_range_( ... ); + +template struct is_contiguous_range: decltype( hash_detail::is_contiguous_range_( 0 ) ) +{ +}; + +} // namespace hash_detail + +namespace container_hash +{ + +template struct is_contiguous_range: integral_constant< bool, is_range::value && hash_detail::is_contiguous_range::value > +{ +}; + +} // namespace container_hash +} // namespace boost + +#else // !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_SFINAE_EXPR) + +#include +#include +#include +#if !defined(BOOST_NO_CXX11_HDR_ARRAY) +#include +#endif + +namespace boost +{ +namespace container_hash +{ + +template struct is_contiguous_range: false_type +{ +}; + +template struct is_contiguous_range< std::basic_string >: true_type +{ +}; + +template struct is_contiguous_range< std::basic_string const >: true_type +{ +}; + +#if !defined(BOOST_NO_CXX11_HDR_ARRAY) + +template struct is_contiguous_range< std::array >: true_type +{ +}; + +template struct is_contiguous_range< std::array const >: true_type +{ +}; + +#endif + +} // namespace container_hash +} // namespace boost + +#endif // !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_SFINAE_EXPR) + +#endif // #ifndef BOOST_HASH_IS_CONTIGUOUS_RANGE_HPP_INCLUDED diff --git a/src/boost/boost/container_hash/is_described_class.hpp b/src/boost/boost/container_hash/is_described_class.hpp new file mode 100644 index 000000000..a11045e4f --- /dev/null +++ b/src/boost/boost/container_hash/is_described_class.hpp @@ -0,0 +1,38 @@ +// Copyright 2022 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_HASH_IS_DESCRIBED_CLASS_HPP_INCLUDED +#define BOOST_HASH_IS_DESCRIBED_CLASS_HPP_INCLUDED + +#include +#include +#include +#include + +namespace boost +{ +namespace container_hash +{ + +#if defined(BOOST_DESCRIBE_CXX11) + +template struct is_described_class: boost::integral_constant::value && + describe::has_describe_members::value && + !boost::is_union::value> +{ +}; + +#else + +template struct is_described_class: boost::false_type +{ +}; + +#endif + +} // namespace container_hash +} // namespace boost + +#endif // #ifndef BOOST_HASH_IS_DESCRIBED_CLASS_HPP_INCLUDED diff --git a/src/boost/boost/container_hash/is_range.hpp b/src/boost/boost/container_hash/is_range.hpp new file mode 100644 index 000000000..98ebaf2fb --- /dev/null +++ b/src/boost/boost/container_hash/is_range.hpp @@ -0,0 +1,74 @@ +// Copyright 2017 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_HASH_IS_RANGE_HPP_INCLUDED +#define BOOST_HASH_IS_RANGE_HPP_INCLUDED + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost +{ +#if !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_SFINAE_EXPR) && !BOOST_WORKAROUND(BOOST_GCC, < 40700) + +namespace hash_detail +{ + +template + integral_constant< bool, !is_same::type, typename std::iterator_traits::value_type>::value > + is_range_check( It first, It last ); + +template decltype( is_range_check( declval().begin(), declval().end() ) ) is_range_( int ); +template false_type is_range_( ... ); + +} // namespace hash_detail + +namespace container_hash +{ + +template struct is_range: decltype( hash_detail::is_range_( 0 ) ) +{ +}; + +} // namespace container_hash + +#else + +namespace hash_detail +{ + +template struct is_range_: false_type +{ +}; + +template struct is_range_< T, integral_constant< bool, + is_same::value_type>::value && + is_integral::value + > >: true_type +{ +}; + +} // namespace hash_detail + +namespace container_hash +{ + +template struct is_range: hash_detail::is_range_ +{ +}; + +} // namespace container_hash + +#endif // !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_SFINAE_EXPR) + +} // namespace boost + +#endif // #ifndef BOOST_HASH_IS_RANGE_HPP_INCLUDED diff --git a/src/boost/boost/container_hash/is_tuple_like.hpp b/src/boost/boost/container_hash/is_tuple_like.hpp new file mode 100644 index 000000000..398ff2042 --- /dev/null +++ b/src/boost/boost/container_hash/is_tuple_like.hpp @@ -0,0 +1,42 @@ +#ifndef BOOST_HASH_IS_TUPLE_LIKE_HPP_INCLUDED +#define BOOST_HASH_IS_TUPLE_LIKE_HPP_INCLUDED + +// Copyright 2017, 2022 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include + +namespace boost +{ +namespace hash_detail +{ + +template struct is_tuple_like_: false_type +{ +}; + +#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !BOOST_WORKAROUND(BOOST_MSVC, <= 1800) + +template struct is_tuple_like_::value == std::tuple_size::value> >: true_type +{ +}; + +#endif + +} // namespace hash_detail + +namespace container_hash +{ + +template struct is_tuple_like: hash_detail::is_tuple_like_ +{ +}; + +} // namespace container_hash +} // namespace boost + +#endif // #ifndef BOOST_HASH_IS_TUPLE_LIKE_HPP_INCLUDED diff --git a/src/boost/boost/container_hash/is_unordered_range.hpp b/src/boost/boost/container_hash/is_unordered_range.hpp new file mode 100644 index 000000000..80dc3f579 --- /dev/null +++ b/src/boost/boost/container_hash/is_unordered_range.hpp @@ -0,0 +1,39 @@ +// Copyright 2017 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_HASH_IS_UNORDERED_RANGE_HPP_INCLUDED +#define BOOST_HASH_IS_UNORDERED_RANGE_HPP_INCLUDED + +#include +#include +#include + +namespace boost +{ +namespace hash_detail +{ + +template struct has_hasher_: false_type +{ +}; + +template struct has_hasher_< T, integral_constant< bool, + is_same::value + > >: true_type +{ +}; + +} // namespace hash_detail + +namespace container_hash +{ + +template struct is_unordered_range: integral_constant< bool, is_range::value && hash_detail::has_hasher_::value > +{ +}; + +} // namespace container_hash +} // namespace boost + +#endif // #ifndef BOOST_HASH_IS_UNORDERED_RANGE_HPP_INCLUDED diff --git a/src/boost/boost/core/addressof.hpp b/src/boost/boost/core/addressof.hpp index 763f96945..33ddeb758 100644 --- a/src/boost/boost/core/addressof.hpp +++ b/src/boost/boost/core/addressof.hpp @@ -125,7 +125,7 @@ template BOOST_FORCEINLINE T* addressof(T& o) BOOST_NOEXCEPT { -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) || \ +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) || \ BOOST_WORKAROUND(__SUNPRO_CC, <= 0x5120) return boost::detail::addrof::get(o, 0); #else @@ -151,7 +151,7 @@ addressof(T (&o)[N]) BOOST_NOEXCEPT } #endif -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) template BOOST_FORCEINLINE T (*addressof(T (&o)[N]) BOOST_NOEXCEPT)[N] diff --git a/src/boost/boost/core/bit.hpp b/src/boost/boost/core/bit.hpp new file mode 100644 index 000000000..c39a37334 --- /dev/null +++ b/src/boost/boost/core/bit.hpp @@ -0,0 +1,936 @@ +#ifndef BOOST_CORE_BIT_HPP_INCLUDED +#define BOOST_CORE_BIT_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// boost/core/bit.hpp +// +// A portable version of the C++20 standard header +// +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) + +# include +# pragma intrinsic(_BitScanForward) +# pragma intrinsic(_BitScanReverse) + +# if defined(_M_X64) +# pragma intrinsic(_BitScanForward64) +# pragma intrinsic(_BitScanReverse64) +# endif + +# pragma warning(push) +# pragma warning(disable: 4127) // conditional expression is constant +# pragma warning(disable: 4244) // conversion from int to T + +#endif // defined(_MSC_VER) + +#if defined(BOOST_MSVC) && BOOST_MSVC >= 1925 +# define BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL +#endif + +#if defined(__has_builtin) +# if __has_builtin(__builtin_bit_cast) +# define BOOST_CORE_HAS_BUILTIN_BIT_CAST +# endif +#endif + +#if defined(BOOST_MSVC) && BOOST_MSVC >= 1926 +# define BOOST_CORE_HAS_BUILTIN_BIT_CAST +#endif + +namespace boost +{ +namespace core +{ + +// bit_cast + +#if defined(BOOST_CORE_HAS_BUILTIN_BIT_CAST) + +template +BOOST_CONSTEXPR To bit_cast( From const & from ) BOOST_NOEXCEPT +{ + return __builtin_bit_cast( To, from ); +} + +#else + +template +To bit_cast( From const & from ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( sizeof(To) == sizeof(From) ); + + To to; + std::memcpy( &to, &from, sizeof(To) ); + return to; +} + +#endif + +// countl + +#if defined(__GNUC__) || defined(__clang__) + +namespace detail +{ + +BOOST_CONSTEXPR inline int countl_impl( unsigned char x ) BOOST_NOEXCEPT +{ + return x? __builtin_clz( x ) - ( std::numeric_limits::digits - std::numeric_limits::digits ): std::numeric_limits::digits; +} + +BOOST_CONSTEXPR inline int countl_impl( unsigned short x ) BOOST_NOEXCEPT +{ + return x? __builtin_clz( x ) - ( std::numeric_limits::digits - std::numeric_limits::digits ): std::numeric_limits::digits; +} + +BOOST_CONSTEXPR inline int countl_impl( unsigned int x ) BOOST_NOEXCEPT +{ + return x? __builtin_clz( x ): std::numeric_limits::digits; +} + +BOOST_CONSTEXPR inline int countl_impl( unsigned long x ) BOOST_NOEXCEPT +{ + return x? __builtin_clzl( x ): std::numeric_limits::digits; +} + +BOOST_CONSTEXPR inline int countl_impl( boost::ulong_long_type x ) BOOST_NOEXCEPT +{ + return x? __builtin_clzll( x ): std::numeric_limits::digits; +} + +} // namespace detail + +template +BOOST_CONSTEXPR int countl_zero( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + return boost::core::detail::countl_impl( x ); +} + +#else // defined(__GNUC__) || defined(__clang__) + +namespace detail +{ + +#if defined(_MSC_VER) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) + +BOOST_CXX14_CONSTEXPR inline int countl_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + if( __builtin_is_constant_evaluated() ) + { + constexpr unsigned char mod37[ 37 ] = { 32, 31, 6, 30, 9, 5, 0, 29, 16, 8, 2, 4, 21, 0, 19, 28, 25, 15, 0, 7, 10, 1, 17, 3, 22, 20, 26, 0, 11, 18, 23, 27, 12, 24, 13, 14, 0 }; + + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + + return mod37[ x % 37 ]; + } + else + { + unsigned long r; + + if( _BitScanReverse( &r, x ) ) + { + return 31 - static_cast( r ); + } + else + { + return 32; + } + } +} + +BOOST_CXX14_CONSTEXPR inline int countl_impl( boost::uint8_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countl_impl( static_cast( x ) ) - 24; +} + +BOOST_CXX14_CONSTEXPR inline int countl_impl( boost::uint16_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countl_impl( static_cast( x ) ) - 16; +} + +#elif defined(_MSC_VER) + +inline int countl_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + unsigned long r; + + if( _BitScanReverse( &r, x ) ) + { + return 31 - static_cast( r ); + } + else + { + return 32; + } +} + +inline int countl_impl( boost::uint8_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countl_impl( static_cast( x ) ) - 24; +} + +inline int countl_impl( boost::uint16_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countl_impl( static_cast( x ) ) - 16; +} + +#else + +inline int countl_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + static unsigned char const mod37[ 37 ] = { 32, 31, 6, 30, 9, 5, 0, 29, 16, 8, 2, 4, 21, 0, 19, 28, 25, 15, 0, 7, 10, 1, 17, 3, 22, 20, 26, 0, 11, 18, 23, 27, 12, 24, 13, 14, 0 }; + + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + + return mod37[ x % 37 ]; +} + +inline int countl_impl( boost::uint8_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countl_impl( static_cast( x ) ) - 24; +} + +inline int countl_impl( boost::uint16_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countl_impl( static_cast( x ) ) - 16; +} + +#endif + +#if defined(_MSC_VER) && defined(_M_X64) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) + +BOOST_CXX14_CONSTEXPR inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + if( __builtin_is_constant_evaluated() ) + { + return static_cast( x >> 32 ) != 0? + boost::core::detail::countl_impl( static_cast( x >> 32 ) ): + boost::core::detail::countl_impl( static_cast( x ) ) + 32; + } + else + { + unsigned long r; + + if( _BitScanReverse64( &r, x ) ) + { + return 63 - static_cast( r ); + } + else + { + return 64; + } + } +} + +#elif defined(_MSC_VER) && defined(_M_X64) + +inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + unsigned long r; + + if( _BitScanReverse64( &r, x ) ) + { + return 63 - static_cast( r ); + } + else + { + return 64; + } +} + +#elif defined(_MSC_VER) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) + +BOOST_CXX14_CONSTEXPR inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + return static_cast( x >> 32 ) != 0? + boost::core::detail::countl_impl( static_cast( x >> 32 ) ): + boost::core::detail::countl_impl( static_cast( x ) ) + 32; +} + +#else + +inline int countl_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + return static_cast( x >> 32 ) != 0? + boost::core::detail::countl_impl( static_cast( x >> 32 ) ): + boost::core::detail::countl_impl( static_cast( x ) ) + 32; +} + +#endif + +} // namespace detail + +template +BOOST_CXX14_CONSTEXPR int countl_zero( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + BOOST_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) ); + + BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint8_t) ) + { + return boost::core::detail::countl_impl( static_cast( x ) ); + } + else BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint16_t) ) + { + return boost::core::detail::countl_impl( static_cast( x ) ); + } + else BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint32_t) ) + { + return boost::core::detail::countl_impl( static_cast( x ) ); + } + else + { + return boost::core::detail::countl_impl( static_cast( x ) ); + } +} + +#endif // defined(__GNUC__) || defined(__clang__) + +template +BOOST_CONSTEXPR int countl_one( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + return boost::core::countl_zero( static_cast( ~x ) ); +} + +// countr + +#if defined(__GNUC__) || defined(__clang__) + +namespace detail +{ + +BOOST_CONSTEXPR inline int countr_impl( unsigned char x ) BOOST_NOEXCEPT +{ + return x? __builtin_ctz( x ): std::numeric_limits::digits; +} + +BOOST_CONSTEXPR inline int countr_impl( unsigned short x ) BOOST_NOEXCEPT +{ + return x? __builtin_ctz( x ): std::numeric_limits::digits; +} + +BOOST_CONSTEXPR inline int countr_impl( unsigned int x ) BOOST_NOEXCEPT +{ + return x? __builtin_ctz( x ): std::numeric_limits::digits; +} + +BOOST_CONSTEXPR inline int countr_impl( unsigned long x ) BOOST_NOEXCEPT +{ + return x? __builtin_ctzl( x ): std::numeric_limits::digits; +} + +BOOST_CONSTEXPR inline int countr_impl( boost::ulong_long_type x ) BOOST_NOEXCEPT +{ + return x? __builtin_ctzll( x ): std::numeric_limits::digits; +} + +} // namespace detail + +template +BOOST_CONSTEXPR int countr_zero( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + return boost::core::detail::countr_impl( x ); +} + +#else // defined(__GNUC__) || defined(__clang__) + +namespace detail +{ + +#if defined(_MSC_VER) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) + +BOOST_CXX14_CONSTEXPR inline int countr_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + if( __builtin_is_constant_evaluated() ) + { + constexpr unsigned char mod37[ 37 ] = { 32, 0, 1, 26, 2, 23, 27, 0, 3, 16, 24, 30, 28, 11, 0, 13, 4, 7, 17, 0, 25, 22, 31, 15, 29, 10, 12, 6, 0, 21, 14, 9, 5, 20, 8, 19, 18 }; + return mod37[ ( -(boost::int32_t)x & x ) % 37 ]; + } + else + { + unsigned long r; + + if( _BitScanForward( &r, x ) ) + { + return static_cast( r ); + } + else + { + return 32; + } + } +} + +BOOST_CXX14_CONSTEXPR inline int countr_impl( boost::uint8_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countr_impl( static_cast( x ) | 0x100 ); +} + +BOOST_CXX14_CONSTEXPR inline int countr_impl( boost::uint16_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countr_impl( static_cast( x ) | 0x10000 ); +} + +#elif defined(_MSC_VER) + +inline int countr_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + unsigned long r; + + if( _BitScanForward( &r, x ) ) + { + return static_cast( r ); + } + else + { + return 32; + } +} + +inline int countr_impl( boost::uint8_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countr_impl( static_cast( x ) | 0x100 ); +} + +inline int countr_impl( boost::uint16_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countr_impl( static_cast( x ) | 0x10000 ); +} + +#else + +inline int countr_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + static unsigned char const mod37[ 37 ] = { 32, 0, 1, 26, 2, 23, 27, 0, 3, 16, 24, 30, 28, 11, 0, 13, 4, 7, 17, 0, 25, 22, 31, 15, 29, 10, 12, 6, 0, 21, 14, 9, 5, 20, 8, 19, 18 }; + return mod37[ ( -(boost::int32_t)x & x ) % 37 ]; +} + +inline int countr_impl( boost::uint8_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countr_impl( static_cast( x ) | 0x100 ); +} + +inline int countr_impl( boost::uint16_t x ) BOOST_NOEXCEPT +{ + return boost::core::detail::countr_impl( static_cast( x ) | 0x10000 ); +} + +#endif + +#if defined(_MSC_VER) && defined(_M_X64) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) + +BOOST_CXX14_CONSTEXPR inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + if( __builtin_is_constant_evaluated() ) + { + return static_cast( x ) != 0? + boost::core::detail::countr_impl( static_cast( x ) ): + boost::core::detail::countr_impl( static_cast( x >> 32 ) ) + 32; + } + else + { + unsigned long r; + + if( _BitScanForward64( &r, x ) ) + { + return static_cast( r ); + } + else + { + return 64; + } + } +} + +#elif defined(_MSC_VER) && defined(_M_X64) + +inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + unsigned long r; + + if( _BitScanForward64( &r, x ) ) + { + return static_cast( r ); + } + else + { + return 64; + } +} + +#elif defined(_MSC_VER) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) + +BOOST_CXX14_CONSTEXPR inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + return static_cast( x ) != 0? + boost::core::detail::countr_impl( static_cast( x ) ): + boost::core::detail::countr_impl( static_cast( x >> 32 ) ) + 32; +} + +#else + +inline int countr_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + return static_cast( x ) != 0? + boost::core::detail::countr_impl( static_cast( x ) ): + boost::core::detail::countr_impl( static_cast( x >> 32 ) ) + 32; +} + +#endif + +} // namespace detail + +template +BOOST_CXX14_CONSTEXPR int countr_zero( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + BOOST_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) ); + + BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint8_t) ) + { + return boost::core::detail::countr_impl( static_cast( x ) ); + } + else BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint16_t) ) + { + return boost::core::detail::countr_impl( static_cast( x ) ); + } + else BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint32_t) ) + { + return boost::core::detail::countr_impl( static_cast( x ) ); + } + else + { + return boost::core::detail::countr_impl( static_cast( x ) ); + } +} + +#endif // defined(__GNUC__) || defined(__clang__) + +template +BOOST_CONSTEXPR int countr_one( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + return boost::core::countr_zero( static_cast( ~x ) ); +} + +// popcount + +#if defined(__GNUC__) || defined(__clang__) + +#if defined(__clang__) && __clang_major__ * 100 + __clang_minor__ < 304 +# define BOOST_CORE_POPCOUNT_CONSTEXPR +#else +# define BOOST_CORE_POPCOUNT_CONSTEXPR BOOST_CONSTEXPR +#endif + +namespace detail +{ + +BOOST_CORE_POPCOUNT_CONSTEXPR inline int popcount_impl( unsigned char x ) BOOST_NOEXCEPT +{ + return __builtin_popcount( x ); +} + +BOOST_CORE_POPCOUNT_CONSTEXPR inline int popcount_impl( unsigned short x ) BOOST_NOEXCEPT +{ + return __builtin_popcount( x ); +} + +BOOST_CORE_POPCOUNT_CONSTEXPR inline int popcount_impl( unsigned int x ) BOOST_NOEXCEPT +{ + return __builtin_popcount( x ); +} + +BOOST_CORE_POPCOUNT_CONSTEXPR inline int popcount_impl( unsigned long x ) BOOST_NOEXCEPT +{ + return __builtin_popcountl( x ); +} + +BOOST_CORE_POPCOUNT_CONSTEXPR inline int popcount_impl( boost::ulong_long_type x ) BOOST_NOEXCEPT +{ + return __builtin_popcountll( x ); +} + +} // namespace detail + +#undef BOOST_CORE_POPCOUNT_CONSTEXPR + +template +BOOST_CONSTEXPR int popcount( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + return boost::core::detail::popcount_impl( x ); +} + +#else // defined(__GNUC__) || defined(__clang__) + +namespace detail +{ + +BOOST_CXX14_CONSTEXPR inline int popcount_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + x = x - ( ( x >> 1 ) & 0x55555555 ); + x = ( x & 0x33333333 ) + ( ( x >> 2 ) & 0x33333333 ); + x = ( x + ( x >> 4 ) ) & 0x0F0F0F0F; + + return static_cast( ( x * 0x01010101 ) >> 24 ); +} + +BOOST_CXX14_CONSTEXPR inline int popcount_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + x = x - ( ( x >> 1 ) & 0x5555555555555555 ); + x = ( x & 0x3333333333333333 ) + ( ( x >> 2 ) & 0x3333333333333333 ); + x = ( x + ( x >> 4 ) ) & 0x0F0F0F0F0F0F0F0F; + + return static_cast( ( x * 0x0101010101010101 ) >> 56 ); +} + +} // namespace detail + +template +BOOST_CXX14_CONSTEXPR int popcount( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + BOOST_STATIC_ASSERT( sizeof(T) <= sizeof(boost::uint64_t) ); + + BOOST_IF_CONSTEXPR ( sizeof(T) <= sizeof(boost::uint32_t) ) + { + return boost::core::detail::popcount_impl( static_cast( x ) ); + } + else + { + return boost::core::detail::popcount_impl( static_cast( x ) ); + } +} + +#endif // defined(__GNUC__) || defined(__clang__) + +// rotating + +template +BOOST_CXX14_CONSTEXPR T rotl( T x, int s ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + unsigned const mask = std::numeric_limits::digits - 1; + return static_cast( x << (static_cast( s ) & mask) | x >> (static_cast( -s ) & mask) ); +} + +template +BOOST_CXX14_CONSTEXPR T rotr( T x, int s ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + unsigned const mask = std::numeric_limits::digits - 1; + return static_cast( x >> (static_cast( s ) & mask) | x << (static_cast( -s ) & mask) ); +} + +// integral powers of 2 + +template +BOOST_CONSTEXPR bool has_single_bit( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + return x != 0 && ( x & ( x - 1 ) ) == 0; +} + +// bit_width returns `int` now, https://cplusplus.github.io/LWG/issue3656 +// has been applied to C++20 as a DR + +template +BOOST_CONSTEXPR int bit_width( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + return std::numeric_limits::digits - boost::core::countl_zero( x ); +} + +template +BOOST_CONSTEXPR T bit_floor( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + return x == 0? T(0): static_cast( T(1) << ( boost::core::bit_width( x ) - 1 ) ); +} + +namespace detail +{ + +BOOST_CXX14_CONSTEXPR inline boost::uint32_t bit_ceil_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + if( x == 0 ) + { + return 0; + } + + --x; + + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + + ++x; + + return x; +} + +BOOST_CXX14_CONSTEXPR inline boost::uint64_t bit_ceil_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + if( x == 0 ) + { + return 0; + } + + --x; + + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + x |= x >> 32; + + ++x; + + return x; +} + +} // namespace detail + +template +BOOST_CXX14_CONSTEXPR T bit_ceil( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer && !std::numeric_limits::is_signed ); + + BOOST_STATIC_ASSERT( sizeof(T) <= sizeof(boost::uint64_t) ); + + BOOST_IF_CONSTEXPR ( sizeof(T) <= sizeof(boost::uint32_t) ) + { + return static_cast( boost::core::detail::bit_ceil_impl( static_cast( x ) ) ); + } + else + { + return static_cast( boost::core::detail::bit_ceil_impl( static_cast( x ) ) ); + } +} + +// endian + +#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + +# define BOOST_CORE_BIT_NATIVE_INITIALIZER =little + +#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + +# define BOOST_CORE_BIT_NATIVE_INITIALIZER =big + +#elif defined(__BYTE_ORDER__) && defined(__ORDER_PDP_ENDIAN__) && __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__ + +# define BOOST_CORE_BIT_NATIVE_INITIALIZER + +#elif defined(__LITTLE_ENDIAN__) + +# define BOOST_CORE_BIT_NATIVE_INITIALIZER =little + +#elif defined(__BIG_ENDIAN__) + +# define BOOST_CORE_BIT_NATIVE_INITIALIZER =big + +#elif defined(_MSC_VER) || defined(__i386__) || defined(__x86_64__) + +# define BOOST_CORE_BIT_NATIVE_INITIALIZER =little + +#else + +# define BOOST_CORE_BIT_NATIVE_INITIALIZER + +#endif + +#if !defined(BOOST_NO_CXX11_SCOPED_ENUMS) + +enum class endian +{ + big, + little, + native BOOST_CORE_BIT_NATIVE_INITIALIZER +}; + +typedef endian endian_type; + +#else + +namespace endian +{ + +enum type +{ + big, + little, + native BOOST_CORE_BIT_NATIVE_INITIALIZER +}; + +} // namespace endian + +typedef endian::type endian_type; + +#endif + +#undef BOOST_CORE_BIT_NATIVE_INITIALIZER + +// byteswap + +namespace detail +{ + +BOOST_CONSTEXPR inline boost::uint8_t byteswap_impl( boost::uint8_t x ) BOOST_NOEXCEPT +{ + return x; +} + +BOOST_CONSTEXPR inline boost::uint16_t byteswap_impl( boost::uint16_t x ) BOOST_NOEXCEPT +{ + return static_cast( x << 8 | x >> 8 ); +} + +#if defined(__GNUC__) || defined(__clang__) + +BOOST_CXX14_CONSTEXPR inline boost::uint32_t byteswap_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + return __builtin_bswap32( x ); +} + +BOOST_CXX14_CONSTEXPR inline boost::uint64_t byteswap_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + return __builtin_bswap64( x ); +} + +#elif defined(_MSC_VER) && defined(BOOST_CORE_HAS_BUILTIN_ISCONSTEVAL) + +BOOST_CXX14_CONSTEXPR inline boost::uint32_t byteswap_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + if( __builtin_is_constant_evaluated() ) + { + boost::uint32_t step16 = x << 16 | x >> 16; + return ((step16 << 8) & 0xff00ff00) | ((step16 >> 8) & 0x00ff00ff); + } + else + { + return _byteswap_ulong( x ); + } +} + +BOOST_CXX14_CONSTEXPR inline boost::uint64_t byteswap_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + if( __builtin_is_constant_evaluated() ) + { + boost::uint64_t step32 = x << 32 | x >> 32; + boost::uint64_t step16 = (step32 & 0x0000FFFF0000FFFFULL) << 16 | (step32 & 0xFFFF0000FFFF0000ULL) >> 16; + return (step16 & 0x00FF00FF00FF00FFULL) << 8 | (step16 & 0xFF00FF00FF00FF00ULL) >> 8; + } + else + { + return _byteswap_uint64( x ); + } +} + +#elif defined(_MSC_VER) + +inline boost::uint32_t byteswap_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + return _byteswap_ulong( x ); +} + +inline boost::uint64_t byteswap_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + return _byteswap_uint64( x ); +} + +#else + +BOOST_CXX14_CONSTEXPR inline boost::uint32_t byteswap_impl( boost::uint32_t x ) BOOST_NOEXCEPT +{ + boost::uint32_t step16 = x << 16 | x >> 16; + return ((step16 << 8) & 0xff00ff00) | ((step16 >> 8) & 0x00ff00ff); +} + +BOOST_CXX14_CONSTEXPR inline boost::uint64_t byteswap_impl( boost::uint64_t x ) BOOST_NOEXCEPT +{ + boost::uint64_t step32 = x << 32 | x >> 32; + boost::uint64_t step16 = (step32 & 0x0000FFFF0000FFFFULL) << 16 | (step32 & 0xFFFF0000FFFF0000ULL) >> 16; + return (step16 & 0x00FF00FF00FF00FFULL) << 8 | (step16 & 0xFF00FF00FF00FF00ULL) >> 8; +} + +#endif + +} // namespace detail + +template BOOST_CXX14_CONSTEXPR T byteswap( T x ) BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT( std::numeric_limits::is_integer ); + + BOOST_STATIC_ASSERT( sizeof(T) == sizeof(boost::uint8_t) || sizeof(T) == sizeof(boost::uint16_t) || sizeof(T) == sizeof(boost::uint32_t) || sizeof(T) == sizeof(boost::uint64_t) ); + + BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint8_t) ) + { + return static_cast( boost::core::detail::byteswap_impl( static_cast( x ) ) ); + } + else BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint16_t) ) + { + return static_cast( boost::core::detail::byteswap_impl( static_cast( x ) ) ); + } + else BOOST_IF_CONSTEXPR ( sizeof(T) == sizeof(boost::uint32_t) ) + { + return static_cast( boost::core::detail::byteswap_impl( static_cast( x ) ) ); + } + else + { + return static_cast( boost::core::detail::byteswap_impl( static_cast( x ) ) ); + } +} + +} // namespace core +} // namespace boost + +#if defined(_MSC_VER) +# pragma warning(pop) +#endif + +#endif // #ifndef BOOST_CORE_BIT_HPP_INCLUDED diff --git a/src/boost/boost/core/checked_delete.hpp b/src/boost/boost/core/checked_delete.hpp index d750f418f..4820f661a 100644 --- a/src/boost/boost/core/checked_delete.hpp +++ b/src/boost/boost/core/checked_delete.hpp @@ -7,6 +7,8 @@ # pragma once #endif +#include + // // boost/checked_delete.hpp // @@ -26,18 +28,35 @@ namespace boost // verify that types are complete for increased safety -template inline void checked_delete(T * x) +template inline void checked_delete(T * x) BOOST_NOEXCEPT { - // intentionally complex - simplification causes regressions - typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; +#if defined(__cpp_static_assert) && __cpp_static_assert >= 200410L + + static_assert( sizeof(T) != 0, "Type must be complete" ); + +#else + + typedef char type_must_be_complete[ sizeof(T) ]; (void) sizeof(type_must_be_complete); + +#endif + delete x; } -template inline void checked_array_delete(T * x) +template inline void checked_array_delete(T * x) BOOST_NOEXCEPT { - typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; +#if defined(__cpp_static_assert) && __cpp_static_assert >= 200410L + + static_assert( sizeof(T) != 0, "Type must be complete" ); + +#else + + typedef char type_must_be_complete[ sizeof(T) ]; (void) sizeof(type_must_be_complete); + +#endif + delete [] x; } @@ -46,7 +65,7 @@ template struct checked_deleter typedef void result_type; typedef T * argument_type; - void operator()(T * x) const + void operator()(T * x) const BOOST_NOEXCEPT { // boost:: disables ADL boost::checked_delete(x); @@ -58,7 +77,7 @@ template struct checked_array_deleter typedef void result_type; typedef T * argument_type; - void operator()(T * x) const + void operator()(T * x) const BOOST_NOEXCEPT { boost::checked_array_delete(x); } diff --git a/src/boost/boost/core/cmath.hpp b/src/boost/boost/core/cmath.hpp new file mode 100644 index 000000000..2ed8016b8 --- /dev/null +++ b/src/boost/boost/core/cmath.hpp @@ -0,0 +1,298 @@ +#ifndef BOOST_CORE_CMATH_HPP_INCLUDED +#define BOOST_CORE_CMATH_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// boost/core/cmath.hpp +// +// Floating point classification and sign manipulation functions +// Extracted from https://github.com/boostorg/lexical_cast/pull/37 +// +// Copyright 2020, 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include + +#if defined(BOOST_CORE_USE_GENERIC_CMATH) || (!defined(_MSC_VER) && !defined(FP_SUBNORMAL)) + +#include +#include +#include +#include + +namespace boost +{ +namespace core +{ + +// fpclassify return values + +int const fp_zero = 0; +int const fp_subnormal = 1; +int const fp_normal = 2; +int const fp_infinite = 3; +int const fp_nan = 4; + +// Classification functions + +template bool isfinite( T x ) +{ + return x <= (std::numeric_limits::max)() && x >= -(std::numeric_limits::max)(); +} + +template bool isinf( T x ) +{ + return x > (std::numeric_limits::max)() || x < -(std::numeric_limits::max)(); +} + +template bool isnan( T x ) +{ + return !isfinite( x ) && !isinf( x ); +} + +template bool isnormal( T x ) +{ + return isfinite( x ) && ( x >= (std::numeric_limits::min)() || x <= -(std::numeric_limits::min)() ); +} + +template int fpclassify( T x ) +{ + if( x == 0 ) return fp_zero; + + if( x < 0 ) x = -x; + + if( x > (std::numeric_limits::max)() ) return fp_infinite; + + if( x >= (std::numeric_limits::min)() ) return fp_normal; + + if( x < (std::numeric_limits::min)() ) return fp_subnormal; + + return fp_nan; +} + +// Sign manipulation functions + +inline bool signbit( float x ) +{ + boost::int32_t y; + + BOOST_STATIC_ASSERT( sizeof( x ) == sizeof( y ) ); + + std::memcpy( &y, &x, sizeof( y ) ); + + return y < 0; +} + +inline bool signbit( double x ) +{ + boost::int64_t y; + + BOOST_STATIC_ASSERT( sizeof( x ) == sizeof( y ) ); + + std::memcpy( &y, &x, sizeof( y ) ); + + return y < 0; +} + +inline bool signbit( long double x ) +{ + return signbit( static_cast( x ) ); +} + +template T copysign( T x, T y ) +{ + return signbit( x ) == signbit( y )? x: -x; +} + +} // namespace core +} // namespace boost + +#else // defined(BOOST_CORE_USE_GENERIC_CMATH) + +#if defined(_MSC_VER) && _MSC_VER < 1800 +# include +#endif + +namespace boost +{ +namespace core +{ +#if defined(_MSC_VER) && _MSC_VER < 1800 + +template T copysign( T x, T y ) +{ + return static_cast( _copysign( static_cast( x ), static_cast( y ) ) ); +} + +template bool isnan( T x ) +{ + return _isnan( static_cast( x ) ) != 0; +} + +template bool isfinite( T x ) +{ + return _finite( static_cast( x ) ) != 0; +} + +template bool isinf( T x ) +{ + return ( _fpclass( static_cast( x ) ) & ( _FPCLASS_PINF | _FPCLASS_NINF ) ) != 0; +} + +inline bool isnormal( float x ) +{ + // no _fpclassf in 32 bit mode + unsigned y = reinterpret_cast< unsigned const& >( x ); + unsigned exp = ( y >> 23 ) & 0xFF; + return exp != 0 && exp != 0xFF; +} + +inline bool isnormal( double x ) +{ + return ( _fpclass( x ) & ( _FPCLASS_PN | _FPCLASS_NN ) ) != 0; +} + +inline bool isnormal( long double x ) +{ + return boost::core::isnormal( static_cast( x ) ); +} + +template bool signbit( T x ) +{ + return _copysign( 1.0, static_cast( x ) ) < 0.0; +} + +int const fp_zero = 0; +int const fp_subnormal = 1; +int const fp_normal = 2; +int const fp_infinite = 3; +int const fp_nan = 4; + +inline int fpclassify( float x ) +{ + switch( _fpclass( x ) ) + { + case _FPCLASS_SNAN: + case _FPCLASS_QNAN: + + return fp_nan; + + case _FPCLASS_NINF: + case _FPCLASS_PINF: + + return fp_infinite; + + case _FPCLASS_NZ: + case _FPCLASS_PZ: + + return fp_zero; + + default: + + return boost::core::isnormal( x )? fp_normal: fp_subnormal; + } +} + +inline int fpclassify( double x ) +{ + switch( _fpclass( x ) ) + { + case _FPCLASS_SNAN: + case _FPCLASS_QNAN: + + return fp_nan; + + case _FPCLASS_NINF: + case _FPCLASS_PINF: + + return fp_infinite; + + case _FPCLASS_NZ: + case _FPCLASS_PZ: + + return fp_zero; + + case _FPCLASS_ND: + case _FPCLASS_PD: + + return fp_subnormal; + + default: + + return fp_normal; + } +} + +inline int fpclassify( long double x ) +{ + return boost::core::fpclassify( static_cast( x ) ); +} + +#else + +using std::isfinite; +using std::isnan; +using std::isinf; +using std::isnormal; +using std::fpclassify; + +int const fp_zero = FP_ZERO; +int const fp_subnormal = FP_SUBNORMAL; +int const fp_normal = FP_NORMAL; +int const fp_infinite = FP_INFINITE; +int const fp_nan = FP_NAN; + +using std::signbit; + +// std::copysign doesn't exist in libstdc++ under -std=c++03 + +#if !defined(__GNUC__) + +template T copysign( T x, T y ) +{ + return std::copysign( x, y ); +} + +#else + +namespace detail +{ + +// ::copysignl is unreliable, use the built-ins + +inline float copysign_impl( float x, float y ) +{ + return __builtin_copysignf( x, y ); +} + +inline double copysign_impl( double x, double y ) +{ + return __builtin_copysign( x, y ); +} + +inline long double copysign_impl( long double x, long double y ) +{ + return __builtin_copysignl( x, y ); +} + +} // namespace detail + +template T copysign( T x, T y ) +{ + return boost::core::detail::copysign_impl( x, y ); +} + +#endif // !defined(__GNUC__) +#endif // #if defined(_MSC_VER) && _MSC_VER < 1800 + +} // namespace core +} // namespace boost + +#endif // defined(BOOST_CORE_USE_GENERIC_CMATH) + +#endif // #ifndef BOOST_CORE_CMATH_HPP_INCLUDED diff --git a/src/boost/boost/core/detail/sp_thread_pause.hpp b/src/boost/boost/core/detail/sp_thread_pause.hpp new file mode 100644 index 000000000..9ba9a3d6b --- /dev/null +++ b/src/boost/boost/core/detail/sp_thread_pause.hpp @@ -0,0 +1,71 @@ +#ifndef BOOST_CORE_DETAIL_SP_THREAD_PAUSE_HPP_INCLUDED +#define BOOST_CORE_DETAIL_SP_THREAD_PAUSE_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// boost/core/detail/sp_thread_pause.hpp +// +// inline void bost::core::sp_thread_pause(); +// +// Emits a "pause" instruction. +// +// Copyright 2008, 2020, 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0 +// https://www.boost.org/LICENSE_1_0.txt + +#include + +#if defined(__has_builtin) +# if __has_builtin(__builtin_ia32_pause) && !defined(_INTEL_COMPILER) +# define BOOST_CORE_HAS_BUILTIN_IA32_PAUSE +# endif +#endif + +#if defined(BOOST_CORE_HAS_BUILTIN_IA32_PAUSE) + +# define BOOST_CORE_SP_PAUSE() __builtin_ia32_pause() + +#elif defined(_MSC_VER) && ( defined(_M_IX86) || defined(_M_X64) ) + +# include +# define BOOST_CORE_SP_PAUSE() _mm_pause() + +#elif defined(_MSC_VER) && ( defined(_M_ARM) || defined(_M_ARM64) ) + +# include +# define BOOST_CORE_SP_PAUSE() __yield() + +#elif defined(__GNUC__) && ( defined(__i386__) || defined(__x86_64__) ) + +# define BOOST_CORE_SP_PAUSE() __asm__ __volatile__( "rep; nop" : : : "memory" ) + +#elif defined(__GNUC__) && ( (defined(__ARM_ARCH) && __ARM_ARCH >= 8) || defined(__ARM_ARCH_8A__) || defined(__aarch64__) ) + +# define BOOST_CORE_SP_PAUSE() __asm__ __volatile__( "yield" : : : "memory" ) + +#else + +# define BOOST_CORE_SP_PAUSE() ((void)0) + +#endif + +namespace boost +{ +namespace core +{ + +BOOST_FORCEINLINE void sp_thread_pause() BOOST_NOEXCEPT +{ + BOOST_CORE_SP_PAUSE(); +} + +} // namespace core +} // namespace boost + +#undef BOOST_CORE_SP_PAUSE + +#endif // #ifndef BOOST_CORE_DETAIL_SP_THREAD_PAUSE_HPP_INCLUDED diff --git a/src/boost/boost/core/detail/sp_thread_sleep.hpp b/src/boost/boost/core/detail/sp_thread_sleep.hpp new file mode 100644 index 000000000..c3e892730 --- /dev/null +++ b/src/boost/boost/core/detail/sp_thread_sleep.hpp @@ -0,0 +1,122 @@ +#ifndef BOOST_CORE_DETAIL_SP_THREAD_SLEEP_HPP_INCLUDED +#define BOOST_CORE_DETAIL_SP_THREAD_SLEEP_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// boost/core/detail/sp_thread_sleep.hpp +// +// inline void bost::core::sp_thread_sleep(); +// +// Cease execution for a while to yield to other threads, +// as if by calling nanosleep() with an appropriate interval. +// +// Copyright 2008, 2020, 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0 +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include + +#if defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ ) + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + BOOST_PRAGMA_MESSAGE("Using Sleep(1) in sp_thread_sleep") +#endif + +#include + +namespace boost +{ +namespace core +{ +namespace detail +{ + +inline void sp_thread_sleep() BOOST_NOEXCEPT +{ + Sleep( 1 ); +} + +} // namespace detail + +using boost::core::detail::sp_thread_sleep; + +} // namespace core +} // namespace boost + +#elif defined(BOOST_HAS_NANOSLEEP) + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + BOOST_PRAGMA_MESSAGE("Using nanosleep() in sp_thread_sleep") +#endif + +#include + +#if defined(BOOST_HAS_PTHREADS) && !defined(__ANDROID__) +# include +#endif + +namespace boost +{ +namespace core +{ + +inline void sp_thread_sleep() BOOST_NOEXCEPT +{ +#if defined(BOOST_HAS_PTHREADS) && !defined(__ANDROID__) + + int oldst; + pthread_setcancelstate( PTHREAD_CANCEL_DISABLE, &oldst ); + +#endif + + // g++ -Wextra warns on {} or {0} + struct timespec rqtp = { 0, 0 }; + + // POSIX says that timespec has tv_sec and tv_nsec + // But it doesn't guarantee order or placement + + rqtp.tv_sec = 0; + rqtp.tv_nsec = 1000; + + nanosleep( &rqtp, 0 ); + +#if defined(BOOST_HAS_PTHREADS) && !defined(__ANDROID__) + + pthread_setcancelstate( oldst, &oldst ); + +#endif + +} + +} // namespace core +} // namespace boost + +#else + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + BOOST_PRAGMA_MESSAGE("Using sp_thread_yield() in sp_thread_sleep") +#endif + +#include + +namespace boost +{ +namespace core +{ + +inline void sp_thread_sleep() BOOST_NOEXCEPT +{ + sp_thread_yield(); +} + +} // namespace core +} // namespace boost + +#endif + +#endif // #ifndef BOOST_CORE_DETAIL_SP_THREAD_SLEEP_HPP_INCLUDED diff --git a/src/boost/boost/core/detail/sp_thread_yield.hpp b/src/boost/boost/core/detail/sp_thread_yield.hpp new file mode 100644 index 000000000..eeba3fc91 --- /dev/null +++ b/src/boost/boost/core/detail/sp_thread_yield.hpp @@ -0,0 +1,100 @@ +#ifndef BOOST_CORE_DETAIL_SP_THREAD_YIELD_HPP_INCLUDED +#define BOOST_CORE_DETAIL_SP_THREAD_YIELD_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// boost/core/detail/sp_thread_yield.hpp +// +// inline void bost::core::sp_thread_yield(); +// +// Gives up the remainder of the time slice, +// as if by calling sched_yield(). +// +// Copyright 2008, 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0 +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include + +#if defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ ) + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + BOOST_PRAGMA_MESSAGE("Using SwitchToThread() in sp_thread_yield") +#endif + +#include + +namespace boost +{ +namespace core +{ +namespace detail +{ + +inline void sp_thread_yield() BOOST_NOEXCEPT +{ + SwitchToThread(); +} + +} // namespace detail + +using boost::core::detail::sp_thread_yield; + +} // namespace core +} // namespace boost + +#elif defined(BOOST_HAS_SCHED_YIELD) + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + BOOST_PRAGMA_MESSAGE("Using sched_yield() in sp_thread_yield") +#endif + +#ifndef _AIX +# include +#else + // AIX's sched.h defines ::var which sometimes conflicts with Lambda's var + extern "C" int sched_yield(void); +#endif + +namespace boost +{ +namespace core +{ + +inline void sp_thread_yield() BOOST_NOEXCEPT +{ + sched_yield(); +} + +} // namespace core +} // namespace boost + +#else + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + BOOST_PRAGMA_MESSAGE("Using sp_thread_pause() in sp_thread_yield") +#endif + +#include + +namespace boost +{ +namespace core +{ + +inline void sp_thread_yield() BOOST_NOEXCEPT +{ + sp_thread_pause(); +} + +} // namespace core +} // namespace boost + +#endif + +#endif // #ifndef BOOST_CORE_DETAIL_SP_THREAD_YIELD_HPP_INCLUDED diff --git a/src/boost/boost/core/detail/sp_win32_sleep.hpp b/src/boost/boost/core/detail/sp_win32_sleep.hpp new file mode 100644 index 000000000..23bab0bf3 --- /dev/null +++ b/src/boost/boost/core/detail/sp_win32_sleep.hpp @@ -0,0 +1,54 @@ +#ifndef BOOST_CORE_DETAIL_SP_WIN32_SLEEP_HPP_INCLUDED +#define BOOST_CORE_DETAIL_SP_WIN32_SLEEP_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// boost/core/detail/sp_win32_sleep.hpp +// +// Declares the Win32 Sleep() function. +// +// Copyright 2008, 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0 +// https://www.boost.org/LICENSE_1_0.txt + +#if defined( BOOST_USE_WINDOWS_H ) +# include +#endif + +namespace boost +{ +namespace core +{ +namespace detail +{ + +#if !defined( BOOST_USE_WINDOWS_H ) + +#if defined(__clang__) && defined(__x86_64__) +// clang x64 warns that __stdcall is ignored +# define BOOST_CORE_SP_STDCALL +#else +# define BOOST_CORE_SP_STDCALL __stdcall +#endif + +#if defined(__LP64__) // Cygwin 64 + extern "C" __declspec(dllimport) void BOOST_CORE_SP_STDCALL Sleep( unsigned int ms ); +#else + extern "C" __declspec(dllimport) void BOOST_CORE_SP_STDCALL Sleep( unsigned long ms ); +#endif + +extern "C" __declspec(dllimport) int BOOST_CORE_SP_STDCALL SwitchToThread(); + +#undef BOOST_CORE_SP_STDCALL + +#endif // !defined( BOOST_USE_WINDOWS_H ) + +} // namespace detail +} // namespace core +} // namespace boost + +#endif // #ifndef BOOST_CORE_DETAIL_SP_WIN32_SLEEP_HPP_INCLUDED diff --git a/src/boost/boost/core/no_exceptions_support.hpp b/src/boost/boost/core/no_exceptions_support.hpp new file mode 100644 index 000000000..bad62c76a --- /dev/null +++ b/src/boost/boost/core/no_exceptions_support.hpp @@ -0,0 +1,56 @@ +#ifndef BOOST_CORE_NO_EXCEPTIONS_SUPPORT_HPP +#define BOOST_CORE_NO_EXCEPTIONS_SUPPORT_HPP + +#if defined(_MSC_VER) +# pragma once +#endif + +//---------------------------------------------------------------------- +// (C) Copyright 2004 Pavel Vozenilek. +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// +// This file contains helper macros used when exception support may be +// disabled (as indicated by macro BOOST_NO_EXCEPTIONS). +// +// Before picking up these macros you may consider using RAII techniques +// to deal with exceptions - their syntax can be always the same with +// or without exception support enabled. +//---------------------------------------------------------------------- + +#include +#include + +#if !(defined BOOST_NO_EXCEPTIONS) +# define BOOST_TRY { try +# define BOOST_CATCH(x) catch(x) +# define BOOST_RETHROW throw; +# define BOOST_CATCH_END } +#else +# if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) +# define BOOST_TRY { if ("") +# define BOOST_CATCH(x) else if (!"") +# elif !defined(BOOST_MSVC) || BOOST_MSVC >= 1900 +# define BOOST_TRY { if (true) +# define BOOST_CATCH(x) else if (false) +# else + // warning C4127: conditional expression is constant +# define BOOST_TRY { \ + __pragma(warning(push)) \ + __pragma(warning(disable: 4127)) \ + if (true) \ + __pragma(warning(pop)) +# define BOOST_CATCH(x) else \ + __pragma(warning(push)) \ + __pragma(warning(disable: 4127)) \ + if (false) \ + __pragma(warning(pop)) +# endif +# define BOOST_RETHROW +# define BOOST_CATCH_END } +#endif + + +#endif diff --git a/src/boost/boost/core/noncopyable.hpp b/src/boost/boost/core/noncopyable.hpp index 5912bcaae..25169cf7a 100644 --- a/src/boost/boost/core/noncopyable.hpp +++ b/src/boost/boost/core/noncopyable.hpp @@ -27,7 +27,7 @@ namespace noncopyable_ // protection from unintended ADL // whether a type derives from noncopyable without needing the definition // of noncopyable itself. // -// The definition of base_token is macro-guarded so that Type Trais can +// The definition of base_token is macro-guarded so that Type Traits can // define it locally without including this header, to avoid a dependency // on Core. diff --git a/src/boost/boost/core/ref.hpp b/src/boost/boost/core/ref.hpp index 8af2a2aac..1b8742b84 100644 --- a/src/boost/boost/core/ref.hpp +++ b/src/boost/boost/core/ref.hpp @@ -1,15 +1,14 @@ #ifndef BOOST_CORE_REF_HPP #define BOOST_CORE_REF_HPP -// MS compatible compilers support #pragma once - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - #include #include #include +#include + +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif // // ref.hpp - ref/cref, useful helper functions @@ -46,6 +45,28 @@ namespace boost #endif +namespace detail +{ + +template< class Y, class T > struct ref_convertible +{ + typedef char (&yes) [1]; + typedef char (&no) [2]; + + static yes f( T* ); + static no f( ... ); + + enum _vt { value = sizeof( (f)( static_cast(0) ) ) == sizeof(yes) }; +}; + +#if defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) +struct ref_empty +{ +}; +#endif + +} // namespace detail + // reference_wrapper /** @@ -71,11 +92,11 @@ template class reference_wrapper @remark Does not throw. */ - BOOST_FORCEINLINE explicit reference_wrapper(T& t): t_(boost::addressof(t)) {} + BOOST_FORCEINLINE explicit reference_wrapper(T& t) BOOST_NOEXCEPT : t_(boost::addressof(t)) {} #if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, == 1600 ) - BOOST_FORCEINLINE explicit reference_wrapper( T & t, ref_workaround_tag ): t_( boost::addressof( t ) ) {} + BOOST_FORCEINLINE explicit reference_wrapper( T & t, ref_workaround_tag ) BOOST_NOEXCEPT : t_( boost::addressof( t ) ) {} #endif @@ -87,24 +108,46 @@ template class reference_wrapper public: #endif + template friend class reference_wrapper; + + /** + Constructs a `reference_wrapper` object that stores the + reference stored in the compatible `reference_wrapper` `r`. + + @remark Only enabled when `Y*` is convertible to `T*`. + @remark Does not throw. + */ +#if !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) + template::value>::type> + reference_wrapper( reference_wrapper r ) BOOST_NOEXCEPT : t_( r.t_ ) + { + } +#else + template reference_wrapper( reference_wrapper r, + typename enable_if_c::value, + boost::detail::ref_empty>::type = boost::detail::ref_empty() ) BOOST_NOEXCEPT : t_( r.t_ ) + { + } +#endif + /** @return The stored reference. @remark Does not throw. */ - BOOST_FORCEINLINE operator T& () const { return *t_; } + BOOST_FORCEINLINE operator T& () const BOOST_NOEXCEPT { return *t_; } /** @return The stored reference. @remark Does not throw. */ - BOOST_FORCEINLINE T& get() const { return *t_; } + BOOST_FORCEINLINE T& get() const BOOST_NOEXCEPT { return *t_; } /** @return A pointer to the object referenced by the stored reference. @remark Does not throw. */ - BOOST_FORCEINLINE T* get_pointer() const { return t_; } + BOOST_FORCEINLINE T* get_pointer() const BOOST_NOEXCEPT { return t_; } private: @@ -116,7 +159,7 @@ template class reference_wrapper /** @cond */ -#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) +#if defined( BOOST_BORLANDC ) && BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x581) ) # define BOOST_REF_CONST #else # define BOOST_REF_CONST const @@ -129,7 +172,7 @@ template class reference_wrapper @return `reference_wrapper(t)` @remark Does not throw. */ -template BOOST_FORCEINLINE reference_wrapper BOOST_REF_CONST ref( T & t ) +template BOOST_FORCEINLINE reference_wrapper BOOST_REF_CONST ref( T & t ) BOOST_NOEXCEPT { #if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, == 1600 ) @@ -148,7 +191,7 @@ template BOOST_FORCEINLINE reference_wrapper BOOST_REF_CONST ref( T @return `reference_wrapper(t)` @remark Does not throw. */ -template BOOST_FORCEINLINE reference_wrapper BOOST_REF_CONST cref( T const & t ) +template BOOST_FORCEINLINE reference_wrapper BOOST_REF_CONST cref( T const & t ) BOOST_NOEXCEPT { return reference_wrapper(t); } @@ -279,7 +322,7 @@ template struct unwrap_reference< reference_wrapper const volatil @return `unwrap_reference::type&(t)` @remark Does not throw. */ -template BOOST_FORCEINLINE typename unwrap_reference::type& unwrap_ref( T & t ) +template BOOST_FORCEINLINE typename unwrap_reference::type& unwrap_ref( T & t ) BOOST_NOEXCEPT { return t; } @@ -289,7 +332,7 @@ template BOOST_FORCEINLINE typename unwrap_reference::type& unwrap_r /** @cond */ -template BOOST_FORCEINLINE T* get_pointer( reference_wrapper const & r ) +template BOOST_FORCEINLINE T* get_pointer( reference_wrapper const & r ) BOOST_NOEXCEPT { return r.get_pointer(); } diff --git a/src/boost/boost/core/snprintf.hpp b/src/boost/boost/core/snprintf.hpp new file mode 100644 index 000000000..0b6204f98 --- /dev/null +++ b/src/boost/boost/core/snprintf.hpp @@ -0,0 +1,173 @@ +/* + * Copyright Andrey Semashev 2022. + * 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) + */ +/*! + * \file snprintf.hpp + * \author Andrey Semashev + * \date 06.12.2022 + * + * \brief The header provides more portable definition of snprintf and vsnprintf, + * as well as \c wchar_t counterparts. + */ + +#ifndef BOOST_CORE_SNPRINTF_HPP_INCLUDED_ +#define BOOST_CORE_SNPRINTF_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__MINGW32__) + +#include +#include +#if !defined(__MINGW64_VERSION_MAJOR) +#include +#endif + +// MinGW32 and MinGW-w64 provide their own snprintf implementations that are compliant with the C standard. +#define BOOST_CORE_DETAIL_MINGW_SNPRINTF + +#elif (defined(BOOST_MSSTL_VERSION) && BOOST_MSSTL_VERSION < 140) + +#include +#include +#include + +// MSVC snprintfs are not conforming but they are good enough for typical use cases. +#define BOOST_CORE_DETAIL_MSVC_LEGACY_SNPRINTF + +#endif + +namespace boost { + +namespace core { + +#if defined(BOOST_CORE_DETAIL_MINGW_SNPRINTF) || defined(BOOST_CORE_DETAIL_MSVC_LEGACY_SNPRINTF) + +#if defined(BOOST_CORE_DETAIL_MINGW_SNPRINTF) + +inline int vsnprintf(char* buf, std::size_t size, const char* format, std::va_list args) +{ + return __mingw_vsnprintf(buf, size, format, args); +} + +inline int vswprintf(wchar_t* buf, std::size_t size, const wchar_t* format, std::va_list args) +{ +#if defined(__MINGW64_VERSION_MAJOR) + int res = __mingw_vsnwprintf(buf, size, format, args); + // __mingw_vsnwprintf returns the number of characters to be printed, but (v)swprintf is expected to return -1 on truncation + if (static_cast< unsigned int >(res) >= size) + res = -1; + return res; +#else + // Legacy MinGW32 does not provide __mingw_vsnwprintf, so use _vsnwprintf from MSVC CRT + if (BOOST_UNLIKELY(size == 0u || size > static_cast< std::size_t >(INT_MAX))) + return -1; + + int res = _vsnwprintf(buf, size, format, args); + // (v)swprintf is expected to return -1 on truncation, so we only need to ensure the output is null-terminated + if (static_cast< unsigned int >(res) >= size) + { + buf[size - 1u] = L'\0'; + res = -1; + } + + return res; +#endif +} + +#elif defined(BOOST_CORE_DETAIL_MSVC_LEGACY_SNPRINTF) + +#if defined(_MSC_VER) +#pragma warning(push) +// '_vsnprintf': This function or variable may be unsafe. Consider using _vsnprintf_s instead. +#pragma warning(disable: 4996) +#endif + +inline int vsnprintf(char* buf, std::size_t size, const char* format, std::va_list args) +{ + if (BOOST_UNLIKELY(size == 0u)) + return 0; + if (BOOST_UNLIKELY(size > static_cast< std::size_t >(INT_MAX))) + return -1; + + buf[size - 1u] = '\0'; + int res = _vsnprintf(buf, size, format, args); + if (static_cast< unsigned int >(res) >= size) + { + // _vsnprintf returns -1 if the output was truncated and in case of other errors. + // Detect truncation by checking whether the output buffer was written over entirely. + if (buf[size - 1u] != '\0') + { + buf[size - 1u] = '\0'; + res = static_cast< int >(size); + } + } + + return res; +} + +inline int vswprintf(wchar_t* buf, std::size_t size, const wchar_t* format, std::va_list args) +{ + if (BOOST_UNLIKELY(size == 0u || size > static_cast< std::size_t >(INT_MAX))) + return -1; + + int res = _vsnwprintf(buf, size, format, args); + // (v)swprintf is expected to return -1 on truncation, so we only need to ensure the output is null-terminated + if (static_cast< unsigned int >(res) >= size) + { + buf[size - 1u] = L'\0'; + res = -1; + } + + return res; +} + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif + +#endif + +inline int snprintf(char* buf, std::size_t size, const char* format, ...) +{ + std::va_list args; + va_start(args, format); + int res = vsnprintf(buf, size, format, args); + va_end(args); + return res; +} + +inline int swprintf(wchar_t* buf, std::size_t size, const wchar_t* format, ...) +{ + std::va_list args; + va_start(args, format); + int res = vswprintf(buf, size, format, args); + va_end(args); + return res; +} + +#else // defined(BOOST_CORE_DETAIL_MINGW_SNPRINTF) || defined(BOOST_CORE_DETAIL_MSVC_LEGACY_SNPRINTF) + +// Standard-conforming compilers already have the correct snprintfs +using ::snprintf; +using ::vsnprintf; + +using ::swprintf; +using ::vswprintf; + +#endif // defined(BOOST_CORE_DETAIL_MINGW_SNPRINTF) || defined(BOOST_CORE_DETAIL_MSVC_LEGACY_SNPRINTF) + +} // namespace core + +} // namespace boost + +#endif // BOOST_CORE_SNPRINTF_HPP_INCLUDED_ diff --git a/src/boost/boost/core/swap.hpp b/src/boost/boost/core/swap.hpp index 2b88936c4..4d5a3d2f7 100644 --- a/src/boost/boost/core/swap.hpp +++ b/src/boost/boost/core/swap.hpp @@ -13,19 +13,33 @@ // - swap_impl is put outside the boost namespace, to avoid infinite // recursion (causing stack overflow) when swapping objects of a primitive // type. -// - swap_impl has a using-directive, rather than a using-declaration, -// because some compilers (including MSVC 7.1, Borland 5.9.3, and -// Intel 8.1) don't do argument-dependent lookup when it has a -// using-declaration instead. +// - std::swap is imported with a using-directive, rather than +// a using-declaration, because some compilers (including MSVC 7.1, +// Borland 5.9.3, and Intel 8.1) don't do argument-dependent lookup +// when it has a using-declaration instead. // - boost::swap has two template arguments, instead of one, to // avoid ambiguity when swapping objects of a Boost type that does // not have its own boost::swap overload. #include #include -#include //for std::swap (C++11) -#include //for std::swap (C++98) -#include //for std::size_t +#if __cplusplus >= 201103L || defined(BOOST_DINKUMWARE_STDLIB) +#include // for std::swap (C++11) +#else +#include // for std::swap (C++98) +#endif +#include // for std::size_t + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(BOOST_GCC) && (BOOST_GCC < 40700) +// gcc 4.6 ICEs on noexcept specifications below +#define BOOST_CORE_SWAP_NOEXCEPT_IF(x) +#else +#define BOOST_CORE_SWAP_NOEXCEPT_IF(x) BOOST_NOEXCEPT_IF(x) +#endif namespace boost_swap_impl { @@ -34,17 +48,22 @@ namespace boost_swap_impl template struct is_const { enum _vt { value = 0 }; }; template struct is_const { enum _vt { value = 1 }; }; + // Use std::swap if argument dependent lookup fails. + // We need to have this at namespace scope to be able to use unqualified swap() call + // in noexcept specification. + using namespace std; + template BOOST_GPU_ENABLED - void swap_impl(T& left, T& right) + void swap_impl(T& left, T& right) BOOST_CORE_SWAP_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(swap(left, right))) { - using namespace std;//use std::swap if argument dependent lookup fails - swap(left,right); + swap(left, right); } template BOOST_GPU_ENABLED void swap_impl(T (& left)[N], T (& right)[N]) + BOOST_CORE_SWAP_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(::boost_swap_impl::swap_impl(left[0], right[0]))) { for (std::size_t i = 0; i < N; ++i) { @@ -59,9 +78,12 @@ namespace boost BOOST_GPU_ENABLED typename enable_if_c< !boost_swap_impl::is_const::value && !boost_swap_impl::is_const::value >::type swap(T1& left, T2& right) + BOOST_CORE_SWAP_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(::boost_swap_impl::swap_impl(left, right))) { ::boost_swap_impl::swap_impl(left, right); } } -#endif +#undef BOOST_CORE_SWAP_NOEXCEPT_IF + +#endif // BOOST_CORE_SWAP_HPP diff --git a/src/boost/boost/core/typeinfo.hpp b/src/boost/boost/core/typeinfo.hpp index 90bdd36c9..67e0ece91 100644 --- a/src/boost/boost/core/typeinfo.hpp +++ b/src/boost/boost/core/typeinfo.hpp @@ -47,7 +47,7 @@ class typeinfo bool operator==( typeinfo const& rhs ) const { -#if ( defined(_WIN32) || defined(__CYGWIN__) ) && defined(__GNUC__) && !defined(BOOST_DISABLE_CURRENT_FUNCTION) +#if ( defined(_WIN32) || defined(__CYGWIN__) ) && ( defined(__GNUC__) || defined(__clang__) ) && !defined(BOOST_DISABLE_CURRENT_FUNCTION) return lib_id_ == rhs.lib_id_? this == &rhs: std::strcmp( name_, rhs.name_ ) == 0; @@ -65,7 +65,7 @@ class typeinfo bool before( typeinfo const& rhs ) const { -#if ( defined(_WIN32) || defined(__CYGWIN__) ) && defined(__GNUC__) && !defined(BOOST_DISABLE_CURRENT_FUNCTION) +#if ( defined(_WIN32) || defined(__CYGWIN__) ) && ( defined(__GNUC__) || defined(__clang__) ) && !defined(BOOST_DISABLE_CURRENT_FUNCTION) return lib_id_ == rhs.lib_id_? std::less< typeinfo const* >()( this, &rhs ): std::strcmp( name_, rhs.name_ ) < 0; diff --git a/src/boost/boost/core/use_default.hpp b/src/boost/boost/core/use_default.hpp new file mode 100644 index 000000000..7cb5c1372 --- /dev/null +++ b/src/boost/boost/core/use_default.hpp @@ -0,0 +1,17 @@ +/* +Copyright 2019 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_CORE_USE_DEFAULT_HPP +#define BOOST_CORE_USE_DEFAULT_HPP + +namespace boost { + +struct use_default { }; + +} /* boost */ + +#endif diff --git a/src/boost/boost/core/yield_primitives.hpp b/src/boost/boost/core/yield_primitives.hpp new file mode 100644 index 000000000..785380951 --- /dev/null +++ b/src/boost/boost/core/yield_primitives.hpp @@ -0,0 +1,12 @@ +#ifndef BOOST_CORE_YIELD_PRIMITIVES_HPP_INCLUDED +#define BOOST_CORE_YIELD_PRIMITIVES_HPP_INCLUDED + +// Copyright 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include + +#endif // #ifndef BOOST_CORE_YIELD_PRIMITIVES_HPP_INCLUDED diff --git a/src/boost/boost/cregex.hpp b/src/boost/boost/cregex.hpp deleted file mode 100644 index 81d0343d5..000000000 --- a/src/boost/boost/cregex.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org/libs/regex for most recent version. - * FILE cregex.cpp - * VERSION see - * DESCRIPTION: Declares POSIX API functions - * + boost::RegEx high level wrapper. - */ - -#ifndef BOOST_RE_CREGEX_HPP -#define BOOST_RE_CREGEX_HPP - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif - -#include - -#endif /* include guard */ - - - - - - - - - - diff --git a/src/boost/boost/cstdint.hpp b/src/boost/boost/cstdint.hpp index cbbfdd197..9f2231034 100644 --- a/src/boost/boost/cstdint.hpp +++ b/src/boost/boost/cstdint.hpp @@ -52,9 +52,9 @@ // so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG. // See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990 // -#if defined(BOOST_HAS_STDINT_H) \ - && (!defined(__GLIBC__) \ - || defined(__GLIBC_HAVE_LONG_LONG) \ +#if defined(BOOST_HAS_STDINT_H) \ + && (!defined(__GLIBC__) \ + || defined(__GLIBC_HAVE_LONG_LONG) \ || (defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 17))))) // The following #include is an implementation artifact; not part of interface. @@ -306,7 +306,7 @@ namespace boost // 64-bit types + intmax_t and uintmax_t ----------------------------------// # if defined(BOOST_HAS_LONG_LONG) && \ - !defined(BOOST_MSVC) && !defined(__BORLANDC__) && \ + !defined(BOOST_MSVC) && !defined(BOOST_BORLANDC) && \ (!defined(__GLIBCPP__) || defined(_GLIBCPP_USE_LONG_LONG)) && \ (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX)) # if defined(__hpux) @@ -451,7 +451,7 @@ INT#_C macros if they're not already defined (John Maddock). #ifndef INT64_C # define INT64_C(value) value##i64 #endif -# ifdef __BORLANDC__ +# ifdef BOOST_BORLANDC // Borland bug: appending ui8 makes the type a signed char # define UINT8_C(value) static_cast(value##u) # else diff --git a/src/boost/boost/current_function.hpp b/src/boost/boost/current_function.hpp index 45cd818da..7db6e4313 100644 --- a/src/boost/boost/current_function.hpp +++ b/src/boost/boost/current_function.hpp @@ -10,13 +10,13 @@ // // boost/current_function.hpp - BOOST_CURRENT_FUNCTION // -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. +// Copyright 2002-2018 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 // -// http://www.boost.org/libs/assert/current_function.html +// http://www.boost.org/libs/assert // namespace boost @@ -32,7 +32,7 @@ inline void current_function_helper() # define BOOST_CURRENT_FUNCTION "(unknown)" -#elif defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600)) || defined(__ghs__) +#elif defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600)) || defined(__ghs__) || defined(__clang__) # define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__ diff --git a/src/boost/boost/date_time/c_time.hpp b/src/boost/boost/date_time/c_time.hpp index 1160789a4..230a6af13 100644 --- a/src/boost/boost/date_time/c_time.hpp +++ b/src/boost/boost/date_time/c_time.hpp @@ -90,10 +90,13 @@ namespace date_time { } #else // BOOST_DATE_TIME_HAS_REENTRANT_STD_FUNCTIONS -#if (defined(_MSC_VER) && (_MSC_VER >= 1400)) +#if defined(__clang__) // Clang has to be checked before MSVC +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) #pragma warning(push) // preserve warning settings #pragma warning(disable : 4996) // disable depricated localtime/gmtime warning on vc8 -#endif // _MSC_VER >= 1400 +#endif //! requires a pointer to a user created std::tm struct inline static std::tm* localtime(const std::time_t* t, std::tm* result) @@ -112,9 +115,11 @@ namespace date_time { boost::throw_exception(std::runtime_error("could not convert calendar time to UTC time")); return result; } -#if (defined(_MSC_VER) && (_MSC_VER >= 1400)) +#if defined(__clang__) // Clang has to be checked before MSVC +#pragma clang diagnostic pop +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) #pragma warning(pop) // restore warnings to previous state -#endif // _MSC_VER >= 1400 +#endif #endif // BOOST_DATE_TIME_HAS_REENTRANT_STD_FUNCTIONS }; diff --git a/src/boost/boost/date_time/compiler_config.hpp b/src/boost/boost/date_time/compiler_config.hpp index ecb21fc9c..acb1e3155 100644 --- a/src/boost/boost/date_time/compiler_config.hpp +++ b/src/boost/boost/date_time/compiler_config.hpp @@ -12,19 +12,6 @@ #include #include -// With boost release 1.33, date_time will be using a different, -// more flexible, IO system. This new system is not compatible with -// old compilers. The original date_time IO system remains for those -// compilers. They must define this macro to use the legacy IO. -// (defined(__BORLANDC__) && (__BORLANDC__ <= 0x0581) ) ) && - #if( BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) \ - || BOOST_WORKAROUND( __GNUC__, < 3) \ - || (BOOST_WORKAROUND( _MSC_VER, <= 1300) ) \ - ) \ - && !defined(USE_DATE_TIME_PRE_1_33_FACET_IO) -# define USE_DATE_TIME_PRE_1_33_FACET_IO -#endif - // This file performs some local compiler configurations @@ -41,12 +28,8 @@ // Include extensions to date_duration - comment out to remove this feature #define BOOST_DATE_TIME_OPTIONAL_GREGORIAN_TYPES -// these extensions are known to cause problems with gcc295 -#if defined(__GNUC__) && (__GNUC__ < 3) -#undef BOOST_DATE_TIME_OPTIONAL_GREGORIAN_TYPES -#endif -#if (defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION) || BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) ) +#if (defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION) || BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x581) ) ) #define BOOST_DATE_TIME_NO_MEMBER_INIT #endif @@ -60,13 +43,13 @@ /* Workaround for Borland iterator error. Error was "Cannot convert 'istream *' to 'wistream *' in function istream_iterator<>::istream_iterator() */ -#if defined(__BORLANDC__) && defined(BOOST_BCB_WITH_RW_LIB) +#if defined(BOOST_BORLANDC) && defined(BOOST_BCB_WITH_RW_LIB) #define BOOST_DATE_TIME_NO_WISTREAM_ITERATOR #endif // Borland v5.64 does not have the following in std namespace; v5.5.1 does -#if defined(__BORLANDC__) && defined(BOOST_BCB_WITH_STLPORT) +#if defined(BOOST_BORLANDC) && defined(BOOST_BCB_WITH_STLPORT) #include namespace std { using stlport::tolower; @@ -83,7 +66,7 @@ namespace std { #if (((defined(__GNUC__) && (__GNUC__ < 3)) || \ (defined(_MSC_VER) && (_MSC_VER < 1300)) ) && \ !defined(_STLP_OWN_IOSTREAMS) ) || \ - BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) + BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x581) ) #define BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS #endif @@ -136,26 +119,6 @@ namespace std { # define BOOST_DATE_TIME_DECL #endif -// -// Automatically link to the correct build variant where possible. -// -#if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_DATE_TIME_NO_LIB) && !defined(BOOST_DATE_TIME_SOURCE) -// -// Set the name of our library, this will get undef'ed by auto_link.hpp -// once it's done with it: -// -#define BOOST_LIB_NAME boost_date_time -// -// If we're importing code from a dll, then tell auto_link.hpp about it: -// -#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_DATE_TIME_DYN_LINK) -# define BOOST_DYN_LINK -#endif -// -// And include the header that does the work: -// -#include -#endif // auto-linking disabled #if defined(BOOST_HAS_THREADS) # if defined(_MSC_VER) || defined(__MWERKS__) || defined(__MINGW32__) || defined(__BORLANDC__) diff --git a/src/boost/boost/date_time/constrained_value.hpp b/src/boost/boost/date_time/constrained_value.hpp index 3d3430b23..5b8b6231f 100644 --- a/src/boost/boost/date_time/constrained_value.hpp +++ b/src/boost/boost/date_time/constrained_value.hpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include namespace boost { @@ -43,25 +43,29 @@ namespace CV { public: typedef typename value_policies::value_type value_type; // typedef except_type exception_type; - constrained_value(value_type value) : value_((min)()) + BOOST_CXX14_CONSTEXPR constrained_value(value_type value) : value_((min)()) { assign(value); } - constrained_value& operator=(value_type v) + BOOST_CXX14_CONSTEXPR constrained_value& operator=(value_type v) { assign(v); return *this; } //! Return the max allowed value (traits method) - static value_type max BOOST_PREVENT_MACRO_SUBSTITUTION () {return (value_policies::max)();} + static BOOST_CONSTEXPR value_type + max BOOST_PREVENT_MACRO_SUBSTITUTION () {return (value_policies::max)();} + //! Return the min allowed value (traits method) - static value_type min BOOST_PREVENT_MACRO_SUBSTITUTION () {return (value_policies::min)();} + static BOOST_CONSTEXPR value_type + min BOOST_PREVENT_MACRO_SUBSTITUTION () {return (value_policies::min)();} + //! Coerce into the representation type - operator value_type() const {return value_;} + BOOST_CXX14_CONSTEXPR operator value_type() const {return value_;} protected: value_type value_; private: - void assign(value_type value) + BOOST_CXX14_CONSTEXPR void assign(value_type value) { //adding 1 below gets rid of a compiler warning which occurs when the //min_value is 0 and the type is unsigned.... @@ -95,16 +99,20 @@ namespace CV { } }; - typedef typename mpl::if_< - is_base_of< std::exception, exception_type >, + typedef typename conditional< + is_base_of< std::exception, exception_type >::value, exception_type, exception_wrapper >::type actual_exception_type; public: typedef rep_type value_type; - static rep_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return min_value; } - static rep_type max BOOST_PREVENT_MACRO_SUBSTITUTION () { return max_value; } + static BOOST_CONSTEXPR rep_type + min BOOST_PREVENT_MACRO_SUBSTITUTION () { return min_value; } + + static BOOST_CONSTEXPR rep_type + max BOOST_PREVENT_MACRO_SUBSTITUTION () { return max_value; } + static void on_error(rep_type, rep_type, violation_enum) { boost::throw_exception(actual_exception_type()); diff --git a/src/boost/boost/date_time/date.hpp b/src/boost/boost/date_time/date.hpp index 568b33dc3..14b780198 100644 --- a/src/boost/boost/date_time/date.hpp +++ b/src/boost/boost/date_time/date.hpp @@ -21,7 +21,7 @@ namespace date_time { /*! The date template represents an interface shell for a date class that is based on a year-month-day system such as the gregorian - or iso systems. It provides basic operations to enable calculation + or ISO 8601 systems. It provides basic operations to enable calculation and comparisons. Theory @@ -68,76 +68,76 @@ namespace date_time { typedef typename calendar::date_rep_type date_rep_type; typedef typename calendar::date_int_type date_int_type; typedef typename calendar::day_of_week_type day_of_week_type; - date(year_type y, month_type m, day_type d) + BOOST_CXX14_CONSTEXPR date(year_type y, month_type m, day_type d) : days_(calendar::day_number(ymd_type(y, m, d))) {} - date(const ymd_type& ymd) + BOOST_CXX14_CONSTEXPR date(const ymd_type& ymd) : days_(calendar::day_number(ymd)) {} //let the compiler write copy, assignment, and destructor - year_type year() const + BOOST_CXX14_CONSTEXPR year_type year() const { ymd_type ymd = calendar::from_day_number(days_); return ymd.year; } - month_type month() const + BOOST_CXX14_CONSTEXPR month_type month() const { ymd_type ymd = calendar::from_day_number(days_); return ymd.month; } - day_type day() const + BOOST_CXX14_CONSTEXPR day_type day() const { ymd_type ymd = calendar::from_day_number(days_); return ymd.day; } - day_of_week_type day_of_week() const + BOOST_CXX14_CONSTEXPR day_of_week_type day_of_week() const { ymd_type ymd = calendar::from_day_number(days_); return calendar::day_of_week(ymd); } - ymd_type year_month_day() const + BOOST_CXX14_CONSTEXPR ymd_type year_month_day() const { return calendar::from_day_number(days_); } - bool operator<(const date_type& rhs) const + BOOST_CONSTEXPR bool operator<(const date_type& rhs) const { return days_ < rhs.days_; } - bool operator==(const date_type& rhs) const + BOOST_CONSTEXPR bool operator==(const date_type& rhs) const { return days_ == rhs.days_; } //! check to see if date is a special value - bool is_special()const + BOOST_CONSTEXPR bool is_special()const { return(is_not_a_date() || is_infinity()); } //! check to see if date is not a value - bool is_not_a_date() const + BOOST_CONSTEXPR bool is_not_a_date() const { return traits_type::is_not_a_number(days_); } //! check to see if date is one of the infinity values - bool is_infinity() const + BOOST_CONSTEXPR bool is_infinity() const { return traits_type::is_inf(days_); } //! check to see if date is greater than all possible dates - bool is_pos_infinity() const + BOOST_CONSTEXPR bool is_pos_infinity() const { return traits_type::is_pos_inf(days_); } //! check to see if date is greater than all possible dates - bool is_neg_infinity() const + BOOST_CONSTEXPR bool is_neg_infinity() const { return traits_type::is_neg_inf(days_); } //! return as a special value or a not_special if a normal date - special_values as_special() const + BOOST_CXX14_CONSTEXPR special_values as_special() const { return traits_type::to_special(days_); } - duration_type operator-(const date_type& d) const + BOOST_CXX14_CONSTEXPR duration_type operator-(const date_type& d) const { if (!this->is_special() && !d.is_special()) { @@ -154,7 +154,7 @@ namespace date_time { } } - date_type operator-(const duration_type& dd) const + BOOST_CXX14_CONSTEXPR date_type operator-(const duration_type& dd) const { if(dd.is_special()) { @@ -162,17 +162,17 @@ namespace date_time { } return date_type(date_rep_type(days_) - static_cast(dd.days())); } - date_type operator-=(const duration_type& dd) + BOOST_CXX14_CONSTEXPR date_type operator-=(const duration_type& dd) { *this = *this - dd; return date_type(days_); } - date_rep_type day_count() const + BOOST_CONSTEXPR date_rep_type day_count() const { return days_; } //allow internal access from operators - date_type operator+(const duration_type& dd) const + BOOST_CXX14_CONSTEXPR date_type operator+(const duration_type& dd) const { if(dd.is_special()) { @@ -180,7 +180,7 @@ namespace date_time { } return date_type(date_rep_type(days_) + static_cast(dd.days())); } - date_type operator+=(const duration_type& dd) + BOOST_CXX14_CONSTEXPR date_type operator+=(const duration_type& dd) { *this = *this + dd; return date_type(days_); @@ -192,8 +192,8 @@ namespace date_time { dates. It is not exposed to users since that would require class users to understand the inner workings of the date class. */ - explicit date(date_int_type days) : days_(days) {} - explicit date(date_rep_type days) : days_(days.as_number()) {} + BOOST_CONSTEXPR explicit date(date_int_type days) : days_(days) {} + BOOST_CXX14_CONSTEXPR explicit date(date_rep_type days) : days_(days.as_number()) {} date_int_type days_; }; diff --git a/src/boost/boost/date_time/date_duration.hpp b/src/boost/boost/date_time/date_duration.hpp index 2bb4ded62..4e4707ad2 100644 --- a/src/boost/boost/date_time/date_duration.hpp +++ b/src/boost/boost/date_time/date_duration.hpp @@ -13,6 +13,7 @@ #include #include #include +#include namespace boost { namespace date_time { @@ -33,50 +34,44 @@ namespace date_time { typedef typename duration_rep_traits::impl_type duration_rep; //! Construct from a day count - explicit date_duration(duration_rep day_count) : days_(day_count) {} + BOOST_CXX14_CONSTEXPR explicit date_duration(duration_rep day_count) : days_(day_count) {} /*! construct from special_values - only works when * instantiated with duration_traits_adapted */ - date_duration(special_values sv) : + BOOST_CXX14_CONSTEXPR date_duration(special_values sv) : days_(duration_rep::from_special(sv)) {} - // copy constructor required for addable<> & subtractable<> - //! Construct from another date_duration (Copy Constructor) - date_duration(const date_duration& other) : - days_(other.days_) - {} - //! returns days_ as it's instantiated type - used for streaming - duration_rep get_rep()const + BOOST_CXX14_CONSTEXPR duration_rep get_rep()const { return days_; } - special_values as_special() const + BOOST_CXX14_CONSTEXPR special_values as_special() const { return days_.as_special(); } - bool is_special()const + BOOST_CXX14_CONSTEXPR bool is_special()const { return days_.is_special(); } //! returns days as value, not object. - duration_rep_type days() const + BOOST_CXX14_CONSTEXPR duration_rep_type days() const { return duration_rep_traits::as_number(days_); } //! Returns the smallest duration -- used by to calculate 'end' - static date_duration unit() + static BOOST_CXX14_CONSTEXPR date_duration unit() { return date_duration(1); } //! Equality - bool operator==(const date_duration& rhs) const + BOOST_CXX14_CONSTEXPR bool operator==(const date_duration& rhs) const { return days_ == rhs.days_; } //! Less - bool operator<(const date_duration& rhs) const + BOOST_CXX14_CONSTEXPR bool operator<(const date_duration& rhs) const { return days_ < rhs.days_; } @@ -87,33 +82,33 @@ namespace date_time { * so this will not compile */ //! Subtract another duration -- result is signed - date_duration& operator-=(const date_duration& rhs) + BOOST_CXX14_CONSTEXPR date_duration& operator-=(const date_duration& rhs) { //days_ -= rhs.days_; days_ = days_ - rhs.days_; return *this; } //! Add a duration -- result is signed - date_duration& operator+=(const date_duration& rhs) + BOOST_CXX14_CONSTEXPR date_duration& operator+=(const date_duration& rhs) { days_ = days_ + rhs.days_; return *this; } //! unary- Allows for dd = -date_duration(2); -> dd == -2 - date_duration operator-() const + BOOST_CXX14_CONSTEXPR date_duration operator-() const { return date_duration(get_rep() * (-1)); } //! Division operations on a duration with an integer. - date_duration& operator/=(int divisor) + BOOST_CXX14_CONSTEXPR date_duration& operator/=(int divisor) { days_ = days_ / divisor; return *this; } //! return sign information - bool is_negative() const + BOOST_CXX14_CONSTEXPR bool is_negative() const { return days_ < 0; } @@ -130,7 +125,7 @@ namespace date_time { { typedef long int_type; typedef long impl_type; - static int_type as_number(impl_type i) { return i; } + static BOOST_CXX14_CONSTEXPR int_type as_number(impl_type i) { return i; } }; /*! Struct for instantiating date_duration WITH special values @@ -140,7 +135,7 @@ namespace date_time { { typedef long int_type; typedef boost::date_time::int_adapter impl_type; - static int_type as_number(impl_type i) { return i.as_number(); } + static BOOST_CXX14_CONSTEXPR int_type as_number(impl_type i) { return i.as_number(); } }; diff --git a/src/boost/boost/date_time/date_duration_types.hpp b/src/boost/boost/date_time/date_duration_types.hpp index f36aeaac3..b3da13896 100644 --- a/src/boost/boost/date_time/date_duration_types.hpp +++ b/src/boost/boost/date_time/date_duration_types.hpp @@ -22,9 +22,9 @@ namespace date_time { template class BOOST_SYMBOL_VISIBLE weeks_duration : public date_duration { public: - weeks_duration(typename duration_config::impl_type w) + BOOST_CXX14_CONSTEXPR weeks_duration(typename duration_config::impl_type w) : date_duration(w * 7) {} - weeks_duration(special_values sv) + BOOST_CXX14_CONSTEXPR weeks_duration(special_values sv) : date_duration(sv) {} }; @@ -49,106 +49,104 @@ namespace date_time { typedef months_duration months_type; typedef years_duration years_type; public: - months_duration(int_rep num) : _m(num) {} - months_duration(special_values sv) : _m(sv) + BOOST_CXX14_CONSTEXPR months_duration(int_rep num) : _m(num) {} + BOOST_CXX14_CONSTEXPR months_duration(special_values sv) : _m(sv) { _m = int_rep::from_special(sv); } int_rep number_of_months() const { return _m; } //! returns a negative duration - duration_type get_neg_offset(const date_type& d) const + BOOST_CXX14_CONSTEXPR duration_type get_neg_offset(const date_type& d) const { month_adjustor_type m_adj(_m.as_number()); return duration_type(m_adj.get_neg_offset(d)); } - duration_type get_offset(const date_type& d) const + BOOST_CXX14_CONSTEXPR duration_type get_offset(const date_type& d) const { month_adjustor_type m_adj(_m.as_number()); return duration_type(m_adj.get_offset(d)); } - bool operator==(const months_type& rhs) const + BOOST_CONSTEXPR bool operator==(const months_type& rhs) const { return(_m == rhs._m); } - bool operator!=(const months_type& rhs) const + BOOST_CONSTEXPR bool operator!=(const months_type& rhs) const { return(_m != rhs._m); } - months_type operator+(const months_type& rhs)const + BOOST_CXX14_CONSTEXPR months_type operator+(const months_type& rhs)const { return months_type(_m + rhs._m); } - months_type& operator+=(const months_type& rhs) + BOOST_CXX14_CONSTEXPR months_type& operator+=(const months_type& rhs) { _m = _m + rhs._m; return *this; } - months_type operator-(const months_type& rhs)const + BOOST_CXX14_CONSTEXPR months_type operator-(const months_type& rhs)const { return months_type(_m - rhs._m); } - months_type& operator-=(const months_type& rhs) + BOOST_CXX14_CONSTEXPR months_type& operator-=(const months_type& rhs) { _m = _m - rhs._m; return *this; } - months_type operator*(const int_type rhs)const + BOOST_CXX14_CONSTEXPR months_type operator*(const int_type rhs)const { return months_type(_m * rhs); } - months_type& operator*=(const int_type rhs) + BOOST_CXX14_CONSTEXPR months_type& operator*=(const int_type rhs) { _m = _m * rhs; return *this; } - months_type operator/(const int_type rhs)const + BOOST_CXX14_CONSTEXPR months_type operator/(const int_type rhs)const { return months_type(_m / rhs); } - months_type& operator/=(const int_type rhs) + BOOST_CXX14_CONSTEXPR months_type& operator/=(const int_type rhs) { _m = _m / rhs; return *this; } - months_type operator+(const years_type& y)const + BOOST_CXX14_CONSTEXPR months_type operator+(const years_type& y)const { return months_type(y.number_of_years() * 12 + _m); } - months_type& operator+=(const years_type& y) + BOOST_CXX14_CONSTEXPR months_type& operator+=(const years_type& y) { _m = y.number_of_years() * 12 + _m; return *this; } - months_type operator-(const years_type& y) const + BOOST_CXX14_CONSTEXPR months_type operator-(const years_type& y) const { return months_type(_m - y.number_of_years() * 12); } - months_type& operator-=(const years_type& y) + BOOST_CXX14_CONSTEXPR months_type& operator-=(const years_type& y) { _m = _m - y.number_of_years() * 12; return *this; } - // - friend date_type operator+(const date_type& d, const months_type& m) + BOOST_CXX14_CONSTEXPR friend date_type operator+(const date_type& d, const months_type& m) { return d + m.get_offset(d); } - friend date_type operator+=(date_type& d, const months_type& m) + BOOST_CXX14_CONSTEXPR friend date_type operator+=(date_type& d, const months_type& m) { return d += m.get_offset(d); } - friend date_type operator-(const date_type& d, const months_type& m) + BOOST_CXX14_CONSTEXPR friend date_type operator-(const date_type& d, const months_type& m) { // get_neg_offset returns a negative duration, so we add return d + m.get_neg_offset(d); } - friend date_type operator-=(date_type& d, const months_type& m) + BOOST_CXX14_CONSTEXPR friend date_type operator-=(date_type& d, const months_type& m) { // get_neg_offset returns a negative duration, so we add return d += m.get_neg_offset(d); } - private: int_rep _m; }; @@ -171,24 +169,24 @@ namespace date_time { typedef years_duration years_type; typedef months_duration months_type; public: - years_duration(int_rep num) : _y(num) {} - years_duration(special_values sv) : _y(sv) + BOOST_CXX14_CONSTEXPR years_duration(int_rep num) : _y(num) {} + BOOST_CXX14_CONSTEXPR years_duration(special_values sv) : _y(sv) { _y = int_rep::from_special(sv); } - int_rep number_of_years() const { return _y; } + BOOST_CXX14_CONSTEXPR int_rep number_of_years() const { return _y; } //! returns a negative duration - duration_type get_neg_offset(const date_type& d) const + BOOST_CXX14_CONSTEXPR duration_type get_neg_offset(const date_type& d) const { month_adjustor_type m_adj(_y.as_number() * 12); return duration_type(m_adj.get_neg_offset(d)); } - duration_type get_offset(const date_type& d) const + BOOST_CXX14_CONSTEXPR duration_type get_offset(const date_type& d) const { month_adjustor_type m_adj(_y.as_number() * 12); return duration_type(m_adj.get_offset(d)); } - bool operator==(const years_type& rhs) const + BOOST_CXX14_CONSTEXPR bool operator==(const years_type& rhs) const { return(_y == rhs._y); } @@ -196,75 +194,72 @@ namespace date_time { { return(_y != rhs._y); } - years_type operator+(const years_type& rhs)const + BOOST_CXX14_CONSTEXPR years_type operator+(const years_type& rhs)const { return years_type(_y + rhs._y); } - years_type& operator+=(const years_type& rhs) + BOOST_CXX14_CONSTEXPR years_type& operator+=(const years_type& rhs) { _y = _y + rhs._y; return *this; } - years_type operator-(const years_type& rhs)const + BOOST_CXX14_CONSTEXPR years_type operator-(const years_type& rhs)const { return years_type(_y - rhs._y); } - years_type& operator-=(const years_type& rhs) + BOOST_CXX14_CONSTEXPR years_type& operator-=(const years_type& rhs) { _y = _y - rhs._y; return *this; } - years_type operator*(const int_type rhs)const + BOOST_CXX14_CONSTEXPR years_type operator*(const int_type rhs)const { return years_type(_y * rhs); } - years_type& operator*=(const int_type rhs) + BOOST_CXX14_CONSTEXPR years_type& operator*=(const int_type rhs) { _y = _y * rhs; return *this; } - years_type operator/(const int_type rhs)const + BOOST_CXX14_CONSTEXPR years_type operator/(const int_type rhs)const { return years_type(_y / rhs); } - years_type& operator/=(const int_type rhs) + BOOST_CXX14_CONSTEXPR years_type& operator/=(const int_type rhs) { _y = _y / rhs; return *this; } - months_type operator+(const months_type& m) const + BOOST_CXX14_CONSTEXPR months_type operator+(const months_type& m) const { return(months_type(_y * 12 + m.number_of_months())); } - months_type operator-(const months_type& m) const + BOOST_CXX14_CONSTEXPR months_type operator-(const months_type& m) const { return(months_type(_y * 12 - m.number_of_months())); } - // - friend date_type operator+(const date_type& d, const years_type& y) + BOOST_CXX14_CONSTEXPR friend date_type operator+(const date_type& d, const years_type& y) { return d + y.get_offset(d); } - friend date_type operator+=(date_type& d, const years_type& y) + BOOST_CXX14_CONSTEXPR friend date_type operator+=(date_type& d, const years_type& y) { return d += y.get_offset(d); } - friend date_type operator-(const date_type& d, const years_type& y) + BOOST_CXX14_CONSTEXPR friend date_type operator-(const date_type& d, const years_type& y) { // get_neg_offset returns a negative duration, so we add return d + y.get_neg_offset(d); } - friend date_type operator-=(date_type& d, const years_type& y) + BOOST_CXX14_CONSTEXPR friend date_type operator-=(date_type& d, const years_type& y) { // get_neg_offset returns a negative duration, so we add return d += y.get_neg_offset(d); } - private: int_rep _y; }; - }} // namespace boost::date_time #endif // DATE_DURATION_TYPES_HPP___ diff --git a/src/boost/boost/date_time/date_facet.hpp b/src/boost/boost/date_time/date_facet.hpp index 0011e412e..ba101083f 100644 --- a/src/boost/boost/date_time/date_facet.hpp +++ b/src/boost/boost/date_time/date_facet.hpp @@ -9,10 +9,10 @@ * $Date$ */ +#include // ostreambuf_iterator #include #include #include -#include // ostreambuf_iterator #include #include #include @@ -316,23 +316,23 @@ namespace boost { namespace date_time { string_type a_format) const { // update format string with custom names - if (m_weekday_long_names.size()) { + if (!m_weekday_long_names.empty()) { boost::algorithm::replace_all(a_format, long_weekday_format, m_weekday_long_names[tm_value.tm_wday]); } - if (m_weekday_short_names.size()) { + if (!m_weekday_short_names.empty()) { boost::algorithm::replace_all(a_format, short_weekday_format, m_weekday_short_names[tm_value.tm_wday]); } - if (m_month_long_names.size()) { + if (!m_month_long_names.empty()) { boost::algorithm::replace_all(a_format, long_month_format, m_month_long_names[tm_value.tm_mon]); } - if (m_month_short_names.size()) { + if (!m_month_short_names.empty()) { boost::algorithm::replace_all(a_format, short_month_format, m_month_short_names[tm_value.tm_mon]); @@ -763,5 +763,4 @@ namespace boost { namespace date_time { } } // namespaces - #endif diff --git a/src/boost/boost/date_time/date_generators.hpp b/src/boost/boost/date_time/date_generators.hpp index bace427ab..27fc5aef4 100644 --- a/src/boost/boost/date_time/date_generators.hpp +++ b/src/boost/boost/date_time/date_generators.hpp @@ -13,8 +13,8 @@ Definition and implementation of date algorithm templates */ -#include #include +#include #include #include #include @@ -25,7 +25,7 @@ namespace date_time { //! Base class for all generators that take a year and produce a date. /*! This class is a base class for polymorphic function objects that take a year and produce a concrete date. - @param date_type The type representing a date. This type must + @tparam date_type The type representing a date. This type must export a calender_type which defines a year_type. */ template @@ -38,7 +38,7 @@ namespace date_time { virtual ~year_based_generator() {} virtual date_type get_date(year_type y) const = 0; //! Returns a string for use in a POSIX time_zone string - virtual std::string to_string() const =0; + virtual std::string to_string() const = 0; }; //! Generates a date by applying the year to the given month and day. @@ -98,7 +98,7 @@ namespace date_time { * pg.get_date(2000); // returns 2000-2-29 * @endcode */ - date_type get_date(year_type y) const + date_type get_date(year_type y) const BOOST_OVERRIDE { if((day_ == 29) && (month_ == 2) && !(calendar_type::is_leap_year(y))) { std::ostringstream ss; @@ -139,7 +139,7 @@ namespace date_time { * Jan-01 == "0" * Feb-29 == "58" * Dec-31 == "365" */ - virtual std::string to_string() const + std::string to_string() const BOOST_OVERRIDE { std::ostringstream ss; date_type d(2004, month_, day_); @@ -153,9 +153,18 @@ namespace date_time { month_type month_; }; - //! Returns nth arg as string. 1 -> "first", 2 -> "second", max is 5. - BOOST_DATE_TIME_DECL const char* nth_as_str(int n); + inline const char* nth_as_str(int ele) + { + static const char* const _nth_as_str[] = {"out of range", "first", "second", + "third", "fourth", "fifth"}; + if(ele >= 1 && ele <= 5) { + return _nth_as_str[ele]; + } + else { + return _nth_as_str[0]; + } + } //! Useful generator functor for finding holidays /*! Based on the idea in Cal. Calc. for finding holidays that are @@ -167,7 +176,7 @@ namespace date_time { * The algorithm here basically guesses for the first * day of the month. Then finds the first day of the correct * type. That is, if the first of the month is a Tuesday - * and it needs Wenesday then we simply increment by a day + * and it needs Wednesday then we simply increment by a day * and then we can add the length of a week until we get * to the 'nth kday'. There are probably more efficient * algorithms based on using a mod 7, but this one works @@ -192,7 +201,7 @@ namespace date_time { dow_(dow) {} //! Return a concrete date when provided with a year specific year. - date_type get_date(year_type y) const + date_type get_date(year_type y) const BOOST_OVERRIDE { date_type d(y, month_, 1); //first day of month duration_type one_day(1); @@ -230,7 +239,7 @@ namespace date_time { } //! Returns string suitable for use in POSIX time zone string /*! Returns a string formatted as "M4.3.0" ==> 3rd Sunday in April. */ - virtual std::string to_string() const + std::string to_string() const BOOST_OVERRIDE { std::ostringstream ss; ss << 'M' @@ -267,7 +276,7 @@ namespace date_time { dow_(dow) {} //! Return a concrete date when provided with a year specific year. - date_type get_date(year_type year) const + date_type get_date(year_type year) const BOOST_OVERRIDE { date_type d(year, month_,1); duration_type one_day(1); @@ -287,7 +296,7 @@ namespace date_time { } //! Returns string suitable for use in POSIX time zone string /*! Returns a string formatted as "M4.1.0" ==> 1st Sunday in April. */ - virtual std::string to_string() const + std::string to_string() const BOOST_OVERRIDE { std::ostringstream ss; ss << 'M' @@ -307,7 +316,7 @@ namespace date_time { /*! Useful generator functor for finding holidays and daylight savings * Get the last day of the month and then calculate the difference * to the last previous day. - * @param date_type A date class that exports day_of_week, month_type, etc. + * @tparam date_type A date class that exports day_of_week, month_type, etc. * \ingroup date_alg */ template @@ -328,7 +337,7 @@ namespace date_time { dow_(dow) {} //! Return a concrete date when provided with a year specific year. - date_type get_date(year_type year) const + date_type get_date(year_type year) const BOOST_OVERRIDE { date_type d(year, month_, calendar_type::end_of_month_day(year,month_)); duration_type one_day(1); @@ -348,7 +357,7 @@ namespace date_time { } //! Returns string suitable for use in POSIX time zone string /*! Returns a string formatted as "M4.5.0" ==> last Sunday in April. */ - virtual std::string to_string() const + std::string to_string() const BOOST_OVERRIDE { std::ostringstream ss; ss << 'M' @@ -502,8 +511,4 @@ namespace date_time { } } //namespace date_time - - - #endif - diff --git a/src/boost/boost/date_time/date_iterator.hpp b/src/boost/boost/date_time/date_iterator.hpp index d4f2e8c1e..4002f4466 100644 --- a/src/boost/boost/date_time/date_iterator.hpp +++ b/src/boost/boost/date_time/date_iterator.hpp @@ -53,14 +53,14 @@ namespace date_time { } virtual duration_type get_offset(const date_type& current) const=0; virtual duration_type get_neg_offset(const date_type& current) const=0; - date_type operator*() {return current_;} - date_type* operator->() {return ¤t_;} - bool operator< (const date_type& d) {return current_ < d;} - bool operator<= (const date_type& d) {return current_ <= d;} - bool operator> (const date_type& d) {return current_ > d;} - bool operator>= (const date_type& d) {return current_ >= d;} - bool operator== (const date_type& d) {return current_ == d;} - bool operator!= (const date_type& d) {return current_ != d;} + const date_type& operator*() const {return current_;} + const date_type* operator->() const {return ¤t_;} + bool operator< (const date_type& d) const {return current_ < d;} + bool operator<= (const date_type& d) const {return current_ <= d;} + bool operator> (const date_type& d) const {return current_ > d;} + bool operator>= (const date_type& d) const {return current_ >= d;} + bool operator== (const date_type& d) const {return current_ == d;} + bool operator!= (const date_type& d) const {return current_ != d;} private: date_type current_; }; diff --git a/src/boost/boost/date_time/date_parsing.hpp b/src/boost/boost/date_time/date_parsing.hpp index ae148f8d0..2049ff87b 100644 --- a/src/boost/boost/date_time/date_parsing.hpp +++ b/src/boost/boost/date_time/date_parsing.hpp @@ -9,13 +9,16 @@ * $Date$ */ +#include #include +#include #include #include #include #include #include #include +#include #if defined(BOOST_DATE_TIME_NO_LOCALE) #include // ::tolower(int) @@ -54,8 +57,6 @@ namespace date_time { } //! Helper function for parse_date. - /* Used by-value parameter because we change the string and may - * want to preserve the original argument */ template inline unsigned short month_str_to_ushort(std::string const& s) { @@ -64,34 +65,59 @@ namespace date_time { } else { std::string str = convert_to_lower(s); - typename month_type::month_map_ptr_type ptr = month_type::get_month_map_ptr(); - typename month_type::month_map_type::iterator iter = ptr->find(str); - if(iter != ptr->end()) { // required for STLport - return iter->second; + //c++98 support +#if defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) + static std::map month_map; + typedef std::map::value_type vtype; + if( month_map.empty() ) { + month_map.insert( vtype("jan", static_cast(1)) ); + month_map.insert( vtype("january", static_cast(1)) ); + month_map.insert( vtype("feb", static_cast(2)) ); + month_map.insert( vtype("february", static_cast(2)) ); + month_map.insert( vtype("mar", static_cast(3)) ); + month_map.insert( vtype("march", static_cast(3)) ); + month_map.insert( vtype("apr", static_cast(4)) ); + month_map.insert( vtype("april", static_cast(4)) ); + month_map.insert( vtype("may", static_cast(5)) ); + month_map.insert( vtype("jun", static_cast(6)) ); + month_map.insert( vtype("june", static_cast(6)) ); + month_map.insert( vtype("jul", static_cast(7)) ); + month_map.insert( vtype("july", static_cast(7)) ); + month_map.insert( vtype("aug", static_cast(8)) ); + month_map.insert( vtype("august", static_cast(8)) ); + month_map.insert( vtype("sep", static_cast(9)) ); + month_map.insert( vtype("september", static_cast(9)) ); + month_map.insert( vtype("oct", static_cast(10)) ); + month_map.insert( vtype("october", static_cast(10)) ); + month_map.insert( vtype("nov", static_cast(11)) ); + month_map.insert( vtype("november", static_cast(11)) ); + month_map.insert( vtype("dec", static_cast(12)) ); + month_map.insert( vtype("december", static_cast(12)) ); + } +#else //c+11 and beyond + static std::map month_map = + { { "jan", static_cast(1) }, { "january", static_cast(1) }, + { "feb", static_cast(2) }, { "february", static_cast(2) }, + { "mar", static_cast(3) }, { "march", static_cast(3) }, + { "apr", static_cast(4) }, { "april", static_cast(4) }, + { "may", static_cast(5) }, + { "jun", static_cast(6) }, { "june", static_cast(6) }, + { "jul", static_cast(7) }, { "july", static_cast(7) }, + { "aug", static_cast(8) }, { "august", static_cast(8) }, + { "sep", static_cast(9) }, { "september", static_cast(9) }, + { "oct", static_cast(10) }, { "october", static_cast(10)}, + { "nov", static_cast(11) }, { "november", static_cast(11)}, + { "dec", static_cast(12) }, { "december", static_cast(12)} + }; +#endif + std::map::const_iterator mitr = month_map.find( str ); + if ( mitr != month_map.end() ) { + return mitr->second; } } return 13; // intentionally out of range - name not found } - //! Find index of a string in either of 2 arrays - /*! find_match searches both arrays for a match to 's'. Both arrays - * must contain 'size' elements. The index of the match is returned. - * If no match is found, 'size' is returned. - * Ex. "Jan" returns 0, "Dec" returns 11, "Tue" returns 2. - * 'size' can be sent in with: (greg_month::max)() (which 12), - * (greg_weekday::max)() + 1 (which is 7) or date_time::NumSpecialValues */ - template - short find_match(const charT* const* short_names, - const charT* const* long_names, - short size, - const std::basic_string& s) { - for(short i = 0; i < size; ++i){ - if(short_names[i] == s || long_names[i] == s){ - return i; - } - } - return size; // not-found, return a value out of range - } //! Generic function to parse a delimited date (eg: 2002-02-10) /*! Accepted formats are: "2003-02-10" or " 2003-Feb-10" or diff --git a/src/boost/boost/date_time/dst_rules.hpp b/src/boost/boost/date_time/dst_rules.hpp index 0255589fe..44d90f1e2 100644 --- a/src/boost/boost/date_time/dst_rules.hpp +++ b/src/boost/boost/date_time/dst_rules.hpp @@ -2,7 +2,7 @@ #define DATE_TIME_DST_RULES_HPP__ /* Copyright (c) 2002,2003, 2007 CrystalClear Software, Inc. - * Use, modification and distribution is subject to the + * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst @@ -21,12 +21,12 @@ namespace boost { namespace date_time { - enum time_is_dst_result {is_not_in_dst, is_in_dst, + enum time_is_dst_result {is_not_in_dst, is_in_dst, ambiguous, invalid_time_label}; //! Dynamic class used to caluclate dst transition information - template class dst_calculator { @@ -37,14 +37,14 @@ namespace boost { //! Check the local time offset when on dst start day /*! On this dst transition, the time label between * the transition boundary and the boudary + the offset - * are invalid times. If before the boundary then still - * not in dst. + * are invalid times. If before the boundary then still + * not in dst. *@param time_of_day Time offset in the day for the local time *@param dst_start_offset_minutes Local day offset for start of dst *@param dst_length_minutes Number of minutes to adjust clock forward *@retval status of time label w.r.t. dst */ - static time_is_dst_result + static time_is_dst_result process_local_dst_start_day(const time_duration_type& time_of_day, unsigned int dst_start_offset_minutes, long dst_length_minutes) @@ -57,19 +57,19 @@ namespace boost { if (time_of_day >= time_duration_type(0,offset,0)) { return is_in_dst; } - return invalid_time_label; + return invalid_time_label; } //! Check the local time offset when on the last day of dst /*! This is the calculation for the DST end day. On that day times - * prior to the conversion time - dst_length (1 am in US) are still - * in dst. Times between the above and the switch time are + * prior to the conversion time - dst_length (1 am in US) are still + * in dst. Times between the above and the switch time are * ambiguous. Times after the start_offset are not in dst. *@param time_of_day Time offset in the day for the local time *@param dst_end_offset_minutes Local time of day for end of dst *@retval status of time label w.r.t. dst */ - static time_is_dst_result + static time_is_dst_result process_local_dst_end_day(const time_duration_type& time_of_day, unsigned int dst_end_offset_minutes, long dst_length_minutes) @@ -86,32 +86,32 @@ namespace boost { } //! Calculates if the given local time is dst or not - /*! Determines if the time is really in DST or not. Also checks for + /*! Determines if the time is really in DST or not. Also checks for * invalid and ambiguous. * @param current_day The day to check for dst - * @param time_of_day Time offset within the day to check + * @param time_of_day Time offset within the day to check * @param dst_start_day Starting day of dst for the given locality * @param dst_start_offset Time offset within day for dst boundary * @param dst_end_day Ending day of dst for the given locality * @param dst_end_offset Time offset within day given in dst for dst boundary - * @param dst_length lenght of dst adjusment + * @param dst_length_minutes length of dst adjusment * @retval The time is either ambiguous, invalid, in dst, or not in dst */ - static time_is_dst_result + static time_is_dst_result local_is_dst(const date_type& current_day, const time_duration_type& time_of_day, const date_type& dst_start_day, const time_duration_type& dst_start_offset, const date_type& dst_end_day, const time_duration_type& dst_end_offset, - const time_duration_type& dst_length_minutes) + const time_duration_type& dst_length) { unsigned int start_minutes = static_cast( dst_start_offset.hours() * 60 + dst_start_offset.minutes()); unsigned int end_minutes = static_cast( dst_end_offset.hours() * 60 + dst_end_offset.minutes()); long length_minutes = static_cast( - dst_length_minutes.hours() * 60 + dst_length_minutes.minutes()); + dst_length.hours() * 60 + dst_length.minutes()); return local_is_dst(current_day, time_of_day, dst_start_day, start_minutes, @@ -120,20 +120,20 @@ namespace boost { } //! Calculates if the given local time is dst or not - /*! Determines if the time is really in DST or not. Also checks for + /*! Determines if the time is really in DST or not. Also checks for * invalid and ambiguous. * @param current_day The day to check for dst - * @param time_of_day Time offset within the day to check + * @param time_of_day Time offset within the day to check * @param dst_start_day Starting day of dst for the given locality - * @param dst_start_offset_minutes Offset within day for dst + * @param dst_start_offset_minutes Offset within day for dst * boundary (eg 120 for US which is 02:00:00) * @param dst_end_day Ending day of dst for the given locality - * @param dst_end_offset_minutes Offset within day given in dst for dst + * @param dst_end_offset_minutes Offset within day given in dst for dst * boundary (eg 120 for US which is 02:00:00) * @param dst_length_minutes Length of dst adjusment (eg: 60 for US) * @retval The time is either ambiguous, invalid, in dst, or not in dst */ - static time_is_dst_result + static time_is_dst_result local_is_dst(const date_type& current_day, const time_duration_type& time_of_day, const date_type& dst_start_day, @@ -165,7 +165,7 @@ namespace boost { dst_start_offset_minutes, dst_length_minutes); } - + if (current_day == dst_end_day) { return process_local_dst_end_day(time_of_day, dst_end_offset_minutes, @@ -183,29 +183,29 @@ namespace boost { * calculation at compile time covering all the cases. Unfortunately * because of the number of dimensions related to daylight savings * calculation the number of parameters is high. In addition, the - * start and end transition rules are complex types that specify + * start and end transition rules are complex types that specify * an algorithm for calculation of the starting day and ending - * day of daylight savings time including the month and day + * day of daylight savings time including the month and day * specifications (eg: last sunday in October). * * @param date_type A type that represents dates, typically gregorian::date * @param time_duration_type Used for the offset in the day calculations - * @param dst_traits A set of traits that define the rules of dst + * @param dst_traits A set of traits that define the rules of dst * calculation. The dst_trait must include the following: * start_rule_functor - Rule to calculate the starting date of a * dst transition (eg: last_kday_of_month). - * start_day - static function that returns month of dst start for + * start_day - static function that returns month of dst start for * start_rule_functor - * start_month -static function that returns day or day of week for + * start_month -static function that returns day or day of week for * dst start of dst * end_rule_functor - Rule to calculate the end of dst day. * end_day - static fucntion that returns end day for end_rule_functor * end_month - static function that returns end month for end_rule_functor * dst_start_offset_minutes - number of minutes from start of day to transition to dst -- 120 (or 2:00 am) is typical for the U.S. and E.U. - * dst_start_offset_minutes - number of minutes from start of day to transition off of dst -- 180 (or 3:00 am) is typical for E.U. + * dst_start_offset_minutes - number of minutes from start of day to transition off of dst -- 180 (or 3:00 am) is typical for E.U. * dst_length_minutes - number of minutes that dst shifts clock */ - template class dst_calc_engine @@ -216,12 +216,12 @@ namespace boost { typedef dst_calculator dstcalc; //! Calculates if the given local time is dst or not - /*! Determines if the time is really in DST or not. Also checks for + /*! Determines if the time is really in DST or not. Also checks for * invalid and ambiguous. * @retval The time is either ambiguous, invalid, in dst, or not in dst */ static time_is_dst_result local_is_dst(const date_type& d, - const time_duration_type& td) + const time_duration_type& td) { year_type y = d.year(); @@ -230,10 +230,10 @@ namespace boost { return dstcalc::local_is_dst(d,td, dst_start, dst_traits::dst_start_offset_minutes(), - dst_end, - dst_traits::dst_end_offset_minutes(), + dst_end, + dst_traits::dst_end_offset_minutes(), dst_traits::dst_shift_length_minutes()); - + } static bool is_dst_boundary_day(date_type d) @@ -244,14 +244,14 @@ namespace boost { } //! The time of day for the dst transition (eg: typically 01:00:00 or 02:00:00) - static time_duration_type dst_offset() + static time_duration_type dst_offset() { return time_duration_type(0,dst_traits::dst_shift_length_minutes(),0); } static date_type local_dst_start_day(year_type year) { - return dst_traits::local_dst_start_day(year); + return dst_traits::local_dst_start_day(year); } static date_type local_dst_end_day(year_type year) @@ -267,11 +267,11 @@ namespace boost { * In 2007 US/Canada DST rules changed * (http://en.wikipedia.org/wiki/Energy_Policy_Act_of_2005#Change_to_daylight_saving_time). */ - template //1 hour == 60 min in US - class us_dst_rules + class us_dst_rules { public: typedef time_duration_type_ time_duration_type; @@ -284,12 +284,12 @@ namespace boost { typedef dst_calculator dstcalc; //! Calculates if the given local time is dst or not - /*! Determines if the time is really in DST or not. Also checks for + /*! Determines if the time is really in DST or not. Also checks for * invalid and ambiguous. * @retval The time is either ambiguous, invalid, in dst, or not in dst */ static time_is_dst_result local_is_dst(const date_type& d, - const time_duration_type& td) + const time_duration_type& td) { year_type y = d.year(); @@ -297,9 +297,9 @@ namespace boost { date_type dst_end = local_dst_end_day(y); return dstcalc::local_is_dst(d,td, dst_start,dst_start_offset_minutes, - dst_end, dst_start_offset_minutes, + dst_end, dst_start_offset_minutes, dst_length_minutes); - + } @@ -314,12 +314,12 @@ namespace boost { { if (year >= year_type(2007)) { //second sunday in march - nkday ssim(nkday::second, Sunday, gregorian::Mar); - return ssim.get_date(year); + nkday ssim(nkday::second, Sunday, date_time::Mar); + return ssim.get_date(year); } else { //first sunday in april - fkday fsia(Sunday, gregorian::Apr); - return fsia.get_date(year); + fkday fsia(Sunday, date_time::Apr); + return fsia.get_date(year); } } @@ -327,11 +327,11 @@ namespace boost { { if (year >= year_type(2007)) { //first sunday in november - fkday fsin(Sunday, gregorian::Nov); - return fsin.get_date(year); + fkday fsin(Sunday, date_time::Nov); + return fsin.get_date(year); } else { //last sunday in october - lkday lsio(Sunday, gregorian::Oct); + lkday lsio(Sunday, date_time::Oct); return lsio.get_date(year); } } @@ -358,15 +358,15 @@ namespace boost { //! Calculates if the given local time is dst or not /*! @retval Always is_not_in_dst since this is for zones without dst */ - static time_is_dst_result local_is_dst(const date_type&, - const time_duration_type&) + static time_is_dst_result local_is_dst(const date_type&, + const time_duration_type&) { return is_not_in_dst; } - + //! Calculates if the given utc time is in dst - static time_is_dst_result utc_is_dst(const date_type&, - const time_duration_type&) + static time_is_dst_result utc_is_dst(const date_type&, + const time_duration_type&) { return is_not_in_dst; } @@ -376,7 +376,7 @@ namespace boost { return false; } - static time_duration_type dst_offset() + static time_duration_type dst_offset() { return time_duration_type(0,0,0); } diff --git a/src/boost/boost/date_time/find_match.hpp b/src/boost/boost/date_time/find_match.hpp new file mode 100644 index 000000000..6aa1bdc5c --- /dev/null +++ b/src/boost/boost/date_time/find_match.hpp @@ -0,0 +1,42 @@ +#ifndef _BOOST_DATE_TIME_FIND_MATCH_HPP___ +#define _BOOST_DATE_TIME_FIND_MATCH_HPP___ + +/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc. + * Use, modification and distribution is subject to the + * Boost Software License, Version 1.0. (See accompanying + * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) + * Author: Jeff Garland, Bart Garst + * $Date$ + */ + +#include + +namespace boost { +namespace date_time { + + + //! Find index of a string in either of 2 arrays + /*! find_match searches both arrays for a match to 's'. Both arrays + * must contain 'size' elements. The index of the match is returned. + * If no match is found, 'size' is returned. + * Ex. "Jan" returns 0, "Dec" returns 11, "Tue" returns 2. + * 'size' can be sent in with: (greg_month::max)() (which 12), + * (greg_weekday::max)() + 1 (which is 7) or date_time::NumSpecialValues */ + template + short find_match(const charT* const* short_names, + const charT* const* long_names, + short size, + const std::basic_string& s) { + for(short i = 0; i < size; ++i){ + if(short_names[i] == s || long_names[i] == s){ + return i; + } + } + return size; // not-found, return a value out of range + } + + +} } //namespace date_time + + +#endif diff --git a/src/boost/boost/date_time/format_date_parser.hpp b/src/boost/boost/date_time/format_date_parser.hpp index 683a2e055..2a058d20a 100644 --- a/src/boost/boost/date_time/format_date_parser.hpp +++ b/src/boost/boost/date_time/format_date_parser.hpp @@ -3,7 +3,7 @@ #define DATE_TIME_FORMAT_DATE_PARSER_HPP__ /* Copyright (c) 2004-2005 CrystalClear Software, Inc. - * Use, modification and distribution is subject to the + * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst @@ -32,11 +32,11 @@ namespace std { } #endif namespace boost { namespace date_time { - + //! Helper function for parsing fixed length strings into integers -/*! Will consume 'length' number of characters from stream. Consumed - * character are transfered to parse_match_result struct. - * Returns '-1' if no number can be parsed or incorrect number of +/*! Will consume 'length' number of characters from stream. Consumed + * character are transfered to parse_match_result struct. + * Returns '-1' if no number can be parsed or incorrect number of * digits in stream. */ template inline @@ -50,12 +50,12 @@ fixed_string_to_int(std::istreambuf_iterator& itr, //typedef std::basic_string string_type; unsigned int j = 0; //string_type s; - while (j < length && itr != stream_end && + while (j < length && itr != stream_end && (std::isdigit(*itr) || *itr == fill_char)) { if(*itr == fill_char) { - /* Since a fill_char can be anything, we convert it to a zero. + /* Since a fill_char can be anything, we convert it to a zero. * lexical_cast will behave predictably when zero is used as fill. */ - mr.cache += ('0'); + mr.cache += ('0'); } else { mr.cache += (*itr); @@ -77,9 +77,9 @@ fixed_string_to_int(std::istreambuf_iterator& itr, } //! Helper function for parsing fixed length strings into integers -/*! Will consume 'length' number of characters from stream. Consumed - * character are transfered to parse_match_result struct. - * Returns '-1' if no number can be parsed or incorrect number of +/*! Will consume 'length' number of characters from stream. Consumed + * character are transfered to parse_match_result struct. + * Returns '-1' if no number can be parsed or incorrect number of * digits in stream. */ template inline @@ -93,8 +93,8 @@ fixed_string_to_int(std::istreambuf_iterator& itr, } //! Helper function for parsing varied length strings into integers -/*! Will consume 'max_length' characters from stream only if those - * characters are digits. Returns '-1' if no number can be parsed. +/*! Will consume 'max_length' characters from stream only if those + * characters are digits. Returns '-1' if no number can be parsed. * Will not parse a number preceeded by a '+' or '-'. */ template inline @@ -133,7 +133,7 @@ var_string_to_int(std::istreambuf_iterator& itr, - %W - Week number 00 to 53 where Monday is first day of week 1 - %x - facet default date representation - %y - Year without the century - eg: 04 for 2004 - - %Y - Year with century + - %Y - Year with century The weekday specifiers (%a and %A) do not add to the date construction, but they provide a way to skip over the weekday names for formats that @@ -142,7 +142,7 @@ var_string_to_int(std::istreambuf_iterator& itr, todo -- Another interesting feature that this approach could provide is an option to fill in any missing fields with the current values from the clock. So if you have %m-%d the parser would detect - the missing year value and fill it in using the clock. + the missing year value and fill it in using the clock. todo -- What to do with the %x. %x in the classic facet is just bad... @@ -166,7 +166,7 @@ class format_date_parser typedef std::vector > input_collection_type; // TODO sv_parser uses its default constructor - write the others - + format_date_parser(const string_type& format_str, const input_collection_type& month_short_names, const input_collection_type& month_long_names, @@ -178,7 +178,7 @@ class format_date_parser m_weekday_short_names(weekday_short_names), m_weekday_long_names(weekday_long_names) {} - + format_date_parser(const string_type& format_str, const std::locale& locale) : m_format(format_str), @@ -196,7 +196,7 @@ class format_date_parser this->m_weekday_short_names = fdp.m_weekday_short_names; this->m_weekday_long_names = fdp.m_weekday_long_names; } - + string_type format() const { return m_format; @@ -225,7 +225,7 @@ class format_date_parser } date_type - parse_date(const string_type& value, + parse_date(const string_type& value, const string_type& format_str, const special_values_parser& sv_parser) const { @@ -236,49 +236,49 @@ class format_date_parser } date_type - parse_date(std::istreambuf_iterator& sitr, + parse_date(std::istreambuf_iterator& sitr, std::istreambuf_iterator& stream_end, const special_values_parser& sv_parser) const { return parse_date(sitr, stream_end, m_format, sv_parser); } - /*! Of all the objects that the format_date_parser can parse, only a - * date can be a special value. Therefore, only parse_date checks + /*! Of all the objects that the format_date_parser can parse, only a + * date can be a special value. Therefore, only parse_date checks * for special_values. */ date_type - parse_date(std::istreambuf_iterator& sitr, + parse_date(std::istreambuf_iterator& sitr, std::istreambuf_iterator& stream_end, string_type format_str, const special_values_parser& sv_parser) const { bool use_current_char = false; - + // skip leading whitespace - while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } + while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } - short year(0), month(0), day(0), day_of_year(0);// wkday(0); - /* Initialized the following to their minimum values. These intermediate - * objects are used so we get specific exceptions when part of the input - * is unparsable. + short year(0), month(0), day(0), day_of_year(0);// wkday(0); + /* Initialized the following to their minimum values. These intermediate + * objects are used so we get specific exceptions when part of the input + * is unparsable. * Ex: "205-Jan-15" will throw a bad_year, "2005-Jsn-15"- bad_month, etc.*/ year_type t_year(1400); month_type t_month(1); day_type t_day(1); day_of_week_type wkday(0); - - + + const_itr itr(format_str.begin()); while (itr != format_str.end() && (sitr != stream_end)) { if (*itr == '%') { if ( ++itr == format_str.end()) - break; + break; if (*itr != '%') { switch(*itr) { - case 'a': + case 'a': { //this value is just throw away. It could be used for - //error checking potentially, but it isn't helpful in + //error checking potentially, but it isn't helpful in //actually constructing the date - we just need to get it //out of the stream match_results mr = m_weekday_short_names.match(sitr, stream_end); @@ -294,10 +294,10 @@ class format_date_parser } break; } - case 'A': + case 'A': { //this value is just throw away. It could be used for - //error checking potentially, but it isn't helpful in + //error checking potentially, but it isn't helpful in //actually constructing the date - we just need to get it //out of the stream match_results mr = m_weekday_long_names.match(sitr, stream_end); @@ -313,7 +313,7 @@ class format_date_parser } break; } - case 'b': + case 'b': { match_results mr = m_month_short_names.match(sitr, stream_end); if(mr.current_match == match_results::PARSE_ERROR) { @@ -328,7 +328,7 @@ class format_date_parser } break; } - case 'B': + case 'B': { match_results mr = m_month_long_names.match(sitr, stream_end); if(mr.current_match == match_results::PARSE_ERROR) { @@ -343,7 +343,7 @@ class format_date_parser } break; } - case 'd': + case 'd': { match_results mr; day = fixed_string_to_int(sitr, stream_end, mr, 2); @@ -355,7 +355,7 @@ class format_date_parser t_day = day_type(day); break; } - case 'e': + case 'e': { match_results mr; day = fixed_string_to_int(sitr, stream_end, mr, 2, ' '); @@ -367,7 +367,7 @@ class format_date_parser t_day = day_type(day); break; } - case 'j': + case 'j': { match_results mr; day_of_year = fixed_string_to_int(sitr, stream_end, mr, 3); @@ -381,7 +381,7 @@ class format_date_parser t_day_of_year = day_of_year_type(day_of_year); break; } - case 'm': + case 'm': { match_results mr; month = fixed_string_to_int(sitr, stream_end, mr, 2); @@ -393,7 +393,7 @@ class format_date_parser t_month = month_type(month); break; } - case 'Y': + case 'Y': { match_results mr; year = fixed_string_to_int(sitr, stream_end, mr, 4); @@ -405,7 +405,7 @@ class format_date_parser t_year = year_type(year); break; } - case 'y': + case 'y': { match_results mr; year = fixed_string_to_int(sitr, stream_end, mr, 2); @@ -420,14 +420,14 @@ class format_date_parser } default: {} //ignore those we don't understand - + }//switch - + } else { // itr == '%', second consecutive sitr++; } - + itr++; //advance past format specifier } else { //skip past chars in format and in buffer @@ -440,48 +440,48 @@ class format_date_parser } } } - + if (day_of_year > 0) { date_type d(static_cast(year-1),12,31); //end of prior year return d + duration_type(day_of_year); } - - return date_type(t_year, t_month, t_day); // exceptions were thrown earlier - // if input was no good + + return date_type(t_year, t_month, t_day); // exceptions were thrown earlier + // if input was no good } - + //! Throws bad_month if unable to parse month_type - parse_month(std::istreambuf_iterator& sitr, + parse_month(std::istreambuf_iterator& sitr, std::istreambuf_iterator& stream_end, string_type format_str) const { match_results mr; return parse_month(sitr, stream_end, format_str, mr); } - + //! Throws bad_month if unable to parse month_type - parse_month(std::istreambuf_iterator& sitr, + parse_month(std::istreambuf_iterator& sitr, std::istreambuf_iterator& stream_end, string_type format_str, match_results& mr) const { bool use_current_char = false; - + // skip leading whitespace - while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } + while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } short month(0); - + const_itr itr(format_str.begin()); while (itr != format_str.end() && (sitr != stream_end)) { if (*itr == '%') { if ( ++itr == format_str.end()) - break; + break; if (*itr != '%') { switch(*itr) { - case 'b': + case 'b': { mr = m_month_short_names.match(sitr, stream_end); month = mr.current_match; @@ -490,7 +490,7 @@ class format_date_parser } break; } - case 'B': + case 'B': { mr = m_month_long_names.match(sitr, stream_end); month = mr.current_match; @@ -499,23 +499,23 @@ class format_date_parser } break; } - case 'm': + case 'm': { month = var_string_to_int(sitr, stream_end, 2); - // var_string_to_int returns -1 if parse failed. That will + // var_string_to_int returns -1 if parse failed. That will // cause a bad_month exception to be thrown so we do nothing here break; } default: {} //ignore those we don't understand - + }//switch - + } else { // itr == '%', second consecutive sitr++; } - + itr++; //advance past format specifier } else { //skip past chars in format and in buffer @@ -528,27 +528,27 @@ class format_date_parser } } } - + return month_type(month); // throws bad_month exception when values are zero } //! Expects 1 or 2 digits 1-31. Throws bad_day_of_month if unable to parse day_type - parse_var_day_of_month(std::istreambuf_iterator& sitr, + parse_var_day_of_month(std::istreambuf_iterator& sitr, std::istreambuf_iterator& stream_end) const { // skip leading whitespace - while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } + while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } return day_type(var_string_to_int(sitr, stream_end, 2)); } //! Expects 2 digits 01-31. Throws bad_day_of_month if unable to parse day_type - parse_day_of_month(std::istreambuf_iterator& sitr, + parse_day_of_month(std::istreambuf_iterator& sitr, std::istreambuf_iterator& stream_end) const { // skip leading whitespace - while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } + while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } //return day_type(var_string_to_int(sitr, stream_end, 2)); match_results mr; @@ -556,7 +556,7 @@ class format_date_parser } day_of_week_type - parse_weekday(std::istreambuf_iterator& sitr, + parse_weekday(std::istreambuf_iterator& sitr, std::istreambuf_iterator& stream_end, string_type format_str) const { @@ -564,29 +564,29 @@ class format_date_parser return parse_weekday(sitr, stream_end, format_str, mr); } day_of_week_type - parse_weekday(std::istreambuf_iterator& sitr, + parse_weekday(std::istreambuf_iterator& sitr, std::istreambuf_iterator& stream_end, string_type format_str, match_results& mr) const { bool use_current_char = false; - + // skip leading whitespace - while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } + while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } short wkday(0); - + const_itr itr(format_str.begin()); while (itr != format_str.end() && (sitr != stream_end)) { if (*itr == '%') { if ( ++itr == format_str.end()) - break; + break; if (*itr != '%') { switch(*itr) { - case 'a': + case 'a': { //this value is just throw away. It could be used for - //error checking potentially, but it isn't helpful in + //error checking potentially, but it isn't helpful in //actually constructing the date - we just need to get it //out of the stream mr = m_weekday_short_names.match(sitr, stream_end); @@ -596,10 +596,10 @@ class format_date_parser } break; } - case 'A': + case 'A': { //this value is just throw away. It could be used for - //error checking potentially, but it isn't helpful in + //error checking potentially, but it isn't helpful in //actually constructing the date - we just need to get it //out of the stream mr = m_weekday_long_names.match(sitr, stream_end); @@ -617,14 +617,14 @@ class format_date_parser } default: {} //ignore those we don't understand - + }//switch - + } else { // itr == '%', second consecutive sitr++; } - + itr++; //advance past format specifier } else { //skip past chars in format and in buffer @@ -637,14 +637,14 @@ class format_date_parser } } } - - return day_of_week_type(wkday); // throws bad_day_of_month exception + + return day_of_week_type(wkday); // throws bad_day_of_month exception // when values are zero } - + //! throws bad_year if unable to parse year_type - parse_year(std::istreambuf_iterator& sitr, + parse_year(std::istreambuf_iterator& sitr, std::istreambuf_iterator& stream_end, string_type format_str) const { @@ -654,21 +654,21 @@ class format_date_parser //! throws bad_year if unable to parse year_type - parse_year(std::istreambuf_iterator& sitr, + parse_year(std::istreambuf_iterator& sitr, std::istreambuf_iterator& stream_end, string_type format_str, match_results& mr) const { // skip leading whitespace - while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } + while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } unsigned short year(0); - + const_itr itr(format_str.begin()); while (itr != format_str.end() && (sitr != stream_end)) { if (*itr == '%') { if ( ++itr == format_str.end()) - break; + break; if (*itr != '%') { //match_results mr; switch(*itr) { @@ -687,14 +687,14 @@ class format_date_parser } default: {} //ignore those we don't understand - + }//switch - + } else { // itr == '%', second consecutive sitr++; } - + itr++; //advance past format specifier } else { //skip past chars in format and in buffer @@ -702,11 +702,11 @@ class format_date_parser sitr++; } } - + return year_type(year); // throws bad_year exception when values are zero } - - + + private: string_type m_format; parse_tree_type m_month_short_names; diff --git a/src/boost/boost/date_time/gregorian/formatters.hpp b/src/boost/boost/date_time/gregorian/formatters.hpp index 3654fb1aa..9f1bf273b 100644 --- a/src/boost/boost/date_time/gregorian/formatters.hpp +++ b/src/boost/boost/date_time/gregorian/formatters.hpp @@ -65,7 +65,7 @@ namespace gregorian { std::basic_string s(date_time::date_formatter,charT>::date_to_string(d.begin())); return s + sep + date_time::date_formatter,charT>::date_to_string(d.last()); } - //! Date period to iso standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231 + //! Date period to ISO 8601 standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231 /*!\ingroup date_format */ inline std::string to_iso_string(const date_period& d) { @@ -78,7 +78,7 @@ namespace gregorian { inline std::basic_string to_iso_extended_string_type(const date& d) { return date_time::date_formatter,charT>::date_to_string(d); } - //! Convert to iso extended format string CCYY-MM-DD. Example 2002-12-31 + //! Convert to ISO 8601 extended format string CCYY-MM-DD. Example 2002-12-31 /*!\ingroup date_format */ inline std::string to_iso_extended_string(const date& d) { @@ -90,7 +90,7 @@ namespace gregorian { inline std::basic_string to_iso_string_type(const date& d) { return date_time::date_formatter,charT>::date_to_string(d); } - //! Convert to iso standard string YYYYMMDD. Example: 20021231 + //! Convert to ISO 8601 standard string YYYYMMDD. Example: 20021231 /*!\ingroup date_format */ inline std::string to_iso_string(const date& d) { diff --git a/src/boost/boost/date_time/gregorian/formatters_limited.hpp b/src/boost/boost/date_time/gregorian/formatters_limited.hpp index 6f4131c9d..8cd6a69c2 100644 --- a/src/boost/boost/date_time/gregorian/formatters_limited.hpp +++ b/src/boost/boost/date_time/gregorian/formatters_limited.hpp @@ -35,7 +35,7 @@ namespace gregorian { return std::string("[" + d1 + "/" + d2 + "]"); } - //! Date period to iso standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231 + //! Date period to ISO 8601 standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231 /*!\ingroup date_format */ inline std::string to_iso_string(const date_period& d) { @@ -44,14 +44,14 @@ namespace gregorian { } - //! Convert to iso extended format string CCYY-MM-DD. Example 2002-12-31 + //! Convert to ISO 8601 extended format string CCYY-MM-DD. Example 2002-12-31 /*!\ingroup date_format */ inline std::string to_iso_extended_string(const date& d) { return date_time::date_formatter >::date_to_string(d); } - //! Convert to iso standard string YYYYMMDD. Example: 20021231 + //! Convert to ISO 8601 standard string YYYYMMDD. Example: 20021231 /*!\ingroup date_format */ inline std::string to_iso_string(const date& d) { diff --git a/src/boost/boost/date_time/gregorian/greg_date.hpp b/src/boost/boost/date_time/gregorian/greg_date.hpp index df04b4144..1fa92ed1a 100644 --- a/src/boost/boost/date_time/gregorian/greg_date.hpp +++ b/src/boost/boost/date_time/gregorian/greg_date.hpp @@ -1,7 +1,7 @@ #ifndef GREG_DATE_HPP___ #define GREG_DATE_HPP___ -/* Copyright (c) 2002,2003 CrystalClear Software, Inc. +/* Copyright (c) 2002,2003, 2020 CrystalClear Software, Inc. * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) @@ -48,12 +48,12 @@ namespace gregorian { typedef date_duration duration_type; #if !defined(DATE_TIME_NO_DEFAULT_CONSTRUCTOR) //! Default constructor constructs with not_a_date_time - date(): + BOOST_CXX14_CONSTEXPR date(): date_time::date(date_rep_type::from_special(not_a_date_time)) {} #endif // DATE_TIME_NO_DEFAULT_CONSTRUCTOR //! Main constructor with year, month, day - date(year_type y, month_type m, day_type d) + BOOST_CXX14_CONSTEXPR date(year_type y, month_type m, day_type d) : date_time::date(y, m, d) { if (gregorian_calendar::end_of_month_day(y, m) < d) { @@ -61,73 +61,80 @@ namespace gregorian { } } //! Constructor from a ymd_type structure - explicit date(const ymd_type& ymd) + BOOST_CXX14_CONSTEXPR explicit date(const ymd_type& ymd) : date_time::date(ymd) {} //! Needed copy constructor - explicit date(const date_int_type& rhs): + BOOST_CXX14_CONSTEXPR explicit date(const date_int_type& rhs): date_time::date(rhs) {} //! Needed copy constructor - explicit date(date_rep_type rhs): + BOOST_CXX14_CONSTEXPR explicit date(date_rep_type rhs): date_time::date(rhs) {} //! Constructor for infinities, not a date, max and min date - explicit date(special_values sv): - date_time::date(date_rep_type::from_special(sv)) - { - if (sv == min_date_time) - { - *this = date(1400, 1, 1); - } - if (sv == max_date_time) - { - *this = date(9999, 12, 31); - } - - } + BOOST_CXX14_CONSTEXPR explicit date(special_values sv): + date_time::date(from_special_adjusted(sv)) + {} //!Return the Julian Day number for the date. - date_int_type julian_day() const + BOOST_CXX14_CONSTEXPR date_int_type julian_day() const { ymd_type ymd = year_month_day(); return gregorian_calendar::julian_day_number(ymd); } //!Return the day of year 1..365 or 1..366 (for leap year) - day_of_year_type day_of_year() const + BOOST_CXX14_CONSTEXPR day_of_year_type day_of_year() const { date start_of_year(year(), 1, 1); unsigned short doy = static_cast((*this-start_of_year).days() + 1); return day_of_year_type(doy); } //!Return the Modified Julian Day number for the date. - date_int_type modjulian_day() const + BOOST_CXX14_CONSTEXPR date_int_type modjulian_day() const { ymd_type ymd = year_month_day(); return gregorian_calendar::modjulian_day_number(ymd); } - //!Return the iso 8601 week number 1..53 - int week_number() const + //!Return the ISO 8601 week number 1..53 + BOOST_CXX14_CONSTEXPR int week_number() const { ymd_type ymd = year_month_day(); return gregorian_calendar::week_number(ymd); } //! Return the day number from the calendar - date_int_type day_number() const + BOOST_CXX14_CONSTEXPR date_int_type day_number() const { return days_; } //! Return the last day of the current month - date end_of_month() const + BOOST_CXX14_CONSTEXPR date end_of_month() const { ymd_type ymd = year_month_day(); - short eom_day = gregorian_calendar::end_of_month_day(ymd.year, ymd.month); + unsigned short eom_day = gregorian_calendar::end_of_month_day(ymd.year, ymd.month); return date(ymd.year, ymd.month, eom_day); } + friend BOOST_CXX14_CONSTEXPR + bool operator==(const date& lhs, const date& rhs); + private: + BOOST_CXX14_CONSTEXPR date_rep_type from_special_adjusted(special_values sv) + { + switch (sv) + { + case min_date_time: return gregorian_calendar::day_number(ymd_type(1400, 1, 1)); + case max_date_time: return gregorian_calendar::day_number(ymd_type(9999, 12, 31)); + default: return date_rep_type::from_special(sv); + } + } }; + inline BOOST_CXX14_CONSTEXPR + bool operator==(const date& lhs, const date& rhs) + { + return lhs.days_ == rhs.days_; + } } } //namespace gregorian diff --git a/src/boost/boost/date_time/gregorian/greg_day.hpp b/src/boost/boost/date_time/gregorian/greg_day.hpp index ebf484af5..1284191dd 100644 --- a/src/boost/boost/date_time/gregorian/greg_day.hpp +++ b/src/boost/boost/date_time/gregorian/greg_day.hpp @@ -1,7 +1,7 @@ #ifndef GREG_DAY_HPP___ #define GREG_DAY_HPP___ -/* Copyright (c) 2002,2003 CrystalClear Software, Inc. +/* Copyright (c) 2002,2003,2020 CrystalClear Software, Inc. * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) @@ -42,9 +42,9 @@ namespace gregorian { */ class BOOST_SYMBOL_VISIBLE greg_day : public greg_day_rep { public: - greg_day(value_type day_of_month) : greg_day_rep(day_of_month) {} - value_type as_number() const {return value_;} - operator value_type() const {return value_;} + BOOST_CXX14_CONSTEXPR greg_day(value_type day_of_month) : greg_day_rep(day_of_month) {} + BOOST_CXX14_CONSTEXPR value_type as_number() const {return value_;} + BOOST_CXX14_CONSTEXPR operator value_type() const {return value_;} private: }; diff --git a/src/boost/boost/date_time/gregorian/greg_duration.hpp b/src/boost/boost/date_time/gregorian/greg_duration.hpp index e8286aec2..5c8a3f933 100644 --- a/src/boost/boost/date_time/gregorian/greg_duration.hpp +++ b/src/boost/boost/date_time/gregorian/greg_duration.hpp @@ -1,7 +1,7 @@ #ifndef GREG_DURATION_HPP___ #define GREG_DURATION_HPP___ -/* Copyright (c) 2002,2003 CrystalClear Software, Inc. +/* Copyright (c) 2002,2003, 2020 CrystalClear Software, Inc. * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) @@ -32,16 +32,15 @@ namespace gregorian { typedef base_type::duration_rep duration_rep; //! Construct from a day count - explicit date_duration(duration_rep day_count = 0) : base_type(day_count) {} + BOOST_CXX14_CONSTEXPR explicit + date_duration(duration_rep day_count = 0) : base_type(day_count) {} //! construct from special_values + BOOST_CXX14_CONSTEXPR date_duration(date_time::special_values sv) : base_type(sv) {} - //! Copy constructor - date_duration(const date_duration& other) : base_type(static_cast< base_type const& >(other)) - {} - //! Construct from another date_duration + BOOST_CXX14_CONSTEXPR date_duration(const base_type& other) : base_type(other) {} @@ -49,80 +48,93 @@ namespace gregorian { // NOTE: Because of date_time::date_duration< T > design choice we don't use Boost.Operators here, // because we need the class to be a direct base. Either lose EBO, or define operators by hand. // The latter is more effecient. - bool operator== (const date_duration& rhs) const + BOOST_CXX14_CONSTEXPR bool operator== (const date_duration& rhs) const { return base_type::operator== (rhs); } - bool operator!= (const date_duration& rhs) const + BOOST_CXX14_CONSTEXPR bool operator!= (const date_duration& rhs) const { return !operator== (rhs); } - bool operator< (const date_duration& rhs) const + BOOST_CXX14_CONSTEXPR bool operator< (const date_duration& rhs) const { return base_type::operator< (rhs); } - bool operator> (const date_duration& rhs) const + BOOST_CXX14_CONSTEXPR bool operator> (const date_duration& rhs) const { return !(base_type::operator< (rhs) || base_type::operator== (rhs)); } - bool operator<= (const date_duration& rhs) const + BOOST_CXX14_CONSTEXPR bool operator<= (const date_duration& rhs) const { return (base_type::operator< (rhs) || base_type::operator== (rhs)); } - bool operator>= (const date_duration& rhs) const + BOOST_CXX14_CONSTEXPR bool operator>= (const date_duration& rhs) const { return !base_type::operator< (rhs); } //! Subtract another duration -- result is signed - date_duration& operator-= (const date_duration& rhs) + BOOST_CXX14_CONSTEXPR date_duration& operator-= (const date_duration& rhs) { base_type::operator-= (rhs); return *this; } - friend date_duration operator- (date_duration rhs, date_duration const& lhs) - { - rhs -= lhs; - return rhs; - } + + BOOST_CXX14_CONSTEXPR friend + date_duration operator- (date_duration rhs, date_duration const& lhs); //! Add a duration -- result is signed - date_duration& operator+= (const date_duration& rhs) + BOOST_CXX14_CONSTEXPR date_duration& operator+= (const date_duration& rhs) { base_type::operator+= (rhs); return *this; } - friend date_duration operator+ (date_duration rhs, date_duration const& lhs) - { - rhs += lhs; - return rhs; - } + + BOOST_CXX14_CONSTEXPR friend + date_duration operator+ (date_duration rhs, date_duration const& lhs); //! unary- Allows for dd = -date_duration(2); -> dd == -2 - date_duration operator- ()const + BOOST_CXX14_CONSTEXPR date_duration operator- ()const { return date_duration(get_rep() * (-1)); } //! Division operations on a duration with an integer. - date_duration& operator/= (int divisor) + BOOST_CXX14_CONSTEXPR date_duration& operator/= (int divisor) { base_type::operator/= (divisor); return *this; } - friend date_duration operator/ (date_duration rhs, int lhs) - { - rhs /= lhs; - return rhs; - } + + BOOST_CXX14_CONSTEXPR friend date_duration operator/ (date_duration rhs, int lhs); //! Returns the smallest duration -- used by to calculate 'end' - static date_duration unit() + static BOOST_CXX14_CONSTEXPR date_duration unit() { return date_duration(base_type::unit().get_rep()); } }; + inline BOOST_CXX14_CONSTEXPR + date_duration operator- (date_duration rhs, date_duration const& lhs) + { + rhs -= lhs; + return rhs; + } + + inline BOOST_CXX14_CONSTEXPR + date_duration operator+ (date_duration rhs, date_duration const& lhs) + { + rhs += lhs; + return rhs; + } + + inline BOOST_CXX14_CONSTEXPR date_duration operator/ (date_duration rhs, int lhs) + { + rhs /= lhs; + return rhs; + } + //! Shorthand for date_duration typedef date_duration days; diff --git a/src/boost/boost/date_time/gregorian/greg_duration_types.hpp b/src/boost/boost/date_time/gregorian/greg_duration_types.hpp index d73f13511..4c65bdd79 100644 --- a/src/boost/boost/date_time/gregorian/greg_duration_types.hpp +++ b/src/boost/boost/date_time/gregorian/greg_duration_types.hpp @@ -31,9 +31,9 @@ namespace gregorian { class BOOST_SYMBOL_VISIBLE weeks_duration : public date_duration { public: - weeks_duration(duration_rep w) + BOOST_CXX14_CONSTEXPR weeks_duration(duration_rep w) : date_duration(w * 7) {} - weeks_duration(date_time::special_values sv) + BOOST_CXX14_CONSTEXPR weeks_duration(date_time::special_values sv) : date_duration(sv) {} }; diff --git a/src/boost/boost/date_time/gregorian/greg_month.hpp b/src/boost/boost/date_time/gregorian/greg_month.hpp index 55bd2ff75..73ca97b65 100644 --- a/src/boost/boost/date_time/gregorian/greg_month.hpp +++ b/src/boost/boost/date_time/gregorian/greg_month.hpp @@ -1,7 +1,7 @@ #ifndef GREG_MONTH_HPP___ #define GREG_MONTH_HPP___ -/* Copyright (c) 2002,2003 CrystalClear Software, Inc. +/* Copyright (c) 2002,2003, 2020 CrystalClear Software, Inc. * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) @@ -11,13 +11,9 @@ #include #include -#include #include #include #include -#include -#include -#include namespace boost { namespace gregorian { @@ -39,7 +35,7 @@ namespace gregorian { using date_time::Dec; using date_time::NotAMonth; using date_time::NumMonths; - + //! Exception thrown if a greg_month is constructed with a value out of range struct BOOST_SYMBOL_VISIBLE bad_month : public std::out_of_range { @@ -50,31 +46,65 @@ namespace gregorian { //! A constrained range that implements the gregorian_month rules typedef CV::constrained_value greg_month_rep; - + //! Wrapper class to represent months in gregorian based calendar - class BOOST_DATE_TIME_DECL greg_month : public greg_month_rep { + class BOOST_SYMBOL_VISIBLE greg_month : public greg_month_rep { public: typedef date_time::months_of_year month_enum; - typedef std::map month_map_type; - typedef boost::shared_ptr month_map_ptr_type; + //! Construct a month from the months_of_year enumeration - greg_month(month_enum theMonth) : + BOOST_CXX14_CONSTEXPR greg_month(month_enum theMonth) : greg_month_rep(static_cast(theMonth)) {} //! Construct from a short value - greg_month(value_type theMonth) : greg_month_rep(theMonth) {} + BOOST_CXX14_CONSTEXPR greg_month(value_type theMonth) : greg_month_rep(theMonth) {} //! Convert the value back to a short - operator value_type() const {return value_;} + BOOST_CXX14_CONSTEXPR operator value_type() const {return value_;} //! Returns month as number from 1 to 12 - value_type as_number() const {return value_;} - month_enum as_enum() const {return static_cast(value_);} - const char* as_short_string() const; - const char* as_long_string() const; + BOOST_CXX14_CONSTEXPR value_type as_number() const {return value_;} + BOOST_CXX14_CONSTEXPR month_enum as_enum() const {return static_cast(value_);} + + //! Returns 3 char english string for the month ex: Jan, Feb, Mar, Apr + const char* + as_short_string() const + { + static const char* const short_month_names[NumMonths] + = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec", "NAM"}; + return short_month_names[value_-1]; + } + + //! Returns full name of month as string in english ex: January, February + const char* + as_long_string() const + { + static const char* const long_month_names[NumMonths] + = {"January","February","March","April","May","June","July","August", + "September","October","November","December","NotAMonth"}; + return long_month_names[value_-1]; + } + #ifndef BOOST_NO_STD_WSTRING - const wchar_t* as_short_wstring() const; - const wchar_t* as_long_wstring() const; + + //! Returns 3 wchar_t english string for the month ex: Jan, Feb, Mar, Apr + const wchar_t* + as_short_wstring() const + { + static const wchar_t* const w_short_month_names[NumMonths] + = {L"Jan",L"Feb",L"Mar",L"Apr",L"May",L"Jun",L"Jul",L"Aug",L"Sep",L"Oct", + L"Nov",L"Dec",L"NAM"}; + return w_short_month_names[value_-1]; + } + + //! Returns full name of month as wchar_t string in english ex: January, February + const wchar_t* + as_long_wstring() const + { + static const wchar_t* const w_long_month_names[NumMonths] + = {L"January",L"February",L"March",L"April",L"May",L"June",L"July",L"August", + L"September",L"October",L"November",L"December",L"NotAMonth"}; + return w_long_month_names[value_-1]; + } + #endif // BOOST_NO_STD_WSTRING - //! Shared pointer to a map of Month strings (Names & Abbrev) & numbers - static month_map_ptr_type get_month_map_ptr(); /* parameterized as_*_string functions are intended to be called * from a template function: "... as_short_string(charT c='\0');" */ @@ -100,6 +130,4 @@ namespace gregorian { } } //namespace gregorian - - #endif diff --git a/src/boost/boost/date_time/gregorian/greg_weekday.hpp b/src/boost/boost/date_time/gregorian/greg_weekday.hpp index b220848bc..7c7cd6b39 100644 --- a/src/boost/boost/date_time/gregorian/greg_weekday.hpp +++ b/src/boost/boost/date_time/gregorian/greg_weekday.hpp @@ -1,7 +1,7 @@ #ifndef GREG_WEEKDAY_HPP___ #define GREG_WEEKDAY_HPP___ -/* Copyright (c) 2002,2003 CrystalClear Software, Inc. +/* Copyright (c) 2002,2003,2020 CrystalClear Software, Inc. * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) @@ -38,21 +38,55 @@ namespace gregorian { //! Represent a day within a week (range 0==Sun to 6==Sat) - class BOOST_DATE_TIME_DECL greg_weekday : public greg_weekday_rep { + class BOOST_SYMBOL_VISIBLE greg_weekday : public greg_weekday_rep { public: typedef boost::date_time::weekdays weekday_enum; - greg_weekday(value_type day_of_week_num) : + BOOST_CXX14_CONSTEXPR greg_weekday(value_type day_of_week_num) : greg_weekday_rep(day_of_week_num) {} - value_type as_number() const {return value_;} - const char* as_short_string() const; - const char* as_long_string() const; + BOOST_CXX14_CONSTEXPR value_type as_number() const {return value_;} + BOOST_CXX14_CONSTEXPR weekday_enum as_enum() const {return static_cast(value_);} + + //! Return a 3 digit english string of the day of week (eg: Sun) + const char* as_short_string() const + { + static const char* const short_weekday_names[] + = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; + + return short_weekday_names[value_]; + } + + //! Return a point to a long english string representing day of week + const char* as_long_string() const + { + static const char* const long_weekday_names[] + = {"Sunday","Monday","Tuesday","Wednesday", "Thursday", "Friday", "Saturday"}; + + return long_weekday_names[value_]; + } + + #ifndef BOOST_NO_STD_WSTRING - const wchar_t* as_short_wstring() const; - const wchar_t* as_long_wstring() const; + + //! Return a 3 digit english wchar_t string of the day of week (eg: Sun) + const wchar_t* as_short_wstring() const + { + static const wchar_t* const w_short_weekday_names[]={L"Sun", L"Mon", L"Tue", + L"Wed", L"Thu", L"Fri", L"Sat"}; + return w_short_weekday_names[value_]; + } + + //! Return a point to a long english wchar_t string representing day of week + const wchar_t* as_long_wstring() const + { + static const wchar_t* const w_long_weekday_names[]= {L"Sunday",L"Monday",L"Tuesday", + L"Wednesday", L"Thursday", + L"Friday", L"Saturday"}; + return w_long_weekday_names[value_]; + } + #endif // BOOST_NO_STD_WSTRING - weekday_enum as_enum() const {return static_cast(value_);} }; diff --git a/src/boost/boost/date_time/gregorian/greg_year.hpp b/src/boost/boost/date_time/gregorian/greg_year.hpp index 456caf502..16f3476ec 100644 --- a/src/boost/boost/date_time/gregorian/greg_year.hpp +++ b/src/boost/boost/date_time/gregorian/greg_year.hpp @@ -1,7 +1,7 @@ #ifndef GREG_YEAR_HPP___ #define GREG_YEAR_HPP___ -/* Copyright (c) 2002,2003 CrystalClear Software, Inc. +/* Copyright (c) 2002,2003, 2020 CrystalClear Software, Inc. * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) @@ -39,8 +39,8 @@ namespace gregorian { */ class BOOST_SYMBOL_VISIBLE greg_year : public greg_year_rep { public: - greg_year(value_type year) : greg_year_rep(year) {} - operator value_type() const {return value_;} + BOOST_CXX14_CONSTEXPR greg_year(value_type year) : greg_year_rep(year) {} + BOOST_CXX14_CONSTEXPR operator value_type() const {return value_;} }; diff --git a/src/boost/boost/date_time/gregorian/parsers.hpp b/src/boost/boost/date_time/gregorian/parsers.hpp index 2993b42e3..b8f165409 100644 --- a/src/boost/boost/date_time/gregorian/parsers.hpp +++ b/src/boost/boost/date_time/gregorian/parsers.hpp @@ -9,48 +9,67 @@ * $Date$ */ -#include "boost/date_time/gregorian/gregorian_types.hpp" -#include "boost/date_time/date_parsing.hpp" -#include "boost/date_time/compiler_config.hpp" -#include "boost/date_time/parse_format_base.hpp" +#include +#include +#include +#include +#include +#include #include -#include +#include namespace boost { namespace gregorian { //! Return special_value from string argument - /*! Return special_value from string argument. If argument is - * not one of the special value names (defined in src/gregorian/names.hpp), + /*! Return special_value from string argument. If argument is + * not one of the special value names (defined in names.hpp), * return 'not_special' */ - BOOST_DATE_TIME_DECL special_values special_value_from_string(const std::string& s); + inline + date_time::special_values + special_value_from_string(const std::string& s) { + static const char* const special_value_names[date_time::NumSpecialValues] + = {"not-a-date-time","-infinity","+infinity","min_date_time", + "max_date_time","not_special"}; + + short i = date_time::find_match(special_value_names, + special_value_names, + date_time::NumSpecialValues, + s); + if(i >= date_time::NumSpecialValues) { // match not found + return date_time::not_special; + } + else { + return static_cast(i); + } + } //! Deprecated: Use from_simple_string - inline date from_string(std::string s) { + inline date from_string(const std::string& s) { return date_time::parse_date(s); } //! From delimited date string where with order year-month-day eg: 2002-1-25 or 2003-Jan-25 (full month name is also accepted) - inline date from_simple_string(std::string s) { + inline date from_simple_string(const std::string& s) { return date_time::parse_date(s, date_time::ymd_order_iso); } //! From delimited date string where with order year-month-day eg: 1-25-2003 or Jan-25-2003 (full month name is also accepted) - inline date from_us_string(std::string s) { + inline date from_us_string(const std::string& s) { return date_time::parse_date(s, date_time::ymd_order_us); } //! From delimited date string where with order day-month-year eg: 25-1-2002 or 25-Jan-2003 (full month name is also accepted) - inline date from_uk_string(std::string s) { + inline date from_uk_string(const std::string& s) { return date_time::parse_date(s, date_time::ymd_order_dmy); } - //! From iso type date string where with order year-month-day eg: 20020125 - inline date from_undelimited_string(std::string s) { + //! From ISO 8601 type date string where with order year-month-day eg: 20020125 + inline date from_undelimited_string(const std::string& s) { return date_time::parse_undelimited_date(s); } - //! From iso type date string where with order year-month-day eg: 20020125 + //! From ISO 8601 type date string where with order year-month-day eg: 20020125 inline date date_from_iso_string(const std::string& s) { return date_time::parse_undelimited_date(s); } diff --git a/src/boost/boost/date_time/gregorian_calendar.hpp b/src/boost/boost/date_time/gregorian_calendar.hpp index 1e7888a04..757e67f5d 100644 --- a/src/boost/boost/date_time/gregorian_calendar.hpp +++ b/src/boost/boost/date_time/gregorian_calendar.hpp @@ -20,10 +20,10 @@ namespace date_time { can be used in the creation of date systems or just to perform calculations. All the methods of this class are static functions, so the intent is to never create instances of this class. - @param ymd_type_ Struct type representing the year, month, day. The ymd_type must + @tparam ymd_type_ Struct type representing the year, month, day. The ymd_type must define a of types for the year, month, and day. These types need to be arithmetic types. - @param date_int_type_ Underlying type for the date count. Must be an arithmetic type. + @tparam date_int_type_ Underlying type for the date count. Must be an arithmetic type. */ template class BOOST_SYMBOL_VISIBLE gregorian_calendar_base { @@ -40,19 +40,18 @@ namespace date_time { typedef date_int_type_ date_int_type; - static unsigned short day_of_week(const ymd_type& ymd); - static int week_number(const ymd_type&ymd); - //static unsigned short day_of_year(date_int_type); - static date_int_type day_number(const ymd_type& ymd); - static date_int_type julian_day_number(const ymd_type& ymd); - static date_int_type modjulian_day_number(const ymd_type& ymd); - static ymd_type from_day_number(date_int_type); - static ymd_type from_julian_day_number(date_int_type); - static ymd_type from_modjulian_day_number(date_int_type); - static bool is_leap_year(year_type); - static unsigned short end_of_month_day(year_type y, month_type m); - static ymd_type epoch(); - static unsigned short days_in_week(); + static BOOST_CXX14_CONSTEXPR unsigned short day_of_week(const ymd_type& ymd); + static BOOST_CXX14_CONSTEXPR int week_number(const ymd_type&ymd); + static BOOST_CXX14_CONSTEXPR date_int_type day_number(const ymd_type& ymd); + static BOOST_CXX14_CONSTEXPR date_int_type julian_day_number(const ymd_type& ymd); + static BOOST_CXX14_CONSTEXPR date_int_type modjulian_day_number(const ymd_type& ymd); + static BOOST_CXX14_CONSTEXPR ymd_type from_day_number(date_int_type); + static BOOST_CXX14_CONSTEXPR ymd_type from_julian_day_number(date_int_type); + static BOOST_CXX14_CONSTEXPR ymd_type from_modjulian_day_number(date_int_type); + static BOOST_CXX14_CONSTEXPR bool is_leap_year(year_type); + static BOOST_CXX14_CONSTEXPR unsigned short end_of_month_day(year_type y, month_type m); + static BOOST_CXX14_CONSTEXPR ymd_type epoch(); + static BOOST_CXX14_CONSTEXPR unsigned short days_in_week(); }; @@ -60,9 +59,8 @@ namespace date_time { } } //namespace -#ifndef NO_BOOST_DATE_TIME_INLINE #include "boost/date_time/gregorian_calendar.ipp" -#endif + diff --git a/src/boost/boost/date_time/gregorian_calendar.ipp b/src/boost/boost/date_time/gregorian_calendar.ipp index 617f616cf..a9fa66007 100644 --- a/src/boost/boost/date_time/gregorian_calendar.ipp +++ b/src/boost/boost/date_time/gregorian_calendar.ipp @@ -6,10 +6,6 @@ * $Date$ */ -#ifndef NO_BOOST_DATE_TIME_INLINE - #undef BOOST_DATE_TIME_INLINE - #define BOOST_DATE_TIME_INLINE inline -#endif namespace boost { namespace date_time { @@ -17,7 +13,8 @@ namespace date_time { /*! Converts a year-month-day into a day of the week number */ template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline unsigned short gregorian_calendar_base::day_of_week(const ymd_type& ymd) { unsigned short a = static_cast((14-ymd.month)/12); @@ -28,14 +25,15 @@ namespace date_time { return d; } - //!Return the iso week number for the date - /*!Implements the rules associated with the iso 8601 week number. + //!Return the ISO 8601 week number for the date + /*!Implements the rules associated with the ISO 8601 week number. Basically the rule is that Week 1 of the year is the week that contains January 4th or the week that contains the first Thursday in January. Reference for this algorithm is the Calendar FAQ by Claus Tondering, April 2000. */ template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline int gregorian_calendar_base::week_number(const ymd_type& ymd) { unsigned long julianbegin = julian_day_number(ymd_type(ymd.year,1,1)); @@ -71,14 +69,15 @@ namespace date_time { /*! The day number is an absolute number of days since the start of count */ template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline date_int_type_ gregorian_calendar_base::day_number(const ymd_type& ymd) { unsigned short a = static_cast((14-ymd.month)/12); unsigned short y = static_cast(ymd.year + 4800 - a); unsigned short m = static_cast(ymd.month + 12*a - 3); - unsigned long d = ymd.day + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; + unsigned long d = static_cast(ymd.day) + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; return static_cast(d); } @@ -86,7 +85,8 @@ namespace date_time { /*! Since this implementation uses julian day internally, this is the same as the day_number. */ template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline date_int_type_ gregorian_calendar_base::julian_day_number(const ymd_type& ymd) { @@ -98,7 +98,8 @@ namespace date_time { * MJD 0 thus started on 17 Nov 1858(Gregorian) at 00:00:00 UTC */ template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline date_int_type_ gregorian_calendar_base::modjulian_day_number(const ymd_type& ymd) { @@ -107,7 +108,8 @@ namespace date_time { //! Change a day number into a year-month-day template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline ymd_type_ gregorian_calendar_base::from_day_number(date_int_type dayNumber) { @@ -127,7 +129,8 @@ namespace date_time { //! Change a day number into a year-month-day template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline ymd_type_ gregorian_calendar_base::from_julian_day_number(date_int_type dayNumber) { @@ -147,7 +150,8 @@ namespace date_time { //! Change a modified julian day number into a year-month-day template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline ymd_type_ gregorian_calendar_base::from_modjulian_day_number(date_int_type dayNumber) { date_int_type jd = dayNumber + 2400001; //is 2400000.5 prerounded @@ -159,7 +163,8 @@ namespace date_time { *@return true if year is a leap year, false otherwise */ template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline bool gregorian_calendar_base::is_leap_year(year_type year) { @@ -172,7 +177,8 @@ namespace date_time { * No error checking is performed. */ template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline unsigned short gregorian_calendar_base::end_of_month_day(year_type year, month_type month) @@ -183,7 +189,7 @@ namespace date_time { return 29; } else { return 28; - }; + } case 4: case 6: case 9: @@ -191,13 +197,13 @@ namespace date_time { return 30; default: return 31; - }; - + } } - //! Provide the ymd_type specification for the calandar start + //! Provide the ymd_type specification for the calendar start template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline ymd_type_ gregorian_calendar_base::epoch() { @@ -206,7 +212,8 @@ namespace date_time { //! Defines length of a week for week calculations template - BOOST_DATE_TIME_INLINE + BOOST_CXX14_CONSTEXPR + inline unsigned short gregorian_calendar_base::days_in_week() { @@ -215,5 +222,3 @@ namespace date_time { } } //namespace gregorian - - diff --git a/src/boost/boost/date_time/int_adapter.hpp b/src/boost/boost/date_time/int_adapter.hpp index f661730c0..f385e7c84 100644 --- a/src/boost/boost/date_time/int_adapter.hpp +++ b/src/boost/boost/date_time/int_adapter.hpp @@ -46,34 +46,34 @@ template class int_adapter { public: typedef int_type_ int_type; - int_adapter(int_type v) : + BOOST_CXX14_CONSTEXPR int_adapter(int_type v) : value_(v) {} - static bool has_infinity() + static BOOST_CONSTEXPR bool has_infinity() { return true; } - static const int_adapter pos_infinity() + static BOOST_CONSTEXPR int_adapter pos_infinity() { return (::std::numeric_limits::max)(); } - static const int_adapter neg_infinity() + static BOOST_CONSTEXPR int_adapter neg_infinity() { return (::std::numeric_limits::min)(); } - static const int_adapter not_a_number() + static BOOST_CONSTEXPR int_adapter not_a_number() { return (::std::numeric_limits::max)()-1; } - static int_adapter max BOOST_PREVENT_MACRO_SUBSTITUTION () + static BOOST_CONSTEXPR int_adapter max BOOST_PREVENT_MACRO_SUBSTITUTION () { return (::std::numeric_limits::max)()-2; } - static int_adapter min BOOST_PREVENT_MACRO_SUBSTITUTION () + static BOOST_CONSTEXPR int_adapter min BOOST_PREVENT_MACRO_SUBSTITUTION () { return (::std::numeric_limits::min)()+1; } - static int_adapter from_special(special_values sv) + static BOOST_CXX14_CONSTEXPR int_adapter from_special(special_values sv) { switch (sv) { case not_a_date_time: return not_a_number(); @@ -84,25 +84,25 @@ class int_adapter { default: return not_a_number(); } } - static bool is_inf(int_type v) + static BOOST_CONSTEXPR bool is_inf(int_type v) { return (v == neg_infinity().as_number() || v == pos_infinity().as_number()); } - static bool is_neg_inf(int_type v) + static BOOST_CXX14_CONSTEXPR bool is_neg_inf(int_type v) { return (v == neg_infinity().as_number()); } - static bool is_pos_inf(int_type v) + static BOOST_CXX14_CONSTEXPR bool is_pos_inf(int_type v) { return (v == pos_infinity().as_number()); } - static bool is_not_a_number(int_type v) + static BOOST_CXX14_CONSTEXPR bool is_not_a_number(int_type v) { return (v == not_a_number().as_number()); } //! Returns either special value type or is_not_special - static special_values to_special(int_type v) + static BOOST_CXX14_CONSTEXPR special_values to_special(int_type v) { if (is_not_a_number(v)) return not_a_date_time; if (is_neg_inf(v)) return neg_infin; @@ -111,36 +111,36 @@ class int_adapter { } //-3 leaves room for representations of infinity and not a date - static int_type maxcount() + static BOOST_CONSTEXPR int_type maxcount() { return (::std::numeric_limits::max)()-3; } - bool is_infinity() const + BOOST_CONSTEXPR bool is_infinity() const { return (value_ == neg_infinity().as_number() || value_ == pos_infinity().as_number()); } - bool is_pos_infinity()const + BOOST_CONSTEXPR bool is_pos_infinity()const { return(value_ == pos_infinity().as_number()); } - bool is_neg_infinity()const + BOOST_CONSTEXPR bool is_neg_infinity()const { return(value_ == neg_infinity().as_number()); } - bool is_nan() const + BOOST_CONSTEXPR bool is_nan() const { return (value_ == not_a_number().as_number()); } - bool is_special() const + BOOST_CONSTEXPR bool is_special() const { return(is_infinity() || is_nan()); } - bool operator==(const int_adapter& rhs) const + BOOST_CONSTEXPR bool operator==(const int_adapter& rhs) const { return (compare(rhs) == 0); } - bool operator==(const int& rhs) const + BOOST_CXX14_CONSTEXPR bool operator==(const int& rhs) const { if(!std::numeric_limits::is_signed) { @@ -151,11 +151,11 @@ class int_adapter { } return (compare(rhs) == 0); } - bool operator!=(const int_adapter& rhs) const + BOOST_CONSTEXPR bool operator!=(const int_adapter& rhs) const { return (compare(rhs) != 0); } - bool operator!=(const int& rhs) const + BOOST_CXX14_CONSTEXPR bool operator!=(const int& rhs) const { if(!std::numeric_limits::is_signed) { @@ -166,11 +166,11 @@ class int_adapter { } return (compare(rhs) != 0); } - bool operator<(const int_adapter& rhs) const + BOOST_CONSTEXPR bool operator<(const int_adapter& rhs) const { return (compare(rhs) == -1); } - bool operator<(const int& rhs) const + BOOST_CXX14_CONSTEXPR bool operator<(const int& rhs) const { // quiets compiler warnings if(!std::numeric_limits::is_signed) @@ -182,16 +182,16 @@ class int_adapter { } return (compare(rhs) == -1); } - bool operator>(const int_adapter& rhs) const + BOOST_CONSTEXPR bool operator>(const int_adapter& rhs) const { return (compare(rhs) == 1); } - int_type as_number() const + BOOST_CONSTEXPR int_type as_number() const { return value_; } //! Returns either special value type or is_not_special - special_values as_special() const + BOOST_CONSTEXPR special_values as_special() const { return int_adapter::to_special(value_); } @@ -204,7 +204,7 @@ class int_adapter { /*! Operator allows for adding dissimilar int_adapter types. * The return type will match that of the the calling object's type */ template - inline + BOOST_CXX14_CONSTEXPR int_adapter operator+(const int_adapter& rhs) const { if(is_special() || rhs.is_special()) @@ -234,6 +234,7 @@ class int_adapter { return int_adapter(value_ + static_cast(rhs.as_number())); } + BOOST_CXX14_CONSTEXPR int_adapter operator+(const int_type rhs) const { if(is_special()) @@ -253,7 +254,7 @@ class int_adapter { /*! Operator allows for subtracting dissimilar int_adapter types. * The return type will match that of the the calling object's type */ template - inline + BOOST_CXX14_CONSTEXPR int_adapter operator-(const int_adapter& rhs)const { if(is_special() || rhs.is_special()) @@ -282,6 +283,8 @@ class int_adapter { } return int_adapter(value_ - static_cast(rhs.as_number())); } + + BOOST_CXX14_CONSTEXPR int_adapter operator-(const int_type rhs) const { if(is_special()) @@ -299,6 +302,7 @@ class int_adapter { } // should templatize this to be consistant with op +- + BOOST_CXX14_CONSTEXPR int_adapter operator*(const int_adapter& rhs)const { if(this->is_special() || rhs.is_special()) @@ -307,8 +311,10 @@ class int_adapter { } return int_adapter(value_ * rhs.value_); } + /*! Provided for cases when automatic conversion from * 'int' to 'int_adapter' causes incorrect results. */ + BOOST_CXX14_CONSTEXPR int_adapter operator*(const int rhs) const { if(is_special()) @@ -319,6 +325,7 @@ class int_adapter { } // should templatize this to be consistant with op +- + BOOST_CXX14_CONSTEXPR int_adapter operator/(const int_adapter& rhs)const { if(this->is_special() || rhs.is_special()) @@ -332,23 +339,27 @@ class int_adapter { return mult_div_specials(rhs); } else { // let divide by zero blow itself up - return int_adapter(value_ / rhs.value_); + return int_adapter(value_ / rhs.value_); //NOLINT } } return int_adapter(value_ / rhs.value_); } + /*! Provided for cases when automatic conversion from * 'int' to 'int_adapter' causes incorrect results. */ + BOOST_CXX14_CONSTEXPR int_adapter operator/(const int rhs) const { if(is_special() && rhs != 0) { return mult_div_specials(rhs); } - return int_adapter(value_ / rhs); + // let divide by zero blow itself up like int + return int_adapter(value_ / rhs); //NOLINT } // should templatize this to be consistant with op +- + BOOST_CXX14_CONSTEXPR int_adapter operator%(const int_adapter& rhs)const { if(this->is_special() || rhs.is_special()) @@ -362,26 +373,31 @@ class int_adapter { return mult_div_specials(rhs); } else { // let divide by zero blow itself up - return int_adapter(value_ % rhs.value_); + return int_adapter(value_ % rhs.value_); //NOLINT } } return int_adapter(value_ % rhs.value_); } + /*! Provided for cases when automatic conversion from * 'int' to 'int_adapter' causes incorrect results. */ + BOOST_CXX14_CONSTEXPR int_adapter operator%(const int rhs) const { if(is_special() && rhs != 0) { return mult_div_specials(rhs); } - return int_adapter(value_ % rhs); + // let divide by zero blow itself up + return int_adapter(value_ % rhs); //NOLINT } + private: int_type value_; //! returns -1, 0, 1, or 2 if 'this' is <, ==, >, or 'nan comparison' rhs - int compare(const int_adapter& rhs)const + BOOST_CXX14_CONSTEXPR + int compare( const int_adapter& rhs ) const { if(this->is_special() || rhs.is_special()) { @@ -408,12 +424,14 @@ class int_adapter { // implied-> if(value_ == rhs.value_) return 0; } + /* When multiplying and dividing with at least 1 special value * very simmilar rules apply. In those cases where the rules * are different, they are handled in the respective operator * function. */ //! Assumes at least 'this' or 'rhs' is a special value - int_adapter mult_div_specials(const int_adapter& rhs)const + BOOST_CXX14_CONSTEXPR + int_adapter mult_div_specials(const int_adapter& rhs) const { if(this->is_nan() || rhs.is_nan()) { return int_adapter(not_a_number()); @@ -428,12 +446,14 @@ class int_adapter { //implied -> if(this->value_ == 0 || rhs.value_ == 0) return int_adapter(not_a_number()); } + /* Overloaded function necessary because of special * situation where int_adapter is instantiated with * 'unsigned' and func is called with negative int. * It would produce incorrect results since 'unsigned' * wraps around when initialized with a negative value */ //! Assumes 'this' is a special value + BOOST_CXX14_CONSTEXPR int_adapter mult_div_specials(const int& rhs) const { if(this->is_nan()) { @@ -449,7 +469,7 @@ class int_adapter { //implied -> if(this->value_ == 0 || rhs.value_ == 0) return int_adapter(not_a_number()); } - + }; #ifndef BOOST_DATE_TIME_NO_LOCALE diff --git a/src/boost/boost/date_time/iso_format.hpp b/src/boost/boost/date_time/iso_format.hpp index f44442af4..5fc36748b 100644 --- a/src/boost/boost/date_time/iso_format.hpp +++ b/src/boost/boost/date_time/iso_format.hpp @@ -14,11 +14,11 @@ namespace boost { namespace date_time { -//! Class to provide common iso formatting spec +//! Class to provide common ISO 8601 formatting spec template class iso_format_base { public: - //! Describe month format -- its an integer in iso format + //! Describe month format -- its an integer in ISO 8601 format static month_format_spec month_format() { return month_as_integer; @@ -40,17 +40,17 @@ class iso_format_base { return "-infinity"; } - //! ISO char for a year -- used in durations + //! ISO 8601 char for a year -- used in durations static charT year_sep_char() { return 'Y'; } - //! ISO char for a month + //! ISO 8601 char for a month static charT month_sep_char() { return '-'; } - //! ISO char for a day + //! ISO 8601 char for a day static charT day_sep_char() { return '-'; @@ -70,7 +70,7 @@ class iso_format_base { { return ':'; } - //! ISO char for a period + //! ISO 8601 char for a period static charT period_start_char() { return 'P'; @@ -143,11 +143,11 @@ class iso_format_base { #ifndef BOOST_NO_STD_WSTRING -//! Class to provide common iso formatting spec +//! Class to provide common ISO 8601 formatting spec template<> class iso_format_base { public: - //! Describe month format -- its an integer in iso format + //! Describe month format -- its an integer in ISO 8601 format static month_format_spec month_format() { return month_as_integer; @@ -169,17 +169,17 @@ class iso_format_base { return L"-infinity"; } - //! ISO char for a year -- used in durations + //! ISO 8601 char for a year -- used in durations static wchar_t year_sep_char() { return 'Y'; } - //! ISO char for a month + //! ISO 8601 char for a month static wchar_t month_sep_char() { return '-'; } - //! ISO char for a day + //! ISO 8601 char for a day static wchar_t day_sep_char() { return '-'; @@ -199,7 +199,7 @@ class iso_format_base { { return ':'; } - //! ISO char for a period + //! ISO 8601 char for a period static wchar_t period_start_char() { return 'P'; @@ -272,7 +272,7 @@ class iso_format_base { #endif // BOOST_NO_STD_WSTRING -//! Format description for iso normal YYYYMMDD +//! Format description for ISO 8601 normal YYYYMMDD template class iso_format : public iso_format_base { public: diff --git a/src/boost/boost/date_time/locale_config.hpp b/src/boost/boost/date_time/locale_config.hpp index 23d69e929..d8c110967 100644 --- a/src/boost/boost/date_time/locale_config.hpp +++ b/src/boost/boost/date_time/locale_config.hpp @@ -1,7 +1,7 @@ #ifndef DATE_TIME_LOCALE_CONFIG_HPP___ #define DATE_TIME_LOCALE_CONFIG_HPP___ -/* Copyright (c) 2002-2006 CrystalClear Software, Inc. +/* Copyright (c) 2002-2020 CrystalClear Software, Inc. * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) @@ -17,12 +17,12 @@ // defines BOOST_NO_STD_LOCALE (gcc 2.95.x) #include "boost/config.hpp" //sets BOOST_NO_STD_LOCALE -#include "boost/detail/workaround.hpp" +#include "boost/config/workaround.hpp" //This file basically becomes a noop if locales are not properly supported #if (defined(BOOST_NO_STD_LOCALE) \ || (BOOST_WORKAROUND( BOOST_MSVC, < 1300)) \ - || (BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x581 )) ) \ + || (BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT( 0x581 )) ) \ || (BOOST_WORKAROUND( BOOST_XLCPP_ZOS, BOOST_TESTED_AT( 0x42010000 )) ) /* "shadows" the locale enabled overloads from */ \ ) #define BOOST_DATE_TIME_NO_LOCALE diff --git a/src/boost/boost/date_time/period.hpp b/src/boost/boost/date_time/period.hpp index 7f031701f..7e69b4524 100644 --- a/src/boost/boost/date_time/period.hpp +++ b/src/boost/boost/date_time/period.hpp @@ -58,26 +58,26 @@ namespace date_time { typedef point_rep point_type; typedef duration_rep duration_type; - period(point_rep first_point, point_rep end_point); - period(point_rep first_point, duration_rep len); - point_rep begin() const; - point_rep end() const; - point_rep last() const; - duration_rep length() const; - bool is_null() const; - bool operator==(const period& rhs) const; - bool operator<(const period& rhs) const; - void shift(const duration_rep& d); - void expand(const duration_rep& d); - bool contains(const point_rep& point) const; - bool contains(const period& other) const; - bool intersects(const period& other) const; - bool is_adjacent(const period& other) const; - bool is_before(const point_rep& point) const; - bool is_after(const point_rep& point) const; - period intersection(const period& other) const; - period merge(const period& other) const; - period span(const period& other) const; + BOOST_CXX14_CONSTEXPR period(point_rep first_point, point_rep end_point); + BOOST_CXX14_CONSTEXPR period(point_rep first_point, duration_rep len); + BOOST_CXX14_CONSTEXPR point_rep begin() const; + BOOST_CXX14_CONSTEXPR point_rep end() const; + BOOST_CXX14_CONSTEXPR point_rep last() const; + BOOST_CXX14_CONSTEXPR duration_rep length() const; + BOOST_CXX14_CONSTEXPR bool is_null() const; + BOOST_CXX14_CONSTEXPR bool operator==(const period& rhs) const; + BOOST_CXX14_CONSTEXPR bool operator<(const period& rhs) const; + BOOST_CXX14_CONSTEXPR void shift(const duration_rep& d); + BOOST_CXX14_CONSTEXPR void expand(const duration_rep& d); + BOOST_CXX14_CONSTEXPR bool contains(const point_rep& point) const; + BOOST_CXX14_CONSTEXPR bool contains(const period& other) const; + BOOST_CXX14_CONSTEXPR bool intersects(const period& other) const; + BOOST_CXX14_CONSTEXPR bool is_adjacent(const period& other) const; + BOOST_CXX14_CONSTEXPR bool is_before(const point_rep& point) const; + BOOST_CXX14_CONSTEXPR bool is_after(const point_rep& point) const; + BOOST_CXX14_CONSTEXPR period intersection(const period& other) const; + BOOST_CXX14_CONSTEXPR period merge(const period& other) const; + BOOST_CXX14_CONSTEXPR period span(const period& other) const; private: point_rep begin_; point_rep last_; @@ -87,7 +87,7 @@ namespace date_time { /*! If end <= begin then the period will be invalid */ template - inline + inline BOOST_CXX14_CONSTEXPR period::period(point_rep first_point, point_rep end_point) : begin_(first_point), @@ -98,7 +98,7 @@ namespace date_time { /*! If len is <= 0 then the period will be invalid */ template - inline + inline BOOST_CXX14_CONSTEXPR period::period(point_rep first_point, duration_rep len) : begin_(first_point), last_(first_point + len-duration_rep::unit()) @@ -107,7 +107,7 @@ namespace date_time { //! Return the first element in the period template - inline + inline BOOST_CXX14_CONSTEXPR point_rep period::begin() const { return begin_; @@ -115,7 +115,7 @@ namespace date_time { //! Return one past the last element template - inline + inline BOOST_CXX14_CONSTEXPR point_rep period::end() const { return last_ + duration_rep::unit(); @@ -123,7 +123,7 @@ namespace date_time { //! Return the last item in the period template - inline + inline BOOST_CXX14_CONSTEXPR point_rep period::last() const { return last_; @@ -131,7 +131,7 @@ namespace date_time { //! True if period is ill formed (length is zero or less) template - inline + inline BOOST_CXX14_CONSTEXPR bool period::is_null() const { return end() <= begin_; @@ -139,7 +139,7 @@ namespace date_time { //! Return the length of the period template - inline + inline BOOST_CXX14_CONSTEXPR duration_rep period::length() const { if(last_ < begin_){ // invalid period @@ -152,7 +152,7 @@ namespace date_time { //! Equality operator template - inline + inline BOOST_CXX14_CONSTEXPR bool period::operator==(const period& rhs) const { return ((begin_ == rhs.begin_) && @@ -161,7 +161,7 @@ namespace date_time { //! Strict as defined by rhs.last <= lhs.last template - inline + inline BOOST_CXX14_CONSTEXPR bool period::operator<(const period& rhs) const { return (last_ < rhs.begin_); @@ -170,7 +170,7 @@ namespace date_time { //! Shift the start and end by the specified amount template - inline + inline BOOST_CXX14_CONSTEXPR void period::shift(const duration_rep& d) { begin_ = begin_ + d; @@ -197,7 +197,7 @@ namespace date_time { *@endcode */ template - inline + inline BOOST_CXX14_CONSTEXPR void period::expand(const duration_rep& d) { begin_ = begin_ - d; @@ -206,7 +206,7 @@ namespace date_time { //! True if the point is inside the period, zero length periods contain no points template - inline + inline BOOST_CXX14_CONSTEXPR bool period::contains(const point_rep& point) const { return ((point >= begin_) && @@ -216,7 +216,7 @@ namespace date_time { //! True if this period fully contains (or equals) the other period template - inline + inline BOOST_CXX14_CONSTEXPR bool period::contains(const period& other) const { return ((begin_ <= other.begin_) && (last_ >= other.last_)); @@ -233,9 +233,8 @@ namespace date_time { *@endcode */ template - inline - bool - period::is_adjacent(const period& other) const + inline BOOST_CXX14_CONSTEXPR + bool period::is_adjacent(const period& other) const { return (other.begin() == end() || begin_ == other.end()); @@ -252,9 +251,8 @@ namespace date_time { *@endcode */ template - inline - bool - period::is_after(const point_rep& t) const + inline BOOST_CXX14_CONSTEXPR + bool period::is_after(const point_rep& t) const { if (is_null()) { @@ -274,9 +272,8 @@ namespace date_time { *@endcode */ template - inline - bool - period::is_before(const point_rep& t) const + inline BOOST_CXX14_CONSTEXPR + bool period::is_before(const point_rep& t) const { if (is_null()) { @@ -299,8 +296,8 @@ namespace date_time { *@endcode */ template - inline - bool period::intersects(const period& other) const + inline BOOST_CXX14_CONSTEXPR + bool period::intersects(const period& other) const { return ( contains(other.begin_) || other.contains(begin_) || @@ -309,7 +306,7 @@ namespace date_time { //! Returns the period of intersection or invalid range no intersection template - inline + inline BOOST_CXX14_CONSTEXPR period period::intersection(const period& other) const { @@ -334,7 +331,7 @@ namespace date_time { /*! */ template - inline + inline BOOST_CXX14_CONSTEXPR period period::merge(const period& other) const { @@ -361,7 +358,7 @@ namespace date_time { *@endcode */ template - inline + inline BOOST_CXX14_CONSTEXPR period period::span(const period& other) const { diff --git a/src/boost/boost/date_time/period_formatter.hpp b/src/boost/boost/date_time/period_formatter.hpp index fa1510e23..bcceedafd 100644 --- a/src/boost/boost/date_time/period_formatter.hpp +++ b/src/boost/boost/date_time/period_formatter.hpp @@ -3,14 +3,17 @@ #define DATETIME_PERIOD_FORMATTER_HPP___ /* Copyright (c) 2002-2004 CrystalClear Software, Inc. - * Use, modification and distribution is subject to the + * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst * $Date$ */ - +#include +#include +#include +#include namespace boost { namespace date_time { @@ -19,14 +22,14 @@ namespace boost { namespace date_time { /*! Provides settings for the following: * - period_separator -- default '/' * - period_open_start_delimeter -- default '[' - * - period_open_range_end_delimeter -- default ')' - * - period_closed_range_end_delimeter -- default ']' + * - period_open_range_end_delimeter -- default ')' + * - period_closed_range_end_delimeter -- default ']' * - display_as_open_range, display_as_closed_range -- default closed_range * * Thus the default formatting for a period is as follows: *@code * [period.start()/period.last()] - *@endcode + *@endcode * So for a typical date_period this would be *@code * [2004-Jan-04/2004-Feb-01] @@ -34,13 +37,13 @@ namespace boost { namespace date_time { * where the date formatting is controlled by the date facet */ template > > - class period_formatter { + class period_formatter { public: typedef std::basic_string string_type; typedef CharT char_type; typedef typename std::basic_string::const_iterator const_itr_type; typedef std::vector > collection_type; - + static const char_type default_period_separator[2]; static const char_type default_period_start_delimeter[2]; static const char_type default_period_open_range_end_delimeter[2]; @@ -49,8 +52,8 @@ namespace boost { namespace date_time { enum range_display_options { AS_OPEN_RANGE, AS_CLOSED_RANGE }; //! Constructor that sets up period formatter options -- default should suffice most cases. - period_formatter(range_display_options range_option_in = AS_CLOSED_RANGE, - const char_type* const period_separator = default_period_separator, + period_formatter(range_display_options range_option_in = AS_CLOSED_RANGE, + const char_type* const period_separator = default_period_separator, const char_type* const period_start_delimeter = default_period_start_delimeter, const char_type* const period_open_range_end_delimeter = default_period_open_range_end_delimeter, const char_type* const period_closed_range_end_delimeter = default_period_closed_range_end_delimeter) : @@ -62,7 +65,7 @@ namespace boost { namespace date_time { {} //! Puts the characters between period elements into stream -- default is / - OutItrT put_period_separator(OutItrT& oitr) const + OutItrT put_period_separator(OutItrT& oitr) const { const_itr_type ci = m_period_separator.begin(); while (ci != m_period_separator.end()) { @@ -73,7 +76,7 @@ namespace boost { namespace date_time { } //! Puts the period start characters into stream -- default is [ - OutItrT put_period_start_delimeter(OutItrT& oitr) const + OutItrT put_period_start_delimeter(OutItrT& oitr) const { const_itr_type ci = m_period_start_delimeter.begin(); while (ci != m_period_start_delimeter.end()) { @@ -84,9 +87,9 @@ namespace boost { namespace date_time { } //! Puts the period end characters into stream as controled by open/closed range setting. - OutItrT put_period_end_delimeter(OutItrT& oitr) const + OutItrT put_period_end_delimeter(OutItrT& oitr) const { - + const_itr_type ci, end; if (m_range_option == AS_OPEN_RANGE) { ci = m_open_range_end_delimeter.begin(); @@ -102,14 +105,14 @@ namespace boost { namespace date_time { } return oitr; } - + range_display_options range_option() const { return m_range_option; } //! Reset the range_option control - void + void range_option(range_display_options option) const { m_range_option = option; @@ -130,13 +133,13 @@ namespace boost { namespace date_time { //! Generic code to output a period -- no matter the period type. /*! This generic code will output any period using a facet to * to output the 'elements'. For example, in the case of a date_period - * the elements will be instances of a date which will be formatted + * the elements will be instances of a date which will be formatted * according the to setup in the passed facet parameter. - * + * * The steps for formatting a period are always the same: * - put the start delimiter * - put start element - * - put the separator + * - put the separator * - put either last or end element depending on range settings * - put end delimeter depending on range settings * @@ -149,9 +152,9 @@ namespace boost { namespace date_time { *@endcode */ template - OutItrT put_period(OutItrT next, - std::ios_base& a_ios, - char_type a_fill, + OutItrT put_period(OutItrT next, + std::ios_base& a_ios, + char_type a_fill, const period_type& p, const facet_type& facet) const { put_period_start_delimeter(next); @@ -167,29 +170,29 @@ namespace boost { namespace date_time { return next; } - + private: - range_display_options m_range_option; + range_display_options m_range_option; string_type m_period_separator; string_type m_period_start_delimeter; string_type m_open_range_end_delimeter; string_type m_closed_range_end_delimeter; }; - template - const typename period_formatter::char_type + template + const typename period_formatter::char_type period_formatter::default_period_separator[2] = {'/'}; - template - const typename period_formatter::char_type + template + const typename period_formatter::char_type period_formatter::default_period_start_delimeter[2] = {'['}; - template - const typename period_formatter::char_type + template + const typename period_formatter::char_type period_formatter::default_period_open_range_end_delimeter[2] = {')'}; - template - const typename period_formatter::char_type + template + const typename period_formatter::char_type period_formatter::default_period_closed_range_end_delimeter[2] = {']'}; } } //namespace boost::date_time diff --git a/src/boost/boost/date_time/period_parser.hpp b/src/boost/boost/date_time/period_parser.hpp index d8d5c58b1..fc3b227d4 100644 --- a/src/boost/boost/date_time/period_parser.hpp +++ b/src/boost/boost/date_time/period_parser.hpp @@ -3,14 +3,19 @@ #define DATETIME_PERIOD_PARSER_HPP___ /* Copyright (c) 2002-2004 CrystalClear Software, Inc. - * Use, modification and distribution is subject to the + * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst * $Date$ */ +#include +#include +#include +#include #include +#include #include #include @@ -18,12 +23,12 @@ namespace boost { namespace date_time { - //! Not a facet, but a class used to specify and control period parsing + //! Not a facet, but a class used to specify and control period parsing /*! Provides settings for the following: * - period_separator -- default '/' * - period_open_start_delimeter -- default '[' - * - period_open_range_end_delimeter -- default ')' - * - period_closed_range_end_delimeter -- default ']' + * - period_open_range_end_delimeter -- default ')' + * - period_closed_range_end_delimeter -- default ']' * - display_as_open_range, display_as_closed_range -- default closed_range * * For a typical date_period, the contents of the input stream would be @@ -64,12 +69,6 @@ namespace boost { namespace date_time { delimiters.push_back(string_type(period_closed_range_end_delimeter)); } - period_parser(const period_parser& p_parser) - { - this->delimiters = p_parser.delimiters; - this->m_range_option = p_parser.m_range_option; - } - period_range_option range_option() const { return m_range_option; @@ -99,11 +98,11 @@ namespace boost { namespace date_time { * to get the 'elements'. For example, in the case of a date_period * the elements will be instances of a date which will be parsed * according the to setup in the passed facet parameter. - * + * * The steps for parsing a period are always the same: * - consume the start delimiter * - get start element - * - consume the separator + * - consume the separator * - get either last or end element depending on range settings * - consume the end delimeter depending on range settings * @@ -117,15 +116,15 @@ namespace boost { namespace date_time { *@endcode */ template - period_type get_period(stream_itr_type& sitr, + period_type get_period(stream_itr_type& sitr, stream_itr_type& stream_end, - std::ios_base& a_ios, + std::ios_base& a_ios, const period_type& /* p */, const duration_type& dur_unit, - const facet_type& facet) const + const facet_type& facet) const { // skip leading whitespace - while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } + while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; } typedef typename period_type::point_type point_type; point_type p1(not_a_date_time), p2(not_a_date_time); @@ -150,7 +149,7 @@ namespace boost { namespace date_time { } private: - collection_type delimiters; + collection_type delimiters; period_range_option m_range_option; enum delim_ids { SEPARATOR, START, OPEN_END, CLOSED_END }; @@ -160,10 +159,10 @@ namespace boost { namespace date_time { stream_itr_type& stream_end, const string_type& delim) const { - /* string_parse_tree will not parse a string of punctuation characters + /* string_parse_tree will not parse a string of punctuation characters * without knowing exactly how many characters to process - * Ex [2000. Will not parse out the '[' string without knowing - * to process only one character. By using length of the delimiter + * Ex [2000. Will not parse out the '[' string without knowing + * to process only one character. By using length of the delimiter * string we can safely iterate past it. */ string_type s; for(unsigned int i = 0; i < delim.length() && sitr != stream_end; ++i) { @@ -177,20 +176,20 @@ namespace boost { namespace date_time { } }; - template - const typename period_parser::char_type + template + const typename period_parser::char_type period_parser::default_period_separator[2] = {'/'}; - template - const typename period_parser::char_type + template + const typename period_parser::char_type period_parser::default_period_start_delimeter[2] = {'['}; - template - const typename period_parser::char_type + template + const typename period_parser::char_type period_parser::default_period_open_range_end_delimeter[2] = {')'}; - template - const typename period_parser::char_type + template + const typename period_parser::char_type period_parser::default_period_closed_range_end_delimeter[2] = {']'}; } } //namespace boost::date_time diff --git a/src/boost/boost/date_time/posix_time/conversion.hpp b/src/boost/boost/date_time/posix_time/conversion.hpp index c32970e69..ff81bbc63 100644 --- a/src/boost/boost/date_time/posix_time/conversion.hpp +++ b/src/boost/boost/date_time/posix_time/conversion.hpp @@ -26,7 +26,7 @@ namespace posix_time { inline ptime from_time_t(std::time_t t) { - return ptime(gregorian::date(1970,1,1)) + seconds(static_cast(t)); + return ptime(gregorian::date(1970,1,1)) + seconds(t); } //! Function that converts a ptime into a time_t diff --git a/src/boost/boost/date_time/posix_time/date_duration_operators.hpp b/src/boost/boost/date_time/posix_time/date_duration_operators.hpp index 0852e5e61..c3b279a7e 100644 --- a/src/boost/boost/date_time/posix_time/date_duration_operators.hpp +++ b/src/boost/boost/date_time/posix_time/date_duration_operators.hpp @@ -26,7 +26,7 @@ namespace posix_time { /*! Adds a months object and a ptime. Result will be same * day-of-month as ptime unless original day was the last day of month. * see date_time::months_duration for more details */ - inline + inline BOOST_CXX14_CONSTEXPR ptime operator+(const ptime& t, const boost::gregorian::months& m) { @@ -36,7 +36,7 @@ namespace posix_time { /*! Adds a months object to a ptime. Result will be same * day-of-month as ptime unless original day was the last day of month. * see date_time::months_duration for more details */ - inline + inline BOOST_CXX14_CONSTEXPR ptime operator+=(ptime& t, const boost::gregorian::months& m) { @@ -47,7 +47,7 @@ namespace posix_time { /*! Subtracts a months object and a ptime. Result will be same * day-of-month as ptime unless original day was the last day of month. * see date_time::months_duration for more details */ - inline + inline BOOST_CXX14_CONSTEXPR ptime operator-(const ptime& t, const boost::gregorian::months& m) { @@ -58,7 +58,7 @@ namespace posix_time { /*! Subtracts a months object from a ptime. Result will be same * day-of-month as ptime unless original day was the last day of month. * see date_time::months_duration for more details */ - inline + inline BOOST_CXX14_CONSTEXPR ptime operator-=(ptime& t, const boost::gregorian::months& m) { @@ -70,7 +70,7 @@ namespace posix_time { /*! Adds a years object and a ptime. Result will be same * month and day-of-month as ptime unless original day was the * last day of month. see date_time::years_duration for more details */ - inline + inline BOOST_CXX14_CONSTEXPR ptime operator+(const ptime& t, const boost::gregorian::years& y) { @@ -80,7 +80,7 @@ namespace posix_time { /*! Adds a years object to a ptime. Result will be same * month and day-of-month as ptime unless original day was the * last day of month. see date_time::years_duration for more details */ - inline + inline BOOST_CXX14_CONSTEXPR ptime operator+=(ptime& t, const boost::gregorian::years& y) { @@ -90,7 +90,7 @@ namespace posix_time { /*! Subtracts a years object and a ptime. Result will be same * month and day-of-month as ptime unless original day was the * last day of month. see date_time::years_duration for more details */ - inline + inline BOOST_CXX14_CONSTEXPR ptime operator-(const ptime& t, const boost::gregorian::years& y) { @@ -101,7 +101,7 @@ namespace posix_time { /*! Subtracts a years object from a ptime. Result will be same * month and day-of-month as ptime unless original day was the * last day of month. see date_time::years_duration for more details */ - inline + inline BOOST_CXX14_CONSTEXPR ptime operator-=(ptime& t, const boost::gregorian::years& y) { diff --git a/src/boost/boost/date_time/posix_time/posix_time_config.hpp b/src/boost/boost/date_time/posix_time/posix_time_config.hpp index 4d4c91b6f..ee2db68ba 100644 --- a/src/boost/boost/date_time/posix_time/posix_time_config.hpp +++ b/src/boost/boost/date_time/posix_time/posix_time_config.hpp @@ -1,7 +1,7 @@ #ifndef POSIX_TIME_CONFIG_HPP___ #define POSIX_TIME_CONFIG_HPP___ -/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc. +/* Copyright (c) 2002,2003,2005,2020 CrystalClear Software, Inc. * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) @@ -22,32 +22,19 @@ namespace boost { namespace posix_time { -//Remove the following line if you want 64 bit millisecond resolution time -//#define BOOST_GDTL_POSIX_TIME_STD_CONFIG #ifdef BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG // set up conditional test compilations -#define BOOST_DATE_TIME_HAS_MILLISECONDS -#define BOOST_DATE_TIME_HAS_MICROSECONDS #define BOOST_DATE_TIME_HAS_NANOSECONDS typedef date_time::time_resolution_traits time_res_traits; #else // set up conditional test compilations -#define BOOST_DATE_TIME_HAS_MILLISECONDS -#define BOOST_DATE_TIME_HAS_MICROSECONDS #undef BOOST_DATE_TIME_HAS_NANOSECONDS typedef date_time::time_resolution_traits< boost::date_time::time_resolution_traits_adapted64_impl, boost::date_time::micro, 1000000, 6 > time_res_traits; - -// #undef BOOST_DATE_TIME_HAS_MILLISECONDS -// #undef BOOST_DATE_TIME_HAS_MICROSECONDS -// #undef BOOST_DATE_TIME_HAS_NANOSECONDS -// typedef date_time::time_resolution_traits time_res_traits; - #endif @@ -66,23 +53,23 @@ namespace posix_time { typedef time_res_traits::fractional_seconds_type fractional_seconds_type; typedef time_res_traits::tick_type tick_type; typedef time_res_traits::impl_type impl_type; - time_duration(hour_type hour, - min_type min, - sec_type sec, - fractional_seconds_type fs=0) : + BOOST_CXX14_CONSTEXPR time_duration(hour_type hour, + min_type min, + sec_type sec, + fractional_seconds_type fs=0) : date_time::time_duration(hour,min,sec,fs) {} - time_duration() : + BOOST_CXX14_CONSTEXPR time_duration() : date_time::time_duration(0,0,0) {} //! Construct from special_values - time_duration(boost::date_time::special_values sv) : + BOOST_CXX14_CONSTEXPR time_duration(boost::date_time::special_values sv) : date_time::time_duration(sv) {} //Give duration access to ticks constructor -- hide from users friend class date_time::time_duration; protected: - explicit time_duration(impl_type tick_count) : + BOOST_CXX14_CONSTEXPR explicit time_duration(impl_type tick_count) : date_time::time_duration(tick_count) {} }; @@ -94,7 +81,7 @@ namespace posix_time { { typedef gregorian::date date_type; typedef time_duration time_duration_type; - simple_time_rep(date_type d, time_duration_type tod) : + BOOST_CXX14_CONSTEXPR simple_time_rep(date_type d, time_duration_type tod) : day(d), time_of_day(tod) { @@ -116,19 +103,19 @@ namespace posix_time { } date_type day; time_duration_type time_of_day; - bool is_special()const + BOOST_CXX14_CONSTEXPR bool is_special()const { return(is_pos_infinity() || is_neg_infinity() || is_not_a_date_time()); } - bool is_pos_infinity()const + BOOST_CXX14_CONSTEXPR bool is_pos_infinity()const { return(day.is_pos_infinity() || time_of_day.is_pos_infinity()); } - bool is_neg_infinity()const + BOOST_CXX14_CONSTEXPR bool is_neg_infinity()const { return(day.is_neg_infinity() || time_of_day.is_neg_infinity()); } - bool is_not_a_date_time()const + BOOST_CXX14_CONSTEXPR bool is_not_a_date_time()const { return(day.is_not_a_date() || time_of_day.is_not_a_date_time()); } diff --git a/src/boost/boost/date_time/posix_time/posix_time_duration.hpp b/src/boost/boost/date_time/posix_time/posix_time_duration.hpp index 547d75c0f..e65e86a10 100644 --- a/src/boost/boost/date_time/posix_time/posix_time_duration.hpp +++ b/src/boost/boost/date_time/posix_time/posix_time_duration.hpp @@ -1,7 +1,7 @@ #ifndef POSIX_TIME_DURATION_HPP___ #define POSIX_TIME_DURATION_HPP___ -/* Copyright (c) 2002,2003 CrystalClear Software, Inc. +/* Copyright (c) 2002,2003, 2020 CrystalClear Software, Inc. * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) @@ -26,7 +26,7 @@ namespace posix_time { { public: template - explicit hours(T const& h, + BOOST_CXX14_CONSTEXPR explicit hours(T const& h, typename boost::enable_if, void>::type* = BOOST_DATE_TIME_NULLPTR) : time_duration(numeric_cast(h), 0, 0) {} @@ -40,7 +40,7 @@ namespace posix_time { { public: template - explicit minutes(T const& m, + BOOST_CXX14_CONSTEXPR explicit minutes(T const& m, typename boost::enable_if, void>::type* = BOOST_DATE_TIME_NULLPTR) : time_duration(0, numeric_cast(m),0) {} @@ -54,7 +54,7 @@ namespace posix_time { { public: template - explicit seconds(T const& s, + BOOST_CXX14_CONSTEXPR explicit seconds(T const& s, typename boost::enable_if, void>::type* = BOOST_DATE_TIME_NULLPTR) : time_duration(0,0, numeric_cast(s)) {} diff --git a/src/boost/boost/date_time/posix_time/posix_time_io.hpp b/src/boost/boost/date_time/posix_time/posix_time_io.hpp index 371bb4d85..3e13982db 100644 --- a/src/boost/boost/date_time/posix_time/posix_time_io.hpp +++ b/src/boost/boost/date_time/posix_time/posix_time_io.hpp @@ -97,7 +97,7 @@ namespace posix_time { throw; // rethrow original exception } else { - // if the user want's to fail quietly, we simply set the failbit + // if the user wants to fail quietly, we simply set the failbit is.setstate(std::ios_base::failbit); } } diff --git a/src/boost/boost/date_time/posix_time/ptime.hpp b/src/boost/boost/date_time/posix_time/ptime.hpp index 5dc1e341f..3a1d03def 100644 --- a/src/boost/boost/date_time/posix_time/ptime.hpp +++ b/src/boost/boost/date_time/posix_time/ptime.hpp @@ -37,26 +37,44 @@ namespace posix_time { typedef time_system_type::time_duration_type time_duration_type; typedef ptime time_type; //! Construct with date and offset in day - ptime(gregorian::date d,time_duration_type td) : date_time::base_time(d,td) + BOOST_CXX14_CONSTEXPR + ptime(gregorian::date d,time_duration_type td) : + date_time::base_time(d,td) {} //! Construct a time at start of the given day (midnight) - explicit ptime(gregorian::date d) : date_time::base_time(d,time_duration_type(0,0,0)) + BOOST_CXX14_CONSTEXPR + explicit ptime(gregorian::date d) : + date_time::base_time(d,time_duration_type(0,0,0)) {} //! Copy from time_rep + BOOST_CXX14_CONSTEXPR ptime(const time_rep_type& rhs): date_time::base_time(rhs) {} //! Construct from special value - ptime(const special_values sv) : date_time::base_time(sv) + BOOST_CXX14_CONSTEXPR + ptime(const special_values sv) : + date_time::base_time(sv) {} #if !defined(DATE_TIME_NO_DEFAULT_CONSTRUCTOR) // Default constructor constructs to not_a_date_time - ptime() : date_time::base_time(gregorian::date(not_a_date_time), time_duration_type(not_a_date_time)) + BOOST_CXX14_CONSTEXPR + ptime() : + date_time::base_time(gregorian::date(not_a_date_time), + time_duration_type(not_a_date_time)) {} #endif // DATE_TIME_NO_DEFAULT_CONSTRUCTOR + friend BOOST_CXX14_CONSTEXPR + bool operator==(const ptime& lhs, const ptime& rhs); + }; + inline BOOST_CXX14_CONSTEXPR + bool operator==(const ptime& lhs, const ptime& rhs) + { + return ptime::time_system_type::is_equal(lhs.time_,rhs.time_); + } } }//namespace posix_time diff --git a/src/boost/boost/date_time/posix_time/time_formatters.hpp b/src/boost/boost/date_time/posix_time/time_formatters.hpp index 4324653b0..37ddf556f 100644 --- a/src/boost/boost/date_time/posix_time/time_formatters.hpp +++ b/src/boost/boost/date_time/posix_time/time_formatters.hpp @@ -157,7 +157,7 @@ namespace posix_time { }// else return ss.str(); } - //! Time duration in iso format -hhmmss,fffffff Example: 10:09:03,0123456 + //! Time duration in ISO 8601 format -hhmmss.fffffff. Example: 10:09:03.0123456 /*!\ingroup time_format */ inline std::string to_iso_string(time_duration td){ @@ -215,7 +215,7 @@ namespace posix_time { return ts; } } - //! Convert iso short form YYYYMMDDTHHMMSS where T is the date-time separator + //! Convert ISO 8601 short form YYYYMMDDTHHMMSS where T is the date-time separator /*!\ingroup time_format */ inline std::string to_iso_string(ptime t){ @@ -251,7 +251,7 @@ namespace posix_time { inline std::wstring to_simple_wstring(time_duration td) { return to_simple_string_type(td); } - //! Time duration in iso format -hhmmss,fffffff Example: 10:09:03,0123456 + //! Time duration in ISO 8601 format -hhmmss.fffffff. Example: 10:09:03.0123456 /*!\ingroup time_format */ inline std::wstring to_iso_wstring(time_duration td){ @@ -266,7 +266,7 @@ namespace posix_time { inline std::wstring to_simple_wstring(time_period tp){ return to_simple_string_type(tp); } - //! Convert iso short form YYYYMMDDTHHMMSS where T is the date-time separator + //! Convert ISO 8601 short form YYYYMMDDTHHMMSS where T is the date-time separator /*!\ingroup time_format */ inline std::wstring to_iso_wstring(ptime t){ diff --git a/src/boost/boost/date_time/posix_time/time_formatters_limited.hpp b/src/boost/boost/date_time/posix_time/time_formatters_limited.hpp index 11db3a741..9922a14f7 100644 --- a/src/boost/boost/date_time/posix_time/time_formatters_limited.hpp +++ b/src/boost/boost/date_time/posix_time/time_formatters_limited.hpp @@ -82,7 +82,7 @@ namespace posix_time { return ss.str(); } - //! Time duration in iso format -hhmmss,fffffff Example: 10:09:03,0123456 + //! Time duration in ISO 8601 format -hhmmss.fffffff. Example: 10:09:03.0123456 /*!\ingroup time_format */ inline @@ -173,7 +173,7 @@ namespace posix_time { return std::string("[" + d1 + "/" + d2 +"]"); } - //! Convert iso short form YYYYMMDDTHHMMSS where T is the date-time separator + //! Convert ISO 8601 short form YYYYMMDDTHHMMSS where T is the date-time separator /*!\ingroup time_format */ inline diff --git a/src/boost/boost/date_time/posix_time/time_parsers.hpp b/src/boost/boost/date_time/posix_time/time_parsers.hpp index fd70894ca..3ab68bd5e 100644 --- a/src/boost/boost/date_time/posix_time/time_parsers.hpp +++ b/src/boost/boost/date_time/posix_time/time_parsers.hpp @@ -36,6 +36,10 @@ namespace posix_time { } inline ptime from_iso_extended_string(const std::string& s) { + if (s.size() == 10) { //assume we just have a date which is 10 chars + gregorian::date d = gregorian::from_simple_string(s); + return ptime( d ); + } return date_time::parse_delimited_time(s, 'T'); } diff --git a/src/boost/boost/date_time/special_values_formatter.hpp b/src/boost/boost/date_time/special_values_formatter.hpp index c02cc7101..b1045dc27 100644 --- a/src/boost/boost/date_time/special_values_formatter.hpp +++ b/src/boost/boost/date_time/special_values_formatter.hpp @@ -12,6 +12,7 @@ #include #include +#include #include "boost/date_time/special_defs.hpp" namespace boost { namespace date_time { diff --git a/src/boost/boost/date_time/special_values_parser.hpp b/src/boost/boost/date_time/special_values_parser.hpp index 02809298e..3dc8ded58 100644 --- a/src/boost/boost/date_time/special_values_parser.hpp +++ b/src/boost/boost/date_time/special_values_parser.hpp @@ -75,11 +75,6 @@ namespace boost { namespace date_time { m_sv_strings = parse_tree_type(phrases, static_cast(not_a_date_time)); } - special_values_parser(const special_values_parser& svp) - { - this->m_sv_strings = svp.m_sv_strings; - } - //! Replace special value strings void sv_strings(const string_type& nadt_str, const string_type& neg_inf_str, @@ -102,7 +97,7 @@ namespace boost { namespace date_time { //! match() should be called and return value checked. //! \param[in] str the string to check //! \returns false if it is definitely not a special value - static bool likely(const string_type& str) + static bool should_call_match(const string_type& str) { if (!str.empty()) { switch (str[0]) { diff --git a/src/boost/boost/date_time/string_parse_tree.hpp b/src/boost/boost/date_time/string_parse_tree.hpp index fca54d4bd..d9e546141 100644 --- a/src/boost/boost/date_time/string_parse_tree.hpp +++ b/src/boost/boost/date_time/string_parse_tree.hpp @@ -10,11 +10,13 @@ */ -#include "boost/lexical_cast.hpp" //error without? -#include "boost/algorithm/string/case_conv.hpp" +#include +#include #include #include #include +#include +#include #include namespace boost { namespace date_time { @@ -82,7 +84,7 @@ operator<<(std::basic_ostream& os, parse_match_result& mr) template struct string_parse_tree { -#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) +#if BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x581) ) typedef std::multimap > ptree_coll; #else typedef std::multimap ptree_coll; diff --git a/src/boost/boost/date_time/strings_from_facet.hpp b/src/boost/boost/date_time/strings_from_facet.hpp index 3164fab68..9818f59fc 100644 --- a/src/boost/boost/date_time/strings_from_facet.hpp +++ b/src/boost/boost/date_time/strings_from_facet.hpp @@ -9,10 +9,12 @@ * $Date$ */ +#include #include #include #include #include +#include namespace boost { namespace date_time { @@ -50,7 +52,7 @@ gather_month_strings(const std::locale& locale, bool short_strings=true) //output each month const charT* p_outfmt = outfmt.c_str(), *p_outfmt_end = p_outfmt + outfmt.size(); tm tm_value; - memset(&tm_value, 0, sizeof(tm_value)); + std::memset(&tm_value, 0, sizeof(tm_value)); for (int m=0; m < 12; m++) { tm_value.tm_mon = m; stringstream_type ss; @@ -103,7 +105,7 @@ gather_weekday_strings(const std::locale& locale, bool short_strings=true) //output each month / weekday const charT* p_outfmt = outfmt.c_str(), *p_outfmt_end = p_outfmt + outfmt.size(); tm tm_value; - memset(&tm_value, 0, sizeof(tm_value)); + std::memset(&tm_value, 0, sizeof(tm_value)); for (int i=0; i < 7; i++) { tm_value.tm_wday = i; stringstream_type ss; diff --git a/src/boost/boost/date_time/time.hpp b/src/boost/boost/date_time/time.hpp index cb87bebec..63c4ff8f8 100644 --- a/src/boost/boost/date_time/time.hpp +++ b/src/boost/boost/date_time/time.hpp @@ -1,7 +1,7 @@ #ifndef DATE_TIME_TIME_HPP___ #define DATE_TIME_TIME_HPP___ -/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc. +/* Copyright (c) 2002,2003,2005,2020 CrystalClear Software, Inc. * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) @@ -58,21 +58,26 @@ namespace date_time { typedef typename time_system::time_duration_type time_duration_type; //typedef typename time_system::hms_type hms_type; + BOOST_CXX14_CONSTEXPR base_time(const date_type& day, const time_duration_type& td, dst_flags dst=not_dst) : time_(time_system::get_time_rep(day, td, dst)) {} + BOOST_CXX14_CONSTEXPR base_time(special_values sv) : time_(time_system::get_time_rep(sv)) {} + BOOST_CXX14_CONSTEXPR base_time(const time_rep_type& rhs) : time_(rhs) {} + BOOST_CXX14_CONSTEXPR date_type date() const { return time_system::get_date(time_); } + BOOST_CXX14_CONSTEXPR time_duration_type time_of_day() const { return time_system::get_time_of_day(time_); @@ -98,83 +103,99 @@ namespace date_time { } //! check to see if date is not a value + BOOST_CXX14_CONSTEXPR bool is_not_a_date_time() const { return time_.is_not_a_date_time(); } //! check to see if date is one of the infinity values + BOOST_CXX14_CONSTEXPR bool is_infinity() const { return (is_pos_infinity() || is_neg_infinity()); } //! check to see if date is greater than all possible dates + BOOST_CXX14_CONSTEXPR bool is_pos_infinity() const { return time_.is_pos_infinity(); } //! check to see if date is greater than all possible dates + BOOST_CXX14_CONSTEXPR bool is_neg_infinity() const { return time_.is_neg_infinity(); } //! check to see if time is a special value + BOOST_CXX14_CONSTEXPR bool is_special() const { return(is_not_a_date_time() || is_infinity()); } //!Equality operator -- others generated by boost::equality_comparable + BOOST_CXX14_CONSTEXPR bool operator==(const time_type& rhs) const { return time_system::is_equal(time_,rhs.time_); } //!Equality operator -- others generated by boost::less_than_comparable + BOOST_CXX14_CONSTEXPR bool operator<(const time_type& rhs) const { return time_system::is_less(time_,rhs.time_); } //! difference between two times + BOOST_CXX14_CONSTEXPR time_duration_type operator-(const time_type& rhs) const { return time_system::subtract_times(time_, rhs.time_); } //! add date durations + BOOST_CXX14_CONSTEXPR time_type operator+(const date_duration_type& dd) const { return time_system::add_days(time_, dd); } + BOOST_CXX14_CONSTEXPR time_type operator+=(const date_duration_type& dd) { time_ = (time_system::get_time_rep(date() + dd, time_of_day())); return time_type(time_); } //! subtract date durations + BOOST_CXX14_CONSTEXPR time_type operator-(const date_duration_type& dd) const { return time_system::subtract_days(time_, dd); } + BOOST_CXX14_CONSTEXPR time_type operator-=(const date_duration_type& dd) { time_ = (time_system::get_time_rep(date() - dd, time_of_day())); return time_type(time_); } //! add time durations + BOOST_CXX14_CONSTEXPR time_type operator+(const time_duration_type& td) const { return time_type(time_system::add_time_duration(time_, td)); } + BOOST_CXX14_CONSTEXPR time_type operator+=(const time_duration_type& td) { - time_ = (time_system::get_time_rep(date(), time_of_day() + td)); + time_ = time_system::add_time_duration(time_,td); return time_type(time_); } //! subtract time durations + BOOST_CXX14_CONSTEXPR time_type operator-(const time_duration_type& rhs) const { return time_system::subtract_time_duration(time_, rhs); } + BOOST_CXX14_CONSTEXPR time_type operator-=(const time_duration_type& td) { - time_ = (time_system::get_time_rep(date(), time_of_day() - td)); + time_ = time_system::subtract_time_duration(time_, td); return time_type(time_); } diff --git a/src/boost/boost/date_time/time_duration.hpp b/src/boost/boost/date_time/time_duration.hpp index e0ebf0483..a589b13d2 100644 --- a/src/boost/boost/date_time/time_duration.hpp +++ b/src/boost/boost/date_time/time_duration.hpp @@ -29,8 +29,8 @@ namespace date_time { This design allows the subclass duration types to provide custom construction policies or other custom features not provided here. - @param T The subclass type - @param rep_type The time resolution traits for this duration type. + @tparam T The subclass type + @tparam rep_type The time resolution traits for this duration type. */ template class BOOST_SYMBOL_VISIBLE time_duration : private @@ -56,58 +56,53 @@ namespace date_time { typedef typename rep_type::tick_type tick_type; typedef typename rep_type::impl_type impl_type; - time_duration() : ticks_(0) {} - time_duration(hour_type hours_in, + BOOST_CXX14_CONSTEXPR time_duration() : ticks_(0) {} + BOOST_CXX14_CONSTEXPR time_duration(hour_type hours_in, min_type minutes_in, sec_type seconds_in=0, fractional_seconds_type frac_sec_in = 0) : ticks_(rep_type::to_tick_count(hours_in,minutes_in,seconds_in,frac_sec_in)) {} - // copy constructor required for dividable<> - //! Construct from another time_duration (Copy constructor) - time_duration(const time_duration& other) - : ticks_(other.ticks_) - {} //! Construct from special_values - time_duration(special_values sv) : ticks_(impl_type::from_special(sv)) + BOOST_CXX14_CONSTEXPR time_duration(special_values sv) : ticks_(impl_type::from_special(sv)) {} //! Returns smallest representable duration - static duration_type unit() + static BOOST_CXX14_CONSTEXPR duration_type unit() { return duration_type(0,0,0,1); } //! Return the number of ticks in a second - static tick_type ticks_per_second() + static BOOST_CXX14_CONSTEXPR tick_type ticks_per_second() { return rep_type::res_adjust(); } //! Provide the resolution of this duration type - static time_resolutions resolution() + static BOOST_CXX14_CONSTEXPR time_resolutions resolution() { return rep_type::resolution(); } //! Returns number of hours in the duration - hour_type hours() const + BOOST_CXX14_CONSTEXPR hour_type hours() const { return static_cast(ticks() / (3600*ticks_per_second())); } //! Returns normalized number of minutes - min_type minutes() const + BOOST_CXX14_CONSTEXPR min_type minutes() const { return static_cast((ticks() / (60*ticks_per_second())) % 60); } //! Returns normalized number of seconds (0..60) - sec_type seconds() const + BOOST_CXX14_CONSTEXPR sec_type seconds() const { return static_cast((ticks()/ticks_per_second()) % 60); } //! Returns total number of seconds truncating any fractional seconds - sec_type total_seconds() const + BOOST_CXX14_CONSTEXPR sec_type total_seconds() const { return static_cast(ticks() / ticks_per_second()); } //! Returns total number of milliseconds truncating any fractional seconds - tick_type total_milliseconds() const + BOOST_CXX14_CONSTEXPR tick_type total_milliseconds() const { if (ticks_per_second() < 1000) { return ticks() * (static_cast(1000) / ticks_per_second()); @@ -115,7 +110,7 @@ namespace date_time { return ticks() / (ticks_per_second() / static_cast(1000)) ; } //! Returns total number of nanoseconds truncating any sub millisecond values - tick_type total_nanoseconds() const + BOOST_CXX14_CONSTEXPR tick_type total_nanoseconds() const { if (ticks_per_second() < 1000000000) { return ticks() * (static_cast(1000000000) / ticks_per_second()); @@ -123,7 +118,7 @@ namespace date_time { return ticks() / (ticks_per_second() / static_cast(1000000000)) ; } //! Returns total number of microseconds truncating any sub microsecond values - tick_type total_microseconds() const + BOOST_CXX14_CONSTEXPR tick_type total_microseconds() const { if (ticks_per_second() < 1000000) { return ticks() * (static_cast(1000000) / ticks_per_second()); @@ -131,81 +126,97 @@ namespace date_time { return ticks() / (ticks_per_second() / static_cast(1000000)) ; } //! Returns count of fractional seconds at given resolution - fractional_seconds_type fractional_seconds() const + BOOST_CXX14_CONSTEXPR fractional_seconds_type fractional_seconds() const { return (ticks() % ticks_per_second()); } //! Returns number of possible digits in fractional seconds - static unsigned short num_fractional_digits() + static BOOST_CXX14_CONSTEXPR unsigned short num_fractional_digits() { return rep_type::num_fractional_digits(); } - duration_type invert_sign() const + BOOST_CXX14_CONSTEXPR duration_type invert_sign() const { return duration_type(ticks_ * (-1)); } - bool is_negative() const + BOOST_CXX14_CONSTEXPR duration_type abs() const + { + if ( is_negative() ) + { + return invert_sign(); + } + return duration_type(ticks_); + } + BOOST_CONSTEXPR bool is_negative() const { return ticks_ < 0; } - bool operator<(const time_duration& rhs) const + BOOST_CONSTEXPR bool is_zero() const + { + return ticks_ == 0; + } + BOOST_CONSTEXPR bool is_positive() const + { + return ticks_ > 0; + } + BOOST_CONSTEXPR bool operator<(const time_duration& rhs) const { return ticks_ < rhs.ticks_; } - bool operator==(const time_duration& rhs) const + BOOST_CONSTEXPR bool operator==(const time_duration& rhs) const { return ticks_ == rhs.ticks_; } //! unary- Allows for time_duration td = -td1 - duration_type operator-()const + BOOST_CONSTEXPR duration_type operator-()const { return duration_type(ticks_ * (-1)); } - duration_type operator-(const duration_type& d) const + BOOST_CONSTEXPR duration_type operator-(const duration_type& d) const { return duration_type(ticks_ - d.ticks_); } - duration_type operator+(const duration_type& d) const + BOOST_CONSTEXPR duration_type operator+(const duration_type& d) const { return duration_type(ticks_ + d.ticks_); } - duration_type operator/(int divisor) const + BOOST_CONSTEXPR duration_type operator/(int divisor) const { return duration_type(ticks_ / divisor); } - duration_type operator-=(const duration_type& d) + BOOST_CXX14_CONSTEXPR duration_type operator-=(const duration_type& d) { ticks_ = ticks_ - d.ticks_; return duration_type(ticks_); } - duration_type operator+=(const duration_type& d) + BOOST_CXX14_CONSTEXPR duration_type operator+=(const duration_type& d) { ticks_ = ticks_ + d.ticks_; return duration_type(ticks_); } //! Division operations on a duration with an integer. - duration_type operator/=(int divisor) + BOOST_CXX14_CONSTEXPR duration_type operator/=(int divisor) { ticks_ = ticks_ / divisor; return duration_type(ticks_); } //! Multiplication operations an a duration with an integer - duration_type operator*(int rhs) const + BOOST_CXX14_CONSTEXPR duration_type operator*(int rhs) const { return duration_type(ticks_ * rhs); } - duration_type operator*=(int divisor) + BOOST_CXX14_CONSTEXPR duration_type operator*=(int divisor) { ticks_ = ticks_ * divisor; return duration_type(ticks_); } - tick_type ticks() const + BOOST_CXX14_CONSTEXPR tick_type ticks() const { return traits_type::as_number(ticks_); } //! Is ticks_ a special value? - bool is_special()const + BOOST_CXX14_CONSTEXPR bool is_special()const { if(traits_type::is_adapted()) { @@ -216,7 +227,7 @@ namespace date_time { } } //! Is duration pos-infinity - bool is_pos_infinity()const + BOOST_CXX14_CONSTEXPR bool is_pos_infinity()const { if(traits_type::is_adapted()) { @@ -227,7 +238,7 @@ namespace date_time { } } //! Is duration neg-infinity - bool is_neg_infinity()const + BOOST_CXX14_CONSTEXPR bool is_neg_infinity()const { if(traits_type::is_adapted()) { @@ -238,7 +249,7 @@ namespace date_time { } } //! Is duration not-a-date-time - bool is_not_a_date_time()const + BOOST_CXX14_CONSTEXPR bool is_not_a_date_time()const { if(traits_type::is_adapted()) { @@ -250,13 +261,13 @@ namespace date_time { } //! Used for special_values output - impl_type get_rep()const + BOOST_CONSTEXPR impl_type get_rep()const { return ticks_; } protected: - explicit time_duration(impl_type in) : ticks_(in) {} + BOOST_CXX14_CONSTEXPR explicit time_duration(impl_type in) : ticks_(in) {} impl_type ticks_; }; @@ -282,8 +293,9 @@ namespace date_time { public: // The argument (ss) must be an integral type template - explicit subsecond_duration(T const& ss, - typename boost::enable_if, void>::type* = BOOST_DATE_TIME_NULLPTR) : + BOOST_CXX14_CONSTEXPR explicit subsecond_duration(T const& ss, + typename boost::enable_if, + void>::type* = BOOST_DATE_TIME_NULLPTR) : base_duration(impl_type(traits_type::ticks_per_second >= frac_of_second ? ss * adjustment_ratio : ss / adjustment_ratio)) { } diff --git a/src/boost/boost/date_time/time_facet.hpp b/src/boost/boost/date_time/time_facet.hpp index c0b52c75e..20fc4606b 100644 --- a/src/boost/boost/date_time/time_facet.hpp +++ b/src/boost/boost/date_time/time_facet.hpp @@ -11,13 +11,13 @@ */ #include +#include +#include +#include // i/ostreambuf_iterator #include #include -#include #include -#include -#include // i/ostreambuf_iterator -#include +#include #include #include #include @@ -269,11 +269,11 @@ namespace date_time { m_time_duration_format = format; } - virtual void set_iso_format() + void set_iso_format() BOOST_OVERRIDE { this->m_format = iso_time_format_specifier; } - virtual void set_iso_extended_format() + void set_iso_extended_format() BOOST_OVERRIDE { this->m_format = iso_time_format_extended_specifier; } @@ -409,7 +409,7 @@ namespace date_time { // replace %F with nnnnnnn or nothing if fs == 0 frac_str = fractional_seconds_as_string(time_arg.time_of_day(), true); - if (frac_str.size()) { + if (!frac_str.empty()) { char_type sep = std::use_facet >(ios_arg.getloc()).decimal_point(); string_type replace_string; replace_string += sep; @@ -481,7 +481,7 @@ namespace date_time { boost::algorithm::replace_all(format, unrestricted_hours_format, hours_str); } // We still have to process restricted hours format specifier. In order to - // support parseability of durations in ISO format (%H%M%S), we'll have to + // support parseability of durations in ISO 8601 format (%H%M%S), we'll have to // restrict the stringified hours length to 2 characters. if (format.find(hours_format) != string_type::npos) { if (hours_str.empty()) @@ -958,7 +958,7 @@ namespace date_time { while((sitr != stream_end) && std::isspace(*sitr)) { ++sitr; } bool use_current_char = false; - bool use_current_format_char = false; // used whith two character flags + bool use_current_format_char = false; // used with two character flags // num_get will consume the +/-, we may need a copy if special_value char_type c = '\0'; @@ -1365,9 +1365,6 @@ template const typename time_input_facet::char_type* time_input_facet::default_time_duration_format = time_formats::default_time_duration_format; - } } // namespaces - #endif - diff --git a/src/boost/boost/date_time/time_iterator.hpp b/src/boost/boost/date_time/time_iterator.hpp index f550588ff..e368e5a63 100644 --- a/src/boost/boost/date_time/time_iterator.hpp +++ b/src/boost/boost/date_time/time_iterator.hpp @@ -30,14 +30,14 @@ namespace date_time { current_ = current_ - offset_; return *this; } - time_type operator*() {return current_;} - time_type* operator->() {return ¤t_;} - bool operator< (const time_type& t) {return current_ < t;} - bool operator<= (const time_type& t) {return current_ <= t;} - bool operator!= (const time_type& t) {return current_ != t;} - bool operator== (const time_type& t) {return current_ == t;} - bool operator> (const time_type& t) {return current_ > t;} - bool operator>= (const time_type& t) {return current_ >= t;} + const time_type& operator*() const {return current_;} + const time_type* operator->() const {return ¤t_;} + bool operator< (const time_type& t) const {return current_ < t;} + bool operator<= (const time_type& t) const {return current_ <= t;} + bool operator!= (const time_type& t) const {return current_ != t;} + bool operator== (const time_type& t) const {return current_ == t;} + bool operator> (const time_type& t) const {return current_ > t;} + bool operator>= (const time_type& t) const {return current_ >= t;} private: time_type current_; diff --git a/src/boost/boost/date_time/time_parsing.hpp b/src/boost/boost/date_time/time_parsing.hpp index e0382fddd..c4ba65181 100644 --- a/src/boost/boost/date_time/time_parsing.hpp +++ b/src/boost/boost/date_time/time_parsing.hpp @@ -21,7 +21,7 @@ namespace date_time { //! computes exponential math like 2^8 => 256, only works with positive integers //Not general purpose, but needed b/c std::pow is not available - //everywehere. Hasn't been tested with negatives and zeros + //everywhere. Hasn't been tested with negatives and zeros template inline int_type power(int_type base, int_type exponent) @@ -79,7 +79,7 @@ namespace date_time { case 2: { sec = boost::lexical_cast(*beg); break; - }; + } case 3: { int digits = static_cast(beg->length()); //Works around a bug in MSVC 6 library that does not support @@ -183,7 +183,7 @@ namespace date_time { } - //! Parse time duration part of an iso time of form: [-]hhmmss[.fff...] (eg: 120259.123 is 12 hours, 2 min, 59 seconds, 123000 microseconds) + //! Parse time duration part of an ISO 8601 time of form: [-]hhmmss[.fff...] (eg: 120259.123 is 12 hours, 2 min, 59 seconds, 123000 microseconds) template inline time_duration @@ -284,7 +284,7 @@ namespace date_time { break; } default: break; - }; + } pos++; } if(sign) { @@ -309,7 +309,7 @@ namespace date_time { // then from_iso_string should be able to read a special value string // the special_values_parser is expensive to set up and not thread-safe // so it cannot be static, so we need to be careful about when we use it - if (svp_type::likely(s)) { + if (svp_type::should_call_match(s)) { typedef typename svp_type::stringstream_type ss_type; typedef typename svp_type::stream_itr_type itr_type; typedef typename svp_type::match_results mr_type; @@ -334,11 +334,6 @@ namespace date_time { return time_type(d, td); } - - } }//namespace date_time - - - #endif diff --git a/src/boost/boost/date_time/time_resolution_traits.hpp b/src/boost/boost/date_time/time_resolution_traits.hpp index a85965d80..f1b055084 100644 --- a/src/boost/boost/date_time/time_resolution_traits.hpp +++ b/src/boost/boost/date_time/time_resolution_traits.hpp @@ -22,7 +22,7 @@ namespace date_time { template // JDG [7/6/02 made a template], // moved here from time_duration.hpp 2003-Sept-4. - inline T absolute_value(T x) + inline BOOST_CXX14_CONSTEXPR T absolute_value(T x) { return x < 0 ? -x : x; } @@ -31,33 +31,33 @@ namespace date_time { struct time_resolution_traits_bi32_impl { typedef boost::int32_t int_type; typedef boost::int32_t impl_type; - static int_type as_number(impl_type i){ return i;} + static BOOST_CXX14_CONSTEXPR int_type as_number(impl_type i){ return i;} //! Used to determine if implemented type is int_adapter or int - static bool is_adapted() { return false;} + static BOOST_CXX14_CONSTEXPR bool is_adapted() { return false;} }; //! traits struct for time_resolution_traits implementation type struct time_resolution_traits_adapted32_impl { typedef boost::int32_t int_type; typedef boost::date_time::int_adapter impl_type; - static int_type as_number(impl_type i){ return i.as_number();} + static BOOST_CXX14_CONSTEXPR int_type as_number(impl_type i){ return i.as_number();} //! Used to determine if implemented type is int_adapter or int - static bool is_adapted() { return true;} + static BOOST_CXX14_CONSTEXPR bool is_adapted() { return true;} }; //! traits struct for time_resolution_traits implementation type struct time_resolution_traits_bi64_impl { typedef boost::int64_t int_type; typedef boost::int64_t impl_type; - static int_type as_number(impl_type i){ return i;} + static BOOST_CXX14_CONSTEXPR int_type as_number(impl_type i){ return i;} //! Used to determine if implemented type is int_adapter or int - static bool is_adapted() { return false;} + static BOOST_CXX14_CONSTEXPR bool is_adapted() { return false;} }; //! traits struct for time_resolution_traits implementation type struct time_resolution_traits_adapted64_impl { typedef boost::int64_t int_type; typedef boost::date_time::int_adapter impl_type; - static int_type as_number(impl_type i){ return i.as_number();} + static BOOST_CXX14_CONSTEXPR int_type as_number(impl_type i){ return i.as_number();} //! Used to determine if implemented type is int_adapter or int - static bool is_adapted() { return true;} + static BOOST_CXX14_CONSTEXPR bool is_adapted() { return true;} }; // @@ -103,11 +103,11 @@ namespace date_time { typedef var_type sec_type; // bring in function from frac_sec_type traits structs - static fractional_seconds_type as_number(impl_type i) + static BOOST_CXX14_CONSTEXPR fractional_seconds_type as_number(impl_type i) { return frac_sec_type::as_number(i); } - static bool is_adapted() + static BOOST_CXX14_CONSTEXPR bool is_adapted() { return frac_sec_type::is_adapted(); } @@ -119,23 +119,23 @@ namespace date_time { BOOST_STATIC_CONSTANT(fractional_seconds_type, ticks_per_second = resolution_adjust); #endif - static time_resolutions resolution() + static BOOST_CXX14_CONSTEXPR time_resolutions resolution() { return res; } - static unsigned short num_fractional_digits() + static BOOST_CXX14_CONSTEXPR unsigned short num_fractional_digits() { return frac_digits; } - static fractional_seconds_type res_adjust() + static BOOST_CXX14_CONSTEXPR fractional_seconds_type res_adjust() { return resolution_adjust; } //! Any negative argument results in a negative tick_count - static tick_type to_tick_count(hour_type hours, - min_type minutes, - sec_type seconds, - fractional_seconds_type fs) + static BOOST_CXX14_CONSTEXPR tick_type to_tick_count(hour_type hours, + min_type minutes, + sec_type seconds, + fractional_seconds_type fs) { if(hours < 0 || minutes < 0 || seconds < 0 || fs < 0) { diff --git a/src/boost/boost/date_time/time_system_counted.hpp b/src/boost/boost/date_time/time_system_counted.hpp index 7b17e78aa..9679bc9ac 100644 --- a/src/boost/boost/date_time/time_system_counted.hpp +++ b/src/boost/boost/date_time/time_system_counted.hpp @@ -2,7 +2,7 @@ #define DATE_TIME_TIME_SYSTEM_COUNTED_HPP /* Copyright (c) 2002,2003 CrystalClear Software, Inc. - * Use, modification and distribution is subject to the + * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst @@ -10,8 +10,9 @@ */ - -#include "boost/date_time/time_defs.hpp" +#include +#include +#include #include @@ -30,24 +31,28 @@ namespace date_time { typedef typename date_type::ymd_type ymd_type; typedef typename config::time_duration_type time_duration_type; typedef typename config::resolution_traits resolution_traits; - - counted_time_rep(const date_type& d, const time_duration_type& time_of_day) + + BOOST_CXX14_CONSTEXPR + counted_time_rep(const date_type& d, const time_duration_type& time_of_day) : time_count_(1) { if(d.is_infinity() || d.is_not_a_date() || time_of_day.is_special()) { time_count_ = time_of_day.get_rep() + d.day_count(); //std::cout << time_count_ << std::endl; } - else { + else { time_count_ = (d.day_number() * frac_sec_per_day()) + time_of_day.ticks(); } } + BOOST_CXX14_CONSTEXPR explicit counted_time_rep(int_type count) : time_count_(count) {} + BOOST_CXX14_CONSTEXPR explicit counted_time_rep(impl_type count) : time_count_(count) {} + BOOST_CXX14_CONSTEXPR date_type date() const { if(time_count_.is_special()) { @@ -61,53 +66,54 @@ namespace date_time { } } //int_type day_count() const + BOOST_CXX14_CONSTEXPR unsigned long day_count() const { - /* resolution_traits::as_number returns a boost::int64_t & - * frac_sec_per_day is also a boost::int64_t so, naturally, - * the division operation returns a boost::int64_t. - * The static_cast to an unsigned long is ok (results in no data loss) - * because frac_sec_per_day is either the number of - * microseconds per day, or the number of nanoseconds per day. - * Worst case scenario: resolution_traits::as_number returns the - * maximum value an int64_t can hold and frac_sec_per_day - * is microseconds per day (lowest possible value). - * The division operation will then return a value of 106751991 - - * easily fitting in an unsigned long. + /* resolution_traits::as_number returns a boost::int64_t & + * frac_sec_per_day is also a boost::int64_t so, naturally, + * the division operation returns a boost::int64_t. + * The static_cast to an unsigned long is ok (results in no data loss) + * because frac_sec_per_day is either the number of + * microseconds per day, or the number of nanoseconds per day. + * Worst case scenario: resolution_traits::as_number returns the + * maximum value an int64_t can hold and frac_sec_per_day + * is microseconds per day (lowest possible value). + * The division operation will then return a value of 106751991 - + * easily fitting in an unsigned long. */ return static_cast(resolution_traits::as_number(time_count_) / frac_sec_per_day()); } - int_type time_count() const + BOOST_CXX14_CONSTEXPR int_type time_count() const { return resolution_traits::as_number(time_count_); } - int_type tod() const + BOOST_CXX14_CONSTEXPR int_type tod() const { return resolution_traits::as_number(time_count_) % frac_sec_per_day(); } - static int_type frac_sec_per_day() + static BOOST_CXX14_CONSTEXPR int_type frac_sec_per_day() { int_type seconds_per_day = 60*60*24; int_type fractional_sec_per_sec(resolution_traits::res_adjust()); return seconds_per_day*fractional_sec_per_sec; } - bool is_pos_infinity()const + BOOST_CXX14_CONSTEXPR bool is_pos_infinity()const { return impl_type::is_pos_inf(time_count_.as_number()); } - bool is_neg_infinity()const + BOOST_CXX14_CONSTEXPR bool is_neg_infinity()const { return impl_type::is_neg_inf(time_count_.as_number()); } - bool is_not_a_date_time()const + BOOST_CXX14_CONSTEXPR bool is_not_a_date_time()const { return impl_type::is_not_a_number(time_count_.as_number()); } - bool is_special()const + BOOST_CXX14_CONSTEXPR bool is_special()const { return time_count_.is_special(); } - impl_type get_rep()const + BOOST_CXX14_CONSTEXPR impl_type get_rep()const { return time_count_; } @@ -128,27 +134,28 @@ namespace date_time { typedef typename time_rep_type::date_duration_type date_duration_type; - template static void unused_var(const T&) {} + template static BOOST_CXX14_CONSTEXPR void unused_var(const T&) {} - static time_rep_type get_time_rep(const date_type& day, - const time_duration_type& tod, - date_time::dst_flags dst=not_dst) + static BOOST_CXX14_CONSTEXPR + time_rep_type get_time_rep(const date_type& day, + const time_duration_type& tod, + date_time::dst_flags dst=not_dst) { unused_var(dst); return time_rep_type(day, tod); } - static time_rep_type get_time_rep(special_values sv) + static BOOST_CXX14_CONSTEXPR time_rep_type get_time_rep(special_values sv) { switch (sv) { case not_a_date_time: return time_rep_type(date_type(not_a_date_time), time_duration_type(not_a_date_time)); case pos_infin: - return time_rep_type(date_type(pos_infin), + return time_rep_type(date_type(pos_infin), time_duration_type(pos_infin)); case neg_infin: - return time_rep_type(date_type(neg_infin), + return time_rep_type(date_type(neg_infin), time_duration_type(neg_infin)); case max_date_time: { time_duration_type td = time_duration_type(24,0,0,0) - time_duration_type(0,0,0,1); @@ -160,38 +167,42 @@ namespace date_time { default: return time_rep_type(date_type(not_a_date_time), time_duration_type(not_a_date_time)); - + } } - static date_type get_date(const time_rep_type& val) + static BOOST_CXX14_CONSTEXPR date_type + get_date(const time_rep_type& val) { return val.date(); } - static time_duration_type get_time_of_day(const time_rep_type& val) + static BOOST_CXX14_CONSTEXPR + time_duration_type get_time_of_day(const time_rep_type& val) { if(val.is_special()) { return time_duration_type(val.get_rep().as_special()); } else{ - return time_duration_type(0,0,0,val.tod()); + return time_duration_type(0,0,0,val.tod()); } } static std::string zone_name(const time_rep_type&) { return ""; } - static bool is_equal(const time_rep_type& lhs, const time_rep_type& rhs) + static BOOST_CXX14_CONSTEXPR bool is_equal(const time_rep_type& lhs, const time_rep_type& rhs) { return (lhs.time_count() == rhs.time_count()); } - static bool is_less(const time_rep_type& lhs, const time_rep_type& rhs) + static BOOST_CXX14_CONSTEXPR + bool is_less(const time_rep_type& lhs, const time_rep_type& rhs) { return (lhs.time_count() < rhs.time_count()); } - static time_rep_type add_days(const time_rep_type& base, - const date_duration_type& dd) + static BOOST_CXX14_CONSTEXPR + time_rep_type add_days(const time_rep_type& base, + const date_duration_type& dd) { if(base.is_special() || dd.is_special()) { return(time_rep_type(base.get_rep() + dd.get_rep())); @@ -200,8 +211,9 @@ namespace date_time { return time_rep_type(base.time_count() + (dd.days() * time_rep_type::frac_sec_per_day())); } } - static time_rep_type subtract_days(const time_rep_type& base, - const date_duration_type& dd) + static BOOST_CXX14_CONSTEXPR + time_rep_type subtract_days(const time_rep_type& base, + const date_duration_type& dd) { if(base.is_special() || dd.is_special()) { return(time_rep_type(base.get_rep() - dd.get_rep())); @@ -210,8 +222,9 @@ namespace date_time { return time_rep_type(base.time_count() - (dd.days() * time_rep_type::frac_sec_per_day())); } } - static time_rep_type subtract_time_duration(const time_rep_type& base, - const time_duration_type& td) + static BOOST_CXX14_CONSTEXPR + time_rep_type subtract_time_duration(const time_rep_type& base, + const time_duration_type& td) { if(base.is_special() || td.is_special()) { return(time_rep_type(base.get_rep() - td.get_rep())); @@ -220,8 +233,9 @@ namespace date_time { return time_rep_type(base.time_count() - td.ticks()); } } - static time_rep_type add_time_duration(const time_rep_type& base, - time_duration_type td) + static BOOST_CXX14_CONSTEXPR + time_rep_type add_time_duration(const time_rep_type& base, + time_duration_type td) { if(base.is_special() || td.is_special()) { return(time_rep_type(base.get_rep() + td.get_rep())); @@ -230,8 +244,9 @@ namespace date_time { return time_rep_type(base.time_count() + td.ticks()); } } - static time_duration_type subtract_times(const time_rep_type& lhs, - const time_rep_type& rhs) + static BOOST_CXX14_CONSTEXPR + time_duration_type subtract_times(const time_rep_type& lhs, + const time_rep_type& rhs) { if(lhs.is_special() || rhs.is_special()) { return(time_duration_type( @@ -239,10 +254,10 @@ namespace date_time { } else { fractional_seconds_type fs = lhs.time_count() - rhs.time_count(); - return time_duration_type(0,0,0,fs); + return time_duration_type(0,0,0,fs); } } - + }; diff --git a/src/boost/boost/date_time/time_system_split.hpp b/src/boost/boost/date_time/time_system_split.hpp index 352661fe3..375760ef0 100644 --- a/src/boost/boost/date_time/time_system_split.hpp +++ b/src/boost/boost/date_time/time_system_split.hpp @@ -2,7 +2,7 @@ #define DATE_TIME_TIME_SYSTEM_SPLIT_HPP /* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc. - * Use, modification and distribution is subject to the + * Use, modification and distribution is subject to the * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst @@ -11,15 +11,17 @@ #include -#include -#include "boost/date_time/compiler_config.hpp" -#include "boost/date_time/special_defs.hpp" +#include +#include +#include +#include +#include namespace boost { namespace date_time { //! An unadjusted time system implementation. -#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) +#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) template #else template @@ -35,30 +37,32 @@ namespace date_time { typedef typename config::resolution_traits resolution_traits; //86400 is number of seconds in a day... -#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) +#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) typedef date_time::wrapping_int wrap_int_type; #else private: BOOST_STATIC_CONSTANT(int_type, ticks_per_day = INT64_C(86400) * config::tick_per_second); public: -# if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0X581) ) +# if BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0X581) ) typedef date_time::wrapping_int< split_timedate_system::int_type, split_timedate_system::ticks_per_day> wrap_int_type; # else typedef date_time::wrapping_int wrap_int_type; #endif #endif - static time_rep_type get_time_rep(special_values sv) + static + BOOST_CXX14_CONSTEXPR + time_rep_type get_time_rep(special_values sv) { switch (sv) { case not_a_date_time: return time_rep_type(date_type(not_a_date_time), time_duration_type(not_a_date_time)); case pos_infin: - return time_rep_type(date_type(pos_infin), + return time_rep_type(date_type(pos_infin), time_duration_type(pos_infin)); case neg_infin: - return time_rep_type(date_type(neg_infin), + return time_rep_type(date_type(neg_infin), time_duration_type(neg_infin)); case max_date_time: { time_duration_type td = time_duration_type(24,0,0,0) - time_duration_type(0,0,0,1); @@ -70,14 +74,16 @@ namespace date_time { default: return time_rep_type(date_type(not_a_date_time), time_duration_type(not_a_date_time)); - + } } - static time_rep_type get_time_rep(const date_type& day, - const time_duration_type& tod, - date_time::dst_flags /* dst */ = not_dst) + static + BOOST_CXX14_CONSTEXPR + time_rep_type get_time_rep(const date_type& day, + const time_duration_type& tod, + date_time::dst_flags /* dst */ = not_dst) { if(day.is_special() || tod.is_special()) { if(day.is_not_a_date() || tod.is_not_a_date_time()) { @@ -123,11 +129,11 @@ namespace date_time { } return time_rep_type(day, tod); } - static date_type get_date(const time_rep_type& val) + static BOOST_CONSTEXPR date_type get_date(const time_rep_type& val) { return date_type(val.day); } - static time_duration_type get_time_of_day(const time_rep_type& val) + static BOOST_CONSTEXPR time_duration_type get_time_of_day(const time_rep_type& val) { return time_duration_type(val.time_of_day); } @@ -135,28 +141,33 @@ namespace date_time { { return std::string(); } - static bool is_equal(const time_rep_type& lhs, const time_rep_type& rhs) + static BOOST_CONSTEXPR + bool is_equal(const time_rep_type& lhs, const time_rep_type& rhs) { return ((lhs.day == rhs.day) && (lhs.time_of_day == rhs.time_of_day)); } - static bool is_less(const time_rep_type& lhs, const time_rep_type& rhs) + static BOOST_CXX14_CONSTEXPR + bool is_less(const time_rep_type& lhs, const time_rep_type& rhs) { if (lhs.day < rhs.day) return true; if (lhs.day > rhs.day) return false; return (lhs.time_of_day < rhs.time_of_day); } - static time_rep_type add_days(const time_rep_type& base, - const date_duration_type& dd) + static BOOST_CXX14_CONSTEXPR + time_rep_type add_days(const time_rep_type& base, + const date_duration_type& dd) { return time_rep_type(base.day+dd, base.time_of_day); } - static time_rep_type subtract_days(const time_rep_type& base, - const date_duration_type& dd) + static BOOST_CXX14_CONSTEXPR + time_rep_type subtract_days(const time_rep_type& base, + const date_duration_type& dd) { return split_timedate_system::get_time_rep(base.day-dd, base.time_of_day); } - static time_rep_type subtract_time_duration(const time_rep_type& base, - const time_duration_type& td) + static BOOST_CXX14_CONSTEXPR + time_rep_type subtract_time_duration(const time_rep_type& base, + const time_duration_type& td) { if(base.day.is_special() || td.is_special()) { @@ -173,8 +184,9 @@ namespace date_time { return time_rep_type(base.day-day_overflow, time_duration_type(0,0,0,day_offset.as_int())); } - static time_rep_type add_time_duration(const time_rep_type& base, - time_duration_type td) + static BOOST_CXX14_CONSTEXPR + time_rep_type add_time_duration(const time_rep_type& base, + time_duration_type td) { if(base.day.is_special() || td.is_special()) { return split_timedate_system::get_time_rep(base.day, td); @@ -184,14 +196,15 @@ namespace date_time { return subtract_time_duration(base,td1); } - wrap_int_type day_offset(base.time_of_day.ticks()); + wrap_int_type day_offset(base.time_of_day.ticks()); date_duration_type day_overflow(static_cast< typename date_duration_type::duration_rep_type >(day_offset.add(td.ticks()))); return time_rep_type(base.day+day_overflow, time_duration_type(0,0,0,day_offset.as_int())); } - static time_duration_type subtract_times(const time_rep_type& lhs, - const time_rep_type& rhs) + static BOOST_CXX14_CONSTEXPR + time_duration_type subtract_times(const time_rep_type& lhs, + const time_rep_type& rhs) { date_duration_type dd = lhs.day - rhs.day; if (BOOST_LIKELY(!dd.is_special())) { @@ -204,7 +217,7 @@ namespace date_time { return td+td2; } } - + }; } } //namespace date_time diff --git a/src/boost/boost/date_time/wrapping_int.hpp b/src/boost/boost/date_time/wrapping_int.hpp index b3735a987..3db377d76 100644 --- a/src/boost/boost/date_time/wrapping_int.hpp +++ b/src/boost/boost/date_time/wrapping_int.hpp @@ -9,6 +9,7 @@ * $Date$ */ +#include "boost/config.hpp" namespace boost { namespace date_time { @@ -32,19 +33,19 @@ class wrapping_int { public: typedef int_type_ int_type; //typedef overflow_type_ overflow_type; - static int_type wrap_value() {return wrap_val;} + static BOOST_CONSTEXPR int_type wrap_value() {return wrap_val;} //!Add, return true if wrapped - wrapping_int(int_type v) : value_(v) {} + BOOST_CXX14_CONSTEXPR wrapping_int(int_type v) : value_(v) {} //! Explicit converion method - int_type as_int() const {return value_;} - operator int_type() const {return value_;} + BOOST_CONSTEXPR int_type as_int() const {return value_;} + BOOST_CONSTEXPR operator int_type() const {return value_;} //!Add, return number of wraps performed /*! The sign of the returned value will indicate which direction the * wraps went. Ex: add a negative number and wrapping under could occur, * this would be indicated by a negative return value. If wrapping over * took place, a positive value would be returned */ template< typename IntT > - IntT add(IntT v) + BOOST_CXX14_CONSTEXPR IntT add(IntT v) { int_type remainder = static_cast(v % (wrap_val)); IntT overflow = static_cast(v / (wrap_val)); @@ -58,7 +59,7 @@ class wrapping_int { * occur, this would be indicated by a negative return value. If * wrapping under took place, a positive value would be returned. */ template< typename IntT > - IntT subtract(IntT v) + BOOST_CXX14_CONSTEXPR IntT subtract(IntT v) { int_type remainder = static_cast(v % (wrap_val)); IntT underflow = static_cast(-(v / (wrap_val))); @@ -69,7 +70,7 @@ class wrapping_int { int_type value_; template< typename IntT > - IntT calculate_wrap(IntT wrap) + BOOST_CXX14_CONSTEXPR IntT calculate_wrap(IntT wrap) { if ((value_) >= wrap_val) { @@ -95,11 +96,11 @@ template class wrapping_int2 { public: typedef int_type_ int_type; - static int_type wrap_value() {return wrap_max;} - static int_type min_value() {return wrap_min;} + static BOOST_CONSTEXPR int_type wrap_value() {return wrap_max;} + static BOOST_CONSTEXPR int_type min_value() {return wrap_min;} /*! If initializing value is out of range of [wrap_min, wrap_max], * value will be initialized to closest of min or max */ - wrapping_int2(int_type v) : value_(v) { + BOOST_CXX14_CONSTEXPR wrapping_int2(int_type v) : value_(v) { if(value_ < wrap_min) { value_ = wrap_min; @@ -110,15 +111,15 @@ class wrapping_int2 { } } //! Explicit converion method - int_type as_int() const {return value_;} - operator int_type() const {return value_;} + BOOST_CONSTEXPR int_type as_int() const {return value_;} + BOOST_CONSTEXPR operator int_type() const {return value_;} //!Add, return number of wraps performed /*! The sign of the returned value will indicate which direction the * wraps went. Ex: add a negative number and wrapping under could occur, * this would be indicated by a negative return value. If wrapping over * took place, a positive value would be returned */ template< typename IntT > - IntT add(IntT v) + BOOST_CXX14_CONSTEXPR IntT add(IntT v) { int_type remainder = static_cast(v % (wrap_max - wrap_min + 1)); IntT overflow = static_cast(v / (wrap_max - wrap_min + 1)); @@ -131,7 +132,7 @@ class wrapping_int2 { * occur, this would be indicated by a positive return value. If * wrapping under took place, a negative value would be returned */ template< typename IntT > - IntT subtract(IntT v) + BOOST_CXX14_CONSTEXPR IntT subtract(IntT v) { int_type remainder = static_cast(v % (wrap_max - wrap_min + 1)); IntT underflow = static_cast(-(v / (wrap_max - wrap_min + 1))); @@ -143,7 +144,7 @@ class wrapping_int2 { int_type value_; template< typename IntT > - IntT calculate_wrap(IntT wrap) + BOOST_CXX14_CONSTEXPR IntT calculate_wrap(IntT wrap) { if ((value_) > wrap_max) { diff --git a/src/boost/boost/date_time/year_month_day.hpp b/src/boost/boost/date_time/year_month_day.hpp index 278ffe357..8d09afcf0 100644 --- a/src/boost/boost/date_time/year_month_day.hpp +++ b/src/boost/boost/date_time/year_month_day.hpp @@ -17,9 +17,11 @@ namespace date_time { //! Allow rapid creation of ymd triples of different types template struct BOOST_SYMBOL_VISIBLE year_month_day_base { - year_month_day_base(YearType year, + BOOST_CXX14_CONSTEXPR + year_month_day_base(YearType year, MonthType month, DayType day); + YearType year; MonthType month; DayType day; @@ -27,11 +29,11 @@ namespace date_time { typedef MonthType month_type; typedef DayType day_type; }; - - + + //! A basic constructor template - inline + inline BOOST_CXX14_CONSTEXPR year_month_day_base::year_month_day_base(YearType y, MonthType m, DayType d) : @@ -39,7 +41,7 @@ namespace date_time { month(m), day(d) {} - + } }//namespace date_time diff --git a/src/boost/boost/describe/bases.hpp b/src/boost/boost/describe/bases.hpp new file mode 100644 index 000000000..b465e3da5 --- /dev/null +++ b/src/boost/boost/describe/bases.hpp @@ -0,0 +1,50 @@ +#ifndef BOOST_DESCRIBE_BASES_HPP_INCLUDED +#define BOOST_DESCRIBE_BASES_HPP_INCLUDED + +// Copyright 2020, 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include + +#if defined(BOOST_DESCRIBE_CXX11) + +#include +#include + +namespace boost +{ +namespace describe +{ +namespace detail +{ + +template using _describe_bases = decltype( boost_base_descriptor_fn( static_cast(0) ) ); + +template struct base_filter +{ + template using fn = mp11::mp_bool< ( M & mod_any_access & T::modifiers ) != 0 >; +}; + +template struct has_describe_bases: std::false_type +{ +}; + +template struct has_describe_bases>>: std::true_type +{ +}; + +} // namespace detail + +template using describe_bases = mp11::mp_copy_if_q, detail::base_filter>; + +template using has_describe_bases = detail::has_describe_bases; + +} // namespace describe +} // namespace boost + +#endif // !defined(BOOST_DESCRIBE_CXX11) + +#endif // #ifndef BOOST_DESCRIBE_BASES_HPP_INCLUDED diff --git a/src/boost/boost/describe/detail/config.hpp b/src/boost/boost/describe/detail/config.hpp new file mode 100644 index 000000000..25e725337 --- /dev/null +++ b/src/boost/boost/describe/detail/config.hpp @@ -0,0 +1,40 @@ +#ifndef BOOST_DESCRIBE_DETAIL_CONFIG_HPP_INCLUDED +#define BOOST_DESCRIBE_DETAIL_CONFIG_HPP_INCLUDED + +// Copyright 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#if __cplusplus >= 201402L + +# define BOOST_DESCRIBE_CXX14 +# define BOOST_DESCRIBE_CXX11 + +#elif defined(_MSC_VER) && _MSC_VER >= 1900 + +# define BOOST_DESCRIBE_CXX14 +# define BOOST_DESCRIBE_CXX11 + +#elif __cplusplus >= 201103L + +# define BOOST_DESCRIBE_CXX11 + +# if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ == 7 +# undef BOOST_DESCRIBE_CXX11 +# endif + +#endif + +#if defined(BOOST_DESCRIBE_CXX11) +# define BOOST_DESCRIBE_CONSTEXPR_OR_CONST constexpr +#else +# define BOOST_DESCRIBE_CONSTEXPR_OR_CONST const +#endif + +#if defined(__clang__) +# define BOOST_DESCRIBE_MAYBE_UNUSED __attribute__((unused)) +#else +# define BOOST_DESCRIBE_MAYBE_UNUSED +#endif + +#endif // #ifndef BOOST_DESCRIBE_DETAIL_CONFIG_HPP_INCLUDED diff --git a/src/boost/boost/describe/detail/cx_streq.hpp b/src/boost/boost/describe/detail/cx_streq.hpp new file mode 100644 index 000000000..179d51682 --- /dev/null +++ b/src/boost/boost/describe/detail/cx_streq.hpp @@ -0,0 +1,30 @@ +#ifndef BOOST_DESCRIBE_DETAIL_CX_STREQ_HPP_INCLUDED +#define BOOST_DESCRIBE_DETAIL_CX_STREQ_HPP_INCLUDED + +// Copyright 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include + +#if defined(BOOST_DESCRIBE_CXX11) + +namespace boost +{ +namespace describe +{ +namespace detail +{ + +constexpr bool cx_streq( char const * s1, char const * s2 ) +{ + return s1[0] == s2[0] && ( s1[0] == 0 || cx_streq( s1 + 1, s2 + 1 ) ); +} + +} // namespace detail +} // namespace describe +} // namespace boost + +#endif // defined(BOOST_DESCRIBE_CXX11) + +#endif // #ifndef BOOST_DESCRIBE_DETAIL_CX_STREQ_HPP_INCLUDED diff --git a/src/boost/boost/describe/detail/void_t.hpp b/src/boost/boost/describe/detail/void_t.hpp new file mode 100644 index 000000000..4a2c1858a --- /dev/null +++ b/src/boost/boost/describe/detail/void_t.hpp @@ -0,0 +1,32 @@ +#ifndef BOOST_DESCRIBE_DETAIL_VOID_T_HPP_INCLUDED +#define BOOST_DESCRIBE_DETAIL_VOID_T_HPP_INCLUDED + +// Copyright 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include + +#if defined(BOOST_DESCRIBE_CXX11) + +namespace boost +{ +namespace describe +{ +namespace detail +{ + +template struct make_void +{ + using type = void; +}; + +template using void_t = typename make_void::type; + +} // namespace detail +} // namespace describe +} // namespace boost + +#endif // defined(BOOST_DESCRIBE_CXX11) + +#endif // #ifndef BOOST_DESCRIBE_DETAIL_VOID_T_HPP_INCLUDED diff --git a/src/boost/boost/describe/members.hpp b/src/boost/boost/describe/members.hpp new file mode 100644 index 000000000..6e4519bb4 --- /dev/null +++ b/src/boost/boost/describe/members.hpp @@ -0,0 +1,161 @@ +#ifndef BOOST_DESCRIBE_DATA_MEMBERS_HPP_INCLUDED +#define BOOST_DESCRIBE_DATA_MEMBERS_HPP_INCLUDED + +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include +#include + +#if defined(BOOST_DESCRIBE_CXX11) + +#include +#include +#include +#include +#include +#include + +namespace boost +{ +namespace describe +{ +namespace detail +{ + +// _describe_members + +template using _describe_public_members = decltype( boost_public_member_descriptor_fn( static_cast(0) ) ); +template using _describe_protected_members = decltype( boost_protected_member_descriptor_fn( static_cast(0) ) ); +template using _describe_private_members = decltype( boost_private_member_descriptor_fn( static_cast(0) ) ); + +template using _describe_members = mp11::mp_append<_describe_public_members, _describe_protected_members, _describe_private_members>; + +// describe_inherited_members + +// T: type +// V: list of virtual bases visited so far +template struct describe_inherited_members_impl; +template using describe_inherited_members = typename describe_inherited_members_impl::type; + +// L: list of base class descriptors +// T: derived type +// V: list of virtual bases visited so far +template struct describe_inherited_members2_impl; +template using describe_inherited_members2 = typename describe_inherited_members2_impl::type; + +template struct describe_inherited_members_impl +{ + using R1 = describe_inherited_members2, T, V>; + using R2 = _describe_members; + + using type = mp11::mp_append; +}; + +template class L, class T, class V> struct describe_inherited_members2_impl, T, V> +{ + using type = L<>; +}; + +template using name_matches = mp11::mp_bool< cx_streq( D1::name, D2::name ) >; + +template using name_is_hidden = mp11::mp_any_of_q>; + +constexpr unsigned cx_max( unsigned m1, unsigned m2 ) +{ + return m1 > m2? m1: m2; +} + +template struct update_modifiers +{ + template struct fn + { + using L = _describe_members; + static constexpr unsigned hidden = name_is_hidden::value? mod_hidden: 0; + + static constexpr unsigned mods = D::modifiers; + static constexpr unsigned access = cx_max( mods & mod_any_access, Bm & mod_any_access ); + + static constexpr decltype(D::pointer) pointer = D::pointer; + static constexpr decltype(D::name) name = D::name; + static constexpr unsigned modifiers = ( mods & ~mod_any_access ) | access | mod_inherited | hidden; + }; +}; + +#ifndef __cpp_inline_variables +template template constexpr decltype(D::pointer) update_modifiers::fn::pointer; +template template constexpr decltype(D::name) update_modifiers::fn::name; +template template constexpr unsigned update_modifiers::fn::modifiers; +#endif + +template struct gather_virtual_bases_impl; +template using gather_virtual_bases = typename gather_virtual_bases_impl::type; + +template struct gather_virtual_bases_impl +{ + using B = typename D::type; + static constexpr unsigned M = D::modifiers; + + using R1 = mp11::mp_transform>; + using R2 = mp11::mp_apply; + + using type = mp11::mp_if_c<(M & mod_virtual) != 0, mp11::mp_push_front, R2>; +}; + +template class L, class D1, class... D, class T, class V> struct describe_inherited_members2_impl, T, V> +{ + using B = typename D1::type; + static constexpr unsigned M = D1::modifiers; + + using R1 = mp11::mp_if_c<(M & mod_virtual) && mp11::mp_contains::value, L<>, describe_inherited_members>; + + using R2 = mp11::mp_transform_q, R1>; + + using V2 = mp11::mp_append>; + using R3 = describe_inherited_members2, T, V2>; + + using type = mp11::mp_append; +}; + +// describe_members + +template using describe_members = mp11::mp_eval_if_c<(M & mod_inherited) == 0, _describe_members, describe_inherited_members, T, mp11::mp_list<>>; + +// member_filter + +template struct member_filter +{ + template using fn = mp11::mp_bool< + (M & mod_any_access & T::modifiers) != 0 && + ( (M & mod_any_member) != 0 || (M & mod_static) == (T::modifiers & mod_static) ) && + ( (M & mod_any_member) != 0 || (M & mod_function) == (T::modifiers & mod_function) ) && + (M & mod_hidden) >= (T::modifiers & mod_hidden) + >; +}; + +// has_describe_members + +template struct has_describe_members: std::false_type +{ +}; + +template struct has_describe_members>>: std::true_type +{ +}; + +} // namespace detail + +template using describe_members = mp11::mp_copy_if_q, detail::member_filter>; + +template using has_describe_members = detail::has_describe_members; + +} // namespace describe +} // namespace boost + +#endif // !defined(BOOST_DESCRIBE_CXX11) + +#endif // #ifndef BOOST_DESCRIBE_DATA_MEMBERS_HPP_INCLUDED diff --git a/src/boost/boost/describe/modifiers.hpp b/src/boost/boost/describe/modifiers.hpp new file mode 100644 index 000000000..9a3d0be56 --- /dev/null +++ b/src/boost/boost/describe/modifiers.hpp @@ -0,0 +1,33 @@ +#ifndef BOOST_DESCRIBE_MODIFIERS_HPP_INCLUDED +#define BOOST_DESCRIBE_MODIFIERS_HPP_INCLUDED + +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include + +namespace boost +{ +namespace describe +{ + +enum modifiers +{ + mod_public = 1, + mod_protected = 2, + mod_private = 4, + mod_virtual = 8, + mod_static = 16, + mod_function = 32, + mod_any_member = 64, + mod_inherited = 128, + mod_hidden = 256 +}; + +BOOST_DESCRIBE_CONSTEXPR_OR_CONST modifiers mod_any_access = static_cast( mod_public | mod_protected | mod_private ); + +} // namespace describe +} // namespace boost + +#endif // #ifndef BOOST_DESCRIBE_MODIFIERS_HPP_INCLUDED diff --git a/src/boost/boost/detail/basic_pointerbuf.hpp b/src/boost/boost/detail/basic_pointerbuf.hpp index 4a59396ec..c6eae415d 100644 --- a/src/boost/boost/detail/basic_pointerbuf.hpp +++ b/src/boost/boost/detail/basic_pointerbuf.hpp @@ -55,9 +55,9 @@ class basic_pointerbuf : public BufferT { // Marking those functions with `inline` suppresses the warnings. // There must be no harm from marking virtual functions as inline: inline virtual // call can be inlined ONLY when the compiler knows the "exact class". - inline base_type* setbuf(char_type* s, streamsize n); - inline typename this_type::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which); - inline typename this_type::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which); + inline base_type* setbuf(char_type* s, streamsize n) BOOST_OVERRIDE; + inline typename this_type::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which) BOOST_OVERRIDE; + inline typename this_type::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which) BOOST_OVERRIDE; private: basic_pointerbuf& operator=(const basic_pointerbuf&); @@ -136,4 +136,3 @@ basic_pointerbuf::seekpos(pos_type sp, ::std::ios_base::openmode }} // namespace boost::detail #endif // BOOST_DETAIL_BASIC_POINTERBUF_HPP - diff --git a/src/boost/boost/detail/call_traits.hpp b/src/boost/boost/detail/call_traits.hpp index 830aa4bcb..9f663e2d4 100644 --- a/src/boost/boost/detail/call_traits.hpp +++ b/src/boost/boost/detail/call_traits.hpp @@ -100,7 +100,7 @@ struct call_traits typedef T& param_type; // hh removed const }; -#if BOOST_WORKAROUND( __BORLANDC__, < 0x5A0 ) +#if BOOST_WORKAROUND( BOOST_BORLANDC, < 0x5A0 ) // these are illegal specialisations; cv-qualifies applied to // references have no effect according to [8.3.2p1], // C++ Builder requires them though as it treats cv-qualified diff --git a/src/boost/boost/detail/container_fwd.hpp b/src/boost/boost/detail/container_fwd.hpp deleted file mode 100644 index 4a8e8ec42..000000000 --- a/src/boost/boost/detail/container_fwd.hpp +++ /dev/null @@ -1,157 +0,0 @@ - -// Copyright 2005-2011 Daniel James. -// 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) - -// Note: if you change this include guard, you also need to change -// container_fwd_compile_fail.cpp -#if !defined(BOOST_DETAIL_CONTAINER_FWD_HPP) -#define BOOST_DETAIL_CONTAINER_FWD_HPP - -#if defined(_MSC_VER) && \ - !defined(BOOST_DETAIL_TEST_CONFIG_ONLY) -# pragma once -#endif - -#include -#include - -//////////////////////////////////////////////////////////////////////////////// -// // -// Define BOOST_DETAIL_NO_CONTAINER_FWD if you don't want this header to // -// forward declare standard containers. // -// // -// BOOST_DETAIL_CONTAINER_FWD to make it foward declare containers even if it // -// normally doesn't. // -// // -// BOOST_DETAIL_NO_CONTAINER_FWD overrides BOOST_DETAIL_CONTAINER_FWD. // -// // -//////////////////////////////////////////////////////////////////////////////// - -#if !defined(BOOST_DETAIL_NO_CONTAINER_FWD) -# if defined(BOOST_DETAIL_CONTAINER_FWD) - // Force forward declarations. -# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) - // STLport -# define BOOST_DETAIL_NO_CONTAINER_FWD -# elif defined(__LIBCOMO__) - // Comeau STL: -# define BOOST_DETAIL_NO_CONTAINER_FWD -# elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER) - // Rogue Wave library: -# define BOOST_DETAIL_NO_CONTAINER_FWD -# elif defined(_LIBCPP_VERSION) - // libc++ -# define BOOST_DETAIL_NO_CONTAINER_FWD -# elif defined(__GLIBCPP__) || defined(__GLIBCXX__) - // GNU libstdc++ 3 - // - // Disable forwarding for all recent versions, as the library has a - // versioned namespace mode, and I don't know how to detect it. -# if __GLIBCXX__ >= 20070513 \ - || defined(_GLIBCXX_DEBUG) \ - || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -# define BOOST_DETAIL_NO_CONTAINER_FWD -# else -# if defined(__GLIBCXX__) && __GLIBCXX__ >= 20040530 -# define BOOST_CONTAINER_FWD_COMPLEX_STRUCT -# endif -# endif -# elif defined(__STL_CONFIG_H) - // generic SGI STL - // - // Forward declaration seems to be okay, but it has a couple of odd - // implementations. -# define BOOST_CONTAINER_FWD_BAD_BITSET -# if !defined(__STL_NON_TYPE_TMPL_PARAM_BUG) -# define BOOST_CONTAINER_FWD_BAD_DEQUE -# endif -# elif defined(__MSL_CPP__) - // MSL standard lib: -# define BOOST_DETAIL_NO_CONTAINER_FWD -# elif defined(__IBMCPP__) - // The default VACPP std lib, forward declaration seems to be fine. -# elif defined(MSIPL_COMPILE_H) - // Modena C++ standard library -# define BOOST_DETAIL_NO_CONTAINER_FWD -# elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) - // Dinkumware Library (this has to appear after any possible replacement - // libraries) -# else -# define BOOST_DETAIL_NO_CONTAINER_FWD -# endif -#endif - -#if !defined(BOOST_DETAIL_TEST_CONFIG_ONLY) - -#if defined(BOOST_DETAIL_NO_CONTAINER_FWD) && \ - !defined(BOOST_DETAIL_TEST_FORCE_CONTAINER_FWD) - -#include -#include -#include -#include -#include -#include -#include -#include - -#else - -#include - -#if defined(BOOST_CONTAINER_FWD_BAD_DEQUE) -#include -#endif - -#if defined(BOOST_CONTAINER_FWD_BAD_BITSET) -#include -#endif - -#if defined(BOOST_MSVC) -#pragma warning(push) -#pragma warning(disable:4099) // struct/class mismatch in fwd declarations -#endif - -namespace std -{ - template class allocator; - template class basic_string; - - template struct char_traits; - -#if defined(BOOST_CONTAINER_FWD_COMPLEX_STRUCT) - template struct complex; -#else - template class complex; -#endif - -#if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE) - template class deque; -#endif - - template class list; - template class vector; - template class map; - template - class multimap; - template class set; - template class multiset; - -#if !defined(BOOST_CONTAINER_FWD_BAD_BITSET) - template class bitset; -#endif - template struct pair; -} - -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - -#endif // BOOST_DETAIL_NO_CONTAINER_FWD && - // !defined(BOOST_DETAIL_TEST_FORCE_CONTAINER_FWD) - -#endif // BOOST_DETAIL_TEST_CONFIG_ONLY - -#endif diff --git a/src/boost/boost/detail/fenv.hpp b/src/boost/boost/detail/fenv.hpp deleted file mode 100644 index c9b662bfd..000000000 --- a/src/boost/boost/detail/fenv.hpp +++ /dev/null @@ -1,101 +0,0 @@ -/*============================================================================= - Copyright (c) 2010 Bryce Lelbach - - 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) -=============================================================================*/ - -#include - -#if defined(BOOST_NO_FENV_H) - #error This platform does not have a floating point environment -#endif - -#if !defined(BOOST_DETAIL_FENV_HPP) -#define BOOST_DETAIL_FENV_HPP - -/* If we're using clang + glibc, we have to get hacky. - * See http://llvm.org/bugs/show_bug.cgi?id=6907 */ -#if defined(__clang__) && (__clang_major__ < 3) && \ - defined(__GNU_LIBRARY__) && /* up to version 5 */ \ - defined(__GLIBC__) && /* version 6 + */ \ - !defined(_FENV_H) - #define _FENV_H - - #include - #include - - extern "C" { - extern int fegetexceptflag (fexcept_t*, int) __THROW; - extern int fesetexceptflag (__const fexcept_t*, int) __THROW; - extern int feclearexcept (int) __THROW; - extern int feraiseexcept (int) __THROW; - extern int fetestexcept (int) __THROW; - extern int fegetround (void) __THROW; - extern int fesetround (int) __THROW; - extern int fegetenv (fenv_t*) __THROW; - extern int fesetenv (__const fenv_t*) __THROW; - extern int feupdateenv (__const fenv_t*) __THROW; - extern int feholdexcept (fenv_t*) __THROW; - - #ifdef __USE_GNU - extern int feenableexcept (int) __THROW; - extern int fedisableexcept (int) __THROW; - extern int fegetexcept (void) __THROW; - #endif - } - - namespace std { namespace tr1 { - using ::fenv_t; - using ::fexcept_t; - using ::fegetexceptflag; - using ::fesetexceptflag; - using ::feclearexcept; - using ::feraiseexcept; - using ::fetestexcept; - using ::fegetround; - using ::fesetround; - using ::fegetenv; - using ::fesetenv; - using ::feupdateenv; - using ::feholdexcept; - } } - -#elif defined(__MINGW32__) && defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 - - // MinGW (32-bit) has a bug in mingw32/bits/c++config.h, it does not define _GLIBCXX_HAVE_FENV_H, - // which prevents the C fenv.h header contents to be included in the C++ wrapper header fenv.h. This is at least - // the case with gcc 4.8.1 packages tested so far, up to 4.8.1-4. Note that there is no issue with - // MinGW-w64. - // To work around the bug we avoid including the C++ wrapper header and include the C header directly - // and import all relevant symbols into std:: ourselves. - - #include <../include/fenv.h> - - namespace std { - using ::fenv_t; - using ::fexcept_t; - using ::fegetexceptflag; - using ::fesetexceptflag; - using ::feclearexcept; - using ::feraiseexcept; - using ::fetestexcept; - using ::fegetround; - using ::fesetround; - using ::fegetenv; - using ::fesetenv; - using ::feupdateenv; - using ::feholdexcept; - } - -#else /* if we're not using GNU's C stdlib, fenv.h should work with clang */ - - #if defined(__SUNPRO_CC) /* lol suncc */ - #include - #endif - - #include - -#endif - -#endif /* BOOST_DETAIL_FENV_HPP */ diff --git a/src/boost/boost/detail/interlocked.hpp b/src/boost/boost/detail/interlocked.hpp index 908d52f1d..978082e11 100644 --- a/src/boost/boost/detail/interlocked.hpp +++ b/src/boost/boost/detail/interlocked.hpp @@ -5,7 +5,7 @@ // boost/detail/interlocked.hpp // // Copyright 2005 Peter Dimov -// Copyright 2018 Andrey Semashev +// Copyright 2018, 2019 Andrey Semashev // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -31,9 +31,10 @@ // MinGW-w64 provides intrin.h for both 32 and 64-bit targets. # define BOOST_INTERLOCKED_HAS_INTRIN_H -#elif defined( __CYGWIN__ ) && defined( __LP64__ ) +#elif defined( __CYGWIN__ ) -// We have to use intrin.h on Cygwin 64 +// Cygwin and Cygwin64 provide intrin.h. On Cygwin64 we have to use intrin.h because it's an LP64 target, +// where long is 64-bit and therefore _Interlocked* functions have different signatures. # define BOOST_INTERLOCKED_HAS_INTRIN_H // Intel C++ on Windows on VC10+ stdlib @@ -48,39 +49,62 @@ #endif +#if !defined(__LP64__) +#define BOOST_INTERLOCKED_LONG32 long +#else +#define BOOST_INTERLOCKED_LONG32 int +#endif + #if defined( BOOST_USE_WINDOWS_H ) # include -# define BOOST_INTERLOCKED_INCREMENT InterlockedIncrement -# define BOOST_INTERLOCKED_DECREMENT InterlockedDecrement -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE InterlockedCompareExchange -# define BOOST_INTERLOCKED_EXCHANGE InterlockedExchange -# define BOOST_INTERLOCKED_EXCHANGE_ADD InterlockedExchangeAdd -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER InterlockedCompareExchangePointer -# define BOOST_INTERLOCKED_EXCHANGE_POINTER InterlockedExchangePointer +# define BOOST_INTERLOCKED_INCREMENT(dest) \ + InterlockedIncrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_DECREMENT(dest) \ + InterlockedDecrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) \ + InterlockedCompareExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange), (BOOST_INTERLOCKED_LONG32)(compare)) +# define BOOST_INTERLOCKED_EXCHANGE(dest, exchange) \ + InterlockedExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange)) +# define BOOST_INTERLOCKED_EXCHANGE_ADD(dest, add) \ + InterlockedExchangeAdd((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(add)) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) \ + InterlockedCompareExchangePointer((void**)(dest), (void*)(exchange), (void*)(compare)) +# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) \ + InterlockedExchangePointer((void**)(dest), (void*)(exchange)) #elif defined( BOOST_USE_INTRIN_H ) || defined( BOOST_INTERLOCKED_HAS_INTRIN_H ) #include -# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement -# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange -# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange -# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd - -# if defined(_M_IA64) || defined(_M_AMD64) || defined(__x86_64__) || defined(__x86_64) - -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer -# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer +# define BOOST_INTERLOCKED_INCREMENT(dest) \ + _InterlockedIncrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_DECREMENT(dest) \ + _InterlockedDecrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) \ + _InterlockedCompareExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange), (BOOST_INTERLOCKED_LONG32)(compare)) +# define BOOST_INTERLOCKED_EXCHANGE(dest, exchange) \ + _InterlockedExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange)) +# define BOOST_INTERLOCKED_EXCHANGE_ADD(dest, add) \ + _InterlockedExchangeAdd((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(add)) + +// Note: Though MSVC-12 defines _InterlockedCompareExchangePointer and _InterlockedExchangePointer in intrin.h, the latter +// is actually broken as it conflicts with winnt.h from Windows SDK 8.1. +# if (defined(_MSC_VER) && _MSC_VER >= 1900) || \ + (defined(_M_IA64) || defined(_M_AMD64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_ARM64)) + +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) \ + _InterlockedCompareExchangePointer((void**)(dest), (void*)(exchange), (void*)(compare)) +# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) \ + _InterlockedExchangePointer((void**)(dest), (void*)(exchange)) # else -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \ - ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare))) -# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \ - ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange))) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) \ + ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange), (BOOST_INTERLOCKED_LONG32)(compare))) +# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) \ + ((void*)BOOST_INTERLOCKED_EXCHANGE((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange))) # endif @@ -88,40 +112,50 @@ #if _WIN32_WCE >= 0x600 -extern "C" long __cdecl _InterlockedIncrement( long volatile * ); -extern "C" long __cdecl _InterlockedDecrement( long volatile * ); -extern "C" long __cdecl _InterlockedCompareExchange( long volatile *, long, long ); -extern "C" long __cdecl _InterlockedExchange( long volatile *, long ); -extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long ); - -# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement -# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange -# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange -# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd +extern "C" BOOST_INTERLOCKED_LONG32 __cdecl _InterlockedIncrement( BOOST_INTERLOCKED_LONG32 volatile * ); +extern "C" BOOST_INTERLOCKED_LONG32 __cdecl _InterlockedDecrement( BOOST_INTERLOCKED_LONG32 volatile * ); +extern "C" BOOST_INTERLOCKED_LONG32 __cdecl _InterlockedCompareExchange( BOOST_INTERLOCKED_LONG32 volatile *, BOOST_INTERLOCKED_LONG32, BOOST_INTERLOCKED_LONG32 ); +extern "C" BOOST_INTERLOCKED_LONG32 __cdecl _InterlockedExchange( BOOST_INTERLOCKED_LONG32 volatile *, BOOST_INTERLOCKED_LONG32 ); +extern "C" BOOST_INTERLOCKED_LONG32 __cdecl _InterlockedExchangeAdd( BOOST_INTERLOCKED_LONG32 volatile *, BOOST_INTERLOCKED_LONG32 ); + +# define BOOST_INTERLOCKED_INCREMENT(dest) \ + _InterlockedIncrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_DECREMENT(dest) \ + _InterlockedDecrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) \ + _InterlockedCompareExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange), (BOOST_INTERLOCKED_LONG32)(compare)) +# define BOOST_INTERLOCKED_EXCHANGE(dest, exchange) \ + _InterlockedExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange)) +# define BOOST_INTERLOCKED_EXCHANGE_ADD(dest, add) \ + _InterlockedExchangeAdd((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(add)) #else // _WIN32_WCE >= 0x600 // under Windows CE we still have old-style Interlocked* functions -extern "C" long __cdecl InterlockedIncrement( long * ); -extern "C" long __cdecl InterlockedDecrement( long * ); -extern "C" long __cdecl InterlockedCompareExchange( long *, long, long ); -extern "C" long __cdecl InterlockedExchange( long *, long ); -extern "C" long __cdecl InterlockedExchangeAdd( long *, long ); - -# define BOOST_INTERLOCKED_INCREMENT InterlockedIncrement -# define BOOST_INTERLOCKED_DECREMENT InterlockedDecrement -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE InterlockedCompareExchange -# define BOOST_INTERLOCKED_EXCHANGE InterlockedExchange -# define BOOST_INTERLOCKED_EXCHANGE_ADD InterlockedExchangeAdd +extern "C" BOOST_INTERLOCKED_LONG32 __cdecl InterlockedIncrement( BOOST_INTERLOCKED_LONG32 * ); +extern "C" BOOST_INTERLOCKED_LONG32 __cdecl InterlockedDecrement( BOOST_INTERLOCKED_LONG32 * ); +extern "C" BOOST_INTERLOCKED_LONG32 __cdecl InterlockedCompareExchange( BOOST_INTERLOCKED_LONG32 *, BOOST_INTERLOCKED_LONG32, BOOST_INTERLOCKED_LONG32 ); +extern "C" BOOST_INTERLOCKED_LONG32 __cdecl InterlockedExchange( BOOST_INTERLOCKED_LONG32 *, BOOST_INTERLOCKED_LONG32 ); +extern "C" BOOST_INTERLOCKED_LONG32 __cdecl InterlockedExchangeAdd( BOOST_INTERLOCKED_LONG32 *, BOOST_INTERLOCKED_LONG32 ); + +# define BOOST_INTERLOCKED_INCREMENT(dest) \ + InterlockedIncrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_DECREMENT(dest) \ + InterlockedDecrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) \ + InterlockedCompareExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange), (BOOST_INTERLOCKED_LONG32)(compare)) +# define BOOST_INTERLOCKED_EXCHANGE(dest, exchange) \ + InterlockedExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange)) +# define BOOST_INTERLOCKED_EXCHANGE_ADD(dest, add) \ + InterlockedExchangeAdd((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(add)) #endif // _WIN32_WCE >= 0x600 -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \ - ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long*)(dest),(long)(exchange),(long)(compare))) -# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \ - ((void*)BOOST_INTERLOCKED_EXCHANGE((long*)(dest),(long)(exchange))) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) \ + ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange), (BOOST_INTERLOCKED_LONG32)(compare))) +# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) \ + ((void*)BOOST_INTERLOCKED_EXCHANGE((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange))) #elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN ) @@ -131,13 +165,11 @@ extern "C" long __cdecl InterlockedExchangeAdd( long *, long ); # define BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL __cdecl # endif -extern "C" long BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedIncrement( long volatile * ); -extern "C" long BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedDecrement( long volatile * ); -extern "C" long BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedCompareExchange( long volatile *, long, long ); -extern "C" long BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedExchange( long volatile *, long ); -extern "C" long BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedExchangeAdd( long volatile *, long ); - -# undef BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL +extern "C" BOOST_INTERLOCKED_LONG32 BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedIncrement( BOOST_INTERLOCKED_LONG32 volatile * ); +extern "C" BOOST_INTERLOCKED_LONG32 BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedDecrement( BOOST_INTERLOCKED_LONG32 volatile * ); +extern "C" BOOST_INTERLOCKED_LONG32 BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedCompareExchange( BOOST_INTERLOCKED_LONG32 volatile *, BOOST_INTERLOCKED_LONG32, BOOST_INTERLOCKED_LONG32 ); +extern "C" BOOST_INTERLOCKED_LONG32 BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedExchange( BOOST_INTERLOCKED_LONG32 volatile *, BOOST_INTERLOCKED_LONG32 ); +extern "C" BOOST_INTERLOCKED_LONG32 BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedExchangeAdd( BOOST_INTERLOCKED_LONG32 volatile *, BOOST_INTERLOCKED_LONG32 ); # if defined( BOOST_MSVC ) && BOOST_MSVC >= 1310 # pragma intrinsic( _InterlockedIncrement ) @@ -147,30 +179,44 @@ extern "C" long BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedExchangeAdd( # pragma intrinsic( _InterlockedExchangeAdd ) # endif -# if defined(_M_IA64) || defined(_M_AMD64) +# if defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM64) + +extern "C" void* BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedCompareExchangePointer( void* volatile *, void*, void* ); +extern "C" void* BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL _InterlockedExchangePointer( void* volatile *, void* ); -extern "C" void* __cdecl _InterlockedCompareExchangePointer( void* volatile *, void*, void* ); -extern "C" void* __cdecl _InterlockedExchangePointer( void* volatile *, void* ); +# if defined( BOOST_MSVC ) && BOOST_MSVC >= 1310 +# pragma intrinsic( _InterlockedCompareExchangePointer ) +# pragma intrinsic( _InterlockedExchangePointer ) +# endif -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer -# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) \ + _InterlockedCompareExchangePointer((void**)(dest), (void*)(exchange), (void*)(compare)) +# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) \ + _InterlockedExchangePointer((void**)(dest), (void*)(exchange)) # else -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \ - ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare))) -# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \ - ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange))) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) \ + ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange), (BOOST_INTERLOCKED_LONG32)(compare))) +# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) \ + ((void*)BOOST_INTERLOCKED_EXCHANGE((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange))) # endif -# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement -# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange -# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange -# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd +# undef BOOST_INTERLOCKED_CLRCALL_PURE_OR_CDECL + +# define BOOST_INTERLOCKED_INCREMENT(dest) \ + _InterlockedIncrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_DECREMENT(dest) \ + _InterlockedDecrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) \ + _InterlockedCompareExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange), (BOOST_INTERLOCKED_LONG32)(compare)) +# define BOOST_INTERLOCKED_EXCHANGE(dest, exchange) \ + _InterlockedExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange)) +# define BOOST_INTERLOCKED_EXCHANGE_ADD(dest, add) \ + _InterlockedExchangeAdd((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(add)) -#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ ) +#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) #define BOOST_INTERLOCKED_IMPORT __declspec(dllimport) @@ -180,13 +226,13 @@ namespace boost namespace detail { -extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedIncrement( long volatile * ); -extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedDecrement( long volatile * ); -extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedCompareExchange( long volatile *, long, long ); -extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchange( long volatile *, long ); -extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchangeAdd( long volatile *, long ); +extern "C" BOOST_INTERLOCKED_IMPORT BOOST_INTERLOCKED_LONG32 __stdcall InterlockedIncrement( BOOST_INTERLOCKED_LONG32 volatile * ); +extern "C" BOOST_INTERLOCKED_IMPORT BOOST_INTERLOCKED_LONG32 __stdcall InterlockedDecrement( BOOST_INTERLOCKED_LONG32 volatile * ); +extern "C" BOOST_INTERLOCKED_IMPORT BOOST_INTERLOCKED_LONG32 __stdcall InterlockedCompareExchange( BOOST_INTERLOCKED_LONG32 volatile *, BOOST_INTERLOCKED_LONG32, BOOST_INTERLOCKED_LONG32 ); +extern "C" BOOST_INTERLOCKED_IMPORT BOOST_INTERLOCKED_LONG32 __stdcall InterlockedExchange( BOOST_INTERLOCKED_LONG32 volatile *, BOOST_INTERLOCKED_LONG32 ); +extern "C" BOOST_INTERLOCKED_IMPORT BOOST_INTERLOCKED_LONG32 __stdcall InterlockedExchangeAdd( BOOST_INTERLOCKED_LONG32 volatile *, BOOST_INTERLOCKED_LONG32 ); -# if defined(_M_IA64) || defined(_M_AMD64) +# if defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM64) extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedCompareExchangePointer( void* volatile *, void*, void* ); extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedExchangePointer( void* volatile *, void* ); # endif @@ -195,20 +241,27 @@ extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedExchangePointer( } // namespace boost -# define BOOST_INTERLOCKED_INCREMENT ::boost::detail::InterlockedIncrement -# define BOOST_INTERLOCKED_DECREMENT ::boost::detail::InterlockedDecrement -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE ::boost::detail::InterlockedCompareExchange -# define BOOST_INTERLOCKED_EXCHANGE ::boost::detail::InterlockedExchange -# define BOOST_INTERLOCKED_EXCHANGE_ADD ::boost::detail::InterlockedExchangeAdd - -# if defined(_M_IA64) || defined(_M_AMD64) -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER ::boost::detail::InterlockedCompareExchangePointer -# define BOOST_INTERLOCKED_EXCHANGE_POINTER ::boost::detail::InterlockedExchangePointer +# define BOOST_INTERLOCKED_INCREMENT(dest) \ + ::boost::detail::InterlockedIncrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_DECREMENT(dest) \ + ::boost::detail::InterlockedDecrement((BOOST_INTERLOCKED_LONG32*)(dest)) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) \ + ::boost::detail::InterlockedCompareExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange), (BOOST_INTERLOCKED_LONG32)(compare)) +# define BOOST_INTERLOCKED_EXCHANGE(dest, exchange) \ + ::boost::detail::InterlockedExchange((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(exchange)) +# define BOOST_INTERLOCKED_EXCHANGE_ADD(dest, add) \ + ::boost::detail::InterlockedExchangeAdd((BOOST_INTERLOCKED_LONG32*)(dest), (BOOST_INTERLOCKED_LONG32)(add)) + +# if defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM64) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) \ + ::boost::detail::InterlockedCompareExchangePointer((void**)(dest), (void*)(exchange), (void*)(compare)) +# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) \ + ::boost::detail::InterlockedExchangePointer((void**)(dest), (void*)(exchange)) # else -# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \ - ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare))) -# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \ - ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange))) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) \ + ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((BOOST_INTERLOCKED_LONG32 volatile*)(dest),(BOOST_INTERLOCKED_LONG32)(exchange),(BOOST_INTERLOCKED_LONG32)(compare))) +# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) \ + ((void*)BOOST_INTERLOCKED_EXCHANGE((BOOST_INTERLOCKED_LONG32*)(dest),(BOOST_INTERLOCKED_LONG32)(exchange))) # endif #else diff --git a/src/boost/boost/detail/iterator.hpp b/src/boost/boost/detail/iterator.hpp deleted file mode 100644 index dc748fe52..000000000 --- a/src/boost/boost/detail/iterator.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// (C) Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef ITERATOR_DWA122600_HPP_ -#define ITERATOR_DWA122600_HPP_ - -// This header is obsolete and will be deprecated. - -#include -#if defined(__SUNPRO_CC) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) -#include -#endif - -namespace boost -{ - -namespace detail -{ - -using std::iterator_traits; -using std::distance; - -#if defined(__SUNPRO_CC) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) -// std::distance from stlport with Oracle compiler 12.4 and 12.5 fails to deduce template parameters -// when one of the arguments is an array and the other one is a pointer. -template< typename T, std::size_t N > -inline typename std::iterator_traits< T* >::difference_type distance(T (&left)[N], T* right) -{ - return std::distance(static_cast< T* >(left), right); -} -#endif - -} // namespace detail - -} // namespace boost - -#endif // ITERATOR_DWA122600_HPP_ diff --git a/src/boost/boost/detail/scoped_enum_emulation.hpp b/src/boost/boost/detail/scoped_enum_emulation.hpp deleted file mode 100644 index 6ed162ad6..000000000 --- a/src/boost/boost/detail/scoped_enum_emulation.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2014 Andrey Semashev - * - * Distributed under the Boost Software License, Version 1.0. (See - * accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -#ifndef BOOST_DETAIL_SCOPED_ENUM_EMULATION_HPP -#define BOOST_DETAIL_SCOPED_ENUM_EMULATION_HPP - -// The header file at this path is deprecated; -// use boost/core/scoped_enum.hpp instead. - -#include - -#endif diff --git a/src/boost/boost/detail/sp_typeinfo.hpp b/src/boost/boost/detail/sp_typeinfo.hpp deleted file mode 100644 index 09fec4ae1..000000000 --- a/src/boost/boost/detail/sp_typeinfo.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED -#define BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED - -// MS compatible compilers support #pragma once - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -// detail/sp_typeinfo.hpp -// -// Deprecated, please use boost/core/typeinfo.hpp -// -// Copyright 2007 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) - -#include - -namespace boost -{ - -namespace detail -{ - -typedef boost::core::typeinfo sp_typeinfo; - -} // namespace detail - -} // namespace boost - -#define BOOST_SP_TYPEID(T) BOOST_CORE_TYPEID(T) - -#endif // #ifndef BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED diff --git a/src/boost/boost/detail/utf8_codecvt_facet.hpp b/src/boost/boost/detail/utf8_codecvt_facet.hpp index a9b009ba3..619d65337 100644 --- a/src/boost/boost/detail/utf8_codecvt_facet.hpp +++ b/src/boost/boost/detail/utf8_codecvt_facet.hpp @@ -14,7 +14,7 @@ /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // utf8_codecvt_facet.hpp -// This header defines class utf8_codecvt_facet, derived from +// This header defines class utf8_codecvt_facet, derived from // std::codecvt, which can be used to convert utf8 data in // files into wchar_t strings in the application. // @@ -23,10 +23,10 @@ // we want to avoid code duplication. It would be possible to create utf8 // library, but: // - this requires review process first -// - in the case, when linking the a library which uses utf8 +// - in the case, when linking the a library which uses utf8 // (say 'program_options'), user should also link to the utf8 library. -// This seems inconvenient, and asking a user to link to an unrevieved -// library is strange. +// This seems inconvenient, and asking a user to link to an unrevieved +// library is strange. // Until the above points are fixed, a library which wants to use utf8 must: // - include this header in one of it's headers or sources // - include the corresponding boost/detail/utf8_codecvt_facet.ipp file in one @@ -39,14 +39,14 @@ // symbols. // // For example, program_options library might contain: -// #define BOOST_UTF8_BEGIN_NAMESPACE +// #define BOOST_UTF8_BEGIN_NAMESPACE // namespace boost { namespace program_options { // #define BOOST_UTF8_END_NAMESPACE }} // #define BOOST_UTF8_DECL BOOST_PROGRAM_OPTIONS_DECL // #include // // Essentially, each library will have its own copy of utf8 code, in -// different namespaces. +// different namespaces. // Note:(Robert Ramey). I have made the following alterations in the original // code. @@ -67,7 +67,7 @@ // use two template parameters // // utf8_codecvt_facet -// This is an implementation of a std::codecvt facet for translating +// This is an implementation of a std::codecvt facet for translating // from UTF-8 externally to UCS-4. Note that this is not tied to // any specific types in order to allow customization on platforms // where wchar_t is not big enough. @@ -109,28 +109,29 @@ BOOST_UTF8_BEGIN_NAMESPACE #define BOOST_UTF8_DECL #endif -struct BOOST_UTF8_DECL utf8_codecvt_facet : - public std::codecvt +struct BOOST_SYMBOL_VISIBLE utf8_codecvt_facet : + public std::codecvt { public: - explicit utf8_codecvt_facet(std::size_t no_locale_manage=0); - virtual ~utf8_codecvt_facet(); + BOOST_UTF8_DECL explicit utf8_codecvt_facet(std::size_t no_locale_manage = 0); + BOOST_UTF8_DECL virtual ~utf8_codecvt_facet(); + protected: - virtual std::codecvt_base::result do_in( - std::mbstate_t& state, + BOOST_UTF8_DECL virtual std::codecvt_base::result do_in( + std::mbstate_t& state, const char * from, - const char * from_end, + const char * from_end, const char * & from_next, - wchar_t * to, - wchar_t * to_end, - wchar_t*& to_next + wchar_t * to, + wchar_t * to_end, + wchar_t * & to_next ) const; - virtual std::codecvt_base::result do_out( + BOOST_UTF8_DECL virtual std::codecvt_base::result do_out( std::mbstate_t & state, const wchar_t * from, const wchar_t * from_end, - const wchar_t* & from_next, + const wchar_t * & from_next, char * to, char * to_end, char * & to_next @@ -140,7 +141,7 @@ struct BOOST_UTF8_DECL utf8_codecvt_facet : return (octet_1 < 0x80|| 0xbf< octet_1); } - bool invalid_leading_octet(unsigned char octet_1) const { + bool invalid_leading_octet(unsigned char octet_1) const { return (0x7f < octet_1 && octet_1 < 0xc0) || (octet_1 > 0xfd); } @@ -150,11 +151,11 @@ struct BOOST_UTF8_DECL utf8_codecvt_facet : return get_octet_count(lead_octet) - 1; } - static unsigned int get_octet_count(unsigned char lead_octet); + BOOST_UTF8_DECL static unsigned int get_octet_count(unsigned char lead_octet); // How many "continuing octets" will be needed for this word // == total octets - 1. - int get_cont_octet_out_count(wchar_t word) const ; + BOOST_UTF8_DECL static int get_cont_octet_out_count(wchar_t word); virtual bool do_always_noconv() const BOOST_NOEXCEPT_OR_NOTHROW { return false; @@ -162,7 +163,7 @@ struct BOOST_UTF8_DECL utf8_codecvt_facet : // UTF-8 isn't really stateful since we rewind on partial conversions virtual std::codecvt_base::result do_unshift( - std::mbstate_t&, + std::mbstate_t &, char * from, char * /*to*/, char * & next @@ -178,10 +179,10 @@ struct BOOST_UTF8_DECL utf8_codecvt_facet : // How many char objects can I process to get <= max_limit // wchar_t objects? - virtual int do_length( + BOOST_UTF8_DECL virtual int do_length( std::mbstate_t &, const char * from, - const char * from_end, + const char * from_end, std::size_t max_limit ) const #if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) @@ -193,7 +194,7 @@ struct BOOST_UTF8_DECL utf8_codecvt_facet : virtual int do_length( const std::mbstate_t & s, const char * from, - const char * from_end, + const char * from_end, std::size_t max_limit ) const #if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) diff --git a/src/boost/boost/detail/utf8_codecvt_facet.ipp b/src/boost/boost/detail/utf8_codecvt_facet.ipp index 27be6cc33..8ccf4308e 100644 --- a/src/boost/boost/detail/utf8_codecvt_facet.ipp +++ b/src/boost/boost/detail/utf8_codecvt_facet.ipp @@ -2,7 +2,7 @@ // utf8_codecvt_facet.ipp // Copyright (c) 2001 Ronald Garcia, Indiana University (garcia@osl.iu.edu) -// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu). +// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu). // Use, modification and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -18,7 +18,7 @@ #include #include -// If we don't have wstring, then Unicode support +// If we don't have wstring, then Unicode support // is not available anyway, so we don't need to even // compiler this file. This also fixes the problem // with mingw, which can compile this file, but will @@ -30,108 +30,117 @@ BOOST_UTF8_BEGIN_NAMESPACE /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // implementation for wchar_t -utf8_codecvt_facet::utf8_codecvt_facet( +namespace detail { + +inline const wchar_t * get_octet1_modifier_table() BOOST_NOEXCEPT +{ + static const wchar_t octet1_modifier_table[] = { + 0x00, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc + }; + return octet1_modifier_table; +} + +} // namespace detail + + +BOOST_UTF8_DECL utf8_codecvt_facet::utf8_codecvt_facet( std::size_t no_locale_manage ) : std::codecvt(no_locale_manage) {} -utf8_codecvt_facet::~utf8_codecvt_facet() +BOOST_UTF8_DECL utf8_codecvt_facet::~utf8_codecvt_facet() {} // Translate incoming UTF-8 into UCS-4 -std::codecvt_base::result utf8_codecvt_facet::do_in( - std::mbstate_t& /*state*/, +BOOST_UTF8_DECL std::codecvt_base::result utf8_codecvt_facet::do_in( + std::mbstate_t& /*state*/, const char * from, - const char * from_end, + const char * from_end, const char * & from_next, - wchar_t * to, - wchar_t * to_end, + wchar_t * to, + wchar_t * to_end, wchar_t * & to_next ) const { - // Basic algorithm: The first octet determines how many - // octets total make up the UCS-4 character. The remaining + // Basic algorithm: The first octet determines how many + // octets total make up the UCS-4 character. The remaining // "continuing octets" all begin with "10". To convert, subtract // the amount that specifies the number of octets from the first - // octet. Subtract 0x80 (1000 0000) from each continuing octet, - // then mash the whole lot together. Note that each continuing + // octet. Subtract 0x80 (1000 0000) from each continuing octet, + // then mash the whole lot together. Note that each continuing // octet only uses 6 bits as unique values, so only shift by // multiples of 6 to combine. + const wchar_t * const octet1_modifier_table = detail::get_octet1_modifier_table(); while (from != from_end && to != to_end) { - // Error checking on the first octet - if (invalid_leading_octet(*from)){ + // Error checking on the first octet + if (invalid_leading_octet(*from)) { from_next = from; to_next = to; return std::codecvt_base::error; } - // The first octet is adjusted by a value dependent upon - // the number of "continuing octets" encoding the character - const int cont_octet_count = get_cont_octet_count(*from); - const wchar_t octet1_modifier_table[] = { - 0x00, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc - }; + // The first octet is adjusted by a value dependent upon + // the number of "continuing octets" encoding the character + const int cont_octet_count = get_cont_octet_count(*from); // The unsigned char conversion is necessary in case char is - // signed (I learned this the hard way) - wchar_t ucs_result = + // signed (I learned this the hard way) + wchar_t ucs_result = (unsigned char)(*from++) - octet1_modifier_table[cont_octet_count]; - // Invariants : - // 1) At the start of the loop, 'i' continuing characters have been - // processed - // 2) *from points to the next continuing character to be processed. - int i = 0; - while(i != cont_octet_count && from != from_end) { + // Invariants: + // 1) At the start of the loop, 'i' continuing characters have been + // processed + // 2) *from points to the next continuing character to be processed. + int i = 0; + while (i != cont_octet_count && from != from_end) { // Error checking on continuing characters if (invalid_continuing_octet(*from)) { - from_next = from; - to_next = to; + from_next = from; + to_next = to; return std::codecvt_base::error; } - ucs_result *= (1 << 6); + ucs_result *= (1 << 6); - // each continuing character has an extra (10xxxxxx)b attached to + // each continuing character has an extra (10xxxxxx)b attached to // it that must be removed. ucs_result += (unsigned char)(*from++) - 0x80; ++i; } - // If the buffer ends with an incomplete unicode character... - if (from == from_end && i != cont_octet_count) { + // If the buffer ends with an incomplete unicode character... + if (from == from_end && i != cont_octet_count) { // rewind "from" to before the current character translation - from_next = from - (i+1); + from_next = from - (i + 1); to_next = to; return std::codecvt_base::partial; } - *to++ = ucs_result; + *to++ = ucs_result; } from_next = from; to_next = to; // Were we done converting or did we run out of destination space? - if(from == from_end) return std::codecvt_base::ok; - else return std::codecvt_base::partial; + if (from == from_end) + return std::codecvt_base::ok; + else + return std::codecvt_base::partial; } -std::codecvt_base::result utf8_codecvt_facet::do_out( - std::mbstate_t& /*state*/, - const wchar_t * from, - const wchar_t * from_end, +BOOST_UTF8_DECL std::codecvt_base::result utf8_codecvt_facet::do_out( + std::mbstate_t& /*state*/, + const wchar_t * from, + const wchar_t * from_end, const wchar_t * & from_next, - char * to, - char * to_end, + char * to, + char * to_end, char * & to_next ) const { - // RG - consider merging this table with the other one - const wchar_t octet1_modifier_table[] = { - 0x00, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc - }; - + const wchar_t * const octet1_modifier_table = detail::get_octet1_modifier_table(); wchar_t max_wchar = (std::numeric_limits::max)(); while (from != from_end && to != to_end) { @@ -144,75 +153,69 @@ std::codecvt_base::result utf8_codecvt_facet::do_out( int cont_octet_count = get_cont_octet_out_count(*from); - // RG - comment this formula better - int shift_exponent = (cont_octet_count) * 6; + // RG - comment this formula better + int shift_exponent = cont_octet_count * 6; // Process the first character *to++ = static_cast(octet1_modifier_table[cont_octet_count] + (unsigned char)(*from / (1 << shift_exponent))); - // Process the continuation characters - // Invariants: At the start of the loop: - // 1) 'i' continuing octets have been generated - // 2) '*to' points to the next location to place an octet - // 3) shift_exponent is 6 more than needed for the next octet - int i = 0; - while (i != cont_octet_count && to != to_end) { + // Process the continuation characters + // Invariants: At the start of the loop: + // 1) 'i' continuing octets have been generated + // 2) '*to' points to the next location to place an octet + // 3) shift_exponent is 6 more than needed for the next octet + int i = 0; + while (i != cont_octet_count && to != to_end) { shift_exponent -= 6; *to++ = static_cast(0x80 + ((*from / (1 << shift_exponent)) % (1 << 6))); ++i; } - // If we filled up the out buffer before encoding the character - if(to == to_end && i != cont_octet_count) { + // If we filled up the out buffer before encoding the character + if (to == to_end && i != cont_octet_count) { from_next = from; - to_next = to - (i+1); + to_next = to - (i + 1); return std::codecvt_base::partial; } ++from; } from_next = from; to_next = to; + // Were we done or did we run out of destination space - if(from == from_end) return std::codecvt_base::ok; - else return std::codecvt_base::partial; + if (from == from_end) + return std::codecvt_base::ok; + else + return std::codecvt_base::partial; } // How many char objects can I process to get <= max_limit // wchar_t objects? -int utf8_codecvt_facet::do_length( +BOOST_UTF8_DECL int utf8_codecvt_facet::do_length( std::mbstate_t &, const char * from, - const char * from_end, + const char * from_end, std::size_t max_limit ) const #if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) throw() #endif -{ - // RG - this code is confusing! I need a better way to express it. - // and test cases. - - // Invariants: - // 1) last_octet_count has the size of the last measured character - // 2) char_count holds the number of characters shown to fit - // within the bounds so far (no greater than max_limit) - // 3) from_next points to the octet 'last_octet_count' before the - // last measured character. - int last_octet_count=0; - std::size_t char_count = 0; - const char* from_next = from; - // Use "<" because the buffer may represent incomplete characters - while (from_next+last_octet_count <= from_end && char_count <= max_limit) { - from_next += last_octet_count; - last_octet_count = (get_octet_count(*from_next)); - ++char_count; +{ + const char * from_next = from; + for (std::size_t char_count = 0u; char_count < max_limit && from_next < from_end; ++char_count) { + unsigned int octet_count = get_octet_count(*from_next); + // The buffer may represent incomplete characters, so terminate early if one is found + if (octet_count > static_cast(from_end - from_next)) + break; + from_next += octet_count; } - return static_cast(from_next-from); + + return static_cast(from_next - from); } -unsigned int utf8_codecvt_facet::get_octet_count( +BOOST_UTF8_DECL unsigned int utf8_codecvt_facet::get_octet_count( unsigned char lead_octet -){ +) { // if the 0-bit (MSB) is 0, then 1 character if (lead_octet <= 0x7f) return 1; @@ -229,7 +232,7 @@ unsigned int utf8_codecvt_facet::get_octet_count( namespace detail { template -int get_cont_octet_out_count_impl(wchar_t word){ +inline int get_cont_octet_out_count_impl(wchar_t word) { if (word < 0x80) { return 0; } @@ -240,7 +243,7 @@ int get_cont_octet_out_count_impl(wchar_t word){ } template<> -int get_cont_octet_out_count_impl<4>(wchar_t word){ +inline int get_cont_octet_out_count_impl<4>(wchar_t word) { if (word < 0x80) { return 0; } @@ -252,7 +255,7 @@ int get_cont_octet_out_count_impl<4>(wchar_t word){ // where wchar_t is defined as UCS2. The warnings are superfluous as the // specialization is never instantitiated with such compilers, but this // can cause problems if warnings are being treated as errors, so we guard - // against that. Including as we do + // against that. Including as we do // should be enough to get WCHAR_MAX defined. #if !defined(WCHAR_MAX) # error WCHAR_MAX not defined! @@ -261,8 +264,8 @@ int get_cont_octet_out_count_impl<4>(wchar_t word){ #if defined(_MSC_VER) && _MSC_VER <= 1310 // 7.1 or earlier return 2; #elif WCHAR_MAX > 0x10000 - - if (word < 0x10000) { + + if (word < 0x10000) { return 2; } if (word < 0x200000) { @@ -272,7 +275,7 @@ int get_cont_octet_out_count_impl<4>(wchar_t word){ return 4; } return 5; - + #else return 2; #endif @@ -282,11 +285,12 @@ int get_cont_octet_out_count_impl<4>(wchar_t word){ // How many "continuing octets" will be needed for this word // == total octets - 1. -int utf8_codecvt_facet::get_cont_octet_out_count( +BOOST_UTF8_DECL int utf8_codecvt_facet::get_cont_octet_out_count( wchar_t word -) const { +) { return detail::get_cont_octet_out_count_impl(word); } + BOOST_UTF8_END_NAMESPACE #endif diff --git a/src/boost/boost/detail/workaround.hpp b/src/boost/boost/detail/workaround.hpp index 714208656..f3aab8de7 100644 --- a/src/boost/boost/detail/workaround.hpp +++ b/src/boost/boost/detail/workaround.hpp @@ -2,9 +2,9 @@ // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) -#ifndef WORKAROUND_DWA2002126_HPP -#define WORKAROUND_DWA2002126_HPP +#ifndef BOOST_WORKAROUND_DWA2002126_HPP +#define BOOST_WORKAROUND_DWA2002126_HPP #include -#endif // WORKAROUND_DWA2002126_HPP +#endif // BOOST_WORKAROUND_DWA2002126_HPP diff --git a/src/boost/boost/exception/exception.hpp b/src/boost/boost/exception/exception.hpp index c417f2e07..43f8f154c 100644 --- a/src/boost/boost/exception/exception.hpp +++ b/src/boost/boost/exception/exception.hpp @@ -3,10 +3,12 @@ //Distributed under the Boost Software License, Version 1.0. (See accompanying //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef UUID_274DA366004E11DCB1DDFE2E56D89593 -#define UUID_274DA366004E11DCB1DDFE2E56D89593 +#ifndef BOOST_EXCEPTION_274DA366004E11DCB1DDFE2E56D89593 +#define BOOST_EXCEPTION_274DA366004E11DCB1DDFE2E56D89593 +#include #include +#include #ifdef BOOST_EXCEPTION_MINI_BOOST #include @@ -16,11 +18,17 @@ namespace boost { template class shared_ptr; } namespace boost { namespace exception_detail { using boost::shared_ptr; } } #endif -#if defined(__GNUC__) && (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#if !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#if __GNUC__*100+__GNUC_MINOR__>301 #pragma GCC system_header #endif -#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#ifdef __clang__ +#pragma clang system_header +#endif +#ifdef _MSC_VER #pragma warning(push,1) +#pragma warning(disable: 4265) +#endif #endif namespace @@ -100,6 +108,7 @@ boost typedef error_info throw_function; typedef error_info throw_file; typedef error_info throw_line; + typedef error_info throw_column; template <> class @@ -143,6 +152,20 @@ boost } }; + template <> + class + error_info + { + public: + typedef int value_type; + value_type v_; + explicit + error_info( value_type v ): + v_(v) + { + } + }; + class BOOST_SYMBOL_VISIBLE exception; @@ -165,7 +188,7 @@ boost protected: - ~error_info_container() throw() + ~error_info_container() BOOST_NOEXCEPT_OR_NOTHROW { } }; @@ -182,6 +205,9 @@ boost template <> struct get_info; + template <> + struct get_info; + template struct set_info_rv; @@ -194,6 +220,9 @@ boost template <> struct set_info_rv; + template <> + struct set_info_rv; + char const * get_diagnostic_information( exception const &, char const * ); void copy_boost_exception( exception *, exception const * ); @@ -209,6 +238,11 @@ boost template E const & set_info( E const &, throw_line const & ); + + template + E const & set_info( E const &, throw_column const & ); + + boost::source_location get_exception_throw_location( exception const & ); } class @@ -226,23 +260,25 @@ boost exception(): throw_function_(0), throw_file_(0), - throw_line_(-1) + throw_line_(-1), + throw_column_(-1) { } #ifdef __HP_aCC //On HP aCC, this protected copy constructor prevents throwing boost::exception. //On all other platforms, the same effect is achieved by the pure virtual destructor. - exception( exception const & x ) throw(): + exception( exception const & x ) BOOST_NOEXCEPT_OR_NOTHROW: data_(x.data_), throw_function_(x.throw_function_), throw_file_(x.throw_file_), - throw_line_(x.throw_line_) + throw_line_(x.throw_line_), + throw_column_(x.throw_column_) { } #endif - virtual ~exception() throw() + virtual ~exception() BOOST_NOEXCEPT_OR_NOTHROW #ifndef __HP_aCC = 0 //Workaround for HP aCC, =0 incorrectly leads to link errors. #endif @@ -262,32 +298,40 @@ boost template friend E const & exception_detail::set_info( E const &, throw_line const & ); + template + friend E const & exception_detail::set_info( E const &, throw_column const & ); + template friend E const & exception_detail::set_info( E const &, error_info const & ); friend char const * exception_detail::get_diagnostic_information( exception const &, char const * ); + friend boost::source_location exception_detail::get_exception_throw_location( exception const & ); + template friend struct exception_detail::get_info; friend struct exception_detail::get_info; friend struct exception_detail::get_info; friend struct exception_detail::get_info; + friend struct exception_detail::get_info; template friend struct exception_detail::set_info_rv; friend struct exception_detail::set_info_rv; friend struct exception_detail::set_info_rv; friend struct exception_detail::set_info_rv; + friend struct exception_detail::set_info_rv; friend void exception_detail::copy_boost_exception( exception *, exception const * ); #endif mutable exception_detail::refcount_ptr data_; mutable char const * throw_function_; mutable char const * throw_file_; mutable int throw_line_; + mutable int throw_column_; }; inline exception:: - ~exception() throw() + ~exception() BOOST_NOEXCEPT_OR_NOTHROW { } @@ -317,6 +361,42 @@ boost x.throw_line_=y.v_; return x; } + + template + E const & + set_info( E const & x, throw_column const & y ) + { + x.throw_column_=y.v_; + return x; + } + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + + template <> + struct + set_info_rv + { + template + static + E const & + set( E const & x, throw_column && y ) + { + x.throw_column_=y.v_; + return x; + } + }; + +#endif + + inline boost::source_location get_exception_throw_location( exception const & x ) + { + return boost::source_location( + x.throw_file_? x.throw_file_: "", + x.throw_line_ >= 0? x.throw_line_: 0, + x.throw_function_? x.throw_function_: "", + x.throw_column_ >= 0? x.throw_column_: 0 + ); + } } //////////////////////////////////////////////////////////////////////// @@ -337,7 +417,7 @@ boost { } - ~error_info_injector() throw() + ~error_info_injector() BOOST_NOEXCEPT_OR_NOTHROW { } }; @@ -384,6 +464,9 @@ boost } //////////////////////////////////////////////////////////////////////// +#if defined(BOOST_NO_EXCEPTIONS) + BOOST_NORETURN void throw_exception(std::exception const & e); // user defined +#endif namespace exception_detail @@ -398,7 +481,7 @@ boost virtual void rethrow() const = 0; virtual - ~clone_base() throw() + ~clone_base() BOOST_NOEXCEPT_OR_NOTHROW { } }; @@ -413,6 +496,7 @@ boost a->throw_file_ = b->throw_file_; a->throw_line_ = b->throw_line_; a->throw_function_ = b->throw_function_; + a->throw_column_ = b->throw_column_; a->data_ = data; } @@ -445,7 +529,7 @@ boost copy_boost_exception(this,&x); } - ~clone_impl() throw() + ~clone_impl() BOOST_NOEXCEPT_OR_NOTHROW { } @@ -460,7 +544,11 @@ boost void rethrow() const { +#if defined(BOOST_NO_EXCEPTIONS) + boost::throw_exception(*this); +#else throw*this; +#endif } }; } @@ -472,54 +560,10 @@ boost { return exception_detail::clone_impl(x); } - - template - struct - BOOST_SYMBOL_VISIBLE - wrapexcept: - public exception_detail::clone_impl::type> - { - typedef exception_detail::clone_impl::type> base_type; - public: - explicit - wrapexcept( typename exception_detail::enable_error_info_return_type::type const & x ): - base_type( x ) - { - } - - ~wrapexcept() throw() - { - } - }; - - namespace - exception_detail - { - template - struct - remove_error_info_injector - { - typedef T type; - }; - - template - struct - remove_error_info_injector< error_info_injector > - { - typedef T type; - }; - - template - inline - wrapexcept::type> - enable_both( T const & x ) - { - return wrapexcept::type>( enable_error_info( x ) ); - } - } } #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) #pragma warning(pop) #endif -#endif + +#endif // #ifndef BOOST_EXCEPTION_274DA366004E11DCB1DDFE2E56D89593 diff --git a/src/boost/boost/filesystem.hpp b/src/boost/boost/filesystem.hpp index 696c6bb9e..33fbd38c2 100644 --- a/src/boost/boost/filesystem.hpp +++ b/src/boost/boost/filesystem.hpp @@ -7,15 +7,20 @@ // Library home page: http://www.boost.org/libs/filesystem -//--------------------------------------------------------------------------------------// +//--------------------------------------------------------------------------------------// #ifndef BOOST_FILESYSTEM_FILESYSTEM_HPP #define BOOST_FILESYSTEM_FILESYSTEM_HPP -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#if defined(BOOST_FILESYSTEM_DEPRECATED) +#include +#endif -#endif // BOOST_FILESYSTEM_FILESYSTEM_HPP +#endif // BOOST_FILESYSTEM_FILESYSTEM_HPP diff --git a/src/boost/boost/filesystem/config.hpp b/src/boost/boost/filesystem/config.hpp index 1c1ad3021..73f109340 100644 --- a/src/boost/boost/filesystem/config.hpp +++ b/src/boost/boost/filesystem/config.hpp @@ -1,40 +1,57 @@ // boost/filesystem/v3/config.hpp ----------------------------------------------------// // Copyright Beman Dawes 2003 +// Copyright Andrey Semashev 2021-2023 // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt // Library home page: http://www.boost.org/libs/filesystem -//--------------------------------------------------------------------------------------// +//--------------------------------------------------------------------------------------// -#ifndef BOOST_FILESYSTEM3_CONFIG_HPP -#define BOOST_FILESYSTEM3_CONFIG_HPP - -# if defined(BOOST_FILESYSTEM_VERSION) && BOOST_FILESYSTEM_VERSION != 3 -# error Compiling Filesystem version 3 file with BOOST_FILESYSTEM_VERSION defined != 3 -# endif - -# if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 3 -# endif - -#define BOOST_FILESYSTEM_I18N // aid users wishing to compile several versions +#ifndef BOOST_FILESYSTEM_CONFIG_HPP +#define BOOST_FILESYSTEM_CONFIG_HPP // This header implements separate compilation features as described in // http://www.boost.org/more/separate_compilation.html #include -#include // for BOOST_POSIX_API or BOOST_WINDOWS_API +#include // for BOOST_POSIX_API or BOOST_WINDOWS_API #include +#if defined(BOOST_FILESYSTEM_VERSION) && BOOST_FILESYSTEM_VERSION != 3 && BOOST_FILESYSTEM_VERSION != 4 +#error Compiling Boost.Filesystem file with BOOST_FILESYSTEM_VERSION defined != 3 or 4 +#endif + +#if defined(BOOST_FILESYSTEM_SOURCE) +#undef BOOST_FILESYSTEM_VERSION +#define BOOST_FILESYSTEM_VERSION 4 +#elif !defined(BOOST_FILESYSTEM_VERSION) +#define BOOST_FILESYSTEM_VERSION 3 +#endif + +#define BOOST_FILESYSTEM_VERSIONED_SYM(sym) BOOST_JOIN(sym, BOOST_JOIN(_v, BOOST_FILESYSTEM_VERSION)) + +#if BOOST_FILESYSTEM_VERSION == 4 +#undef BOOST_FILESYSTEM_DEPRECATED +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) +#define BOOST_FILESYSTEM_NO_DEPRECATED +#endif +#endif + +#define BOOST_FILESYSTEM_I18N // aid users wishing to compile several versions + // BOOST_FILESYSTEM_DEPRECATED needed for source compiles -----------------------------// -# ifdef BOOST_FILESYSTEM_SOURCE -# define BOOST_FILESYSTEM_DEPRECATED -# undef BOOST_FILESYSTEM_NO_DEPRECATED // fixes #9454, src bld fails if NO_DEP defined -# endif +#ifdef BOOST_FILESYSTEM_SOURCE +#define BOOST_FILESYSTEM_DEPRECATED +#undef BOOST_FILESYSTEM_NO_DEPRECATED // fixes #9454, src bld fails if NO_DEP defined +#endif + +#if defined(BOOST_FILESYSTEM_DEPRECATED) && defined(BOOST_FILESYSTEM_NO_DEPRECATED) +#error Both BOOST_FILESYSTEM_DEPRECATED and BOOST_FILESYSTEM_NO_DEPRECATED are defined +#endif // throw an exception ----------------------------------------------------------------// // @@ -46,50 +63,57 @@ #define BOOST_FILESYSTEM_THROW(EX) throw EX -# if defined( BOOST_NO_STD_WSTRING ) -# error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support -# endif +#if defined(BOOST_NO_STD_WSTRING) +#error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support +#endif + +// Deprecated symbols markup -----------------------------------------------------------// + +#if !defined(BOOST_FILESYSTEM_ALLOW_DEPRECATED) +#define BOOST_FILESYSTEM_DETAIL_DEPRECATED(msg) BOOST_DEPRECATED(msg) +#else +#define BOOST_FILESYSTEM_DETAIL_DEPRECATED(msg) +#endif + // This header implements separate compilation features as described in // http://www.boost.org/more/separate_compilation.html // normalize macros ------------------------------------------------------------------// -#if !defined(BOOST_FILESYSTEM_DYN_LINK) && !defined(BOOST_FILESYSTEM_STATIC_LINK) \ - && !defined(BOOST_ALL_DYN_LINK) && !defined(BOOST_ALL_STATIC_LINK) -# define BOOST_FILESYSTEM_STATIC_LINK +#if !defined(BOOST_FILESYSTEM_DYN_LINK) && !defined(BOOST_FILESYSTEM_STATIC_LINK) && !defined(BOOST_ALL_DYN_LINK) && !defined(BOOST_ALL_STATIC_LINK) +#define BOOST_FILESYSTEM_STATIC_LINK #endif #if defined(BOOST_ALL_DYN_LINK) && !defined(BOOST_FILESYSTEM_DYN_LINK) -# define BOOST_FILESYSTEM_DYN_LINK +#define BOOST_FILESYSTEM_DYN_LINK #elif defined(BOOST_ALL_STATIC_LINK) && !defined(BOOST_FILESYSTEM_STATIC_LINK) -# define BOOST_FILESYSTEM_STATIC_LINK +#define BOOST_FILESYSTEM_STATIC_LINK #endif #if defined(BOOST_FILESYSTEM_DYN_LINK) && defined(BOOST_FILESYSTEM_STATIC_LINK) -# error Must not define both BOOST_FILESYSTEM_DYN_LINK and BOOST_FILESYSTEM_STATIC_LINK +#error Must not define both BOOST_FILESYSTEM_DYN_LINK and BOOST_FILESYSTEM_STATIC_LINK #endif #if defined(BOOST_ALL_NO_LIB) && !defined(BOOST_FILESYSTEM_NO_LIB) -# define BOOST_FILESYSTEM_NO_LIB +#define BOOST_FILESYSTEM_NO_LIB #endif // enable dynamic linking ------------------------------------------------------------// #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FILESYSTEM_DYN_LINK) -# if defined(BOOST_FILESYSTEM_SOURCE) -# define BOOST_FILESYSTEM_DECL BOOST_SYMBOL_EXPORT -# else -# define BOOST_FILESYSTEM_DECL BOOST_SYMBOL_IMPORT -# endif +#if defined(BOOST_FILESYSTEM_SOURCE) +#define BOOST_FILESYSTEM_DECL BOOST_SYMBOL_EXPORT #else -# define BOOST_FILESYSTEM_DECL +#define BOOST_FILESYSTEM_DECL BOOST_SYMBOL_IMPORT +#endif +#else +#define BOOST_FILESYSTEM_DECL #endif -// enable automatic library variant selection ----------------------------------------// +// enable automatic library variant selection ----------------------------------------// -#if !defined(BOOST_FILESYSTEM_SOURCE) && !defined(BOOST_ALL_NO_LIB) \ - && !defined(BOOST_FILESYSTEM_NO_LIB) +#if !defined(BOOST_FILESYSTEM_SOURCE) && !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_FILESYSTEM_NO_LIB) // // Set the name of our library, this will get undef'ed by auto_link.hpp // once it's done with it: @@ -99,12 +123,30 @@ // If we're importing code from a dll, then tell auto_link.hpp about it: // #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FILESYSTEM_DYN_LINK) -# define BOOST_DYN_LINK +#define BOOST_DYN_LINK #endif // // And include the header that does the work: // #include -#endif // auto-linking disabled +#endif // auto-linking disabled + +#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) ||\ + (defined(BOOST_LIBSTDCXX_VERSION) && (BOOST_LIBSTDCXX_VERSION < 50000)) ||\ + (defined(BOOST_MSSTL_VERSION) && (BOOST_MSSTL_VERSION < 100)) +// Indicates that the standard library fstream types do not support move constructor/assignment. +#define BOOST_FILESYSTEM_DETAIL_NO_CXX11_MOVABLE_FSTREAMS +#endif + +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) && \ + (\ + (defined(BOOST_DINKUMWARE_STDLIB) && defined(_HAS_CXX23) && (_HAS_CXX23 != 0) && defined(_MSVC_STL_UPDATE) && (_MSVC_STL_UPDATE < 202208L)) || \ + (defined(BOOST_LIBSTDCXX_VERSION) && (BOOST_LIBSTDCXX_VERSION < 110400 || (BOOST_LIBSTDCXX_VERSION >= 120000 && BOOST_LIBSTDCXX_VERSION < 120200)) && (BOOST_CXX_VERSION > 202002L))\ + ) +// Indicates that std::string_view has implicit constructor from ranges that was present in an early C++23 draft (N4892). +// This was later rectified by marking the constructor explicit (https://wg21.link/p2499). Unfortunately, some compilers +// were released with the constructor being implicit. +#define BOOST_FILESYSTEM_DETAIL_CXX23_STRING_VIEW_HAS_IMPLICIT_RANGE_CTOR +#endif -#endif // BOOST_FILESYSTEM3_CONFIG_HPP +#endif // BOOST_FILESYSTEM_CONFIG_HPP diff --git a/src/boost/boost/filesystem/convenience.hpp b/src/boost/boost/filesystem/convenience.hpp index 5e3049a48..0e85cbd65 100644 --- a/src/boost/boost/filesystem/convenience.hpp +++ b/src/boost/boost/filesystem/convenience.hpp @@ -2,57 +2,54 @@ // Copyright Beman Dawes, 2002-2005 // Copyright Vladimir Prus, 2002 + // Use, modification, and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // See library home page at http://www.boost.org/libs/filesystem -//----------------------------------------------------------------------------// - -#ifndef BOOST_FILESYSTEM3_CONVENIENCE_HPP -#define BOOST_FILESYSTEM3_CONVENIENCE_HPP - -#include +//----------------------------------------------------------------------------// -# if defined( BOOST_NO_STD_WSTRING ) -# error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support -# endif +#ifndef BOOST_FILESYSTEM_CONVENIENCE_HPP +#define BOOST_FILESYSTEM_CONVENIENCE_HPP +#include #include #include -#include // must be the last #include - -namespace boost -{ - namespace filesystem - { +#include // must be the last #include -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED +namespace boost { +namespace filesystem { - inline std::string extension(const path & p) - { - return p.extension().string(); - } +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED - inline std::string basename(const path & p) - { - return p.stem().string(); - } +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::extension() instead") +inline std::string extension(const path& p) +{ + return p.extension().string(); +} - inline path change_extension( const path & p, const path & new_extension ) - { - path new_p( p ); - new_p.replace_extension( new_extension ); - return new_p; - } +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::stem() instead") +inline std::string basename(const path& p) +{ + return p.stem().string(); +} -# endif +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::replace_extension() instead") +inline path change_extension(const path& p, const path& new_extension) +{ + path new_p(p); + new_p.replace_extension(new_extension); + return new_p; +} +#endif - } // namespace filesystem +} // namespace filesystem } // namespace boost -#include // pops abi_prefix.hpp pragmas -#endif // BOOST_FILESYSTEM3_CONVENIENCE_HPP +#include + +#endif // BOOST_FILESYSTEM_CONVENIENCE_HPP diff --git a/src/boost/boost/filesystem/detail/footer.hpp b/src/boost/boost/filesystem/detail/footer.hpp new file mode 100644 index 000000000..b520398c2 --- /dev/null +++ b/src/boost/boost/filesystem/detail/footer.hpp @@ -0,0 +1,23 @@ +/* + * Copyright Andrey Semashev 2021. + * 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) + */ + +#if !defined(BOOST_FILESYSTEM_ENABLE_WARNINGS) + +#if defined(_MSC_VER) && !defined(__clang__) + +#pragma warning(pop) + +#elif (defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) \ + && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406) || defined(__clang__) + +#pragma GCC diagnostic pop + +#endif + +#endif // !defined(BOOST_FILESYSTEM_ENABLE_WARNINGS) + +#include diff --git a/src/boost/boost/filesystem/detail/header.hpp b/src/boost/boost/filesystem/detail/header.hpp new file mode 100644 index 000000000..aeb7d19d0 --- /dev/null +++ b/src/boost/boost/filesystem/detail/header.hpp @@ -0,0 +1,54 @@ +/* + * Copyright Andrey Semashev 2021. + * 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) + */ + +#include + +#if !defined(BOOST_FILESYSTEM_ENABLE_WARNINGS) + +#if defined(_MSC_VER) && !defined(__clang__) + +#pragma warning(push, 3) +// 'm_A' : class 'A' needs to have dll-interface to be used by clients of class 'B' +#pragma warning(disable: 4251) +// non dll-interface class 'A' used as base for dll-interface class 'B' +#pragma warning(disable: 4275) +// 'int' : forcing value to bool 'true' or 'false' (performance warning) +#pragma warning(disable: 4800) +// unreferenced formal parameter +#pragma warning(disable: 4100) +// conditional expression is constant +#pragma warning(disable: 4127) +// function marked as __forceinline not inlined +#pragma warning(disable: 4714) +// decorated name length exceeded, name was truncated +#pragma warning(disable: 4503) +// 'X': This function or variable may be unsafe. Consider using Y instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. +#pragma warning(disable: 4996) +// qualifier applied to function type has no meaning; ignored +#pragma warning(disable: 4180) +// qualifier applied to reference type; ignored +#pragma warning(disable: 4181) + +#elif (defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) \ + && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406) || defined(__clang__) + +// Note: clang-cl goes here as well, as it seems to support gcc-style warning control pragmas. + +#pragma GCC diagnostic push +// unused parameter 'arg' +#pragma GCC diagnostic ignored "-Wunused-parameter" +// unused function 'foo' +#pragma GCC diagnostic ignored "-Wunused-function" + +#if defined(__clang__) +// template argument uses unnamed type +#pragma clang diagnostic ignored "-Wunnamed-type-template-args" +#endif // defined(__clang__) + +#endif + +#endif // !defined(BOOST_FILESYSTEM_ENABLE_WARNINGS) diff --git a/src/boost/boost/filesystem/detail/path_traits.hpp b/src/boost/boost/filesystem/detail/path_traits.hpp new file mode 100644 index 000000000..34b197cd2 --- /dev/null +++ b/src/boost/boost/filesystem/detail/path_traits.hpp @@ -0,0 +1,737 @@ +// filesystem path_traits.hpp --------------------------------------------------------// + +// Copyright Beman Dawes 2009 +// Copyright Andrey Semashev 2022 + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// Library home page: http://www.boost.org/libs/filesystem + +#ifndef BOOST_FILESYSTEM_DETAIL_PATH_TRAITS_HPP +#define BOOST_FILESYSTEM_DETAIL_PATH_TRAITS_HPP + +#include +#include +#include // for strlen +#include // for mbstate_t, wcslen +#include +#include +#include +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#if defined(BOOST_FILESYSTEM_DETAIL_CXX23_STRING_VIEW_HAS_IMPLICIT_RANGE_CTOR) +#include +#include +#endif +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) && BOOST_FILESYSTEM_VERSION < 4 +#include +#include +#endif + +#include // must be the last #include + +namespace boost { + +template< typename, typename > class basic_string_view; + +namespace container { +template< typename, typename, typename > class basic_string; +} // namespace container + +namespace filesystem { + +BOOST_FILESYSTEM_DECL system::error_category const& codecvt_error_category() BOOST_NOEXCEPT; + +class directory_entry; + +namespace detail { +namespace path_traits { + +#if defined(BOOST_WINDOWS_API) +typedef wchar_t path_native_char_type; +#define BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE false +#define BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE true +#else +typedef char path_native_char_type; +#define BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE true +#define BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE false +#endif + +typedef std::codecvt< wchar_t, char, std::mbstate_t > codecvt_type; + +struct unknown_type_tag {}; +struct ntcts_type_tag {}; +struct char_ptr_tag : ntcts_type_tag {}; +struct char_array_tag : ntcts_type_tag {}; +struct string_class_tag {}; +struct std_string_tag : string_class_tag {}; +struct boost_container_string_tag : string_class_tag {}; +struct std_string_view_tag : string_class_tag {}; +struct boost_string_view_tag : string_class_tag {}; +struct range_type_tag {}; +struct directory_entry_tag {}; + +//! The traits define a number of properties of a path source +template< typename T > +struct path_source_traits +{ + //! The kind of the path source. Useful for dispatching. + typedef unknown_type_tag tag_type; + //! Character type that the source contains + typedef void char_type; + //! Indicates whether the source is natively supported by \c path::string_type as arguments for constructors/assignment/appending + static BOOST_CONSTEXPR_OR_CONST bool is_native = false; +}; + +template< > +struct path_source_traits< char* > +{ + typedef char_ptr_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE; +}; + +template< > +struct path_source_traits< const char* > +{ + typedef char_ptr_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE; +}; + +template< > +struct path_source_traits< wchar_t* > +{ + typedef char_ptr_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE; +}; + +template< > +struct path_source_traits< const wchar_t* > +{ + typedef char_ptr_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE; +}; + +template< > +struct path_source_traits< char[] > +{ + typedef char_array_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE; +}; + +template< > +struct path_source_traits< const char[] > +{ + typedef char_array_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE; +}; + +template< > +struct path_source_traits< wchar_t[] > +{ + typedef char_array_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE; +}; + +template< > +struct path_source_traits< const wchar_t[] > +{ + typedef char_array_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE; +}; + +template< std::size_t N > +struct path_source_traits< char[N] > +{ + typedef char_array_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE; +}; + +template< std::size_t N > +struct path_source_traits< const char[N] > +{ + typedef char_array_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE; +}; + +template< std::size_t N > +struct path_source_traits< wchar_t[N] > +{ + typedef char_array_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE; +}; + +template< std::size_t N > +struct path_source_traits< const wchar_t[N] > +{ + typedef char_array_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE; +}; + +template< > +struct path_source_traits< std::string > +{ + typedef std_string_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE; +}; + +template< > +struct path_source_traits< std::wstring > +{ + typedef std_string_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE; +}; + +template< > +struct path_source_traits< boost::container::basic_string< char, std::char_traits< char >, void > > +{ + typedef boost_container_string_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = false; +}; + +template< > +struct path_source_traits< boost::container::basic_string< wchar_t, std::char_traits< wchar_t >, void > > +{ + typedef boost_container_string_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = false; +}; + +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) + +template< > +struct path_source_traits< std::string_view > +{ + typedef std_string_view_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE; +}; + +template< > +struct path_source_traits< std::wstring_view > +{ + typedef std_string_view_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE; +}; + +#endif // !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) + +template< > +struct path_source_traits< boost::basic_string_view< char, std::char_traits< char > > > +{ + typedef boost_string_view_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = false; +}; + +template< > +struct path_source_traits< boost::basic_string_view< wchar_t, std::char_traits< wchar_t > > > +{ + typedef boost_string_view_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = false; +}; + +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) && BOOST_FILESYSTEM_VERSION < 4 +template< > +struct +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Boost.Filesystem path construction/assignment/appending from containers is deprecated, use strings or iterators instead.") +path_source_traits< std::vector< char > > +{ + // Since C++11 this could be string_class_tag as std::vector gained data() member + typedef range_type_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = false; +}; + +template< > +struct +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Boost.Filesystem path construction/assignment/appending from containers is deprecated, use strings or iterators instead.") +path_source_traits< std::vector< wchar_t > > +{ + // Since C++11 this could be string_class_tag as std::vector gained data() member + typedef range_type_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = false; +}; + +template< > +struct +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Boost.Filesystem path construction/assignment/appending from containers is deprecated, use strings or iterators instead.") +path_source_traits< std::list< char > > +{ + typedef range_type_tag tag_type; + typedef char char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = false; +}; + +template< > +struct +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Boost.Filesystem path construction/assignment/appending from containers is deprecated, use strings or iterators instead.") +path_source_traits< std::list< wchar_t > > +{ + typedef range_type_tag tag_type; + typedef wchar_t char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = false; +}; +#endif // !defined(BOOST_FILESYSTEM_NO_DEPRECATED) && BOOST_FILESYSTEM_VERSION < 4 + +template< > +struct path_source_traits< directory_entry > +{ + typedef directory_entry_tag tag_type; + typedef path_native_char_type char_type; + static BOOST_CONSTEXPR_OR_CONST bool is_native = false; +}; + +#undef BOOST_FILESYSTEM_DETAIL_IS_CHAR_NATIVE +#undef BOOST_FILESYSTEM_DETAIL_IS_WCHAR_T_NATIVE + + +//! The trait tests if the type is a known path Source tag +template< typename Tag > +struct is_known_path_source_tag : + public boost::true_type +{ +}; + +template< > +struct is_known_path_source_tag< unknown_type_tag > : + public boost::false_type +{ +}; + +//! The trait tests if the type is compatible with path Source requirements +template< typename T > +struct is_path_source : + public is_known_path_source_tag< typename path_source_traits< T >::tag_type >::type +{ +}; + + +//! The trait indicates whether the type is a path Source that is natively supported by path::string_type as the source for construction/assignment/appending +template< typename T > +struct is_native_path_source : + public boost::integral_constant< bool, path_source_traits< T >::is_native > +{ +}; + + +//! The trait indicates whether the type is one of the supported path character types +template< typename T > +struct is_path_char_type : + public boost::false_type +{ +}; + +template< > +struct is_path_char_type< char > : + public boost::true_type +{ +}; + +template< > +struct is_path_char_type< wchar_t > : + public boost::true_type +{ +}; + + +template< typename Iterator > +struct is_iterator_to_path_chars : + public is_path_char_type< typename std::iterator_traits< Iterator >::value_type >::type +{ +}; + +//! The trait indicates whether the type is an iterator over a sequence of path characters +template< typename Iterator > +struct is_path_source_iterator : + public boost::conjunction< + boost::iterators::is_iterator< Iterator >, + is_iterator_to_path_chars< Iterator > + >::type +{ +}; + + +//! The trait indicates whether the type is a pointer to a sequence of native path characters +template< typename T > +struct is_native_char_ptr : + public boost::false_type +{ +}; + +template< > +struct is_native_char_ptr< path_native_char_type* > : + public boost::true_type +{ +}; + +template< > +struct is_native_char_ptr< const path_native_char_type* > : + public boost::true_type +{ +}; + + +//! Converts character encoding using the supplied codecvt facet. If \a cvt is \c NULL then \c path::codecvt() will be used. +BOOST_FILESYSTEM_DECL +void convert(const char* from, const char* from_end, std::wstring& to, const codecvt_type* cvt = NULL); + +//! \overload convert +BOOST_FILESYSTEM_DECL +void convert(const wchar_t* from, const wchar_t* from_end, std::string& to, const codecvt_type* cvt = NULL); + + +// Source dispatch -----------------------------------------------------------------// + +template< typename Source, typename Callback > +typename Callback::result_type dispatch(Source const& source, Callback cb, const codecvt_type* cvt = NULL); + +template< typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch(const char* source, Callback cb, const codecvt_type* cvt, ntcts_type_tag) +{ + return cb(source, source + std::strlen(source), cvt); +} + +template< typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch(const wchar_t* source, Callback cb, const codecvt_type* cvt, ntcts_type_tag) +{ + return cb(source, source + std::wcslen(source), cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch(Source const& source, Callback cb, const codecvt_type* cvt, string_class_tag) +{ + return cb(source.data(), source.data() + source.size(), cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch(Source const& source, Callback cb, const codecvt_type* cvt, range_type_tag) +{ + std::basic_string< typename Source::value_type > src(source.begin(), source.end()); + return cb(src.data(), src.data() + src.size(), cvt); +} + +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) && BOOST_FILESYSTEM_VERSION < 4 + +template< typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch(std::vector< char > const& source, Callback cb, const codecvt_type* cvt, range_type_tag) +{ + const char* data = NULL, *data_end = NULL; + if (!source.empty()) + { + data = &source[0]; + data_end = data + source.size(); + } + return cb(data, data_end, cvt); +} + +template< typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch(std::vector< wchar_t > const& source, Callback cb, const codecvt_type* cvt, range_type_tag) +{ + const wchar_t* data = NULL, *data_end = NULL; + if (!source.empty()) + { + data = &source[0]; + data_end = data + source.size(); + } + return cb(data, data_end, cvt); +} + +#endif // !defined(BOOST_FILESYSTEM_NO_DEPRECATED) && BOOST_FILESYSTEM_VERSION < 4 + +// Defined in directory.hpp to avoid circular header dependencies +template< typename Callback > +typename Callback::result_type dispatch(directory_entry const& de, Callback cb, const codecvt_type* cvt, directory_entry_tag); + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch(Source const& source, Callback cb, const codecvt_type* cvt) +{ + return path_traits::dispatch(source, cb, cvt, + typename path_traits::path_source_traits< typename boost::remove_cv< Source >::type >::tag_type()); +} + + +typedef char yes_type; +struct no_type { char buf[2]; }; + +#if !defined(BOOST_FILESYSTEM_DETAIL_CXX23_STRING_VIEW_HAS_IMPLICIT_RANGE_CTOR) + +namespace is_convertible_to_path_source_impl { + +yes_type check(const char*); +yes_type check(const wchar_t*); +yes_type check(std::string const&); +yes_type check(std::wstring const&); +yes_type check(boost::container::basic_string< char, std::char_traits< char >, void > const&); +yes_type check(boost::container::basic_string< wchar_t, std::char_traits< wchar_t >, void > const&); +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) +yes_type check(std::string_view const&); +yes_type check(std::wstring_view const&); +#endif +yes_type check(boost::basic_string_view< char, std::char_traits< char > > const&); +yes_type check(boost::basic_string_view< wchar_t, std::char_traits< wchar_t > > const&); +#if !defined(BOOST_NO_CXX11_NULLPTR) +no_type check(std::nullptr_t); +#endif +no_type check(...); + +} // namespace is_convertible_to_path_source_impl + +//! The type trait indicates whether the type has a conversion path to one of the path source types +template< typename T > +struct is_convertible_to_path_source : + public boost::integral_constant< + bool, + sizeof(is_convertible_to_path_source_impl::check(boost::declval< T const& >())) == sizeof(yes_type) + > +{ +}; + +#else // !defined(BOOST_FILESYSTEM_DETAIL_CXX23_STRING_VIEW_HAS_IMPLICIT_RANGE_CTOR) + +// Note: We use separate checks for convertibility to std::string_view and other types to avoid ambiguity with an implicit range constructor +// of std::string_view in the early C++23 draft (N4892). If a user's type is convertible to e.g. std::string and also satisfies +// ranges::contiguous_range and ranges::sized_range concepts then the conversion is ambiguous: the type is convertible to std::string +// through the conversion operator in the user's class and is also convertible to std::string_view through the implicit conversion +// constructor in std::string_view. The solution is to check convertibility to std::string_view separately first. + +namespace is_convertible_to_std_string_view_impl { + +yes_type check(std::string_view const&); +yes_type check(std::wstring_view const&); +#if !defined(BOOST_NO_CXX11_NULLPTR) +no_type check(std::nullptr_t); +#endif +no_type check(...); + +} // namespace is_convertible_to_std_string_view_impl + +template< typename T > +struct is_convertible_to_std_string_view : + public boost::integral_constant< + bool, + sizeof(is_convertible_to_std_string_view_impl::check(boost::declval< T const& >())) == sizeof(yes_type) + > +{ +}; + +namespace is_convertible_to_path_source_non_std_string_view_impl { + +yes_type check(const char*); +yes_type check(const wchar_t*); +yes_type check(std::string const&); +yes_type check(std::wstring const&); +yes_type check(boost::container::basic_string< char, std::char_traits< char >, void > const&); +yes_type check(boost::container::basic_string< wchar_t, std::char_traits< wchar_t >, void > const&); +yes_type check(boost::basic_string_view< char, std::char_traits< char > > const&); +yes_type check(boost::basic_string_view< wchar_t, std::char_traits< wchar_t > > const&); +#if !defined(BOOST_NO_CXX11_NULLPTR) +no_type check(std::nullptr_t); +#endif +no_type check(...); + +} // namespace is_convertible_to_path_source_non_std_string_view_impl + +template< typename T > +struct is_convertible_to_path_source_non_std_string_view : + public boost::integral_constant< + bool, + sizeof(is_convertible_to_path_source_non_std_string_view_impl::check(boost::declval< T const& >())) == sizeof(yes_type) + > +{ +}; + +//! The type trait indicates whether the type has a conversion path to one of the path source types +template< typename T > +struct is_convertible_to_path_source : + public boost::disjunction< + is_convertible_to_std_string_view< T >, + is_convertible_to_path_source_non_std_string_view< T > + >::type +{ +}; + +#endif // !defined(BOOST_FILESYSTEM_DETAIL_CXX23_STRING_VIEW_HAS_IMPLICIT_RANGE_CTOR) + +//! The type trait makes \a T dependent on the second template argument. Used to delay type resolution and name binding. +template< typename T, typename > +struct make_dependent +{ + typedef T type; +}; + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_impl(const char* source, Callback cb, const codecvt_type* cvt) +{ + typedef typename path_traits::make_dependent< const char*, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t >(source), cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_impl(const wchar_t* source, Callback cb, const codecvt_type* cvt) +{ + typedef typename path_traits::make_dependent< const wchar_t*, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t >(source), cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_impl(std::string const& source, Callback cb, const codecvt_type* cvt) +{ + typedef typename path_traits::make_dependent< std::string, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t const& >(source), cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_impl(std::wstring const& source, Callback cb, const codecvt_type* cvt) +{ + typedef typename path_traits::make_dependent< std::wstring, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t const& >(source), cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_impl +( + boost::container::basic_string< char, std::char_traits< char >, void > const& source, + Callback cb, + const codecvt_type* cvt +) +{ + typedef typename path_traits::make_dependent< boost::container::basic_string< char, std::char_traits< char >, void >, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t const& >(source), cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_impl +( + boost::container::basic_string< wchar_t, std::char_traits< wchar_t >, void > const& source, + Callback cb, + const codecvt_type* cvt +) +{ + typedef typename path_traits::make_dependent< boost::container::basic_string< wchar_t, std::char_traits< wchar_t >, void >, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t const& >(source), cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_impl +( + boost::basic_string_view< char, std::char_traits< char > > const& source, + Callback cb, + const codecvt_type* cvt +) +{ + typedef typename path_traits::make_dependent< boost::basic_string_view< char, std::char_traits< char > >, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t const& >(source), cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_impl +( + boost::basic_string_view< wchar_t, std::char_traits< wchar_t > > const& source, + Callback cb, + const codecvt_type* cvt +) +{ + typedef typename path_traits::make_dependent< boost::basic_string_view< wchar_t, std::char_traits< wchar_t > >, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t const& >(source), cb, cvt); +} + +#if !defined(BOOST_FILESYSTEM_DETAIL_CXX23_STRING_VIEW_HAS_IMPLICIT_RANGE_CTOR) + +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_impl(std::string_view const& source, Callback cb, const codecvt_type* cvt) +{ + typedef typename path_traits::make_dependent< std::string_view, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t const& >(source), cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_impl(std::wstring_view const& source, Callback cb, const codecvt_type* cvt) +{ + typedef typename path_traits::make_dependent< std::wstring_view, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t const& >(source), cb, cvt); +} + +#endif // !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible(Source const& source, Callback cb, const codecvt_type* cvt = NULL) +{ + typedef typename boost::remove_cv< Source >::type source_t; + return path_traits::dispatch_convertible_impl< source_t >(source, cb, cvt); +} + +#else // !defined(BOOST_FILESYSTEM_DETAIL_CXX23_STRING_VIEW_HAS_IMPLICIT_RANGE_CTOR) + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_sv_impl(std::string_view const& source, Callback cb, const codecvt_type* cvt) +{ + typedef typename path_traits::make_dependent< std::string_view, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t const& >(source), cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch_convertible_sv_impl(std::wstring_view const& source, Callback cb, const codecvt_type* cvt) +{ + typedef typename path_traits::make_dependent< std::wstring_view, Source >::type source_t; + return path_traits::dispatch(static_cast< source_t const& >(source), cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename boost::disable_if_c< + is_convertible_to_std_string_view< typename boost::remove_cv< Source >::type >::value, + typename Callback::result_type +>::type dispatch_convertible(Source const& source, Callback cb, const codecvt_type* cvt = NULL) +{ + typedef typename boost::remove_cv< Source >::type source_t; + return path_traits::dispatch_convertible_impl< source_t >(source, cb, cvt); +} + +template< typename Source, typename Callback > +BOOST_FORCEINLINE typename boost::enable_if_c< + is_convertible_to_std_string_view< typename boost::remove_cv< Source >::type >::value, + typename Callback::result_type +>::type dispatch_convertible(Source const& source, Callback cb, const codecvt_type* cvt = NULL) +{ + typedef typename boost::remove_cv< Source >::type source_t; + return path_traits::dispatch_convertible_sv_impl< source_t >(source, cb, cvt); +} + +#endif // !defined(BOOST_FILESYSTEM_DETAIL_CXX23_STRING_VIEW_HAS_IMPLICIT_RANGE_CTOR) + +} // namespace path_traits +} // namespace detail +} // namespace filesystem +} // namespace boost + +#include + +#endif // BOOST_FILESYSTEM_DETAIL_PATH_TRAITS_HPP diff --git a/src/boost/boost/filesystem/detail/utf8_codecvt_facet.hpp b/src/boost/boost/filesystem/detail/utf8_codecvt_facet.hpp index 291aace71..45324a04f 100644 --- a/src/boost/boost/filesystem/detail/utf8_codecvt_facet.hpp +++ b/src/boost/boost/filesystem/detail/utf8_codecvt_facet.hpp @@ -9,10 +9,17 @@ #include -#define BOOST_UTF8_BEGIN_NAMESPACE \ - namespace boost { namespace filesystem { namespace detail { +#include -#define BOOST_UTF8_END_NAMESPACE }}} +#define BOOST_UTF8_BEGIN_NAMESPACE \ + namespace boost { \ + namespace filesystem { \ + namespace detail { + +#define BOOST_UTF8_END_NAMESPACE \ + } \ + } \ + } #define BOOST_UTF8_DECL BOOST_FILESYSTEM_DECL #include @@ -21,4 +28,6 @@ #undef BOOST_UTF8_END_NAMESPACE #undef BOOST_UTF8_DECL -#endif +#include + +#endif // BOOST_FILESYSTEM_UTF8_CODECVT_FACET_HPP diff --git a/src/boost/boost/filesystem/directory.hpp b/src/boost/boost/filesystem/directory.hpp new file mode 100644 index 000000000..d7bb972c8 --- /dev/null +++ b/src/boost/boost/filesystem/directory.hpp @@ -0,0 +1,1113 @@ +// boost/filesystem/directory.hpp ---------------------------------------------------// + +// Copyright Beman Dawes 2002-2009 +// Copyright Jan Langer 2002 +// Copyright Dietmar Kuehl 2001 +// Copyright Vladimir Prus 2002 +// Copyright Andrey Semashev 2019, 2022 + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// Library home page: http://www.boost.org/libs/filesystem + +//--------------------------------------------------------------------------------------// + +#ifndef BOOST_FILESYSTEM_DIRECTORY_HPP +#define BOOST_FILESYSTEM_DIRECTORY_HPP + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include // must be the last #include + +//--------------------------------------------------------------------------------------// + +namespace boost { +namespace filesystem { + +class directory_iterator; + +namespace detail { + +struct directory_iterator_params; + +BOOST_FILESYSTEM_DECL void directory_iterator_construct(directory_iterator& it, path const& p, unsigned int opts, directory_iterator_params* params, system::error_code* ec); +BOOST_FILESYSTEM_DECL void directory_iterator_increment(directory_iterator& it, system::error_code* ec); + +} // namespace detail + +//--------------------------------------------------------------------------------------// +// // +// directory_entry // +// // +//--------------------------------------------------------------------------------------// + +// GCC has a problem with a member function named path within a namespace or +// sub-namespace that also has a class named path. The workaround is to always +// fully qualify the name path when it refers to the class name. + +class directory_entry +{ + friend BOOST_FILESYSTEM_DECL void detail::directory_iterator_construct(directory_iterator& it, path const& p, unsigned int opts, detail::directory_iterator_params* params, system::error_code* ec); + friend BOOST_FILESYSTEM_DECL void detail::directory_iterator_increment(directory_iterator& it, system::error_code* ec); + +public: + typedef boost::filesystem::path::value_type value_type; // enables class path ctor taking directory_entry + + directory_entry() BOOST_NOEXCEPT {} + + explicit directory_entry(boost::filesystem::path const& p); + +#if BOOST_FILESYSTEM_VERSION >= 4 + directory_entry(boost::filesystem::path const& p, system::error_code& ec) : + m_path(p) + { + refresh_impl(&ec); + if (ec) + m_path.clear(); + } +#else + directory_entry(boost::filesystem::path const& p, file_status st, file_status symlink_st = file_status()) : + m_path(p), m_status(st), m_symlink_status(symlink_st) + { + } +#endif + + directory_entry(directory_entry const& rhs) : + m_path(rhs.m_path), m_status(rhs.m_status), m_symlink_status(rhs.m_symlink_status) + { + } + + directory_entry& operator=(directory_entry const& rhs) + { + m_path = rhs.m_path; + m_status = rhs.m_status; + m_symlink_status = rhs.m_symlink_status; + return *this; + } + + // As of October 2015 the interaction between noexcept and =default is so troublesome + // for VC++, GCC, and probably other compilers, that =default is not used with noexcept + // functions. GCC is not even consistent for the same release on different platforms. + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + directory_entry(directory_entry&& rhs) BOOST_NOEXCEPT : + m_path(static_cast< boost::filesystem::path&& >(rhs.m_path)), + m_status(static_cast< file_status&& >(rhs.m_status)), + m_symlink_status(static_cast< file_status&& >(rhs.m_symlink_status)) + { + } + + directory_entry& operator=(directory_entry&& rhs) BOOST_NOEXCEPT + { + m_path = static_cast< boost::filesystem::path&& >(rhs.m_path); + m_status = static_cast< file_status&& >(rhs.m_status); + m_symlink_status = static_cast< file_status&& >(rhs.m_symlink_status); + return *this; + } + + void assign(boost::filesystem::path&& p); + +#if BOOST_FILESYSTEM_VERSION >= 4 + void assign(boost::filesystem::path&& p, system::error_code& ec) + { + m_path = static_cast< boost::filesystem::path&& >(p); + refresh_impl(&ec); + } +#else + void assign(boost::filesystem::path&& p, file_status st, file_status symlink_st = file_status()) + { + assign_with_status(static_cast< boost::filesystem::path&& >(p), st, symlink_st); + } +#endif +#endif // !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + + void assign(boost::filesystem::path const& p); + +#if BOOST_FILESYSTEM_VERSION >= 4 + void assign(boost::filesystem::path const& p, system::error_code& ec) + { + m_path = p; + refresh_impl(&ec); + } +#else + void assign(boost::filesystem::path const& p, file_status st, file_status symlink_st = file_status()) + { + assign_with_status(p, st, symlink_st); + } +#endif + + void replace_filename(boost::filesystem::path const& p); + +#if BOOST_FILESYSTEM_VERSION >= 4 + void replace_filename(boost::filesystem::path const& p, system::error_code& ec) + { + m_path.replace_filename(p); + refresh_impl(&ec); + } +#else + void replace_filename(boost::filesystem::path const& p, file_status st, file_status symlink_st = file_status()) + { + replace_filename_with_status(p, st, symlink_st); + } + + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use directory_entry::replace_filename() instead") + void replace_leaf(boost::filesystem::path const& p, file_status st, file_status symlink_st) + { + replace_filename_with_status(p, st, symlink_st); + } +#endif + + boost::filesystem::path const& path() const BOOST_NOEXCEPT { return m_path; } + operator boost::filesystem::path const&() const BOOST_NOEXCEPT { return m_path; } + + void refresh() { refresh_impl(); } + void refresh(system::error_code& ec) BOOST_NOEXCEPT { refresh_impl(&ec); } + + file_status status() const + { + if (!filesystem::status_known(m_status)) + refresh_impl(); + return m_status; + } + + file_status status(system::error_code& ec) const BOOST_NOEXCEPT + { + if (!filesystem::status_known(m_status)) + refresh_impl(&ec); + return m_status; + } + + file_status symlink_status() const + { + if (!filesystem::status_known(m_symlink_status)) + refresh_impl(); + return m_symlink_status; + } + + file_status symlink_status(system::error_code& ec) const BOOST_NOEXCEPT + { + if (!filesystem::status_known(m_symlink_status)) + refresh_impl(&ec); + return m_symlink_status; + } + + filesystem::file_type file_type() const + { + if (!filesystem::type_present(m_status)) + refresh_impl(); + return m_status.type(); + } + + filesystem::file_type file_type(system::error_code& ec) const BOOST_NOEXCEPT + { + if (!filesystem::type_present(m_status)) + refresh_impl(&ec); + return m_status.type(); + } + + filesystem::file_type symlink_file_type() const + { + if (!filesystem::type_present(m_symlink_status)) + refresh_impl(); + return m_symlink_status.type(); + } + + filesystem::file_type symlink_file_type(system::error_code& ec) const BOOST_NOEXCEPT + { + if (!filesystem::type_present(m_symlink_status)) + refresh_impl(&ec); + return m_symlink_status.type(); + } + + bool exists() const + { + filesystem::file_type ft = this->file_type(); + return ft != filesystem::status_error && ft != filesystem::file_not_found; + } + + bool exists(system::error_code& ec) const BOOST_NOEXCEPT + { + filesystem::file_type ft = this->file_type(ec); + return ft != filesystem::status_error && ft != filesystem::file_not_found; + } + + bool is_regular_file() const + { + return this->file_type() == filesystem::regular_file; + } + + bool is_regular_file(system::error_code& ec) const BOOST_NOEXCEPT + { + return this->file_type(ec) == filesystem::regular_file; + } + + bool is_directory() const + { + return this->file_type() == filesystem::directory_file; + } + + bool is_directory(system::error_code& ec) const BOOST_NOEXCEPT + { + return this->file_type(ec) == filesystem::directory_file; + } + + bool is_symlink() const + { + return this->symlink_file_type() == filesystem::symlink_file; + } + + bool is_symlink(system::error_code& ec) const BOOST_NOEXCEPT + { + return this->symlink_file_type(ec) == filesystem::symlink_file; + } + + bool is_block_file() const + { + return this->file_type() == filesystem::block_file; + } + + bool is_block_file(system::error_code& ec) const BOOST_NOEXCEPT + { + return this->file_type(ec) == filesystem::block_file; + } + + bool is_character_file() const + { + return this->file_type() == filesystem::character_file; + } + + bool is_character_file(system::error_code& ec) const BOOST_NOEXCEPT + { + return this->file_type(ec) == filesystem::character_file; + } + + bool is_fifo() const + { + return this->file_type() == filesystem::fifo_file; + } + + bool is_fifo(system::error_code& ec) const BOOST_NOEXCEPT + { + return this->file_type(ec) == filesystem::fifo_file; + } + + bool is_socket() const + { + return this->file_type() == filesystem::socket_file; + } + + bool is_socket(system::error_code& ec) const BOOST_NOEXCEPT + { + return this->file_type(ec) == filesystem::socket_file; + } + + bool is_reparse_file() const + { + return this->symlink_file_type() == filesystem::reparse_file; + } + + bool is_reparse_file(system::error_code& ec) const BOOST_NOEXCEPT + { + return this->symlink_file_type(ec) == filesystem::reparse_file; + } + + bool is_other() const + { + filesystem::file_type ft = this->file_type(); + return ft != filesystem::status_error && ft != filesystem::file_not_found && + ft != filesystem::regular_file && ft != filesystem::directory_file; + } + + bool is_other(system::error_code& ec) const BOOST_NOEXCEPT + { + filesystem::file_type ft = this->file_type(ec); + return ft != filesystem::status_error && ft != filesystem::file_not_found && + ft != filesystem::regular_file && ft != filesystem::directory_file; + } + + bool operator==(directory_entry const& rhs) const { return m_path == rhs.m_path; } + bool operator!=(directory_entry const& rhs) const { return m_path != rhs.m_path; } + bool operator<(directory_entry const& rhs) const { return m_path < rhs.m_path; } + bool operator<=(directory_entry const& rhs) const { return m_path <= rhs.m_path; } + bool operator>(directory_entry const& rhs) const { return m_path > rhs.m_path; } + bool operator>=(directory_entry const& rhs) const { return m_path >= rhs.m_path; } + +private: + BOOST_FILESYSTEM_DECL void refresh_impl(system::error_code* ec = NULL) const; + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + void assign_with_status(boost::filesystem::path&& p, file_status st, file_status symlink_st) + { + m_path = static_cast< boost::filesystem::path&& >(p); + m_status = static_cast< file_status&& >(st); + m_symlink_status = static_cast< file_status&& >(symlink_st); + } +#endif + + void assign_with_status(boost::filesystem::path const& p, file_status st, file_status symlink_st) + { + m_path = p; +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + m_status = static_cast< file_status&& >(st); + m_symlink_status = static_cast< file_status&& >(symlink_st); +#else + m_status = st; + m_symlink_status = symlink_st; +#endif + } + + void replace_filename_with_status(boost::filesystem::path const& p, file_status st, file_status symlink_st) + { + m_path.replace_filename(p); +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + m_status = static_cast< file_status&& >(st); + m_symlink_status = static_cast< file_status&& >(symlink_st); +#else + m_status = st; + m_symlink_status = symlink_st; +#endif + } + +private: + boost::filesystem::path m_path; + mutable file_status m_status; // stat()-like + mutable file_status m_symlink_status; // lstat()-like +}; + +#if !defined(BOOST_FILESYSTEM_SOURCE) + +inline directory_entry::directory_entry(boost::filesystem::path const& p) : + m_path(p) +{ +#if BOOST_FILESYSTEM_VERSION >= 4 + refresh_impl(); +#endif +} + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +inline void directory_entry::assign(boost::filesystem::path&& p) +{ + m_path = static_cast< boost::filesystem::path&& >(p); +#if BOOST_FILESYSTEM_VERSION >= 4 + refresh_impl(); +#else + m_status = file_status(); + m_symlink_status = file_status(); +#endif +} +#endif // !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + +inline void directory_entry::assign(boost::filesystem::path const& p) +{ + m_path = p; +#if BOOST_FILESYSTEM_VERSION >= 4 + refresh_impl(); +#else + m_status = file_status(); + m_symlink_status = file_status(); +#endif +} + +inline void directory_entry::replace_filename(boost::filesystem::path const& p) +{ + m_path.replace_filename(p); +#if BOOST_FILESYSTEM_VERSION >= 4 + refresh_impl(); +#else + m_status = file_status(); + m_symlink_status = file_status(); +#endif +} + +#endif // !defined(BOOST_FILESYSTEM_SOURCE) + +namespace detail { +namespace path_traits { + +// Dispatch function for integration with path class +template< typename Callback > +BOOST_FORCEINLINE typename Callback::result_type dispatch(directory_entry const& de, Callback cb, const codecvt_type* cvt, directory_entry_tag) +{ + boost::filesystem::path::string_type const& source = de.path().native(); + return cb(source.data(), source.data() + source.size(), cvt); +} + +} // namespace path_traits +} // namespace detail + +//--------------------------------------------------------------------------------------// +// // +// directory_entry overloads // +// // +//--------------------------------------------------------------------------------------// + +// Without these functions, calling (for example) 'is_directory' with a 'directory_entry' results in: +// - a conversion to 'path' using 'operator boost::filesystem::path const&()', +// - then a call to 'is_directory(path const& p)' which recomputes the status with 'detail::status(p)'. +// +// These functions avoid a costly recomputation of the status if one calls 'is_directory(e)' instead of 'is_directory(e.status())' + +inline file_status status(directory_entry const& e) +{ + return e.status(); +} + +inline file_status status(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.status(ec); +} + +inline file_status symlink_status(directory_entry const& e) +{ + return e.symlink_status(); +} + +inline file_status symlink_status(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.symlink_status(ec); +} + +inline bool type_present(directory_entry const& e) +{ + return e.file_type() != filesystem::status_error; +} + +inline bool type_present(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.file_type(ec) != filesystem::status_error; +} + +inline bool status_known(directory_entry const& e) +{ + return filesystem::status_known(e.status()); +} + +inline bool status_known(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::status_known(e.status(ec)); +} + +inline bool exists(directory_entry const& e) +{ + return e.exists(); +} + +inline bool exists(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.exists(ec); +} + +inline bool is_regular_file(directory_entry const& e) +{ + return e.is_regular_file(); +} + +inline bool is_regular_file(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.is_regular_file(ec); +} + +inline bool is_directory(directory_entry const& e) +{ + return e.is_directory(); +} + +inline bool is_directory(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.is_directory(ec); +} + +inline bool is_symlink(directory_entry const& e) +{ + return e.is_symlink(); +} + +inline bool is_symlink(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.is_symlink(ec); +} + +inline bool is_block_file(directory_entry const& e) +{ + return e.is_block_file(); +} + +inline bool is_block_file(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.is_block_file(ec); +} + +inline bool is_character_file(directory_entry const& e) +{ + return e.is_character_file(); +} + +inline bool is_character_file(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.is_character_file(ec); +} + +inline bool is_fifo(directory_entry const& e) +{ + return e.is_fifo(); +} + +inline bool is_fifo(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.is_fifo(ec); +} + +inline bool is_socket(directory_entry const& e) +{ + return e.is_socket(); +} + +inline bool is_socket(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.is_socket(ec); +} + +inline bool is_reparse_file(directory_entry const& e) +{ + return e.is_reparse_file(); +} + +inline bool is_reparse_file(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.is_reparse_file(ec); +} + +inline bool is_other(directory_entry const& e) +{ + return e.is_other(); +} + +inline bool is_other(directory_entry const& e, system::error_code& ec) BOOST_NOEXCEPT +{ + return e.is_other(ec); +} + +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use is_regular_file() instead") +inline bool is_regular(directory_entry const& e) +{ + return filesystem::is_regular_file(e); +} +#endif + +//--------------------------------------------------------------------------------------// +// // +// directory_iterator helpers // +// // +//--------------------------------------------------------------------------------------// + +BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(directory_options, unsigned int) +{ + none = 0u, + skip_permission_denied = 1u, // if a directory cannot be opened because of insufficient permissions, pretend that the directory is empty + follow_directory_symlink = 1u << 1u, // recursive_directory_iterator: follow directory symlinks + skip_dangling_symlinks = 1u << 2u, // non-standard extension for recursive_directory_iterator: don't follow dangling directory symlinks, + pop_on_error = 1u << 3u, // non-standard extension for recursive_directory_iterator: instead of producing an end iterator on errors, + // repeatedly invoke pop() until it succeeds or the iterator becomes equal to end iterator + _detail_no_follow = 1u << 4u, // internal use only + _detail_no_push = 1u << 5u // internal use only +} +BOOST_SCOPED_ENUM_DECLARE_END(directory_options) + +BOOST_BITMASK(BOOST_SCOPED_ENUM_NATIVE(directory_options)) + +namespace detail { + +struct dir_itr_imp : + public boost::intrusive_ref_counter< dir_itr_imp > +{ +#ifdef BOOST_WINDOWS_API + bool close_handle; + unsigned char extra_data_format; + std::size_t current_offset; +#endif + directory_entry dir_entry; + void* handle; + + dir_itr_imp() BOOST_NOEXCEPT : +#ifdef BOOST_WINDOWS_API + close_handle(false), + extra_data_format(0u), + current_offset(0u), +#endif + handle(NULL) + { + } + BOOST_FILESYSTEM_DECL ~dir_itr_imp() BOOST_NOEXCEPT; + + BOOST_FILESYSTEM_DECL static void* operator new(std::size_t class_size, std::size_t extra_size) BOOST_NOEXCEPT; + BOOST_FILESYSTEM_DECL static void operator delete(void* p, std::size_t extra_size) BOOST_NOEXCEPT; + BOOST_FILESYSTEM_DECL static void operator delete(void* p) BOOST_NOEXCEPT; +}; + +} // namespace detail + +//--------------------------------------------------------------------------------------// +// // +// directory_iterator // +// // +//--------------------------------------------------------------------------------------// + +class directory_iterator : + public boost::iterator_facade< + directory_iterator, + directory_entry, + boost::single_pass_traversal_tag + > +{ + friend class boost::iterator_core_access; + + friend BOOST_FILESYSTEM_DECL void detail::directory_iterator_construct(directory_iterator& it, path const& p, unsigned int opts, detail::directory_iterator_params* params, system::error_code* ec); + friend BOOST_FILESYSTEM_DECL void detail::directory_iterator_increment(directory_iterator& it, system::error_code* ec); + +public: + directory_iterator() BOOST_NOEXCEPT {} // creates the "end" iterator + + // iterator_facade derived classes don't seem to like implementations in + // separate translation unit dll's, so forward to detail functions + explicit directory_iterator(path const& p, BOOST_SCOPED_ENUM_NATIVE(directory_options) opts = directory_options::none) + { + detail::directory_iterator_construct(*this, p, static_cast< unsigned int >(opts), NULL, NULL); + } + + directory_iterator(path const& p, system::error_code& ec) BOOST_NOEXCEPT + { + detail::directory_iterator_construct(*this, p, static_cast< unsigned int >(directory_options::none), NULL, &ec); + } + + directory_iterator(path const& p, BOOST_SCOPED_ENUM_NATIVE(directory_options) opts, system::error_code& ec) BOOST_NOEXCEPT + { + detail::directory_iterator_construct(*this, p, static_cast< unsigned int >(opts), NULL, &ec); + } + + BOOST_DEFAULTED_FUNCTION(directory_iterator(directory_iterator const& that), : m_imp(that.m_imp) {}) + BOOST_DEFAULTED_FUNCTION(directory_iterator& operator=(directory_iterator const& that), { m_imp = that.m_imp; return *this; }) + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + directory_iterator(directory_iterator&& that) BOOST_NOEXCEPT : + m_imp(static_cast< boost::intrusive_ptr< detail::dir_itr_imp >&& >(that.m_imp)) + { + } + + directory_iterator& operator=(directory_iterator&& that) BOOST_NOEXCEPT + { + m_imp = static_cast< boost::intrusive_ptr< detail::dir_itr_imp >&& >(that.m_imp); + return *this; + } +#endif // !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + + directory_iterator& increment(system::error_code& ec) BOOST_NOEXCEPT + { + detail::directory_iterator_increment(*this, &ec); + return *this; + } + +private: + boost::iterator_facade< + directory_iterator, + directory_entry, + boost::single_pass_traversal_tag + >::reference dereference() const + { + BOOST_ASSERT_MSG(!is_end(), "attempt to dereference end directory iterator"); + return m_imp->dir_entry; + } + + void increment() { detail::directory_iterator_increment(*this, NULL); } + + bool equal(directory_iterator const& rhs) const BOOST_NOEXCEPT + { + return m_imp == rhs.m_imp || (is_end() && rhs.is_end()); + } + + bool is_end() const BOOST_NOEXCEPT + { + // Note: The check for handle is needed because the iterator can be copied and the copy + // can be incremented to end while the original iterator still refers to the same dir_itr_imp. + return !m_imp || !m_imp->handle; + } + +private: + // intrusive_ptr provides the shallow-copy semantics required for single pass iterators + // (i.e. InputIterators). The end iterator is indicated by is_end(). + boost::intrusive_ptr< detail::dir_itr_imp > m_imp; +}; + +// enable directory_iterator C++11 range-based for statement use --------------------// + +// begin() and end() are only used by a range-based for statement in the context of +// auto - thus the top-level const is stripped - so returning const is harmless and +// emphasizes begin() is just a pass through. +inline directory_iterator const& begin(directory_iterator const& iter) BOOST_NOEXCEPT +{ + return iter; +} + +inline directory_iterator end(directory_iterator const&) BOOST_NOEXCEPT +{ + return directory_iterator(); +} + +// enable C++14 generic accessors for range const iterators +inline directory_iterator const& cbegin(directory_iterator const& iter) BOOST_NOEXCEPT +{ + return iter; +} + +inline directory_iterator cend(directory_iterator const&) BOOST_NOEXCEPT +{ + return directory_iterator(); +} + +// enable directory_iterator BOOST_FOREACH -----------------------------------------// + +inline directory_iterator& range_begin(directory_iterator& iter) BOOST_NOEXCEPT +{ + return iter; +} + +inline directory_iterator range_begin(directory_iterator const& iter) BOOST_NOEXCEPT +{ + return iter; +} + +inline directory_iterator range_end(directory_iterator&) BOOST_NOEXCEPT +{ + return directory_iterator(); +} + +inline directory_iterator range_end(directory_iterator const&) BOOST_NOEXCEPT +{ + return directory_iterator(); +} + +} // namespace filesystem + +// namespace boost template specializations +template< typename C, typename Enabler > +struct range_mutable_iterator; + +template<> +struct range_mutable_iterator< boost::filesystem::directory_iterator, void > +{ + typedef boost::filesystem::directory_iterator type; +}; + +template< typename C, typename Enabler > +struct range_const_iterator; + +template<> +struct range_const_iterator< boost::filesystem::directory_iterator, void > +{ + typedef boost::filesystem::directory_iterator type; +}; + +namespace filesystem { + +//--------------------------------------------------------------------------------------// +// // +// recursive_directory_iterator helpers // +// // +//--------------------------------------------------------------------------------------// + +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) +// Deprecated enum, use directory_options instead +BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(symlink_option, unsigned int) +{ + none = static_cast< unsigned int >(directory_options::none), + no_recurse = none, // don't follow directory symlinks (default behavior) + recurse = static_cast< unsigned int >(directory_options::follow_directory_symlink), // follow directory symlinks + _detail_no_push = static_cast< unsigned int >(directory_options::_detail_no_push) // internal use only +} +BOOST_SCOPED_ENUM_DECLARE_END(symlink_option) + +BOOST_BITMASK(BOOST_SCOPED_ENUM_NATIVE(symlink_option)) +#endif // BOOST_FILESYSTEM_NO_DEPRECATED + +class recursive_directory_iterator; + +namespace detail { + +struct recur_dir_itr_imp : + public boost::intrusive_ref_counter< recur_dir_itr_imp > +{ + typedef directory_iterator element_type; + std::vector< element_type > m_stack; + // directory_options values, declared as unsigned int for ABI compatibility + unsigned int m_options; + + explicit recur_dir_itr_imp(unsigned int opts) BOOST_NOEXCEPT : m_options(opts) {} +}; + +BOOST_FILESYSTEM_DECL void recursive_directory_iterator_construct(recursive_directory_iterator& it, path const& dir_path, unsigned int opts, system::error_code* ec); +BOOST_FILESYSTEM_DECL void recursive_directory_iterator_increment(recursive_directory_iterator& it, system::error_code* ec); +BOOST_FILESYSTEM_DECL void recursive_directory_iterator_pop(recursive_directory_iterator& it, system::error_code* ec); + +} // namespace detail + +//--------------------------------------------------------------------------------------// +// // +// recursive_directory_iterator // +// // +//--------------------------------------------------------------------------------------// + +class recursive_directory_iterator : + public boost::iterator_facade< + recursive_directory_iterator, + directory_entry, + boost::single_pass_traversal_tag + > +{ + friend class boost::iterator_core_access; + + friend BOOST_FILESYSTEM_DECL void detail::recursive_directory_iterator_construct(recursive_directory_iterator& it, path const& dir_path, unsigned int opts, system::error_code* ec); + friend BOOST_FILESYSTEM_DECL void detail::recursive_directory_iterator_increment(recursive_directory_iterator& it, system::error_code* ec); + friend BOOST_FILESYSTEM_DECL void detail::recursive_directory_iterator_pop(recursive_directory_iterator& it, system::error_code* ec); + +public: + recursive_directory_iterator() BOOST_NOEXCEPT {} // creates the "end" iterator + + explicit recursive_directory_iterator(path const& dir_path) + { + detail::recursive_directory_iterator_construct(*this, dir_path, static_cast< unsigned int >(directory_options::none), NULL); + } + + recursive_directory_iterator(path const& dir_path, system::error_code& ec) + { + detail::recursive_directory_iterator_construct(*this, dir_path, static_cast< unsigned int >(directory_options::none), &ec); + } + + recursive_directory_iterator(path const& dir_path, BOOST_SCOPED_ENUM_NATIVE(directory_options) opts) + { + detail::recursive_directory_iterator_construct(*this, dir_path, static_cast< unsigned int >(opts), NULL); + } + + recursive_directory_iterator(path const& dir_path, BOOST_SCOPED_ENUM_NATIVE(directory_options) opts, system::error_code& ec) + { + detail::recursive_directory_iterator_construct(*this, dir_path, static_cast< unsigned int >(opts), &ec); + } + +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) + // Deprecated constructors + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use directory_options instead of symlink_option") + recursive_directory_iterator(path const& dir_path, BOOST_SCOPED_ENUM_NATIVE(symlink_option) opts) + { + detail::recursive_directory_iterator_construct(*this, dir_path, static_cast< unsigned int >(opts), NULL); + } + + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use directory_options instead of symlink_option") + recursive_directory_iterator(path const& dir_path, BOOST_SCOPED_ENUM_NATIVE(symlink_option) opts, system::error_code& ec) BOOST_NOEXCEPT + { + detail::recursive_directory_iterator_construct(*this, dir_path, static_cast< unsigned int >(opts), &ec); + } +#endif // BOOST_FILESYSTEM_NO_DEPRECATED + + BOOST_DEFAULTED_FUNCTION(recursive_directory_iterator(recursive_directory_iterator const& that), : m_imp(that.m_imp) {}) + BOOST_DEFAULTED_FUNCTION(recursive_directory_iterator& operator=(recursive_directory_iterator const& that), { m_imp = that.m_imp; return *this; }) + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + recursive_directory_iterator(recursive_directory_iterator&& that) BOOST_NOEXCEPT : + m_imp(static_cast< boost::intrusive_ptr< detail::recur_dir_itr_imp >&& >(that.m_imp)) + { + } + + recursive_directory_iterator& operator=(recursive_directory_iterator&& that) BOOST_NOEXCEPT + { + m_imp = static_cast< boost::intrusive_ptr< detail::recur_dir_itr_imp >&& >(that.m_imp); + return *this; + } +#endif // !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + + recursive_directory_iterator& increment(system::error_code& ec) BOOST_NOEXCEPT + { + detail::recursive_directory_iterator_increment(*this, &ec); + return *this; + } + + int depth() const BOOST_NOEXCEPT + { + BOOST_ASSERT_MSG(!is_end(), "depth() on end recursive_directory_iterator"); + return static_cast< int >(m_imp->m_stack.size() - 1u); + } + + bool recursion_pending() const BOOST_NOEXCEPT + { + BOOST_ASSERT_MSG(!is_end(), "recursion_pending() on end recursive_directory_iterator"); + return (m_imp->m_options & static_cast< unsigned int >(directory_options::_detail_no_push)) == 0u; + } + +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use recursive_directory_iterator::depth() instead") + int level() const BOOST_NOEXCEPT + { + return depth(); + } + bool no_push_pending() const BOOST_NOEXCEPT { return !recursion_pending(); } + bool no_push_request() const BOOST_NOEXCEPT { return !recursion_pending(); } +#endif + + void pop() + { + detail::recursive_directory_iterator_pop(*this, NULL); + } + + void pop(system::error_code& ec) BOOST_NOEXCEPT + { + detail::recursive_directory_iterator_pop(*this, &ec); + } + + void disable_recursion_pending(bool value = true) BOOST_NOEXCEPT + { + BOOST_ASSERT_MSG(!is_end(), "disable_recursion_pending() on end recursive_directory_iterator"); + if (value) + m_imp->m_options |= static_cast< unsigned int >(directory_options::_detail_no_push); + else + m_imp->m_options &= ~static_cast< unsigned int >(directory_options::_detail_no_push); + } + +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use recursive_directory_iterator::disable_recursion_pending() instead") + void no_push(bool value = true) BOOST_NOEXCEPT + { + disable_recursion_pending(value); + } +#endif + + file_status status() const + { + BOOST_ASSERT_MSG(!is_end(), "status() on end recursive_directory_iterator"); + return m_imp->m_stack.back()->status(); + } + + file_status symlink_status() const + { + BOOST_ASSERT_MSG(!is_end(), "symlink_status() on end recursive_directory_iterator"); + return m_imp->m_stack.back()->symlink_status(); + } + +private: + boost::iterator_facade< + recursive_directory_iterator, + directory_entry, + boost::single_pass_traversal_tag + >::reference dereference() const + { + BOOST_ASSERT_MSG(!is_end(), "dereference of end recursive_directory_iterator"); + return *m_imp->m_stack.back(); + } + + void increment() { detail::recursive_directory_iterator_increment(*this, NULL); } + + bool equal(recursive_directory_iterator const& rhs) const BOOST_NOEXCEPT + { + return m_imp == rhs.m_imp || (is_end() && rhs.is_end()); + } + + bool is_end() const BOOST_NOEXCEPT + { + // Note: The check for m_stack.empty() is needed because the iterator can be copied and the copy + // can be incremented to end while the original iterator still refers to the same recur_dir_itr_imp. + return !m_imp || m_imp->m_stack.empty(); + } + +private: + // intrusive_ptr provides the shallow-copy semantics required for single pass iterators + // (i.e. InputIterators). The end iterator is indicated by is_end(). + boost::intrusive_ptr< detail::recur_dir_itr_imp > m_imp; +}; + +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use recursive_directory_iterator instead") +typedef recursive_directory_iterator wrecursive_directory_iterator; +#endif + +// enable recursive directory iterator C++11 range-base for statement use ----------// + +// begin() and end() are only used by a range-based for statement in the context of +// auto - thus the top-level const is stripped - so returning const is harmless and +// emphasizes begin() is just a pass through. +inline recursive_directory_iterator const& begin(recursive_directory_iterator const& iter) BOOST_NOEXCEPT +{ + return iter; +} + +inline recursive_directory_iterator end(recursive_directory_iterator const&) BOOST_NOEXCEPT +{ + return recursive_directory_iterator(); +} + +// enable C++14 generic accessors for range const iterators +inline recursive_directory_iterator const& cbegin(recursive_directory_iterator const& iter) BOOST_NOEXCEPT +{ + return iter; +} + +inline recursive_directory_iterator cend(recursive_directory_iterator const&) BOOST_NOEXCEPT +{ + return recursive_directory_iterator(); +} + +// enable recursive directory iterator BOOST_FOREACH -------------------------------// + +inline recursive_directory_iterator& range_begin(recursive_directory_iterator& iter) BOOST_NOEXCEPT +{ + return iter; +} + +inline recursive_directory_iterator range_begin(recursive_directory_iterator const& iter) BOOST_NOEXCEPT +{ + return iter; +} + +inline recursive_directory_iterator range_end(recursive_directory_iterator&) BOOST_NOEXCEPT +{ + return recursive_directory_iterator(); +} + +inline recursive_directory_iterator range_end(recursive_directory_iterator const&) BOOST_NOEXCEPT +{ + return recursive_directory_iterator(); +} + +} // namespace filesystem + +// namespace boost template specializations +template<> +struct range_mutable_iterator< boost::filesystem::recursive_directory_iterator, void > +{ + typedef boost::filesystem::recursive_directory_iterator type; +}; + +template<> +struct range_const_iterator< boost::filesystem::recursive_directory_iterator, void > +{ + typedef boost::filesystem::recursive_directory_iterator type; +}; + +} // namespace boost + +#include + +#endif // BOOST_FILESYSTEM_DIRECTORY_HPP diff --git a/src/boost/boost/filesystem/exception.hpp b/src/boost/boost/filesystem/exception.hpp new file mode 100644 index 000000000..100495b7d --- /dev/null +++ b/src/boost/boost/filesystem/exception.hpp @@ -0,0 +1,92 @@ +// boost/filesystem/exception.hpp -----------------------------------------------------// + +// Copyright Beman Dawes 2003 +// Copyright Andrey Semashev 2019 + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// Library home page: http://www.boost.org/libs/filesystem + +#ifndef BOOST_FILESYSTEM_EXCEPTION_HPP +#define BOOST_FILESYSTEM_EXCEPTION_HPP + +#include +#include + +#include +#include +#include +#include +#include + +#include // must be the last #include + +namespace boost { +namespace filesystem { + +//--------------------------------------------------------------------------------------// +// // +// class filesystem_error // +// // +//--------------------------------------------------------------------------------------// + +class BOOST_SYMBOL_VISIBLE filesystem_error : + public system::system_error +{ + // see http://www.boost.org/more/error_handling.html for design rationale + +public: + BOOST_FILESYSTEM_DECL filesystem_error(const char* what_arg, system::error_code ec); + BOOST_FILESYSTEM_DECL filesystem_error(std::string const& what_arg, system::error_code ec); + BOOST_FILESYSTEM_DECL filesystem_error(const char* what_arg, path const& path1_arg, system::error_code ec); + BOOST_FILESYSTEM_DECL filesystem_error(std::string const& what_arg, path const& path1_arg, system::error_code ec); + BOOST_FILESYSTEM_DECL filesystem_error(const char* what_arg, path const& path1_arg, path const& path2_arg, system::error_code ec); + BOOST_FILESYSTEM_DECL filesystem_error(std::string const& what_arg, path const& path1_arg, path const& path2_arg, system::error_code ec); + + BOOST_FILESYSTEM_DECL filesystem_error(filesystem_error const& that); + BOOST_FILESYSTEM_DECL filesystem_error& operator=(filesystem_error const& that); + + BOOST_FILESYSTEM_DECL ~filesystem_error() BOOST_NOEXCEPT_OR_NOTHROW; + + path const& path1() const BOOST_NOEXCEPT + { + return m_imp_ptr.get() ? m_imp_ptr->m_path1 : get_empty_path(); + } + path const& path2() const BOOST_NOEXCEPT + { + return m_imp_ptr.get() ? m_imp_ptr->m_path2 : get_empty_path(); + } + + BOOST_FILESYSTEM_DECL const char* what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE; + +private: + BOOST_FILESYSTEM_DECL static path const& get_empty_path() BOOST_NOEXCEPT; + +private: + struct impl : + public boost::intrusive_ref_counter< impl > + { + path m_path1; // may be empty() + path m_path2; // may be empty() + std::string m_what; // not built until needed + + BOOST_DEFAULTED_FUNCTION(impl(), {}) + explicit impl(path const& path1) : + m_path1(path1) + { + } + impl(path const& path1, path const& path2) : + m_path1(path1), m_path2(path2) + { + } + }; + boost::intrusive_ptr< impl > m_imp_ptr; +}; + +} // namespace filesystem +} // namespace boost + +#include + +#endif // BOOST_FILESYSTEM_EXCEPTION_HPP diff --git a/src/boost/boost/filesystem/file_status.hpp b/src/boost/boost/filesystem/file_status.hpp new file mode 100644 index 000000000..76d4fb9b2 --- /dev/null +++ b/src/boost/boost/filesystem/file_status.hpp @@ -0,0 +1,269 @@ +// boost/filesystem/file_status.hpp --------------------------------------------------// + +// Copyright Beman Dawes 2002-2009 +// Copyright Jan Langer 2002 +// Copyright Dietmar Kuehl 2001 +// Copyright Vladimir Prus 2002 +// Copyright Andrey Semashev 2019 + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// Library home page: http://www.boost.org/libs/filesystem + +//--------------------------------------------------------------------------------------// + +#ifndef BOOST_FILESYSTEM_FILE_STATUS_HPP +#define BOOST_FILESYSTEM_FILE_STATUS_HPP + +#include +#include + +#include // must be the last #include + +//--------------------------------------------------------------------------------------// + +namespace boost { +namespace filesystem { + +//--------------------------------------------------------------------------------------// +// file_type // +//--------------------------------------------------------------------------------------// + +enum file_type +{ + status_error, +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED + status_unknown = status_error, +#endif + file_not_found, + regular_file, + directory_file, + // the following may not apply to some operating systems or file systems + symlink_file, + block_file, + character_file, + fifo_file, + socket_file, + reparse_file, // Windows: FILE_ATTRIBUTE_REPARSE_POINT that is not a symlink + type_unknown // file does exist, but isn't one of the above types or + // we don't have strong enough permission to find its type +}; + +//--------------------------------------------------------------------------------------// +// perms // +//--------------------------------------------------------------------------------------// + +enum perms +{ + no_perms = 0, // file_not_found is no_perms rather than perms_not_known + + // POSIX equivalent macros given in comments. + // Values are from POSIX and are given in octal per the POSIX standard. + + // permission bits + + owner_read = 0400, // S_IRUSR, Read permission, owner + owner_write = 0200, // S_IWUSR, Write permission, owner + owner_exe = 0100, // S_IXUSR, Execute/search permission, owner + owner_all = 0700, // S_IRWXU, Read, write, execute/search by owner + + group_read = 040, // S_IRGRP, Read permission, group + group_write = 020, // S_IWGRP, Write permission, group + group_exe = 010, // S_IXGRP, Execute/search permission, group + group_all = 070, // S_IRWXG, Read, write, execute/search by group + + others_read = 04, // S_IROTH, Read permission, others + others_write = 02, // S_IWOTH, Write permission, others + others_exe = 01, // S_IXOTH, Execute/search permission, others + others_all = 07, // S_IRWXO, Read, write, execute/search by others + + all_all = 0777, // owner_all|group_all|others_all + + // other POSIX bits + + set_uid_on_exe = 04000, // S_ISUID, Set-user-ID on execution + set_gid_on_exe = 02000, // S_ISGID, Set-group-ID on execution + sticky_bit = 01000, // S_ISVTX, + // (POSIX XSI) On directories, restricted deletion flag + // (V7) 'sticky bit': save swapped text even after use + // (SunOS) On non-directories: don't cache this file + // (SVID-v4.2) On directories: restricted deletion flag + // Also see http://en.wikipedia.org/wiki/Sticky_bit + + perms_mask = 07777, // all_all|set_uid_on_exe|set_gid_on_exe|sticky_bit + + perms_not_known = 0xFFFF, // present when directory_entry cache not loaded + + // options for permissions() function + + add_perms = 0x1000, // adds the given permission bits to the current bits + remove_perms = 0x2000, // removes the given permission bits from the current bits; + // choose add_perms or remove_perms, not both; if neither add_perms + // nor remove_perms is given, replace the current bits with + // the given bits. + + symlink_perms = 0x4000, // on POSIX, don't resolve symlinks; implied on Windows + + // BOOST_BITMASK op~ casts to int32_least_t, producing invalid enum values + _detail_extend_perms_32_1 = 0x7fffffff, + _detail_extend_perms_32_2 = -0x7fffffff - 1 +}; + +BOOST_BITMASK(perms) + +//--------------------------------------------------------------------------------------// +// file_status // +//--------------------------------------------------------------------------------------// + +class file_status +{ +public: + BOOST_CONSTEXPR file_status() BOOST_NOEXCEPT : + m_value(status_error), + m_perms(perms_not_known) + { + } + explicit BOOST_CONSTEXPR file_status(file_type v) BOOST_NOEXCEPT : + m_value(v), + m_perms(perms_not_known) + { + } + BOOST_CONSTEXPR file_status(file_type v, perms prms) BOOST_NOEXCEPT : + m_value(v), + m_perms(prms) + { + } + + // As of October 2015 the interaction between noexcept and =default is so troublesome + // for VC++, GCC, and probably other compilers, that =default is not used with noexcept + // functions. GCC is not even consistent for the same release on different platforms. + + BOOST_CONSTEXPR file_status(file_status const& rhs) BOOST_NOEXCEPT : + m_value(rhs.m_value), + m_perms(rhs.m_perms) + { + } + BOOST_CXX14_CONSTEXPR file_status& operator=(file_status const& rhs) BOOST_NOEXCEPT + { + m_value = rhs.m_value; + m_perms = rhs.m_perms; + return *this; + } + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + // Note: std::move is not constexpr in C++11, that's why we're not using it here + BOOST_CONSTEXPR file_status(file_status&& rhs) BOOST_NOEXCEPT : + m_value(static_cast< file_type&& >(rhs.m_value)), + m_perms(static_cast< perms&& >(rhs.m_perms)) + { + } + BOOST_CXX14_CONSTEXPR file_status& operator=(file_status&& rhs) BOOST_NOEXCEPT + { + m_value = static_cast< file_type&& >(rhs.m_value); + m_perms = static_cast< perms&& >(rhs.m_perms); + return *this; + } +#endif + + // observers + BOOST_CONSTEXPR file_type type() const BOOST_NOEXCEPT { return m_value; } + BOOST_CONSTEXPR perms permissions() const BOOST_NOEXCEPT { return m_perms; } + + // modifiers + BOOST_CXX14_CONSTEXPR void type(file_type v) BOOST_NOEXCEPT { m_value = v; } + BOOST_CXX14_CONSTEXPR void permissions(perms prms) BOOST_NOEXCEPT { m_perms = prms; } + + BOOST_CONSTEXPR bool operator==(file_status const& rhs) const BOOST_NOEXCEPT + { + return type() == rhs.type() && permissions() == rhs.permissions(); + } + BOOST_CONSTEXPR bool operator!=(file_status const& rhs) const BOOST_NOEXCEPT + { + return !(*this == rhs); + } + +private: + file_type m_value; + perms m_perms; +}; + +inline BOOST_CONSTEXPR bool type_present(file_status f) BOOST_NOEXCEPT +{ + return f.type() != filesystem::status_error; +} + +inline BOOST_CONSTEXPR bool permissions_present(file_status f) BOOST_NOEXCEPT +{ + return f.permissions() != filesystem::perms_not_known; +} + +inline BOOST_CONSTEXPR bool status_known(file_status f) BOOST_NOEXCEPT +{ + return filesystem::type_present(f) && filesystem::permissions_present(f); +} + +inline BOOST_CONSTEXPR bool exists(file_status f) BOOST_NOEXCEPT +{ + return f.type() != filesystem::status_error && f.type() != filesystem::file_not_found; +} + +inline BOOST_CONSTEXPR bool is_regular_file(file_status f) BOOST_NOEXCEPT +{ + return f.type() == filesystem::regular_file; +} + +inline BOOST_CONSTEXPR bool is_directory(file_status f) BOOST_NOEXCEPT +{ + return f.type() == filesystem::directory_file; +} + +inline BOOST_CONSTEXPR bool is_symlink(file_status f) BOOST_NOEXCEPT +{ + return f.type() == filesystem::symlink_file; +} + +inline BOOST_CONSTEXPR bool is_block_file(file_status f) BOOST_NOEXCEPT +{ + return f.type() == filesystem::block_file; +} + +inline BOOST_CONSTEXPR bool is_character_file(file_status f) BOOST_NOEXCEPT +{ + return f.type() == filesystem::character_file; +} + +inline BOOST_CONSTEXPR bool is_fifo(file_status f) BOOST_NOEXCEPT +{ + return f.type() == filesystem::fifo_file; +} + +inline BOOST_CONSTEXPR bool is_socket(file_status f) BOOST_NOEXCEPT +{ + return f.type() == filesystem::socket_file; +} + +inline BOOST_CONSTEXPR bool is_reparse_file(file_status f) BOOST_NOEXCEPT +{ + return f.type() == filesystem::reparse_file; +} + +inline BOOST_CONSTEXPR bool is_other(file_status f) BOOST_NOEXCEPT +{ + return filesystem::exists(f) && !filesystem::is_regular_file(f) && !filesystem::is_directory(f) && !filesystem::is_symlink(f); +} + +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use is_regular_file() instead") +inline bool is_regular(file_status f) BOOST_NOEXCEPT +{ + return filesystem::is_regular_file(f); +} +#endif + +} // namespace filesystem +} // namespace boost + +#include // pops abi_prefix.hpp pragmas + +#endif // BOOST_FILESYSTEM_FILE_STATUS_HPP diff --git a/src/boost/boost/filesystem/fstream.hpp b/src/boost/boost/filesystem/fstream.hpp index ddd25e4ac..5a7801eda 100644 --- a/src/boost/boost/filesystem/fstream.hpp +++ b/src/boost/boost/filesystem/fstream.hpp @@ -1,182 +1,269 @@ // boost/filesystem/fstream.hpp ------------------------------------------------------// // Copyright Beman Dawes 2002 +// Copyright Andrey Semashev 2021-2023 // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt // Library home page: http://www.boost.org/libs/filesystem -//--------------------------------------------------------------------------------------// - -#ifndef BOOST_FILESYSTEM3_FSTREAM_HPP -#define BOOST_FILESYSTEM3_FSTREAM_HPP - -#include +//--------------------------------------------------------------------------------------// -# if defined( BOOST_NO_STD_WSTRING ) -# error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support -# endif +#ifndef BOOST_FILESYSTEM_FSTREAM_HPP +#define BOOST_FILESYSTEM_FSTREAM_HPP +#include #include +#include #include #include -#include // must be the last #include +#include // must be the last #include + +#if defined(BOOST_WINDOWS_API) +// On Windows, except for standard libaries known to have wchar_t overloads for +// file stream I/O, use path::string() to get a narrow character c_str() +#if (defined(_CPPLIB_VER) && _CPPLIB_VER >= 405 && !defined(_STLPORT_VERSION)) || \ + (defined(_LIBCPP_VERSION) && _LIBCPP_VERSION >= 7000 && defined(_LIBCPP_HAS_OPEN_WITH_WCHAR)) +// Use wide characters directly +// Note: We don't use C++17 std::filesystem::path as a means to pass wide paths +// to file streams because of various problems: +// - std::filesystem is available in gcc 8 but it is broken there (fails to compile path definition +// on Windows). Compilation errors seem to be fixed since gcc 9. +// - In gcc 10.2 and clang 8.0.1 on Cygwin64, the path attempts to convert the wide string to narrow +// and fails in runtime. This may be system locale dependent, and performing character code conversion +// is against the purpose of using std::filesystem::path anyway. +// - Other std::filesystem implementations were not tested, so it is not known if they actually work +// with wide paths. +#define BOOST_FILESYSTEM_C_STR(p) p.c_str() +#else +// Use narrow characters, since wide not available +#define BOOST_FILESYSTEM_C_STR(p) p.string().c_str() +#endif +#endif // defined(BOOST_WINDOWS_API) -// on Windows, except for standard libaries known to have wchar_t overloads for -// file stream I/O, use path::string() to get a narrow character c_str() -#if defined(BOOST_WINDOWS_API) \ - && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 405 || defined(_STLPORT_VERSION)) - // !Dinkumware || early Dinkumware || STLPort masquerading as Dinkumware -# define BOOST_FILESYSTEM_C_STR string().c_str() // use narrow, since wide not available -#else // use the native c_str, which will be narrow on POSIX, wide on Windows -# define BOOST_FILESYSTEM_C_STR c_str() +#if !defined(BOOST_FILESYSTEM_C_STR) +#define BOOST_FILESYSTEM_C_STR(p) p.c_str() #endif -namespace boost -{ -namespace filesystem -{ +#if defined(BOOST_MSVC) +#pragma warning(push) +// 'boost::filesystem::basic_fstream' : inherits 'std::basic_istream<_Elem,_Traits>::std::basic_istream<_Elem,_Traits>::_Add_vtordisp1' via dominance +#pragma warning(disable : 4250) +#endif + +namespace boost { +namespace filesystem { //--------------------------------------------------------------------------------------// // basic_filebuf // //--------------------------------------------------------------------------------------// - template < class charT, class traits = std::char_traits > - class basic_filebuf : public std::basic_filebuf - { - private: // disallow copying - basic_filebuf(const basic_filebuf&); - const basic_filebuf& operator=(const basic_filebuf&); +template< class Char, class Traits = std::char_traits< Char > > +class basic_filebuf : + public std::basic_filebuf< Char, Traits > +{ +private: + typedef std::basic_filebuf< Char, Traits > base_type; + +public: + BOOST_DEFAULTED_FUNCTION(basic_filebuf(), {}) + +#if !defined(BOOST_FILESYSTEM_DETAIL_NO_CXX11_MOVABLE_FSTREAMS) +#if !defined(BOOST_NO_CXX11_DEFAULTED_MOVES) + basic_filebuf(basic_filebuf&&) = default; + basic_filebuf& operator= (basic_filebuf&&) = default; +#else + basic_filebuf(basic_filebuf&& that) : + base_type(static_cast< base_type&& >(that)) {} + + basic_filebuf& operator= (basic_filebuf&& that) + { + *static_cast< base_type* >(this) = static_cast< base_type&& >(that); + return *this; + } +#endif +#endif // !defined(BOOST_FILESYSTEM_DETAIL_NO_CXX11_MOVABLE_FSTREAMS) - public: - basic_filebuf() {} - virtual ~basic_filebuf() {} + BOOST_DELETED_FUNCTION(basic_filebuf(basic_filebuf const&)) + BOOST_DELETED_FUNCTION(basic_filebuf const& operator= (basic_filebuf const&)) - basic_filebuf* - open(const path& p, std::ios_base::openmode mode) +public: + basic_filebuf* open(path const& p, std::ios_base::openmode mode) { - return std::basic_filebuf::open(p.BOOST_FILESYSTEM_C_STR, mode) - ? this : 0; + return base_type::open(BOOST_FILESYSTEM_C_STR(p), mode) ? this : NULL; } - }; +}; //--------------------------------------------------------------------------------------// // basic_ifstream // //--------------------------------------------------------------------------------------// - template < class charT, class traits = std::char_traits > - class basic_ifstream : public std::basic_ifstream - { - private: // disallow copying - basic_ifstream(const basic_ifstream&); - const basic_ifstream& operator=(const basic_ifstream&); +template< class Char, class Traits = std::char_traits< Char > > +class basic_ifstream : + public std::basic_ifstream< Char, Traits > +{ +private: + typedef std::basic_ifstream< Char, Traits > base_type; - public: - basic_ifstream() {} +public: + BOOST_DEFAULTED_FUNCTION(basic_ifstream(), {}) // use two signatures, rather than one signature with default second // argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416) - explicit basic_ifstream(const path& p) - : std::basic_ifstream(p.BOOST_FILESYSTEM_C_STR, std::ios_base::in) {} + explicit basic_ifstream(path const& p) : + base_type(BOOST_FILESYSTEM_C_STR(p), std::ios_base::in) {} + + basic_ifstream(path const& p, std::ios_base::openmode mode) : + base_type(BOOST_FILESYSTEM_C_STR(p), mode) {} + +#if !defined(BOOST_FILESYSTEM_DETAIL_NO_CXX11_MOVABLE_FSTREAMS) + basic_ifstream(basic_ifstream&& that) : + base_type(static_cast< base_type&& >(that)) {} - basic_ifstream(const path& p, std::ios_base::openmode mode) - : std::basic_ifstream(p.BOOST_FILESYSTEM_C_STR, mode) {} + basic_ifstream& operator= (basic_ifstream&& that) + { + *static_cast< base_type* >(this) = static_cast< base_type&& >(that); + return *this; + } +#endif - void open(const path& p) - { std::basic_ifstream::open(p.BOOST_FILESYSTEM_C_STR, std::ios_base::in); } + BOOST_DELETED_FUNCTION(basic_ifstream(basic_ifstream const&)) + BOOST_DELETED_FUNCTION(basic_ifstream const& operator= (basic_ifstream const&)) - void open(const path& p, std::ios_base::openmode mode) - { std::basic_ifstream::open(p.BOOST_FILESYSTEM_C_STR, mode); } +public: + void open(path const& p) + { + base_type::open(BOOST_FILESYSTEM_C_STR(p), std::ios_base::in); + } - virtual ~basic_ifstream() {} - }; + void open(path const& p, std::ios_base::openmode mode) + { + base_type::open(BOOST_FILESYSTEM_C_STR(p), mode); + } +}; //--------------------------------------------------------------------------------------// // basic_ofstream // //--------------------------------------------------------------------------------------// - template < class charT, class traits = std::char_traits > - class basic_ofstream : public std::basic_ofstream - { - private: // disallow copying - basic_ofstream(const basic_ofstream&); - const basic_ofstream& operator=(const basic_ofstream&); +template< class Char, class Traits = std::char_traits< Char > > +class basic_ofstream : + public std::basic_ofstream< Char, Traits > +{ +private: + typedef std::basic_ofstream< Char, Traits > base_type; - public: - basic_ofstream() {} +public: + BOOST_DEFAULTED_FUNCTION(basic_ofstream(), {}) // use two signatures, rather than one signature with default second // argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416) - explicit basic_ofstream(const path& p) - : std::basic_ofstream(p.BOOST_FILESYSTEM_C_STR, std::ios_base::out) {} + explicit basic_ofstream(path const& p) : + base_type(BOOST_FILESYSTEM_C_STR(p), std::ios_base::out) {} + + basic_ofstream(path const& p, std::ios_base::openmode mode) : + base_type(BOOST_FILESYSTEM_C_STR(p), mode) {} - basic_ofstream(const path& p, std::ios_base::openmode mode) - : std::basic_ofstream(p.BOOST_FILESYSTEM_C_STR, mode) {} +#if !defined(BOOST_FILESYSTEM_DETAIL_NO_CXX11_MOVABLE_FSTREAMS) + basic_ofstream(basic_ofstream&& that) : + base_type(static_cast< base_type&& >(that)) {} + + basic_ofstream& operator= (basic_ofstream&& that) + { + *static_cast< base_type* >(this) = static_cast< base_type&& >(that); + return *this; + } +#endif - void open(const path& p) - { std::basic_ofstream::open(p.BOOST_FILESYSTEM_C_STR, std::ios_base::out); } + BOOST_DELETED_FUNCTION(basic_ofstream(basic_ofstream const&)) + BOOST_DELETED_FUNCTION(basic_ofstream const& operator= (basic_ofstream const&)) - void open(const path& p, std::ios_base::openmode mode) - { std::basic_ofstream::open(p.BOOST_FILESYSTEM_C_STR, mode); } +public: + void open(path const& p) + { + base_type::open(BOOST_FILESYSTEM_C_STR(p), std::ios_base::out); + } - virtual ~basic_ofstream() {} - }; + void open(path const& p, std::ios_base::openmode mode) + { + base_type::open(BOOST_FILESYSTEM_C_STR(p), mode); + } +}; //--------------------------------------------------------------------------------------// // basic_fstream // //--------------------------------------------------------------------------------------// - template < class charT, class traits = std::char_traits > - class basic_fstream : public std::basic_fstream - { - private: // disallow copying - basic_fstream(const basic_fstream&); - const basic_fstream & operator=(const basic_fstream&); +template< class Char, class Traits = std::char_traits< Char > > +class basic_fstream : + public std::basic_fstream< Char, Traits > +{ +private: + typedef std::basic_fstream< Char, Traits > base_type; - public: - basic_fstream() {} +public: + BOOST_DEFAULTED_FUNCTION(basic_fstream(), {}) // use two signatures, rather than one signature with default second // argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416) - explicit basic_fstream(const path& p) - : std::basic_fstream(p.BOOST_FILESYSTEM_C_STR, - std::ios_base::in | std::ios_base::out) {} + explicit basic_fstream(path const& p) : + base_type(BOOST_FILESYSTEM_C_STR(p), std::ios_base::in | std::ios_base::out) {} - basic_fstream(const path& p, std::ios_base::openmode mode) - : std::basic_fstream(p.BOOST_FILESYSTEM_C_STR, mode) {} + basic_fstream(path const& p, std::ios_base::openmode mode) : + base_type(BOOST_FILESYSTEM_C_STR(p), mode) {} - void open(const path& p) - { std::basic_fstream::open(p.BOOST_FILESYSTEM_C_STR, - std::ios_base::in | std::ios_base::out); } +#if !defined(BOOST_FILESYSTEM_DETAIL_NO_CXX11_MOVABLE_FSTREAMS) + basic_fstream(basic_fstream&& that) : + base_type(static_cast< base_type&& >(that)) {} - void open(const path& p, std::ios_base::openmode mode) - { std::basic_fstream::open(p.BOOST_FILESYSTEM_C_STR, mode); } + basic_fstream& operator= (basic_fstream&& that) + { + *static_cast< base_type* >(this) = static_cast< base_type&& >(that); + return *this; + } +#endif - virtual ~basic_fstream() {} + BOOST_DELETED_FUNCTION(basic_fstream(basic_fstream const&)) + BOOST_DELETED_FUNCTION(basic_fstream const& operator= (basic_fstream const&)) + +public: + void open(path const& p) + { + base_type::open(BOOST_FILESYSTEM_C_STR(p), std::ios_base::in | std::ios_base::out); + } - }; + void open(path const& p, std::ios_base::openmode mode) + { + base_type::open(BOOST_FILESYSTEM_C_STR(p), mode); + } +}; //--------------------------------------------------------------------------------------// // typedefs // //--------------------------------------------------------------------------------------// - typedef basic_filebuf filebuf; - typedef basic_ifstream ifstream; - typedef basic_ofstream ofstream; - typedef basic_fstream fstream; +typedef basic_filebuf< char > filebuf; +typedef basic_ifstream< char > ifstream; +typedef basic_ofstream< char > ofstream; +typedef basic_fstream< char > fstream; + +typedef basic_filebuf< wchar_t > wfilebuf; +typedef basic_ifstream< wchar_t > wifstream; +typedef basic_ofstream< wchar_t > wofstream; +typedef basic_fstream< wchar_t > wfstream; - typedef basic_filebuf wfilebuf; - typedef basic_ifstream wifstream; - typedef basic_ofstream wofstream; - typedef basic_fstream wfstream; - } // namespace filesystem } // namespace boost -#include // pops abi_prefix.hpp pragmas -#endif // BOOST_FILESYSTEM3_FSTREAM_HPP +#if defined(BOOST_MSVC) +#pragma warning(pop) +#endif + +#include + +#endif // BOOST_FILESYSTEM_FSTREAM_HPP diff --git a/src/boost/boost/filesystem/operations.hpp b/src/boost/boost/filesystem/operations.hpp index 72ac95fc9..47a673e87 100644 --- a/src/boost/boost/filesystem/operations.hpp +++ b/src/boost/boost/filesystem/operations.hpp @@ -2,9 +2,10 @@ // Copyright Beman Dawes 2002-2009 // Copyright Jan Langer 2002 -// Copyright Dietmar Kuehl 2001 +// Copyright Dietmar Kuehl 2001 // Copyright Vladimir Prus 2002 - +// Copyright Andrey Semashev 2020-2021 + // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt @@ -12,1351 +13,751 @@ //--------------------------------------------------------------------------------------// -#ifndef BOOST_FILESYSTEM3_OPERATIONS_HPP -#define BOOST_FILESYSTEM3_OPERATIONS_HPP - -#include - -# if defined( BOOST_NO_STD_WSTRING ) -# error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support -# endif +#ifndef BOOST_FILESYSTEM_OPERATIONS_HPP +#define BOOST_FILESYSTEM_OPERATIONS_HPP #include #include +#include + +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED +// These includes are left for backward compatibility and should be included directly by users, as needed +#include +#include +#endif -#include #include +#include #include -#include -#include -#include -#include #include -#include -#include -#include // for pair +#include #include -#include -#include - -#ifdef BOOST_WINDOWS_API -# include -#endif +#include -#include // must be the last #include +#include // must be the last #include //--------------------------------------------------------------------------------------// -namespace boost -{ - namespace filesystem - { - - //--------------------------------------------------------------------------------------// - // // - // class filesystem_error // - // // - //--------------------------------------------------------------------------------------// - - class BOOST_SYMBOL_VISIBLE filesystem_error : public system::system_error - { - // see http://www.boost.org/more/error_handling.html for design rationale - - // all functions are inline to avoid issues with crossing dll boundaries - - // functions previously throw() are now BOOST_NOEXCEPT_OR_NOTHROW - // functions previously without throw() are now BOOST_NOEXCEPT - - public: - // compiler generates copy constructor and copy assignment - - filesystem_error( - const std::string & what_arg, system::error_code ec) BOOST_NOEXCEPT - : system::system_error(ec, what_arg) - { - try - { - m_imp_ptr.reset(new m_imp); - } - catch (...) { m_imp_ptr.reset(); } - } - - filesystem_error( - const std::string & what_arg, const path& path1_arg, - system::error_code ec) BOOST_NOEXCEPT - : system::system_error(ec, what_arg) - { - try - { - m_imp_ptr.reset(new m_imp); - m_imp_ptr->m_path1 = path1_arg; - } - catch (...) { m_imp_ptr.reset(); } - } - - filesystem_error( - const std::string & what_arg, const path& path1_arg, - const path& path2_arg, system::error_code ec) BOOST_NOEXCEPT - : system::system_error(ec, what_arg) - { - try - { - m_imp_ptr.reset(new m_imp); - m_imp_ptr->m_path1 = path1_arg; - m_imp_ptr->m_path2 = path2_arg; - } - catch (...) { m_imp_ptr.reset(); } - } - - ~filesystem_error() BOOST_NOEXCEPT_OR_NOTHROW{} - - const path& path1() const BOOST_NOEXCEPT - { - static const path empty_path; - return m_imp_ptr.get() ? m_imp_ptr->m_path1 : empty_path; - } - const path& path2() const BOOST_NOEXCEPT - { - static const path empty_path; - return m_imp_ptr.get() ? m_imp_ptr->m_path2 : empty_path; - } - - const char* what() const BOOST_NOEXCEPT_OR_NOTHROW - { - if (!m_imp_ptr.get()) - return system::system_error::what(); - - try - { - if (m_imp_ptr->m_what.empty()) - { - m_imp_ptr->m_what = system::system_error::what(); - if (!m_imp_ptr->m_path1.empty()) - { - m_imp_ptr->m_what += ": \""; - m_imp_ptr->m_what += m_imp_ptr->m_path1.string(); - m_imp_ptr->m_what += "\""; - } - if (!m_imp_ptr->m_path2.empty()) - { - m_imp_ptr->m_what += ", \""; - m_imp_ptr->m_what += m_imp_ptr->m_path2.string(); - m_imp_ptr->m_what += "\""; - } - } - return m_imp_ptr->m_what.c_str(); - } - catch (...) - { - return system::system_error::what(); - } - } - - private: - struct m_imp - { - path m_path1; // may be empty() - path m_path2; // may be empty() - std::string m_what; // not built until needed - }; - boost::shared_ptr m_imp_ptr; - }; +namespace boost { +namespace filesystem { + +struct space_info +{ + // all values are byte counts + boost::uintmax_t capacity; + boost::uintmax_t free; // <= capacity + boost::uintmax_t available; // <= free +}; + +BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(copy_options, unsigned int) +{ + none = 0u, // Default. For copy_file: error if the target file exists. For copy: do not recurse, follow symlinks, copy file contents. + + // copy_file options: + skip_existing = 1u, // Don't overwrite the existing target file, don't report an error + overwrite_existing = 1u << 1, // Overwrite existing file + update_existing = 1u << 2, // Overwrite existing file if its last write time is older than the replacement file + synchronize_data = 1u << 3, // Flush all buffered data written to the target file to permanent storage + synchronize = 1u << 4, // Flush all buffered data and attributes written to the target file to permanent storage + + // copy options: + recursive = 1u << 8, // Recurse into sub-directories + copy_symlinks = 1u << 9, // Copy symlinks as symlinks instead of copying the referenced file + skip_symlinks = 1u << 10, // Don't copy symlinks + directories_only = 1u << 11, // Only copy directory structure, do not copy non-directory files + create_symlinks = 1u << 12, // Create symlinks instead of copying files + create_hard_links = 1u << 13, // Create hard links instead of copying files + _detail_recursing = 1u << 14 // Internal use only, do not use +} +BOOST_SCOPED_ENUM_DECLARE_END(copy_options) + +BOOST_BITMASK(BOOST_SCOPED_ENUM_NATIVE(copy_options)) + +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) +BOOST_SCOPED_ENUM_DECLARE_BEGIN(copy_option) +{ + none = static_cast< unsigned int >(copy_options::none), + fail_if_exists = none, + overwrite_if_exists = static_cast< unsigned int >(copy_options::overwrite_existing) +} +BOOST_SCOPED_ENUM_DECLARE_END(copy_option) +#endif //--------------------------------------------------------------------------------------// -// file_type // +// implementation details // //--------------------------------------------------------------------------------------// - enum file_type - { - status_error, -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED - status_unknown = status_error, -# endif - file_not_found, - regular_file, - directory_file, - // the following may not apply to some operating systems or file systems - symlink_file, - block_file, - character_file, - fifo_file, - socket_file, - reparse_file, // Windows: FILE_ATTRIBUTE_REPARSE_POINT that is not a symlink - type_unknown, // file does exist, but isn't one of the above types or - // we don't have strong enough permission to find its type - - _detail_directory_symlink // internal use only; never exposed to users - }; +namespace detail { + +BOOST_FILESYSTEM_DECL +path absolute(path const& p, path const& base, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +file_status status(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +file_status symlink_status(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +bool is_empty(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +path initial_path(system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +path canonical(path const& p, path const& base, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +void copy(path const& from, path const& to, unsigned int options, system::error_code* ec = NULL); +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) +BOOST_FILESYSTEM_DECL +void copy_directory(path const& from, path const& to, system::error_code* ec = NULL); +#endif +BOOST_FILESYSTEM_DECL +bool copy_file(path const& from, path const& to, // See ticket #2925 + unsigned int options, system::error_code* ec = NULL); // see copy_options for options +BOOST_FILESYSTEM_DECL +void copy_symlink(path const& existing_symlink, path const& new_symlink, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +bool create_directories(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +bool create_directory(path const& p, const path* existing, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +void create_directory_symlink(path const& to, path const& from, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +void create_hard_link(path const& to, path const& from, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +void create_symlink(path const& to, path const& from, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +path current_path(system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +void current_path(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +bool equivalent(path const& p1, path const& p2, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +boost::uintmax_t file_size(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +boost::uintmax_t hard_link_count(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +std::time_t creation_time(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +std::time_t last_write_time(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +void last_write_time(path const& p, const std::time_t new_time, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +void permissions(path const& p, perms prms, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +path read_symlink(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +path relative(path const& p, path const& base, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +bool remove(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +boost::uintmax_t remove_all(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +void rename(path const& old_p, path const& new_p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +void resize_file(path const& p, uintmax_t size, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +space_info space(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +path system_complete(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +path temp_directory_path(system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +path unique_path(path const& p, system::error_code* ec = NULL); +BOOST_FILESYSTEM_DECL +path weakly_canonical(path const& p, path const& base, system::error_code* ec = NULL); + +} // namespace detail //--------------------------------------------------------------------------------------// -// perms // +// // +// status query functions // +// // //--------------------------------------------------------------------------------------// - enum perms - { - no_perms = 0, // file_not_found is no_perms rather than perms_not_known +inline file_status status(path const& p) +{ + return detail::status(p); +} - // POSIX equivalent macros given in comments. - // Values are from POSIX and are given in octal per the POSIX standard. +inline file_status status(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::status(p, &ec); +} - // permission bits - - owner_read = 0400, // S_IRUSR, Read permission, owner - owner_write = 0200, // S_IWUSR, Write permission, owner - owner_exe = 0100, // S_IXUSR, Execute/search permission, owner - owner_all = 0700, // S_IRWXU, Read, write, execute/search by owner +inline file_status symlink_status(path const& p) +{ + return detail::symlink_status(p); +} - group_read = 040, // S_IRGRP, Read permission, group - group_write = 020, // S_IWGRP, Write permission, group - group_exe = 010, // S_IXGRP, Execute/search permission, group - group_all = 070, // S_IRWXG, Read, write, execute/search by group +inline file_status symlink_status(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::symlink_status(p, &ec); +} - others_read = 04, // S_IROTH, Read permission, others - others_write = 02, // S_IWOTH, Write permission, others - others_exe = 01, // S_IXOTH, Execute/search permission, others - others_all = 07, // S_IRWXO, Read, write, execute/search by others +inline bool exists(path const& p) +{ + return filesystem::exists(detail::status(p)); +} + +inline bool exists(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::exists(detail::status(p, &ec)); +} - all_all = 0777, // owner_all|group_all|others_all +inline bool is_regular_file(path const& p) +{ + return filesystem::is_regular_file(detail::status(p)); +} - // other POSIX bits +inline bool is_regular_file(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::is_regular_file(detail::status(p, &ec)); +} - set_uid_on_exe = 04000, // S_ISUID, Set-user-ID on execution - set_gid_on_exe = 02000, // S_ISGID, Set-group-ID on execution - sticky_bit = 01000, // S_ISVTX, - // (POSIX XSI) On directories, restricted deletion flag - // (V7) 'sticky bit': save swapped text even after use - // (SunOS) On non-directories: don't cache this file - // (SVID-v4.2) On directories: restricted deletion flag - // Also see http://en.wikipedia.org/wiki/Sticky_bit +inline bool is_directory(path const& p) +{ + return filesystem::is_directory(detail::status(p)); +} - perms_mask = 07777, // all_all|set_uid_on_exe|set_gid_on_exe|sticky_bit +inline bool is_directory(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::is_directory(detail::status(p, &ec)); +} - perms_not_known = 0xFFFF, // present when directory_entry cache not loaded +inline bool is_symlink(path const& p) +{ + return filesystem::is_symlink(detail::symlink_status(p)); +} - // options for permissions() function +inline bool is_symlink(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::is_symlink(detail::symlink_status(p, &ec)); +} - add_perms = 0x1000, // adds the given permission bits to the current bits - remove_perms = 0x2000, // removes the given permission bits from the current bits; - // choose add_perms or remove_perms, not both; if neither add_perms - // nor remove_perms is given, replace the current bits with - // the given bits. +inline bool is_block_file(path const& p) +{ + return filesystem::is_block_file(detail::status(p)); +} - symlink_perms = 0x4000, // on POSIX, don't resolve symlinks; implied on Windows +inline bool is_block_file(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::is_block_file(detail::status(p, &ec)); +} - // BOOST_BITMASK op~ casts to int32_least_t, producing invalid enum values - _detail_extend_perms_32_1 = 0x7fffffff, - _detail_extend_perms_32_2 = -0x7fffffff-1 - }; +inline bool is_character_file(path const& p) +{ + return filesystem::is_character_file(detail::status(p)); +} - BOOST_BITMASK(perms) +inline bool is_character_file(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::is_character_file(detail::status(p, &ec)); +} -//--------------------------------------------------------------------------------------// -// file_status // -//--------------------------------------------------------------------------------------// +inline bool is_fifo(path const& p) +{ + return filesystem::is_fifo(detail::status(p)); +} - class BOOST_FILESYSTEM_DECL file_status - { - public: - file_status() BOOST_NOEXCEPT - : m_value(status_error), m_perms(perms_not_known) {} - explicit file_status(file_type v) BOOST_NOEXCEPT - : m_value(v), m_perms(perms_not_known) {} - file_status(file_type v, perms prms) BOOST_NOEXCEPT - : m_value(v), m_perms(prms) {} - - // As of October 2015 the interaction between noexcept and =default is so troublesome - // for VC++, GCC, and probably other compilers, that =default is not used with noexcept - // functions. GCC is not even consistent for the same release on different platforms. - - file_status(const file_status& rhs) BOOST_NOEXCEPT - : m_value(rhs.m_value), m_perms(rhs.m_perms) {} - file_status& operator=(const file_status& rhs) BOOST_NOEXCEPT - { - m_value = rhs.m_value; - m_perms = rhs.m_perms; - return *this; - } - -# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - file_status(file_status&& rhs) BOOST_NOEXCEPT - { - m_value = std::move(rhs.m_value); - m_perms = std::move(rhs.m_perms); - } - file_status& operator=(file_status&& rhs) BOOST_NOEXCEPT - { - m_value = std::move(rhs.m_value); - m_perms = std::move(rhs.m_perms); - return *this; - } -# endif - - - // observers - file_type type() const BOOST_NOEXCEPT { return m_value; } - perms permissions() const BOOST_NOEXCEPT { return m_perms; } - - // modifiers - void type(file_type v) BOOST_NOEXCEPT { m_value = v; } - void permissions(perms prms) BOOST_NOEXCEPT { m_perms = prms; } - - bool operator==(const file_status& rhs) const BOOST_NOEXCEPT - { return type() == rhs.type() && - permissions() == rhs.permissions(); } - bool operator!=(const file_status& rhs) const BOOST_NOEXCEPT - { return !(*this == rhs); } - - private: - file_type m_value; - enum perms m_perms; - }; - - inline bool type_present(file_status f) BOOST_NOEXCEPT - { return f.type() != status_error; } - inline bool permissions_present(file_status f) BOOST_NOEXCEPT - {return f.permissions() != perms_not_known;} - inline bool status_known(file_status f) BOOST_NOEXCEPT - { return type_present(f) && permissions_present(f); } - inline bool exists(file_status f) BOOST_NOEXCEPT - { return f.type() != status_error - && f.type() != file_not_found; } - inline bool is_regular_file(file_status f) BOOST_NOEXCEPT - { return f.type() == regular_file; } - inline bool is_directory(file_status f) BOOST_NOEXCEPT - { return f.type() == directory_file; } - inline bool is_symlink(file_status f) BOOST_NOEXCEPT - { return f.type() == symlink_file; } - inline bool is_other(file_status f) BOOST_NOEXCEPT - { return exists(f) && !is_regular_file(f) - && !is_directory(f) && !is_symlink(f); } - -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED - inline bool is_regular(file_status f) BOOST_NOEXCEPT { return f.type() == regular_file; } -# endif - - struct space_info - { - // all values are byte counts - boost::uintmax_t capacity; - boost::uintmax_t free; // <= capacity - boost::uintmax_t available; // <= free - }; +inline bool is_fifo(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::is_fifo(detail::status(p, &ec)); +} - BOOST_SCOPED_ENUM_START(copy_option) - {none=0, fail_if_exists = none, overwrite_if_exists}; - BOOST_SCOPED_ENUM_END +inline bool is_socket(path const& p) +{ + return filesystem::is_socket(detail::status(p)); +} -//--------------------------------------------------------------------------------------// -// implementation details // -//--------------------------------------------------------------------------------------// +inline bool is_socket(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::is_socket(detail::status(p, &ec)); +} - namespace detail - { - // We cannot pass a BOOST_SCOPED_ENUM to a compled function because it will result - // in an undefined reference if the library is compled with -std=c++0x but the use - // is compiled in C++03 mode, or visa versa. See tickets 6124, 6779, 10038. - enum copy_option {none=0, fail_if_exists = none, overwrite_if_exists}; - - BOOST_FILESYSTEM_DECL - file_status status(const path&p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - file_status symlink_status(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - bool is_empty(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - path initial_path(system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - path canonical(const path& p, const path& base, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void copy(const path& from, const path& to, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void copy_directory(const path& from, const path& to, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void copy_file(const path& from, const path& to, // See ticket #2925 - detail::copy_option option, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void copy_symlink(const path& existing_symlink, const path& new_symlink, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - bool create_directories(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - bool create_directory(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void create_directory_symlink(const path& to, const path& from, - system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void create_hard_link(const path& to, const path& from, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void create_symlink(const path& to, const path& from, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - path current_path(system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void current_path(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - bool equivalent(const path& p1, const path& p2, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - boost::uintmax_t file_size(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - boost::uintmax_t hard_link_count(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - std::time_t last_write_time(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void last_write_time(const path& p, const std::time_t new_time, - system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void permissions(const path& p, perms prms, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - path read_symlink(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - path relative(const path& p, const path& base, system::error_code* ec = 0); - BOOST_FILESYSTEM_DECL - bool remove(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - boost::uintmax_t remove_all(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void rename(const path& old_p, const path& new_p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - void resize_file(const path& p, uintmax_t size, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - space_info space(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - path system_complete(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - path temp_directory_path(system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - path unique_path(const path& p, system::error_code* ec=0); - BOOST_FILESYSTEM_DECL - path weakly_canonical(const path& p, system::error_code* ec = 0); - } // namespace detail +inline bool is_reparse_file(path const& p) +{ + return filesystem::is_reparse_file(detail::symlink_status(p)); +} -//--------------------------------------------------------------------------------------// -// // -// status query functions // -// // -//--------------------------------------------------------------------------------------// +inline bool is_reparse_file(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::is_reparse_file(detail::symlink_status(p, &ec)); +} - inline - file_status status(const path& p) {return detail::status(p);} - inline - file_status status(const path& p, system::error_code& ec) - {return detail::status(p, &ec);} - inline - file_status symlink_status(const path& p) {return detail::symlink_status(p);} - inline - file_status symlink_status(const path& p, system::error_code& ec) - {return detail::symlink_status(p, &ec);} - inline - bool exists(const path& p) {return exists(detail::status(p));} - inline - bool exists(const path& p, system::error_code& ec) - {return exists(detail::status(p, &ec));} - inline - bool is_directory(const path& p) {return is_directory(detail::status(p));} - inline - bool is_directory(const path& p, system::error_code& ec) - {return is_directory(detail::status(p, &ec));} - inline - bool is_regular_file(const path& p) {return is_regular_file(detail::status(p));} - inline - bool is_regular_file(const path& p, system::error_code& ec) - {return is_regular_file(detail::status(p, &ec));} - inline - bool is_other(const path& p) {return is_other(detail::status(p));} - inline - bool is_other(const path& p, system::error_code& ec) - {return is_other(detail::status(p, &ec));} - inline - bool is_symlink(const path& p) {return is_symlink(detail::symlink_status(p));} - inline - bool is_symlink(const path& p, system::error_code& ec) - {return is_symlink(detail::symlink_status(p, &ec));} -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED - inline - bool is_regular(const path& p) {return is_regular(detail::status(p));} - inline - bool is_regular(const path& p, system::error_code& ec) - {return is_regular(detail::status(p, &ec));} -# endif - - inline - bool is_empty(const path& p) {return detail::is_empty(p);} - inline - bool is_empty(const path& p, system::error_code& ec) - {return detail::is_empty(p, &ec);} +inline bool is_other(path const& p) +{ + return filesystem::is_other(detail::status(p)); +} + +inline bool is_other(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::is_other(detail::status(p, &ec)); +} + +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use is_regular_file() instead") +inline bool is_regular(path const& p) +{ + return filesystem::is_regular_file(p); +} + +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use is_regular_file() instead") +inline bool is_regular(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return filesystem::is_regular_file(p, ec); +} +#endif + +inline bool is_empty(path const& p) +{ + return detail::is_empty(p); +} + +inline bool is_empty(path const& p, system::error_code& ec) +{ + return detail::is_empty(p, &ec); +} //--------------------------------------------------------------------------------------// // // // operational functions // -// in alphabetical order, unless otherwise noted // // // //--------------------------------------------------------------------------------------// - - // forward declarations - path current_path(); // fwd declaration - path initial_path(); - - BOOST_FILESYSTEM_DECL - path absolute(const path& p, const path& base=current_path()); - // If base.is_absolute(), throws nothing. Thus no need for ec argument - - inline - path canonical(const path& p, const path& base=current_path()) - {return detail::canonical(p, base);} - inline - path canonical(const path& p, system::error_code& ec) - {return detail::canonical(p, current_path(), &ec);} - inline - path canonical(const path& p, const path& base, system::error_code& ec) - {return detail::canonical(p, base, &ec);} - -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED - inline - path complete(const path& p) - { + +inline path initial_path() +{ + return detail::initial_path(); +} + +inline path initial_path(system::error_code& ec) +{ + return detail::initial_path(&ec); +} + +template< class Path > +path initial_path() +{ + return initial_path(); +} +template< class Path > +path initial_path(system::error_code& ec) +{ + return detail::initial_path(&ec); +} + +inline path current_path() +{ + return detail::current_path(); +} + +inline path current_path(system::error_code& ec) +{ + return detail::current_path(&ec); +} + +inline void current_path(path const& p) +{ + detail::current_path(p); +} + +inline void current_path(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::current_path(p, &ec); +} + +inline path absolute(path const& p, path const& base = current_path()) +{ + return detail::absolute(p, base); +} + +inline path absolute(path const& p, system::error_code& ec) +{ + path base = current_path(ec); + if (ec) + return path(); + return detail::absolute(p, base, &ec); +} + +inline path absolute(path const& p, path const& base, system::error_code& ec) +{ + return detail::absolute(p, base, &ec); +} + +inline path canonical(path const& p, path const& base = current_path()) +{ + return detail::canonical(p, base); +} + +inline path canonical(path const& p, system::error_code& ec) +{ + path base = current_path(ec); + if (ec) + return path(); + return detail::canonical(p, base, &ec); +} + +inline path canonical(path const& p, path const& base, system::error_code& ec) +{ + return detail::canonical(p, base, &ec); +} + +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use absolute() instead") +inline path complete(path const& p) +{ return absolute(p, initial_path()); - } +} - inline - path complete(const path& p, const path& base) - { +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use absolute() instead") +inline path complete(path const& p, path const& base) +{ return absolute(p, base); - } -# endif - - inline - void copy(const path& from, const path& to) {detail::copy(from, to);} - - inline - void copy(const path& from, const path& to, system::error_code& ec) BOOST_NOEXCEPT - {detail::copy(from, to, &ec);} - inline - void copy_directory(const path& from, const path& to) - {detail::copy_directory(from, to);} - inline - void copy_directory(const path& from, const path& to, system::error_code& ec) BOOST_NOEXCEPT - {detail::copy_directory(from, to, &ec);} - inline - void copy_file(const path& from, const path& to, // See ticket #2925 - BOOST_SCOPED_ENUM(copy_option) option) - { - detail::copy_file(from, to, static_cast(option)); - } - inline - void copy_file(const path& from, const path& to) - { - detail::copy_file(from, to, detail::fail_if_exists); - } - inline - void copy_file(const path& from, const path& to, // See ticket #2925 - BOOST_SCOPED_ENUM(copy_option) option, system::error_code& ec) BOOST_NOEXCEPT - { - detail::copy_file(from, to, static_cast(option), &ec); - } - inline - void copy_file(const path& from, const path& to, system::error_code& ec) BOOST_NOEXCEPT - { - detail::copy_file(from, to, detail::fail_if_exists, &ec); - } - inline - void copy_symlink(const path& existing_symlink, - const path& new_symlink) {detail::copy_symlink(existing_symlink, new_symlink);} - - inline - void copy_symlink(const path& existing_symlink, const path& new_symlink, - system::error_code& ec) BOOST_NOEXCEPT - {detail::copy_symlink(existing_symlink, new_symlink, &ec);} - inline - bool create_directories(const path& p) {return detail::create_directories(p);} - - inline - bool create_directories(const path& p, system::error_code& ec) BOOST_NOEXCEPT - {return detail::create_directories(p, &ec);} - inline - bool create_directory(const path& p) {return detail::create_directory(p);} - - inline - bool create_directory(const path& p, system::error_code& ec) BOOST_NOEXCEPT - {return detail::create_directory(p, &ec);} - inline - void create_directory_symlink(const path& to, const path& from) - {detail::create_directory_symlink(to, from);} - inline - void create_directory_symlink(const path& to, const path& from, system::error_code& ec) BOOST_NOEXCEPT - {detail::create_directory_symlink(to, from, &ec);} - inline - void create_hard_link(const path& to, const path& new_hard_link) {detail::create_hard_link(to, new_hard_link);} - - inline - void create_hard_link(const path& to, const path& new_hard_link, system::error_code& ec) BOOST_NOEXCEPT - {detail::create_hard_link(to, new_hard_link, &ec);} - inline - void create_symlink(const path& to, const path& new_symlink) {detail::create_symlink(to, new_symlink);} - - inline - void create_symlink(const path& to, const path& new_symlink, system::error_code& ec) BOOST_NOEXCEPT - {detail::create_symlink(to, new_symlink, &ec);} - inline - path current_path() {return detail::current_path();} - - inline - path current_path(system::error_code& ec) BOOST_NOEXCEPT {return detail::current_path(&ec);} - - inline - void current_path(const path& p) {detail::current_path(p);} - - inline - void current_path(const path& p, system::error_code& ec) BOOST_NOEXCEPT {detail::current_path(p, &ec);} - - inline - bool equivalent(const path& p1, const path& p2) {return detail::equivalent(p1, p2);} - - inline - bool equivalent(const path& p1, const path& p2, system::error_code& ec) BOOST_NOEXCEPT - {return detail::equivalent(p1, p2, &ec);} - inline - boost::uintmax_t file_size(const path& p) {return detail::file_size(p);} - - inline - boost::uintmax_t file_size(const path& p, system::error_code& ec) BOOST_NOEXCEPT - {return detail::file_size(p, &ec);} - inline - boost::uintmax_t hard_link_count(const path& p) {return detail::hard_link_count(p);} - - inline - boost::uintmax_t hard_link_count(const path& p, system::error_code& ec) BOOST_NOEXCEPT - {return detail::hard_link_count(p, &ec);} - inline - path initial_path() {return detail::initial_path();} - - inline - path initial_path(system::error_code& ec) {return detail::initial_path(&ec);} - - template - path initial_path() {return initial_path();} - template - path initial_path(system::error_code& ec) {return detail::initial_path(&ec);} - - inline - std::time_t last_write_time(const path& p) {return detail::last_write_time(p);} - - inline - std::time_t last_write_time(const path& p, system::error_code& ec) BOOST_NOEXCEPT - {return detail::last_write_time(p, &ec);} - inline - void last_write_time(const path& p, const std::time_t new_time) - {detail::last_write_time(p, new_time);} - inline - void last_write_time(const path& p, const std::time_t new_time, - system::error_code& ec) BOOST_NOEXCEPT - {detail::last_write_time(p, new_time, &ec);} - inline - void permissions(const path& p, perms prms) - {detail::permissions(p, prms);} - inline - void permissions(const path& p, perms prms, system::error_code& ec) BOOST_NOEXCEPT - {detail::permissions(p, prms, &ec);} - - inline - path read_symlink(const path& p) {return detail::read_symlink(p);} - - inline - path read_symlink(const path& p, system::error_code& ec) - {return detail::read_symlink(p, &ec);} - inline - // For standardization, if the committee doesn't like "remove", consider "eliminate" - bool remove(const path& p) {return detail::remove(p);} - - inline - bool remove(const path& p, system::error_code& ec) BOOST_NOEXCEPT - {return detail::remove(p, &ec);} - - inline - boost::uintmax_t remove_all(const path& p) {return detail::remove_all(p);} - - inline - boost::uintmax_t remove_all(const path& p, system::error_code& ec) BOOST_NOEXCEPT - {return detail::remove_all(p, &ec);} - inline - void rename(const path& old_p, const path& new_p) {detail::rename(old_p, new_p);} - - inline - void rename(const path& old_p, const path& new_p, system::error_code& ec) BOOST_NOEXCEPT - {detail::rename(old_p, new_p, &ec);} - inline // name suggested by Scott McMurray - void resize_file(const path& p, uintmax_t size) {detail::resize_file(p, size);} - - inline - void resize_file(const path& p, uintmax_t size, system::error_code& ec) BOOST_NOEXCEPT - {detail::resize_file(p, size, &ec);} - inline - path relative(const path& p, const path& base=current_path()) - {return detail::relative(p, base);} - inline - path relative(const path& p, system::error_code& ec) - {return detail::relative(p, current_path(), &ec);} - inline - path relative(const path& p, const path& base, system::error_code& ec) - {return detail::relative(p, base, &ec);} - inline - space_info space(const path& p) {return detail::space(p);} - - inline - space_info space(const path& p, system::error_code& ec) BOOST_NOEXCEPT - {return detail::space(p, &ec);} - -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED - inline bool symbolic_link_exists(const path& p) - { return is_symlink(symlink_status(p)); } -# endif - - inline - path system_complete(const path& p) {return detail::system_complete(p);} - - inline - path system_complete(const path& p, system::error_code& ec) - {return detail::system_complete(p, &ec);} - inline - path temp_directory_path() {return detail::temp_directory_path();} - - inline - path temp_directory_path(system::error_code& ec) - {return detail::temp_directory_path(&ec);} - inline - path unique_path(const path& p="%%%%-%%%%-%%%%-%%%%") - {return detail::unique_path(p);} - inline - path unique_path(const path& p, system::error_code& ec) - {return detail::unique_path(p, &ec);} - inline - path weakly_canonical(const path& p) {return detail::weakly_canonical(p);} - - inline - path weakly_canonical(const path& p, system::error_code& ec) - {return detail::weakly_canonical(p, &ec);} +} +#endif -//--------------------------------------------------------------------------------------// -// // -// directory_entry // -// // -//--------------------------------------------------------------------------------------// +inline void copy(path const& from, path const& to) +{ + detail::copy(from, to, static_cast< unsigned int >(copy_options::none)); +} + +inline void copy(path const& from, path const& to, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::copy(from, to, static_cast< unsigned int >(copy_options::none), &ec); +} + +inline void copy(path const& from, path const& to, BOOST_SCOPED_ENUM_NATIVE(copy_options) options) +{ + detail::copy(from, to, static_cast< unsigned int >(options)); +} + +inline void copy(path const& from, path const& to, BOOST_SCOPED_ENUM_NATIVE(copy_options) options, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::copy(from, to, static_cast< unsigned int >(options), &ec); +} -// GCC has a problem with a member function named path within a namespace or -// sub-namespace that also has a class named path. The workaround is to always -// fully qualify the name path when it refers to the class name. - -class BOOST_FILESYSTEM_DECL directory_entry -{ -public: - typedef boost::filesystem::path::value_type value_type; // enables class path ctor taking directory_entry - - directory_entry() BOOST_NOEXCEPT {} - explicit directory_entry(const boost::filesystem::path& p) - : m_path(p), m_status(file_status()), m_symlink_status(file_status()) - {} - directory_entry(const boost::filesystem::path& p, - file_status st, file_status symlink_st = file_status()) - : m_path(p), m_status(st), m_symlink_status(symlink_st) {} - - directory_entry(const directory_entry& rhs) - : m_path(rhs.m_path), m_status(rhs.m_status), m_symlink_status(rhs.m_symlink_status){} - - directory_entry& operator=(const directory_entry& rhs) - { - m_path = rhs.m_path; - m_status = rhs.m_status; - m_symlink_status = rhs.m_symlink_status; - return *this; - } - - // As of October 2015 the interaction between noexcept and =default is so troublesome - // for VC++, GCC, and probably other compilers, that =default is not used with noexcept - // functions. GCC is not even consistent for the same release on different platforms. - -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - directory_entry(directory_entry&& rhs) BOOST_NOEXCEPT - { - m_path = std::move(rhs.m_path); - m_status = std::move(rhs.m_status); - m_symlink_status = std::move(rhs.m_symlink_status); - } - directory_entry& operator=(directory_entry&& rhs) BOOST_NOEXCEPT - { - m_path = std::move(rhs.m_path); - m_status = std::move(rhs.m_status); - m_symlink_status = std::move(rhs.m_symlink_status); - return *this; - } +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use create_directory() instead") +inline void copy_directory(path const& from, path const& to) +{ + detail::copy_directory(from, to); +} + +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use create_directory() instead") +inline void copy_directory(path const& from, path const& to, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::copy_directory(from, to, &ec); +} #endif - void assign(const boost::filesystem::path& p, - file_status st = file_status(), file_status symlink_st = file_status()) - { m_path = p; m_status = st; m_symlink_status = symlink_st; } - - void replace_filename(const boost::filesystem::path& p, - file_status st = file_status(), file_status symlink_st = file_status()) - { - m_path.remove_filename(); - m_path /= p; - m_status = st; - m_symlink_status = symlink_st; - } - -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED - void replace_leaf(const boost::filesystem::path& p, - file_status st, file_status symlink_st) - { replace_filename(p, st, symlink_st); } -# endif - - const boost::filesystem::path& path() const BOOST_NOEXCEPT {return m_path;} - operator const boost::filesystem::path&() const BOOST_NOEXCEPT - {return m_path;} - file_status status() const {return m_get_status();} - file_status status(system::error_code& ec) const BOOST_NOEXCEPT - {return m_get_status(&ec); } - file_status symlink_status() const {return m_get_symlink_status();} - file_status symlink_status(system::error_code& ec) const BOOST_NOEXCEPT - {return m_get_symlink_status(&ec); } - - bool operator==(const directory_entry& rhs) const BOOST_NOEXCEPT {return m_path == rhs.m_path; } - bool operator!=(const directory_entry& rhs) const BOOST_NOEXCEPT {return m_path != rhs.m_path;} - bool operator< (const directory_entry& rhs) const BOOST_NOEXCEPT {return m_path < rhs.m_path;} - bool operator<=(const directory_entry& rhs) const BOOST_NOEXCEPT {return m_path <= rhs.m_path;} - bool operator> (const directory_entry& rhs) const BOOST_NOEXCEPT {return m_path > rhs.m_path;} - bool operator>=(const directory_entry& rhs) const BOOST_NOEXCEPT {return m_path >= rhs.m_path;} - -private: - boost::filesystem::path m_path; - mutable file_status m_status; // stat()-like - mutable file_status m_symlink_status; // lstat()-like - - file_status m_get_status(system::error_code* ec=0) const; - file_status m_get_symlink_status(system::error_code* ec=0) const; -}; // directory_entry +inline bool copy_file(path const& from, path const& to) +{ + return detail::copy_file(from, to, static_cast< unsigned int >(copy_options::none)); +} -//--------------------------------------------------------------------------------------// -// // -// directory_iterator helpers // -// // -//--------------------------------------------------------------------------------------// +inline bool copy_file(path const& from, path const& to, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::copy_file(from, to, static_cast< unsigned int >(copy_options::none), &ec); +} -class directory_iterator; - -namespace detail -{ - BOOST_FILESYSTEM_DECL - system::error_code dir_itr_close(// never throws() - void *& handle -# if defined(BOOST_POSIX_API) - , void *& buffer -# endif - ); - - struct dir_itr_imp - { - directory_entry dir_entry; - void* handle; - -# ifdef BOOST_POSIX_API - void* buffer; // see dir_itr_increment implementation -# endif - - dir_itr_imp() : handle(0) -# ifdef BOOST_POSIX_API - , buffer(0) -# endif - {} - - ~dir_itr_imp() // never throws - { - dir_itr_close(handle -# if defined(BOOST_POSIX_API) - , buffer -# endif - ); - } - }; - - // see path::iterator: comment below - BOOST_FILESYSTEM_DECL void directory_iterator_construct(directory_iterator& it, - const path& p, system::error_code* ec); - BOOST_FILESYSTEM_DECL void directory_iterator_increment(directory_iterator& it, - system::error_code* ec); - -} // namespace detail +inline bool copy_file(path const& from, path const& to, // See ticket #2925 + BOOST_SCOPED_ENUM_NATIVE(copy_options) options) +{ + return detail::copy_file(from, to, static_cast< unsigned int >(options)); +} -//--------------------------------------------------------------------------------------// -// // -// directory_iterator // -// // -//--------------------------------------------------------------------------------------// +inline bool copy_file(path const& from, path const& to, // See ticket #2925 + BOOST_SCOPED_ENUM_NATIVE(copy_options) options, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::copy_file(from, to, static_cast< unsigned int >(options), &ec); +} - class directory_iterator - : public boost::iterator_facade< directory_iterator, - directory_entry, - boost::single_pass_traversal_tag > - { - public: - - directory_iterator() BOOST_NOEXCEPT {} // creates the "end" iterator - - // iterator_facade derived classes don't seem to like implementations in - // separate translation unit dll's, so forward to detail functions - explicit directory_iterator(const path& p) - : m_imp(new detail::dir_itr_imp) - { detail::directory_iterator_construct(*this, p, 0); } - - directory_iterator(const path& p, system::error_code& ec) BOOST_NOEXCEPT - : m_imp(new detail::dir_itr_imp) - { detail::directory_iterator_construct(*this, p, &ec); } - - ~directory_iterator() {} - - directory_iterator& increment(system::error_code& ec) BOOST_NOEXCEPT - { - detail::directory_iterator_increment(*this, &ec); - return *this; - } - - private: - friend struct detail::dir_itr_imp; - friend BOOST_FILESYSTEM_DECL void detail::directory_iterator_construct(directory_iterator& it, - const path& p, system::error_code* ec); - friend BOOST_FILESYSTEM_DECL void detail::directory_iterator_increment(directory_iterator& it, - system::error_code* ec); - - // shared_ptr provides the shallow-copy semantics required for single pass iterators - // (i.e. InputIterators). The end iterator is indicated by !m_imp || !m_imp->handle - boost::shared_ptr< detail::dir_itr_imp > m_imp; - - friend class boost::iterator_core_access; - - boost::iterator_facade< - directory_iterator, - directory_entry, - boost::single_pass_traversal_tag >::reference dereference() const - { - BOOST_ASSERT_MSG(m_imp.get(), "attempt to dereference end iterator"); - return m_imp->dir_entry; - } - - void increment() { detail::directory_iterator_increment(*this, 0); } - - bool equal(const directory_iterator& rhs) const - { - return m_imp == rhs.m_imp - || (!m_imp && rhs.m_imp && !rhs.m_imp->handle) - || (!rhs.m_imp && m_imp && !m_imp->handle); - } - - }; // directory_iterator - - // enable directory_iterator C++11 range-base for statement use --------------------// - - // begin() and end() are only used by a range-based for statement in the context of - // auto - thus the top-level const is stripped - so returning const is harmless and - // emphasizes begin() is just a pass through. - inline - const directory_iterator& begin(const directory_iterator& iter) BOOST_NOEXCEPT - {return iter;} - inline - directory_iterator end(const directory_iterator&) BOOST_NOEXCEPT - {return directory_iterator();} - - // enable directory_iterator BOOST_FOREACH -----------------------------------------// - - inline - directory_iterator& range_begin(directory_iterator& iter) BOOST_NOEXCEPT - {return iter;} - inline - directory_iterator range_begin(const directory_iterator& iter) BOOST_NOEXCEPT - {return iter;} - inline - directory_iterator range_end(directory_iterator&) BOOST_NOEXCEPT - {return directory_iterator();} - inline - directory_iterator range_end(const directory_iterator&) BOOST_NOEXCEPT - {return directory_iterator();} - } // namespace filesystem - - // namespace boost template specializations - template - struct range_mutable_iterator; - - template<> - struct range_mutable_iterator - { typedef boost::filesystem::directory_iterator type; }; - - template - struct range_const_iterator; - - template<> - struct range_const_iterator - { typedef boost::filesystem::directory_iterator type; }; - -namespace filesystem +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use copy_options instead of copy_option") +inline bool copy_file(path const& from, path const& to, // See ticket #2925 + BOOST_SCOPED_ENUM_NATIVE(copy_option) options) { + return detail::copy_file(from, to, static_cast< unsigned int >(options)); +} -//--------------------------------------------------------------------------------------// -// // -// recursive_directory_iterator helpers // -// // -//--------------------------------------------------------------------------------------// +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use copy_options instead of copy_option") +inline bool copy_file(path const& from, path const& to, // See ticket #2925 + BOOST_SCOPED_ENUM_NATIVE(copy_option) options, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::copy_file(from, to, static_cast< unsigned int >(options), &ec); +} +#endif // !defined(BOOST_FILESYSTEM_NO_DEPRECATED) - BOOST_SCOPED_ENUM_START(symlink_option) - { - none, - no_recurse = none, // don't follow directory symlinks (default behavior) - recurse, // follow directory symlinks - _detail_no_push = recurse << 1, // internal use only - - // BOOST_BITMASK op~ casts to int32_least_t, producing invalid enum values - _detail_extend_symlink_option_32_1 = 0x7fffffff, - _detail_extend_symlink_option_32_2 = -0x7fffffff-1 - }; - BOOST_SCOPED_ENUM_END - - BOOST_BITMASK(BOOST_SCOPED_ENUM(symlink_option)) - - namespace detail - { - struct recur_dir_itr_imp - { - typedef directory_iterator element_type; - std::stack< element_type, std::vector< element_type > > m_stack; - int m_level; - BOOST_SCOPED_ENUM(symlink_option) m_options; - - recur_dir_itr_imp() : m_level(0), m_options(symlink_option::none) {} - - void increment(system::error_code* ec); // ec == 0 means throw on error - - bool push_directory(system::error_code& ec) BOOST_NOEXCEPT; - - void pop(); - - }; - - // Implementation is inline to avoid dynamic linking difficulties with m_stack: - // Microsoft warning C4251, m_stack needs to have dll-interface to be used by - // clients of struct 'boost::filesystem::detail::recur_dir_itr_imp' - - inline - bool recur_dir_itr_imp::push_directory(system::error_code& ec) BOOST_NOEXCEPT - // Returns: true if push occurs, otherwise false. Always returns false on error. - { - ec.clear(); - - // Discover if the iterator is for a directory that needs to be recursed into, - // taking symlinks and options into account. - - if ((m_options & symlink_option::_detail_no_push) == symlink_option::_detail_no_push) - { - m_options &= ~symlink_option::_detail_no_push; - return false; - } - - file_status symlink_stat; - - // if we are not recursing into symlinks, we are going to have to know if the - // stack top is a symlink, so get symlink_status and verify no error occurred - if ((m_options & symlink_option::recurse) != symlink_option::recurse) - { - symlink_stat = m_stack.top()->symlink_status(ec); - if (ec) - return false; - } - - // Logic for following predicate was contributed by Daniel Aarno to handle cyclic - // symlinks correctly and efficiently, fixing ticket #5652. - // if (((m_options & symlink_option::recurse) == symlink_option::recurse - // || !is_symlink(m_stack.top()->symlink_status())) - // && is_directory(m_stack.top()->status())) ... - // The predicate code has since been rewritten to pass error_code arguments, - // per ticket #5653. - - if ((m_options & symlink_option::recurse) == symlink_option::recurse - || !is_symlink(symlink_stat)) - { - file_status stat = m_stack.top()->status(ec); - if (ec || !is_directory(stat)) - return false; - - directory_iterator next(m_stack.top()->path(), ec); - if (!ec && next != directory_iterator()) - { - m_stack.push(next); - ++m_level; - return true; - } - } - return false; - } - - inline - void recur_dir_itr_imp::increment(system::error_code* ec) - // ec == 0 means throw on error - // - // Invariant: On return, the top of the iterator stack is the next valid (possibly - // end) iterator, regardless of whether or not an error is reported, and regardless of - // whether any error is reported by exception or error code. In other words, progress - // is always made so a loop on the iterator will always eventually terminate - // regardless of errors. - { - system::error_code ec_push_directory; - - // if various conditions are met, push a directory_iterator into the iterator stack - if (push_directory(ec_push_directory)) - { - if (ec) - ec->clear(); - return; - } - - // Do the actual increment operation on the top iterator in the iterator - // stack, popping the stack if necessary, until either the stack is empty or a - // non-end iterator is reached. - while (!m_stack.empty() && ++m_stack.top() == directory_iterator()) - { - m_stack.pop(); - --m_level; - } - - // report errors if any - if (ec_push_directory) - { - if (ec) - *ec = ec_push_directory; - else - { - BOOST_FILESYSTEM_THROW(filesystem_error( - "filesystem::recursive_directory_iterator directory error", - ec_push_directory)); - } - } - else if (ec) - ec->clear(); - } - - inline - void recur_dir_itr_imp::pop() - { - BOOST_ASSERT_MSG(m_level > 0, - "pop() on recursive_directory_iterator with level < 1"); - - do - { - m_stack.pop(); - --m_level; - } - while (!m_stack.empty() && ++m_stack.top() == directory_iterator()); - } - } // namespace detail +inline void copy_symlink(path const& existing_symlink, path const& new_symlink) +{ + detail::copy_symlink(existing_symlink, new_symlink); +} -//--------------------------------------------------------------------------------------// -// // -// recursive_directory_iterator // -// // -//--------------------------------------------------------------------------------------// +inline void copy_symlink(path const& existing_symlink, path const& new_symlink, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::copy_symlink(existing_symlink, new_symlink, &ec); +} + +inline bool create_directories(path const& p) +{ + return detail::create_directories(p); +} + +inline bool create_directories(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::create_directories(p, &ec); +} + +inline bool create_directory(path const& p) +{ + return detail::create_directory(p, NULL); +} + +inline bool create_directory(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::create_directory(p, NULL, &ec); +} + +inline bool create_directory(path const& p, path const& existing) +{ + return detail::create_directory(p, &existing); +} + +inline bool create_directory(path const& p, path const& existing, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::create_directory(p, &existing, &ec); +} + +inline void create_directory_symlink(path const& to, path const& from) +{ + detail::create_directory_symlink(to, from); +} + +inline void create_directory_symlink(path const& to, path const& from, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::create_directory_symlink(to, from, &ec); +} + +inline void create_hard_link(path const& to, path const& new_hard_link) +{ + detail::create_hard_link(to, new_hard_link); +} + +inline void create_hard_link(path const& to, path const& new_hard_link, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::create_hard_link(to, new_hard_link, &ec); +} + +inline void create_symlink(path const& to, path const& new_symlink) +{ + detail::create_symlink(to, new_symlink); +} + +inline void create_symlink(path const& to, path const& new_symlink, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::create_symlink(to, new_symlink, &ec); +} + +inline bool equivalent(path const& p1, path const& p2) +{ + return detail::equivalent(p1, p2); +} + +inline bool equivalent(path const& p1, path const& p2, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::equivalent(p1, p2, &ec); +} - class recursive_directory_iterator - : public boost::iterator_facade< - recursive_directory_iterator, - directory_entry, - boost::single_pass_traversal_tag > - { - public: - - recursive_directory_iterator() BOOST_NOEXCEPT {} // creates the "end" iterator - - explicit recursive_directory_iterator(const path& dir_path) // throws if !exists() - : m_imp(new detail::recur_dir_itr_imp) - { - m_imp->m_options = symlink_option::none; - m_imp->m_stack.push(directory_iterator(dir_path)); - if (m_imp->m_stack.top() == directory_iterator()) - { m_imp.reset(); } - } - - recursive_directory_iterator(const path& dir_path, - BOOST_SCOPED_ENUM(symlink_option) opt) // throws if !exists() - : m_imp(new detail::recur_dir_itr_imp) - { - m_imp->m_options = opt; - m_imp->m_stack.push(directory_iterator(dir_path)); - if (m_imp->m_stack.top() == directory_iterator()) - { m_imp.reset (); } - } - - recursive_directory_iterator(const path& dir_path, - BOOST_SCOPED_ENUM(symlink_option) opt, - system::error_code & ec) BOOST_NOEXCEPT - : m_imp(new detail::recur_dir_itr_imp) - { - m_imp->m_options = opt; - m_imp->m_stack.push(directory_iterator(dir_path, ec)); - if (m_imp->m_stack.top() == directory_iterator()) - { m_imp.reset (); } - } - - recursive_directory_iterator(const path& dir_path, - system::error_code & ec) BOOST_NOEXCEPT - : m_imp(new detail::recur_dir_itr_imp) - { - m_imp->m_options = symlink_option::none; - m_imp->m_stack.push(directory_iterator(dir_path, ec)); - if (m_imp->m_stack.top() == directory_iterator()) - { m_imp.reset (); } - } - - recursive_directory_iterator& increment(system::error_code& ec) BOOST_NOEXCEPT - { - BOOST_ASSERT_MSG(m_imp.get(), - "increment() on end recursive_directory_iterator"); - m_imp->increment(&ec); - if (m_imp->m_stack.empty()) - m_imp.reset(); // done, so make end iterator - return *this; - } - - int depth() const BOOST_NOEXCEPT - { - BOOST_ASSERT_MSG(m_imp.get(), - "depth() on end recursive_directory_iterator"); - return m_imp->m_level; - } - - int level() const BOOST_NOEXCEPT { return depth(); } - - bool recursion_pending() const BOOST_NOEXCEPT - { - BOOST_ASSERT_MSG(m_imp.get(), - "is_no_push_requested() on end recursive_directory_iterator"); - return (m_imp->m_options & symlink_option::_detail_no_push) - == symlink_option::_detail_no_push; - } - - bool no_push_pending() const BOOST_NOEXCEPT { return recursion_pending(); } - -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED - bool no_push_request() const BOOST_NOEXCEPT { return no_push_pending(); } -# endif - - void pop() - { - BOOST_ASSERT_MSG(m_imp.get(), - "pop() on end recursive_directory_iterator"); - m_imp->pop(); - if (m_imp->m_stack.empty()) m_imp.reset(); // done, so make end iterator - } - - void disable_recursion_pending(bool value=true) BOOST_NOEXCEPT - { - BOOST_ASSERT_MSG(m_imp.get(), - "no_push() on end recursive_directory_iterator"); - if (value) - m_imp->m_options |= symlink_option::_detail_no_push; - else - m_imp->m_options &= ~symlink_option::_detail_no_push; - } - - void no_push(bool value=true) BOOST_NOEXCEPT { disable_recursion_pending(value); } - - file_status status() const - { - BOOST_ASSERT_MSG(m_imp.get(), - "status() on end recursive_directory_iterator"); - return m_imp->m_stack.top()->status(); - } - - file_status symlink_status() const - { - BOOST_ASSERT_MSG(m_imp.get(), - "symlink_status() on end recursive_directory_iterator"); - return m_imp->m_stack.top()->symlink_status(); - } - - private: - - // shared_ptr provides the shallow-copy semantics required for single pass iterators - // (i.e. InputIterators). - // The end iterator is indicated by !m_imp || m_imp->m_stack.empty() - boost::shared_ptr< detail::recur_dir_itr_imp > m_imp; - - friend class boost::iterator_core_access; - - boost::iterator_facade< - recursive_directory_iterator, - directory_entry, - boost::single_pass_traversal_tag >::reference - dereference() const - { - BOOST_ASSERT_MSG(m_imp.get(), - "dereference of end recursive_directory_iterator"); - return *m_imp->m_stack.top(); - } - - void increment() - { - BOOST_ASSERT_MSG(m_imp.get(), - "increment of end recursive_directory_iterator"); - m_imp->increment(0); - if (m_imp->m_stack.empty()) - m_imp.reset(); // done, so make end iterator - } - - bool equal(const recursive_directory_iterator& rhs) const - { - return m_imp == rhs.m_imp - || (!m_imp && rhs.m_imp && rhs.m_imp->m_stack.empty()) - || (!rhs.m_imp && m_imp && m_imp->m_stack.empty()) ; - } - - }; // recursive directory iterator - - // enable recursive directory iterator C++11 range-base for statement use ----------// - - // begin() and end() are only used by a range-based for statement in the context of - // auto - thus the top-level const is stripped - so returning const is harmless and - // emphasizes begin() is just a pass through. - inline - const recursive_directory_iterator& - begin(const recursive_directory_iterator& iter) BOOST_NOEXCEPT - {return iter;} - inline - recursive_directory_iterator end(const recursive_directory_iterator&) BOOST_NOEXCEPT - {return recursive_directory_iterator();} - - // enable recursive directory iterator BOOST_FOREACH -------------------------------// - - inline - recursive_directory_iterator& - range_begin(recursive_directory_iterator& iter) BOOST_NOEXCEPT - {return iter;} - inline - recursive_directory_iterator - range_begin(const recursive_directory_iterator& iter) BOOST_NOEXCEPT - {return iter;} - inline - recursive_directory_iterator range_end(recursive_directory_iterator&) BOOST_NOEXCEPT - {return recursive_directory_iterator();} - inline - recursive_directory_iterator range_end(const recursive_directory_iterator&) BOOST_NOEXCEPT - {return recursive_directory_iterator();} - } // namespace filesystem - - // namespace boost template specializations - template<> - struct range_mutable_iterator - { typedef boost::filesystem::recursive_directory_iterator type; }; - template<> - struct range_const_iterator - { typedef boost::filesystem::recursive_directory_iterator type; }; - -namespace filesystem -{ - -# if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) - typedef recursive_directory_iterator wrecursive_directory_iterator; -# endif +inline boost::uintmax_t file_size(path const& p) +{ + return detail::file_size(p); +} + +inline boost::uintmax_t file_size(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::file_size(p, &ec); +} + +inline boost::uintmax_t hard_link_count(path const& p) +{ + return detail::hard_link_count(p); +} + +inline boost::uintmax_t hard_link_count(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::hard_link_count(p, &ec); +} + +inline std::time_t creation_time(path const& p) +{ + return detail::creation_time(p); +} + +inline std::time_t creation_time(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::creation_time(p, &ec); +} + +inline std::time_t last_write_time(path const& p) +{ + return detail::last_write_time(p); +} + +inline std::time_t last_write_time(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::last_write_time(p, &ec); +} + +inline void last_write_time(path const& p, const std::time_t new_time) +{ + detail::last_write_time(p, new_time); +} + +inline void last_write_time(path const& p, const std::time_t new_time, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::last_write_time(p, new_time, &ec); +} + +inline void permissions(path const& p, perms prms) +{ + detail::permissions(p, prms); +} + +inline void permissions(path const& p, perms prms, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::permissions(p, prms, &ec); +} + +inline path read_symlink(path const& p) +{ + return detail::read_symlink(p); +} + +inline path read_symlink(path const& p, system::error_code& ec) +{ + return detail::read_symlink(p, &ec); +} + +inline bool remove(path const& p) +{ + return detail::remove(p); +} + +inline bool remove(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::remove(p, &ec); +} + +inline boost::uintmax_t remove_all(path const& p) +{ + return detail::remove_all(p); +} + +inline boost::uintmax_t remove_all(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::remove_all(p, &ec); +} + +inline void rename(path const& old_p, path const& new_p) +{ + detail::rename(old_p, new_p); +} + +inline void rename(path const& old_p, path const& new_p, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::rename(old_p, new_p, &ec); +} + +// name suggested by Scott McMurray +inline void resize_file(path const& p, uintmax_t size) +{ + detail::resize_file(p, size); +} + +inline void resize_file(path const& p, uintmax_t size, system::error_code& ec) BOOST_NOEXCEPT +{ + detail::resize_file(p, size, &ec); +} + +inline path relative(path const& p, path const& base = current_path()) +{ + return detail::relative(p, base); +} + +inline path relative(path const& p, system::error_code& ec) +{ + path base = current_path(ec); + if (ec) + return path(); + return detail::relative(p, base, &ec); +} + +inline path relative(path const& p, path const& base, system::error_code& ec) +{ + return detail::relative(p, base, &ec); +} + +inline space_info space(path const& p) +{ + return detail::space(p); +} + +inline space_info space(path const& p, system::error_code& ec) BOOST_NOEXCEPT +{ + return detail::space(p, &ec); +} + +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use is_symlink(symlink_status(path)) instead") +inline bool symbolic_link_exists(path const& p) +{ + return is_symlink(filesystem::symlink_status(p)); +} +#endif + +inline path system_complete(path const& p) +{ + return detail::system_complete(p); +} + +inline path system_complete(path const& p, system::error_code& ec) +{ + return detail::system_complete(p, &ec); +} + +inline path temp_directory_path() +{ + return detail::temp_directory_path(); +} + +inline path temp_directory_path(system::error_code& ec) +{ + return detail::temp_directory_path(&ec); +} + +inline path unique_path(path const& p = "%%%%-%%%%-%%%%-%%%%") +{ + return detail::unique_path(p); +} + +inline path unique_path(path const& p, system::error_code& ec) +{ + return detail::unique_path(p, &ec); +} + +inline path weakly_canonical(path const& p, path const& base = current_path()) +{ + return detail::weakly_canonical(p, base); +} + +inline path weakly_canonical(path const& p, system::error_code& ec) +{ + path base = current_path(ec); + if (ec) + return path(); + return detail::weakly_canonical(p, base, &ec); +} + +inline path weakly_canonical(path const& p, path const& base, system::error_code& ec) +{ + return detail::weakly_canonical(p, base, &ec); +} // test helper -----------------------------------------------------------------------// @@ -1364,13 +765,15 @@ namespace filesystem // there is no law that says that an OS that has large stat.st_size // actually supports large file sizes. - namespace detail - { - BOOST_FILESYSTEM_DECL bool possible_large_file_size_support(); - } +namespace detail { - } // namespace filesystem +BOOST_FILESYSTEM_DECL bool possible_large_file_size_support(); + +} // namespace detail + +} // namespace filesystem } // namespace boost -#include // pops abi_prefix.hpp pragmas -#endif // BOOST_FILESYSTEM3_OPERATIONS_HPP +#include + +#endif // BOOST_FILESYSTEM_OPERATIONS_HPP diff --git a/src/boost/boost/filesystem/path.hpp b/src/boost/boost/filesystem/path.hpp index a0f919da9..7fadca6fe 100644 --- a/src/boost/boost/filesystem/path.hpp +++ b/src/boost/boost/filesystem/path.hpp @@ -1,7 +1,8 @@ // filesystem path.hpp ---------------------------------------------------------------// -// Copyright Beman Dawes 2002-2005, 2009 // Copyright Vladimir Prus 2002 +// Copyright Beman Dawes 2002-2005, 2009 +// Copyright Andrey Semashev 2021-2023 // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt @@ -15,66 +16,162 @@ #ifndef BOOST_FILESYSTEM_PATH_HPP #define BOOST_FILESYSTEM_PATH_HPP -#include - -# if defined( BOOST_NO_STD_WSTRING ) -# error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support -# endif - +#include #include -#include // includes -#include -#include +#include #include -#include -#include -#include +#include +#include +#include #include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -#include -#include #include -#include +#include +#include +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) +#include +#endif + +#include // must be the last #include -#include // must be the last #include +namespace boost { +namespace filesystem { -namespace boost +class path; + +namespace path_detail { // intentionally don't use filesystem::detail to not bring internal Boost.Filesystem functions into ADL via path_constants + +template< typename Char, Char Separator, Char PreferredSeparator, Char Dot > +struct path_constants { -namespace filesystem + typedef path_constants< Char, Separator, PreferredSeparator, Dot > path_constants_base; + typedef Char value_type; + static BOOST_CONSTEXPR_OR_CONST value_type separator = Separator; + static BOOST_CONSTEXPR_OR_CONST value_type preferred_separator = PreferredSeparator; + static BOOST_CONSTEXPR_OR_CONST value_type dot = Dot; +}; + +#if defined(BOOST_NO_CXX17_INLINE_VARIABLES) +template< typename Char, Char Separator, Char PreferredSeparator, Char Dot > +BOOST_CONSTEXPR_OR_CONST typename path_constants< Char, Separator, PreferredSeparator, Dot >::value_type +path_constants< Char, Separator, PreferredSeparator, Dot >::separator; +template< typename Char, Char Separator, Char PreferredSeparator, Char Dot > +BOOST_CONSTEXPR_OR_CONST typename path_constants< Char, Separator, PreferredSeparator, Dot >::value_type +path_constants< Char, Separator, PreferredSeparator, Dot >::preferred_separator; +template< typename Char, Char Separator, Char PreferredSeparator, Char Dot > +BOOST_CONSTEXPR_OR_CONST typename path_constants< Char, Separator, PreferredSeparator, Dot >::value_type +path_constants< Char, Separator, PreferredSeparator, Dot >::dot; +#endif + +class path_iterator; +class path_reverse_iterator; + +} // namespace path_detail + +namespace detail { + +struct path_algorithms { + // A struct that denotes a contiguous range of characters in a string. A lightweight alternative to string_view. + struct substring + { + std::size_t pos; + std::size_t size; + }; - //------------------------------------------------------------------------------------// - // // - // class path // - // // - //------------------------------------------------------------------------------------// + typedef path_traits::path_native_char_type value_type; + typedef std::basic_string< value_type > string_type; - class BOOST_FILESYSTEM_DECL path - { - public: + static bool has_filename_v3(path const& p); + static bool has_filename_v4(path const& p); + BOOST_FILESYSTEM_DECL static path filename_v3(path const& p); + static path filename_v4(path const& p); + BOOST_FILESYSTEM_DECL static path stem_v3(path const& p); + BOOST_FILESYSTEM_DECL static path stem_v4(path const& p); + BOOST_FILESYSTEM_DECL static path extension_v3(path const& p); + static path extension_v4(path const& p); + + BOOST_FILESYSTEM_DECL static void remove_filename_v3(path& p); + BOOST_FILESYSTEM_DECL static void remove_filename_v4(path& p); + + BOOST_FILESYSTEM_DECL static void replace_extension_v3(path& p, path const& new_extension); + BOOST_FILESYSTEM_DECL static void replace_extension_v4(path& p, path const& new_extension); + + BOOST_FILESYSTEM_DECL static path lexically_normal_v3(path const& p); + BOOST_FILESYSTEM_DECL static path lexically_normal_v4(path const& p); + + BOOST_FILESYSTEM_DECL static int compare_v3(path const& left, path const& right); + BOOST_FILESYSTEM_DECL static int compare_v4(path const& left, path const& right); + + BOOST_FILESYSTEM_DECL static void append_v3(path& p, const value_type* b, const value_type* e); + BOOST_FILESYSTEM_DECL static void append_v4(path& p, const value_type* b, const value_type* e); + static void append_v4(path& left, path const& right); + + // Returns: If separator is to be appended, m_pathname.size() before append. Otherwise 0. + // Note: An append is never performed if size()==0, so a returned 0 is unambiguous. + BOOST_FILESYSTEM_DECL static string_type::size_type append_separator_if_needed(path& p); + BOOST_FILESYSTEM_DECL static void erase_redundant_separator(path& p, string_type::size_type sep_pos); + + BOOST_FILESYSTEM_DECL static string_type::size_type find_root_name_size(path const& p); + BOOST_FILESYSTEM_DECL static string_type::size_type find_root_path_size(path const& p); + BOOST_FILESYSTEM_DECL static substring find_root_directory(path const& p); + BOOST_FILESYSTEM_DECL static substring find_relative_path(path const& p); + BOOST_FILESYSTEM_DECL static string_type::size_type find_parent_path_size(path const& p); + BOOST_FILESYSTEM_DECL static string_type::size_type find_filename_v4_size(path const& p); + BOOST_FILESYSTEM_DECL static string_type::size_type find_extension_v4_size(path const& p); + + BOOST_FILESYSTEM_DECL static int lex_compare_v3 + ( + path_detail::path_iterator first1, path_detail::path_iterator const& last1, + path_detail::path_iterator first2, path_detail::path_iterator const& last2 + ); + BOOST_FILESYSTEM_DECL static int lex_compare_v4 + ( + path_detail::path_iterator first1, path_detail::path_iterator const& last1, + path_detail::path_iterator first2, path_detail::path_iterator const& last2 + ); + + BOOST_FILESYSTEM_DECL static void increment_v3(path_detail::path_iterator& it); + BOOST_FILESYSTEM_DECL static void increment_v4(path_detail::path_iterator& it); + BOOST_FILESYSTEM_DECL static void decrement_v3(path_detail::path_iterator& it); + BOOST_FILESYSTEM_DECL static void decrement_v4(path_detail::path_iterator& it); +}; + +} // namespace detail + +//------------------------------------------------------------------------------------// +// // +// class path // +// // +//------------------------------------------------------------------------------------// + +class path : + public filesystem::path_detail::path_constants< +#ifdef BOOST_WINDOWS_API + detail::path_traits::path_native_char_type, L'/', L'\\', L'.' +#else + detail::path_traits::path_native_char_type, '/', '/', '.' +#endif + > +{ + friend class path_detail::path_iterator; + friend class path_detail::path_reverse_iterator; + friend struct detail::path_algorithms; + +public: // value_type is the character type used by the operating system API to // represent paths. -# ifdef BOOST_WINDOWS_API - typedef wchar_t value_type; - BOOST_STATIC_CONSTEXPR value_type separator = L'/'; - BOOST_STATIC_CONSTEXPR value_type preferred_separator = L'\\'; - BOOST_STATIC_CONSTEXPR value_type dot = L'.'; -# else - typedef char value_type; - BOOST_STATIC_CONSTEXPR value_type separator = '/'; - BOOST_STATIC_CONSTEXPR value_type preferred_separator = '/'; - BOOST_STATIC_CONSTEXPR value_type dot = '.'; -# endif - typedef std::basic_string string_type; - typedef std::codecvt codecvt_type; - + typedef detail::path_algorithms::value_type value_type; + typedef detail::path_algorithms::string_type string_type; + typedef detail::path_traits::codecvt_type codecvt_type; // ----- character encoding conversions ----- @@ -94,7 +191,7 @@ namespace filesystem // // The path locale, which is global to the thread, can be changed by the // imbue() function. It is initialized to an implementation defined locale. - // + // // For Windows, wchar_t strings do not undergo conversion. char strings // are converted using the "ANSI" or "OEM" code pages, as determined by // the AreFileApisANSI() function, or, if a conversion argument is given, @@ -103,7 +200,7 @@ namespace filesystem // See m_pathname comments for further important rationale. // TODO: rules needed for operating systems that use / or . - // differently, or format directory paths differently from file paths. + // differently, or format directory paths differently from file paths. // // ********************************************************************************** // @@ -129,191 +226,560 @@ namespace filesystem // "const codecvt_type& cvt=codecvt()" default arguments are not used because this // limits the impact of locale("") initialization failures on POSIX systems to programs // that actually depend on locale(""). It further ensures that exceptions thrown - // as a result of such failues occur after main() has started, so can be caught. + // as a result of such failues occur after main() has started, so can be caught. + +private: + //! Assignment operation + class assign_op + { + private: + path& m_self; + + public: + typedef void result_type; + + explicit assign_op(path& self) BOOST_NOEXCEPT : m_self(self) {} + + result_type operator() (const value_type* source, const value_type* source_end, const codecvt_type* = NULL) const + { + m_self.m_pathname.assign(source, source_end); + } + + template< typename OtherChar > + result_type operator() (const OtherChar* source, const OtherChar* source_end, const codecvt_type* cvt = NULL) const + { + m_self.m_pathname.clear(); + detail::path_traits::convert(source, source_end, m_self.m_pathname, cvt); + } + }; + + //! Concatenation operation + class concat_op + { + private: + path& m_self; + + public: + typedef void result_type; + + explicit concat_op(path& self) BOOST_NOEXCEPT : m_self(self) {} + + result_type operator() (const value_type* source, const value_type* source_end, const codecvt_type* = NULL) const + { + m_self.m_pathname.append(source, source_end); + } + + template< typename OtherChar > + result_type operator() (const OtherChar* source, const OtherChar* source_end, const codecvt_type* cvt = NULL) const + { + detail::path_traits::convert(source, source_end, m_self.m_pathname, cvt); + } + }; + + //! Path appending operation + class append_op + { + private: + path& m_self; + + public: + typedef void result_type; + + explicit append_op(path& self) BOOST_NOEXCEPT : m_self(self) {} + + BOOST_FORCEINLINE result_type operator() (const value_type* source, const value_type* source_end, const codecvt_type* = NULL) const + { + m_self.append(source, source_end); + } + + template< typename OtherChar > + BOOST_FORCEINLINE result_type operator() (const OtherChar* source, const OtherChar* source_end, const codecvt_type* cvt = NULL) const + { + string_type src; + detail::path_traits::convert(source, source_end, src, cvt); + m_self.append(src.data(), src.data() + src.size()); + } + }; + + //! Path comparison operation + class compare_op + { + private: + path const& m_self; + + public: + typedef int result_type; + + explicit compare_op(path const& self) BOOST_NOEXCEPT : m_self(self) {} + + result_type operator() (const value_type* source, const value_type* source_end, const codecvt_type* = NULL) const; + + template< typename OtherChar > + result_type operator() (const OtherChar* source, const OtherChar* source_end, const codecvt_type* cvt = NULL) const; + }; + +public: + typedef path_detail::path_iterator iterator; + typedef iterator const_iterator; + typedef path_detail::path_reverse_iterator reverse_iterator; + typedef reverse_iterator const_reverse_iterator; +public: // ----- constructors ----- - path() BOOST_NOEXCEPT {} - path(const path& p) : m_pathname(p.m_pathname) {} + path() BOOST_NOEXCEPT {} + path(path const& p) : m_pathname(p.m_pathname) {} + path(path const& p, codecvt_type const&) : m_pathname(p.m_pathname) {} - template - path(Source const& source, - typename boost::enable_if::type> >::type* =0) + path(const value_type* s) : m_pathname(s) {} + path(const value_type* s, codecvt_type const&) : m_pathname(s) {} + path(string_type const& s) : m_pathname(s) {} + path(string_type const& s, codecvt_type const&) : m_pathname(s) {} +#if !defined(BOOST_NO_CXX17_HDR_STRING_VIEW) + path(std::basic_string_view< value_type > const& s) : m_pathname(s) {} + path(std::basic_string_view< value_type > const& s, codecvt_type const&) : m_pathname(s) {} +#endif + +#if !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) + template< + typename Source, + typename = typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_native_path_source< typename boost::remove_cv< Source >::type > > + >::value + >::type + > + path(Source const& source) +#else + template< typename Source > + path(Source const& source, typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_native_path_source< typename boost::remove_cv< Source >::type > > + >::value + >::type* = NULL) +#endif { - path_traits::dispatch(source, m_pathname); + assign(source); } - path(const value_type* s) : m_pathname(s) {} - path(value_type* s) : m_pathname(s) {} - path(const string_type& s) : m_pathname(s) {} - path(string_type& s) : m_pathname(s) {} +#if !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) + template< + typename Source, + typename = typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_native_path_source< typename boost::remove_cv< Source >::type > > + >::value + >::type + > + explicit path(Source const& source, codecvt_type const& cvt) +#else + template< typename Source > + explicit path(Source const& source, codecvt_type const& cvt, typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_native_path_source< typename boost::remove_cv< Source >::type > > + >::value + >::type* = NULL) +#endif + { + assign(source, cvt); + } - // As of October 2015 the interaction between noexcept and =default is so troublesome - // for VC++, GCC, and probably other compilers, that =default is not used with noexcept - // functions. GCC is not even consistent for the same release on different platforms. + // As of October 2015 the interaction between noexcept and =default is so troublesome + // for VC++, GCC, and probably other compilers, that =default is not used with noexcept + // functions. GCC is not even consistent for the same release on different platforms. -# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - path(path&& p) BOOST_NOEXCEPT { m_pathname = std::move(p.m_pathname); } +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + path(path&& p) BOOST_NOEXCEPT : m_pathname(static_cast< string_type&& >(p.m_pathname)) + { + } + path(path&& p, codecvt_type const&) BOOST_NOEXCEPT : m_pathname(static_cast< string_type&& >(p.m_pathname)) + { + } path& operator=(path&& p) BOOST_NOEXCEPT - { m_pathname = std::move(p.m_pathname); return *this; } -# endif - - template - path(Source const& source, const codecvt_type& cvt) { - path_traits::dispatch(source, m_pathname, cvt); + m_pathname = static_cast< string_type&& >(p.m_pathname); + return *this; + } + path& assign(path&& p) BOOST_NOEXCEPT + { + m_pathname = static_cast< string_type&& >(p.m_pathname); + return *this; + } + path& assign(path&& p, codecvt_type const&) BOOST_NOEXCEPT + { + m_pathname = static_cast< string_type&& >(p.m_pathname); + return *this; } - template + path(string_type&& s) BOOST_NOEXCEPT : m_pathname(static_cast< string_type&& >(s)) + { + } + path(string_type&& s, codecvt_type const&) BOOST_NOEXCEPT : m_pathname(static_cast< string_type&& >(s)) + { + } + path& operator=(string_type&& p) BOOST_NOEXCEPT + { + m_pathname = static_cast< string_type&& >(p); + return *this; + } + path& assign(string_type&& p) BOOST_NOEXCEPT + { + m_pathname = static_cast< string_type&& >(p); + return *this; + } + path& assign(string_type&& p, codecvt_type const&) BOOST_NOEXCEPT + { + m_pathname = static_cast< string_type&& >(p); + return *this; + } +#endif + + path(const value_type* begin, const value_type* end) : m_pathname(begin, end) {} + path(const value_type* begin, const value_type* end, codecvt_type const&) : m_pathname(begin, end) {} + +#if !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) + template< + typename InputIterator, + typename = typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source_iterator< InputIterator >, + boost::negation< detail::path_traits::is_native_char_ptr< InputIterator > > + >::value + >::type + > path(InputIterator begin, InputIterator end) - { - if (begin != end) - { - // convert requires contiguous string, so copy - std::basic_string::value_type> - seq(begin, end); - path_traits::convert(seq.c_str(), seq.c_str()+seq.size(), m_pathname); - } - } - - template - path(InputIterator begin, InputIterator end, const codecvt_type& cvt) - { - if (begin != end) - { - // convert requires contiguous string, so copy - std::basic_string::value_type> - seq(begin, end); - path_traits::convert(seq.c_str(), seq.c_str()+seq.size(), m_pathname, cvt); - } +#else + template< typename InputIterator > + path(InputIterator begin, InputIterator end, typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source_iterator< InputIterator >, + boost::negation< detail::path_traits::is_native_char_ptr< InputIterator > > + >::value + >::type* = NULL) +#endif + { + if (begin != end) + { + typedef std::basic_string< typename std::iterator_traits< InputIterator >::value_type > source_t; + source_t source(begin, end); +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + assign(static_cast< source_t&& >(source)); +#else + assign(source); +#endif + } + } + +#if !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) + template< + typename InputIterator, + typename = typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source_iterator< InputIterator >, + boost::negation< detail::path_traits::is_native_char_ptr< InputIterator > > + >::value + >::type + > + path(InputIterator begin, InputIterator end, codecvt_type const& cvt) +#else + template< typename InputIterator > + path(InputIterator begin, InputIterator end, codecvt_type const& cvt, typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source_iterator< InputIterator >, + boost::negation< detail::path_traits::is_native_char_ptr< InputIterator > > + >::value + >::type* = NULL) +#endif + { + if (begin != end) + { + typedef std::basic_string< typename std::iterator_traits< InputIterator >::value_type > source_t; + source_t source(begin, end); +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + assign(static_cast< source_t&& >(source), cvt); +#else + assign(source, cvt); +#endif + } } +#if !defined(BOOST_NO_CXX11_NULLPTR) + BOOST_DELETED_FUNCTION(path(std::nullptr_t)) + BOOST_DELETED_FUNCTION(path& operator= (std::nullptr_t)) +#endif + +public: // ----- assignments ----- - path& operator=(const path& p) + // We need to explicitly define copy assignment as otherwise it will be implicitly defined as deleted because there is move assignment + path& operator=(path const& p); + + template< typename Source > + typename boost::enable_if_c< + boost::disjunction< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + path& + >::type operator=(Source const& source) + { + return assign(source); + } + + path& assign(path const& p) + { + m_pathname = p.m_pathname; + return *this; + } + + template< typename Source > + typename boost::enable_if_c< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >::value, + path& + >::type assign(Source const& source) + { + detail::path_traits::dispatch(source, assign_op(*this)); + return *this; + } + + template< typename Source > + typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type > > + >::value, + path& + >::type assign(Source const& source) { - m_pathname = p.m_pathname; - return *this; + detail::path_traits::dispatch_convertible(source, assign_op(*this)); + return *this; } - template - typename boost::enable_if::type>, path&>::type - operator=(Source const& source) + path& assign(path const& p, codecvt_type const&) { - m_pathname.clear(); - path_traits::dispatch(source, m_pathname); - return *this; + m_pathname = p.m_pathname; + return *this; } - // value_type overloads + template< typename Source > + typename boost::enable_if_c< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >::value, + path& + >::type assign(Source const& source, codecvt_type const& cvt) + { + detail::path_traits::dispatch(source, assign_op(*this), &cvt); + return *this; + } - path& operator=(const value_type* ptr) // required in case ptr overlaps *this - {m_pathname = ptr; return *this;} - path& operator=(value_type* ptr) // required in case ptr overlaps *this - {m_pathname = ptr; return *this;} - path& operator=(const string_type& s) {m_pathname = s; return *this;} - path& operator=(string_type& s) {m_pathname = s; return *this;} + template< typename Source > + typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type > > + >::value, + path& + >::type assign(Source const& source, codecvt_type const& cvt) + { + detail::path_traits::dispatch_convertible(source, assign_op(*this), &cvt); + return *this; + } - path& assign(const value_type* ptr, const codecvt_type&) // required in case ptr overlaps *this - {m_pathname = ptr; return *this;} - template - path& assign(Source const& source, const codecvt_type& cvt) + path& assign(const value_type* begin, const value_type* end) { - m_pathname.clear(); - path_traits::dispatch(source, m_pathname, cvt); - return *this; + m_pathname.assign(begin, end); + return *this; } - template - path& assign(InputIterator begin, InputIterator end) + template< typename InputIterator > + typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source_iterator< InputIterator >, + boost::negation< detail::path_traits::is_native_char_ptr< InputIterator > > + >::value, + path& + >::type assign(InputIterator begin, InputIterator end) { - m_pathname.clear(); - if (begin != end) - { - std::basic_string::value_type> - seq(begin, end); - path_traits::convert(seq.c_str(), seq.c_str()+seq.size(), m_pathname); - } - return *this; + m_pathname.clear(); + if (begin != end) + { + typedef std::basic_string< typename std::iterator_traits< InputIterator >::value_type > source_t; + source_t source(begin, end); +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + assign(static_cast< source_t&& >(source)); +#else + assign(source); +#endif + } + return *this; } - template - path& assign(InputIterator begin, InputIterator end, const codecvt_type& cvt) - { - m_pathname.clear(); - if (begin != end) - { - std::basic_string::value_type> - seq(begin, end); - path_traits::convert(seq.c_str(), seq.c_str()+seq.size(), m_pathname, cvt); - } - return *this; + path& assign(const value_type* begin, const value_type* end, codecvt_type const&) + { + m_pathname.assign(begin, end); + return *this; + } + + template< typename InputIterator > + typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source_iterator< InputIterator >, + boost::negation< detail::path_traits::is_native_char_ptr< InputIterator > > + >::value, + path& + >::type assign(InputIterator begin, InputIterator end, codecvt_type const& cvt) + { + m_pathname.clear(); + if (begin != end) + { + typedef std::basic_string< typename std::iterator_traits< InputIterator >::value_type > source_t; + source_t source(begin, end); +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + assign(static_cast< source_t&& >(source), cvt); +#else + assign(source, cvt); +#endif + } + return *this; } // ----- concatenation ----- - template - typename boost::enable_if::type>, path&>::type - operator+=(Source const& source) + path& operator+=(path const& p); + + template< typename Source > + typename boost::enable_if_c< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >::value, + path& + >::type operator+=(Source const& source) { - return concat(source); + return concat(source); } - // value_type overloads. Same rationale as for constructors above - path& operator+=(const path& p) { m_pathname += p.m_pathname; return *this; } - path& operator+=(const value_type* ptr) { m_pathname += ptr; return *this; } - path& operator+=(value_type* ptr) { m_pathname += ptr; return *this; } - path& operator+=(const string_type& s) { m_pathname += s; return *this; } - path& operator+=(string_type& s) { m_pathname += s; return *this; } - path& operator+=(value_type c) { m_pathname += c; return *this; } + path& operator+=(value_type c) + { + m_pathname.push_back(c); + return *this; + } + + template< typename CharT > + typename boost::enable_if_c< + detail::path_traits::is_path_char_type< CharT >::value, + path& + >::type operator+=(CharT c) + { + CharT tmp[2]; + tmp[0] = c; + tmp[1] = static_cast< CharT >(0); + concat_op(*this)(tmp, tmp + 1); + return *this; + } + + path& concat(path const& p) + { + m_pathname.append(p.m_pathname); + return *this; + } + + template< typename Source > + typename boost::enable_if_c< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >::value, + path& + >::type concat(Source const& source) + { + detail::path_traits::dispatch(source, concat_op(*this)); + return *this; + } + + template< typename Source > + typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type > > + >::value, + path& + >::type concat(Source const& source) + { + detail::path_traits::dispatch_convertible(source, concat_op(*this)); + return *this; + } + + path& concat(path const& p, codecvt_type const&) + { + m_pathname.append(p.m_pathname); + return *this; + } + + template< typename Source > + typename boost::enable_if_c< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >::value, + path& + >::type concat(Source const& source, codecvt_type const& cvt) + { + detail::path_traits::dispatch(source, concat_op(*this), &cvt); + return *this; + } - template - typename boost::enable_if, path&>::type - operator+=(CharT c) + template< typename Source > + typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type > > + >::value, + path& + >::type concat(Source const& source, codecvt_type const& cvt) { - CharT tmp[2]; - tmp[0] = c; - tmp[1] = 0; - return concat(tmp); + detail::path_traits::dispatch_convertible(source, concat_op(*this), &cvt); + return *this; } - template - path& concat(Source const& source) + path& concat(const value_type* begin, const value_type* end) { - path_traits::dispatch(source, m_pathname); - return *this; + m_pathname.append(begin, end); + return *this; } - template - path& concat(Source const& source, const codecvt_type& cvt) + template< typename InputIterator > + typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source_iterator< InputIterator >, + boost::negation< detail::path_traits::is_native_char_ptr< InputIterator > > + >::value, + path& + >::type concat(InputIterator begin, InputIterator end) { - path_traits::dispatch(source, m_pathname, cvt); - return *this; + if (begin != end) + { + std::basic_string< typename std::iterator_traits< InputIterator >::value_type > source(begin, end); + detail::path_traits::dispatch(source, concat_op(*this)); + } + return *this; } - template - path& concat(InputIterator begin, InputIterator end) - { - if (begin == end) + path& concat(const value_type* begin, const value_type* end, codecvt_type const&) + { + m_pathname.append(begin, end); return *this; - std::basic_string::value_type> - seq(begin, end); - path_traits::convert(seq.c_str(), seq.c_str()+seq.size(), m_pathname); - return *this; } - template - path& concat(InputIterator begin, InputIterator end, const codecvt_type& cvt) - { - if (begin == end) + template< typename InputIterator > + typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source_iterator< InputIterator >, + boost::negation< detail::path_traits::is_native_char_ptr< InputIterator > > + >::value, + path& + >::type concat(InputIterator begin, InputIterator end, codecvt_type const& cvt) + { + if (begin != end) + { + std::basic_string< typename std::iterator_traits< InputIterator >::value_type > source(begin, end); + detail::path_traits::dispatch(source, concat_op(*this), &cvt); + } return *this; - std::basic_string::value_type> - seq(begin, end); - path_traits::convert(seq.c_str(), seq.c_str()+seq.size(), m_pathname, cvt); - return *this; } // ----- appends ----- @@ -321,64 +787,121 @@ namespace filesystem // if a separator is added, it is the preferred separator for the platform; // slash for POSIX, backslash for Windows - path& operator/=(const path& p); + path& operator/=(path const& p); - template - typename boost::enable_if::type>, path&>::type - operator/=(Source const& source) + template< typename Source > + BOOST_FORCEINLINE typename boost::enable_if_c< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >::value, + path& + >::type operator/=(Source const& source) { - return append(source); + return append(source); } - path& operator/=(const value_type* ptr); - path& operator/=(value_type* ptr) + path& append(path const& p); + + template< typename Source > + BOOST_FORCEINLINE typename boost::enable_if_c< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >::value, + path& + >::type append(Source const& source) { - return this->operator/=(const_cast(ptr)); + detail::path_traits::dispatch(source, append_op(*this)); + return *this; } - path& operator/=(const string_type& s) { return this->operator/=(path(s)); } - path& operator/=(string_type& s) { return this->operator/=(path(s)); } - path& append(const value_type* ptr) // required in case ptr overlaps *this + template< typename Source > + BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type > > + >::value, + path& + >::type append(Source const& source) { - this->operator/=(ptr); - return *this; + detail::path_traits::dispatch_convertible(source, append_op(*this)); + return *this; } - path& append(const value_type* ptr, const codecvt_type&) // required in case ptr overlaps *this + path& append(path const& p, codecvt_type const&); + + template< typename Source > + BOOST_FORCEINLINE typename boost::enable_if_c< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >::value, + path& + >::type append(Source const& source, codecvt_type const& cvt) { - this->operator/=(ptr); - return *this; + detail::path_traits::dispatch(source, append_op(*this), &cvt); + return *this; } - template - path& append(Source const& source); + template< typename Source > + BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type > > + >::value, + path& + >::type append(Source const& source, codecvt_type const& cvt) + { + detail::path_traits::dispatch_convertible(source, append_op(*this), &cvt); + return *this; + } - template - path& append(Source const& source, const codecvt_type& cvt); + path& append(const value_type* begin, const value_type* end); - template - path& append(InputIterator begin, InputIterator end); + template< typename InputIterator > + BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source_iterator< InputIterator >, + boost::negation< detail::path_traits::is_native_char_ptr< InputIterator > > + >::value, + path& + >::type append(InputIterator begin, InputIterator end) + { + std::basic_string< typename std::iterator_traits< InputIterator >::value_type > source(begin, end); + detail::path_traits::dispatch(source, append_op(*this)); + return *this; + } - template - path& append(InputIterator begin, InputIterator end, const codecvt_type& cvt); + path& append(const value_type* begin, const value_type* end, codecvt_type const&); + + template< typename InputIterator > + BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_path_source_iterator< InputIterator >, + boost::negation< detail::path_traits::is_native_char_ptr< InputIterator > > + >::value, + path& + >::type append(InputIterator begin, InputIterator end, const codecvt_type& cvt) + { + std::basic_string< typename std::iterator_traits< InputIterator >::value_type > source(begin, end); + detail::path_traits::dispatch(source, append_op(*this), &cvt); + return *this; + } // ----- modifiers ----- - void clear() BOOST_NOEXCEPT { m_pathname.clear(); } - path& make_preferred() -# ifdef BOOST_POSIX_API - { return *this; } // POSIX no effect -# else // BOOST_WINDOWS_API - ; // change slashes to backslashes -# endif - path& remove_filename(); - path& remove_trailing_separator(); - path& replace_extension(const path& new_extension = path()); - void swap(path& rhs) BOOST_NOEXCEPT { m_pathname.swap(rhs.m_pathname); } + void clear() BOOST_NOEXCEPT { m_pathname.clear(); } +#ifdef BOOST_POSIX_API + path& make_preferred() + { + // No effect on POSIX + return *this; + } +#else // BOOST_WINDOWS_API + BOOST_FILESYSTEM_DECL path& make_preferred(); // change slashes to backslashes +#endif + path& remove_filename(); + BOOST_FILESYSTEM_DECL path& remove_filename_and_trailing_separators(); + BOOST_FILESYSTEM_DECL path& remove_trailing_separator(); + BOOST_FILESYSTEM_DECL path& replace_filename(path const& replacement); + path& replace_extension(path const& new_extension = path()); + + void swap(path& rhs) BOOST_NOEXCEPT { m_pathname.swap(rhs.m_pathname); } // ----- observers ----- - + // For operating systems that format file paths differently than directory // paths, return values from observers are formatted as file names unless there // is a trailing separator, in which case returns are formatted as directory @@ -398,618 +921,916 @@ namespace filesystem // ----- native format observers ----- - const string_type& native() const BOOST_NOEXCEPT { return m_pathname; } - const value_type* c_str() const BOOST_NOEXCEPT { return m_pathname.c_str(); } + string_type const& native() const BOOST_NOEXCEPT { return m_pathname; } + const value_type* c_str() const BOOST_NOEXCEPT { return m_pathname.c_str(); } string_type::size_type size() const BOOST_NOEXCEPT { return m_pathname.size(); } - template + template< typename String > String string() const; - template - String string(const codecvt_type& cvt) const; + template< typename String > + String string(codecvt_type const& cvt) const; -# ifdef BOOST_WINDOWS_API - const std::string string() const +#ifdef BOOST_WINDOWS_API + std::string string() const { - std::string tmp; - if (!m_pathname.empty()) - path_traits::convert(&*m_pathname.begin(), &*m_pathname.begin()+m_pathname.size(), - tmp); - return tmp; + std::string tmp; + if (!m_pathname.empty()) + detail::path_traits::convert(m_pathname.data(), m_pathname.data() + m_pathname.size(), tmp); + return tmp; } - const std::string string(const codecvt_type& cvt) const - { - std::string tmp; - if (!m_pathname.empty()) - path_traits::convert(&*m_pathname.begin(), &*m_pathname.begin()+m_pathname.size(), - tmp, cvt); - return tmp; + std::string string(codecvt_type const& cvt) const + { + std::string tmp; + if (!m_pathname.empty()) + detail::path_traits::convert(m_pathname.data(), m_pathname.data() + m_pathname.size(), tmp, &cvt); + return tmp; } - - // string_type is std::wstring, so there is no conversion - const std::wstring& wstring() const { return m_pathname; } - const std::wstring& wstring(const codecvt_type&) const { return m_pathname; } -# else // BOOST_POSIX_API + // string_type is std::wstring, so there is no conversion + std::wstring const& wstring() const { return m_pathname; } + std::wstring const& wstring(codecvt_type const&) const { return m_pathname; } +#else // BOOST_POSIX_API // string_type is std::string, so there is no conversion - const std::string& string() const { return m_pathname; } - const std::string& string(const codecvt_type&) const { return m_pathname; } + std::string const& string() const { return m_pathname; } + std::string const& string(codecvt_type const&) const { return m_pathname; } - const std::wstring wstring() const + std::wstring wstring() const { - std::wstring tmp; - if (!m_pathname.empty()) - path_traits::convert(&*m_pathname.begin(), &*m_pathname.begin()+m_pathname.size(), - tmp); - return tmp; + std::wstring tmp; + if (!m_pathname.empty()) + detail::path_traits::convert(m_pathname.data(), m_pathname.data() + m_pathname.size(), tmp); + return tmp; } - const std::wstring wstring(const codecvt_type& cvt) const - { - std::wstring tmp; - if (!m_pathname.empty()) - path_traits::convert(&*m_pathname.begin(), &*m_pathname.begin()+m_pathname.size(), - tmp, cvt); - return tmp; + std::wstring wstring(codecvt_type const& cvt) const + { + std::wstring tmp; + if (!m_pathname.empty()) + detail::path_traits::convert(m_pathname.data(), m_pathname.data() + m_pathname.size(), tmp, &cvt); + return tmp; } - -# endif +#endif // ----- generic format observers ----- // Experimental generic function returning generic formatted path (i.e. separators // are forward slashes). Motivation: simpler than a family of generic_*string // functions. - path generic_path() const - { -# ifdef BOOST_WINDOWS_API - path tmp; - std::replace_copy(m_pathname.begin(), m_pathname.end(), - std::back_inserter(tmp.m_pathname), L'\\', L'/'); - return tmp; -# else - return path(*this); -# endif - } +#ifdef BOOST_WINDOWS_API + BOOST_FILESYSTEM_DECL path generic_path() const; +#else + path generic_path() const; +#endif - template + template< typename String > String generic_string() const; - template - String generic_string(const codecvt_type& cvt) const; + template< typename String > + String generic_string(codecvt_type const& cvt) const; -# ifdef BOOST_WINDOWS_API - const std::string generic_string() const; - const std::string generic_string(const codecvt_type& cvt) const; - const std::wstring generic_wstring() const; - const std::wstring generic_wstring(const codecvt_type&) const { return generic_wstring(); }; - -# else // BOOST_POSIX_API +#ifdef BOOST_WINDOWS_API + std::string generic_string() const { return generic_path().string(); } + std::string generic_string(codecvt_type const& cvt) const { return generic_path().string(cvt); } + std::wstring generic_wstring() const { return generic_path().wstring(); } + std::wstring generic_wstring(codecvt_type const&) const { return generic_wstring(); } +#else // BOOST_POSIX_API // On POSIX-like systems, the generic format is the same as the native format - const std::string& generic_string() const { return m_pathname; } - const std::string& generic_string(const codecvt_type&) const { return m_pathname; } - const std::wstring generic_wstring() const { return wstring(); } - const std::wstring generic_wstring(const codecvt_type& cvt) const { return wstring(cvt); } - -# endif + std::string const& generic_string() const { return m_pathname; } + std::string const& generic_string(codecvt_type const&) const { return m_pathname; } + std::wstring generic_wstring() const { return this->wstring(); } + std::wstring generic_wstring(codecvt_type const& cvt) const { return this->wstring(cvt); } +#endif // ----- compare ----- - int compare(const path& p) const BOOST_NOEXCEPT; // generic, lexicographical - int compare(const std::string& s) const { return compare(path(s)); } - int compare(const value_type* s) const { return compare(path(s)); } + int compare(path const& p) const; // generic, lexicographical + + template< typename Source > + BOOST_FORCEINLINE typename boost::enable_if_c< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >::value, + int + >::type compare(Source const& source) const + { + return detail::path_traits::dispatch(source, compare_op(*this)); + } + + template< typename Source > + BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type > > + >::value, + int + >::type compare(Source const& source) const + { + return detail::path_traits::dispatch_convertible(source, compare_op(*this)); + } + + template< typename Source > + BOOST_FORCEINLINE typename boost::enable_if_c< + detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type >::value, + int + >::type compare(Source const& source, codecvt_type const& cvt) const + { + return detail::path_traits::dispatch(source, compare_op(*this), &cvt); + } + + template< typename Source > + BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >, + boost::negation< detail::path_traits::is_path_source< typename boost::remove_cv< Source >::type > > + >::value, + int + >::type compare(Source const& source, codecvt_type const& cvt) const + { + return detail::path_traits::dispatch_convertible(source, compare_op(*this), &cvt); + } // ----- decomposition ----- - path root_path() const; - path root_name() const; // returns 0 or 1 element path - // even on POSIX, root_name() is non-empty() for network paths - path root_directory() const; // returns 0 or 1 element path - path relative_path() const; - path parent_path() const; - path filename() const; // returns 0 or 1 element path - path stem() const; // returns 0 or 1 element path - path extension() const; // returns 0 or 1 element path + path root_path() const { return path(m_pathname.c_str(), m_pathname.c_str() + detail::path_algorithms::find_root_path_size(*this)); } + // returns 0 or 1 element path even on POSIX, root_name() is non-empty() for network paths + path root_name() const { return path(m_pathname.c_str(), m_pathname.c_str() + detail::path_algorithms::find_root_name_size(*this)); } + + // returns 0 or 1 element path + path root_directory() const + { + detail::path_algorithms::substring root_dir = detail::path_algorithms::find_root_directory(*this); + const value_type* p = m_pathname.c_str() + root_dir.pos; + return path(p, p + root_dir.size); + } + + path relative_path() const + { + detail::path_algorithms::substring rel_path = detail::path_algorithms::find_relative_path(*this); + const value_type* p = m_pathname.c_str() + rel_path.pos; + return path(p, p + rel_path.size); + } + + path parent_path() const { return path(m_pathname.c_str(), m_pathname.c_str() + detail::path_algorithms::find_parent_path_size(*this)); } + + path filename() const; // returns 0 or 1 element path + path stem() const; // returns 0 or 1 element path + path extension() const; // returns 0 or 1 element path // ----- query ----- - bool empty() const BOOST_NOEXCEPT{ return m_pathname.empty(); } + bool empty() const BOOST_NOEXCEPT { return m_pathname.empty(); } bool filename_is_dot() const; bool filename_is_dot_dot() const; - bool has_root_path() const { return has_root_directory() || has_root_name(); } - bool has_root_name() const { return !root_name().empty(); } - bool has_root_directory() const { return !root_directory().empty(); } - bool has_relative_path() const { return !relative_path().empty(); } - bool has_parent_path() const { return !parent_path().empty(); } - bool has_filename() const { return !m_pathname.empty(); } - bool has_stem() const { return !stem().empty(); } - bool has_extension() const { return !extension().empty(); } - bool is_relative() const { return !is_absolute(); } + bool has_root_path() const { return detail::path_algorithms::find_root_path_size(*this) > 0; } + bool has_root_name() const { return detail::path_algorithms::find_root_name_size(*this) > 0; } + bool has_root_directory() const { return detail::path_algorithms::find_root_directory(*this).size > 0; } + bool has_relative_path() const { return detail::path_algorithms::find_relative_path(*this).size > 0; } + bool has_parent_path() const { return detail::path_algorithms::find_parent_path_size(*this) > 0; } + bool has_filename() const; + bool has_stem() const { return !stem().empty(); } + bool has_extension() const { return !extension().empty(); } + bool is_relative() const { return !is_absolute(); } bool is_absolute() const { -# ifdef BOOST_WINDOWS_API - return has_root_name() && has_root_directory(); -# else - return has_root_directory(); -# endif + // Windows CE has no root name (aka drive letters) +#if defined(BOOST_WINDOWS_API) && !defined(UNDER_CE) + return has_root_name() && has_root_directory(); +#else + return has_root_directory(); +#endif } // ----- lexical operations ----- - path lexically_normal() const; - path lexically_relative(const path& base) const; - path lexically_proximate(const path& base) const - { - path tmp(lexically_relative(base)); - return tmp.empty() ? *this : tmp; - } + path lexically_normal() const; + BOOST_FILESYSTEM_DECL path lexically_relative(path const& base) const; + path lexically_proximate(path const& base) const; // ----- iterators ----- - class iterator; - typedef iterator const_iterator; - class reverse_iterator; - typedef reverse_iterator const_reverse_iterator; - - iterator begin() const; - iterator end() const; + BOOST_FILESYSTEM_DECL iterator begin() const; + BOOST_FILESYSTEM_DECL iterator end() const; reverse_iterator rbegin() const; reverse_iterator rend() const; // ----- static member functions ----- - static std::locale imbue(const std::locale& loc); - static const codecvt_type& codecvt(); + static BOOST_FILESYSTEM_DECL std::locale imbue(std::locale const& loc); + static BOOST_FILESYSTEM_DECL codecvt_type const& codecvt(); // ----- deprecated functions ----- -# if defined(BOOST_FILESYSTEM_DEPRECATED) && defined(BOOST_FILESYSTEM_NO_DEPRECATED) -# error both BOOST_FILESYSTEM_DEPRECATED and BOOST_FILESYSTEM_NO_DEPRECATED are defined -# endif - -# if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) // recently deprecated functions supplied by default - path& normalize() { - path tmp(lexically_normal()); - m_pathname.swap(tmp.m_pathname); - return *this; - } - path& remove_leaf() { return remove_filename(); } - path leaf() const { return filename(); } - path branch_path() const { return parent_path(); } - path generic() const { return generic_path(); } - bool has_leaf() const { return !m_pathname.empty(); } - bool has_branch_path() const { return !parent_path().empty(); } - bool is_complete() const { return is_absolute(); } -# endif - -# if defined(BOOST_FILESYSTEM_DEPRECATED) + path& normalize(); + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::remove_filename() instead") + path& remove_leaf() { return remove_filename(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::filename() instead") + path leaf() const { return filename(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::parent_path() instead") + path branch_path() const { return parent_path(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::generic_path() instead") + path generic() const { return generic_path(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use !path::empty() instead") + bool has_leaf() const { return !m_pathname.empty(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::has_parent_path() instead") + bool has_branch_path() const { return has_parent_path(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::is_absolute() instead") + bool is_complete() const { return is_absolute(); } +#endif + +#if defined(BOOST_FILESYSTEM_DEPRECATED) // deprecated functions with enough signature or semantic changes that they are - // not supplied by default - const std::string file_string() const { return string(); } - const std::string directory_string() const { return string(); } - const std::string native_file_string() const { return string(); } - const std::string native_directory_string() const { return string(); } - const string_type external_file_string() const { return native(); } - const string_type external_directory_string() const { return native(); } - - // older functions no longer supported - //typedef bool (*name_check)(const std::string & name); - //basic_path(const string_type& str, name_check) { operator/=(str); } - //basic_path(const typename string_type::value_type* s, name_check) - // { operator/=(s);} - //static bool default_name_check_writable() { return false; } - //static void default_name_check(name_check) {} - //static name_check default_name_check() { return 0; } - //basic_path& canonize(); -# endif + // not supplied by default + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::string() instead") + std::string file_string() const { return string(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::string() instead") + std::string directory_string() const { return string(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::string() instead") + std::string native_file_string() const { return string(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::string() instead") + std::string native_directory_string() const { return string(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::native() instead") + string_type external_file_string() const { return native(); } + BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::native() instead") + string_type external_directory_string() const { return native(); } +#endif + + //--------------------------------------------------------------------------------------// + // class path private members // + //--------------------------------------------------------------------------------------// +private: + /* + * m_pathname has the type, encoding, and format required by the native + * operating system. Thus for POSIX and Windows there is no conversion for + * passing m_pathname.c_str() to the O/S API or when obtaining a path from the + * O/S API. POSIX encoding is unspecified other than for dot and slash + * characters; POSIX just treats paths as a sequence of bytes. Windows + * encoding is UCS-2 or UTF-16 depending on the version. + */ + string_type m_pathname; // Windows: as input; backslashes NOT converted to slashes, + // slashes NOT converted to backslashes +}; + +namespace detail { +BOOST_FILESYSTEM_DECL path const& dot_path(); +BOOST_FILESYSTEM_DECL path const& dot_dot_path(); +} // namespace detail + +#ifndef BOOST_FILESYSTEM_NO_DEPRECATED +typedef path wpath; +#endif + +namespace path_detail { + +//------------------------------------------------------------------------------------// +// class path::iterator // +//------------------------------------------------------------------------------------// + +class path_iterator : + public boost::iterator_facade< + path_iterator, + const path, + boost::bidirectional_traversal_tag + > +{ +private: + friend class boost::iterator_core_access; + friend class boost::filesystem::path; + friend class path_reverse_iterator; + friend struct boost::filesystem::detail::path_algorithms; -//--------------------------------------------------------------------------------------// -// class path private members // -//--------------------------------------------------------------------------------------// + path const& dereference() const { return m_element; } - private: - -# if defined(_MSC_VER) -# pragma warning(push) // Save warning settings -# pragma warning(disable : 4251) // disable warning: class 'std::basic_string<_Elem,_Traits,_Ax>' -# endif // needs to have dll-interface... -/* - m_pathname has the type, encoding, and format required by the native - operating system. Thus for POSIX and Windows there is no conversion for - passing m_pathname.c_str() to the O/S API or when obtaining a path from the - O/S API. POSIX encoding is unspecified other than for dot and slash - characters; POSIX just treats paths as a sequence of bytes. Windows - encoding is UCS-2 or UTF-16 depending on the version. -*/ - string_type m_pathname; // Windows: as input; backslashes NOT converted to slashes, - // slashes NOT converted to backslashes -# if defined(_MSC_VER) -# pragma warning(pop) // restore warning settings. -# endif - - string_type::size_type m_append_separator_if_needed(); - // Returns: If separator is to be appended, m_pathname.size() before append. Otherwise 0. - // Note: An append is never performed if size()==0, so a returned 0 is unambiguous. + bool equal(path_iterator const& rhs) const BOOST_NOEXCEPT + { + return m_path_ptr == rhs.m_path_ptr && m_pos == rhs.m_pos; + } - void m_erase_redundant_separator(string_type::size_type sep_pos); - string_type::size_type m_parent_path_end() const; - - path& m_normalize(); - - // Was qualified; como433beta8 reports: - // warning #427-D: qualified name is not allowed in member declaration - friend class iterator; - friend bool operator<(const path& lhs, const path& rhs); - - // see path::iterator::increment/decrement comment below - static void m_path_iterator_increment(path::iterator & it); - static void m_path_iterator_decrement(path::iterator & it); - - }; // class path - - namespace detail - { - BOOST_FILESYSTEM_DECL - int lex_compare(path::iterator first1, path::iterator last1, - path::iterator first2, path::iterator last2); - BOOST_FILESYSTEM_DECL - const path& dot_path(); - BOOST_FILESYSTEM_DECL - const path& dot_dot_path(); - } - -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED - typedef path wpath; -# endif - - //------------------------------------------------------------------------------------// - // class path::iterator // - //------------------------------------------------------------------------------------// - - class path::iterator - : public boost::iterator_facade< - path::iterator, - path const, - boost::bidirectional_traversal_tag > - { - private: - friend class boost::iterator_core_access; - friend class boost::filesystem::path; - friend class boost::filesystem::path::reverse_iterator; - friend void m_path_iterator_increment(path::iterator & it); - friend void m_path_iterator_decrement(path::iterator & it); - - const path& dereference() const { return m_element; } - - bool equal(const iterator & rhs) const - { - return m_path_ptr == rhs.m_path_ptr && m_pos == rhs.m_pos; - } - - // iterator_facade derived classes don't seem to like implementations in - // separate translation unit dll's, so forward to class path static members - void increment() { m_path_iterator_increment(*this); } - void decrement() { m_path_iterator_decrement(*this); } - - path m_element; // current element - const path* m_path_ptr; // path being iterated over - string_type::size_type m_pos; // position of m_element in - // m_path_ptr->m_pathname. - // if m_element is implicit dot, m_pos is the - // position of the last separator in the path. - // end() iterator is indicated by - // m_pos == m_path_ptr->m_pathname.size() - }; // path::iterator - - //------------------------------------------------------------------------------------// - // class path::reverse_iterator // - //------------------------------------------------------------------------------------// - - class path::reverse_iterator - : public boost::iterator_facade< - path::reverse_iterator, - path const, - boost::bidirectional_traversal_tag > - { - public: - - explicit reverse_iterator(iterator itr) : m_itr(itr) - { - if (itr != itr.m_path_ptr->begin()) - m_element = *--itr; - } - private: + void increment(); + void decrement(); + +private: + // current element + path m_element; + // path being iterated over + const path* m_path_ptr; + // position of m_element in m_path_ptr->m_pathname. + // if m_element is implicit dot, m_pos is the + // position of the last separator in the path. + // end() iterator is indicated by + // m_pos == m_path_ptr->m_pathname.size() + path::string_type::size_type m_pos; +}; + +//------------------------------------------------------------------------------------// +// class path::reverse_iterator // +//------------------------------------------------------------------------------------// + +class path_reverse_iterator : + public boost::iterator_facade< + path_reverse_iterator, + const path, + boost::bidirectional_traversal_tag + > +{ +public: + explicit path_reverse_iterator(path_iterator itr) : + m_itr(itr) + { + if (itr != itr.m_path_ptr->begin()) + m_element = *--itr; + } + +private: friend class boost::iterator_core_access; friend class boost::filesystem::path; - const path& dereference() const { return m_element; } - bool equal(const reverse_iterator& rhs) const { return m_itr == rhs.m_itr; } + path const& dereference() const { return m_element; } + bool equal(path_reverse_iterator const& rhs) const BOOST_NOEXCEPT { return m_itr == rhs.m_itr; } + void increment() - { - --m_itr; - if (m_itr != m_itr.m_path_ptr->begin()) - { - iterator tmp = m_itr; - m_element = *--tmp; - } + { + --m_itr; + if (m_itr != m_itr.m_path_ptr->begin()) + { + path_iterator tmp = m_itr; + m_element = *--tmp; + } } + void decrement() { - m_element = *m_itr; - ++m_itr; - } - - iterator m_itr; - path m_element; - - }; // path::reverse_iterator - - //------------------------------------------------------------------------------------// - // // - // non-member functions // - // // - //------------------------------------------------------------------------------------// - - // std::lexicographical_compare would infinately recurse because path iterators - // yield paths, so provide a path aware version - inline bool lexicographical_compare(path::iterator first1, path::iterator last1, - path::iterator first2, path::iterator last2) - { return detail::lex_compare(first1, last1, first2, last2) < 0; } - - inline bool operator==(const path& lhs, const path& rhs) {return lhs.compare(rhs) == 0;} - inline bool operator==(const path& lhs, const path::string_type& rhs) {return lhs.compare(rhs) == 0;} - inline bool operator==(const path::string_type& lhs, const path& rhs) {return rhs.compare(lhs) == 0;} - inline bool operator==(const path& lhs, const path::value_type* rhs) {return lhs.compare(rhs) == 0;} - inline bool operator==(const path::value_type* lhs, const path& rhs) {return rhs.compare(lhs) == 0;} - - inline bool operator!=(const path& lhs, const path& rhs) {return lhs.compare(rhs) != 0;} - inline bool operator!=(const path& lhs, const path::string_type& rhs) {return lhs.compare(rhs) != 0;} - inline bool operator!=(const path::string_type& lhs, const path& rhs) {return rhs.compare(lhs) != 0;} - inline bool operator!=(const path& lhs, const path::value_type* rhs) {return lhs.compare(rhs) != 0;} - inline bool operator!=(const path::value_type* lhs, const path& rhs) {return rhs.compare(lhs) != 0;} - - // TODO: why do == and != have additional overloads, but the others don't? - - inline bool operator<(const path& lhs, const path& rhs) {return lhs.compare(rhs) < 0;} - inline bool operator<=(const path& lhs, const path& rhs) {return !(rhs < lhs);} - inline bool operator> (const path& lhs, const path& rhs) {return rhs < lhs;} - inline bool operator>=(const path& lhs, const path& rhs) {return !(lhs < rhs);} - - inline std::size_t hash_value(const path& x) - { -# ifdef BOOST_WINDOWS_API - std::size_t seed = 0; - for(const path::value_type* it = x.c_str(); *it; ++it) - hash_combine(seed, *it == '/' ? L'\\' : *it); + m_element = *m_itr; + ++m_itr; + } + +private: + path_iterator m_itr; + path m_element; +}; + +// std::lexicographical_compare would infinitely recurse because path iterators +// yield paths, so provide a path aware version +bool lexicographical_compare(path_iterator first1, path_iterator const& last1, path_iterator first2, path_iterator const& last2); + +} // namespace path_detail + +using path_detail::lexicographical_compare; + +//------------------------------------------------------------------------------------// +// // +// non-member functions // +// // +//------------------------------------------------------------------------------------// + +BOOST_FORCEINLINE bool operator==(path const& lhs, path const& rhs) +{ + return lhs.compare(rhs) == 0; +} + +template< typename Path, typename Source > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator==(Path const& lhs, Source const& rhs) +{ + return lhs.compare(rhs) == 0; +} + +template< typename Source, typename Path > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator==(Source const& lhs, Path const& rhs) +{ + return rhs.compare(lhs) == 0; +} + +BOOST_FORCEINLINE bool operator!=(path const& lhs, path const& rhs) +{ + return lhs.compare(rhs) != 0; +} + +template< typename Path, typename Source > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator!=(Path const& lhs, Source const& rhs) +{ + return lhs.compare(rhs) != 0; +} + +template< typename Source, typename Path > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator!=(Source const& lhs, Path const& rhs) +{ + return rhs.compare(lhs) != 0; +} + +BOOST_FORCEINLINE bool operator<(path const& lhs, path const& rhs) +{ + return lhs.compare(rhs) < 0; +} + +template< typename Path, typename Source > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator<(Path const& lhs, Source const& rhs) +{ + return lhs.compare(rhs) < 0; +} + +template< typename Source, typename Path > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator<(Source const& lhs, Path const& rhs) +{ + return rhs.compare(lhs) > 0; +} + +BOOST_FORCEINLINE bool operator<=(path const& lhs, path const& rhs) +{ + return lhs.compare(rhs) <= 0; +} + +template< typename Path, typename Source > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator<=(Path const& lhs, Source const& rhs) +{ + return lhs.compare(rhs) <= 0; +} + +template< typename Source, typename Path > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator<=(Source const& lhs, Path const& rhs) +{ + return rhs.compare(lhs) >= 0; +} + +BOOST_FORCEINLINE bool operator>(path const& lhs, path const& rhs) +{ + return lhs.compare(rhs) > 0; +} + +template< typename Path, typename Source > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator>(Path const& lhs, Source const& rhs) +{ + return lhs.compare(rhs) > 0; +} + +template< typename Source, typename Path > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator>(Source const& lhs, Path const& rhs) +{ + return rhs.compare(lhs) < 0; +} + +BOOST_FORCEINLINE bool operator>=(path const& lhs, path const& rhs) +{ + return lhs.compare(rhs) >= 0; +} + +template< typename Path, typename Source > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator>=(Path const& lhs, Source const& rhs) +{ + return lhs.compare(rhs) >= 0; +} + +template< typename Source, typename Path > +BOOST_FORCEINLINE typename boost::enable_if_c< + boost::conjunction< + boost::is_same< Path, path >, + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type > + >::value, + bool +>::type operator>=(Source const& lhs, Path const& rhs) +{ + return rhs.compare(lhs) <= 0; +} + + +// Note: Declared as a template to delay binding to Boost.ContainerHash functions and make the dependency optional +template< typename Path > +inline typename boost::enable_if_c< + boost::is_same< Path, path >::value, + std::size_t +>::type hash_value(Path const& p) BOOST_NOEXCEPT +{ +#ifdef BOOST_WINDOWS_API + std::size_t seed = 0u; + for (typename Path::value_type const* it = p.c_str(); *it; ++it) + hash_combine(seed, *it == L'/' ? L'\\' : *it); return seed; -# else // BOOST_POSIX_API - return hash_range(x.native().begin(), x.native().end()); -# endif - } - - inline void swap(path& lhs, path& rhs) { lhs.swap(rhs); } - - inline path operator/(const path& lhs, const path& rhs) { return path(lhs) /= rhs; } - - // inserters and extractors - // use boost::io::quoted() to handle spaces in paths - // use '&' as escape character to ease use for Windows paths - - template - inline std::basic_ostream& - operator<<(std::basic_ostream& os, const path& p) - { - return os - << boost::io::quoted(p.template string >(), static_cast('&')); - } - - template - inline std::basic_istream& - operator>>(std::basic_istream& is, path& p) - { - std::basic_string str; - is >> boost::io::quoted(str, static_cast('&')); +#else // BOOST_POSIX_API + return hash_range(p.native().begin(), p.native().end()); +#endif +} + +inline void swap(path& lhs, path& rhs) BOOST_NOEXCEPT +{ + lhs.swap(rhs); +} + +BOOST_FORCEINLINE path operator/(path lhs, path const& rhs) +{ + lhs.append(rhs); + return lhs; +} + +template< typename Source > +BOOST_FORCEINLINE typename boost::enable_if_c< + detail::path_traits::is_convertible_to_path_source< typename boost::remove_cv< Source >::type >::value, + path +>::type operator/(path lhs, Source const& rhs) +{ + lhs.append(rhs); + return lhs; +} + +// inserters and extractors +// use boost::io::quoted() to handle spaces in paths +// use '&' as escape character to ease use for Windows paths + +template< typename Char, typename Traits > +inline std::basic_ostream< Char, Traits >& +operator<<(std::basic_ostream< Char, Traits >& os, path const& p) +{ + return os << boost::io::quoted(p.template string< std::basic_string< Char > >(), static_cast< Char >('&')); +} + +template< typename Char, typename Traits > +inline std::basic_istream< Char, Traits >& +operator>>(std::basic_istream< Char, Traits >& is, path& p) +{ + std::basic_string< Char > str; + is >> boost::io::quoted(str, static_cast< Char >('&')); p = str; return is; - } - - // name_checks - - // These functions are holdovers from version 1. It isn't clear they have much - // usefulness, or how to generalize them for later versions. - - BOOST_FILESYSTEM_DECL bool portable_posix_name(const std::string & name); - BOOST_FILESYSTEM_DECL bool windows_name(const std::string & name); - BOOST_FILESYSTEM_DECL bool portable_name(const std::string & name); - BOOST_FILESYSTEM_DECL bool portable_directory_name(const std::string & name); - BOOST_FILESYSTEM_DECL bool portable_file_name(const std::string & name); - BOOST_FILESYSTEM_DECL bool native(const std::string & name); - - namespace detail - { - // For POSIX, is_directory_separator() and is_element_separator() are identical since - // a forward slash is the only valid directory separator and also the only valid - // element separator. For Windows, forward slash and back slash are the possible - // directory separators, but colon (example: "c:foo") is also an element separator. - - inline bool is_directory_separator(path::value_type c) BOOST_NOEXCEPT - { - return c == path::separator -# ifdef BOOST_WINDOWS_API +} + +// name_checks + +// These functions are holdovers from version 1. It isn't clear they have much +// usefulness, or how to generalize them for later versions. + +BOOST_FILESYSTEM_DECL bool portable_posix_name(std::string const& name); +BOOST_FILESYSTEM_DECL bool windows_name(std::string const& name); +BOOST_FILESYSTEM_DECL bool portable_name(std::string const& name); +BOOST_FILESYSTEM_DECL bool portable_directory_name(std::string const& name); +BOOST_FILESYSTEM_DECL bool portable_file_name(std::string const& name); +BOOST_FILESYSTEM_DECL bool native(std::string const& name); + +namespace detail { + +// For POSIX, is_directory_separator() and is_element_separator() are identical since +// a forward slash is the only valid directory separator and also the only valid +// element separator. For Windows, forward slash and back slash are the possible +// directory separators, but colon (example: "c:foo") is also an element separator. +inline bool is_directory_separator(path::value_type c) BOOST_NOEXCEPT +{ + return c == path::separator +#ifdef BOOST_WINDOWS_API || c == path::preferred_separator -# endif - ; - } - inline bool is_element_separator(path::value_type c) BOOST_NOEXCEPT - { - return c == path::separator -# ifdef BOOST_WINDOWS_API +#endif + ; +} + +inline bool is_element_separator(path::value_type c) BOOST_NOEXCEPT +{ + return c == path::separator +#ifdef BOOST_WINDOWS_API || c == path::preferred_separator || c == L':' -# endif - ; - } - } // namespace detail +#endif + ; +} + +} // namespace detail - //------------------------------------------------------------------------------------// - // class path miscellaneous function implementations // - //------------------------------------------------------------------------------------// +//------------------------------------------------------------------------------------// +// class path miscellaneous function implementations // +//------------------------------------------------------------------------------------// - inline path::reverse_iterator path::rbegin() const { return reverse_iterator(end()); } - inline path::reverse_iterator path::rend() const { return reverse_iterator(begin()); } +namespace detail { + +inline bool path_algorithms::has_filename_v3(path const& p) +{ + return !p.m_pathname.empty(); +} - inline bool path::filename_is_dot() const - { +inline bool path_algorithms::has_filename_v4(path const& p) +{ + return path_algorithms::find_filename_v4_size(p) > 0; +} + +inline path path_algorithms::filename_v4(path const& p) +{ + string_type::size_type filename_size = path_algorithms::find_filename_v4_size(p); + string_type::size_type pos = p.m_pathname.size() - filename_size; + const value_type* ptr = p.m_pathname.c_str() + pos; + return path(ptr, ptr + filename_size); +} + +inline path path_algorithms::extension_v4(path const& p) +{ + string_type::size_type extension_size = path_algorithms::find_extension_v4_size(p); + string_type::size_type pos = p.m_pathname.size() - extension_size; + const value_type* ptr = p.m_pathname.c_str() + pos; + return path(ptr, ptr + extension_size); +} + +inline void path_algorithms::append_v4(path& left, path const& right) +{ + path_algorithms::append_v4(left, right.m_pathname.c_str(), right.m_pathname.c_str() + right.m_pathname.size()); +} + +} // namespace detail + +// Note: Because of the range constructor in C++23 std::string_view that involves a check for contiguous_range concept, +// any non-template function call that requires a check whether the source argument (which may be fs::path) +// is convertible to std::string_view must be made after fs::path::iterator is defined. This includes overload +// resolution and SFINAE checks. Otherwise, the concept check result formally changes between fs::path::iterator +// is not defined and defined, which causes compilation errors with gcc 11 and later. +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106808 + +BOOST_FORCEINLINE path::compare_op::result_type path::compare_op::operator() (const value_type* source, const value_type* source_end, const codecvt_type*) const +{ + path src; + src.m_pathname.assign(source, source_end); + return m_self.compare(src); +} + +template< typename OtherChar > +BOOST_FORCEINLINE path::compare_op::result_type path::compare_op::operator() (const OtherChar* source, const OtherChar* source_end, const codecvt_type* cvt) const +{ + path src; + detail::path_traits::convert(source, source_end, src.m_pathname, cvt); + return m_self.compare(src); +} + +inline path& path::operator=(path const& p) +{ + return assign(p); +} + +inline path& path::operator+=(path const& p) +{ + return concat(p); +} + +BOOST_FORCEINLINE path& path::operator/=(path const& p) +{ + return append(p); +} + +#if !defined(BOOST_WINDOWS_API) +inline path path::generic_path() const +{ + return path(*this); +} +#endif + +inline path path::lexically_proximate(path const& base) const +{ + path tmp(lexically_relative(base)); + return tmp.empty() ? *this : tmp; +} + +inline path::reverse_iterator path::rbegin() const +{ + return reverse_iterator(end()); +} + +inline path::reverse_iterator path::rend() const +{ + return reverse_iterator(begin()); +} + +inline bool path::filename_is_dot() const +{ // implicit dot is tricky, so actually call filename(); see path::filename() example - // in reference.html + // in reference.html path p(filename()); return p.size() == 1 && *p.c_str() == dot; - } - - inline bool path::filename_is_dot_dot() const - { - return size() >= 2 && m_pathname[size()-1] == dot && m_pathname[size()-2] == dot - && (m_pathname.size() == 2 || detail::is_element_separator(m_pathname[size()-3])); - // use detail::is_element_separator() rather than detail::is_directory_separator - // to deal with "c:.." edge case on Windows when ':' acts as a separator - } - -//--------------------------------------------------------------------------------------// -// class path member template implementation // -//--------------------------------------------------------------------------------------// +} + +inline bool path::filename_is_dot_dot() const +{ + return size() >= 2 && m_pathname[size() - 1] == dot && m_pathname[size() - 2] == dot && (m_pathname.size() == 2 || detail::is_element_separator(m_pathname[size() - 3])); + // use detail::is_element_separator() rather than detail::is_directory_separator + // to deal with "c:.." edge case on Windows when ':' acts as a separator +} + +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) - template - path& path::append(InputIterator begin, InputIterator end) - { - if (begin == end) - return *this; - string_type::size_type sep_pos(m_append_separator_if_needed()); - std::basic_string::value_type> - seq(begin, end); - path_traits::convert(seq.c_str(), seq.c_str()+seq.size(), m_pathname); - if (sep_pos) - m_erase_redundant_separator(sep_pos); +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use path::lexically_normal() instead") +BOOST_FORCEINLINE path& path::normalize() +{ + path tmp(lexically_normal()); + m_pathname.swap(tmp.m_pathname); return *this; - } - - template - path& path::append(InputIterator begin, InputIterator end, const codecvt_type& cvt) - { - if (begin == end) - return *this; - string_type::size_type sep_pos(m_append_separator_if_needed()); - std::basic_string::value_type> - seq(begin, end); - path_traits::convert(seq.c_str(), seq.c_str()+seq.size(), m_pathname, cvt); - if (sep_pos) - m_erase_redundant_separator(sep_pos); +} + +#endif // !defined(BOOST_FILESYSTEM_NO_DEPRECATED) + +// The following functions are defined differently, depending on Boost.Filesystem version in use. +// To avoid ODR violation, these functions are not defined when the library itself is built. +// This makes sure they are not compiled when the library is built, and the only version there is +// is the one in user's code. Users are supposed to consistently use the same Boost.Filesystem version +// in all their translation units. +#if !defined(BOOST_FILESYSTEM_SOURCE) + +BOOST_FORCEINLINE path& path::append(path const& p) +{ + BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::append)(*this, p.m_pathname.data(), p.m_pathname.data() + p.m_pathname.size()); return *this; - } - - template - path& path::append(Source const& source) - { - if (path_traits::empty(source)) - return *this; - string_type::size_type sep_pos(m_append_separator_if_needed()); - path_traits::dispatch(source, m_pathname); - if (sep_pos) - m_erase_redundant_separator(sep_pos); +} + +BOOST_FORCEINLINE path& path::append(path const& p, codecvt_type const&) +{ + BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::append)(*this, p.m_pathname.data(), p.m_pathname.data() + p.m_pathname.size()); return *this; - } - - template - path& path::append(Source const& source, const codecvt_type& cvt) - { - if (path_traits::empty(source)) - return *this; - string_type::size_type sep_pos(m_append_separator_if_needed()); - path_traits::dispatch(source, m_pathname, cvt); - if (sep_pos) - m_erase_redundant_separator(sep_pos); +} + +BOOST_FORCEINLINE path& path::append(const value_type* begin, const value_type* end) +{ + BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::append)(*this, begin, end); return *this; - } +} + +BOOST_FORCEINLINE path& path::append(const value_type* begin, const value_type* end, codecvt_type const&) +{ + BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::append)(*this, begin, end); + return *this; +} + +BOOST_FORCEINLINE path& path::remove_filename() +{ + BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::remove_filename)(*this); + return *this; +} + +BOOST_FORCEINLINE path& path::replace_extension(path const& new_extension) +{ + BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::replace_extension)(*this, new_extension); + return *this; +} + +BOOST_FORCEINLINE int path::compare(path const& p) const +{ + return BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::compare)(*this, p); +} + +BOOST_FORCEINLINE path path::filename() const +{ + return BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::filename)(*this); +} + +BOOST_FORCEINLINE path path::stem() const +{ + return BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::stem)(*this); +} + +BOOST_FORCEINLINE path path::extension() const +{ + return BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::extension)(*this); +} + +BOOST_FORCEINLINE bool path::has_filename() const +{ + return BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::has_filename)(*this); +} + +BOOST_FORCEINLINE path path::lexically_normal() const +{ + return BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::lexically_normal)(*this); +} + +namespace path_detail { + +BOOST_FORCEINLINE void path_iterator::increment() +{ + BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::increment)(*this); +} + +BOOST_FORCEINLINE void path_iterator::decrement() +{ + BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::decrement)(*this); +} + +BOOST_FORCEINLINE bool lexicographical_compare(path_iterator first1, path_iterator const& last1, path_iterator first2, path_iterator const& last2) +{ + return BOOST_FILESYSTEM_VERSIONED_SYM(detail::path_algorithms::lex_compare)(first1, last1, first2, last2) < 0; +} + +} // namespace path_detail + +#endif // !defined(BOOST_FILESYSTEM_SOURCE) //--------------------------------------------------------------------------------------// // class path member template specializations // //--------------------------------------------------------------------------------------// - template <> inline - std::string path::string() const - { return string(); } - - template <> inline - std::wstring path::string() const - { return wstring(); } - - template <> inline - std::string path::string(const codecvt_type& cvt) const - { return string(cvt); } - - template <> inline - std::wstring path::string(const codecvt_type& cvt) const - { return wstring(cvt); } - - template <> inline - std::string path::generic_string() const - { return generic_string(); } - - template <> inline - std::wstring path::generic_string() const - { return generic_wstring(); } - - template <> inline - std::string path::generic_string(const codecvt_type& cvt) const - { return generic_string(cvt); } - - template <> inline - std::wstring path::generic_string(const codecvt_type& cvt) const - { return generic_wstring(cvt); } - - //--------------------------------------------------------------------------------------// - // path_traits convert function implementations // - // requiring path::codecvt() be visable // - //--------------------------------------------------------------------------------------// - -namespace path_traits -{ // without codecvt - - inline - void convert(const char* from, - const char* from_end, // 0 for null terminated MBCS - std::wstring & to) - { - convert(from, from_end, to, path::codecvt()); - } - - inline - void convert(const wchar_t* from, - const wchar_t* from_end, // 0 for null terminated MBCS - std::string & to) - { - convert(from, from_end, to, path::codecvt()); - } - - inline - void convert(const char* from, - std::wstring & to) - { - BOOST_ASSERT(from); - convert(from, 0, to, path::codecvt()); - } - - inline - void convert(const wchar_t* from, - std::string & to) - { - BOOST_ASSERT(from); - convert(from, 0, to, path::codecvt()); - } -} // namespace path_traits -} // namespace filesystem -} // namespace boost +template< > +inline std::string path::string< std::string >() const +{ + return string(); +} + +template< > +inline std::wstring path::string< std::wstring >() const +{ + return wstring(); +} + +template< > +inline std::string path::string< std::string >(codecvt_type const& cvt) const +{ + return string(cvt); +} + +template< > +inline std::wstring path::string< std::wstring >(codecvt_type const& cvt) const +{ + return wstring(cvt); +} + +template< > +inline std::string path::generic_string< std::string >() const +{ + return generic_string(); +} + +template< > +inline std::wstring path::generic_string< std::wstring >() const +{ + return generic_wstring(); +} + +template< > +inline std::string path::generic_string< std::string >(codecvt_type const& cvt) const +{ + return generic_string(cvt); +} + +template< > +inline std::wstring path::generic_string< std::wstring >(codecvt_type const& cvt) const +{ + return generic_wstring(cvt); +} + +} // namespace filesystem +} // namespace boost //----------------------------------------------------------------------------// -#include // pops abi_prefix.hpp pragmas +#include -#endif // BOOST_FILESYSTEM_PATH_HPP +#endif // BOOST_FILESYSTEM_PATH_HPP diff --git a/src/boost/boost/filesystem/path_traits.hpp b/src/boost/boost/filesystem/path_traits.hpp deleted file mode 100644 index 16ede55ff..000000000 --- a/src/boost/boost/filesystem/path_traits.hpp +++ /dev/null @@ -1,352 +0,0 @@ -// filesystem path_traits.hpp --------------------------------------------------------// - -// Copyright Beman Dawes 2009 - -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt - -// Library home page: http://www.boost.org/libs/filesystem - -#ifndef BOOST_FILESYSTEM_PATH_TRAITS_HPP -#define BOOST_FILESYSTEM_PATH_TRAITS_HPP - -#include - -# if defined( BOOST_NO_STD_WSTRING ) -# error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support -# endif - -#include -#include -#include -#include -#include -#include // for mbstate_t -#include -#include -#include -#include -#include -#include -// #include //**** comment me out **** - -#include // must be the last #include - -namespace boost { namespace filesystem { - - BOOST_FILESYSTEM_DECL const system::error_category& codecvt_error_category(); - // uses std::codecvt_base::result used for error codes: - // - // ok: Conversion successful. - // partial: Not all source characters converted; one or more additional source - // characters are needed to produce the final target character, or the - // size of the target intermediate buffer was too small to hold the result. - // error: A character in the source could not be converted to the target encoding. - // noconv: The source and target characters have the same type and encoding, so no - // conversion was necessary. - - class directory_entry; - -namespace path_traits { - - typedef std::codecvt codecvt_type; - - // is_pathable type trait; allows disabling over-agressive class path member templates - - template - struct is_pathable { static const bool value = false; }; - - template<> struct is_pathable { static const bool value = true; }; - template<> struct is_pathable { static const bool value = true; }; - template<> struct is_pathable { static const bool value = true; }; - template<> struct is_pathable { static const bool value = true; }; - template<> struct is_pathable { static const bool value = true; }; - template<> struct is_pathable { static const bool value = true; }; - template<> struct is_pathable > { static const bool value = true; }; - template<> struct is_pathable > { static const bool value = true; }; - template<> struct is_pathable > { static const bool value = true; }; - template<> struct is_pathable > { static const bool value = true; }; - template<> struct is_pathable { static const bool value = true; }; - - // Pathable empty - - template inline - // disable_if aids broken compilers (IBM, old GCC, etc.) and is harmless for - // conforming compilers. Replace by plain "bool" at some future date (2012?) - typename boost::disable_if, bool>::type - empty(const Container & c) - { return c.begin() == c.end(); } - - template inline - bool empty(T * const & c_str) - { - BOOST_ASSERT(c_str); - return !*c_str; - } - - template inline - bool empty(T (&x)[N]) - { return !x[0]; } - - // value types differ ---------------------------------------------------------------// - // - // A from_end argument of 0 is less efficient than a known end, so use only if needed - - // with codecvt - - BOOST_FILESYSTEM_DECL - void convert(const char* from, - const char* from_end, // 0 for null terminated MBCS - std::wstring & to, - const codecvt_type& cvt); - - BOOST_FILESYSTEM_DECL - void convert(const wchar_t* from, - const wchar_t* from_end, // 0 for null terminated MBCS - std::string & to, - const codecvt_type& cvt); - - inline - void convert(const char* from, - std::wstring & to, - const codecvt_type& cvt) - { - BOOST_ASSERT(from); - convert(from, 0, to, cvt); - } - - inline - void convert(const wchar_t* from, - std::string & to, - const codecvt_type& cvt) - { - BOOST_ASSERT(from); - convert(from, 0, to, cvt); - } - - // without codecvt - - inline - void convert(const char* from, - const char* from_end, // 0 for null terminated MBCS - std::wstring & to); - - inline - void convert(const wchar_t* from, - const wchar_t* from_end, // 0 for null terminated MBCS - std::string & to); - - inline - void convert(const char* from, - std::wstring & to); - - inline - void convert(const wchar_t* from, - std::string & to); - - // value types same -----------------------------------------------------------------// - - // char with codecvt - - inline - void convert(const char* from, const char* from_end, std::string & to, - const codecvt_type&) - { - BOOST_ASSERT(from); - BOOST_ASSERT(from_end); - to.append(from, from_end); - } - - inline - void convert(const char* from, - std::string & to, - const codecvt_type&) - { - BOOST_ASSERT(from); - to += from; - } - - // wchar_t with codecvt - - inline - void convert(const wchar_t* from, const wchar_t* from_end, std::wstring & to, - const codecvt_type&) - { - BOOST_ASSERT(from); - BOOST_ASSERT(from_end); - to.append(from, from_end); - } - - inline - void convert(const wchar_t* from, - std::wstring & to, - const codecvt_type&) - { - BOOST_ASSERT(from); - to += from; - } - - // char without codecvt - - inline - void convert(const char* from, const char* from_end, std::string & to) - { - BOOST_ASSERT(from); - BOOST_ASSERT(from_end); - to.append(from, from_end); - } - - inline - void convert(const char* from, std::string & to) - { - BOOST_ASSERT(from); - to += from; - } - - // wchar_t without codecvt - - inline - void convert(const wchar_t* from, const wchar_t* from_end, std::wstring & to) - { - BOOST_ASSERT(from); - BOOST_ASSERT(from_end); - to.append(from, from_end); - } - - inline - void convert(const wchar_t* from, std::wstring & to) - { - BOOST_ASSERT(from); - to += from; - } - - // Source dispatch -----------------------------------------------------------------// - - // contiguous containers with codecvt - template inline - void dispatch(const std::string& c, U& to, const codecvt_type& cvt) - { - if (c.size()) - convert(&*c.begin(), &*c.begin() + c.size(), to, cvt); - } - template inline - void dispatch(const std::wstring& c, U& to, const codecvt_type& cvt) - { - if (c.size()) - convert(&*c.begin(), &*c.begin() + c.size(), to, cvt); - } - template inline - void dispatch(const std::vector& c, U& to, const codecvt_type& cvt) - { - if (c.size()) - convert(&*c.begin(), &*c.begin() + c.size(), to, cvt); - } - template inline - void dispatch(const std::vector& c, U& to, const codecvt_type& cvt) - { - if (c.size()) - convert(&*c.begin(), &*c.begin() + c.size(), to, cvt); - } - - // contiguous containers without codecvt - template inline - void dispatch(const std::string& c, U& to) - { - if (c.size()) - convert(&*c.begin(), &*c.begin() + c.size(), to); - } - template inline - void dispatch(const std::wstring& c, U& to) - { - if (c.size()) - convert(&*c.begin(), &*c.begin() + c.size(), to); - } - template inline - void dispatch(const std::vector& c, U& to) - { - if (c.size()) - convert(&*c.begin(), &*c.begin() + c.size(), to); - } - template inline - void dispatch(const std::vector& c, U& to) - { - if (c.size()) - convert(&*c.begin(), &*c.begin() + c.size(), to); - } - - // non-contiguous containers with codecvt - template inline - // disable_if aids broken compilers (IBM, old GCC, etc.) and is harmless for - // conforming compilers. Replace by plain "void" at some future date (2012?) - typename boost::disable_if, void>::type - dispatch(const Container & c, U& to, const codecvt_type& cvt) - { - if (c.size()) - { - std::basic_string s(c.begin(), c.end()); - convert(s.c_str(), s.c_str()+s.size(), to, cvt); - } - } - - // c_str - template inline - void dispatch(T * const & c_str, U& to, const codecvt_type& cvt) - { - // std::cout << "dispatch() const T *\n"; - BOOST_ASSERT(c_str); - convert(c_str, to, cvt); - } - - // Note: there is no dispatch on C-style arrays because the array may - // contain a string smaller than the array size. - - BOOST_FILESYSTEM_DECL - void dispatch(const directory_entry & de, -# ifdef BOOST_WINDOWS_API - std::wstring & to, -# else - std::string & to, -# endif - const codecvt_type&); - - // non-contiguous containers without codecvt - template inline - // disable_if aids broken compilers (IBM, old GCC, etc.) and is harmless for - // conforming compilers. Replace by plain "void" at some future date (2012?) - typename boost::disable_if, void>::type - dispatch(const Container & c, U& to) - { - if (c.size()) - { - std::basic_string seq(c.begin(), c.end()); - convert(seq.c_str(), seq.c_str()+seq.size(), to); - } - } - - // c_str - template inline - void dispatch(T * const & c_str, U& to) - { - // std::cout << "dispatch() const T *\n"; - BOOST_ASSERT(c_str); - convert(c_str, to); - } - - // Note: there is no dispatch on C-style arrays because the array may - // contain a string smaller than the array size. - - BOOST_FILESYSTEM_DECL - void dispatch(const directory_entry & de, -# ifdef BOOST_WINDOWS_API - std::wstring & to -# else - std::string & to -# endif - ); - - -}}} // namespace boost::filesystem::path_traits - -#include // pops abi_prefix.hpp pragmas - -#endif // BOOST_FILESYSTEM_PATH_TRAITS_HPP diff --git a/src/boost/boost/filesystem/string_file.hpp b/src/boost/boost/filesystem/string_file.hpp index 287be18ea..5b2040ba9 100644 --- a/src/boost/boost/filesystem/string_file.hpp +++ b/src/boost/boost/filesystem/string_file.hpp @@ -10,34 +10,61 @@ #ifndef BOOST_FILESYSTEM_STRING_FILE_HPP #define BOOST_FILESYSTEM_STRING_FILE_HPP +#include + +#if !defined(BOOST_FILESYSTEM_DEPRECATED) && !defined(BOOST_FILESYSTEM_ALLOW_DEPRECATED) +#include +BOOST_HEADER_DEPRECATED("your own implementation") +#endif + +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) + +#include +#include #include +#include +#include +#include +#include #include #include -namespace boost -{ -namespace filesystem -{ -inline -void save_string_file(const path& p, const std::string& str) +#include // must be the last #include + +namespace boost { +namespace filesystem { + +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use file IO streams instead") +inline void save_string_file(path const& p, std::string const& str) { - ofstream file; - file.exceptions(std::ofstream::failbit | std::ofstream::badbit); - file.open(p, std::ios_base::binary); - file.write(str.c_str(), str.size()); + filesystem::ofstream file; + file.exceptions(std::ios_base::failbit | std::ios_base::badbit); + file.open(p, std::ios_base::binary); + const std::size_t sz = str.size(); + if (BOOST_UNLIKELY(sz > static_cast< boost::uintmax_t >((std::numeric_limits< std::streamsize >::max)()))) + BOOST_FILESYSTEM_THROW(std::length_error("String size exceeds max write size")); + file.write(str.c_str(), static_cast< std::streamsize >(sz)); } -inline -void load_string_file(const path& p, std::string& str) +BOOST_FILESYSTEM_DETAIL_DEPRECATED("Use file IO streams instead") +inline void load_string_file(path const& p, std::string& str) { - ifstream file; - file.exceptions(std::ifstream::failbit | std::ifstream::badbit); - file.open(p, std::ios_base::binary); - std::size_t sz = static_cast(file_size(p)); - str.resize(sz, '\0'); - file.read(&str[0], sz); + filesystem::ifstream file; + file.exceptions(std::ios_base::failbit | std::ios_base::badbit); + file.open(p, std::ios_base::binary); + const boost::uintmax_t sz = filesystem::file_size(p); + if (BOOST_UNLIKELY(sz > static_cast< boost::uintmax_t >((std::numeric_limits< std::streamsize >::max)()))) + BOOST_FILESYSTEM_THROW(std::length_error("File size exceeds max read size")); + str.resize(static_cast< std::size_t >(sz), '\0'); + if (sz > 0u) + file.read(&str[0], static_cast< std::streamsize >(sz)); } -} // namespace filesystem -} // namespace boost -#endif // include guard +} // namespace filesystem +} // namespace boost + +#include + +#endif // !defined(BOOST_FILESYSTEM_NO_DEPRECATED) + +#endif // BOOST_FILESYSTEM_STRING_FILE_HPP diff --git a/src/boost/boost/functional/hash.hpp b/src/boost/boost/functional/hash.hpp deleted file mode 100644 index 957de7c67..000000000 --- a/src/boost/boost/functional/hash.hpp +++ /dev/null @@ -1,6 +0,0 @@ - -// Copyright 2005-2009 Daniel James. -// 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) - -#include diff --git a/src/boost/boost/integer.hpp b/src/boost/boost/integer.hpp index 522a86344..d524a754c 100644 --- a/src/boost/boost/integer.hpp +++ b/src/boost/boost/integer.hpp @@ -2,9 +2,9 @@ // Copyright Beman Dawes and Daryle Walker 1999. 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) +// LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/integer for documentation. +// See https://www.boost.org/libs/integer for documentation. // Revision History // 22 Sep 01 Added value-based integer templates. (Daryle Walker) @@ -137,7 +137,7 @@ namespace boost { BOOST_STATIC_ASSERT_MSG(Bits <= (int)(sizeof(boost::uintmax_t) * CHAR_BIT), "No suitable unsigned integer type with the requested number of bits is available."); -#if (defined(__BORLANDC__) || defined(__CODEGEAR__)) && defined(BOOST_NO_INTEGRAL_INT64_T) +#if (defined(BOOST_BORLANDC) || defined(__CODEGEAR__)) && defined(BOOST_NO_INTEGRAL_INT64_T) // It's really not clear why this workaround should be needed... shrug I guess! JM BOOST_STATIC_CONSTANT(int, s = 6 + @@ -219,7 +219,7 @@ namespace boost #endif struct uint_value_t { -#if (defined(__BORLANDC__) || defined(__CODEGEAR__)) +#if (defined(BOOST_BORLANDC) || defined(__CODEGEAR__)) // It's really not clear why this workaround should be needed... shrug I guess! JM #if defined(BOOST_NO_INTEGRAL_INT64_T) BOOST_STATIC_CONSTANT(unsigned, which = diff --git a/src/boost/boost/integer/static_log2.hpp b/src/boost/boost/integer/static_log2.hpp deleted file mode 100644 index 2d3b8c0ae..000000000 --- a/src/boost/boost/integer/static_log2.hpp +++ /dev/null @@ -1,127 +0,0 @@ -// -------------- Boost static_log2.hpp header file ----------------------- // -// -// Copyright (C) 2001 Daryle Walker. -// Copyright (C) 2003 Vesa Karvonen. -// Copyright (C) 2003 Gennaro Prota. -// -// 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/libs/integer for documentation. -// ------------------------------------------------------------------------- // - - -#ifndef BOOST_INTEGER_STATIC_LOG2_HPP -#define BOOST_INTEGER_STATIC_LOG2_HPP - -#include "boost/integer_fwd.hpp" // for boost::intmax_t - -namespace boost { - - namespace detail { - - namespace static_log2_impl { - - // choose_initial_n<> - // - // Recursively doubles its integer argument, until it - // becomes >= of the "width" (C99, 6.2.6.2p4) of - // static_log2_argument_type. - // - // Used to get the maximum power of two less then the width. - // - // Example: if on your platform argument_type has 48 value - // bits it yields n=32. - // - // It's easy to prove that, starting from such a value - // of n, the core algorithm works correctly for any width - // of static_log2_argument_type and that recursion always - // terminates with x = 1 and n = 0 (see the algorithm's - // invariant). - - typedef boost::static_log2_argument_type argument_type; - typedef boost::static_log2_result_type result_type; - - template - struct choose_initial_n { - - BOOST_STATIC_CONSTANT(bool, c = (argument_type(1) << n << n) != 0); - BOOST_STATIC_CONSTANT( - result_type, - value = !c*n + choose_initial_n<2*c*n>::value - ); - - }; - - template <> - struct choose_initial_n<0> { - BOOST_STATIC_CONSTANT(result_type, value = 0); - }; - - - - // start computing from n_zero - must be a power of two - const result_type n_zero = 16; - const result_type initial_n = choose_initial_n::value; - - // static_log2_impl<> - // - // * Invariant: - // 2n - // 1 <= x && x < 2 at the start of each recursion - // (see also choose_initial_n<>) - // - // * Type requirements: - // - // argument_type maybe any unsigned type with at least n_zero + 1 - // value bits. (Note: If larger types will be standardized -e.g. - // unsigned long long- then the argument_type typedef can be - // changed without affecting the rest of the code.) - // - - template - struct static_log2_impl { - - BOOST_STATIC_CONSTANT(bool, c = (x >> n) > 0); // x >= 2**n ? - BOOST_STATIC_CONSTANT( - result_type, - value = c*n + (static_log2_impl< (x>>c*n), n/2 >::value) - ); - - }; - - template <> - struct static_log2_impl<1, 0> { - BOOST_STATIC_CONSTANT(result_type, value = 0); - }; - - } - } // detail - - - - // -------------------------------------- - // static_log2 - // ---------------------------------------- - - template - struct static_log2 { - - BOOST_STATIC_CONSTANT( - static_log2_result_type, - value = detail::static_log2_impl::static_log2_impl::value - ); - - }; - - - template <> - struct static_log2<0> { }; - -} - - - -#endif // include guard diff --git a/src/boost/boost/integer_fwd.hpp b/src/boost/boost/integer_fwd.hpp index d0b601293..12f3fc639 100644 --- a/src/boost/boost/integer_fwd.hpp +++ b/src/boost/boost/integer_fwd.hpp @@ -2,9 +2,9 @@ // (C) Copyright Dave Abrahams and Daryle Walker 2001. 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) +// LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/integer for documentation. +// See https://www.boost.org/libs/integer for documentation. #ifndef BOOST_INTEGER_FWD_HPP #define BOOST_INTEGER_FWD_HPP diff --git a/src/boost/boost/integer_traits.hpp b/src/boost/boost/integer_traits.hpp index 6947d0102..dfe91c43b 100644 --- a/src/boost/boost/integer_traits.hpp +++ b/src/boost/boost/integer_traits.hpp @@ -3,14 +3,14 @@ * Copyright Jens Maurer 2000 * 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) + * https://www.boost.org/LICENSE_1_0.txt) * * $Id$ * * Idea by Beman Dawes, Ed Brey, Steve Cleary, and Nathan Myers */ -// See http://www.boost.org/libs/integer for documentation. +// See https://www.boost.org/libs/integer for documentation. #ifndef BOOST_INTEGER_TRAITS_HPP @@ -103,7 +103,7 @@ class integer_traits // library: they are wrong! #if defined(WCHAR_MIN) && defined(WCHAR_MAX) && !defined(__APPLE__) public detail::integer_traits_base -#elif defined(__BORLANDC__) || defined(__CYGWIN__) || defined(__MINGW32__) || (defined(__BEOS__) && defined(__GNUC__)) +#elif defined(BOOST_BORLANDC) || defined(__CYGWIN__) || defined(__MINGW32__) || (defined(__BEOS__) && defined(__GNUC__)) // No WCHAR_MIN and WCHAR_MAX, whar_t is short and unsigned: public detail::integer_traits_base #elif (defined(__sgi) && (!defined(__SGI_STL_PORT) || __SGI_STL_PORT < 0x400))\ diff --git a/src/boost/boost/interprocess/detail/mpl.hpp b/src/boost/boost/interprocess/detail/mpl.hpp new file mode 100644 index 000000000..65721b333 --- /dev/null +++ b/src/boost/boost/interprocess/detail/mpl.hpp @@ -0,0 +1,122 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2005-2016. +// +// 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/libs/interprocess for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_INTERPROCESS_DETAIL_MPL_HPP +#define BOOST_INTERPROCESS_DETAIL_MPL_HPP + +#ifndef BOOST_CONFIG_HPP +# include +#endif +# +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif + +#include + +namespace boost { +namespace interprocess { +namespace ipcdetail { + +template +struct integral_constant +{ + static const T value = val; + typedef integral_constant type; +}; + +template< bool C_ > +struct bool_ : integral_constant +{ + static const bool value = C_; +}; + +typedef bool_ true_; +typedef bool_ false_; + +typedef true_ true_type; +typedef false_ false_type; + +typedef char yes_type; +struct no_type +{ + char padding[8]; +}; + +template +struct enable_if_c { + typedef T type; +}; + +template +struct enable_if_c {}; + +template +struct enable_if : public enable_if_c {}; + +template +struct disable_if : public enable_if_c {}; + +template< + bool C + , typename T1 + , typename T2 + > +struct if_c +{ + typedef T1 type; +}; + +template< + typename T1 + , typename T2 + > +struct if_c +{ + typedef T2 type; +}; + +template< + typename T1 + , typename T2 + , typename T3 + > +struct if_ +{ + typedef typename if_c<0 != T1::value, T2, T3>::type type; +}; + + +template +struct ls_zeros +{ + static const std::size_t value = (S & std::size_t(1)) ? 0 : (1u + ls_zeros<(S >> 1u)>::value); +}; + +template<> +struct ls_zeros<0> +{ + static const std::size_t value = 0; +}; + +template<> +struct ls_zeros<1> +{ + static const std::size_t value = 0; +}; + +} //namespace ipcdetail { +} //namespace interprocess { +} //namespace boost { + +#endif //#ifndef BOOST_INTERPROCESS_DETAIL_MPL_HPP + diff --git a/src/boost/boost/interprocess/detail/os_file_functions.hpp b/src/boost/boost/interprocess/detail/os_file_functions.hpp index 108d6c11e..5122c4e42 100644 --- a/src/boost/boost/interprocess/detail/os_file_functions.hpp +++ b/src/boost/boost/interprocess/detail/os_file_functions.hpp @@ -23,23 +23,24 @@ #include #include #include +#include -#include -#include #include +#include #include //make_unsigned #if defined (BOOST_INTERPROCESS_WINDOWS) # include +# include //wcsxxx() #else # ifdef BOOST_HAS_UNISTD_H # include # include # include # include -# include -# include # include +# include +# include # if 0 # include # endif @@ -99,10 +100,26 @@ inline mapping_handle_t mapping_handle_from_shm_handle(file_handle_t hnd) inline file_handle_t file_handle_from_mapping_handle(mapping_handle_t hnd) { return hnd.handle; } -inline bool create_directory(const char *path) +template +inline bool create_directory(const CharT *path) { return winapi::create_directory(path); } -inline bool remove_directory(const char *path) +template +inline bool open_or_create_directory(const CharT *path) +{ + //If fails, check that it's because it already exists + return create_directory(path) + || error_info(system_error_code()).get_error_code() == already_exists_error; +} + +template +inline bool open_or_create_shared_directory(const CharT *path) +{ + return open_or_create_directory(path); +} + +template +inline bool remove_directory(const CharT *path) { return winapi::remove_directory(path); } inline bool get_temporary_path(char *buffer, std::size_t buf_len, std::size_t &required_len) @@ -115,15 +132,33 @@ inline bool get_temporary_path(char *buffer, std::size_t buf_len, std::size_t &r return false; } required_len = winapi::get_temp_path(buf_len, buffer); - const bool ret = !(buf_len < required_len); + const bool ret = required_len && (buf_len > required_len); if(ret && buffer[required_len-1] == '\\'){ - buffer[required_len-1] = 0; + buffer[required_len-1] = '\0'; } return ret; } +inline bool get_temporary_path(wchar_t *buffer, std::size_t buf_len, std::size_t &required_len) +{ + required_len = 0; + //std::size_t is always bigger or equal than unsigned long in Windows systems + //In case std::size_t is bigger than unsigned long + unsigned long buf = buf_len; + if(buf_len != buf){ //maybe overflowed + return false; + } + required_len = winapi::get_temp_path(buf_len, buffer); + const bool ret = !(buf_len < required_len); + if(ret && buffer[required_len-1] == L'\\'){ + buffer[required_len-1] = L'\0'; + } + return ret; +} + +template inline file_handle_t create_new_file - (const char *name, mode_t mode, const permissions & perm = permissions(), bool temporary = false) + (const CharT *name, mode_t mode, const permissions & perm = permissions(), bool temporary = false) { unsigned long attr = temporary ? winapi::file_attribute_temporary : 0; return winapi::create_file @@ -131,8 +166,9 @@ inline file_handle_t create_new_file , (winapi::interprocess_security_attributes*)perm.get_permissions()); } +template inline file_handle_t create_or_open_file - (const char *name, mode_t mode, const permissions & perm = permissions(), bool temporary = false) + (const CharT *name, mode_t mode, const permissions & perm = permissions(), bool temporary = false) { unsigned long attr = temporary ? winapi::file_attribute_temporary : 0; return winapi::create_file @@ -140,8 +176,9 @@ inline file_handle_t create_or_open_file , (winapi::interprocess_security_attributes*)perm.get_permissions()); } +template inline file_handle_t open_existing_file - (const char *name, mode_t mode, bool temporary = false) + (const CharT *name, mode_t mode, bool temporary = false) { unsigned long attr = temporary ? winapi::file_attribute_temporary : 0; return winapi::create_file @@ -151,6 +188,9 @@ inline file_handle_t open_existing_file inline bool delete_file(const char *name) { return winapi::unlink_file(name); } +inline bool delete_file(const wchar_t *name) +{ return winapi::unlink_file(name); } + inline bool truncate_file (file_handle_t hnd, std::size_t size) { offset_t filesize; @@ -158,8 +198,8 @@ inline bool truncate_file (file_handle_t hnd, std::size_t size) return false; typedef ::boost::move_detail::make_unsigned::type uoffset_t; - const uoffset_t max_filesize = uoffset_t((std::numeric_limits::max)()); - const uoffset_t uoff_size = uoffset_t(size); + const uoffset_t max_filesize = uoffset_t(-1)/2u; + const uoffset_t uoff_size = uoffset_t(size); //Avoid unused variable warnings in 32 bit systems if(uoff_size > max_filesize){ winapi::set_last_error(winapi::error_file_too_large); @@ -167,12 +207,12 @@ inline bool truncate_file (file_handle_t hnd, std::size_t size) } if(offset_t(size) > filesize){ - if(!winapi::set_file_pointer_ex(hnd, filesize, 0, winapi::file_begin)){ + if(!winapi::set_file_pointer(hnd, filesize, 0, winapi::file_begin)){ return false; } //We will write zeros in the end of the file //since set_end_of_file does not guarantee this - for(std::size_t remaining = size - filesize, write_size = 0 + for(std::size_t remaining = size - std::size_t(filesize), write_size = 0 ;remaining > 0 ;remaining -= write_size){ const std::size_t DataSize = 512; @@ -186,7 +226,7 @@ inline bool truncate_file (file_handle_t hnd, std::size_t size) } } else{ - if(!winapi::set_file_pointer_ex(hnd, size, 0, winapi::file_begin)){ + if(!winapi::set_file_pointer(hnd, size, 0, winapi::file_begin)){ return false; } if(!winapi::set_end_of_file(hnd)){ @@ -200,10 +240,10 @@ inline bool get_file_size(file_handle_t hnd, offset_t &size) { return winapi::get_file_size(hnd, size); } inline bool set_file_pointer(file_handle_t hnd, offset_t off, file_pos_t pos) -{ return winapi::set_file_pointer_ex(hnd, off, 0, (unsigned long) pos); } +{ return winapi::set_file_pointer(hnd, off, 0, (unsigned long) pos); } inline bool get_file_pointer(file_handle_t hnd, offset_t &off) -{ return winapi::set_file_pointer_ex(hnd, 0, &off, winapi::file_current); } +{ return winapi::set_file_pointer(hnd, 0, &off, winapi::file_current); } inline bool write_file(file_handle_t hnd, const void *data, std::size_t numdata) { @@ -239,7 +279,8 @@ inline bool try_acquire_file_lock(file_handle_t hnd, bool &acquired) acquired = false, true : false; } - return (acquired = true); + acquired = true; + return true; } inline bool release_file_lock(file_handle_t hnd) @@ -268,32 +309,75 @@ inline bool try_acquire_file_lock_sharable(file_handle_t hnd, bool &acquired) return winapi::get_last_error() == winapi::error_lock_violation ? acquired = false, true : false; } - return (acquired = true); + + acquired = true; + return true; } inline bool release_file_lock_sharable(file_handle_t hnd) { return release_file_lock(hnd); } +template +struct os_file_traits; + +template<> +struct os_file_traits +{ + static const char *any_file() + { return "\\*.*"; } + + static const char *backslash() + { return "\\"; } + + static char dot() + { return '.'; } + + typedef winapi::win32_find_data_a win32_find_data_t; + + static int cmp(const char *a, const char *b) + { return std::strcmp(a, b); } +}; + +template<> +struct os_file_traits +{ + static const wchar_t *any_file() + { return L"\\*.*"; } + + static const wchar_t *backslash() + { return L"\\"; } + + static wchar_t dot() + { return L'.'; } + + typedef winapi::win32_find_data_w win32_find_data_t; + + static int cmp(const wchar_t *a, const wchar_t *b) + { return std::wcscmp(a, b); } +}; + +template inline bool delete_subdirectories_recursive - (const std::string &refcstrRootDirectory, const char *dont_delete_this, unsigned int count) + (const std::basic_string &refcstrRootDirectory, const CharT *dont_delete_this, unsigned int count) { bool bSubdirectory = false; // Flag, indicating whether // subdirectories have been found void * hFile; // Handle to directory - std::string strFilePath; // Filepath - std::string strPattern; // Pattern - winapi::win32_find_data FileInformation; // File information + std::basic_string strFilePath; // Filepath + std::basic_string strPattern; // Pattern + typedef os_file_traits traits_t; + typename traits_t::win32_find_data_t FileInformation; // File information //Find all files and directories - strPattern = refcstrRootDirectory + "\\*.*"; + strPattern = refcstrRootDirectory + traits_t::any_file(); hFile = winapi::find_first_file(strPattern.c_str(), &FileInformation); if(hFile != winapi::invalid_handle_value){ do{ //If it's not "." or ".." or the pointed root_level dont_delete_this erase it - if(FileInformation.cFileName[0] != '.' && - !(dont_delete_this && count == 0 && std::strcmp(dont_delete_this, FileInformation.cFileName) == 0)){ + if(FileInformation.cFileName[0] != traits_t::dot() && + !(dont_delete_this && count == 0 && traits_t::cmp(dont_delete_this, FileInformation.cFileName) == 0)){ strFilePath.erase(); - strFilePath = refcstrRootDirectory + "\\" + FileInformation.cFileName; + strFilePath = refcstrRootDirectory + traits_t::backslash() + FileInformation.cFileName; //If it's a directory, go recursive if(FileInformation.dwFileAttributes & winapi::file_attribute_directory){ @@ -340,7 +424,8 @@ inline bool delete_subdirectories_recursive } //This function erases all the subdirectories of a directory except the one pointed by "dont_delete_this" -inline bool delete_subdirectories(const std::string &refcstrRootDirectory, const char *dont_delete_this) +template +inline bool delete_subdirectories(const std::basic_string &refcstrRootDirectory, const CharT *dont_delete_this) { return delete_subdirectories_recursive(refcstrRootDirectory, dont_delete_this, 0u); } @@ -350,7 +435,7 @@ template inline bool for_each_file_in_dir(const char *dir, Function f) { void * hFile; // Handle to directory - winapi::win32_find_data FileInformation; // File information + winapi::win32_find_data_a FileInformation; // File information //Get base directory std::string str(dir); @@ -423,7 +508,27 @@ inline file_handle_t file_handle_from_mapping_handle(mapping_handle_t hnd) { return hnd.handle; } inline bool create_directory(const char *path) -{ return ::mkdir(path, 0777) == 0 && ::chmod(path, 0777) == 0; } +{ + ::mode_t m = ::mode_t(0777); + return ::mkdir(path, m) == 0; +} + +inline bool open_or_create_directory(const char *path) +{ + ::mode_t m = ::mode_t(0777); + return ::mkdir(path, m) == 0 || (errno == EEXIST); +} + +inline bool open_or_create_shared_directory(const char *path) +{ + const ::mode_t m = ::mode_t(01777); + const bool created = ::mkdir(path, m) == 0; + const bool created_or_exists = created || (errno == EEXIST); + //Try to maximize the chance that the sticky bit is set in shared dirs + //created with old versions that did not set it (for security reasons) + const bool chmoded = ::chmod(path, m) == 0; + return created ? chmoded : created_or_exists; +} inline bool remove_directory(const char *path) { return ::rmdir(path) == 0; } @@ -457,7 +562,7 @@ inline file_handle_t create_or_open_file int ret = -1; //We need a loop to change permissions correctly using fchmod, since //with "O_CREAT only" ::open we don't know if we've created or opened the file. - while(1){ + while(true){ ret = ::open(name, ((int)mode) | O_EXCL | O_CREAT, perm.get_permissions()); if(ret >= 0){ ::fchmod(ret, perm.get_permissions()); @@ -488,7 +593,8 @@ inline bool delete_file(const char *name) inline bool truncate_file (file_handle_t hnd, std::size_t size) { typedef boost::move_detail::make_unsigned::type uoff_t; - if(uoff_t((std::numeric_limits::max)()) < size){ + BOOST_STATIC_ASSERT(( sizeof(uoff_t) >= sizeof(std::size_t) )); + if( uoff_t(-1)/2u < uoff_t(size) ){ errno = EINVAL; return false; } @@ -543,7 +649,7 @@ inline bool try_acquire_file_lock(file_handle_t hnd, bool &acquired) int ret = ::fcntl(hnd, F_SETLK, &lock); if(ret == -1){ return (errno == EAGAIN || errno == EACCES) ? - acquired = false, true : false; + (acquired = false, true) : false; } return (acquired = true); } @@ -578,7 +684,7 @@ inline bool try_acquire_file_lock_sharable(file_handle_t hnd, bool &acquired) int ret = ::fcntl(hnd, F_SETLK, &lock); if(ret == -1){ return (errno == EAGAIN || errno == EACCES) ? - acquired = false, true : false; + (acquired = false, true) : false; } return (acquired = true); } @@ -711,23 +817,26 @@ inline bool delete_subdirectories(const std::string &refcstrRootDirectory, const #endif //#if defined (BOOST_INTERPROCESS_WINDOWS) -inline bool open_or_create_directory(const char *dir_name) +inline std::string get_temporary_path() { - //If fails, check that it's because it already exists - if(!create_directory(dir_name)){ - error_info info(system_error_code()); - if(info.get_error_code() != already_exists_error){ - return false; - } + std::size_t required_len = 0; + get_temporary_path((char*)0, 0, required_len); + std::string ret_str(required_len, char(0)); + get_temporary_path(&ret_str[0], ret_str.size(), required_len); + while(!ret_str.empty() && !ret_str[ret_str.size()-1]){ + ret_str.erase(ret_str.size()-1); } - return true; + + return ret_str; } -inline std::string get_temporary_path() +#ifdef BOOST_INTERPROCESS_WCHAR_NAMED_RESOURCES + +inline std::wstring get_temporary_wpath() { std::size_t required_len = 0; - get_temporary_path(0, 0, required_len); - std::string ret_str(required_len, char(0)); + get_temporary_path((wchar_t*)0, 0, required_len); + std::wstring ret_str(required_len, char(0)); get_temporary_path(&ret_str[0], ret_str.size(), required_len); while(!ret_str.empty() && !ret_str[ret_str.size()-1]){ ret_str.erase(ret_str.size()-1); @@ -736,6 +845,8 @@ inline std::string get_temporary_path() return ret_str; } +#endif + } //namespace ipcdetail{ } //namespace interprocess { } //namespace boost { diff --git a/src/boost/boost/interprocess/detail/os_thread_functions.hpp b/src/boost/boost/interprocess/detail/os_thread_functions.hpp index 3e38232cd..d5b093527 100644 --- a/src/boost/boost/interprocess/detail/os_thread_functions.hpp +++ b/src/boost/boost/interprocess/detail/os_thread_functions.hpp @@ -33,13 +33,12 @@ #include #include #include -#include #include #include #if defined(BOOST_INTERPROCESS_WINDOWS) # include -# include +# include #else # include # include @@ -158,7 +157,7 @@ inline OS_highres_count_t get_current_system_highres_count() if(!winapi::query_performance_counter(&count)){ count = winapi::get_tick_count(); } - return count; + return (OS_highres_count_t)count; } inline void zero_highres_count(OS_highres_count_t &count) @@ -229,7 +228,7 @@ inline long double get_current_process_creation_time() inline unsigned int get_num_cores() { - winapi::system_info sysinfo; + winapi::interprocess_system_info sysinfo; winapi::get_system_info( &sysinfo ); //in Windows dw is long which is equal in bits to int return static_cast(sysinfo.dwNumberOfProcessors); @@ -422,7 +421,7 @@ inline void thread_sleep_tick() struct timespec rqt; //Sleep for the half of the tick time rqt.tv_sec = 0; - rqt.tv_nsec = get_system_tick_ns()/2; + rqt.tv_nsec = (long)get_system_tick_ns()/2; ::nanosleep(&rqt, 0); } @@ -519,9 +518,9 @@ inline void get_pid_str(pid_str_t &pid_str) #if defined(BOOST_INTERPROCESS_WINDOWS) -inline int thread_create( OS_thread_t * thread, unsigned (__stdcall * start_routine) (void*), void* arg ) +inline int thread_create( OS_thread_t * thread, boost::ipwinapiext::LPTHREAD_START_ROUTINE_ start_routine, void* arg ) { - void* h = (void*)_beginthreadex( 0, 0, start_routine, arg, 0, 0 ); + void* h = boost::ipwinapiext::CreateThread(0, 0, start_routine, arg, 0, 0); if( h != 0 ){ thread->m_handle = h; @@ -530,9 +529,6 @@ inline int thread_create( OS_thread_t * thread, unsigned (__stdcall * start_rout else{ return 1; } - - thread->m_handle = (void*)_beginthreadex( 0, 0, start_routine, arg, 0, 0 ); - return thread->m_handle != 0; } inline void thread_join( OS_thread_t thread) @@ -576,7 +572,7 @@ class os_thread_func_ptr_deleter #if defined(BOOST_INTERPROCESS_WINDOWS) -inline unsigned __stdcall launch_thread_routine( void * pv ) +inline boost::winapi::DWORD_ __stdcall launch_thread_routine(boost::winapi::LPVOID_ pv) { os_thread_func_ptr_deleter pt( static_cast( pv ) ); pt->run(); @@ -605,7 +601,7 @@ class launch_thread_impl : f_( f ) {} - void run() + virtual void run() BOOST_OVERRIDE { f_(); } private: diff --git a/src/boost/boost/interprocess/detail/posix_time_types_wrk.hpp b/src/boost/boost/interprocess/detail/posix_time_types_wrk.hpp deleted file mode 100644 index 92f237722..000000000 --- a/src/boost/boost/interprocess/detail/posix_time_types_wrk.hpp +++ /dev/null @@ -1,51 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// -// (C) Copyright Ion Gaztanaga 2005-2012. 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/libs/interprocess for documentation. -// -////////////////////////////////////////////////////////////////////////////// - -#ifndef BOOST_INTERPROCESS_POSIX_TIMES_WRK_HPP -#define BOOST_INTERPROCESS_POSIX_TIMES_WRK_HPP - -#ifndef BOOST_CONFIG_HPP -# include -#endif -# -#if defined(BOOST_HAS_PRAGMA_ONCE) -# pragma once -#endif - -//workaround to avoid winsock redefines when using date-time - -#ifdef _WIN32 -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#define BOOST_INTERPROCESS_WIN32_LEAN_AND_MEAN -#endif //#ifndef WIN32_LEAN_AND_MEAN -#endif //#ifdef _WIN32 - -#include -#include -#include - -namespace boost { -namespace interprocess { - -typedef boost::date_time::microsec_clock microsec_clock; - -} -} - -#ifdef _WIN32 -#ifdef BOOST_INTERPROCESS_WIN32_LEAN_AND_MEAN -#undef WIN32_LEAN_AND_MEAN -#undef BOOST_INTERPROCESS_WIN32_LEAN_AND_MEAN -#endif //#ifdef BOOST_INTERPROCESS_WIN32_LEAN_AND_MEAN -#endif //#ifdef _WIN32 - -#endif //#ifndef BOOST_INTERPROCESS_POSIX_TIMES_WRK_HPP - diff --git a/src/boost/boost/interprocess/detail/timed_utils.hpp b/src/boost/boost/interprocess/detail/timed_utils.hpp new file mode 100644 index 000000000..9488e813a --- /dev/null +++ b/src/boost/boost/interprocess/detail/timed_utils.hpp @@ -0,0 +1,388 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2021-2021. +// +// 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/libs/interprocess for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_INTERPROCESS_DETAIL_TIMED_UTILS_HPP +#define BOOST_INTERPROCESS_DETAIL_TIMED_UTILS_HPP + +#ifndef BOOST_CONFIG_HPP +# include +#endif +# +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif + +#include +#include +#include +#include +#include + +#include +#include + +//The following is used to support high precision time clocks +#ifdef BOOST_HAS_GETTIMEOFDAY +#include +#endif + +#ifdef BOOST_HAS_FTIME +#include +#include +#endif + +namespace boost { +namespace interprocess { +namespace ipcdetail { + +BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(time_duration_type) +BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(clock) +BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(rep_type) +BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(rep) + +template +struct enable_if_ptime + : enable_if_c< BOOST_INTRUSIVE_HAS_TYPE(boost::interprocess::ipcdetail::, T, time_duration_type) > +{}; + +template +struct disable_if_ptime + : enable_if_c< ! BOOST_INTRUSIVE_HAS_TYPE(boost::interprocess::ipcdetail::, T, time_duration_type) > +{}; + +template +struct enable_if_ptime_duration + : enable_if_c< BOOST_INTRUSIVE_HAS_TYPE(boost::interprocess::ipcdetail::, T, rep_type) > +{}; + +template +struct enable_if_time_point + : enable_if_c< BOOST_INTRUSIVE_HAS_TYPE(boost::interprocess::ipcdetail::, T, clock) > +{}; + +template +struct enable_if_duration + : enable_if_c< BOOST_INTRUSIVE_HAS_TYPE(boost::interprocess::ipcdetail::, T, rep) > +{}; + +#if defined(BOOST_INTERPROCESS_HAS_REENTRANT_STD_FUNCTIONS) + + inline std::tm* interprocess_gmtime(const std::time_t* t, std::tm* result) + { + // gmtime_r() not in namespace std??? + #if defined(__VMS) && __INITIAL_POINTER_SIZE == 64 + std::tm tmp; + if(!gmtime_r(t,&tmp)) + result = 0; + else + *result = tmp; + #else + result = gmtime_r(t, result); + #endif + return result; + } + +#else // BOOST_DATE_TIME_HAS_REENTRANT_STD_FUNCTIONS + + #if defined(__clang__) // Clang has to be checked before MSVC + # pragma clang diagnostic push + # pragma clang diagnostic ignored "-Wdeprecated-declarations" + #elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) + # pragma warning(push) // preserve warning settings + # pragma warning(disable : 4996) // disable depricated localtime/gmtime warning on vc8 + #endif + + inline std::tm* interprocess_gmtime(const std::time_t* t, std::tm* result) + { + result = std::gmtime(t); + return result; + } + + #if defined(__clang__) // Clang has to be checked before MSVC + # pragma clang diagnostic pop + #elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) + # pragma warning(pop) // restore warnings to previous state + #endif + +#endif // BOOST_DATE_TIME_HAS_REENTRANT_STD_FUNCTIONS + +#if defined(BOOST_HAS_FTIME) +/*! +* The function converts file_time into number of microseconds elapsed since 1970-Jan-01 +* +* \note Only dates after 1970-Jan-01 are supported. Dates before will be wrapped. +*/ +inline boost::uint64_t file_time_to_microseconds(const boost::winapi::FILETIME_ & ft) +{ + // shift is difference between 1970-Jan-01 & 1601-Jan-01 + // in 100-nanosecond units + const boost::uint64_t shift = 116444736000000000ULL; // (27111902 << 32) + 3577643008 + + // 100-nanos since 1601-Jan-01 + boost::uint64_t ft_as_integer = (static_cast< boost::uint64_t >(ft.dwHighDateTime) << 32) | static_cast< boost::uint64_t >(ft.dwLowDateTime); + + ft_as_integer -= shift; // filetime is now 100-nanos since 1970-Jan-01 + return (ft_as_integer / 10U); // truncate to microseconds +} +#endif + +class ustime; + +class usduration +{ + public: + friend class ustime; + + explicit usduration(boost::uint64_t microsecs) + : m_microsecs(microsecs) + {} + + boost::uint64_t get_microsecs() const + { return m_microsecs; } + + bool operator < (const usduration &other) const + { return m_microsecs < other.m_microsecs; } + + bool operator > (const usduration &other) const + { return m_microsecs > other.m_microsecs; } + + bool operator <= (const usduration &other) const + { return m_microsecs <= other.m_microsecs; } + + bool operator >= (const usduration &other) const + { return m_microsecs >= other.m_microsecs; } + + private: + boost::uint64_t m_microsecs; +}; + +class ustime +{ + public: + explicit ustime(boost::uint64_t microsecs) + : m_microsecs(microsecs) + {} + + ustime &operator += (const usduration &other) + { m_microsecs += other.m_microsecs; return *this; } + + ustime operator + (const usduration &other) + { ustime r(*this); r += other; return r; } + + ustime &operator -= (const usduration &other) + { m_microsecs -= other.m_microsecs; return *this; } + + ustime operator - (const usduration &other) + { ustime r(*this); r -= other; return r; } + + friend usduration operator - (const ustime &l, const ustime &r) + { return usduration(l.m_microsecs - r.m_microsecs); } + + bool operator < (const ustime &other) const + { return m_microsecs < other.m_microsecs; } + + bool operator > (const ustime &other) const + { return m_microsecs > other.m_microsecs; } + + bool operator <= (const ustime &other) const + { return m_microsecs <= other.m_microsecs; } + + bool operator >= (const ustime &other) const + { return m_microsecs >= other.m_microsecs; } + + boost::uint64_t get_microsecs() const + { return m_microsecs; } + + private: + boost::uint64_t m_microsecs; +}; + +inline usduration usduration_milliseconds(boost::uint64_t millisec) +{ return usduration(millisec*1000u); } + +inline usduration usduration_seconds(boost::uint64_t sec) +{ return usduration(sec*uint64_t(1000000u)); } + +template +class microsec_clock; + +template +class microsec_clock::type> +{ + private: + typedef typename TimeType::date_type date_type; + typedef typename TimeType::time_duration_type time_duration_type; + typedef typename time_duration_type::rep_type resolution_traits_type; + public: + + static TimeType universal_time() + { + #ifdef BOOST_HAS_GETTIMEOFDAY + timeval tv; + gettimeofday(&tv, 0); //gettimeofday does not support TZ adjust on Linux. + std::time_t t = tv.tv_sec; + boost::uint32_t sub_sec = static_cast(tv.tv_usec); + #elif defined(BOOST_HAS_FTIME) + boost::winapi::FILETIME_ ft; + boost::winapi::GetSystemTimeAsFileTime(&ft); + boost::uint64_t micros = file_time_to_microseconds(ft); // it will not wrap, since ft is the current time + // and cannot be before 1970-Jan-01 + std::time_t t = static_cast(micros / 1000000UL); // seconds since epoch + // microseconds -- static casts suppress warnings + boost::uint32_t sub_sec = static_cast(micros % 1000000UL); + #else + #error "Unsupported date-time error: neither gettimeofday nor FILETIME support is detected" + #endif + + std::tm curr; + std::tm* curr_ptr = interprocess_gmtime(&t, &curr); + date_type d(static_cast< typename date_type::year_type::value_type >(curr_ptr->tm_year + 1900), + static_cast< typename date_type::month_type::value_type >(curr_ptr->tm_mon + 1), + static_cast< typename date_type::day_type::value_type >(curr_ptr->tm_mday)); + + //The following line will adjust the fractional second tick in terms + //of the current time system. For example, if the time system + //doesn't support fractional seconds then res_adjust returns 0 + //and all the fractional seconds return 0. + unsigned adjust = static_cast< unsigned >(resolution_traits_type::res_adjust() / 1000000); + + time_duration_type td(static_cast< typename time_duration_type::hour_type >(curr_ptr->tm_hour), + static_cast< typename time_duration_type::min_type >(curr_ptr->tm_min), + static_cast< typename time_duration_type::sec_type >(curr_ptr->tm_sec), + static_cast< typename time_duration_type::fractional_seconds_type >(sub_sec * adjust) + ); + return TimeType(d,td); + } +}; + +template<> +class microsec_clock +{ + public: + static ustime universal_time() + { + #ifdef BOOST_HAS_GETTIMEOFDAY + timeval tv; + gettimeofday(&tv, 0); //gettimeofday does not support TZ adjust on Linux. + boost::uint64_t micros = boost::uint64_t(tv.tv_sec)*1000000; + micros += (boost::uint64_t)tv.tv_usec; + #elif defined(BOOST_HAS_FTIME) + boost::winapi::FILETIME_ ft; + boost::winapi::GetSystemTimeAsFileTime(&ft); + boost::uint64_t micros = file_time_to_microseconds(ft); // it will not wrap, since ft is the current time + // and cannot be before 1970-Jan-01 + #else + #error "Unsupported date-time error: neither gettimeofday nor FILETIME support is detected" + #endif + return ustime(micros); + } +}; + +template +class microsec_clock::type> +{ + public: + static TimePoint universal_time() + { return TimePoint::clock::now(); } +}; + + +template +inline TimePoint delay_ms(unsigned msecs, typename enable_if_ptime::type* = 0) +{ + typedef typename TimePoint::time_duration_type time_duration_type; + typedef typename time_duration_type::rep_type resolution_traits_type; + + time_duration_type td(msecs*1000*resolution_traits_type::res_adjust()); + + TimePoint tp(microsec_clock::universal_time()); + return (tp += td); +} + +template +inline bool is_pos_infinity(const TimePoint &abs_time, typename enable_if_ptime::type* = 0) +{ + return abs_time.is_pos_infinity(); +} + +template +inline bool is_pos_infinity(const TimePoint &, typename disable_if_ptime::type* = 0) +{ + return false; +} + +/* +template +inline ustime duration_to_timepoint(const Duration &dur, typename enable_if_ptime::type* = 0) +{ + return dur.is_pos_infinity(); +} + +template +inline bool duration_to_timepoint(const Duration &, typename disable_if_ptime::type* = 0) +{ + return false; +} +*/ + +// duration_to_milliseconds + +template +inline boost::uint64_t duration_to_milliseconds(const Duration &abs_time, typename enable_if_ptime_duration::type* = 0) +{ + return static_cast(abs_time.total_milliseconds()); +} + +template +inline boost::uint64_t duration_to_milliseconds(const Duration &d, typename enable_if_duration::type* = 0) +{ + const double factor = double(Duration::period::num)*1000.0/double(Duration::period::den); + return static_cast(double(d.count())*factor); +} + +inline boost::uint64_t duration_to_milliseconds(const usduration &d) +{ + return d.get_microsecs()/1000; +} + +// duration_to_usduration + +template +inline usduration duration_to_usduration(const Duration &d, typename enable_if_ptime_duration::type* = 0) +{ + return usduration(static_cast(d.total_microseconds())); +} + +template +inline usduration duration_to_usduration(const Duration &d, typename enable_if_duration::type* = 0) +{ + const double factor = double(Duration::period::num)*1000000.0/double(Duration::period::den); + return usduration(static_cast(double(d.count())*factor)); +} + +// duration_to_ustime + +template +inline ustime duration_to_ustime(const Duration &d) +{ + return microsec_clock::universal_time() + (duration_to_usduration)(d); +} + + +} //namespace ipcdetail { +} //namespace interprocess { +} //namespace boost { + +#include + +#endif //#ifndef BOOST_INTERPROCESS_DETAIL_TIMED_UTILS_HPP + diff --git a/src/boost/boost/interprocess/detail/type_traits.hpp b/src/boost/boost/interprocess/detail/type_traits.hpp new file mode 100644 index 000000000..76a837dbd --- /dev/null +++ b/src/boost/boost/interprocess/detail/type_traits.hpp @@ -0,0 +1,162 @@ +////////////////////////////////////////////////////////////////////////////// +// (C) Copyright John Maddock 2000. +// (C) Copyright Ion Gaztanaga 2005-2012. +// +// 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/libs/interprocess for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_INTERPROCESS_DETAIL_TYPE_TRAITS_HPP +#define BOOST_INTERPROCESS_DETAIL_TYPE_TRAITS_HPP + +#ifndef BOOST_CONFIG_HPP +# include +#endif +# +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif + +#include + +namespace boost { +namespace interprocess { +namespace ipcdetail { + +struct nat{}; + +template +struct remove_reference +{ + typedef T type; +}; + +template +struct remove_reference +{ + typedef T type; +}; + +template +struct is_reference +{ + static const bool value = false; +}; + +template +struct is_reference +{ + static const bool value = true; +}; + +template +struct is_pointer +{ + static const bool value = false; +}; + +template +struct is_pointer +{ + static const bool value = true; +}; + +template +struct add_reference +{ + typedef T& type; +}; + +template +struct add_reference +{ + typedef T& type; +}; + +template<> +struct add_reference +{ + typedef nat &type; +}; + +template<> +struct add_reference +{ + typedef const nat &type; +}; + +template +struct add_const_reference +{ typedef const T &type; }; + +template +struct add_const_reference +{ typedef T& type; }; + +template +struct remove_const +{ + typedef T type; +}; + +template +struct remove_const +{ + typedef T type; +}; + +template +struct remove_volatile +{ + typedef T type; +}; + +template +struct remove_volatile +{ + typedef T type; +}; + +template +struct remove_const_volatile +{ + typedef typename remove_const::type>::type type; +}; + +template +struct is_same +{ + typedef char yes_type; + struct no_type + { + char padding[8]; + }; + + template + static yes_type is_same_tester(V*, V*); + static no_type is_same_tester(...); + + static T *t; + static U *u; + + static const bool value = sizeof(yes_type) == sizeof(is_same_tester(t,u)); +}; + +template +struct is_cv_same +{ + static const bool value = is_same< typename remove_const_volatile::type + , typename remove_const_volatile::type >::value; +}; + +} // namespace ipcdetail +} //namespace interprocess { +} //namespace boost { + +#include + +#endif //#ifndef BOOST_INTERPROCESS_DETAIL_TYPE_TRAITS_HPP diff --git a/src/boost/boost/interprocess/detail/win32_api.hpp b/src/boost/boost/interprocess/detail/win32_api.hpp index 2bd5c61f9..ab3c1c429 100644 --- a/src/boost/boost/interprocess/detail/win32_api.hpp +++ b/src/boost/boost/interprocess/detail/win32_api.hpp @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include #include @@ -31,51 +31,8 @@ #include #include -//#define BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME -//#define BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED -//#define BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED - -#ifdef BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME -# define BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME_VALUE 1 -#else -# define BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME_VALUE 0 -#endif - -#ifdef BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED -# define BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED_VALUE 1 -#else -# define BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED_VALUE 0 -#endif - -#ifdef BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED -# define BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED_VALUE 1 -#else -# define BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED_VALUE 0 -#endif - -#define BOOST_INTERPROCESS_BOOTSTAMP_VALUE_SUM \ - (BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED_VALUE + \ - BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED_VALUE + \ - BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME_VALUE) - -#if 1 < BOOST_INTERPROCESS_BOOTSTAMP_VALUE_SUM -# error "Only one of BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME, \ - BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED and \ - BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED can be defined" -#endif - -#if 0 == BOOST_INTERPROCESS_BOOTSTAMP_VALUE_SUM -# define BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED -#endif - #ifdef BOOST_USE_WINDOWS_H #include -# if defined(BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME) -# include -# include -# endif - -#include #endif #if defined(_MSC_VER) @@ -83,7 +40,6 @@ # pragma comment( lib, "Advapi32.lib" ) # pragma comment( lib, "oleaut32.lib" ) # pragma comment( lib, "Ole32.lib" ) -# pragma comment( lib, "Shell32.lib" ) //SHGetFolderPath #endif #if defined (BOOST_INTERPROCESS_WINDOWS) @@ -119,617 +75,43 @@ # endif #endif -namespace boost { -namespace interprocess { -namespace winapi { - -//Own defines -static const unsigned long MaxPath = 260; - -#ifndef BOOST_USE_WINDOWS_H - -struct GUID_BIPC -{ - unsigned long Data1; - unsigned short Data2; - unsigned short Data3; - unsigned char Data4[8]; -}; - -#if defined(_MSC_VER) -#pragma warning (push) -#pragma warning (disable : 4201) // nonstandard extension used -#endif - -struct decimal -{ - unsigned short wReserved; - union { - struct { - unsigned char scale; - unsigned char sign; - }; - unsigned short signscale; - }; - unsigned long Hi32; - union { - struct { - unsigned long Lo32; - unsigned long Mid32; - }; - ::boost::ulong_long_type Lo64; - }; -}; - -typedef unsigned short *bstr; - -struct wchar_variant -{ - union - { - struct - { - unsigned short vt; - unsigned short wReserved1; - unsigned short wReserved2; - unsigned short wReserved3; - union - { - bstr bstrVal; - struct - { - void* pvRecord; - void* pRecInfo; - }; - }; - }; - decimal decVal; - }; -}; +//#define BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED +//#define BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED -#if defined(_MSC_VER) -#pragma warning (pop) +#ifdef BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED +# define BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED_VALUE 1 +#else +# define BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED_VALUE 0 #endif -struct IUnknown_BIPC -{ - public: - virtual long __stdcall QueryInterface( - const GUID_BIPC &riid, // [in] - void **ppvObject) = 0; // [iid_is][out] - - virtual unsigned long __stdcall AddRef (void) = 0; - virtual unsigned long __stdcall Release(void) = 0; -}; - -struct IWbemClassObject_BIPC : public IUnknown_BIPC -{ - public: - virtual long __stdcall GetQualifierSet( - /* [out] */ void **ppQualSet) = 0; - - virtual long __stdcall Get( - /* [string][in] */ const bstr wszName, - /* [in] */ long lFlags, - /* [unique][in][out] */ wchar_variant *pVal, - /* [unique][in][out] */ long *pType, - /* [unique][in][out] */ long *plFlavor) = 0; - - virtual long __stdcall Put( - /* [string][in] */ const bstr wszName, - /* [in] */ long lFlags, - /* [in] */ wchar_variant *pVal, - /* [in] */ long Type) = 0; - - virtual long __stdcall Delete( - /* [string][in] */ const bstr wszName) = 0; - - virtual long __stdcall GetNames( - /* [string][in] */ const bstr wszQualifierName, - /* [in] */ long lFlags, - /* [in] */ wchar_variant *pQualifierVal, - /* [out] */ void * *pNames) = 0; - - virtual long __stdcall BeginEnumeration( - /* [in] */ long lEnumFlags) = 0; - - virtual long __stdcall Next( - /* [in] */ long lFlags, - /* [unique][in][out] */ bstr *strName, - /* [unique][in][out] */ wchar_variant *pVal, - /* [unique][in][out] */ long *pType, - /* [unique][in][out] */ long *plFlavor) = 0; - - virtual long __stdcall EndEnumeration( void) = 0; - - virtual long __stdcall GetPropertyQualifierSet( - /* [string][in] */ const bstr wszProperty, - /* [out] */ void **ppQualSet) = 0; - - virtual long __stdcall Clone( - /* [out] */ IWbemClassObject_BIPC **ppCopy) = 0; - - virtual long __stdcall GetObjectText( - /* [in] */ long lFlags, - /* [out] */ bstr *pstrObjectText) = 0; - - virtual long __stdcall SpawnDerivedClass( - /* [in] */ long lFlags, - /* [out] */ IWbemClassObject_BIPC **ppNewClass) = 0; - - virtual long __stdcall SpawnInstance( - /* [in] */ long lFlags, - /* [out] */ IWbemClassObject_BIPC **ppNewInstance) = 0; - - virtual long __stdcall CompareTo( - /* [in] */ long lFlags, - /* [in] */ IWbemClassObject_BIPC *pCompareTo) = 0; - - virtual long __stdcall GetPropertyOrigin( - /* [string][in] */ const bstr wszName, - /* [out] */ bstr *pstrClassName) = 0; - - virtual long __stdcall InheritsFrom( - /* [in] */ const bstr strAncestor) = 0; - - virtual long __stdcall GetMethod( - /* [string][in] */ const bstr wszName, - /* [in] */ long lFlags, - /* [out] */ IWbemClassObject_BIPC **ppInSignature, - /* [out] */ IWbemClassObject_BIPC **ppOutSignature) = 0; - - virtual long __stdcall PutMethod( - /* [string][in] */ const bstr wszName, - /* [in] */ long lFlags, - /* [in] */ IWbemClassObject_BIPC *pInSignature, - /* [in] */ IWbemClassObject_BIPC *pOutSignature) = 0; - - virtual long __stdcall DeleteMethod( - /* [string][in] */ const bstr wszName) = 0; - - virtual long __stdcall BeginMethodEnumeration( - /* [in] */ long lEnumFlags) = 0; - - virtual long __stdcall NextMethod( - /* [in] */ long lFlags, - /* [unique][in][out] */ bstr *pstrName, - /* [unique][in][out] */ IWbemClassObject_BIPC **ppInSignature, - /* [unique][in][out] */ IWbemClassObject_BIPC **ppOutSignature) = 0; - - virtual long __stdcall EndMethodEnumeration( void) = 0; - - virtual long __stdcall GetMethodQualifierSet( - /* [string][in] */ const bstr wszMethod, - /* [out] */ void **ppQualSet) = 0; - - virtual long __stdcall GetMethodOrigin( - /* [string][in] */ const bstr wszMethodName, - /* [out] */ bstr *pstrClassName) = 0; - -}; - -struct IWbemContext_BIPC : public IUnknown_BIPC -{ -public: - virtual long __stdcall Clone( - /* [out] */ IWbemContext_BIPC **ppNewCopy) = 0; - - virtual long __stdcall GetNames( - /* [in] */ long lFlags, - /* [out] */ void * *pNames) = 0; - - virtual long __stdcall BeginEnumeration( - /* [in] */ long lFlags) = 0; - - virtual long __stdcall Next( - /* [in] */ long lFlags, - /* [out] */ bstr *pstrName, - /* [out] */ wchar_variant *pValue) = 0; - - virtual long __stdcall EndEnumeration( void) = 0; - - virtual long __stdcall SetValue( - /* [string][in] */ const bstr wszName, - /* [in] */ long lFlags, - /* [in] */ wchar_variant *pValue) = 0; - - virtual long __stdcall GetValue( - /* [string][in] */ const bstr wszName, - /* [in] */ long lFlags, - /* [out] */ wchar_variant *pValue) = 0; - - virtual long __stdcall DeleteValue( - /* [string][in] */ const bstr wszName, - /* [in] */ long lFlags) = 0; - - virtual long __stdcall DeleteAll( void) = 0; - -}; - - -struct IEnumWbemClassObject_BIPC : public IUnknown_BIPC -{ -public: - virtual long __stdcall Reset( void) = 0; - - virtual long __stdcall Next( - /* [in] */ long lTimeout, - /* [in] */ unsigned long uCount, - /* [length_is][size_is][out] */ IWbemClassObject_BIPC **apObjects, - /* [out] */ unsigned long *puReturned) = 0; - - virtual long __stdcall NextAsync( - /* [in] */ unsigned long uCount, - /* [in] */ void *pSink) = 0; - - virtual long __stdcall Clone( - /* [out] */ void **ppEnum) = 0; - - virtual long __stdcall Skip( - /* [in] */ long lTimeout, - /* [in] */ unsigned long nCount) = 0; - -}; - -struct IWbemServices_BIPC : public IUnknown_BIPC -{ -public: - virtual long __stdcall OpenNamespace( - /* [in] */ const bstr strNamespace, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [unique][in][out] */ void **ppWorkingNamespace, - /* [unique][in][out] */ void **ppResult) = 0; - - virtual long __stdcall CancelAsyncCall( - /* [in] */ void *pSink) = 0; - - virtual long __stdcall QueryObjectSink( - /* [in] */ long lFlags, - /* [out] */ void **ppResponseHandler) = 0; - - virtual long __stdcall GetObject( - /* [in] */ const bstr strObjectPath, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [unique][in][out] */ void **ppObject, - /* [unique][in][out] */ void **ppCallResult) = 0; - - virtual long __stdcall GetObjectAsync( - /* [in] */ const bstr strObjectPath, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [in] */ void *pResponseHandler) = 0; - - virtual long __stdcall PutClass( - /* [in] */ IWbemClassObject_BIPC *pObject, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [unique][in][out] */ void **ppCallResult) = 0; - - virtual long __stdcall PutClassAsync( - /* [in] */ IWbemClassObject_BIPC *pObject, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [in] */ void *pResponseHandler) = 0; - - virtual long __stdcall DeleteClass( - /* [in] */ const bstr strClass, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [unique][in][out] */ void **ppCallResult) = 0; - - virtual long __stdcall DeleteClassAsync( - /* [in] */ const bstr strClass, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [in] */ void *pResponseHandler) = 0; - - virtual long __stdcall CreateClassEnum( - /* [in] */ const bstr strSuperclass, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [out] */ void **ppEnum) = 0; - - virtual long __stdcall CreateClassEnumAsync( - /* [in] */ const bstr strSuperclass, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [in] */ void *pResponseHandler) = 0; - - virtual long __stdcall PutInstance( - /* [in] */ void *pInst, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [unique][in][out] */ void **ppCallResult) = 0; - - virtual long __stdcall PutInstanceAsync( - /* [in] */ void *pInst, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [in] */ void *pResponseHandler) = 0; - - virtual long __stdcall DeleteInstance( - /* [in] */ const bstr strObjectPath, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [unique][in][out] */ void **ppCallResult) = 0; - - virtual long __stdcall DeleteInstanceAsync( - /* [in] */ const bstr strObjectPath, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [in] */ void *pResponseHandler) = 0; - - virtual long __stdcall CreateInstanceEnum( - /* [in] */ const bstr strFilter, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [out] */ void **ppEnum) = 0; - - virtual long __stdcall CreateInstanceEnumAsync( - /* [in] */ const bstr strFilter, - /* [in] */ long lFlags, - /* [in] */ void *pCtx, - /* [in] */ void *pResponseHandler) = 0; - - virtual long __stdcall ExecQuery( - /* [in] */ const bstr strQueryLanguage, - /* [in] */ const bstr strQuery, - /* [in] */ long lFlags, - /* [in] */ IWbemContext_BIPC *pCtx, - /* [out] */ IEnumWbemClassObject_BIPC **ppEnum) = 0; - - virtual long __stdcall ExecQueryAsync( - /* [in] */ const bstr strQueryLanguage, - /* [in] */ const bstr strQuery, - /* [in] */ long lFlags, - /* [in] */ IWbemContext_BIPC *pCtx, - /* [in] */ void *pResponseHandler) = 0; - - virtual long __stdcall ExecNotificationQuery( - /* [in] */ const bstr strQueryLanguage, - /* [in] */ const bstr strQuery, - /* [in] */ long lFlags, - /* [in] */ IWbemContext_BIPC *pCtx, - /* [out] */ void **ppEnum) = 0; - - virtual long __stdcall ExecNotificationQueryAsync( - /* [in] */ const bstr strQueryLanguage, - /* [in] */ const bstr strQuery, - /* [in] */ long lFlags, - /* [in] */ IWbemContext_BIPC *pCtx, - /* [in] */ void *pResponseHandler) = 0; - - virtual long __stdcall ExecMethod( - /* [in] */ const bstr strObjectPath, - /* [in] */ const bstr strMethodName, - /* [in] */ long lFlags, - /* [in] */ IWbemContext_BIPC *pCtx, - /* [in] */ IWbemClassObject_BIPC *pInParams, - /* [unique][in][out] */ IWbemClassObject_BIPC **ppOutParams, - /* [unique][in][out] */ void **ppCallResult) = 0; - - virtual long __stdcall ExecMethodAsync( - /* [in] */ const bstr strObjectPath, - /* [in] */ const bstr strMethodName, - /* [in] */ long lFlags, - /* [in] */ IWbemContext_BIPC *pCtx, - /* [in] */ IWbemClassObject_BIPC *pInParams, - /* [in] */ void *pResponseHandler) = 0; - -}; - -struct IWbemLocator_BIPC : public IUnknown_BIPC -{ -public: - virtual long __stdcall ConnectServer( - /* [in] */ const bstr strNetworkResource, - /* [in] */ const bstr strUser, - /* [in] */ const bstr strPassword, - /* [in] */ const bstr strLocale, - /* [in] */ long lSecurityFlags, - /* [in] */ const bstr strAuthority, - /* [in] */ void *pCtx, - /* [out] */ IWbemServices_BIPC **ppNamespace) = 0; - -}; - -struct interprocess_overlapped -{ - unsigned long *internal; - unsigned long *internal_high; - union { - struct { - unsigned long offset; - unsigned long offset_high; - }dummy; - void *pointer; - }; - - void *h_event; -}; - - -struct interprocess_filetime -{ - unsigned long dwLowDateTime; - unsigned long dwHighDateTime; -}; - -struct win32_find_data -{ - unsigned long dwFileAttributes; - interprocess_filetime ftCreationTime; - interprocess_filetime ftLastAccessTime; - interprocess_filetime ftLastWriteTime; - unsigned long nFileSizeHigh; - unsigned long nFileSizeLow; - unsigned long dwReserved0; - unsigned long dwReserved1; - char cFileName[MaxPath]; - char cAlternateFileName[14]; -}; - -struct interprocess_security_attributes -{ - unsigned long nLength; - void *lpSecurityDescriptor; - int bInheritHandle; -}; - -struct system_info { - union { - unsigned long dwOemId; // Obsolete field...do not use - struct { - unsigned short wProcessorArchitecture; - unsigned short wReserved; - } dummy; - }; - unsigned long dwPageSize; - void * lpMinimumApplicationAddress; - void * lpMaximumApplicationAddress; - unsigned long * dwActiveProcessorMask; - unsigned long dwNumberOfProcessors; - unsigned long dwProcessorType; - unsigned long dwAllocationGranularity; - unsigned short wProcessorLevel; - unsigned short wProcessorRevision; -}; - -struct interprocess_acl -{ - unsigned char AclRevision; - unsigned char Sbz1; - unsigned short AclSize; - unsigned short AceCount; - unsigned short Sbz2; -}; - -struct interprocess_security_descriptor -{ - unsigned char Revision; - unsigned char Sbz1; - unsigned short Control; - void *Owner; - void *Group; - interprocess_acl *Sacl; - interprocess_acl *Dacl; -}; - -struct interprocess_by_handle_file_information -{ - unsigned long dwFileAttributes; - interprocess_filetime ftCreationTime; - interprocess_filetime ftLastAccessTime; - interprocess_filetime ftLastWriteTime; - unsigned long dwVolumeSerialNumber; - unsigned long nFileSizeHigh; - unsigned long nFileSizeLow; - unsigned long nNumberOfLinks; - unsigned long nFileIndexHigh; - unsigned long nFileIndexLow; -}; - -struct interprocess_eventlogrecord -{ - unsigned long Length; // Length of full record - unsigned long Reserved; // Used by the service - unsigned long RecordNumber; // Absolute record number - unsigned long TimeGenerated; // Seconds since 1-1-1970 - unsigned long TimeWritten; // Seconds since 1-1-1970 - unsigned long EventID; - unsigned short EventType; - unsigned short NumStrings; - unsigned short EventCategory; - unsigned short ReservedFlags; // For use with paired events (auditing) - unsigned long ClosingRecordNumber; // For use with paired events (auditing) - unsigned long StringOffset; // Offset from beginning of record - unsigned long UserSidLength; - unsigned long UserSidOffset; - unsigned long DataLength; - unsigned long DataOffset; // Offset from beginning of record - // - // Then follow: - // - // wchar_t SourceName[] - // wchar_t Computername[] - // SID UserSid - // wchar_t Strings[] - // BYTE Data[] - // CHAR Pad[] - // unsigned long Length; - // -}; - -union large_integer -{ - __int64 QuadPart; -}; - -struct hinstance_struct { int unused; }; -typedef hinstance_struct *hmodule; - -struct hkey_struct; -typedef hkey_struct *hkey; - -#ifdef _WIN64 -typedef __int64 (__stdcall *farproc_t)(); +#ifdef BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED +# define BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED_VALUE 1 #else -typedef int (__stdcall *farproc_t)(); -#endif // _WIN64 - -#else //#ifndef BOOST_USE_WINDOWS_H - -typedef GUID GUID_BIPC; -typedef VARIANT wchar_variant; - -#if defined(BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME) - -typedef IUnknown IUnknown_BIPC; - -typedef IWbemClassObject IWbemClassObject_BIPC; - -typedef IWbemContext IWbemContext_BIPC; - -typedef IEnumWbemClassObject IEnumWbemClassObject_BIPC; - -typedef IWbemServices IWbemServices_BIPC; - -typedef IWbemLocator IWbemLocator_BIPC; - +# define BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED_VALUE 0 #endif -typedef OVERLAPPED interprocess_overlapped; - -typedef FILETIME interprocess_filetime; - -typedef WIN32_FIND_DATAA win32_find_data; - -typedef SECURITY_ATTRIBUTES interprocess_security_attributes; - -typedef SYSTEM_INFO system_info; - -typedef ACL interprocess_acl; - -typedef SECURITY_DESCRIPTOR interprocess_security_descriptor; - -typedef BY_HANDLE_FILE_INFORMATION interprocess_by_handle_file_information; - -typedef EVENTLOGRECORD interprocess_eventlogrecord; - -typedef LARGE_INTEGER large_integer; +#define BOOST_INTERPROCESS_BOOTSTAMP_VALUE_SUM \ + (BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED_VALUE + \ + BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED_VALUE) -typedef HMODULE hmodule; +#if 1 < BOOST_INTERPROCESS_BOOTSTAMP_VALUE_SUM +# error "Only one of \ + BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED and \ + BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED can be defined" +#endif -typedef HKEY hkey; +#if 0 == BOOST_INTERPROCESS_BOOTSTAMP_VALUE_SUM +# define BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED +#endif -typedef BSTR bstr; -typedef FARPROC farproc_t; +namespace boost { +namespace interprocess { +namespace winapi { -#endif //#ifndef BOOST_USE_WINDOWS_H +//Own defines +static const unsigned long MaxPath = 260; ////////////////////////////////////////////////////////////////////////////// // @@ -739,8 +121,8 @@ typedef FARPROC farproc_t; struct interprocess_semaphore_basic_information { - unsigned int count; // current semaphore count - unsigned int limit; // max semaphore count + unsigned long count; // current semaphore count + unsigned long limit; // max semaphore count }; struct interprocess_section_basic_information @@ -882,148 +264,212 @@ enum section_information_class section_image_information }; +} //namespace winapi { +} //namespace interprocess { +} //namespace boost { + + ////////////////////////////////////////////////////////////////////////////// // // Forward declaration of winapi // ////////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//This should go in winapi's basic_types.hpp +namespace boost { +namespace ipwinapiext { +typedef boost::winapi::LONG_ LSTATUS; + +typedef boost::winapi::DWORD_ (__stdcall *LPTHREAD_START_ROUTINE_) + (boost::winapi::LPVOID_ lpThreadParameter); + + +//#ifndef BOOST_USE_WINDOWS_H +//typedef boost::winapi::LARGE_INTEGER_ LARGE_INTEGER_EXT; +//#else +//typedef LARGE_INTEGER LARGE_INTEGER_EXT; +//#endif + +}} //namespace boost::ipwinapiext + #ifndef BOOST_USE_WINDOWS_H -//Kernel32.dll +extern "C" { -//Some windows API declarations -extern "C" __declspec(dllimport) unsigned long __stdcall GetCurrentProcessId(); -extern "C" __declspec(dllimport) unsigned long __stdcall GetCurrentThreadId(); -extern "C" __declspec(dllimport) int __stdcall GetProcessTimes - ( void *hProcess, interprocess_filetime* lpCreationTime - , interprocess_filetime *lpExitTime,interprocess_filetime *lpKernelTime - , interprocess_filetime *lpUserTime ); -extern "C" __declspec(dllimport) void __stdcall Sleep(unsigned long); -extern "C" __declspec(dllimport) unsigned long __stdcall GetTickCount(void); -extern "C" __declspec(dllimport) int __stdcall SwitchToThread(); -extern "C" __declspec(dllimport) unsigned long __stdcall GetLastError(); -extern "C" __declspec(dllimport) void __stdcall SetLastError(unsigned long); -extern "C" __declspec(dllimport) void * __stdcall GetCurrentProcess(); -extern "C" __declspec(dllimport) int __stdcall CloseHandle(void*); -extern "C" __declspec(dllimport) int __stdcall DuplicateHandle - ( void *hSourceProcessHandle, void *hSourceHandle - , void *hTargetProcessHandle, void **lpTargetHandle - , unsigned long dwDesiredAccess, int bInheritHandle - , unsigned long dwOptions); -extern "C" __declspec(dllimport) long __stdcall GetFileType(void *hFile); -extern "C" __declspec(dllimport) void *__stdcall FindFirstFileA(const char *lpFileName, win32_find_data *lpFindFileData); -extern "C" __declspec(dllimport) int __stdcall FindNextFileA(void *hFindFile, win32_find_data *lpFindFileData); -extern "C" __declspec(dllimport) int __stdcall FindClose(void *hFindFile); -//extern "C" __declspec(dllimport) void __stdcall GetSystemTimeAsFileTime(interprocess_filetime*); -//extern "C" __declspec(dllimport) int __stdcall FileTimeToLocalFileTime(const interprocess_filetime *in, const interprocess_filetime *out); -extern "C" __declspec(dllimport) void * __stdcall CreateMutexA(interprocess_security_attributes*, int, const char *); -extern "C" __declspec(dllimport) void * __stdcall OpenMutexA(unsigned long, int, const char *); -extern "C" __declspec(dllimport) unsigned long __stdcall WaitForSingleObject(void *, unsigned long); -extern "C" __declspec(dllimport) int __stdcall ReleaseMutex(void *); -extern "C" __declspec(dllimport) int __stdcall UnmapViewOfFile(void *); -extern "C" __declspec(dllimport) void * __stdcall CreateSemaphoreA(interprocess_security_attributes*, long, long, const char *); -extern "C" __declspec(dllimport) int __stdcall ReleaseSemaphore(void *, long, long *); -extern "C" __declspec(dllimport) void * __stdcall OpenSemaphoreA(unsigned long, int, const char *); -extern "C" __declspec(dllimport) void * __stdcall CreateFileMappingA (void *, interprocess_security_attributes*, unsigned long, unsigned long, unsigned long, const char *); -extern "C" __declspec(dllimport) void * __stdcall MapViewOfFileEx (void *, unsigned long, unsigned long, unsigned long, std::size_t, void*); -extern "C" __declspec(dllimport) void * __stdcall OpenFileMappingA (unsigned long, int, const char *); -extern "C" __declspec(dllimport) void * __stdcall CreateFileA (const char *, unsigned long, unsigned long, struct interprocess_security_attributes*, unsigned long, unsigned long, void *); -extern "C" __declspec(dllimport) void __stdcall GetSystemInfo (struct system_info *); -extern "C" __declspec(dllimport) int __stdcall FlushViewOfFile (void *, std::size_t); -extern "C" __declspec(dllimport) int __stdcall VirtualUnlock (void *, std::size_t); -extern "C" __declspec(dllimport) int __stdcall VirtualProtect (void *, std::size_t, unsigned long, unsigned long *); -extern "C" __declspec(dllimport) int __stdcall FlushFileBuffers (void *); -extern "C" __declspec(dllimport) int __stdcall GetFileSizeEx (void *, large_integer *size); -extern "C" __declspec(dllimport) unsigned long __stdcall FormatMessageA - (unsigned long dwFlags, const void *lpSource, unsigned long dwMessageId, - unsigned long dwLanguageId, char *lpBuffer, unsigned long nSize, - std::va_list *Arguments); -extern "C" __declspec(dllimport) void *__stdcall LocalFree (void *); -extern "C" __declspec(dllimport) unsigned long __stdcall GetFileAttributesA(const char *); -extern "C" __declspec(dllimport) int __stdcall CreateDirectoryA(const char *, interprocess_security_attributes*); -extern "C" __declspec(dllimport) int __stdcall RemoveDirectoryA(const char *lpPathName); -extern "C" __declspec(dllimport) int __stdcall GetTempPathA(unsigned long length, char *buffer); -extern "C" __declspec(dllimport) int __stdcall CreateDirectory(const char *, interprocess_security_attributes*); -extern "C" __declspec(dllimport) int __stdcall SetFileValidData(void *, __int64 size); -extern "C" __declspec(dllimport) int __stdcall SetEndOfFile(void *); -extern "C" __declspec(dllimport) int __stdcall SetFilePointerEx(void *, large_integer distance, large_integer *new_file_pointer, unsigned long move_method); -extern "C" __declspec(dllimport) int __stdcall LockFile (void *hnd, unsigned long offset_low, unsigned long offset_high, unsigned long size_low, unsigned long size_high); -extern "C" __declspec(dllimport) int __stdcall UnlockFile(void *hnd, unsigned long offset_low, unsigned long offset_high, unsigned long size_low, unsigned long size_high); -extern "C" __declspec(dllimport) int __stdcall LockFileEx(void *hnd, unsigned long flags, unsigned long reserved, unsigned long size_low, unsigned long size_high, interprocess_overlapped* overlapped); -extern "C" __declspec(dllimport) int __stdcall UnlockFileEx(void *hnd, unsigned long reserved, unsigned long size_low, unsigned long size_high, interprocess_overlapped* overlapped); -extern "C" __declspec(dllimport) int __stdcall WriteFile(void *hnd, const void *buffer, unsigned long bytes_to_write, unsigned long *bytes_written, interprocess_overlapped* overlapped); -extern "C" __declspec(dllimport) int __stdcall ReadFile(void *hnd, void *buffer, unsigned long bytes_to_read, unsigned long *bytes_read, interprocess_overlapped* overlapped); -extern "C" __declspec(dllimport) int __stdcall InitializeSecurityDescriptor(interprocess_security_descriptor *pSecurityDescriptor, unsigned long dwRevision); -extern "C" __declspec(dllimport) int __stdcall SetSecurityDescriptorDacl(interprocess_security_descriptor *pSecurityDescriptor, int bDaclPresent, interprocess_acl *pDacl, int bDaclDefaulted); -extern "C" __declspec(dllimport) hmodule __stdcall LoadLibraryA(const char *); -extern "C" __declspec(dllimport) int __stdcall FreeLibrary(hmodule); -extern "C" __declspec(dllimport) farproc_t __stdcall GetProcAddress(void *, const char*); -extern "C" __declspec(dllimport) hmodule __stdcall GetModuleHandleA(const char*); -extern "C" __declspec(dllimport) void *__stdcall GetFileInformationByHandle(void *, interprocess_by_handle_file_information*); - -//Advapi32.dll -extern "C" __declspec(dllimport) long __stdcall RegOpenKeyExA(hkey, const char *, unsigned long, unsigned long, hkey*); -extern "C" __declspec(dllimport) long __stdcall RegQueryValueExA(hkey, const char *, unsigned long*, unsigned long*, unsigned char *, unsigned long*); -extern "C" __declspec(dllimport) long __stdcall RegCloseKey(hkey); - -//Ole32.dll -extern "C" __declspec(dllimport) long __stdcall CoInitializeEx(void *pvReserved, unsigned long dwCoInit); -extern "C" __declspec(dllimport) long __stdcall CoInitializeSecurity( - void* pSecDesc, - long cAuthSvc, - void * asAuthSvc, - void *pReserved1, - unsigned long dwAuthnLevel, - unsigned long dwImpLevel, - void *pAuthList, - unsigned long dwCapabilities, - void *pReserved3 ); - - extern "C" __declspec(dllimport) long __stdcall CoSetProxyBlanket( - IUnknown_BIPC *pProxy, - unsigned long dwAuthnSvc, - unsigned long dwAuthzSvc, - wchar_t *pServerPrincName, - unsigned long dwAuthnLevel, - unsigned long dwImpLevel, - void *pAuthInfo, - unsigned long dwCapabilities); -extern "C" __declspec(dllimport) long __stdcall CoCreateInstance(const GUID_BIPC & rclsid, IUnknown_BIPC *pUnkOuter, - unsigned long dwClsContext, const GUID_BIPC & riid, void** ppv); -extern "C" __declspec(dllimport) void __stdcall CoUninitialize(void); - -//OleAut32.dll -extern "C" __declspec(dllimport) long __stdcall VariantClear(wchar_variant * pvarg); - -//Shell32.dll -extern "C" __declspec(dllimport) int __stdcall SHGetSpecialFolderPathA - (void* hwnd, const char *pszPath, int csidl, int fCreate); - -extern "C" __declspec(dllimport) int __stdcall SHGetFolderPathA(void *hwnd, int csidl, void *hToken, unsigned long dwFlags, const char *pszPath); - -//EventLog access functions - -extern "C" __declspec(dllimport) void* __stdcall OpenEventLogA - (const char* lpUNCServerName, const char* lpSourceName); - -extern "C" __declspec(dllimport) int __stdcall CloseEventLog(void *hEventLog); - -extern "C" __declspec(dllimport) int __stdcall ReadEventLogA - (void *hEventLog, - unsigned long dwReadFlags, - unsigned long dwRecordOffset, - void *lpBuffer, - unsigned long nNumberOfBytesToRead, - unsigned long *pnBytesRead, - unsigned long *pnMinNumberOfBytesNeeded +//Error handling +BOOST_SYMBOL_IMPORT BOOST_WINAPI_DETAIL_VOID BOOST_WINAPI_WINAPI_CC SetLastError(boost::winapi::DWORD_ dwErrCode); + +//File management +BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC GetFileType(boost::winapi::HANDLE_ hTemplateFile); +BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC FlushFileBuffers(boost::winapi::HANDLE_ hFile); + +//threading + +BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC CreateThread + ( ::_SECURITY_ATTRIBUTES* lpThreadAttributes + , boost::winapi::SIZE_T_ dwStackSize + , boost::ipwinapiext::LPTHREAD_START_ROUTINE_ lpStartAddress + , boost::winapi::LPVOID_ lpParameter + , boost::winapi::DWORD_ dwCreationFlags + , boost::winapi::LPDWORD_ lpThreadId ); +//Virtual Memory +BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC VirtualLock(boost::winapi::LPVOID_ lpAddress, boost::winapi::SIZE_T_ dwSize); +BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC VirtualUnlock(boost::winapi::LPVOID_ lpAddress, boost::winapi::SIZE_T_ dwSize); +BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC VirtualProtect( boost::winapi::LPVOID_ lpAddress, boost::winapi::SIZE_T_ dwSize + , boost::winapi::DWORD_ flNewProtect, boost::winapi::PDWORD_ lpflOldProtect); +//registry.hpp +BOOST_WINAPI_DETAIL_DECLARE_HANDLE(HKEY); + + +BOOST_SYMBOL_IMPORT boost::ipwinapiext::LSTATUS BOOST_WINAPI_WINAPI_CC RegOpenKeyExA + (::HKEY hKey, const char *lpSubKey, boost::winapi::DWORD_ ulOptions, boost::winapi::DWORD_ samDesired, ::HKEY *phkResult); +BOOST_SYMBOL_IMPORT boost::ipwinapiext::LSTATUS BOOST_WINAPI_WINAPI_CC RegOpenKeyExW + (::HKEY hKey, const wchar_t *lpSubKey, boost::winapi::DWORD_ ulOptions, boost::winapi::DWORD_ samDesired, ::HKEY *phkResult); +BOOST_SYMBOL_IMPORT boost::ipwinapiext::LSTATUS BOOST_WINAPI_WINAPI_CC RegQueryValueExA + (::HKEY hKey, const char *lpValueName, boost::winapi::DWORD_ *lpReserved, boost::winapi::DWORD_ *lpType, boost::winapi::BYTE_ *lpData, boost::winapi::DWORD_ *lpcbData); +BOOST_SYMBOL_IMPORT boost::ipwinapiext::LSTATUS BOOST_WINAPI_WINAPI_CC RegQueryValueExW + (::HKEY hKey, const wchar_t *lpValueName, boost::winapi::DWORD_ *lpReserved, boost::winapi::DWORD_ *lpType, boost::winapi::BYTE_ *lpData, boost::winapi::DWORD_ *lpcbData); +BOOST_SYMBOL_IMPORT boost::ipwinapiext::LSTATUS BOOST_WINAPI_WINAPI_CC RegCloseKey(::HKEY hKey); + + +//Event Log +BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC OpenEventLogA(const char* lpUNCServerName, const char* lpSourceName); +BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC OpenEventLogW(const wchar_t* lpUNCServerName, const wchar_t* lpSourceName); +BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC CloseEventLog(boost::winapi::HANDLE_ hEventLog); +BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC ReadEventLogA + ( boost::winapi::HANDLE_ hEventLog, boost::winapi::DWORD_ dwReadFlags, boost::winapi::DWORD_ dwRecordOffset, void* lpBuffer + , boost::winapi::DWORD_ nNumberOfBytesToRead, boost::winapi::DWORD_ *pnBytesRead, boost::winapi::DWORD_ *pnMinNumberOfBytesNeeded); +BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC ReadEventLogW + ( boost::winapi::HANDLE_ hEventLog, boost::winapi::DWORD_ dwReadFlags, boost::winapi::DWORD_ dwRecordOffset, void* lpBuffer + , boost::winapi::DWORD_ nNumberOfBytesToRead, boost::winapi::DWORD_ *pnBytesRead, boost::winapi::DWORD_ *pnMinNumberOfBytesNeeded); + +} //extern "C" { + #endif //#ifndef BOOST_USE_WINDOWS_H -//kernel32.dll -typedef int (__stdcall *QueryPerformanceCounter_t) (__int64 *lpPerformanceCount); -typedef int (__stdcall *QueryPerformanceFrequency_t)(__int64 *lpFrequency); +namespace boost { +namespace ipwinapiext { + +typedef ::HKEY HKEY_; + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM + +//Threads +BOOST_FORCEINLINE boost::winapi::HANDLE_ CreateThread + ( boost::winapi::SECURITY_ATTRIBUTES_* lpThreadAttributes + , boost::winapi::SIZE_T_ dwStackSize + , boost::ipwinapiext::LPTHREAD_START_ROUTINE_ lpStartAddress + , boost::winapi::LPVOID_ lpParameter + , boost::winapi::DWORD_ dwCreationFlags + , boost::winapi::LPDWORD_ lpThreadId +) +{ + return ::CreateThread( reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpThreadAttributes) + , dwStackSize, lpStartAddress + , lpParameter, dwCreationFlags, lpThreadId); +} + +//Error handling +BOOST_FORCEINLINE BOOST_WINAPI_DETAIL_VOID SetLastError(boost::winapi::DWORD_ dwErrCode) +{ ::SetLastError(dwErrCode); } + +//File management +BOOST_FORCEINLINE boost::winapi::DWORD_ GetFileType(boost::winapi::HANDLE_ hTemplateFile) +{ return ::GetFileType(hTemplateFile); } + +BOOST_FORCEINLINE boost::winapi::BOOL_ FlushFileBuffers(boost::winapi::HANDLE_ hFile) +{ return ::FlushFileBuffers(hFile); } + +//Virtual Memory +BOOST_FORCEINLINE boost::winapi::BOOL_ VirtualLock(boost::winapi::LPVOID_ lpAddress, boost::winapi::SIZE_T_ dwSize) +{ return ::VirtualLock(lpAddress, dwSize); } + +BOOST_FORCEINLINE boost::winapi::BOOL_ VirtualUnlock(boost::winapi::LPVOID_ lpAddress, boost::winapi::SIZE_T_ dwSize) +{ return ::VirtualUnlock(lpAddress, dwSize); } + +BOOST_FORCEINLINE boost::winapi::BOOL_ VirtualProtect( boost::winapi::LPVOID_ lpAddress, boost::winapi::SIZE_T_ dwSize + , boost::winapi::DWORD_ flNewProtect, boost::winapi::PDWORD_ lpflOldProtect) +{ return ::VirtualProtect(lpAddress, dwSize, flNewProtect, lpflOldProtect); } + +//registry.hpp +BOOST_FORCEINLINE boost::ipwinapiext::LSTATUS RegOpenKeyExA + (boost::ipwinapiext::HKEY_ hKey, const char *lpSubKey, boost::winapi::DWORD_ ulOptions, boost::winapi::DWORD_ samDesired, boost::ipwinapiext::HKEY_ *phkResult) +{ + return ::RegOpenKeyExA(reinterpret_cast< ::HKEY >(hKey), lpSubKey, ulOptions, samDesired, reinterpret_cast< ::HKEY* >(phkResult)); +} + +BOOST_FORCEINLINE boost::ipwinapiext::LSTATUS RegOpenKeyExW + (boost::ipwinapiext::HKEY_ hKey, const wchar_t *lpSubKey, boost::winapi::DWORD_ ulOptions, boost::winapi::DWORD_ samDesired, boost::ipwinapiext::HKEY_ *phkResult) +{ + return ::RegOpenKeyExW(reinterpret_cast< ::HKEY >(hKey), lpSubKey, ulOptions, samDesired, reinterpret_cast< ::HKEY* >(phkResult)); +} + +BOOST_FORCEINLINE boost::ipwinapiext::LSTATUS RegQueryValueExA + (boost::ipwinapiext::HKEY_ hKey, const char *lpValueName, boost::winapi::DWORD_ *lpReserved, boost::winapi::DWORD_ *lpType, boost::winapi::BYTE_ *lpData, boost::winapi::DWORD_ *lpcbData) +{ + return ::RegQueryValueExA(reinterpret_cast< ::HKEY >(hKey), lpValueName, lpReserved, lpType, lpData, lpcbData); +} + +BOOST_FORCEINLINE boost::ipwinapiext::LSTATUS RegQueryValueExW + (boost::ipwinapiext::HKEY_ hKey, const wchar_t *lpValueName, boost::winapi::DWORD_ *lpReserved, boost::winapi::DWORD_ *lpType, boost::winapi::BYTE_ *lpData, boost::winapi::DWORD_ *lpcbData) +{ + return ::RegQueryValueExW(reinterpret_cast< ::HKEY >(hKey), lpValueName, lpReserved, lpType, lpData, lpcbData); +} + +BOOST_FORCEINLINE boost::ipwinapiext::LSTATUS RegCloseKey(boost::ipwinapiext::HKEY_ hKey) +{ + return ::RegCloseKey(reinterpret_cast< ::HKEY >(hKey)); +} + +BOOST_FORCEINLINE void GetSystemInfo(boost::winapi::LPSYSTEM_INFO_ lpSystemInfo) +{ return ::GetSystemInfo(reinterpret_cast< ::_SYSTEM_INFO* >(lpSystemInfo)); } + +#endif //BOOST_WINAPI_PARTITION_APP_SYSTEM + +} //namespace ipwinapiext { +} //namespace boost { + +namespace boost { +namespace interprocess { +namespace winapi { + +typedef boost::winapi::SYSTEM_INFO_ interprocess_system_info; +typedef boost::winapi::OVERLAPPED_ interprocess_overlapped; +typedef boost::winapi::FILETIME_ interprocess_filetime; +typedef boost::winapi::WIN32_FIND_DATAA_ win32_find_data_a; +typedef boost::winapi::WIN32_FIND_DATAW_ win32_find_data_w; +typedef boost::winapi::SECURITY_ATTRIBUTES_ interprocess_security_attributes; +typedef boost::winapi::SECURITY_DESCRIPTOR_ interprocess_security_descriptor; +typedef boost::winapi::BY_HANDLE_FILE_INFORMATION_ interprocess_by_handle_file_information; +typedef boost::winapi::HMODULE_ hmodule; +typedef boost::ipwinapiext::HKEY_ hkey; +typedef boost::winapi::FARPROC_ farproc_t; //ntdll.dll typedef long (__stdcall *NtDeleteFile_t)(object_attributes_t *ObjectAttributes); @@ -1183,27 +629,6 @@ const unsigned long max_path = 260; static const hkey hkey_local_machine = (hkey)(unsigned long*)(long)(0x80000002); static unsigned long key_query_value = 0x0001; -//COM API -const unsigned long RPC_C_AUTHN_LEVEL_PKT_BIPC = 4; -const unsigned long RPC_C_AUTHN_DEFAULT_BIPC = 0xffffffffL; -const unsigned long RPC_C_AUTHZ_DEFAULT_BIPC = 0xffffffffL; -const unsigned long RPC_C_IMP_LEVEL_IMPERSONATE_BIPC = 3; -const signed long EOAC_NONE_BIPC = 0; -const signed long CLSCTX_INPROC_SERVER_BIPC = 0x1; -const signed long CLSCTX_LOCAL_SERVER_BIPC = 0x4; -const signed long WBEM_FLAG_RETURN_IMMEDIATELY_BIPC = 0x10; -const signed long WBEM_FLAG_RETURN_WHEN_COMPLETE_BIPC = 0x0; -const signed long WBEM_FLAG_FORWARD_ONLY_BIPC = 0x20; -const signed long WBEM_INFINITE_BIPC = 0xffffffffL; -const signed long RPC_E_TOO_LATE_BIPC = 0x80010119L; -const signed long S_OK_BIPC = 0L; -const signed long S_FALSE_BIPC = 1; -const signed long RPC_E_CHANGED_MODE_BIPC = 0x80010106L; -const unsigned long COINIT_APARTMENTTHREADED_BIPC = 0x2; -const unsigned long COINIT_MULTITHREADED_BIPC = 0x0; -const unsigned long COINIT_DISABLE_OLE1DDE_BIPC = 0x4; -const unsigned long COINIT_SPEED_OVER_MEMORY_BIPC = 0x4; - // Registry types #define reg_none ( 0 ) // No value type #define reg_sz ( 1 ) // Unicode nul terminated string @@ -1222,30 +647,6 @@ const unsigned long COINIT_SPEED_OVER_MEMORY_BIPC = 0x4; #define reg_qword_little_endian ( 11 ) // 64-bit number (same as reg_qword) -//If the user needs to change default COM initialization model, -//it can define BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL to one of these: -// -// COINIT_APARTMENTTHREADED_BIPC -// COINIT_MULTITHREADED_BIPC -// COINIT_DISABLE_OLE1DDE_BIPC -// COINIT_SPEED_OVER_MEMORY_BIPC -#if !defined(BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL) - #define BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL COINIT_APARTMENTTHREADED_BIPC -#elif (BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL != COINIT_APARTMENTTHREADED_BIPC) &&\ - (BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL != COINIT_MULTITHREADED_BIPC) &&\ - (BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL != COINIT_DISABLE_OLE1DDE_BIPC) &&\ - (BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL != COINIT_SPEED_OVER_MEMORY_BIPC) - #error "Wrong value for BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL macro" -#endif - -const GUID_BIPC CLSID_WbemAdministrativeLocator = - { 0xcb8555cc, 0x9128, 0x11d1, {0xad, 0x9b, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff}}; - -const GUID_BIPC IID_IUnknown = { 0x00000000, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; - -static const unsigned long eventlog_sequential_read = 0x0001; -static const unsigned long eventlog_backwards_read = 0x0008; - } //namespace winapi { } //namespace interprocess { } //namespace boost { @@ -1275,7 +676,11 @@ inline void * local_free(void *hmem) { return LocalFree(hmem); } inline unsigned long make_lang_id(unsigned long p, unsigned long s) -{ return ((((unsigned short)(s)) << 10) | (unsigned short)(p)); } +{ + const unsigned short s_us = (unsigned short)s; + const unsigned short p_us = (unsigned short)p; + return (unsigned long)((s_us << 10) | p_us); +} inline void sched_yield() { @@ -1302,15 +707,21 @@ inline bool get_process_times inline unsigned long get_current_process_id() { return GetCurrentProcessId(); } -inline unsigned int close_handle(void* handle) -{ return CloseHandle(handle); } +inline bool close_handle(void* handle) +{ return CloseHandle(handle) != 0; } -inline void * find_first_file(const char *lpFileName, win32_find_data *lpFindFileData) +inline void * find_first_file(const char *lpFileName, win32_find_data_a *lpFindFileData) { return FindFirstFileA(lpFileName, lpFindFileData); } -inline bool find_next_file(void *hFindFile, win32_find_data *lpFindFileData) +inline void * find_first_file(const wchar_t *lpFileName, win32_find_data_w *lpFindFileData) +{ return FindFirstFileW(lpFileName, lpFindFileData); } + +inline bool find_next_file(void *hFindFile, win32_find_data_a *lpFindFileData) { return FindNextFileA(hFindFile, lpFindFileData) != 0; } +inline bool find_next_file(void *hFindFile, win32_find_data_w *lpFindFileData) +{ return FindNextFileW(hFindFile, lpFindFileData) != 0; } + inline bool find_close(void *handle) { return FindClose(handle) != 0; } @@ -1339,6 +750,9 @@ inline bool file_time_to_local_file_time inline void *open_or_create_mutex(const char *name, bool initial_owner, interprocess_security_attributes *attr) { return CreateMutexA(attr, (int)initial_owner, name); } +inline void *open_or_create_mutex(const wchar_t *name, bool initial_owner, interprocess_security_attributes *attr) +{ return CreateMutexW(attr, (int)initial_owner, name); } + inline unsigned long wait_for_single_object(void *handle, unsigned long time) { return WaitForSingleObject(handle, time); } @@ -1351,9 +765,15 @@ inline int unmap_view_of_file(void *address) inline void *open_or_create_semaphore(const char *name, long initial_count, long maximum_count, interprocess_security_attributes *attr) { return CreateSemaphoreA(attr, initial_count, maximum_count, name); } +inline void *open_or_create_semaphore(const wchar_t *name, long initial_count, long maximum_count, interprocess_security_attributes *attr) +{ return CreateSemaphoreW(attr, initial_count, maximum_count, name); } + inline void *open_semaphore(const char *name) { return OpenSemaphoreA(semaphore_all_access, 0, name); } +inline void *open_semaphore(const wchar_t *name) +{ return OpenSemaphoreW(semaphore_all_access, 0, name); } + inline int release_semaphore(void *handle, long release_count, long *prev_count) { return ReleaseSemaphore(handle, release_count, prev_count); } @@ -1367,14 +787,14 @@ class interprocess_all_access_security interprocess_all_access_security() : initialized(false) { - if(!InitializeSecurityDescriptor(&sd, security_descriptor_revision)) + if(!boost::winapi::InitializeSecurityDescriptor(&sd, security_descriptor_revision)) return; - if(!SetSecurityDescriptorDacl(&sd, true, 0, false)) + if(!boost::winapi::SetSecurityDescriptorDacl(&sd, true, 0, false)) return; sa.lpSecurityDescriptor = &sd; sa.nLength = sizeof(interprocess_security_attributes); sa.bInheritHandle = false; - initialized = false; + initialized = true; } interprocess_security_attributes *get_attributes() @@ -1383,24 +803,36 @@ class interprocess_all_access_security inline void * create_file_mapping (void * handle, unsigned long access, ::boost::ulong_long_type file_offset, const char * name, interprocess_security_attributes *psec) { - const unsigned long high_size(file_offset >> 32), low_size((boost::uint32_t)file_offset); + const boost::winapi::DWORD_ high_size = boost::winapi::DWORD_(file_offset >> 32); + const boost::winapi::DWORD_ low_size = boost::winapi::DWORD_(file_offset); return CreateFileMappingA (handle, psec, access, high_size, low_size, name); } +inline void * create_file_mapping (void * handle, unsigned long access, ::boost::ulong_long_type file_offset, const wchar_t * name, interprocess_security_attributes *psec) +{ + const boost::winapi::DWORD_ high_size = boost::winapi::DWORD_(file_offset >> 32); + const boost::winapi::DWORD_ low_size = boost::winapi::DWORD_(file_offset); + return CreateFileMappingW (handle, psec, access, high_size, low_size, name); +} + inline void * open_file_mapping (unsigned long access, const char *name) { return OpenFileMappingA (access, 0, name); } +inline void * open_file_mapping (unsigned long access, const wchar_t *name) +{ return OpenFileMappingW (access, 0, name); } + inline void *map_view_of_file_ex(void *handle, unsigned long file_access, ::boost::ulong_long_type offset, std::size_t numbytes, void *base_addr) { - const unsigned long offset_low = (unsigned long)(offset & ((::boost::ulong_long_type)0xFFFFFFFF)); - const unsigned long offset_high = offset >> 32; + const boost::winapi::DWORD_ offset_low = boost::winapi::DWORD_(offset & ((::boost::ulong_long_type)0xFFFFFFFF)); + const boost::winapi::DWORD_ offset_high = boost::winapi::DWORD_(offset >> 32); return MapViewOfFileEx(handle, file_access, offset_high, offset_low, numbytes, base_addr); } -inline void *create_file(const char *name, unsigned long access, unsigned long creation_flags, unsigned long attributes, interprocess_security_attributes *psec) +template +inline void *create_file(const CharT *name, unsigned long access, unsigned long creation_flags, unsigned long attributes, interprocess_security_attributes *psec) { for (unsigned int attempt(0); attempt < error_sharing_violation_tries; ++attempt){ - void * const handle = CreateFileA(name, access, + void * const handle = boost::winapi::create_file(name, access, file_share_read | file_share_write | file_share_delete, psec, creation_flags, attributes, 0); bool const invalid(invalid_handle_value == handle); @@ -1415,59 +847,68 @@ inline void *create_file(const char *name, unsigned long access, unsigned long c return invalid_handle_value; } -inline void get_system_info(system_info *info) -{ GetSystemInfo(info); } +inline void get_system_info(interprocess_system_info *info) +{ boost::ipwinapiext::GetSystemInfo(info); } inline bool flush_view_of_file(void *base_addr, std::size_t numbytes) -{ return 0 != FlushViewOfFile(base_addr, numbytes); } +{ return 0 != boost::winapi::FlushViewOfFile(base_addr, numbytes); } inline bool virtual_unlock(void *base_addr, std::size_t numbytes) -{ return 0 != VirtualUnlock(base_addr, numbytes); } +{ return 0 != boost::ipwinapiext::VirtualUnlock(base_addr, numbytes); } inline bool virtual_protect(void *base_addr, std::size_t numbytes, unsigned long flNewProtect, unsigned long &lpflOldProtect) -{ return 0 != VirtualProtect(base_addr, numbytes, flNewProtect, &lpflOldProtect); } +{ return 0 != boost::ipwinapiext::VirtualProtect(base_addr, numbytes, flNewProtect, &lpflOldProtect); } inline bool flush_file_buffers(void *handle) -{ return 0 != FlushFileBuffers(handle); } +{ return 0 != boost::ipwinapiext::FlushFileBuffers(handle); } inline bool get_file_size(void *handle, __int64 &size) -{ return 0 != GetFileSizeEx(handle, (large_integer*)&size); } +{ return 0 != boost::winapi::GetFileSizeEx(handle, (boost::winapi::LARGE_INTEGER_*)&size); } -inline bool create_directory(const char *name) +template +inline bool create_directory(const CharT *name) { interprocess_all_access_security sec; - return 0 != CreateDirectoryA(name, sec.get_attributes()); + return 0 != boost::winapi::create_directory(name, sec.get_attributes()); } -inline bool remove_directory(const char *lpPathName) -{ return 0 != RemoveDirectoryA(lpPathName); } +template +inline bool remove_directory(const CharT *lpPathName) +{ return 0 != boost::winapi::remove_directory(lpPathName); } -inline unsigned long get_temp_path(unsigned long length, char *buffer) -{ return GetTempPathA(length, buffer); } +template +inline unsigned long get_temp_path(unsigned long length, CharT *buffer) +{ return boost::winapi::get_temp_path(length, buffer); } inline int set_end_of_file(void *handle) -{ return 0 != SetEndOfFile(handle); } +{ return 0 != boost::winapi::SetEndOfFile(handle); } -inline bool set_file_pointer_ex(void *handle, __int64 distance, __int64 *new_file_pointer, unsigned long move_method) +inline bool set_file_pointer(void *handle, __int64 distance, __int64 *new_file_pointer, unsigned long move_method) { - large_integer d; d.QuadPart = distance; - return 0 != SetFilePointerEx(handle, d, (large_integer*)new_file_pointer, move_method); + boost::winapi::LONG_ highPart = boost::winapi::LONG_(distance >> 32u); + boost::winapi::DWORD_ r = boost::winapi::SetFilePointer(handle, (long)distance, &highPart, move_method); + bool br = r != boost::winapi::INVALID_SET_FILE_POINTER_ || boost::winapi::GetLastError() != 0; + if (br && new_file_pointer){ + *new_file_pointer = (__int64)r + ((__int64)highPart << 32); + } + + return br; } inline bool lock_file_ex(void *hnd, unsigned long flags, unsigned long reserved, unsigned long size_low, unsigned long size_high, interprocess_overlapped *overlapped) -{ return 0 != LockFileEx(hnd, flags, reserved, size_low, size_high, overlapped); } +{ return 0 != boost::winapi::LockFileEx(hnd, flags, reserved, size_low, size_high, overlapped); } inline bool unlock_file_ex(void *hnd, unsigned long reserved, unsigned long size_low, unsigned long size_high, interprocess_overlapped *overlapped) -{ return 0 != UnlockFileEx(hnd, reserved, size_low, size_high, overlapped); } +{ return 0 != boost::winapi::UnlockFileEx(hnd, reserved, size_low, size_high, overlapped); } inline bool write_file(void *hnd, const void *buffer, unsigned long bytes_to_write, unsigned long *bytes_written, interprocess_overlapped* overlapped) -{ return 0 != WriteFile(hnd, buffer, bytes_to_write, bytes_written, overlapped); } +{ return 0 != boost::winapi::WriteFile(hnd, buffer, bytes_to_write, bytes_written, overlapped); } inline bool read_file(void *hnd, void *buffer, unsigned long bytes_to_read, unsigned long *bytes_read, interprocess_overlapped* overlapped) -{ return 0 != ReadFile(hnd, buffer, bytes_to_read, bytes_read, overlapped); } +{ return 0 != boost::winapi::ReadFile(hnd, buffer, bytes_to_read, bytes_read, overlapped); } inline bool get_file_information_by_handle(void *hnd, interprocess_by_handle_file_information *info) -{ return 0 != GetFileInformationByHandle(hnd, info); } +{ return 0 != boost::winapi::GetFileInformationByHandle(hnd, info); } inline long interlocked_increment(long volatile *addr) { return BOOST_INTERLOCKED_INCREMENT(const_cast(addr)); } @@ -1486,28 +927,35 @@ inline long interlocked_exchange(long volatile* addend, long value) //Forward functions inline hmodule load_library(const char *name) -{ return LoadLibraryA(name); } +{ return boost::winapi::LoadLibraryA(name); } inline bool free_library(hmodule module) -{ return 0 != FreeLibrary(module); } +{ return 0 != boost::winapi::FreeLibrary(module); } inline farproc_t get_proc_address(hmodule module, const char *name) -{ return GetProcAddress(module, name); } +{ return boost::winapi::GetProcAddress(module, name); } inline void *get_current_process() -{ return GetCurrentProcess(); } +{ return boost::winapi::GetCurrentProcess(); } inline hmodule get_module_handle(const char *name) -{ return GetModuleHandleA(name); } +{ return boost::winapi::GetModuleHandleA(name); } inline long reg_open_key_ex(hkey hKey, const char *lpSubKey, unsigned long ulOptions, unsigned long samDesired, hkey *phkResult) -{ return RegOpenKeyExA(hKey, lpSubKey, ulOptions, samDesired, phkResult); } +{ return boost::ipwinapiext::RegOpenKeyExA(hKey, lpSubKey, ulOptions, samDesired, phkResult); } + +inline long reg_open_key_ex(hkey hKey, const wchar_t *lpSubKey, unsigned long ulOptions, unsigned long samDesired, hkey *phkResult) +{ return boost::ipwinapiext::RegOpenKeyExW(hKey, lpSubKey, ulOptions, samDesired, phkResult); } + inline long reg_query_value_ex(hkey hKey, const char *lpValueName, unsigned long*lpReserved, unsigned long*lpType, unsigned char *lpData, unsigned long*lpcbData) -{ return RegQueryValueExA(hKey, lpValueName, lpReserved, lpType, lpData, lpcbData); } +{ return boost::ipwinapiext::RegQueryValueExA(hKey, lpValueName, lpReserved, lpType, lpData, lpcbData); } + +inline long reg_query_value_ex(hkey hKey, const wchar_t *lpValueName, unsigned long*lpReserved, unsigned long*lpType, unsigned char *lpData, unsigned long*lpcbData) +{ return boost::ipwinapiext::RegQueryValueExW(hKey, lpValueName, lpReserved, lpType, lpData, lpcbData); } inline long reg_close_key(hkey hKey) -{ return RegCloseKey(hKey); } +{ return boost::ipwinapiext::RegCloseKey(hKey); } inline void initialize_object_attributes ( object_attributes_t *pobject_attr, unicode_string_t *name @@ -1541,8 +989,6 @@ struct function_address_holder , NtOpenFile , NtClose , NtQueryTimerResolution - , QueryPerformanceCounter - , QueryPerformanceFrequency , NumFunction }; enum { NtDll_dll, Kernel32_dll, NumModule }; @@ -1623,8 +1069,6 @@ const char *function_address_holder::FunctionNames[function_address_holde "NtOpenFile", "NtClose", "NtQueryTimerResolution", - "QueryPerformanceCounter", - "QueryPerformanceFrequency" }; template @@ -1638,15 +1082,12 @@ unsigned int function_address_holder::FunctionModules[function_address_ho NtDll_dll, NtDll_dll, NtDll_dll, - Kernel32_dll, - Kernel32_dll }; template const char *function_address_holder::ModuleNames[function_address_holder::NumModule] = { - "ntdll.dll", - "kernel32.dll" + "ntdll.dll"//, "kernel32.dll" }; @@ -1783,17 +1224,6 @@ class handle_closer { close_handle(handle_); } }; -class eventlog_handle_closer -{ - void *handle_; - eventlog_handle_closer(const handle_closer &); - eventlog_handle_closer& operator=(const eventlog_handle_closer &); - public: - explicit eventlog_handle_closer(void *handle) : handle_(handle){} - ~eventlog_handle_closer() - { CloseEventLog(handle_); } -}; - union ntquery_mem_t { object_name_information_t name; @@ -1810,11 +1240,11 @@ class nt_query_mem_deleter offsetof(ntquery_mem_t, name.Name.Buffer); // Timestamp process id atomic count static const std::size_t rename_suffix = - (SystemTimeOfDayInfoLength + sizeof(unsigned long) + sizeof(boost::uint32_t))*2; + (SystemTimeOfDayInfoLength + sizeof(unsigned long) + sizeof(boost::winapi::DWORD_))*2; public: - explicit nt_query_mem_deleter(std::size_t object_name_information_size) - : m_size(object_name_information_size + rename_offset + rename_suffix) + explicit nt_query_mem_deleter(std::size_t object_name_info_size) + : m_size(object_name_info_size + rename_offset + rename_suffix) , m_buf(new char [m_size]) {} @@ -1862,10 +1292,10 @@ class c_heap_deleter void realloc_mem(std::size_t num_bytes) { - void *buf = ::realloc(m_buf, num_bytes); - if(!buf){ - free(m_buf); - m_buf = 0; + void *oldBuf = m_buf; + m_buf = ::realloc(m_buf, num_bytes); + if (!m_buf){ + free(oldBuf); } } @@ -1876,7 +1306,8 @@ class c_heap_deleter void *m_buf; }; -inline bool unlink_file(const char *filename) +template +inline bool unlink_file(const CharT *filename) { //Don't try to optimize doing a DeleteFile first //as there are interactions with permissions and @@ -1893,7 +1324,7 @@ inline bool unlink_file(const char *filename) //- Close the handle. If there are no file users, it will be deleted. // Otherwise it will be used by already connected handles but the // file name can't be used to open this file again - try{ + BOOST_TRY{ NtSetInformationFile_t pNtSetInformationFile = reinterpret_cast(dll_func::get(dll_func::NtSetInformationFile)); @@ -1923,7 +1354,7 @@ inline bool unlink_file(const char *filename) ntquery_mem_t *pmem = nt_query_mem.query_mem(); file_rename_information_t *pfri = &pmem->ren.info; const std::size_t RenMaxNumChars = - (((char*)(pmem) + nt_query_mem.file_rename_information_size()) - (char*)&pmem->ren.info.FileName[0])/sizeof(wchar_t); + std::size_t(((char*)(pmem) + nt_query_mem.file_rename_information_size()) - (char*)&pmem->ren.info.FileName[0])/sizeof(wchar_t); //Copy filename to the rename member std::memmove(pmem->ren.info.FileName, pmem->name.Name.Buffer, pmem->name.Name.Length); @@ -1987,9 +1418,9 @@ inline bool unlink_file(const char *filename) return true; } } - catch(...){ + BOOST_CATCH(...){ return false; - } + } BOOST_CATCH_END return true; } @@ -2000,7 +1431,8 @@ struct reg_closer ~reg_closer(){ reg_close_key(key_); } }; -inline bool get_registry_value_buffer(hkey key_type, const char *subkey_name, const char *value_name, void *buf, std::size_t &buflen) +template +inline bool get_registry_value_buffer(hkey key_type, const CharT *subkey_name, const CharT *value_name, void *buf, std::size_t &buflen) { bool bret = false; hkey key; @@ -2022,7 +1454,8 @@ inline bool get_registry_value_buffer(hkey key_type, const char *subkey_name, co return bret; } -inline bool get_registry_value_string(hkey key_type, const char *subkey_name, const char *value_name, std::string &s) +template +inline bool get_registry_value_string(hkey key_type, const CharT *subkey_name, const CharT *value_name, std::basic_string &s) { bool bret = false; s.clear(); @@ -2040,7 +1473,7 @@ inline bool get_registry_value_string(hkey key_type, const char *subkey_name, co long err = reg_query_value_ex( key, value_name, 0, &type, 0, &size); if((reg_sz == type || reg_expand_sz == type) && !err){ //Size includes terminating NULL - s.resize(size); + s.resize(size/sizeof(CharT)); err = reg_query_value_ex( key, value_name, 0, &type, (unsigned char*)(&s[0]), &size); if(!err){ s.erase(s.end()-1); @@ -2052,28 +1485,25 @@ inline bool get_registry_value_string(hkey key_type, const char *subkey_name, co return bret; } -inline void get_shared_documents_folder(std::string &s) +template +inline void get_shared_documents_folder(std::basic_string &s) { - #if 1 //Original registry search code get_registry_value_string( hkey_local_machine , "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders" , "Common AppData" , s); - #else //registry alternative: SHGetFolderPath - const int BIPC_CSIDL_COMMON_APPDATA = 0x0023; // All Users\Application Data - const int BIPC_CSIDL_FLAG_CREATE = 0x8000; // new for Win2K, or this in to force creation of folder - const int BIPC_SHGFP_TYPE_CURRENT = 0; // current value for user, verify it exists - - s.clear(); - char szPath[max_path]; - if(0 == SHGetFolderPathA(0, BIPC_CSIDL_COMMON_APPDATA | BIPC_CSIDL_FLAG_CREATE, 0, BIPC_SHGFP_TYPE_CURRENT, szPath)){ - s = szPath; - } +} - #endif +inline void get_shared_documents_folder(std::wstring &s) +{ + get_registry_value_string( hkey_local_machine + , L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders" + , L"Common AppData" + , s); } -inline void get_registry_value(const char *folder, const char *value_key, std::vector &s) +template +inline void get_registry_value(const CharT *folder, const CharT *value_key, std::vector &s) { s.clear(); hkey key; @@ -2102,191 +1532,201 @@ inline void get_registry_value(const char *folder, const char *value_key, std::v } } -#if defined(BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME) +inline bool is_directory(const char *path) +{ + unsigned long attrib = GetFileAttributesA(path); + + return (attrib != invalid_file_attributes && + (attrib & file_attribute_directory)); +} -struct co_uninitializer +inline bool get_file_mapping_size(void *file_mapping_hnd, __int64 &size) { - co_uninitializer(bool b_uninitialize) - : m_b_uninitialize(b_uninitialize) - {} + NtQuerySection_t pNtQuerySection = + reinterpret_cast(dll_func::get(dll_func::NtQuerySection)); + //Obtain file name + interprocess_section_basic_information info; + long ntstatus = + pNtQuerySection(file_mapping_hnd, section_basic_information, &info, sizeof(info), 0); + size = info.section_size; + return !ntstatus; +} - ~co_uninitializer() - { - if(m_b_uninitialize){ - CoUninitialize(); - } - } +inline bool get_semaphore_info(void *handle, long &count, long &limit) +{ + winapi::interprocess_semaphore_basic_information info; + winapi::NtQuerySemaphore_t pNtQuerySemaphore = + reinterpret_cast(dll_func::get(winapi::dll_func::NtQuerySemaphore)); + unsigned int ret_len; + long status = pNtQuerySemaphore(handle, winapi::semaphore_basic_information, &info, sizeof(info), &ret_len); + count = (long)info.count; + limit = (long)info.limit; + return !status; +} - private: - const bool m_b_uninitialize; -}; +inline bool query_timer_resolution(unsigned long *lowres, unsigned long *highres, unsigned long *curres) +{ + winapi::NtQueryTimerResolution_t pNtQueryTimerResolution = + reinterpret_cast(dll_func::get(winapi::dll_func::NtQueryTimerResolution)); + return !pNtQueryTimerResolution(lowres, highres, curres); +} -template -struct com_releaser +inline bool query_performance_counter(__int64 *lpPerformanceCount) { - Object *&object_; - com_releaser(Object *&object) : object_(object) {} - ~com_releaser() { object_->Release(); object_ = 0; } -}; + return 0 != boost::winapi::QueryPerformanceCounter(reinterpret_cast(lpPerformanceCount)); +} -inline bool get_wmi_class_attribute( std::wstring& strValue, const wchar_t *wmi_class, const wchar_t *wmi_class_var) +inline bool query_performance_frequency(__int64 *lpFrequency) { - //See example http://msdn.microsoft.com/en-us/library/aa390423%28v=VS.85%29.aspx - // - //See BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL definition if you need to change the - //default value of this macro in your application - long co_init_ret = CoInitializeEx(0, BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL); - if(co_init_ret != S_OK_BIPC && co_init_ret != S_FALSE_BIPC && co_init_ret != RPC_E_CHANGED_MODE_BIPC) - return false; - co_uninitializer co_initialize_end(co_init_ret != RPC_E_CHANGED_MODE_BIPC); - (void)co_initialize_end; - - bool bRet = false; - long sec_init_ret = CoInitializeSecurity - ( 0 //pVoid - ,-1 //cAuthSvc - , 0 //asAuthSvc - , 0 //pReserved1 - , RPC_C_AUTHN_LEVEL_PKT_BIPC //dwAuthnLevel - , RPC_C_IMP_LEVEL_IMPERSONATE_BIPC //dwImpLevel - , 0 //pAuthList - , EOAC_NONE_BIPC //dwCapabilities - , 0 //pReserved3 - ); - if( 0 == sec_init_ret || RPC_E_TOO_LATE_BIPC == sec_init_ret) - { - IWbemLocator_BIPC * pIWbemLocator = 0; - const wchar_t * bstrNamespace = L"root\\cimv2"; - - if( 0 != CoCreateInstance( - CLSID_WbemAdministrativeLocator, - 0, - CLSCTX_INPROC_SERVER_BIPC | CLSCTX_LOCAL_SERVER_BIPC, - IID_IUnknown, (void **)&pIWbemLocator)){ - return false; - } + return 0 != boost::winapi::QueryPerformanceFrequency(reinterpret_cast(lpFrequency)); +} - com_releaser IWbemLocator_releaser(pIWbemLocator); - - IWbemServices_BIPC *pWbemServices = 0; - - if( 0 != pIWbemLocator->ConnectServer( - (bstr)bstrNamespace, // Namespace - 0, // Userid - 0, // PW - 0, // Locale - 0, // flags - 0, // Authority - 0, // Context - &pWbemServices - ) - ){ - return false; - } +inline unsigned long get_tick_count() +{ return GetTickCount(); } - if( S_OK_BIPC != CoSetProxyBlanket( - pWbemServices, - RPC_C_AUTHN_DEFAULT_BIPC, - RPC_C_AUTHZ_DEFAULT_BIPC, - 0, - RPC_C_AUTHN_LEVEL_PKT_BIPC, - RPC_C_IMP_LEVEL_IMPERSONATE_BIPC, - 0, - EOAC_NONE_BIPC - ) - ){ - return false; - } - com_releaser IWbemServices_releaser(pWbemServices); - - strValue.clear(); - strValue += L"Select "; - strValue += wmi_class_var; - strValue += L" from "; - strValue += wmi_class; - - IEnumWbemClassObject_BIPC * pEnumObject = 0; - - if ( 0 != pWbemServices->ExecQuery( - (bstr)L"WQL", - (bstr)strValue.c_str(), - //WBEM_FLAG_RETURN_IMMEDIATELY_BIPC, - WBEM_FLAG_RETURN_WHEN_COMPLETE_BIPC | WBEM_FLAG_FORWARD_ONLY_BIPC, - 0, - &pEnumObject - ) - ){ - return false; - } +template +struct winapi_traits; + +template<> +struct winapi_traits +{ + static int cmp(const char *a, const char *b) + { return std::strcmp(a, b); } +}; + +template<> +struct winapi_traits +{ + static int cmp(const wchar_t *a, const wchar_t *b) + { return std::wcscmp(a, b); } +}; + + +#if defined(BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED) - com_releaser IEnumWbemClassObject_releaser(pEnumObject); - //WBEM_FLAG_FORWARD_ONLY_BIPC incompatible with Reset - //if ( 0 != pEnumObject->Reset() ){ - //return false; - //} +inline bool get_last_bootup_time(std::string &stamp) +{ + unsigned dword_val = 0; + std::size_t dword_size = sizeof(dword_val); + bool b_ret = get_registry_value_buffer( hkey_local_machine + , "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management\\PrefetchParameters" + , "BootId", &dword_val, dword_size); + if (b_ret) + { + char dword_str[sizeof(dword_val)*2u+1]; + buffer_to_narrow_str(&dword_val, dword_size, dword_str); + dword_str[sizeof(dword_val)*2] = '\0'; + stamp = dword_str; - wchar_variant vwchar; - unsigned long uCount = 1, uReturned; - IWbemClassObject_BIPC * pClassObject = 0; - while( 0 == pEnumObject->Next( WBEM_INFINITE_BIPC, uCount, &pClassObject, &uReturned ) ) + b_ret = get_registry_value_buffer( hkey_local_machine + , "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power" + , "HybridBootAnimationTime", &dword_val, dword_size); + //Old Windows versions have no HybridBootAnimationTime + if(b_ret) { - com_releaser IWbemClassObject_releaser(pClassObject); - if ( 0 == pClassObject->Get( (bstr)L"LastBootUpTime", 0, &vwchar, 0, 0 ) ){ - bRet = true; - strValue = (wchar_t*)vwchar.bstrVal; - VariantClear(&vwchar ); - break; - } + buffer_to_narrow_str(&dword_val, dword_size, dword_str); + dword_str[sizeof(dword_val)*2] = '\0'; + stamp += "_"; + stamp += dword_str; } + b_ret = true; } - return bRet; + return b_ret; } -//Obtains the bootup time from WMI LastBootUpTime. -//This time seems to change with hibernation and clock synchronization so avoid it. -inline bool get_last_bootup_time( std::wstring& strValue ) +inline bool get_last_bootup_time(std::wstring &stamp) { - bool ret = get_wmi_class_attribute(strValue, L"Win32_OperatingSystem", L"LastBootUpTime"); - std::size_t timezone = strValue.find(L'+'); - if(timezone != std::wstring::npos){ - strValue.erase(timezone); - } - timezone = strValue.find(L'-'); - if(timezone != std::wstring::npos){ - strValue.erase(timezone); - } - return ret; -} + unsigned dword_val = 0; + std::size_t dword_size = sizeof(dword_val); + bool b_ret = get_registry_value_buffer( hkey_local_machine + , L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management\\PrefetchParameters" + , L"BootId", &dword_val, dword_size); + if (b_ret) + { + wchar_t dword_str[sizeof(dword_val)*2u+1]; + buffer_to_wide_str(&dword_val, dword_size, dword_str); + dword_str[sizeof(dword_val)*2] = L'\0'; + stamp = dword_str; -inline bool get_last_bootup_time( std::string& str ) -{ - std::wstring wstr; - bool ret = get_last_bootup_time(wstr); - str.resize(wstr.size()); - for(std::size_t i = 0, max = str.size(); i != max; ++i){ - str[i] = '0' + (wstr[i]-L'0'); + b_ret = get_registry_value_buffer( hkey_local_machine + , L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power" + , L"HybridBootAnimationTime", &dword_val, dword_size); + //Old Windows versions have no HybridBootAnimationTime + if(b_ret) + { + buffer_to_wide_str(&dword_val, dword_size, dword_str); + dword_str[sizeof(dword_val)*2] = L'\0'; + stamp += L"_"; + stamp += dword_str; + } + b_ret = true; } - return ret; + return b_ret; } -#endif //BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME +#elif defined(BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED) + +static const unsigned long eventlog_sequential_read = 0x0001; +static const unsigned long eventlog_backwards_read = 0x0008; + +struct interprocess_eventlogrecord +{ + unsigned long Length; // Length of full record + unsigned long Reserved; // Used by the service + unsigned long RecordNumber; // Absolute record number + unsigned long TimeGenerated; // Seconds since 1-1-1970 + unsigned long TimeWritten; // Seconds since 1-1-1970 + unsigned long EventID; + unsigned short EventType; + unsigned short NumStrings; + unsigned short EventCategory; + unsigned short ReservedFlags; // For use with paired events (auditing) + unsigned long ClosingRecordNumber; // For use with paired events (auditing) + unsigned long StringOffset; // Offset from beginning of record + unsigned long UserSidLength; + unsigned long UserSidOffset; + unsigned long DataLength; + unsigned long DataOffset; // Offset from beginning of record + // + // Then follow: + // + // wchar_t SourceName[] + // wchar_t Computername[] + // SID UserSid + // wchar_t Strings[] + // BYTE Data[] + // CHAR Pad[] + // unsigned long Length; + // +}; -#if defined(BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED) +class eventlog_handle_closer +{ + void *handle_; + eventlog_handle_closer(const handle_closer &); + eventlog_handle_closer& operator=(const eventlog_handle_closer &); + public: + explicit eventlog_handle_closer(void *handle) : handle_(handle){} + ~eventlog_handle_closer() + { CloseEventLog(handle_); } +}; // Loop through the buffer and obtain the contents of the // requested record in the buffer. -inline bool find_record_in_buffer( const void* pBuffer, unsigned long dwBytesRead, const char *provider_name +template +inline bool find_record_in_buffer( const void* pBuffer, unsigned long dwBytesRead, const CharT *provider_name , unsigned int id_to_find, interprocess_eventlogrecord *&pevent_log_record) { const unsigned char * pRecord = static_cast(pBuffer); const unsigned char * pEndOfRecords = pRecord + dwBytesRead; while (pRecord < pEndOfRecords){ - interprocess_eventlogrecord *pTypedRecord = (interprocess_eventlogrecord*)pRecord; + interprocess_eventlogrecord *pTypedRecord = (interprocess_eventlogrecord*)(void*)pRecord; // Check provider, written at the end of the fixed-part of the record - if (0 == std::strcmp(provider_name, (char*)(pRecord + sizeof(interprocess_eventlogrecord)))) + + if (0 == winapi_traits::cmp(provider_name, (CharT*)(void*)(pRecord + sizeof(interprocess_eventlogrecord)))) { // Check event id if(id_to_find == (pTypedRecord->EventID & 0xFFFF)){ @@ -2369,97 +1809,74 @@ inline bool get_last_bootup_time(std::string &stamp) return true; } -#endif //BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED - -#if defined(BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED) - -inline bool get_last_bootup_time(std::string &stamp) -{ - unsigned dword_val = 0; - std::size_t dword_size = sizeof(dword_val); - bool b_ret = get_registry_value_buffer( hkey_local_machine - , "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management\\PrefetchParameters" - , "BootId", &dword_val, dword_size); - if (b_ret) - { - char dword_str[sizeof(dword_val)*2u+1]; - buffer_to_narrow_str(&dword_val, dword_size, dword_str); - dword_str[sizeof(dword_val)*2] = '\0'; - stamp = dword_str; - - b_ret = get_registry_value_buffer( hkey_local_machine - , "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power" - , "HybridBootAnimationTime", &dword_val, dword_size); - //Old Windows versions have no HybridBootAnimationTime - if(b_ret) - { - buffer_to_narrow_str(&dword_val, dword_size, dword_str); - dword_str[sizeof(dword_val)*2] = '\0'; - stamp += "_"; - stamp += dword_str; - } - b_ret = true; - } - return b_ret; -} - -#endif //BOOST_INTERPROCESS_BOOTSTAMP_IS_SESSION_MANAGER_BASED - -inline bool is_directory(const char *path) -{ - unsigned long attrib = GetFileAttributesA(path); - - return (attrib != invalid_file_attributes && - (attrib & file_attribute_directory)); -} -inline bool get_file_mapping_size(void *file_mapping_hnd, __int64 &size) +inline bool get_last_bootup_time(std::wstring &stamp) { - NtQuerySection_t pNtQuerySection = - reinterpret_cast(dll_func::get(dll_func::NtQuerySection)); - //Obtain file name - interprocess_section_basic_information info; - unsigned long ntstatus = - pNtQuerySection(file_mapping_hnd, section_basic_information, &info, sizeof(info), 0); - size = info.section_size; - return !ntstatus; -} + const wchar_t *source_name = L"System"; + const wchar_t *provider_name = L"EventLog"; + const unsigned short event_id = 6005u; -inline bool get_semaphore_info(void *handle, long &count, long &limit) -{ - winapi::interprocess_semaphore_basic_information info; - winapi::NtQuerySemaphore_t pNtQuerySemaphore = - reinterpret_cast(dll_func::get(winapi::dll_func::NtQuerySemaphore)); - unsigned int ret_len; - long status = pNtQuerySemaphore(handle, winapi::semaphore_basic_information, &info, sizeof(info), &ret_len); - count = info.count; - limit = info.limit; - return !status; -} + unsigned long status = 0; + unsigned long dwBytesToRead = 0; + unsigned long dwBytesRead = 0; + unsigned long dwMinimumBytesToRead = 0; -inline bool query_timer_resolution(unsigned long *lowres, unsigned long *highres, unsigned long *curres) -{ - winapi::NtQueryTimerResolution_t pNtQueryTimerResolution = - reinterpret_cast(dll_func::get(winapi::dll_func::NtQueryTimerResolution)); - return !pNtQueryTimerResolution(lowres, highres, curres); -} + // The source name (provider) must exist as a subkey of Application. + void *hEventLog = OpenEventLogW(0, source_name); + if (hEventLog){ + eventlog_handle_closer hnd_closer(hEventLog); (void)hnd_closer; + // Allocate an initial block of memory used to read event records. The number + // of records read into the buffer will vary depending on the size of each event. + // The size of each event will vary based on the size of the user-defined + // data included with each event, the number and length of insertion + // strings, and other data appended to the end of the event record. + dwBytesToRead = max_record_buffer_size; + c_heap_deleter heap_deleter(dwBytesToRead); -inline bool query_performance_counter(__int64 *lpPerformanceCount) -{ - QueryPerformanceCounter_t pQueryPerformanceCounter = reinterpret_cast - (dll_func::get(dll_func::QueryPerformanceCounter)); - return 0 != pQueryPerformanceCounter(lpPerformanceCount); + // Read blocks of records until you reach the end of the log or an + // error occurs. The records are read from newest to oldest. If the buffer + // is not big enough to hold a complete event record, reallocate the buffer. + if (heap_deleter.get() != 0){ + while (0 == status){ + if (!ReadEventLogW(hEventLog, + eventlog_sequential_read | eventlog_backwards_read, + 0, + heap_deleter.get(), + dwBytesToRead, + &dwBytesRead, + &dwMinimumBytesToRead)) { + status = get_last_error(); + if (error_insufficient_buffer == status) { + status = 0; + dwBytesToRead = dwMinimumBytesToRead; + heap_deleter.realloc_mem(dwMinimumBytesToRead); + if (!heap_deleter.get()){ + return false; + } + } + else{ //Not found or EOF + return false; + } + } + else + { + interprocess_eventlogrecord *pTypedRecord; + // Print the contents of each record in the buffer. + if(find_record_in_buffer(heap_deleter.get(), dwBytesRead, provider_name, event_id, pTypedRecord)){ + wchar_t stamp_str[sizeof(unsigned long)*3+1]; + std::swprintf(&stamp_str[0], L"%u", ((unsigned int)pTypedRecord->TimeGenerated)); + stamp = stamp_str; + break; + } + } + } + } + } + return true; } -inline bool query_performance_frequency(__int64 *lpFrequency) -{ - QueryPerformanceCounter_t pQueryPerformanceFrequency = reinterpret_cast - (dll_func::get(dll_func::QueryPerformanceFrequency)); - return 0 != pQueryPerformanceFrequency(lpFrequency); -} +#endif //BOOST_INTERPROCESS_BOOTSTAMP_IS_EVENTLOG_BASED -inline unsigned long get_tick_count() -{ return GetTickCount(); } } //namespace winapi } //namespace interprocess diff --git a/src/boost/boost/interprocess/detail/workaround.hpp b/src/boost/boost/interprocess/detail/workaround.hpp index 1c19736af..7726f4550 100644 --- a/src/boost/boost/interprocess/detail/workaround.hpp +++ b/src/boost/boost/interprocess/detail/workaround.hpp @@ -19,12 +19,18 @@ # pragma once #endif +#if defined(BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION) && defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) +#error "BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION && BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION can't be defined at the same time" +#endif + +//#define BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION + #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) #define BOOST_INTERPROCESS_WINDOWS - #define BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION + #if !defined(BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION) && !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) + #define BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION + #endif #define BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME - //Define this to connect with shared memory created with versions < 1.54 - //#define BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME #else #include @@ -65,6 +71,13 @@ #endif #endif + ////////////////////////////////////////////////////// + // BOOST_INTERPROCESS_POSIX_ROBUST_MUTEXES + ////////////////////////////////////////////////////// + #if (_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L) + #define BOOST_INTERPROCESS_POSIX_ROBUST_MUTEXES + #endif + ////////////////////////////////////////////////////// // _POSIX_SHARED_MEMORY_OBJECTS (POSIX.1b/POSIX.4) ////////////////////////////////////////////////////// @@ -149,6 +162,14 @@ (defined (_FILE_OFFSET_BITS) &&(_FILE_OFFSET_BITS - 0 >= 64)) #define BOOST_INTERPROCESS_UNIX_64_BIT_OR_BIGGER_OFF_T #endif + + ////////////////////////////////////////////////////// + //posix_fallocate + ////////////////////////////////////////////////////// + #if (_XOPEN_SOURCE >= 600 || _POSIX_C_SOURCE >= 200112L) + #define BOOST_INTERPROCESS_POSIX_FALLOCATE + #endif + #endif //!defined(BOOST_INTERPROCESS_WINDOWS) #if defined(BOOST_INTERPROCESS_WINDOWS) || defined(BOOST_INTERPROCESS_POSIX_MAPPED_FILES) @@ -170,6 +191,18 @@ #define BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS 10000 #endif + +// Max open or create tries with managed memory segments +#ifndef BOOST_INTERPROCESS_MANAGED_OPEN_OR_CREATE_INITIALIZE_MAX_TRIES + #define BOOST_INTERPROCESS_MANAGED_OPEN_OR_CREATE_INITIALIZE_MAX_TRIES 20u +#endif + +// Maximum timeout in seconds with open or create tries with managed memory segments +// waiting the creator to initialize the shared memory +#ifndef BOOST_INTERPROCESS_MANAGED_OPEN_OR_CREATE_INITIALIZE_TIMEOUT_SEC + #define BOOST_INTERPROCESS_MANAGED_OPEN_OR_CREATE_INITIALIZE_TIMEOUT_SEC 300u +#endif + //Other switches //BOOST_INTERPROCESS_MSG_QUEUE_USES_CIRC_INDEX //message queue uses a circular queue as index instead of an array (better performance) @@ -190,14 +223,40 @@ #define BOOST_INTERPROCESS_FORCEINLINE inline #elif defined(BOOST_INTERPROCESS_FORCEINLINE_IS_BOOST_FORCELINE) #define BOOST_INTERPROCESS_FORCEINLINE BOOST_FORCEINLINE -#elif defined(BOOST_MSVC) && defined(_DEBUG) - //"__forceinline" and MSVC seems to have some bugs in debug mode +#elif defined(BOOST_MSVC) && (_MSC_VER < 1900 || defined(_DEBUG)) + //"__forceinline" and MSVC seems to have some bugs in old versions and in debug mode #define BOOST_INTERPROCESS_FORCEINLINE inline -#elif defined(__GNUC__) && ((__GNUC__ < 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ < 5))) +#elif defined(BOOST_GCC) && (__GNUC__ <= 5) //Older GCCs have problems with forceinline #define BOOST_INTERPROCESS_FORCEINLINE inline #else #define BOOST_INTERPROCESS_FORCEINLINE BOOST_FORCEINLINE #endif +#ifdef BOOST_WINDOWS + +#define BOOST_INTERPROCESS_WCHAR_NAMED_RESOURCES + +#ifdef __clang__ + #define BOOST_INTERPROCESS_DISABLE_DEPRECATED_WARNING _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") + #define BOOST_INTERPROCESS_RESTORE_WARNING _Pragma("clang diagnostic pop") +#else // __clang__ + #define BOOST_INTERPROCESS_DISABLE_DEPRECATED_WARNING __pragma(warning(push)) \ + __pragma(warning(disable : 4996)) + #define BOOST_INTERPROCESS_RESTORE_WARNING __pragma(warning(pop)) +#endif // __clang__ + +#endif + +#if defined(BOOST_HAS_THREADS) +# if defined(_MSC_VER) || defined(__MWERKS__) || defined(__MINGW32__) || defined(__BORLANDC__) + //no reentrant posix functions (eg: localtime_r) +# elif (!defined(__hpux) || (defined(__hpux) && defined(_REENTRANT))) +# define BOOST_INTERPROCESS_HAS_REENTRANT_STD_FUNCTIONS +# endif +#endif + +#include + #endif //#ifndef BOOST_INTERPROCESS_DETAIL_WORKAROUND_HPP diff --git a/src/boost/boost/interprocess/errors.hpp b/src/boost/boost/interprocess/errors.hpp index c7d098444..c36a228b0 100644 --- a/src/boost/boost/interprocess/errors.hpp +++ b/src/boost/boost/interprocess/errors.hpp @@ -34,14 +34,13 @@ #include #include -#include #include #if defined (BOOST_INTERPROCESS_WINDOWS) # include #else # ifdef BOOST_HAS_UNISTD_H -# include //Errors +# include //Errors # include //strerror # else //ifdef BOOST_HAS_UNISTD_H # error Unknown platform @@ -57,7 +56,7 @@ namespace interprocess { inline int system_error_code() // artifact of POSIX and WINDOWS error reporting { #if defined (BOOST_INTERPROCESS_WINDOWS) - return winapi::get_last_error(); + return (int)winapi::get_last_error(); #else return errno; // GCC 3.1 won't accept ::errno #endif @@ -73,7 +72,7 @@ inline void fill_system_message(int sys_err_code, std::string &str) winapi::format_message_from_system | winapi::format_message_ignore_inserts, 0, - sys_err_code, + (unsigned long)sys_err_code, winapi::make_lang_id(winapi::lang_neutral, winapi::sublang_default), // Default language reinterpret_cast(&lpMsgBuf), 0, @@ -124,7 +123,8 @@ enum error_code_t invalid_argument, timeout_when_locking_error, timeout_when_waiting_error, - owner_dead_error + owner_dead_error, + not_recoverable }; typedef int native_error_t; diff --git a/src/boost/boost/interprocess/exceptions.hpp b/src/boost/boost/interprocess/exceptions.hpp index fd23851fe..073cc0fb6 100644 --- a/src/boost/boost/interprocess/exceptions.hpp +++ b/src/boost/boost/interprocess/exceptions.hpp @@ -36,17 +36,17 @@ namespace interprocess { class BOOST_SYMBOL_VISIBLE interprocess_exception : public std::exception { public: - interprocess_exception(const char *err) + interprocess_exception(const char *err) BOOST_NOEXCEPT : m_err(other_error) { - try { m_str = err; } - catch (...) {} + BOOST_TRY { m_str = err; } + BOOST_CATCH(...) {} BOOST_CATCH_END } interprocess_exception(const error_info &err_info, const char *str = 0) : m_err(err_info) { - try{ + BOOST_TRY{ if(m_err.get_native_error() != 0){ fill_system_message(m_err.get_native_error(), m_str); } @@ -57,18 +57,18 @@ class BOOST_SYMBOL_VISIBLE interprocess_exception : public std::exception m_str = "boost::interprocess_exception::library_error"; } } - catch(...){} + BOOST_CATCH(...){} BOOST_CATCH_END } - virtual ~interprocess_exception() BOOST_NOEXCEPT_OR_NOTHROW {} + ~interprocess_exception() BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE {} - virtual const char * what() const BOOST_NOEXCEPT_OR_NOTHROW + const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return m_str.c_str(); } - native_error_t get_native_error()const { return m_err.get_native_error(); } + native_error_t get_native_error() const BOOST_NOEXCEPT { return m_err.get_native_error(); } // Note: a value of other_error implies a library (rather than system) error - error_code_t get_error_code() const { return m_err.get_error_code(); } + error_code_t get_error_code() const BOOST_NOEXCEPT { return m_err.get_error_code(); } #if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) private: @@ -82,11 +82,11 @@ class BOOST_SYMBOL_VISIBLE interprocess_exception : public std::exception class BOOST_SYMBOL_VISIBLE lock_exception : public interprocess_exception { public: - lock_exception() - : interprocess_exception(lock_error) + lock_exception(error_code_t err = lock_error) BOOST_NOEXCEPT + : interprocess_exception(err) {} - virtual const char* what() const BOOST_NOEXCEPT_OR_NOTHROW + const char* what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return "boost::interprocess::lock_exception"; } }; @@ -96,9 +96,10 @@ class BOOST_SYMBOL_VISIBLE lock_exception : public interprocess_exception class BOOST_SYMBOL_VISIBLE bad_alloc : public interprocess_exception { public: - bad_alloc() : interprocess_exception("::boost::interprocess::bad_alloc"){} - virtual const char* what() const BOOST_NOEXCEPT_OR_NOTHROW - { return "boost::interprocess::bad_alloc"; } + bad_alloc() : interprocess_exception("::boost::interprocess::bad_alloc") {} + + const char* what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE + { return "boost::interprocess::bad_alloc"; } }; } // namespace interprocess { diff --git a/src/boost/boost/interprocess/permissions.hpp b/src/boost/boost/interprocess/permissions.hpp index d52560062..d10ca9f28 100644 --- a/src/boost/boost/interprocess/permissions.hpp +++ b/src/boost/boost/interprocess/permissions.hpp @@ -29,6 +29,10 @@ #include +#else + +#include + #endif #endif //#ifndef BOOST_INTERPROCESS_DOXYGEN_INVOKED @@ -70,7 +74,7 @@ class permissions #if defined(BOOST_INTERPROCESS_WINDOWS) typedef void* os_permissions_type; #else - typedef int os_permissions_type; + typedef ::mode_t os_permissions_type; #endif os_permissions_type m_perm; @@ -79,20 +83,20 @@ class permissions public: //!Constructs a permissions object from a user provided os-dependent //!permissions. - permissions(os_permissions_type type) + permissions(os_permissions_type type) BOOST_NOEXCEPT : m_perm(type) {} //!Constructs a default permissions object: //!A null security attributes pointer for windows or 0644 //!for UNIX. - permissions() + permissions() BOOST_NOEXCEPT { set_default(); } //!Sets permissions to default values: //!A null security attributes pointer for windows or 0644 //!for UNIX. - void set_default() + void set_default() BOOST_NOEXCEPT { #if defined (BOOST_INTERPROCESS_WINDOWS) m_perm = 0; @@ -103,7 +107,7 @@ class permissions //!Sets permissions to unrestricted access: //!A null DACL for windows or 0666 for UNIX. - void set_unrestricted() + void set_unrestricted() BOOST_NOEXCEPT { #if defined (BOOST_INTERPROCESS_WINDOWS) m_perm = &ipcdetail::unrestricted_permissions_holder<0>::unrestricted; @@ -114,12 +118,12 @@ class permissions //!Sets permissions from a user provided os-dependent //!permissions. - void set_permissions(os_permissions_type perm) + void set_permissions(os_permissions_type perm) BOOST_NOEXCEPT { m_perm = perm; } //!Returns stored os-dependent //!permissions - os_permissions_type get_permissions() const + os_permissions_type get_permissions() const BOOST_NOEXCEPT { return m_perm; } }; diff --git a/src/boost/boost/interprocess/streams/bufferstream.hpp b/src/boost/boost/interprocess/streams/bufferstream.hpp index a4c62aee0..07f740852 100644 --- a/src/boost/boost/interprocess/streams/bufferstream.hpp +++ b/src/boost/boost/interprocess/streams/bufferstream.hpp @@ -88,7 +88,7 @@ class basic_bufferbuf : basic_streambuf_t(), m_mode(mode), m_buffer(buf), m_length(length) { this->set_pointers(); } - virtual ~basic_bufferbuf(){} + virtual ~basic_bufferbuf() BOOST_OVERRIDE {} public: //!Returns the pointer and size of the internal buffer. @@ -115,14 +115,14 @@ class basic_bufferbuf } protected: - virtual int_type underflow() + virtual int_type underflow() BOOST_OVERRIDE { // Precondition: gptr() >= egptr(). Returns a character, if available. return this->gptr() != this->egptr() ? CharTraits::to_int_type(*this->gptr()) : CharTraits::eof(); } - virtual int_type pbackfail(int_type c = CharTraits::eof()) + virtual int_type pbackfail(int_type c = CharTraits::eof()) BOOST_OVERRIDE { if(this->gptr() != this->eback()) { if(!CharTraits::eq_int_type(c, CharTraits::eof())) { @@ -132,7 +132,7 @@ class basic_bufferbuf } else if(m_mode & std::ios_base::out) { this->gbump(-1); - *this->gptr() = c; + *this->gptr() = CharTraits::to_char_type(c); return c; } else @@ -147,7 +147,7 @@ class basic_bufferbuf return CharTraits::eof(); } - virtual int_type overflow(int_type c = CharTraits::eof()) + virtual int_type overflow(int_type c = CharTraits::eof()) BOOST_OVERRIDE { if(m_mode & std::ios_base::out) { if(!CharTraits::eq_int_type(c, CharTraits::eof())) { @@ -181,7 +181,7 @@ class basic_bufferbuf virtual pos_type seekoff(off_type off, std::ios_base::seekdir dir, std::ios_base::openmode mode - = std::ios_base::in | std::ios_base::out) + = std::ios_base::in | std::ios_base::out) BOOST_OVERRIDE { bool in = false; bool out = false; @@ -238,7 +238,7 @@ class basic_bufferbuf return pos_type(off_type(-1)); else { this->setp(this->pbase(), this->pbase() + n); - this->pbump(off); + this->pbump(static_cast(off)); } } @@ -246,7 +246,7 @@ class basic_bufferbuf } virtual pos_type seekpos(pos_type pos, std::ios_base::openmode mode - = std::ios_base::in | std::ios_base::out) + = std::ios_base::in | std::ios_base::out) BOOST_OVERRIDE { return seekoff(pos - pos_type(off_type(0)), std::ios_base::beg, mode); } private: @@ -308,7 +308,7 @@ class basic_ibufferstream : , basic_streambuf_t(this) {} - ~basic_ibufferstream(){}; + ~basic_ibufferstream(){} public: //!Returns the address of the stored diff --git a/src/boost/boost/interprocess/sync/detail/common_algorithms.hpp b/src/boost/boost/interprocess/sync/detail/common_algorithms.hpp index 43e897d32..a59fdd7c5 100644 --- a/src/boost/boost/interprocess/sync/detail/common_algorithms.hpp +++ b/src/boost/boost/interprocess/sync/detail/common_algorithms.hpp @@ -23,16 +23,17 @@ #include #include +#include namespace boost { namespace interprocess { namespace ipcdetail { -template -bool try_based_timed_lock(MutexType &m, const boost::posix_time::ptime &abs_time) +template +bool try_based_timed_lock(MutexType &m, const TimePoint &abs_time) { //Same as lock() - if(abs_time == boost::posix_time::pos_infin){ + if(is_pos_infinity(abs_time)){ m.lock(); return true; } @@ -45,7 +46,7 @@ bool try_based_timed_lock(MutexType &m, const boost::posix_time::ptime &abs_time } else{ spin_wait swait; - while(microsec_clock::universal_time() < abs_time){ + while(microsec_clock::universal_time() < abs_time){ if(m.try_lock()){ return true; } @@ -73,46 +74,19 @@ void try_based_lock(MutexType &m) } template -void timed_based_lock(MutexType &m, unsigned const uCheckPeriodSec) -{ - const boost::posix_time::time_duration dur(0, 0, uCheckPeriodSec); - boost::posix_time::ptime deadline(microsec_clock::universal_time()+dur); - if(!m.timed_lock(deadline)){ - spin_wait swait; - do{ - deadline = microsec_clock::universal_time()+dur; - if(m.timed_lock(deadline)){ - break; - } - else{ - swait.yield(); - } - } - while(1); - } -} - -template -void timed_based_timed_lock(MutexType &m, const boost::posix_time::ptime &abs_time, unsigned const uCheckPeriodSec) +void timeout_when_locking_aware_lock(MutexType &m) { - const boost::posix_time::time_duration dur(0, 0, uCheckPeriodSec); - boost::posix_time::ptime deadline(microsec_clock::universal_time()+dur); - if(abs_time <= deadline){ - m.timed_lock(abs_time); - } - else if(!m.timed_lock(deadline)){ - spin_wait swait; - do{ - deadline = microsec_clock::universal_time()+dur; - if(m.timed_lock(deadline)){ - break; - } - else{ - swait.yield(); - } + #ifdef BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING + if (!m.timed_lock(microsec_clock::universal_time() + + usduration_milliseconds(BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS))) + { + throw interprocess_exception(timeout_when_locking_error + , "Interprocess mutex timeout when locking. Possible deadlock: " + "owner died without unlocking?"); } - while(1); - } + #else + m.lock(); + #endif } } //namespace ipcdetail diff --git a/src/boost/boost/interprocess/sync/detail/locks.hpp b/src/boost/boost/interprocess/sync/detail/locks.hpp index 68e3212c9..f92b47e83 100644 --- a/src/boost/boost/interprocess/sync/detail/locks.hpp +++ b/src/boost/boost/interprocess/sync/detail/locks.hpp @@ -35,18 +35,18 @@ class internal_mutex_lock typedef typename Lock::mutex_type::internal_mutex_type mutex_type; - internal_mutex_lock(Lock &l) + BOOST_INTERPROCESS_FORCEINLINE internal_mutex_lock(Lock &l) : l_(l) {} - mutex_type* mutex() const + BOOST_INTERPROCESS_FORCEINLINE mutex_type* mutex() const { return l_ ? &l_.mutex()->internal_mutex() : 0; } - void lock() { l_.lock(); } + BOOST_INTERPROCESS_FORCEINLINE void lock() { l_.lock(); } - void unlock() { l_.unlock(); } + BOOST_INTERPROCESS_FORCEINLINE void unlock() { l_.unlock(); } - operator unspecified_bool_type() const + BOOST_INTERPROCESS_FORCEINLINE operator unspecified_bool_type() const { return l_ ? &internal_mutex_lock::lock : 0; } private: @@ -58,11 +58,13 @@ class lock_inverter { Lock &l_; public: - lock_inverter(Lock &l) + BOOST_INTERPROCESS_FORCEINLINE lock_inverter(Lock &l) : l_(l) {} - void lock() { l_.unlock(); } - void unlock() { l_.lock(); } + + BOOST_INTERPROCESS_FORCEINLINE void lock() { l_.unlock(); } + + BOOST_INTERPROCESS_FORCEINLINE void unlock() { l_.lock(); } }; template @@ -71,12 +73,15 @@ class lock_to_sharable Lock &l_; public: - explicit lock_to_sharable(Lock &l) + BOOST_INTERPROCESS_FORCEINLINE explicit lock_to_sharable(Lock &l) : l_(l) {} - void lock() { l_.lock_sharable(); } - bool try_lock(){ return l_.try_lock_sharable(); } - void unlock() { l_.unlock_sharable(); } + + BOOST_INTERPROCESS_FORCEINLINE void lock() { l_.lock_sharable(); } + + BOOST_INTERPROCESS_FORCEINLINE bool try_lock(){ return l_.try_lock_sharable(); } + + BOOST_INTERPROCESS_FORCEINLINE void unlock() { l_.unlock_sharable(); } }; template @@ -85,11 +90,16 @@ class lock_to_wait Lock &l_; public: - explicit lock_to_wait(Lock &l) + BOOST_INTERPROCESS_FORCEINLINE explicit lock_to_wait(Lock &l) : l_(l) {} - void lock() { l_.wait(); } - bool try_lock(){ return l_.try_wait(); } + BOOST_INTERPROCESS_FORCEINLINE void lock() { l_.wait(); } + + BOOST_INTERPROCESS_FORCEINLINE bool try_lock() { return l_.try_wait(); } + + template + BOOST_INTERPROCESS_FORCEINLINE bool timed_lock(const TimePoint &abs_time) + { return l_.timed_wait(abs_time); } }; } //namespace ipcdetail diff --git a/src/boost/boost/interprocess/sync/file_lock.hpp b/src/boost/boost/interprocess/sync/file_lock.hpp index 335655e58..36227ec36 100644 --- a/src/boost/boost/interprocess/sync/file_lock.hpp +++ b/src/boost/boost/interprocess/sync/file_lock.hpp @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -51,7 +50,7 @@ class file_lock public: //!Constructs an empty file mapping. //!Does not throw - file_lock() + file_lock() BOOST_NOEXCEPT : m_file_hnd(file_handle_t(ipcdetail::invalid_file())) {} @@ -59,17 +58,26 @@ class file_lock //!exist or there are no operating system resources. file_lock(const char *name); + #if defined(BOOST_INTERPROCESS_WCHAR_NAMED_RESOURCES) || defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) + //!Opens a file lock. Throws interprocess_exception if the file does not + //!exist or there are no operating system resources. + //! + //!Note: This function is only available on operating systems with + //! native wchar_t APIs (e.g. Windows). + file_lock(const wchar_t *name); + #endif + //!Moves the ownership of "moved"'s file mapping object to *this. //!After the call, "moved" does not represent any file mapping object. //!Does not throw - file_lock(BOOST_RV_REF(file_lock) moved) + file_lock(BOOST_RV_REF(file_lock) moved) BOOST_NOEXCEPT : m_file_hnd(file_handle_t(ipcdetail::invalid_file())) { this->swap(moved); } //!Moves the ownership of "moved"'s file mapping to *this. //!After the call, "moved" does not represent any file mapping. //!Does not throw - file_lock &operator=(BOOST_RV_REF(file_lock) moved) + file_lock &operator=(BOOST_RV_REF(file_lock) moved) BOOST_NOEXCEPT { file_lock tmp(boost::move(moved)); this->swap(tmp); @@ -81,7 +89,7 @@ class file_lock //!Swaps two file_locks. //!Does not throw. - void swap(file_lock &other) + void swap(file_lock &other) BOOST_NOEXCEPT { file_handle_t tmp = m_file_hnd; m_file_hnd = other.m_file_hnd; @@ -90,26 +98,55 @@ class file_lock //Exclusive locking + //!Requires: The calling thread does not own the mutex. + //! //!Effects: The calling thread tries to obtain exclusive ownership of the mutex, //! and if another thread has exclusive, or sharable ownership of //! the mutex, it waits until it can obtain the ownership. //!Throws: interprocess_exception on error. + //! + //!Note: A program may deadlock if the thread that has ownership calls + //! this function. If the implementation can detect the deadlock, + //! an exception could be thrown. void lock(); + //!Requires: The calling thread does not own the mutex. + //! //!Effects: The calling thread tries to acquire exclusive ownership of the mutex //! without waiting. If no other thread has exclusive, or sharable //! ownership of the mutex this succeeds. //!Returns: If it can acquire exclusive ownership immediately returns true. //! If it has to wait, returns false. //!Throws: interprocess_exception on error. + //! + //!Note: A program may deadlock if the thread that has ownership calls + //! this function. If the implementation can detect the deadlock, + //! an exception could be thrown. bool try_lock(); + //!Requires: The calling thread does not own the mutex. + //! //!Effects: The calling thread tries to acquire exclusive ownership of the mutex //! waiting if necessary until no other thread has exclusive, or sharable //! ownership of the mutex or abs_time is reached. //!Returns: If acquires exclusive ownership, returns true. Otherwise returns false. //!Throws: interprocess_exception on error. - bool timed_lock(const boost::posix_time::ptime &abs_time); + //! + //!Note: A program may deadlock if the thread that has ownership calls + //! this function. If the implementation can detect the deadlock, + //! an exception could be thrown. + template + bool timed_lock(const TimePoint &abs_time); + + //!Same as `timed_lock`, but this function is modeled after the + //!standard library interface. + template bool try_lock_until(const TimePoint &abs_time) + { return this->timed_lock(abs_time); } + + //!Same as `timed_lock`, but this function is modeled after the + //!standard library interface. + template bool try_lock_for(const Duration &dur) + { return this->timed_lock(ipcdetail::duration_to_ustime(dur)); } //!Precondition: The thread must have exclusive ownership of the mutex. //!Effects: The calling thread releases the exclusive ownership of the mutex. @@ -118,12 +155,23 @@ class file_lock //Sharable locking + //!Requires: The calling thread does not own the mutex. + //! //!Effects: The calling thread tries to obtain sharable ownership of the mutex, //! and if another thread has exclusive ownership of the mutex, waits until //! it can obtain the ownership. //!Throws: interprocess_exception on error. + //! + //!Note: A program may deadlock if the thread that owns a mutex object calls + //! this function. If the implementation can detect the deadlock, + //! an exception could be thrown. void lock_sharable(); + //!Same as `lock_sharable` but with a std-compatible interface + //! + void lock_shared() + { this->lock_sharable(); } + //!Effects: The calling thread tries to acquire sharable ownership of the mutex //! without waiting. If no other thread has exclusive ownership of the //! mutex this succeeds. @@ -132,17 +180,39 @@ class file_lock //!Throws: interprocess_exception on error. bool try_lock_sharable(); + //!Same as `try_lock_sharable` but with a std-compatible interface + //! + bool try_lock_shared() + { return this->try_lock_sharable(); } + //!Effects: The calling thread tries to acquire sharable ownership of the mutex //! waiting if necessary until no other thread has exclusive ownership of //! the mutex or abs_time is reached. //!Returns: If acquires sharable ownership, returns true. Otherwise returns false. //!Throws: interprocess_exception on error. - bool timed_lock_sharable(const boost::posix_time::ptime &abs_time); + template + bool timed_lock_sharable(const TimePoint &abs_time); + + //!Same as `timed_lock_sharable`, but this function is modeled after the + //!standard library interface. + template bool try_lock_shared_until(const TimePoint &abs_time) + { return this->timed_lock_sharable(abs_time); } + + //!Same as `timed_lock_sharable`, but this function is modeled after the + //!standard library interface. + template bool try_lock_shared_for(const Duration &dur) + { return this->timed_lock_sharable(ipcdetail::duration_to_ustime(dur)); } //!Precondition: The thread must have sharable ownership of the mutex. //!Effects: The calling thread releases the sharable ownership of the mutex. //!Throws: An exception derived from interprocess_exception on error. void unlock_sharable(); + + //!Same as `unlock_sharable` but with a std-compatible interface + //! + void unlock_shared() + { this->unlock_sharable(); } + #if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) private: file_handle_t m_file_hnd; @@ -160,6 +230,20 @@ inline file_lock::file_lock(const char *name) } } +#if defined(BOOST_INTERPROCESS_WCHAR_NAMED_RESOURCES) || defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) + +inline file_lock::file_lock(const wchar_t *name) +{ + m_file_hnd = ipcdetail::open_existing_file(name, read_write); + + if(m_file_hnd == ipcdetail::invalid_file()){ + error_info err(system_error_code()); + throw interprocess_exception(err); + } +} + +#endif //defined(BOOST_INTERPROCESS_WCHAR_NAMED_RESOURCES) || defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) + inline file_lock::~file_lock() { if(m_file_hnd != ipcdetail::invalid_file()){ @@ -186,7 +270,8 @@ inline bool file_lock::try_lock() return result; } -inline bool file_lock::timed_lock(const boost::posix_time::ptime &abs_time) +template +inline bool file_lock::timed_lock(const TimePoint &abs_time) { return ipcdetail::try_based_timed_lock(*this, abs_time); } inline void file_lock::unlock() @@ -215,7 +300,8 @@ inline bool file_lock::try_lock_sharable() return result; } -inline bool file_lock::timed_lock_sharable(const boost::posix_time::ptime &abs_time) +template +inline bool file_lock::timed_lock_sharable(const TimePoint &abs_time) { ipcdetail::lock_to_sharable lsh(*this); return ipcdetail::try_based_timed_lock(lsh, abs_time); diff --git a/src/boost/boost/intrusive/detail/config_begin.hpp b/src/boost/boost/intrusive/detail/config_begin.hpp new file mode 100644 index 000000000..8598cf7ef --- /dev/null +++ b/src/boost/boost/intrusive/detail/config_begin.hpp @@ -0,0 +1,44 @@ +///////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2006-2013 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/intrusive for documentation. +// +///////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_CONFIG_HPP +#include +#endif + +#ifdef BOOST_MSVC + + #pragma warning (push) + #pragma warning (disable : 4619) // there is no warning number 'XXXX' + #pragma warning (disable : 4275) // non DLL-interface classkey "identifier" used as base for DLL-interface classkey "identifier" + #pragma warning (disable : 4251) // "identifier" : class "type" needs to have dll-interface to be used by clients of class "type2" + #pragma warning (disable : 4675) // "method" should be declared "static" and have exactly one parameter + #pragma warning (disable : 4996) // "function": was declared deprecated + #pragma warning (disable : 4503) // "identifier" : decorated name length exceeded, name was truncated + #pragma warning (disable : 4284) // odd return type for operator-> + #pragma warning (disable : 4244) // possible loss of data + #pragma warning (disable : 4521) ////Disable "multiple copy constructors specified" + #pragma warning (disable : 4127) //conditional expression is constant + #pragma warning (disable : 4146) // unary minus operator applied to unsigned type, result still unsigned + #pragma warning (disable : 4267) //conversion from 'X' to 'Y', possible loss of data + #pragma warning (disable : 4541) //'typeid' used on polymorphic type 'boost::exception' with /GR- + #pragma warning (disable : 4512) //'typeid' used on polymorphic type 'boost::exception' with /GR- + #pragma warning (disable : 4522) // "class" : multiple assignment operators specified + #pragma warning (disable : 4706) //assignment within conditional expression + #pragma warning (disable : 4710) // function not inlined + #pragma warning (disable : 4714) // "function": marked as __forceinline not inlined + #pragma warning (disable : 4711) // function selected for automatic inline expansion + #pragma warning (disable : 4786) // identifier truncated in debug info + #pragma warning (disable : 4996) // "function": was declared deprecated +#endif + +//#define BOOST_INTRUSIVE_USE_ITERATOR_FACADE +//#define BOOST_INTRUSIVE_USE_ITERATOR_ENABLE_IF_CONVERTIBLE diff --git a/src/boost/boost/intrusive/detail/config_end.hpp b/src/boost/boost/intrusive/detail/config_end.hpp new file mode 100644 index 000000000..030b3f3b1 --- /dev/null +++ b/src/boost/boost/intrusive/detail/config_end.hpp @@ -0,0 +1,15 @@ +///////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2006-2013 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/intrusive for documentation. +// +///////////////////////////////////////////////////////////////////////////// + +#if defined BOOST_MSVC + #pragma warning (pop) +#endif diff --git a/src/boost/boost/intrusive/detail/mpl.hpp b/src/boost/boost/intrusive/detail/mpl.hpp new file mode 100644 index 000000000..98ce338f7 --- /dev/null +++ b/src/boost/boost/intrusive/detail/mpl.hpp @@ -0,0 +1,217 @@ +///////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2006-2014 +// (C) Copyright Microsoft Corporation 2014 +// +// 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/libs/intrusive for documentation. +// +///////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_INTRUSIVE_DETAIL_MPL_HPP +#define BOOST_INTRUSIVE_DETAIL_MPL_HPP + +#ifndef BOOST_CONFIG_HPP +# include +#endif + +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif + +#include +#include +#include + +namespace boost { +namespace intrusive { +namespace detail { + +using boost::move_detail::is_same; +using boost::move_detail::add_const; +using boost::move_detail::remove_const; +using boost::move_detail::remove_cv; +using boost::move_detail::remove_reference; +using boost::move_detail::add_reference; +using boost::move_detail::remove_pointer; +using boost::move_detail::add_pointer; +using boost::move_detail::true_type; +using boost::move_detail::false_type; +using boost::move_detail::voider; +using boost::move_detail::enable_if_c; +using boost::move_detail::enable_if; +using boost::move_detail::disable_if_c; +using boost::move_detail::disable_if; +using boost::move_detail::is_convertible; +using boost::move_detail::if_c; +using boost::move_detail::if_; +using boost::move_detail::is_const; +using boost::move_detail::identity; +using boost::move_detail::alignment_of; +using boost::move_detail::is_empty; +using boost::move_detail::addressof; +using boost::move_detail::integral_constant; +using boost::move_detail::enable_if_convertible; +using boost::move_detail::disable_if_convertible; +using boost::move_detail::bool_; +using boost::move_detail::true_; +using boost::move_detail::false_; +using boost::move_detail::yes_type; +using boost::move_detail::no_type; +using boost::move_detail::apply; +using boost::move_detail::eval_if_c; +using boost::move_detail::eval_if; +using boost::move_detail::unvoid_ref; +using boost::move_detail::add_const_if_c; + +template +struct ls_zeros +{ + static const std::size_t value = (S & std::size_t(1)) ? 0 : (1 + ls_zeros<(S>>1u)>::value); +}; + +template<> +struct ls_zeros<0> +{ + static const std::size_t value = 0; +}; + +template<> +struct ls_zeros<1> +{ + static const std::size_t value = 0; +}; + +// Infrastructure for providing a default type for T::TNAME if absent. +#define BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(TNAME) \ + template \ + struct boost_intrusive_has_type_ ## TNAME \ + { \ + template \ + static char test(int, typename X::TNAME*); \ + \ + template \ + static int test(...); \ + \ + static const bool value = (1 == sizeof(test(0, 0))); \ + }; \ + \ + template \ + struct boost_intrusive_default_type_ ## TNAME \ + { \ + struct DefaultWrap { typedef DefaultType TNAME; }; \ + \ + typedef typename \ + ::boost::intrusive::detail::if_c \ + < boost_intrusive_has_type_ ## TNAME::value \ + , T, DefaultWrap>::type::TNAME type; \ + }; \ + // + +#define BOOST_INTRUSIVE_OBTAIN_TYPE_WITH_DEFAULT(INSTANTIATION_NS_PREFIX, T, TNAME, TIMPL) \ + typename INSTANTIATION_NS_PREFIX \ + boost_intrusive_default_type_ ## TNAME< T, TIMPL >::type \ +// + +#define BOOST_INTRUSIVE_HAS_TYPE(INSTANTIATION_NS_PREFIX, T, TNAME) \ + INSTANTIATION_NS_PREFIX \ + boost_intrusive_has_type_ ## TNAME< T >::value \ +// + +#define BOOST_INTRUSIVE_INSTANTIATE_EVAL_DEFAULT_TYPE_TMPLT(TNAME)\ + template \ + struct boost_intrusive_eval_default_type_ ## TNAME \ + { \ + template \ + static char test(int, typename X::TNAME*); \ + \ + template \ + static int test(...); \ + \ + struct DefaultWrap \ + { typedef typename DefaultType::type TNAME; }; \ + \ + static const bool value = (1 == sizeof(test(0, 0))); \ + \ + typedef typename \ + ::boost::intrusive::detail::eval_if_c \ + < value \ + , ::boost::intrusive::detail::identity \ + , ::boost::intrusive::detail::identity \ + >::type::TNAME type; \ + }; \ +// + +#define BOOST_INTRUSIVE_OBTAIN_TYPE_WITH_EVAL_DEFAULT(INSTANTIATION_NS_PREFIX, T, TNAME, TIMPL) \ + typename INSTANTIATION_NS_PREFIX \ + boost_intrusive_eval_default_type_ ## TNAME< T, TIMPL >::type \ +// + +#define BOOST_INTRUSIVE_INTERNAL_STATIC_BOOL_IS_TRUE(TRAITS_PREFIX, TYPEDEF_TO_FIND) \ +template \ +struct TRAITS_PREFIX##_bool\ +{\ + template\ + struct two_or_three {yes_type _[2u + (unsigned)Add];};\ + template static yes_type test(...);\ + template static two_or_three test (int);\ + static const std::size_t value = sizeof(test(0));\ +};\ +\ +template \ +struct TRAITS_PREFIX##_bool_is_true\ +{\ + static const bool value = TRAITS_PREFIX##_bool::value > sizeof(yes_type)*2;\ +};\ +// + +#define BOOST_INTRUSIVE_HAS_STATIC_MEMBER_FUNC_SIGNATURE(TRAITS_NAME, FUNC_NAME) \ + template \ + class TRAITS_NAME \ + { \ + private: \ + template struct helper;\ + template \ + static ::boost::intrusive::detail::yes_type test(helper<&T::FUNC_NAME>*); \ + template static ::boost::intrusive::detail::no_type test(...); \ + public: \ + static const bool value = sizeof(test(0)) == sizeof(::boost::intrusive::detail::yes_type); \ + }; \ +// + +#define BOOST_INTRUSIVE_HAS_MEMBER_FUNC_CALLED(TRAITS_NAME, FUNC_NAME) \ +template \ +struct TRAITS_NAME \ +{ \ + struct BaseMixin \ + { \ + void FUNC_NAME(); \ + }; \ + struct Base : public Type, public BaseMixin { Base(); }; \ + template class Helper{}; \ + template \ + static ::boost::intrusive::detail::no_type test(U*, Helper* = 0); \ + static ::boost::intrusive::detail::yes_type test(...); \ + static const bool value = sizeof(::boost::intrusive::detail::yes_type) == sizeof(test((Base*)(0))); \ +};\ +// + +#define BOOST_INTRUSIVE_HAS_MEMBER_FUNC_CALLED_IGNORE_SIGNATURE(TRAITS_NAME, FUNC_NAME) \ +BOOST_INTRUSIVE_HAS_MEMBER_FUNC_CALLED(TRAITS_NAME##_ignore_signature, FUNC_NAME) \ +\ +template \ +struct TRAITS_NAME \ + : public TRAITS_NAME##_ignore_signature \ +{};\ +// + +} //namespace detail +} //namespace intrusive +} //namespace boost + +#include + +#endif //BOOST_INTRUSIVE_DETAIL_MPL_HPP diff --git a/src/boost/boost/io/detail/buffer_fill.hpp b/src/boost/boost/io/detail/buffer_fill.hpp new file mode 100644 index 000000000..605da51fb --- /dev/null +++ b/src/boost/boost/io/detail/buffer_fill.hpp @@ -0,0 +1,39 @@ +/* +Copyright 2019-2020 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_IO_DETAIL_BUFFER_FILL_HPP +#define BOOST_IO_DETAIL_BUFFER_FILL_HPP + +#include +#include + +namespace boost { +namespace io { +namespace detail { + +template +inline bool +buffer_fill(std::basic_streambuf& buf, charT ch, + std::size_t size) +{ + charT fill[] = { ch, ch, ch, ch, ch, ch, ch, ch }; + enum { + chunk = sizeof fill / sizeof(charT) + }; + for (; size > chunk; size -= chunk) { + if (static_cast(buf.sputn(fill, chunk)) != chunk) { + return false; + } + } + return static_cast(buf.sputn(fill, size)) == size; +} + +} /* detail */ +} /* io */ +} /* boost */ + +#endif diff --git a/src/boost/boost/io/detail/ostream_guard.hpp b/src/boost/boost/io/detail/ostream_guard.hpp new file mode 100644 index 000000000..d1f596402 --- /dev/null +++ b/src/boost/boost/io/detail/ostream_guard.hpp @@ -0,0 +1,45 @@ +/* +Copyright 2019-2020 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_IO_DETAIL_OSTREAM_GUARD_HPP +#define BOOST_IO_DETAIL_OSTREAM_GUARD_HPP + +#include +#include + +namespace boost { +namespace io { +namespace detail { + +template +class ostream_guard { +public: + explicit ostream_guard(std::basic_ostream& os) BOOST_NOEXCEPT + : os_(&os) { } + + ~ostream_guard() BOOST_NOEXCEPT_IF(false) { + if (os_) { + os_->setstate(std::basic_ostream::badbit); + } + } + + void release() BOOST_NOEXCEPT { + os_ = 0; + } + +private: + ostream_guard(const ostream_guard&); + ostream_guard& operator=(const ostream_guard&); + + std::basic_ostream* os_; +}; + +} /* detail */ +} /* io */ +} /* boost */ + +#endif diff --git a/src/boost/boost/io/detail/quoted_manip.hpp b/src/boost/boost/io/detail/quoted_manip.hpp deleted file mode 100644 index 95e58015b..000000000 --- a/src/boost/boost/io/detail/quoted_manip.hpp +++ /dev/null @@ -1,190 +0,0 @@ -// boost/io/quoted_manip.hpp ---------------------------------------------------------// - -// Copyright Beman Dawes 2010 - -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt - -// Library home page http://www.boost.org/libs/io - -//--------------------------------------------------------------------------------------// - -#ifndef BOOST_IO_QUOTED_MANIP -#define BOOST_IO_QUOTED_MANIP - -#include -#include -#include -#include -#include - -namespace boost -{ - namespace io - { - namespace detail { template struct quoted_proxy; } - - // ------------ public interface ------------------------------------------------// - - // manipulator for const std::basic_string& - template - detail::quoted_proxy const &, Char> - quoted(const std::basic_string& s, - Char escape='\\', Char delim='\"'); - - // manipulator for non-const std::basic_string& - template - detail::quoted_proxy &, Char> - quoted(std::basic_string& s, - Char escape='\\', Char delim='\"'); - - // manipulator for const C-string* - template - detail::quoted_proxy - quoted(const Char* s, Char escape='\\', Char delim='\"'); - - // ----------- implementation details -------------------------------------------// - - namespace detail - { - // proxy used as an argument pack - template - struct quoted_proxy - { - String string; - Char escape; - Char delim; - - quoted_proxy(String s_, Char escape_, Char delim_) - : string(s_), escape(escape_), delim(delim_) {} - private: - // String may be a const type, so disable the assignment operator - quoted_proxy& operator=(const quoted_proxy&); // = deleted - }; - - // abstract away difference between proxies with const or non-const basic_strings - template - std::basic_ostream& - basic_string_inserter_imp(std::basic_ostream& os, - std::basic_string const & string, Char escape, Char delim) - { - os << delim; - typename std::basic_string::const_iterator - end_it = string.end(); - for (typename std::basic_string::const_iterator - it = string.begin(); - it != end_it; - ++it ) - { - if (*it == delim || *it == escape) - os << escape; - os << *it; - } - os << delim; - return os; - } - - // inserter for const std::basic_string& proxies - template - inline - std::basic_ostream& operator<<(std::basic_ostream& os, - const quoted_proxy const &, Char>& proxy) - { - return basic_string_inserter_imp(os, proxy.string, proxy.escape, proxy.delim); - } - - // inserter for non-const std::basic_string& proxies - template - inline - std::basic_ostream& operator<<(std::basic_ostream& os, - const quoted_proxy&, Char>& proxy) - { - return basic_string_inserter_imp(os, proxy.string, proxy.escape, proxy.delim); - } - - // inserter for const C-string* proxies - template - std::basic_ostream& operator<<(std::basic_ostream& os, - const quoted_proxy& proxy) - { - os << proxy.delim; - for (const Char* it = proxy.string; - *it; - ++it ) - { - if (*it == proxy.delim || *it == proxy.escape) - os << proxy.escape; - os << *it; - } - os << proxy.delim; - return os; - } - - // extractor for non-const std::basic_string& proxies - template - std::basic_istream& operator>>(std::basic_istream& is, - const quoted_proxy&, Char>& proxy) - { - proxy.string.clear(); - Char c; - is >> c; - if (c != proxy.delim) - { - is.unget(); - is >> proxy.string; - return is; - } - { - boost::io::ios_flags_saver ifs(is); - is >> std::noskipws; - for (;;) - { - is >> c; - if (!is.good()) // cope with I/O errors or end-of-file - break; - if (c == proxy.escape) - { - is >> c; - if (!is.good()) // cope with I/O errors or end-of-file - break; - } - else if (c == proxy.delim) - break; - proxy.string += c; - } - } - return is; - } - - } // namespace detail - - // manipulator implementation for const std::basic_string& - template - inline detail::quoted_proxy const &, Char> - quoted(const std::basic_string& s, Char escape, Char delim) - { - return detail::quoted_proxy const &, Char> - (s, escape, delim); - } - - // manipulator implementation for non-const std::basic_string& - template - inline detail::quoted_proxy &, Char> - quoted(std::basic_string& s, Char escape, Char delim) - { - return detail::quoted_proxy&, Char> - (s, escape, delim); - } - - // manipulator implementation for const C-string* - template - inline detail::quoted_proxy - quoted(const Char* s, Char escape, Char delim) - { - return detail::quoted_proxy (s, escape, delim); - } - - } // namespace io -} // namespace boost - -#endif // BOOST_IO_QUOTED_MANIP diff --git a/src/boost/boost/io/ios_state.hpp b/src/boost/boost/io/ios_state.hpp index fcbb0bb68..0fab4d412 100644 --- a/src/boost/boost/io/ios_state.hpp +++ b/src/boost/boost/io/ios_state.hpp @@ -1,439 +1,485 @@ -// Boost io/ios_state.hpp header file --------------------------------------// - -// Copyright 2002, 2005 Daryle Walker. Use, modification, and distribution -// are subject to the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or a copy at .) - -// See for the library's home page. +/* +Copyright 2002, 2005 Daryle Walker +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ #ifndef BOOST_IO_IOS_STATE_HPP #define BOOST_IO_IOS_STATE_HPP -#include // self include -#include - -#include // for std::ios_base, std::basic_ios, etc. +#include +#include +#include #ifndef BOOST_NO_STD_LOCALE -#include // for std::locale +#include #endif -#include // for std::basic_ostream -#include // for std::basic_streambuf -#include // for std::char_traits +#include +#include +#include +namespace boost { +namespace io { -namespace boost -{ -namespace io -{ - +class ios_flags_saver { +public: + typedef std::ios_base state_type; + typedef std::ios_base::fmtflags aspect_type; -// Basic stream state saver class declarations -----------------------------// + explicit ios_flags_saver(state_type& s) + : s_save_(s) + , a_save_(s.flags()) { } -class ios_flags_saver -{ -public: - typedef ::std::ios_base state_type; - typedef ::std::ios_base::fmtflags aspect_type; + ios_flags_saver(state_type& s, aspect_type a) + : s_save_(s) + , a_save_(s.flags(a)) { } - explicit ios_flags_saver( state_type &s ) - : s_save_( s ), a_save_( s.flags() ) - {} - ios_flags_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.flags(a) ) - {} - ~ios_flags_saver() - { this->restore(); } + ~ios_flags_saver() { + this->restore(); + } - void restore() - { s_save_.flags( a_save_ ); } + void restore() { + s_save_.flags(a_save_); + } private: - state_type & s_save_; - aspect_type const a_save_; - + ios_flags_saver(const ios_flags_saver&); ios_flags_saver& operator=(const ios_flags_saver&); + + state_type& s_save_; + aspect_type a_save_; }; -class ios_precision_saver -{ +class ios_precision_saver { public: - typedef ::std::ios_base state_type; - typedef ::std::streamsize aspect_type; + typedef std::ios_base state_type; + typedef std::streamsize aspect_type; - explicit ios_precision_saver( state_type &s ) - : s_save_( s ), a_save_( s.precision() ) - {} - ios_precision_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.precision(a) ) - {} - ~ios_precision_saver() - { this->restore(); } + explicit ios_precision_saver(state_type& s) + : s_save_(s) + , a_save_(s.precision()) { } - void restore() - { s_save_.precision( a_save_ ); } + ios_precision_saver(state_type& s, aspect_type a) + : s_save_(s) + , a_save_(s.precision(a)) { } -private: - state_type & s_save_; - aspect_type const a_save_; + ~ios_precision_saver() { + this->restore(); + } + void restore() { + s_save_.precision(a_save_); + } + +private: + ios_precision_saver(const ios_precision_saver&); ios_precision_saver& operator=(const ios_precision_saver&); + + state_type& s_save_; + aspect_type a_save_; }; -class ios_width_saver -{ +class ios_width_saver { public: - typedef ::std::ios_base state_type; - typedef ::std::streamsize aspect_type; + typedef std::ios_base state_type; + typedef std::streamsize aspect_type; + + explicit ios_width_saver(state_type& s) + : s_save_(s) + , a_save_(s.width()) { } - explicit ios_width_saver( state_type &s ) - : s_save_( s ), a_save_( s.width() ) - {} - ios_width_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.width(a) ) - {} - ~ios_width_saver() - { this->restore(); } + ios_width_saver(state_type& s, aspect_type a) + : s_save_(s) + , a_save_(s.width(a)) { } - void restore() - { s_save_.width( a_save_ ); } + ~ios_width_saver() { + this->restore(); + } + + void restore() { + s_save_.width(a_save_); + } private: - state_type & s_save_; - aspect_type const a_save_; + ios_width_saver(const ios_width_saver&); ios_width_saver& operator=(const ios_width_saver&); + + state_type& s_save_; + aspect_type a_save_; }; +template +class basic_ios_iostate_saver { +public: + typedef std::basic_ios state_type; + typedef std::ios_base::iostate aspect_type; -// Advanced stream state saver class template declarations -----------------// + explicit basic_ios_iostate_saver(state_type& s) + : s_save_(s) + , a_save_(s.rdstate()) { } -template < typename Ch, class Tr > -class basic_ios_iostate_saver -{ -public: - typedef ::std::basic_ios state_type; - typedef ::std::ios_base::iostate aspect_type; + basic_ios_iostate_saver(state_type& s, aspect_type a) + : s_save_(s) + , a_save_(s.rdstate()) { + s.clear(a); + } - explicit basic_ios_iostate_saver( state_type &s ) - : s_save_( s ), a_save_( s.rdstate() ) - {} - basic_ios_iostate_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.rdstate() ) - { s.clear(a); } - ~basic_ios_iostate_saver() - { this->restore(); } + ~basic_ios_iostate_saver() { + this->restore(); + } - void restore() - { s_save_.clear( a_save_ ); } + void restore() { + s_save_.clear(a_save_); + } private: - state_type & s_save_; - aspect_type const a_save_; + basic_ios_iostate_saver(const basic_ios_iostate_saver&); basic_ios_iostate_saver& operator=(const basic_ios_iostate_saver&); + + state_type& s_save_; + aspect_type a_save_; }; -template < typename Ch, class Tr > -class basic_ios_exception_saver -{ +template +class basic_ios_exception_saver { public: - typedef ::std::basic_ios state_type; - typedef ::std::ios_base::iostate aspect_type; - - explicit basic_ios_exception_saver( state_type &s ) - : s_save_( s ), a_save_( s.exceptions() ) - {} -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) - basic_ios_exception_saver( state_type &s, aspect_type a ) -#else - basic_ios_exception_saver( state_type &s, aspect_type const &a ) -#endif - : s_save_( s ), a_save_( s.exceptions() ) - { s.exceptions(a); } - ~basic_ios_exception_saver() - { this->restore(); } + typedef std::basic_ios state_type; + typedef std::ios_base::iostate aspect_type; + + explicit basic_ios_exception_saver(state_type& s) + : s_save_(s) + , a_save_(s.exceptions()) { } - void restore() - { s_save_.exceptions( a_save_ ); } + basic_ios_exception_saver(state_type& s, aspect_type a) + : s_save_(s) + , a_save_(s.exceptions()) { + s.exceptions(a); + } + + ~basic_ios_exception_saver() { + this->restore(); + } + + void restore() { + s_save_.exceptions(a_save_); + } private: - state_type & s_save_; - aspect_type const a_save_; + basic_ios_exception_saver(const basic_ios_exception_saver&); basic_ios_exception_saver& operator=(const basic_ios_exception_saver&); + + state_type& s_save_; + aspect_type a_save_; }; -template < typename Ch, class Tr > -class basic_ios_tie_saver -{ +template +class basic_ios_tie_saver { public: - typedef ::std::basic_ios state_type; - typedef ::std::basic_ostream * aspect_type; + typedef std::basic_ios state_type; + typedef std::basic_ostream* aspect_type; - explicit basic_ios_tie_saver( state_type &s ) - : s_save_( s ), a_save_( s.tie() ) - {} - basic_ios_tie_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.tie(a) ) - {} - ~basic_ios_tie_saver() - { this->restore(); } + explicit basic_ios_tie_saver(state_type& s) + : s_save_(s) + , a_save_(s.tie()) { } - void restore() - { s_save_.tie( a_save_ ); } + basic_ios_tie_saver(state_type& s, aspect_type a) + : s_save_(s) + , a_save_(s.tie(a)) { } + + ~basic_ios_tie_saver() { + this->restore(); + } + + void restore() { + s_save_.tie(a_save_); + } private: - state_type & s_save_; - aspect_type const a_save_; + basic_ios_tie_saver(const basic_ios_tie_saver&); basic_ios_tie_saver& operator=(const basic_ios_tie_saver&); + + state_type& s_save_; + aspect_type a_save_; }; -template < typename Ch, class Tr > -class basic_ios_rdbuf_saver -{ +template +class basic_ios_rdbuf_saver { public: - typedef ::std::basic_ios state_type; - typedef ::std::basic_streambuf * aspect_type; + typedef std::basic_ios state_type; + typedef std::basic_streambuf* aspect_type; - explicit basic_ios_rdbuf_saver( state_type &s ) - : s_save_( s ), a_save_( s.rdbuf() ) - {} - basic_ios_rdbuf_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.rdbuf(a) ) - {} - ~basic_ios_rdbuf_saver() - { this->restore(); } + explicit basic_ios_rdbuf_saver(state_type& s) + : s_save_(s) + , a_save_(s.rdbuf()) { } - void restore() - { s_save_.rdbuf( a_save_ ); } + basic_ios_rdbuf_saver(state_type& s, aspect_type a) + : s_save_(s) + , a_save_(s.rdbuf(a)) { } + + ~basic_ios_rdbuf_saver() { + this->restore(); + } + + void restore() { + s_save_.rdbuf(a_save_); + } private: - state_type & s_save_; - aspect_type const a_save_; + basic_ios_rdbuf_saver(const basic_ios_rdbuf_saver&); basic_ios_rdbuf_saver& operator=(const basic_ios_rdbuf_saver&); + + state_type& s_save_; + aspect_type a_save_; }; -template < typename Ch, class Tr > -class basic_ios_fill_saver -{ +template +class basic_ios_fill_saver { public: - typedef ::std::basic_ios state_type; - typedef typename state_type::char_type aspect_type; + typedef std::basic_ios state_type; + typedef typename state_type::char_type aspect_type; + + explicit basic_ios_fill_saver(state_type& s) + : s_save_(s) + , a_save_(s.fill()) { } - explicit basic_ios_fill_saver( state_type &s ) - : s_save_( s ), a_save_( s.fill() ) - {} - basic_ios_fill_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.fill(a) ) - {} - ~basic_ios_fill_saver() - { this->restore(); } + basic_ios_fill_saver(state_type& s, aspect_type a) + : s_save_(s) + , a_save_(s.fill(a)) { } - void restore() - { s_save_.fill( a_save_ ); } + ~basic_ios_fill_saver() { + this->restore(); + } + + void restore() { + s_save_.fill(a_save_); + } private: - state_type & s_save_; - aspect_type const a_save_; + basic_ios_fill_saver(const basic_ios_fill_saver&); basic_ios_fill_saver& operator=(const basic_ios_fill_saver&); + + state_type& s_save_; + aspect_type a_save_; }; #ifndef BOOST_NO_STD_LOCALE -template < typename Ch, class Tr > -class basic_ios_locale_saver -{ +template +class basic_ios_locale_saver { public: - typedef ::std::basic_ios state_type; - typedef ::std::locale aspect_type; + typedef std::basic_ios state_type; + typedef std::locale aspect_type; + + explicit basic_ios_locale_saver(state_type& s) + : s_save_(s) + , a_save_(s.getloc()) { } + + basic_ios_locale_saver(state_type& s, const aspect_type& a) + : s_save_(s) + , a_save_(s.imbue(a)) { } - explicit basic_ios_locale_saver( state_type &s ) - : s_save_( s ), a_save_( s.getloc() ) - {} - basic_ios_locale_saver( state_type &s, aspect_type const &a ) - : s_save_( s ), a_save_( s.imbue(a) ) - {} - ~basic_ios_locale_saver() - { this->restore(); } + ~basic_ios_locale_saver() { + this->restore(); + } - void restore() - { s_save_.imbue( a_save_ ); } + void restore() { + s_save_.imbue(a_save_); + } private: - state_type & s_save_; - aspect_type const a_save_; + basic_ios_locale_saver(const basic_ios_locale_saver&); basic_ios_locale_saver& operator=(const basic_ios_locale_saver&); + + state_type& s_save_; + aspect_type a_save_; }; #endif +class ios_iword_saver { +public: + typedef std::ios_base state_type; + typedef int index_type; + typedef long aspect_type; + + explicit ios_iword_saver(state_type& s, index_type i) + : s_save_(s) + , a_save_(s.iword(i)) + , i_save_(i) { } + + ios_iword_saver(state_type& s, index_type i, aspect_type a) + : s_save_(s) + , a_save_(s.iword(i)) + , i_save_(i) { + s.iword(i) = a; + } -// User-defined stream state saver class declarations ----------------------// + ~ios_iword_saver() { + this->restore(); + } -class ios_iword_saver -{ -public: - typedef ::std::ios_base state_type; - typedef int index_type; - typedef long aspect_type; - - explicit ios_iword_saver( state_type &s, index_type i ) - : s_save_( s ), a_save_( s.iword(i) ), i_save_( i ) - {} - ios_iword_saver( state_type &s, index_type i, aspect_type const &a ) - : s_save_( s ), a_save_( s.iword(i) ), i_save_( i ) - { s.iword(i) = a; } - ~ios_iword_saver() - { this->restore(); } - - void restore() - { s_save_.iword( i_save_ ) = a_save_; } + void restore() { + s_save_.iword(i_save_) = a_save_; + } private: - state_type & s_save_; - aspect_type const a_save_; - index_type const i_save_; - + ios_iword_saver(const ios_iword_saver&); ios_iword_saver& operator=(const ios_iword_saver&); + + state_type& s_save_; + aspect_type a_save_; + index_type i_save_; }; -class ios_pword_saver -{ +class ios_pword_saver { public: - typedef ::std::ios_base state_type; - typedef int index_type; - typedef void * aspect_type; - - explicit ios_pword_saver( state_type &s, index_type i ) - : s_save_( s ), a_save_( s.pword(i) ), i_save_( i ) - {} - ios_pword_saver( state_type &s, index_type i, aspect_type const &a ) - : s_save_( s ), a_save_( s.pword(i) ), i_save_( i ) - { s.pword(i) = a; } - ~ios_pword_saver() - { this->restore(); } - - void restore() - { s_save_.pword( i_save_ ) = a_save_; } + typedef std::ios_base state_type; + typedef int index_type; + typedef void* aspect_type; + + explicit ios_pword_saver(state_type& s, index_type i) + : s_save_(s) + , a_save_(s.pword(i)) + , i_save_(i) { } + + ios_pword_saver(state_type& s, index_type i, aspect_type a) + : s_save_(s) + , a_save_(s.pword(i)) + , i_save_(i) { + s.pword(i) = a; + } -private: - state_type & s_save_; - aspect_type const a_save_; - index_type const i_save_; + ~ios_pword_saver() { + this->restore(); + } - ios_pword_saver operator=(const ios_pword_saver&); -}; + void restore() { + s_save_.pword(i_save_) = a_save_; + } +private: + ios_pword_saver(const ios_pword_saver&); + ios_pword_saver operator=(const ios_pword_saver&); -// Combined stream state saver class (template) declarations ---------------// + state_type& s_save_; + aspect_type a_save_; + index_type i_save_; +}; -class ios_base_all_saver -{ +class ios_base_all_saver { public: - typedef ::std::ios_base state_type; + typedef std::ios_base state_type; - explicit ios_base_all_saver( state_type &s ) - : s_save_( s ), a1_save_( s.flags() ), a2_save_( s.precision() ) - , a3_save_( s.width() ) - {} + explicit ios_base_all_saver(state_type& s) + : s_save_(s) + , a1_save_(s.flags()) + , a2_save_(s.precision()) + , a3_save_(s.width()) { } - ~ios_base_all_saver() - { this->restore(); } + ~ios_base_all_saver() { + this->restore(); + } - void restore() - { - s_save_.width( a3_save_ ); - s_save_.precision( a2_save_ ); - s_save_.flags( a1_save_ ); + void restore() { + s_save_.width(a3_save_); + s_save_.precision(a2_save_); + s_save_.flags(a1_save_); } private: - state_type & s_save_; - state_type::fmtflags const a1_save_; - ::std::streamsize const a2_save_; - ::std::streamsize const a3_save_; - + ios_base_all_saver(const ios_base_all_saver&); ios_base_all_saver& operator=(const ios_base_all_saver&); + + state_type& s_save_; + state_type::fmtflags a1_save_; + std::streamsize a2_save_; + std::streamsize a3_save_; }; -template < typename Ch, class Tr > -class basic_ios_all_saver -{ +template +class basic_ios_all_saver { public: - typedef ::std::basic_ios state_type; - - explicit basic_ios_all_saver( state_type &s ) - : s_save_( s ), a1_save_( s.flags() ), a2_save_( s.precision() ) - , a3_save_( s.width() ), a4_save_( s.rdstate() ) - , a5_save_( s.exceptions() ), a6_save_( s.tie() ) - , a7_save_( s.rdbuf() ), a8_save_( s.fill() ) - #ifndef BOOST_NO_STD_LOCALE - , a9_save_( s.getloc() ) - #endif - {} - - ~basic_ios_all_saver() - { this->restore(); } - - void restore() - { - #ifndef BOOST_NO_STD_LOCALE - s_save_.imbue( a9_save_ ); - #endif - s_save_.fill( a8_save_ ); - s_save_.rdbuf( a7_save_ ); - s_save_.tie( a6_save_ ); - s_save_.exceptions( a5_save_ ); - s_save_.clear( a4_save_ ); - s_save_.width( a3_save_ ); - s_save_.precision( a2_save_ ); - s_save_.flags( a1_save_ ); + typedef std::basic_ios state_type; + + explicit basic_ios_all_saver(state_type& s) + : s_save_(s) + , a1_save_(s.flags()) + , a2_save_(s.precision()) + , a3_save_(s.width()) + , a4_save_(s.rdstate()) + , a5_save_(s.exceptions()) + , a6_save_(s.tie()) + , a7_save_(s.rdbuf()) + , a8_save_(s.fill()) +#ifndef BOOST_NO_STD_LOCALE + , a9_save_(s.getloc()) +#endif + { } + + ~basic_ios_all_saver() { + this->restore(); } -private: - state_type & s_save_; - typename state_type::fmtflags const a1_save_; - ::std::streamsize const a2_save_; - ::std::streamsize const a3_save_; - typename state_type::iostate const a4_save_; - typename state_type::iostate const a5_save_; - ::std::basic_ostream * const a6_save_; - ::std::basic_streambuf * const a7_save_; - typename state_type::char_type const a8_save_; - #ifndef BOOST_NO_STD_LOCALE - ::std::locale const a9_save_; - #endif + void restore() { +#ifndef BOOST_NO_STD_LOCALE + s_save_.imbue(a9_save_); +#endif + s_save_.fill(a8_save_); + s_save_.rdbuf(a7_save_); + s_save_.tie(a6_save_); + s_save_.exceptions(a5_save_); + s_save_.clear(a4_save_); + s_save_.width(a3_save_); + s_save_.precision(a2_save_); + s_save_.flags(a1_save_); + } +private: + basic_ios_all_saver(const basic_ios_all_saver&); basic_ios_all_saver& operator=(const basic_ios_all_saver&); + + state_type& s_save_; + typename state_type::fmtflags a1_save_; + std::streamsize a2_save_; + std::streamsize a3_save_; + typename state_type::iostate a4_save_; + typename state_type::iostate a5_save_; + std::basic_ostream* a6_save_; + std::basic_streambuf* a7_save_; + typename state_type::char_type a8_save_; +#ifndef BOOST_NO_STD_LOCALE + std::locale a9_save_; +#endif }; -class ios_all_word_saver -{ +class ios_all_word_saver { public: - typedef ::std::ios_base state_type; - typedef int index_type; + typedef std::ios_base state_type; + typedef int index_type; - ios_all_word_saver( state_type &s, index_type i ) - : s_save_( s ), i_save_( i ), a1_save_( s.iword(i) ) - , a2_save_( s.pword(i) ) - {} + ios_all_word_saver(state_type& s, index_type i) + : s_save_(s) + , i_save_(i) + , a1_save_(s.iword(i)) + , a2_save_(s.pword(i)) { } - ~ios_all_word_saver() - { this->restore(); } + ~ios_all_word_saver() { + this->restore(); + } - void restore() - { - s_save_.pword( i_save_ ) = a2_save_; - s_save_.iword( i_save_ ) = a1_save_; + void restore() { + s_save_.pword(i_save_) = a2_save_; + s_save_.iword(i_save_) = a1_save_; } private: - state_type & s_save_; - index_type const i_save_; - long const a1_save_; - void * const a2_save_; - + ios_all_word_saver(const ios_all_word_saver&); ios_all_word_saver& operator=(const ios_all_word_saver&); -}; - -} // namespace io -} // namespace boost + state_type& s_save_; + index_type i_save_; + long a1_save_; + void* a2_save_; +}; +} /* io */ +} /* boost */ -#endif // BOOST_IO_IOS_STATE_HPP +#endif diff --git a/src/boost/boost/io/quoted.hpp b/src/boost/boost/io/quoted.hpp new file mode 100644 index 000000000..b6ac17814 --- /dev/null +++ b/src/boost/boost/io/quoted.hpp @@ -0,0 +1,217 @@ +/* +Copyright 2010 Beman Dawes + +Copyright 2019-2020 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_IO_QUOTED_HPP +#define BOOST_IO_QUOTED_HPP + +#include +#include +#include + +namespace boost { +namespace io { +namespace detail { + +template +struct quoted_proxy { + String string; + Char escape; + Char delim; +}; + +template +struct quoted_state { + const Char* string; + std::size_t size; + std::size_t count; +}; + +template +inline quoted_state +quoted_start(const Char* string, Char escape, Char delim) +{ + const Char* end = string; + std::size_t count = 2; + for (Char ch; (ch = *end) != 0; ++end) { + count += 1 + (ch == escape || ch == delim); + } + quoted_state state = { string, + static_cast(end - string), count }; + return state; +} + +template +inline quoted_state +quoted_start(const String* string, Char escape, Char delim) +{ + const Char* begin = string->data(); + std::size_t size = string->size(); + std::size_t count = 2; + for (const Char *it = begin, *end = begin + size; it != end; ++it) { + Char ch = *it; + count += 1 + (ch == escape || ch == delim); + } + quoted_state state = { begin, size, count }; + return state; +} + +template +inline bool +quoted_put(std::basic_streambuf& buf, const Char* string, + std::size_t size, std::size_t count, Char escape, Char delim) +{ + if (buf.sputc(delim) == Traits::eof()) { + return false; + } + if (size == count) { + if (static_cast(buf.sputn(string, size)) != size) { + return false; + } + } else { + for (const Char* end = string + size; string != end; ++string) { + Char ch = *string; + if ((ch == escape || ch == delim) && + buf.sputc(escape) == Traits::eof()) { + return false; + } + if (buf.sputc(ch) == Traits::eof()) { + return false; + } + } + } + return buf.sputc(delim) != Traits::eof(); +} + +template +inline std::basic_ostream& +quoted_out(std::basic_ostream& os, String* string, Char escape, + Char delim) +{ + typedef std::basic_ostream stream; + ostream_guard guard(os); + typename stream::sentry entry(os); + if (entry) { + quoted_state state = boost::io::detail::quoted_start(string, + escape, delim); + std::basic_streambuf& buf = *os.rdbuf(); + std::size_t width = static_cast(os.width()); + if (width <= state.count) { + if (!boost::io::detail::quoted_put(buf, state.string, state.size, + state.count, escape, delim)) { + return os; + } + } else if ((os.flags() & stream::adjustfield) == stream::left) { + if (!boost::io::detail::quoted_put(buf, state.string, state.size, + state.count, escape, delim) || + !boost::io::detail::buffer_fill(buf, os.fill(), + width - state.count)) { + return os; + } + } else if (!boost::io::detail::buffer_fill(buf, os.fill(), + width - state.count) || + !boost::io::detail::quoted_put(buf, state.string, state.size, + state.count, escape, delim)) { + return os; + } + os.width(0); + } + guard.release(); + return os; +} + +template +inline std::basic_ostream& +operator<<(std::basic_ostream& os, + const quoted_proxy& proxy) +{ + return boost::io::detail::quoted_out(os, proxy.string, proxy.escape, + proxy.delim); +} + +template +inline std::basic_ostream& +operator<<(std::basic_ostream& os, + const quoted_proxy*, + Char>& proxy) +{ + return boost::io::detail::quoted_out(os, proxy.string, proxy.escape, + proxy.delim); +} + +template +inline std::basic_ostream& +operator<<(std::basic_ostream& os, + const quoted_proxy*, Char>& proxy) +{ + return boost::io::detail::quoted_out(os, proxy.string, proxy.escape, + proxy.delim); +} + +template +inline std::basic_istream& +operator>>(std::basic_istream& is, + const quoted_proxy*, Char>& proxy) +{ + Char ch; + if (!(is >> ch)) { + return is; + } + if (ch != proxy.delim) { + is.unget(); + return is >> *proxy.string; + } + { + boost::io::ios_flags_saver ifs(is); + std::noskipws(is); + proxy.string->clear(); + while ((is >> ch) && ch != proxy.delim) { + if (ch == proxy.escape && !(is >> ch)) { + break; + } + proxy.string->push_back(ch); + } + } + return is; +} + +} /* detail */ + +template +inline detail::quoted_proxy*, + Char> +quoted(const std::basic_string& s, Char escape='\\', + Char delim='\"') +{ + detail::quoted_proxy*, + Char> proxy = { &s, escape, delim }; + return proxy; +} + +template +inline detail::quoted_proxy*, Char> +quoted(std::basic_string& s, Char escape='\\', + Char delim='\"') +{ + detail::quoted_proxy*, + Char> proxy = { &s, escape, delim }; + return proxy; +} + +template +inline detail::quoted_proxy +quoted(const Char* s, Char escape='\\', Char delim='\"') +{ + detail::quoted_proxy proxy = { s, escape, delim }; + return proxy; +} + +} /* io */ +} /* boost */ + +#endif diff --git a/src/boost/boost/io_fwd.hpp b/src/boost/boost/io_fwd.hpp index 0ed46ea10..71b49f7bf 100644 --- a/src/boost/boost/io_fwd.hpp +++ b/src/boost/boost/io_fwd.hpp @@ -1,67 +1,63 @@ -// Boost io_fwd.hpp header file --------------------------------------------// - -// Copyright 2002 Daryle Walker. Use, modification, and distribution are subject -// to the Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or a copy at .) - -// See for the library's home page. +/* +Copyright 2002 Daryle Walker +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ #ifndef BOOST_IO_FWD_HPP #define BOOST_IO_FWD_HPP -#include // for std::char_traits (declaration) - - -namespace boost -{ -namespace io -{ +#include - -// From -------------------------------------------// +namespace boost { +namespace io { class ios_flags_saver; class ios_precision_saver; class ios_width_saver; class ios_base_all_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_iostate_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_exception_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_tie_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_rdbuf_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_fill_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_locale_saver; -template < typename Ch, class Tr = ::std::char_traits > - class basic_ios_all_saver; +template > +class basic_ios_iostate_saver; + +template > +class basic_ios_exception_saver; + +template > +class basic_ios_tie_saver; -typedef basic_ios_iostate_saver ios_iostate_saver; -typedef basic_ios_iostate_saver wios_iostate_saver; -typedef basic_ios_exception_saver ios_exception_saver; -typedef basic_ios_exception_saver wios_exception_saver; -typedef basic_ios_tie_saver ios_tie_saver; -typedef basic_ios_tie_saver wios_tie_saver; -typedef basic_ios_rdbuf_saver ios_rdbuf_saver; -typedef basic_ios_rdbuf_saver wios_rdbuf_saver; -typedef basic_ios_fill_saver ios_fill_saver; -typedef basic_ios_fill_saver wios_fill_saver; -typedef basic_ios_locale_saver ios_locale_saver; -typedef basic_ios_locale_saver wios_locale_saver; -typedef basic_ios_all_saver ios_all_saver; -typedef basic_ios_all_saver wios_all_saver; +template > +class basic_ios_rdbuf_saver; + +template > +class basic_ios_fill_saver; + +template > +class basic_ios_locale_saver; + +template > +class basic_ios_all_saver; + +typedef basic_ios_iostate_saver ios_iostate_saver; +typedef basic_ios_iostate_saver wios_iostate_saver; +typedef basic_ios_exception_saver ios_exception_saver; +typedef basic_ios_exception_saver wios_exception_saver; +typedef basic_ios_tie_saver ios_tie_saver; +typedef basic_ios_tie_saver wios_tie_saver; +typedef basic_ios_rdbuf_saver ios_rdbuf_saver; +typedef basic_ios_rdbuf_saver wios_rdbuf_saver; +typedef basic_ios_fill_saver ios_fill_saver; +typedef basic_ios_fill_saver wios_fill_saver; +typedef basic_ios_locale_saver ios_locale_saver; +typedef basic_ios_locale_saver wios_locale_saver; +typedef basic_ios_all_saver ios_all_saver; +typedef basic_ios_all_saver wios_all_saver; class ios_iword_saver; class ios_pword_saver; class ios_all_word_saver; +} /* io */ +} /* boost */ -} // namespace io -} // namespace boost - - -#endif // BOOST_IO_FWD_HPP +#endif diff --git a/src/boost/boost/iostreams/chain.hpp b/src/boost/boost/iostreams/chain.hpp index 669d982bb..e2b0653f3 100644 --- a/src/boost/boost/iostreams/chain.hpp +++ b/src/boost/boost/iostreams/chain.hpp @@ -498,7 +498,7 @@ class chain_client { void set_chain(chain_type* c) { chain_ = c; chain_->register_client(this); } #if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) && \ - (!BOOST_WORKAROUND(__BORLANDC__, < 0x600)) + (!BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600)) template friend class chain_base; #else diff --git a/src/boost/boost/iostreams/combine.hpp b/src/boost/boost/iostreams/combine.hpp deleted file mode 100644 index cf8aee5f1..000000000 --- a/src/boost/boost/iostreams/combine.hpp +++ /dev/null @@ -1,260 +0,0 @@ -// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) -// (C) Copyright 2003-2007 Jonathan Turkanis -// 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/libs/iostreams for documentation. - -// To do: add support for random-access. - -#ifndef BOOST_IOSTREAMS_COMBINE_HPP_INCLUDED -#define BOOST_IOSTREAMS_COMBINE_HPP_INCLUDED - -#if defined(_MSC_VER) -# pragma once -#endif - -#include // NO_STD_LOCALE, DEDUCED_TYPENAME. -#ifndef BOOST_NO_STD_LOCALE -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -// Must come last. -#include - -namespace boost { namespace iostreams { - -namespace detail { - -// -// Template name: combined_device. -// Description: Model of Device defined in terms of a Source/Sink pair. -// Template parameters: -// Source - A model of Source, with the same char_type and traits_type -// as Sink. -// Sink - A model of Sink, with the same char_type and traits_type -// as Source. -// -template -class combined_device { -private: - typedef typename category_of::type in_category; - typedef typename category_of::type out_category; - typedef typename char_type_of::type sink_char_type; -public: - typedef typename char_type_of::type char_type; - struct category - : bidirectional, - device_tag, - closable_tag, - localizable_tag - { }; - BOOST_STATIC_ASSERT(is_device::value); - BOOST_STATIC_ASSERT(is_device::value); - BOOST_STATIC_ASSERT((is_convertible::value)); - BOOST_STATIC_ASSERT((is_convertible::value)); - BOOST_STATIC_ASSERT((is_same::value)); - combined_device(const Source& src, const Sink& snk); - std::streamsize read(char_type* s, std::streamsize n); - std::streamsize write(const char_type* s, std::streamsize n); - void close(BOOST_IOS::openmode); - #ifndef BOOST_NO_STD_LOCALE - void imbue(const std::locale& loc); - #endif -private: - Source src_; - Sink sink_; -}; - -// -// Template name: combined_filter. -// Description: Model of Device defined in terms of a Source/Sink pair. -// Template parameters: -// InputFilter - A model of InputFilter, with the same char_type as -// OutputFilter. -// OutputFilter - A model of OutputFilter, with the same char_type as -// InputFilter. -// -template -class combined_filter { -private: - typedef typename category_of::type in_category; - typedef typename category_of::type out_category; - typedef typename char_type_of::type output_char_type; -public: - typedef typename char_type_of::type char_type; - struct category - : multichar_bidirectional_filter_tag, - closable_tag, - localizable_tag - { }; - BOOST_STATIC_ASSERT(is_filter::value); - BOOST_STATIC_ASSERT(is_filter::value); - BOOST_STATIC_ASSERT((is_convertible::value)); - BOOST_STATIC_ASSERT((is_convertible::value)); - BOOST_STATIC_ASSERT((is_same::value)); - combined_filter(const InputFilter& in, const OutputFilter& out); - - template - std::streamsize read(Source& src, char_type* s, std::streamsize n) - { return boost::iostreams::read(in_, src, s, n); } - - template - std::streamsize write(Sink& snk, const char_type* s, std::streamsize n) - { return boost::iostreams::write(out_, snk, s, n); } - - template - void close(Sink& snk, BOOST_IOS::openmode which) - { - if (which == BOOST_IOS::in) { - if (is_convertible::value) { - iostreams::close(in_, snk, BOOST_IOS::in); - } else { - detail::close_all(in_, snk); - } - } - if (which == BOOST_IOS::out) { - if (is_convertible::value) { - iostreams::close(out_, snk, BOOST_IOS::out); - } else { - detail::close_all(out_, snk); - } - } - } - #ifndef BOOST_NO_STD_LOCALE - void imbue(const std::locale& loc); - #endif -private: - InputFilter in_; - OutputFilter out_; -}; - -template -struct combination_traits - : mpl::if_< - is_device, - combined_device< - typename wrapped_type::type, - typename wrapped_type::type - >, - combined_filter< - typename wrapped_type::type, - typename wrapped_type::type - > - > - { }; - -} // End namespace detail. - -template -struct combination : detail::combination_traits::type { - typedef typename detail::combination_traits::type base_type; - typedef typename detail::wrapped_type::type in_type; - typedef typename detail::wrapped_type::type out_type; - combination(const in_type& in, const out_type& out) - : base_type(in, out) { } -}; - -namespace detail { - -// Workaround for VC6 ETI bug. -template -struct combine_traits { - typedef combination< - BOOST_DEDUCED_TYPENAME detail::unwrapped_type::type, - BOOST_DEDUCED_TYPENAME detail::unwrapped_type::type - > type; -}; - -} // End namespace detail. - -// -// Template name: combine. -// Description: Takes a Source/Sink pair or InputFilter/OutputFilter pair and -// returns a Source or Filter which performs input using the first member -// of the pair and output using the second member of the pair. -// Template parameters: -// In - A model of Source or InputFilter, with the same char_type as Out. -// Out - A model of Sink or OutputFilter, with the same char_type as In. -// -template -typename detail::combine_traits::type -combine(const In& in, const Out& out) -{ - typedef typename detail::combine_traits::type return_type; - return return_type(in, out); -} - -//----------------------------------------------------------------------------// - -namespace detail { - -//--------------Implementation of combined_device-----------------------------// - -template -inline combined_device::combined_device - (const Source& src, const Sink& snk) - : src_(src), sink_(snk) { } - -template -inline std::streamsize -combined_device::read(char_type* s, std::streamsize n) -{ return iostreams::read(src_, s, n); } - -template -inline std::streamsize -combined_device::write(const char_type* s, std::streamsize n) -{ return iostreams::write(sink_, s, n); } - -template -inline void -combined_device::close(BOOST_IOS::openmode which) -{ - if (which == BOOST_IOS::in) - detail::close_all(src_); - if (which == BOOST_IOS::out) - detail::close_all(sink_); -} - -#ifndef BOOST_NO_STD_LOCALE - template - void combined_device::imbue(const std::locale& loc) - { - iostreams::imbue(src_, loc); - iostreams::imbue(sink_, loc); - } -#endif - -//--------------Implementation of filter_pair---------------------------------// - -template -inline combined_filter::combined_filter - (const InputFilter& in, const OutputFilter& out) : in_(in), out_(out) - { } - -#ifndef BOOST_NO_STD_LOCALE - template - void combined_filter::imbue - (const std::locale& loc) - { - iostreams::imbue(in_, loc); - iostreams::imbue(out_, loc); - } -#endif - - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#include - -#endif // #ifndef BOOST_IOSTREAMS_COMBINE_HPP_INCLUDED diff --git a/src/boost/boost/iostreams/detail/adapter/concept_adapter.hpp b/src/boost/boost/iostreams/detail/adapter/concept_adapter.hpp index 6850dab3f..7fc2aeb74 100644 --- a/src/boost/boost/iostreams/detail/adapter/concept_adapter.hpp +++ b/src/boost/boost/iostreams/detail/adapter/concept_adapter.hpp @@ -117,8 +117,8 @@ class concept_adapter { std::streamsize optimal_buffer_size() const { return iostreams::optimal_buffer_size(t_); } -public: - concept_adapter& operator=(const concept_adapter&); +private: + BOOST_DELETED_FUNCTION(concept_adapter& operator=(const concept_adapter&)) value_type t_; }; diff --git a/src/boost/boost/iostreams/detail/adapter/device_adapter.hpp b/src/boost/boost/iostreams/detail/adapter/device_adapter.hpp deleted file mode 100644 index 6e9dffe6e..000000000 --- a/src/boost/boost/iostreams/detail/adapter/device_adapter.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Defines the class template boost::iostreams::detail::device_adapter, - * a convenience base class for device adapters. - * - * File: boost/iostreams/detail/adapter/filter_adapter.hpp - * Date: Mon Nov 26 14:35:48 MST 2007 - * - * Copyright: 2007-2008 CodeRage, LLC - * Author: Jonathan Turkanis - * Contact: turkanis at coderage dot 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.) - * - * See http://www.boost.org/libs/iostreams for documentation. - */ - -#ifndef BOOST_IOSTREAMS_DETAIL_DEVICE_ADAPTER_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_DEVICE_ADAPTER_HPP_INCLUDED - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace iostreams { namespace detail { - -template -class device_adapter { -private: - typedef typename detail::value_type::type value_type; - typedef typename detail::param_type::type param_type; -public: - explicit device_adapter(param_type t) : t_(t) { } - T& component() { return t_; } - - void close() - { - detail::close_all(t_); - } - - void close(BOOST_IOS::openmode which) - { - iostreams::close(t_, which); - } - - bool flush() - { - return iostreams::flush(t_); - } - - template // Avoid dependency on - void imbue(const Locale& loc) { iostreams::imbue(t_, loc); } - - std::streamsize optimal_buffer_size() const - { return iostreams::optimal_buffer_size(t_); } -public: - value_type t_; -}; - -//----------------------------------------------------------------------------// - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_DEVICE_ADAPTER_HPP_INCLUDED diff --git a/src/boost/boost/iostreams/detail/adapter/filter_adapter.hpp b/src/boost/boost/iostreams/detail/adapter/filter_adapter.hpp deleted file mode 100644 index 1fea16af0..000000000 --- a/src/boost/boost/iostreams/detail/adapter/filter_adapter.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Defines the class template boost::iostreams::detail::filter_adapter, - * a convenience base class for filter adapters. - * - * File: boost/iostreams/detail/adapter/filter_adapter.hpp - * Date: Mon Nov 26 14:35:48 MST 2007 - * Copyright: 2007-2008 CodeRage, LLC - * Author: Jonathan Turkanis - * Contact: turkanis at coderage dot 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.) - * - * See http://www.boost.org/libs/iostreams for documentation. - */ - -#ifndef BOOST_IOSTREAMS_DETAIL_FILTER_ADAPTER_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_FILTER_ADAPTER_HPP_INCLUDED - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace iostreams { namespace detail { - -template -class filter_adapter { -private: - typedef typename detail::value_type::type value_type; - typedef typename detail::param_type::type param_type; -public: - explicit filter_adapter(param_type t) : t_(t) { } - T& component() { return t_; } - - template - void close(Device& dev) - { - detail::close_all(t_, dev); - } - - template - void close(Device& dev, BOOST_IOS::openmode which) - { - iostreams::close(t_, dev, which); - } - - template - void flush(Device& dev) - { - return iostreams::flush(t_, dev); - } - - template // Avoid dependency on - void imbue(const Locale& loc) { iostreams::imbue(t_, loc); } - - std::streamsize optimal_buffer_size() const - { return iostreams::optimal_buffer_size(t_); } -public: - value_type t_; -}; - -//----------------------------------------------------------------------------// - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_FILTER_ADAPTER_HPP_INCLUDED diff --git a/src/boost/boost/iostreams/detail/adapter/range_adapter.hpp b/src/boost/boost/iostreams/detail/adapter/range_adapter.hpp index 0860c1862..c4ff4f5ac 100644 --- a/src/boost/boost/iostreams/detail/adapter/range_adapter.hpp +++ b/src/boost/boost/iostreams/detail/adapter/range_adapter.hpp @@ -10,20 +10,20 @@ #if defined(_MSC_VER) # pragma once -#endif +#endif #include // min. #include #include // ptrdiff_t. #include // streamsize, streamoff. -#include // boost::iterator_traits. +#include // iterator_traits. #include #include #include #include #include #include -#include +#include // Must come last. #include // MSVC. @@ -44,7 +44,7 @@ template class range_adapter { private: typedef typename Range::iterator iterator; - typedef boost::detail::iterator_traits iter_traits; + typedef std::iterator_traits iter_traits; typedef typename iter_traits::iterator_category iter_cat; public: typedef typename Range::value_type char_type; diff --git a/src/boost/boost/iostreams/detail/bool_trait_def.hpp b/src/boost/boost/iostreams/detail/bool_trait_def.hpp index a120a1952..d108ffa97 100644 --- a/src/boost/boost/iostreams/detail/bool_trait_def.hpp +++ b/src/boost/boost/iostreams/detail/bool_trait_def.hpp @@ -21,7 +21,7 @@ // Description: Used to generate the traits classes is_istream, is_ostream, // etc. // -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x582)) # define BOOST_IOSTREAMS_TRAIT_NAMESPACE(trait) #else # define BOOST_IOSTREAMS_TRAIT_NAMESPACE(trait) BOOST_PP_CAT(trait, _impl_):: diff --git a/src/boost/boost/iostreams/detail/config/auto_link.hpp b/src/boost/boost/iostreams/detail/config/auto_link.hpp index 1a1a9d7de..bffba1d19 100644 --- a/src/boost/boost/iostreams/detail/config/auto_link.hpp +++ b/src/boost/boost/iostreams/detail/config/auto_link.hpp @@ -17,7 +17,7 @@ #if defined(BOOST_EXTERNAL_LIB_NAME) # if defined(BOOST_MSVC) \ - || defined(__BORLANDC__) \ + || defined(__BORLANDC__) && !defined(__clang__) \ || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \ || (defined(__ICL) && defined(_MSC_EXTENSIONS)) \ /**/ diff --git a/src/boost/boost/iostreams/detail/config/bzip2.hpp b/src/boost/boost/iostreams/detail/config/bzip2.hpp index 287b8b295..9f0097523 100644 --- a/src/boost/boost/iostreams/detail/config/bzip2.hpp +++ b/src/boost/boost/iostreams/detail/config/bzip2.hpp @@ -15,9 +15,11 @@ # pragma once #endif +#include // BOOST_STRINGIZE. + #if defined(BOOST_BZIP2_BINARY) # if defined(BOOST_MSVC) || \ - defined(__BORLANDC__) || \ + defined(BOOST_BORLANDC) || \ (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) || \ (defined(__ICL) && defined(_MSC_EXTENSIONS)) \ /**/ diff --git a/src/boost/boost/iostreams/detail/config/codecvt.hpp b/src/boost/boost/iostreams/detail/config/codecvt.hpp index 845b018a7..d9f948782 100644 --- a/src/boost/boost/iostreams/detail/config/codecvt.hpp +++ b/src/boost/boost/iostreams/detail/config/codecvt.hpp @@ -68,7 +68,7 @@ namespace std { #if defined(__LIBCOMO__) using ::mbstate_t; -#elif defined(BOOST_DINKUMWARE_STDLIB) && !defined(__BORLANDC__) +#elif defined(BOOST_DINKUMWARE_STDLIB) && !defined(BOOST_BORLANDC) using ::mbstate_t; #elif defined(__SGI_STL_PORT) #elif defined(BOOST_NO_STDC_NAMESPACE) diff --git a/src/boost/boost/iostreams/detail/config/disable_warnings.hpp b/src/boost/boost/iostreams/detail/config/disable_warnings.hpp index 228b5e946..041ab486d 100644 --- a/src/boost/boost/iostreams/detail/config/disable_warnings.hpp +++ b/src/boost/boost/iostreams/detail/config/disable_warnings.hpp @@ -20,7 +20,7 @@ # pragma warning(disable:6334) // sizeof applied to an expression with an operator. # endif #else -# if BOOST_WORKAROUND(__BORLANDC__, < 0x600) +# if BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) # pragma warn -8008 // Condition always true/false. # pragma warn -8066 // Unreachable code. # pragma warn -8071 // Conversion may lose significant digits. diff --git a/src/boost/boost/iostreams/detail/config/enable_warnings.hpp b/src/boost/boost/iostreams/detail/config/enable_warnings.hpp index 3e039dfe4..327d0e53a 100644 --- a/src/boost/boost/iostreams/detail/config/enable_warnings.hpp +++ b/src/boost/boost/iostreams/detail/config/enable_warnings.hpp @@ -8,7 +8,7 @@ #if defined(BOOST_MSVC) # pragma warning(pop) #else -# if BOOST_WORKAROUND(__BORLANDC__, < 0x600) +# if BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) # pragma warn .8008 // Condition always true/false. # pragma warn .8066 // Unreachable code. # pragma warn .8071 // Conversion may lose significant digits. diff --git a/src/boost/boost/iostreams/detail/config/fpos.hpp b/src/boost/boost/iostreams/detail/config/fpos.hpp index 03ca2af6d..3134e6ef9 100644 --- a/src/boost/boost/iostreams/detail/config/fpos.hpp +++ b/src/boost/boost/iostreams/detail/config/fpos.hpp @@ -26,7 +26,8 @@ # if (defined(_YVALS) || defined(_CPPLIB_VER)) && !defined(__SGI_STL_PORT) && \ !defined(_STLPORT_VERSION) && !defined(__QNX__) && !defined(_VX_CPU) && !defined(__VXWORKS__) \ - && !(defined(BOOST_MSVC) && _MSVC_STL_VERSION >= 141) + && !((defined(BOOST_MSVC) || defined(BOOST_CLANG)) && _MSVC_STL_VERSION >= 141) \ + && !defined(_LIBCPP_VERSION) /**/ #include diff --git a/src/boost/boost/iostreams/detail/config/overload_resolution.hpp b/src/boost/boost/iostreams/detail/config/overload_resolution.hpp index ecbad8136..0364ef415 100644 --- a/src/boost/boost/iostreams/detail/config/overload_resolution.hpp +++ b/src/boost/boost/iostreams/detail/config/overload_resolution.hpp @@ -21,7 +21,7 @@ #if !defined(BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION) # if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) || \ - BOOST_WORKAROUND(__BORLANDC__, < 0x600) \ + BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) \ /**/ # define BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION # endif diff --git a/src/boost/boost/iostreams/detail/config/rtl.hpp b/src/boost/boost/iostreams/detail/config/rtl.hpp index f60f0ae08..ae085f3ca 100644 --- a/src/boost/boost/iostreams/detail/config/rtl.hpp +++ b/src/boost/boost/iostreams/detail/config/rtl.hpp @@ -23,7 +23,7 @@ #include // Handle open, close, read, and write -#ifdef __BORLANDC__ +#ifdef BOOST_BORLANDC # define BOOST_IOSTREAMS_RTL(x) BOOST_JOIN(_rtl_, x) #elif defined BOOST_IOSTREAMS_WINDOWS # define BOOST_IOSTREAMS_RTL(x) BOOST_JOIN(_, x) diff --git a/src/boost/boost/iostreams/detail/config/zlib.hpp b/src/boost/boost/iostreams/detail/config/zlib.hpp index 0ab0b7c20..a36df68f0 100644 --- a/src/boost/boost/iostreams/detail/config/zlib.hpp +++ b/src/boost/boost/iostreams/detail/config/zlib.hpp @@ -19,7 +19,7 @@ #if defined(BOOST_ZLIB_BINARY) # if defined(BOOST_MSVC) || \ - defined(__BORLANDC__) || \ + defined(BOOST_BORLANDC) || \ (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) || \ (defined(__ICL) && defined(_MSC_EXTENSIONS)) \ /**/ diff --git a/src/boost/boost/iostreams/detail/enable_if_stream.hpp b/src/boost/boost/iostreams/detail/enable_if_stream.hpp index edfa3cd25..895bc8d5d 100644 --- a/src/boost/boost/iostreams/detail/enable_if_stream.hpp +++ b/src/boost/boost/iostreams/detail/enable_if_stream.hpp @@ -13,11 +13,12 @@ #endif #include // BOOST_NO_SFINAE. +#include #include #include // is_std_io. #if !defined(BOOST_NO_SFINAE) && \ - !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) + !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x592)) # define BOOST_IOSTREAMS_ENABLE_IF_STREAM(T) \ , typename boost::enable_if< boost::iostreams::is_std_io >::type* = 0 \ /**/ diff --git a/src/boost/boost/iostreams/detail/execute.hpp b/src/boost/boost/iostreams/detail/execute.hpp index e3e09c2b7..b4cb92e86 100644 --- a/src/boost/boost/iostreams/detail/execute.hpp +++ b/src/boost/boost/iostreams/detail/execute.hpp @@ -67,7 +67,7 @@ struct execute_traits_impl { template< typename Op, typename Result = // VC6.5 workaround. #if !defined(BOOST_NO_RESULT_OF) && \ - !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) + !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x592)) typename boost::result_of::type #else BOOST_DEDUCED_TYPENAME Op::result_type diff --git a/src/boost/boost/iostreams/detail/forward.hpp b/src/boost/boost/iostreams/detail/forward.hpp index c10ad8cd2..325b9bf7c 100644 --- a/src/boost/boost/iostreams/detail/forward.hpp +++ b/src/boost/boost/iostreams/detail/forward.hpp @@ -102,7 +102,7 @@ // Disable forwarding constructors if first parameter type is the same // as the device type #if !defined(BOOST_NO_SFINAE) && \ - !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) + !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x592)) # define BOOST_IOSTREAMS_DISABLE_IF_SAME(device, param) \ , typename boost::disable_if< boost::is_same >::type* = 0 \ /**/ diff --git a/src/boost/boost/iostreams/detail/fstream.hpp b/src/boost/boost/iostreams/detail/fstream.hpp deleted file mode 100644 index 11b521dd3..000000000 --- a/src/boost/boost/iostreams/detail/fstream.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) -// (C) Copyright 2003-2007 Jonathan Turkanis -// 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/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_FSTREAM_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_FSTREAM_HPP_INCLUDED - -#if defined(_MSC_VER) -# pragma once -#endif - -#include -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# include -#else -# include -#endif - -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# define BOOST_IOSTREAMS_BASIC_IFSTREAM(Ch, Tr) std::basic_ifstream -# define BOOST_IOSTREAMS_BASIC_OFSTREAM(Ch, Tr) std::basic_ofstream -# define BOOST_IOSTREAMS_BASIC_FSTREAM(Ch, Tr) std::basic_fstream -# define BOOST_IOSTREAMS_BASIC_FILEBUF(Ch) std::basic_filebuf -#else -# define BOOST_IOSTREAMS_BASIC_IFSTREAM(Ch, Tr) std::ifstream -# define BOOST_IOSTREAMS_BASIC_OFSTREAM(Ch, Tr) std::ofstream -# define BOOST_IOSTREAMS_BASIC_FILEBUF(Ch) std::filebuf -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_FSTREAM_HPP_INCLUDED diff --git a/src/boost/boost/iostreams/detail/functional.hpp b/src/boost/boost/iostreams/detail/functional.hpp index 73803072e..4afd59f90 100644 --- a/src/boost/boost/iostreams/detail/functional.hpp +++ b/src/boost/boost/iostreams/detail/functional.hpp @@ -38,7 +38,7 @@ class device_close_operation { { } void operator()() const { boost::iostreams::close(t_, which_); } private: - device_close_operation& operator=(const device_close_operation&); + BOOST_DELETED_FUNCTION(device_close_operation& operator=(const device_close_operation&)) T& t_; BOOST_IOS::openmode which_; }; @@ -52,7 +52,7 @@ class filter_close_operation { { } void operator()() const { boost::iostreams::close(t_, snk_, which_); } private: - filter_close_operation& operator=(const filter_close_operation&); + BOOST_DELETED_FUNCTION(filter_close_operation& operator=(const filter_close_operation&)) T& t_; Sink& snk_; BOOST_IOS::openmode which_; @@ -78,7 +78,7 @@ class device_close_all_operation { device_close_all_operation(T& t) : t_(t) { } void operator()() const { detail::close_all(t_); } private: - device_close_all_operation& operator=(const device_close_all_operation&); + BOOST_DELETED_FUNCTION(device_close_all_operation& operator=(const device_close_all_operation&)) T& t_; }; @@ -89,7 +89,7 @@ class filter_close_all_operation { filter_close_all_operation(T& t, Sink& snk) : t_(t), snk_(snk) { } void operator()() const { detail::close_all(t_, snk_); } private: - filter_close_all_operation& operator=(const filter_close_all_operation&); + BOOST_DELETED_FUNCTION(filter_close_all_operation& operator=(const filter_close_all_operation&)) T& t_; Sink& snk_; }; @@ -115,7 +115,7 @@ class member_close_operation { { } void operator()() const { t_.close(which_); } private: - member_close_operation& operator=(const member_close_operation&); + BOOST_DELETED_FUNCTION(member_close_operation& operator=(const member_close_operation&)) T& t_; BOOST_IOS::openmode which_; }; @@ -133,7 +133,7 @@ class reset_operation { reset_operation(T& t) : t_(t) { } void operator()() const { t_.reset(); } private: - reset_operation& operator=(const reset_operation&); + BOOST_DELETED_FUNCTION(reset_operation& operator=(const reset_operation&)) T& t_; }; @@ -149,7 +149,7 @@ class clear_flags_operation { clear_flags_operation(T& t) : t_(t) { } void operator()() const { t_ = 0; } private: - clear_flags_operation& operator=(const clear_flags_operation&); + BOOST_DELETED_FUNCTION(clear_flags_operation& operator=(const clear_flags_operation&)) T& t_; }; @@ -173,7 +173,7 @@ class flush_buffer_operation { buf_.flush(dev_); } private: - flush_buffer_operation& operator=(const flush_buffer_operation&); + BOOST_DELETED_FUNCTION(flush_buffer_operation& operator=(const flush_buffer_operation&)) Buffer& buf_; Device& dev_; bool flush_; diff --git a/src/boost/boost/iostreams/detail/ios.hpp b/src/boost/boost/iostreams/detail/ios.hpp index 4455f56af..e962b3c33 100644 --- a/src/boost/boost/iostreams/detail/ios.hpp +++ b/src/boost/boost/iostreams/detail/ios.hpp @@ -32,7 +32,7 @@ namespace boost { namespace iostreams { namespace detail { #ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //--------------------------------// # define BOOST_IOSTREAMS_BASIC_IOS(ch, tr) std::basic_ios< ch, tr > # if !BOOST_WORKAROUND(__MWERKS__, <= 0x3003) && \ - !BOOST_WORKAROUND(__BORLANDC__, < 0x600) \ + !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) \ /**/ #define BOOST_IOS std::ios diff --git a/src/boost/boost/iostreams/detail/optional.hpp b/src/boost/boost/iostreams/detail/optional.hpp index c68c4c927..0817d58ad 100644 --- a/src/boost/boost/iostreams/detail/optional.hpp +++ b/src/boost/boost/iostreams/detail/optional.hpp @@ -83,7 +83,7 @@ class optional { void reset() { if (initialized_) { - #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) || \ + #if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) || \ BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \ /**/ T* t = static_cast(address()); diff --git a/src/boost/boost/iostreams/detail/push.hpp b/src/boost/boost/iostreams/detail/push.hpp index 7feeb0abc..568fdff34 100644 --- a/src/boost/boost/iostreams/detail/push.hpp +++ b/src/boost/boost/iostreams/detail/push.hpp @@ -53,7 +53,7 @@ BOOST_IOSTREAMS_PUSH_ARGS() ); \ /**/ -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) \ +#if !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) \ /**/ # ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES # define BOOST_IOSTREAMS_DEFINE_PUSH_IMPL(name, mode, ch, helper, has_return, result) \ diff --git a/src/boost/boost/iostreams/detail/resolve.hpp b/src/boost/boost/iostreams/detail/resolve.hpp index 4dc043d72..b13e8c949 100644 --- a/src/boost/boost/iostreams/detail/resolve.hpp +++ b/src/boost/boost/iostreams/detail/resolve.hpp @@ -167,7 +167,7 @@ struct resolve_traits { is_array, array_adapter, else_, - #if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) + #if !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) const T& #else T @@ -196,7 +196,7 @@ typename resolve_traits::type resolve(const T& t BOOST_IOSTREAMS_DISABLE_IF_STREAM(T)) { return resolve(t, is_std_io()); } -# if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && \ +# if !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) && \ !defined(__GNUC__) // ---------------------------------------------------// template diff --git a/src/boost/boost/iostreams/detail/streambuf/indirect_streambuf.hpp b/src/boost/boost/iostreams/detail/streambuf/indirect_streambuf.hpp index 9144e4da7..8d15554ea 100644 --- a/src/boost/boost/iostreams/detail/streambuf/indirect_streambuf.hpp +++ b/src/boost/boost/iostreams/detail/streambuf/indirect_streambuf.hpp @@ -390,11 +390,18 @@ inline void indirect_streambuf::close_impl sync(); setp(0, 0); } + #if defined(BOOST_MSVC) + #pragma warning(push) + #pragma warning(disable: 4127) // conditional expression is constant + #endif if ( !is_convertible::value || is_convertible::value == (which == BOOST_IOS::in) ) { obj().close(which, next_); } + #if defined(BOOST_MSVC) + #pragma warning(pop) + #endif } //----------State changing functions------------------------------------------// diff --git a/src/boost/boost/iostreams/device/file.hpp b/src/boost/boost/iostreams/device/file.hpp deleted file mode 100644 index 76d565d79..000000000 --- a/src/boost/boost/iostreams/device/file.hpp +++ /dev/null @@ -1,191 +0,0 @@ -// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) -// (C) Copyright 2003-2007 Jonathan Turkanis -// 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/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_FILE_HPP_INCLUDED -#define BOOST_IOSTREAMS_FILE_HPP_INCLUDED - -#if defined(_MSC_VER) -# pragma once -#endif - -#include -#ifndef BOOST_IOSTREAMS_NO_LOCALE -# include -#endif -#include // pathnames, char_traits. -#include -#include // openmode, seekdir, int types. -#include -#include // seek. -#include - -// Must come last. -#include // MSVC. - -namespace boost { namespace iostreams { - -template -class basic_file { -public: - typedef Ch char_type; - struct category - : public seekable_device_tag, - public closable_tag, - public localizable_tag, - public flushable_tag - { }; - basic_file( const std::string& path, - BOOST_IOS::openmode mode = - BOOST_IOS::in | BOOST_IOS::out, - BOOST_IOS::openmode base_mode = - BOOST_IOS::in | BOOST_IOS::out ); - std::streamsize read(char_type* s, std::streamsize n); - bool putback(char_type c); - std::streamsize write(const char_type* s, std::streamsize n); - std::streampos seek( stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which = - BOOST_IOS::in | BOOST_IOS::out ); - void open( const std::string& path, - BOOST_IOS::openmode mode = - BOOST_IOS::in | BOOST_IOS::out, - BOOST_IOS::openmode base_mode = - BOOST_IOS::in | BOOST_IOS::out ); - bool is_open() const; - void close(); - bool flush(); -#ifndef BOOST_IOSTREAMS_NO_LOCALE - void imbue(const std::locale& loc) { pimpl_->file_.pubimbue(loc); } -#endif -private: - struct impl { - impl(const std::string& path, BOOST_IOS::openmode mode) - { file_.open(path.c_str(), mode); } - ~impl() { if (file_.is_open()) file_.close(); } - BOOST_IOSTREAMS_BASIC_FILEBUF(Ch) file_; - }; - shared_ptr pimpl_; -}; - -typedef basic_file file; -typedef basic_file wfile; - -template -struct basic_file_source : private basic_file { - typedef Ch char_type; - struct category - : input_seekable, - device_tag, - closable_tag - { }; - using basic_file::read; - using basic_file::putback; - using basic_file::seek; - using basic_file::is_open; - using basic_file::close; - basic_file_source( const std::string& path, - BOOST_IOS::openmode mode = - BOOST_IOS::in ) - : basic_file(path, mode & ~BOOST_IOS::out, BOOST_IOS::in) - { } - void open( const std::string& path, - BOOST_IOS::openmode mode = BOOST_IOS::in ) - { - basic_file::open(path, mode & ~BOOST_IOS::out, BOOST_IOS::in); - } -}; - -typedef basic_file_source file_source; -typedef basic_file_source wfile_source; - -template -struct basic_file_sink : private basic_file { - typedef Ch char_type; - struct category - : output_seekable, - device_tag, - closable_tag, - flushable_tag - { }; - using basic_file::write; - using basic_file::seek; - using basic_file::is_open; - using basic_file::close; - using basic_file::flush; - basic_file_sink( const std::string& path, - BOOST_IOS::openmode mode = BOOST_IOS::out ) - : basic_file(path, mode & ~BOOST_IOS::in, BOOST_IOS::out) - { } - void open( const std::string& path, - BOOST_IOS::openmode mode = BOOST_IOS::out ) - { - basic_file::open(path, mode & ~BOOST_IOS::in, BOOST_IOS::out); - } -}; - -typedef basic_file_sink file_sink; -typedef basic_file_sink wfile_sink; - -//------------------Implementation of basic_file------------------------------// - -template -basic_file::basic_file - ( const std::string& path, BOOST_IOS::openmode mode, - BOOST_IOS::openmode base_mode ) -{ - open(path, mode, base_mode); -} - -template -inline std::streamsize basic_file::read - (char_type* s, std::streamsize n) -{ - std::streamsize result = pimpl_->file_.sgetn(s, n); - return result != 0 ? result : -1; -} - -template -inline bool basic_file::putback(char_type c) -{ - return !!pimpl_->file_.sputbackc(c); -} - -template -inline std::streamsize basic_file::write - (const char_type* s, std::streamsize n) -{ return pimpl_->file_.sputn(s, n); } - -template -std::streampos basic_file::seek - ( stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode ) -{ return iostreams::seek(pimpl_->file_, off, way); } - -template -void basic_file::open - ( const std::string& path, BOOST_IOS::openmode mode, - BOOST_IOS::openmode base_mode ) -{ - pimpl_.reset(new impl(path, mode | base_mode)); -} - -template -bool basic_file::is_open() const { return pimpl_->file_.is_open(); } - -template -void basic_file::close() { pimpl_->file_.close(); } - -template -bool basic_file::flush() -{ return pimpl_->file_.BOOST_IOSTREAMS_PUBSYNC() == 0; } - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#include // MSVC - -#endif // #ifndef BOOST_IOSTREAMS_FILE_HPP_INCLUDED diff --git a/src/boost/boost/iostreams/filter/bzip2.hpp b/src/boost/boost/iostreams/filter/bzip2.hpp index dd95c6c40..37037d2c1 100644 --- a/src/boost/boost/iostreams/filter/bzip2.hpp +++ b/src/boost/boost/iostreams/filter/bzip2.hpp @@ -195,7 +195,7 @@ class BOOST_IOSTREAMS_DECL bzip2_base { template > class bzip2_compressor_impl : public bzip2_base, - #if BOOST_WORKAROUND(__BORLANDC__, < 0x600) + #if BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) public #endif bzip2_allocator @@ -219,7 +219,7 @@ class bzip2_compressor_impl template > class bzip2_decompressor_impl : public bzip2_base, - #if BOOST_WORKAROUND(__BORLANDC__, < 0x600) + #if BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) public #endif bzip2_allocator @@ -365,22 +365,24 @@ bool bzip2_decompressor_impl::filter ( const char*& src_begin, const char* src_end, char*& dest_begin, char* dest_end, bool flush ) { - if (eof_) { - // reset the stream if there are more characters - if(src_begin == src_end) - return false; - else - close(); - } - if (!ready()) - init(); - before(src_begin, src_end, dest_begin, dest_end); - int result = decompress(); - if(result == bzip2::ok && flush) - result = check_end(src_begin, dest_begin); - after(src_begin, dest_begin); - bzip2_error::check BOOST_PREVENT_MACRO_SUBSTITUTION(result); - eof_ = result == bzip2::stream_end; + do { + if (eof_) { + // reset the stream if there are more characters + if(src_begin == src_end) + return false; + else + close(); + } + if (!ready()) + init(); + before(src_begin, src_end, dest_begin, dest_end); + int result = decompress(); + if(result == bzip2::ok && flush) + result = check_end(src_begin, dest_begin); + after(src_begin, dest_begin); + bzip2_error::check BOOST_PREVENT_MACRO_SUBSTITUTION(result); + eof_ = result == bzip2::stream_end; + } while (eof_ && src_begin != src_end && dest_begin != dest_end); return true; } diff --git a/src/boost/boost/iostreams/filter/gzip.hpp b/src/boost/boost/iostreams/filter/gzip.hpp index f72784e0a..68131e04b 100644 --- a/src/boost/boost/iostreams/filter/gzip.hpp +++ b/src/boost/boost/iostreams/filter/gzip.hpp @@ -138,15 +138,15 @@ const int os_unknown = 255; struct gzip_params : zlib_params { // Non-explicit constructor. - gzip_params( int level = gzip::default_compression, - int method = gzip::deflated, - int window_bits = gzip::default_window_bits, - int mem_level = gzip::default_mem_level, - int strategy = gzip::default_strategy, + gzip_params( int level_ = gzip::default_compression, + int method_ = gzip::deflated, + int window_bits_ = gzip::default_window_bits, + int mem_level_ = gzip::default_mem_level, + int strategy_ = gzip::default_strategy, std::string file_name_ = "", std::string comment_ = "", std::time_t mtime_ = 0 ) - : zlib_params(level, method, window_bits, mem_level, strategy), + : zlib_params(level_, method_, window_bits_, mem_level_, strategy_), file_name(file_name_), comment(comment_), mtime(mtime_) { } std::string file_name; diff --git a/src/boost/boost/iostreams/filter/lzma.hpp b/src/boost/boost/iostreams/filter/lzma.hpp index 1c893eeda..096e1bad6 100644 --- a/src/boost/boost/iostreams/filter/lzma.hpp +++ b/src/boost/boost/iostreams/filter/lzma.hpp @@ -87,10 +87,12 @@ const int null = 0; struct lzma_params { // Non-explicit constructor. - lzma_params( uint32_t level = lzma::default_compression ) + lzma_params( uint32_t level = lzma::default_compression, uint32_t threads = 1 ) : level(level) + , threads(threads) { } uint32_t level; + uint32_t threads; }; // @@ -170,8 +172,10 @@ class BOOST_IOSTREAMS_DECL lzma_base { lzma::alloc_func, lzma::free_func, void* derived ); - void* stream_; // Actual type: lzmadec_stream*. - uint32_t level; + void init_stream(bool compress); + void* stream_; // Actual type: lzma_stream*. + uint32_t level_; + uint32_t threads_; }; // @@ -182,7 +186,7 @@ class BOOST_IOSTREAMS_DECL lzma_base { template > class lzma_compressor_impl : public lzma_base, public lzma_allocator { public: - lzma_compressor_impl(const lzma_params& = lzma::default_compression); + lzma_compressor_impl(const lzma_params& = lzma_params()); ~lzma_compressor_impl(); bool filter( const char*& src_begin, const char* src_end, char*& dest_begin, char* dest_end, bool flush ); @@ -222,7 +226,7 @@ struct basic_lzma_compressor public: typedef typename base_type::char_type char_type; typedef typename base_type::category category; - basic_lzma_compressor( const lzma_params& = lzma::default_compression, + basic_lzma_compressor( const lzma_params& = lzma_params(), std::streamsize buffer_size = default_device_buffer_size ); }; BOOST_IOSTREAMS_PIPABLE(basic_lzma_compressor, 1) diff --git a/src/boost/boost/iostreams/filter/zlib.hpp b/src/boost/boost/iostreams/filter/zlib.hpp index 781922378..d2321f1aa 100644 --- a/src/boost/boost/iostreams/filter/zlib.hpp +++ b/src/boost/boost/iostreams/filter/zlib.hpp @@ -389,7 +389,8 @@ bool zlib_decompressor_impl::filter int result = xinflate(zlib::sync_flush); after(src_begin, dest_begin, false); zlib_error::check BOOST_PREVENT_MACRO_SUBSTITUTION(result); - return !(eof_ = result == zlib::stream_end); + eof_ = result == zlib::stream_end; + return !eof_; } template diff --git a/src/boost/boost/iostreams/filter/zstd.hpp b/src/boost/boost/iostreams/filter/zstd.hpp index 68403dbc0..750259d1e 100644 --- a/src/boost/boost/iostreams/filter/zstd.hpp +++ b/src/boost/boost/iostreams/filter/zstd.hpp @@ -183,8 +183,8 @@ class zstd_compressor_impl : public zstd_base, public zstd_allocator { }; // -// Template name: zstd_compressor_impl -// Description: Model of C-Style Filte implementing decompression by +// Template name: zstd_decompressor_impl +// Description: Model of C-Style Filter implementing decompression by // delegating to the zstd function inflate. // template > diff --git a/src/boost/boost/iostreams/pipeline.hpp b/src/boost/boost/iostreams/pipeline.hpp index 617209ff0..09d8f3bcc 100644 --- a/src/boost/boost/iostreams/pipeline.hpp +++ b/src/boost/boost/iostreams/pipeline.hpp @@ -47,7 +47,7 @@ struct pipeline; namespace detail { -#if BOOST_WORKAROUND(__BORLANDC__, < 0x600) +#if BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) template struct is_pipeline : mpl::false_ { }; diff --git a/src/boost/boost/iostreams/tee.hpp b/src/boost/boost/iostreams/tee.hpp deleted file mode 100644 index 81028bff8..000000000 --- a/src/boost/boost/iostreams/tee.hpp +++ /dev/null @@ -1,232 +0,0 @@ -// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) -// (C) Copyright 2005-2007 Jonathan Turkanis -// 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/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_TEE_HPP_INCLUDED -#define BOOST_IOSTREAMS_TEE_HPP_INCLUDED - -#if defined(_MSC_VER) -# pragma once -#endif - -#include -#include // BOOST_DEDUCE_TYPENAME. -#include -#include -#include -#include -#include -#include // call_close_all -#include -#include -#include -#include -#include -#include - -namespace boost { namespace iostreams { - -// -// Template name: tee_filter. -// Template parameters: -// Device - A blocking Sink. -// -template -class tee_filter : public detail::filter_adapter { -public: - typedef typename detail::param_type::type param_type; - typedef typename char_type_of::type char_type; - struct category - : dual_use_filter_tag, - multichar_tag, - closable_tag, - flushable_tag, - localizable_tag, - optimally_buffered_tag - { }; - - BOOST_STATIC_ASSERT(is_device::value); - BOOST_STATIC_ASSERT(( - is_convertible< // Using mode_of causes failures on VC6-7.0. - BOOST_DEDUCED_TYPENAME iostreams::category_of::type, output - >::value - )); - - explicit tee_filter(param_type dev) - : detail::filter_adapter(dev) - { } - - template - std::streamsize read(Source& src, char_type* s, std::streamsize n) - { - std::streamsize result = iostreams::read(src, s, n); - if (result != -1) { - std::streamsize result2 = iostreams::write(this->component(), s, result); - (void) result2; // Suppress 'unused variable' warning. - BOOST_ASSERT(result == result2); - } - return result; - } - - template - std::streamsize write(Sink& snk, const char_type* s, std::streamsize n) - { - std::streamsize result = iostreams::write(snk, s, n); - std::streamsize result2 = iostreams::write(this->component(), s, result); - (void) result2; // Suppress 'unused variable' warning. - BOOST_ASSERT(result == result2); - return result; - } - - template - void close(Next&, BOOST_IOS::openmode) - { - detail::close_all(this->component()); - } - - template - bool flush(Sink& snk) - { - bool r1 = iostreams::flush(snk); - bool r2 = iostreams::flush(this->component()); - return r1 && r2; - } -}; -BOOST_IOSTREAMS_PIPABLE(tee_filter, 1) - -// -// Template name: tee_device. -// Template parameters: -// Device - A blocking Device. -// Sink - A blocking Sink. -// -template -class tee_device { -public: - typedef typename detail::param_type::type device_param; - typedef typename detail::param_type::type sink_param; - typedef typename detail::value_type::type device_value; - typedef typename detail::value_type::type sink_value; - typedef typename char_type_of::type char_type; - typedef typename - mpl::if_< - is_convertible< - BOOST_DEDUCED_TYPENAME - iostreams::category_of::type, - output - >, - output, - input - >::type mode; - BOOST_STATIC_ASSERT(is_device::value); - BOOST_STATIC_ASSERT(is_device::value); - BOOST_STATIC_ASSERT(( - is_same< - char_type, - BOOST_DEDUCED_TYPENAME char_type_of::type - >::value - )); - BOOST_STATIC_ASSERT(( - is_convertible< - BOOST_DEDUCED_TYPENAME iostreams::category_of::type, - output - >::value - )); - struct category - : mode, - device_tag, - closable_tag, - flushable_tag, - localizable_tag, - optimally_buffered_tag - { }; - tee_device(device_param device, sink_param sink) - : dev_(device), sink_(sink) - { } - std::streamsize read(char_type* s, std::streamsize n) - { - BOOST_STATIC_ASSERT(( - is_convertible< - BOOST_DEDUCED_TYPENAME iostreams::category_of::type, input - >::value - )); - std::streamsize result1 = iostreams::read(dev_, s, n); - if (result1 != -1) { - std::streamsize result2 = iostreams::write(sink_, s, result1); - (void) result1; // Suppress 'unused variable' warning. - (void) result2; - BOOST_ASSERT(result1 == result2); - } - return result1; - } - std::streamsize write(const char_type* s, std::streamsize n) - { - BOOST_STATIC_ASSERT(( - is_convertible< - BOOST_DEDUCED_TYPENAME iostreams::category_of::type, output - >::value - )); - std::streamsize result1 = iostreams::write(dev_, s, n); - std::streamsize result2 = iostreams::write(sink_, s, n); - (void) result1; // Suppress 'unused variable' warning. - (void) result2; - BOOST_ASSERT(result1 == n && result2 == n); - return n; - } - void close() - { - detail::execute_all( detail::call_close_all(dev_), - detail::call_close_all(sink_) ); - } - bool flush() - { - bool r1 = iostreams::flush(dev_); - bool r2 = iostreams::flush(sink_); - return r1 && r2; - } - template - void imbue(const Locale& loc) - { - iostreams::imbue(dev_, loc); - iostreams::imbue(sink_, loc); - } - std::streamsize optimal_buffer_size() const - { - return (std::max) ( iostreams::optimal_buffer_size(dev_), - iostreams::optimal_buffer_size(sink_) ); - } -private: - device_value dev_; - sink_value sink_; -}; - -template -tee_filter tee(Sink& snk) -{ return tee_filter(snk); } - -template -tee_filter tee(const Sink& snk) -{ return tee_filter(snk); } - -template -tee_device tee(Device& dev, Sink& sink) -{ return tee_device(dev, sink); } - -template -tee_device tee(const Device& dev, Sink& sink) -{ return tee_device(dev, sink); } - -template -tee_device tee(Device& dev, const Sink& sink) -{ return tee_device(dev, sink); } - -template -tee_device tee(const Device& dev, const Sink& sink) -{ return tee_device(dev, sink); } - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_TEE_HPP_INCLUDED diff --git a/src/boost/boost/iterator/advance.hpp b/src/boost/boost/iterator/advance.hpp index 5f2474b46..642647c9e 100644 --- a/src/boost/boost/iterator/advance.hpp +++ b/src/boost/boost/iterator/advance.hpp @@ -8,6 +8,7 @@ #define BOOST_ITERATOR_ADVANCE_HPP #include +#include #include namespace boost { @@ -28,6 +29,12 @@ namespace iterators { } } +#if BOOST_WORKAROUND(BOOST_GCC_VERSION, >= 40600) +// type-limits warning issued below when n is an unsigned integral +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wtype-limits" +#endif + template inline BOOST_CXX14_CONSTEXPR void advance_impl( @@ -50,6 +57,10 @@ namespace iterators { } } +#if BOOST_WORKAROUND(BOOST_GCC_VERSION, >= 40600) +#pragma GCC diagnostic pop +#endif + template inline BOOST_CXX14_CONSTEXPR void advance_impl( diff --git a/src/boost/boost/iterator/detail/config_def.hpp b/src/boost/boost/iterator/detail/config_def.hpp index 4ec35c7df..1b16909d7 100644 --- a/src/boost/boost/iterator/detail/config_def.hpp +++ b/src/boost/boost/iterator/detail/config_def.hpp @@ -18,16 +18,16 @@ #ifdef BOOST_ITERATOR_CONFIG_DEF # error you have nested config_def #inclusion. -#else +#else # define BOOST_ITERATOR_CONFIG_DEF -#endif +#endif // We enable this always now. Otherwise, the simple case in // libs/iterator/test/constant_iterator_arrow.cpp fails to compile // because the operator-> return is improperly deduced as a non-const // pointer. #if 1 || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x531)) + || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x531)) // Recall that in general, compilers without partial specialization // can't strip constness. Consider counting_iterator, which normally @@ -46,11 +46,11 @@ #endif -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x5A0)) \ +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x5A0)) \ || (BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 700) && defined(_MSC_VER)) \ || BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) \ || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590)) - + # define BOOST_NO_LVALUE_RETURN_DETECTION # if 0 // test code @@ -79,7 +79,7 @@ int z2[(lvalue_deref_helper::value == 1) ? 1 : -1]; int z[(lvalue_deref_helper::value) == 1 ? -1 : 1 ]; -# endif +# endif #endif @@ -88,7 +88,7 @@ #endif #if BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4) && !defined(__EDG_VERSION__) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551)) + || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x551)) # define BOOST_NO_IS_CONVERTIBLE_TEMPLATE // The following program fails to compile: # if 0 // test code @@ -112,9 +112,9 @@ #if !defined(BOOST_MSVC) && (defined(BOOST_NO_SFINAE) || defined(BOOST_NO_IS_CONVERTIBLE) || defined(BOOST_NO_IS_CONVERTIBLE_TEMPLATE)) # define BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY -#endif +#endif -# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +# if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) // GCC-2.95 (obsolete) eagerly instantiates templated constructors and conversion // operators in convertibility checks, causing premature errors. @@ -123,6 +123,6 @@ // instantiation stack backtrace. They may be due in part to the fact // that it drops cv-qualification willy-nilly in templates. # define BOOST_NO_ONE_WAY_ITERATOR_INTEROP -# endif +# endif // no include guard; multiple inclusion intended diff --git a/src/boost/boost/iterator/detail/config_undef.hpp b/src/boost/boost/iterator/detail/config_undef.hpp index 070efbbcd..edfab0d9f 100644 --- a/src/boost/boost/iterator/detail/config_undef.hpp +++ b/src/boost/boost/iterator/detail/config_undef.hpp @@ -21,4 +21,4 @@ # undef BOOST_ITERATOR_CONFIG_DEF #else # error missing or nested #include config_def -#endif +#endif diff --git a/src/boost/boost/iterator/detail/enable_if.hpp b/src/boost/boost/iterator/detail/enable_if.hpp index c0da4b483..d984feb07 100644 --- a/src/boost/boost/iterator/detail/enable_if.hpp +++ b/src/boost/boost/iterator/detail/enable_if.hpp @@ -7,10 +7,11 @@ #ifndef BOOST_ENABLE_IF_23022003THW_HPP #define BOOST_ENABLE_IF_23022003THW_HPP -#include -#include - +#include #include +#if defined(BOOST_NO_SFINAE) || defined(BOOST_NO_IS_CONVERTIBLE) +#include +#endif // // Boost iterators uses its own enable_if cause we need @@ -48,7 +49,6 @@ namespace boost struct base { #ifdef BOOST_NO_SFINAE - typedef T type; // This way to do it would give a nice error message containing @@ -69,7 +69,7 @@ namespace boost # if !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_IS_CONVERTIBLE) : enabled<(Cond::value)>::template base # else - : mpl::identity + : boost::type_identity # endif { }; diff --git a/src/boost/boost/iterator/detail/facade_iterator_category.hpp b/src/boost/boost/iterator/detail/facade_iterator_category.hpp index 73f5ff9f7..ae672a243 100644 --- a/src/boost/boost/iterator/detail/facade_iterator_category.hpp +++ b/src/boost/boost/iterator/detail/facade_iterator_category.hpp @@ -4,6 +4,8 @@ #ifndef FACADE_ITERATOR_CATEGORY_DWA20031118_HPP # define FACADE_ITERATOR_CATEGORY_DWA20031118_HPP +# include + # include # include // used in iterator_tag inheritance logic @@ -11,15 +13,14 @@ # include # include # include -# include + +# include # include # include # include # include -# include - # include // try to keep this last # ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY @@ -33,8 +34,7 @@ namespace boost { namespace iterators { -// forward declaration -struct use_default; +using boost::use_default; namespace detail { @@ -138,17 +138,17 @@ struct iterator_category_with_traversal // Make sure this isn't used to build any categories where // convertibility to Traversal is redundant. Should just use the // Category element in that case. - BOOST_MPL_ASSERT_NOT(( - is_convertible< + BOOST_STATIC_ASSERT(( + !is_convertible< typename iterator_category_to_traversal::type , Traversal - >)); + >::value)); - BOOST_MPL_ASSERT((is_iterator_category)); - BOOST_MPL_ASSERT_NOT((is_iterator_category)); - BOOST_MPL_ASSERT_NOT((is_iterator_traversal)); + BOOST_STATIC_ASSERT(is_iterator_category::value); + BOOST_STATIC_ASSERT(!is_iterator_category::value); + BOOST_STATIC_ASSERT(!is_iterator_traversal::value); # if !BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) - BOOST_MPL_ASSERT((is_iterator_traversal)); + BOOST_STATIC_ASSERT(is_iterator_traversal::value); # endif }; @@ -157,7 +157,7 @@ struct iterator_category_with_traversal template struct facade_iterator_category_impl { - BOOST_MPL_ASSERT_NOT((is_iterator_category)); + BOOST_STATIC_ASSERT(!is_iterator_category::value); typedef typename iterator_facade_default_category< Traversal,ValueParam,Reference diff --git a/src/boost/boost/iterator/is_iterator.hpp b/src/boost/boost/iterator/is_iterator.hpp new file mode 100644 index 000000000..1dd0d1ad9 --- /dev/null +++ b/src/boost/boost/iterator/is_iterator.hpp @@ -0,0 +1,148 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * https://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2023 Andrey Semashev + */ +/*! + * \file iterator/is_iterator.hpp + * + * This header contains definition of the \c is_iterator type trait. + */ + +#ifndef BOOST_ITERATOR_IS_ITERATOR_HPP_INCLUDED_ +#define BOOST_ITERATOR_IS_ITERATOR_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#if !defined(BOOST_NO_CXX17_ITERATOR_TRAITS) +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace iterators { +namespace detail { + +// The trait attempts to detect if the T type is an iterator class. Class-type iterators are assumed +// to have the nested type iterator_category. Strictly speaking, this is not required to be the +// case (e.g. a user can specialize iterator_traits for T without defining T::iterator_category). +// Still, this is a good heuristic in practice, and we can't do anything better anyway. +// Since C++17 we can test for iterator_traits::iterator_category presence instead as it is +// required to be only present for iterators. +namespace has_iterator_category_detail { + +typedef char yes_type; +struct no_type { char padding[2]; }; + +template< typename T > +yes_type check( +#if !defined(BOOST_NO_CXX17_ITERATOR_TRAITS) + typename std::iterator_traits< T >::iterator_category* +#else + typename T::iterator_category* +#endif +); +template< typename > +no_type check(...); + +} // namespace has_iterator_category_detail + +template< typename T > +struct is_iterator_impl : + public boost::integral_constant< + bool, + sizeof(has_iterator_category_detail::check< T >(0)) == sizeof(has_iterator_category_detail::yes_type) + > +{ +}; + +template< typename T > +struct is_iterator_impl< T* > : + public boost::conjunction< + boost::is_complete< T >, + boost::negation< boost::is_function< T > > + >::type +{ +}; + +template< typename T, typename U > +struct is_iterator_impl< T U::* > : + public boost::false_type +{ +}; + +template< typename T > +struct is_iterator_impl< T& > : + public boost::false_type +{ +}; + +template< typename T, std::size_t N > +struct is_iterator_impl< T[N] > : + public boost::false_type +{ +}; + +#if !defined(BOOST_TT_HAS_WORKING_IS_COMPLETE) +template< typename T > +struct is_iterator_impl< T[] > : + public boost::false_type +{ +}; + +template< > +struct is_iterator_impl< void > : + public boost::false_type +{ +}; + +template< > +struct is_iterator_impl< void* > : + public boost::false_type +{ +}; +#endif // !defined(BOOST_TT_HAS_WORKING_IS_COMPLETE) + +} // namespace detail + +/*! + * \brief The type trait detects whether the type \c T is an iterator type. + * + * The type trait yields \c true if its argument type \c T, after stripping top level + * cv qualifiers, is one of the following: + * + * - A pointer type, other than a pointer to function, a pointer to a class member, + * or a pointer to an incomplete type, including `void`. + * - A class type for which an iterator category is obtainable. Prior to C++17, + * the iterator category must be defined as a public `T::iterator_category` type. + * Since C++17, the expression `std::iterator_traits< T >::iterator_category` must + * be valid and produce the iterator category type. + * + * Otherwise, the type trait yields \c false. + */ +template< typename T > +struct is_iterator : public detail::is_iterator_impl< T >::type {}; +template< typename T > +struct is_iterator< const T > : public detail::is_iterator_impl< T >::type {}; +template< typename T > +struct is_iterator< volatile T > : public detail::is_iterator_impl< T >::type {}; +template< typename T > +struct is_iterator< const volatile T > : public detail::is_iterator_impl< T >::type {}; + +} // namespace iterators + +using iterators::is_iterator; + +} // namespace boost + +#endif // BOOST_ITERATOR_IS_ITERATOR_HPP_INCLUDED_ diff --git a/src/boost/boost/iterator/iterator_adaptor.hpp b/src/boost/boost/iterator/iterator_adaptor.hpp index dd1631820..11bd796bb 100644 --- a/src/boost/boost/iterator/iterator_adaptor.hpp +++ b/src/boost/boost/iterator/iterator_adaptor.hpp @@ -9,6 +9,8 @@ #include +#include + #include #include #include @@ -35,12 +37,10 @@ namespace iterators { // Used as a default template argument internally, merely to // indicate "use the default", this can also be passed by users // explicitly in order to specify that the default should be used. - struct use_default; + using boost::use_default; } // namespace iterators -using iterators::use_default; - // the incompleteness of use_default causes massive problems for // is_convertible (naturally). This workaround is fortunately not // needed for vc6/vc7. diff --git a/src/boost/boost/iterator/iterator_concepts.hpp b/src/boost/boost/iterator/iterator_concepts.hpp index 90b837e5d..36fc133ea 100644 --- a/src/boost/boost/iterator/iterator_concepts.hpp +++ b/src/boost/boost/iterator/iterator_concepts.hpp @@ -144,8 +144,8 @@ namespace boost_concepts { typedef typename std::iterator_traits::difference_type difference_type; - BOOST_MPL_ASSERT((boost::is_integral)); - BOOST_MPL_ASSERT_RELATION(std::numeric_limits::is_signed, ==, true); + BOOST_STATIC_ASSERT(boost::is_integral::value); + BOOST_STATIC_ASSERT(std::numeric_limits::is_signed); BOOST_CONCEPT_ASSERT(( boost::Convertible< diff --git a/src/boost/boost/iterator/iterator_facade.hpp b/src/boost/boost/iterator/iterator_facade.hpp index 260ea373c..9a3657823 100644 --- a/src/boost/boost/iterator/iterator_facade.hpp +++ b/src/boost/boost/iterator/iterator_facade.hpp @@ -16,7 +16,7 @@ #include #include -#include +#include #include #include @@ -154,79 +154,160 @@ namespace iterators { class postfix_increment_proxy { typedef typename iterator_value::type value_type; + public: explicit postfix_increment_proxy(Iterator const& x) - : stored_value(*x) + : stored_iterator(x) + , stored_value(*x) {} // Returning a mutable reference allows nonsense like // (*r++).mutate(), but it imposes fewer assumptions about the // behavior of the value_type. In particular, recall that // (*r).mutate() is legal if operator* returns by value. - value_type& - operator*() const + // Provides readability of *r++ + value_type& operator*() const { - return this->stored_value; + return stored_value; + } + + // Provides X(r++) + operator Iterator const&() const + { + return stored_iterator; + } + + // Provides (r++)->foo() + value_type* operator->() const + { + return boost::addressof(stored_value); } + private: + Iterator stored_iterator; mutable value_type stored_value; }; + + template + class writable_postfix_increment_dereference_proxy; + + template + struct is_not_writable_postfix_increment_dereference_proxy : + public boost::true_type + {}; + + template + struct is_not_writable_postfix_increment_dereference_proxy< + writable_postfix_increment_dereference_proxy + > : + public boost::false_type + {}; + + template + class writable_postfix_increment_proxy; + // // In general, we can't determine that such an iterator isn't // writable -- we also need to store a copy of the old iterator so // that it can be written into. template - class writable_postfix_increment_proxy + class writable_postfix_increment_dereference_proxy { + friend class writable_postfix_increment_proxy; + typedef typename iterator_value::type value_type; + public: - explicit writable_postfix_increment_proxy(Iterator const& x) - : stored_value(*x) - , stored_iterator(x) + explicit writable_postfix_increment_dereference_proxy(Iterator const& x) + : stored_iterator(x) + , stored_value(*x) {} - // Dereferencing must return a proxy so that both *r++ = o and - // value_type(*r++) can work. In this case, *r is the same as - // *r++, and the conversion operator below is used to ensure - // readability. - writable_postfix_increment_proxy const& - operator*() const + // Provides readability of *r++ + operator value_type&() const { - return *this; + return this->stored_value; } - // Provides readability of *r++ - operator value_type&() const + template + writable_postfix_increment_dereference_proxy const& + operator=(writable_postfix_increment_dereference_proxy const& x) const { - return stored_value; + typedef typename iterator_value::type other_value_type; + *this->stored_iterator = static_cast(x); + return *this; } // Provides writability of *r++ +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template - T const& operator=(T const& x) const + typename iterators::enable_if< + is_not_writable_postfix_increment_dereference_proxy< T >, + writable_postfix_increment_dereference_proxy const& + >::type operator=(T&& x) const + { + *this->stored_iterator = static_cast< T&& >(x); + return *this; + } +#else + template + typename iterators::enable_if< + is_not_writable_postfix_increment_dereference_proxy< T >, + writable_postfix_increment_dereference_proxy const& + >::type operator=(T const& x) const { *this->stored_iterator = x; - return x; + return *this; } // This overload just in case only non-const objects are writable template - T& operator=(T& x) const + typename iterators::enable_if< + is_not_writable_postfix_increment_dereference_proxy< T >, + writable_postfix_increment_dereference_proxy const& + >::type operator=(T& x) const { *this->stored_iterator = x; - return x; + return *this; + } +#endif + + private: + Iterator stored_iterator; + mutable value_type stored_value; + }; + + template + class writable_postfix_increment_proxy + { + typedef typename iterator_value::type value_type; + + public: + explicit writable_postfix_increment_proxy(Iterator const& x) + : dereference_proxy(x) + {} + + writable_postfix_increment_dereference_proxy const& + operator*() const + { + return dereference_proxy; } // Provides X(r++) operator Iterator const&() const { - return stored_iterator; + return dereference_proxy.stored_iterator; + } + + // Provides (r++)->foo() + value_type* operator->() const + { + return boost::addressof(dereference_proxy.stored_value); } private: - mutable value_type stored_value; - Iterator stored_iterator; + writable_postfix_increment_dereference_proxy dereference_proxy; }; # ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION diff --git a/src/boost/boost/iterator/transform_iterator.hpp b/src/boost/boost/iterator/transform_iterator.hpp index 532c192f2..4ef76f196 100644 --- a/src/boost/boost/iterator/transform_iterator.hpp +++ b/src/boost/boost/iterator/transform_iterator.hpp @@ -7,11 +7,11 @@ #ifndef BOOST_TRANSFORM_ITERATOR_23022003THW_HPP #define BOOST_TRANSFORM_ITERATOR_23022003THW_HPP +#include +#include #include #include #include -#include -#include #include #include #include @@ -24,7 +24,11 @@ #include #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) -# include +#include +#endif + +#if !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) +#include #endif #include @@ -154,7 +158,7 @@ namespace iterators { return transform_iterator(it, UnaryFunc()); } -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) +#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) template inline transform_iterator< Return (*)(Argument), Iterator, Return> make_transform_iterator(Iterator it, Return (*fun)(Argument)) diff --git a/src/boost/boost/lexical_cast.hpp b/src/boost/boost/lexical_cast.hpp index a42a9ea11..e33e59614 100644 --- a/src/boost/boost/lexical_cast.hpp +++ b/src/boost/boost/lexical_cast.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -23,6 +23,24 @@ # pragma once #endif +#include +#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) || \ + defined(BOOST_NO_CXX11_CONSTEXPR) || \ + defined(BOOST_NO_CXX11_NULLPTR) || \ + defined(BOOST_NO_CXX11_NOEXCEPT) || \ + defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || \ + defined(BOOST_NO_CXX11_FINAL) || \ + defined(BOOST_NO_CXX11_ALIGNOF) || \ + defined(BOOST_NO_CXX11_STATIC_ASSERT) || \ + defined(BOOST_NO_CXX11_SMART_PTR) || \ + defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) || \ + defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) + +BOOST_PRAGMA_MESSAGE("C++03 support is deprecated in Boost.LexicalCast 1.82 and will be removed in Boost.LexicalCast 1.84.") + +#endif + #if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING) #define BOOST_LCAST_NO_WCHAR_T #endif @@ -31,7 +49,7 @@ #include #include -namespace boost +namespace boost { template inline Target lexical_cast(const Source &arg) diff --git a/src/boost/boost/lexical_cast/bad_lexical_cast.hpp b/src/boost/boost/lexical_cast/bad_lexical_cast.hpp index 02455ddd4..bd59933f6 100644 --- a/src/boost/boost/lexical_cast/bad_lexical_cast.hpp +++ b/src/boost/boost/lexical_cast/bad_lexical_cast.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -23,22 +23,22 @@ # pragma once #endif -#include #include +#include #include namespace boost { // exception used to indicate runtime lexical_cast failure class BOOST_SYMBOL_VISIBLE bad_lexical_cast : - // workaround MSVC bug with std::bad_cast when _HAS_EXCEPTIONS == 0 -#if defined(BOOST_MSVC) && defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS - public std::exception -#else - public std::bad_cast -#endif + // workaround MSVC bug with std::bad_cast when _HAS_EXCEPTIONS == 0 +#if defined(BOOST_MSVC) && defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS + public std::exception +#else + public std::bad_cast +#endif -#if defined(__BORLANDC__) && BOOST_WORKAROUND( __BORLANDC__, < 0x560 ) +#if defined(BOOST_BORLANDC) && BOOST_WORKAROUND( BOOST_BORLANDC, < 0x560 ) // under bcc32 5.5.1 bad_cast doesn't derive from exception , public std::exception #endif @@ -51,32 +51,39 @@ namespace boost #endif {} - virtual const char *what() const BOOST_NOEXCEPT_OR_NOTHROW { + const char *what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return "bad lexical cast: " "source type value could not be interpreted as target"; } - virtual ~bad_lexical_cast() BOOST_NOEXCEPT_OR_NOTHROW + ~bad_lexical_cast() BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE {} #ifndef BOOST_NO_TYPEID + private: +#ifdef BOOST_NO_STD_TYPEINFO + typedef ::type_info type_info_t; +#else + typedef ::std::type_info type_info_t; +#endif + public: bad_lexical_cast( - const std::type_info &source_type_arg, - const std::type_info &target_type_arg) BOOST_NOEXCEPT + const type_info_t &source_type_arg, + const type_info_t &target_type_arg) BOOST_NOEXCEPT : source(&source_type_arg), target(&target_type_arg) {} - const std::type_info &source_type() const BOOST_NOEXCEPT { + const type_info_t &source_type() const BOOST_NOEXCEPT { return *source; } - const std::type_info &target_type() const BOOST_NOEXCEPT { + const type_info_t &target_type() const BOOST_NOEXCEPT { return *target; } private: - const std::type_info *source; - const std::type_info *target; + const type_info_t *source; + const type_info_t *target; #endif }; @@ -94,8 +101,6 @@ namespace boost #endif }} // namespace conversion::detail - } // namespace boost #endif // BOOST_LEXICAL_CAST_BAD_LEXICAL_CAST_HPP - diff --git a/src/boost/boost/lexical_cast/detail/converter_lexical.hpp b/src/boost/boost/lexical_cast/detail/converter_lexical.hpp index 7af4182cc..a2fdbdd6b 100644 --- a/src/boost/boost/lexical_cast/detail/converter_lexical.hpp +++ b/src/boost/boost/lexical_cast/detail/converter_lexical.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -59,7 +59,7 @@ namespace boost { { // Converts signed/unsigned char to char template < class Char > - struct normalize_single_byte_char + struct normalize_single_byte_char { typedef Char type; }; @@ -79,7 +79,7 @@ namespace boost { namespace detail // deduce_character_type_later { - // Helper type, meaning that stram character for T must be deduced + // Helper type, meaning that stram character for T must be deduced // at Stage 2 (See deduce_source_char and deduce_target_char) template < class T > struct deduce_character_type_later {}; } @@ -116,7 +116,7 @@ namespace boost { Char, boost::detail::deduce_character_type_later< boost::iterator_range< Char* > > > {}; - + template < typename Char > struct stream_char_common< boost::iterator_range< const Char* > >: public boost::conditional< boost::detail::is_character< Char >::value, @@ -187,19 +187,19 @@ namespace boost { // Otherwise supplied type T is a character type, that must be normalized // using normalize_single_byte_char. // Executed at Stage 2 (See deduce_source_char and deduce_target_char) - template < class Char > + template < class Char > struct deduce_source_char_impl - { - typedef BOOST_DEDUCED_TYPENAME boost::detail::normalize_single_byte_char< Char >::type type; + { + typedef BOOST_DEDUCED_TYPENAME boost::detail::normalize_single_byte_char< Char >::type type; }; - - template < class T > - struct deduce_source_char_impl< deduce_character_type_later< T > > + + template < class T > + struct deduce_source_char_impl< deduce_character_type_later< T > > { typedef boost::has_left_shift< std::basic_ostream< char >, T > result_t; #if defined(BOOST_LCAST_NO_WCHAR_T) - BOOST_STATIC_ASSERT_MSG((result_t::value), + BOOST_STATIC_ASSERT_MSG((result_t::value), "Source type is not std::ostream`able and std::wostream`s are not supported by your STL implementation"); typedef char type; #else @@ -207,7 +207,7 @@ namespace boost { result_t::value, char, wchar_t >::type type; - BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_left_shift< std::basic_ostream< type >, T >::value), + BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_left_shift< std::basic_ostream< type >, T >::value), "Source type is neither std::ostream`able nor std::wostream`able"); #endif }; @@ -220,47 +220,47 @@ namespace boost { // Otherwise supplied type T is a character type, that must be normalized // using normalize_single_byte_char. // Executed at Stage 2 (See deduce_source_char and deduce_target_char) - template < class Char > - struct deduce_target_char_impl - { - typedef BOOST_DEDUCED_TYPENAME normalize_single_byte_char< Char >::type type; + template < class Char > + struct deduce_target_char_impl + { + typedef BOOST_DEDUCED_TYPENAME normalize_single_byte_char< Char >::type type; }; - - template < class T > - struct deduce_target_char_impl< deduce_character_type_later > - { + + template < class T > + struct deduce_target_char_impl< deduce_character_type_later > + { typedef boost::has_right_shift, T > result_t; #if defined(BOOST_LCAST_NO_WCHAR_T) - BOOST_STATIC_ASSERT_MSG((result_t::value), + BOOST_STATIC_ASSERT_MSG((result_t::value), "Target type is not std::istream`able and std::wistream`s are not supported by your STL implementation"); typedef char type; #else typedef BOOST_DEDUCED_TYPENAME boost::conditional< result_t::value, char, wchar_t >::type type; - - BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_right_shift, T >::value), + + BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_right_shift, T >::value), "Target type is neither std::istream`able nor std::wistream`able"); #endif }; - } + } namespace detail // deduce_target_char and deduce_source_char { // We deduce stream character types in two stages. // - // Stage 1 is common for Target and Source. At Stage 1 we get + // Stage 1 is common for Target and Source. At Stage 1 we get // non normalized character type (may contain unsigned/signed char) // or deduce_character_type_later where T is the original type. // Stage 1 is executed by stream_char_common // - // At Stage 2 we normalize character types or try to deduce character - // type using metafunctions. - // Stage 2 is executed by deduce_target_char_impl and + // At Stage 2 we normalize character types or try to deduce character + // type using metafunctions. + // Stage 2 is executed by deduce_target_char_impl and // deduce_source_char_impl // - // deduce_target_char and deduce_source_char functions combine + // deduce_target_char and deduce_source_char functions combine // both stages template < class T > @@ -322,7 +322,7 @@ namespace boost { typedef const T * type; }; } - + namespace detail // lcast_src_length { // Return max. length of string representation of Source; @@ -368,7 +368,7 @@ namespace boost { // -1.23456789e-123456 // ^ sign // ^ leading digit - // ^ decimal point + // ^ decimal point // ^^^^^^^^ lcast_precision::value // ^ "e" // ^ exponent sign @@ -401,11 +401,11 @@ namespace boost { struct lexical_cast_stream_traits { typedef BOOST_DEDUCED_TYPENAME boost::detail::array_to_pointer_decay::type src; typedef BOOST_DEDUCED_TYPENAME boost::remove_cv::type no_cv_src; - + typedef boost::detail::deduce_source_char deduce_src_char_metafunc; typedef BOOST_DEDUCED_TYPENAME deduce_src_char_metafunc::type src_char_t; typedef BOOST_DEDUCED_TYPENAME boost::detail::deduce_target_char::type target_char_t; - + typedef BOOST_DEDUCED_TYPENAME boost::detail::widest_char< target_char_t, src_char_t >::type char_type; @@ -426,33 +426,33 @@ namespace boost { BOOST_DEDUCED_TYPENAME boost::detail::extract_char_traits, BOOST_DEDUCED_TYPENAME boost::detail::extract_char_traits >::type::trait_t traits; - + typedef boost::integral_constant< bool, boost::is_same::value && // source is not a wide character based type (sizeof(char) != sizeof(target_char_t)) && // target type is based on wide character (!(boost::detail::is_character::value)) - > is_string_widening_required_t; + > is_string_widening_required_t; typedef boost::integral_constant< bool, - !(boost::is_integral::value || + !(boost::is_integral::value || boost::detail::is_character< BOOST_DEDUCED_TYPENAME deduce_src_char_metafunc::stage1_type // if we did not get character type at stage1 >::value // then we have no optimization for that type - ) - > is_source_input_not_optimized_t; - + ) + > is_source_input_not_optimized_t; + // If we have an optimized conversion for // Source, we do not need to construct stringbuf. - BOOST_STATIC_CONSTANT(bool, requires_stringbuf = - (is_string_widening_required_t::value || is_source_input_not_optimized_t::value) + BOOST_STATIC_CONSTANT(bool, requires_stringbuf = + (is_string_widening_required_t::value || is_source_input_not_optimized_t::value) ); - + typedef boost::detail::lcast_src_length len_t; }; } - + namespace detail { template diff --git a/src/boost/boost/lexical_cast/detail/converter_lexical_streams.hpp b/src/boost/boost/lexical_cast/detail/converter_lexical_streams.hpp index dbf864c41..f0f8191c1 100644 --- a/src/boost/boost/lexical_cast/detail/converter_lexical_streams.hpp +++ b/src/boost/boost/lexical_cast/detail/converter_lexical_streams.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -36,8 +36,9 @@ #include #include #include +#include #include - +#include #ifndef BOOST_NO_STD_LOCALE # include @@ -76,7 +77,7 @@ #include #include #include -#include +#include #ifndef BOOST_NO_CWCHAR # include #endif @@ -154,7 +155,7 @@ namespace boost { CharT buffer[CharacterBufferSize]; // After the `operator <<` finishes, `[start, finish)` is - // the range to output by `operator >>` + // the range to output by `operator >>` const CharT* start; const CharT* finish; @@ -165,7 +166,7 @@ namespace boost { , start(buffer) , finish(buffer + CharacterBufferSize) {} - + const CharT* cbegin() const BOOST_NOEXCEPT { return start; } @@ -279,11 +280,7 @@ namespace boost { using namespace std; const double val_as_double = val; finish = start + -#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) - sprintf_s(begin, CharacterBufferSize, -#else - sprintf(begin, -#endif + boost::core::snprintf(begin, CharacterBufferSize, "%.*g", static_cast(boost::detail::lcast_get_precision()), val_as_double); return finish > start; } @@ -291,11 +288,7 @@ namespace boost { bool shl_real_type(double val, char* begin) { using namespace std; finish = start + -#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) - sprintf_s(begin, CharacterBufferSize, -#else - sprintf(begin, -#endif + boost::core::snprintf(begin, CharacterBufferSize, "%.*g", static_cast(boost::detail::lcast_get_precision()), val); return finish > start; } @@ -304,11 +297,7 @@ namespace boost { bool shl_real_type(long double val, char* begin) { using namespace std; finish = start + -#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) - sprintf_s(begin, CharacterBufferSize, -#else - sprintf(begin, -#endif + boost::core::snprintf(begin, CharacterBufferSize, "%.*Lg", static_cast(boost::detail::lcast_get_precision()), val ); return finish > start; } @@ -375,15 +364,15 @@ namespace boost { } template - BOOST_DEDUCED_TYPENAME boost::disable_if, bool>::type + BOOST_DEDUCED_TYPENAME boost::disable_if, bool>::type operator<<(const iterator_range& rng) BOOST_NOEXCEPT { return (*this) << iterator_range(rng.begin(), rng.end()); } - + bool operator<<(const iterator_range& rng) BOOST_NOEXCEPT { start = rng.begin(); finish = rng.end(); - return true; + return true; } bool operator<<(const iterator_range& rng) BOOST_NOEXCEPT { @@ -454,43 +443,43 @@ namespace boost { return shl_real(static_cast(val)); #endif } - + // Adding constness to characters. Constness does not change layout template BOOST_DEDUCED_TYPENAME boost::disable_if, bool>::type - operator<<(boost::array const& input) BOOST_NOEXCEPT { + operator<<(boost::array const& input) BOOST_NOEXCEPT { BOOST_STATIC_ASSERT_MSG( (sizeof(boost::array) == sizeof(boost::array)), "boost::array and boost::array must have exactly the same layout." ); - return ((*this) << reinterpret_cast const& >(input)); + return ((*this) << reinterpret_cast const& >(input)); } template - bool operator<<(boost::array const& input) BOOST_NOEXCEPT { + bool operator<<(boost::array const& input) BOOST_NOEXCEPT { return shl_char_array_limited(input.data(), N); } template - bool operator<<(boost::array const& input) BOOST_NOEXCEPT { - return ((*this) << reinterpret_cast const& >(input)); + bool operator<<(boost::array const& input) BOOST_NOEXCEPT { + return ((*this) << reinterpret_cast const& >(input)); } template - bool operator<<(boost::array const& input) BOOST_NOEXCEPT { - return ((*this) << reinterpret_cast const& >(input)); + bool operator<<(boost::array const& input) BOOST_NOEXCEPT { + return ((*this) << reinterpret_cast const& >(input)); } - + #ifndef BOOST_NO_CXX11_HDR_ARRAY // Making a Boost.Array from std::array template - bool operator<<(std::array const& input) BOOST_NOEXCEPT { + bool operator<<(std::array const& input) BOOST_NOEXCEPT { BOOST_STATIC_ASSERT_MSG( (sizeof(std::array) == sizeof(boost::array)), "std::array and boost::array must have exactly the same layout. " "Bug in implementation of std::array or boost::array." ); - return ((*this) << reinterpret_cast const& >(input)); + return ((*this) << reinterpret_cast const& >(input)); } #endif template @@ -500,7 +489,7 @@ namespace boost { template class lexical_ostream_limited_src: boost::noncopyable { - //`[start, finish)` is the range to output by `operator >>` + //`[start, finish)` is the range to output by `operator >>` const CharT* start; const CharT* const finish; @@ -580,7 +569,7 @@ namespace boost { #else typedef BOOST_DEDUCED_TYPENAME out_stream_helper_trait::buffer_t buffer_t; buffer_t buf; - // Usually `istream` and `basic_istream` do not modify + // Usually `istream` and `basic_istream` do not modify // content of buffer; `buffer_t` assures that this is true buf.setbuf(const_cast(start), static_cast(finish - start)); #if defined(BOOST_NO_STD_LOCALE) @@ -597,7 +586,7 @@ namespace boost { stream.unsetf(std::ios::skipws); lcast_set_precision(stream, static_cast(0)); - return (stream >> output) + return (stream >> output) && (stream.get() == Traits::eof()); #ifndef BOOST_NO_EXCEPTIONS @@ -625,7 +614,7 @@ namespace boost { bool shr_std_array(ArrayT& output) BOOST_NOEXCEPT { using namespace std; const std::size_t size = static_cast(finish - start); - if (size > N - 1) { // `-1` because we need to store \0 at the end + if (size > N - 1) { // `-1` because we need to store \0 at the end return false; } @@ -668,33 +657,33 @@ namespace boost { bool operator>>(char32_t& output) { return shr_xchar(output); } #endif template - bool operator>>(std::basic_string& str) { - str.assign(start, finish); return true; + bool operator>>(std::basic_string& str) { + str.assign(start, finish); return true; } template - bool operator>>(boost::container::basic_string& str) { - str.assign(start, finish); return true; + bool operator>>(boost::container::basic_string& str) { + str.assign(start, finish); return true; } template - bool operator>>(boost::array& output) BOOST_NOEXCEPT { - return shr_std_array(output); + bool operator>>(boost::array& output) BOOST_NOEXCEPT { + return shr_std_array(output); } template - bool operator>>(boost::array& output) BOOST_NOEXCEPT { - return ((*this) >> reinterpret_cast& >(output)); + bool operator>>(boost::array& output) BOOST_NOEXCEPT { + return ((*this) >> reinterpret_cast& >(output)); } template - bool operator>>(boost::array& output) BOOST_NOEXCEPT { - return ((*this) >> reinterpret_cast& >(output)); + bool operator>>(boost::array& output) BOOST_NOEXCEPT { + return ((*this) >> reinterpret_cast& >(output)); } - + #ifndef BOOST_NO_CXX11_HDR_ARRAY template - bool operator>>(std::array& output) BOOST_NOEXCEPT { + bool operator>>(std::array& output) BOOST_NOEXCEPT { BOOST_STATIC_ASSERT_MSG( (sizeof(std::array) == sizeof(boost::array)), "std::array and boost::array must have exactly the same layout." @@ -773,8 +762,8 @@ namespace boost { // Generic istream-based algorithm. // lcast_streambuf_for_target::value is true. template - bool operator>>(InputStreamable& output) { - return shr_using_base_class(output); + bool operator>>(InputStreamable& output) { + return shr_using_base_class(output); } }; } diff --git a/src/boost/boost/lexical_cast/detail/converter_numeric.hpp b/src/boost/boost/lexical_cast/detail/converter_numeric.hpp index 2c22f3135..fbc245987 100644 --- a/src/boost/boost/lexical_cast/detail/converter_numeric.hpp +++ b/src/boost/boost/lexical_cast/detail/converter_numeric.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -32,6 +32,7 @@ #include #include #include +#include #include @@ -98,7 +99,10 @@ inline bool noexcept_numeric_convert(const Source& arg, Target& result) BOOST_NO >::type converter_t; bool res = nothrow_overflow_handler()(converter_t::out_of_range(arg)); - result = converter_t::low_level_convert(converter_t::nearbyint(arg, res)); + if (res) { + result = converter_t::low_level_convert(converter_t::nearbyint(arg, res)); + } + return res; } @@ -152,14 +156,16 @@ struct lexical_cast_dynamic_num_ignoring_minus template struct dynamic_num_converter_impl { - static inline bool try_convert(const Source &arg, Target& result) BOOST_NOEXCEPT { + typedef BOOST_DEDUCED_TYPENAME boost::remove_volatile::type source_type; + + static inline bool try_convert(source_type arg, Target& result) BOOST_NOEXCEPT { typedef BOOST_DEDUCED_TYPENAME boost::conditional< boost::is_unsigned::value && - (boost::is_signed::value || boost::is_float::value) && - !(boost::is_same::value) && + (boost::is_signed::value || boost::is_float::value) && + !(boost::is_same::value) && !(boost::is_same::value), - lexical_cast_dynamic_num_ignoring_minus, - lexical_cast_dynamic_num_not_ignoring_minus + lexical_cast_dynamic_num_ignoring_minus, + lexical_cast_dynamic_num_not_ignoring_minus >::type caster_type; return caster_type::try_convert(arg, result); diff --git a/src/boost/boost/lexical_cast/detail/inf_nan.hpp b/src/boost/boost/lexical_cast/detail/inf_nan.hpp index fcef20125..8ed0b5965 100644 --- a/src/boost/boost/lexical_cast/detail/inf_nan.hpp +++ b/src/boost/boost/lexical_cast/detail/inf_nan.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -27,12 +27,11 @@ #define BOOST_LCAST_NO_WCHAR_T #endif -#include -#include #include #include -#include -#include +#include +#include +#include #include @@ -55,7 +54,6 @@ namespace boost { , const CharT* lc_INFINITY, const CharT* lc_infinity , const CharT opening_brace, const CharT closing_brace) BOOST_NOEXCEPT { - using namespace std; if (begin == end) return false; const CharT minus = lcast_char_constants::minus; const CharT plus = lcast_char_constants::plus; @@ -72,14 +70,14 @@ namespace boost { begin += 3; if (end != begin) { /* It is 'nan(...)' or some bad input*/ - + if (end - begin < 2) return false; // bad input -- end; if (*begin != opening_brace || *end != closing_brace) return false; // bad input } if( !has_minus ) value = std::numeric_limits::quiet_NaN(); - else value = (boost::math::changesign) (std::numeric_limits::quiet_NaN()); + else value = boost::core::copysign(std::numeric_limits::quiet_NaN(), static_cast(-1)); return true; } else if ( ( /* 'INF' or 'inf' */ @@ -94,7 +92,7 @@ namespace boost { ) { if( !has_minus ) value = std::numeric_limits::infinity(); - else value = (boost::math::changesign) (std::numeric_limits::infinity()); + else value = -std::numeric_limits::infinity(); return true; } @@ -106,24 +104,23 @@ namespace boost { , const CharT* lc_nan , const CharT* lc_infinity) BOOST_NOEXCEPT { - using namespace std; const CharT minus = lcast_char_constants::minus; - if ((boost::math::isnan)(value)) { - if ((boost::math::signbit)(value)) { + if (boost::core::isnan(value)) { + if (boost::core::signbit(value)) { *begin = minus; ++ begin; } - memcpy(begin, lc_nan, 3 * sizeof(CharT)); + std::memcpy(begin, lc_nan, 3 * sizeof(CharT)); end = begin + 3; return true; - } else if ((boost::math::isinf)(value)) { - if ((boost::math::signbit)(value)) { + } else if (boost::core::isinf(value)) { + if (boost::core::signbit(value)) { *begin = minus; ++ begin; } - memcpy(begin, lc_infinity, 3 * sizeof(CharT)); + std::memcpy(begin, lc_infinity, 3 * sizeof(CharT)); end = begin + 3; return true; } diff --git a/src/boost/boost/lexical_cast/detail/is_character.hpp b/src/boost/boost/lexical_cast/detail/is_character.hpp index 439845968..1e15cef05 100644 --- a/src/boost/boost/lexical_cast/detail/is_character.hpp +++ b/src/boost/boost/lexical_cast/detail/is_character.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -35,8 +35,8 @@ namespace boost { struct is_character { typedef BOOST_DEDUCED_TYPENAME boost::integral_constant< - bool, - boost::is_same< T, char >::value || + bool, + boost::is_same< T, char >::value || #if !defined(BOOST_NO_STRINGSTREAM) && !defined(BOOST_NO_STD_WSTRING) boost::is_same< T, wchar_t >::value || #endif @@ -46,8 +46,8 @@ namespace boost { #ifndef BOOST_NO_CXX11_CHAR32_T boost::is_same< T, char32_t >::value || #endif - boost::is_same< T, unsigned char >::value || - boost::is_same< T, signed char >::value + boost::is_same< T, unsigned char >::value || + boost::is_same< T, signed char >::value > type; BOOST_STATIC_CONSTANT(bool, value = (type::value) ); diff --git a/src/boost/boost/lexical_cast/detail/lcast_char_constants.hpp b/src/boost/boost/lexical_cast/detail/lcast_char_constants.hpp index 9dbdf7658..5737b2ae6 100644 --- a/src/boost/boost/lexical_cast/detail/lcast_char_constants.hpp +++ b/src/boost/boost/lexical_cast/detail/lcast_char_constants.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -23,7 +23,7 @@ # pragma once #endif -namespace boost +namespace boost { namespace detail // '0', '-', '+', 'e', 'E' and '.' constants { diff --git a/src/boost/boost/lexical_cast/detail/lcast_unsigned_converters.hpp b/src/boost/boost/lexical_cast/detail/lcast_unsigned_converters.hpp index ae5172b00..8b2621502 100644 --- a/src/boost/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +++ b/src/boost/boost/lexical_cast/detail/lcast_unsigned_converters.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -50,9 +50,9 @@ #include #include #include -#include +#include -namespace boost +namespace boost { namespace detail // lcast_to_unsigned { @@ -60,8 +60,8 @@ namespace boost inline BOOST_DEDUCED_TYPENAME boost::make_unsigned::type lcast_to_unsigned(const T value) BOOST_NOEXCEPT { typedef BOOST_DEDUCED_TYPENAME boost::make_unsigned::type result_type; - return value < 0 - ? static_cast(0u - static_cast(value)) + return value < 0 + ? static_cast(0u - static_cast(value)) : static_cast(value); } } @@ -81,7 +81,7 @@ namespace boost int_type const m_zero; public: - lcast_put_unsigned(const T n_param, CharT* finish) BOOST_NOEXCEPT + lcast_put_unsigned(const T n_param, CharT* finish) BOOST_NOEXCEPT : m_value(n_param), m_finish(finish) , m_czero(lcast_char_constants::zero), m_zero(Traits::to_int_type(m_czero)) { @@ -162,7 +162,7 @@ namespace boost T& m_value; const CharT* const m_begin; const CharT* m_end; - + public: lcast_ret_unsigned(T& value, const CharT* const begin, const CharT* end) BOOST_NOEXCEPT : m_multiplier_overflowed(false), m_multiplier(1), m_value(value), m_begin(begin), m_end(end) @@ -250,7 +250,7 @@ namespace boost } private: - // Iteration that does not care about grouping/separators and assumes that all + // Iteration that does not care about grouping/separators and assumes that all // input characters are digits inline bool main_convert_iteration() BOOST_NOEXCEPT { CharT const czero = lcast_char_constants::zero; @@ -265,7 +265,7 @@ namespace boost // We must correctly handle situations like `000000000000000000000000000001`. // So we take care of overflow only if `dig_value` is not '0'. if (*m_end < czero || *m_end >= czero + 10 // checking for correct digit - || (dig_value && ( // checking for overflow of ... + || (dig_value && ( // checking for overflow of ... m_multiplier_overflowed // ... multiplier || static_cast(maxv / dig_value) < m_multiplier // ... subvalue || static_cast(maxv - new_sub_value) < m_value // ... whole expression @@ -273,7 +273,7 @@ namespace boost ) return false; m_value = static_cast(m_value + new_sub_value); - + return true; } @@ -283,7 +283,7 @@ namespace boost return false; } } - + return true; } }; diff --git a/src/boost/boost/lexical_cast/detail/widest_char.hpp b/src/boost/boost/lexical_cast/detail/widest_char.hpp index a80591595..cfdc0d28a 100644 --- a/src/boost/boost/lexical_cast/detail/widest_char.hpp +++ b/src/boost/boost/lexical_cast/detail/widest_char.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/src/boost/boost/lexical_cast/try_lexical_convert.hpp b/src/boost/boost/lexical_cast/try_lexical_convert.hpp index e2dafecfa..4eb4a7b5b 100644 --- a/src/boost/boost/lexical_cast/try_lexical_convert.hpp +++ b/src/boost/boost/lexical_cast/try_lexical_convert.hpp @@ -1,6 +1,6 @@ // Copyright Kevlin Henney, 2000-2005. // Copyright Alexander Nasonov, 2006-2010. -// Copyright Antony Polukhin, 2011-2018. +// Copyright Antony Polukhin, 2011-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -81,18 +81,18 @@ namespace boost { boost::is_arithmetic::value && boost::is_arithmetic::value > type; - + BOOST_STATIC_CONSTANT(bool, value = ( type::value )); }; /* - * is_xchar_to_xchar::value is true, + * is_xchar_to_xchar::value is true, * Target and Souce are char types of the same size 1 (char, signed char, unsigned char). */ template - struct is_xchar_to_xchar + struct is_xchar_to_xchar { typedef boost::integral_constant< bool, @@ -101,7 +101,7 @@ namespace boost { boost::detail::is_character::value && boost::detail::is_character::value > type; - + BOOST_STATIC_CONSTANT(bool, value = ( type::value )); diff --git a/src/boost/boost/limits.hpp b/src/boost/boost/limits.hpp index 0baf5d2bd..8d02f92c8 100644 --- a/src/boost/boost/limits.hpp +++ b/src/boost/boost/limits.hpp @@ -59,8 +59,8 @@ namespace std BOOST_STATIC_CONSTANT(bool, is_integer = true); BOOST_STATIC_CONSTANT(bool, is_exact = true); BOOST_STATIC_CONSTANT(int, radix = 2); - static BOOST_LLT epsilon() throw() { return 0; }; - static BOOST_LLT round_error() throw() { return 0; }; + static BOOST_LLT epsilon() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; + static BOOST_LLT round_error() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; BOOST_STATIC_CONSTANT(int, min_exponent = 0); BOOST_STATIC_CONSTANT(int, min_exponent10 = 0); @@ -72,10 +72,10 @@ namespace std BOOST_STATIC_CONSTANT(bool, has_signaling_NaN = false); BOOST_STATIC_CONSTANT(bool, has_denorm = false); BOOST_STATIC_CONSTANT(bool, has_denorm_loss = false); - static BOOST_LLT infinity() throw() { return 0; }; - static BOOST_LLT quiet_NaN() throw() { return 0; }; - static BOOST_LLT signaling_NaN() throw() { return 0; }; - static BOOST_LLT denorm_min() throw() { return 0; }; + static BOOST_LLT infinity() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; + static BOOST_LLT quiet_NaN() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; + static BOOST_LLT signaling_NaN() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; + static BOOST_LLT denorm_min() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; BOOST_STATIC_CONSTANT(bool, is_iec559 = false); BOOST_STATIC_CONSTANT(bool, is_bounded = true); @@ -112,8 +112,8 @@ namespace std BOOST_STATIC_CONSTANT(bool, is_integer = true); BOOST_STATIC_CONSTANT(bool, is_exact = true); BOOST_STATIC_CONSTANT(int, radix = 2); - static BOOST_ULLT epsilon() throw() { return 0; }; - static BOOST_ULLT round_error() throw() { return 0; }; + static BOOST_ULLT epsilon() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; + static BOOST_ULLT round_error() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; BOOST_STATIC_CONSTANT(int, min_exponent = 0); BOOST_STATIC_CONSTANT(int, min_exponent10 = 0); @@ -125,10 +125,10 @@ namespace std BOOST_STATIC_CONSTANT(bool, has_signaling_NaN = false); BOOST_STATIC_CONSTANT(bool, has_denorm = false); BOOST_STATIC_CONSTANT(bool, has_denorm_loss = false); - static BOOST_ULLT infinity() throw() { return 0; }; - static BOOST_ULLT quiet_NaN() throw() { return 0; }; - static BOOST_ULLT signaling_NaN() throw() { return 0; }; - static BOOST_ULLT denorm_min() throw() { return 0; }; + static BOOST_ULLT infinity() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; + static BOOST_ULLT quiet_NaN() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; + static BOOST_ULLT signaling_NaN() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; + static BOOST_ULLT denorm_min() BOOST_NOEXCEPT_OR_NOTHROW { return 0; }; BOOST_STATIC_CONSTANT(bool, is_iec559 = false); BOOST_STATIC_CONSTANT(bool, is_bounded = true); diff --git a/src/boost/boost/math/policies/policy.hpp b/src/boost/boost/math/policies/policy.hpp deleted file mode 100644 index 47e6b9055..000000000 --- a/src/boost/boost/math/policies/policy.hpp +++ /dev/null @@ -1,1040 +0,0 @@ -// Copyright John Maddock 2007. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_POLICY_HPP -#define BOOST_MATH_POLICY_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -// Sadly we do need the .h versions of these to be sure of getting -// FLT_MANT_DIG etc. -#include -#include -#include -#include - -namespace boost{ namespace math{ - -namespace tools{ - -template -BOOST_MATH_CONSTEXPR int digits(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(T)) BOOST_NOEXCEPT; -template -BOOST_MATH_CONSTEXPR T epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(T)) BOOST_MATH_NOEXCEPT(T); - -} - -namespace policies{ - -// -// Define macros for our default policies, if they're not defined already: -// -// Special cases for exceptions disabled first: -// -#ifdef BOOST_NO_EXCEPTIONS -# ifndef BOOST_MATH_DOMAIN_ERROR_POLICY -# define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error -# endif -# ifndef BOOST_MATH_POLE_ERROR_POLICY -# define BOOST_MATH_POLE_ERROR_POLICY errno_on_error -# endif -# ifndef BOOST_MATH_OVERFLOW_ERROR_POLICY -# define BOOST_MATH_OVERFLOW_ERROR_POLICY errno_on_error -# endif -# ifndef BOOST_MATH_EVALUATION_ERROR_POLICY -# define BOOST_MATH_EVALUATION_ERROR_POLICY errno_on_error -# endif -# ifndef BOOST_MATH_ROUNDING_ERROR_POLICY -# define BOOST_MATH_ROUNDING_ERROR_POLICY errno_on_error -# endif -#endif -// -// Then the regular cases: -// -#ifndef BOOST_MATH_DOMAIN_ERROR_POLICY -#define BOOST_MATH_DOMAIN_ERROR_POLICY throw_on_error -#endif -#ifndef BOOST_MATH_POLE_ERROR_POLICY -#define BOOST_MATH_POLE_ERROR_POLICY throw_on_error -#endif -#ifndef BOOST_MATH_OVERFLOW_ERROR_POLICY -#define BOOST_MATH_OVERFLOW_ERROR_POLICY throw_on_error -#endif -#ifndef BOOST_MATH_EVALUATION_ERROR_POLICY -#define BOOST_MATH_EVALUATION_ERROR_POLICY throw_on_error -#endif -#ifndef BOOST_MATH_ROUNDING_ERROR_POLICY -#define BOOST_MATH_ROUNDING_ERROR_POLICY throw_on_error -#endif -#ifndef BOOST_MATH_UNDERFLOW_ERROR_POLICY -#define BOOST_MATH_UNDERFLOW_ERROR_POLICY ignore_error -#endif -#ifndef BOOST_MATH_DENORM_ERROR_POLICY -#define BOOST_MATH_DENORM_ERROR_POLICY ignore_error -#endif -#ifndef BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY -#define BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY ignore_error -#endif -#ifndef BOOST_MATH_DIGITS10_POLICY -#define BOOST_MATH_DIGITS10_POLICY 0 -#endif -#ifndef BOOST_MATH_PROMOTE_FLOAT_POLICY -#define BOOST_MATH_PROMOTE_FLOAT_POLICY true -#endif -#ifndef BOOST_MATH_PROMOTE_DOUBLE_POLICY -#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -#define BOOST_MATH_PROMOTE_DOUBLE_POLICY false -#else -#define BOOST_MATH_PROMOTE_DOUBLE_POLICY true -#endif -#endif -#ifndef BOOST_MATH_DISCRETE_QUANTILE_POLICY -#define BOOST_MATH_DISCRETE_QUANTILE_POLICY integer_round_outwards -#endif -#ifndef BOOST_MATH_ASSERT_UNDEFINED_POLICY -#define BOOST_MATH_ASSERT_UNDEFINED_POLICY true -#endif -#ifndef BOOST_MATH_MAX_SERIES_ITERATION_POLICY -#define BOOST_MATH_MAX_SERIES_ITERATION_POLICY 1000000 -#endif -#ifndef BOOST_MATH_MAX_ROOT_ITERATION_POLICY -#define BOOST_MATH_MAX_ROOT_ITERATION_POLICY 200 -#endif - -#if !defined(__BORLANDC__) -#define BOOST_MATH_META_INT(type, name, Default)\ - template struct name : public boost::mpl::int_{};\ - namespace detail{\ - template \ - char test_is_valid_arg(const name*);\ - char test_is_default_arg(const name*);\ - template struct is_##name##_imp\ - {\ - template static char test(const name*);\ - static double test(...);\ - BOOST_STATIC_CONSTANT(bool, value = sizeof(test(static_cast(0))) == 1);\ - };\ - }\ - template struct is_##name : public boost::mpl::bool_< ::boost::math::policies::detail::is_##name##_imp::value>{}; - -#define BOOST_MATH_META_BOOL(name, Default)\ - template struct name : public boost::mpl::bool_{};\ - namespace detail{\ - template \ - char test_is_valid_arg(const name*);\ - char test_is_default_arg(const name*);\ - template struct is_##name##_imp\ - {\ - template static char test(const name*);\ - static double test(...);\ - BOOST_STATIC_CONSTANT(bool, value = sizeof(test(static_cast(0))) == 1);\ - };\ - }\ - template struct is_##name : public boost::mpl::bool_< ::boost::math::policies::detail::is_##name##_imp::value>{}; -#else -#define BOOST_MATH_META_INT(Type, name, Default)\ - template struct name : public boost::mpl::int_{};\ - namespace detail{\ - template \ - char test_is_valid_arg(const name*);\ - char test_is_default_arg(const name*);\ - template struct is_##name##_tester\ - {\ - template static char test(const name&);\ - static double test(...);\ - };\ - template struct is_##name##_imp\ - {\ - static T inst;\ - BOOST_STATIC_CONSTANT(bool, value = sizeof( ::boost::math::policies::detail::is_##name##_tester::test(inst)) == 1);\ - };\ - }\ - template struct is_##name : public boost::mpl::bool_< ::boost::math::policies::detail::is_##name##_imp::value>\ - {\ - template struct apply{ typedef is_##name type; };\ - }; - -#define BOOST_MATH_META_BOOL(name, Default)\ - template struct name : public boost::mpl::bool_{};\ - namespace detail{\ - template \ - char test_is_valid_arg(const name*);\ - char test_is_default_arg(const name*);\ - template struct is_##name##_tester\ - {\ - template static char test(const name&);\ - static double test(...);\ - };\ - template struct is_##name##_imp\ - {\ - static T inst;\ - BOOST_STATIC_CONSTANT(bool, value = sizeof( ::boost::math::policies::detail::is_##name##_tester::test(inst)) == 1);\ - };\ - }\ - template struct is_##name : public boost::mpl::bool_< ::boost::math::policies::detail::is_##name##_imp::value>\ - {\ - template struct apply{ typedef is_##name type; };\ - }; -#endif -// -// Begin by defining policy types for error handling: -// -enum error_policy_type -{ - throw_on_error = 0, - errno_on_error = 1, - ignore_error = 2, - user_error = 3 -}; - -BOOST_MATH_META_INT(error_policy_type, domain_error, BOOST_MATH_DOMAIN_ERROR_POLICY) -BOOST_MATH_META_INT(error_policy_type, pole_error, BOOST_MATH_POLE_ERROR_POLICY) -BOOST_MATH_META_INT(error_policy_type, overflow_error, BOOST_MATH_OVERFLOW_ERROR_POLICY) -BOOST_MATH_META_INT(error_policy_type, underflow_error, BOOST_MATH_UNDERFLOW_ERROR_POLICY) -BOOST_MATH_META_INT(error_policy_type, denorm_error, BOOST_MATH_DENORM_ERROR_POLICY) -BOOST_MATH_META_INT(error_policy_type, evaluation_error, BOOST_MATH_EVALUATION_ERROR_POLICY) -BOOST_MATH_META_INT(error_policy_type, rounding_error, BOOST_MATH_ROUNDING_ERROR_POLICY) -BOOST_MATH_META_INT(error_policy_type, indeterminate_result_error, BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY) - -// -// Policy types for internal promotion: -// -BOOST_MATH_META_BOOL(promote_float, BOOST_MATH_PROMOTE_FLOAT_POLICY) -BOOST_MATH_META_BOOL(promote_double, BOOST_MATH_PROMOTE_DOUBLE_POLICY) -BOOST_MATH_META_BOOL(assert_undefined, BOOST_MATH_ASSERT_UNDEFINED_POLICY) -// -// Policy types for discrete quantiles: -// -enum discrete_quantile_policy_type -{ - real, - integer_round_outwards, - integer_round_inwards, - integer_round_down, - integer_round_up, - integer_round_nearest -}; - -BOOST_MATH_META_INT(discrete_quantile_policy_type, discrete_quantile, BOOST_MATH_DISCRETE_QUANTILE_POLICY) -// -// Precision: -// -BOOST_MATH_META_INT(int, digits10, BOOST_MATH_DIGITS10_POLICY) -BOOST_MATH_META_INT(int, digits2, 0) -// -// Iterations: -// -BOOST_MATH_META_INT(unsigned long, max_series_iterations, BOOST_MATH_MAX_SERIES_ITERATION_POLICY) -BOOST_MATH_META_INT(unsigned long, max_root_iterations, BOOST_MATH_MAX_ROOT_ITERATION_POLICY) -// -// Define the names for each possible policy: -// -#define BOOST_MATH_PARAMETER(name)\ - BOOST_PARAMETER_TEMPLATE_KEYWORD(name##_name)\ - BOOST_PARAMETER_NAME(name##_name) - -struct default_policy{}; - -namespace detail{ -// -// Trait to work out bits precision from digits10 and digits2: -// -template -struct precision -{ - // - // Now work out the precision: - // - typedef typename mpl::if_c< - (Digits10::value == 0), - digits2<0>, - digits2<((Digits10::value + 1) * 1000L) / 301L> - >::type digits2_type; -public: -#ifdef __BORLANDC__ - typedef typename mpl::if_c< - (Digits2::value > ::boost::math::policies::detail::precision::digits2_type::value), - Digits2, digits2_type>::type type; -#else - typedef typename mpl::if_c< - (Digits2::value > digits2_type::value), - Digits2, digits2_type>::type type; -#endif -}; - -template -struct select_result -{ - typedef A type; -}; -template -struct select_result -{ - typedef typename mpl::deref::type type; -}; - -template -struct find_arg -{ -private: - typedef typename mpl::find_if::type iter; - typedef typename mpl::end::type end_type; -public: - typedef typename select_result< - DefaultType, iter, - ::boost::is_same::value>::type type; -}; - -double test_is_valid_arg(...); -double test_is_default_arg(...); -char test_is_valid_arg(const default_policy*); -char test_is_default_arg(const default_policy*); - -template -struct is_valid_policy_imp -{ - BOOST_STATIC_CONSTANT(bool, value = sizeof(::boost::math::policies::detail::test_is_valid_arg(static_cast(0))) == 1); -}; - -template -struct is_default_policy_imp -{ - BOOST_STATIC_CONSTANT(bool, value = sizeof(::boost::math::policies::detail::test_is_default_arg(static_cast(0))) == 1); -}; - -template struct is_valid_policy -: public mpl::bool_< - ::boost::math::policies::detail::is_valid_policy_imp::value> -{}; - -template struct is_default_policy -: public mpl::bool_< - ::boost::math::policies::detail::is_default_policy_imp::value> -{ - template - struct apply - { - typedef is_default_policy type; - }; -}; - -template -struct append_N -{ - typedef typename mpl::push_back::type new_seq; - typedef typename append_N::type type; -}; - -template -struct append_N -{ - typedef Seq type; -}; - -// -// Traits class to work out what template parameters our default -// policy<> class will have when modified for forwarding: -// -template -struct default_args -{ - typedef promote_float arg1; - typedef promote_double arg2; -}; - -template <> -struct default_args -{ - typedef default_policy arg1; - typedef default_policy arg2; -}; - -template <> -struct default_args -{ - typedef promote_float arg1; - typedef default_policy arg2; -}; - -template <> -struct default_args -{ - typedef promote_double arg1; - typedef default_policy arg2; -}; - -typedef default_args::arg1 forwarding_arg1; -typedef default_args::arg2 forwarding_arg2; - -} // detail -// -// Now define the policy type with enough arguments to handle all -// the policies: -// -template -struct policy -{ -private: - // - // Validate all our arguments: - // - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - BOOST_STATIC_ASSERT(::boost::math::policies::detail::is_valid_policy::value); - // - // Typelist of the arguments: - // - typedef mpl::list arg_list; - -public: - typedef typename detail::find_arg, domain_error<> >::type domain_error_type; - typedef typename detail::find_arg, pole_error<> >::type pole_error_type; - typedef typename detail::find_arg, overflow_error<> >::type overflow_error_type; - typedef typename detail::find_arg, underflow_error<> >::type underflow_error_type; - typedef typename detail::find_arg, denorm_error<> >::type denorm_error_type; - typedef typename detail::find_arg, evaluation_error<> >::type evaluation_error_type; - typedef typename detail::find_arg, rounding_error<> >::type rounding_error_type; - typedef typename detail::find_arg, indeterminate_result_error<> >::type indeterminate_result_error_type; -private: - // - // Now work out the precision: - // - typedef typename detail::find_arg, digits10<> >::type digits10_type; - typedef typename detail::find_arg, digits2<> >::type bits_precision_type; -public: - typedef typename detail::precision::type precision_type; - // - // Internal promotion: - // - typedef typename detail::find_arg, promote_float<> >::type promote_float_type; - typedef typename detail::find_arg, promote_double<> >::type promote_double_type; - // - // Discrete quantiles: - // - typedef typename detail::find_arg, discrete_quantile<> >::type discrete_quantile_type; - // - // Mathematically undefined properties: - // - typedef typename detail::find_arg, assert_undefined<> >::type assert_undefined_type; - // - // Max iterations: - // - typedef typename detail::find_arg, max_series_iterations<> >::type max_series_iterations_type; - typedef typename detail::find_arg, max_root_iterations<> >::type max_root_iterations_type; -}; -// -// These full specializations are defined to reduce the amount of -// template instantiations that have to take place when using the default -// policies, they have quite a large impact on compile times: -// -template <> -struct policy -{ -public: - typedef domain_error<> domain_error_type; - typedef pole_error<> pole_error_type; - typedef overflow_error<> overflow_error_type; - typedef underflow_error<> underflow_error_type; - typedef denorm_error<> denorm_error_type; - typedef evaluation_error<> evaluation_error_type; - typedef rounding_error<> rounding_error_type; - typedef indeterminate_result_error<> indeterminate_result_error_type; -#if BOOST_MATH_DIGITS10_POLICY == 0 - typedef digits2<> precision_type; -#else - typedef detail::precision, digits2<> >::type precision_type; -#endif - typedef promote_float<> promote_float_type; - typedef promote_double<> promote_double_type; - typedef discrete_quantile<> discrete_quantile_type; - typedef assert_undefined<> assert_undefined_type; - typedef max_series_iterations<> max_series_iterations_type; - typedef max_root_iterations<> max_root_iterations_type; -}; - -template <> -struct policy -{ -public: - typedef domain_error<> domain_error_type; - typedef pole_error<> pole_error_type; - typedef overflow_error<> overflow_error_type; - typedef underflow_error<> underflow_error_type; - typedef denorm_error<> denorm_error_type; - typedef evaluation_error<> evaluation_error_type; - typedef rounding_error<> rounding_error_type; - typedef indeterminate_result_error<> indeterminate_result_error_type; -#if BOOST_MATH_DIGITS10_POLICY == 0 - typedef digits2<> precision_type; -#else - typedef detail::precision, digits2<> >::type precision_type; -#endif - typedef promote_float promote_float_type; - typedef promote_double promote_double_type; - typedef discrete_quantile<> discrete_quantile_type; - typedef assert_undefined<> assert_undefined_type; - typedef max_series_iterations<> max_series_iterations_type; - typedef max_root_iterations<> max_root_iterations_type; -}; - -template -struct normalise -{ -private: - typedef mpl::list arg_list; - typedef typename detail::find_arg, typename Policy::domain_error_type >::type domain_error_type; - typedef typename detail::find_arg, typename Policy::pole_error_type >::type pole_error_type; - typedef typename detail::find_arg, typename Policy::overflow_error_type >::type overflow_error_type; - typedef typename detail::find_arg, typename Policy::underflow_error_type >::type underflow_error_type; - typedef typename detail::find_arg, typename Policy::denorm_error_type >::type denorm_error_type; - typedef typename detail::find_arg, typename Policy::evaluation_error_type >::type evaluation_error_type; - typedef typename detail::find_arg, typename Policy::rounding_error_type >::type rounding_error_type; - typedef typename detail::find_arg, typename Policy::indeterminate_result_error_type >::type indeterminate_result_error_type; - // - // Now work out the precision: - // - typedef typename detail::find_arg, digits10<> >::type digits10_type; - typedef typename detail::find_arg, typename Policy::precision_type >::type bits_precision_type; - typedef typename detail::precision::type precision_type; - // - // Internal promotion: - // - typedef typename detail::find_arg, typename Policy::promote_float_type >::type promote_float_type; - typedef typename detail::find_arg, typename Policy::promote_double_type >::type promote_double_type; - // - // Discrete quantiles: - // - typedef typename detail::find_arg, typename Policy::discrete_quantile_type >::type discrete_quantile_type; - // - // Mathematically undefined properties: - // - typedef typename detail::find_arg, typename Policy::assert_undefined_type >::type assert_undefined_type; - // - // Max iterations: - // - typedef typename detail::find_arg, typename Policy::max_series_iterations_type>::type max_series_iterations_type; - typedef typename detail::find_arg, typename Policy::max_root_iterations_type>::type max_root_iterations_type; - // - // Define a typelist of the policies: - // - typedef mpl::vector< - domain_error_type, - pole_error_type, - overflow_error_type, - underflow_error_type, - denorm_error_type, - evaluation_error_type, - rounding_error_type, - indeterminate_result_error_type, - precision_type, - promote_float_type, - promote_double_type, - discrete_quantile_type, - assert_undefined_type, - max_series_iterations_type, - max_root_iterations_type> result_list; - // - // Remove all the policies that are the same as the default: - // - typedef typename mpl::remove_if >::type reduced_list; - // - // Pad out the list with defaults: - // - typedef typename detail::append_N::value)>::type result_type; -public: - typedef policy< - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type, - typename mpl::at >::type > type; -}; -// -// Full specialisation to speed up compilation of the common case: -// -template <> -struct normalise, - promote_float, - promote_double, - discrete_quantile<>, - assert_undefined<>, - default_policy, - default_policy, - default_policy, - default_policy, - default_policy, - default_policy, - default_policy> -{ - typedef policy type; -}; - -template <> -struct normalise, - promote_float, - promote_double, - discrete_quantile<>, - assert_undefined<>, - default_policy, - default_policy, - default_policy, - default_policy, - default_policy, - default_policy, - default_policy> -{ - typedef policy type; -}; - -inline BOOST_MATH_CONSTEXPR policy<> make_policy() BOOST_NOEXCEPT -{ return policy<>(); } - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1>::type make_policy(const A1&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1>::type result_type; - return result_type(); -} - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1, A2>::type make_policy(const A1&, const A2&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1, A2>::type result_type; - return result_type(); -} - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1, A2, A3>::type make_policy(const A1&, const A2&, const A3&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1, A2, A3>::type result_type; - return result_type(); -} - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1, A2, A3, A4>::type make_policy(const A1&, const A2&, const A3&, const A4&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1, A2, A3, A4>::type result_type; - return result_type(); -} - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1, A2, A3, A4, A5>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1, A2, A3, A4, A5>::type result_type; - return result_type(); -} - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1, A2, A3, A4, A5, A6>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1, A2, A3, A4, A5, A6>::type result_type; - return result_type(); -} - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1, A2, A3, A4, A5, A6, A7>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1, A2, A3, A4, A5, A6, A7>::type result_type; - return result_type(); -} - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1, A2, A3, A4, A5, A6, A7, A8>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1, A2, A3, A4, A5, A6, A7, A8>::type result_type; - return result_type(); -} - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1, A2, A3, A4, A5, A6, A7, A8, A9>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&, const A9&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1, A2, A3, A4, A5, A6, A7, A8, A9>::type result_type; - return result_type(); -} - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&, const A9&, const A10&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::type result_type; - return result_type(); -} - -template -inline BOOST_MATH_CONSTEXPR typename normalise, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&, const A9&, const A10&, const A11&) BOOST_NOEXCEPT -{ - typedef typename normalise, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::type result_type; - return result_type(); -} - -// -// Traits class to handle internal promotion: -// -template -struct evaluation -{ - typedef Real type; -}; - -template -struct evaluation -{ - typedef typename mpl::if_::type type; -}; - -template -struct evaluation -{ - typedef typename mpl::if_::type type; -}; - -#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - -template -struct basic_digits : public mpl::int_<0>{ }; -template <> -struct basic_digits : public mpl::int_{ }; -template <> -struct basic_digits : public mpl::int_{ }; -template <> -struct basic_digits : public mpl::int_{ }; - -template -struct precision -{ - BOOST_STATIC_ASSERT( ::std::numeric_limits::radix == 2); - typedef typename Policy::precision_type precision_type; - typedef basic_digits digits_t; - typedef typename mpl::if_< - mpl::equal_to >, - // Possibly unknown precision: - precision_type, - typename mpl::if_< - mpl::or_, mpl::less_equal > >, - // Default case, full precision for RealType: - digits2< ::std::numeric_limits::digits>, - // User customised precision: - precision_type - >::type - >::type type; -}; - -template -struct precision -{ - typedef digits2 type; -}; -template -struct precision -{ - typedef digits2 type; -}; -template -struct precision -{ - typedef digits2 type; -}; - -#else - -template -struct precision -{ - BOOST_STATIC_ASSERT((::std::numeric_limits::radix == 2) || ((::std::numeric_limits::is_specialized == 0) || (::std::numeric_limits::digits == 0))); -#ifndef __BORLANDC__ - typedef typename Policy::precision_type precision_type; - typedef typename mpl::if_c< - ((::std::numeric_limits::is_specialized == 0) || (::std::numeric_limits::digits == 0)), - // Possibly unknown precision: - precision_type, - typename mpl::if_c< - ((::std::numeric_limits::digits <= precision_type::value) - || (Policy::precision_type::value <= 0)), - // Default case, full precision for RealType: - digits2< ::std::numeric_limits::digits>, - // User customised precision: - precision_type - >::type - >::type type; -#else - typedef typename Policy::precision_type precision_type; - typedef mpl::int_< ::std::numeric_limits::digits> digits_t; - typedef mpl::bool_< ::std::numeric_limits::is_specialized> spec_t; - typedef typename mpl::if_< - mpl::or_, mpl::equal_to > >, - // Possibly unknown precision: - precision_type, - typename mpl::if_< - mpl::or_, mpl::less_equal > >, - // Default case, full precision for RealType: - digits2< ::std::numeric_limits::digits>, - // User customised precision: - precision_type - >::type - >::type type; -#endif -}; - -#endif - -#ifdef BOOST_MATH_USE_FLOAT128 - -template -struct precision -{ - typedef mpl::int_<113> type; -}; - -#endif - -namespace detail{ - -template -inline BOOST_MATH_CONSTEXPR int digits_imp(mpl::true_ const&) BOOST_NOEXCEPT -{ -#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - BOOST_STATIC_ASSERT( ::std::numeric_limits::is_specialized); -#else - BOOST_ASSERT(::std::numeric_limits::is_specialized); -#endif - typedef typename boost::math::policies::precision::type p_t; - return p_t::value; -} - -template -inline BOOST_MATH_CONSTEXPR int digits_imp(mpl::false_ const&) BOOST_NOEXCEPT -{ - return tools::digits(); -} - -} // namespace detail - -template -inline BOOST_MATH_CONSTEXPR int digits(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(T)) BOOST_NOEXCEPT -{ - typedef mpl::bool_< std::numeric_limits::is_specialized > tag_type; - return detail::digits_imp(tag_type()); -} -template -inline BOOST_MATH_CONSTEXPR int digits_base10(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(T)) BOOST_NOEXCEPT -{ - return boost::math::policies::digits() * 301 / 1000L; -} - -template -inline BOOST_MATH_CONSTEXPR unsigned long get_max_series_iterations() BOOST_NOEXCEPT -{ - typedef typename Policy::max_series_iterations_type iter_type; - return iter_type::value; -} - -template -inline BOOST_MATH_CONSTEXPR unsigned long get_max_root_iterations() BOOST_NOEXCEPT -{ - typedef typename Policy::max_root_iterations_type iter_type; - return iter_type::value; -} - -namespace detail{ - -template -struct series_factor_calc -{ - static T get() BOOST_MATH_NOEXCEPT(T) - { - return ldexp(T(1.0), 1 - Digits::value); - } -}; - -template -struct series_factor_calc -{ - static BOOST_MATH_CONSTEXPR T get() BOOST_MATH_NOEXCEPT(T) - { - return boost::math::tools::epsilon(); - } -}; -template -struct series_factor_calc -{ - static BOOST_MATH_CONSTEXPR T get() BOOST_MATH_NOEXCEPT(T) - { - return 1 / static_cast(static_cast(1u) << (Digits::value - 1)); - } -}; -template -struct series_factor_calc -{ - static BOOST_MATH_CONSTEXPR T get() BOOST_MATH_NOEXCEPT(T) - { - return boost::math::tools::epsilon(); - } -}; - -template -inline BOOST_MATH_CONSTEXPR T get_epsilon_imp(mpl::true_ const&) BOOST_MATH_NOEXCEPT(T) -{ -#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - BOOST_STATIC_ASSERT( ::std::numeric_limits::is_specialized); - BOOST_STATIC_ASSERT( ::std::numeric_limits::radix == 2); -#else - BOOST_ASSERT(::std::numeric_limits::is_specialized); - BOOST_ASSERT(::std::numeric_limits::radix == 2); -#endif - typedef typename boost::math::policies::precision::type p_t; - typedef mpl::bool_::digits> is_small_int; - typedef mpl::bool_= std::numeric_limits::digits> is_default_value; - return series_factor_calc::get(); -} - -template -inline BOOST_MATH_CONSTEXPR T get_epsilon_imp(mpl::false_ const&) BOOST_MATH_NOEXCEPT(T) -{ - return tools::epsilon(); -} - -} // namespace detail - -template -inline BOOST_MATH_CONSTEXPR T get_epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(T)) BOOST_MATH_NOEXCEPT(T) -{ - typedef mpl::bool_< (std::numeric_limits::is_specialized && (std::numeric_limits::radix == 2)) > tag_type; - return detail::get_epsilon_imp(tag_type()); -} - -namespace detail{ - -template -char test_is_policy(const policy*); -double test_is_policy(...); - -template -struct is_policy_imp -{ - BOOST_STATIC_CONSTANT(bool, value = (sizeof(::boost::math::policies::detail::test_is_policy(static_cast(0))) == 1)); -}; - -} - -template -struct is_policy : public mpl::bool_< ::boost::math::policies::detail::is_policy_imp

::value> {}; - -// -// Helper traits class for distribution error handling: -// -template -struct constructor_error_check -{ - typedef typename Policy::domain_error_type domain_error_type; - typedef typename mpl::if_c< - (domain_error_type::value == throw_on_error) || (domain_error_type::value == user_error) || (domain_error_type::value == errno_on_error), - mpl::true_, - mpl::false_>::type type; -}; - -template -struct method_error_check -{ - typedef typename Policy::domain_error_type domain_error_type; - typedef typename mpl::if_c< - (domain_error_type::value == throw_on_error) && (domain_error_type::value != user_error), - mpl::false_, - mpl::true_>::type type; -}; -// -// Does the Policy ever throw on error? -// -template -struct is_noexcept_error_policy -{ - typedef typename Policy::domain_error_type t1; - typedef typename Policy::pole_error_type t2; - typedef typename Policy::overflow_error_type t3; - typedef typename Policy::underflow_error_type t4; - typedef typename Policy::denorm_error_type t5; - typedef typename Policy::evaluation_error_type t6; - typedef typename Policy::rounding_error_type t7; - typedef typename Policy::indeterminate_result_error_type t8; - - BOOST_STATIC_CONSTANT(bool, value = - ((t1::value != throw_on_error) && (t1::value != user_error) - && (t2::value != throw_on_error) && (t2::value != user_error) - && (t3::value != throw_on_error) && (t3::value != user_error) - && (t4::value != throw_on_error) && (t4::value != user_error) - && (t5::value != throw_on_error) && (t5::value != user_error) - && (t6::value != throw_on_error) && (t6::value != user_error) - && (t7::value != throw_on_error) && (t7::value != user_error) - && (t8::value != throw_on_error) && (t8::value != user_error))); -}; - -}}} // namespaces - -#endif // BOOST_MATH_POLICY_HPP - diff --git a/src/boost/boost/math/special_functions/detail/fp_traits.hpp b/src/boost/boost/math/special_functions/detail/fp_traits.hpp deleted file mode 100644 index 95acbf804..000000000 --- a/src/boost/boost/math/special_functions/detail/fp_traits.hpp +++ /dev/null @@ -1,581 +0,0 @@ -// fp_traits.hpp - -#ifndef BOOST_MATH_FP_TRAITS_HPP -#define BOOST_MATH_FP_TRAITS_HPP - -// Copyright (c) 2006 Johan Rade - -// 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) - -/* -To support old compilers, care has been taken to avoid partial template -specialization and meta function forwarding. -With these techniques, the code could be simplified. -*/ - -#if defined(__vms) && defined(__DECCXX) && !__IEEE_FLOAT -// The VAX floating point formats are used (for float and double) -# define BOOST_FPCLASSIFY_VAX_FORMAT -#endif - -#include - -#include -#include -#include -#include -#include - -#ifdef BOOST_NO_STDC_NAMESPACE - namespace std{ using ::memcpy; } -#endif - -#ifndef FP_NORMAL - -#define FP_ZERO 0 -#define FP_NORMAL 1 -#define FP_INFINITE 2 -#define FP_NAN 3 -#define FP_SUBNORMAL 4 - -#else - -#define BOOST_HAS_FPCLASSIFY - -#ifndef fpclassify -# if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) \ - && defined(_GLIBCXX_USE_C99_MATH) \ - && !(defined(_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) \ - && (_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC != 0)) -# ifdef _STLP_VENDOR_CSTD -# if _STLPORT_VERSION >= 0x520 -# define BOOST_FPCLASSIFY_PREFIX ::__std_alias:: -# else -# define BOOST_FPCLASSIFY_PREFIX ::_STLP_VENDOR_CSTD:: -# endif -# else -# define BOOST_FPCLASSIFY_PREFIX ::std:: -# endif -# else -# undef BOOST_HAS_FPCLASSIFY -# define BOOST_FPCLASSIFY_PREFIX -# endif -#elif (defined(__HP_aCC) && !defined(__hppa)) -// aCC 6 appears to do "#define fpclassify fpclassify" which messes us up a bit! -# define BOOST_FPCLASSIFY_PREFIX :: -#else -# define BOOST_FPCLASSIFY_PREFIX -#endif - -#ifdef __MINGW32__ -# undef BOOST_HAS_FPCLASSIFY -#endif - -#endif - - -//------------------------------------------------------------------------------ - -namespace boost { -namespace math { -namespace detail { - -//------------------------------------------------------------------------------ - -/* -The following classes are used to tag the different methods that are used -for floating point classification -*/ - -struct native_tag {}; -template -struct generic_tag {}; -struct ieee_tag {}; -struct ieee_copy_all_bits_tag : public ieee_tag {}; -struct ieee_copy_leading_bits_tag : public ieee_tag {}; - -#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -// -// These helper functions are used only when numeric_limits<> -// members are not compile time constants: -// -inline bool is_generic_tag_false(const generic_tag*) -{ - return true; -} -inline bool is_generic_tag_false(const void*) -{ - return false; -} -#endif - -//------------------------------------------------------------------------------ - -/* -Most processors support three different floating point precisions: -single precision (32 bits), double precision (64 bits) -and extended double precision (80 - 128 bits, depending on the processor) - -Note that the C++ type long double can be implemented -both as double precision and extended double precision. -*/ - -struct unknown_precision{}; -struct single_precision {}; -struct double_precision {}; -struct extended_double_precision {}; - -// native_tag version -------------------------------------------------------------- - -template struct fp_traits_native -{ - typedef native_tag method; -}; - -// generic_tag version ------------------------------------------------------------- - -template struct fp_traits_non_native -{ -#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - typedef generic_tag::is_specialized> method; -#else - typedef generic_tag method; -#endif -}; - -// ieee_tag versions --------------------------------------------------------------- - -/* -These specializations of fp_traits_non_native contain information needed -to "parse" the binary representation of a floating point number. - -Typedef members: - - bits -- the target type when copying the leading bytes of a floating - point number. It is a typedef for uint32_t or uint64_t. - - method -- tells us whether all bytes are copied or not. - It is a typedef for ieee_copy_all_bits_tag or ieee_copy_leading_bits_tag. - -Static data members: - - sign, exponent, flag, significand -- bit masks that give the meaning of the - bits in the leading bytes. - -Static function members: - - get_bits(), set_bits() -- provide access to the leading bytes. - -*/ - -// ieee_tag version, float (32 bits) ----------------------------------------------- - -#ifndef BOOST_FPCLASSIFY_VAX_FORMAT - -template<> struct fp_traits_non_native -{ - typedef ieee_copy_all_bits_tag method; - - BOOST_STATIC_CONSTANT(uint32_t, sign = 0x80000000u); - BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7f800000); - BOOST_STATIC_CONSTANT(uint32_t, flag = 0x00000000); - BOOST_STATIC_CONSTANT(uint32_t, significand = 0x007fffff); - - typedef uint32_t bits; - static void get_bits(float x, uint32_t& a) { std::memcpy(&a, &x, 4); } - static void set_bits(float& x, uint32_t a) { std::memcpy(&x, &a, 4); } -}; - -// ieee_tag version, double (64 bits) ---------------------------------------------- - -#if defined(BOOST_NO_INT64_T) || defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION) \ - || defined(__BORLANDC__) || defined(__CODEGEAR__) - -template<> struct fp_traits_non_native -{ - typedef ieee_copy_leading_bits_tag method; - - BOOST_STATIC_CONSTANT(uint32_t, sign = 0x80000000u); - BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7ff00000); - BOOST_STATIC_CONSTANT(uint32_t, flag = 0); - BOOST_STATIC_CONSTANT(uint32_t, significand = 0x000fffff); - - typedef uint32_t bits; - - static void get_bits(double x, uint32_t& a) - { - std::memcpy(&a, reinterpret_cast(&x) + offset_, 4); - } - - static void set_bits(double& x, uint32_t a) - { - std::memcpy(reinterpret_cast(&x) + offset_, &a, 4); - } - -private: - -#if BOOST_ENDIAN_BIG_BYTE - BOOST_STATIC_CONSTANT(int, offset_ = 0); -#elif BOOST_ENDIAN_LITTLE_BYTE - BOOST_STATIC_CONSTANT(int, offset_ = 4); -#else - BOOST_STATIC_ASSERT(false); -#endif -}; - -//.............................................................................. - -#else - -template<> struct fp_traits_non_native -{ - typedef ieee_copy_all_bits_tag method; - - static const uint64_t sign = ((uint64_t)0x80000000u) << 32; - static const uint64_t exponent = ((uint64_t)0x7ff00000) << 32; - static const uint64_t flag = 0; - static const uint64_t significand - = (((uint64_t)0x000fffff) << 32) + ((uint64_t)0xffffffffu); - - typedef uint64_t bits; - static void get_bits(double x, uint64_t& a) { std::memcpy(&a, &x, 8); } - static void set_bits(double& x, uint64_t a) { std::memcpy(&x, &a, 8); } -}; - -#endif - -#endif // #ifndef BOOST_FPCLASSIFY_VAX_FORMAT - -// long double (64 bits) ------------------------------------------------------- - -#if defined(BOOST_NO_INT64_T) || defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)\ - || defined(__BORLANDC__) || defined(__CODEGEAR__) - -template<> struct fp_traits_non_native -{ - typedef ieee_copy_leading_bits_tag method; - - BOOST_STATIC_CONSTANT(uint32_t, sign = 0x80000000u); - BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7ff00000); - BOOST_STATIC_CONSTANT(uint32_t, flag = 0); - BOOST_STATIC_CONSTANT(uint32_t, significand = 0x000fffff); - - typedef uint32_t bits; - - static void get_bits(long double x, uint32_t& a) - { - std::memcpy(&a, reinterpret_cast(&x) + offset_, 4); - } - - static void set_bits(long double& x, uint32_t a) - { - std::memcpy(reinterpret_cast(&x) + offset_, &a, 4); - } - -private: - -#if BOOST_ENDIAN_BIG_BYTE - BOOST_STATIC_CONSTANT(int, offset_ = 0); -#elif BOOST_ENDIAN_LITTLE_BYTE - BOOST_STATIC_CONSTANT(int, offset_ = 4); -#else - BOOST_STATIC_ASSERT(false); -#endif -}; - -//.............................................................................. - -#else - -template<> struct fp_traits_non_native -{ - typedef ieee_copy_all_bits_tag method; - - static const uint64_t sign = (uint64_t)0x80000000u << 32; - static const uint64_t exponent = (uint64_t)0x7ff00000 << 32; - static const uint64_t flag = 0; - static const uint64_t significand - = ((uint64_t)0x000fffff << 32) + (uint64_t)0xffffffffu; - - typedef uint64_t bits; - static void get_bits(long double x, uint64_t& a) { std::memcpy(&a, &x, 8); } - static void set_bits(long double& x, uint64_t a) { std::memcpy(&x, &a, 8); } -}; - -#endif - - -// long double (>64 bits), x86 and x64 ----------------------------------------- - -#if defined(__i386) || defined(__i386__) || defined(_M_IX86) \ - || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) \ - || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) - -// Intel extended double precision format (80 bits) - -template<> -struct fp_traits_non_native -{ - typedef ieee_copy_leading_bits_tag method; - - BOOST_STATIC_CONSTANT(uint32_t, sign = 0x80000000u); - BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7fff0000); - BOOST_STATIC_CONSTANT(uint32_t, flag = 0x00008000); - BOOST_STATIC_CONSTANT(uint32_t, significand = 0x00007fff); - - typedef uint32_t bits; - - static void get_bits(long double x, uint32_t& a) - { - std::memcpy(&a, reinterpret_cast(&x) + 6, 4); - } - - static void set_bits(long double& x, uint32_t a) - { - std::memcpy(reinterpret_cast(&x) + 6, &a, 4); - } -}; - - -// long double (>64 bits), Itanium --------------------------------------------- - -#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64) - -// The floating point format is unknown at compile time -// No template specialization is provided. -// The generic_tag definition is used. - -// The Itanium supports both -// the Intel extended double precision format (80 bits) and -// the IEEE extended double precision format with 15 exponent bits (128 bits). - -#elif defined(__GNUC__) && (LDBL_MANT_DIG == 106) - -// -// Define nothing here and fall though to generic_tag: -// We have GCC's "double double" in effect, and any attempt -// to handle it via bit-fiddling is pretty much doomed to fail... -// - -// long double (>64 bits), PowerPC --------------------------------------------- - -#elif defined(__powerpc) || defined(__powerpc__) || defined(__POWERPC__) \ - || defined(__ppc) || defined(__ppc__) || defined(__PPC__) - -// PowerPC extended double precision format (128 bits) - -template<> -struct fp_traits_non_native -{ - typedef ieee_copy_leading_bits_tag method; - - BOOST_STATIC_CONSTANT(uint32_t, sign = 0x80000000u); - BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7ff00000); - BOOST_STATIC_CONSTANT(uint32_t, flag = 0x00000000); - BOOST_STATIC_CONSTANT(uint32_t, significand = 0x000fffff); - - typedef uint32_t bits; - - static void get_bits(long double x, uint32_t& a) - { - std::memcpy(&a, reinterpret_cast(&x) + offset_, 4); - } - - static void set_bits(long double& x, uint32_t a) - { - std::memcpy(reinterpret_cast(&x) + offset_, &a, 4); - } - -private: - -#if BOOST_ENDIAN_BIG_BYTE - BOOST_STATIC_CONSTANT(int, offset_ = 0); -#elif BOOST_ENDIAN_LITTLE_BYTE - BOOST_STATIC_CONSTANT(int, offset_ = 12); -#else - BOOST_STATIC_ASSERT(false); -#endif -}; - - -// long double (>64 bits), Motorola 68K ---------------------------------------- - -#elif defined(__m68k) || defined(__m68k__) \ - || defined(__mc68000) || defined(__mc68000__) \ - -// Motorola extended double precision format (96 bits) - -// It is the same format as the Intel extended double precision format, -// except that 1) it is big-endian, 2) the 3rd and 4th byte are padding, and -// 3) the flag bit is not set for infinity - -template<> -struct fp_traits_non_native -{ - typedef ieee_copy_leading_bits_tag method; - - BOOST_STATIC_CONSTANT(uint32_t, sign = 0x80000000u); - BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7fff0000); - BOOST_STATIC_CONSTANT(uint32_t, flag = 0x00008000); - BOOST_STATIC_CONSTANT(uint32_t, significand = 0x00007fff); - - // copy 1st, 2nd, 5th and 6th byte. 3rd and 4th byte are padding. - - typedef uint32_t bits; - - static void get_bits(long double x, uint32_t& a) - { - std::memcpy(&a, &x, 2); - std::memcpy(reinterpret_cast(&a) + 2, - reinterpret_cast(&x) + 4, 2); - } - - static void set_bits(long double& x, uint32_t a) - { - std::memcpy(&x, &a, 2); - std::memcpy(reinterpret_cast(&x) + 4, - reinterpret_cast(&a) + 2, 2); - } -}; - - -// long double (>64 bits), All other processors -------------------------------- - -#else - -// IEEE extended double precision format with 15 exponent bits (128 bits) - -template<> -struct fp_traits_non_native -{ - typedef ieee_copy_leading_bits_tag method; - - BOOST_STATIC_CONSTANT(uint32_t, sign = 0x80000000u); - BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7fff0000); - BOOST_STATIC_CONSTANT(uint32_t, flag = 0x00000000); - BOOST_STATIC_CONSTANT(uint32_t, significand = 0x0000ffff); - - typedef uint32_t bits; - - static void get_bits(long double x, uint32_t& a) - { - std::memcpy(&a, reinterpret_cast(&x) + offset_, 4); - } - - static void set_bits(long double& x, uint32_t a) - { - std::memcpy(reinterpret_cast(&x) + offset_, &a, 4); - } - -private: - -#if BOOST_ENDIAN_BIG_BYTE - BOOST_STATIC_CONSTANT(int, offset_ = 0); -#elif BOOST_ENDIAN_LITTLE_BYTE - BOOST_STATIC_CONSTANT(int, offset_ = 12); -#else - BOOST_STATIC_ASSERT(false); -#endif -}; - -#endif - -//------------------------------------------------------------------------------ - -// size_to_precision is a type switch for converting a C++ floating point type -// to the corresponding precision type. - -template struct size_to_precision -{ - typedef unknown_precision type; -}; - -template<> struct size_to_precision<4, true> -{ - typedef single_precision type; -}; - -template<> struct size_to_precision<8, true> -{ - typedef double_precision type; -}; - -template<> struct size_to_precision<10, true> -{ - typedef extended_double_precision type; -}; - -template<> struct size_to_precision<12, true> -{ - typedef extended_double_precision type; -}; - -template<> struct size_to_precision<16, true> -{ - typedef extended_double_precision type; -}; - -//------------------------------------------------------------------------------ -// -// Figure out whether to use native classification functions based on -// whether T is a built in floating point type or not: -// -template -struct select_native -{ - typedef BOOST_DEDUCED_TYPENAME size_to_precision::value>::type precision; - typedef fp_traits_non_native type; -}; -template<> -struct select_native -{ - typedef fp_traits_native type; -}; -template<> -struct select_native -{ - typedef fp_traits_native type; -}; -template<> -struct select_native -{ - typedef fp_traits_native type; -}; - -//------------------------------------------------------------------------------ - -// fp_traits is a type switch that selects the right fp_traits_non_native - -#if (defined(BOOST_MATH_USE_C99) && !(defined(__GNUC__) && (__GNUC__ < 4))) \ - && !defined(__hpux) \ - && !defined(__DECCXX)\ - && !defined(__osf__) \ - && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)\ - && !defined(__FAST_MATH__)\ - && !defined(BOOST_MATH_DISABLE_STD_FPCLASSIFY)\ - && !defined(BOOST_INTEL)\ - && !defined(sun)\ - && !defined(__VXWORKS__) -# define BOOST_MATH_USE_STD_FPCLASSIFY -#endif - -template struct fp_traits -{ - typedef BOOST_DEDUCED_TYPENAME size_to_precision::value>::type precision; -#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && !defined(BOOST_MATH_DISABLE_STD_FPCLASSIFY) - typedef typename select_native::type type; -#else - typedef fp_traits_non_native type; -#endif - typedef fp_traits_non_native sign_change_type; -}; - -//------------------------------------------------------------------------------ - -} // namespace detail -} // namespace math -} // namespace boost - -#endif diff --git a/src/boost/boost/math/special_functions/detail/round_fwd.hpp b/src/boost/boost/math/special_functions/detail/round_fwd.hpp deleted file mode 100644 index 72f224922..000000000 --- a/src/boost/boost/math/special_functions/detail/round_fwd.hpp +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright John Maddock 2008. - -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt -// or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_SPECIAL_ROUND_FWD_HPP -#define BOOST_MATH_SPECIAL_ROUND_FWD_HPP - -#include -#include - -#ifdef _MSC_VER -#pragma once -#endif - -namespace boost -{ - namespace math - { - - template - typename tools::promote_args::type trunc(const T& v, const Policy& pol); - template - typename tools::promote_args::type trunc(const T& v); - template - int itrunc(const T& v, const Policy& pol); - template - int itrunc(const T& v); - template - long ltrunc(const T& v, const Policy& pol); - template - long ltrunc(const T& v); -#ifdef BOOST_HAS_LONG_LONG - template - boost::long_long_type lltrunc(const T& v, const Policy& pol); - template - boost::long_long_type lltrunc(const T& v); -#endif - template - typename tools::promote_args::type round(const T& v, const Policy& pol); - template - typename tools::promote_args::type round(const T& v); - template - int iround(const T& v, const Policy& pol); - template - int iround(const T& v); - template - long lround(const T& v, const Policy& pol); - template - long lround(const T& v); -#ifdef BOOST_HAS_LONG_LONG - template - boost::long_long_type llround(const T& v, const Policy& pol); - template - boost::long_long_type llround(const T& v); -#endif - template - T modf(const T& v, T* ipart, const Policy& pol); - template - T modf(const T& v, T* ipart); - template - T modf(const T& v, int* ipart, const Policy& pol); - template - T modf(const T& v, int* ipart); - template - T modf(const T& v, long* ipart, const Policy& pol); - template - T modf(const T& v, long* ipart); -#ifdef BOOST_HAS_LONG_LONG - template - T modf(const T& v, boost::long_long_type* ipart, const Policy& pol); - template - T modf(const T& v, boost::long_long_type* ipart); -#endif - - } -} - -#undef BOOST_MATH_STD_USING -#define BOOST_MATH_STD_USING BOOST_MATH_STD_USING_CORE\ - using boost::math::round;\ - using boost::math::iround;\ - using boost::math::lround;\ - using boost::math::trunc;\ - using boost::math::itrunc;\ - using boost::math::ltrunc;\ - using boost::math::modf; - - -#endif // BOOST_MATH_SPECIAL_ROUND_FWD_HPP - diff --git a/src/boost/boost/math/special_functions/fpclassify.hpp b/src/boost/boost/math/special_functions/fpclassify.hpp deleted file mode 100644 index aab8c674f..000000000 --- a/src/boost/boost/math/special_functions/fpclassify.hpp +++ /dev/null @@ -1,640 +0,0 @@ -// Copyright John Maddock 2005-2008. -// Copyright (c) 2006-2008 Johan Rade -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_FPCLASSIFY_HPP -#define BOOST_MATH_FPCLASSIFY_HPP - -#ifdef _MSC_VER -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -/*! - \file fpclassify.hpp - \brief Classify floating-point value as normal, subnormal, zero, infinite, or NaN. - \version 1.0 - \author John Maddock - */ - -/* - -1. If the platform is C99 compliant, then the native floating point -classification functions are used. However, note that we must only -define the functions which call std::fpclassify etc if that function -really does exist: otherwise a compiler may reject the code even though -the template is never instantiated. - -2. If the platform is not C99 compliant, and the binary format for -a floating point type (float, double or long double) can be determined -at compile time, then the following algorithm is used: - - If all exponent bits, the flag bit (if there is one), - and all significand bits are 0, then the number is zero. - - If all exponent bits and the flag bit (if there is one) are 0, - and at least one significand bit is 1, then the number is subnormal. - - If all exponent bits are 1 and all significand bits are 0, - then the number is infinity. - - If all exponent bits are 1 and at least one significand bit is 1, - then the number is a not-a-number. - - Otherwise the number is normal. - - This algorithm works for the IEEE 754 representation, - and also for several non IEEE 754 formats. - - Most formats have the structure - sign bit + exponent bits + significand bits. - - A few have the structure - sign bit + exponent bits + flag bit + significand bits. - The flag bit is 0 for zero and subnormal numbers, - and 1 for normal numbers and NaN. - It is 0 (Motorola 68K) or 1 (Intel) for infinity. - - To get the bits, the four or eight most significant bytes are copied - into an uint32_t or uint64_t and bit masks are applied. - This covers all the exponent bits and the flag bit (if there is one), - but not always all the significand bits. - Some of the functions below have two implementations, - depending on whether all the significand bits are copied or not. - -3. If the platform is not C99 compliant, and the binary format for -a floating point type (float, double or long double) can not be determined -at compile time, then comparison with std::numeric_limits values -is used. - -*/ - -#if defined(_MSC_VER) || defined(__BORLANDC__) -#include -#endif -#ifdef BOOST_MATH_USE_FLOAT128 -#ifdef __has_include -#if __has_include("quadmath.h") -#include "quadmath.h" -#define BOOST_MATH_HAS_QUADMATH_H -#endif -#endif -#endif - -#ifdef BOOST_NO_STDC_NAMESPACE - namespace std{ using ::abs; using ::fabs; } -#endif - -namespace boost{ - -// -// This must not be located in any namespace under boost::math -// otherwise we can get into an infinite loop if isnan is -// a #define for "isnan" ! -// -namespace math_detail{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4800) -#endif - -template -inline bool is_nan_helper(T t, const boost::true_type&) -{ -#ifdef isnan - return isnan(t); -#elif defined(BOOST_MATH_DISABLE_STD_FPCLASSIFY) || !defined(BOOST_HAS_FPCLASSIFY) - (void)t; - return false; -#else // BOOST_HAS_FPCLASSIFY - return (BOOST_FPCLASSIFY_PREFIX fpclassify(t) == (int)FP_NAN); -#endif -} - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template -inline bool is_nan_helper(T, const boost::false_type&) -{ - return false; -} -#if defined(BOOST_MATH_USE_FLOAT128) -#if defined(BOOST_MATH_HAS_QUADMATH_H) -inline bool is_nan_helper(__float128 f, const boost::true_type&) { return ::isnanq(f); } -inline bool is_nan_helper(__float128 f, const boost::false_type&) { return ::isnanq(f); } -#elif defined(BOOST_GNU_STDLIB) && BOOST_GNU_STDLIB && \ - _GLIBCXX_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC -inline bool is_nan_helper(__float128 f, const boost::true_type&) { return std::isnan(static_cast(f)); } -inline bool is_nan_helper(__float128 f, const boost::false_type&) { return std::isnan(static_cast(f)); } -#else -inline bool is_nan_helper(__float128 f, const boost::true_type&) { return ::isnan(static_cast(f)); } -inline bool is_nan_helper(__float128 f, const boost::false_type&) { return ::isnan(static_cast(f)); } -#endif -#endif -} - -namespace math{ - -namespace detail{ - -#ifdef BOOST_MATH_USE_STD_FPCLASSIFY -template -inline int fpclassify_imp BOOST_NO_MACRO_EXPAND(T t, const native_tag&) -{ - return (std::fpclassify)(t); -} -#endif - -template -inline int fpclassify_imp BOOST_NO_MACRO_EXPAND(T t, const generic_tag&) -{ - BOOST_MATH_INSTRUMENT_VARIABLE(t); - - // whenever possible check for Nan's first: -#if defined(BOOST_HAS_FPCLASSIFY) && !defined(BOOST_MATH_DISABLE_STD_FPCLASSIFY) - if(::boost::math_detail::is_nan_helper(t, ::boost::is_floating_point())) - return FP_NAN; -#elif defined(isnan) - if(boost::math_detail::is_nan_helper(t, ::boost::is_floating_point())) - return FP_NAN; -#elif defined(_MSC_VER) || defined(__BORLANDC__) - if(::_isnan(boost::math::tools::real_cast(t))) - return FP_NAN; -#endif - // std::fabs broken on a few systems especially for long long!!!! - T at = (t < T(0)) ? -t : t; - - // Use a process of exclusion to figure out - // what kind of type we have, this relies on - // IEEE conforming reals that will treat - // Nan's as unordered. Some compilers - // don't do this once optimisations are - // turned on, hence the check for nan's above. - if(at <= (std::numeric_limits::max)()) - { - if(at >= (std::numeric_limits::min)()) - return FP_NORMAL; - return (at != 0) ? FP_SUBNORMAL : FP_ZERO; - } - else if(at > (std::numeric_limits::max)()) - return FP_INFINITE; - return FP_NAN; -} - -template -inline int fpclassify_imp BOOST_NO_MACRO_EXPAND(T t, const generic_tag&) -{ -#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - if(std::numeric_limits::is_specialized) - return fpclassify_imp(t, generic_tag()); -#endif - // - // An unknown type with no numeric_limits support, - // so what are we supposed to do we do here? - // - BOOST_MATH_INSTRUMENT_VARIABLE(t); - - return t == 0 ? FP_ZERO : FP_NORMAL; -} - -template -int fpclassify_imp BOOST_NO_MACRO_EXPAND(T x, ieee_copy_all_bits_tag) -{ - typedef BOOST_DEDUCED_TYPENAME fp_traits::type traits; - - BOOST_MATH_INSTRUMENT_VARIABLE(x); - - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - BOOST_MATH_INSTRUMENT_VARIABLE(a); - a &= traits::exponent | traits::flag | traits::significand; - BOOST_MATH_INSTRUMENT_VARIABLE((traits::exponent | traits::flag | traits::significand)); - BOOST_MATH_INSTRUMENT_VARIABLE(a); - - if(a <= traits::significand) { - if(a == 0) - return FP_ZERO; - else - return FP_SUBNORMAL; - } - - if(a < traits::exponent) return FP_NORMAL; - - a &= traits::significand; - if(a == 0) return FP_INFINITE; - - return FP_NAN; -} - -template -int fpclassify_imp BOOST_NO_MACRO_EXPAND(T x, ieee_copy_leading_bits_tag) -{ - typedef BOOST_DEDUCED_TYPENAME fp_traits::type traits; - - BOOST_MATH_INSTRUMENT_VARIABLE(x); - - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - a &= traits::exponent | traits::flag | traits::significand; - - if(a <= traits::significand) { - if(x == 0) - return FP_ZERO; - else - return FP_SUBNORMAL; - } - - if(a < traits::exponent) return FP_NORMAL; - - a &= traits::significand; - traits::set_bits(x,a); - if(x == 0) return FP_INFINITE; - - return FP_NAN; -} - -#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && (defined(BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY) || defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)) -inline int fpclassify_imp BOOST_NO_MACRO_EXPAND(long double t, const native_tag&) -{ - return boost::math::detail::fpclassify_imp(t, generic_tag()); -} -#endif - -} // namespace detail - -template -inline int fpclassify BOOST_NO_MACRO_EXPAND(T t) -{ - typedef typename detail::fp_traits::type traits; - typedef typename traits::method method; - typedef typename tools::promote_args_permissive::type value_type; -#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - if(std::numeric_limits::is_specialized && detail::is_generic_tag_false(static_cast(0))) - return detail::fpclassify_imp(static_cast(t), detail::generic_tag()); - return detail::fpclassify_imp(static_cast(t), method()); -#else - return detail::fpclassify_imp(static_cast(t), method()); -#endif -} - -#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -template <> -inline int fpclassify BOOST_NO_MACRO_EXPAND(long double t) -{ - typedef detail::fp_traits::type traits; - typedef traits::method method; - typedef long double value_type; -#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - if(std::numeric_limits::is_specialized && detail::is_generic_tag_false(static_cast(0))) - return detail::fpclassify_imp(static_cast(t), detail::generic_tag()); - return detail::fpclassify_imp(static_cast(t), method()); -#else - return detail::fpclassify_imp(static_cast(t), method()); -#endif -} -#endif - -namespace detail { - -#ifdef BOOST_MATH_USE_STD_FPCLASSIFY - template - inline bool isfinite_impl(T x, native_tag const&) - { - return (std::isfinite)(x); - } -#endif - - template - inline bool isfinite_impl(T x, generic_tag const&) - { - return x >= -(std::numeric_limits::max)() - && x <= (std::numeric_limits::max)(); - } - - template - inline bool isfinite_impl(T x, generic_tag const&) - { -#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - if(std::numeric_limits::is_specialized) - return isfinite_impl(x, generic_tag()); -#endif - (void)x; // warning suppression. - return true; - } - - template - inline bool isfinite_impl(T x, ieee_tag const&) - { - typedef BOOST_DEDUCED_TYPENAME detail::fp_traits::type traits; - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - a &= traits::exponent; - return a != traits::exponent; - } - -#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && defined(BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY) -inline bool isfinite_impl BOOST_NO_MACRO_EXPAND(long double t, const native_tag&) -{ - return boost::math::detail::isfinite_impl(t, generic_tag()); -} -#endif - -} - -template -inline bool (isfinite)(T x) -{ //!< \brief return true if floating-point type t is finite. - typedef typename detail::fp_traits::type traits; - typedef typename traits::method method; - // typedef typename boost::is_floating_point::type fp_tag; - typedef typename tools::promote_args_permissive::type value_type; - return detail::isfinite_impl(static_cast(x), method()); -} - -#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -template<> -inline bool (isfinite)(long double x) -{ //!< \brief return true if floating-point type t is finite. - typedef detail::fp_traits::type traits; - typedef traits::method method; - //typedef boost::is_floating_point::type fp_tag; - typedef long double value_type; - return detail::isfinite_impl(static_cast(x), method()); -} -#endif - -//------------------------------------------------------------------------------ - -namespace detail { - -#ifdef BOOST_MATH_USE_STD_FPCLASSIFY - template - inline bool isnormal_impl(T x, native_tag const&) - { - return (std::isnormal)(x); - } -#endif - - template - inline bool isnormal_impl(T x, generic_tag const&) - { - if(x < 0) x = -x; - return x >= (std::numeric_limits::min)() - && x <= (std::numeric_limits::max)(); - } - - template - inline bool isnormal_impl(T x, generic_tag const&) - { -#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - if(std::numeric_limits::is_specialized) - return isnormal_impl(x, generic_tag()); -#endif - return !(x == 0); - } - - template - inline bool isnormal_impl(T x, ieee_tag const&) - { - typedef BOOST_DEDUCED_TYPENAME detail::fp_traits::type traits; - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - a &= traits::exponent | traits::flag; - return (a != 0) && (a < traits::exponent); - } - -#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && defined(BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY) -inline bool isnormal_impl BOOST_NO_MACRO_EXPAND(long double t, const native_tag&) -{ - return boost::math::detail::isnormal_impl(t, generic_tag()); -} -#endif - -} - -template -inline bool (isnormal)(T x) -{ - typedef typename detail::fp_traits::type traits; - typedef typename traits::method method; - //typedef typename boost::is_floating_point::type fp_tag; - typedef typename tools::promote_args_permissive::type value_type; - return detail::isnormal_impl(static_cast(x), method()); -} - -#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -template<> -inline bool (isnormal)(long double x) -{ - typedef detail::fp_traits::type traits; - typedef traits::method method; - //typedef boost::is_floating_point::type fp_tag; - typedef long double value_type; - return detail::isnormal_impl(static_cast(x), method()); -} -#endif - -//------------------------------------------------------------------------------ - -namespace detail { - -#ifdef BOOST_MATH_USE_STD_FPCLASSIFY - template - inline bool isinf_impl(T x, native_tag const&) - { - return (std::isinf)(x); - } -#endif - - template - inline bool isinf_impl(T x, generic_tag const&) - { - (void)x; // in case the compiler thinks that x is unused because std::numeric_limits::has_infinity is false - return std::numeric_limits::has_infinity - && ( x == std::numeric_limits::infinity() - || x == -std::numeric_limits::infinity()); - } - - template - inline bool isinf_impl(T x, generic_tag const&) - { -#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - if(std::numeric_limits::is_specialized) - return isinf_impl(x, generic_tag()); -#endif - (void)x; // warning suppression. - return false; - } - - template - inline bool isinf_impl(T x, ieee_copy_all_bits_tag const&) - { - typedef BOOST_DEDUCED_TYPENAME fp_traits::type traits; - - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - a &= traits::exponent | traits::significand; - return a == traits::exponent; - } - - template - inline bool isinf_impl(T x, ieee_copy_leading_bits_tag const&) - { - typedef BOOST_DEDUCED_TYPENAME fp_traits::type traits; - - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - a &= traits::exponent | traits::significand; - if(a != traits::exponent) - return false; - - traits::set_bits(x,0); - return x == 0; - } - -#if defined(BOOST_MATH_USE_STD_FPCLASSIFY) && defined(BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY) -inline bool isinf_impl BOOST_NO_MACRO_EXPAND(long double t, const native_tag&) -{ - return boost::math::detail::isinf_impl(t, generic_tag()); -} -#endif - -} // namespace detail - -template -inline bool (isinf)(T x) -{ - typedef typename detail::fp_traits::type traits; - typedef typename traits::method method; - // typedef typename boost::is_floating_point::type fp_tag; - typedef typename tools::promote_args_permissive::type value_type; - return detail::isinf_impl(static_cast(x), method()); -} - -#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -template<> -inline bool (isinf)(long double x) -{ - typedef detail::fp_traits::type traits; - typedef traits::method method; - //typedef boost::is_floating_point::type fp_tag; - typedef long double value_type; - return detail::isinf_impl(static_cast(x), method()); -} -#endif -#if defined(BOOST_MATH_USE_FLOAT128) && defined(BOOST_MATH_HAS_QUADMATH_H) -template<> -inline bool (isinf)(__float128 x) -{ - return ::isinfq(x); -} -#endif - -//------------------------------------------------------------------------------ - -namespace detail { - -#ifdef BOOST_MATH_USE_STD_FPCLASSIFY - template - inline bool isnan_impl(T x, native_tag const&) - { - return (std::isnan)(x); - } -#endif - - template - inline bool isnan_impl(T x, generic_tag const&) - { - return std::numeric_limits::has_infinity - ? !(x <= std::numeric_limits::infinity()) - : x != x; - } - - template - inline bool isnan_impl(T x, generic_tag const&) - { -#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - if(std::numeric_limits::is_specialized) - return isnan_impl(x, generic_tag()); -#endif - (void)x; // warning suppression - return false; - } - - template - inline bool isnan_impl(T x, ieee_copy_all_bits_tag const&) - { - typedef BOOST_DEDUCED_TYPENAME fp_traits::type traits; - - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - a &= traits::exponent | traits::significand; - return a > traits::exponent; - } - - template - inline bool isnan_impl(T x, ieee_copy_leading_bits_tag const&) - { - typedef BOOST_DEDUCED_TYPENAME fp_traits::type traits; - - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - - a &= traits::exponent | traits::significand; - if(a < traits::exponent) - return false; - - a &= traits::significand; - traits::set_bits(x,a); - return x != 0; - } - -} // namespace detail - -template -inline bool (isnan)(T x) -{ //!< \brief return true if floating-point type t is NaN (Not A Number). - typedef typename detail::fp_traits::type traits; - typedef typename traits::method method; - // typedef typename boost::is_floating_point::type fp_tag; - return detail::isnan_impl(x, method()); -} - -#ifdef isnan -template <> inline bool isnan BOOST_NO_MACRO_EXPAND(float t){ return ::boost::math_detail::is_nan_helper(t, boost::true_type()); } -template <> inline bool isnan BOOST_NO_MACRO_EXPAND(double t){ return ::boost::math_detail::is_nan_helper(t, boost::true_type()); } -template <> inline bool isnan BOOST_NO_MACRO_EXPAND(long double t){ return ::boost::math_detail::is_nan_helper(t, boost::true_type()); } -#elif defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) -template<> -inline bool (isnan)(long double x) -{ //!< \brief return true if floating-point type t is NaN (Not A Number). - typedef detail::fp_traits::type traits; - typedef traits::method method; - //typedef boost::is_floating_point::type fp_tag; - return detail::isnan_impl(x, method()); -} -#endif -#if defined(BOOST_MATH_USE_FLOAT128) && defined(BOOST_MATH_HAS_QUADMATH_H) -template<> -inline bool (isnan)(__float128 x) -{ - return ::isnanq(x); -} -#endif - -} // namespace math -} // namespace boost - -#endif // BOOST_MATH_FPCLASSIFY_HPP - diff --git a/src/boost/boost/math/special_functions/math_fwd.hpp b/src/boost/boost/math/special_functions/math_fwd.hpp deleted file mode 100644 index b5b845843..000000000 --- a/src/boost/boost/math/special_functions/math_fwd.hpp +++ /dev/null @@ -1,1678 +0,0 @@ -// math_fwd.hpp - -// TODO revise completely for new distribution classes. - -// Copyright Paul A. Bristow 2006. -// Copyright John Maddock 2006. - -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt -// or copy at http://www.boost.org/LICENSE_1_0.txt) - -// Omnibus list of forward declarations of math special functions. - -// IT = Integer type. -// RT = Real type (built-in floating-point types, float, double, long double) & User Defined Types -// AT = Integer or Real type - -#ifndef BOOST_MATH_SPECIAL_MATH_FWD_HPP -#define BOOST_MATH_SPECIAL_MATH_FWD_HPP - -#ifdef _MSC_VER -#pragma once -#endif - -#include -#include -#include // for argument promotion. -#include -#include -#include -#include - -#define BOOST_NO_MACRO_EXPAND /**/ - -namespace boost -{ - namespace math - { // Math functions (in roughly alphabetic order). - - // Beta functions. - template - typename tools::promote_args::type - beta(RT1 a, RT2 b); // Beta function (2 arguments). - - template - typename tools::promote_args::type - beta(RT1 a, RT2 b, A x); // Beta function (3 arguments). - - template - typename tools::promote_args::type - beta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Beta function (3 arguments). - - template - typename tools::promote_args::type - betac(RT1 a, RT2 b, RT3 x); - - template - typename tools::promote_args::type - betac(RT1 a, RT2 b, RT3 x, const Policy& pol); - - template - typename tools::promote_args::type - ibeta(RT1 a, RT2 b, RT3 x); // Incomplete beta function. - - template - typename tools::promote_args::type - ibeta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta function. - - template - typename tools::promote_args::type - ibetac(RT1 a, RT2 b, RT3 x); // Incomplete beta complement function. - - template - typename tools::promote_args::type - ibetac(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta complement function. - - template - typename tools::promote_args::type - ibeta_inv(T1 a, T2 b, T3 p, T4* py); - - template - typename tools::promote_args::type - ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy& pol); - - template - typename tools::promote_args::type - ibeta_inv(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function. - - template - typename tools::promote_args::type - ibeta_inv(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function. - - template - typename tools::promote_args::type - ibeta_inva(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function. - - template - typename tools::promote_args::type - ibeta_inva(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function. - - template - typename tools::promote_args::type - ibeta_invb(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function. - - template - typename tools::promote_args::type - ibeta_invb(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function. - - template - typename tools::promote_args::type - ibetac_inv(T1 a, T2 b, T3 q, T4* py); - - template - typename tools::promote_args::type - ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy& pol); - - template - typename tools::promote_args::type - ibetac_inv(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function. - - template - typename tools::promote_args::type - ibetac_inv(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function. - - template - typename tools::promote_args::type - ibetac_inva(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function. - - template - typename tools::promote_args::type - ibetac_inva(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function. - - template - typename tools::promote_args::type - ibetac_invb(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function. - - template - typename tools::promote_args::type - ibetac_invb(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function. - - template - typename tools::promote_args::type - ibeta_derivative(RT1 a, RT2 b, RT3 x); // derivative of incomplete beta - - template - typename tools::promote_args::type - ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy& pol); // derivative of incomplete beta - - // Binomial: - template - T binomial_coefficient(unsigned n, unsigned k, const Policy& pol); - template - T binomial_coefficient(unsigned n, unsigned k); - - // erf & erfc error functions. - template // Error function. - typename tools::promote_args::type erf(RT z); - template // Error function. - typename tools::promote_args::type erf(RT z, const Policy&); - - template // Error function complement. - typename tools::promote_args::type erfc(RT z); - template // Error function complement. - typename tools::promote_args::type erfc(RT z, const Policy&); - - template // Error function inverse. - typename tools::promote_args::type erf_inv(RT z); - template // Error function inverse. - typename tools::promote_args::type erf_inv(RT z, const Policy& pol); - - template // Error function complement inverse. - typename tools::promote_args::type erfc_inv(RT z); - template // Error function complement inverse. - typename tools::promote_args::type erfc_inv(RT z, const Policy& pol); - - // Polynomials: - template - typename tools::promote_args::type - legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1); - - template - typename tools::promote_args::type - legendre_p(int l, T x); - template - typename tools::promote_args::type - legendre_p_prime(int l, T x); - - - template - inline std::vector legendre_p_zeros(int l, const Policy& pol); - - template - inline std::vector legendre_p_zeros(int l); - -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1310) - template - typename boost::enable_if_c::value, typename tools::promote_args::type>::type - legendre_p(int l, T x, const Policy& pol); - template - inline typename boost::enable_if_c::value, typename tools::promote_args::type>::type - legendre_p_prime(int l, T x, const Policy& pol); -#endif - template - typename tools::promote_args::type - legendre_q(unsigned l, T x); -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1310) - template - typename boost::enable_if_c::value, typename tools::promote_args::type>::type - legendre_q(unsigned l, T x, const Policy& pol); -#endif - template - typename tools::promote_args::type - legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1); - - template - typename tools::promote_args::type - legendre_p(int l, int m, T x); - - template - typename tools::promote_args::type - legendre_p(int l, int m, T x, const Policy& pol); - - template - typename tools::promote_args::type - laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1); - - template - typename tools::promote_args::type - laguerre_next(unsigned n, unsigned l, T1 x, T2 Pl, T3 Plm1); - - template - typename tools::promote_args::type - laguerre(unsigned n, T x); - - template - typename tools::promote_args::type - laguerre(unsigned n, unsigned m, T x, const Policy& pol); - - template - struct laguerre_result - { - typedef typename mpl::if_< - policies::is_policy, - typename tools::promote_args::type, - typename tools::promote_args::type - >::type type; - }; - - template - typename laguerre_result::type - laguerre(unsigned n, T1 m, T2 x); - - template - typename tools::promote_args::type - hermite(unsigned n, T x); - - template - typename tools::promote_args::type - hermite(unsigned n, T x, const Policy& pol); - - template - typename tools::promote_args::type - hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1); - - template - typename tools::promote_args::type chebyshev_next(T1 const & x, T2 const & Tn, T3 const & Tn_1); - - template - typename tools::promote_args::type - chebyshev_t(unsigned n, Real const & x, const Policy&); - template - typename tools::promote_args::type chebyshev_t(unsigned n, Real const & x); - - template - typename tools::promote_args::type - chebyshev_u(unsigned n, Real const & x, const Policy&); - template - typename tools::promote_args::type chebyshev_u(unsigned n, Real const & x); - - template - typename tools::promote_args::type - chebyshev_t_prime(unsigned n, Real const & x, const Policy&); - template - typename tools::promote_args::type chebyshev_t_prime(unsigned n, Real const & x); - - template - Real chebyshev_clenshaw_recurrence(const Real* const c, size_t length, const T2& x); - - template - std::complex::type> - spherical_harmonic(unsigned n, int m, T1 theta, T2 phi); - - template - std::complex::type> - spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy& pol); - - template - typename tools::promote_args::type - spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi); - - template - typename tools::promote_args::type - spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy& pol); - - template - typename tools::promote_args::type - spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi); - - template - typename tools::promote_args::type - spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol); - - // Elliptic integrals: - template - typename tools::promote_args::type - ellint_rf(T1 x, T2 y, T3 z); - - template - typename tools::promote_args::type - ellint_rf(T1 x, T2 y, T3 z, const Policy& pol); - - template - typename tools::promote_args::type - ellint_rd(T1 x, T2 y, T3 z); - - template - typename tools::promote_args::type - ellint_rd(T1 x, T2 y, T3 z, const Policy& pol); - - template - typename tools::promote_args::type - ellint_rc(T1 x, T2 y); - - template - typename tools::promote_args::type - ellint_rc(T1 x, T2 y, const Policy& pol); - - template - typename tools::promote_args::type - ellint_rj(T1 x, T2 y, T3 z, T4 p); - - template - typename tools::promote_args::type - ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol); - - template - typename tools::promote_args::type - ellint_rg(T1 x, T2 y, T3 z); - - template - typename tools::promote_args::type - ellint_rg(T1 x, T2 y, T3 z, const Policy& pol); - - template - typename tools::promote_args::type ellint_2(T k); - - template - typename tools::promote_args::type ellint_2(T1 k, T2 phi); - - template - typename tools::promote_args::type ellint_2(T1 k, T2 phi, const Policy& pol); - - template - typename tools::promote_args::type ellint_1(T k); - - template - typename tools::promote_args::type ellint_1(T1 k, T2 phi); - - template - typename tools::promote_args::type ellint_1(T1 k, T2 phi, const Policy& pol); - - template - typename tools::promote_args::type ellint_d(T k); - - template - typename tools::promote_args::type ellint_d(T1 k, T2 phi); - - template - typename tools::promote_args::type ellint_d(T1 k, T2 phi, const Policy& pol); - - template - typename tools::promote_args::type jacobi_zeta(T1 k, T2 phi); - - template - typename tools::promote_args::type jacobi_zeta(T1 k, T2 phi, const Policy& pol); - - template - typename tools::promote_args::type heuman_lambda(T1 k, T2 phi); - - template - typename tools::promote_args::type heuman_lambda(T1 k, T2 phi, const Policy& pol); - - namespace detail{ - - template - struct ellint_3_result - { - typedef typename mpl::if_< - policies::is_policy, - typename tools::promote_args::type, - typename tools::promote_args::type - >::type type; - }; - - } // namespace detail - - - template - typename detail::ellint_3_result::type ellint_3(T1 k, T2 v, T3 phi); - - template - typename tools::promote_args::type ellint_3(T1 k, T2 v, T3 phi, const Policy& pol); - - template - typename tools::promote_args::type ellint_3(T1 k, T2 v); - - // Factorial functions. - // Note: not for integral types, at present. - template - struct max_factorial; - template - RT factorial(unsigned int); - template - RT factorial(unsigned int, const Policy& pol); - template - RT unchecked_factorial(unsigned int BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(RT)); - template - RT double_factorial(unsigned i); - template - RT double_factorial(unsigned i, const Policy& pol); - - template - typename tools::promote_args::type falling_factorial(RT x, unsigned n); - - template - typename tools::promote_args::type falling_factorial(RT x, unsigned n, const Policy& pol); - - template - typename tools::promote_args::type rising_factorial(RT x, int n); - - template - typename tools::promote_args::type rising_factorial(RT x, int n, const Policy& pol); - - // Gamma functions. - template - typename tools::promote_args::type tgamma(RT z); - - template - typename tools::promote_args::type tgamma1pm1(RT z); - - template - typename tools::promote_args::type tgamma1pm1(RT z, const Policy& pol); - - template - typename tools::promote_args::type tgamma(RT1 a, RT2 z); - - template - typename tools::promote_args::type tgamma(RT1 a, RT2 z, const Policy& pol); - - template - typename tools::promote_args::type lgamma(RT z, int* sign); - - template - typename tools::promote_args::type lgamma(RT z, int* sign, const Policy& pol); - - template - typename tools::promote_args::type lgamma(RT x); - - template - typename tools::promote_args::type lgamma(RT x, const Policy& pol); - - template - typename tools::promote_args::type tgamma_lower(RT1 a, RT2 z); - - template - typename tools::promote_args::type tgamma_lower(RT1 a, RT2 z, const Policy&); - - template - typename tools::promote_args::type gamma_q(RT1 a, RT2 z); - - template - typename tools::promote_args::type gamma_q(RT1 a, RT2 z, const Policy&); - - template - typename tools::promote_args::type gamma_p(RT1 a, RT2 z); - - template - typename tools::promote_args::type gamma_p(RT1 a, RT2 z, const Policy&); - - template - typename tools::promote_args::type tgamma_delta_ratio(T1 z, T2 delta); - - template - typename tools::promote_args::type tgamma_delta_ratio(T1 z, T2 delta, const Policy&); - - template - typename tools::promote_args::type tgamma_ratio(T1 a, T2 b); - - template - typename tools::promote_args::type tgamma_ratio(T1 a, T2 b, const Policy&); - - template - typename tools::promote_args::type gamma_p_derivative(T1 a, T2 x); - - template - typename tools::promote_args::type gamma_p_derivative(T1 a, T2 x, const Policy&); - - // gamma inverse. - template - typename tools::promote_args::type gamma_p_inv(T1 a, T2 p); - - template - typename tools::promote_args::type gamma_p_inva(T1 a, T2 p, const Policy&); - - template - typename tools::promote_args::type gamma_p_inva(T1 a, T2 p); - - template - typename tools::promote_args::type gamma_p_inv(T1 a, T2 p, const Policy&); - - template - typename tools::promote_args::type gamma_q_inv(T1 a, T2 q); - - template - typename tools::promote_args::type gamma_q_inv(T1 a, T2 q, const Policy&); - - template - typename tools::promote_args::type gamma_q_inva(T1 a, T2 q); - - template - typename tools::promote_args::type gamma_q_inva(T1 a, T2 q, const Policy&); - - // digamma: - template - typename tools::promote_args::type digamma(T x); - - template - typename tools::promote_args::type digamma(T x, const Policy&); - - // trigamma: - template - typename tools::promote_args::type trigamma(T x); - - template - typename tools::promote_args::type trigamma(T x, const Policy&); - - // polygamma: - template - typename tools::promote_args::type polygamma(int n, T x); - - template - typename tools::promote_args::type polygamma(int n, T x, const Policy&); - - // Hypotenuse function sqrt(x ^ 2 + y ^ 2). - template - typename tools::promote_args::type - hypot(T1 x, T2 y); - - template - typename tools::promote_args::type - hypot(T1 x, T2 y, const Policy&); - - // cbrt - cube root. - template - typename tools::promote_args::type cbrt(RT z); - - template - typename tools::promote_args::type cbrt(RT z, const Policy&); - - // log1p is log(x + 1) - template - typename tools::promote_args::type log1p(T); - - template - typename tools::promote_args::type log1p(T, const Policy&); - - // log1pmx is log(x + 1) - x - template - typename tools::promote_args::type log1pmx(T); - - template - typename tools::promote_args::type log1pmx(T, const Policy&); - - // Exp (x) minus 1 functions. - template - typename tools::promote_args::type expm1(T); - - template - typename tools::promote_args::type expm1(T, const Policy&); - - // Power - 1 - template - typename tools::promote_args::type - powm1(const T1 a, const T2 z); - - template - typename tools::promote_args::type - powm1(const T1 a, const T2 z, const Policy&); - - // sqrt(1+x) - 1 - template - typename tools::promote_args::type sqrt1pm1(const T& val); - - template - typename tools::promote_args::type sqrt1pm1(const T& val, const Policy&); - - // sinus cardinals: - template - typename tools::promote_args::type sinc_pi(T x); - - template - typename tools::promote_args::type sinc_pi(T x, const Policy&); - - template - typename tools::promote_args::type sinhc_pi(T x); - - template - typename tools::promote_args::type sinhc_pi(T x, const Policy&); - - // inverse hyperbolics: - template - typename tools::promote_args::type asinh(T x); - - template - typename tools::promote_args::type asinh(T x, const Policy&); - - template - typename tools::promote_args::type acosh(T x); - - template - typename tools::promote_args::type acosh(T x, const Policy&); - - template - typename tools::promote_args::type atanh(T x); - - template - typename tools::promote_args::type atanh(T x, const Policy&); - - namespace detail{ - - typedef mpl::int_<0> bessel_no_int_tag; // No integer optimisation possible. - typedef mpl::int_<1> bessel_maybe_int_tag; // Maybe integer optimisation. - typedef mpl::int_<2> bessel_int_tag; // Definite integer optimistaion. - - template - struct bessel_traits - { - typedef typename mpl::if_< - is_integral, - typename tools::promote_args::type, - typename tools::promote_args::type - >::type result_type; - - typedef typename policies::precision::type precision_type; - - typedef typename mpl::if_< - mpl::or_< - mpl::less_equal >, - mpl::greater > >, - bessel_no_int_tag, - typename mpl::if_< - is_integral, - bessel_int_tag, - bessel_maybe_int_tag - >::type - >::type optimisation_tag; - typedef typename mpl::if_< - mpl::or_< - mpl::less_equal >, - mpl::greater > >, - bessel_no_int_tag, - typename mpl::if_< - is_integral, - bessel_int_tag, - bessel_maybe_int_tag - >::type - >::type optimisation_tag128; - }; - } // detail - - // Bessel functions: - template - typename detail::bessel_traits::result_type cyl_bessel_j(T1 v, T2 x, const Policy& pol); - template - typename detail::bessel_traits::result_type cyl_bessel_j_prime(T1 v, T2 x, const Policy& pol); - - template - typename detail::bessel_traits >::result_type cyl_bessel_j(T1 v, T2 x); - template - typename detail::bessel_traits >::result_type cyl_bessel_j_prime(T1 v, T2 x); - - template - typename detail::bessel_traits::result_type sph_bessel(unsigned v, T x, const Policy& pol); - template - typename detail::bessel_traits::result_type sph_bessel_prime(unsigned v, T x, const Policy& pol); - - template - typename detail::bessel_traits >::result_type sph_bessel(unsigned v, T x); - template - typename detail::bessel_traits >::result_type sph_bessel_prime(unsigned v, T x); - - template - typename detail::bessel_traits::result_type cyl_bessel_i(T1 v, T2 x, const Policy& pol); - template - typename detail::bessel_traits::result_type cyl_bessel_i_prime(T1 v, T2 x, const Policy& pol); - - template - typename detail::bessel_traits >::result_type cyl_bessel_i(T1 v, T2 x); - template - typename detail::bessel_traits >::result_type cyl_bessel_i_prime(T1 v, T2 x); - - template - typename detail::bessel_traits::result_type cyl_bessel_k(T1 v, T2 x, const Policy& pol); - template - typename detail::bessel_traits::result_type cyl_bessel_k_prime(T1 v, T2 x, const Policy& pol); - - template - typename detail::bessel_traits >::result_type cyl_bessel_k(T1 v, T2 x); - template - typename detail::bessel_traits >::result_type cyl_bessel_k_prime(T1 v, T2 x); - - template - typename detail::bessel_traits::result_type cyl_neumann(T1 v, T2 x, const Policy& pol); - template - typename detail::bessel_traits::result_type cyl_neumann_prime(T1 v, T2 x, const Policy& pol); - - template - typename detail::bessel_traits >::result_type cyl_neumann(T1 v, T2 x); - template - typename detail::bessel_traits >::result_type cyl_neumann_prime(T1 v, T2 x); - - template - typename detail::bessel_traits::result_type sph_neumann(unsigned v, T x, const Policy& pol); - template - typename detail::bessel_traits::result_type sph_neumann_prime(unsigned v, T x, const Policy& pol); - - template - typename detail::bessel_traits >::result_type sph_neumann(unsigned v, T x); - template - typename detail::bessel_traits >::result_type sph_neumann_prime(unsigned v, T x); - - template - typename detail::bessel_traits::result_type cyl_bessel_j_zero(T v, int m, const Policy& pol); - - template - typename detail::bessel_traits >::result_type cyl_bessel_j_zero(T v, int m); - - template - OutputIterator cyl_bessel_j_zero(T v, - int start_index, - unsigned number_of_zeros, - OutputIterator out_it); - - template - OutputIterator cyl_bessel_j_zero(T v, - int start_index, - unsigned number_of_zeros, - OutputIterator out_it, - const Policy&); - - template - typename detail::bessel_traits::result_type cyl_neumann_zero(T v, int m, const Policy& pol); - - template - typename detail::bessel_traits >::result_type cyl_neumann_zero(T v, int m); - - template - OutputIterator cyl_neumann_zero(T v, - int start_index, - unsigned number_of_zeros, - OutputIterator out_it); - - template - OutputIterator cyl_neumann_zero(T v, - int start_index, - unsigned number_of_zeros, - OutputIterator out_it, - const Policy&); - - template - std::complex >::result_type> cyl_hankel_1(T1 v, T2 x); - - template - std::complex::result_type> cyl_hankel_1(T1 v, T2 x, const Policy& pol); - - template - std::complex::result_type> cyl_hankel_2(T1 v, T2 x, const Policy& pol); - - template - std::complex >::result_type> cyl_hankel_2(T1 v, T2 x); - - template - std::complex::result_type> sph_hankel_1(T1 v, T2 x, const Policy& pol); - - template - std::complex >::result_type> sph_hankel_1(T1 v, T2 x); - - template - std::complex::result_type> sph_hankel_2(T1 v, T2 x, const Policy& pol); - - template - std::complex >::result_type> sph_hankel_2(T1 v, T2 x); - - template - typename tools::promote_args::type airy_ai(T x, const Policy&); - - template - typename tools::promote_args::type airy_ai(T x); - - template - typename tools::promote_args::type airy_bi(T x, const Policy&); - - template - typename tools::promote_args::type airy_bi(T x); - - template - typename tools::promote_args::type airy_ai_prime(T x, const Policy&); - - template - typename tools::promote_args::type airy_ai_prime(T x); - - template - typename tools::promote_args::type airy_bi_prime(T x, const Policy&); - - template - typename tools::promote_args::type airy_bi_prime(T x); - - template - T airy_ai_zero(int m); - template - T airy_ai_zero(int m, const Policy&); - - template - OutputIterator airy_ai_zero( - int start_index, - unsigned number_of_zeros, - OutputIterator out_it); - template - OutputIterator airy_ai_zero( - int start_index, - unsigned number_of_zeros, - OutputIterator out_it, - const Policy&); - - template - T airy_bi_zero(int m); - template - T airy_bi_zero(int m, const Policy&); - - template - OutputIterator airy_bi_zero( - int start_index, - unsigned number_of_zeros, - OutputIterator out_it); - template - OutputIterator airy_bi_zero( - int start_index, - unsigned number_of_zeros, - OutputIterator out_it, - const Policy&); - - template - typename tools::promote_args::type sin_pi(T x, const Policy&); - - template - typename tools::promote_args::type sin_pi(T x); - - template - typename tools::promote_args::type cos_pi(T x, const Policy&); - - template - typename tools::promote_args::type cos_pi(T x); - - template - int fpclassify BOOST_NO_MACRO_EXPAND(T t); - - template - bool isfinite BOOST_NO_MACRO_EXPAND(T z); - - template - bool isinf BOOST_NO_MACRO_EXPAND(T t); - - template - bool isnan BOOST_NO_MACRO_EXPAND(T t); - - template - bool isnormal BOOST_NO_MACRO_EXPAND(T t); - - template - int signbit BOOST_NO_MACRO_EXPAND(T x); - - template - int sign BOOST_NO_MACRO_EXPAND(const T& z); - - template - typename tools::promote_args_permissive::type copysign BOOST_NO_MACRO_EXPAND(const T& x, const U& y); - - template - typename tools::promote_args_permissive::type changesign BOOST_NO_MACRO_EXPAND(const T& z); - - // Exponential integrals: - namespace detail{ - - template - struct expint_result - { - typedef typename mpl::if_< - policies::is_policy, - typename tools::promote_args::type, - typename tools::promote_args::type - >::type type; - }; - - } // namespace detail - - template - typename tools::promote_args::type expint(unsigned n, T z, const Policy&); - - template - typename detail::expint_result::type expint(T const z, U const u); - - template - typename tools::promote_args::type expint(T z); - - // Zeta: - template - typename tools::promote_args::type zeta(T s, const Policy&); - - // Owen's T function: - template - typename tools::promote_args::type owens_t(T1 h, T2 a, const Policy& pol); - - template - typename tools::promote_args::type owens_t(T1 h, T2 a); - - // Jacobi Functions: - template - typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn, const Policy&); - - template - typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn = 0, V* pdn = 0); - - template - typename tools::promote_args::type jacobi_sn(U k, T theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_sn(U k, T theta); - - template - typename tools::promote_args::type jacobi_cn(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_cn(T k, U theta); - - template - typename tools::promote_args::type jacobi_dn(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_dn(T k, U theta); - - template - typename tools::promote_args::type jacobi_cd(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_cd(T k, U theta); - - template - typename tools::promote_args::type jacobi_dc(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_dc(T k, U theta); - - template - typename tools::promote_args::type jacobi_ns(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_ns(T k, U theta); - - template - typename tools::promote_args::type jacobi_sd(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_sd(T k, U theta); - - template - typename tools::promote_args::type jacobi_ds(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_ds(T k, U theta); - - template - typename tools::promote_args::type jacobi_nc(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_nc(T k, U theta); - - template - typename tools::promote_args::type jacobi_nd(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_nd(T k, U theta); - - template - typename tools::promote_args::type jacobi_sc(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_sc(T k, U theta); - - template - typename tools::promote_args::type jacobi_cs(T k, U theta, const Policy& pol); - - template - typename tools::promote_args::type jacobi_cs(T k, U theta); - - - template - typename tools::promote_args::type zeta(T s); - - // pow: - template - typename tools::promote_args::type pow(T base, const Policy& policy); - - template - typename tools::promote_args::type pow(T base); - - // next: - template - typename tools::promote_args::type nextafter(const T&, const U&, const Policy&); - template - typename tools::promote_args::type nextafter(const T&, const U&); - template - typename tools::promote_args::type float_next(const T&, const Policy&); - template - typename tools::promote_args::type float_next(const T&); - template - typename tools::promote_args::type float_prior(const T&, const Policy&); - template - typename tools::promote_args::type float_prior(const T&); - template - typename tools::promote_args::type float_distance(const T&, const U&, const Policy&); - template - typename tools::promote_args::type float_distance(const T&, const U&); - template - typename tools::promote_args::type float_advance(T val, int distance, const Policy& pol); - template - typename tools::promote_args::type float_advance(const T& val, int distance); - - template - typename tools::promote_args::type ulp(const T& val, const Policy& pol); - template - typename tools::promote_args::type ulp(const T& val); - - template - typename tools::promote_args::type relative_difference(const T&, const U&); - template - typename tools::promote_args::type epsilon_difference(const T&, const U&); - - template - BOOST_MATH_CONSTEXPR_TABLE_FUNCTION T unchecked_bernoulli_b2n(const std::size_t n); - template - T bernoulli_b2n(const int i, const Policy &pol); - template - T bernoulli_b2n(const int i); - template - OutputIterator bernoulli_b2n(const int start_index, - const unsigned number_of_bernoullis_b2n, - OutputIterator out_it, - const Policy& pol); - template - OutputIterator bernoulli_b2n(const int start_index, - const unsigned number_of_bernoullis_b2n, - OutputIterator out_it); - template - T tangent_t2n(const int i, const Policy &pol); - template - T tangent_t2n(const int i); - template - OutputIterator tangent_t2n(const int start_index, - const unsigned number_of_bernoullis_b2n, - OutputIterator out_it, - const Policy& pol); - template - OutputIterator tangent_t2n(const int start_index, - const unsigned number_of_bernoullis_b2n, - OutputIterator out_it); - - // Lambert W: - template - typename boost::math::tools::promote_args::type lambert_w0(T z, const Policy& pol); - template - typename boost::math::tools::promote_args::type lambert_w0(T z); - template - typename boost::math::tools::promote_args::type lambert_wm1(T z, const Policy& pol); - template - typename boost::math::tools::promote_args::type lambert_wm1(T z); - template - typename boost::math::tools::promote_args::type lambert_w0_prime(T z, const Policy& pol); - template - typename boost::math::tools::promote_args::type lambert_w0_prime(T z); - template - typename boost::math::tools::promote_args::type lambert_wm1_prime(T z, const Policy& pol); - template - typename boost::math::tools::promote_args::type lambert_wm1_prime(T z); - - - - - } // namespace math -} // namespace boost - -#ifdef BOOST_HAS_LONG_LONG -#define BOOST_MATH_DETAIL_LL_FUNC(Policy)\ - \ - template \ - inline T modf(const T& v, boost::long_long_type* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\ - \ - template \ - inline boost::long_long_type lltrunc(const T& v){ using boost::math::lltrunc; return lltrunc(v, Policy()); }\ - \ - template \ - inline boost::long_long_type llround(const T& v){ using boost::math::llround; return llround(v, Policy()); }\ - -#else -#define BOOST_MATH_DETAIL_LL_FUNC(Policy) -#endif - -#define BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(Policy)\ - \ - BOOST_MATH_DETAIL_LL_FUNC(Policy)\ - \ - template \ - inline typename boost::math::tools::promote_args::type \ - beta(RT1 a, RT2 b) { return ::boost::math::beta(a, b, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - beta(RT1 a, RT2 b, A x){ return ::boost::math::beta(a, b, x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - betac(RT1 a, RT2 b, RT3 x) { return ::boost::math::betac(a, b, x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibeta(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta(a, b, x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibetac(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibetac(a, b, x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibeta_inv(T1 a, T2 b, T3 p, T4* py){ return ::boost::math::ibeta_inv(a, b, p, py, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibeta_inv(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_inv(a, b, p, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibetac_inv(T1 a, T2 b, T3 q, T4* py){ return ::boost::math::ibetac_inv(a, b, q, py, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibeta_inva(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_inva(a, b, p, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibetac_inva(T1 a, T2 b, T3 q){ return ::boost::math::ibetac_inva(a, b, q, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibeta_invb(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_invb(a, b, p, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibetac_invb(T1 a, T2 b, T3 q){ return ::boost::math::ibetac_invb(a, b, q, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibetac_inv(RT1 a, RT2 b, RT3 q){ return ::boost::math::ibetac_inv(a, b, q, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ibeta_derivative(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta_derivative(a, b, x, Policy()); }\ -\ - template T binomial_coefficient(unsigned n, unsigned k){ return ::boost::math::binomial_coefficient(n, k, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type erf(RT z) { return ::boost::math::erf(z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type erfc(RT z){ return ::boost::math::erfc(z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type erf_inv(RT z) { return ::boost::math::erf_inv(z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type erfc_inv(RT z){ return ::boost::math::erfc_inv(z, Policy()); }\ -\ - using boost::math::legendre_next;\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - legendre_p(int l, T x){ return ::boost::math::legendre_p(l, x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - legendre_p_prime(int l, T x){ return ::boost::math::legendre_p(l, x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - legendre_q(unsigned l, T x){ return ::boost::math::legendre_q(l, x, Policy()); }\ -\ - using ::boost::math::legendre_next;\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - legendre_p(int l, int m, T x){ return ::boost::math::legendre_p(l, m, x, Policy()); }\ -\ - using ::boost::math::laguerre_next;\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - laguerre(unsigned n, T x){ return ::boost::math::laguerre(n, x, Policy()); }\ -\ - template \ - inline typename boost::math::laguerre_result::type \ - laguerre(unsigned n, T1 m, T2 x) { return ::boost::math::laguerre(n, m, x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - hermite(unsigned n, T x){ return ::boost::math::hermite(n, x, Policy()); }\ -\ - using boost::math::hermite_next;\ -\ - using boost::math::chebyshev_next;\ -\ - template\ - Real chebyshev_t(unsigned n, Real const & x){ return ::boost::math::chebyshev_t(n, x, Policy()); }\ -\ - template\ - Real chebyshev_u(unsigned n, Real const & x){ return ::boost::math::chebyshev_u(n, x, Policy()); }\ -\ - template\ - Real chebyshev_t_prime(unsigned n, Real const & x){ return ::boost::math::chebyshev_t_prime(n, x, Policy()); }\ -\ - using ::boost::math::chebyshev_clenshaw_recurrence;\ -\ - template \ - inline std::complex::type> \ - spherical_harmonic(unsigned n, int m, T1 theta, T2 phi){ return boost::math::spherical_harmonic(n, m, theta, phi, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi){ return ::boost::math::spherical_harmonic_r(n, m, theta, phi, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi){ return boost::math::spherical_harmonic_i(n, m, theta, phi, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ellint_rf(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rf(x, y, z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ellint_rd(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rd(x, y, z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ellint_rc(T1 x, T2 y){ return ::boost::math::ellint_rc(x, y, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ellint_rj(T1 x, T2 y, T3 z, T4 p){ return boost::math::ellint_rj(x, y, z, p, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - ellint_rg(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rg(x, y, z, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type ellint_2(T k){ return boost::math::ellint_2(k, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type ellint_2(T1 k, T2 phi){ return boost::math::ellint_2(k, phi, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type ellint_d(T k){ return boost::math::ellint_d(k, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type ellint_d(T1 k, T2 phi){ return boost::math::ellint_d(k, phi, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type jacobi_zeta(T1 k, T2 phi){ return boost::math::jacobi_zeta(k, phi, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type heuman_lambda(T1 k, T2 phi){ return boost::math::heuman_lambda(k, phi, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type ellint_1(T k){ return boost::math::ellint_1(k, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type ellint_1(T1 k, T2 phi){ return boost::math::ellint_1(k, phi, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type ellint_3(T1 k, T2 v, T3 phi){ return boost::math::ellint_3(k, v, phi, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type ellint_3(T1 k, T2 v){ return boost::math::ellint_3(k, v, Policy()); }\ -\ - using boost::math::max_factorial;\ - template \ - inline RT factorial(unsigned int i) { return boost::math::factorial(i, Policy()); }\ - using boost::math::unchecked_factorial;\ - template \ - inline RT double_factorial(unsigned i){ return boost::math::double_factorial(i, Policy()); }\ - template \ - inline typename boost::math::tools::promote_args::type falling_factorial(RT x, unsigned n){ return boost::math::falling_factorial(x, n, Policy()); }\ - template \ - inline typename boost::math::tools::promote_args::type rising_factorial(RT x, unsigned n){ return boost::math::rising_factorial(x, n, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type tgamma(RT z){ return boost::math::tgamma(z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type tgamma1pm1(RT z){ return boost::math::tgamma1pm1(z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type tgamma(RT1 a, RT2 z){ return boost::math::tgamma(a, z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type lgamma(RT z, int* sign){ return boost::math::lgamma(z, sign, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type lgamma(RT x){ return boost::math::lgamma(x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type tgamma_lower(RT1 a, RT2 z){ return boost::math::tgamma_lower(a, z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type gamma_q(RT1 a, RT2 z){ return boost::math::gamma_q(a, z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type gamma_p(RT1 a, RT2 z){ return boost::math::gamma_p(a, z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type tgamma_delta_ratio(T1 z, T2 delta){ return boost::math::tgamma_delta_ratio(z, delta, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type tgamma_ratio(T1 a, T2 b) { return boost::math::tgamma_ratio(a, b, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type gamma_p_derivative(T1 a, T2 x){ return boost::math::gamma_p_derivative(a, x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type gamma_p_inv(T1 a, T2 p){ return boost::math::gamma_p_inv(a, p, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type gamma_p_inva(T1 a, T2 p){ return boost::math::gamma_p_inva(a, p, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type gamma_q_inv(T1 a, T2 q){ return boost::math::gamma_q_inv(a, q, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type gamma_q_inva(T1 a, T2 q){ return boost::math::gamma_q_inva(a, q, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type digamma(T x){ return boost::math::digamma(x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type trigamma(T x){ return boost::math::trigamma(x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type polygamma(int n, T x){ return boost::math::polygamma(n, x, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type \ - hypot(T1 x, T2 y){ return boost::math::hypot(x, y, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type cbrt(RT z){ return boost::math::cbrt(z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type log1p(T x){ return boost::math::log1p(x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type log1pmx(T x){ return boost::math::log1pmx(x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type expm1(T x){ return boost::math::expm1(x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type \ - powm1(const T1 a, const T2 z){ return boost::math::powm1(a, z, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type sqrt1pm1(const T& val){ return boost::math::sqrt1pm1(val, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type sinc_pi(T x){ return boost::math::sinc_pi(x, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type sinhc_pi(T x){ return boost::math::sinhc_pi(x, Policy()); }\ -\ - template\ - inline typename boost::math::tools::promote_args::type asinh(const T x){ return boost::math::asinh(x, Policy()); }\ -\ - template\ - inline typename boost::math::tools::promote_args::type acosh(const T x){ return boost::math::acosh(x, Policy()); }\ -\ - template\ - inline typename boost::math::tools::promote_args::type atanh(const T x){ return boost::math::atanh(x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type cyl_bessel_j(T1 v, T2 x)\ - { return boost::math::cyl_bessel_j(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type cyl_bessel_j_prime(T1 v, T2 x)\ - { return boost::math::cyl_bessel_j_prime(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type sph_bessel(unsigned v, T x)\ - { return boost::math::sph_bessel(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type sph_bessel_prime(unsigned v, T x)\ - { return boost::math::sph_bessel_prime(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type \ - cyl_bessel_i(T1 v, T2 x) { return boost::math::cyl_bessel_i(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type \ - cyl_bessel_i_prime(T1 v, T2 x) { return boost::math::cyl_bessel_i_prime(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type \ - cyl_bessel_k(T1 v, T2 x) { return boost::math::cyl_bessel_k(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type \ - cyl_bessel_k_prime(T1 v, T2 x) { return boost::math::cyl_bessel_k_prime(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type \ - cyl_neumann(T1 v, T2 x){ return boost::math::cyl_neumann(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type \ - cyl_neumann_prime(T1 v, T2 x){ return boost::math::cyl_neumann_prime(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type \ - sph_neumann(unsigned v, T x){ return boost::math::sph_neumann(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type \ - sph_neumann_prime(unsigned v, T x){ return boost::math::sph_neumann_prime(v, x, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type cyl_bessel_j_zero(T v, int m)\ - { return boost::math::cyl_bessel_j_zero(v, m, Policy()); }\ -\ -template \ - inline void cyl_bessel_j_zero(T v,\ - int start_index,\ - unsigned number_of_zeros,\ - OutputIterator out_it)\ - { boost::math::cyl_bessel_j_zero(v, start_index, number_of_zeros, out_it, Policy()); }\ -\ - template \ - inline typename boost::math::detail::bessel_traits::result_type cyl_neumann_zero(T v, int m)\ - { return boost::math::cyl_neumann_zero(v, m, Policy()); }\ -\ -template \ - inline void cyl_neumann_zero(T v,\ - int start_index,\ - unsigned number_of_zeros,\ - OutputIterator out_it)\ - { boost::math::cyl_neumann_zero(v, start_index, number_of_zeros, out_it, Policy()); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type sin_pi(T x){ return boost::math::sin_pi(x); }\ -\ - template \ - inline typename boost::math::tools::promote_args::type cos_pi(T x){ return boost::math::cos_pi(x); }\ -\ - using boost::math::fpclassify;\ - using boost::math::isfinite;\ - using boost::math::isinf;\ - using boost::math::isnan;\ - using boost::math::isnormal;\ - using boost::math::signbit;\ - using boost::math::sign;\ - using boost::math::copysign;\ - using boost::math::changesign;\ - \ - template \ - inline typename boost::math::tools::promote_args::type expint(T const& z, U const& u)\ - { return boost::math::expint(z, u, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type expint(T z){ return boost::math::expint(z, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type zeta(T s){ return boost::math::zeta(s, Policy()); }\ - \ - template \ - inline T round(const T& v){ using boost::math::round; return round(v, Policy()); }\ - \ - template \ - inline int iround(const T& v){ using boost::math::iround; return iround(v, Policy()); }\ - \ - template \ - inline long lround(const T& v){ using boost::math::lround; return lround(v, Policy()); }\ - \ - template \ - inline T trunc(const T& v){ using boost::math::trunc; return trunc(v, Policy()); }\ - \ - template \ - inline int itrunc(const T& v){ using boost::math::itrunc; return itrunc(v, Policy()); }\ - \ - template \ - inline long ltrunc(const T& v){ using boost::math::ltrunc; return ltrunc(v, Policy()); }\ - \ - template \ - inline T modf(const T& v, T* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\ - \ - template \ - inline T modf(const T& v, int* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\ - \ - template \ - inline T modf(const T& v, long* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type pow(T v){ return boost::math::pow(v, Policy()); }\ - \ - template T nextafter(const T& a, const T& b){ return boost::math::nextafter(a, b, Policy()); }\ - template T float_next(const T& a){ return boost::math::float_next(a, Policy()); }\ - template T float_prior(const T& a){ return boost::math::float_prior(a, Policy()); }\ - template T float_distance(const T& a, const T& b){ return boost::math::float_distance(a, b, Policy()); }\ - template T ulp(const T& a){ return boost::math::ulp(a, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type owens_t(RT1 a, RT2 z){ return boost::math::owens_t(a, z, Policy()); }\ - \ - template \ - inline std::complex::result_type> cyl_hankel_1(T1 v, T2 x)\ - { return boost::math::cyl_hankel_1(v, x, Policy()); }\ - \ - template \ - inline std::complex::result_type> cyl_hankel_2(T1 v, T2 x)\ - { return boost::math::cyl_hankel_2(v, x, Policy()); }\ - \ - template \ - inline std::complex::result_type> sph_hankel_1(T1 v, T2 x)\ - { return boost::math::sph_hankel_1(v, x, Policy()); }\ - \ - template \ - inline std::complex::result_type> sph_hankel_2(T1 v, T2 x)\ - { return boost::math::sph_hankel_2(v, x, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_elliptic(T k, T theta, T* pcn, T* pdn)\ - { return boost::math::jacobi_elliptic(k, theta, pcn, pdn, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_sn(U k, T theta)\ - { return boost::math::jacobi_sn(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_cn(T k, U theta)\ - { return boost::math::jacobi_cn(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_dn(T k, U theta)\ - { return boost::math::jacobi_dn(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_cd(T k, U theta)\ - { return boost::math::jacobi_cd(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_dc(T k, U theta)\ - { return boost::math::jacobi_dc(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_ns(T k, U theta)\ - { return boost::math::jacobi_ns(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_sd(T k, U theta)\ - { return boost::math::jacobi_sd(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_ds(T k, U theta)\ - { return boost::math::jacobi_ds(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_nc(T k, U theta)\ - { return boost::math::jacobi_nc(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_nd(T k, U theta)\ - { return boost::math::jacobi_nd(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_sc(T k, U theta)\ - { return boost::math::jacobi_sc(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type jacobi_cs(T k, U theta)\ - { return boost::math::jacobi_cs(k, theta, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type airy_ai(T x)\ - { return boost::math::airy_ai(x, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type airy_bi(T x)\ - { return boost::math::airy_bi(x, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type airy_ai_prime(T x)\ - { return boost::math::airy_ai_prime(x, Policy()); }\ - \ - template \ - inline typename boost::math::tools::promote_args::type airy_bi_prime(T x)\ - { return boost::math::airy_bi_prime(x, Policy()); }\ - \ - template \ - inline T airy_ai_zero(int m)\ - { return boost::math::airy_ai_zero(m, Policy()); }\ - template \ - OutputIterator airy_ai_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it)\ - { return boost::math::airy_ai_zero(start_index, number_of_zeros, out_it, Policy()); }\ - \ - template \ - inline T airy_bi_zero(int m)\ - { return boost::math::airy_bi_zero(m, Policy()); }\ - template \ - OutputIterator airy_bi_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it)\ - { return boost::math::airy_bi_zero(start_index, number_of_zeros, out_it, Policy()); }\ - \ - template \ - T bernoulli_b2n(const int i)\ - { return boost::math::bernoulli_b2n(i, Policy()); }\ - template \ - OutputIterator bernoulli_b2n(int start_index, unsigned number_of_bernoullis_b2n, OutputIterator out_it)\ - { return boost::math::bernoulli_b2n(start_index, number_of_bernoullis_b2n, out_it, Policy()); }\ - \ - template \ - T tangent_t2n(const int i)\ - { return boost::math::tangent_t2n(i, Policy()); }\ - template \ - OutputIterator tangent_t2n(int start_index, unsigned number_of_bernoullis_b2n, OutputIterator out_it)\ - { return boost::math::tangent_t2n(start_index, number_of_bernoullis_b2n, out_it, Policy()); }\ - \ - template inline typename boost::math::tools::promote_args::type lambert_w0(T z) { return boost::math::lambert_w0(z, Policy()); }\ - template inline typename boost::math::tools::promote_args::type lambert_wm1(T z) { return boost::math::lambert_w0(z, Policy()); }\ - template inline typename boost::math::tools::promote_args::type lambert_w0_prime(T z) { return boost::math::lambert_w0(z, Policy()); }\ - template inline typename boost::math::tools::promote_args::type lambert_wm1_prime(T z) { return boost::math::lambert_w0(z, Policy()); }\ - \ - - - - - - -#endif // BOOST_MATH_SPECIAL_MATH_FWD_HPP diff --git a/src/boost/boost/math/special_functions/sign.hpp b/src/boost/boost/math/special_functions/sign.hpp deleted file mode 100644 index 5b2ff22f5..000000000 --- a/src/boost/boost/math/special_functions/sign.hpp +++ /dev/null @@ -1,194 +0,0 @@ -// (C) Copyright John Maddock 2006. -// (C) Copyright Johan Rade 2006. -// (C) Copyright Paul A. Bristow 2011 (added changesign). - -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_TOOLS_SIGN_HPP -#define BOOST_MATH_TOOLS_SIGN_HPP - -#ifdef _MSC_VER -#pragma once -#endif - -#include -#include -#include - -namespace boost{ namespace math{ - -namespace detail { - - // signbit - -#ifdef BOOST_MATH_USE_STD_FPCLASSIFY - template - inline int signbit_impl(T x, native_tag const&) - { - return (std::signbit)(x) ? 1 : 0; - } -#endif - - // Generic versions first, note that these do not handle - // signed zero or NaN. - - template - inline int signbit_impl(T x, generic_tag const&) - { - return x < 0; - } - - template - inline int signbit_impl(T x, generic_tag const&) - { - return x < 0; - } - -#if defined(__GNUC__) && (LDBL_MANT_DIG == 106) - // - // Special handling for GCC's "double double" type, - // in this case the sign is the same as the sign we - // get by casting to double, no overflow/underflow - // can occur since the exponents are the same magnitude - // for the two types: - // - inline int signbit_impl(long double x, generic_tag const&) - { - return (boost::math::signbit)(static_cast(x)); - } - inline int signbit_impl(long double x, generic_tag const&) - { - return (boost::math::signbit)(static_cast(x)); - } -#endif - - template - inline int signbit_impl(T x, ieee_copy_all_bits_tag const&) - { - typedef BOOST_DEDUCED_TYPENAME fp_traits::type traits; - - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - return a & traits::sign ? 1 : 0; - } - - template - inline int signbit_impl(T x, ieee_copy_leading_bits_tag const&) - { - typedef BOOST_DEDUCED_TYPENAME fp_traits::type traits; - - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - - return a & traits::sign ? 1 : 0; - } - - // Changesign - - // Generic versions first, note that these do not handle - // signed zero or NaN. - - template - inline T (changesign_impl)(T x, generic_tag const&) - { - return -x; - } - - template - inline T (changesign_impl)(T x, generic_tag const&) - { - return -x; - } -#if defined(__GNUC__) && (LDBL_MANT_DIG == 106) - // - // Special handling for GCC's "double double" type, - // in this case we need to change the sign of both - // components of the "double double": - // - inline long double (changesign_impl)(long double x, generic_tag const&) - { - double* pd = reinterpret_cast(&x); - pd[0] = boost::math::changesign(pd[0]); - pd[1] = boost::math::changesign(pd[1]); - return x; - } - inline long double (changesign_impl)(long double x, generic_tag const&) - { - double* pd = reinterpret_cast(&x); - pd[0] = boost::math::changesign(pd[0]); - pd[1] = boost::math::changesign(pd[1]); - return x; - } -#endif - - template - inline T changesign_impl(T x, ieee_copy_all_bits_tag const&) - { - typedef BOOST_DEDUCED_TYPENAME fp_traits::sign_change_type traits; - - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - a ^= traits::sign; - traits::set_bits(x,a); - return x; - } - - template - inline T (changesign_impl)(T x, ieee_copy_leading_bits_tag const&) - { - typedef BOOST_DEDUCED_TYPENAME fp_traits::sign_change_type traits; - - BOOST_DEDUCED_TYPENAME traits::bits a; - traits::get_bits(x,a); - a ^= traits::sign; - traits::set_bits(x,a); - return x; - } - - -} // namespace detail - -template int (signbit)(T x) -{ - typedef typename detail::fp_traits::type traits; - typedef typename traits::method method; - // typedef typename boost::is_floating_point::type fp_tag; - typedef typename tools::promote_args_permissive::type result_type; - return detail::signbit_impl(static_cast(x), method()); -} - -template -inline int sign BOOST_NO_MACRO_EXPAND(const T& z) -{ - return (z == 0) ? 0 : (boost::math::signbit)(z) ? -1 : 1; -} - -template typename tools::promote_args_permissive::type (changesign)(const T& x) -{ //!< \brief return unchanged binary pattern of x, except for change of sign bit. - typedef typename detail::fp_traits::sign_change_type traits; - typedef typename traits::method method; - // typedef typename boost::is_floating_point::type fp_tag; - typedef typename tools::promote_args_permissive::type result_type; - - return detail::changesign_impl(static_cast(x), method()); -} - -template -inline typename tools::promote_args_permissive::type - copysign BOOST_NO_MACRO_EXPAND(const T& x, const U& y) -{ - BOOST_MATH_STD_USING - typedef typename tools::promote_args_permissive::type result_type; - return (boost::math::signbit)(static_cast(x)) != (boost::math::signbit)(static_cast(y)) - ? (boost::math::changesign)(static_cast(x)) : static_cast(x); -} - -} // namespace math -} // namespace boost - - -#endif // BOOST_MATH_TOOLS_SIGN_HPP - - diff --git a/src/boost/boost/math/tools/config.hpp b/src/boost/boost/math/tools/config.hpp deleted file mode 100644 index f780885fe..000000000 --- a/src/boost/boost/math/tools/config.hpp +++ /dev/null @@ -1,469 +0,0 @@ -// Copyright (c) 2006-7 John Maddock -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_TOOLS_CONFIG_HPP -#define BOOST_MATH_TOOLS_CONFIG_HPP - -#ifdef _MSC_VER -#pragma once -#endif - -#include -#include -#include // for boost::uintmax_t -#include -#include -#include // for min and max -#include -#include -#include -#if (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)) -# include -#endif -#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -# include -#endif - -#include - -#if (defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__NetBSD__) \ - || (defined(__hppa) && !defined(__OpenBSD__)) || (defined(__NO_LONG_DOUBLE_MATH) && (DBL_MANT_DIG != LDBL_MANT_DIG))) \ - && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) -# define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -#endif -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) -// -// Borland post 5.8.2 uses Dinkumware's std C lib which -// doesn't have true long double precision. Earlier -// versions are problematic too: -// -# define BOOST_MATH_NO_REAL_CONCEPT_TESTS -# define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -# define BOOST_MATH_CONTROL_FP _control87(MCW_EM,MCW_EM) -# include -#endif -#ifdef __IBMCPP__ -// -// For reasons I don't unserstand, the tests with IMB's compiler all -// pass at long double precision, but fail with real_concept, those tests -// are disabled for now. (JM 2012). -# define BOOST_MATH_NO_REAL_CONCEPT_TESTS -#endif -#ifdef sun -// Any use of __float128 in program startup code causes a segfault (tested JM 2015, Solaris 11). -# define BOOST_MATH_DISABLE_FLOAT128 -#endif -#ifdef __HAIKU__ -// -// Not sure what's up with the math detection on Haiku, but linking fails with -// float128 code enabled, and we don't have an implementation of __expl, so -// disabling long double functions for now as well. -# define BOOST_MATH_DISABLE_FLOAT128 -# define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -#endif -#if (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)) && ((LDBL_MANT_DIG == 106) || (__LDBL_MANT_DIG__ == 106)) && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) -// -// Darwin's rather strange "double double" is rather hard to -// support, it should be possible given enough effort though... -// -# define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -#endif -#if defined(unix) && defined(__INTEL_COMPILER) && (__INTEL_COMPILER <= 1000) && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) -// -// Intel compiler prior to version 10 has sporadic problems -// calling the long double overloads of the std lib math functions: -// calling ::powl is OK, but std::pow(long double, long double) -// may segfault depending upon the value of the arguments passed -// and the specific Linux distribution. -// -// We'll be conservative and disable long double support for this compiler. -// -// Comment out this #define and try building the tests to determine whether -// your Intel compiler version has this issue or not. -// -# define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -#endif -#if defined(unix) && defined(__INTEL_COMPILER) -// -// Intel compiler has sporadic issues compiling std::fpclassify depending on -// the exact OS version used. Use our own code for this as we know it works -// well on Intel processors: -// -#define BOOST_MATH_DISABLE_STD_FPCLASSIFY -#endif - -#if defined(BOOST_MSVC) && !defined(_WIN32_WCE) - // Better safe than sorry, our tests don't support hardware exceptions: -# define BOOST_MATH_CONTROL_FP _control87(MCW_EM,MCW_EM) -#endif - -#ifdef __IBMCPP__ -# define BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS -#endif - -#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)) -# define BOOST_MATH_USE_C99 -#endif - -#if (defined(__hpux) && !defined(__hppa)) -# define BOOST_MATH_USE_C99 -#endif - -#if defined(__GNUC__) && defined(_GLIBCXX_USE_C99) -# define BOOST_MATH_USE_C99 -#endif - -#if defined(_LIBCPP_VERSION) && !defined(_MSC_VER) -# define BOOST_MATH_USE_C99 -#endif - -#if defined(__CYGWIN__) || defined(__HP_aCC) || defined(BOOST_INTEL) \ - || defined(BOOST_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY) \ - || (defined(__GNUC__) && !defined(BOOST_MATH_USE_C99))\ - || defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) -# define BOOST_MATH_NO_NATIVE_LONG_DOUBLE_FP_CLASSIFY -#endif - -#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) - -# include "boost/type.hpp" -# include "boost/non_type.hpp" - -# define BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(t) boost::type* = 0 -# define BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(t) boost::type* -# define BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE(t, v) boost::non_type* = 0 -# define BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) boost::non_type* - -# define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(t) \ - , BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(t) -# define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) \ - , BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(t) -# define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) \ - , BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE(t, v) -# define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) \ - , BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) - -#else - -// no workaround needed: expand to nothing - -# define BOOST_MATH_EXPLICIT_TEMPLATE_TYPE(t) -# define BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(t) -# define BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE(t, v) -# define BOOST_MATH_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) - -# define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(t) -# define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) -# define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) -# define BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) - - -#endif // __SUNPRO_CC - -#if (defined(__SUNPRO_CC) || defined(__hppa) || defined(__GNUC__)) && !defined(BOOST_MATH_SMALL_CONSTANT) -// Sun's compiler emits a hard error if a constant underflows, -// as does aCC on PA-RISC, while gcc issues a large number of warnings: -# define BOOST_MATH_SMALL_CONSTANT(x) 0.0 -#else -# define BOOST_MATH_SMALL_CONSTANT(x) x -#endif - - -#if BOOST_WORKAROUND(BOOST_MSVC, < 1400) -// -// Define if constants too large for a float cause "bad" -// values to be stored in the data, rather than infinity -// or a suitably large value. -// -# define BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS -#endif -// -// Tune performance options for specific compilers: -// -#ifdef BOOST_MSVC -# define BOOST_MATH_POLY_METHOD 2 -# define BOOST_MATH_RATIONAL_METHOD 1 -#elif defined(BOOST_INTEL) -# define BOOST_MATH_POLY_METHOD 2 -# define BOOST_MATH_RATIONAL_METHOD 1 -#elif defined(__GNUC__) -#if __GNUC__ < 4 -# define BOOST_MATH_POLY_METHOD 3 -# define BOOST_MATH_RATIONAL_METHOD 3 -# define BOOST_MATH_INT_TABLE_TYPE(RT, IT) RT -# define BOOST_MATH_INT_VALUE_SUFFIX(RV, SUF) RV##.0L -#else -# define BOOST_MATH_POLY_METHOD 3 -# define BOOST_MATH_RATIONAL_METHOD 1 -#endif -#endif - -#if defined(BOOST_NO_LONG_LONG) && !defined(BOOST_MATH_INT_TABLE_TYPE) -# define BOOST_MATH_INT_TABLE_TYPE(RT, IT) RT -# define BOOST_MATH_INT_VALUE_SUFFIX(RV, SUF) RV##.0L -#endif - -// -// constexpr support, early GCC implementations can't cope so disable -// constexpr for them: -// -#if !defined(__clang__) && defined(__GNUC__) -#if (__GNUC__ * 100 + __GNUC_MINOR__) < 490 -# define BOOST_MATH_DISABLE_CONSTEXPR -#endif -#endif - -#ifdef BOOST_MATH_DISABLE_CONSTEXPR -# define BOOST_MATH_CONSTEXPR -#else -# define BOOST_MATH_CONSTEXPR BOOST_CONSTEXPR -#endif - -// -// noexcept support: -// -#ifndef BOOST_NO_CXX11_NOEXCEPT -#ifndef BOOST_NO_CXX11_HDR_TYPE_TRAITS -#include -# define BOOST_MATH_NOEXCEPT(T) noexcept(std::is_floating_point::value) -# define BOOST_MATH_IS_FLOAT(T) (std::is_floating_point::value) -#else -#include -# define BOOST_MATH_NOEXCEPT(T) noexcept(boost::is_floating_point::value) -# define BOOST_MATH_IS_FLOAT(T) (boost::is_floating_point::value) -#endif -#else -# define BOOST_MATH_NOEXCEPT(T) -# define BOOST_MATH_IS_FLOAT(T) false -#endif - -// -// The maximum order of polynomial that will be evaluated -// via an unrolled specialisation: -// -#ifndef BOOST_MATH_MAX_POLY_ORDER -# define BOOST_MATH_MAX_POLY_ORDER 20 -#endif -// -// Set the method used to evaluate polynomials and rationals: -// -#ifndef BOOST_MATH_POLY_METHOD -# define BOOST_MATH_POLY_METHOD 2 -#endif -#ifndef BOOST_MATH_RATIONAL_METHOD -# define BOOST_MATH_RATIONAL_METHOD 1 -#endif -// -// decide whether to store constants as integers or reals: -// -#ifndef BOOST_MATH_INT_TABLE_TYPE -# define BOOST_MATH_INT_TABLE_TYPE(RT, IT) IT -#endif -#ifndef BOOST_MATH_INT_VALUE_SUFFIX -# define BOOST_MATH_INT_VALUE_SUFFIX(RV, SUF) RV##SUF -#endif -// -// And then the actual configuration: -// -#if defined(_GLIBCXX_USE_FLOAT128) && defined(BOOST_GCC) && !defined(__STRICT_ANSI__) \ - && !defined(BOOST_MATH_DISABLE_FLOAT128) || defined(BOOST_MATH_USE_FLOAT128) -// -// Only enable this when the compiler really is GCC as clang and probably -// intel too don't support __float128 yet :-( -// -#ifndef BOOST_MATH_USE_FLOAT128 -# define BOOST_MATH_USE_FLOAT128 -#endif - -# if defined(BOOST_INTEL) && defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION >= 1310) && defined(__GNUC__) -# if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) -# define BOOST_MATH_FLOAT128_TYPE __float128 -# endif -# elif defined(__GNUC__) -# define BOOST_MATH_FLOAT128_TYPE __float128 -# endif - -# ifndef BOOST_MATH_FLOAT128_TYPE -# define BOOST_MATH_FLOAT128_TYPE _Quad -# endif -#endif -// -// Check for WinCE with no iostream support: -// -#if defined(_WIN32_WCE) && !defined(__SGI_STL_PORT) -# define BOOST_MATH_NO_LEXICAL_CAST -#endif - -// -// Helper macro for controlling the FP behaviour: -// -#ifndef BOOST_MATH_CONTROL_FP -# define BOOST_MATH_CONTROL_FP -#endif -// -// Helper macro for using statements: -// -#define BOOST_MATH_STD_USING_CORE \ - using std::abs;\ - using std::acos;\ - using std::cos;\ - using std::fmod;\ - using std::modf;\ - using std::tan;\ - using std::asin;\ - using std::cosh;\ - using std::frexp;\ - using std::pow;\ - using std::tanh;\ - using std::atan;\ - using std::exp;\ - using std::ldexp;\ - using std::sin;\ - using std::atan2;\ - using std::fabs;\ - using std::log;\ - using std::sinh;\ - using std::ceil;\ - using std::floor;\ - using std::log10;\ - using std::sqrt; - -#define BOOST_MATH_STD_USING BOOST_MATH_STD_USING_CORE - -namespace boost{ namespace math{ -namespace tools -{ - -template -inline T max BOOST_PREVENT_MACRO_SUBSTITUTION(T a, T b, T c) BOOST_MATH_NOEXCEPT(T) -{ - return (std::max)((std::max)(a, b), c); -} - -template -inline T max BOOST_PREVENT_MACRO_SUBSTITUTION(T a, T b, T c, T d) BOOST_MATH_NOEXCEPT(T) -{ - return (std::max)((std::max)(a, b), (std::max)(c, d)); -} - -} // namespace tools - -template -void suppress_unused_variable_warning(const T&) BOOST_MATH_NOEXCEPT(T) -{ -} - -namespace detail{ - -template -struct is_integer_for_rounding -{ - static const bool value = boost::is_integral::value -#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS - || (std::numeric_limits::is_specialized && std::numeric_limits::is_integer) -#endif - ; -}; - -} - -}} // namespace boost namespace math - -#ifdef __GLIBC_PREREQ -# if __GLIBC_PREREQ(2,14) -# define BOOST_MATH_HAVE_FIXED_GLIBC -# endif -#endif - -#if ((defined(__linux__) && !defined(__UCLIBC__) && !defined(BOOST_MATH_HAVE_FIXED_GLIBC)) || defined(__QNX__) || defined(__IBMCPP__)) && !defined(BOOST_NO_FENV_H) -// -// This code was introduced in response to this glibc bug: http://sourceware.org/bugzilla/show_bug.cgi?id=2445 -// Basically powl and expl can return garbage when the result is small and certain exception flags are set -// on entrance to these functions. This appears to have been fixed in Glibc 2.14 (May 2011). -// Much more information in this message thread: https://groups.google.com/forum/#!topic/boost-list/ZT99wtIFlb4 -// - - #include - -# ifdef FE_ALL_EXCEPT - -namespace boost{ namespace math{ - namespace detail - { - struct fpu_guard - { - fpu_guard() - { - fegetexceptflag(&m_flags, FE_ALL_EXCEPT); - feclearexcept(FE_ALL_EXCEPT); - } - ~fpu_guard() - { - fesetexceptflag(&m_flags, FE_ALL_EXCEPT); - } - private: - fexcept_t m_flags; - }; - - } // namespace detail - }} // namespaces - -# define BOOST_FPU_EXCEPTION_GUARD boost::math::detail::fpu_guard local_guard_object; -# define BOOST_MATH_INSTRUMENT_FPU do{ fexcept_t cpu_flags; fegetexceptflag(&cpu_flags, FE_ALL_EXCEPT); BOOST_MATH_INSTRUMENT_VARIABLE(cpu_flags); } while(0); - -# else - -# define BOOST_FPU_EXCEPTION_GUARD -# define BOOST_MATH_INSTRUMENT_FPU - -# endif - -#else // All other platforms. -# define BOOST_FPU_EXCEPTION_GUARD -# define BOOST_MATH_INSTRUMENT_FPU -#endif - -#ifdef BOOST_MATH_INSTRUMENT - -# include -# include -# include - -# define BOOST_MATH_INSTRUMENT_CODE(x) \ - std::cout << std::setprecision(35) << __FILE__ << ":" << __LINE__ << " " << x << std::endl; -# define BOOST_MATH_INSTRUMENT_VARIABLE(name) BOOST_MATH_INSTRUMENT_CODE(BOOST_STRINGIZE(name) << " = " << name) - -#else - -# define BOOST_MATH_INSTRUMENT_CODE(x) -# define BOOST_MATH_INSTRUMENT_VARIABLE(name) - -#endif - -// -// Thread local storage: -// -#if !defined(BOOST_NO_CXX11_THREAD_LOCAL) && !defined(BOOST_INTEL) -# define BOOST_MATH_THREAD_LOCAL thread_local -#else -# define BOOST_MATH_THREAD_LOCAL -#endif - -// -// Can we have constexpr tables? -// -#if (!defined(BOOST_NO_CXX11_HDR_ARRAY) && !defined(BOOST_NO_CXX14_CONSTEXPR)) || BOOST_WORKAROUND(BOOST_MSVC, >= 1910) -#define BOOST_MATH_HAVE_CONSTEXPR_TABLES -#define BOOST_MATH_CONSTEXPR_TABLE_FUNCTION constexpr -#else -#define BOOST_MATH_CONSTEXPR_TABLE_FUNCTION -#endif - - -#endif // BOOST_MATH_TOOLS_CONFIG_HPP - - - - diff --git a/src/boost/boost/math/tools/promotion.hpp b/src/boost/boost/math/tools/promotion.hpp deleted file mode 100644 index 70fe58a22..000000000 --- a/src/boost/boost/math/tools/promotion.hpp +++ /dev/null @@ -1,182 +0,0 @@ -// boost\math\tools\promotion.hpp - -// Copyright John Maddock 2006. -// Copyright Paul A. Bristow 2006. - -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt -// or copy at http://www.boost.org/LICENSE_1_0.txt) - -// Promote arguments functions to allow math functions to have arguments -// provided as integer OR real (floating-point, built-in or UDT) -// (called ArithmeticType in functions that use promotion) -// that help to reduce the risk of creating multiple instantiations. -// Allows creation of an inline wrapper that forwards to a foo(RT, RT) function, -// so you never get to instantiate any mixed foo(RT, IT) functions. - -#ifndef BOOST_MATH_PROMOTION_HPP -#define BOOST_MATH_PROMOTION_HPP - -#ifdef _MSC_VER -#pragma once -#endif - -// Boost type traits: -#include -#include // for boost::is_floating_point; -#include // for boost::is_integral -#include // for boost::is_convertible -#include // for boost::is_same -#include // for boost::remove_cv -// Boost Template meta programming: -#include // for boost::mpl::if_c. -#include // for boost::mpl::if_c. -#include // for boost::mpl::if_c. -#include // for boost::mpl::if_c. - -#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -#include -#endif - -namespace boost -{ - namespace math - { - namespace tools - { - // If either T1 or T2 is an integer type, - // pretend it was a double (for the purposes of further analysis). - // Then pick the wider of the two floating-point types - // as the actual signature to forward to. - // For example: - // foo(int, short) -> double foo(double, double); - // foo(int, float) -> double foo(double, double); - // Note: NOT float foo(float, float) - // foo(int, double) -> foo(double, double); - // foo(double, float) -> double foo(double, double); - // foo(double, float) -> double foo(double, double); - // foo(any-int-or-float-type, long double) -> foo(long double, long double); - // but ONLY float foo(float, float) is unchanged. - // So the only way to get an entirely float version is to call foo(1.F, 2.F), - // But since most (all?) the math functions convert to double internally, - // probably there would not be the hoped-for gain by using float here. - - // This follows the C-compatible conversion rules of pow, etc - // where pow(int, float) is converted to pow(double, double). - - template - struct promote_arg - { // If T is integral type, then promote to double. - typedef typename mpl::if_, double, T>::type type; - }; - // These full specialisations reduce mpl::if_ usage and speed up - // compilation: - template <> struct promote_arg { typedef float type; }; - template <> struct promote_arg{ typedef double type; }; - template <> struct promote_arg { typedef long double type; }; - template <> struct promote_arg { typedef double type; }; - - template - struct promote_args_2 - { // Promote, if necessary, & pick the wider of the two floating-point types. - // for both parameter types, if integral promote to double. - typedef typename promote_arg::type T1P; // T1 perhaps promoted. - typedef typename promote_arg::type T2P; // T2 perhaps promoted. - - typedef typename mpl::if_< - typename mpl::and_, is_floating_point >::type, // both T1P and T2P are floating-point? -#ifdef BOOST_MATH_USE_FLOAT128 - typename mpl::if_< typename mpl::or_, is_same<__float128, T2P> >::type, // either long double? - __float128, -#endif - typename mpl::if_< typename mpl::or_, is_same >::type, // either long double? - long double, // then result type is long double. - typename mpl::if_< typename mpl::or_, is_same >::type, // either double? - double, // result type is double. - float // else result type is float. - >::type -#ifdef BOOST_MATH_USE_FLOAT128 - >::type -#endif - >::type, - // else one or the other is a user-defined type: - typename mpl::if_< typename mpl::and_ >, ::boost::is_convertible >, T2P, T1P>::type>::type type; - }; // promote_arg2 - // These full specialisations reduce mpl::if_ usage and speed up - // compilation: - template <> struct promote_args_2 { typedef float type; }; - template <> struct promote_args_2{ typedef double type; }; - template <> struct promote_args_2 { typedef long double type; }; - template <> struct promote_args_2 { typedef double type; }; - template <> struct promote_args_2 { typedef double type; }; - template <> struct promote_args_2 { typedef double type; }; - template <> struct promote_args_2 { typedef double type; }; - template <> struct promote_args_2 { typedef double type; }; - template <> struct promote_args_2 { typedef long double type; }; - template <> struct promote_args_2 { typedef long double type; }; - template <> struct promote_args_2 { typedef double type; }; - template <> struct promote_args_2 { typedef double type; }; - template <> struct promote_args_2 { typedef long double type; }; - template <> struct promote_args_2 { typedef long double type; }; - template <> struct promote_args_2 { typedef long double type; }; - template <> struct promote_args_2 { typedef long double type; }; - - template - struct promote_args - { - typedef typename promote_args_2< - typename remove_cv::type, - typename promote_args_2< - typename remove_cv::type, - typename promote_args_2< - typename remove_cv::type, - typename promote_args_2< - typename remove_cv::type, - typename promote_args_2< - typename remove_cv::type, typename remove_cv::type - >::type - >::type - >::type - >::type - >::type type; - -#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS - // - // Guard against use of long double if it's not supported: - // - BOOST_STATIC_ASSERT_MSG((0 == ::boost::is_same::value), "Sorry, but this platform does not have sufficient long double support for the special functions to be reliably implemented."); -#endif - }; - - // - // This struct is the same as above, but has no static assert on long double usage, - // it should be used only on functions that can be implemented for long double - // even when std lib support is missing or broken for that type. - // - template - struct promote_args_permissive - { - typedef typename promote_args_2< - typename remove_cv::type, - typename promote_args_2< - typename remove_cv::type, - typename promote_args_2< - typename remove_cv::type, - typename promote_args_2< - typename remove_cv::type, - typename promote_args_2< - typename remove_cv::type, typename remove_cv::type - >::type - >::type - >::type - >::type - >::type type; - }; - - } // namespace tools - } // namespace math -} // namespace boost - -#endif // BOOST_MATH_PROMOTION_HPP - diff --git a/src/boost/boost/math/tools/real_cast.hpp b/src/boost/boost/math/tools/real_cast.hpp deleted file mode 100644 index e5952fb72..000000000 --- a/src/boost/boost/math/tools/real_cast.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright John Maddock 2006. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_TOOLS_REAL_CAST_HPP -#define BOOST_MATH_TOOLS_REAL_CAST_HPP - -#include - -#ifdef _MSC_VER -#pragma once -#endif - -namespace boost{ namespace math -{ - namespace tools - { - template - inline BOOST_MATH_CONSTEXPR To real_cast(T t) BOOST_NOEXCEPT_IF(BOOST_MATH_IS_FLOAT(T) && BOOST_MATH_IS_FLOAT(To)) - { - return static_cast(t); - } - } // namespace tools -} // namespace math -} // namespace boost - -#endif // BOOST_MATH_TOOLS_REAL_CAST_HPP - - - diff --git a/src/boost/boost/math/tools/user.hpp b/src/boost/boost/math/tools/user.hpp deleted file mode 100644 index 0286e81f2..000000000 --- a/src/boost/boost/math/tools/user.hpp +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright John Maddock 2007. -// Copyright Paul A. Bristow 2007. - -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt -// or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_MATH_TOOLS_USER_HPP -#define BOOST_MATH_TOOLS_USER_HPP - -#ifdef _MSC_VER -#pragma once -#endif - -// This file can be modified by the user to change the default policies. -// See "Changing the Policy Defaults" in documentation. - -// define this if the platform has no long double functions, -// or if the long double versions have only double precision: -// -// #define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -// -// Performance tuning options: -// -// #define BOOST_MATH_POLY_METHOD 3 -// #define BOOST_MATH_RATIONAL_METHOD 3 -// -// The maximum order of polynomial that will be evaluated -// via an unrolled specialisation: -// -// #define BOOST_MATH_MAX_POLY_ORDER 17 -// -// decide whether to store constants as integers or reals: -// -// #define BOOST_MATH_INT_TABLE_TYPE(RT, IT) IT - -// -// Default policies follow: -// -// Domain errors: -// -// #define BOOST_MATH_DOMAIN_ERROR_POLICY throw_on_error -// -// Pole errors: -// -// #define BOOST_MATH_POLE_ERROR_POLICY throw_on_error -// -// Overflow Errors: -// -// #define BOOST_MATH_OVERFLOW_ERROR_POLICY throw_on_error -// -// Internal Evaluation Errors: -// -// #define BOOST_MATH_EVALUATION_ERROR_POLICY throw_on_error -// -// Underfow: -// -// #define BOOST_MATH_UNDERFLOW_ERROR_POLICY ignore_error -// -// Denorms: -// -// #define BOOST_MATH_DENORM_ERROR_POLICY ignore_error -// -// Max digits to use for internal calculations: -// -// #define BOOST_MATH_DIGITS10_POLICY 0 -// -// Promote floats to doubles internally? -// -// #define BOOST_MATH_PROMOTE_FLOAT_POLICY true -// -// Promote doubles to long double internally: -// -// #define BOOST_MATH_PROMOTE_DOUBLE_POLICY true -// -// What do discrete quantiles return? -// -// #define BOOST_MATH_DISCRETE_QUANTILE_POLICY integer_round_outwards -// -// If a function is mathematically undefined -// (for example the Cauchy distribution has no mean), -// then do we stop the code from compiling? -// -// #define BOOST_MATH_ASSERT_UNDEFINED_POLICY true -// -// Maximum series iterstions permitted: -// -// #define BOOST_MATH_MAX_SERIES_ITERATION_POLICY 1000000 -// -// Maximum root finding steps permitted: -// -// define BOOST_MATH_MAX_ROOT_ITERATION_POLICY 200 -// -// Enable use of __float128 in numeric constants: -// -// #define BOOST_MATH_USE_FLOAT128 -// -// Disable use of __float128 in numeric_constants even if the compiler looks to support it: -// -// #define BOOST_MATH_DISABLE_FLOAT128 - -#endif // BOOST_MATH_TOOLS_USER_HPP - - diff --git a/src/boost/boost/memory_order.hpp b/src/boost/boost/memory_order.hpp new file mode 100644 index 000000000..022c05310 --- /dev/null +++ b/src/boost/boost/memory_order.hpp @@ -0,0 +1,82 @@ +// boost/memory_order.hpp +// +// Defines enum boost::memory_order per the C++0x working draft +// +// Copyright (c) 2008, 2009 Peter Dimov +// Copyright (c) 2018 Andrey Semashev +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MEMORY_ORDER_HPP_INCLUDED +#define BOOST_MEMORY_ORDER_HPP_INCLUDED + +#include + +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif + +namespace boost +{ + +// +// Enum values are chosen so that code that needs to insert +// a trailing fence for acquire semantics can use a single +// test such as: +// +// if( mo & memory_order_acquire ) { ...fence... } +// +// For leading fences one can use: +// +// if( mo & memory_order_release ) { ...fence... } +// +// Architectures such as Alpha that need a fence on consume +// can use: +// +// if( mo & ( memory_order_acquire | memory_order_consume ) ) { ...fence... } +// +// The values are also in the order of increasing "strength" +// of the fences so that success/failure orders can be checked +// efficiently in compare_exchange methods. +// + +#if !defined(BOOST_NO_CXX11_SCOPED_ENUMS) + +enum class memory_order : unsigned int +{ + relaxed = 0, + consume = 1, + acquire = 2, + release = 4, + acq_rel = 6, // acquire | release + seq_cst = 14 // acq_rel | 8 +}; + +BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST memory_order memory_order_relaxed = memory_order::relaxed; +BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST memory_order memory_order_consume = memory_order::consume; +BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST memory_order memory_order_acquire = memory_order::acquire; +BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST memory_order memory_order_release = memory_order::release; +BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST memory_order memory_order_acq_rel = memory_order::acq_rel; +BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST memory_order memory_order_seq_cst = memory_order::seq_cst; + +#undef BOOST_MEMORY_ORDER_INLINE_VARIABLE + +#else // !defined(BOOST_NO_CXX11_SCOPED_ENUMS) + +enum memory_order +{ + memory_order_relaxed = 0, + memory_order_consume = 1, + memory_order_acquire = 2, + memory_order_release = 4, + memory_order_acq_rel = 6, // acquire | release + memory_order_seq_cst = 14 // acq_rel | 8 +}; + +#endif // !defined(BOOST_NO_CXX11_SCOPED_ENUMS) + +} // namespace boost + +#endif // #ifndef BOOST_MEMORY_ORDER_HPP_INCLUDED diff --git a/src/boost/boost/move/core.hpp b/src/boost/boost/move/core.hpp index 13c8c79b1..4c08fc8f2 100644 --- a/src/boost/boost/move/core.hpp +++ b/src/boost/boost/move/core.hpp @@ -58,6 +58,7 @@ #include #define BOOST_MOVE_TO_RV_CAST(RV_TYPE, ARG) reinterpret_cast(ARG) + #define BOOST_MOVE_TO_LV_CAST(LV_TYPE, ARG) static_cast(ARG) //Move emulation rv breaks standard aliasing rules so add workarounds for some compilers #if defined(BOOST_GCC) && (BOOST_GCC >= 40400) && (BOOST_GCC < 40500) @@ -218,6 +219,10 @@ return x; } + template + BOOST_MOVE_FORCEINLINE T& unrv(::boost::rv &rv) BOOST_NOEXCEPT + { return BOOST_MOVE_TO_LV_CAST(T&, rv); } + } //namespace move_detail { } //namespace boost { @@ -229,6 +234,11 @@ ::boost::move((BASE_TYPE&)(ARG)) // + #define BOOST_MOVE_TO_LV(ARG) \ + ::boost::move_detail::unrv(ARG) + // + + ////////////////////////////////////////////////////////////////////////////// // // BOOST_MOVABLE_BUT_NOT_COPYABLE @@ -480,6 +490,17 @@ ::boost::move((BASE_TYPE&)(ARG)) // + //!This macro is used to achieve portable optimal move constructors. + //! + //!In C++03 mode, when accessing a member of type through a rvalue (implemented as a `rv &` type, where rv derives + //!from T) triggers a potential UB as the program never creates objects of type rv. This macro casts back `rv` to + //!`T&` so that access to member types are done through the original type. + //! + //!In C++11 compilers the cast from a rvalue reference of a derived type to a rvalue reference of + //!a base type is implicit, so it's a no-op. + #define BOOST_MOVE_TO_LV(ARG) ARG + // + namespace boost { namespace move_detail { diff --git a/src/boost/boost/move/detail/addressof.hpp b/src/boost/boost/move/detail/addressof.hpp new file mode 100644 index 000000000..82a4ad98c --- /dev/null +++ b/src/boost/boost/move/detail/addressof.hpp @@ -0,0 +1,61 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2014-2015. 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/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// +#ifndef BOOST_MOVE_DETAIL_ADDRESSOF_HPP +#define BOOST_MOVE_DETAIL_ADDRESSOF_HPP + +#ifndef BOOST_CONFIG_HPP +# include +#endif + +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif + +#include + +namespace boost { +namespace move_detail { + +#if defined(BOOST_MSVC_FULL_VER) && BOOST_MSVC_FULL_VER >= 190024215 +#define BOOST_MOVE_HAS_BUILTIN_ADDRESSOF +#elif defined(BOOST_GCC) && BOOST_GCC >= 70000 +#define BOOST_MOVE_HAS_BUILTIN_ADDRESSOF +#elif defined(__has_builtin) +#if __has_builtin(__builtin_addressof) +#define BOOST_MOVE_HAS_BUILTIN_ADDRESSOF +#endif +#endif + +#ifdef BOOST_MOVE_HAS_BUILTIN_ADDRESSOF + +template +BOOST_MOVE_FORCEINLINE T *addressof( T & v ) BOOST_NOEXCEPT +{ + return __builtin_addressof(v); +} + +#else //BOOST_MOVE_HAS_BUILTIN_ADDRESSOF + +template +BOOST_MOVE_FORCEINLINE T* addressof(T& obj) +{ + return static_cast( + static_cast( + const_cast( + &reinterpret_cast(obj) + ))); +} + +#endif //BOOST_MOVE_HAS_BUILTIN_ADDRESSOF + +} //namespace move_detail { +} //namespace boost { + +#endif //#ifndef BOOST_MOVE_DETAIL_ADDRESSOF_HPP diff --git a/src/boost/boost/move/detail/config_begin.hpp b/src/boost/boost/move/detail/config_begin.hpp index b2ebdb2c6..e169d701c 100644 --- a/src/boost/boost/move/detail/config_begin.hpp +++ b/src/boost/boost/move/detail/config_begin.hpp @@ -13,6 +13,7 @@ #ifdef BOOST_MSVC # pragma warning (push) +# pragma warning (disable : 4619) // there is no warning number 'XXXX' # pragma warning (disable : 4324) // structure was padded due to __declspec(align()) # pragma warning (disable : 4675) // "function": resolved overload was found by argument-dependent lookup # pragma warning (disable : 4996) // "function": was declared deprecated (_CRT_SECURE_NO_DEPRECATE/_SCL_SECURE_NO_WARNINGS) diff --git a/src/boost/boost/move/detail/meta_utils.hpp b/src/boost/boost/move/detail/meta_utils.hpp index a3be3adb4..4c3ab6eac 100644 --- a/src/boost/boost/move/detail/meta_utils.hpp +++ b/src/boost/boost/move/detail/meta_utils.hpp @@ -21,6 +21,7 @@ #include //forceinline #include #include //for std::size_t +#include //Small meta-typetraits to support move @@ -56,8 +57,8 @@ struct apply template< bool C_ > struct bool_ : integral_constant { - operator bool() const { return C_; } - bool operator()() const { return C_; } + BOOST_MOVE_FORCEINLINE operator bool() const { return C_; } + BOOST_MOVE_FORCEINLINE bool operator()() const { return C_; } }; typedef bool_ true_; @@ -70,6 +71,10 @@ struct nat{}; struct nat2{}; struct nat3{}; +template +struct natN +{}; + ////////////////////////////////////// // yes_type/no_type ////////////////////////////////////// @@ -220,7 +225,7 @@ struct identity { typedef T type; typedef typename add_const_lvalue_reference::type reference; - reference operator()(reference t) + BOOST_MOVE_FORCEINLINE reference operator()(reference t) const { return t; } }; @@ -241,36 +246,7 @@ struct is_class_or_union ////////////////////////////////////// // addressof ////////////////////////////////////// -template -struct addr_impl_ref -{ - T & v_; - BOOST_MOVE_FORCEINLINE addr_impl_ref( T & v ): v_( v ) {} - BOOST_MOVE_FORCEINLINE operator T& () const { return v_; } - - private: - addr_impl_ref & operator=(const addr_impl_ref &); -}; -template -struct addressof_impl -{ - BOOST_MOVE_FORCEINLINE static T * f( T & v, long ) - { - return reinterpret_cast( - &const_cast(reinterpret_cast(v))); - } - - BOOST_MOVE_FORCEINLINE static T * f( T * v, int ) - { return v; } -}; - -template -BOOST_MOVE_FORCEINLINE T * addressof( T & v ) -{ - return ::boost::move_detail::addressof_impl::f - ( ::boost::move_detail::addr_impl_ref( v ), 0 ); -} ////////////////////////////////////// // has_pointer_type diff --git a/src/boost/boost/move/detail/meta_utils_core.hpp b/src/boost/boost/move/detail/meta_utils_core.hpp index 30f8730fe..8adc17de1 100644 --- a/src/boost/boost/move/detail/meta_utils_core.hpp +++ b/src/boost/boost/move/detail/meta_utils_core.hpp @@ -27,6 +27,9 @@ namespace boost { namespace move_detail { +template +struct voider { typedef void type; }; + ////////////////////////////////////// // if_c ////////////////////////////////////// @@ -52,7 +55,9 @@ struct if_ : if_c<0 != T1::value, T2, T3> ////////////////////////////////////// // enable_if_c ////////////////////////////////////// -template +struct enable_if_nat{}; + +template struct enable_if_c { typedef T type; @@ -64,13 +69,13 @@ struct enable_if_c {}; ////////////////////////////////////// // enable_if ////////////////////////////////////// -template +template struct enable_if : enable_if_c {}; ////////////////////////////////////// // disable_if_c ////////////////////////////////////// -template +template struct disable_if_c : enable_if_c {}; @@ -78,7 +83,7 @@ struct disable_if_c ////////////////////////////////////// // disable_if ////////////////////////////////////// -template +template struct disable_if : enable_if_c {}; ////////////////////////////////////// @@ -117,13 +122,13 @@ struct is_same ////////////////////////////////////// // enable_if_same ////////////////////////////////////// -template +template struct enable_if_same : enable_if, R> {}; ////////////////////////////////////// // disable_if_same ////////////////////////////////////// -template +template struct disable_if_same : disable_if, R> {}; } //namespace move_detail { diff --git a/src/boost/boost/move/detail/std_ns_begin.hpp b/src/boost/boost/move/detail/std_ns_begin.hpp index a178b6254..459472b44 100644 --- a/src/boost/boost/move/detail/std_ns_begin.hpp +++ b/src/boost/boost/move/detail/std_ns_begin.hpp @@ -24,7 +24,11 @@ #define BOOST_MOVE_STD_NS_BEG _GLIBCXX_BEGIN_NAMESPACE(std) #define BOOST_MOVE_STD_NS_END _GLIBCXX_END_NAMESPACE #else + #if defined(_MSC_VER) && (_MSC_VER >= 1915) + #pragma warning (push) + #pragma warning (disable : 4643) // Forward declaring 'X' in namespace std is not permitted by the C++ Standard + #endif + #define BOOST_MOVE_STD_NS_BEG namespace std{ #define BOOST_MOVE_STD_NS_END } #endif - diff --git a/src/boost/boost/move/detail/std_ns_end.hpp b/src/boost/boost/move/detail/std_ns_end.hpp index 39ce41109..a9297cee9 100644 --- a/src/boost/boost/move/detail/std_ns_end.hpp +++ b/src/boost/boost/move/detail/std_ns_end.hpp @@ -11,4 +11,6 @@ #ifdef BOOST_MOVE_STD_NS_GCC_DIAGNOSTIC_PUSH #pragma GCC diagnostic pop #undef BOOST_MOVE_STD_NS_GCC_DIAGNOSTIC_PUSH +#elif defined(_MSC_VER) && (_MSC_VER >= 1915) + #pragma warning (pop) #endif //BOOST_MOVE_STD_NS_GCC_DIAGNOSTIC_PUSH diff --git a/src/boost/boost/move/detail/type_traits.hpp b/src/boost/boost/move/detail/type_traits.hpp index 7e323c2e7..ed0822e48 100644 --- a/src/boost/boost/move/detail/type_traits.hpp +++ b/src/boost/boost/move/detail/type_traits.hpp @@ -30,8 +30,7 @@ // move/detail #include // other -#include -#include +#include // std #include @@ -65,6 +64,8 @@ // BOOST_MOVE_HAS_NOTHROW_COPY(T) should evaluate to true if T(t) can not throw // BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) should evaluate to true if t = u can not throw // BOOST_MOVE_IS_ENUM(T) should evaluate to true it t is a union type. +// BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR(T) should evaluate to true if T has a non-throwing move constructor. +// BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN(T) should evaluate to true if T has a non-throwing move assignment operator. // // The following can also be defined: when detected our implementation is greatly simplified. // @@ -102,51 +103,127 @@ # define BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) (__has_trivial_move_constructor(T) || ::boost::move_detail::is_pod::value) # define BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN(T) (__has_trivial_move_assign(T) || ::boost::move_detail::is_pod::value) # endif +# if _MSC_FULL_VER >= 180020827 +# define BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN(T) (__is_nothrow_assignable(T&, T&&)) +# define BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR(T) (__is_nothrow_constructible(T, T&&)) +# endif #endif -#if defined(BOOST_CLANG) && defined(__has_feature) +#if defined(BOOST_CLANG) +// BOOST_MOVE_HAS_TRAIT +# if defined __is_identifier +# define BOOST_MOVE_HAS_TRAIT(T) (__has_extension(T) || !__is_identifier(__##T)) +# elif defined(__has_extension) +# define BOOST_MOVE_HAS_TRAIT(T) __has_extension(T) +# else +# define BOOST_MOVE_HAS_TRAIT(T) 0 +# endif -# if __has_feature(is_union) +// BOOST_MOVE_IS_UNION +# if BOOST_MOVE_HAS_TRAIT(is_union) # define BOOST_MOVE_IS_UNION(T) __is_union(T) # endif -# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_pod) + +// BOOST_MOVE_IS_ENUM +# if BOOST_MOVE_HAS_TRAIT(is_enum) +# define BOOST_MOVE_IS_ENUM(T) __is_enum(T) +# endif + +// BOOST_MOVE_IS_POD +# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && BOOST_MOVE_HAS_TRAIT(is_pod) # define BOOST_MOVE_IS_POD(T) __is_pod(T) # endif -# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_empty) + +// BOOST_MOVE_IS_EMPTY +# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && BOOST_MOVE_HAS_TRAIT(is_empty) # define BOOST_MOVE_IS_EMPTY(T) __is_empty(T) # endif -# if __has_feature(has_trivial_constructor) + +// BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR +# if BOOST_MOVE_HAS_TRAIT(is_constructible) && BOOST_MOVE_HAS_TRAIT(is_trivially_constructible) +# define BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) __is_trivially_constructible(T) +# elif BOOST_MOVE_HAS_TRAIT(has_trivial_constructor) # define BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T) # endif -# if __has_feature(has_trivial_copy) + +// BOOST_MOVE_HAS_TRIVIAL_COPY +# if BOOST_MOVE_HAS_TRAIT(is_constructible) && BOOST_MOVE_HAS_TRAIT(is_trivially_constructible) +# define BOOST_MOVE_HAS_TRIVIAL_COPY(T) (__is_constructible(T, const T &) && __is_trivially_constructible(T, const T &)) +# elif BOOST_MOVE_HAS_TRAIT(has_trivial_copy) # define BOOST_MOVE_HAS_TRIVIAL_COPY(T) __has_trivial_copy(T) # endif -# if __has_feature(has_trivial_assign) -# define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) ) + +// BOOST_MOVE_HAS_TRIVIAL_ASSIGN +# if BOOST_MOVE_HAS_TRAIT(is_assignable) && BOOST_MOVE_HAS_TRAIT(is_trivially_assignable) +# define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) (__is_assignable(T, const T &) && __is_trivially_assignable(T, const T &)) +# elif BOOST_MOVE_HAS_TRAIT(has_trivial_copy) +# define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T) # endif -# if __has_feature(has_trivial_destructor) + +// BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR +# if BOOST_MOVE_HAS_TRAIT(is_trivially_destructible) +# define BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) __is_trivially_destructible(T) +# elif BOOST_MOVE_HAS_TRAIT(has_trivial_destructor) # define BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T) # endif -# if __has_feature(has_nothrow_constructor) + +// BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR +# if BOOST_MOVE_HAS_TRAIT(is_nothrow_constructible) +# define BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) __is_nothrow_constructible(T) +# elif BOOST_MOVE_HAS_TRAIT(has_nothrow_constructor) # define BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T) # endif -# if __has_feature(has_nothrow_copy) + +// BOOST_MOVE_HAS_NOTHROW_COPY +# if BOOST_MOVE_HAS_TRAIT(is_constructible) && BOOST_MOVE_HAS_TRAIT(is_nothrow_constructible) +# define BOOST_MOVE_HAS_NOTHROW_COPY(T) (__is_constructible(T, const T &) && __is_nothrow_constructible(T, const T &)) +# elif BOOST_MOVE_HAS_TRAIT(has_nothrow_copy) # define BOOST_MOVE_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T)) # endif -# if __has_feature(is_nothrow_copy_assignable) + +// BOOST_MOVE_HAS_NOTHROW_ASSIGN +# if BOOST_MOVE_HAS_TRAIT(is_assignable) && BOOST_MOVE_HAS_TRAIT(is_nothrow_assignable) +# define BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) (__is_assignable(T, const T &) && __is_nothrow_assignable(T, const T &)) +# elif BOOST_MOVE_HAS_TRAIT(has_nothrow_assign) # define BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T)) # endif -# if __has_feature(is_enum) -# define BOOST_MOVE_IS_ENUM(T) __is_enum(T) -# endif -# if __has_feature(has_trivial_move_constructor) + +// BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + +# if BOOST_MOVE_HAS_TRAIT(is_constructible) && BOOST_MOVE_HAS_TRAIT(is_trivially_constructible) +# define BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) (__is_constructible(T, T&&) && __is_trivially_constructible(T, T&&)) +# elif BOOST_MOVE_HAS_TRAIT(has_trivial_move_constructor) # define BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) __has_trivial_move_constructor(T) # endif -# if __has_feature(has_trivial_move_assign) + +// BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN +# if BOOST_MOVE_HAS_TRAIT(is_assignable) && BOOST_MOVE_HAS_TRAIT(is_trivially_assignable) +# define BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN(T) (__is_assignable(T, T&&) && __is_trivially_assignable(T, T&&)) +# elif BOOST_MOVE_HAS_TRAIT(has_trivial_move_assign) # define BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN(T) __has_trivial_move_assign(T) # endif + +// BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR +# if BOOST_MOVE_HAS_TRAIT(is_constructible) && BOOST_MOVE_HAS_TRAIT(is_nothrow_constructible) +# define BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR(T) (__is_constructible(T, T&&) && __is_nothrow_constructible(T, T&&)) +# elif BOOST_MOVE_HAS_TRAIT(has_nothrow_move_constructor) +# define BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR(T) __has_nothrow_move_constructor(T) +# endif + +// BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN +# if BOOST_MOVE_HAS_TRAIT(is_assignable) && BOOST_MOVE_HAS_TRAIT(is_nothrow_assignable) +# define BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN(T) (__is_assignable(T, T&&) && __is_nothrow_assignable(T, T&&)) +# elif BOOST_MOVE_HAS_TRAIT(has_nothrow_move_assign) +# define BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN(T) __has_nothrow_move_assign(T) +# endif + +# endif //BOOST_NO_CXX11_RVALUE_REFERENCES + +// BOOST_MOVE_ALIGNMENT_OF # define BOOST_MOVE_ALIGNMENT_OF(T) __alignof(T) -#endif + +#endif //#if defined(BOOST_CLANG) #if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) && !defined(__GCCXML__))) && !defined(BOOST_CLANG) @@ -160,14 +237,106 @@ # define BOOST_MOVE_IS_POD(T) __is_pod(T) # define BOOST_MOVE_IS_EMPTY(T) __is_empty(T) # define BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) ((__has_trivial_constructor(T) BOOST_MOVE_INTEL_TT_OPTS)) -# define BOOST_MOVE_HAS_TRIVIAL_COPY(T) ((__has_trivial_copy(T) BOOST_MOVE_INTEL_TT_OPTS)) -# define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) ((__has_trivial_assign(T) BOOST_MOVE_INTEL_TT_OPTS) ) + +# if defined(BOOST_GCC) && (BOOST_GCC > 50000) +# define BOOST_MOVE_HAS_TRIVIAL_COPY(T) (__is_trivially_constructible(T, const T &)) +# define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) (__is_trivially_assignable(T, const T &)) +# else +# define BOOST_MOVE_HAS_TRIVIAL_COPY(T) ((__has_trivial_copy(T) BOOST_MOVE_INTEL_TT_OPTS)) +# define BOOST_MOVE_HAS_TRIVIAL_ASSIGN(T) ((__has_trivial_assign(T) BOOST_MOVE_INTEL_TT_OPTS) ) +# endif + # define BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) BOOST_MOVE_INTEL_TT_OPTS) # define BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) BOOST_MOVE_INTEL_TT_OPTS) # define BOOST_MOVE_HAS_NOTHROW_COPY(T) ((__has_nothrow_copy(T) BOOST_MOVE_INTEL_TT_OPTS)) # define BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) ((__has_nothrow_assign(T) BOOST_MOVE_INTEL_TT_OPTS)) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_SFINAE_EXPR) + + template + T && boost_move_tt_declval() BOOST_NOEXCEPT; + +# if defined(BOOST_GCC) && (BOOST_GCC >= 80000) +// __is_assignable / __is_constructible implemented +# define BOOST_MOVE_IS_ASSIGNABLE(T, U) __is_assignable(T, U) +# define BOOST_MOVE_IS_CONSTRUCTIBLE(T, U) __is_constructible(T, U) +# else + + template + class boost_move_tt_is_assignable + { + struct twochar { char dummy[2]; }; + template < class T + , class U + , class = decltype(boost_move_tt_declval() = boost_move_tt_declval()) + > static char test(int); + + template static twochar test(...); + + public: + static const bool value = sizeof(test(0)) == sizeof(char); + }; + + template + class boost_move_tt_is_constructible + { + struct twochar { char dummy[2]; }; + template < class T + , class U + , class = decltype(T(boost_move_tt_declval())) + > static char test(int); + + template static twochar test(...); + + public: + static const bool value = sizeof(test(0)) == sizeof(char); + }; + +# define BOOST_MOVE_IS_ASSIGNABLE(T, U) boost_move_tt_is_assignable::value +# define BOOST_MOVE_IS_CONSTRUCTIBLE(T, U) boost_move_tt_is_constructible::value + +# endif + + template + struct boost_move_tt_is_nothrow_assignable + { + static const bool value = false; + }; + + template + struct boost_move_tt_is_nothrow_assignable + { + #if !defined(BOOST_NO_CXX11_NOEXCEPT) + static const bool value = noexcept(boost_move_tt_declval() = boost_move_tt_declval()); + #else + static const bool value = false; + #endif + }; + + template + struct boost_move_tt_is_nothrow_constructible + { + static const bool value = false; + }; + + template + struct boost_move_tt_is_nothrow_constructible + { + #if !defined(BOOST_NO_CXX11_NOEXCEPT) + static const bool value = noexcept(T(boost_move_tt_declval())); + #else + static const bool value = false; + #endif + }; + +# define BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN(T) boost_move_tt_is_nothrow_assignable::value +# define BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR(T) boost_move_tt_is_nothrow_constructible::value + +# endif + # define BOOST_MOVE_IS_ENUM(T) __is_enum(T) + +// BOOST_MOVE_ALIGNMENT_OF # if (!defined(unix) && !defined(__unix__)) || defined(__LP64__) // GCC sometimes lies about alignment requirements // of type double on 32-bit unix platforms, use the @@ -193,7 +362,7 @@ # define BOOST_MOVE_ALIGNMENT_OF(T) __alignof__(T) #endif -# if defined(__CODEGEARC__) +# if defined(BOOST_CODEGEARC) # define BOOST_MOVE_IS_UNION(T) __is_union(T) # define BOOST_MOVE_IS_POD(T) __is_pod(T) # define BOOST_MOVE_IS_EMPTY(T) __is_empty(T) @@ -243,13 +412,13 @@ #endif #ifdef BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR - #define BOOST_MOVE_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) + #define BOOST_MOVE_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_CONSTRUCTOR(T) || ::boost::move_detail::is_pod::value #else #define BOOST_MOVE_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod::value #endif #ifdef BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR - #define BOOST_MOVE_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) + #define BOOST_MOVE_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) || ::boost::move_detail::is_pod::value #else #define BOOST_MOVE_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod::value #endif @@ -263,45 +432,45 @@ #endif #ifdef BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN - #define BOOST_MOVE_IS_TRIVIALLY_MOVE_ASSIGNABLE(T) BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN(T) + #define BOOST_MOVE_IS_TRIVIALLY_MOVE_ASSIGNABLE(T) BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN(T) || ::boost::move_detail::is_pod::value #else #define BOOST_MOVE_IS_TRIVIALLY_MOVE_ASSIGNABLE(T) ::boost::move_detail::is_pod::value #endif #ifdef BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR - #define BOOST_MOVE_IS_TRIVIALLY_DESTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) + #define BOOST_MOVE_IS_TRIVIALLY_DESTRUCTIBLE(T) BOOST_MOVE_HAS_TRIVIAL_DESTRUCTOR(T) || ::boost::move_detail::is_pod::value #else #define BOOST_MOVE_IS_TRIVIALLY_DESTRUCTIBLE(T) ::boost::move_detail::is_pod::value #endif #ifdef BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR - #define BOOST_MOVE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) + #define BOOST_MOVE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_NOTHROW_CONSTRUCTOR(T) || ::boost::move_detail::is_pod::value #else #define BOOST_MOVE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod::value #endif #ifdef BOOST_MOVE_HAS_NOTHROW_COPY - #define BOOST_MOVE_IS_NOTHROW_COPY_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_NOTHROW_COPY(T) + #define BOOST_MOVE_IS_NOTHROW_COPY_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_NOTHROW_COPY(T) || ::boost::move_detail::is_pod::value #else - #define BOOST_MOVE_IS_NOTHROW_COPY_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod::value + #define BOOST_MOVE_IS_NOTHROW_COPY_CONSTRUCTIBLE(T) BOOST_MOVE_IS_TRIVIALLY_COPY_ASSIGNABLE(T) #endif -#ifdef BOOST_MOVE_HAS_NOTHROW_MOVE - #define BOOST_MOVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_NOTHROW_MOVE(T) +#ifdef BOOST_MOVE_HAS_NOTHROW_ASSIGN + #define BOOST_MOVE_IS_NOTHROW_COPY_ASSIGNABLE(T) BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) || ::boost::move_detail::is_pod::value #else - #define BOOST_MOVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE(T) ::boost::move_detail::is_pod::value + #define BOOST_MOVE_IS_NOTHROW_COPY_ASSIGNABLE(T) BOOST_MOVE_IS_TRIVIALLY_COPY_ASSIGNABLE(T) #endif -#ifdef BOOST_MOVE_HAS_NOTHROW_ASSIGN - #define BOOST_MOVE_IS_NOTHROW_COPY_ASSIGNABLE(T) BOOST_MOVE_HAS_NOTHROW_ASSIGN(T) +#ifdef BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR + #define BOOST_MOVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE(T) BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR(T) || ::boost::move_detail::is_pod::value #else - #define BOOST_MOVE_IS_NOTHROW_COPY_ASSIGNABLE(T) ::boost::move_detail::is_pod::value + #define BOOST_MOVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE(T) BOOST_MOVE_IS_TRIVIALLY_MOVE_ASSIGNABLE(T) #endif #ifdef BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN - #define BOOST_MOVE_IS_NOTHROW_MOVE_ASSIGNABLE(T) BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN(T) + #define BOOST_MOVE_IS_NOTHROW_MOVE_ASSIGNABLE(T) BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN(T) || ::boost::move_detail::is_pod::value #else - #define BOOST_MOVE_IS_NOTHROW_MOVE_ASSIGNABLE(T) ::boost::move_detail::is_pod::value + #define BOOST_MOVE_IS_NOTHROW_MOVE_ASSIGNABLE(T) BOOST_MOVE_IS_TRIVIALLY_MOVE_ASSIGNABLE(T) #endif #ifdef BOOST_MOVE_IS_ENUM @@ -403,6 +572,15 @@ template struct remove_cv { typedef T type; }; template struct remove_cv { typedef T type; }; template struct remove_cv { typedef T type; }; +////////////////////////// +// remove_cvref +////////////////////////// +template +struct remove_cvref + : remove_cv::type> +{ +}; + ////////////////////////// // make_unsigned ////////////////////////// @@ -817,8 +995,6 @@ struct is_trivially_default_constructible template struct is_trivially_copy_constructible { - //In several compilers BOOST_MOVE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE return true even with - //deleted copy constructors so make sure the type is copy constructible. static const bool value = BOOST_MOVE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T); }; @@ -835,8 +1011,6 @@ struct is_trivially_move_constructible template struct is_trivially_copy_assignable { - //In several compilers BOOST_MOVE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE return true even with - //deleted copy constructors so make sure the type is copy constructible. static const bool value = BOOST_MOVE_IS_TRIVIALLY_COPY_ASSIGNABLE(T); }; @@ -852,7 +1026,6 @@ struct is_trivially_move_assignable ////////////////////////////////////// template struct is_nothrow_default_constructible - : is_pod { static const bool value = BOOST_MOVE_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE(T); }; ////////////////////////////////////// @@ -902,6 +1075,7 @@ struct alignment_of_hack char c; T t2; alignment_of_hack(); + ~alignment_of_hack(); }; template @@ -931,7 +1105,7 @@ struct alignment_of class alignment_dummy; typedef void (*function_ptr)(); typedef int (alignment_dummy::*member_ptr); -typedef int (alignment_dummy::*member_function_ptr)(); + struct alignment_struct { long double dummy[4]; }; @@ -954,7 +1128,6 @@ union max_align long double long_double_[4]; alignment_dummy *unknown_class_ptr_; function_ptr function_ptr_; - member_function_ptr member_function_ptr_; alignment_struct alignment_struct_; }; @@ -964,7 +1137,46 @@ typedef union max_align max_align_t; // aligned_storage ///////////////////////////// -#if !defined(BOOST_NO_ALIGNMENT) +#if defined(_MSC_VER) && defined(_M_IX86) + +// Special version for usual alignments on x86 MSVC because it might crash +// when passsing aligned types by value even for 8 byte alignment. +template +struct aligned_struct; + +template <> struct aligned_struct<1> { char data; }; +template <> struct aligned_struct<2> { short data; }; +template <> struct aligned_struct<4> { int data; }; +template <> struct aligned_struct<8> { double data; }; + +#define BOOST_MOVE_ALIGNED_STRUCT(x) \ + template <> struct aligned_struct { \ + __declspec(align(x)) char data; \ + } +BOOST_MOVE_ALIGNED_STRUCT(16); +BOOST_MOVE_ALIGNED_STRUCT(32); +BOOST_MOVE_ALIGNED_STRUCT(64); +BOOST_MOVE_ALIGNED_STRUCT(128); +BOOST_MOVE_ALIGNED_STRUCT(512); +BOOST_MOVE_ALIGNED_STRUCT(1024); +BOOST_MOVE_ALIGNED_STRUCT(2048); +BOOST_MOVE_ALIGNED_STRUCT(4096); + +template +union aligned_union +{ + typedef aligned_struct aligner_t; + aligner_t aligner; + unsigned char data[Len > sizeof(aligner_t) ? Len : sizeof(aligner_t)]; +}; + +template +struct aligned_storage_impl +{ + typedef aligned_union type; +}; + +#elif !defined(BOOST_NO_ALIGNMENT) template struct aligned_struct; @@ -999,8 +1211,9 @@ BOOST_MOVE_ALIGNED_STORAGE_WITH_BOOST_ALIGNMENT(0x1000) template union aligned_struct_wrapper { + typedef aligned_struct aligner_t; aligned_struct aligner; - unsigned char data[sizeof(aligned_struct)]; + unsigned char data[Len > sizeof(aligner_t) ? Len : sizeof(aligner_t)]; }; template @@ -1015,7 +1228,7 @@ template union aligned_union { T aligner; - unsigned char data[Len]; + unsigned char data[Len > sizeof(T) ? Len : sizeof(T)]; }; template @@ -1024,7 +1237,7 @@ struct aligned_next; template struct aligned_next { - BOOST_STATIC_ASSERT((alignment_of::value == Align)); + BOOST_MOVE_STATIC_ASSERT((alignment_of::value == Align)); typedef aligned_union type; }; @@ -1064,13 +1277,13 @@ template::value> struct aligned_storage { //Sanity checks for input parameters - BOOST_STATIC_ASSERT(Align > 0); + BOOST_MOVE_STATIC_ASSERT(Align > 0); //Sanity checks for output type typedef typename aligned_storage_impl::type type; static const std::size_t value = alignment_of::value; - BOOST_STATIC_ASSERT(value >= Align); - BOOST_STATIC_ASSERT((value % Align) == 0); + BOOST_MOVE_STATIC_ASSERT(value >= Align); + BOOST_MOVE_STATIC_ASSERT((value % Align) == 0); //Just in case someone instantiates aligned_storage //instead of aligned_storage::type (typical error). diff --git a/src/boost/boost/move/detail/workaround.hpp b/src/boost/boost/move/detail/workaround.hpp index 488492f35..83bf24b92 100644 --- a/src/boost/boost/move/detail/workaround.hpp +++ b/src/boost/boost/move/detail/workaround.hpp @@ -52,18 +52,97 @@ #define BOOST_MOVE_MSVC_AUTO_MOVE_RETURN_BUG #endif +//#define BOOST_MOVE_DISABLE_FORCEINLINE + #if defined(BOOST_MOVE_DISABLE_FORCEINLINE) #define BOOST_MOVE_FORCEINLINE inline #elif defined(BOOST_MOVE_FORCEINLINE_IS_BOOST_FORCELINE) #define BOOST_MOVE_FORCEINLINE BOOST_FORCEINLINE -#elif defined(BOOST_MSVC) && defined(_DEBUG) - //"__forceinline" and MSVC seems to have some bugs in debug mode +#elif defined(BOOST_MSVC) && (_MSC_VER < 1900 || defined(_DEBUG)) + //"__forceinline" and MSVC seems to have some bugs in old versions and in debug mode #define BOOST_MOVE_FORCEINLINE inline -#elif defined(__GNUC__) && ((__GNUC__ < 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ < 5))) +#elif defined(BOOST_GCC) && (__GNUC__ <= 5) //Older GCCs have problems with forceinline #define BOOST_MOVE_FORCEINLINE inline #else #define BOOST_MOVE_FORCEINLINE BOOST_FORCEINLINE #endif +namespace boost { +namespace movelib { + +template +BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore(T1 const&) +{} + +}} //namespace boost::movelib { + +#if !(defined BOOST_NO_EXCEPTIONS) +# define BOOST_MOVE_TRY { try +# define BOOST_MOVE_CATCH(x) catch(x) +# define BOOST_MOVE_RETHROW throw; +# define BOOST_MOVE_CATCH_END } +#else +# if !defined(BOOST_MSVC) || BOOST_MSVC >= 1900 +# define BOOST_MOVE_TRY { if (true) +# define BOOST_MOVE_CATCH(x) else if (false) +# else +// warning C4127: conditional expression is constant +# define BOOST_MOVE_TRY { \ + __pragma(warning(push)) \ + __pragma(warning(disable: 4127)) \ + if (true) \ + __pragma(warning(pop)) +# define BOOST_MOVE_CATCH(x) else \ + __pragma(warning(push)) \ + __pragma(warning(disable: 4127)) \ + if (false) \ + __pragma(warning(pop)) +# endif +# define BOOST_MOVE_RETHROW +# define BOOST_MOVE_CATCH_END } +#endif + +#ifndef BOOST_NO_CXX11_STATIC_ASSERT +# ifndef BOOST_NO_CXX11_VARIADIC_MACROS +# define BOOST_MOVE_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__) +# else +# define BOOST_MOVE_STATIC_ASSERT( B ) static_assert(B, #B) +# endif +#else +namespace boost { +namespace move_detail { + +template +struct STATIC_ASSERTION_FAILURE; + +template<> +struct STATIC_ASSERTION_FAILURE{}; + +template struct static_assert_test {}; + +}} + +#define BOOST_MOVE_STATIC_ASSERT(B) \ + typedef ::boost::move_detail::static_assert_test<\ + (unsigned)sizeof(::boost::move_detail::STATIC_ASSERTION_FAILURE)>\ + BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED + +#endif + +#if !defined(__has_cpp_attribute) || defined(__CUDACC__) +#define BOOST_MOVE_HAS_MSVC_ATTRIBUTE(ATTR) 0 +#else +#define BOOST_MOVE_HAS_MSVC_ATTRIBUTE(ATTR) __has_cpp_attribute(msvc::ATTR) +#endif + +// See https://devblogs.microsoft.com/cppblog/improving-the-state-of-debug-performance-in-c/ +// for details on how MSVC has improved debug experience, specifically for move/forward-like utilities +#if BOOST_MOVE_HAS_MSVC_ATTRIBUTE(intrinsic) +#define BOOST_MOVE_INTRINSIC_CAST [[msvc::intrinsic]] +#else +#define BOOST_MOVE_INTRINSIC_CAST BOOST_MOVE_FORCEINLINE +#endif + #endif //#ifndef BOOST_MOVE_DETAIL_WORKAROUND_HPP + diff --git a/src/boost/boost/move/utility_core.hpp b/src/boost/boost/move/utility_core.hpp index 821ad5715..fb678c0c8 100644 --- a/src/boost/boost/move/utility_core.hpp +++ b/src/boost/boost/move/utility_core.hpp @@ -29,7 +29,6 @@ #include //forceinline #include #include -#include #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_MOVE_DOXYGEN_INVOKED) @@ -209,7 +208,8 @@ #else //BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES template - BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::remove_reference::type && move(T&& t) BOOST_NOEXCEPT + BOOST_MOVE_INTRINSIC_CAST + typename ::boost::move_detail::remove_reference::type && move(T&& t) BOOST_NOEXCEPT { return static_cast::type &&>(t); } #endif //BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES @@ -245,57 +245,62 @@ #else //Old move template - BOOST_MOVE_FORCEINLINE T&& forward(typename ::boost::move_detail::remove_reference::type& t) BOOST_NOEXCEPT + BOOST_MOVE_INTRINSIC_CAST + T&& forward(typename ::boost::move_detail::remove_reference::type& t) BOOST_NOEXCEPT { return static_cast(t); } template - BOOST_MOVE_FORCEINLINE T&& forward(typename ::boost::move_detail::remove_reference::type&& t) BOOST_NOEXCEPT + BOOST_MOVE_INTRINSIC_CAST + T&& forward(typename ::boost::move_detail::remove_reference::type&& t) BOOST_NOEXCEPT { //"boost::forward error: 'T' is a lvalue reference, can't forward as rvalue."; - BOOST_STATIC_ASSERT(!boost::move_detail::is_lvalue_reference::value); + BOOST_MOVE_STATIC_ASSERT(!boost::move_detail::is_lvalue_reference::value); return static_cast(t); } #endif //BOOST_MOVE_DOXYGEN_INVOKED - ////////////////////////////////////////////////////////////////////////////// - // - // move_if_not_lvalue_reference - // - ////////////////////////////////////////////////////////////////////////////// + } //namespace boost { + #endif //BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE - #if defined(BOOST_MOVE_DOXYGEN_INVOKED) - //! Effects: Calls `boost::move` if `input_reference` is not a lvalue reference. - //! Otherwise returns the reference - template output_reference move_if_not_lvalue_reference(input_reference) noexcept; - #elif defined(BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES) + ////////////////////////////////////////////////////////////////////////////// + // + // move_if_not_lvalue_reference + // + ////////////////////////////////////////////////////////////////////////////// - //Old move approach, lvalues could bind to rvalue references + namespace boost { - template - BOOST_MOVE_FORCEINLINE T&& move_if_not_lvalue_reference(typename ::boost::move_detail::identity::type&& t) BOOST_NOEXCEPT - { return t; } + #if defined(BOOST_MOVE_DOXYGEN_INVOKED) + //! Effects: Calls `boost::move` if `input_reference` is not a lvalue reference. + //! Otherwise returns the reference + template output_reference move_if_not_lvalue_reference(input_reference) noexcept; + #elif defined(BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES) - #else //Old move + //Old move approach, lvalues could bind to rvalue references - template - BOOST_MOVE_FORCEINLINE T&& move_if_not_lvalue_reference(typename ::boost::move_detail::remove_reference::type& t) BOOST_NOEXCEPT - { return static_cast(t); } + template + BOOST_MOVE_FORCEINLINE T&& move_if_not_lvalue_reference(typename ::boost::move_detail::identity::type&& t) BOOST_NOEXCEPT + { return t; } - template - BOOST_MOVE_FORCEINLINE T&& move_if_not_lvalue_reference(typename ::boost::move_detail::remove_reference::type&& t) BOOST_NOEXCEPT - { - //"boost::forward error: 'T' is a lvalue reference, can't forward as rvalue."; - BOOST_STATIC_ASSERT(!boost::move_detail::is_lvalue_reference::value); - return static_cast(t); - } + #else //Old move - #endif //BOOST_MOVE_DOXYGEN_INVOKED + template + BOOST_MOVE_FORCEINLINE T&& move_if_not_lvalue_reference(typename ::boost::move_detail::remove_reference::type& t) BOOST_NOEXCEPT + { return static_cast(t); } - } //namespace boost { + template + BOOST_MOVE_FORCEINLINE T&& move_if_not_lvalue_reference(typename ::boost::move_detail::remove_reference::type&& t) BOOST_NOEXCEPT + { + //"boost::forward error: 'T' is a lvalue reference, can't forward as rvalue."; + BOOST_MOVE_STATIC_ASSERT(!boost::move_detail::is_lvalue_reference::value); + return static_cast(t); + } + + #endif //BOOST_MOVE_DOXYGEN_INVOKED - #endif //#if defined(BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE) + } //namespace boost { #endif //BOOST_NO_CXX11_RVALUE_REFERENCES diff --git a/src/boost/boost/mp11/algorithm.hpp b/src/boost/boost/mp11/algorithm.hpp new file mode 100644 index 000000000..ed2aac540 --- /dev/null +++ b/src/boost/boost/mp11/algorithm.hpp @@ -0,0 +1,1327 @@ +#ifndef BOOST_MP11_ALGORITHM_HPP_INCLUDED +#define BOOST_MP11_ALGORITHM_HPP_INCLUDED + +// Copyright 2015-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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_transform +namespace detail +{ + +template class F, class... L> struct mp_transform_impl +{ +}; + +template class F, template class L, class... T> struct mp_transform_impl> +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) + + template struct f { using type = F; }; + + using type = L::type...>; + +#else + + using type = L...>; + +#endif +}; + +template class F, template class L1, class... T1, template class L2, class... T2> struct mp_transform_impl, L2> +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) + + template struct f { using type = F; }; + + using type = L1::type...>; + +#else + + using type = L1...>; + +#endif +}; + +template class F, template class L1, class... T1, template class L2, class... T2, template class L3, class... T3> struct mp_transform_impl, L2, L3> +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) + + template struct f { using type = F; }; + + using type = L1::type...>; + +#else + + using type = L1...>; + +#endif +}; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, == 1900 ) || BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 40800 ) + +template using mp_same_size_1 = mp_same...>; +template struct mp_same_size_2: mp_defer {}; + +#endif + +struct list_size_mismatch +{ +}; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_CUDA, >= 9000000 && BOOST_MP11_CUDA < 10000000 ) + +template class F, class... L> struct mp_transform_cuda_workaround +{ + using type = mp_if...>, detail::mp_transform_impl, detail::list_size_mismatch>; +}; + +#endif + +} // namespace detail + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, == 1900 ) || BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 40800 ) + +template class F, class... L> using mp_transform = typename mp_if::type, detail::mp_transform_impl, detail::list_size_mismatch>::type; + +#else + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_CUDA, >= 9000000 && BOOST_MP11_CUDA < 10000000 ) + +template class F, class... L> using mp_transform = typename detail::mp_transform_cuda_workaround< F, L...>::type::type; + +#else + +template class F, class... L> using mp_transform = typename mp_if...>, detail::mp_transform_impl, detail::list_size_mismatch>::type; + +#endif + +#endif + +template using mp_transform_q = mp_transform; + +namespace detail +{ + +template class F, template class L1, class... T1, template class L2, class... T2, template class L3, class... T3, template class L4, class... T4, class... L> struct mp_transform_impl, L2, L3, L4, L...> +{ + using A1 = L1...>; + + template using _f = mp_transform; + + using A2 = mp_fold, A1, _f>; + + template using _g = mp_apply; + + using type = mp_transform<_g, A2>; +}; + +} // namespace detail + +// mp_transform_if +namespace detail +{ + +template class P, template class F, class... L> struct mp_transform_if_impl +{ + // the stupid quote-unquote dance avoids "pack expansion used as argument for non-pack parameter of alias template" + + using Qp = mp_quote

; + using Qf = mp_quote; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) + + template struct _f_ { using type = mp_eval_if_q>, mp_first>, Qf, U...>; }; + template using _f = typename _f_::type; + +#else + + template using _f = mp_eval_if_q>, mp_first>, Qf, U...>; + +#endif + + using type = mp_transform<_f, L...>; +}; + +} // namespace detail + +template class P, template class F, class... L> using mp_transform_if = typename detail::mp_transform_if_impl::type; +template using mp_transform_if_q = typename detail::mp_transform_if_impl::type; + +// mp_filter +namespace detail +{ + +template class P, class L1, class... L> struct mp_filter_impl +{ + using Qp = mp_quote

; + + template using _f = mp_if< mp_invoke_q, mp_list, mp_list<> >; + + using _t1 = mp_transform<_f, L1, L...>; + using _t2 = mp_apply; + + using type = mp_assign; +}; + +} // namespace detail + +template class P, class... L> using mp_filter = typename detail::mp_filter_impl::type; +template using mp_filter_q = typename detail::mp_filter_impl::type; + +// mp_fill +namespace detail +{ + +template struct mp_fill_impl +{ +// An error "no type named 'type'" here means that the L argument of mp_fill is not a list +}; + +template class L, class... T, class V> struct mp_fill_impl, V> +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1900 ) + + template struct _f { using type = V; }; + using type = L::type...>; + +#else + + template using _f = V; + using type = L<_f...>; + +#endif +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto... A, class V> struct mp_fill_impl, V> +{ + using type = L<((void)A, V::value)...>; +}; + +#endif + +} // namespace detail + +template using mp_fill = typename detail::mp_fill_impl::type; + +// mp_contains +template using mp_contains = mp_to_bool>; + +// mp_repeat(_c) +namespace detail +{ + +template struct mp_repeat_c_impl +{ + using _l1 = typename mp_repeat_c_impl::type; + using _l2 = typename mp_repeat_c_impl::type; + + using type = mp_append<_l1, _l1, _l2>; +}; + +template struct mp_repeat_c_impl +{ + using type = mp_clear; +}; + +template struct mp_repeat_c_impl +{ + using type = L; +}; + +} // namespace detail + +template using mp_repeat_c = typename detail::mp_repeat_c_impl::type; +template using mp_repeat = typename detail::mp_repeat_c_impl::type; + +// mp_product +namespace detail +{ + +template class F, class P, class... L> struct mp_product_impl_2 +{ +}; + +template class F, class P> struct mp_product_impl_2 +{ + using type = mp_list>; +}; + +template class F, class P, template class L1, class... T1, class... L> struct mp_product_impl_2, L...> +{ + using type = mp_append, L...>::type...>; +}; + +template class F, class... L> struct mp_product_impl +{ +}; + +template class F> struct mp_product_impl +{ + using type = mp_list< F<> >; +}; + +template class F, class L1, class... L> struct mp_product_impl +{ + using type = mp_assign, L1, L...>::type>; +}; + +} // namespace detail + +template class F, class... L> using mp_product = typename detail::mp_product_impl::type; +template using mp_product_q = typename detail::mp_product_impl::type; + +// mp_drop(_c) +namespace detail +{ + +template struct mp_drop_impl; + +template class L, class... T, template class L2, class... U> struct mp_drop_impl, L2, mp_true> +{ + template static mp_identity> f( U*..., mp_identity*... ); + + using R = decltype( f( static_cast*>(0) ... ) ); + + using type = typename R::type; +}; + +} // namespace detail + +template using mp_drop_c = mp_assign, mp_repeat_c, N>, mp_bool::value>>::type>; + +template using mp_drop = mp_drop_c; + +// mp_from_sequence +namespace detail +{ + +template struct mp_from_sequence_impl; + +template class S, class U, U... J, class F> struct mp_from_sequence_impl, F> +{ + using type = mp_list_c; +}; + +} // namespace detail + +template> using mp_from_sequence = typename detail::mp_from_sequence_impl::type; + +// mp_iota(_c) +template using mp_iota_c = mp_from_sequence, mp_size_t>; +template> using mp_iota = mp_from_sequence::type, N::value>, F>; + +// mp_at(_c) +namespace detail +{ + +template struct mp_at_c_impl; + +#if defined(BOOST_MP11_HAS_TYPE_PACK_ELEMENT) + +template class L, class... T, std::size_t I> struct mp_at_c_impl, I> +{ + using type = __type_pack_element; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto... A, std::size_t I> struct mp_at_c_impl, I> +{ + using type = __type_pack_element...>; +}; + +#endif + +#else + +template struct mp_at_c_impl +{ + using _map = mp_transform >, mp_rename>; + using type = mp_second > >; +}; + +#endif + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_CUDA, >= 9000000 && BOOST_MP11_CUDA < 10000000 ) + +template struct mp_at_c_cuda_workaround +{ + using type = mp_if_c<(I < mp_size::value), detail::mp_at_c_impl, void>; +}; + +#endif + +} // namespace detail + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_CUDA, >= 9000000 && BOOST_MP11_CUDA < 10000000 ) + +template using mp_at_c = typename detail::mp_at_c_cuda_workaround< L, I >::type::type; + +#else + +template using mp_at_c = typename mp_if_c<(I < mp_size::value), detail::mp_at_c_impl, void>::type; + +#endif + +template using mp_at = mp_at_c; + +// mp_take(_c) +namespace detail +{ + +template struct mp_take_c_impl +{ +}; + +template class L, class... T> +struct mp_take_c_impl<0, L> +{ + using type = L<>; +}; + +template class L, class T1, class... T> +struct mp_take_c_impl<1, L> +{ + using type = L; +}; + +template class L, class T1, class T2, class... T> +struct mp_take_c_impl<2, L> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class... T> +struct mp_take_c_impl<3, L> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class... T> +struct mp_take_c_impl<4, L> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class... T> +struct mp_take_c_impl<5, L> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class... T> +struct mp_take_c_impl<6, L> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class... T> +struct mp_take_c_impl<7, L> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class... T> +struct mp_take_c_impl<8, L> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class... T> +struct mp_take_c_impl<9, L> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class... T, std::size_t N> +struct mp_take_c_impl, typename std::enable_if= 10>::type> +{ + using type = mp_append, typename mp_take_c_impl>::type>; +}; + +} // namespace detail + +template using mp_take_c = mp_assign>::type>; +template using mp_take = mp_take_c; + +// mp_back +template using mp_back = mp_at_c::value - 1>; + +// mp_pop_back +template using mp_pop_back = mp_take_c::value - 1>; + +// mp_replace +namespace detail +{ + +template struct mp_replace_impl; + +template class L, class... T, class V, class W> struct mp_replace_impl, V, W> +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + template struct _f { using type = mp_if, W, A>; }; + using type = L::type...>; +#else + template using _f = mp_if, W, A>; + using type = L<_f...>; +#endif +}; + +} // namespace detail + +template using mp_replace = typename detail::mp_replace_impl::type; + +// mp_replace_if +namespace detail +{ + +template class P, class W> struct mp_replace_if_impl; + +template class L, class... T, template class P, class W> struct mp_replace_if_impl, P, W> +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) + template struct _f { using type = mp_if, W, U>; }; + using type = L::type...>; +#else + template using _f = mp_if, W, U>; + using type = L<_f...>; +#endif +}; + +} // namespace detail + +template class P, class W> using mp_replace_if = typename detail::mp_replace_if_impl::type; +template using mp_replace_if_q = mp_replace_if; + +// mp_copy_if +// in detail/mp_copy_if.hpp + +// mp_remove +namespace detail +{ + +template struct mp_remove_impl; + +template class L, class... T, class V> struct mp_remove_impl, V> +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) + template struct _f { using type = mp_if, mp_list<>, mp_list>; }; + using type = mp_append, typename _f::type...>; +#else + template using _f = mp_if, mp_list<>, mp_list>; + using type = mp_append, _f...>; +#endif +}; + +} // namespace detail + +template using mp_remove = typename detail::mp_remove_impl::type; + +// mp_remove_if +// in detail/mp_remove_if.hpp + +// mp_flatten> +namespace detail +{ + +template struct mp_flatten_impl +{ + template using fn = mp_if, T, mp_list>; +}; + +} // namespace detail + +template> using mp_flatten = mp_apply, L>, mp_clear>>; + +// mp_partition +namespace detail +{ + +template class P> struct mp_partition_impl; + +template class L, class... T, template class P> struct mp_partition_impl, P> +{ + using type = L, P>, mp_remove_if, P>>; +}; + +} // namespace detail + +template class P> using mp_partition = typename detail::mp_partition_impl::type; +template using mp_partition_q = mp_partition; + +// mp_sort +namespace detail +{ + +template class P> struct mp_sort_impl; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + +template class L, class... T, template class P> struct mp_sort_impl, P> +{ + static_assert( sizeof...(T) == 0, "T... must be empty" ); + using type = L<>; +}; + +#else + +template class L, template class P> struct mp_sort_impl, P> +{ + using type = L<>; +}; + +#endif + +template class L, class T1, template class P> struct mp_sort_impl, P> +{ + using type = L; +}; + +template class L, class T1, class... T, template class P> struct mp_sort_impl, P> +{ + template using F = P; + + using part = mp_partition, F>; + + using S1 = typename mp_sort_impl, P>::type; + using S2 = typename mp_sort_impl, P>::type; + + using type = mp_append, S2>; +}; + +} // namespace detail + +template class P> using mp_sort = typename detail::mp_sort_impl::type; +template using mp_sort_q = mp_sort; + +// mp_nth_element(_c) +namespace detail +{ + +template class P> struct mp_nth_element_impl; + +template class L, class T1, std::size_t I, template class P> struct mp_nth_element_impl, I, P> +{ + static_assert( I == 0, "mp_nth_element index out of range" ); + using type = T1; +}; + +template class L, class T1, class... T, std::size_t I, template class P> struct mp_nth_element_impl, I, P> +{ + static_assert( I < 1 + sizeof...(T), "mp_nth_element index out of range" ); + + template using F = P; + + using part = mp_partition, F>; + + using L1 = mp_first; + static std::size_t const N1 = mp_size::value; + + using L2 = mp_second; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_CUDA, >= 9000000 && BOOST_MP11_CUDA < 10000000 ) + + struct detail + { + struct mp_nth_element_impl_cuda_workaround + { + using type = mp_cond< + + mp_bool<(I < N1)>, mp_nth_element_impl, + mp_bool<(I == N1)>, mp_identity, + mp_true, mp_nth_element_impl + + >; + }; + }; + + using type = typename detail::mp_nth_element_impl_cuda_workaround::type::type; + +#else + + using type = typename mp_cond< + + mp_bool<(I < N1)>, mp_nth_element_impl, + mp_bool<(I == N1)>, mp_identity, + mp_true, mp_nth_element_impl + + >::type; + +#endif +}; + +} // namespace detail + +template class P> using mp_nth_element_c = typename detail::mp_nth_element_impl::type; +template class P> using mp_nth_element = typename detail::mp_nth_element_impl::type; +template using mp_nth_element_q = mp_nth_element; + +// mp_find +namespace detail +{ + +template struct mp_find_impl; + +#if BOOST_MP11_CLANG && defined( BOOST_MP11_HAS_FOLD_EXPRESSIONS ) + +struct mp_index_holder +{ + std::size_t i_; + bool f_; +}; + +constexpr inline mp_index_holder operator+( mp_index_holder const & v, bool f ) +{ + if( v.f_ ) + { + return v; + } + else if( f ) + { + return { v.i_, true }; + } + else + { + return { v.i_ + 1, false }; + } +} + +template class L, class... T, class V> struct mp_find_impl, V> +{ + static constexpr mp_index_holder _v{ 0, false }; + using type = mp_size_t< (_v + ... + std::is_same::value).i_ >; +}; + +#elif !defined( BOOST_MP11_NO_CONSTEXPR ) + +template class L, class V> struct mp_find_impl, V> +{ + using type = mp_size_t<0>; +}; + +#if defined( BOOST_MP11_HAS_CXX14_CONSTEXPR ) + +constexpr std::size_t cx_find_index( bool const * first, bool const * last ) +{ + std::size_t m = 0; + + while( first != last && !*first ) + { + ++m; + ++first; + } + + return m; +} + +#else + +constexpr std::size_t cx_find_index( bool const * first, bool const * last ) +{ + return first == last || *first? 0: 1 + cx_find_index( first + 1, last ); +} + +#endif + +template class L, class... T, class V> struct mp_find_impl, V> +{ + static constexpr bool _v[] = { std::is_same::value... }; + using type = mp_size_t< cx_find_index( _v, _v + sizeof...(T) ) >; +}; + +#else + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + +template class L, class... T, class V> struct mp_find_impl, V> +{ + static_assert( sizeof...(T) == 0, "T... must be empty" ); + using type = mp_size_t<0>; +}; + +#else + +template class L, class V> struct mp_find_impl, V> +{ + using type = mp_size_t<0>; +}; + +#endif + +template class L, class... T, class V> struct mp_find_impl, V> +{ + using type = mp_size_t<0>; +}; + +template class L, class T1, class... T, class V> struct mp_find_impl, V> +{ + using _r = typename mp_find_impl, V>::type; + using type = mp_size_t<1 + _r::value>; +}; + +#endif + +} // namespace detail + +template using mp_find = typename detail::mp_find_impl::type; + +// mp_find_if +namespace detail +{ + +template class P> struct mp_find_if_impl; + +#if BOOST_MP11_CLANG && defined( BOOST_MP11_HAS_FOLD_EXPRESSIONS ) + +template class L, class... T, template class P> struct mp_find_if_impl, P> +{ + static constexpr mp_index_holder _v{ 0, false }; + using type = mp_size_t< (_v + ... + P::value).i_ >; +}; + +#elif !defined( BOOST_MP11_NO_CONSTEXPR ) + +template class L, template class P> struct mp_find_if_impl, P> +{ + using type = mp_size_t<0>; +}; + +template class L, class... T, template class P> struct mp_find_if_impl, P> +{ + static constexpr bool _v[] = { P::value... }; + using type = mp_size_t< cx_find_index( _v, _v + sizeof...(T) ) >; +}; + +#else + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + +template class L, class... T, template class P> struct mp_find_if_impl, P> +{ + static_assert( sizeof...(T) == 0, "T... must be empty" ); + using type = mp_size_t<0>; +}; + +#else + +template class L, template class P> struct mp_find_if_impl, P> +{ + using type = mp_size_t<0>; +}; + +#endif + +template class P> struct mp_find_if_impl_2 +{ + using _r = typename mp_find_if_impl::type; + using type = mp_size_t<1 + _r::value>; +}; + +template class L, class T1, class... T, template class P> struct mp_find_if_impl, P> +{ + using type = typename mp_if, mp_identity>, mp_find_if_impl_2, P>>::type; +}; + +#endif + +} // namespace detail + +template class P> using mp_find_if = typename detail::mp_find_if_impl::type; +template using mp_find_if_q = mp_find_if; + +// mp_reverse +namespace detail +{ + +template struct mp_reverse_impl; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + +template class L, class... T> struct mp_reverse_impl> +{ + static_assert( sizeof...(T) == 0, "T... must be empty" ); + using type = L<>; +}; + +#else + +template class L> struct mp_reverse_impl> +{ + using type = L<>; +}; + +#endif + +template class L, class T1> struct mp_reverse_impl> +{ + using type = L; +}; + +template class L, class T1, class T2> struct mp_reverse_impl> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3> struct mp_reverse_impl> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4> struct mp_reverse_impl> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5> struct mp_reverse_impl> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6> struct mp_reverse_impl> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7> struct mp_reverse_impl> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8> struct mp_reverse_impl> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9> struct mp_reverse_impl> +{ + using type = L; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class... T> struct mp_reverse_impl> +{ + using type = mp_push_back>::type, T10, T9, T8, T7, T6, T5, T4, T3, T2, T1>; +}; + +} // namespace detail + +template using mp_reverse = typename detail::mp_reverse_impl::type; + +// mp_fold +// in detail/mp_fold.hpp + +// mp_reverse_fold +namespace detail +{ + +template class F> struct mp_reverse_fold_impl; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + +template class L, class... T, class V, template class F> struct mp_reverse_fold_impl, V, F> +{ + static_assert( sizeof...(T) == 0, "T... must be empty" ); + using type = V; +}; + +#else + +template class L, class V, template class F> struct mp_reverse_fold_impl, V, F> +{ + using type = V; +}; + +#endif + +template class L, class T1, class... T, class V, template class F> struct mp_reverse_fold_impl, V, F> +{ + using rest = typename mp_reverse_fold_impl, V, F>::type; + using type = F; +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class... T, class V, template class F> struct mp_reverse_fold_impl, V, F> +{ + using rest = typename mp_reverse_fold_impl, V, F>::type; + using type = F > > > > > > > > >; +}; + +} // namespace detail + +template class F> using mp_reverse_fold = typename detail::mp_reverse_fold_impl::type; +template using mp_reverse_fold_q = mp_reverse_fold; + +// mp_unique +namespace detail +{ + +template struct mp_unique_impl; + +template class L, class... T> struct mp_unique_impl> +{ + using type = mp_set_push_back, T...>; +}; + +} // namespace detail + +template using mp_unique = typename detail::mp_unique_impl::type; + +// mp_unique_if +namespace detail +{ + +template class P> struct mp_unique_if_push_back +{ + template struct impl + { + }; + + template class L, class... Ts, class T> + struct impl, T> + { + using type = mp_if...>, L, L>; + }; + + template using fn = typename impl::type; +}; + +} // namespace detail + +template class P> +using mp_unique_if = mp_fold_q, detail::mp_unique_if_push_back

>; + +template using mp_unique_if_q = mp_unique_if; + +// mp_all_of +template class P> using mp_all_of = mp_bool< mp_count_if::value == mp_size::value >; +template using mp_all_of_q = mp_all_of; + +// mp_none_of +template class P> using mp_none_of = mp_bool< mp_count_if::value == 0 >; +template using mp_none_of_q = mp_none_of; + +// mp_any_of +template class P> using mp_any_of = mp_bool< mp_count_if::value != 0 >; +template using mp_any_of_q = mp_any_of; + +// mp_replace_at_c +namespace detail +{ + +template struct mp_replace_at_impl +{ + static_assert( I::value >= 0, "mp_replace_at: I must not be negative" ); + + template using _p = std::is_same>; + template using _f = W; + + using type = mp_transform_if<_p, _f, L, mp_iota > >; +}; + +} // namespace detail + +template using mp_replace_at = typename detail::mp_replace_at_impl::type; +template using mp_replace_at_c = typename detail::mp_replace_at_impl, W>::type; + +//mp_for_each(f) +namespace detail +{ + +template BOOST_MP11_CONSTEXPR F mp_for_each_impl( mp_list, F && f ) +{ + using A = int[sizeof...(T)]; + return (void)A{ ((void)f(T()), 0)... }, std::forward(f); +} + +template BOOST_MP11_CONSTEXPR F mp_for_each_impl( mp_list<>, F && f ) +{ + return std::forward(f); +} + +} // namespace detail + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, >= 1900 ) + +// msvc has a limit of 1024 + +template BOOST_MP11_CONSTEXPR mp_if_c::value <= 1024, F> mp_for_each( F && f ) +{ + return detail::mp_for_each_impl( mp_rename(), std::forward(f) ); +} + +template BOOST_MP11_CONSTEXPR mp_if_c::value >= 1025, F> mp_for_each( F && f ) +{ + using L2 = mp_rename; + + using L3 = mp_take_c; + using L4 = mp_drop_c; + + return mp_for_each( mp_for_each( std::forward(f) ) ); +} + +#else + +template BOOST_MP11_CONSTEXPR F mp_for_each( F && f ) +{ + return detail::mp_for_each_impl( mp_rename(), std::forward(f) ); +} + +#endif + +// mp_insert +template using mp_insert = mp_append, mp_push_front, T...>>; + +// mp_insert_c +template using mp_insert_c = mp_append, mp_push_front, T...>>; + +// mp_erase +template using mp_erase = mp_append, mp_drop>; + +// mp_erase_c +template using mp_erase_c = mp_append, mp_drop_c>; + +// mp_starts_with +// contributed by Glen Joseph Fernandes (glenjofe@gmail.com) +namespace detail { + +template +struct mp_starts_with_impl { }; + +template class L1, class... T1, template class L2, + class... T2> +struct mp_starts_with_impl, L2 > { + template + static mp_false check(L); + + template + static mp_true check(mp_list); + + using type = decltype(check(mp_list())); +}; + +} // namespace detail + +template +using mp_starts_with = typename detail::mp_starts_with_impl::type; + +// mp_rotate_left(_c) +namespace detail +{ + +// limit divisor to 1 to avoid division by 0 and give a rotation of 0 for lists containing 0 or 1 elements +template using canonical_left_rotation = mp_size_t; + +// perform right rotation as a left rotation by inverting the number of elements to rotate +template using canonical_right_rotation = mp_size_t; + +// avoid errors when rotating fixed-sized lists by using mp_list for the transformation +template> using mp_rotate_impl = mp_assign, mp_take >>; + +} // namespace detail + +template using mp_rotate_left_c = detail::mp_rotate_impl::value, N>>; +template using mp_rotate_left = mp_rotate_left_c; + +// mp_rotate_right(_c) +template using mp_rotate_right_c = mp_rotate_left::value, N>>; +template using mp_rotate_right = mp_rotate_right_c; + +// mp_min_element +// mp_max_element +// in detail/mp_min_element.hpp + +// mp_power_set +namespace detail +{ + +template struct mp_power_set_impl; + +} // namespace detail + +template using mp_power_set = typename detail::mp_power_set_impl::type; + +namespace detail +{ + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + +template class L, class... T> struct mp_power_set_impl< L > +{ + static_assert( sizeof...(T) == 0, "T... must be empty" ); + using type = L< L<> >; +}; + +#else + +template class L> struct mp_power_set_impl< L<> > +{ + using type = L< L<> >; +}; + +#endif + +template class L, class T1, class... T> struct mp_power_set_impl< L > +{ + using S1 = mp_power_set< L >; + + template using _f = mp_push_front; + + using S2 = mp_transform<_f, S1>; + + using type = mp_append< S1, S2 >; +}; + +} // namespace detail + +// mp_partial_sum +namespace detail +{ + +template class F> struct mp_partial_sum_impl_f +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1900 ) + + template using fn = mp_list, T>, mp_push_back, F, T>> >; + +#else + + template, T>> using fn = mp_list, N>>; + +#endif +}; + +} // namespace detail + +template class F> using mp_partial_sum = mp_second>, detail::mp_partial_sum_impl_f> >; +template using mp_partial_sum_q = mp_partial_sum; + +// mp_iterate +namespace detail +{ + +template class F, template class R, class N> struct mp_iterate_impl; + +} // namespace detail + +template class F, template class R> using mp_iterate = typename detail::mp_iterate_impl>::type; + +namespace detail +{ + +template class F, template class R> struct mp_iterate_impl +{ + template using _f = mp_list>; + using type = mp_eval_or, _f, V>; +}; + +template class F, template class R> struct mp_iterate_impl +{ + using type = mp_push_front, F, R>, F>; +}; + +} // namespace detail + +template using mp_iterate_q = mp_iterate; + +// mp_pairwise_fold +namespace detail +{ + +template using mp_pairwise_fold_impl = mp_transform_q, mp_pop_front>; + +} // namespace detail + +template using mp_pairwise_fold_q = mp_eval_if, mp_clear, detail::mp_pairwise_fold_impl, L, Q>; +template class F> using mp_pairwise_fold = mp_pairwise_fold_q>; + +// mp_intersperse +namespace detail +{ + +template struct mp_intersperse_impl +{ +}; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + +template class L, class... T, class S> struct mp_intersperse_impl, S> +{ + static_assert( sizeof...(T) == 0, "T... must be empty" ); + using type = L<>; +}; + +#else + +template class L, class S> struct mp_intersperse_impl, S> +{ + using type = L<>; +}; + +#endif + +template class L, class T1, class... T, class S> struct mp_intersperse_impl, S> +{ + using type = mp_append, L...>; +}; + +} // namespace detail + +template using mp_intersperse = typename detail::mp_intersperse_impl::type; + +// mp_split +namespace detail +{ + +template struct mp_split_impl; + +} // namespace detail + +template using mp_split = typename detail::mp_split_impl>::type; + +namespace detail +{ + +template using mp_split_impl_ = mp_push_front, S>, mp_take>; + +template struct mp_split_impl +{ + using type = mp_eval_if_c::value == J::value, mp_push_back, L>, mp_split_impl_, L, S, J>; +}; + +} // namespace detail + +// mp_join + +template using mp_join = mp_apply>>; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_ALGORITHM_HPP_INCLUDED diff --git a/src/boost/boost/mp11/bind.hpp b/src/boost/boost/mp11/bind.hpp new file mode 100644 index 000000000..a29c9711e --- /dev/null +++ b/src/boost/boost/mp11/bind.hpp @@ -0,0 +1,111 @@ +#ifndef BOOST_MP11_BIND_HPP_INCLUDED +#define BOOST_MP11_BIND_HPP_INCLUDED + +// Copyright 2017, 2018 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 + +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_bind_front +template class F, class... T> struct mp_bind_front +{ + // the indirection through mp_defer works around the language inability + // to expand U... into a fixed parameter list of an alias template + + template using fn = typename mp_defer::type; +}; + +template using mp_bind_front_q = mp_bind_front; + +// mp_bind_back +template class F, class... T> struct mp_bind_back +{ + template using fn = typename mp_defer::type; +}; + +template using mp_bind_back_q = mp_bind_back; + +// mp_arg +template struct mp_arg +{ + template using fn = mp_at_c, I>; +}; + +using _1 = mp_arg<0>; +using _2 = mp_arg<1>; +using _3 = mp_arg<2>; +using _4 = mp_arg<3>; +using _5 = mp_arg<4>; +using _6 = mp_arg<5>; +using _7 = mp_arg<6>; +using _8 = mp_arg<7>; +using _9 = mp_arg<8>; + +// mp_bind +template class F, class... T> struct mp_bind; + +namespace detail +{ + +template struct eval_bound_arg +{ + using type = V; +}; + +template struct eval_bound_arg, T...> +{ + using type = typename mp_arg::template fn; +}; + +template class F, class... U, class... T> struct eval_bound_arg, T...> +{ + using type = typename mp_bind::template fn; +}; + +template class F, class... U, class... T> struct eval_bound_arg, T...> +{ + using type = typename mp_bind_front::template fn; +}; + +template class F, class... U, class... T> struct eval_bound_arg, T...> +{ + using type = typename mp_bind_back::template fn; +}; + +} // namespace detail + +template class F, class... T> struct mp_bind +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, == 1915 ) +private: + + template struct _f { using type = F::type...>; }; + +public: + + template using fn = typename _f::type; + +#else + + template using fn = F::type...>; + +#endif +}; + +template using mp_bind_q = mp_bind; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_BIND_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/config.hpp b/src/boost/boost/mp11/detail/config.hpp new file mode 100644 index 000000000..714dcfa30 --- /dev/null +++ b/src/boost/boost/mp11/detail/config.hpp @@ -0,0 +1,149 @@ +#ifndef BOOST_MP11_DETAIL_CONFIG_HPP_INCLUDED +#define BOOST_MP11_DETAIL_CONFIG_HPP_INCLUDED + +// Copyright 2016, 2018, 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 + +// BOOST_MP11_WORKAROUND + +#if defined( BOOST_STRICT_CONFIG ) || defined( BOOST_MP11_NO_WORKAROUNDS ) + +# define BOOST_MP11_WORKAROUND( symbol, test ) 0 + +#else + +# define BOOST_MP11_WORKAROUND( symbol, test ) ((symbol) != 0 && ((symbol) test)) + +#endif + +// + +#define BOOST_MP11_CUDA 0 +#define BOOST_MP11_CLANG 0 +#define BOOST_MP11_INTEL 0 +#define BOOST_MP11_GCC 0 +#define BOOST_MP11_MSVC 0 + +#define BOOST_MP11_CONSTEXPR constexpr + +#if defined( __CUDACC__ ) + +// nvcc + +# undef BOOST_MP11_CUDA +# define BOOST_MP11_CUDA (__CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__) + +// CUDA (8.0) has no constexpr support in msvc mode: +# if defined(_MSC_VER) && (BOOST_MP11_CUDA < 9000000) + +# define BOOST_MP11_NO_CONSTEXPR + +# undef BOOST_MP11_CONSTEXPR +# define BOOST_MP11_CONSTEXPR + +# endif + +#endif + +#if defined(__clang__) + +// Clang + +# undef BOOST_MP11_CLANG +# define BOOST_MP11_CLANG (__clang_major__ * 100 + __clang_minor__) + +# if defined(__has_cpp_attribute) +# if __has_cpp_attribute(fallthrough) && __cplusplus >= 201406L // Clang 3.9+ in c++1z mode +# define BOOST_MP11_HAS_FOLD_EXPRESSIONS +# endif +# endif + +#if BOOST_MP11_CLANG < 400 && __cplusplus >= 201402L \ + && defined( __GLIBCXX__ ) && !__has_include() + +// Clang pre-4 in C++14 mode, libstdc++ pre-4.9, ::gets is not defined, +// but Clang tries to import it into std + + extern "C" char *gets (char *__s); +#endif + +#elif defined(__INTEL_COMPILER) + +// Intel C++ + +# undef BOOST_MP11_INTEL +# define BOOST_MP11_INTEL __INTEL_COMPILER + +#elif defined(__GNUC__) + +// g++ + +# undef BOOST_MP11_GCC +# define BOOST_MP11_GCC (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) + +#elif defined(_MSC_VER) + +// MS Visual C++ + +# undef BOOST_MP11_MSVC +# define BOOST_MP11_MSVC _MSC_VER + +# if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) +# define BOOST_MP11_NO_CONSTEXPR +# endif + +#if _MSC_FULL_VER < 190024210 // 2015u3 +# undef BOOST_MP11_CONSTEXPR +# define BOOST_MP11_CONSTEXPR +#endif + +#endif + +// BOOST_MP11_HAS_CXX14_CONSTEXPR + +#if !defined(BOOST_MP11_NO_CONSTEXPR) && defined(__cpp_constexpr) && __cpp_constexpr >= 201304 +# define BOOST_MP11_HAS_CXX14_CONSTEXPR +#endif + +// BOOST_MP11_HAS_FOLD_EXPRESSIONS + +#if !defined(BOOST_MP11_HAS_FOLD_EXPRESSIONS) && defined(__cpp_fold_expressions) && __cpp_fold_expressions >= 201603 +# define BOOST_MP11_HAS_FOLD_EXPRESSIONS +#endif + +// BOOST_MP11_HAS_TYPE_PACK_ELEMENT + +#if defined(__has_builtin) +# if __has_builtin(__type_pack_element) +# define BOOST_MP11_HAS_TYPE_PACK_ELEMENT +# endif +#endif + +// BOOST_MP11_HAS_TEMPLATE_AUTO + +#if defined(__cpp_nontype_template_parameter_auto) && __cpp_nontype_template_parameter_auto >= 201606L +# define BOOST_MP11_HAS_TEMPLATE_AUTO +#endif + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) +// mp_value<0> is bool, mp_value<-1L> is int, etc +# undef BOOST_MP11_HAS_TEMPLATE_AUTO +#endif + +// BOOST_MP11_DEPRECATED(msg) + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_CLANG, < 304 ) +# define BOOST_MP11_DEPRECATED(msg) +#elif defined(__GNUC__) || defined(__clang__) +# define BOOST_MP11_DEPRECATED(msg) __attribute__((deprecated(msg))) +#elif defined(_MSC_VER) && _MSC_VER >= 1900 +# define BOOST_MP11_DEPRECATED(msg) [[deprecated(msg)]] +#else +# define BOOST_MP11_DEPRECATED(msg) +#endif + +#endif // #ifndef BOOST_MP11_DETAIL_CONFIG_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_append.hpp b/src/boost/boost/mp11/detail/mp_append.hpp new file mode 100644 index 000000000..d0c9457ec --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_append.hpp @@ -0,0 +1,321 @@ +#ifndef BOOST_MP11_DETAIL_MP_APPEND_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_APPEND_HPP_INCLUDED + +// Copyright 2015-2017 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 + +#include +#include +#include +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_append + +namespace detail +{ + +// append_type_lists + +template struct mp_append_impl; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + +template struct mp_append_impl +{ +}; + +template<> struct mp_append_impl<> +{ + using type = mp_list<>; +}; + +template class L, class... T> struct mp_append_impl> +{ + using type = L; +}; + +template class L1, class... T1, template class L2, class... T2> struct mp_append_impl, L2> +{ + using type = L1; +}; + +template class L1, class... T1, template class L2, class... T2, template class L3, class... T3> struct mp_append_impl, L2, L3> +{ + using type = L1; +}; + +template class L1, class... T1, template class L2, class... T2, template class L3, class... T3, template class L4, class... T4> struct mp_append_impl, L2, L3, L4> +{ + using type = L1; +}; + +template class L1, class... T1, template class L2, class... T2, template class L3, class... T3, template class L4, class... T4, template class L5, class... T5, class... Lr> struct mp_append_impl, L2, L3, L4, L5, Lr...> +{ + using type = typename mp_append_impl, Lr...>::type; +}; + +#else + +template, class L2 = mp_list<>, class L3 = mp_list<>, class L4 = mp_list<>, class L5 = mp_list<>, class L6 = mp_list<>, class L7 = mp_list<>, class L8 = mp_list<>, class L9 = mp_list<>, class L10 = mp_list<>, class L11 = mp_list<>> struct append_11_impl +{ +}; + +template< + template class L1, class... T1, + template class L2, class... T2, + template class L3, class... T3, + template class L4, class... T4, + template class L5, class... T5, + template class L6, class... T6, + template class L7, class... T7, + template class L8, class... T8, + template class L9, class... T9, + template class L10, class... T10, + template class L11, class... T11> + +struct append_11_impl, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11> +{ + using type = L1; +}; + +template< + + class L00 = mp_list<>, class L01 = mp_list<>, class L02 = mp_list<>, class L03 = mp_list<>, class L04 = mp_list<>, class L05 = mp_list<>, class L06 = mp_list<>, class L07 = mp_list<>, class L08 = mp_list<>, class L09 = mp_list<>, class L0A = mp_list<>, + class L10 = mp_list<>, class L11 = mp_list<>, class L12 = mp_list<>, class L13 = mp_list<>, class L14 = mp_list<>, class L15 = mp_list<>, class L16 = mp_list<>, class L17 = mp_list<>, class L18 = mp_list<>, class L19 = mp_list<>, + class L20 = mp_list<>, class L21 = mp_list<>, class L22 = mp_list<>, class L23 = mp_list<>, class L24 = mp_list<>, class L25 = mp_list<>, class L26 = mp_list<>, class L27 = mp_list<>, class L28 = mp_list<>, class L29 = mp_list<>, + class L30 = mp_list<>, class L31 = mp_list<>, class L32 = mp_list<>, class L33 = mp_list<>, class L34 = mp_list<>, class L35 = mp_list<>, class L36 = mp_list<>, class L37 = mp_list<>, class L38 = mp_list<>, class L39 = mp_list<>, + class L40 = mp_list<>, class L41 = mp_list<>, class L42 = mp_list<>, class L43 = mp_list<>, class L44 = mp_list<>, class L45 = mp_list<>, class L46 = mp_list<>, class L47 = mp_list<>, class L48 = mp_list<>, class L49 = mp_list<>, + class L50 = mp_list<>, class L51 = mp_list<>, class L52 = mp_list<>, class L53 = mp_list<>, class L54 = mp_list<>, class L55 = mp_list<>, class L56 = mp_list<>, class L57 = mp_list<>, class L58 = mp_list<>, class L59 = mp_list<>, + class L60 = mp_list<>, class L61 = mp_list<>, class L62 = mp_list<>, class L63 = mp_list<>, class L64 = mp_list<>, class L65 = mp_list<>, class L66 = mp_list<>, class L67 = mp_list<>, class L68 = mp_list<>, class L69 = mp_list<>, + class L70 = mp_list<>, class L71 = mp_list<>, class L72 = mp_list<>, class L73 = mp_list<>, class L74 = mp_list<>, class L75 = mp_list<>, class L76 = mp_list<>, class L77 = mp_list<>, class L78 = mp_list<>, class L79 = mp_list<>, + class L80 = mp_list<>, class L81 = mp_list<>, class L82 = mp_list<>, class L83 = mp_list<>, class L84 = mp_list<>, class L85 = mp_list<>, class L86 = mp_list<>, class L87 = mp_list<>, class L88 = mp_list<>, class L89 = mp_list<>, + class L90 = mp_list<>, class L91 = mp_list<>, class L92 = mp_list<>, class L93 = mp_list<>, class L94 = mp_list<>, class L95 = mp_list<>, class L96 = mp_list<>, class L97 = mp_list<>, class L98 = mp_list<>, class L99 = mp_list<>, + class LA0 = mp_list<>, class LA1 = mp_list<>, class LA2 = mp_list<>, class LA3 = mp_list<>, class LA4 = mp_list<>, class LA5 = mp_list<>, class LA6 = mp_list<>, class LA7 = mp_list<>, class LA8 = mp_list<>, class LA9 = mp_list<> + +> struct append_111_impl +{ + using type = typename append_11_impl< + + typename append_11_impl::type, + typename append_11_impl, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19>::type, + typename append_11_impl, L20, L21, L22, L23, L24, L25, L26, L27, L28, L29>::type, + typename append_11_impl, L30, L31, L32, L33, L34, L35, L36, L37, L38, L39>::type, + typename append_11_impl, L40, L41, L42, L43, L44, L45, L46, L47, L48, L49>::type, + typename append_11_impl, L50, L51, L52, L53, L54, L55, L56, L57, L58, L59>::type, + typename append_11_impl, L60, L61, L62, L63, L64, L65, L66, L67, L68, L69>::type, + typename append_11_impl, L70, L71, L72, L73, L74, L75, L76, L77, L78, L79>::type, + typename append_11_impl, L80, L81, L82, L83, L84, L85, L86, L87, L88, L89>::type, + typename append_11_impl, L90, L91, L92, L93, L94, L95, L96, L97, L98, L99>::type, + typename append_11_impl, LA0, LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9>::type + + >::type; +}; + +template< + + class L00, class L01, class L02, class L03, class L04, class L05, class L06, class L07, class L08, class L09, class L0A, + class L10, class L11, class L12, class L13, class L14, class L15, class L16, class L17, class L18, class L19, + class L20, class L21, class L22, class L23, class L24, class L25, class L26, class L27, class L28, class L29, + class L30, class L31, class L32, class L33, class L34, class L35, class L36, class L37, class L38, class L39, + class L40, class L41, class L42, class L43, class L44, class L45, class L46, class L47, class L48, class L49, + class L50, class L51, class L52, class L53, class L54, class L55, class L56, class L57, class L58, class L59, + class L60, class L61, class L62, class L63, class L64, class L65, class L66, class L67, class L68, class L69, + class L70, class L71, class L72, class L73, class L74, class L75, class L76, class L77, class L78, class L79, + class L80, class L81, class L82, class L83, class L84, class L85, class L86, class L87, class L88, class L89, + class L90, class L91, class L92, class L93, class L94, class L95, class L96, class L97, class L98, class L99, + class LA0, class LA1, class LA2, class LA3, class LA4, class LA5, class LA6, class LA7, class LA8, class LA9, + class... Lr + +> struct append_inf_impl +{ + using prefix = typename append_111_impl< + + L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, + L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, + L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, + L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, + L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, + L50, L51, L52, L53, L54, L55, L56, L57, L58, L59, + L60, L61, L62, L63, L64, L65, L66, L67, L68, L69, + L70, L71, L72, L73, L74, L75, L76, L77, L78, L79, + L80, L81, L82, L83, L84, L85, L86, L87, L88, L89, + L90, L91, L92, L93, L94, L95, L96, L97, L98, L99, + LA0, LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 + + >::type; + + using type = typename mp_append_impl::type; +}; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_CUDA, >= 9000000 && BOOST_MP11_CUDA < 10000000 ) + +template +struct mp_append_impl_cuda_workaround +{ + using type = mp_if_c<(sizeof...(L) > 111), mp_quote, mp_if_c<(sizeof...(L) > 11), mp_quote, mp_quote > >; +}; + +template struct mp_append_impl: mp_append_impl_cuda_workaround::type::template fn +{ +}; + +#else + +template struct mp_append_impl: + mp_cond< + mp_bool<(sizeof...(L) > 111)>, mp_quote, + mp_bool<(sizeof...(L) > 11)>, mp_quote, + mp_true, mp_quote + >::template fn +{ +}; + +#endif // #if BOOST_MP11_WORKAROUND( BOOST_MP11_CUDA, >= 9000000 && BOOST_MP11_CUDA < 10000000 ) + +#endif // #if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + +struct append_type_lists +{ + template using fn = typename mp_append_impl::type; +}; + +// append_value_lists + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template struct append_value_impl; + +template, class L2 = mp_list_v<>, class L3 = mp_list_v<>, class L4 = mp_list_v<>, class L5 = mp_list_v<>, class L6 = mp_list_v<>, class L7 = mp_list_v<>, class L8 = mp_list_v<>, class L9 = mp_list_v<>, class L10 = mp_list_v<>, class L11 = mp_list_v<>> struct append_value_11_impl +{ +}; + +template< + template class L1, auto... T1, + template class L2, auto... T2, + template class L3, auto... T3, + template class L4, auto... T4, + template class L5, auto... T5, + template class L6, auto... T6, + template class L7, auto... T7, + template class L8, auto... T8, + template class L9, auto... T9, + template class L10, auto... T10, + template class L11, auto... T11> + +struct append_value_11_impl, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11> +{ + using type = L1; +}; + +template< + + class L00 = mp_list_v<>, class L01 = mp_list_v<>, class L02 = mp_list_v<>, class L03 = mp_list_v<>, class L04 = mp_list_v<>, class L05 = mp_list_v<>, class L06 = mp_list_v<>, class L07 = mp_list_v<>, class L08 = mp_list_v<>, class L09 = mp_list_v<>, class L0A = mp_list_v<>, + class L10 = mp_list_v<>, class L11 = mp_list_v<>, class L12 = mp_list_v<>, class L13 = mp_list_v<>, class L14 = mp_list_v<>, class L15 = mp_list_v<>, class L16 = mp_list_v<>, class L17 = mp_list_v<>, class L18 = mp_list_v<>, class L19 = mp_list_v<>, + class L20 = mp_list_v<>, class L21 = mp_list_v<>, class L22 = mp_list_v<>, class L23 = mp_list_v<>, class L24 = mp_list_v<>, class L25 = mp_list_v<>, class L26 = mp_list_v<>, class L27 = mp_list_v<>, class L28 = mp_list_v<>, class L29 = mp_list_v<>, + class L30 = mp_list_v<>, class L31 = mp_list_v<>, class L32 = mp_list_v<>, class L33 = mp_list_v<>, class L34 = mp_list_v<>, class L35 = mp_list_v<>, class L36 = mp_list_v<>, class L37 = mp_list_v<>, class L38 = mp_list_v<>, class L39 = mp_list_v<>, + class L40 = mp_list_v<>, class L41 = mp_list_v<>, class L42 = mp_list_v<>, class L43 = mp_list_v<>, class L44 = mp_list_v<>, class L45 = mp_list_v<>, class L46 = mp_list_v<>, class L47 = mp_list_v<>, class L48 = mp_list_v<>, class L49 = mp_list_v<>, + class L50 = mp_list_v<>, class L51 = mp_list_v<>, class L52 = mp_list_v<>, class L53 = mp_list_v<>, class L54 = mp_list_v<>, class L55 = mp_list_v<>, class L56 = mp_list_v<>, class L57 = mp_list_v<>, class L58 = mp_list_v<>, class L59 = mp_list_v<>, + class L60 = mp_list_v<>, class L61 = mp_list_v<>, class L62 = mp_list_v<>, class L63 = mp_list_v<>, class L64 = mp_list_v<>, class L65 = mp_list_v<>, class L66 = mp_list_v<>, class L67 = mp_list_v<>, class L68 = mp_list_v<>, class L69 = mp_list_v<>, + class L70 = mp_list_v<>, class L71 = mp_list_v<>, class L72 = mp_list_v<>, class L73 = mp_list_v<>, class L74 = mp_list_v<>, class L75 = mp_list_v<>, class L76 = mp_list_v<>, class L77 = mp_list_v<>, class L78 = mp_list_v<>, class L79 = mp_list_v<>, + class L80 = mp_list_v<>, class L81 = mp_list_v<>, class L82 = mp_list_v<>, class L83 = mp_list_v<>, class L84 = mp_list_v<>, class L85 = mp_list_v<>, class L86 = mp_list_v<>, class L87 = mp_list_v<>, class L88 = mp_list_v<>, class L89 = mp_list_v<>, + class L90 = mp_list_v<>, class L91 = mp_list_v<>, class L92 = mp_list_v<>, class L93 = mp_list_v<>, class L94 = mp_list_v<>, class L95 = mp_list_v<>, class L96 = mp_list_v<>, class L97 = mp_list_v<>, class L98 = mp_list_v<>, class L99 = mp_list_v<>, + class LA0 = mp_list_v<>, class LA1 = mp_list_v<>, class LA2 = mp_list_v<>, class LA3 = mp_list_v<>, class LA4 = mp_list_v<>, class LA5 = mp_list_v<>, class LA6 = mp_list_v<>, class LA7 = mp_list_v<>, class LA8 = mp_list_v<>, class LA9 = mp_list_v<> + +> struct append_value_111_impl +{ + using type = typename append_value_11_impl< + + typename append_value_11_impl::type, + typename append_value_11_impl, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19>::type, + typename append_value_11_impl, L20, L21, L22, L23, L24, L25, L26, L27, L28, L29>::type, + typename append_value_11_impl, L30, L31, L32, L33, L34, L35, L36, L37, L38, L39>::type, + typename append_value_11_impl, L40, L41, L42, L43, L44, L45, L46, L47, L48, L49>::type, + typename append_value_11_impl, L50, L51, L52, L53, L54, L55, L56, L57, L58, L59>::type, + typename append_value_11_impl, L60, L61, L62, L63, L64, L65, L66, L67, L68, L69>::type, + typename append_value_11_impl, L70, L71, L72, L73, L74, L75, L76, L77, L78, L79>::type, + typename append_value_11_impl, L80, L81, L82, L83, L84, L85, L86, L87, L88, L89>::type, + typename append_value_11_impl, L90, L91, L92, L93, L94, L95, L96, L97, L98, L99>::type, + typename append_value_11_impl, LA0, LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9>::type + + >::type; +}; + +template< + + class L00, class L01, class L02, class L03, class L04, class L05, class L06, class L07, class L08, class L09, class L0A, + class L10, class L11, class L12, class L13, class L14, class L15, class L16, class L17, class L18, class L19, + class L20, class L21, class L22, class L23, class L24, class L25, class L26, class L27, class L28, class L29, + class L30, class L31, class L32, class L33, class L34, class L35, class L36, class L37, class L38, class L39, + class L40, class L41, class L42, class L43, class L44, class L45, class L46, class L47, class L48, class L49, + class L50, class L51, class L52, class L53, class L54, class L55, class L56, class L57, class L58, class L59, + class L60, class L61, class L62, class L63, class L64, class L65, class L66, class L67, class L68, class L69, + class L70, class L71, class L72, class L73, class L74, class L75, class L76, class L77, class L78, class L79, + class L80, class L81, class L82, class L83, class L84, class L85, class L86, class L87, class L88, class L89, + class L90, class L91, class L92, class L93, class L94, class L95, class L96, class L97, class L98, class L99, + class LA0, class LA1, class LA2, class LA3, class LA4, class LA5, class LA6, class LA7, class LA8, class LA9, + class... Lr + +> struct append_value_inf_impl +{ + using prefix = typename append_value_111_impl< + + L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, L0A, + L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, + L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, + L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, + L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, + L50, L51, L52, L53, L54, L55, L56, L57, L58, L59, + L60, L61, L62, L63, L64, L65, L66, L67, L68, L69, + L70, L71, L72, L73, L74, L75, L76, L77, L78, L79, + L80, L81, L82, L83, L84, L85, L86, L87, L88, L89, + L90, L91, L92, L93, L94, L95, L96, L97, L98, L99, + LA0, LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 + + >::type; + + using type = typename append_value_impl::type; +}; + +template struct append_value_impl: + mp_cond< + mp_bool<(sizeof...(L) > 111)>, mp_quote, + mp_bool<(sizeof...(L) > 11)>, mp_quote, + mp_true, mp_quote + >::template fn +{ +}; + +struct append_value_lists +{ + template using fn = typename append_value_impl::type; +}; + +#endif // #if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +} // namespace detail + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template using mp_append = typename mp_if_c<(sizeof...(L) > 0 && sizeof...(L) == mp_count_if, mp_is_value_list>::value), detail::append_value_lists, detail::append_type_lists>::template fn; + +#else + +template using mp_append = detail::append_type_lists::fn; + +#endif + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_APPEND_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_copy_if.hpp b/src/boost/boost/mp11/detail/mp_copy_if.hpp new file mode 100644 index 000000000..d66197923 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_copy_if.hpp @@ -0,0 +1,48 @@ +#ifndef BOOST_MP11_DETAIL_MP_COPY_IF_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_COPY_IF_HPP_INCLUDED + +// Copyright 2015-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 + +#include +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_copy_if +namespace detail +{ + +template class P> struct mp_copy_if_impl +{ +}; + +template class L, class... T, template class P> struct mp_copy_if_impl, P> +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) + template struct _f { using type = mp_if, mp_list, mp_list<>>; }; + using type = mp_append, typename _f::type...>; +#else + template using _f = mp_if, mp_list, mp_list<>>; + using type = mp_append, _f...>; +#endif +}; + +} // namespace detail + +template class P> using mp_copy_if = typename detail::mp_copy_if_impl::type; +template using mp_copy_if_q = mp_copy_if; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_COPY_IF_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_count.hpp b/src/boost/boost/mp11/detail/mp_count.hpp new file mode 100644 index 000000000..9e7b61817 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_count.hpp @@ -0,0 +1,147 @@ +#ifndef BOOST_MP11_DETAIL_MP_COUNT_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_COUNT_HPP_INCLUDED + +// Copyright 2015, 2016 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 + +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_count +namespace detail +{ + +#if !defined( BOOST_MP11_NO_CONSTEXPR ) + +constexpr std::size_t cx_plus() +{ + return 0; +} + +template constexpr std::size_t cx_plus(T1 t1, T... t) +{ + return static_cast(t1) + cx_plus(t...); +} + +template +constexpr std::size_t cx_plus(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T... t) +{ + return static_cast(t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9 + t10) + cx_plus(t...); +} + +#endif + +template struct mp_count_impl; + +#if defined( BOOST_MP11_HAS_CXX14_CONSTEXPR ) + +template constexpr std::size_t cx_count() +{ + constexpr bool a[] = { false, std::is_same::value... }; + + std::size_t r = 0; + + for( std::size_t i = 1; i < sizeof...(T) + 1; ++i ) + { + r += a[ i ]; + } + + return r; +} + +template class L, class... T, class V> struct mp_count_impl, V> +{ + using type = mp_size_t()>; +}; + +#elif !defined( BOOST_MP11_NO_CONSTEXPR ) + +template class L, class... T, class V> struct mp_count_impl, V> +{ + using type = mp_size_t::value...)>; +}; + +#else + +template class L, class... T, class V> struct mp_count_impl, V> +{ + using type = mp_size_t...>::value>; +}; + +#endif + +} // namespace detail + +template using mp_count = typename detail::mp_count_impl::type; + +// mp_count_if +namespace detail +{ + +template class P> struct mp_count_if_impl; + +#if defined( BOOST_MP11_HAS_CXX14_CONSTEXPR ) && !BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1930 ) + +template class P, class... T> constexpr std::size_t cx_count_if() +{ + constexpr bool a[] = { false, static_cast( P::value )... }; + + std::size_t r = 0; + + for( std::size_t i = 1; i < sizeof...(T) + 1; ++i ) + { + r += a[ i ]; + } + + return r; +} + +template class L, class... T, template class P> struct mp_count_if_impl, P> +{ + using type = mp_size_t()>; +}; + +#elif !defined( BOOST_MP11_NO_CONSTEXPR ) + +template class L, class... T, template class P> struct mp_count_if_impl, P> +{ + using type = mp_size_t>::value...)>; +}; + +#else + +template class L, class... T, template class P> struct mp_count_if_impl, P> +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) + + template struct _f { using type = mp_to_bool>; }; + using type = mp_size_t::type...>::value>; + +#else + + using type = mp_size_t>...>::value>; + +#endif +}; + +#endif + +} // namespace detail + +template class P> using mp_count_if = typename detail::mp_count_if_impl::type; +template using mp_count_if_q = mp_count_if; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_COUNT_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_defer.hpp b/src/boost/boost/mp11/detail/mp_defer.hpp new file mode 100644 index 000000000..16c9bca2b --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_defer.hpp @@ -0,0 +1,119 @@ +#ifndef BOOST_MP11_DETAIL_MP_DEFER_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_DEFER_HPP_INCLUDED + +// Copyright 2015-2020, 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_if, mp_if_c +namespace detail +{ + +template struct mp_if_c_impl +{ +}; + +template struct mp_if_c_impl +{ + using type = T; +}; + +template struct mp_if_c_impl +{ + using type = E; +}; + +} // namespace detail + +template using mp_if_c = typename detail::mp_if_c_impl::type; +template using mp_if = typename detail::mp_if_c_impl(C::value), T, E...>::type; + +// mp_valid + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_INTEL, != 0 ) // tested at 1800 + +// contributed by Roland Schulz in https://github.com/boostorg/mp11/issues/17 + +namespace detail +{ + +template using void_t = void; + +template class F, class... T> +struct mp_valid_impl: mp_false {}; + +template class F, class... T> +struct mp_valid_impl>, F, T...>: mp_true {}; + +} // namespace detail + +template class F, class... T> using mp_valid = typename detail::mp_valid_impl; + +#else + +// implementation by Bruno Dutra (by the name is_evaluable) +namespace detail +{ + +template class F, class... T> struct mp_valid_impl +{ + template class G, class = G> static mp_true check(int); + template class> static mp_false check(...); + + using type = decltype(check(0)); +}; + +} // namespace detail + +template class F, class... T> using mp_valid = typename detail::mp_valid_impl::type; + +#endif + +template using mp_valid_q = mp_valid; + +// mp_defer +namespace detail +{ + +template class F, class... T> struct mp_defer_impl +{ + using type = F; +}; + +struct mp_no_type +{ +}; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_CUDA, >= 9000000 && BOOST_MP11_CUDA < 10000000 ) + +template class F, class... T> struct mp_defer_cuda_workaround +{ + using type = mp_if, detail::mp_defer_impl, detail::mp_no_type>; +}; + +#endif + +} // namespace detail + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_CUDA, >= 9000000 && BOOST_MP11_CUDA < 10000000 ) + +template class F, class... T> using mp_defer = typename detail::mp_defer_cuda_workaround< F, T...>::type; + +#else + +template class F, class... T> using mp_defer = mp_if, detail::mp_defer_impl, detail::mp_no_type>; + +#endif + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_DEFER_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_fold.hpp b/src/boost/boost/mp11/detail/mp_fold.hpp new file mode 100644 index 000000000..438343451 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_fold.hpp @@ -0,0 +1,164 @@ +#ifndef BOOST_MP11_DETAIL_MP_FOLD_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_FOLD_HPP_INCLUDED + +// Copyright 2015-2017 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 + +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_fold +namespace detail +{ + +template class F> struct mp_fold_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_fold is not a list +}; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) + +template class L, class... T, class V, template class F> struct mp_fold_impl, V, F> +{ + static_assert( sizeof...(T) == 0, "T... must be empty" ); + using type = V; +}; + +#else + +template class L, class V, template class F> struct mp_fold_impl, V, F> +{ + using type = V; +}; + +#endif + +// + +template class F> struct mp_fold_Q1 +{ + template + using fn = F; +}; + +template class F> struct mp_fold_Q2 +{ + template + using fn = F, T2>; +}; + +template class F> struct mp_fold_Q3 +{ + template + using fn = F, T2>, T3>; +}; + +template class F> struct mp_fold_Q4 +{ + template + using fn = F, T2>, T3>, T4>; +}; + +template class F> struct mp_fold_Q5 +{ + template + using fn = F, T2>, T3>, T4>, T5>; +}; + +template class F> struct mp_fold_Q6 +{ + template + using fn = F, T2>, T3>, T4>, T5>, T6>; +}; + +template class F> struct mp_fold_Q7 +{ + template + using fn = F, T2>, T3>, T4>, T5>, T6>, T7>; +}; + +template class F> struct mp_fold_Q8 +{ + template + using fn = F, T2>, T3>, T4>, T5>, T6>, T7>, T8>; +}; + +template class F> struct mp_fold_Q9 +{ + template + using fn = F, T2>, T3>, T4>, T5>, T6>, T7>, T8>, T9>; +}; + +// + +template class L, class T1, class V, template class F> +struct mp_fold_impl, V, F>: mp_defer::template fn, T1> +{ +}; + +template class L, class T1, class T2, class V, template class F> +struct mp_fold_impl, V, F>: mp_defer::template fn, T1, T2> +{ +}; + +template class L, class T1, class T2, class T3, class V, template class F> +struct mp_fold_impl, V, F>: mp_defer::template fn, T1, T2, T3> +{ +}; + +template class L, class T1, class T2, class T3, class T4, class V, template class F> +struct mp_fold_impl, V, F>: mp_defer::template fn, T1, T2, T3, T4> +{ +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class V, template class F> +struct mp_fold_impl, V, F>: mp_defer::template fn, T1, T2, T3, T4, T5> +{ +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class V, template class F> +struct mp_fold_impl, V, F>: mp_defer::template fn, T1, T2, T3, T4, T5, T6> +{ +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class V, template class F> +struct mp_fold_impl, V, F>: mp_defer::template fn, T1, T2, T3, T4, T5, T6, T7> +{ +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class V, template class F> +struct mp_fold_impl, V, F>: mp_defer::template fn, T1, T2, T3, T4, T5, T6, T7, T8> +{ +}; + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class V, template class F> +struct mp_fold_impl, V, F>: mp_defer::template fn, T1, T2, T3, T4, T5, T6, T7, T8, T9> +{ +}; + +// + +template class L, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class... T, class V, template class F> +struct mp_fold_impl, V, F> +{ + using type = typename mp_fold_impl, F, T2>, T3>, T4>, T5>, T6>, T7>, T8>, T9>, T10>, F>::type; +}; + +} // namespace detail + +template class F> using mp_fold = typename detail::mp_fold_impl::type; +template using mp_fold_q = mp_fold; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_FOLD_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_front.hpp b/src/boost/boost/mp11/detail/mp_front.hpp new file mode 100644 index 000000000..6a9211cdc --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_front.hpp @@ -0,0 +1,50 @@ +#ifndef BOOST_MP11_DETAIL_MP_FRONT_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_FRONT_HPP_INCLUDED + +// Copyright 2015-2023 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 + +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_front +namespace detail +{ + +template struct mp_front_impl +{ +// An error "no type named 'type'" here means that the argument to mp_front +// is either not a list, or is an empty list +}; + +template class L, class T1, class... T> struct mp_front_impl> +{ + using type = T1; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto A1, auto... A> struct mp_front_impl> +{ + using type = mp_value; +}; + +#endif + +} // namespace detail + +template using mp_front = typename detail::mp_front_impl::type; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_FRONT_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_is_list.hpp b/src/boost/boost/mp11/detail/mp_is_list.hpp new file mode 100644 index 000000000..1e51e8014 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_is_list.hpp @@ -0,0 +1,39 @@ +#ifndef BOOST_MP11_DETAIL_MP_IS_LIST_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_IS_LIST_HPP_INCLUDED + +// Copyright 2015-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 + +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_is_list +namespace detail +{ + +template struct mp_is_list_impl +{ + using type = mp_false; +}; + +template class L, class... T> struct mp_is_list_impl> +{ + using type = mp_true; +}; + +} // namespace detail + +template using mp_is_list = typename detail::mp_is_list_impl::type; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_IS_LIST_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_is_value_list.hpp b/src/boost/boost/mp11/detail/mp_is_value_list.hpp new file mode 100644 index 000000000..dfef8f124 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_is_value_list.hpp @@ -0,0 +1,41 @@ +#ifndef BOOST_MP11_DETAIL_MP_IS_VALUE_LIST_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_IS_VALUE_LIST_HPP_INCLUDED + +// Copyright 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_is_value_list +namespace detail +{ + +template struct mp_is_value_list_impl +{ + using type = mp_false; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto... A> struct mp_is_value_list_impl> +{ + using type = mp_true; +}; + +#endif + +} // namespace detail + +template using mp_is_value_list = typename detail::mp_is_value_list_impl::type; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_IS_VALUE_LIST_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_list.hpp b/src/boost/boost/mp11/detail/mp_list.hpp new file mode 100644 index 000000000..9d42f43ed --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_list.hpp @@ -0,0 +1,24 @@ +#ifndef BOOST_MP11_DETAIL_MP_LIST_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_LIST_HPP_INCLUDED + +// Copyright 2015, 2016 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 + +namespace boost +{ +namespace mp11 +{ + +// mp_list +template struct mp_list +{ +}; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_LIST_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_list_v.hpp b/src/boost/boost/mp11/detail/mp_list_v.hpp new file mode 100644 index 000000000..4181942c3 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_list_v.hpp @@ -0,0 +1,27 @@ +#ifndef BOOST_MP11_DETAIL_MP_LIST_V_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_LIST_V_HPP_INCLUDED + +// Copyright 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// http://www.boost.org/LICENSE_1_0.txt + +#include + +namespace boost +{ +namespace mp11 +{ + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +// mp_list_v +template struct mp_list_v +{ +}; + +#endif + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_LIST_V_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_map_find.hpp b/src/boost/boost/mp11/detail/mp_map_find.hpp new file mode 100644 index 000000000..7876729e2 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_map_find.hpp @@ -0,0 +1,87 @@ +#ifndef BOOST_MP11_DETAIL_MP_MAP_FIND_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_MAP_FIND_HPP_INCLUDED + +// Copyright 2015 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 + +#include +#include + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1930 ) + +// not exactly good practice, but... +namespace std +{ + template class tuple; +} + +#endif + +namespace boost +{ +namespace mp11 +{ + +// mp_map_find +namespace detail +{ + +#if !BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1930 ) + +template using mpmf_wrap = mp_identity; +template using mpmf_unwrap = typename T::type; + +#else + +template struct mpmf_tuple {}; + +template struct mpmf_wrap_impl +{ + using type = mp_identity; +}; + +template struct mpmf_wrap_impl< std::tuple > +{ + using type = mp_identity< mpmf_tuple >; +}; + +template using mpmf_wrap = typename mpmf_wrap_impl::type; + +template struct mpmf_unwrap_impl +{ + using type = typename T::type; +}; + +template struct mpmf_unwrap_impl< mp_identity< mpmf_tuple > > +{ + using type = std::tuple; +}; + +template using mpmf_unwrap = typename mpmf_unwrap_impl::type; + +#endif // #if !BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1930 ) + +template struct mp_map_find_impl; + +template class M, class... T, class K> struct mp_map_find_impl, K> +{ + using U = mp_inherit...>; + + template class L, class... U> static mp_identity> f( mp_identity>* ); + static mp_identity f( ... ); + + using type = mpmf_unwrap< decltype( f( static_cast(0) ) ) >; +}; + +} // namespace detail + +template using mp_map_find = typename detail::mp_map_find_impl::type; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_MAP_FIND_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_min_element.hpp b/src/boost/boost/mp11/detail/mp_min_element.hpp new file mode 100644 index 000000000..e5e436b5a --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_min_element.hpp @@ -0,0 +1,51 @@ +#ifndef BOOST_MP11_DETAIL_MP_MIN_ELEMENT_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_MIN_ELEMENT_HPP_INCLUDED + +// Copyright 2015-2017 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 + +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_min_element +namespace detail +{ + +template class P> struct select_min +{ + template using fn = mp_if, T1, T2>; +}; + +} // namespace detail + +template class P> using mp_min_element = mp_fold_q, mp_first, detail::select_min

>; +template using mp_min_element_q = mp_min_element; + +// mp_max_element +namespace detail +{ + +template class P> struct select_max +{ + template using fn = mp_if, T1, T2>; +}; + +} // namespace detail + +template class P> using mp_max_element = mp_fold_q, mp_first, detail::select_max

>; +template using mp_max_element_q = mp_max_element; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_MIN_ELEMENT_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_plus.hpp b/src/boost/boost/mp11/detail/mp_plus.hpp new file mode 100644 index 000000000..356d9a709 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_plus.hpp @@ -0,0 +1,84 @@ +#ifndef BOOST_MP11_DETAIL_MP_PLUS_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_PLUS_HPP_INCLUDED + +// Copyright 2015 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 + +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_plus +namespace detail +{ + +#if defined( BOOST_MP11_HAS_FOLD_EXPRESSIONS ) && !BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, != 0 ) && !BOOST_MP11_WORKAROUND( BOOST_MP11_CLANG, != 0 ) + +// msvc fails with parser stack overflow for large sizeof...(T) +// clang exceeds -fbracket-depth, which defaults to 256 + +template struct mp_plus_impl +{ + static const auto _v = (T::value + ... + 0); + using type = std::integral_constant::type, _v>; +}; + +#else + +template struct mp_plus_impl; + +template<> struct mp_plus_impl<> +{ + using type = std::integral_constant; +}; + +#if BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 40800 ) + +template struct mp_plus_impl +{ + static const decltype(T1::value + mp_plus_impl::type::value) _v = T1::value + mp_plus_impl::type::value; + using type = std::integral_constant::type, _v>; +}; + +template struct mp_plus_impl +{ + static const + decltype(T1::value + T2::value + T3::value + T4::value + T5::value + T6::value + T7::value + T8::value + T9::value + T10::value + mp_plus_impl::type::value) + _v = T1::value + T2::value + T3::value + T4::value + T5::value + T6::value + T7::value + T8::value + T9::value + T10::value + mp_plus_impl::type::value; + using type = std::integral_constant::type, _v>; +}; + +#else + +template struct mp_plus_impl +{ + static const auto _v = T1::value + mp_plus_impl::type::value; + using type = std::integral_constant::type, _v>; +}; + +template struct mp_plus_impl +{ + static const auto _v = T1::value + T2::value + T3::value + T4::value + T5::value + T6::value + T7::value + T8::value + T9::value + T10::value + mp_plus_impl::type::value; + using type = std::integral_constant::type, _v>; +}; + +#endif + +#endif + +} // namespace detail + +template using mp_plus = typename detail::mp_plus_impl::type; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_PLUS_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_remove_if.hpp b/src/boost/boost/mp11/detail/mp_remove_if.hpp new file mode 100644 index 000000000..660adc17f --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_remove_if.hpp @@ -0,0 +1,48 @@ +#ifndef BOOST_MP11_DETAIL_MP_REMOVE_IF_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_REMOVE_IF_HPP_INCLUDED + +// Copyright 2015-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 + +#include +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_remove_if +namespace detail +{ + +template class P> struct mp_remove_if_impl +{ +}; + +template class L, class... T, template class P> struct mp_remove_if_impl, P> +{ +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) + template struct _f { using type = mp_if, mp_list<>, mp_list>; }; + using type = mp_append, typename _f::type...>; +#else + template using _f = mp_if, mp_list<>, mp_list>; + using type = mp_append, _f...>; +#endif +}; + +} // namespace detail + +template class P> using mp_remove_if = typename detail::mp_remove_if_impl::type; +template using mp_remove_if_q = mp_remove_if; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_REMOVE_IF_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_rename.hpp b/src/boost/boost/mp11/detail/mp_rename.hpp new file mode 100644 index 000000000..4a1ea3153 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_rename.hpp @@ -0,0 +1,54 @@ +#ifndef BOOST_MP11_DETAIL_MP_RENAME_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_RENAME_HPP_INCLUDED + +// Copyright 2015-2023 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 + +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_rename +namespace detail +{ + +template class B> struct mp_rename_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_rename is not a list +}; + +template class L, class... T, template class B> struct mp_rename_impl, B>: mp_defer +{ +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto... A, template class B> struct mp_rename_impl, B>: mp_defer...> +{ +}; + +#endif + +} // namespace detail + +template class B> using mp_rename = typename detail::mp_rename_impl::type; + +// mp_apply +template class F, class L> using mp_apply = typename detail::mp_rename_impl::type; + +// mp_apply_q +template using mp_apply_q = typename detail::mp_rename_impl::type; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_RENAME_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_value.hpp b/src/boost/boost/mp11/detail/mp_value.hpp new file mode 100644 index 000000000..7d29fd3c5 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_value.hpp @@ -0,0 +1,25 @@ +#ifndef BOOST_MP11_DETAIL_MP_VALUE_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_VALUE_HPP_INCLUDED + +// Copyright 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +namespace boost +{ +namespace mp11 +{ + +template using mp_value = std::integral_constant; + +} // namespace mp11 +} // namespace boost + +#endif // #if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +#endif // #ifndef BOOST_MP11_DETAIL_MP_VALUE_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_void.hpp b/src/boost/boost/mp11/detail/mp_void.hpp new file mode 100644 index 000000000..ec281c213 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_void.hpp @@ -0,0 +1,32 @@ +#ifndef BOOST_MP11_DETAIL_MP_VOID_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_VOID_HPP_INCLUDED + +// Copyright 2015-2017 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 + +namespace boost +{ +namespace mp11 +{ + +// mp_void +namespace detail +{ + +template struct mp_void_impl +{ + using type = void; +}; + +} // namespace detail + +template using mp_void = typename detail::mp_void_impl::type; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_VOID_HPP_INCLUDED diff --git a/src/boost/boost/mp11/detail/mp_with_index.hpp b/src/boost/boost/mp11/detail/mp_with_index.hpp new file mode 100644 index 000000000..fffea1337 --- /dev/null +++ b/src/boost/boost/mp11/detail/mp_with_index.hpp @@ -0,0 +1,385 @@ +#ifndef BOOST_MP11_DETAIL_MP_WITH_INDEX_HPP_INCLUDED +#define BOOST_MP11_DETAIL_MP_WITH_INDEX_HPP_INCLUDED + +// Copyright 2017 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 + +#include +#include +#include +#include +#include + +#if defined( BOOST_MP11_HAS_CXX14_CONSTEXPR ) +# define BOOST_MP11_CONSTEXPR14 constexpr +#else +# define BOOST_MP11_CONSTEXPR14 +#endif + +#if defined( __GNUC__ ) || defined( __clang__ ) +# define BOOST_MP11_UNREACHABLE_DEFAULT default: __builtin_unreachable(); +#elif defined( _MSC_VER ) +# define BOOST_MP11_UNREACHABLE_DEFAULT default: __assume(false); +#else +# define BOOST_MP11_UNREACHABLE_DEFAULT +#endif + +namespace boost +{ +namespace mp11 +{ + +namespace detail +{ + +template struct mp_with_index_impl_ +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + if( i < N / 2 ) + { + return mp_with_index_impl_::template call( i, std::forward(f) ); + } + else + { + return mp_with_index_impl_::template call( i - N/2, std::forward(f) ); + } + } +}; + +template<> struct mp_with_index_impl_<0> +{ +}; + +template<> struct mp_with_index_impl_<1> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t /*i*/, F && f ) + { + return std::forward(f)( mp_size_t() ); + } +}; + +template<> struct mp_with_index_impl_<2> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<3> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<4> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<5> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<6> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<7> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + case 6: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<8> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + case 6: return std::forward(f)( mp_size_t() ); + case 7: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<9> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + case 6: return std::forward(f)( mp_size_t() ); + case 7: return std::forward(f)( mp_size_t() ); + case 8: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<10> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + case 6: return std::forward(f)( mp_size_t() ); + case 7: return std::forward(f)( mp_size_t() ); + case 8: return std::forward(f)( mp_size_t() ); + case 9: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<11> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + case 6: return std::forward(f)( mp_size_t() ); + case 7: return std::forward(f)( mp_size_t() ); + case 8: return std::forward(f)( mp_size_t() ); + case 9: return std::forward(f)( mp_size_t() ); + case 10: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<12> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + case 6: return std::forward(f)( mp_size_t() ); + case 7: return std::forward(f)( mp_size_t() ); + case 8: return std::forward(f)( mp_size_t() ); + case 9: return std::forward(f)( mp_size_t() ); + case 10: return std::forward(f)( mp_size_t() ); + case 11: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<13> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + case 6: return std::forward(f)( mp_size_t() ); + case 7: return std::forward(f)( mp_size_t() ); + case 8: return std::forward(f)( mp_size_t() ); + case 9: return std::forward(f)( mp_size_t() ); + case 10: return std::forward(f)( mp_size_t() ); + case 11: return std::forward(f)( mp_size_t() ); + case 12: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<14> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + case 6: return std::forward(f)( mp_size_t() ); + case 7: return std::forward(f)( mp_size_t() ); + case 8: return std::forward(f)( mp_size_t() ); + case 9: return std::forward(f)( mp_size_t() ); + case 10: return std::forward(f)( mp_size_t() ); + case 11: return std::forward(f)( mp_size_t() ); + case 12: return std::forward(f)( mp_size_t() ); + case 13: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<15> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + case 6: return std::forward(f)( mp_size_t() ); + case 7: return std::forward(f)( mp_size_t() ); + case 8: return std::forward(f)( mp_size_t() ); + case 9: return std::forward(f)( mp_size_t() ); + case 10: return std::forward(f)( mp_size_t() ); + case 11: return std::forward(f)( mp_size_t() ); + case 12: return std::forward(f)( mp_size_t() ); + case 13: return std::forward(f)( mp_size_t() ); + case 14: return std::forward(f)( mp_size_t() ); + } + } +}; + +template<> struct mp_with_index_impl_<16> +{ + template static BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) call( std::size_t i, F && f ) + { + switch( i ) + { + BOOST_MP11_UNREACHABLE_DEFAULT + case 0: return std::forward(f)( mp_size_t() ); + case 1: return std::forward(f)( mp_size_t() ); + case 2: return std::forward(f)( mp_size_t() ); + case 3: return std::forward(f)( mp_size_t() ); + case 4: return std::forward(f)( mp_size_t() ); + case 5: return std::forward(f)( mp_size_t() ); + case 6: return std::forward(f)( mp_size_t() ); + case 7: return std::forward(f)( mp_size_t() ); + case 8: return std::forward(f)( mp_size_t() ); + case 9: return std::forward(f)( mp_size_t() ); + case 10: return std::forward(f)( mp_size_t() ); + case 11: return std::forward(f)( mp_size_t() ); + case 12: return std::forward(f)( mp_size_t() ); + case 13: return std::forward(f)( mp_size_t() ); + case 14: return std::forward(f)( mp_size_t() ); + case 15: return std::forward(f)( mp_size_t() ); + } + } +}; + +} // namespace detail + +template inline BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) mp_with_index( std::size_t i, F && f ) +{ + assert( i < N ); + return detail::mp_with_index_impl_::template call<0>( i, std::forward(f) ); +} + +template inline BOOST_MP11_CONSTEXPR14 decltype(std::declval()(std::declval>())) mp_with_index( std::size_t i, F && f ) +{ + return mp_with_index( i, std::forward(f) ); +} + +#undef BOOST_MP11_CONSTEXPR14 +#undef BOOST_MP11_UNREACHABLE_DEFAULT + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_DETAIL_MP_WITH_INDEX_HPP_INCLUDED diff --git a/src/boost/boost/mp11/function.hpp b/src/boost/boost/mp11/function.hpp new file mode 100644 index 000000000..16b82a16b --- /dev/null +++ b/src/boost/boost/mp11/function.hpp @@ -0,0 +1,222 @@ +#ifndef BOOST_MP11_FUNCTION_HPP_INCLUDED +#define BOOST_MP11_FUNCTION_HPP_INCLUDED + +// Copyright 2015-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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_void +// in detail/mp_void.hpp + +// mp_and +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1910 ) + +namespace detail +{ + +template struct mp_and_impl; + +} // namespace detail + +template using mp_and = mp_to_bool< typename detail::mp_and_impl::type >; + +namespace detail +{ + +template<> struct mp_and_impl<> +{ + using type = mp_true; +}; + +template struct mp_and_impl +{ + using type = T; +}; + +template struct mp_and_impl +{ + using type = mp_eval_if< mp_not, T1, mp_and, T... >; +}; + +} // namespace detail + +#else + +namespace detail +{ + +template struct mp_and_impl +{ + using type = mp_false; +}; + +template struct mp_and_impl< mp_list, mp_void...> > +{ + using type = mp_true; +}; + +} // namespace detail + +template using mp_and = typename detail::mp_and_impl>::type; + +#endif + +// mp_all +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86355 +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) || BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, != 0 ) + +template using mp_all = mp_bool< mp_count_if< mp_list, mp_not >::value == 0 >; + +#else + +template using mp_all = mp_bool< mp_count< mp_list...>, mp_false >::value == 0 >; + +#endif + +// mp_or +namespace detail +{ + +template struct mp_or_impl; + +} // namespace detail + +template using mp_or = mp_to_bool< typename detail::mp_or_impl::type >; + +namespace detail +{ + +template<> struct mp_or_impl<> +{ + using type = mp_false; +}; + +template struct mp_or_impl +{ + using type = T; +}; + +template struct mp_or_impl +{ + using type = mp_eval_if< T1, T1, mp_or, T... >; +}; + +} // namespace detail + +// mp_any +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86356 +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1920 ) || BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, != 0 ) + +template using mp_any = mp_bool< mp_count_if< mp_list, mp_to_bool >::value != 0 >; + +#else + +template using mp_any = mp_bool< mp_count< mp_list...>, mp_true >::value != 0 >; + +#endif + +// mp_same +namespace detail +{ + +template struct mp_same_impl; + +template<> struct mp_same_impl<> +{ + using type = mp_true; +}; + +template struct mp_same_impl +{ + using type = mp_bool< mp_count, T1>::value == sizeof...(T) >; +}; + +} // namespace detail + +template using mp_same = typename detail::mp_same_impl::type; + +// mp_similar +namespace detail +{ + +template struct mp_similar_impl; + +template<> struct mp_similar_impl<> +{ + using type = mp_true; +}; + +template struct mp_similar_impl +{ + using type = mp_true; +}; + +template struct mp_similar_impl +{ + using type = mp_true; +}; + +template struct mp_similar_impl +{ + using type = mp_false; +}; + +template class L, class... T1, class... T2> struct mp_similar_impl, L> +{ + using type = mp_true; +}; + +template class L, class... T> struct mp_similar_impl, L> +{ + using type = mp_true; +}; + +template struct mp_similar_impl +{ + using type = mp_all< typename mp_similar_impl::type, typename mp_similar_impl::type, typename mp_similar_impl::type... >; +}; + +} // namespace detail + +template using mp_similar = typename detail::mp_similar_impl::type; + +#if BOOST_MP11_GCC +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wsign-compare" +#endif + +// mp_less +template using mp_less = mp_bool<(T1::value < 0 && T2::value >= 0) || ((T1::value < T2::value) && !(T1::value >= 0 && T2::value < 0))>; + +#if BOOST_MP11_GCC +# pragma GCC diagnostic pop +#endif + +// mp_min +template using mp_min = mp_min_element, mp_less>; + +// mp_max +template using mp_max = mp_max_element, mp_less>; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_FUNCTION_HPP_INCLUDED diff --git a/src/boost/boost/mp11/integer_sequence.hpp b/src/boost/boost/mp11/integer_sequence.hpp new file mode 100644 index 000000000..f814ad7c2 --- /dev/null +++ b/src/boost/boost/mp11/integer_sequence.hpp @@ -0,0 +1,112 @@ +#ifndef BOOST_MP11_INTEGER_SEQUENCE_HPP_INCLUDED +#define BOOST_MP11_INTEGER_SEQUENCE_HPP_INCLUDED + +// Copyright 2015, 2017, 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 + +#include +#include + +#if defined(__has_builtin) +# if __has_builtin(__make_integer_seq) +# define BOOST_MP11_HAS_MAKE_INTEGER_SEQ +# endif +#endif + +namespace boost +{ +namespace mp11 +{ + +// integer_sequence +template struct integer_sequence +{ +}; + +#if defined(BOOST_MP11_HAS_MAKE_INTEGER_SEQ) + +template using make_integer_sequence = __make_integer_seq; + +#else + +// detail::make_integer_sequence_impl +namespace detail +{ + +// iseq_if_c +template struct iseq_if_c_impl; + +template struct iseq_if_c_impl +{ + using type = T; +}; + +template struct iseq_if_c_impl +{ + using type = E; +}; + +template using iseq_if_c = typename iseq_if_c_impl::type; + +// iseq_identity +template struct iseq_identity +{ + using type = T; +}; + +template struct append_integer_sequence; + +template struct append_integer_sequence, integer_sequence> +{ + using type = integer_sequence< T, I..., ( J + sizeof...(I) )... >; +}; + +template struct make_integer_sequence_impl; + +template struct make_integer_sequence_impl_ +{ +private: + + static_assert( N >= 0, "make_integer_sequence: N must not be negative" ); + + static T const M = N / 2; + static T const R = N % 2; + + using S1 = typename make_integer_sequence_impl::type; + using S2 = typename append_integer_sequence::type; + using S3 = typename make_integer_sequence_impl::type; + using S4 = typename append_integer_sequence::type; + +public: + + using type = S4; +}; + +template struct make_integer_sequence_impl: iseq_if_c>, iseq_if_c>, make_integer_sequence_impl_ > > +{ +}; + +} // namespace detail + +// make_integer_sequence +template using make_integer_sequence = typename detail::make_integer_sequence_impl::type; + +#endif // defined(BOOST_MP11_HAS_MAKE_INTEGER_SEQ) + +// index_sequence +template using index_sequence = integer_sequence; + +// make_index_sequence +template using make_index_sequence = make_integer_sequence; + +// index_sequence_for +template using index_sequence_for = make_integer_sequence; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_INTEGER_SEQUENCE_HPP_INCLUDED diff --git a/src/boost/boost/mp11/integral.hpp b/src/boost/boost/mp11/integral.hpp new file mode 100644 index 000000000..8554acdc7 --- /dev/null +++ b/src/boost/boost/mp11/integral.hpp @@ -0,0 +1,42 @@ +#ifndef BOOST_MP11_INTEGRAL_HPP_INCLUDED +#define BOOST_MP11_INTEGRAL_HPP_INCLUDED + +// Copyright 2015 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 + +#include +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_bool +template using mp_bool = std::integral_constant; + +using mp_true = mp_bool; +using mp_false = mp_bool; + +// mp_to_bool +template using mp_to_bool = mp_bool( T::value )>; + +// mp_not +template using mp_not = mp_bool< !T::value >; + +// mp_int +template using mp_int = std::integral_constant; + +// mp_size_t +template using mp_size_t = std::integral_constant; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_INTEGRAL_HPP_INCLUDED diff --git a/src/boost/boost/mp11/list.hpp b/src/boost/boost/mp11/list.hpp new file mode 100644 index 000000000..909789c36 --- /dev/null +++ b/src/boost/boost/mp11/list.hpp @@ -0,0 +1,472 @@ +#ifndef BOOST_MP11_LIST_HPP_INCLUDED +#define BOOST_MP11_LIST_HPP_INCLUDED + +// Copyright 2015-2023 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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_list +// in detail/mp_list.hpp + +// mp_list_c +template using mp_list_c = mp_list...>; + +// mp_list_v +// in detail/mp_list_v.hpp + +// mp_is_list +// in detail/mp_is_list.hpp + +// mp_is_value_list +// in detail/mp_is_value_list.hpp + +// mp_size +namespace detail +{ + +template struct mp_size_impl +{ +// An error "no type named 'type'" here means that the argument to mp_size is not a list +}; + +template class L, class... T> struct mp_size_impl> +{ + using type = mp_size_t; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto... A> struct mp_size_impl> +{ + using type = mp_size_t; +}; + +#endif + +} // namespace detail + +template using mp_size = typename detail::mp_size_impl::type; + +// mp_empty +template using mp_empty = mp_bool< mp_size::value == 0 >; + +// mp_assign +namespace detail +{ + +template struct mp_assign_impl +{ +// An error "no type named 'type'" here means that the arguments to mp_assign aren't lists +}; + +template class L1, class... T, template class L2, class... U> struct mp_assign_impl, L2> +{ + using type = L1; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L1, auto... A, template class L2, class... U> struct mp_assign_impl, L2> +{ + using type = L1; +}; + +template class L1, class... T, template class L2, auto... B> struct mp_assign_impl, L2> +{ + using type = L1...>; +}; + +template class L1, auto... A, template class L2, auto... B> struct mp_assign_impl, L2> +{ + using type = L1; +}; + +#endif + +} // namespace detail + +template using mp_assign = typename detail::mp_assign_impl::type; + +// mp_clear +template using mp_clear = mp_assign>; + +// mp_front +// in detail/mp_front.hpp + +// mp_pop_front +namespace detail +{ + +template struct mp_pop_front_impl +{ +// An error "no type named 'type'" here means that the argument to mp_pop_front +// is either not a list, or is an empty list +}; + +template class L, class T1, class... T> struct mp_pop_front_impl> +{ + using type = L; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto A1, auto... A> struct mp_pop_front_impl> +{ + using type = L; +}; + +#endif + +} // namespace detail + +template using mp_pop_front = typename detail::mp_pop_front_impl::type; + +// mp_first +template using mp_first = mp_front; + +// mp_rest +template using mp_rest = mp_pop_front; + +// mp_second +namespace detail +{ + +template struct mp_second_impl +{ +// An error "no type named 'type'" here means that the argument to mp_second +// is either not a list, or has fewer than two elements +}; + +template class L, class T1, class T2, class... T> struct mp_second_impl> +{ + using type = T2; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto A1, auto A2, auto... A> struct mp_second_impl> +{ + using type = mp_value; +}; + +#endif + +} // namespace detail + +template using mp_second = typename detail::mp_second_impl::type; + +// mp_third +namespace detail +{ + +template struct mp_third_impl +{ +// An error "no type named 'type'" here means that the argument to mp_third +// is either not a list, or has fewer than three elements +}; + +template class L, class T1, class T2, class T3, class... T> struct mp_third_impl> +{ + using type = T3; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto A1, auto A2, auto A3, auto... A> struct mp_third_impl> +{ + using type = mp_value; +}; + +#endif + +} // namespace detail + +template using mp_third = typename detail::mp_third_impl::type; + +// mp_push_front +namespace detail +{ + +template struct mp_push_front_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_push_front is not a list +}; + +template class L, class... U, class... T> struct mp_push_front_impl, T...> +{ + using type = L; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto... A, class... T> struct mp_push_front_impl, T...> +{ + using type = L; +}; + +#endif + +} // namespace detail + +template using mp_push_front = typename detail::mp_push_front_impl::type; + +// mp_push_back +namespace detail +{ + +template struct mp_push_back_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_push_back is not a list +}; + +template class L, class... U, class... T> struct mp_push_back_impl, T...> +{ + using type = L; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto... A, class... T> struct mp_push_back_impl, T...> +{ + using type = L; +}; + +#endif + +} // namespace detail + +template using mp_push_back = typename detail::mp_push_back_impl::type; + +// mp_rename +// mp_apply +// mp_apply_q +// in detail/mp_rename.hpp + +// mp_rename_v +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +namespace detail +{ + +template class B> struct mp_rename_v_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_rename_v is not a list +}; + +template class L, class... T, template class B> struct mp_rename_v_impl, B> +{ + using type = B; +}; + +template class L, auto... A, template class B> struct mp_rename_v_impl, B> +{ + using type = B; +}; + +} // namespace detail + +template class B> using mp_rename_v = typename detail::mp_rename_v_impl::type; + +#endif + +// mp_replace_front +namespace detail +{ + +template struct mp_replace_front_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_replace_front +// is either not a list, or is an empty list +}; + +template class L, class U1, class... U, class T> struct mp_replace_front_impl, T> +{ + using type = L; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto A1, auto... A, class T> struct mp_replace_front_impl, T> +{ + using type = L; +}; + +#endif + +} // namespace detail + +template using mp_replace_front = typename detail::mp_replace_front_impl::type; + +// mp_replace_first +template using mp_replace_first = typename detail::mp_replace_front_impl::type; + +// mp_replace_second +namespace detail +{ + +template struct mp_replace_second_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_replace_second +// is either not a list, or has fewer than two elements +}; + +template class L, class U1, class U2, class... U, class T> struct mp_replace_second_impl, T> +{ + using type = L; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto A1, auto A2, auto... A, class T> struct mp_replace_second_impl, T> +{ + using type = L; +}; + +#endif + +} // namespace detail + +template using mp_replace_second = typename detail::mp_replace_second_impl::type; + +// mp_replace_third +namespace detail +{ + +template struct mp_replace_third_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_replace_third +// is either not a list, or has fewer than three elements +}; + +template class L, class U1, class U2, class U3, class... U, class T> struct mp_replace_third_impl, T> +{ + using type = L; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto A1, auto A2, auto A3, auto... A, class T> struct mp_replace_third_impl, T> +{ + using type = L; +}; + +#endif + +} // namespace detail + +template using mp_replace_third = typename detail::mp_replace_third_impl::type; + +// mp_transform_front +namespace detail +{ + +template class F> struct mp_transform_front_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_transform_front +// is either not a list, or is an empty list +}; + +template class L, class U1, class... U, template class F> struct mp_transform_front_impl, F> +{ + using type = L, U...>; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto A1, auto... A, template class F> struct mp_transform_front_impl, F> +{ + using type = L>::value, A...>; +}; + +#endif + +} // namespace detail + +template class F> using mp_transform_front = typename detail::mp_transform_front_impl::type; +template using mp_transform_front_q = mp_transform_front; + +// mp_transform_first +template class F> using mp_transform_first = typename detail::mp_transform_front_impl::type; +template using mp_transform_first_q = mp_transform_first; + +// mp_transform_second +namespace detail +{ + +template class F> struct mp_transform_second_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_transform_second +// is either not a list, or has fewer than two elements +}; + +template class L, class U1, class U2, class... U, template class F> struct mp_transform_second_impl, F> +{ + using type = L, U...>; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto A1, auto A2, auto... A, template class F> struct mp_transform_second_impl, F> +{ + using type = L>::value, A...>; +}; + +#endif + +} // namespace detail + +template class F> using mp_transform_second = typename detail::mp_transform_second_impl::type; +template using mp_transform_second_q = mp_transform_second; + +// mp_transform_third +namespace detail +{ + +template class F> struct mp_transform_third_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_transform_third +// is either not a list, or has fewer than three elements +}; + +template class L, class U1, class U2, class U3, class... U, template class F> struct mp_transform_third_impl, F> +{ + using type = L, U...>; +}; + +#if defined(BOOST_MP11_HAS_TEMPLATE_AUTO) + +template class L, auto A1, auto A2, auto A3, auto... A, template class F> struct mp_transform_third_impl, F> +{ + using type = L>::value, A...>; +}; + +#endif + +} // namespace detail + +template class F> using mp_transform_third = typename detail::mp_transform_third_impl::type; +template using mp_transform_third_q = mp_transform_third; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_LIST_HPP_INCLUDED diff --git a/src/boost/boost/mp11/set.hpp b/src/boost/boost/mp11/set.hpp new file mode 100644 index 000000000..6f7ddb6f5 --- /dev/null +++ b/src/boost/boost/mp11/set.hpp @@ -0,0 +1,188 @@ +#ifndef BOOST_MP11_SET_HPP_INCLUDED +#define BOOST_MP11_SET_HPP_INCLUDED + +// Copyright 2015, 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 + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_set_contains +namespace detail +{ + +template struct mp_set_contains_impl +{ +}; + +template class L, class... T, class V> struct mp_set_contains_impl, V> +{ + using type = mp_to_bool, mp_inherit...> > >; +}; + +} // namespace detail + +template using mp_set_contains = typename detail::mp_set_contains_impl::type; + +// mp_set_push_back +namespace detail +{ + +template struct mp_set_push_back_impl +{ +}; + +template class L, class... U> struct mp_set_push_back_impl> +{ + using type = L; +}; + +template class L, class... U, class T1, class... T> struct mp_set_push_back_impl, T1, T...> +{ + using S = mp_if, T1>, L, L>; + using type = typename mp_set_push_back_impl::type; +}; + +} // namespace detail + +template using mp_set_push_back = typename detail::mp_set_push_back_impl::type; + +// mp_set_push_front +namespace detail +{ + +template struct mp_set_push_front_impl +{ +}; + +template class L, class... U> struct mp_set_push_front_impl> +{ + using type = L; +}; + +template class L, class... U, class T1> struct mp_set_push_front_impl, T1> +{ + using type = mp_if, T1>, L, L>; +}; + +template class L, class... U, class T1, class... T> struct mp_set_push_front_impl, T1, T...> +{ + using S = typename mp_set_push_front_impl, T...>::type; + using type = typename mp_set_push_front_impl::type; +}; + +} // namespace detail + +template using mp_set_push_front = typename detail::mp_set_push_front_impl::type; + +// mp_is_set +namespace detail +{ + +template struct mp_is_set_impl +{ + using type = mp_false; +}; + +template class L, class... T> struct mp_is_set_impl> +{ + using type = mp_to_bool, mp_set_push_back, T...> > >; +}; + +} // namespace detail + +template using mp_is_set = typename detail::mp_is_set_impl::type; + +// mp_set_union +namespace detail +{ + +template struct mp_set_union_impl +{ +}; + +template<> struct mp_set_union_impl<> +{ + using type = mp_list<>; +}; + +template class L, class... T> struct mp_set_union_impl> +{ + using type = L; +}; + +template class L1, class... T1, template class L2, class... T2> struct mp_set_union_impl, L2> +{ + using type = mp_set_push_back, T2...>; +}; + +template using mp_set_union_ = typename mp_set_union_impl, L...>>::type; + +template struct mp_set_union_impl: mp_defer +{ +}; + +} // namespace detail + +template using mp_set_union = typename detail::mp_set_union_impl::type; + +// mp_set_intersection +namespace detail +{ + +template struct in_all_sets +{ + template using fn = mp_all< mp_set_contains... >; +}; + +template using mp_set_intersection_ = mp_if< mp_all...>, mp_copy_if_q> >; + +template struct mp_set_intersection_impl +{ +}; + +template<> struct mp_set_intersection_impl<> +{ + using type = mp_list<>; +}; + +template struct mp_set_intersection_impl: mp_defer +{ +}; + +} // namespace detail + +template using mp_set_intersection = typename detail::mp_set_intersection_impl::type; + +// mp_set_difference +namespace detail +{ + +template struct in_any_set +{ + template using fn = mp_any< mp_set_contains... >; +}; + +} // namespace detail + +template using mp_set_difference = mp_if< mp_all...>, mp_remove_if_q> >; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_SET_HPP_INCLUDED diff --git a/src/boost/boost/mp11/utility.hpp b/src/boost/boost/mp11/utility.hpp new file mode 100644 index 000000000..280c2f1c9 --- /dev/null +++ b/src/boost/boost/mp11/utility.hpp @@ -0,0 +1,169 @@ +#ifndef BOOST_MP11_UTILITY_HPP_INCLUDED +#define BOOST_MP11_UTILITY_HPP_INCLUDED + +// Copyright 2015-2020 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 + +#include +#include +#include +#include +#include +#include +#include + +namespace boost +{ +namespace mp11 +{ + +// mp_identity +template struct mp_identity +{ + using type = T; +}; + +// mp_identity_t +template using mp_identity_t = typename mp_identity::type; + +// mp_inherit +template struct mp_inherit: T... {}; + +// mp_if, mp_if_c +// mp_valid +// mp_defer +// moved to detail/mp_defer.hpp + +// mp_eval_if, mp_eval_if_c +namespace detail +{ + +template class F, class... U> struct mp_eval_if_c_impl; + +template class F, class... U> struct mp_eval_if_c_impl +{ + using type = T; +}; + +template class F, class... U> struct mp_eval_if_c_impl: mp_defer +{ +}; + +} // namespace detail + +template class F, class... U> using mp_eval_if_c = typename detail::mp_eval_if_c_impl::type; +template class F, class... U> using mp_eval_if = typename detail::mp_eval_if_c_impl(C::value), T, F, U...>::type; +template using mp_eval_if_q = typename detail::mp_eval_if_c_impl(C::value), T, Q::template fn, U...>::type; + +// mp_eval_if_not +template class F, class... U> using mp_eval_if_not = mp_eval_if, T, F, U...>; +template using mp_eval_if_not_q = mp_eval_if, T, Q::template fn, U...>; + +// mp_eval_or +template class F, class... U> using mp_eval_or = mp_eval_if_not, T, F, U...>; +template using mp_eval_or_q = mp_eval_or; + +// mp_valid_and_true +template class F, class... T> using mp_valid_and_true = mp_eval_or; +template using mp_valid_and_true_q = mp_valid_and_true; + +// mp_cond + +// so elegant; so doesn't work +// template using mp_cond = mp_eval_if; + +namespace detail +{ + +template struct mp_cond_impl; + +} // namespace detail + +template using mp_cond = typename detail::mp_cond_impl::type; + +namespace detail +{ + +template using mp_cond_ = mp_eval_if; + +template struct mp_cond_impl: mp_defer +{ +}; + +} // namespace detail + +// mp_quote +template class F> struct mp_quote +{ + // the indirection through mp_defer works around the language inability + // to expand T... into a fixed parameter list of an alias template + + template using fn = typename mp_defer::type; +}; + +// mp_quote_trait +template class F> struct mp_quote_trait +{ + template using fn = typename F::type; +}; + +// mp_invoke_q +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1900 ) + +namespace detail +{ + +template struct mp_invoke_q_impl: mp_defer {}; + +} // namespace detail + +template using mp_invoke_q = typename detail::mp_invoke_q_impl::type; + +#elif BOOST_MP11_WORKAROUND( BOOST_MP11_GCC, < 50000 ) + +template using mp_invoke_q = typename mp_defer::type; + +#else + +template using mp_invoke_q = typename Q::template fn; + +#endif + +// mp_not_fn

+template class P> struct mp_not_fn +{ + template using fn = mp_not< mp_invoke_q, T...> >; +}; + +template using mp_not_fn_q = mp_not_fn; + +// mp_compose +namespace detail +{ + +template using mp_compose_helper = mp_list< mp_apply_q >; + +} // namespace detail + +#if !BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, < 1900 ) + +template class... F> struct mp_compose +{ + template using fn = mp_front< mp_fold...>, mp_list, detail::mp_compose_helper> >; +}; + +#endif + +template struct mp_compose_q +{ + template using fn = mp_front< mp_fold, mp_list, detail::mp_compose_helper> >; +}; + +} // namespace mp11 +} // namespace boost + +#endif // #ifndef BOOST_MP11_UTILITY_HPP_INCLUDED diff --git a/src/boost/boost/mp11/version.hpp b/src/boost/boost/mp11/version.hpp new file mode 100644 index 000000000..8c6060422 --- /dev/null +++ b/src/boost/boost/mp11/version.hpp @@ -0,0 +1,16 @@ +#ifndef BOOST_MP11_VERSION_HPP_INCLUDED +#define BOOST_MP11_VERSION_HPP_INCLUDED + +// 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 + +// Same format as BOOST_VERSION: +// major * 100000 + minor * 100 + patch + +#define BOOST_MP11_VERSION 108300 + +#endif // #ifndef BOOST_MP11_VERSION_HPP_INCLUDED diff --git a/src/boost/boost/mpl/O1_size.hpp b/src/boost/boost/mpl/O1_size.hpp deleted file mode 100644 index 0caf26d01..000000000 --- a/src/boost/boost/mpl/O1_size.hpp +++ /dev/null @@ -1,40 +0,0 @@ - -#ifndef BOOST_MPL_O1_SIZE_HPP_INCLUDED -#define BOOST_MPL_O1_SIZE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -// returns sequence size if it's an O(1) operation; otherwise returns -1 -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct O1_size - : O1_size_impl< typename sequence_tag::type > - ::template apply< Sequence > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1, O1_size, (Sequence)) -}; - -BOOST_MPL_AUX_NA_SPEC(1, O1_size) - -}} - -#endif // BOOST_MPL_O1_SIZE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/O1_size_fwd.hpp b/src/boost/boost/mpl/O1_size_fwd.hpp deleted file mode 100644 index 4840daf00..000000000 --- a/src/boost/boost/mpl/O1_size_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED -#define BOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct O1_size_impl; -template< typename Sequence > struct O1_size; - -}} - -#endif // BOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/advance.hpp b/src/boost/boost/mpl/advance.hpp deleted file mode 100644 index 2a645a3b9..000000000 --- a/src/boost/boost/mpl/advance.hpp +++ /dev/null @@ -1,76 +0,0 @@ - -#ifndef BOOST_MPL_ADVANCE_HPP_INCLUDED -#define BOOST_MPL_ADVANCE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -// default implementation for forward/bidirectional iterators -template< typename Tag > -struct advance_impl -{ - template< typename Iterator, typename N > struct apply - { - typedef typename less< N,long_<0> >::type backward_; - typedef typename if_< backward_, negate, N >::type offset_; - - typedef typename if_< - backward_ - , aux::advance_backward< BOOST_MPL_AUX_VALUE_WKND(offset_)::value > - , aux::advance_forward< BOOST_MPL_AUX_VALUE_WKND(offset_)::value > - >::type f_; - - typedef typename apply_wrap1::type type; - }; -}; - - -template< - typename BOOST_MPL_AUX_NA_PARAM(Iterator) - , typename BOOST_MPL_AUX_NA_PARAM(N) - > -struct advance - : advance_impl< typename tag::type > - ::template apply -{ -}; - -template< - typename Iterator - , BOOST_MPL_AUX_NTTP_DECL(long, N) - > -struct advance_c - : advance_impl< typename tag::type > - ::template apply > -{ -}; - -BOOST_MPL_AUX_NA_SPEC(2, advance) - -}} - -#endif // BOOST_MPL_ADVANCE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/advance_fwd.hpp b/src/boost/boost/mpl/advance_fwd.hpp deleted file mode 100644 index e080efeed..000000000 --- a/src/boost/boost/mpl/advance_fwd.hpp +++ /dev/null @@ -1,28 +0,0 @@ - -#ifndef BOOST_MPL_ADVANCE_FWD_HPP_INCLUDED -#define BOOST_MPL_ADVANCE_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include - -namespace boost { namespace mpl { - -BOOST_MPL_AUX_COMMON_NAME_WKND(advance) - -template< typename Tag > struct advance_impl; -template< typename Iterator, typename N > struct advance; - -}} - -#endif // BOOST_MPL_ADVANCE_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/and.hpp b/src/boost/boost/mpl/and.hpp index a92c2785d..8c16de382 100644 --- a/src/boost/boost/mpl/and.hpp +++ b/src/boost/boost/mpl/and.hpp @@ -28,7 +28,7 @@ // 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(and)' // has to be checked in a separate condition, otherwise GCC complains // about 'and' being an alternative token -#if defined(_MSC_VER) && !defined(__clang__) +#if defined(_MSC_VER) #ifndef __GCCXML__ #if defined(and) # pragma push_macro("and") diff --git a/src/boost/boost/mpl/assert.hpp b/src/boost/boost/mpl/assert.hpp index 77a005239..4b0a97a08 100644 --- a/src/boost/boost/mpl/assert.hpp +++ b/src/boost/boost/mpl/assert.hpp @@ -39,7 +39,7 @@ #include #endif -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ || (BOOST_MPL_CFG_GCC != 0) \ || BOOST_WORKAROUND(__IBMCPP__, <= 600) # define BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES @@ -47,16 +47,16 @@ #if BOOST_WORKAROUND(__MWERKS__, < 0x3202) \ || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ + || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) # define BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER #endif // agurt, 10/nov/06: use enums for Borland (which cannot cope with static constants) -// and GCC (which issues "unused variable" warnings when static constants are used +// and GCC/PGI/Clang (which issues "unused variable" warnings when static constants are used // at a function scope) -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ - || (BOOST_MPL_CFG_GCC != 0) || (BOOST_MPL_CFG_GPU != 0) || defined(__PGI) +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ + || (BOOST_MPL_CFG_GCC != 0) || (BOOST_MPL_CFG_GPU != 0) || defined(__PGI) || defined(__clang__) # define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr } #else # define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) BOOST_STATIC_CONSTANT(T, expr) @@ -184,7 +184,7 @@ template< typename P > struct assert_arg_pred_not typedef typename assert_arg_pred_impl

::type type; }; -#if defined(BOOST_GCC) && BOOST_GCC >= 80000 +#if BOOST_WORKAROUND(BOOST_GCC_VERSION, >= 80000) #define BOOST_MPL_IGNORE_PARENTHESES_WARNING #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wparentheses" @@ -297,7 +297,7 @@ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \ boost::mpl::assertion_failed( \ - boost::mpl::assert_arg( (void (*) pred)0, 1 ) \ + boost::mpl::assert_arg( (void (*) pred)BOOST_NULLPTR, 1 ) \ ) \ ) \ ) \ @@ -310,7 +310,7 @@ BOOST_MPL_AUX_ASSERT_CONSTANT( \ enum { \ BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \ boost::mpl::assertion::failed( \ - boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \ + boost::mpl::assert_not_arg( (void (*) pred)BOOST_NULLPTR, 1 ) \ ) \ ) \ }\ @@ -321,7 +321,7 @@ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \ boost::mpl::assertion_failed( \ - boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \ + boost::mpl::assert_not_arg( (void (*) pred)BOOST_NULLPTR, 1 ) \ ) \ ) \ ) \ diff --git a/src/boost/boost/mpl/at.hpp b/src/boost/boost/mpl/at.hpp deleted file mode 100644 index 4f3ef8895..000000000 --- a/src/boost/boost/mpl/at.hpp +++ /dev/null @@ -1,52 +0,0 @@ - -#ifndef BOOST_MPL_AT_HPP_INCLUDED -#define BOOST_MPL_AT_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(N) - > -struct at - : at_impl< typename sequence_tag::type > - ::template apply< Sequence,N > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(2,at,(Sequence,N)) -}; - -template< - typename Sequence - , BOOST_MPL_AUX_NTTP_DECL(long, N) - > -struct at_c - : at_impl< typename sequence_tag::type > - ::template apply< Sequence,mpl::long_ > -{ -}; - -BOOST_MPL_AUX_NA_SPEC(2, at) - -}} - -#endif // BOOST_MPL_AT_HPP_INCLUDED diff --git a/src/boost/boost/mpl/at_fwd.hpp b/src/boost/boost/mpl/at_fwd.hpp deleted file mode 100644 index 453694a36..000000000 --- a/src/boost/boost/mpl/at_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_AT_FWD_HPP_INCLUDED -#define BOOST_MPL_AT_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct at_impl; -template< typename Sequence, typename N > struct at; - -}} - -#endif // BOOST_MPL_AT_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/O1_size_impl.hpp b/src/boost/boost/mpl/aux_/O1_size_impl.hpp deleted file mode 100644 index 859e23efa..000000000 --- a/src/boost/boost/mpl/aux_/O1_size_impl.hpp +++ /dev/null @@ -1,87 +0,0 @@ - -#ifndef BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED -#define BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -// default implementation - returns 'Sequence::size' if sequence has a 'size' -// member, and -1 otherwise; conrete sequences might override it by -// specializing either the 'O1_size_impl' or the primary 'O1_size' template - -# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) \ - && !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) - -namespace aux { -template< typename Sequence > struct O1_size_impl - : Sequence::size -{ -}; -} - -template< typename Tag > -struct O1_size_impl -{ - template< typename Sequence > struct apply -#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : if_< - aux::has_size - , aux::O1_size_impl - , long_<-1> - >::type - { -#else - { - typedef typename if_< - aux::has_size - , aux::O1_size_impl - , long_<-1> - >::type type; - - BOOST_STATIC_CONSTANT(long, value = - (if_< - aux::has_size - , aux::O1_size_impl - , long_<-1> - >::type::value) - ); -#endif - }; -}; - -# else // BOOST_MSVC - -template< typename Tag > -struct O1_size_impl -{ - template< typename Sequence > struct apply - : long_<-1> - { - }; -}; - -# endif - -}} - -#endif // BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/advance_backward.hpp b/src/boost/boost/mpl/aux_/advance_backward.hpp deleted file mode 100644 index 239e6b8d2..000000000 --- a/src/boost/boost/mpl/aux_/advance_backward.hpp +++ /dev/null @@ -1,128 +0,0 @@ - -#if !defined(BOOST_PP_IS_ITERATING) - -///// header body - -#ifndef BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED -#define BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER advance_backward.hpp -# include - -#else - -# include -# include -# include - -# include -# include -# include - -namespace boost { namespace mpl { namespace aux { - -// forward declaration -template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct advance_backward; - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(0, BOOST_MPL_LIMIT_UNROLLING, )) -# include BOOST_PP_ITERATE() - -// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING -template< BOOST_MPL_AUX_NTTP_DECL(long, N) > -struct advance_backward -{ - template< typename Iterator > struct apply - { - typedef typename apply_wrap1< - advance_backward - , Iterator - >::type chunk_result_; - - typedef typename apply_wrap1< - advance_backward<( - (N - BOOST_MPL_LIMIT_UNROLLING) < 0 - ? 0 - : N - BOOST_MPL_LIMIT_UNROLLING - )> - , chunk_result_ - >::type type; - }; -}; - -}}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS -#endif // BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED - -///// iteration, depth == 1 - -// For gcc 4.4 compatability, we must include the -// BOOST_PP_ITERATION_DEPTH test inside an #else clause. -#else // BOOST_PP_IS_ITERATING -#if BOOST_PP_ITERATION_DEPTH() == 1 -#define i_ BOOST_PP_FRAME_ITERATION(1) - -template<> -struct advance_backward< BOOST_PP_FRAME_ITERATION(1) > -{ - template< typename Iterator > struct apply - { - typedef Iterator iter0; - -#if i_ > 0 -# define BOOST_PP_ITERATION_PARAMS_2 \ - (3,(1, BOOST_PP_FRAME_ITERATION(1), )) -# include BOOST_PP_ITERATE() -#endif - - typedef BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(1)) type; - }; - -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct apply - { - typedef int type; - }; -#endif -}; - -#undef i_ - -///// iteration, depth == 2 - -#elif BOOST_PP_ITERATION_DEPTH() == 2 - -# define AUX778076_ITER_0 BOOST_PP_CAT(iter,BOOST_PP_DEC(BOOST_PP_FRAME_ITERATION(2))) -# define AUX778076_ITER_1 BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(2)) - - typedef typename prior::type AUX778076_ITER_1; - -# undef AUX778076_ITER_1 -# undef AUX778076_ITER_0 - -#endif // BOOST_PP_ITERATION_DEPTH() -#endif // BOOST_PP_IS_ITERATING diff --git a/src/boost/boost/mpl/aux_/advance_forward.hpp b/src/boost/boost/mpl/aux_/advance_forward.hpp deleted file mode 100644 index 424b2da29..000000000 --- a/src/boost/boost/mpl/aux_/advance_forward.hpp +++ /dev/null @@ -1,127 +0,0 @@ - -#if !defined(BOOST_PP_IS_ITERATING) - -///// header body - -#ifndef BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED -#define BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER advance_forward.hpp -# include - -#else - -# include -# include -# include - -# include -# include -# include - -namespace boost { namespace mpl { namespace aux { - -// forward declaration -template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct advance_forward; - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(0, BOOST_MPL_LIMIT_UNROLLING, )) -# include BOOST_PP_ITERATE() - -// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING -template< BOOST_MPL_AUX_NTTP_DECL(long, N) > -struct advance_forward -{ - template< typename Iterator > struct apply - { - typedef typename apply_wrap1< - advance_forward - , Iterator - >::type chunk_result_; - - typedef typename apply_wrap1< - advance_forward<( - (N - BOOST_MPL_LIMIT_UNROLLING) < 0 - ? 0 - : N - BOOST_MPL_LIMIT_UNROLLING - )> - , chunk_result_ - >::type type; - }; -}; - -}}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS -#endif // BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED - -///// iteration, depth == 1 - -// For gcc 4.4 compatability, we must include the -// BOOST_PP_ITERATION_DEPTH test inside an #else clause. -#else // BOOST_PP_IS_ITERATING -#if BOOST_PP_ITERATION_DEPTH() == 1 -#define i_ BOOST_PP_FRAME_ITERATION(1) - -template<> -struct advance_forward< BOOST_PP_FRAME_ITERATION(1) > -{ - template< typename Iterator > struct apply - { - typedef Iterator iter0; - -#if i_ > 0 -# define BOOST_PP_ITERATION_PARAMS_2 \ - (3,(1, i_, )) -# include BOOST_PP_ITERATE() -#endif - typedef BOOST_PP_CAT(iter,i_) type; - }; - -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct apply - { - typedef int type; - }; -#endif -}; - -#undef i_ - -///// iteration, depth == 2 - -#elif BOOST_PP_ITERATION_DEPTH() == 2 - -# define AUX778076_ITER_0 BOOST_PP_CAT(iter,BOOST_PP_DEC(BOOST_PP_FRAME_ITERATION(2))) -# define AUX778076_ITER_1 BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(2)) - - typedef typename next::type AUX778076_ITER_1; - -# undef AUX778076_ITER_1 -# undef AUX778076_ITER_0 - -#endif // BOOST_PP_ITERATION_DEPTH() -#endif // BOOST_PP_IS_ITERATING diff --git a/src/boost/boost/mpl/aux_/at_impl.hpp b/src/boost/boost/mpl/aux_/at_impl.hpp deleted file mode 100644 index b02f62bc8..000000000 --- a/src/boost/boost/mpl/aux_/at_impl.hpp +++ /dev/null @@ -1,45 +0,0 @@ - -#ifndef BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include - -namespace boost { namespace mpl { - -// default implementation; conrete sequences might override it by -// specializing either the 'at_impl' or the primary 'at' template - -template< typename Tag > -struct at_impl -{ - template< typename Sequence, typename N > struct apply - { - typedef typename advance< - typename begin::type - , N - >::type iter_; - - typedef typename deref::type type; - }; -}; - -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, at_impl) - -}} - -#endif // BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/begin_end_impl.hpp b/src/boost/boost/mpl/aux_/begin_end_impl.hpp deleted file mode 100644 index 648fc81a9..000000000 --- a/src/boost/boost/mpl/aux_/begin_end_impl.hpp +++ /dev/null @@ -1,101 +0,0 @@ - -#ifndef BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - - -namespace aux { - -template< typename Sequence > -struct begin_type -{ - typedef typename Sequence::begin type; -}; -template< typename Sequence > -struct end_type -{ - typedef typename Sequence::end type; -}; - -} - -// default implementation; conrete sequences might override it by -// specializing either the 'begin_impl/end_impl' or the primary -// 'begin/end' templates - -template< typename Tag > -struct begin_impl -{ - template< typename Sequence > struct apply - { - typedef typename eval_if, - aux::begin_type, void_>::type type; - }; -}; - -template< typename Tag > -struct end_impl -{ - template< typename Sequence > struct apply - { - typedef typename eval_if, - aux::end_type, void_>::type type; - }; -}; - -// specialize 'begin_trait/end_trait' for two pre-defined tags - -# define AUX778076_IMPL_SPEC(name, tag, result) \ -template<> \ -struct name##_impl \ -{ \ - template< typename Sequence > struct apply \ - { \ - typedef result type; \ - }; \ -}; \ -/**/ - -// a sequence with nested 'begin/end' typedefs; just query them -AUX778076_IMPL_SPEC(begin, nested_begin_end_tag, typename Sequence::begin) -AUX778076_IMPL_SPEC(end, nested_begin_end_tag, typename Sequence::end) - -// if a type 'T' does not contain 'begin/end' or 'tag' members -// and doesn't specialize either 'begin/end' or 'begin_impl/end_impl' -// templates, then we end up here -AUX778076_IMPL_SPEC(begin, non_sequence_tag, void_) -AUX778076_IMPL_SPEC(end, non_sequence_tag, void_) -AUX778076_IMPL_SPEC(begin, na, void_) -AUX778076_IMPL_SPEC(end, na, void_) - -# undef AUX778076_IMPL_SPEC - - -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,begin_impl) -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,end_impl) - -}} - -#endif // BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/clear_impl.hpp b/src/boost/boost/mpl/aux_/clear_impl.hpp deleted file mode 100644 index 927590dca..000000000 --- a/src/boost/boost/mpl/aux_/clear_impl.hpp +++ /dev/null @@ -1,35 +0,0 @@ - -#ifndef BOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include - -namespace boost { namespace mpl { - -// no default implementation; the definition is needed to make MSVC happy - -template< typename Tag > -struct clear_impl -{ - template< typename Sequence > struct apply; -}; - -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, clear_impl) - -}} - -#endif // BOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/common_name_wknd.hpp b/src/boost/boost/mpl/aux_/common_name_wknd.hpp index 1f8f2313f..340603756 100644 --- a/src/boost/boost/mpl/aux_/common_name_wknd.hpp +++ b/src/boost/boost/mpl/aux_/common_name_wknd.hpp @@ -16,7 +16,7 @@ #include -#if BOOST_WORKAROUND(__BORLANDC__, < 0x561) +#if BOOST_WORKAROUND(BOOST_BORLANDC, < 0x561) // agurt, 12/nov/02: to suppress the bogus "Cannot have both a template class // and function named 'xxx'" diagnostic # define BOOST_MPL_AUX_COMMON_NAME_WKND(name) \ @@ -29,6 +29,6 @@ template< typename > void name(); \ # define BOOST_MPL_AUX_COMMON_NAME_WKND(name) /**/ -#endif // __BORLANDC__ +#endif // BOOST_BORLANDC #endif // BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/config/adl.hpp b/src/boost/boost/mpl/aux_/config/adl.hpp index 28df31ae5..46ab9169d 100644 --- a/src/boost/boost/mpl/aux_/config/adl.hpp +++ b/src/boost/boost/mpl/aux_/config/adl.hpp @@ -27,7 +27,7 @@ #if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE) \ && ( BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ + || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \ || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \ diff --git a/src/boost/boost/mpl/aux_/config/arrays.hpp b/src/boost/boost/mpl/aux_/config/arrays.hpp index e30d80333..456228a93 100644 --- a/src/boost/boost/mpl/aux_/config/arrays.hpp +++ b/src/boost/boost/mpl/aux_/config/arrays.hpp @@ -19,7 +19,7 @@ #if !defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && ( BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ + && ( BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ ) diff --git a/src/boost/boost/mpl/aux_/config/bcc.hpp b/src/boost/boost/mpl/aux_/config/bcc.hpp index ee7816e76..376a62782 100644 --- a/src/boost/boost/mpl/aux_/config/bcc.hpp +++ b/src/boost/boost/mpl/aux_/config/bcc.hpp @@ -18,8 +18,8 @@ #if !defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && BOOST_WORKAROUND(__BORLANDC__, >= 0x590) \ - && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) + && BOOST_WORKAROUND(BOOST_BORLANDC, >= 0x590) \ + && BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) # define BOOST_MPL_CFG_BCC590_WORKAROUNDS diff --git a/src/boost/boost/mpl/aux_/config/bind.hpp b/src/boost/boost/mpl/aux_/config/bind.hpp index ea644b538..e430fa8af 100644 --- a/src/boost/boost/mpl/aux_/config/bind.hpp +++ b/src/boost/boost/mpl/aux_/config/bind.hpp @@ -21,7 +21,7 @@ #if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ + || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ ) # define BOOST_MPL_CFG_NO_BIND_TEMPLATE diff --git a/src/boost/boost/mpl/aux_/config/compiler.hpp b/src/boost/boost/mpl/aux_/config/compiler.hpp index d680e79e1..7386c3210 100644 --- a/src/boost/boost/mpl/aux_/config/compiler.hpp +++ b/src/boost/boost/mpl/aux_/config/compiler.hpp @@ -32,10 +32,10 @@ # elif BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) # define BOOST_MPL_CFG_COMPILER_DIR gcc -# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) +# elif BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) # if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) # define BOOST_MPL_CFG_COMPILER_DIR bcc551 -# elif BOOST_WORKAROUND(__BORLANDC__, >= 0x590) +# elif BOOST_WORKAROUND(BOOST_BORLANDC, >= 0x590) # define BOOST_MPL_CFG_COMPILER_DIR bcc # else # define BOOST_MPL_CFG_COMPILER_DIR bcc_pre590 diff --git a/src/boost/boost/mpl/aux_/config/ctps.hpp b/src/boost/boost/mpl/aux_/config/ctps.hpp index f2db3dae1..e14143d16 100644 --- a/src/boost/boost/mpl/aux_/config/ctps.hpp +++ b/src/boost/boost/mpl/aux_/config/ctps.hpp @@ -19,7 +19,7 @@ #if !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && BOOST_WORKAROUND(__BORLANDC__, < 0x582) + && BOOST_WORKAROUND(BOOST_BORLANDC, < 0x582) # define BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC diff --git a/src/boost/boost/mpl/aux_/config/dtp.hpp b/src/boost/boost/mpl/aux_/config/dtp.hpp index dd3d2ac6f..9e9173181 100644 --- a/src/boost/boost/mpl/aux_/config/dtp.hpp +++ b/src/boost/boost/mpl/aux_/config/dtp.hpp @@ -24,8 +24,8 @@ #if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && BOOST_WORKAROUND(__BORLANDC__, >= 0x560) \ - && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) + && BOOST_WORKAROUND(BOOST_BORLANDC, >= 0x560) \ + && BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) # define BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES @@ -35,7 +35,7 @@ #if !defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ && ( BOOST_WORKAROUND(__MWERKS__, <= 0x3001) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ + || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ || defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \ ) diff --git a/src/boost/boost/mpl/aux_/config/forwarding.hpp b/src/boost/boost/mpl/aux_/config/forwarding.hpp index 193daa5c8..576c609fa 100644 --- a/src/boost/boost/mpl/aux_/config/forwarding.hpp +++ b/src/boost/boost/mpl/aux_/config/forwarding.hpp @@ -18,7 +18,7 @@ #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) + && BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) # define BOOST_MPL_CFG_NO_NESTED_FORWARDING diff --git a/src/boost/boost/mpl/aux_/config/integral.hpp b/src/boost/boost/mpl/aux_/config/integral.hpp index f1531b3f9..8b33457a4 100644 --- a/src/boost/boost/mpl/aux_/config/integral.hpp +++ b/src/boost/boost/mpl/aux_/config/integral.hpp @@ -19,7 +19,7 @@ #if !defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) + && BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) # define BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS diff --git a/src/boost/boost/mpl/aux_/config/overload_resolution.hpp b/src/boost/boost/mpl/aux_/config/overload_resolution.hpp index 03112f778..d1fceaa38 100644 --- a/src/boost/boost/mpl/aux_/config/overload_resolution.hpp +++ b/src/boost/boost/mpl/aux_/config/overload_resolution.hpp @@ -18,7 +18,7 @@ #if !defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && ( BOOST_WORKAROUND(__BORLANDC__, < 0x590) \ + && ( BOOST_WORKAROUND(BOOST_BORLANDC, < 0x590) \ || BOOST_WORKAROUND(__MWERKS__, < 0x3001) \ ) diff --git a/src/boost/boost/mpl/aux_/config/preprocessor.hpp b/src/boost/boost/mpl/aux_/config/preprocessor.hpp index b6af1ddb3..b2d9c8a18 100644 --- a/src/boost/boost/mpl/aux_/config/preprocessor.hpp +++ b/src/boost/boost/mpl/aux_/config/preprocessor.hpp @@ -18,7 +18,7 @@ #if !defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION) \ && ( BOOST_WORKAROUND(__MWERKS__, <= 0x3003) \ - || BOOST_WORKAROUND(__BORLANDC__, < 0x582) \ + || BOOST_WORKAROUND(BOOST_BORLANDC, < 0x582) \ || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \ ) diff --git a/src/boost/boost/mpl/aux_/config/ttp.hpp b/src/boost/boost/mpl/aux_/config/ttp.hpp index 3d72b37de..0031acfe7 100644 --- a/src/boost/boost/mpl/aux_/config/ttp.hpp +++ b/src/boost/boost/mpl/aux_/config/ttp.hpp @@ -20,7 +20,7 @@ #if !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \ && ( defined(BOOST_NO_TEMPLATE_TEMPLATES) \ - || BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x590) ) \ + || BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT( 0x590) ) \ ) # define BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS @@ -31,7 +31,7 @@ #if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ && ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ + || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ ) # define BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING diff --git a/src/boost/boost/mpl/aux_/config/typeof.hpp b/src/boost/boost/mpl/aux_/config/typeof.hpp deleted file mode 100644 index deba10626..000000000 --- a/src/boost/boost/mpl/aux_/config/typeof.hpp +++ /dev/null @@ -1,38 +0,0 @@ - -#ifndef BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED -#define BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include - -#if !defined(BOOST_MPL_CFG_HAS_TYPEOF) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && ( defined(BOOST_MPL_CFG_GCC) && BOOST_MPL_CFG_GCC >= 0x0302 \ - || defined(__MWERKS__) && __MWERKS__ >= 0x3000 \ - ) - -# define BOOST_MPL_CFG_HAS_TYPEOF - -#endif - - -#if !defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && defined(BOOST_MPL_CFG_HAS_TYPEOF) - -# define BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -#endif - -#endif // BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/contains_impl.hpp b/src/boost/boost/mpl/aux_/contains_impl.hpp deleted file mode 100644 index 54ede3106..000000000 --- a/src/boost/boost/mpl/aux_/contains_impl.hpp +++ /dev/null @@ -1,61 +0,0 @@ - -#ifndef BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED - -// Copyright Eric Friedman 2002 -// Copyright Aleksey Gurtovoy 2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace mpl { - -template< typename Tag > -struct contains_impl -{ - template< typename Sequence, typename T > struct apply -#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : not_< is_same< - typename find::type - , typename end::type - > > - { -#else - { - typedef not_< is_same< - typename find::type - , typename end::type - > > type; - - BOOST_STATIC_CONSTANT(bool, value = - (not_< is_same< - typename find::type - , typename end::type - > >::value) - ); -#endif - }; -}; - -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2,contains_impl) - -}} - -#endif // BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/find_if_pred.hpp b/src/boost/boost/mpl/aux_/find_if_pred.hpp deleted file mode 100644 index 42eef1926..000000000 --- a/src/boost/boost/mpl/aux_/find_if_pred.hpp +++ /dev/null @@ -1,31 +0,0 @@ - -#ifndef BOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED -#define BOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// Copyright Eric Friedman 2002 -// -// 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/libs/mpl for documentation. - -#include -#include - -namespace boost { namespace mpl { namespace aux { - -template< typename Predicate > -struct find_if_pred -{ - template< typename Iterator > - struct apply - { - typedef not_< aux::iter_apply1 > type; - }; -}; - -}}} - -#endif // BOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/fold_impl.hpp b/src/boost/boost/mpl/aux_/fold_impl.hpp deleted file mode 100644 index 51a77f996..000000000 --- a/src/boost/boost/mpl/aux_/fold_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -# include -# include -# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -# include -# include -# endif -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER fold_impl.hpp -# include - -#else - -# define AUX778076_FOLD_IMPL_OP(iter) typename deref::type -# define AUX778076_FOLD_IMPL_NAME_PREFIX fold -# include - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS -#endif // BOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/fold_impl_body.hpp b/src/boost/boost/mpl/aux_/fold_impl_body.hpp deleted file mode 100644 index 4fca05cf0..000000000 --- a/src/boost/boost/mpl/aux_/fold_impl_body.hpp +++ /dev/null @@ -1,365 +0,0 @@ - -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION - -#if !defined(BOOST_PP_IS_ITERATING) - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -# include -# include -# include -# include -# include -# include - -# include -# include -# include - -// local macros, #undef-ined at the end of the header - -# define AUX778076_ITER_FOLD_STEP(unused, i, unused2) \ - typedef typename apply2< \ - ForwardOp \ - , BOOST_PP_CAT(state,i) \ - , AUX778076_FOLD_IMPL_OP(BOOST_PP_CAT(iter,i)) \ - >::type BOOST_PP_CAT(state,BOOST_PP_INC(i)); \ - typedef typename mpl::next::type \ - BOOST_PP_CAT(iter,BOOST_PP_INC(i)); \ - /**/ - -# define AUX778076_FOLD_IMPL_NAME \ - BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_impl) \ - /**/ - -# define AUX778076_FOLD_CHUNK_NAME \ - BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_chunk) \ - /**/ - -namespace boost { namespace mpl { namespace aux { - -/// forward declaration -template< - BOOST_MPL_AUX_NTTP_DECL(int, N) - , typename First - , typename Last - , typename State - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME; - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -# if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(0, BOOST_MPL_LIMIT_UNROLLING, )) -# include BOOST_PP_ITERATE() - -// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING -template< - BOOST_MPL_AUX_NTTP_DECL(int, N) - , typename First - , typename Last - , typename State - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME -{ - typedef AUX778076_FOLD_IMPL_NAME< - BOOST_MPL_LIMIT_UNROLLING - , First - , Last - , State - , ForwardOp - > chunk_; - - typedef AUX778076_FOLD_IMPL_NAME< - ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING ) - , typename chunk_::iterator - , Last - , typename chunk_::state - , ForwardOp - > res_; - - typedef typename res_::state state; - typedef typename res_::iterator iterator; -}; - -// fallback implementation for sequences of unknown size -template< - typename First - , typename Last - , typename State - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME<-1,First,Last,State,ForwardOp> - : AUX778076_FOLD_IMPL_NAME< - -1 - , typename mpl::next::type - , Last - , typename apply2::type - , ForwardOp - > -{ -}; - -template< - typename Last - , typename State - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME<-1,Last,Last,State,ForwardOp> -{ - typedef State state; - typedef Last iterator; -}; - -# else // BOOST_WORKAROUND(__BORLANDC__, < 0x600) - -// Borland have some serious problems with the unrolled version, so -// we always use a basic implementation -template< - BOOST_MPL_AUX_NTTP_DECL(int, N) - , typename First - , typename Last - , typename State - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME -{ - typedef AUX778076_FOLD_IMPL_NAME< - -1 - , typename mpl::next::type - , Last - , typename apply2::type - , ForwardOp - > res_; - - typedef typename res_::state state; - typedef typename res_::iterator iterator; - typedef state type; -}; - -template< - BOOST_MPL_AUX_NTTP_DECL(int, N) - , typename Last - , typename State - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME -{ - typedef State state; - typedef Last iterator; - typedef state type; -}; - -# endif // BOOST_WORKAROUND(__BORLANDC__, < 0x600) - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template< BOOST_MPL_AUX_NTTP_DECL(int, N) > -struct AUX778076_FOLD_CHUNK_NAME; - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(0, BOOST_MPL_LIMIT_UNROLLING, )) -# include BOOST_PP_ITERATE() - -// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING -template< BOOST_MPL_AUX_NTTP_DECL(int, N) > -struct AUX778076_FOLD_CHUNK_NAME -{ - template< - typename First - , typename Last - , typename State - , typename ForwardOp - > - struct result_ - { - typedef AUX778076_FOLD_IMPL_NAME< - BOOST_MPL_LIMIT_UNROLLING - , First - , Last - , State - , ForwardOp - > chunk_; - - typedef AUX778076_FOLD_IMPL_NAME< - ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING ) - , typename chunk_::iterator - , Last - , typename chunk_::state - , ForwardOp - > res_; - - typedef typename res_::state state; - typedef typename res_::iterator iterator; - }; -}; - -// fallback implementation for sequences of unknown size -template< - typename First - , typename Last - , typename State - , typename ForwardOp - > -struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step); - -template< - typename Last - , typename State - > -struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step) -{ - typedef Last iterator; - typedef State state; -}; - -template<> -struct AUX778076_FOLD_CHUNK_NAME<-1> -{ - template< - typename First - , typename Last - , typename State - , typename ForwardOp - > - struct result_ - { - typedef typename if_< - typename is_same::type - , BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step) - , BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step) - >::type res_; - - typedef typename res_::state state; - typedef typename res_::iterator iterator; - }; - -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct result_ - { - typedef int state; - typedef int iterator; - }; -#endif -}; - -template< - typename First - , typename Last - , typename State - , typename ForwardOp - > -struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step) -{ - // can't inherit here - it breaks MSVC 7.0 - typedef AUX778076_FOLD_CHUNK_NAME<-1>::template result_< - typename mpl::next::type - , Last - , typename apply2::type - , ForwardOp - > chunk_; - - typedef typename chunk_::state state; - typedef typename chunk_::iterator iterator; -}; - -template< - BOOST_MPL_AUX_NTTP_DECL(int, N) - , typename First - , typename Last - , typename State - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME - : AUX778076_FOLD_CHUNK_NAME - ::template result_ -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -}}} - -# undef AUX778076_FOLD_IMPL_NAME -# undef AUX778076_FOLD_CHUNK_NAME -# undef AUX778076_ITER_FOLD_STEP - -#undef AUX778076_FOLD_IMPL_OP -#undef AUX778076_FOLD_IMPL_NAME_PREFIX - -///// iteration - -#else - -# define n_ BOOST_PP_FRAME_ITERATION(1) - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template< - typename First - , typename Last - , typename State - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME -{ - typedef First iter0; - typedef State state0; - - BOOST_MPL_PP_REPEAT(n_, AUX778076_ITER_FOLD_STEP, unused) - - typedef BOOST_PP_CAT(state,n_) state; - typedef BOOST_PP_CAT(iter,n_) iterator; -}; - -#else - -template<> struct AUX778076_FOLD_CHUNK_NAME -{ - template< - typename First - , typename Last - , typename State - , typename ForwardOp - > - struct result_ - { - typedef First iter0; - typedef State state0; - - BOOST_MPL_PP_REPEAT(n_, AUX778076_ITER_FOLD_STEP, unused) - - typedef BOOST_PP_CAT(state,n_) state; - typedef BOOST_PP_CAT(iter,n_) iterator; - }; - -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct result_ - { - typedef int state; - typedef int iterator; - }; -#endif -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -# undef n_ - -#endif // BOOST_PP_IS_ITERATING diff --git a/src/boost/boost/mpl/aux_/has_begin.hpp b/src/boost/boost/mpl/aux_/has_begin.hpp deleted file mode 100644 index 1408f9fca..000000000 --- a/src/boost/boost/mpl/aux_/has_begin.hpp +++ /dev/null @@ -1,23 +0,0 @@ - -#ifndef BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED -#define BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2002-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include - -namespace boost { namespace mpl { namespace aux { -BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_begin, begin, true) -}}} - -#endif // BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/has_rebind.hpp b/src/boost/boost/mpl/aux_/has_rebind.hpp index 9a1e1e19e..0a620e166 100644 --- a/src/boost/boost/mpl/aux_/has_rebind.hpp +++ b/src/boost/boost/mpl/aux_/has_rebind.hpp @@ -25,7 +25,7 @@ # include # include # include -#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) +#elif BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) # include # include # include @@ -62,7 +62,7 @@ struct has_rebind template< typename T > struct has_rebind_tag {}; no_tag operator|(has_rebind_tag, void const volatile*); -# if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) +# if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) template< typename T > struct has_rebind { @@ -71,7 +71,7 @@ struct has_rebind sizeof(has_rebind_tag() | get()) == sizeof(yes_tag) ); }; -# else // __BORLANDC__ +# else // BOOST_BORLANDC template< typename T > struct has_rebind_impl { @@ -90,7 +90,7 @@ struct has_rebind >::type { }; -# endif // __BORLANDC__ +# endif // BOOST_BORLANDC #endif diff --git a/src/boost/boost/mpl/aux_/has_size.hpp b/src/boost/boost/mpl/aux_/has_size.hpp deleted file mode 100644 index 070fea35e..000000000 --- a/src/boost/boost/mpl/aux_/has_size.hpp +++ /dev/null @@ -1,23 +0,0 @@ - -#ifndef BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED -#define BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2002-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include - -namespace boost { namespace mpl { namespace aux { -BOOST_MPL_HAS_XXX_TRAIT_DEF(size) -}}} - -#endif // BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/inserter_algorithm.hpp b/src/boost/boost/mpl/aux_/inserter_algorithm.hpp deleted file mode 100644 index 2dcbfaa82..000000000 --- a/src/boost/boost/mpl/aux_/inserter_algorithm.hpp +++ /dev/null @@ -1,159 +0,0 @@ - -#ifndef BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED -#define BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -# define BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(arity, name) \ -BOOST_MPL_AUX_COMMON_NAME_WKND(name) \ -template< \ - BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \ - > \ -struct name \ - : aux::name##_impl \ -{ \ -}; \ -\ -template< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \ - > \ -struct name< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P),na > \ - : if_< has_push_back< typename clear::type> \ - , aux::name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , back_inserter< typename clear::type > \ - > \ - , aux::reverse_##name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , front_inserter< typename clear::type > \ - > \ - >::type \ -{ \ -}; \ -\ -template< \ - BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \ - > \ -struct reverse_##name \ - : aux::reverse_##name##_impl \ -{ \ -}; \ -\ -template< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \ - > \ -struct reverse_##name< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P),na > \ - : if_< has_push_back \ - , aux::reverse_##name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , back_inserter< typename clear::type > \ - > \ - , aux::name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , front_inserter< typename clear::type > \ - > \ - >::type \ -{ \ -}; \ -BOOST_MPL_AUX_NA_SPEC(arity, name) \ -BOOST_MPL_AUX_NA_SPEC(arity, reverse_##name) \ -/**/ - -#else - -# define BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(arity, name) \ -BOOST_MPL_AUX_COMMON_NAME_WKND(name) \ -template< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \ - > \ -struct def_##name##_impl \ - : if_< has_push_back \ - , aux::name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , back_inserter< typename clear::type > \ - > \ - , aux::reverse_##name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , front_inserter< typename clear::type > \ - > \ - >::type \ -{ \ -}; \ -\ -template< \ - BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \ - > \ -struct name \ -{ \ - typedef typename eval_if< \ - is_na \ - , def_##name##_impl \ - , aux::name##_impl \ - >::type type; \ -}; \ -\ -template< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \ - > \ -struct def_reverse_##name##_impl \ - : if_< has_push_back \ - , aux::reverse_##name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , back_inserter< typename clear::type > \ - > \ - , aux::name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , front_inserter< typename clear::type > \ - > \ - >::type \ -{ \ -}; \ -template< \ - BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \ - > \ -struct reverse_##name \ -{ \ - typedef typename eval_if< \ - is_na \ - , def_reverse_##name##_impl \ - , aux::reverse_##name##_impl \ - >::type type; \ -}; \ -BOOST_MPL_AUX_NA_SPEC(arity, name) \ -BOOST_MPL_AUX_NA_SPEC(arity, reverse_##name) \ -/**/ - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#endif // BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/integral_wrapper.hpp b/src/boost/boost/mpl/aux_/integral_wrapper.hpp index 73f0c109a..7e8c86260 100644 --- a/src/boost/boost/mpl/aux_/integral_wrapper.hpp +++ b/src/boost/boost/mpl/aux_/integral_wrapper.hpp @@ -63,7 +63,7 @@ struct AUX_WRAPPER_NAME public: typedef AUX_WRAPPER_INST(next_value) next; typedef AUX_WRAPPER_INST(prior_value) prior; -#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \ +#elif BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x561)) \ || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \ || (BOOST_WORKAROUND(__HP_aCC, <= 53800) && (BOOST_WORKAROUND(__hpxstd98, != 1))) typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)) ) next; diff --git a/src/boost/boost/mpl/aux_/iter_apply.hpp b/src/boost/boost/mpl/aux_/iter_apply.hpp deleted file mode 100644 index b999b4038..000000000 --- a/src/boost/boost/mpl/aux_/iter_apply.hpp +++ /dev/null @@ -1,47 +0,0 @@ - -#ifndef BOOST_MPL_ITER_APPLY_HPP_INCLUDED -#define BOOST_MPL_ITER_APPLY_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2002-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { namespace aux { - -template< - typename F - , typename Iterator - > -struct iter_apply1 - : apply1< F,typename deref::type > -{ -}; - -template< - typename F - , typename Iterator1 - , typename Iterator2 - > -struct iter_apply2 - : apply2< - F - , typename deref::type - , typename deref::type - > -{ -}; - -}}} - -#endif // BOOST_MPL_ITER_APPLY_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/iter_fold_if_impl.hpp b/src/boost/boost/mpl/aux_/iter_fold_if_impl.hpp deleted file mode 100644 index 7ad159c88..000000000 --- a/src/boost/boost/mpl/aux_/iter_fold_if_impl.hpp +++ /dev/null @@ -1,210 +0,0 @@ - -#ifndef BOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// Copyright David Abrahams 2001-2002 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -# include -# include -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER iter_fold_if_impl.hpp -# include - -#else - -# include -# include -# include -# include -# include -# include - -namespace boost { namespace mpl { namespace aux { - -template< typename Iterator, typename State > -struct iter_fold_if_null_step -{ - typedef State state; - typedef Iterator iterator; -}; - -template< bool > -struct iter_fold_if_step_impl -{ - template< - typename Iterator - , typename State - , typename StateOp - , typename IteratorOp - > - struct result_ - { - typedef typename apply2::type state; - typedef typename IteratorOp::type iterator; - }; -}; - -template<> -struct iter_fold_if_step_impl -{ - template< - typename Iterator - , typename State - , typename StateOp - , typename IteratorOp - > - struct result_ - { - typedef State state; - typedef Iterator iterator; - }; -}; - -// agurt, 25/jun/02: MSVC 6.5 workaround, had to get rid of inheritance -// here and in 'iter_fold_if_backward_step', because sometimes it interfered -// with the "early template instantiation bug" in _really_ ugly ways -template< - typename Iterator - , typename State - , typename ForwardOp - , typename Predicate - > -struct iter_fold_if_forward_step -{ - typedef typename apply2::type not_last; - typedef typename iter_fold_if_step_impl< - BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value - >::template result_< Iterator,State,ForwardOp,mpl::next > impl_; - - typedef typename impl_::state state; - typedef typename impl_::iterator iterator; -}; - -template< - typename Iterator - , typename State - , typename BackwardOp - , typename Predicate - > -struct iter_fold_if_backward_step -{ - typedef typename apply2::type not_last; - typedef typename iter_fold_if_step_impl< - BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value - >::template result_< Iterator,State,BackwardOp,identity > impl_; - - typedef typename impl_::state state; - typedef typename impl_::iterator iterator; -}; - - -// local macros, #undef-ined at the end of the header - -# define AUX_ITER_FOLD_FORWARD_STEP(unused, i, unused2) \ - typedef iter_fold_if_forward_step< \ - typename BOOST_PP_CAT(forward_step,i)::iterator \ - , typename BOOST_PP_CAT(forward_step,i)::state \ - , ForwardOp \ - , ForwardPredicate \ - > BOOST_PP_CAT(forward_step, BOOST_PP_INC(i)); \ - /**/ - -# define AUX_ITER_FOLD_BACKWARD_STEP_FUNC(i) \ - typedef iter_fold_if_backward_step< \ - typename BOOST_PP_CAT(forward_step,BOOST_PP_DEC(i))::iterator \ - , typename BOOST_PP_CAT(backward_step,i)::state \ - , BackwardOp \ - , BackwardPredicate \ - > BOOST_PP_CAT(backward_step,BOOST_PP_DEC(i)); \ - /**/ - -# define AUX_ITER_FOLD_BACKWARD_STEP(unused, i, unused2) \ - AUX_ITER_FOLD_BACKWARD_STEP_FUNC( \ - BOOST_PP_SUB_D(1,BOOST_MPL_LIMIT_UNROLLING,i) \ - ) \ - /**/ - -# define AUX_LAST_FORWARD_STEP \ - BOOST_PP_CAT(forward_step, BOOST_MPL_LIMIT_UNROLLING) \ - /**/ - -# define AUX_LAST_BACKWARD_STEP \ - BOOST_PP_CAT(backward_step, BOOST_MPL_LIMIT_UNROLLING) \ - /**/ - -template< - typename Iterator - , typename State - , typename ForwardOp - , typename ForwardPredicate - , typename BackwardOp - , typename BackwardPredicate - > -struct iter_fold_if_impl -{ - private: - typedef iter_fold_if_null_step forward_step0; - BOOST_PP_REPEAT( - BOOST_MPL_LIMIT_UNROLLING - , AUX_ITER_FOLD_FORWARD_STEP - , unused - ) - - typedef typename if_< - typename AUX_LAST_FORWARD_STEP::not_last - , iter_fold_if_impl< - typename AUX_LAST_FORWARD_STEP::iterator - , typename AUX_LAST_FORWARD_STEP::state - , ForwardOp - , ForwardPredicate - , BackwardOp - , BackwardPredicate - > - , iter_fold_if_null_step< - typename AUX_LAST_FORWARD_STEP::iterator - , typename AUX_LAST_FORWARD_STEP::state - > - >::type AUX_LAST_BACKWARD_STEP; - - BOOST_PP_REPEAT( - BOOST_MPL_LIMIT_UNROLLING - , AUX_ITER_FOLD_BACKWARD_STEP - , unused - ) - - public: - typedef typename backward_step0::state state; - typedef typename AUX_LAST_BACKWARD_STEP::iterator iterator; -}; - -# undef AUX_LAST_BACKWARD_STEP -# undef AUX_LAST_FORWARD_STEP -# undef AUX_ITER_FOLD_BACKWARD_STEP -# undef AUX_ITER_FOLD_BACKWARD_STEP_FUNC -# undef AUX_ITER_FOLD_FORWARD_STEP - -}}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS -#endif // BOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/iter_fold_impl.hpp b/src/boost/boost/mpl/aux_/iter_fold_impl.hpp deleted file mode 100644 index a211545fc..000000000 --- a/src/boost/boost/mpl/aux_/iter_fold_impl.hpp +++ /dev/null @@ -1,42 +0,0 @@ - -#ifndef BOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -# include -# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -# include -# include -# endif -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER iter_fold_impl.hpp -# include - -#else - -# define AUX778076_FOLD_IMPL_OP(iter) iter -# define AUX778076_FOLD_IMPL_NAME_PREFIX iter_fold -# include - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS -#endif // BOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/lambda_spec.hpp b/src/boost/boost/mpl/aux_/lambda_spec.hpp deleted file mode 100644 index c58bf5d51..000000000 --- a/src/boost/boost/mpl/aux_/lambda_spec.hpp +++ /dev/null @@ -1,49 +0,0 @@ - -#ifndef BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED -#define BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2007 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) - -# define BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(i, name) \ -template< \ - BOOST_MPL_PP_PARAMS(i, typename T) \ - , typename Tag \ - > \ -struct lambda< \ - name< BOOST_MPL_PP_PARAMS(i, T) > \ - , Tag \ - BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_) \ - > \ -{ \ - typedef false_ is_le; \ - typedef name< BOOST_MPL_PP_PARAMS(i, T) > result_; \ - typedef result_ type; \ -}; \ -/**/ - -#else - -# define BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(i, name) /**/ - -#endif - -#endif // BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/lambda_support.hpp b/src/boost/boost/mpl/aux_/lambda_support.hpp index 8b7610f2a..2f91f7cee 100644 --- a/src/boost/boost/mpl/aux_/lambda_support.hpp +++ b/src/boost/boost/mpl/aux_/lambda_support.hpp @@ -110,7 +110,7 @@ template< typename T > struct has_rebind_tag; typedef BOOST_PP_CAT(name,_rebind) rebind; \ /**/ -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) # define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \ template< BOOST_MPL_PP_PARAMS(i,typename T) > \ ::boost::mpl::aux::yes_tag operator|( \ @@ -134,7 +134,7 @@ ::boost::mpl::aux::yes_tag operator|( \ # define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) /**/ #endif -# if !defined(__BORLANDC__) +# if !defined(BOOST_BORLANDC) # define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \ }; \ @@ -160,7 +160,7 @@ class BOOST_PP_CAT(name,_rebind) \ typedef typename name< BOOST_MPL_PP_PARAMS(i,U) >::type type; \ }; \ /**/ -# endif // __BORLANDC__ +# endif // BOOST_BORLANDC #endif // __EDG_VERSION__ diff --git a/src/boost/boost/mpl/aux_/msvc_type.hpp b/src/boost/boost/mpl/aux_/msvc_type.hpp deleted file mode 100644 index a4f9b4538..000000000 --- a/src/boost/boost/mpl/aux_/msvc_type.hpp +++ /dev/null @@ -1,62 +0,0 @@ - -#ifndef BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED -#define BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { namespace aux { - -#if defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) - -template< bool > struct msvc_type_impl -{ - template< typename T > struct result_ - { - typedef typename T::type type; - }; -}; - -template<> struct msvc_type_impl -{ - template< typename T > struct result_ - { - typedef result_ type; - }; -}; - -template< typename T > struct msvc_type - : msvc_type_impl< is_msvc_eti_arg::value > - ::template result_ -{ -}; - -#else // BOOST_MPL_CFG_MSVC_70_ETI_BUG - -template< typename T > struct msvc_type -{ - typedef typename T::type type; -}; - -template<> struct msvc_type -{ - typedef int type; -}; - -#endif - -}}} - -#endif // BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/nested_type_wknd.hpp b/src/boost/boost/mpl/aux_/nested_type_wknd.hpp index 00a99a80f..512524c7d 100644 --- a/src/boost/boost/mpl/aux_/nested_type_wknd.hpp +++ b/src/boost/boost/mpl/aux_/nested_type_wknd.hpp @@ -18,7 +18,7 @@ #include #if BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \ + || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x561)) \ || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x530)) \ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) diff --git a/src/boost/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp b/src/boost/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp index 07d7f08b6..7d1eda845 100644 --- a/src/boost/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +++ b/src/boost/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp @@ -12,7 +12,7 @@ namespace boost { namespace mpl { namespace aux { template< int N > struct arity_tag { - typedef char (&type)[N + 1]; + typedef char (&type)[(unsigned)N + 1]; }; template< diff --git a/src/boost/boost/mpl/aux_/preprocessor/enum.hpp b/src/boost/boost/mpl/aux_/preprocessor/enum.hpp index b43b8c9d1..5f99e967d 100644 --- a/src/boost/boost/mpl/aux_/preprocessor/enum.hpp +++ b/src/boost/boost/mpl/aux_/preprocessor/enum.hpp @@ -29,6 +29,10 @@ BOOST_PP_CAT(BOOST_MPL_PP_ENUM_,n)(param) \ /**/ +# define BOOST_MPL_PP_ENUM_Z(z_ignored, n, param) \ + BOOST_PP_CAT(BOOST_MPL_PP_ENUM_,n)(param) \ + /**/ + # define BOOST_MPL_PP_ENUM_0(p) # define BOOST_MPL_PP_ENUM_1(p) p # define BOOST_MPL_PP_ENUM_2(p) p,p @@ -57,6 +61,14 @@ ) \ /**/ +# define BOOST_MPL_PP_ENUM_Z(z, n, param) \ + BOOST_PP_REPEAT_ ## z( \ + n \ + , BOOST_MPL_PP_AUX_ENUM_FUNC \ + , param \ + ) \ + /**/ + #endif #endif // BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/preprocessor/params.hpp b/src/boost/boost/mpl/aux_/preprocessor/params.hpp index f77b7a9fe..c7fdd0868 100644 --- a/src/boost/boost/mpl/aux_/preprocessor/params.hpp +++ b/src/boost/boost/mpl/aux_/preprocessor/params.hpp @@ -29,6 +29,10 @@ BOOST_PP_CAT(BOOST_MPL_PP_PARAMS_,n)(p) \ /**/ +# define BOOST_MPL_PP_PARAMS_Z(z_ignored,n,p) \ + BOOST_PP_CAT(BOOST_MPL_PP_PARAMS_,n)(p) \ + /**/ + # define BOOST_MPL_PP_PARAMS_0(p) # define BOOST_MPL_PP_PARAMS_1(p) p##1 # define BOOST_MPL_PP_PARAMS_2(p) p##1,p##2 @@ -60,6 +64,14 @@ ) \ /**/ +# define BOOST_MPL_PP_PARAMS_Z(z, n, param) \ + BOOST_PP_REPEAT_ ## z( \ + n \ + , BOOST_MPL_PP_AUX_PARAM_FUNC \ + , param \ + ) \ + /**/ + #endif #endif // BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/push_back_impl.hpp b/src/boost/boost/mpl/aux_/push_back_impl.hpp deleted file mode 100644 index ec629ed85..000000000 --- a/src/boost/boost/mpl/aux_/push_back_impl.hpp +++ /dev/null @@ -1,70 +0,0 @@ - -#ifndef BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2008 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace mpl { - -struct has_push_back_arg {}; - -// agurt 05/feb/04: no default implementation; the stub definition is needed -// to enable the default 'has_push_back' implementation below -template< typename Tag > -struct push_back_impl -{ - template< typename Sequence, typename T > struct apply - { - // should be instantiated only in the context of 'has_push_back_impl'; - // if you've got an assert here, you are requesting a 'push_back' - // specialization that doesn't exist. - BOOST_MPL_ASSERT_MSG( - ( boost::is_same< T, has_push_back_arg >::value ) - , REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST - , ( Sequence ) - ); - }; -}; - -template< typename Tag > -struct has_push_back_impl -{ - template< typename Seq > struct apply -#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : aux::has_type< push_back< Seq, has_push_back_arg > > - { -#else - { - typedef aux::has_type< push_back< Seq, has_push_back_arg > > type; - BOOST_STATIC_CONSTANT(bool, value = - (aux::has_type< push_back< Seq, has_push_back_arg > >::value) - ); -#endif - }; -}; - -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, push_back_impl) -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, has_push_back_impl) - -}} - -#endif // BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/push_front_impl.hpp b/src/boost/boost/mpl/aux_/push_front_impl.hpp deleted file mode 100644 index 08f8e84ab..000000000 --- a/src/boost/boost/mpl/aux_/push_front_impl.hpp +++ /dev/null @@ -1,71 +0,0 @@ - -#ifndef BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2008 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace mpl { - -struct has_push_front_arg {}; - -// agurt 05/feb/04: no default implementation; the stub definition is needed -// to enable the default 'has_push_front' implementation below - -template< typename Tag > -struct push_front_impl -{ - template< typename Sequence, typename T > struct apply - { - // should be instantiated only in the context of 'has_push_front_impl'; - // if you've got an assert here, you are requesting a 'push_front' - // specialization that doesn't exist. - BOOST_MPL_ASSERT_MSG( - ( boost::is_same< T, has_push_front_arg >::value ) - , REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST - , ( Sequence ) - ); - }; -}; - -template< typename Tag > -struct has_push_front_impl -{ - template< typename Seq > struct apply -#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : aux::has_type< push_front< Seq, has_push_front_arg > > - { -#else - { - typedef aux::has_type< push_front< Seq, has_push_front_arg > > type; - BOOST_STATIC_CONSTANT(bool, value = - (aux::has_type< push_front< Seq, has_push_front_arg > >::value) - ); -#endif - }; -}; - -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, push_front_impl) -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, has_push_front_impl) - -}} - -#endif // BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/reverse_fold_impl.hpp b/src/boost/boost/mpl/aux_/reverse_fold_impl.hpp deleted file mode 100644 index 198a69db5..000000000 --- a/src/boost/boost/mpl/aux_/reverse_fold_impl.hpp +++ /dev/null @@ -1,44 +0,0 @@ - -#ifndef BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -# include -# include -# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) -# include -# include -# endif -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER reverse_fold_impl.hpp -# include - -#else - -# define AUX778076_FOLD_IMPL_OP(iter) typename deref::type -# define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_fold -# include - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS -#endif // BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/reverse_fold_impl_body.hpp b/src/boost/boost/mpl/aux_/reverse_fold_impl_body.hpp deleted file mode 100644 index e011f1734..000000000 --- a/src/boost/boost/mpl/aux_/reverse_fold_impl_body.hpp +++ /dev/null @@ -1,412 +0,0 @@ - -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION! - -#if !defined(BOOST_PP_IS_ITERATING) - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -# include -# include -# include -# include - -# include -# include -# include -# include -# include - -// local macros, #undef-ined at the end of the header - -# define AUX778076_ITER_FOLD_FORWARD_STEP(unused, n_, unused2) \ - typedef typename apply2< \ - ForwardOp \ - , BOOST_PP_CAT(fwd_state,n_) \ - , AUX778076_FOLD_IMPL_OP(BOOST_PP_CAT(iter,n_)) \ - >::type BOOST_PP_CAT(fwd_state,BOOST_PP_INC(n_)); \ - typedef typename mpl::next::type \ - BOOST_PP_CAT(iter,BOOST_PP_INC(n_)); \ - /**/ - -# define AUX778076_ITER_FOLD_BACKWARD_STEP_FUNC(n_) \ - typedef typename apply2< \ - BackwardOp \ - , BOOST_PP_CAT(bkwd_state,n_) \ - , AUX778076_FOLD_IMPL_OP(BOOST_PP_CAT(iter,BOOST_PP_DEC(n_))) \ - >::type BOOST_PP_CAT(bkwd_state,BOOST_PP_DEC(n_)); \ - /**/ - -# define AUX778076_ITER_FOLD_BACKWARD_STEP(unused, n_, j) \ - AUX778076_ITER_FOLD_BACKWARD_STEP_FUNC( \ - BOOST_PP_SUB_D(1,j,n_) \ - ) \ - /**/ - -# define AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(n_) \ - typedef typename nested_chunk::state BOOST_PP_CAT(bkwd_state,n_); - /**/ - -# define AUX778076_FOLD_IMPL_NAME \ - BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_impl) \ - /**/ - -# define AUX778076_FOLD_CHUNK_NAME \ - BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_chunk) \ - /**/ - -namespace boost { namespace mpl { namespace aux { - -/// forward declaration -template< - BOOST_MPL_AUX_NTTP_DECL(long, N) - , typename First - , typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME; - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(0, BOOST_MPL_LIMIT_UNROLLING, )) -# include BOOST_PP_ITERATE() - -// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING -template< - BOOST_MPL_AUX_NTTP_DECL(long, N) - , typename First - , typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME -{ - typedef First iter0; - typedef State fwd_state0; - - BOOST_MPL_PP_REPEAT( - BOOST_MPL_LIMIT_UNROLLING - , AUX778076_ITER_FOLD_FORWARD_STEP - , unused - ) - - typedef AUX778076_FOLD_IMPL_NAME< - ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING ) - , BOOST_PP_CAT(iter,BOOST_MPL_LIMIT_UNROLLING) - , Last - , BOOST_PP_CAT(fwd_state,BOOST_MPL_LIMIT_UNROLLING) - , BackwardOp - , ForwardOp - > nested_chunk; - - AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(BOOST_MPL_LIMIT_UNROLLING) - - BOOST_MPL_PP_REPEAT( - BOOST_MPL_LIMIT_UNROLLING - , AUX778076_ITER_FOLD_BACKWARD_STEP - , BOOST_MPL_LIMIT_UNROLLING - ) - - typedef bkwd_state0 state; - typedef typename nested_chunk::iterator iterator; -}; - -// fallback implementation for sequences of unknown size -template< - typename First - , typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME<-1,First,Last,State,BackwardOp,ForwardOp> -{ - typedef AUX778076_FOLD_IMPL_NAME< - -1 - , typename mpl::next::type - , Last - , typename apply2::type - , BackwardOp - , ForwardOp - > nested_step; - - typedef typename apply2< - BackwardOp - , typename nested_step::state - , AUX778076_FOLD_IMPL_OP(First) - >::type state; - - typedef typename nested_step::iterator iterator; -}; - -template< - typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME<-1,Last,Last,State,BackwardOp,ForwardOp> -{ - typedef State state; - typedef Last iterator; -}; - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template< BOOST_MPL_AUX_NTTP_DECL(long, N) > -struct AUX778076_FOLD_CHUNK_NAME; - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(0, BOOST_MPL_LIMIT_UNROLLING, )) -# include BOOST_PP_ITERATE() - -// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING -template< BOOST_MPL_AUX_NTTP_DECL(long, N) > -struct AUX778076_FOLD_CHUNK_NAME -{ - template< - typename First - , typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > - struct result_ - { - typedef First iter0; - typedef State fwd_state0; - - BOOST_MPL_PP_REPEAT( - BOOST_MPL_LIMIT_UNROLLING - , AUX778076_ITER_FOLD_FORWARD_STEP - , unused - ) - - typedef AUX778076_FOLD_IMPL_NAME< - ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING ) - , BOOST_PP_CAT(iter,BOOST_MPL_LIMIT_UNROLLING) - , Last - , BOOST_PP_CAT(fwd_state,BOOST_MPL_LIMIT_UNROLLING) - , BackwardOp - , ForwardOp - > nested_chunk; - - AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(BOOST_MPL_LIMIT_UNROLLING) - - BOOST_MPL_PP_REPEAT( - BOOST_MPL_LIMIT_UNROLLING - , AUX778076_ITER_FOLD_BACKWARD_STEP - , BOOST_MPL_LIMIT_UNROLLING - ) - - typedef bkwd_state0 state; - typedef typename nested_chunk::iterator iterator; - }; -}; - -// fallback implementation for sequences of unknown size -template< - typename First - , typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > -struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step); - -template< - typename Last - , typename State - > -struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step) -{ - typedef Last iterator; - typedef State state; -}; - -template<> -struct AUX778076_FOLD_CHUNK_NAME<-1> -{ - template< - typename First - , typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > - struct result_ - { - typedef typename if_< - typename is_same::type - , BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step) - , BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step) - >::type res_; - - typedef typename res_::state state; - typedef typename res_::iterator iterator; - }; - -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct result_ - { - typedef int state; - typedef int iterator; - }; -#endif -}; - -template< - typename First - , typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > -struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step) -{ - typedef AUX778076_FOLD_CHUNK_NAME<-1>::template result_< - typename mpl::next::type - , Last - , typename apply2::type - , BackwardOp - , ForwardOp - > nested_step; - - typedef typename apply2< - BackwardOp - , typename nested_step::state - , AUX778076_FOLD_IMPL_OP(First) - >::type state; - - typedef typename nested_step::iterator iterator; -}; - -template< - BOOST_MPL_AUX_NTTP_DECL(long, N) - , typename First - , typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME - : AUX778076_FOLD_CHUNK_NAME - ::template result_ -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -}}} - -# undef AUX778076_FIRST_BACKWARD_STATE_TYPEDEF -# undef AUX778076_ITER_FOLD_BACKWARD_STEP -# undef AUX778076_ITER_FOLD_BACKWARD_STEP_FUNC -# undef AUX778076_ITER_FOLD_FORWARD_STEP - -#undef AUX778076_FOLD_IMPL_OP -#undef AUX778076_FOLD_IMPL_NAME_PREFIX - -///// iteration - -#else - -# define n_ BOOST_PP_FRAME_ITERATION(1) - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) - -template< - typename First - , typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME -{ - typedef First iter0; - typedef State fwd_state0; - - BOOST_MPL_PP_REPEAT( - n_ - , AUX778076_ITER_FOLD_FORWARD_STEP - , unused - ) - - typedef BOOST_PP_CAT(fwd_state,n_) BOOST_PP_CAT(bkwd_state,n_); - - BOOST_MPL_PP_REPEAT( - n_ - , AUX778076_ITER_FOLD_BACKWARD_STEP - , n_ - ) - - typedef bkwd_state0 state; - typedef BOOST_PP_CAT(iter,n_) iterator; -}; - -#else - -template<> struct AUX778076_FOLD_CHUNK_NAME -{ - template< - typename First - , typename Last - , typename State - , typename BackwardOp - , typename ForwardOp - > - struct result_ - { - typedef First iter0; - typedef State fwd_state0; - - BOOST_MPL_PP_REPEAT( - n_ - , AUX778076_ITER_FOLD_FORWARD_STEP - , unused - ) - - typedef BOOST_PP_CAT(fwd_state,n_) BOOST_PP_CAT(bkwd_state,n_); - - BOOST_MPL_PP_REPEAT( - n_ - , AUX778076_ITER_FOLD_BACKWARD_STEP - , n_ - ) - - typedef bkwd_state0 state; - typedef BOOST_PP_CAT(iter,n_) iterator; - }; - -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct result_ - { - typedef int state; - typedef int iterator; - }; -#endif -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -# undef n_ - -#endif // BOOST_PP_IS_ITERATING diff --git a/src/boost/boost/mpl/aux_/sequence_wrapper.hpp b/src/boost/boost/mpl/aux_/sequence_wrapper.hpp deleted file mode 100644 index 104a7acc8..000000000 --- a/src/boost/boost/mpl/aux_/sequence_wrapper.hpp +++ /dev/null @@ -1,292 +0,0 @@ - -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION - -#if !defined(BOOST_PP_IS_ITERATING) - -///// header body - -// Copyright Aleksey Gurtovoy 2000-2008 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -# include -# include -# include - -# include -# include -# include -# include -# include -# include -# include -# include - -#if defined(BOOST_MPL_PREPROCESSING_MODE) -# undef LONG_MAX -#endif - -namespace boost { namespace mpl { - -#if !defined(AUX778076_SEQUENCE_BASE_NAME) -# define AUX778076_SEQUENCE_BASE_NAME AUX778076_SEQUENCE_NAME -#endif - -#if !defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER) - -# define AUX778076_SEQUENCE_PARAM_NAME T -# define AUX778076_SEQUENCE_TEMPLATE_PARAM typename T -# define AUX778076_SEQUENCE_DEFAULT na - -# define AUX778076_SEQUENCE_NAME_N(n) \ - BOOST_PP_CAT(AUX778076_SEQUENCE_BASE_NAME,n) \ - /**/ - -# define AUX778076_SEQUENCE_PARAMS() \ - BOOST_PP_ENUM_PARAMS( \ - AUX778076_SEQUENCE_LIMIT \ - , AUX778076_SEQUENCE_TEMPLATE_PARAM \ - ) \ - /**/ - -# define AUX778076_SEQUENCE_ARGS() \ - BOOST_PP_ENUM_PARAMS( \ - AUX778076_SEQUENCE_LIMIT \ - , T \ - ) \ - /**/ - -# define AUX778076_SEQUENCE_DEFAULT_PARAMS() \ - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \ - AUX778076_SEQUENCE_LIMIT \ - , AUX778076_SEQUENCE_TEMPLATE_PARAM \ - , AUX778076_SEQUENCE_DEFAULT \ - ) \ - /**/ - -# define AUX778076_SEQUENCE_N_PARAMS(n) \ - BOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \ - /**/ - -# define AUX778076_SEQUENCE_N_ARGS(n) \ - BOOST_PP_ENUM_PARAMS(n, T) \ - /**/ - -# define AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(n) \ - BOOST_PP_ENUM_PARAMS(n, T) \ - BOOST_PP_COMMA_IF(n) \ - BOOST_PP_ENUM( \ - BOOST_PP_SUB_D(1,AUX778076_SEQUENCE_LIMIT,n) \ - , BOOST_PP_TUPLE_ELEM_3_2 \ - , AUX778076_SEQUENCE_DEFAULT \ - ) \ - /**/ - -#else // AUX778076_SEQUENCE_INTEGRAL_WRAPPER - -# define AUX778076_SEQUENCE_PARAM_NAME C -# define AUX778076_SEQUENCE_TEMPLATE_PARAM BOOST_MPL_AUX_NTTP_DECL(long, C) -# define AUX778076_SEQUENCE_DEFAULT LONG_MAX - -# define AUX778076_SEQUENCE_PARAMS() \ - typename T, BOOST_PP_ENUM_PARAMS( \ - AUX778076_SEQUENCE_LIMIT \ - , AUX778076_SEQUENCE_TEMPLATE_PARAM \ - ) \ - /**/ - -# define AUX778076_SEQUENCE_ARGS() \ - T, BOOST_PP_ENUM_PARAMS( \ - AUX778076_SEQUENCE_LIMIT \ - , C \ - ) \ - /**/ - -# define AUX778076_SEQUENCE_DEFAULT_PARAMS() \ - typename T, \ - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \ - AUX778076_SEQUENCE_LIMIT \ - , AUX778076_SEQUENCE_TEMPLATE_PARAM \ - , AUX778076_SEQUENCE_DEFAULT \ - ) \ - /**/ - -# define AUX778076_SEQUENCE_N_PARAMS(n) \ - typename T BOOST_PP_COMMA_IF(n) \ - BOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \ - /**/ - -# if !defined(AUX778076_SEQUENCE_CONVERT_CN_TO) -# define AUX778076_SEQUENCE_CONVERT_CN_TO(z,n,TARGET) BOOST_PP_CAT(C,n) -# endif - -# define AUX778076_SEQUENCE_N_ARGS(n) \ - T BOOST_PP_COMMA_IF(n) \ - BOOST_PP_ENUM(n,AUX778076_SEQUENCE_CONVERT_CN_TO,T) \ - /**/ - -# define AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(n) \ - T, BOOST_PP_ENUM_PARAMS(n, C) \ - BOOST_PP_COMMA_IF(n) \ - BOOST_PP_ENUM( \ - BOOST_PP_SUB_D(1,AUX778076_SEQUENCE_LIMIT,n) \ - , BOOST_PP_TUPLE_ELEM_3_2 \ - , AUX778076_SEQUENCE_DEFAULT \ - ) \ - /**/ - -#endif // AUX778076_SEQUENCE_INTEGRAL_WRAPPER - - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -// forward declaration -template< - AUX778076_SEQUENCE_DEFAULT_PARAMS() - > -struct AUX778076_SEQUENCE_NAME; -#else -namespace aux { -template< BOOST_MPL_AUX_NTTP_DECL(int, N) > -struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser); -} -#endif - -#define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(0, AUX778076_SEQUENCE_LIMIT, )) -#include BOOST_PP_ITERATE() - -// real C++ version is already taken care of -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -namespace aux { -// ???_count_args -#define AUX778076_COUNT_ARGS_PREFIX AUX778076_SEQUENCE_NAME -#define AUX778076_COUNT_ARGS_DEFAULT AUX778076_SEQUENCE_DEFAULT -#define AUX778076_COUNT_ARGS_PARAM_NAME AUX778076_SEQUENCE_PARAM_NAME -#define AUX778076_COUNT_ARGS_TEMPLATE_PARAM AUX778076_SEQUENCE_TEMPLATE_PARAM -#define AUX778076_COUNT_ARGS_ARITY AUX778076_SEQUENCE_LIMIT -#define AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES -#include - -template< - AUX778076_SEQUENCE_PARAMS() - > -struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl) -{ - typedef aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_count_args)< - BOOST_PP_ENUM_PARAMS(AUX778076_SEQUENCE_LIMIT, AUX778076_SEQUENCE_PARAM_NAME) - > arg_num_; - - typedef typename aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser)< arg_num_::value > - ::template result_< AUX778076_SEQUENCE_ARGS() >::type type; -}; - -} // namespace aux - -template< - AUX778076_SEQUENCE_DEFAULT_PARAMS() - > -struct AUX778076_SEQUENCE_NAME - : aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)< - AUX778076_SEQUENCE_ARGS() - >::type -{ - typedef typename aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)< - AUX778076_SEQUENCE_ARGS() - >::type type; -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -# undef AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS -# undef AUX778076_SEQUENCE_N_ARGS -# undef AUX778076_SEQUENCE_CONVERT_CN_TO -# undef AUX778076_SEQUENCE_N_PARAMS -# undef AUX778076_SEQUENCE_DEFAULT_PARAMS -# undef AUX778076_SEQUENCE_ARGS -# undef AUX778076_SEQUENCE_PARAMS -# undef AUX778076_SEQUENCE_NAME_N -# undef AUX778076_SEQUENCE_DEFAULT -# undef AUX778076_SEQUENCE_TEMPLATE_PARAM -# undef AUX778076_SEQUENCE_PARAM_NAME -# undef AUX778076_SEQUENCE_LIMIT -# undef AUX778076_SEQUENCE_BASE_NAME -# undef AUX778076_SEQUENCE_NAME -# undef AUX778076_SEQUENCE_INTEGRAL_WRAPPER - -}} - -///// iteration - -#else -#define i_ BOOST_PP_FRAME_ITERATION(1) - -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -#if i_ == AUX778076_SEQUENCE_LIMIT - -/// primary template (not a specialization!) -template< - AUX778076_SEQUENCE_N_PARAMS(i_) - > -struct AUX778076_SEQUENCE_NAME - : AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) > -{ - typedef typename AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type; -}; - -#else - -template< - AUX778076_SEQUENCE_N_PARAMS(i_) - > -struct AUX778076_SEQUENCE_NAME< AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(i_) > - : AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) > -{ -#if i_ > 0 || defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER) - typedef typename AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type; -#else - typedef AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type; -#endif -}; - -#endif // i_ == AUX778076_SEQUENCE_LIMIT - -# else - -namespace aux { - -template<> -struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser) -{ - template< - AUX778076_SEQUENCE_PARAMS() - > - struct result_ - { -#if i_ > 0 || defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER) - typedef typename AUX778076_SEQUENCE_NAME_N(i_)< - AUX778076_SEQUENCE_N_ARGS(i_) - >::type type; -#else - typedef AUX778076_SEQUENCE_NAME_N(i_)< - AUX778076_SEQUENCE_N_ARGS(i_) - >::type type; -#endif - }; -}; - -} // namespace aux - -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#undef i_ -#endif // BOOST_PP_IS_ITERATING diff --git a/src/boost/boost/mpl/aux_/size_impl.hpp b/src/boost/boost/mpl/aux_/size_impl.hpp deleted file mode 100644 index b02c82cd5..000000000 --- a/src/boost/boost/mpl/aux_/size_impl.hpp +++ /dev/null @@ -1,52 +0,0 @@ - -#ifndef BOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -// default implementation; conrete sequences might override it by -// specializing either the 'size_impl' or the primary 'size' template - -template< typename Tag > -struct size_impl -{ - template< typename Sequence > struct apply -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) - : distance< - typename begin::type - , typename end::type - > - { -#else - { - typedef typename distance< - typename begin::type - , typename end::type - >::type type; -#endif - }; -}; - -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, size_impl) - -}} - -#endif // BOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/static_cast.hpp b/src/boost/boost/mpl/aux_/static_cast.hpp index 0dba539a2..8f0d8c4eb 100644 --- a/src/boost/boost/mpl/aux_/static_cast.hpp +++ b/src/boost/boost/mpl/aux_/static_cast.hpp @@ -16,7 +16,7 @@ #include -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \ +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x561)) \ || BOOST_WORKAROUND(__GNUC__, < 3) \ || BOOST_WORKAROUND(__MWERKS__, <= 0x3001) # define BOOST_MPL_AUX_STATIC_CAST(T, expr) (T)(expr) diff --git a/src/boost/boost/mpl/aux_/template_arity.hpp b/src/boost/boost/mpl/aux_/template_arity.hpp index d6eda14f0..211f8c7ef 100644 --- a/src/boost/boost/mpl/aux_/template_arity.hpp +++ b/src/boost/boost/mpl/aux_/template_arity.hpp @@ -65,7 +65,7 @@ namespace boost { namespace mpl { namespace aux { template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arity_tag { - typedef char (&type)[N + 1]; + typedef char (&type)[(unsigned)N + 1]; }; # define AUX778076_MAX_ARITY_OP(unused, state, i_) \ diff --git a/src/boost/boost/mpl/aux_/traits_lambda_spec.hpp b/src/boost/boost/mpl/aux_/traits_lambda_spec.hpp deleted file mode 100644 index 8af932b97..000000000 --- a/src/boost/boost/mpl/aux_/traits_lambda_spec.hpp +++ /dev/null @@ -1,63 +0,0 @@ - -#ifndef BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED -#define BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2008 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include - -#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) - -# define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) /**/ - -#elif !defined(BOOST_MPL_CFG_MSVC_ETI_BUG) - -# define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \ -template<> struct trait \ -{ \ - template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \ - { \ - }; \ -}; \ -/**/ - -#else - -# define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \ -template<> struct trait \ -{ \ - template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \ - { \ - }; \ -}; \ -template<> struct trait \ -{ \ - template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \ - { \ - typedef int type; \ - }; \ -}; \ -/**/ - -#endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT - - -#define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(i, trait) \ - BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \ - template<> struct trait {}; \ -/**/ - -#endif // BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED diff --git a/src/boost/boost/mpl/aux_/yes_no.hpp b/src/boost/boost/mpl/aux_/yes_no.hpp index 22082b5ec..a8529c285 100644 --- a/src/boost/boost/mpl/aux_/yes_no.hpp +++ b/src/boost/boost/mpl/aux_/yes_no.hpp @@ -18,6 +18,7 @@ #include #include #include +#include namespace boost { namespace mpl { namespace aux { @@ -36,7 +37,7 @@ template<> struct yes_no_tag }; -template< BOOST_MPL_AUX_NTTP_DECL(long, n) > struct weighted_tag +template< BOOST_MPL_AUX_NTTP_DECL(std::size_t, n) > struct weighted_tag { #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) typedef char (&type)[n]; diff --git a/src/boost/boost/mpl/back_fwd.hpp b/src/boost/boost/mpl/back_fwd.hpp deleted file mode 100644 index 0895c2494..000000000 --- a/src/boost/boost/mpl/back_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_BACK_FWD_HPP_INCLUDED -#define BOOST_MPL_BACK_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct back_impl; -template< typename Sequence > struct back; - -}} - -#endif // BOOST_MPL_BACK_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/back_inserter.hpp b/src/boost/boost/mpl/back_inserter.hpp deleted file mode 100644 index 90fb9f9fc..000000000 --- a/src/boost/boost/mpl/back_inserter.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_MPL_BACK_INSERTER_HPP_INCLUDED -#define BOOST_MPL_BACK_INSERTER_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { -namespace mpl { - -template< - typename Sequence - > -struct back_inserter - : inserter< Sequence,push_back<> > -{ -}; - -}} - -#endif // BOOST_MPL_BACK_INSERTER_HPP_INCLUDED diff --git a/src/boost/boost/mpl/begin_end.hpp b/src/boost/boost/mpl/begin_end.hpp deleted file mode 100644 index 706601d4d..000000000 --- a/src/boost/boost/mpl/begin_end.hpp +++ /dev/null @@ -1,57 +0,0 @@ - -#ifndef BOOST_MPL_BEGIN_END_HPP_INCLUDED -#define BOOST_MPL_BEGIN_END_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -// agurt, 13/sep/02: switched from inheritance to typedef; MSVC is more -// happy this way (less ETI-related errors), and it doesn't affect -// anything else -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct begin -{ - typedef typename sequence_tag::type tag_; - typedef typename begin_impl< tag_ > - ::template apply< Sequence >::type type; - - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,begin,(Sequence)) -}; - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct end -{ - typedef typename sequence_tag::type tag_; - typedef typename end_impl< tag_ > - ::template apply< Sequence >::type type; - - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,end,(Sequence)) -}; - -BOOST_MPL_AUX_NA_SPEC(1, begin) -BOOST_MPL_AUX_NA_SPEC(1, end) - -}} - -#endif // BOOST_MPL_BEGIN_END_HPP_INCLUDED diff --git a/src/boost/boost/mpl/begin_end_fwd.hpp b/src/boost/boost/mpl/begin_end_fwd.hpp deleted file mode 100644 index 1a5a41353..000000000 --- a/src/boost/boost/mpl/begin_end_fwd.hpp +++ /dev/null @@ -1,27 +0,0 @@ - -#ifndef BOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED -#define BOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct begin_impl; -template< typename Tag > struct end_impl; - -template< typename Sequence > struct begin; -template< typename Sequence > struct end; - -}} - -#endif // BOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/clear.hpp b/src/boost/boost/mpl/clear.hpp deleted file mode 100644 index 09166e465..000000000 --- a/src/boost/boost/mpl/clear.hpp +++ /dev/null @@ -1,39 +0,0 @@ - -#ifndef BOOST_MPL_CLEAR_HPP_INCLUDED -#define BOOST_MPL_CLEAR_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct clear - : clear_impl< typename sequence_tag::type > - ::template apply< Sequence > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,clear,(Sequence)) -}; - -BOOST_MPL_AUX_NA_SPEC(1, clear) - -}} - -#endif // BOOST_MPL_CLEAR_HPP_INCLUDED diff --git a/src/boost/boost/mpl/clear_fwd.hpp b/src/boost/boost/mpl/clear_fwd.hpp deleted file mode 100644 index 7b37d9daa..000000000 --- a/src/boost/boost/mpl/clear_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_CLEAR_FWD_HPP_INCLUDED -#define BOOST_MPL_CLEAR_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct clear_impl; -template< typename Sequence > struct clear; - -}} - -#endif // BOOST_MPL_CLEAR_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/comparison.hpp b/src/boost/boost/mpl/comparison.hpp deleted file mode 100644 index 7fffa43da..000000000 --- a/src/boost/boost/mpl/comparison.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_COMPARISON_HPP_INCLUDED -#define BOOST_MPL_COMPARISON_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -#endif // BOOST_MPL_COMPARISON_HPP_INCLUDED diff --git a/src/boost/boost/mpl/contains.hpp b/src/boost/boost/mpl/contains.hpp deleted file mode 100644 index 4d8308f81..000000000 --- a/src/boost/boost/mpl/contains.hpp +++ /dev/null @@ -1,41 +0,0 @@ - -#ifndef BOOST_MPL_CONTAINS_HPP_INCLUDED -#define BOOST_MPL_CONTAINS_HPP_INCLUDED - -// Copyright Eric Friedman 2002 -// Copyright Aleksey Gurtovoy 2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(T) - > -struct contains - : contains_impl< typename sequence_tag::type > - ::template apply< Sequence,T > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(2,contains,(Sequence,T)) -}; - -BOOST_MPL_AUX_NA_SPEC(2, contains) - -}} - -#endif // BOOST_MPL_CONTAINS_HPP_INCLUDED diff --git a/src/boost/boost/mpl/contains_fwd.hpp b/src/boost/boost/mpl/contains_fwd.hpp deleted file mode 100644 index f7c1681a9..000000000 --- a/src/boost/boost/mpl/contains_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ - -#ifndef BOOST_MPL_CONTAINS_FWD_HPP_INCLUDED -#define BOOST_MPL_CONTAINS_FWD_HPP_INCLUDED - -// Copyright Eric Friedman 2002 -// Copyright Aleksey Gurtovoy 2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct contains_impl; -template< typename Sequence, typename T > struct contains; - -}} - -#endif // BOOST_MPL_CONTAINS_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/deref.hpp b/src/boost/boost/mpl/deref.hpp deleted file mode 100644 index a9cbdf57c..000000000 --- a/src/boost/boost/mpl/deref.hpp +++ /dev/null @@ -1,41 +0,0 @@ - -#ifndef BOOST_MPL_DEREF_HPP_INCLUDED -#define BOOST_MPL_DEREF_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2002-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Iterator) - > -struct deref -{ -#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) - typedef typename Iterator::type type; -#else - typedef typename aux::msvc_type::type type; -#endif - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,deref,(Iterator)) -}; - -BOOST_MPL_AUX_NA_SPEC(1, deref) - -}} - -#endif // BOOST_MPL_DEREF_HPP_INCLUDED diff --git a/src/boost/boost/mpl/distance.hpp b/src/boost/boost/mpl/distance.hpp deleted file mode 100644 index e5988a6b0..000000000 --- a/src/boost/boost/mpl/distance.hpp +++ /dev/null @@ -1,78 +0,0 @@ - -#ifndef BOOST_MPL_DISTANCE_HPP_INCLUDED -#define BOOST_MPL_DISTANCE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -namespace boost { namespace mpl { - -// default implementation for forward/bidirectional iterators -template< typename Tag > struct distance_impl -{ - template< typename First, typename Last > struct apply -#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : aux::msvc_eti_base< typename iter_fold< - iterator_range - , mpl::long_<0> - , next<> - >::type > - { -#else - { - typedef typename iter_fold< - iterator_range - , mpl::long_<0> - , next<> - >::type type; - - BOOST_STATIC_CONSTANT(long, value = - (iter_fold< - iterator_range - , mpl::long_<0> - , next<> - >::type::value) - ); -#endif - }; -}; - -template< - typename BOOST_MPL_AUX_NA_PARAM(First) - , typename BOOST_MPL_AUX_NA_PARAM(Last) - > -struct distance - : distance_impl< typename tag::type > - ::template apply -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(2, distance, (First, Last)) -}; - -BOOST_MPL_AUX_NA_SPEC(2, distance) - -}} - -#endif // BOOST_MPL_DISTANCE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/distance_fwd.hpp b/src/boost/boost/mpl/distance_fwd.hpp deleted file mode 100644 index 7e6e48f32..000000000 --- a/src/boost/boost/mpl/distance_fwd.hpp +++ /dev/null @@ -1,28 +0,0 @@ - -#ifndef BOOST_MPL_DISTANCE_FWD_HPP_INCLUDED -#define BOOST_MPL_DISTANCE_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include - -namespace boost { namespace mpl { - -BOOST_MPL_AUX_COMMON_NAME_WKND(distance) - -template< typename Tag > struct distance_impl; -template< typename First, typename Last > struct distance; - -}} - -#endif // BOOST_MPL_DISTANCE_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/empty_fwd.hpp b/src/boost/boost/mpl/empty_fwd.hpp deleted file mode 100644 index 0f8e3c8d8..000000000 --- a/src/boost/boost/mpl/empty_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_EMPTY_FWD_HPP_INCLUDED -#define BOOST_MPL_EMPTY_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct empty_impl; -template< typename Sequence > struct empty; - -}} - -#endif // BOOST_MPL_EMPTY_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/find.hpp b/src/boost/boost/mpl/find.hpp deleted file mode 100644 index 3c7c73321..000000000 --- a/src/boost/boost/mpl/find.hpp +++ /dev/null @@ -1,38 +0,0 @@ - -#ifndef BOOST_MPL_FIND_HPP_INCLUDED -#define BOOST_MPL_FIND_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2002 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(T) - > -struct find - : find_if< Sequence,same_as > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(2,find,(Sequence,T)) -}; - -BOOST_MPL_AUX_NA_SPEC(2, find) - -}} - -#endif // BOOST_MPL_FIND_HPP_INCLUDED diff --git a/src/boost/boost/mpl/find_if.hpp b/src/boost/boost/mpl/find_if.hpp deleted file mode 100644 index cd2fc8fc0..000000000 --- a/src/boost/boost/mpl/find_if.hpp +++ /dev/null @@ -1,50 +0,0 @@ - -#ifndef BOOST_MPL_FIND_IF_HPP_INCLUDED -#define BOOST_MPL_FIND_IF_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -BOOST_MPL_AUX_COMMON_NAME_WKND(find_if) - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(Predicate) - > -struct find_if -{ - typedef typename iter_fold_if< - Sequence - , void - , mpl::arg<1> // ignore - , protect< aux::find_if_pred > - >::type result_; - - typedef typename second::type type; - - BOOST_MPL_AUX_LAMBDA_SUPPORT(2,find_if,(Sequence,Predicate)) -}; - -BOOST_MPL_AUX_NA_SPEC(2,find_if) - -}} - -#endif // BOOST_MPL_FIND_IF_HPP_INCLUDED diff --git a/src/boost/boost/mpl/fold.hpp b/src/boost/boost/mpl/fold.hpp deleted file mode 100644 index 947389d44..000000000 --- a/src/boost/boost/mpl/fold.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_MPL_FOLD_HPP_INCLUDED -#define BOOST_MPL_FOLD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// Copyright David Abrahams 2001-2002 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(State) - , typename BOOST_MPL_AUX_NA_PARAM(ForwardOp) - > -struct fold -{ - typedef typename aux::fold_impl< - ::boost::mpl::O1_size::value - , typename begin::type - , typename end::type - , State - , ForwardOp - >::state type; - - BOOST_MPL_AUX_LAMBDA_SUPPORT(3,fold,(Sequence,State,ForwardOp)) -}; - -BOOST_MPL_AUX_NA_SPEC(3, fold) - -}} - -#endif // BOOST_MPL_FOLD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/front_fwd.hpp b/src/boost/boost/mpl/front_fwd.hpp deleted file mode 100644 index ebafc8f2e..000000000 --- a/src/boost/boost/mpl/front_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_FRONT_FWD_HPP_INCLUDED -#define BOOST_MPL_FRONT_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct front_impl; -template< typename Sequence > struct front; - -}} - -#endif // BOOST_MPL_FRONT_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/front_inserter.hpp b/src/boost/boost/mpl/front_inserter.hpp deleted file mode 100644 index 637238fa7..000000000 --- a/src/boost/boost/mpl/front_inserter.hpp +++ /dev/null @@ -1,33 +0,0 @@ - -#ifndef BOOST_MPL_FRONT_INSERTER_HPP_INCLUDED -#define BOOST_MPL_FRONT_INSERTER_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { - -template< - typename Sequence - > -struct front_inserter - : inserter< Sequence,push_front<> > -{ -}; - -}} - -#endif // BOOST_MPL_FRONT_INSERTER_HPP_INCLUDED diff --git a/src/boost/boost/mpl/greater.hpp b/src/boost/boost/mpl/greater.hpp deleted file mode 100644 index b85e4b590..000000000 --- a/src/boost/boost/mpl/greater.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_GREATER_HPP_INCLUDED -#define BOOST_MPL_GREATER_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#define AUX778076_OP_NAME greater -#define AUX778076_OP_TOKEN > -#include - -#endif // BOOST_MPL_GREATER_HPP_INCLUDED diff --git a/src/boost/boost/mpl/greater_equal.hpp b/src/boost/boost/mpl/greater_equal.hpp deleted file mode 100644 index 35608d57d..000000000 --- a/src/boost/boost/mpl/greater_equal.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED -#define BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#define AUX778076_OP_NAME greater_equal -#define AUX778076_OP_TOKEN >= -#include - -#endif // BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/has_xxx.hpp b/src/boost/boost/mpl/has_xxx.hpp index 1365c72ff..0f517bb06 100644 --- a/src/boost/boost/mpl/has_xxx.hpp +++ b/src/boost/boost/mpl/has_xxx.hpp @@ -33,7 +33,7 @@ #include #include -#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x590) ) +#if BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x590) ) # include #endif @@ -196,7 +196,7 @@ struct trait \ }; \ /**/ -# elif BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x590) ) +# elif BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x590) ) # define BOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF(trait, trait_tester, name, default_) \ template< typename T, bool IS_CLASS > \ @@ -334,7 +334,7 @@ struct trait \ // correct name but different number of arguments. # define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE(z, n, args) \ template< \ - template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename V) > class V \ + template< BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(n), typename V) > class V \ > \ struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) { \ }; \ @@ -503,7 +503,7 @@ struct trait \ z, n, args \ ) \ template< \ - template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename U) > class U \ + template< BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(n), typename U) > class U \ > \ struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \ args, n \ diff --git a/src/boost/boost/mpl/if.hpp b/src/boost/boost/mpl/if.hpp index bb09f179b..3a0b67a3a 100644 --- a/src/boost/boost/mpl/if.hpp +++ b/src/boost/boost/mpl/if.hpp @@ -46,7 +46,7 @@ struct if_c }; // agurt, 05/sep/04: nondescriptive parameter names for the sake of DigitalMars -// (and possibly MWCW < 8.0); see http://article.gmane.org/gmane.comp.lib.boost.devel/108959 +// (and possibly MWCW < 8.0); see https://lists.boost.org/Archives/boost/2004/09/71383.php template< typename BOOST_MPL_AUX_NA_PARAM(T1) , typename BOOST_MPL_AUX_NA_PARAM(T2) diff --git a/src/boost/boost/mpl/inserter.hpp b/src/boost/boost/mpl/inserter.hpp deleted file mode 100644 index d6debf0bd..000000000 --- a/src/boost/boost/mpl/inserter.hpp +++ /dev/null @@ -1,32 +0,0 @@ - -#ifndef BOOST_MPL_INSERTER_HPP_INCLUDED -#define BOOST_MPL_INSERTER_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< - typename Sequence - , typename Operation - > -struct inserter -{ - typedef Sequence state; - typedef Operation operation; -}; - -}} - -#endif // BOOST_MPL_INSERTER_HPP_INCLUDED diff --git a/src/boost/boost/mpl/integral_c.hpp b/src/boost/boost/mpl/integral_c.hpp index 2a9b37872..d277b0065 100644 --- a/src/boost/boost/mpl/integral_c.hpp +++ b/src/boost/boost/mpl/integral_c.hpp @@ -33,7 +33,7 @@ #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !BOOST_WORKAROUND(__BORLANDC__, <= 0x551) + && !BOOST_WORKAROUND(BOOST_BORLANDC, <= 0x551) BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN // 'bool' constant doesn't have 'next'/'prior' members template< bool C > diff --git a/src/boost/boost/mpl/iter_fold.hpp b/src/boost/boost/mpl/iter_fold.hpp deleted file mode 100644 index 5f3d17abb..000000000 --- a/src/boost/boost/mpl/iter_fold.hpp +++ /dev/null @@ -1,49 +0,0 @@ - -#ifndef BOOST_MPL_ITER_FOLD_HPP_INCLUDED -#define BOOST_MPL_ITER_FOLD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// Copyright David Abrahams 2001-2002 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(State) - , typename BOOST_MPL_AUX_NA_PARAM(ForwardOp) - > -struct iter_fold -{ - typedef typename aux::iter_fold_impl< - ::boost::mpl::O1_size::value - , typename begin::type - , typename end::type - , State - , typename lambda::type - >::state type; - - BOOST_MPL_AUX_LAMBDA_SUPPORT(3,iter_fold,(Sequence,State,ForwardOp)) -}; - -BOOST_MPL_AUX_NA_SPEC(3, iter_fold) - -}} - -#endif // BOOST_MPL_ITER_FOLD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/iter_fold_if.hpp b/src/boost/boost/mpl/iter_fold_if.hpp deleted file mode 100644 index 219ca4fb2..000000000 --- a/src/boost/boost/mpl/iter_fold_if.hpp +++ /dev/null @@ -1,117 +0,0 @@ - -#ifndef BOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED -#define BOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright Eric Friedman 2003 -// -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// See http://www.boost.org/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace mpl { - -namespace aux { - -template< typename Predicate, typename LastIterator > -struct iter_fold_if_pred -{ - template< typename State, typename Iterator > struct apply -#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : and_< - not_< is_same > - , apply1 - > - { -#else - { - typedef and_< - not_< is_same > - , apply1 - > type; -#endif - }; -}; - -} // namespace aux - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(State) - , typename BOOST_MPL_AUX_NA_PARAM(ForwardOp) - , typename BOOST_MPL_AUX_NA_PARAM(ForwardPredicate) - , typename BOOST_MPL_AUX_NA_PARAM(BackwardOp) - , typename BOOST_MPL_AUX_NA_PARAM(BackwardPredicate) - > -struct iter_fold_if -{ - - typedef typename begin::type first_; - typedef typename end::type last_; - - typedef typename eval_if< - is_na - , if_< is_na, always, always > - , identity - >::type backward_pred_; - -// cwpro8 doesn't like 'cut-off' type here (use typedef instead) -#if !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) && !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) - struct result_ : -#else - typedef -#endif - aux::iter_fold_if_impl< - first_ - , State - , ForwardOp - , protect< aux::iter_fold_if_pred< ForwardPredicate,last_ > > - , BackwardOp - , backward_pred_ - > -#if !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) && !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) - { }; -#else - result_; -#endif - -public: - - typedef pair< - typename result_::state - , typename result_::iterator - > type; - - BOOST_MPL_AUX_LAMBDA_SUPPORT( - 6 - , iter_fold_if - , (Sequence,State,ForwardOp,ForwardPredicate,BackwardOp,BackwardPredicate) - ) -}; - -BOOST_MPL_AUX_NA_SPEC(6, iter_fold_if) - -}} - -#endif // BOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED diff --git a/src/boost/boost/mpl/iterator_range.hpp b/src/boost/boost/mpl/iterator_range.hpp deleted file mode 100644 index cddff53f2..000000000 --- a/src/boost/boost/mpl/iterator_range.hpp +++ /dev/null @@ -1,42 +0,0 @@ - -#ifndef BOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED -#define BOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { - -struct iterator_range_tag; - -template< - typename BOOST_MPL_AUX_NA_PARAM(First) - , typename BOOST_MPL_AUX_NA_PARAM(Last) - > -struct iterator_range -{ - typedef iterator_range_tag tag; - typedef iterator_range type; - typedef First begin; - typedef Last end; - - BOOST_MPL_AUX_LAMBDA_SUPPORT(2,iterator_range,(First,Last)) -}; - -BOOST_MPL_AUX_NA_SPEC(2, iterator_range) - -}} - -#endif // BOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/iterator_tags.hpp b/src/boost/boost/mpl/iterator_tags.hpp deleted file mode 100644 index 8f909c130..000000000 --- a/src/boost/boost/mpl/iterator_tags.hpp +++ /dev/null @@ -1,27 +0,0 @@ - -#ifndef BOOST_MPL_ITERATOR_TAG_HPP_INCLUDED -#define BOOST_MPL_ITERATOR_TAG_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include - -namespace boost { namespace mpl { - -struct forward_iterator_tag : int_<0> { typedef forward_iterator_tag type; }; -struct bidirectional_iterator_tag : int_<1> { typedef bidirectional_iterator_tag type; }; -struct random_access_iterator_tag : int_<2> { typedef random_access_iterator_tag type; }; - -}} - -#endif // BOOST_MPL_ITERATOR_TAG_HPP_INCLUDED diff --git a/src/boost/boost/mpl/less_equal.hpp b/src/boost/boost/mpl/less_equal.hpp deleted file mode 100644 index 73e80f54e..000000000 --- a/src/boost/boost/mpl/less_equal.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_LESS_EQUAL_HPP_INCLUDED -#define BOOST_MPL_LESS_EQUAL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#define AUX778076_OP_NAME less_equal -#define AUX778076_OP_TOKEN <= -#include - -#endif // BOOST_MPL_LESS_EQUAL_HPP_INCLUDED diff --git a/src/boost/boost/mpl/limits/list.hpp b/src/boost/boost/mpl/limits/list.hpp deleted file mode 100644 index b8254fed8..000000000 --- a/src/boost/boost/mpl/limits/list.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_LIMITS_LIST_HPP_INCLUDED -#define BOOST_MPL_LIMITS_LIST_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_LIMIT_LIST_SIZE) -# define BOOST_MPL_LIMIT_LIST_SIZE 20 -#endif - -#endif // BOOST_MPL_LIMITS_LIST_HPP_INCLUDED diff --git a/src/boost/boost/mpl/limits/unrolling.hpp b/src/boost/boost/mpl/limits/unrolling.hpp deleted file mode 100644 index 6af272f47..000000000 --- a/src/boost/boost/mpl/limits/unrolling.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED -#define BOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_LIMIT_UNROLLING) -# define BOOST_MPL_LIMIT_UNROLLING 4 -#endif - -#endif // BOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED diff --git a/src/boost/boost/mpl/limits/vector.hpp b/src/boost/boost/mpl/limits/vector.hpp deleted file mode 100644 index a89b64abe..000000000 --- a/src/boost/boost/mpl/limits/vector.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED -#define BOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_LIMIT_VECTOR_SIZE) -# define BOOST_MPL_LIMIT_VECTOR_SIZE 20 -#endif - -#endif // BOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list.hpp b/src/boost/boost/mpl/list.hpp deleted file mode 100644 index 98fd177d0..000000000 --- a/src/boost/boost/mpl/list.hpp +++ /dev/null @@ -1,57 +0,0 @@ - -#ifndef BOOST_MPL_LIST_HPP_INCLUDED -#define BOOST_MPL_LIST_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -# include - -# include -# include -# include - -#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING) -# define AUX778076_LIST_HEADER \ - BOOST_PP_CAT(list,BOOST_MPL_LIMIT_LIST_SIZE).hpp \ - /**/ -#else -# define AUX778076_LIST_HEADER \ - BOOST_PP_CAT(list,BOOST_MPL_LIMIT_LIST_SIZE)##.hpp \ - /**/ -#endif - -# include BOOST_PP_STRINGIZE(boost/mpl/list/AUX778076_LIST_HEADER) -# undef AUX778076_LIST_HEADER -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list.hpp -# include - -#else - -# include - -# define AUX778076_SEQUENCE_NAME list -# define AUX778076_SEQUENCE_LIMIT BOOST_MPL_LIMIT_LIST_SIZE -# include - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS -#endif // BOOST_MPL_LIST_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/O1_size.hpp b/src/boost/boost/mpl/list/aux_/O1_size.hpp deleted file mode 100644 index 1994772cf..000000000 --- a/src/boost/boost/mpl/list/aux_/O1_size.hpp +++ /dev/null @@ -1,33 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { - -template<> -struct O1_size_impl< aux::list_tag > -{ - template< typename List > struct apply - : List::size - { - }; -}; - -}} - -#endif // BOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/begin_end.hpp b/src/boost/boost/mpl/list/aux_/begin_end.hpp deleted file mode 100644 index 33cdca657..000000000 --- a/src/boost/boost/mpl/list/aux_/begin_end.hpp +++ /dev/null @@ -1,44 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_BEGIN_END_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_BEGIN_END_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template<> -struct begin_impl< aux::list_tag > -{ - template< typename List > struct apply - { - typedef l_iter type; - }; -}; - -template<> -struct end_impl< aux::list_tag > -{ - template< typename > struct apply - { - typedef l_iter type; - }; -}; - -}} - -#endif // BOOST_MPL_LIST_AUX_BEGIN_END_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/clear.hpp b/src/boost/boost/mpl/list/aux_/clear.hpp deleted file mode 100644 index e52ef81f7..000000000 --- a/src/boost/boost/mpl/list/aux_/clear.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_CLEAR_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_CLEAR_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include - -namespace boost { namespace mpl { - -template<> -struct clear_impl< aux::list_tag > -{ - template< typename List > struct apply - { - typedef l_end type; - }; -}; - -}} - -#endif // BOOST_MPL_LIST_AUX_CLEAR_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/empty.hpp b/src/boost/boost/mpl/list/aux_/empty.hpp deleted file mode 100644 index d8ea0e21e..000000000 --- a/src/boost/boost/mpl/list/aux_/empty.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_EMPTY_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_EMPTY_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include - -namespace boost { namespace mpl { - -template<> -struct empty_impl< aux::list_tag > -{ - template< typename List > struct apply - : not_ - { - }; -}; - -}} - -#endif // BOOST_MPL_LIST_AUX_EMPTY_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/front.hpp b/src/boost/boost/mpl/list/aux_/front.hpp deleted file mode 100644 index 512cfb68e..000000000 --- a/src/boost/boost/mpl/list/aux_/front.hpp +++ /dev/null @@ -1,33 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { - -template<> -struct front_impl< aux::list_tag > -{ - template< typename List > struct apply - { - typedef typename List::item type; - }; -}; - -}} - -#endif // BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/include_preprocessed.hpp b/src/boost/boost/mpl/list/aux_/include_preprocessed.hpp deleted file mode 100644 index 415390299..000000000 --- a/src/boost/boost/mpl/list/aux_/include_preprocessed.hpp +++ /dev/null @@ -1,35 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2001-2006 -// -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// See http://www.boost.org/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION! - -#include - -#include -#include - -# define AUX778076_HEADER \ - aux_/preprocessed/plain/BOOST_MPL_PREPROCESSED_HEADER \ -/**/ - -#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700)) -# define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(boost/mpl/list/AUX778076_HEADER) -# include AUX778076_INCLUDE_STRING -# undef AUX778076_INCLUDE_STRING -#else -# include BOOST_PP_STRINGIZE(boost/mpl/list/AUX778076_HEADER) -#endif - -# undef AUX778076_HEADER - -#undef BOOST_MPL_PREPROCESSED_HEADER diff --git a/src/boost/boost/mpl/list/aux_/item.hpp b/src/boost/boost/mpl/list/aux_/item.hpp deleted file mode 100644 index b269c1de1..000000000 --- a/src/boost/boost/mpl/list/aux_/item.hpp +++ /dev/null @@ -1,55 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_NODE_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_NODE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename Size - , typename T - , typename Next - > -struct l_item -{ -// agurt, 17/jul/03: to facilitate the deficient 'is_sequence' implementation -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - typedef int begin; -#endif - typedef aux::list_tag tag; - typedef l_item type; - - typedef Size size; - typedef T item; - typedef Next next; -}; - -struct l_end -{ -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - typedef int begin; -#endif - typedef aux::list_tag tag; - typedef l_end type; - typedef long_<0> size; -}; - -}} - -#endif // BOOST_MPL_LIST_AUX_NODE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/iterator.hpp b/src/boost/boost/mpl/list/aux_/iterator.hpp deleted file mode 100644 index c354c5f1d..000000000 --- a/src/boost/boost/mpl/list/aux_/iterator.hpp +++ /dev/null @@ -1,76 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_ITERATOR_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_ITERATOR_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template< typename Node > -struct l_iter -{ - typedef aux::l_iter_tag tag; - typedef forward_iterator_tag category; -}; - -template< typename Node > -struct deref< l_iter > -{ - typedef typename Node::item type; -}; - -template< typename Node > -struct next< l_iter > -{ - typedef l_iter< typename Node::next > type; -}; - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template< typename Node > -struct l_iter -{ - typedef aux::l_iter_tag tag; - typedef forward_iterator_tag category; - typedef typename Node::item type; - typedef l_iter< typename mpl::next::type > next; -}; - -#endif - - -template<> struct l_iter -{ - typedef aux::l_iter_tag tag; - typedef forward_iterator_tag category; -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - typedef na type; - typedef l_iter next; -#endif -}; - -BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, l_iter) - -}} - -#endif // BOOST_MPL_LIST_AUX_ITERATOR_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/numbered.hpp b/src/boost/boost/mpl/list/aux_/numbered.hpp deleted file mode 100644 index 9dcdcebe0..000000000 --- a/src/boost/boost/mpl/list/aux_/numbered.hpp +++ /dev/null @@ -1,68 +0,0 @@ - -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION - -// Copyright Peter Dimov 2000-2002 -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if defined(BOOST_PP_IS_ITERATING) - -#include -#include -#include -#include - -#define i BOOST_PP_FRAME_ITERATION(1) - -#if i == 1 - -template< - BOOST_PP_ENUM_PARAMS(i, typename T) - > -struct list1 - : l_item< - long_<1> - , T0 - , l_end - > -{ - typedef list1 type; -}; - -#else - -# define MPL_AUX_LIST_TAIL(list, i, T) \ - BOOST_PP_CAT(list,BOOST_PP_DEC(i))< \ - BOOST_PP_ENUM_SHIFTED_PARAMS(i, T) \ - > \ - /**/ - -template< - BOOST_PP_ENUM_PARAMS(i, typename T) - > -struct BOOST_PP_CAT(list,i) - : l_item< - long_ - , T0 - , MPL_AUX_LIST_TAIL(list,i,T) - > -{ - typedef BOOST_PP_CAT(list,i) type; -}; - -# undef MPL_AUX_LIST_TAIL - -#endif // i == 1 - -#undef i - -#endif // BOOST_PP_IS_ITERATING diff --git a/src/boost/boost/mpl/list/aux_/numbered_c.hpp b/src/boost/boost/mpl/list/aux_/numbered_c.hpp deleted file mode 100644 index be3626ceb..000000000 --- a/src/boost/boost/mpl/list/aux_/numbered_c.hpp +++ /dev/null @@ -1,71 +0,0 @@ - -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if defined(BOOST_PP_IS_ITERATING) - -#include -#include -#include -#include - -#define i BOOST_PP_FRAME_ITERATION(1) - -#if i == 1 - -template< - typename T - , BOOST_PP_ENUM_PARAMS(i, T C) - > -struct list1_c - : l_item< - long_<1> - , integral_c - , l_end - > -{ - typedef list1_c type; - typedef T value_type; -}; - -#else - -# define MPL_AUX_LIST_C_TAIL(list, i, C) \ - BOOST_PP_CAT(BOOST_PP_CAT(list,BOOST_PP_DEC(i)),_c) \ - /**/ - -template< - typename T - , BOOST_PP_ENUM_PARAMS(i, T C) - > -struct BOOST_PP_CAT(BOOST_PP_CAT(list,i),_c) - : l_item< - long_ - , integral_c - , MPL_AUX_LIST_C_TAIL(list,i,C) - > -{ - typedef BOOST_PP_CAT(BOOST_PP_CAT(list,i),_c) type; - typedef T value_type; -}; - -# undef MPL_AUX_LIST_C_TAIL - -#endif // i == 1 - -#undef i - -#endif // BOOST_PP_IS_ITERATING diff --git a/src/boost/boost/mpl/list/aux_/pop_front.hpp b/src/boost/boost/mpl/list/aux_/pop_front.hpp deleted file mode 100644 index 0cff09a42..000000000 --- a/src/boost/boost/mpl/list/aux_/pop_front.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_POP_FRONT_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_POP_FRONT_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include - -namespace boost { namespace mpl { - -template<> -struct pop_front_impl< aux::list_tag > -{ - template< typename List > struct apply - { - typedef typename mpl::next::type type; - }; -}; - -}} - -#endif // BOOST_MPL_LIST_AUX_POP_FRONT_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list10.hpp b/src/boost/boost/mpl/list/aux_/preprocessed/plain/list10.hpp deleted file mode 100644 index 4d0d4c10a..000000000 --- a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list10.hpp +++ /dev/null @@ -1,149 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/list/list10.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0 - > -struct list1 - : l_item< - long_<1> - , T0 - , l_end - > -{ - typedef list1 type; -}; - -template< - typename T0, typename T1 - > -struct list2 - : l_item< - long_<2> - , T0 - , list1 - > -{ - typedef list2 type; -}; - -template< - typename T0, typename T1, typename T2 - > -struct list3 - : l_item< - long_<3> - , T0 - , list2< T1,T2 > - > -{ - typedef list3 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3 - > -struct list4 - : l_item< - long_<4> - , T0 - , list3< T1,T2,T3 > - > -{ - typedef list4 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - > -struct list5 - : l_item< - long_<5> - , T0 - , list4< T1,T2,T3,T4 > - > -{ - typedef list5 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5 - > -struct list6 - : l_item< - long_<6> - , T0 - , list5< T1,T2,T3,T4,T5 > - > -{ - typedef list6 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6 - > -struct list7 - : l_item< - long_<7> - , T0 - , list6< T1,T2,T3,T4,T5,T6 > - > -{ - typedef list7 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7 - > -struct list8 - : l_item< - long_<8> - , T0 - , list7< T1,T2,T3,T4,T5,T6,T7 > - > -{ - typedef list8 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8 - > -struct list9 - : l_item< - long_<9> - , T0 - , list8< T1,T2,T3,T4,T5,T6,T7,T8 > - > -{ - typedef list9 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - > -struct list10 - : l_item< - long_<10> - , T0 - , list9< T1,T2,T3,T4,T5,T6,T7,T8,T9 > - > -{ - typedef list10 type; -}; - -}} diff --git a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp b/src/boost/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp deleted file mode 100644 index 637fdecb6..000000000 --- a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp +++ /dev/null @@ -1,164 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/list/list10_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0 - > -struct list1_c - : l_item< - long_<1> - , integral_c< T,C0 > - , l_end - > -{ - typedef list1_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1 - > -struct list2_c - : l_item< - long_<2> - , integral_c< T,C0 > - , list1_c< T,C1 > - > -{ - typedef list2_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2 - > -struct list3_c - : l_item< - long_<3> - , integral_c< T,C0 > - , list2_c< T,C1,C2 > - > -{ - typedef list3_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3 - > -struct list4_c - : l_item< - long_<4> - , integral_c< T,C0 > - , list3_c< T,C1,C2,C3 > - > -{ - typedef list4_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4 - > -struct list5_c - : l_item< - long_<5> - , integral_c< T,C0 > - , list4_c< T,C1,C2,C3,C4 > - > -{ - typedef list5_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5 - > -struct list6_c - : l_item< - long_<6> - , integral_c< T,C0 > - , list5_c< T,C1,C2,C3,C4,C5 > - > -{ - typedef list6_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6 - > -struct list7_c - : l_item< - long_<7> - , integral_c< T,C0 > - , list6_c< T,C1,C2,C3,C4,C5,C6 > - > -{ - typedef list7_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7 - > -struct list8_c - : l_item< - long_<8> - , integral_c< T,C0 > - , list7_c< T,C1,C2,C3,C4,C5,C6,C7 > - > -{ - typedef list8_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8 - > -struct list9_c - : l_item< - long_<9> - , integral_c< T,C0 > - , list8_c< T,C1,C2,C3,C4,C5,C6,C7,C8 > - > -{ - typedef list9_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9 - > -struct list10_c - : l_item< - long_<10> - , integral_c< T,C0 > - , list9_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9 > - > -{ - typedef list10_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list20.hpp b/src/boost/boost/mpl/list/aux_/preprocessed/plain/list20.hpp deleted file mode 100644 index 0388c96c0..000000000 --- a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list20.hpp +++ /dev/null @@ -1,169 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/list/list20.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10 - > -struct list11 - : l_item< - long_<11> - , T0 - , list10< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 > - > -{ - typedef list11 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11 - > -struct list12 - : l_item< - long_<12> - , T0 - , list11< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 > - > -{ - typedef list12 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12 - > -struct list13 - : l_item< - long_<13> - , T0 - , list12< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 > - > -{ - typedef list13 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13 - > -struct list14 - : l_item< - long_<14> - , T0 - , list13< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 > - > -{ - typedef list14 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - > -struct list15 - : l_item< - long_<15> - , T0 - , list14< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 > - > -{ - typedef list15 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15 - > -struct list16 - : l_item< - long_<16> - , T0 - , list15< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 > - > -{ - typedef list16 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16 - > -struct list17 - : l_item< - long_<17> - , T0 - , list16< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 > - > -{ - typedef list17 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17 - > -struct list18 - : l_item< - long_<18> - , T0 - , list17< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 > - > -{ - typedef list18 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18 - > -struct list19 - : l_item< - long_<19> - , T0 - , list18< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 > - > -{ - typedef list19 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - > -struct list20 - : l_item< - long_<20> - , T0 - , list19< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 > - > -{ - typedef list20 type; -}; - -}} diff --git a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp b/src/boost/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp deleted file mode 100644 index 197cd8482..000000000 --- a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp +++ /dev/null @@ -1,173 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/list/list20_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - > -struct list11_c - : l_item< - long_<11> - , integral_c< T,C0 > - , list10_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 > - > -{ - typedef list11_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11 - > -struct list12_c - : l_item< - long_<12> - , integral_c< T,C0 > - , list11_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 > - > -{ - typedef list12_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12 - > -struct list13_c - : l_item< - long_<13> - , integral_c< T,C0 > - , list12_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 > - > -{ - typedef list13_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13 - > -struct list14_c - : l_item< - long_<14> - , integral_c< T,C0 > - , list13_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 > - > -{ - typedef list14_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14 - > -struct list15_c - : l_item< - long_<15> - , integral_c< T,C0 > - , list14_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 > - > -{ - typedef list15_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15 - > -struct list16_c - : l_item< - long_<16> - , integral_c< T,C0 > - , list15_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 > - > -{ - typedef list16_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16 - > -struct list17_c - : l_item< - long_<17> - , integral_c< T,C0 > - , list16_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 > - > -{ - typedef list17_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17 - > -struct list18_c - : l_item< - long_<18> - , integral_c< T,C0 > - , list17_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 > - > -{ - typedef list18_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18 - > -struct list19_c - : l_item< - long_<19> - , integral_c< T,C0 > - , list18_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 > - > -{ - typedef list19_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19 - > -struct list20_c - : l_item< - long_<20> - , integral_c< T,C0 > - , list19_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 > - > -{ - typedef list20_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list30.hpp b/src/boost/boost/mpl/list/aux_/preprocessed/plain/list30.hpp deleted file mode 100644 index 8db5fdcd8..000000000 --- a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list30.hpp +++ /dev/null @@ -1,189 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/list/list30.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20 - > -struct list21 - : l_item< - long_<21> - , T0 - , list20< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20 > - > -{ - typedef list21 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21 - > -struct list22 - : l_item< - long_<22> - , T0 - , list21< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21 > - > -{ - typedef list22 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22 - > -struct list23 - : l_item< - long_<23> - , T0 - , list22< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22 > - > -{ - typedef list23 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23 - > -struct list24 - : l_item< - long_<24> - , T0 - , list23< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23 > - > -{ - typedef list24 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - > -struct list25 - : l_item< - long_<25> - , T0 - , list24< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24 > - > -{ - typedef list25 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25 - > -struct list26 - : l_item< - long_<26> - , T0 - , list25< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25 > - > -{ - typedef list26 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26 - > -struct list27 - : l_item< - long_<27> - , T0 - , list26< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26 > - > -{ - typedef list27 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27 - > -struct list28 - : l_item< - long_<28> - , T0 - , list27< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27 > - > -{ - typedef list28 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28 - > -struct list29 - : l_item< - long_<29> - , T0 - , list28< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28 > - > -{ - typedef list29 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - > -struct list30 - : l_item< - long_<30> - , T0 - , list29< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29 > - > -{ - typedef list30 type; -}; - -}} diff --git a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp b/src/boost/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp deleted file mode 100644 index d81d5d3b1..000000000 --- a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp +++ /dev/null @@ -1,183 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/list/list30_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - > -struct list21_c - : l_item< - long_<21> - , integral_c< T,C0 > - , list20_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20 > - > -{ - typedef list21_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21 - > -struct list22_c - : l_item< - long_<22> - , integral_c< T,C0 > - , list21_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21 > - > -{ - typedef list22_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22 - > -struct list23_c - : l_item< - long_<23> - , integral_c< T,C0 > - , list22_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22 > - > -{ - typedef list23_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23 - > -struct list24_c - : l_item< - long_<24> - , integral_c< T,C0 > - , list23_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23 > - > -{ - typedef list24_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24 - > -struct list25_c - : l_item< - long_<25> - , integral_c< T,C0 > - , list24_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24 > - > -{ - typedef list25_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25 - > -struct list26_c - : l_item< - long_<26> - , integral_c< T,C0 > - , list25_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25 > - > -{ - typedef list26_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26 - > -struct list27_c - : l_item< - long_<27> - , integral_c< T,C0 > - , list26_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26 > - > -{ - typedef list27_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27 - > -struct list28_c - : l_item< - long_<28> - , integral_c< T,C0 > - , list27_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27 > - > -{ - typedef list28_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28 - > -struct list29_c - : l_item< - long_<29> - , integral_c< T,C0 > - , list28_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28 > - > -{ - typedef list29_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29 - > -struct list30_c - : l_item< - long_<30> - , integral_c< T,C0 > - , list29_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29 > - > -{ - typedef list30_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list40.hpp b/src/boost/boost/mpl/list/aux_/preprocessed/plain/list40.hpp deleted file mode 100644 index 52bf019fc..000000000 --- a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list40.hpp +++ /dev/null @@ -1,209 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/list/list40.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30 - > -struct list31 - : l_item< - long_<31> - , T0 - , list30< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30 > - > -{ - typedef list31 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31 - > -struct list32 - : l_item< - long_<32> - , T0 - , list31< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31 > - > -{ - typedef list32 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32 - > -struct list33 - : l_item< - long_<33> - , T0 - , list32< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32 > - > -{ - typedef list33 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33 - > -struct list34 - : l_item< - long_<34> - , T0 - , list33< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33 > - > -{ - typedef list34 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - > -struct list35 - : l_item< - long_<35> - , T0 - , list34< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34 > - > -{ - typedef list35 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35 - > -struct list36 - : l_item< - long_<36> - , T0 - , list35< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35 > - > -{ - typedef list36 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36 - > -struct list37 - : l_item< - long_<37> - , T0 - , list36< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36 > - > -{ - typedef list37 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37 - > -struct list38 - : l_item< - long_<38> - , T0 - , list37< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37 > - > -{ - typedef list38 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38 - > -struct list39 - : l_item< - long_<39> - , T0 - , list38< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38 > - > -{ - typedef list39 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - > -struct list40 - : l_item< - long_<40> - , T0 - , list39< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39 > - > -{ - typedef list40 type; -}; - -}} diff --git a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp b/src/boost/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp deleted file mode 100644 index ea654b860..000000000 --- a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp +++ /dev/null @@ -1,193 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/list/list40_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - > -struct list31_c - : l_item< - long_<31> - , integral_c< T,C0 > - , list30_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30 > - > -{ - typedef list31_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31 - > -struct list32_c - : l_item< - long_<32> - , integral_c< T,C0 > - , list31_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31 > - > -{ - typedef list32_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32 - > -struct list33_c - : l_item< - long_<33> - , integral_c< T,C0 > - , list32_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32 > - > -{ - typedef list33_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33 - > -struct list34_c - : l_item< - long_<34> - , integral_c< T,C0 > - , list33_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33 > - > -{ - typedef list34_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34 - > -struct list35_c - : l_item< - long_<35> - , integral_c< T,C0 > - , list34_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34 > - > -{ - typedef list35_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35 - > -struct list36_c - : l_item< - long_<36> - , integral_c< T,C0 > - , list35_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35 > - > -{ - typedef list36_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36 - > -struct list37_c - : l_item< - long_<37> - , integral_c< T,C0 > - , list36_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36 > - > -{ - typedef list37_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37 - > -struct list38_c - : l_item< - long_<38> - , integral_c< T,C0 > - , list37_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37 > - > -{ - typedef list38_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38 - > -struct list39_c - : l_item< - long_<39> - , integral_c< T,C0 > - , list38_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38 > - > -{ - typedef list39_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39 - > -struct list40_c - : l_item< - long_<40> - , integral_c< T,C0 > - , list39_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39 > - > -{ - typedef list40_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list50.hpp b/src/boost/boost/mpl/list/aux_/preprocessed/plain/list50.hpp deleted file mode 100644 index 33edb5b69..000000000 --- a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list50.hpp +++ /dev/null @@ -1,229 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/list/list50.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40 - > -struct list41 - : l_item< - long_<41> - , T0 - , list40< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40 > - > -{ - typedef list41 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41 - > -struct list42 - : l_item< - long_<42> - , T0 - , list41< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41 > - > -{ - typedef list42 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42 - > -struct list43 - : l_item< - long_<43> - , T0 - , list42< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42 > - > -{ - typedef list43 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43 - > -struct list44 - : l_item< - long_<44> - , T0 - , list43< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43 > - > -{ - typedef list44 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - > -struct list45 - : l_item< - long_<45> - , T0 - , list44< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44 > - > -{ - typedef list45 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45 - > -struct list46 - : l_item< - long_<46> - , T0 - , list45< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45 > - > -{ - typedef list46 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46 - > -struct list47 - : l_item< - long_<47> - , T0 - , list46< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46 > - > -{ - typedef list47 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47 - > -struct list48 - : l_item< - long_<48> - , T0 - , list47< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47 > - > -{ - typedef list48 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47, typename T48 - > -struct list49 - : l_item< - long_<49> - , T0 - , list48< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48 > - > -{ - typedef list49 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47, typename T48, typename T49 - > -struct list50 - : l_item< - long_<50> - , T0 - , list49< T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49 > - > -{ - typedef list50 type; -}; - -}} diff --git a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp b/src/boost/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp deleted file mode 100644 index f9136cf15..000000000 --- a/src/boost/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp +++ /dev/null @@ -1,203 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/list/list50_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - > -struct list41_c - : l_item< - long_<41> - , integral_c< T,C0 > - , list40_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40 > - > -{ - typedef list41_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41 - > -struct list42_c - : l_item< - long_<42> - , integral_c< T,C0 > - , list41_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41 > - > -{ - typedef list42_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42 - > -struct list43_c - : l_item< - long_<43> - , integral_c< T,C0 > - , list42_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42 > - > -{ - typedef list43_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43 - > -struct list44_c - : l_item< - long_<44> - , integral_c< T,C0 > - , list43_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43 > - > -{ - typedef list44_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44 - > -struct list45_c - : l_item< - long_<45> - , integral_c< T,C0 > - , list44_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44 > - > -{ - typedef list45_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45 - > -struct list46_c - : l_item< - long_<46> - , integral_c< T,C0 > - , list45_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45 > - > -{ - typedef list46_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46 - > -struct list47_c - : l_item< - long_<47> - , integral_c< T,C0 > - , list46_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45,C46 > - > -{ - typedef list47_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47 - > -struct list48_c - : l_item< - long_<48> - , integral_c< T,C0 > - , list47_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45,C46,C47 > - > -{ - typedef list48_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48 - > -struct list49_c - : l_item< - long_<49> - , integral_c< T,C0 > - , list48_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45,C46,C47,C48 > - > -{ - typedef list49_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48, T C49 - > -struct list50_c - : l_item< - long_<50> - , integral_c< T,C0 > - , list49_c< T,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45,C46,C47,C48,C49 > - > -{ - typedef list50_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/list/aux_/push_back.hpp b/src/boost/boost/mpl/list/aux_/push_back.hpp deleted file mode 100644 index 3b45912af..000000000 --- a/src/boost/boost/mpl/list/aux_/push_back.hpp +++ /dev/null @@ -1,36 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_PUSH_BACK_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_PUSH_BACK_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include - -namespace boost { namespace mpl { - -template< typename Tag > struct has_push_back_impl; - -template<> -struct has_push_back_impl< aux::list_tag > -{ - template< typename Seq > struct apply - : false_ - { - }; -}; - -}} - -#endif // BOOST_MPL_LIST_AUX_PUSH_BACK_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/push_front.hpp b/src/boost/boost/mpl/list/aux_/push_front.hpp deleted file mode 100644 index 563de0865..000000000 --- a/src/boost/boost/mpl/list/aux_/push_front.hpp +++ /dev/null @@ -1,39 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_PUSH_FRONT_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_PUSH_FRONT_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template<> -struct push_front_impl< aux::list_tag > -{ - template< typename List, typename T > struct apply - { - typedef l_item< - typename next::type - , T - , typename List::type - > type; - }; -}; - -}} - -#endif // BOOST_MPL_LIST_AUX_PUSH_FRONT_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/size.hpp b/src/boost/boost/mpl/list/aux_/size.hpp deleted file mode 100644 index 6ae4dca83..000000000 --- a/src/boost/boost/mpl/list/aux_/size.hpp +++ /dev/null @@ -1,33 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_SIZE_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_SIZE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { - -template<> -struct size_impl< aux::list_tag > -{ - template< typename List > struct apply - : List::size - { - }; -}; - -}} - -#endif // BOOST_MPL_LIST_AUX_SIZE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/aux_/tag.hpp b/src/boost/boost/mpl/list/aux_/tag.hpp deleted file mode 100644 index ebe81ec7b..000000000 --- a/src/boost/boost/mpl/list/aux_/tag.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_LIST_AUX_TAG_HPP_INCLUDED -#define BOOST_MPL_LIST_AUX_TAG_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { namespace aux { - -struct list_tag; -struct l_iter_tag; - -}}} - -#endif // BOOST_MPL_LIST_AUX_TAG_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list0.hpp b/src/boost/boost/mpl/list/list0.hpp deleted file mode 100644 index 5490cede0..000000000 --- a/src/boost/boost/mpl/list/list0.hpp +++ /dev/null @@ -1,42 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST0_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST0_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< typename Dummy = na > struct list0; - -template<> struct list0 - : l_end -{ - typedef l_end type; -}; - -}} - -#endif // BOOST_MPL_LIST_LIST0_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list0_c.hpp b/src/boost/boost/mpl/list/list0_c.hpp deleted file mode 100644 index d5096c568..000000000 --- a/src/boost/boost/mpl/list/list0_c.hpp +++ /dev/null @@ -1,31 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST0_C_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST0_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { - -template< typename T > struct list0_c - : l_end -{ - typedef l_end type; - typedef T value_type; -}; - -}} - -#endif // BOOST_MPL_LIST_LIST0_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list10.hpp b/src/boost/boost/mpl/list/list10.hpp deleted file mode 100644 index b14cdcb50..000000000 --- a/src/boost/boost/mpl/list/list10.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST10_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST10_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list10.hpp -# include - -#else - -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(1, 10, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_LIST_LIST10_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list10_c.hpp b/src/boost/boost/mpl/list/list10_c.hpp deleted file mode 100644 index 3f3db75ad..000000000 --- a/src/boost/boost/mpl/list/list10_c.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST10_C_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST10_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list10_c.hpp -# include - -#else - -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(1, 10, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_LIST_LIST10_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list20.hpp b/src/boost/boost/mpl/list/list20.hpp deleted file mode 100644 index f993f0841..000000000 --- a/src/boost/boost/mpl/list/list20.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST20_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST20_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list20.hpp -# include - -#else - -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(11, 20, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_LIST_LIST20_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list20_c.hpp b/src/boost/boost/mpl/list/list20_c.hpp deleted file mode 100644 index b0ff24055..000000000 --- a/src/boost/boost/mpl/list/list20_c.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST20_C_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST20_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list20_c.hpp -# include - -#else - -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(11, 20, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_LIST_LIST20_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list30.hpp b/src/boost/boost/mpl/list/list30.hpp deleted file mode 100644 index 423a779f7..000000000 --- a/src/boost/boost/mpl/list/list30.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST30_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST30_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list30.hpp -# include - -#else - -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(21, 30, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_LIST_LIST30_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list30_c.hpp b/src/boost/boost/mpl/list/list30_c.hpp deleted file mode 100644 index ae2261db9..000000000 --- a/src/boost/boost/mpl/list/list30_c.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST30_C_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST30_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list30_c.hpp -# include - -#else - -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(21, 30, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_LIST_LIST30_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list40.hpp b/src/boost/boost/mpl/list/list40.hpp deleted file mode 100644 index 71a142144..000000000 --- a/src/boost/boost/mpl/list/list40.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST40_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST40_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list40.hpp -# include - -#else - -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(31, 40, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_LIST_LIST40_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list40_c.hpp b/src/boost/boost/mpl/list/list40_c.hpp deleted file mode 100644 index 132d5ee5f..000000000 --- a/src/boost/boost/mpl/list/list40_c.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST40_C_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST40_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list40_c.hpp -# include - -#else - -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(31, 40, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_LIST_LIST40_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list50.hpp b/src/boost/boost/mpl/list/list50.hpp deleted file mode 100644 index e4551a8e7..000000000 --- a/src/boost/boost/mpl/list/list50.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST50_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST50_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list50.hpp -# include - -#else - -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(41, 50, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_LIST_LIST50_HPP_INCLUDED diff --git a/src/boost/boost/mpl/list/list50_c.hpp b/src/boost/boost/mpl/list/list50_c.hpp deleted file mode 100644 index 37b32e86b..000000000 --- a/src/boost/boost/mpl/list/list50_c.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_LIST_LIST50_C_HPP_INCLUDED -#define BOOST_MPL_LIST_LIST50_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER list50_c.hpp -# include - -#else - -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(41, 50, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_LIST_LIST50_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/long.hpp b/src/boost/boost/mpl/long.hpp deleted file mode 100644 index 641bccd9a..000000000 --- a/src/boost/boost/mpl/long.hpp +++ /dev/null @@ -1,22 +0,0 @@ - -#ifndef BOOST_MPL_LONG_HPP_INCLUDED -#define BOOST_MPL_LONG_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include - -#define AUX_WRAPPER_VALUE_TYPE long -#include - -#endif // BOOST_MPL_LONG_HPP_INCLUDED diff --git a/src/boost/boost/mpl/long_fwd.hpp b/src/boost/boost/mpl/long_fwd.hpp deleted file mode 100644 index e82684112..000000000 --- a/src/boost/boost/mpl/long_fwd.hpp +++ /dev/null @@ -1,27 +0,0 @@ - -#ifndef BOOST_MPL_LONG_FWD_HPP_INCLUDED -#define BOOST_MPL_LONG_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN - -template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct long_; - -BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE -BOOST_MPL_AUX_ADL_BARRIER_DECL(long_) - -#endif // BOOST_MPL_LONG_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/minus.hpp b/src/boost/boost/mpl/minus.hpp deleted file mode 100644 index cc836ed22..000000000 --- a/src/boost/boost/mpl/minus.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_MINUS_HPP_INCLUDED -#define BOOST_MPL_MINUS_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#define AUX778076_OP_NAME minus -#define AUX778076_OP_TOKEN - -#include - -#endif // BOOST_MPL_MINUS_HPP_INCLUDED diff --git a/src/boost/boost/mpl/negate.hpp b/src/boost/boost/mpl/negate.hpp deleted file mode 100644 index c662fe3bf..000000000 --- a/src/boost/boost/mpl/negate.hpp +++ /dev/null @@ -1,81 +0,0 @@ - -#ifndef BOOST_MPL_NEGATE_HPP_INCLUDED -#define BOOST_MPL_NEGATE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< typename Tag > struct negate_impl; - -template< typename T > struct negate_tag -{ - typedef typename T::tag type; -}; - -template< - typename BOOST_MPL_AUX_NA_PARAM(N) - > -struct negate -#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG) - : negate_impl< - typename negate_tag::type - >::template apply::type -#else - : aux::msvc_eti_base< typename apply_wrap1< - negate_impl< typename negate_tag::type > - , N - >::type >::type -#endif -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1, negate, (N)) -}; - -BOOST_MPL_AUX_NA_SPEC(1, negate) - - -#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC) -namespace aux { -template< typename T, T n > struct negate_wknd -{ - BOOST_STATIC_CONSTANT(T, value = -n); - typedef integral_c type; -}; -} -#endif - -template<> -struct negate_impl -{ -#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC) - template< typename N > struct apply - : aux::negate_wknd< typename N::value_type, N::value > -#else - template< typename N > struct apply - : integral_c< typename N::value_type, (-N::value) > -#endif - { - }; -}; - -}} - -#endif // BOOST_MPL_NEGATE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/not_equal_to.hpp b/src/boost/boost/mpl/not_equal_to.hpp deleted file mode 100644 index d29295c75..000000000 --- a/src/boost/boost/mpl/not_equal_to.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED -#define BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#define AUX778076_OP_NAME not_equal_to -#define AUX778076_OP_TOKEN != -#include - -#endif // BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED diff --git a/src/boost/boost/mpl/numeric_cast.hpp b/src/boost/boost/mpl/numeric_cast.hpp index 2150e980a..4b9ffd5eb 100644 --- a/src/boost/boost/mpl/numeric_cast.hpp +++ b/src/boost/boost/mpl/numeric_cast.hpp @@ -21,7 +21,7 @@ // resolves conflicts with 'boost::numeric_cast' function template. // use it in your own code _only_ if you care about compatibility with // these outdated compilers! -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570) ) +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x570) ) # define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast_ #else # define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast diff --git a/src/boost/boost/mpl/or.hpp b/src/boost/boost/mpl/or.hpp index 9434f9305..0a6bec663 100644 --- a/src/boost/boost/mpl/or.hpp +++ b/src/boost/boost/mpl/or.hpp @@ -29,7 +29,7 @@ // 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(or)' // has to be checked in a separate condition, otherwise GCC complains // about 'or' being an alternative token -#if defined(_MSC_VER) && !defined(__clang__) +#if defined(_MSC_VER) #ifndef __GCCXML__ #if defined(or) # pragma push_macro("or") diff --git a/src/boost/boost/mpl/pair.hpp b/src/boost/boost/mpl/pair.hpp deleted file mode 100644 index 37a3c9877..000000000 --- a/src/boost/boost/mpl/pair.hpp +++ /dev/null @@ -1,70 +0,0 @@ - -#ifndef BOOST_MPL_PAIR_HPP_INCLUDED -#define BOOST_MPL_PAIR_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(T1) - , typename BOOST_MPL_AUX_NA_PARAM(T2) - > -struct pair -{ - typedef pair type; - typedef T1 first; - typedef T2 second; - - BOOST_MPL_AUX_LAMBDA_SUPPORT(2,pair,(T1,T2)) -}; - -template< - typename BOOST_MPL_AUX_NA_PARAM(P) - > -struct first -{ -#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) - typedef typename P::first type; -#else - typedef typename aux::msvc_eti_base

::first type; -#endif - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,first,(P)) -}; - -template< - typename BOOST_MPL_AUX_NA_PARAM(P) - > -struct second -{ -#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) - typedef typename P::second type; -#else - typedef typename aux::msvc_eti_base

::second type; -#endif - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,second,(P)) -}; - - -BOOST_MPL_AUX_NA_SPEC_NO_ETI(2, pair) -BOOST_MPL_AUX_NA_SPEC(1, first) -BOOST_MPL_AUX_NA_SPEC(1, second) - -}} - -#endif // BOOST_MPL_PAIR_HPP_INCLUDED diff --git a/src/boost/boost/mpl/plus.hpp b/src/boost/boost/mpl/plus.hpp deleted file mode 100644 index d5b92c050..000000000 --- a/src/boost/boost/mpl/plus.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_PLUS_HPP_INCLUDED -#define BOOST_MPL_PLUS_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#define AUX778076_OP_NAME plus -#define AUX778076_OP_TOKEN + -#include - -#endif // BOOST_MPL_PLUS_HPP_INCLUDED diff --git a/src/boost/boost/mpl/pop_back_fwd.hpp b/src/boost/boost/mpl/pop_back_fwd.hpp deleted file mode 100644 index 3837894a0..000000000 --- a/src/boost/boost/mpl/pop_back_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_POP_BACK_FWD_HPP_INCLUDED -#define BOOST_MPL_POP_BACK_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct pop_back_impl; -template< typename Sequence > struct pop_back; - -}} - -#endif // BOOST_MPL_POP_BACK_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/pop_front_fwd.hpp b/src/boost/boost/mpl/pop_front_fwd.hpp deleted file mode 100644 index c0387d0b7..000000000 --- a/src/boost/boost/mpl/pop_front_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED -#define BOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct pop_front_impl; -template< typename Sequence > struct pop_front; - -}} - -#endif // BOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/prior.hpp b/src/boost/boost/mpl/prior.hpp deleted file mode 100644 index 5519abca7..000000000 --- a/src/boost/boost/mpl/prior.hpp +++ /dev/null @@ -1,19 +0,0 @@ - -#ifndef BOOST_MPL_PRIOR_HPP_INCLUDED -#define BOOST_MPL_PRIOR_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include - -#endif // BOOST_MPL_PRIOR_HPP_INCLUDED diff --git a/src/boost/boost/mpl/push_back.hpp b/src/boost/boost/mpl/push_back.hpp deleted file mode 100644 index cafaa05e7..000000000 --- a/src/boost/boost/mpl/push_back.hpp +++ /dev/null @@ -1,53 +0,0 @@ - -#ifndef BOOST_MPL_PUSH_BACK_HPP_INCLUDED -#define BOOST_MPL_PUSH_BACK_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(T) - > -struct push_back - : push_back_impl< typename sequence_tag::type > - ::template apply< Sequence,T > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(2,push_back,(Sequence,T)) -}; - - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct has_push_back - : has_push_back_impl< typename sequence_tag::type > - ::template apply< Sequence > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,has_push_back,(Sequence)) -}; - - -BOOST_MPL_AUX_NA_SPEC(2, push_back) -BOOST_MPL_AUX_NA_SPEC(1, has_push_back) - -}} - -#endif // BOOST_MPL_PUSH_BACK_HPP_INCLUDED diff --git a/src/boost/boost/mpl/push_back_fwd.hpp b/src/boost/boost/mpl/push_back_fwd.hpp deleted file mode 100644 index 827eb714f..000000000 --- a/src/boost/boost/mpl/push_back_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED -#define BOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct push_back_impl; -template< typename Sequence, typename T > struct push_back; - -}} - -#endif // BOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/push_front.hpp b/src/boost/boost/mpl/push_front.hpp deleted file mode 100644 index 655bcb2dc..000000000 --- a/src/boost/boost/mpl/push_front.hpp +++ /dev/null @@ -1,52 +0,0 @@ - -#ifndef BOOST_MPL_PUSH_FRONT_HPP_INCLUDED -#define BOOST_MPL_PUSH_FRONT_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(T) - > -struct push_front - : push_front_impl< typename sequence_tag::type > - ::template apply< Sequence,T > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(2,push_front,(Sequence,T)) -}; - - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct has_push_front - : has_push_front_impl< typename sequence_tag::type > - ::template apply< Sequence > -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,has_push_front,(Sequence)) -}; - -BOOST_MPL_AUX_NA_SPEC(2, push_front) -BOOST_MPL_AUX_NA_SPEC(1, has_push_front) - -}} - -#endif // BOOST_MPL_PUSH_FRONT_HPP_INCLUDED diff --git a/src/boost/boost/mpl/push_front_fwd.hpp b/src/boost/boost/mpl/push_front_fwd.hpp deleted file mode 100644 index 77bb79a90..000000000 --- a/src/boost/boost/mpl/push_front_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED -#define BOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct push_front_impl; -template< typename Sequence, typename T > struct push_front; - -}} - -#endif // BOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/remove_if.hpp b/src/boost/boost/mpl/remove_if.hpp deleted file mode 100644 index 3c572c4ff..000000000 --- a/src/boost/boost/mpl/remove_if.hpp +++ /dev/null @@ -1,83 +0,0 @@ - -#ifndef BOOST_MPL_REMOVE_IF_HPP_INCLUDED -#define BOOST_MPL_REMOVE_IF_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -namespace aux { - -template< typename Pred, typename InsertOp > struct remove_if_helper -{ - template< typename Sequence, typename U > struct apply - { - typedef typename eval_if< - typename apply1::type - , identity - , apply2 - >::type type; - }; -}; - -template< - typename Sequence - , typename Predicate - , typename Inserter - > -struct remove_if_impl - : fold< - Sequence - , typename Inserter::state - , protect< aux::remove_if_helper< - typename lambda::type - , typename Inserter::operation - > > - > -{ -}; - -template< - typename Sequence - , typename Predicate - , typename Inserter - > -struct reverse_remove_if_impl - : reverse_fold< - Sequence - , typename Inserter::state - , protect< aux::remove_if_helper< - typename lambda::type - , typename Inserter::operation - > > - > -{ -}; - -} // namespace aux - -BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(3, remove_if) - -}} - -#endif // BOOST_MPL_REMOVE_IF_HPP_INCLUDED diff --git a/src/boost/boost/mpl/reverse_fold.hpp b/src/boost/boost/mpl/reverse_fold.hpp deleted file mode 100644 index 2f2b049f4..000000000 --- a/src/boost/boost/mpl/reverse_fold.hpp +++ /dev/null @@ -1,50 +0,0 @@ - -#ifndef BOOST_MPL_REVERSE_FOLD_HPP_INCLUDED -#define BOOST_MPL_REVERSE_FOLD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// Copyright David Abrahams 2001-2002 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(State) - , typename BOOST_MPL_AUX_NA_PARAM(BackwardOp) - , typename ForwardOp = arg<1> - > -struct reverse_fold -{ - typedef typename aux::reverse_fold_impl< - ::boost::mpl::O1_size::value - , typename begin::type - , typename end::type - , State - , BackwardOp - , ForwardOp - >::state type; - - BOOST_MPL_AUX_LAMBDA_SUPPORT(3,reverse_fold,(Sequence,State,BackwardOp)) -}; - -BOOST_MPL_AUX_NA_SPEC(3, reverse_fold) - -}} - -#endif // BOOST_MPL_REVERSE_FOLD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/same_as.hpp b/src/boost/boost/mpl/same_as.hpp deleted file mode 100644 index eec63540a..000000000 --- a/src/boost/boost/mpl/same_as.hpp +++ /dev/null @@ -1,55 +0,0 @@ - -#ifndef BOOST_MPL_SAME_AS_HPP_INCLUDED -#define BOOST_MPL_SAME_AS_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include - -#include - -namespace boost { namespace mpl { - -template< typename T1 > -struct same_as -{ - template< typename T2 > struct apply -#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : is_same - { -#else - { - typedef typename is_same::type type; -#endif - }; -}; - -template< typename T1 > -struct not_same_as -{ - template< typename T2 > struct apply -#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : not_< is_same > - { -#else - { - typedef typename not_< is_same >::type type; -#endif - }; -}; - -}} - -#endif // BOOST_MPL_SAME_AS_HPP_INCLUDED diff --git a/src/boost/boost/mpl/sequence_tag.hpp b/src/boost/boost/mpl/sequence_tag.hpp deleted file mode 100644 index ef2998da2..000000000 --- a/src/boost/boost/mpl/sequence_tag.hpp +++ /dev/null @@ -1,124 +0,0 @@ - -#ifndef BOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED -#define BOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -// agurt, 27/nov/02: have to use a simplistic 'sequence_tag' implementation -// on MSVC to avoid dreadful "internal structure overflow" error -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) \ - || defined(BOOST_MPL_CFG_NO_HAS_XXX) - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct sequence_tag -{ - typedef typename Sequence::tag type; -}; - -#elif BOOST_WORKAROUND(BOOST_MSVC, == 1300) - -// agurt, 07/feb/03: workaround for what seems to be MSVC 7.0-specific ETI issue - -namespace aux { - -template< bool > -struct sequence_tag_impl -{ - template< typename Sequence > struct result_ - { - typedef typename Sequence::tag type; - }; -}; - -template<> -struct sequence_tag_impl -{ - template< typename Sequence > struct result_ - { - typedef int type; - }; -}; - -} // namespace aux - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct sequence_tag - : aux::sequence_tag_impl< !aux::is_msvc_eti_arg::value > - ::template result_ -{ -}; - -#else - -namespace aux { - -template< bool has_tag_, bool has_begin_ > -struct sequence_tag_impl -{ - // agurt 24/nov/02: MSVC 6.5 gets confused in 'sequence_tag_impl' - // specialization below, if we name it 'result_' here - template< typename Sequence > struct result2_; -}; - -# define AUX_CLASS_SEQUENCE_TAG_SPEC(has_tag, has_begin, result_type) \ -template<> struct sequence_tag_impl \ -{ \ - template< typename Sequence > struct result2_ \ - { \ - typedef result_type type; \ - }; \ -}; \ -/**/ - -AUX_CLASS_SEQUENCE_TAG_SPEC(true, true, typename Sequence::tag) -AUX_CLASS_SEQUENCE_TAG_SPEC(true, false, typename Sequence::tag) -AUX_CLASS_SEQUENCE_TAG_SPEC(false, true, nested_begin_end_tag) -AUX_CLASS_SEQUENCE_TAG_SPEC(false, false, non_sequence_tag) - -# undef AUX_CLASS_SEQUENCE_TAG_SPEC - -} // namespace aux - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct sequence_tag - : aux::sequence_tag_impl< - ::boost::mpl::aux::has_tag::value - , ::boost::mpl::aux::has_begin::value - >::template result2_ -{ -}; - -#endif // BOOST_MSVC - -BOOST_MPL_AUX_NA_SPEC(1, sequence_tag) - -}} - -#endif // BOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED diff --git a/src/boost/boost/mpl/sequence_tag_fwd.hpp b/src/boost/boost/mpl/sequence_tag_fwd.hpp deleted file mode 100644 index 7fa4609e2..000000000 --- a/src/boost/boost/mpl/sequence_tag_fwd.hpp +++ /dev/null @@ -1,26 +0,0 @@ - -#ifndef BOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED -#define BOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -struct nested_begin_end_tag; -struct non_sequence_tag; - -template< typename Sequence > struct sequence_tag; - -}} - -#endif // BOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/size.hpp b/src/boost/boost/mpl/size.hpp deleted file mode 100644 index a406cea1a..000000000 --- a/src/boost/boost/mpl/size.hpp +++ /dev/null @@ -1,42 +0,0 @@ - -#ifndef BOOST_MPL_SIZE_HPP_INCLUDED -#define BOOST_MPL_SIZE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct size - : aux::msvc_eti_base< - typename size_impl< typename sequence_tag::type > - ::template apply< Sequence >::type - >::type -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1, size, (Sequence)) -}; - -BOOST_MPL_AUX_NA_SPEC(1, size) - -}} - -#endif // BOOST_MPL_SIZE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/size_fwd.hpp b/src/boost/boost/mpl/size_fwd.hpp deleted file mode 100644 index 204788d74..000000000 --- a/src/boost/boost/mpl/size_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_SIZE_FWD_HPP_INCLUDED -#define BOOST_MPL_SIZE_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -namespace boost { namespace mpl { - -template< typename Tag > struct size_impl; -template< typename Sequence > struct size; - -}} - -#endif // BOOST_MPL_SIZE_FWD_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector.hpp b/src/boost/boost/mpl/vector.hpp deleted file mode 100644 index bf2e97d28..000000000 --- a/src/boost/boost/mpl/vector.hpp +++ /dev/null @@ -1,57 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_HPP_INCLUDED -#define BOOST_MPL_VECTOR_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -# include - -# include -# include -# include - -#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING) -# define AUX778076_VECTOR_HEADER \ - BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE).hpp \ - /**/ -#else -# define AUX778076_VECTOR_HEADER \ - BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE)##.hpp \ - /**/ -#endif - -# include BOOST_PP_STRINGIZE(boost/mpl/vector/AUX778076_VECTOR_HEADER) -# undef AUX778076_VECTOR_HEADER -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector.hpp -# include - -#else - -# include - -# define AUX778076_SEQUENCE_NAME vector -# define AUX778076_SEQUENCE_LIMIT BOOST_MPL_LIMIT_VECTOR_SIZE -# include - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS -#endif // BOOST_MPL_VECTOR_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/O1_size.hpp b/src/boost/boost/mpl/vector/aux_/O1_size.hpp deleted file mode 100644 index 30baddc06..000000000 --- a/src/boost/boost/mpl/vector/aux_/O1_size.hpp +++ /dev/null @@ -1,56 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -template<> -struct O1_size_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - : Vector::size - { - }; -}; - -#else - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template< long N > -struct O1_size_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - : mpl::long_ - { - }; -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -}} - -#endif // BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/at.hpp b/src/boost/boost/mpl/vector/aux_/at.hpp deleted file mode 100644 index 5df3f563a..000000000 --- a/src/boost/boost/mpl/vector/aux_/at.hpp +++ /dev/null @@ -1,116 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -template< typename Vector, long n_ > -struct v_at_impl -{ - typedef long_< (Vector::lower_bound_::value + n_) > index_; - typedef __typeof__( Vector::item_(index_()) ) type; -}; - - -template< typename Vector, long n_ > -struct v_at - : aux::wrapped_type< typename v_at_impl::type > -{ -}; - -template<> -struct at_impl< aux::vector_tag > -{ - template< typename Vector, typename N > struct apply - : v_at< - Vector - , BOOST_MPL_AUX_VALUE_WKND(N)::value - > - { - }; -}; - -#else - -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) - -template< typename Vector, BOOST_MPL_AUX_NTTP_DECL(long, n_) > struct v_at; - -template< BOOST_MPL_AUX_NTTP_DECL(long, n_) > -struct at_impl< aux::vector_tag > -{ - template< typename Vector, typename N > struct apply -#if !defined(__BORLANDC__) - : v_at< - Vector - , BOOST_MPL_AUX_VALUE_WKND(N)::value - > - { -#else - { - typedef typename v_at< - Vector - , BOOST_MPL_AUX_VALUE_WKND(N)::value - >::type type; -#endif - }; -}; - -# else - -namespace aux { - -template< BOOST_MPL_AUX_NTTP_DECL(long, n_) > struct v_at_impl -{ - template< typename V > struct result_; -}; - -// to work around ETI, etc. -template<> struct v_at_impl<-1> -{ - template< typename V > struct result_ - { - typedef void_ type; - }; -}; - -} // namespace aux - -template< typename T, BOOST_MPL_AUX_NTTP_DECL(long, n_) > -struct v_at - : aux::v_at_impl::template result_ -{ -}; - -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -}} - -#endif // BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/back.hpp b/src/boost/boost/mpl/vector/aux_/back.hpp deleted file mode 100644 index 9fc163e9c..000000000 --- a/src/boost/boost/mpl/vector/aux_/back.hpp +++ /dev/null @@ -1,59 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -template<> -struct back_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - : v_at< - Vector - , prior::type::value - > - { - }; -}; - -#else - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template< long n_ > -struct back_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -}} - -#endif // BOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/begin_end.hpp b/src/boost/boost/mpl/vector/aux_/begin_end.hpp deleted file mode 100644 index 91df60bf1..000000000 --- a/src/boost/boost/mpl/vector/aux_/begin_end.hpp +++ /dev/null @@ -1,49 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -# include -# include -# include - -namespace boost { namespace mpl { - -template<> -struct begin_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef v_iter type; - }; -}; - -template<> -struct end_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef v_iter type; - }; -}; - -}} - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -#endif // BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/clear.hpp b/src/boost/boost/mpl/vector/aux_/clear.hpp deleted file mode 100644 index 8037cb27c..000000000 --- a/src/boost/boost/mpl/vector/aux_/clear.hpp +++ /dev/null @@ -1,55 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -template<> -struct clear_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -#else - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template< long N > -struct clear_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -}} - -#endif // BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/empty.hpp b/src/boost/boost/mpl/vector/aux_/empty.hpp deleted file mode 100644 index 0976fa7ff..000000000 --- a/src/boost/boost/mpl/vector/aux_/empty.hpp +++ /dev/null @@ -1,68 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -template<> -struct empty_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - : is_same< - typename Vector::lower_bound_ - , typename Vector::upper_bound_ - > - { - }; -}; - -#else - -template<> -struct empty_impl< aux::vector_tag<0> > -{ - template< typename Vector > struct apply - : true_ - { - }; -}; - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template< long N > -struct empty_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -}} - -#endif // BOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/front.hpp b/src/boost/boost/mpl/vector/aux_/front.hpp deleted file mode 100644 index 0315228a3..000000000 --- a/src/boost/boost/mpl/vector/aux_/front.hpp +++ /dev/null @@ -1,56 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2008 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -template<> -struct front_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - : v_at - { - }; -}; - -#else - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template< BOOST_MPL_AUX_NTTP_DECL(long, n_) > -struct front_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -}} - -#endif // BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/include_preprocessed.hpp b/src/boost/boost/mpl/vector/aux_/include_preprocessed.hpp deleted file mode 100644 index 1f807b01b..000000000 --- a/src/boost/boost/mpl/vector/aux_/include_preprocessed.hpp +++ /dev/null @@ -1,55 +0,0 @@ - -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION - -// Copyright Aleksey Gurtovoy 2000-2006 -// -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// See http://www.boost.org/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include - -#include -#include - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) -# define AUX778076_INCLUDE_DIR typeof_based -#elif defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) -# define AUX778076_INCLUDE_DIR no_ctps -#else -# define AUX778076_INCLUDE_DIR plain -#endif - -#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING) -# define AUX778076_HEADER \ - AUX778076_INCLUDE_DIR/BOOST_MPL_PREPROCESSED_HEADER \ -/**/ -#else -# define AUX778076_HEADER \ - BOOST_PP_CAT(AUX778076_INCLUDE_DIR,/)##BOOST_MPL_PREPROCESSED_HEADER \ -/**/ -#endif - - -#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700)) -# define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(boost/mpl/vector/aux_/preprocessed/AUX778076_HEADER) -# include AUX778076_INCLUDE_STRING -# undef AUX778076_INCLUDE_STRING -#else -# include BOOST_PP_STRINGIZE(boost/mpl/vector/aux_/preprocessed/AUX778076_HEADER) -#endif - -# undef AUX778076_HEADER -# undef AUX778076_INCLUDE_DIR - -#undef BOOST_MPL_PREPROCESSED_HEADER diff --git a/src/boost/boost/mpl/vector/aux_/item.hpp b/src/boost/boost/mpl/vector/aux_/item.hpp deleted file mode 100644 index a81efea50..000000000 --- a/src/boost/boost/mpl/vector/aux_/item.hpp +++ /dev/null @@ -1,103 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -template< - typename T - , typename Base - , int at_front = 0 - > -struct v_item - : Base -{ - typedef typename Base::upper_bound_ index_; - typedef typename next::type upper_bound_; - typedef typename next::type size; - typedef Base base; - typedef v_item type; - - // agurt 10/sep/04: MWCW <= 9.3 workaround here and below; the compiler - // breaks if using declaration comes _before_ the new overload - static aux::type_wrapper item_(index_); - using Base::item_; -}; - -template< - typename T - , typename Base - > -struct v_item - : Base -{ - typedef typename prior::type index_; - typedef index_ lower_bound_; - typedef typename next::type size; - typedef Base base; - typedef v_item type; - - static aux::type_wrapper item_(index_); - using Base::item_; -}; - -// "erasure" item -template< - typename Base - , int at_front - > -struct v_mask - : Base -{ - typedef typename prior::type index_; - typedef index_ upper_bound_; - typedef typename prior::type size; - typedef Base base; - typedef v_mask type; - - static aux::type_wrapper item_(index_); - using Base::item_; -}; - -template< - typename Base - > -struct v_mask - : Base -{ - typedef typename Base::lower_bound_ index_; - typedef typename next::type lower_bound_; - typedef typename prior::type size; - typedef Base base; - typedef v_mask type; - - static aux::type_wrapper item_(index_); - using Base::item_; -}; - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -}} - -#endif // BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/iterator.hpp b/src/boost/boost/mpl/vector/aux_/iterator.hpp deleted file mode 100644 index 0ee4a441c..000000000 --- a/src/boost/boost/mpl/vector/aux_/iterator.hpp +++ /dev/null @@ -1,130 +0,0 @@ - -#ifndef BOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED -#define BOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -template< - typename Vector - , BOOST_MPL_AUX_NTTP_DECL(long, n_) - > -struct v_iter -{ - typedef aux::v_iter_tag tag; - typedef random_access_iterator_tag category; - typedef typename v_at::type type; - - typedef Vector vector_; - typedef mpl::long_ pos; - -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - enum { - next_ = n_ + 1 - , prior_ = n_ - 1 - , pos_ = n_ - }; - - typedef v_iter next; - typedef v_iter prior; -#endif - -}; - - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template< - typename Vector - , BOOST_MPL_AUX_NTTP_DECL(long, n_) - > -struct next< v_iter > -{ - typedef v_iter type; -}; - -template< - typename Vector - , BOOST_MPL_AUX_NTTP_DECL(long, n_) - > -struct prior< v_iter > -{ - typedef v_iter type; -}; - -template< - typename Vector - , BOOST_MPL_AUX_NTTP_DECL(long, n_) - , typename Distance - > -struct advance< v_iter,Distance> -{ - typedef v_iter< - Vector - , (n_ + BOOST_MPL_AUX_NESTED_VALUE_WKND(long, Distance)) - > type; -}; - -template< - typename Vector - , BOOST_MPL_AUX_NTTP_DECL(long, n_) - , BOOST_MPL_AUX_NTTP_DECL(long, m_) - > -struct distance< v_iter, v_iter > - : mpl::long_<(m_ - n_)> -{ -}; - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template<> struct advance_impl -{ - template< typename Iterator, typename N > struct apply - { - enum { pos_ = Iterator::pos_, n_ = N::value }; - typedef v_iter< - typename Iterator::vector_ - , (pos_ + n_) - > type; - }; -}; - -template<> struct distance_impl -{ - template< typename Iter1, typename Iter2 > struct apply - { - enum { pos1_ = Iter1::pos_, pos2_ = Iter2::pos_ }; - typedef long_<( pos2_ - pos1_ )> type; - BOOST_STATIC_CONSTANT(long, value = ( pos2_ - pos1_ )); - }; -}; - -#endif - -}} - -#endif // BOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/numbered.hpp b/src/boost/boost/mpl/vector/aux_/numbered.hpp deleted file mode 100644 index 1d3d2b287..000000000 --- a/src/boost/boost/mpl/vector/aux_/numbered.hpp +++ /dev/null @@ -1,218 +0,0 @@ - -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION - -#if defined(BOOST_PP_IS_ITERATING) - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -#define i_ BOOST_PP_FRAME_ITERATION(1) - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -# define AUX778076_VECTOR_TAIL(vector, i_, T) \ - BOOST_PP_CAT(vector,i_)< \ - BOOST_PP_ENUM_PARAMS(i_, T) \ - > \ - /**/ - -#if i_ > 0 -template< - BOOST_PP_ENUM_PARAMS(i_, typename T) - > -struct BOOST_PP_CAT(vector,i_) - : v_item< - BOOST_PP_CAT(T,BOOST_PP_DEC(i_)) - , AUX778076_VECTOR_TAIL(vector,BOOST_PP_DEC(i_),T) - > -{ - typedef BOOST_PP_CAT(vector,i_) type; -}; -#endif - -# undef AUX778076_VECTOR_TAIL - -#else // "brute force" implementation - -# if i_ > 0 - -template< - BOOST_PP_ENUM_PARAMS(i_, typename T) - > -struct BOOST_PP_CAT(vector,i_) -{ - typedef aux::vector_tag tag; - typedef BOOST_PP_CAT(vector,i_) type; - -# define AUX778076_VECTOR_ITEM(unused, i_, unused2) \ - typedef BOOST_PP_CAT(T,i_) BOOST_PP_CAT(item,i_); \ - /**/ - - BOOST_PP_REPEAT(i_, AUX778076_VECTOR_ITEM, unused) -# undef AUX778076_VECTOR_ITEM - typedef void_ BOOST_PP_CAT(item,i_); - typedef BOOST_PP_CAT(T,BOOST_PP_DEC(i_)) back; - - // Borland forces us to use 'type' here (instead of the class name) - typedef v_iter begin; - typedef v_iter end; -}; - -template<> -struct push_front_impl< aux::vector_tag > -{ - template< typename Vector, typename T > struct apply - { - typedef BOOST_PP_CAT(vector,i_)< - T - BOOST_PP_COMMA_IF(BOOST_PP_DEC(i_)) - BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(i_), typename Vector::item) - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef BOOST_PP_CAT(vector,BOOST_PP_DEC(i_))< - BOOST_PP_ENUM_SHIFTED_PARAMS(i_, typename Vector::item) - > type; - }; -}; - - -template<> -struct push_back_impl< aux::vector_tag > -{ - template< typename Vector, typename T > struct apply - { - typedef BOOST_PP_CAT(vector,i_)< - BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(i_), typename Vector::item) - BOOST_PP_COMMA_IF(BOOST_PP_DEC(i_)) - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef BOOST_PP_CAT(vector,BOOST_PP_DEC(i_))< - BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(i_), typename Vector::item) - > type; - }; -}; - -# endif // i_ > 0 - -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) - -template< typename V > -struct v_at -{ - typedef typename V::BOOST_PP_CAT(item,i_) type; -}; - -# else - -namespace aux { -template<> struct v_at_impl -{ - template< typename V_ > struct result_ - { - typedef typename V_::BOOST_PP_CAT(item,i_) type; - }; -}; -} - -template<> -struct at_impl< aux::vector_tag > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -#if i_ > 0 -template<> -struct front_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; -#endif - -template<> -struct size_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - : long_ - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag > - : size_impl< aux::vector_tag > -{ -}; - -template<> -struct clear_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -#undef i_ - -#endif // BOOST_PP_IS_ITERATING diff --git a/src/boost/boost/mpl/vector/aux_/numbered_c.hpp b/src/boost/boost/mpl/vector/aux_/numbered_c.hpp deleted file mode 100644 index 1083814a4..000000000 --- a/src/boost/boost/mpl/vector/aux_/numbered_c.hpp +++ /dev/null @@ -1,77 +0,0 @@ - -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION - -#if defined(BOOST_PP_IS_ITERATING) - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include - -#define i_ BOOST_PP_FRAME_ITERATION(1) - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -# define AUX778076_VECTOR_TAIL(vector, i_, C) \ - BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) \ - /**/ - -#if i_ > 0 -template< - typename T - , BOOST_PP_ENUM_PARAMS(i_, T C) - > -struct BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) - : v_item< - integral_c - , AUX778076_VECTOR_TAIL(vector,BOOST_PP_DEC(i_),C) - > -{ - typedef BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) type; - typedef T value_type; -}; -#endif - -# undef AUX778076_VECTOR_TAIL - -#else // "brute force" implementation - -# define AUX778076_VECTOR_C_PARAM_FUNC(unused, i_, param) \ - BOOST_PP_COMMA_IF(i_) \ - integral_c \ - /**/ - -template< - typename T - , BOOST_PP_ENUM_PARAMS(i_, T C) - > -struct BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) - : BOOST_PP_CAT(vector,i_)< BOOST_PP_REPEAT(i_,AUX778076_VECTOR_C_PARAM_FUNC,C) > -{ - typedef BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) type; - typedef T value_type; -}; - -# undef AUX778076_VECTOR_C_PARAM_FUNC - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -#undef i_ - -#endif // BOOST_PP_IS_ITERATING diff --git a/src/boost/boost/mpl/vector/aux_/pop_back.hpp b/src/boost/boost/mpl/vector/aux_/pop_back.hpp deleted file mode 100644 index d4b82e072..000000000 --- a/src/boost/boost/mpl/vector/aux_/pop_back.hpp +++ /dev/null @@ -1,40 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -# include -# include - -namespace boost { namespace mpl { - -template<> -struct pop_back_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef v_mask type; - }; -}; - -}} - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -#endif // BOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/pop_front.hpp b/src/boost/boost/mpl/vector/aux_/pop_front.hpp deleted file mode 100644 index 84cd0a4e8..000000000 --- a/src/boost/boost/mpl/vector/aux_/pop_front.hpp +++ /dev/null @@ -1,40 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -# include -# include - -namespace boost { namespace mpl { - -template<> -struct pop_front_impl< aux::vector_tag > -{ - template< typename Vector > struct apply - { - typedef v_mask type; - }; -}; - -}} - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -#endif // BOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp deleted file mode 100644 index dbe80fbed..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp +++ /dev/null @@ -1,1528 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector10.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -namespace aux { -template<> struct v_at_impl<0> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item0 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<0> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct size_impl< aux::vector_tag<0> > -{ - template< typename Vector > struct apply - : long_<0> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<0> > - : size_impl< aux::vector_tag<0> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<0> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0 - > -struct vector1 -{ - typedef aux::vector_tag<1> tag; - typedef vector1 type; - typedef T0 item0; - typedef void_ item1; - typedef T0 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,1 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<0> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector1< - T - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<1> > -{ - template< typename Vector > struct apply - { - typedef vector0< - - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<0> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector1< - - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<1> > -{ - template< typename Vector > struct apply - { - typedef vector0< - - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<1> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item1 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<1> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<1> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<1> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<1> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<1> > -{ - template< typename Vector > struct apply - : long_<1> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<1> > - : size_impl< aux::vector_tag<1> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<1> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1 - > -struct vector2 -{ - typedef aux::vector_tag<2> tag; - typedef vector2 type; - typedef T0 item0; - typedef T1 item1; - - - typedef void_ item2; - typedef T1 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,2 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<1> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector2< - T - , - typename Vector::item0 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<2> > -{ - template< typename Vector > struct apply - { - typedef vector1< - typename Vector::item1 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<1> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector2< - typename Vector::item0 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<2> > -{ - template< typename Vector > struct apply - { - typedef vector1< - typename Vector::item0 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<2> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item2 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<2> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<2> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<2> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<2> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<2> > -{ - template< typename Vector > struct apply - : long_<2> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<2> > - : size_impl< aux::vector_tag<2> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<2> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2 - > -struct vector3 -{ - typedef aux::vector_tag<3> tag; - typedef vector3 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - - - typedef void_ item3; - typedef T2 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,3 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<2> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector3< - T - , - typename Vector::item0, typename Vector::item1 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<3> > -{ - template< typename Vector > struct apply - { - typedef vector2< - typename Vector::item1, typename Vector::item2 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<2> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector3< - typename Vector::item0, typename Vector::item1 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<3> > -{ - template< typename Vector > struct apply - { - typedef vector2< - typename Vector::item0, typename Vector::item1 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<3> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item3 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<3> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<3> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<3> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<3> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<3> > -{ - template< typename Vector > struct apply - : long_<3> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<3> > - : size_impl< aux::vector_tag<3> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<3> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3 - > -struct vector4 -{ - typedef aux::vector_tag<4> tag; - typedef vector4 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - - - typedef void_ item4; - typedef T3 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,4 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<3> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector4< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<4> > -{ - template< typename Vector > struct apply - { - typedef vector3< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<3> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector4< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<4> > -{ - template< typename Vector > struct apply - { - typedef vector3< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<4> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item4 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<4> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<4> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<4> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<4> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<4> > -{ - template< typename Vector > struct apply - : long_<4> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<4> > - : size_impl< aux::vector_tag<4> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<4> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - > -struct vector5 -{ - typedef aux::vector_tag<5> tag; - typedef vector5 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - - - typedef void_ item5; - typedef T4 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,5 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<4> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector5< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<5> > -{ - template< typename Vector > struct apply - { - typedef vector4< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<4> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector5< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<5> > -{ - template< typename Vector > struct apply - { - typedef vector4< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<5> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item5 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<5> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<5> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<5> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<5> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<5> > -{ - template< typename Vector > struct apply - : long_<5> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<5> > - : size_impl< aux::vector_tag<5> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<5> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5 - > -struct vector6 -{ - typedef aux::vector_tag<6> tag; - typedef vector6 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - - - typedef void_ item6; - typedef T5 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,6 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<5> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector6< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<6> > -{ - template< typename Vector > struct apply - { - typedef vector5< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<5> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector6< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<6> > -{ - template< typename Vector > struct apply - { - typedef vector5< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<6> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item6 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<6> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<6> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<6> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<6> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<6> > -{ - template< typename Vector > struct apply - : long_<6> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<6> > - : size_impl< aux::vector_tag<6> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<6> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6 - > -struct vector7 -{ - typedef aux::vector_tag<7> tag; - typedef vector7 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - - - typedef void_ item7; - typedef T6 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,7 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<6> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector7< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<7> > -{ - template< typename Vector > struct apply - { - typedef vector6< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<6> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector7< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<7> > -{ - template< typename Vector > struct apply - { - typedef vector6< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<7> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item7 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<7> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<7> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<7> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<7> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<7> > -{ - template< typename Vector > struct apply - : long_<7> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<7> > - : size_impl< aux::vector_tag<7> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<7> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7 - > -struct vector8 -{ - typedef aux::vector_tag<8> tag; - typedef vector8 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - - - typedef void_ item8; - typedef T7 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,8 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<7> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector8< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<8> > -{ - template< typename Vector > struct apply - { - typedef vector7< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<7> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector8< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<8> > -{ - template< typename Vector > struct apply - { - typedef vector7< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<8> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item8 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<8> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<8> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<8> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<8> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<8> > -{ - template< typename Vector > struct apply - : long_<8> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<8> > - : size_impl< aux::vector_tag<8> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<8> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8 - > -struct vector9 -{ - typedef aux::vector_tag<9> tag; - typedef vector9 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - - - typedef void_ item9; - typedef T8 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,9 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<8> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector9< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<9> > -{ - template< typename Vector > struct apply - { - typedef vector8< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<8> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector9< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<9> > -{ - template< typename Vector > struct apply - { - typedef vector8< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<9> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item9 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<9> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<9> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<9> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<9> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<9> > -{ - template< typename Vector > struct apply - : long_<9> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<9> > - : size_impl< aux::vector_tag<9> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<9> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - > -struct vector10 -{ - typedef aux::vector_tag<10> tag; - typedef vector10 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - - - typedef void_ item10; - typedef T9 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,10 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<9> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector10< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<10> > -{ - template< typename Vector > struct apply - { - typedef vector9< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<9> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector10< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<10> > -{ - template< typename Vector > struct apply - { - typedef vector9< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<10> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item10 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<10> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<10> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<10> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<10> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<10> > -{ - template< typename Vector > struct apply - : long_<10> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<10> > - : size_impl< aux::vector_tag<10> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<10> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp deleted file mode 100644 index 5a088fccc..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp +++ /dev/null @@ -1,149 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector10_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0 - > -struct vector1_c - : vector1< integral_c< T,C0 > > -{ - typedef vector1_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1 - > -struct vector2_c - : vector2< integral_c< T,C0 >, integral_c< T,C1 > > -{ - typedef vector2_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2 - > -struct vector3_c - : vector3< integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > > -{ - typedef vector3_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3 - > -struct vector4_c - : vector4< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >, integral_c - > -{ - typedef vector4_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4 - > -struct vector5_c - : vector5< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 > - > -{ - typedef vector5_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5 - > -struct vector6_c - : vector6< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 > - > -{ - typedef vector6_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6 - > -struct vector7_c - : vector7< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c - > -{ - typedef vector7_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7 - > -struct vector8_c - : vector8< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 > - > -{ - typedef vector8_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8 - > -struct vector9_c - : vector9< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 > - > -{ - typedef vector9_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9 - > -struct vector10_c - : vector10< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - > -{ - typedef vector10_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp deleted file mode 100644 index ed700498b..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp +++ /dev/null @@ -1,1804 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector20.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10 - > -struct vector11 -{ - typedef aux::vector_tag<11> tag; - typedef vector11 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - - - typedef void_ item11; - typedef T10 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,11 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<10> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector11< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<11> > -{ - template< typename Vector > struct apply - { - typedef vector10< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<10> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector11< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<11> > -{ - template< typename Vector > struct apply - { - typedef vector10< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<11> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item11 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<11> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<11> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<11> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<11> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<11> > -{ - template< typename Vector > struct apply - : long_<11> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<11> > - : size_impl< aux::vector_tag<11> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<11> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11 - > -struct vector12 -{ - typedef aux::vector_tag<12> tag; - typedef vector12 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - - - typedef void_ item12; - typedef T11 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,12 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<11> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector12< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<12> > -{ - template< typename Vector > struct apply - { - typedef vector11< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<11> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector12< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<12> > -{ - template< typename Vector > struct apply - { - typedef vector11< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<12> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item12 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<12> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<12> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<12> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<12> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<12> > -{ - template< typename Vector > struct apply - : long_<12> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<12> > - : size_impl< aux::vector_tag<12> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<12> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12 - > -struct vector13 -{ - typedef aux::vector_tag<13> tag; - typedef vector13 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - - - typedef void_ item13; - typedef T12 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,13 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<12> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector13< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<13> > -{ - template< typename Vector > struct apply - { - typedef vector12< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<12> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector13< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<13> > -{ - template< typename Vector > struct apply - { - typedef vector12< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<13> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item13 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<13> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<13> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<13> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<13> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<13> > -{ - template< typename Vector > struct apply - : long_<13> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<13> > - : size_impl< aux::vector_tag<13> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<13> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13 - > -struct vector14 -{ - typedef aux::vector_tag<14> tag; - typedef vector14 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - - - typedef void_ item14; - typedef T13 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,14 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<13> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector14< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<14> > -{ - template< typename Vector > struct apply - { - typedef vector13< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<13> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector14< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<14> > -{ - template< typename Vector > struct apply - { - typedef vector13< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<14> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item14 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<14> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<14> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<14> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<14> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<14> > -{ - template< typename Vector > struct apply - : long_<14> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<14> > - : size_impl< aux::vector_tag<14> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<14> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - > -struct vector15 -{ - typedef aux::vector_tag<15> tag; - typedef vector15 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - - - typedef void_ item15; - typedef T14 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,15 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<14> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector15< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<15> > -{ - template< typename Vector > struct apply - { - typedef vector14< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<14> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector15< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<15> > -{ - template< typename Vector > struct apply - { - typedef vector14< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<15> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item15 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<15> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<15> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<15> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<15> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<15> > -{ - template< typename Vector > struct apply - : long_<15> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<15> > - : size_impl< aux::vector_tag<15> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<15> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15 - > -struct vector16 -{ - typedef aux::vector_tag<16> tag; - typedef vector16 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - - - typedef void_ item16; - typedef T15 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,16 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<15> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector16< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<16> > -{ - template< typename Vector > struct apply - { - typedef vector15< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<15> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector16< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<16> > -{ - template< typename Vector > struct apply - { - typedef vector15< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<16> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item16 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<16> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<16> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<16> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<16> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<16> > -{ - template< typename Vector > struct apply - : long_<16> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<16> > - : size_impl< aux::vector_tag<16> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<16> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16 - > -struct vector17 -{ - typedef aux::vector_tag<17> tag; - typedef vector17 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - - - typedef void_ item17; - typedef T16 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,17 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<16> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector17< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<17> > -{ - template< typename Vector > struct apply - { - typedef vector16< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<16> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector17< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<17> > -{ - template< typename Vector > struct apply - { - typedef vector16< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<17> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item17 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<17> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<17> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<17> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<17> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<17> > -{ - template< typename Vector > struct apply - : long_<17> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<17> > - : size_impl< aux::vector_tag<17> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<17> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17 - > -struct vector18 -{ - typedef aux::vector_tag<18> tag; - typedef vector18 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - - - typedef void_ item18; - typedef T17 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,18 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<17> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector18< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<18> > -{ - template< typename Vector > struct apply - { - typedef vector17< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<17> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector18< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<18> > -{ - template< typename Vector > struct apply - { - typedef vector17< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<18> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item18 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<18> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<18> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<18> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<18> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<18> > -{ - template< typename Vector > struct apply - : long_<18> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<18> > - : size_impl< aux::vector_tag<18> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<18> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18 - > -struct vector19 -{ - typedef aux::vector_tag<19> tag; - typedef vector19 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - - - typedef void_ item19; - typedef T18 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,19 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<18> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector19< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<19> > -{ - template< typename Vector > struct apply - { - typedef vector18< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<18> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector19< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<19> > -{ - template< typename Vector > struct apply - { - typedef vector18< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<19> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item19 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<19> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<19> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<19> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<19> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<19> > -{ - template< typename Vector > struct apply - : long_<19> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<19> > - : size_impl< aux::vector_tag<19> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<19> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - > -struct vector20 -{ - typedef aux::vector_tag<20> tag; - typedef vector20 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - - - typedef void_ item20; - typedef T19 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,20 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<19> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector20< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<20> > -{ - template< typename Vector > struct apply - { - typedef vector19< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<19> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector20< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<20> > -{ - template< typename Vector > struct apply - { - typedef vector19< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<20> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item20 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<20> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<20> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<20> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<20> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<20> > -{ - template< typename Vector > struct apply - : long_<20> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<20> > - : size_impl< aux::vector_tag<20> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<20> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp deleted file mode 100644 index 03f64569e..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp +++ /dev/null @@ -1,195 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector20_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - > -struct vector11_c - : vector11< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >, integral_c - > -{ - typedef vector11_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11 - > -struct vector12_c - : vector12< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 > - > -{ - typedef vector12_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12 - > -struct vector13_c - : vector13< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - > -{ - typedef vector13_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13 - > -struct vector14_c - : vector14< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >, integral_c - > -{ - typedef vector14_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14 - > -struct vector15_c - : vector15< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 > - > -{ - typedef vector15_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15 - > -struct vector16_c - : vector16< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - > -{ - typedef vector16_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16 - > -struct vector17_c - : vector17< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >, integral_c - > -{ - typedef vector17_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17 - > -struct vector18_c - : vector18< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 > - > -{ - typedef vector18_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18 - > -struct vector19_c - : vector19< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - > -{ - typedef vector19_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19 - > -struct vector20_c - : vector20< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >, integral_c - > -{ - typedef vector20_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp deleted file mode 100644 index 015bdbf4e..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp +++ /dev/null @@ -1,2124 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector30.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20 - > -struct vector21 -{ - typedef aux::vector_tag<21> tag; - typedef vector21 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - - - typedef void_ item21; - typedef T20 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,21 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<20> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector21< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<21> > -{ - template< typename Vector > struct apply - { - typedef vector20< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<20> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector21< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<21> > -{ - template< typename Vector > struct apply - { - typedef vector20< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<21> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item21 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<21> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<21> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<21> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<21> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<21> > -{ - template< typename Vector > struct apply - : long_<21> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<21> > - : size_impl< aux::vector_tag<21> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<21> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21 - > -struct vector22 -{ - typedef aux::vector_tag<22> tag; - typedef vector22 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - - - typedef void_ item22; - typedef T21 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,22 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<21> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector22< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<22> > -{ - template< typename Vector > struct apply - { - typedef vector21< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<21> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector22< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<22> > -{ - template< typename Vector > struct apply - { - typedef vector21< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<22> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item22 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<22> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<22> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<22> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<22> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<22> > -{ - template< typename Vector > struct apply - : long_<22> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<22> > - : size_impl< aux::vector_tag<22> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<22> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22 - > -struct vector23 -{ - typedef aux::vector_tag<23> tag; - typedef vector23 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - - - typedef void_ item23; - typedef T22 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,23 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<22> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector23< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<23> > -{ - template< typename Vector > struct apply - { - typedef vector22< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<22> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector23< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<23> > -{ - template< typename Vector > struct apply - { - typedef vector22< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<23> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item23 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<23> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<23> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<23> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<23> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<23> > -{ - template< typename Vector > struct apply - : long_<23> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<23> > - : size_impl< aux::vector_tag<23> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<23> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23 - > -struct vector24 -{ - typedef aux::vector_tag<24> tag; - typedef vector24 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - - - typedef void_ item24; - typedef T23 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,24 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<23> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector24< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<24> > -{ - template< typename Vector > struct apply - { - typedef vector23< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<23> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector24< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<24> > -{ - template< typename Vector > struct apply - { - typedef vector23< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<24> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item24 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<24> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<24> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<24> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<24> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<24> > -{ - template< typename Vector > struct apply - : long_<24> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<24> > - : size_impl< aux::vector_tag<24> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<24> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - > -struct vector25 -{ - typedef aux::vector_tag<25> tag; - typedef vector25 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - - - typedef void_ item25; - typedef T24 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,25 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<24> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector25< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<25> > -{ - template< typename Vector > struct apply - { - typedef vector24< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<24> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector25< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<25> > -{ - template< typename Vector > struct apply - { - typedef vector24< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<25> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item25 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<25> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<25> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<25> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<25> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<25> > -{ - template< typename Vector > struct apply - : long_<25> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<25> > - : size_impl< aux::vector_tag<25> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<25> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25 - > -struct vector26 -{ - typedef aux::vector_tag<26> tag; - typedef vector26 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - - - typedef void_ item26; - typedef T25 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,26 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<25> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector26< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<26> > -{ - template< typename Vector > struct apply - { - typedef vector25< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<25> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector26< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<26> > -{ - template< typename Vector > struct apply - { - typedef vector25< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<26> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item26 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<26> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<26> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<26> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<26> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<26> > -{ - template< typename Vector > struct apply - : long_<26> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<26> > - : size_impl< aux::vector_tag<26> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<26> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26 - > -struct vector27 -{ - typedef aux::vector_tag<27> tag; - typedef vector27 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - - - typedef void_ item27; - typedef T26 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,27 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<26> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector27< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<27> > -{ - template< typename Vector > struct apply - { - typedef vector26< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<26> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector27< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<27> > -{ - template< typename Vector > struct apply - { - typedef vector26< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<27> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item27 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<27> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<27> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<27> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<27> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<27> > -{ - template< typename Vector > struct apply - : long_<27> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<27> > - : size_impl< aux::vector_tag<27> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<27> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27 - > -struct vector28 -{ - typedef aux::vector_tag<28> tag; - typedef vector28 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - - - typedef void_ item28; - typedef T27 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,28 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<27> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector28< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<28> > -{ - template< typename Vector > struct apply - { - typedef vector27< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<27> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector28< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<28> > -{ - template< typename Vector > struct apply - { - typedef vector27< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<28> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item28 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<28> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<28> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<28> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<28> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<28> > -{ - template< typename Vector > struct apply - : long_<28> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<28> > - : size_impl< aux::vector_tag<28> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<28> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28 - > -struct vector29 -{ - typedef aux::vector_tag<29> tag; - typedef vector29 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - - - typedef void_ item29; - typedef T28 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,29 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<28> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector29< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<29> > -{ - template< typename Vector > struct apply - { - typedef vector28< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<28> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector29< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<29> > -{ - template< typename Vector > struct apply - { - typedef vector28< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<29> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item29 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<29> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<29> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<29> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<29> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<29> > -{ - template< typename Vector > struct apply - : long_<29> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<29> > - : size_impl< aux::vector_tag<29> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<29> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - > -struct vector30 -{ - typedef aux::vector_tag<30> tag; - typedef vector30 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - - - typedef void_ item30; - typedef T29 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,30 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<29> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector30< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<30> > -{ - template< typename Vector > struct apply - { - typedef vector29< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<29> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector30< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<30> > -{ - template< typename Vector > struct apply - { - typedef vector29< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<30> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item30 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<30> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<30> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<30> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<30> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<30> > -{ - template< typename Vector > struct apply - : long_<30> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<30> > - : size_impl< aux::vector_tag<30> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<30> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp deleted file mode 100644 index 6d47c9461..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp +++ /dev/null @@ -1,238 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector30_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - > -struct vector21_c - : vector21< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 > - > -{ - typedef vector21_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21 - > -struct vector22_c - : vector22< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - > -{ - typedef vector22_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22 - > -struct vector23_c - : vector23< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >, integral_c - > -{ - typedef vector23_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23 - > -struct vector24_c - : vector24< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 > - > -{ - typedef vector24_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24 - > -struct vector25_c - : vector25< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - > -{ - typedef vector25_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25 - > -struct vector26_c - : vector26< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >, integral_c - > -{ - typedef vector26_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26 - > -struct vector27_c - : vector27< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 > - > -{ - typedef vector27_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27 - > -struct vector28_c - : vector28< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - > -{ - typedef vector28_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28 - > -struct vector29_c - : vector29< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >, integral_c - > -{ - typedef vector29_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29 - > -struct vector30_c - : vector30< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 > - > -{ - typedef vector30_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp deleted file mode 100644 index ad93a68e5..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp +++ /dev/null @@ -1,2444 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector40.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30 - > -struct vector31 -{ - typedef aux::vector_tag<31> tag; - typedef vector31 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - - - typedef void_ item31; - typedef T30 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,31 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<30> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector31< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<31> > -{ - template< typename Vector > struct apply - { - typedef vector30< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<30> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector31< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<31> > -{ - template< typename Vector > struct apply - { - typedef vector30< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<31> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item31 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<31> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<31> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<31> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<31> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<31> > -{ - template< typename Vector > struct apply - : long_<31> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<31> > - : size_impl< aux::vector_tag<31> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<31> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31 - > -struct vector32 -{ - typedef aux::vector_tag<32> tag; - typedef vector32 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - - - typedef void_ item32; - typedef T31 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,32 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<31> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector32< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<32> > -{ - template< typename Vector > struct apply - { - typedef vector31< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<31> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector32< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<32> > -{ - template< typename Vector > struct apply - { - typedef vector31< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<32> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item32 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<32> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<32> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<32> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<32> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<32> > -{ - template< typename Vector > struct apply - : long_<32> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<32> > - : size_impl< aux::vector_tag<32> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<32> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32 - > -struct vector33 -{ - typedef aux::vector_tag<33> tag; - typedef vector33 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - - - typedef void_ item33; - typedef T32 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,33 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<32> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector33< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<33> > -{ - template< typename Vector > struct apply - { - typedef vector32< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<32> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector33< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<33> > -{ - template< typename Vector > struct apply - { - typedef vector32< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<33> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item33 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<33> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<33> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<33> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<33> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<33> > -{ - template< typename Vector > struct apply - : long_<33> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<33> > - : size_impl< aux::vector_tag<33> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<33> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33 - > -struct vector34 -{ - typedef aux::vector_tag<34> tag; - typedef vector34 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - - - typedef void_ item34; - typedef T33 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,34 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<33> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector34< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<34> > -{ - template< typename Vector > struct apply - { - typedef vector33< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<33> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector34< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<34> > -{ - template< typename Vector > struct apply - { - typedef vector33< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<34> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item34 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<34> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<34> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<34> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<34> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<34> > -{ - template< typename Vector > struct apply - : long_<34> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<34> > - : size_impl< aux::vector_tag<34> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<34> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - > -struct vector35 -{ - typedef aux::vector_tag<35> tag; - typedef vector35 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - - - typedef void_ item35; - typedef T34 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,35 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<34> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector35< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<35> > -{ - template< typename Vector > struct apply - { - typedef vector34< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<34> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector35< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<35> > -{ - template< typename Vector > struct apply - { - typedef vector34< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<35> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item35 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<35> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<35> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<35> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<35> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<35> > -{ - template< typename Vector > struct apply - : long_<35> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<35> > - : size_impl< aux::vector_tag<35> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<35> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35 - > -struct vector36 -{ - typedef aux::vector_tag<36> tag; - typedef vector36 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - - - typedef void_ item36; - typedef T35 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,36 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<35> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector36< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<36> > -{ - template< typename Vector > struct apply - { - typedef vector35< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<35> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector36< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<36> > -{ - template< typename Vector > struct apply - { - typedef vector35< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<36> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item36 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<36> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<36> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<36> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<36> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<36> > -{ - template< typename Vector > struct apply - : long_<36> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<36> > - : size_impl< aux::vector_tag<36> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<36> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36 - > -struct vector37 -{ - typedef aux::vector_tag<37> tag; - typedef vector37 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - - - typedef void_ item37; - typedef T36 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,37 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<36> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector37< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<37> > -{ - template< typename Vector > struct apply - { - typedef vector36< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<36> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector37< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<37> > -{ - template< typename Vector > struct apply - { - typedef vector36< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<37> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item37 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<37> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<37> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<37> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<37> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<37> > -{ - template< typename Vector > struct apply - : long_<37> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<37> > - : size_impl< aux::vector_tag<37> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<37> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37 - > -struct vector38 -{ - typedef aux::vector_tag<38> tag; - typedef vector38 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - - - typedef void_ item38; - typedef T37 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,38 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<37> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector38< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<38> > -{ - template< typename Vector > struct apply - { - typedef vector37< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<37> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector38< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<38> > -{ - template< typename Vector > struct apply - { - typedef vector37< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<38> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item38 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<38> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<38> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<38> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<38> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<38> > -{ - template< typename Vector > struct apply - : long_<38> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<38> > - : size_impl< aux::vector_tag<38> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<38> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38 - > -struct vector39 -{ - typedef aux::vector_tag<39> tag; - typedef vector39 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - - - typedef void_ item39; - typedef T38 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,39 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<38> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector39< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<39> > -{ - template< typename Vector > struct apply - { - typedef vector38< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<38> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector39< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<39> > -{ - template< typename Vector > struct apply - { - typedef vector38< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<39> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item39 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<39> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<39> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<39> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<39> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<39> > -{ - template< typename Vector > struct apply - : long_<39> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<39> > - : size_impl< aux::vector_tag<39> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<39> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - > -struct vector40 -{ - typedef aux::vector_tag<40> tag; - typedef vector40 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - - - typedef void_ item40; - typedef T39 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,40 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<39> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector40< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<40> > -{ - template< typename Vector > struct apply - { - typedef vector39< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<39> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector40< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<40> > -{ - template< typename Vector > struct apply - { - typedef vector39< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<40> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item40 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<40> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<40> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<40> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<40> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<40> > -{ - template< typename Vector > struct apply - : long_<40> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<40> > - : size_impl< aux::vector_tag<40> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<40> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp deleted file mode 100644 index f248b0d5e..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp +++ /dev/null @@ -1,281 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector40_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - > -struct vector31_c - : vector31< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - > -{ - typedef vector31_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31 - > -struct vector32_c - : vector32< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >, integral_c - > -{ - typedef vector32_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32 - > -struct vector33_c - : vector33< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 > - > -{ - typedef vector33_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33 - > -struct vector34_c - : vector34< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - > -{ - typedef vector34_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34 - > -struct vector35_c - : vector35< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >, integral_c - > -{ - typedef vector35_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35 - > -struct vector36_c - : vector36< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 > - > -{ - typedef vector36_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36 - > -struct vector37_c - : vector37< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - > -{ - typedef vector37_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37 - > -struct vector38_c - : vector38< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >, integral_c - > -{ - typedef vector38_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38 - > -struct vector39_c - : vector39< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 > - > -{ - typedef vector39_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39 - > -struct vector40_c - : vector40< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - > -{ - typedef vector40_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp deleted file mode 100644 index 4de5eab92..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp +++ /dev/null @@ -1,2764 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector50.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40 - > -struct vector41 -{ - typedef aux::vector_tag<41> tag; - typedef vector41 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - - - typedef void_ item41; - typedef T40 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,41 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<40> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector41< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<41> > -{ - template< typename Vector > struct apply - { - typedef vector40< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<40> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector41< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<41> > -{ - template< typename Vector > struct apply - { - typedef vector40< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<41> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item41 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<41> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<41> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<41> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<41> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<41> > -{ - template< typename Vector > struct apply - : long_<41> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<41> > - : size_impl< aux::vector_tag<41> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<41> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41 - > -struct vector42 -{ - typedef aux::vector_tag<42> tag; - typedef vector42 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - - - typedef void_ item42; - typedef T41 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,42 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<41> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector42< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<42> > -{ - template< typename Vector > struct apply - { - typedef vector41< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<41> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector42< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<42> > -{ - template< typename Vector > struct apply - { - typedef vector41< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<42> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item42 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<42> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<42> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<42> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<42> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<42> > -{ - template< typename Vector > struct apply - : long_<42> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<42> > - : size_impl< aux::vector_tag<42> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<42> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42 - > -struct vector43 -{ - typedef aux::vector_tag<43> tag; - typedef vector43 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - - - typedef void_ item43; - typedef T42 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,43 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<42> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector43< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<43> > -{ - template< typename Vector > struct apply - { - typedef vector42< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<42> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector43< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<43> > -{ - template< typename Vector > struct apply - { - typedef vector42< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<43> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item43 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<43> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<43> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<43> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<43> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<43> > -{ - template< typename Vector > struct apply - : long_<43> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<43> > - : size_impl< aux::vector_tag<43> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<43> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43 - > -struct vector44 -{ - typedef aux::vector_tag<44> tag; - typedef vector44 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - - - typedef void_ item44; - typedef T43 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,44 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<43> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector44< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<44> > -{ - template< typename Vector > struct apply - { - typedef vector43< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<43> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector44< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<44> > -{ - template< typename Vector > struct apply - { - typedef vector43< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<44> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item44 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<44> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<44> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<44> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<44> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<44> > -{ - template< typename Vector > struct apply - : long_<44> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<44> > - : size_impl< aux::vector_tag<44> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<44> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - > -struct vector45 -{ - typedef aux::vector_tag<45> tag; - typedef vector45 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - - - typedef void_ item45; - typedef T44 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,45 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<44> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector45< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<45> > -{ - template< typename Vector > struct apply - { - typedef vector44< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<44> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector45< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<45> > -{ - template< typename Vector > struct apply - { - typedef vector44< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<45> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item45 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<45> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<45> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<45> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<45> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<45> > -{ - template< typename Vector > struct apply - : long_<45> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<45> > - : size_impl< aux::vector_tag<45> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<45> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45 - > -struct vector46 -{ - typedef aux::vector_tag<46> tag; - typedef vector46 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - typedef T45 item45; - - - typedef void_ item46; - typedef T45 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,46 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<45> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector46< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<46> > -{ - template< typename Vector > struct apply - { - typedef vector45< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - , typename Vector::item45 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<45> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector46< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<46> > -{ - template< typename Vector > struct apply - { - typedef vector45< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<46> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item46 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<46> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<46> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<46> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<46> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<46> > -{ - template< typename Vector > struct apply - : long_<46> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<46> > - : size_impl< aux::vector_tag<46> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<46> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46 - > -struct vector47 -{ - typedef aux::vector_tag<47> tag; - typedef vector47 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - typedef T45 item45; - typedef T46 item46; - - - typedef void_ item47; - typedef T46 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,47 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<46> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector47< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<47> > -{ - template< typename Vector > struct apply - { - typedef vector46< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - , typename Vector::item45, typename Vector::item46 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<46> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector47< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<47> > -{ - template< typename Vector > struct apply - { - typedef vector46< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<47> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item47 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<47> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<47> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<47> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<47> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<47> > -{ - template< typename Vector > struct apply - : long_<47> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<47> > - : size_impl< aux::vector_tag<47> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<47> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47 - > -struct vector48 -{ - typedef aux::vector_tag<48> tag; - typedef vector48 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - typedef T45 item45; - typedef T46 item46; - typedef T47 item47; - - - typedef void_ item48; - typedef T47 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,48 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<47> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector48< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<48> > -{ - template< typename Vector > struct apply - { - typedef vector47< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - , typename Vector::item45, typename Vector::item46 - , typename Vector::item47 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<47> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector48< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<48> > -{ - template< typename Vector > struct apply - { - typedef vector47< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<48> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item48 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<48> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<48> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<48> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<48> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<48> > -{ - template< typename Vector > struct apply - : long_<48> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<48> > - : size_impl< aux::vector_tag<48> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<48> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47, typename T48 - > -struct vector49 -{ - typedef aux::vector_tag<49> tag; - typedef vector49 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - typedef T45 item45; - typedef T46 item46; - typedef T47 item47; - typedef T48 item48; - - - typedef void_ item49; - typedef T48 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,49 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<48> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector49< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<49> > -{ - template< typename Vector > struct apply - { - typedef vector48< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - , typename Vector::item45, typename Vector::item46 - , typename Vector::item47, typename Vector::item48 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<48> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector49< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<49> > -{ - template< typename Vector > struct apply - { - typedef vector48< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<49> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item49 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<49> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<49> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<49> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<49> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<49> > -{ - template< typename Vector > struct apply - : long_<49> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<49> > - : size_impl< aux::vector_tag<49> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<49> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47, typename T48, typename T49 - > -struct vector50 -{ - typedef aux::vector_tag<50> tag; - typedef vector50 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - typedef T45 item45; - typedef T46 item46; - typedef T47 item47; - typedef T48 item48; - typedef T49 item49; - - - typedef void_ item50; - typedef T49 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,50 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<49> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector50< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - , typename Vector::item48 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<50> > -{ - template< typename Vector > struct apply - { - typedef vector49< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - , typename Vector::item45, typename Vector::item46 - , typename Vector::item47, typename Vector::item48 - , typename Vector::item49 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<49> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector50< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - , typename Vector::item48 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<50> > -{ - template< typename Vector > struct apply - { - typedef vector49< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - , typename Vector::item48 - > type; - }; -}; - -namespace aux { -template<> struct v_at_impl<50> -{ - template< typename V_ > struct result_ - { - typedef typename V_::item50 type; - }; -}; - -} - -template<> -struct at_impl< aux::vector_tag<50> > -{ - template< typename V_, typename N > struct apply - { - typedef typename aux::v_at_impl - ::template result_::type type; - }; -}; - -template<> -struct front_impl< aux::vector_tag<50> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::item0 type; - }; -}; - -template<> -struct back_impl< aux::vector_tag<50> > -{ - template< typename Vector > struct apply - { - typedef typename Vector::back type; - }; -}; - -template<> -struct empty_impl< aux::vector_tag<50> > -{ - template< typename Vector > struct apply - : false_ - { - }; -}; - -template<> -struct size_impl< aux::vector_tag<50> > -{ - template< typename Vector > struct apply - : long_<50> - { - }; -}; - -template<> -struct O1_size_impl< aux::vector_tag<50> > - : size_impl< aux::vector_tag<50> > -{ -}; - -template<> -struct clear_impl< aux::vector_tag<50> > -{ - template< typename Vector > struct apply - { - typedef vector0<> type; - }; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp deleted file mode 100644 index 4d09834ed..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp +++ /dev/null @@ -1,325 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector50_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - > -struct vector41_c - : vector41< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >, integral_c - > -{ - typedef vector41_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41 - > -struct vector42_c - : vector42< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 > - > -{ - typedef vector42_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42 - > -struct vector43_c - : vector43< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - > -{ - typedef vector43_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43 - > -struct vector44_c - : vector44< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >, integral_c - > -{ - typedef vector44_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44 - > -struct vector45_c - : vector45< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 > - > -{ - typedef vector45_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45 - > -struct vector46_c - : vector46< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 > - > -{ - typedef vector46_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46 - > -struct vector47_c - : vector47< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >, integral_c - > -{ - typedef vector47_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47 - > -struct vector48_c - : vector48< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 > - , integral_c< T,C46 >, integral_c< T,C47 > - > -{ - typedef vector48_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48 - > -struct vector49_c - : vector49< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 > - , integral_c< T,C46 >, integral_c< T,C47 >, integral_c< T,C48 > - > -{ - typedef vector49_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48, T C49 - > -struct vector50_c - : vector50< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 > - , integral_c< T,C46 >, integral_c< T,C47 >, integral_c< T,C48 >, integral_c - > -{ - typedef vector50_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp deleted file mode 100644 index bd8928b42..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp +++ /dev/null @@ -1,829 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector10.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< typename V > -struct v_at< V,0 > -{ - typedef typename V::item0 type; -}; - -template< - typename T0 - > -struct vector1 -{ - typedef aux::vector_tag<1> tag; - typedef vector1 type; - typedef T0 item0; - typedef void_ item1; - typedef T0 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,1 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<0> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector1< - T - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<1> > -{ - template< typename Vector > struct apply - { - typedef vector0< - - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<0> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector1< - - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<1> > -{ - template< typename Vector > struct apply - { - typedef vector0< - - > type; - }; -}; - -template< typename V > -struct v_at< V,1 > -{ - typedef typename V::item1 type; -}; - -template< - typename T0, typename T1 - > -struct vector2 -{ - typedef aux::vector_tag<2> tag; - typedef vector2 type; - typedef T0 item0; - typedef T1 item1; - - - typedef void_ item2; - typedef T1 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,2 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<1> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector2< - T - , - typename Vector::item0 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<2> > -{ - template< typename Vector > struct apply - { - typedef vector1< - typename Vector::item1 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<1> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector2< - typename Vector::item0 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<2> > -{ - template< typename Vector > struct apply - { - typedef vector1< - typename Vector::item0 - > type; - }; -}; - -template< typename V > -struct v_at< V,2 > -{ - typedef typename V::item2 type; -}; - -template< - typename T0, typename T1, typename T2 - > -struct vector3 -{ - typedef aux::vector_tag<3> tag; - typedef vector3 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - - - typedef void_ item3; - typedef T2 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,3 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<2> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector3< - T - , - typename Vector::item0, typename Vector::item1 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<3> > -{ - template< typename Vector > struct apply - { - typedef vector2< - typename Vector::item1, typename Vector::item2 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<2> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector3< - typename Vector::item0, typename Vector::item1 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<3> > -{ - template< typename Vector > struct apply - { - typedef vector2< - typename Vector::item0, typename Vector::item1 - > type; - }; -}; - -template< typename V > -struct v_at< V,3 > -{ - typedef typename V::item3 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3 - > -struct vector4 -{ - typedef aux::vector_tag<4> tag; - typedef vector4 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - - - typedef void_ item4; - typedef T3 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,4 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<3> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector4< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<4> > -{ - template< typename Vector > struct apply - { - typedef vector3< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<3> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector4< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<4> > -{ - template< typename Vector > struct apply - { - typedef vector3< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2 - > type; - }; -}; - -template< typename V > -struct v_at< V,4 > -{ - typedef typename V::item4 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - > -struct vector5 -{ - typedef aux::vector_tag<5> tag; - typedef vector5 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - - - typedef void_ item5; - typedef T4 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,5 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<4> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector5< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<5> > -{ - template< typename Vector > struct apply - { - typedef vector4< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<4> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector5< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<5> > -{ - template< typename Vector > struct apply - { - typedef vector4< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - > type; - }; -}; - -template< typename V > -struct v_at< V,5 > -{ - typedef typename V::item5 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5 - > -struct vector6 -{ - typedef aux::vector_tag<6> tag; - typedef vector6 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - - - typedef void_ item6; - typedef T5 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,6 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<5> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector6< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<6> > -{ - template< typename Vector > struct apply - { - typedef vector5< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<5> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector6< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<6> > -{ - template< typename Vector > struct apply - { - typedef vector5< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4 - > type; - }; -}; - -template< typename V > -struct v_at< V,6 > -{ - typedef typename V::item6 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6 - > -struct vector7 -{ - typedef aux::vector_tag<7> tag; - typedef vector7 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - - - typedef void_ item7; - typedef T6 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,7 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<6> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector7< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<7> > -{ - template< typename Vector > struct apply - { - typedef vector6< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<6> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector7< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<7> > -{ - template< typename Vector > struct apply - { - typedef vector6< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - > type; - }; -}; - -template< typename V > -struct v_at< V,7 > -{ - typedef typename V::item7 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7 - > -struct vector8 -{ - typedef aux::vector_tag<8> tag; - typedef vector8 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - - - typedef void_ item8; - typedef T7 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,8 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<7> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector8< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<8> > -{ - template< typename Vector > struct apply - { - typedef vector7< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<7> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector8< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<8> > -{ - template< typename Vector > struct apply - { - typedef vector7< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6 - > type; - }; -}; - -template< typename V > -struct v_at< V,8 > -{ - typedef typename V::item8 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8 - > -struct vector9 -{ - typedef aux::vector_tag<9> tag; - typedef vector9 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - - - typedef void_ item9; - typedef T8 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,9 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<8> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector9< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<9> > -{ - template< typename Vector > struct apply - { - typedef vector8< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<8> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector9< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<9> > -{ - template< typename Vector > struct apply - { - typedef vector8< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - > type; - }; -}; - -template< typename V > -struct v_at< V,9 > -{ - typedef typename V::item9 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - > -struct vector10 -{ - typedef aux::vector_tag<10> tag; - typedef vector10 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - - - typedef void_ item10; - typedef T9 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,10 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<9> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector10< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<10> > -{ - template< typename Vector > struct apply - { - typedef vector9< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<9> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector10< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<10> > -{ - template< typename Vector > struct apply - { - typedef vector9< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8 - > type; - }; -}; - -template< typename V > -struct v_at< V,10 > -{ - typedef typename V::item10 type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp deleted file mode 100644 index 5a088fccc..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp +++ /dev/null @@ -1,149 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector10_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0 - > -struct vector1_c - : vector1< integral_c< T,C0 > > -{ - typedef vector1_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1 - > -struct vector2_c - : vector2< integral_c< T,C0 >, integral_c< T,C1 > > -{ - typedef vector2_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2 - > -struct vector3_c - : vector3< integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > > -{ - typedef vector3_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3 - > -struct vector4_c - : vector4< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >, integral_c - > -{ - typedef vector4_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4 - > -struct vector5_c - : vector5< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 > - > -{ - typedef vector5_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5 - > -struct vector6_c - : vector6< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 > - > -{ - typedef vector6_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6 - > -struct vector7_c - : vector7< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c - > -{ - typedef vector7_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7 - > -struct vector8_c - : vector8< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 > - > -{ - typedef vector8_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8 - > -struct vector9_c - : vector9< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 > - > -{ - typedef vector9_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9 - > -struct vector10_c - : vector10< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - > -{ - typedef vector10_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp deleted file mode 100644 index 116f1125f..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp +++ /dev/null @@ -1,1144 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector20.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10 - > -struct vector11 -{ - typedef aux::vector_tag<11> tag; - typedef vector11 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - - - typedef void_ item11; - typedef T10 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,11 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<10> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector11< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<11> > -{ - template< typename Vector > struct apply - { - typedef vector10< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<10> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector11< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<11> > -{ - template< typename Vector > struct apply - { - typedef vector10< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - > type; - }; -}; - -template< typename V > -struct v_at< V,11 > -{ - typedef typename V::item11 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11 - > -struct vector12 -{ - typedef aux::vector_tag<12> tag; - typedef vector12 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - - - typedef void_ item12; - typedef T11 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,12 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<11> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector12< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<12> > -{ - template< typename Vector > struct apply - { - typedef vector11< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<11> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector12< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<12> > -{ - template< typename Vector > struct apply - { - typedef vector11< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10 - > type; - }; -}; - -template< typename V > -struct v_at< V,12 > -{ - typedef typename V::item12 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12 - > -struct vector13 -{ - typedef aux::vector_tag<13> tag; - typedef vector13 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - - - typedef void_ item13; - typedef T12 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,13 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<12> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector13< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<13> > -{ - template< typename Vector > struct apply - { - typedef vector12< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<12> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector13< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<13> > -{ - template< typename Vector > struct apply - { - typedef vector12< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - > type; - }; -}; - -template< typename V > -struct v_at< V,13 > -{ - typedef typename V::item13 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13 - > -struct vector14 -{ - typedef aux::vector_tag<14> tag; - typedef vector14 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - - - typedef void_ item14; - typedef T13 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,14 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<13> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector14< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<14> > -{ - template< typename Vector > struct apply - { - typedef vector13< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<13> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector14< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<14> > -{ - template< typename Vector > struct apply - { - typedef vector13< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12 - > type; - }; -}; - -template< typename V > -struct v_at< V,14 > -{ - typedef typename V::item14 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - > -struct vector15 -{ - typedef aux::vector_tag<15> tag; - typedef vector15 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - - - typedef void_ item15; - typedef T14 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,15 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<14> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector15< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<15> > -{ - template< typename Vector > struct apply - { - typedef vector14< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<14> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector15< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<15> > -{ - template< typename Vector > struct apply - { - typedef vector14< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - > type; - }; -}; - -template< typename V > -struct v_at< V,15 > -{ - typedef typename V::item15 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15 - > -struct vector16 -{ - typedef aux::vector_tag<16> tag; - typedef vector16 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - - - typedef void_ item16; - typedef T15 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,16 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<15> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector16< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<16> > -{ - template< typename Vector > struct apply - { - typedef vector15< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<15> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector16< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<16> > -{ - template< typename Vector > struct apply - { - typedef vector15< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14 - > type; - }; -}; - -template< typename V > -struct v_at< V,16 > -{ - typedef typename V::item16 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16 - > -struct vector17 -{ - typedef aux::vector_tag<17> tag; - typedef vector17 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - - - typedef void_ item17; - typedef T16 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,17 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<16> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector17< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<17> > -{ - template< typename Vector > struct apply - { - typedef vector16< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<16> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector17< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<17> > -{ - template< typename Vector > struct apply - { - typedef vector16< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - > type; - }; -}; - -template< typename V > -struct v_at< V,17 > -{ - typedef typename V::item17 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17 - > -struct vector18 -{ - typedef aux::vector_tag<18> tag; - typedef vector18 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - - - typedef void_ item18; - typedef T17 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,18 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<17> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector18< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<18> > -{ - template< typename Vector > struct apply - { - typedef vector17< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<17> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector18< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<18> > -{ - template< typename Vector > struct apply - { - typedef vector17< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16 - > type; - }; -}; - -template< typename V > -struct v_at< V,18 > -{ - typedef typename V::item18 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18 - > -struct vector19 -{ - typedef aux::vector_tag<19> tag; - typedef vector19 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - - - typedef void_ item19; - typedef T18 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,19 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<18> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector19< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<19> > -{ - template< typename Vector > struct apply - { - typedef vector18< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<18> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector19< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<19> > -{ - template< typename Vector > struct apply - { - typedef vector18< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - > type; - }; -}; - -template< typename V > -struct v_at< V,19 > -{ - typedef typename V::item19 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - > -struct vector20 -{ - typedef aux::vector_tag<20> tag; - typedef vector20 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - - - typedef void_ item20; - typedef T19 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,20 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<19> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector20< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<20> > -{ - template< typename Vector > struct apply - { - typedef vector19< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<19> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector20< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<20> > -{ - template< typename Vector > struct apply - { - typedef vector19< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18 - > type; - }; -}; - -template< typename V > -struct v_at< V,20 > -{ - typedef typename V::item20 type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp deleted file mode 100644 index 03f64569e..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp +++ /dev/null @@ -1,195 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector20_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - > -struct vector11_c - : vector11< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >, integral_c - > -{ - typedef vector11_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11 - > -struct vector12_c - : vector12< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 > - > -{ - typedef vector12_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12 - > -struct vector13_c - : vector13< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - > -{ - typedef vector13_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13 - > -struct vector14_c - : vector14< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >, integral_c - > -{ - typedef vector14_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14 - > -struct vector15_c - : vector15< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 > - > -{ - typedef vector15_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15 - > -struct vector16_c - : vector16< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - > -{ - typedef vector16_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16 - > -struct vector17_c - : vector17< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >, integral_c - > -{ - typedef vector17_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17 - > -struct vector18_c - : vector18< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 > - > -{ - typedef vector18_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18 - > -struct vector19_c - : vector19< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - > -{ - typedef vector19_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19 - > -struct vector20_c - : vector20< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >, integral_c - > -{ - typedef vector20_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp deleted file mode 100644 index c14c5bfd6..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp +++ /dev/null @@ -1,1464 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector30.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20 - > -struct vector21 -{ - typedef aux::vector_tag<21> tag; - typedef vector21 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - - - typedef void_ item21; - typedef T20 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,21 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<20> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector21< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<21> > -{ - template< typename Vector > struct apply - { - typedef vector20< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<20> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector21< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<21> > -{ - template< typename Vector > struct apply - { - typedef vector20< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - > type; - }; -}; - -template< typename V > -struct v_at< V,21 > -{ - typedef typename V::item21 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21 - > -struct vector22 -{ - typedef aux::vector_tag<22> tag; - typedef vector22 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - - - typedef void_ item22; - typedef T21 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,22 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<21> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector22< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<22> > -{ - template< typename Vector > struct apply - { - typedef vector21< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<21> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector22< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<22> > -{ - template< typename Vector > struct apply - { - typedef vector21< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20 - > type; - }; -}; - -template< typename V > -struct v_at< V,22 > -{ - typedef typename V::item22 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22 - > -struct vector23 -{ - typedef aux::vector_tag<23> tag; - typedef vector23 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - - - typedef void_ item23; - typedef T22 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,23 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<22> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector23< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<23> > -{ - template< typename Vector > struct apply - { - typedef vector22< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<22> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector23< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<23> > -{ - template< typename Vector > struct apply - { - typedef vector22< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - > type; - }; -}; - -template< typename V > -struct v_at< V,23 > -{ - typedef typename V::item23 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23 - > -struct vector24 -{ - typedef aux::vector_tag<24> tag; - typedef vector24 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - - - typedef void_ item24; - typedef T23 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,24 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<23> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector24< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<24> > -{ - template< typename Vector > struct apply - { - typedef vector23< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<23> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector24< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<24> > -{ - template< typename Vector > struct apply - { - typedef vector23< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22 - > type; - }; -}; - -template< typename V > -struct v_at< V,24 > -{ - typedef typename V::item24 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - > -struct vector25 -{ - typedef aux::vector_tag<25> tag; - typedef vector25 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - - - typedef void_ item25; - typedef T24 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,25 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<24> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector25< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<25> > -{ - template< typename Vector > struct apply - { - typedef vector24< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<24> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector25< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<25> > -{ - template< typename Vector > struct apply - { - typedef vector24< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - > type; - }; -}; - -template< typename V > -struct v_at< V,25 > -{ - typedef typename V::item25 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25 - > -struct vector26 -{ - typedef aux::vector_tag<26> tag; - typedef vector26 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - - - typedef void_ item26; - typedef T25 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,26 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<25> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector26< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<26> > -{ - template< typename Vector > struct apply - { - typedef vector25< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<25> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector26< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<26> > -{ - template< typename Vector > struct apply - { - typedef vector25< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24 - > type; - }; -}; - -template< typename V > -struct v_at< V,26 > -{ - typedef typename V::item26 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26 - > -struct vector27 -{ - typedef aux::vector_tag<27> tag; - typedef vector27 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - - - typedef void_ item27; - typedef T26 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,27 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<26> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector27< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<27> > -{ - template< typename Vector > struct apply - { - typedef vector26< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<26> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector27< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<27> > -{ - template< typename Vector > struct apply - { - typedef vector26< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - > type; - }; -}; - -template< typename V > -struct v_at< V,27 > -{ - typedef typename V::item27 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27 - > -struct vector28 -{ - typedef aux::vector_tag<28> tag; - typedef vector28 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - - - typedef void_ item28; - typedef T27 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,28 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<27> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector28< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<28> > -{ - template< typename Vector > struct apply - { - typedef vector27< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<27> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector28< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<28> > -{ - template< typename Vector > struct apply - { - typedef vector27< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26 - > type; - }; -}; - -template< typename V > -struct v_at< V,28 > -{ - typedef typename V::item28 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28 - > -struct vector29 -{ - typedef aux::vector_tag<29> tag; - typedef vector29 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - - - typedef void_ item29; - typedef T28 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,29 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<28> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector29< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<29> > -{ - template< typename Vector > struct apply - { - typedef vector28< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<28> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector29< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<29> > -{ - template< typename Vector > struct apply - { - typedef vector28< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - > type; - }; -}; - -template< typename V > -struct v_at< V,29 > -{ - typedef typename V::item29 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - > -struct vector30 -{ - typedef aux::vector_tag<30> tag; - typedef vector30 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - - - typedef void_ item30; - typedef T29 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,30 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<29> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector30< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<30> > -{ - template< typename Vector > struct apply - { - typedef vector29< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<29> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector30< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<30> > -{ - template< typename Vector > struct apply - { - typedef vector29< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28 - > type; - }; -}; - -template< typename V > -struct v_at< V,30 > -{ - typedef typename V::item30 type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp deleted file mode 100644 index 6d47c9461..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp +++ /dev/null @@ -1,238 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector30_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - > -struct vector21_c - : vector21< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 > - > -{ - typedef vector21_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21 - > -struct vector22_c - : vector22< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - > -{ - typedef vector22_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22 - > -struct vector23_c - : vector23< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >, integral_c - > -{ - typedef vector23_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23 - > -struct vector24_c - : vector24< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 > - > -{ - typedef vector24_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24 - > -struct vector25_c - : vector25< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - > -{ - typedef vector25_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25 - > -struct vector26_c - : vector26< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >, integral_c - > -{ - typedef vector26_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26 - > -struct vector27_c - : vector27< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 > - > -{ - typedef vector27_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27 - > -struct vector28_c - : vector28< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - > -{ - typedef vector28_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28 - > -struct vector29_c - : vector29< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >, integral_c - > -{ - typedef vector29_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29 - > -struct vector30_c - : vector30< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 > - > -{ - typedef vector30_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp deleted file mode 100644 index e4b7aaa05..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp +++ /dev/null @@ -1,1784 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector40.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30 - > -struct vector31 -{ - typedef aux::vector_tag<31> tag; - typedef vector31 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - - - typedef void_ item31; - typedef T30 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,31 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<30> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector31< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<31> > -{ - template< typename Vector > struct apply - { - typedef vector30< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<30> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector31< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<31> > -{ - template< typename Vector > struct apply - { - typedef vector30< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - > type; - }; -}; - -template< typename V > -struct v_at< V,31 > -{ - typedef typename V::item31 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31 - > -struct vector32 -{ - typedef aux::vector_tag<32> tag; - typedef vector32 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - - - typedef void_ item32; - typedef T31 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,32 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<31> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector32< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<32> > -{ - template< typename Vector > struct apply - { - typedef vector31< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<31> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector32< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<32> > -{ - template< typename Vector > struct apply - { - typedef vector31< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30 - > type; - }; -}; - -template< typename V > -struct v_at< V,32 > -{ - typedef typename V::item32 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32 - > -struct vector33 -{ - typedef aux::vector_tag<33> tag; - typedef vector33 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - - - typedef void_ item33; - typedef T32 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,33 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<32> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector33< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<33> > -{ - template< typename Vector > struct apply - { - typedef vector32< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<32> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector33< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<33> > -{ - template< typename Vector > struct apply - { - typedef vector32< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - > type; - }; -}; - -template< typename V > -struct v_at< V,33 > -{ - typedef typename V::item33 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33 - > -struct vector34 -{ - typedef aux::vector_tag<34> tag; - typedef vector34 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - - - typedef void_ item34; - typedef T33 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,34 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<33> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector34< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<34> > -{ - template< typename Vector > struct apply - { - typedef vector33< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<33> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector34< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<34> > -{ - template< typename Vector > struct apply - { - typedef vector33< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32 - > type; - }; -}; - -template< typename V > -struct v_at< V,34 > -{ - typedef typename V::item34 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - > -struct vector35 -{ - typedef aux::vector_tag<35> tag; - typedef vector35 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - - - typedef void_ item35; - typedef T34 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,35 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<34> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector35< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<35> > -{ - template< typename Vector > struct apply - { - typedef vector34< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<34> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector35< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<35> > -{ - template< typename Vector > struct apply - { - typedef vector34< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - > type; - }; -}; - -template< typename V > -struct v_at< V,35 > -{ - typedef typename V::item35 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35 - > -struct vector36 -{ - typedef aux::vector_tag<36> tag; - typedef vector36 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - - - typedef void_ item36; - typedef T35 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,36 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<35> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector36< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<36> > -{ - template< typename Vector > struct apply - { - typedef vector35< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<35> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector36< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<36> > -{ - template< typename Vector > struct apply - { - typedef vector35< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34 - > type; - }; -}; - -template< typename V > -struct v_at< V,36 > -{ - typedef typename V::item36 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36 - > -struct vector37 -{ - typedef aux::vector_tag<37> tag; - typedef vector37 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - - - typedef void_ item37; - typedef T36 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,37 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<36> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector37< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<37> > -{ - template< typename Vector > struct apply - { - typedef vector36< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<36> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector37< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<37> > -{ - template< typename Vector > struct apply - { - typedef vector36< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - > type; - }; -}; - -template< typename V > -struct v_at< V,37 > -{ - typedef typename V::item37 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37 - > -struct vector38 -{ - typedef aux::vector_tag<38> tag; - typedef vector38 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - - - typedef void_ item38; - typedef T37 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,38 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<37> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector38< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<38> > -{ - template< typename Vector > struct apply - { - typedef vector37< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<37> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector38< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<38> > -{ - template< typename Vector > struct apply - { - typedef vector37< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36 - > type; - }; -}; - -template< typename V > -struct v_at< V,38 > -{ - typedef typename V::item38 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38 - > -struct vector39 -{ - typedef aux::vector_tag<39> tag; - typedef vector39 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - - - typedef void_ item39; - typedef T38 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,39 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<38> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector39< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<39> > -{ - template< typename Vector > struct apply - { - typedef vector38< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<38> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector39< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<39> > -{ - template< typename Vector > struct apply - { - typedef vector38< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - > type; - }; -}; - -template< typename V > -struct v_at< V,39 > -{ - typedef typename V::item39 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - > -struct vector40 -{ - typedef aux::vector_tag<40> tag; - typedef vector40 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - - - typedef void_ item40; - typedef T39 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,40 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<39> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector40< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<40> > -{ - template< typename Vector > struct apply - { - typedef vector39< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<39> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector40< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<40> > -{ - template< typename Vector > struct apply - { - typedef vector39< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38 - > type; - }; -}; - -template< typename V > -struct v_at< V,40 > -{ - typedef typename V::item40 type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp deleted file mode 100644 index f248b0d5e..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp +++ /dev/null @@ -1,281 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector40_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - > -struct vector31_c - : vector31< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - > -{ - typedef vector31_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31 - > -struct vector32_c - : vector32< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >, integral_c - > -{ - typedef vector32_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32 - > -struct vector33_c - : vector33< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 > - > -{ - typedef vector33_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33 - > -struct vector34_c - : vector34< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - > -{ - typedef vector34_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34 - > -struct vector35_c - : vector35< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >, integral_c - > -{ - typedef vector35_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35 - > -struct vector36_c - : vector36< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 > - > -{ - typedef vector36_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36 - > -struct vector37_c - : vector37< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - > -{ - typedef vector37_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37 - > -struct vector38_c - : vector38< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >, integral_c - > -{ - typedef vector38_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38 - > -struct vector39_c - : vector39< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 > - > -{ - typedef vector39_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39 - > -struct vector40_c - : vector40< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - > -{ - typedef vector40_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp deleted file mode 100644 index f7950d359..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp +++ /dev/null @@ -1,2104 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector50.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40 - > -struct vector41 -{ - typedef aux::vector_tag<41> tag; - typedef vector41 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - - - typedef void_ item41; - typedef T40 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,41 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<40> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector41< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<41> > -{ - template< typename Vector > struct apply - { - typedef vector40< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<40> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector41< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<41> > -{ - template< typename Vector > struct apply - { - typedef vector40< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - > type; - }; -}; - -template< typename V > -struct v_at< V,41 > -{ - typedef typename V::item41 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41 - > -struct vector42 -{ - typedef aux::vector_tag<42> tag; - typedef vector42 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - - - typedef void_ item42; - typedef T41 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,42 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<41> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector42< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<42> > -{ - template< typename Vector > struct apply - { - typedef vector41< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<41> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector42< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<42> > -{ - template< typename Vector > struct apply - { - typedef vector41< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40 - > type; - }; -}; - -template< typename V > -struct v_at< V,42 > -{ - typedef typename V::item42 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42 - > -struct vector43 -{ - typedef aux::vector_tag<43> tag; - typedef vector43 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - - - typedef void_ item43; - typedef T42 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,43 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<42> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector43< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<43> > -{ - template< typename Vector > struct apply - { - typedef vector42< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<42> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector43< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<43> > -{ - template< typename Vector > struct apply - { - typedef vector42< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - > type; - }; -}; - -template< typename V > -struct v_at< V,43 > -{ - typedef typename V::item43 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43 - > -struct vector44 -{ - typedef aux::vector_tag<44> tag; - typedef vector44 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - - - typedef void_ item44; - typedef T43 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,44 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<43> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector44< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<44> > -{ - template< typename Vector > struct apply - { - typedef vector43< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<43> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector44< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<44> > -{ - template< typename Vector > struct apply - { - typedef vector43< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42 - > type; - }; -}; - -template< typename V > -struct v_at< V,44 > -{ - typedef typename V::item44 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - > -struct vector45 -{ - typedef aux::vector_tag<45> tag; - typedef vector45 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - - - typedef void_ item45; - typedef T44 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,45 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<44> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector45< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<45> > -{ - template< typename Vector > struct apply - { - typedef vector44< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<44> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector45< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<45> > -{ - template< typename Vector > struct apply - { - typedef vector44< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - > type; - }; -}; - -template< typename V > -struct v_at< V,45 > -{ - typedef typename V::item45 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45 - > -struct vector46 -{ - typedef aux::vector_tag<46> tag; - typedef vector46 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - typedef T45 item45; - - - typedef void_ item46; - typedef T45 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,46 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<45> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector46< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<46> > -{ - template< typename Vector > struct apply - { - typedef vector45< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - , typename Vector::item45 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<45> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector46< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<46> > -{ - template< typename Vector > struct apply - { - typedef vector45< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44 - > type; - }; -}; - -template< typename V > -struct v_at< V,46 > -{ - typedef typename V::item46 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46 - > -struct vector47 -{ - typedef aux::vector_tag<47> tag; - typedef vector47 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - typedef T45 item45; - typedef T46 item46; - - - typedef void_ item47; - typedef T46 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,47 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<46> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector47< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<47> > -{ - template< typename Vector > struct apply - { - typedef vector46< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - , typename Vector::item45, typename Vector::item46 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<46> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector47< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<47> > -{ - template< typename Vector > struct apply - { - typedef vector46< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - > type; - }; -}; - -template< typename V > -struct v_at< V,47 > -{ - typedef typename V::item47 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47 - > -struct vector48 -{ - typedef aux::vector_tag<48> tag; - typedef vector48 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - typedef T45 item45; - typedef T46 item46; - typedef T47 item47; - - - typedef void_ item48; - typedef T47 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,48 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<47> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector48< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<48> > -{ - template< typename Vector > struct apply - { - typedef vector47< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - , typename Vector::item45, typename Vector::item46 - , typename Vector::item47 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<47> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector48< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<48> > -{ - template< typename Vector > struct apply - { - typedef vector47< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46 - > type; - }; -}; - -template< typename V > -struct v_at< V,48 > -{ - typedef typename V::item48 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47, typename T48 - > -struct vector49 -{ - typedef aux::vector_tag<49> tag; - typedef vector49 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - typedef T45 item45; - typedef T46 item46; - typedef T47 item47; - typedef T48 item48; - - - typedef void_ item49; - typedef T48 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,49 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<48> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector49< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<49> > -{ - template< typename Vector > struct apply - { - typedef vector48< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - , typename Vector::item45, typename Vector::item46 - , typename Vector::item47, typename Vector::item48 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<48> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector49< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<49> > -{ - template< typename Vector > struct apply - { - typedef vector48< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - > type; - }; -}; - -template< typename V > -struct v_at< V,49 > -{ - typedef typename V::item49 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47, typename T48, typename T49 - > -struct vector50 -{ - typedef aux::vector_tag<50> tag; - typedef vector50 type; - typedef T0 item0; - typedef T1 item1; - typedef T2 item2; - typedef T3 item3; - typedef T4 item4; - typedef T5 item5; - typedef T6 item6; - typedef T7 item7; - typedef T8 item8; - typedef T9 item9; - typedef T10 item10; - typedef T11 item11; - typedef T12 item12; - typedef T13 item13; - typedef T14 item14; - typedef T15 item15; - typedef T16 item16; - typedef T17 item17; - typedef T18 item18; - typedef T19 item19; - typedef T20 item20; - typedef T21 item21; - typedef T22 item22; - typedef T23 item23; - typedef T24 item24; - typedef T25 item25; - typedef T26 item26; - typedef T27 item27; - typedef T28 item28; - typedef T29 item29; - typedef T30 item30; - typedef T31 item31; - typedef T32 item32; - typedef T33 item33; - typedef T34 item34; - typedef T35 item35; - typedef T36 item36; - typedef T37 item37; - typedef T38 item38; - typedef T39 item39; - typedef T40 item40; - typedef T41 item41; - typedef T42 item42; - typedef T43 item43; - typedef T44 item44; - typedef T45 item45; - typedef T46 item46; - typedef T47 item47; - typedef T48 item48; - typedef T49 item49; - - - typedef void_ item50; - typedef T49 back; - typedef v_iter< type,0 > begin; - typedef v_iter< type,50 > end; -}; - -template<> -struct push_front_impl< aux::vector_tag<49> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector50< - T - , - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - , typename Vector::item48 - > type; - }; -}; - -template<> -struct pop_front_impl< aux::vector_tag<50> > -{ - template< typename Vector > struct apply - { - typedef vector49< - typename Vector::item1, typename Vector::item2 - , typename Vector::item3, typename Vector::item4 - , typename Vector::item5, typename Vector::item6 - , typename Vector::item7, typename Vector::item8 - , typename Vector::item9, typename Vector::item10 - , typename Vector::item11, typename Vector::item12 - , typename Vector::item13, typename Vector::item14 - , typename Vector::item15, typename Vector::item16 - , typename Vector::item17, typename Vector::item18 - , typename Vector::item19, typename Vector::item20 - , typename Vector::item21, typename Vector::item22 - , typename Vector::item23, typename Vector::item24 - , typename Vector::item25, typename Vector::item26 - , typename Vector::item27, typename Vector::item28 - , typename Vector::item29, typename Vector::item30 - , typename Vector::item31, typename Vector::item32 - , typename Vector::item33, typename Vector::item34 - , typename Vector::item35, typename Vector::item36 - , typename Vector::item37, typename Vector::item38 - , typename Vector::item39, typename Vector::item40 - , typename Vector::item41, typename Vector::item42 - , typename Vector::item43, typename Vector::item44 - , typename Vector::item45, typename Vector::item46 - , typename Vector::item47, typename Vector::item48 - , typename Vector::item49 - > type; - }; -}; - -template<> -struct push_back_impl< aux::vector_tag<49> > -{ - template< typename Vector, typename T > struct apply - { - typedef vector50< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - , typename Vector::item48 - , - T - > type; - }; -}; - -template<> -struct pop_back_impl< aux::vector_tag<50> > -{ - template< typename Vector > struct apply - { - typedef vector49< - typename Vector::item0, typename Vector::item1 - , typename Vector::item2, typename Vector::item3 - , typename Vector::item4, typename Vector::item5 - , typename Vector::item6, typename Vector::item7 - , typename Vector::item8, typename Vector::item9 - , typename Vector::item10, typename Vector::item11 - , typename Vector::item12, typename Vector::item13 - , typename Vector::item14, typename Vector::item15 - , typename Vector::item16, typename Vector::item17 - , typename Vector::item18, typename Vector::item19 - , typename Vector::item20, typename Vector::item21 - , typename Vector::item22, typename Vector::item23 - , typename Vector::item24, typename Vector::item25 - , typename Vector::item26, typename Vector::item27 - , typename Vector::item28, typename Vector::item29 - , typename Vector::item30, typename Vector::item31 - , typename Vector::item32, typename Vector::item33 - , typename Vector::item34, typename Vector::item35 - , typename Vector::item36, typename Vector::item37 - , typename Vector::item38, typename Vector::item39 - , typename Vector::item40, typename Vector::item41 - , typename Vector::item42, typename Vector::item43 - , typename Vector::item44, typename Vector::item45 - , typename Vector::item46, typename Vector::item47 - , typename Vector::item48 - > type; - }; -}; - -template< typename V > -struct v_at< V,50 > -{ - typedef typename V::item50 type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp deleted file mode 100644 index 4d09834ed..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp +++ /dev/null @@ -1,325 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector50_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - > -struct vector41_c - : vector41< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >, integral_c - > -{ - typedef vector41_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41 - > -struct vector42_c - : vector42< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 > - > -{ - typedef vector42_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42 - > -struct vector43_c - : vector43< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - > -{ - typedef vector43_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43 - > -struct vector44_c - : vector44< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >, integral_c - > -{ - typedef vector44_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44 - > -struct vector45_c - : vector45< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 > - > -{ - typedef vector45_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45 - > -struct vector46_c - : vector46< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 > - > -{ - typedef vector46_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46 - > -struct vector47_c - : vector47< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >, integral_c - > -{ - typedef vector47_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47 - > -struct vector48_c - : vector48< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 > - , integral_c< T,C46 >, integral_c< T,C47 > - > -{ - typedef vector48_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48 - > -struct vector49_c - : vector49< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 > - , integral_c< T,C46 >, integral_c< T,C47 >, integral_c< T,C48 > - > -{ - typedef vector49_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48, T C49 - > -struct vector50_c - : vector50< - integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > - , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 > - , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 > - , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 > - , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 > - , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 > - , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 > - , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 > - , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 > - , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 > - , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 > - , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 > - , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 > - , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 > - , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 > - , integral_c< T,C46 >, integral_c< T,C47 >, integral_c< T,C48 >, integral_c - > -{ - typedef vector50_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp deleted file mode 100644 index c2b52d06b..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp +++ /dev/null @@ -1,139 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector10.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0 - > -struct vector1 - : v_item< - T0 - , vector0< > - > -{ - typedef vector1 type; -}; - -template< - typename T0, typename T1 - > -struct vector2 - : v_item< - T1 - , vector1 - > -{ - typedef vector2 type; -}; - -template< - typename T0, typename T1, typename T2 - > -struct vector3 - : v_item< - T2 - , vector2< T0,T1 > - > -{ - typedef vector3 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3 - > -struct vector4 - : v_item< - T3 - , vector3< T0,T1,T2 > - > -{ - typedef vector4 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - > -struct vector5 - : v_item< - T4 - , vector4< T0,T1,T2,T3 > - > -{ - typedef vector5 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5 - > -struct vector6 - : v_item< - T5 - , vector5< T0,T1,T2,T3,T4 > - > -{ - typedef vector6 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6 - > -struct vector7 - : v_item< - T6 - , vector6< T0,T1,T2,T3,T4,T5 > - > -{ - typedef vector7 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7 - > -struct vector8 - : v_item< - T7 - , vector7< T0,T1,T2,T3,T4,T5,T6 > - > -{ - typedef vector8 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8 - > -struct vector9 - : v_item< - T8 - , vector8< T0,T1,T2,T3,T4,T5,T6,T7 > - > -{ - typedef vector9 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - > -struct vector10 - : v_item< - T9 - , vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 > - > -{ - typedef vector10 type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp deleted file mode 100644 index be1bd26ac..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp +++ /dev/null @@ -1,154 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector10_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0 - > -struct vector1_c - : v_item< - integral_c< T,C0 > - , vector0_c - > -{ - typedef vector1_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1 - > -struct vector2_c - : v_item< - integral_c< T,C1 > - , vector1_c< T,C0 > - > -{ - typedef vector2_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2 - > -struct vector3_c - : v_item< - integral_c< T,C2 > - , vector2_c< T,C0,C1 > - > -{ - typedef vector3_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3 - > -struct vector4_c - : v_item< - integral_c< T,C3 > - , vector3_c< T,C0,C1,C2 > - > -{ - typedef vector4_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4 - > -struct vector5_c - : v_item< - integral_c< T,C4 > - , vector4_c< T,C0,C1,C2,C3 > - > -{ - typedef vector5_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5 - > -struct vector6_c - : v_item< - integral_c< T,C5 > - , vector5_c< T,C0,C1,C2,C3,C4 > - > -{ - typedef vector6_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6 - > -struct vector7_c - : v_item< - integral_c< T,C6 > - , vector6_c< T,C0,C1,C2,C3,C4,C5 > - > -{ - typedef vector7_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7 - > -struct vector8_c - : v_item< - integral_c< T,C7 > - , vector7_c< T,C0,C1,C2,C3,C4,C5,C6 > - > -{ - typedef vector8_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8 - > -struct vector9_c - : v_item< - integral_c< T,C8 > - , vector8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 > - > -{ - typedef vector9_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9 - > -struct vector10_c - : v_item< - integral_c< T,C9 > - , vector9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 > - > -{ - typedef vector10_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp deleted file mode 100644 index 59fb3e879..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp +++ /dev/null @@ -1,159 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector20.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10 - > -struct vector11 - : v_item< - T10 - , vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 > - > -{ - typedef vector11 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11 - > -struct vector12 - : v_item< - T11 - , vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 > - > -{ - typedef vector12 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12 - > -struct vector13 - : v_item< - T12 - , vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 > - > -{ - typedef vector13 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13 - > -struct vector14 - : v_item< - T13 - , vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 > - > -{ - typedef vector14 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - > -struct vector15 - : v_item< - T14 - , vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 > - > -{ - typedef vector15 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15 - > -struct vector16 - : v_item< - T15 - , vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 > - > -{ - typedef vector16 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16 - > -struct vector17 - : v_item< - T16 - , vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 > - > -{ - typedef vector17 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17 - > -struct vector18 - : v_item< - T17 - , vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 > - > -{ - typedef vector18 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18 - > -struct vector19 - : v_item< - T18 - , vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 > - > -{ - typedef vector19 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - > -struct vector20 - : v_item< - T19 - , vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 > - > -{ - typedef vector20 type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp deleted file mode 100644 index 578259136..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp +++ /dev/null @@ -1,163 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector20_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - > -struct vector11_c - : v_item< - integral_c< T,C10 > - , vector10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 > - > -{ - typedef vector11_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11 - > -struct vector12_c - : v_item< - integral_c< T,C11 > - , vector11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 > - > -{ - typedef vector12_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12 - > -struct vector13_c - : v_item< - integral_c< T,C12 > - , vector12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 > - > -{ - typedef vector13_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13 - > -struct vector14_c - : v_item< - integral_c< T,C13 > - , vector13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 > - > -{ - typedef vector14_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14 - > -struct vector15_c - : v_item< - integral_c< T,C14 > - , vector14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 > - > -{ - typedef vector15_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15 - > -struct vector16_c - : v_item< - integral_c< T,C15 > - , vector15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 > - > -{ - typedef vector16_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16 - > -struct vector17_c - : v_item< - integral_c< T,C16 > - , vector16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 > - > -{ - typedef vector17_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17 - > -struct vector18_c - : v_item< - integral_c< T,C17 > - , vector17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 > - > -{ - typedef vector18_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18 - > -struct vector19_c - : v_item< - integral_c< T,C18 > - , vector18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 > - > -{ - typedef vector19_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19 - > -struct vector20_c - : v_item< - integral_c< T,C19 > - , vector19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 > - > -{ - typedef vector20_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp deleted file mode 100644 index f7e8e87e1..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp +++ /dev/null @@ -1,179 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector30.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20 - > -struct vector21 - : v_item< - T20 - , vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 > - > -{ - typedef vector21 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21 - > -struct vector22 - : v_item< - T21 - , vector21< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20 > - > -{ - typedef vector22 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22 - > -struct vector23 - : v_item< - T22 - , vector22< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21 > - > -{ - typedef vector23 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23 - > -struct vector24 - : v_item< - T23 - , vector23< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22 > - > -{ - typedef vector24 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - > -struct vector25 - : v_item< - T24 - , vector24< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23 > - > -{ - typedef vector25 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25 - > -struct vector26 - : v_item< - T25 - , vector25< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24 > - > -{ - typedef vector26 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26 - > -struct vector27 - : v_item< - T26 - , vector26< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25 > - > -{ - typedef vector27 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27 - > -struct vector28 - : v_item< - T27 - , vector27< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26 > - > -{ - typedef vector28 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28 - > -struct vector29 - : v_item< - T28 - , vector28< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27 > - > -{ - typedef vector29 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - > -struct vector30 - : v_item< - T29 - , vector29< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28 > - > -{ - typedef vector30 type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp deleted file mode 100644 index 9a3d4a659..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp +++ /dev/null @@ -1,173 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector30_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - > -struct vector21_c - : v_item< - integral_c< T,C20 > - , vector20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 > - > -{ - typedef vector21_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21 - > -struct vector22_c - : v_item< - integral_c< T,C21 > - , vector21_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20 > - > -{ - typedef vector22_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22 - > -struct vector23_c - : v_item< - integral_c< T,C22 > - , vector22_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21 > - > -{ - typedef vector23_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23 - > -struct vector24_c - : v_item< - integral_c< T,C23 > - , vector23_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22 > - > -{ - typedef vector24_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24 - > -struct vector25_c - : v_item< - integral_c< T,C24 > - , vector24_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23 > - > -{ - typedef vector25_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25 - > -struct vector26_c - : v_item< - integral_c< T,C25 > - , vector25_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24 > - > -{ - typedef vector26_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26 - > -struct vector27_c - : v_item< - integral_c< T,C26 > - , vector26_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25 > - > -{ - typedef vector27_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27 - > -struct vector28_c - : v_item< - integral_c< T,C27 > - , vector27_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26 > - > -{ - typedef vector28_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28 - > -struct vector29_c - : v_item< - integral_c< T,C28 > - , vector28_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27 > - > -{ - typedef vector29_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29 - > -struct vector30_c - : v_item< - integral_c< T,C29 > - , vector29_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28 > - > -{ - typedef vector30_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp deleted file mode 100644 index 3edad1e0f..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp +++ /dev/null @@ -1,199 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector40.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30 - > -struct vector31 - : v_item< - T30 - , vector30< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29 > - > -{ - typedef vector31 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31 - > -struct vector32 - : v_item< - T31 - , vector31< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30 > - > -{ - typedef vector32 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32 - > -struct vector33 - : v_item< - T32 - , vector32< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31 > - > -{ - typedef vector33 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33 - > -struct vector34 - : v_item< - T33 - , vector33< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32 > - > -{ - typedef vector34 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - > -struct vector35 - : v_item< - T34 - , vector34< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33 > - > -{ - typedef vector35 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35 - > -struct vector36 - : v_item< - T35 - , vector35< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34 > - > -{ - typedef vector36 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36 - > -struct vector37 - : v_item< - T36 - , vector36< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35 > - > -{ - typedef vector37 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37 - > -struct vector38 - : v_item< - T37 - , vector37< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36 > - > -{ - typedef vector38 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38 - > -struct vector39 - : v_item< - T38 - , vector38< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37 > - > -{ - typedef vector39 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - > -struct vector40 - : v_item< - T39 - , vector39< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38 > - > -{ - typedef vector40 type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp deleted file mode 100644 index 0dc1a0a1f..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp +++ /dev/null @@ -1,183 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector40_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - > -struct vector31_c - : v_item< - integral_c< T,C30 > - , vector30_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29 > - > -{ - typedef vector31_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31 - > -struct vector32_c - : v_item< - integral_c< T,C31 > - , vector31_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30 > - > -{ - typedef vector32_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32 - > -struct vector33_c - : v_item< - integral_c< T,C32 > - , vector32_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31 > - > -{ - typedef vector33_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33 - > -struct vector34_c - : v_item< - integral_c< T,C33 > - , vector33_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32 > - > -{ - typedef vector34_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34 - > -struct vector35_c - : v_item< - integral_c< T,C34 > - , vector34_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33 > - > -{ - typedef vector35_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35 - > -struct vector36_c - : v_item< - integral_c< T,C35 > - , vector35_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34 > - > -{ - typedef vector36_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36 - > -struct vector37_c - : v_item< - integral_c< T,C36 > - , vector36_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35 > - > -{ - typedef vector37_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37 - > -struct vector38_c - : v_item< - integral_c< T,C37 > - , vector37_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36 > - > -{ - typedef vector38_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38 - > -struct vector39_c - : v_item< - integral_c< T,C38 > - , vector38_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37 > - > -{ - typedef vector39_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39 - > -struct vector40_c - : v_item< - integral_c< T,C39 > - , vector39_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38 > - > -{ - typedef vector40_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp deleted file mode 100644 index 176ebfe69..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp +++ /dev/null @@ -1,219 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector50.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40 - > -struct vector41 - : v_item< - T40 - , vector40< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39 > - > -{ - typedef vector41 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41 - > -struct vector42 - : v_item< - T41 - , vector41< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40 > - > -{ - typedef vector42 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42 - > -struct vector43 - : v_item< - T42 - , vector42< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41 > - > -{ - typedef vector43 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43 - > -struct vector44 - : v_item< - T43 - , vector43< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42 > - > -{ - typedef vector44 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - > -struct vector45 - : v_item< - T44 - , vector44< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43 > - > -{ - typedef vector45 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45 - > -struct vector46 - : v_item< - T45 - , vector45< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44 > - > -{ - typedef vector46 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46 - > -struct vector47 - : v_item< - T46 - , vector46< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45 > - > -{ - typedef vector47 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47 - > -struct vector48 - : v_item< - T47 - , vector47< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46 > - > -{ - typedef vector48 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47, typename T48 - > -struct vector49 - : v_item< - T48 - , vector48< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47 > - > -{ - typedef vector49 type; -}; - -template< - typename T0, typename T1, typename T2, typename T3, typename T4 - , typename T5, typename T6, typename T7, typename T8, typename T9 - , typename T10, typename T11, typename T12, typename T13, typename T14 - , typename T15, typename T16, typename T17, typename T18, typename T19 - , typename T20, typename T21, typename T22, typename T23, typename T24 - , typename T25, typename T26, typename T27, typename T28, typename T29 - , typename T30, typename T31, typename T32, typename T33, typename T34 - , typename T35, typename T36, typename T37, typename T38, typename T39 - , typename T40, typename T41, typename T42, typename T43, typename T44 - , typename T45, typename T46, typename T47, typename T48, typename T49 - > -struct vector50 - : v_item< - T49 - , vector49< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48 > - > -{ - typedef vector50 type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp b/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp deleted file mode 100644 index aa14301d5..000000000 --- a/src/boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp +++ /dev/null @@ -1,193 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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) -// - -// Preprocessed version of "boost/mpl/vector/vector50_c.hpp" header -// -- DO NOT modify by hand! - -namespace boost { namespace mpl { - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - > -struct vector41_c - : v_item< - integral_c< T,C40 > - , vector40_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39 > - > -{ - typedef vector41_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41 - > -struct vector42_c - : v_item< - integral_c< T,C41 > - , vector41_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40 > - > -{ - typedef vector42_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42 - > -struct vector43_c - : v_item< - integral_c< T,C42 > - , vector42_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41 > - > -{ - typedef vector43_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43 - > -struct vector44_c - : v_item< - integral_c< T,C43 > - , vector43_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42 > - > -{ - typedef vector44_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44 - > -struct vector45_c - : v_item< - integral_c< T,C44 > - , vector44_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43 > - > -{ - typedef vector45_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45 - > -struct vector46_c - : v_item< - integral_c< T,C45 > - , vector45_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44 > - > -{ - typedef vector46_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46 - > -struct vector47_c - : v_item< - integral_c< T,C46 > - , vector46_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45 > - > -{ - typedef vector47_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47 - > -struct vector48_c - : v_item< - integral_c< T,C47 > - , vector47_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45,C46 > - > -{ - typedef vector48_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48 - > -struct vector49_c - : v_item< - integral_c< T,C48 > - , vector48_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45,C46,C47 > - > -{ - typedef vector49_c type; - typedef T value_type; -}; - -template< - typename T - , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10 - , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20 - , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30 - , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40 - , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48, T C49 - > -struct vector50_c - : v_item< - integral_c< T,C49 > - , vector49_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45,C46,C47,C48 > - > -{ - typedef vector50_c type; - typedef T value_type; -}; - -}} diff --git a/src/boost/boost/mpl/vector/aux_/push_back.hpp b/src/boost/boost/mpl/vector/aux_/push_back.hpp deleted file mode 100644 index 4048aec5e..000000000 --- a/src/boost/boost/mpl/vector/aux_/push_back.hpp +++ /dev/null @@ -1,40 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -# include -# include - -namespace boost { namespace mpl { - -template<> -struct push_back_impl< aux::vector_tag > -{ - template< typename Vector, typename T > struct apply - { - typedef v_item type; - }; -}; - -}} - -#endif - -#endif // BOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/push_front.hpp b/src/boost/boost/mpl/vector/aux_/push_front.hpp deleted file mode 100644 index 101569124..000000000 --- a/src/boost/boost/mpl/vector/aux_/push_front.hpp +++ /dev/null @@ -1,40 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -# include -# include - -namespace boost { namespace mpl { - -template<> -struct push_front_impl< aux::vector_tag > -{ - template< typename Vector, typename T > struct apply - { - typedef v_item type; - }; -}; - -}} - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -#endif // BOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/size.hpp b/src/boost/boost/mpl/vector/aux_/size.hpp deleted file mode 100644 index d3edf7240..000000000 --- a/src/boost/boost/mpl/vector/aux_/size.hpp +++ /dev/null @@ -1,49 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include - -namespace boost { namespace mpl { - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - -template<> -struct size_impl< aux::vector_tag > - : O1_size_impl< aux::vector_tag > -{ -}; - -#else - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template< long N > -struct size_impl< aux::vector_tag > - : O1_size_impl< aux::vector_tag > -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES - -}} - -#endif // BOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/tag.hpp b/src/boost/boost/mpl/vector/aux_/tag.hpp deleted file mode 100644 index 9157ab8fe..000000000 --- a/src/boost/boost/mpl/vector/aux_/tag.hpp +++ /dev/null @@ -1,32 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { namespace aux { - -struct v_iter_tag; - -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) -struct vector_tag; -#else -template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct vector_tag; -#endif - -}}} - -#endif // BOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/aux_/vector0.hpp b/src/boost/boost/mpl/vector/aux_/vector0.hpp deleted file mode 100644 index 549958b37..000000000 --- a/src/boost/boost/mpl/vector/aux_/vector0.hpp +++ /dev/null @@ -1,52 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED -#define BOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include - -#include -#include -#include - -namespace boost { namespace mpl { - -template< typename Dummy = na > struct vector0; - -template<> struct vector0 -{ -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) - typedef aux::vector_tag tag; - typedef vector0 type; - typedef long_<32768> lower_bound_; - typedef lower_bound_ upper_bound_; - typedef long_<0> size; - - static aux::type_wrapper item_(...); -#else - typedef aux::vector_tag<0> tag; - typedef vector0 type; - typedef void_ item0; - - typedef v_iter,0> begin; - typedef v_iter,0> end; -#endif -}; - -}} - -#endif // BOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector0.hpp b/src/boost/boost/mpl/vector/vector0.hpp deleted file mode 100644 index 1fbd4d78f..000000000 --- a/src/boost/boost/mpl/vector/vector0.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif // BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector0_c.hpp b/src/boost/boost/mpl/vector/vector0_c.hpp deleted file mode 100644 index 94aa04da1..000000000 --- a/src/boost/boost/mpl/vector/vector0_c.hpp +++ /dev/null @@ -1,31 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { - -template< typename T > struct vector0_c - : vector0<> -{ - typedef vector0_c type; - typedef T value_type; -}; - -}} - -#endif // BOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector10.hpp b/src/boost/boost/mpl/vector/vector10.hpp deleted file mode 100644 index 6604f39e3..000000000 --- a/src/boost/boost/mpl/vector/vector10.hpp +++ /dev/null @@ -1,45 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector10.hpp -# include - -#else - -# include -# include -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(0, 10, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector10_c.hpp b/src/boost/boost/mpl/vector/vector10_c.hpp deleted file mode 100644 index ee70efc06..000000000 --- a/src/boost/boost/mpl/vector/vector10_c.hpp +++ /dev/null @@ -1,46 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector10_c.hpp -# include - -#else - -# include -# include -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(1, 10, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector20.hpp b/src/boost/boost/mpl/vector/vector20.hpp deleted file mode 100644 index 096d0723d..000000000 --- a/src/boost/boost/mpl/vector/vector20.hpp +++ /dev/null @@ -1,45 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector20.hpp -# include - -#else - -# include -# include -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(11, 20, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector20_c.hpp b/src/boost/boost/mpl/vector/vector20_c.hpp deleted file mode 100644 index 611d75c6d..000000000 --- a/src/boost/boost/mpl/vector/vector20_c.hpp +++ /dev/null @@ -1,46 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector20_c.hpp -# include - -#else - -# include -# include -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(11, 20, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector30.hpp b/src/boost/boost/mpl/vector/vector30.hpp deleted file mode 100644 index 8b28ea5cc..000000000 --- a/src/boost/boost/mpl/vector/vector30.hpp +++ /dev/null @@ -1,45 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector30.hpp -# include - -#else - -# include -# include -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(21, 30, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector30_c.hpp b/src/boost/boost/mpl/vector/vector30_c.hpp deleted file mode 100644 index 50ebda0bc..000000000 --- a/src/boost/boost/mpl/vector/vector30_c.hpp +++ /dev/null @@ -1,47 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector30_c.hpp -# include - -#else - -# include -# include -# include -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(21, 30, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_USE_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector40.hpp b/src/boost/boost/mpl/vector/vector40.hpp deleted file mode 100644 index ad6328911..000000000 --- a/src/boost/boost/mpl/vector/vector40.hpp +++ /dev/null @@ -1,45 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector40.hpp -# include - -#else - -# include -# include -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(31, 40, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector40_c.hpp b/src/boost/boost/mpl/vector/vector40_c.hpp deleted file mode 100644 index 23247ed7a..000000000 --- a/src/boost/boost/mpl/vector/vector40_c.hpp +++ /dev/null @@ -1,46 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector40_c.hpp -# include - -#else - -# include -# include -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(31, 40, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector50.hpp b/src/boost/boost/mpl/vector/vector50.hpp deleted file mode 100644 index a4348e20d..000000000 --- a/src/boost/boost/mpl/vector/vector50.hpp +++ /dev/null @@ -1,45 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector50.hpp -# include - -#else - -# include -# include -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(41, 50, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED diff --git a/src/boost/boost/mpl/vector/vector50_c.hpp b/src/boost/boost/mpl/vector/vector50_c.hpp deleted file mode 100644 index 73034c234..000000000 --- a/src/boost/boost/mpl/vector/vector50_c.hpp +++ /dev/null @@ -1,46 +0,0 @@ - -#ifndef BOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED -#define BOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include -# include -#endif - -#include - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER vector50_c.hpp -# include - -#else - -# include -# include -# include - -namespace boost { namespace mpl { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(41, 50, )) -# include BOOST_PP_ITERATE() - -}} - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - -#endif // BOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED diff --git a/src/boost/boost/next_prior.hpp b/src/boost/boost/next_prior.hpp index bbffe922b..690c3316c 100644 --- a/src/boost/boost/next_prior.hpp +++ b/src/boost/boost/next_prior.hpp @@ -15,13 +15,12 @@ #ifndef BOOST_NEXT_PRIOR_HPP_INCLUDED #define BOOST_NEXT_PRIOR_HPP_INCLUDED -#include #include -#include #include #include #include #include +#include #include #include @@ -39,46 +38,6 @@ namespace boost { namespace next_prior_detail { -// The trait attempts to detect if the T type is an iterator. Class-type iterators are assumed -// to have the nested type iterator_category. Strictly speaking, this is not required to be the -// case (e.g. a user can specialize iterator_traits for T without defining T::iterator_category). -// Still, this is a good heuristic in practice, and we can't do anything better anyway. -// Since C++17 we can test for iterator_traits::iterator_category presence instead as it is -// required to be only present for iterators. -template< typename T, typename Void = void > -struct is_iterator_class -{ - static BOOST_CONSTEXPR_OR_CONST bool value = false; -}; - -template< typename T > -struct is_iterator_class< - T, - typename enable_if_has_type< -#if !defined(BOOST_NO_CXX17_ITERATOR_TRAITS) - typename std::iterator_traits< T >::iterator_category -#else - typename T::iterator_category -#endif - >::type -> -{ - static BOOST_CONSTEXPR_OR_CONST bool value = true; -}; - -template< typename T > -struct is_iterator : - public is_iterator_class< T > -{ -}; - -template< typename T > -struct is_iterator< T* > -{ - static BOOST_CONSTEXPR_OR_CONST bool value = true; -}; - - template< typename T, typename Distance, bool HasPlus = has_plus< T, Distance >::value > struct next_plus_impl; @@ -107,7 +66,7 @@ struct next_plus_assign_impl< T, Distance, true > } }; -template< typename T, typename Distance, bool IsIterator = is_iterator< T >::value > +template< typename T, typename Distance, bool IsIterator = boost::iterators::is_iterator< T >::value > struct next_advance_impl : public next_plus_assign_impl< T, Distance > { @@ -152,7 +111,7 @@ struct prior_minus_assign_impl< T, Distance, true > } }; -template< typename T, typename Distance, bool IsIterator = is_iterator< T >::value > +template< typename T, typename Distance, bool IsIterator = boost::iterators::is_iterator< T >::value > struct prior_advance_impl : public prior_minus_assign_impl< T, Distance > { diff --git a/src/boost/boost/non_type.hpp b/src/boost/boost/non_type.hpp deleted file mode 100644 index 7a4651a68..000000000 --- a/src/boost/boost/non_type.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// ------------------------------------- -// -// (C) Copyright Gennaro Prota 2003. -// -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// ------------------------------------------------------ - -#ifndef BOOST_NON_TYPE_HPP_GP_20030417 -#define BOOST_NON_TYPE_HPP_GP_20030417 - - -namespace boost { - - // Just a simple "envelope" for non-type template parameters. Useful - // to work around some MSVC deficiencies. - - template - struct non_type { }; - - -} - - -#endif // include guard diff --git a/src/boost/boost/numeric/conversion/cast.hpp b/src/boost/boost/numeric/conversion/cast.hpp index 04375f9b0..fa672d071 100644 --- a/src/boost/boost/numeric/conversion/cast.hpp +++ b/src/boost/boost/numeric/conversion/cast.hpp @@ -23,7 +23,7 @@ #include -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x582)) # include diff --git a/src/boost/boost/numeric/conversion/converter_policies.hpp b/src/boost/boost/numeric/conversion/converter_policies.hpp index 2dfdda070..e892110a3 100644 --- a/src/boost/boost/numeric/conversion/converter_policies.hpp +++ b/src/boost/boost/numeric/conversion/converter_policies.hpp @@ -10,13 +10,13 @@ #ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP #define BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP +#include #include // for std::bad_cast +#include #include // for std::floor and std::ceil #include -#include - #include "boost/type_traits/is_arithmetic.hpp" #include "boost/mpl/if.hpp" @@ -136,7 +136,7 @@ class bad_numeric_cast : public std::bad_cast { public: - virtual const char * what() const throw() + const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return "bad numeric conversion: overflow"; } }; @@ -144,14 +144,14 @@ class negative_overflow : public bad_numeric_cast { public: - virtual const char * what() const throw() + const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return "bad numeric conversion: negative overflow"; } }; class positive_overflow : public bad_numeric_cast { public: - virtual const char * what() const throw() + const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return "bad numeric conversion: positive overflow"; } }; diff --git a/src/boost/boost/numeric/conversion/detail/converter.hpp b/src/boost/boost/numeric/conversion/detail/converter.hpp index 6b8ade685..914bba597 100644 --- a/src/boost/boost/numeric/conversion/detail/converter.hpp +++ b/src/boost/boost/numeric/conversion/detail/converter.hpp @@ -561,7 +561,7 @@ namespace boost { namespace numeric { namespace convdetail > struct get_converter_impl { -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT( 0x0561 ) ) +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT( 0x0561 ) ) // bcc55 prefers sometimes template parameters to be explicit local types. // (notice that is is illegal to reuse the names like this) typedef Traits Traits ; diff --git a/src/boost/boost/numeric/conversion/detail/int_float_mixture.hpp b/src/boost/boost/numeric/conversion/detail/int_float_mixture.hpp index b943268ce..0bf9cf28d 100644 --- a/src/boost/boost/numeric/conversion/detail/int_float_mixture.hpp +++ b/src/boost/boost/numeric/conversion/detail/int_float_mixture.hpp @@ -16,15 +16,15 @@ #include "boost/numeric/conversion/int_float_mixture_enum.hpp" #include "boost/numeric/conversion/detail/meta.hpp" -#include "boost/mpl/integral_c.hpp" +#include "boost/type_traits/integral_constant.hpp" namespace boost { namespace numeric { namespace convdetail { // Integral Constants for 'IntFloatMixture' - typedef mpl::integral_c int2int_c ; - typedef mpl::integral_c int2float_c ; - typedef mpl::integral_c float2int_c ; - typedef mpl::integral_c float2float_c ; + typedef boost::integral_constant int2int_c ; + typedef boost::integral_constant int2float_c ; + typedef boost::integral_constant float2int_c ; + typedef boost::integral_constant float2float_c ; // Metafunction: // diff --git a/src/boost/boost/numeric/conversion/detail/meta.hpp b/src/boost/boost/numeric/conversion/detail/meta.hpp index 3e6e4e38e..d841169ce 100644 --- a/src/boost/boost/numeric/conversion/detail/meta.hpp +++ b/src/boost/boost/numeric/conversion/detail/meta.hpp @@ -25,7 +25,7 @@ namespace boost { namespace numeric { namespace convdetail template< class T1, class T2> struct equal_to { - #if !defined(__BORLANDC__) + #if !defined(BOOST_BORLANDC) enum { x = ( BOOST_MPL_AUX_VALUE_WKND(T1)::value == BOOST_MPL_AUX_VALUE_WKND(T2)::value ) }; diff --git a/src/boost/boost/numeric/conversion/detail/old_numeric_cast.hpp b/src/boost/boost/numeric/conversion/detail/old_numeric_cast.hpp index 5108ba39d..c91e81895 100644 --- a/src/boost/boost/numeric/conversion/detail/old_numeric_cast.hpp +++ b/src/boost/boost/numeric/conversion/detail/old_numeric_cast.hpp @@ -231,7 +231,7 @@ namespace boost # pragma warning(push) # pragma warning(disable : 4018) # pragma warning(disable : 4146) -#elif defined(__BORLANDC__) +#elif defined(BOOST_BORLANDC) # pragma option push -w-8041 # endif @@ -248,7 +248,7 @@ namespace boost # if BOOST_MSVC # pragma warning(pop) -#elif defined(__BORLANDC__) +#elif defined(BOOST_BORLANDC) # pragma option pop # endif } // namespace detail @@ -285,7 +285,7 @@ namespace boost # if BOOST_MSVC # pragma warning(push) # pragma warning(disable : 4018) -#elif defined(__BORLANDC__) +#elif defined(BOOST_BORLANDC) #pragma option push -w-8012 # endif if ((arg < 0 && !result_traits::is_signed) // loss of negative range @@ -293,7 +293,7 @@ namespace boost || arg > (result_traits::max)()) // overflow # if BOOST_MSVC # pragma warning(pop) -#elif defined(__BORLANDC__) +#elif defined(BOOST_BORLANDC) #pragma option pop # endif #endif diff --git a/src/boost/boost/numeric/conversion/detail/sign_mixture.hpp b/src/boost/boost/numeric/conversion/detail/sign_mixture.hpp index d01049194..1d912a769 100644 --- a/src/boost/boost/numeric/conversion/detail/sign_mixture.hpp +++ b/src/boost/boost/numeric/conversion/detail/sign_mixture.hpp @@ -16,15 +16,15 @@ #include "boost/numeric/conversion/sign_mixture_enum.hpp" #include "boost/numeric/conversion/detail/meta.hpp" -#include "boost/mpl/integral_c.hpp" +#include "boost/type_traits/integral_constant.hpp" namespace boost { namespace numeric { namespace convdetail { // Integral Constants for 'SignMixture' - typedef mpl::integral_c unsig2unsig_c ; - typedef mpl::integral_c sig2sig_c ; - typedef mpl::integral_c sig2unsig_c ; - typedef mpl::integral_c unsig2sig_c ; + typedef boost::integral_constant unsig2unsig_c ; + typedef boost::integral_constant sig2sig_c ; + typedef boost::integral_constant sig2unsig_c ; + typedef boost::integral_constant unsig2sig_c ; // Metafunction: // diff --git a/src/boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp b/src/boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp index e1b242857..a154d40ec 100644 --- a/src/boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +++ b/src/boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp @@ -15,15 +15,15 @@ #include "boost/numeric/conversion/udt_builtin_mixture_enum.hpp" #include "boost/numeric/conversion/detail/meta.hpp" -#include "boost/mpl/integral_c.hpp" +#include "boost/type_traits/integral_constant.hpp" namespace boost { namespace numeric { namespace convdetail { // Integral Constants for 'UdtMixture' - typedef mpl::integral_c builtin2builtin_c ; - typedef mpl::integral_c builtin2udt_c ; - typedef mpl::integral_c udt2builtin_c ; - typedef mpl::integral_c udt2udt_c ; + typedef boost::integral_constant builtin2builtin_c ; + typedef boost::integral_constant builtin2udt_c ; + typedef boost::integral_constant udt2builtin_c ; + typedef boost::integral_constant udt2udt_c ; // Metafunction: // diff --git a/src/boost/boost/operators.hpp b/src/boost/boost/operators.hpp index b04553047..dbf24346f 100644 --- a/src/boost/boost/operators.hpp +++ b/src/boost/boost/operators.hpp @@ -109,6 +109,15 @@ # pragma warning( disable : 4284 ) // complaint about return type of #endif // operator-> not begin a UDT +// Define BOOST_OPERATORS_CONSTEXPR to be like BOOST_CONSTEXPR but empty under MSVC < v19.22 +#if BOOST_WORKAROUND(BOOST_MSVC, < 1922) +#define BOOST_OPERATORS_CONSTEXPR +#elif defined __sun +#define BOOST_OPERATORS_CONSTEXPR +#else +#define BOOST_OPERATORS_CONSTEXPR BOOST_CONSTEXPR +#endif + // In this section we supply the xxxx1 and xxxx2 forms of the operator // templates, which are explicitly targeted at the 1-type-argument and // 2-type-argument operator forms, respectively. @@ -132,34 +141,34 @@ template class empty_base {}; template > struct less_than_comparable2 : B { - friend bool operator<=(const T& x, const U& y) { return !static_cast(x > y); } - friend bool operator>=(const T& x, const U& y) { return !static_cast(x < y); } - friend bool operator>(const U& x, const T& y) { return y < x; } - friend bool operator<(const U& x, const T& y) { return y > x; } - friend bool operator<=(const U& x, const T& y) { return !static_cast(y < x); } - friend bool operator>=(const U& x, const T& y) { return !static_cast(y > x); } + friend BOOST_OPERATORS_CONSTEXPR bool operator<=(const T& x, const U& y) { return !static_cast(x > y); } + friend BOOST_OPERATORS_CONSTEXPR bool operator>=(const T& x, const U& y) { return !static_cast(x < y); } + friend BOOST_OPERATORS_CONSTEXPR bool operator>(const U& x, const T& y) { return y < x; } + friend BOOST_OPERATORS_CONSTEXPR bool operator<(const U& x, const T& y) { return y > x; } + friend BOOST_OPERATORS_CONSTEXPR bool operator<=(const U& x, const T& y) { return !static_cast(y < x); } + friend BOOST_OPERATORS_CONSTEXPR bool operator>=(const U& x, const T& y) { return !static_cast(y > x); } }; template > struct less_than_comparable1 : B { - friend bool operator>(const T& x, const T& y) { return y < x; } - friend bool operator<=(const T& x, const T& y) { return !static_cast(y < x); } - friend bool operator>=(const T& x, const T& y) { return !static_cast(x < y); } + friend BOOST_OPERATORS_CONSTEXPR bool operator>(const T& x, const T& y) { return y < x; } + friend BOOST_OPERATORS_CONSTEXPR bool operator<=(const T& x, const T& y) { return !static_cast(y < x); } + friend BOOST_OPERATORS_CONSTEXPR bool operator>=(const T& x, const T& y) { return !static_cast(x < y); } }; template > struct equality_comparable2 : B { - friend bool operator==(const U& y, const T& x) { return x == y; } - friend bool operator!=(const U& y, const T& x) { return !static_cast(x == y); } - friend bool operator!=(const T& y, const U& x) { return !static_cast(y == x); } + friend BOOST_OPERATORS_CONSTEXPR bool operator==(const U& y, const T& x) { return x == y; } + friend BOOST_OPERATORS_CONSTEXPR bool operator!=(const U& y, const T& x) { return !static_cast(x == y); } + friend BOOST_OPERATORS_CONSTEXPR bool operator!=(const T& y, const U& x) { return !static_cast(y == x); } }; template > struct equality_comparable1 : B { - friend bool operator!=(const T& x, const T& y) { return !static_cast(x == y); } + friend BOOST_OPERATORS_CONSTEXPR bool operator!=(const T& x, const T& y) { return !static_cast(x == y); } }; // A macro which produces "name_2left" from "name". @@ -362,7 +371,7 @@ BOOST_BINARY_OPERATOR( right_shiftable, >> ) template > struct equivalent2 : B { - friend bool operator==(const T& x, const U& y) + friend BOOST_OPERATORS_CONSTEXPR bool operator==(const T& x, const U& y) { return !static_cast(x < y) && !static_cast(x > y); } @@ -371,7 +380,7 @@ struct equivalent2 : B template > struct equivalent1 : B { - friend bool operator==(const T&x, const T&y) + friend BOOST_OPERATORS_CONSTEXPR bool operator==(const T&x, const T&y) { return !static_cast(x < y) && !static_cast(y < x); } @@ -380,28 +389,28 @@ struct equivalent1 : B template > struct partially_ordered2 : B { - friend bool operator<=(const T& x, const U& y) + friend BOOST_OPERATORS_CONSTEXPR bool operator<=(const T& x, const U& y) { return static_cast(x < y) || static_cast(x == y); } - friend bool operator>=(const T& x, const U& y) + friend BOOST_OPERATORS_CONSTEXPR bool operator>=(const T& x, const U& y) { return static_cast(x > y) || static_cast(x == y); } - friend bool operator>(const U& x, const T& y) + friend BOOST_OPERATORS_CONSTEXPR bool operator>(const U& x, const T& y) { return y < x; } - friend bool operator<(const U& x, const T& y) + friend BOOST_OPERATORS_CONSTEXPR bool operator<(const U& x, const T& y) { return y > x; } - friend bool operator<=(const U& x, const T& y) + friend BOOST_OPERATORS_CONSTEXPR bool operator<=(const U& x, const T& y) { return static_cast(y > x) || static_cast(y == x); } - friend bool operator>=(const U& x, const T& y) + friend BOOST_OPERATORS_CONSTEXPR bool operator>=(const U& x, const T& y) { return static_cast(y < x) || static_cast(y == x); } }; template > struct partially_ordered1 : B { - friend bool operator>(const T& x, const T& y) + friend BOOST_OPERATORS_CONSTEXPR bool operator>(const T& x, const T& y) { return y < x; } - friend bool operator<=(const T& x, const T& y) + friend BOOST_OPERATORS_CONSTEXPR bool operator<=(const T& x, const T& y) { return static_cast(x < y) || static_cast(x == y); } - friend bool operator>=(const T& x, const T& y) + friend BOOST_OPERATORS_CONSTEXPR bool operator>=(const T& x, const T& y) { return static_cast(y < x) || static_cast(x == y); } }; diff --git a/src/boost/boost/predef/architecture.h b/src/boost/boost/predef/architecture.h index 95d3bdf69..722047d02 100644 --- a/src/boost/boost/predef/architecture.h +++ b/src/boost/boost/predef/architecture.h @@ -14,13 +14,16 @@ Distributed under the Boost Software License, Version 1.0. #include #include #include +#include #include +#include #include #include #include #include #include #include +#include #include #include #include @@ -28,6 +31,5 @@ Distributed under the Boost Software License, Version 1.0. #include #include #include -/*#include */ #endif diff --git a/src/boost/boost/predef/architecture/alpha.h b/src/boost/boost/predef/architecture/alpha.h index 4b144385a..309e00774 100644 --- a/src/boost/boost/predef/architecture/alpha.h +++ b/src/boost/boost/predef/architecture/alpha.h @@ -11,22 +11,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_ALPHA`] +/* tag::reference[] += `BOOST_ARCH_ALPHA` -[@http://en.wikipedia.org/wiki/DEC_Alpha DEC Alpha] architecture. +http://en.wikipedia.org/wiki/DEC_Alpha[DEC Alpha] architecture. -[table - [[__predef_symbol__] [__predef_version__]] - [[`__alpha__`] [__predef_detection__]] - [[`__alpha`] [__predef_detection__]] - [[`_M_ALPHA`] [__predef_detection__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} +| `+__alpha__+` | {predef_detection} +| `+__alpha+` | {predef_detection} +| `+_M_ALPHA+` | {predef_detection} - [[`__alpha_ev4__`] [4.0.0]] - [[`__alpha_ev5__`] [5.0.0]] - [[`__alpha_ev6__`] [6.0.0]] - ] - */ +| `+__alpha_ev4__+` | 4.0.0 +| `+__alpha_ev5__+` | 5.0.0 +| `+__alpha_ev6__+` | 6.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -51,6 +52,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_ALPHA_AVAILABLE #endif +#if BOOST_ARCH_ALPHA +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_ALPHA_NAME "DEC Alpha" #endif diff --git a/src/boost/boost/predef/architecture/arm.h b/src/boost/boost/predef/architecture/arm.h index 8fac94954..3842ac7df 100644 --- a/src/boost/boost/predef/architecture/arm.h +++ b/src/boost/boost/predef/architecture/arm.h @@ -1,5 +1,5 @@ /* -Copyright Rene Rivera 2008-2015 +Copyright Rene Rivera 2008-2019 Copyright Franz Detro 2014 Copyright (c) Microsoft Corporation 2014 Distributed under the Boost Software License, Version 1.0. @@ -13,40 +13,77 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_ARM`] +/* tag::reference[] += `BOOST_ARCH_ARM` -[@http://en.wikipedia.org/wiki/ARM_architecture ARM] architecture. +http://en.wikipedia.org/wiki/ARM_architecture[ARM] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__arm__`] [__predef_detection__]] - [[`__arm64`] [__predef_detection__]] - [[`__thumb__`] [__predef_detection__]] - [[`__TARGET_ARCH_ARM`] [__predef_detection__]] - [[`__TARGET_ARCH_THUMB`] [__predef_detection__]] - [[`_M_ARM`] [__predef_detection__]] - [[`_M_ARM64`] [__predef_detection__]] +| `+__ARM_ARCH+` | {predef_detection} +| `+__TARGET_ARCH_ARM+` | {predef_detection} +| `+__TARGET_ARCH_THUMB+` | {predef_detection} +| `+_M_ARM+` | {predef_detection} +| `+__arm__+` | {predef_detection} +| `+__arm64+` | {predef_detection} +| `+__thumb__+` | {predef_detection} +| `+_M_ARM64+` | {predef_detection} +| `+__aarch64__+` | {predef_detection} +| `+__AARCH64EL__+` | {predef_detection} +| `+__ARM_ARCH_7__+` | {predef_detection} +| `+__ARM_ARCH_7A__+` | {predef_detection} +| `+__ARM_ARCH_7R__+` | {predef_detection} +| `+__ARM_ARCH_7M__+` | {predef_detection} +| `+__ARM_ARCH_6K__+` | {predef_detection} +| `+__ARM_ARCH_6Z__+` | {predef_detection} +| `+__ARM_ARCH_6KZ__+` | {predef_detection} +| `+__ARM_ARCH_6T2__+` | {predef_detection} +| `+__ARM_ARCH_5TE__+` | {predef_detection} +| `+__ARM_ARCH_5TEJ__+` | {predef_detection} +| `+__ARM_ARCH_4T__+` | {predef_detection} +| `+__ARM_ARCH_4__+` | {predef_detection} - [[`__arm64`] [8.0.0]] - [[`__TARGET_ARCH_ARM`] [V.0.0]] - [[`__TARGET_ARCH_THUMB`] [V.0.0]] - [[`__ARM_ARCH`] [V.0.0]] - [[`_M_ARM`] [V.0.0]] - [[`_M_ARM64`] [8.0.0]] - ] - */ +| `+__ARM_ARCH+` | V.0.0 +| `+__TARGET_ARCH_ARM+` | V.0.0 +| `+__TARGET_ARCH_THUMB+` | V.0.0 +| `+_M_ARM+` | V.0.0 +| `+__arm64+` | 8.0.0 +| `+_M_ARM64+` | 8.0.0 +| `+__aarch64__+` | 8.0.0 +| `+__AARCH64EL__+` | 8.0.0 +| `+__ARM_ARCH_7__+` | 7.0.0 +| `+__ARM_ARCH_7A__+` | 7.0.0 +| `+__ARM_ARCH_7R__+` | 7.0.0 +| `+__ARM_ARCH_7M__+` | 7.0.0 +| `+__ARM_ARCH_6K__+` | 6.0.0 +| `+__ARM_ARCH_6Z__+` | 6.0.0 +| `+__ARM_ARCH_6KZ__+` | 6.0.0 +| `+__ARM_ARCH_6T2__+` | 6.0.0 +| `+__ARM_ARCH_5TE__+` | 5.0.0 +| `+__ARM_ARCH_5TEJ__+` | 5.0.0 +| `+__ARM_ARCH_4T__+` | 4.0.0 +| `+__ARM_ARCH_4__+` | 4.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE -#if defined(__arm__) || defined(__arm64) || defined(__thumb__) || \ - defined(__TARGET_ARCH_ARM) || defined(__TARGET_ARCH_THUMB) || \ - defined(__ARM_ARCH) || \ - defined(_M_ARM) || defined(_M_ARM64) +#if \ + defined(__ARM_ARCH) || defined(__TARGET_ARCH_ARM) || \ + defined(__TARGET_ARCH_THUMB) || defined(_M_ARM) || \ + defined(__arm__) || defined(__arm64) || defined(__thumb__) || \ + defined(_M_ARM64) || defined(__aarch64__) || defined(__AARCH64EL__) || \ + defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ + defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \ + defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \ + defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) || \ + defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) || \ + defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__) # undef BOOST_ARCH_ARM -# if !defined(BOOST_ARCH_ARM) && defined(__arm64) -# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0) +# if !defined(BOOST_ARCH_ARM) && defined(__ARM_ARCH) +# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__ARM_ARCH,0,0) # endif # if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM) # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0) @@ -54,14 +91,31 @@ Distributed under the Boost Software License, Version 1.0. # if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB) # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0) # endif -# if !defined(BOOST_ARCH_ARM) && defined(__ARM_ARCH) -# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__ARM_ARCH,0,0) +# if !defined(BOOST_ARCH_ARM) && defined(_M_ARM) +# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0) # endif -# if !defined(BOOST_ARCH_ARM) && defined(_M_ARM64) +# if !defined(BOOST_ARCH_ARM) && ( \ + defined(__arm64) || defined(_M_ARM64) || defined(__aarch64__) || \ + defined(__AARCH64EL__) ) # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0) # endif -# if !defined(BOOST_ARCH_ARM) && defined(_M_ARM) -# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0) +# if !defined(BOOST_ARCH_ARM) && ( \ + defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ + defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) ) +# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(7,0,0) +# endif +# if !defined(BOOST_ARCH_ARM) && ( \ + defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \ + defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) ) +# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(6,0,0) +# endif +# if !defined(BOOST_ARCH_ARM) && ( \ + defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) ) +# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(5,0,0) +# endif +# if !defined(BOOST_ARCH_ARM) && ( \ + defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__) ) +# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(4,0,0) # endif # if !defined(BOOST_ARCH_ARM) # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE @@ -72,6 +126,16 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_ARM_AVAILABLE #endif +#if BOOST_ARCH_ARM +# if BOOST_ARCH_ARM >= BOOST_VERSION_NUMBER(8,0,0) +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +# else +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif + #define BOOST_ARCH_ARM_NAME "ARM" #endif diff --git a/src/boost/boost/predef/architecture/blackfin.h b/src/boost/boost/predef/architecture/blackfin.h index 2e1429a0a..e8c0274d6 100644 --- a/src/boost/boost/predef/architecture/blackfin.h +++ b/src/boost/boost/predef/architecture/blackfin.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_BLACKFIN`] +/* tag::reference[] += `BOOST_ARCH_BLACKFIN` Blackfin Processors from Analog Devices. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__bfin__`] [__predef_detection__]] - [[`__BFIN__`] [__predef_detection__]] - [[`bfin`] [__predef_detection__]] - [[`BFIN`] [__predef_detection__]] - ] - */ +| `+__bfin__+` | {predef_detection} +| `+__BFIN__+` | {predef_detection} +| `bfin` | {predef_detection} +| `BFIN` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_BLACKFIN BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -38,6 +39,11 @@ Blackfin Processors from Analog Devices. # define BOOST_ARCH_BLACKFIN_AVAILABLE #endif +#if BOOST_ARCH_BLACKFIN +# undef BOOST_ARCH_WORD_BITS_16 +# define BOOST_ARCH_WORD_BITS_16 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_BLACKFIN_NAME "Blackfin" #endif diff --git a/src/boost/boost/predef/architecture/convex.h b/src/boost/boost/predef/architecture/convex.h index 8a072bd6a..32aa47522 100644 --- a/src/boost/boost/predef/architecture/convex.h +++ b/src/boost/boost/predef/architecture/convex.h @@ -11,23 +11,24 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_CONVEX`] +/* tag::reference[] += `BOOST_ARCH_CONVEX` -[@http://en.wikipedia.org/wiki/Convex_Computer Convex Computer] architecture. +http://en.wikipedia.org/wiki/Convex_Computer[Convex Computer] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__convex__`] [__predef_detection__]] +| `+__convex__+` | {predef_detection} - [[`__convex_c1__`] [1.0.0]] - [[`__convex_c2__`] [2.0.0]] - [[`__convex_c32__`] [3.2.0]] - [[`__convex_c34__`] [3.4.0]] - [[`__convex_c38__`] [3.8.0]] - ] - */ +| `+__convex_c1__+` | 1.0.0 +| `+__convex_c2__+` | 2.0.0 +| `+__convex_c32__+` | 3.2.0 +| `+__convex_c34__+` | 3.4.0 +| `+__convex_c38__+` | 3.8.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -57,6 +58,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_CONVEX_AVAILABLE #endif +#if BOOST_ARCH_CONVEX +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_CONVEX_NAME "Convex Computer" #endif diff --git a/src/boost/boost/predef/architecture/e2k.h b/src/boost/boost/predef/architecture/e2k.h new file mode 100644 index 000000000..53f61b460 --- /dev/null +++ b/src/boost/boost/predef/architecture/e2k.h @@ -0,0 +1,54 @@ +/* +Copyright Konstantin Ivlev 2021 +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +#ifndef BOOST_PREDEF_ARCHITECTURE_E2K_H +#define BOOST_PREDEF_ARCHITECTURE_E2K_H + +#include +#include + +/* tag::reference[] += `BOOST_ARCH_E2K` + +https://en.wikipedia.org/wiki/Elbrus_2000[E2K] architecture. + +[options="header"] +|=== +| {predef_symbol} | {predef_version} + +| `+__e2k__+` | {predef_detection} + +| `+__e2k__+` | V.0.0 +|=== +*/ // end::reference[] + +#define BOOST_ARCH_E2K BOOST_VERSION_NUMBER_NOT_AVAILABLE + +#if defined(__e2k__) +# undef BOOST_ARCH_E2K +# if !defined(BOOST_ARCH_E2K) && defined(__iset__) +# define BOOST_ARCH_E2K BOOST_VERSION_NUMBER(__iset__,0,0) +# endif +# if !defined(BOOST_ARCH_E2K) +# define BOOST_ARCH_E2K BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif + +#if BOOST_ARCH_E2K +# define BOOST_ARCH_E2K_AVAILABLE +#endif + +#if BOOST_ARCH_E2K +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + +#define BOOST_ARCH_E2K_NAME "E2K" + +#endif + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_E2K,BOOST_ARCH_E2K_NAME) diff --git a/src/boost/boost/predef/architecture/ia64.h b/src/boost/boost/predef/architecture/ia64.h index 48a5abd17..87a35219c 100644 --- a/src/boost/boost/predef/architecture/ia64.h +++ b/src/boost/boost/predef/architecture/ia64.h @@ -11,22 +11,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_IA64`] +/* tag::reference[] += `BOOST_ARCH_IA64` -[@http://en.wikipedia.org/wiki/Ia64 Intel Itanium 64] architecture. +http://en.wikipedia.org/wiki/Ia64[Intel Itanium 64] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ia64__`] [__predef_detection__]] - [[`_IA64`] [__predef_detection__]] - [[`__IA64__`] [__predef_detection__]] - [[`__ia64`] [__predef_detection__]] - [[`_M_IA64`] [__predef_detection__]] - [[`__itanium__`] [__predef_detection__]] - ] - */ +| `+__ia64__+` | {predef_detection} +| `+_IA64+` | {predef_detection} +| `+__IA64__+` | {predef_detection} +| `+__ia64+` | {predef_detection} +| `+_M_IA64+` | {predef_detection} +| `+__itanium__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -41,6 +42,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_IA64_AVAILABLE #endif +#if BOOST_ARCH_IA64 +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_IA64_NAME "Intel Itanium 64" #endif diff --git a/src/boost/boost/predef/architecture/loongarch.h b/src/boost/boost/predef/architecture/loongarch.h new file mode 100644 index 000000000..bb2b5c56c --- /dev/null +++ b/src/boost/boost/predef/architecture/loongarch.h @@ -0,0 +1,41 @@ +/* +Copyright Zhang Na 2022 +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +#ifndef BOOST_PREDEF_ARCHITECTURE_LOONGARCH_H +#define BOOST_PREDEF_ARCHITECTURE_LOONGARCH_H + +#include +#include + +/* tag::reference[] += `BOOST_ARCH_LOONGARCH` + +[options="header"] +|=== +| {predef_symbol} | {predef_version} + +| `+__loongarch__+` | {predef_detection} +|=== +*/ // end::reference[] + +#define BOOST_ARCH_LOONGARCH BOOST_VERSION_NUMBER_NOT_AVAILABLE + +#if defined(__loongarch__) +# undef BOOST_ARCH_LOONGARCH +# define BOOST_ARCH_LOONGARCH BOOST_VERSION_NUMBER_AVAILABLE +#endif + +#if BOOST_ARCH_LOONGARCH +# define BOOST_ARCH_LOONGARCH_AVAILABLE +#endif + +#define BOOST_ARCH_LOONGARCH_NAME "LoongArch" + +#endif + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_LOONGARCH,BOOST_ARCH_LOONGARCH_NAME) diff --git a/src/boost/boost/predef/architecture/m68k.h b/src/boost/boost/predef/architecture/m68k.h index 3fa64e0a8..367d92534 100644 --- a/src/boost/boost/predef/architecture/m68k.h +++ b/src/boost/boost/predef/architecture/m68k.h @@ -11,37 +11,38 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_M68K`] +/* tag::reference[] += `BOOST_ARCH_M68K` -[@http://en.wikipedia.org/wiki/M68k Motorola 68k] architecture. +http://en.wikipedia.org/wiki/M68k[Motorola 68k] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__m68k__`] [__predef_detection__]] - [[`M68000`] [__predef_detection__]] +| `+__m68k__+` | {predef_detection} +| `M68000` | {predef_detection} - [[`__mc68060__`] [6.0.0]] - [[`mc68060`] [6.0.0]] - [[`__mc68060`] [6.0.0]] - [[`__mc68040__`] [4.0.0]] - [[`mc68040`] [4.0.0]] - [[`__mc68040`] [4.0.0]] - [[`__mc68030__`] [3.0.0]] - [[`mc68030`] [3.0.0]] - [[`__mc68030`] [3.0.0]] - [[`__mc68020__`] [2.0.0]] - [[`mc68020`] [2.0.0]] - [[`__mc68020`] [2.0.0]] - [[`__mc68010__`] [1.0.0]] - [[`mc68010`] [1.0.0]] - [[`__mc68010`] [1.0.0]] - [[`__mc68000__`] [0.0.1]] - [[`mc68000`] [0.0.1]] - [[`__mc68000`] [0.0.1]] - ] - */ +| `+__mc68060__+` | 6.0.0 +| `mc68060` | 6.0.0 +| `+__mc68060+` | 6.0.0 +| `+__mc68040__+` | 4.0.0 +| `mc68040` | 4.0.0 +| `+__mc68040+` | 4.0.0 +| `+__mc68030__+` | 3.0.0 +| `mc68030` | 3.0.0 +| `+__mc68030+` | 3.0.0 +| `+__mc68020__+` | 2.0.0 +| `mc68020` | 2.0.0 +| `+__mc68020+` | 2.0.0 +| `+__mc68010__+` | 1.0.0 +| `mc68010` | 1.0.0 +| `+__mc68010+` | 1.0.0 +| `+__mc68000__+` | 0.0.1 +| `mc68000` | 0.0.1 +| `+__mc68000+` | 0.0.1 +|=== +*/ // end::reference[] #define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -74,6 +75,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_M68K_AVAILABLE #endif +#if BOOST_ARCH_M68K +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_M68K_NAME "Motorola 68k" #endif diff --git a/src/boost/boost/predef/architecture/mips.h b/src/boost/boost/predef/architecture/mips.h index 492d91717..210651dd8 100644 --- a/src/boost/boost/predef/architecture/mips.h +++ b/src/boost/boost/predef/architecture/mips.h @@ -11,30 +11,31 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_MIPS`] +/* tag::reference[] += `BOOST_ARCH_MIPS` -[@http://en.wikipedia.org/wiki/MIPS_architecture MIPS] architecture. +http://en.wikipedia.org/wiki/MIPS_architecture[MIPS] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__mips__`] [__predef_detection__]] - [[`__mips`] [__predef_detection__]] - [[`__MIPS__`] [__predef_detection__]] +| `+__mips__+` | {predef_detection} +| `+__mips+` | {predef_detection} +| `+__MIPS__+` | {predef_detection} - [[`__mips`] [V.0.0]] - [[`_MIPS_ISA_MIPS1`] [1.0.0]] - [[`_R3000`] [1.0.0]] - [[`_MIPS_ISA_MIPS2`] [2.0.0]] - [[`__MIPS_ISA2__`] [2.0.0]] - [[`_R4000`] [2.0.0]] - [[`_MIPS_ISA_MIPS3`] [3.0.0]] - [[`__MIPS_ISA3__`] [3.0.0]] - [[`_MIPS_ISA_MIPS4`] [4.0.0]] - [[`__MIPS_ISA4__`] [4.0.0]] - ] - */ +| `+__mips+` | V.0.0 +| `+_MIPS_ISA_MIPS1+` | 1.0.0 +| `+_R3000+` | 1.0.0 +| `+_MIPS_ISA_MIPS2+` | 2.0.0 +| `+__MIPS_ISA2__+` | 2.0.0 +| `+_R4000+` | 2.0.0 +| `+_MIPS_ISA_MIPS3+` | 3.0.0 +| `+__MIPS_ISA3__+` | 3.0.0 +| `+_MIPS_ISA_MIPS4+` | 4.0.0 +| `+__MIPS_ISA4__+` | 4.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -65,6 +66,16 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_MIPS_AVAILABLE #endif +#if BOOST_ARCH_MIPS +# if BOOST_ARCH_MIPS >= BOOST_VERSION_NUMBER(3,0,0) +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +# else +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif + #define BOOST_ARCH_MIPS_NAME "MIPS" #endif diff --git a/src/boost/boost/predef/architecture/parisc.h b/src/boost/boost/predef/architecture/parisc.h index 14fb1a26c..3d37ea0ce 100644 --- a/src/boost/boost/predef/architecture/parisc.h +++ b/src/boost/boost/predef/architecture/parisc.h @@ -11,28 +11,29 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_PARISC`] +/* tag::reference[] += `BOOST_ARCH_PARISC` -[@http://en.wikipedia.org/wiki/PA-RISC_family HP/PA RISC] architecture. +http://en.wikipedia.org/wiki/PA-RISC_family[HP/PA RISC] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__hppa__`] [__predef_detection__]] - [[`__hppa`] [__predef_detection__]] - [[`__HPPA__`] [__predef_detection__]] +| `+__hppa__+` | {predef_detection} +| `+__hppa+` | {predef_detection} +| `+__HPPA__+` | {predef_detection} - [[`_PA_RISC1_0`] [1.0.0]] - [[`_PA_RISC1_1`] [1.1.0]] - [[`__HPPA11__`] [1.1.0]] - [[`__PA7100__`] [1.1.0]] - [[`_PA_RISC2_0`] [2.0.0]] - [[`__RISC2_0__`] [2.0.0]] - [[`__HPPA20__`] [2.0.0]] - [[`__PA8000__`] [2.0.0]] - ] - */ +| `+_PA_RISC1_0+` | 1.0.0 +| `+_PA_RISC1_1+` | 1.1.0 +| `+__HPPA11__+` | 1.1.0 +| `+__PA7100__+` | 1.1.0 +| `+_PA_RISC2_0+` | 2.0.0 +| `+__RISC2_0__+` | 2.0.0 +| `+__HPPA20__+` | 2.0.0 +| `+__PA8000__+` | 2.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -56,6 +57,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_PARISC_AVAILABLE #endif +#if BOOST_ARCH_PARISC +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_PARISC_NAME "HP/PA RISC" #endif diff --git a/src/boost/boost/predef/architecture/ppc.h b/src/boost/boost/predef/architecture/ppc.h index fb620b881..b3340d0fc 100644 --- a/src/boost/boost/predef/architecture/ppc.h +++ b/src/boost/boost/predef/architecture/ppc.h @@ -11,40 +11,49 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_PPC`] - -[@http://en.wikipedia.org/wiki/PowerPC PowerPC] architecture. - -[table - [[__predef_symbol__] [__predef_version__]] - - [[`__powerpc`] [__predef_detection__]] - [[`__powerpc__`] [__predef_detection__]] - [[`__POWERPC__`] [__predef_detection__]] - [[`__ppc__`] [__predef_detection__]] - [[`_M_PPC`] [__predef_detection__]] - [[`_ARCH_PPC`] [__predef_detection__]] - [[`__PPCGECKO__`] [__predef_detection__]] - [[`__PPCBROADWAY__`] [__predef_detection__]] - [[`_XENON`] [__predef_detection__]] - - [[`__ppc601__`] [6.1.0]] - [[`_ARCH_601`] [6.1.0]] - [[`__ppc603__`] [6.3.0]] - [[`_ARCH_603`] [6.3.0]] - [[`__ppc604__`] [6.4.0]] - [[`__ppc604__`] [6.4.0]] - ] - */ +/* tag::reference[] += `BOOST_ARCH_PPC` + +http://en.wikipedia.org/wiki/PowerPC[PowerPC] architecture. + +[options="header"] +|=== +| {predef_symbol} | {predef_version} + +| `+__powerpc+` | {predef_detection} +| `+__powerpc__+` | {predef_detection} +| `+__powerpc64__+` | {predef_detection} +| `+__POWERPC__+` | {predef_detection} +| `+__ppc__+` | {predef_detection} +| `+__ppc64__+` | {predef_detection} +| `+__PPC__+` | {predef_detection} +| `+__PPC64__+` | {predef_detection} +| `+_M_PPC+` | {predef_detection} +| `+_ARCH_PPC+` | {predef_detection} +| `+_ARCH_PPC64+` | {predef_detection} +| `+__PPCGECKO__+` | {predef_detection} +| `+__PPCBROADWAY__+` | {predef_detection} +| `+_XENON+` | {predef_detection} +| `+__ppc+` | {predef_detection} + +| `+__ppc601__+` | 6.1.0 +| `+_ARCH_601+` | 6.1.0 +| `+__ppc603__+` | 6.3.0 +| `+_ARCH_603+` | 6.3.0 +| `+__ppc604__+` | 6.4.0 +| `+__ppc604__+` | 6.4.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE -#if defined(__powerpc) || defined(__powerpc__) || \ - defined(__POWERPC__) || defined(__ppc__) || \ - defined(_M_PPC) || defined(_ARCH_PPC) || \ +#if defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || \ + defined(__POWERPC__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(__PPC__) || defined(__PPC64__) || \ + defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \ defined(__PPCGECKO__) || defined(__PPCBROADWAY__) || \ - defined(_XENON) + defined(_XENON) || \ + defined(__ppc) # undef BOOST_ARCH_PPC # if !defined (BOOST_ARCH_PPC) && (defined(__ppc601__) || defined(_ARCH_601)) # define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,1,0) @@ -66,7 +75,50 @@ Distributed under the Boost Software License, Version 1.0. #define BOOST_ARCH_PPC_NAME "PowerPC" + +/* tag::reference[] += `BOOST_ARCH_PPC_64` + +http://en.wikipedia.org/wiki/PowerPC[PowerPC] 64 bit architecture. + +[options="header"] +|=== +| {predef_symbol} | {predef_version} + +| `+__powerpc64__+` | {predef_detection} +| `+__ppc64__+` | {predef_detection} +| `+__PPC64__+` | {predef_detection} +| `+_ARCH_PPC64+` | {predef_detection} +|=== +*/ // end::reference[] + +#define BOOST_ARCH_PPC_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE + +#if defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || \ + defined(_ARCH_PPC64) +# undef BOOST_ARCH_PPC_64 +# define BOOST_ARCH_PPC_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + +#if BOOST_ARCH_PPC_64 +# define BOOST_ARCH_PPC_64_AVAILABLE +#endif + +#define BOOST_ARCH_PPC_64_NAME "PowerPC64" + + +#if BOOST_ARCH_PPC_64 +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#else +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #endif #include BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PPC,BOOST_ARCH_PPC_NAME) + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PPC_64,BOOST_ARCH_PPC_64_NAME) diff --git a/src/boost/boost/predef/architecture/ptx.h b/src/boost/boost/predef/architecture/ptx.h index 6dd796873..da76df14b 100644 --- a/src/boost/boost/predef/architecture/ptx.h +++ b/src/boost/boost/predef/architecture/ptx.h @@ -11,19 +11,20 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_PTX`] +/* tag::reference[] += `BOOST_ARCH_PTX` -[@https://en.wikipedia.org/wiki/Parallel_Thread_Execution PTX] architecture. +https://en.wikipedia.org/wiki/Parallel_Thread_Execution[PTX] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__CUDA_ARCH__`] [__predef_detection__]] +| `+__CUDA_ARCH__+` | {predef_detection} - [[`__CUDA_ARCH__`] [V.R.0]] - ] - */ +| `+__CUDA_ARCH__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_PTX BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -36,6 +37,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_PTX_AVAILABLE #endif +#if BOOST_ARCH_PTX +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_PTX_NAME "PTX" #endif diff --git a/src/boost/boost/predef/architecture/pyramid.h b/src/boost/boost/predef/architecture/pyramid.h index 325939194..c7fcf3fa4 100644 --- a/src/boost/boost/predef/architecture/pyramid.h +++ b/src/boost/boost/predef/architecture/pyramid.h @@ -11,17 +11,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_PYRAMID`] +/* tag::reference[] += `BOOST_ARCH_PYRAMID` Pyramid 9810 architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`pyr`] [__predef_detection__]] - ] - */ +| `pyr` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_PYRAMID BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -34,6 +35,11 @@ Pyramid 9810 architecture. # define BOOST_ARCH_PYRAMID_AVAILABLE #endif +#if BOOST_ARCH_PYRAMID +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_PYRAMID_NAME "Pyramid 9810" #endif diff --git a/src/boost/boost/predef/architecture/riscv.h b/src/boost/boost/predef/architecture/riscv.h new file mode 100644 index 000000000..1aa9416b0 --- /dev/null +++ b/src/boost/boost/predef/architecture/riscv.h @@ -0,0 +1,48 @@ +/* +Copyright Andreas Schwab 2019 +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +#ifndef BOOST_PREDEF_ARCHITECTURE_RISCV_H +#define BOOST_PREDEF_ARCHITECTURE_RISCV_H + +#include +#include + +/* tag::reference[] += `BOOST_ARCH_RISCV` + +http://en.wikipedia.org/wiki/RISC-V[RISC-V] architecture. + +[options="header"] +|=== +| {predef_symbol} | {predef_version} + +| `+__riscv+` | {predef_detection} +|=== +*/ // end::reference[] + +#define BOOST_ARCH_RISCV BOOST_VERSION_NUMBER_NOT_AVAILABLE + +#if defined(__riscv) +# undef BOOST_ARCH_RISCV +# define BOOST_ARCH_RISCV BOOST_VERSION_NUMBER_AVAILABLE +#endif + +#if BOOST_ARCH_RISCV +# define BOOST_ARCH_RISCV_AVAILABLE +#endif + +#if BOOST_ARCH_RISCV +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + +#define BOOST_ARCH_RISCV_NAME "RISC-V" + +#endif + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_RISCV,BOOST_ARCH_RISCV_NAME) diff --git a/src/boost/boost/predef/architecture/rs6k.h b/src/boost/boost/predef/architecture/rs6k.h index 73ac237aa..9e5d324e5 100644 --- a/src/boost/boost/predef/architecture/rs6k.h +++ b/src/boost/boost/predef/architecture/rs6k.h @@ -11,21 +11,22 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_RS6000`] +/* tag::reference[] += `BOOST_ARCH_RS6000` -[@http://en.wikipedia.org/wiki/RS/6000 RS/6000] architecture. +http://en.wikipedia.org/wiki/RS/6000[RS/6000] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__THW_RS6000`] [__predef_detection__]] - [[`_IBMR2`] [__predef_detection__]] - [[`_POWER`] [__predef_detection__]] - [[`_ARCH_PWR`] [__predef_detection__]] - [[`_ARCH_PWR2`] [__predef_detection__]] - ] - */ +| `+__THW_RS6000+` | {predef_detection} +| `+_IBMR2+` | {predef_detection} +| `+_POWER+` | {predef_detection} +| `+_ARCH_PWR+` | {predef_detection} +| `+_ARCH_PWR2+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_RS6000 BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -40,6 +41,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_RS6000_AVAILABLE #endif +#if BOOST_ARCH_RS6000 +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_RS6000_NAME "RS/6000" #define BOOST_ARCH_PWR BOOST_ARCH_RS6000 @@ -48,6 +54,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_PWR_AVAILABLE #endif +#if BOOST_ARCH_PWR +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_PWR_NAME BOOST_ARCH_RS6000_NAME #endif diff --git a/src/boost/boost/predef/architecture/sparc.h b/src/boost/boost/predef/architecture/sparc.h index 881e01aa5..b3ed9e040 100644 --- a/src/boost/boost/predef/architecture/sparc.h +++ b/src/boost/boost/predef/architecture/sparc.h @@ -11,30 +11,33 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_SPARC`] +/* tag::reference[] += `BOOST_ARCH_SPARC` -[@http://en.wikipedia.org/wiki/SPARC SPARC] architecture. +http://en.wikipedia.org/wiki/SPARC[SPARC] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__sparc__`] [__predef_detection__]] - [[`__sparc`] [__predef_detection__]] +| `+__sparc__+` | {predef_detection} +| `+__sparc+` | {predef_detection} - [[`__sparcv9`] [9.0.0]] - [[`__sparcv8`] [8.0.0]] - ] - */ +| `+__sparcv9+` | 9.0.0 +| `+__sparc_v9__+` | 9.0.0 +| `+__sparcv8+` | 8.0.0 +| `+__sparc_v8__+` | 8.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_NOT_AVAILABLE #if defined(__sparc__) || defined(__sparc) # undef BOOST_ARCH_SPARC -# if !defined(BOOST_ARCH_SPARC) && defined(__sparcv9) +# if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv9) || defined(__sparc_v9__)) # define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(9,0,0) # endif -# if !defined(BOOST_ARCH_SPARC) && defined(__sparcv8) +# if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv8) || defined(__sparc_v8__)) # define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(8,0,0) # endif # if !defined(BOOST_ARCH_SPARC) @@ -46,6 +49,16 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_SPARC_AVAILABLE #endif +#if BOOST_ARCH_SPARC +# if BOOST_ARCH_SPARC >= BOOST_VERSION_NUMBER(9,0,0) +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +# else +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif + #define BOOST_ARCH_SPARC_NAME "SPARC" #endif diff --git a/src/boost/boost/predef/architecture/superh.h b/src/boost/boost/predef/architecture/superh.h index 3e39f1dfa..d2b9b205b 100644 --- a/src/boost/boost/predef/architecture/superh.h +++ b/src/boost/boost/predef/architecture/superh.h @@ -11,25 +11,26 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_SH`] +/* tag::reference[] += `BOOST_ARCH_SH` -[@http://en.wikipedia.org/wiki/SuperH SuperH] architecture: -If available versions \[1-5\] are specifically detected. +http://en.wikipedia.org/wiki/SuperH[SuperH] architecture: +If available versions [1-5] are specifically detected. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__sh__`] [__predef_detection__]] +| `+__sh__+` | {predef_detection} - [[`__SH5__`] [5.0.0]] - [[`__SH4__`] [4.0.0]] - [[`__sh3__`] [3.0.0]] - [[`__SH3__`] [3.0.0]] - [[`__sh2__`] [2.0.0]] - [[`__sh1__`] [1.0.0]] - ] - */ +| `+__SH5__+` | 5.0.0 +| `+__SH4__+` | 4.0.0 +| `+__sh3__+` | 3.0.0 +| `+__SH3__+` | 3.0.0 +| `+__sh2__+` | 2.0.0 +| `+__sh1__+` | 1.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_SH BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -59,6 +60,19 @@ If available versions \[1-5\] are specifically detected. # define BOOST_ARCH_SH_AVAILABLE #endif +#if BOOST_ARCH_SH +# if BOOST_ARCH_SH >= BOOST_VERSION_NUMBER(5,0,0) +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +# elif BOOST_ARCH_SH >= BOOST_VERSION_NUMBER(3,0,0) +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +# else +# undef BOOST_ARCH_WORD_BITS_16 +# define BOOST_ARCH_WORD_BITS_16 BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif + #define BOOST_ARCH_SH_NAME "SuperH" #endif diff --git a/src/boost/boost/predef/architecture/sys370.h b/src/boost/boost/predef/architecture/sys370.h index a774e0cd6..70bb3f803 100644 --- a/src/boost/boost/predef/architecture/sys370.h +++ b/src/boost/boost/predef/architecture/sys370.h @@ -11,18 +11,19 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_SYS370`] +/* tag::reference[] += `BOOST_ARCH_SYS370` -[@http://en.wikipedia.org/wiki/System/370 System/370] architecture. +http://en.wikipedia.org/wiki/System/370[System/370] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__370__`] [__predef_detection__]] - [[`__THW_370__`] [__predef_detection__]] - ] - */ +| `+__370__+` | {predef_detection} +| `+__THW_370__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_SYS370 BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -35,6 +36,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_SYS370_AVAILABLE #endif +#if BOOST_ARCH_SYS370 +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_SYS370_NAME "System/370" #endif diff --git a/src/boost/boost/predef/architecture/sys390.h b/src/boost/boost/predef/architecture/sys390.h index 2e3f84dfc..42db008e5 100644 --- a/src/boost/boost/predef/architecture/sys390.h +++ b/src/boost/boost/predef/architecture/sys390.h @@ -11,18 +11,19 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_SYS390`] +/* tag::reference[] += `BOOST_ARCH_SYS390` -[@http://en.wikipedia.org/wiki/System/390 System/390] architecture. +http://en.wikipedia.org/wiki/System/390[System/390] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__s390__`] [__predef_detection__]] - [[`__s390x__`] [__predef_detection__]] - ] - */ +| `+__s390__+` | {predef_detection} +| `+__s390x__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_SYS390 BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -35,6 +36,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_SYS390_AVAILABLE #endif +#if BOOST_ARCH_SYS390 +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_SYS390_NAME "System/390" #endif diff --git a/src/boost/boost/predef/architecture/x86.h b/src/boost/boost/predef/architecture/x86.h index 16e6a9d30..723f075ce 100644 --- a/src/boost/boost/predef/architecture/x86.h +++ b/src/boost/boost/predef/architecture/x86.h @@ -11,13 +11,13 @@ Distributed under the Boost Software License, Version 1.0. #ifndef BOOST_PREDEF_ARCHITECTURE_X86_H #define BOOST_PREDEF_ARCHITECTURE_X86_H -/*` -[heading `BOOST_ARCH_X86`] +/* tag::reference[] += `BOOST_ARCH_X86` -[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture. This is +http://en.wikipedia.org/wiki/X86[Intel x86] architecture. This is a category to indicate that either `BOOST_ARCH_X86_32` or `BOOST_ARCH_X86_64` is detected. - */ +*/ // end::reference[] #define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/architecture/x86/32.h b/src/boost/boost/predef/architecture/x86/32.h index 48c0dd3fc..5fa277760 100644 --- a/src/boost/boost/predef/architecture/x86/32.h +++ b/src/boost/boost/predef/architecture/x86/32.h @@ -11,35 +11,36 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_X86_32`] +/* tag::reference[] += `BOOST_ARCH_X86_32` -[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture: -If available versions \[3-6\] are specifically detected. +http://en.wikipedia.org/wiki/X86[Intel x86] architecture: +If available versions [3-6] are specifically detected. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`i386`] [__predef_detection__]] - [[`__i386__`] [__predef_detection__]] - [[`__i486__`] [__predef_detection__]] - [[`__i586__`] [__predef_detection__]] - [[`__i686__`] [__predef_detection__]] - [[`__i386`] [__predef_detection__]] - [[`_M_IX86`] [__predef_detection__]] - [[`_X86_`] [__predef_detection__]] - [[`__THW_INTEL__`] [__predef_detection__]] - [[`__I86__`] [__predef_detection__]] - [[`__INTEL__`] [__predef_detection__]] +| `i386` | {predef_detection} +| `+__i386__+` | {predef_detection} +| `+__i486__+` | {predef_detection} +| `+__i586__+` | {predef_detection} +| `+__i686__+` | {predef_detection} +| `+__i386+` | {predef_detection} +| `+_M_IX86+` | {predef_detection} +| `+_X86_+` | {predef_detection} +| `+__THW_INTEL__+` | {predef_detection} +| `+__I86__+` | {predef_detection} +| `+__INTEL__+` | {predef_detection} - [[`__I86__`] [V.0.0]] - [[`_M_IX86`] [V.0.0]] - [[`__i686__`] [6.0.0]] - [[`__i586__`] [5.0.0]] - [[`__i486__`] [4.0.0]] - [[`__i386__`] [3.0.0]] - ] - */ +| `+__I86__+` | V.0.0 +| `+_M_IX86+` | V.0.0 +| `+__i686__+` | 6.0.0 +| `+__i586__+` | 5.0.0 +| `+__i486__+` | 4.0.0 +| `+__i386__+` | 3.0.0 +|=== +*/ // end::reference[] #define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -77,6 +78,11 @@ If available versions \[3-6\] are specifically detected. # define BOOST_ARCH_X86_32_AVAILABLE #endif +#if BOOST_ARCH_X86_32 +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_X86_32_NAME "Intel x86-32" #include diff --git a/src/boost/boost/predef/architecture/x86/64.h b/src/boost/boost/predef/architecture/x86/64.h index 494e858f3..a8952f94a 100644 --- a/src/boost/boost/predef/architecture/x86/64.h +++ b/src/boost/boost/predef/architecture/x86/64.h @@ -1,5 +1,5 @@ /* -Copyright Rene Rivera 2008-2015 +Copyright Rene Rivera 2008-2021 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) @@ -11,21 +11,22 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_X86_64`] +/* tag::reference[] += `BOOST_ARCH_X86_64` -[@http://en.wikipedia.org/wiki/Ia64 Intel IA-64] architecture. +https://en.wikipedia.org/wiki/X86-64[X86-64] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__x86_64`] [__predef_detection__]] - [[`__x86_64__`] [__predef_detection__]] - [[`__amd64__`] [__predef_detection__]] - [[`__amd64`] [__predef_detection__]] - [[`_M_X64`] [__predef_detection__]] - ] - */ +| `+__x86_64+` | {predef_detection} +| `+__x86_64__+` | {predef_detection} +| `+__amd64__+` | {predef_detection} +| `+__amd64+` | {predef_detection} +| `+_M_X64+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -40,6 +41,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_X86_64_AVAILABLE #endif +#if BOOST_ARCH_X86_64 +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_X86_64_NAME "Intel x86-64" #include diff --git a/src/boost/boost/predef/architecture/z.h b/src/boost/boost/predef/architecture/z.h index 50c37f393..1ac0f3d3e 100644 --- a/src/boost/boost/predef/architecture/z.h +++ b/src/boost/boost/predef/architecture/z.h @@ -11,17 +11,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_ARCH_Z`] +/* tag::reference[] += `BOOST_ARCH_Z` -[@http://en.wikipedia.org/wiki/Z/Architecture z/Architecture] architecture. +http://en.wikipedia.org/wiki/Z/Architecture[z/Architecture] architecture. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SYSC_ZARCH__`] [__predef_detection__]] - ] - */ +| `+__SYSC_ZARCH__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_ARCH_Z BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -34,6 +35,11 @@ Distributed under the Boost Software License, Version 1.0. # define BOOST_ARCH_Z_AVAILABLE #endif +#if BOOST_ARCH_Z +# undef BOOST_ARCH_WORD_BITS_64 +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + #define BOOST_ARCH_Z_NAME "z/Architecture" #endif diff --git a/src/boost/boost/predef/compiler/borland.h b/src/boost/boost/predef/compiler/borland.h index c017a0857..f35158794 100644 --- a/src/boost/boost/predef/compiler/borland.h +++ b/src/boost/boost/predef/compiler/borland.h @@ -11,22 +11,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_BORLAND`] +/* tag::reference[] += `BOOST_COMP_BORLAND` -[@http://en.wikipedia.org/wiki/C_plus_plus_builder Borland C++] compiler. +http://en.wikipedia.org/wiki/C_plus_plus_builder[Borland {CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__BORLANDC__`] [__predef_detection__]] - [[`__CODEGEARC__`] [__predef_detection__]] +| `+__BORLANDC__+` | {predef_detection} +| `+__CODEGEARC__+` | {predef_detection} - [[`__BORLANDC__`] [V.R.P]] - [[`__CODEGEARC__`] [V.R.P]] - ] - */ +| `+__BORLANDC__+` | V.R.P +| `+__CODEGEARC__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_BORLAND BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/clang.h b/src/boost/boost/predef/compiler/clang.h index 0a0714caa..6231e9415 100644 --- a/src/boost/boost/predef/compiler/clang.h +++ b/src/boost/boost/predef/compiler/clang.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_CLANG`] +/* tag::reference[] += `BOOST_COMP_CLANG` -[@http://en.wikipedia.org/wiki/Clang Clang] compiler. +http://en.wikipedia.org/wiki/Clang[Clang] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__clang__`] [__predef_detection__]] +| `+__clang__+` | {predef_detection} - [[`__clang_major__`, `__clang_minor__`, `__clang_patchlevel__`] [V.R.P]] - ] - */ +| `+__clang_major__+`, `+__clang_minor__+`, `+__clang_patchlevel__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_CLANG BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/comeau.h b/src/boost/boost/predef/compiler/comeau.h index 5d9c2e366..c8d83922c 100644 --- a/src/boost/boost/predef/compiler/comeau.h +++ b/src/boost/boost/predef/compiler/comeau.h @@ -13,20 +13,21 @@ Distributed under the Boost Software License, Version 1.0. #define BOOST_COMP_COMO BOOST_VERSION_NUMBER_NOT_AVAILABLE -/*` -[heading `BOOST_COMP_COMO`] +/* tag::reference[] += `BOOST_COMP_COMO` -[@http://en.wikipedia.org/wiki/Comeau_C/C%2B%2B Comeau C++] compiler. +http://en.wikipedia.org/wiki/Comeau_C/C%2B%2B[Comeau {CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__COMO__`] [__predef_detection__]] +| `+__COMO__+` | {predef_detection} - [[`__COMO_VERSION__`] [V.R.P]] - ] - */ +| `+__COMO_VERSION__+` | V.R.P +|=== +*/ // end::reference[] #if defined(__COMO__) # if !defined(BOOST_COMP_COMO_DETECTION) && defined(__COMO_VERSION__) diff --git a/src/boost/boost/predef/compiler/compaq.h b/src/boost/boost/predef/compiler/compaq.h index 3aedbcb24..9a1ab2cc5 100644 --- a/src/boost/boost/predef/compiler/compaq.h +++ b/src/boost/boost/predef/compiler/compaq.h @@ -11,22 +11,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_DEC`] +/* tag::reference[] += `BOOST_COMP_DEC` -[@http://www.openvms.compaq.com/openvms/brochures/deccplus/ Compaq C/C++] compiler. +http://www.openvms.compaq.com/openvms/brochures/deccplus/[Compaq C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__DECCXX`] [__predef_detection__]] - [[`__DECC`] [__predef_detection__]] +| `+__DECCXX+` | {predef_detection} +| `+__DECC+` | {predef_detection} - [[`__DECCXX_VER`] [V.R.P]] - [[`__DECC_VER`] [V.R.P]] - ] - */ +| `+__DECCXX_VER+` | V.R.P +| `+__DECC_VER+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_DEC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/diab.h b/src/boost/boost/predef/compiler/diab.h index d79894ada..c164e376c 100644 --- a/src/boost/boost/predef/compiler/diab.h +++ b/src/boost/boost/predef/compiler/diab.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_DIAB`] +/* tag::reference[] += `BOOST_COMP_DIAB` -[@http://www.windriver.com/products/development_suite/wind_river_compiler/ Diab C/C++] compiler. +http://www.windriver.com/products/development_suite/wind_river_compiler/[Diab C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__DCC__`] [__predef_detection__]] +| `+__DCC__+` | {predef_detection} - [[`__VERSION_NUMBER__`] [V.R.P]] - ] - */ +| `+__VERSION_NUMBER__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_DIAB BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/digitalmars.h b/src/boost/boost/predef/compiler/digitalmars.h index da9584e2e..2cf7a4bde 100644 --- a/src/boost/boost/predef/compiler/digitalmars.h +++ b/src/boost/boost/predef/compiler/digitalmars.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_DMC`] +/* tag::reference[] += `BOOST_COMP_DMC` -[@http://en.wikipedia.org/wiki/Digital_Mars Digital Mars] compiler. +http://en.wikipedia.org/wiki/Digital_Mars[Digital Mars] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__DMC__`] [__predef_detection__]] +| `+__DMC__+` | {predef_detection} - [[`__DMC__`] [V.R.P]] - ] - */ +| `+__DMC__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_DMC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/dignus.h b/src/boost/boost/predef/compiler/dignus.h index e64ff9482..fa84964fd 100644 --- a/src/boost/boost/predef/compiler/dignus.h +++ b/src/boost/boost/predef/compiler/dignus.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_SYSC`] +/* tag::reference[] += `BOOST_COMP_SYSC` -[@http://www.dignus.com/dcxx/ Dignus Systems/C++] compiler. +http://www.dignus.com/dcxx/[Dignus Systems/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SYSC__`] [__predef_detection__]] +| `+__SYSC__+` | {predef_detection} - [[`__SYSC_VER__`] [V.R.P]] - ] - */ +| `+__SYSC_VER__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_SYSC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/edg.h b/src/boost/boost/predef/compiler/edg.h index 8ccdf3e5c..ac66121cc 100644 --- a/src/boost/boost/predef/compiler/edg.h +++ b/src/boost/boost/predef/compiler/edg.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_EDG`] +/* tag::reference[] += `BOOST_COMP_EDG` -[@http://en.wikipedia.org/wiki/Edison_Design_Group EDG C++ Frontend] compiler. +http://en.wikipedia.org/wiki/Edison_Design_Group[EDG {CPP} Frontend] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__EDG__`] [__predef_detection__]] +| `+__EDG__+` | {predef_detection} - [[`__EDG_VERSION__`] [V.R.0]] - ] - */ +| `+__EDG_VERSION__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_COMP_EDG BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/ekopath.h b/src/boost/boost/predef/compiler/ekopath.h index 1773ebc08..a8bdde31e 100644 --- a/src/boost/boost/predef/compiler/ekopath.h +++ b/src/boost/boost/predef/compiler/ekopath.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_PATH`] +/* tag::reference[] += `BOOST_COMP_PATH` -[@http://en.wikipedia.org/wiki/PathScale EKOpath] compiler. +http://en.wikipedia.org/wiki/PathScale[EKOpath] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__PATHCC__`] [__predef_detection__]] +| `+__PATHCC__+` | {predef_detection} - [[`__PATHCC__`, `__PATHCC_MINOR__`, `__PATHCC_PATCHLEVEL__`] [V.R.P]] - ] - */ +| `+__PATHCC__+`, `+__PATHCC_MINOR__+`, `+__PATHCC_PATCHLEVEL__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_PATH BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/gcc.h b/src/boost/boost/predef/compiler/gcc.h index 97ce9f2c3..7a1600800 100644 --- a/src/boost/boost/predef/compiler/gcc.h +++ b/src/boost/boost/predef/compiler/gcc.h @@ -15,21 +15,22 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_GNUC`] +/* tag::reference[] += `BOOST_COMP_GNUC` -[@http://en.wikipedia.org/wiki/GNU_Compiler_Collection Gnu GCC C/C++] compiler. +http://en.wikipedia.org/wiki/GNU_Compiler_Collection[Gnu GCC C/{CPP}] compiler. Version number available as major, minor, and patch (if available). -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__GNUC__`] [__predef_detection__]] +| `+__GNUC__+` | {predef_detection} - [[`__GNUC__`, `__GNUC_MINOR__`, `__GNUC_PATCHLEVEL__`] [V.R.P]] - [[`__GNUC__`, `__GNUC_MINOR__`] [V.R.0]] - ] - */ +| `+__GNUC__+`, `+__GNUC_MINOR__+`, `+__GNUC_PATCHLEVEL__+` | V.R.P +| `+__GNUC__+`, `+__GNUC_MINOR__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_COMP_GNUC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/gcc_xml.h b/src/boost/boost/predef/compiler/gcc_xml.h index 56ec88157..d548b5524 100644 --- a/src/boost/boost/predef/compiler/gcc_xml.h +++ b/src/boost/boost/predef/compiler/gcc_xml.h @@ -11,17 +11,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_GCCXML`] +/* tag::reference[] += `BOOST_COMP_GCCXML` -[@http://www.gccxml.org/ GCC XML] compiler. +http://www.gccxml.org/[GCC XML] compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__GCCXML__`] [__predef_detection__]] - ] - */ +| `+__GCCXML__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_COMP_GCCXML BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/greenhills.h b/src/boost/boost/predef/compiler/greenhills.h index 43c2eacf4..9ff8ee237 100644 --- a/src/boost/boost/predef/compiler/greenhills.h +++ b/src/boost/boost/predef/compiler/greenhills.h @@ -11,22 +11,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_GHS`] +/* tag::reference[] += `BOOST_COMP_GHS` -[@http://en.wikipedia.org/wiki/Green_Hills_Software Green Hills C/C++] compiler. +http://en.wikipedia.org/wiki/Green_Hills_Software[Green Hills C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ghs`] [__predef_detection__]] - [[`__ghs__`] [__predef_detection__]] +| `+__ghs+` | {predef_detection} +| `+__ghs__+` | {predef_detection} - [[`__GHS_VERSION_NUMBER__`] [V.R.P]] - [[`__ghs`] [V.R.P]] - ] - */ +| `+__GHS_VERSION_NUMBER__+` | V.R.P +| `+__ghs+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_GHS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/hp_acc.h b/src/boost/boost/predef/compiler/hp_acc.h index cd30d31a8..fbda32643 100644 --- a/src/boost/boost/predef/compiler/hp_acc.h +++ b/src/boost/boost/predef/compiler/hp_acc.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_HPACC`] +/* tag::reference[] += `BOOST_COMP_HPACC` -HP aC++ compiler. +HP a{CPP} compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__HP_aCC`] [__predef_detection__]] +| `+__HP_aCC+` | {predef_detection} - [[`__HP_aCC`] [V.R.P]] - ] - */ +| `+__HP_aCC+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_HPACC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/iar.h b/src/boost/boost/predef/compiler/iar.h index e22e6384a..dac06c090 100644 --- a/src/boost/boost/predef/compiler/iar.h +++ b/src/boost/boost/predef/compiler/iar.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_IAR`] +/* tag::reference[] += `BOOST_COMP_IAR` -IAR C/C++ compiler. +IAR C/{CPP} compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__IAR_SYSTEMS_ICC__`] [__predef_detection__]] +| `+__IAR_SYSTEMS_ICC__+` | {predef_detection} - [[`__VER__`] [V.R.P]] - ] - */ +| `+__VER__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_IAR BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/ibm.h b/src/boost/boost/predef/compiler/ibm.h index b2e737dc4..12c252a7e 100644 --- a/src/boost/boost/predef/compiler/ibm.h +++ b/src/boost/boost/predef/compiler/ibm.h @@ -11,25 +11,26 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_IBM`] +/* tag::reference[] += `BOOST_COMP_IBM` -[@http://en.wikipedia.org/wiki/VisualAge IBM XL C/C++] compiler. +http://en.wikipedia.org/wiki/VisualAge[IBM XL C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__IBMCPP__`] [__predef_detection__]] - [[`__xlC__`] [__predef_detection__]] - [[`__xlc__`] [__predef_detection__]] +| `+__IBMCPP__+` | {predef_detection} +| `+__xlC__+` | {predef_detection} +| `+__xlc__+` | {predef_detection} - [[`__COMPILER_VER__`] [V.R.P]] - [[`__xlC__`] [V.R.P]] - [[`__xlc__`] [V.R.P]] - [[`__IBMCPP__`] [V.R.P]] - ] - */ +| `+__COMPILER_VER__+` | V.R.P +| `+__xlC__+` | V.R.P +| `+__xlc__+` | V.R.P +| `+__IBMCPP__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/intel.h b/src/boost/boost/predef/compiler/intel.h index 63e1f9f2c..c798c1127 100644 --- a/src/boost/boost/predef/compiler/intel.h +++ b/src/boost/boost/predef/compiler/intel.h @@ -11,33 +11,34 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_INTEL`] +/* tag::reference[] += `BOOST_COMP_INTEL` -[@http://en.wikipedia.org/wiki/Intel_C%2B%2B Intel C/C++] compiler. +http://en.wikipedia.org/wiki/Intel_C%2B%2B[Intel C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__INTEL_COMPILER`] [__predef_detection__]] - [[`__ICL`] [__predef_detection__]] - [[`__ICC`] [__predef_detection__]] - [[`__ECC`] [__predef_detection__]] +| `+__INTEL_COMPILER+` | {predef_detection} +| `+__ICL+` | {predef_detection} +| `+__ICC+` | {predef_detection} +| `+__ECC+` | {predef_detection} - [[`__INTEL_COMPILER`] [V.R]] - [[`__INTEL_COMPILER` and `__INTEL_COMPILER_UPDATE`] [V.R.P]] - ] - */ +| `+__INTEL_COMPILER+` | V.R +| `+__INTEL_COMPILER+` and `+__INTEL_COMPILER_UPDATE+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_INTEL BOOST_VERSION_NUMBER_NOT_AVAILABLE #if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || \ defined(__ECC) -/*` -[note Because of an Intel mistake in the release version numbering when -`__INTEL_COMPILER` is `9999` it is detected as version 12.1.0.] - */ +/* tag::reference[] +NOTE: Because of an Intel mistake in the release version numbering when +`__INTEL_COMPILER` is `9999` it is detected as version 12.1.0. +*/ // end::reference[] # if !defined(BOOST_COMP_INTEL_DETECTION) && defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 9999) # define BOOST_COMP_INTEL_DETECTION BOOST_VERSION_NUMBER(12,1,0) # endif diff --git a/src/boost/boost/predef/compiler/kai.h b/src/boost/boost/predef/compiler/kai.h index 9e4ee937f..da636fb00 100644 --- a/src/boost/boost/predef/compiler/kai.h +++ b/src/boost/boost/predef/compiler/kai.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_KCC`] +/* tag::reference[] += `BOOST_COMP_KCC` -Kai C++ compiler. +Kai {CPP} compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__KCC`] [__predef_detection__]] +| `+__KCC+` | {predef_detection} - [[`__KCC_VERSION`] [V.R.P]] - ] - */ +| `+__KCC_VERSION+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_KCC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/llvm.h b/src/boost/boost/predef/compiler/llvm.h index 80e29794a..4b4e79fce 100644 --- a/src/boost/boost/predef/compiler/llvm.h +++ b/src/boost/boost/predef/compiler/llvm.h @@ -15,17 +15,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_LLVM`] +/* tag::reference[] += `BOOST_COMP_LLVM` -[@http://en.wikipedia.org/wiki/LLVM LLVM] compiler. +http://en.wikipedia.org/wiki/LLVM[LLVM] compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__llvm__`] [__predef_detection__]] - ] - */ +| `+__llvm__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_COMP_LLVM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/metaware.h b/src/boost/boost/predef/compiler/metaware.h index cc61c8f07..a86229488 100644 --- a/src/boost/boost/predef/compiler/metaware.h +++ b/src/boost/boost/predef/compiler/metaware.h @@ -11,17 +11,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_HIGHC`] +/* tag::reference[] += `BOOST_COMP_HIGHC` -MetaWare High C/C++ compiler. +MetaWare High C/{CPP} compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__HIGHC__`] [__predef_detection__]] - ] - */ +| `+__HIGHC__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_COMP_HIGHC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/metrowerks.h b/src/boost/boost/predef/compiler/metrowerks.h index 0c34bff4f..991ca4ff0 100644 --- a/src/boost/boost/predef/compiler/metrowerks.h +++ b/src/boost/boost/predef/compiler/metrowerks.h @@ -11,24 +11,25 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_MWERKS`] +/* tag::reference[] += `BOOST_COMP_MWERKS` -[@http://en.wikipedia.org/wiki/CodeWarrior Metrowerks CodeWarrior] compiler. +http://en.wikipedia.org/wiki/CodeWarrior[Metrowerks CodeWarrior] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MWERKS__`] [__predef_detection__]] - [[`__CWCC__`] [__predef_detection__]] +| `+__MWERKS__+` | {predef_detection} +| `+__CWCC__+` | {predef_detection} - [[`__CWCC__`] [V.R.P]] - [[`__MWERKS__`] [V.R.P >= 4.2.0]] - [[`__MWERKS__`] [9.R.0]] - [[`__MWERKS__`] [8.R.0]] - ] - */ +| `+__CWCC__+` | V.R.P +| `+__MWERKS__+` | V.R.P >= 4.2.0 +| `+__MWERKS__+` | 9.R.0 +| `+__MWERKS__+` | 8.R.0 +|=== +*/ // end::reference[] #define BOOST_COMP_MWERKS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/microtec.h b/src/boost/boost/predef/compiler/microtec.h index d2f57725d..2cffbf828 100644 --- a/src/boost/boost/predef/compiler/microtec.h +++ b/src/boost/boost/predef/compiler/microtec.h @@ -11,17 +11,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_MRI`] +/* tag::reference[] += `BOOST_COMP_MRI` -[@http://www.mentor.com/microtec/ Microtec C/C++] compiler. +http://www.mentor.com/microtec/[Microtec C/{CPP}] compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_MRI`] [__predef_detection__]] - ] - */ +| `+_MRI+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_COMP_MRI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/mpw.h b/src/boost/boost/predef/compiler/mpw.h index 4f0e141d4..3331288ce 100644 --- a/src/boost/boost/predef/compiler/mpw.h +++ b/src/boost/boost/predef/compiler/mpw.h @@ -11,22 +11,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_MPW`] +/* tag::reference[] += `BOOST_COMP_MPW` -[@http://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop MPW C++] compiler. +http://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop[MPW {CPP}] compiler. Version number available as major, and minor. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MRC__`] [__predef_detection__]] - [[`MPW_C`] [__predef_detection__]] - [[`MPW_CPLUS`] [__predef_detection__]] +| `+__MRC__+` | {predef_detection} +| `MPW_C` | {predef_detection} +| `MPW_CPLUS` | {predef_detection} - [[`__MRC__`] [V.R.0]] - ] - */ +| `+__MRC__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_COMP_MPW BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/nvcc.h b/src/boost/boost/predef/compiler/nvcc.h index 0f347b300..803d5c28a 100644 --- a/src/boost/boost/predef/compiler/nvcc.h +++ b/src/boost/boost/predef/compiler/nvcc.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_NVCC`] +/* tag::reference[] += `BOOST_COMP_NVCC` -[@https://en.wikipedia.org/wiki/NVIDIA_CUDA_Compiler NVCC] compiler. +https://en.wikipedia.org/wiki/NVIDIA_CUDA_Compiler[NVCC] compiler. Version number available as major, minor, and patch beginning with version 7.5. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__NVCC__`] [__predef_detection__]] +| `+__NVCC__+` | {predef_detection} - [[`__CUDACC_VER_MAJOR__`, `__CUDACC_VER_MINOR__`, `__CUDACC_VER_BUILD__`] [V.R.P]] - ] - */ +| `+__CUDACC_VER_MAJOR__+`, `+__CUDACC_VER_MINOR__+`, `+__CUDACC_VER_BUILD__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_NVCC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/palm.h b/src/boost/boost/predef/compiler/palm.h index a67026eba..f740137a6 100644 --- a/src/boost/boost/predef/compiler/palm.h +++ b/src/boost/boost/predef/compiler/palm.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_PALM`] +/* tag::reference[] += `BOOST_COMP_PALM` -Palm C/C++ compiler. +Palm C/{CPP} compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_PACC_VER`] [__predef_detection__]] +| `+_PACC_VER+` | {predef_detection} - [[`_PACC_VER`] [V.R.P]] - ] - */ +| `+_PACC_VER+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_PALM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/pgi.h b/src/boost/boost/predef/compiler/pgi.h index 08bd769ed..416320eea 100644 --- a/src/boost/boost/predef/compiler/pgi.h +++ b/src/boost/boost/predef/compiler/pgi.h @@ -11,19 +11,20 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_PGI`] +/* tag::reference[] += `BOOST_COMP_PGI` -[@http://en.wikipedia.org/wiki/The_Portland_Group Portland Group C/C++] compiler. +http://en.wikipedia.org/wiki/The_Portland_Group[Portland Group C/{CPP}] compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__PGI`] [__predef_detection__]] +| `+__PGI+` | {predef_detection} - [[`__PGIC__`, `__PGIC_MINOR__`, `__PGIC_PATCHLEVEL__`] [V.R.P]] - ] - */ +| `+__PGIC__+`, `+__PGIC_MINOR__+`, `+__PGIC_PATCHLEVEL__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_PGI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/sgi_mipspro.h b/src/boost/boost/predef/compiler/sgi_mipspro.h index eddc1d7b9..b8b23529b 100644 --- a/src/boost/boost/predef/compiler/sgi_mipspro.h +++ b/src/boost/boost/predef/compiler/sgi_mipspro.h @@ -11,22 +11,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_SGI`] +/* tag::reference[] += `BOOST_COMP_SGI` -[@http://en.wikipedia.org/wiki/MIPSpro SGI MIPSpro] compiler. +http://en.wikipedia.org/wiki/MIPSpro[SGI MIPSpro] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__sgi`] [__predef_detection__]] - [[`sgi`] [__predef_detection__]] +| `+__sgi+` | {predef_detection} +| `sgi` | {predef_detection} - [[`_SGI_COMPILER_VERSION`] [V.R.P]] - [[`_COMPILER_VERSION`] [V.R.P]] - ] - */ +| `+_SGI_COMPILER_VERSION+` | V.R.P +| `+_COMPILER_VERSION+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_SGI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/sunpro.h b/src/boost/boost/predef/compiler/sunpro.h index f2df77b44..61c66d30d 100644 --- a/src/boost/boost/predef/compiler/sunpro.h +++ b/src/boost/boost/predef/compiler/sunpro.h @@ -11,24 +11,25 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_SUNPRO`] +/* tag::reference[] += `BOOST_COMP_SUNPRO` -[@http://en.wikipedia.org/wiki/Oracle_Solaris_Studio Oracle Solaris Studio] compiler. +http://en.wikipedia.org/wiki/Oracle_Solaris_Studio[Oracle Solaris Studio] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SUNPRO_CC`] [__predef_detection__]] - [[`__SUNPRO_C`] [__predef_detection__]] +| `+__SUNPRO_CC+` | {predef_detection} +| `+__SUNPRO_C+` | {predef_detection} - [[`__SUNPRO_CC`] [V.R.P]] - [[`__SUNPRO_C`] [V.R.P]] - [[`__SUNPRO_CC`] [VV.RR.P]] - [[`__SUNPRO_C`] [VV.RR.P]] - ] - */ +| `+__SUNPRO_CC+` | V.R.P +| `+__SUNPRO_C+` | V.R.P +| `+__SUNPRO_CC+` | VV.RR.P +| `+__SUNPRO_C+` | VV.RR.P +|=== +*/ // end::reference[] #define BOOST_COMP_SUNPRO BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/tendra.h b/src/boost/boost/predef/compiler/tendra.h index 3db30c955..6954425fe 100644 --- a/src/boost/boost/predef/compiler/tendra.h +++ b/src/boost/boost/predef/compiler/tendra.h @@ -11,17 +11,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_TENDRA`] +/* tag::reference[] += `BOOST_COMP_TENDRA` -[@http://en.wikipedia.org/wiki/TenDRA_Compiler TenDRA C/C++] compiler. +http://en.wikipedia.org/wiki/TenDRA_Compiler[TenDRA C/{CPP}] compiler. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__TenDRA__`] [__predef_detection__]] - ] - */ +| `+__TenDRA__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_COMP_TENDRA BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/visualc.h b/src/boost/boost/predef/compiler/visualc.h index b15b7a7d1..635132cf8 100644 --- a/src/boost/boost/predef/compiler/visualc.h +++ b/src/boost/boost/predef/compiler/visualc.h @@ -15,25 +15,26 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_MSVC`] +/* tag::reference[] += `BOOST_COMP_MSVC` -[@http://en.wikipedia.org/wiki/Visual_studio Microsoft Visual C/C++] compiler. +http://en.wikipedia.org/wiki/Visual_studio[Microsoft Visual C/{CPP}] compiler. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_MSC_VER`] [__predef_detection__]] +| `+_MSC_VER+` | {predef_detection} - [[`_MSC_FULL_VER`] [V.R.P]] - [[`_MSC_VER`] [V.R.0]] - ] +| `+_MSC_FULL_VER+` | V.R.P +| `+_MSC_VER+` | V.R.0 +|=== -[note Release of Visual Studio after 2015 will no longer be identified +NOTE: Release of Visual Studio after 2015 will no longer be identified by Boost Predef as the marketing version number. Instead we use the -compiler version number directly, i.e. the _MSC_VER number.] - */ +compiler version number directly, i.e. the _MSC_VER number. +*/ // end::reference[] #define BOOST_COMP_MSVC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/compiler/watcom.h b/src/boost/boost/predef/compiler/watcom.h index ddc0042b2..380507a91 100644 --- a/src/boost/boost/predef/compiler/watcom.h +++ b/src/boost/boost/predef/compiler/watcom.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_COMP_WATCOM`] +/* tag::reference[] += `BOOST_COMP_WATCOM` -[@http://en.wikipedia.org/wiki/Watcom Watcom C++] compiler. +http://en.wikipedia.org/wiki/Watcom[Watcom {CPP}] compiler. Version number available as major, and minor. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__WATCOMC__`] [__predef_detection__]] +| `+__WATCOMC__+` | {predef_detection} - [[`__WATCOMC__`] [V.R.P]] - ] - */ +| `+__WATCOMC__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_COMP_WATCOM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/hardware/simd.h b/src/boost/boost/predef/hardware/simd.h index 181da6570..dde3af5d4 100644 --- a/src/boost/boost/predef/hardware/simd.h +++ b/src/boost/boost/predef/hardware/simd.h @@ -16,55 +16,104 @@ Distributed under the Boost Software License, Version 1.0. #include -/*` - [section Using the `BOOST_HW_SIMD_*` predefs] - [include ../doc/hardware_simd.qbk] - [endsect] - - [/ --------------------------- ] - - [section `BOOST_HW_SIMD_*`] - - [heading `BOOST_HW_SIMD`] - - The SIMD extension detected for a specific architectures. - Version number depends on the detected extension. - - [table - [[__predef_symbol__] [__predef_version__]] - - [[`BOOST_HW_SIMD_X86_AVAILABLE`] [__predef_detection__]] - [[`BOOST_HW_SIMD_X86_AMD_AVAILABLE`] [__predef_detection__]] - [[`BOOST_HW_SIMD_ARM_AVAILABLE`] [__predef_detection__]] - [[`BOOST_HW_SIMD_PPC_AVAILABLE`] [__predef_detection__]] - ] - - [include ../include/boost/predef/hardware/simd/x86.h] - [include ../include/boost/predef/hardware/simd/x86_amd.h] - [include ../include/boost/predef/hardware/simd/arm.h] - [include ../include/boost/predef/hardware/simd/ppc.h] - - [endsect] - - [/ --------------------------- ] - - [section `BOOST_HW_SIMD_X86_*_VERSION`] - [include ../include/boost/predef/hardware/simd/x86/versions.h] - [endsect] - - [section `BOOST_HW_SIMD_X86_AMD_*_VERSION`] - [include ../include/boost/predef/hardware/simd/x86_amd/versions.h] - [endsect] +/* tag::reference[] += Using the `BOOST_HW_SIMD_*` predefs + +SIMD predefs depend on compiler options. For example, you will have to add the +option `-msse3` to clang or gcc to enable SSE3. SIMD predefs are also inclusive. +This means that if SSE3 is enabled, then every other extensions with a lower +version number will implicitly be enabled and detected. However, some extensions +are CPU specific, they may not be detected nor enabled when an upper version is +enabled. + +NOTE: SSE(1) and SSE2 are automatically enabled by default when using x86-64 +architecture. + +To check if any SIMD extension has been enabled, you can use: + +[source] +---- +#include +#include + +int main() +{ +#if defined(BOOST_HW_SIMD_AVAILABLE) + std::cout << "SIMD detected!" << std::endl; +#endif + return 0; +} +---- + +When writing SIMD specific code, you may want to check if a particular extension +has been detected. To do so you have to use the right architecture predef and +compare it. Those predef are of the form `BOOST_HW_SIMD_"ARCH"` (where `"ARCH"` +is either `ARM`, `PPC`, or `X86`). For example, if you compile code for x86 +architecture, you will have to use `BOOST_HW_SIMD_X86`. Its value will be the +version number of the most recent SIMD extension detected for the architecture. + +To check if an extension has been enabled: + +[source] +---- +#include +#include + +int main() +{ +#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE3_VERSION + std::cout << "This is SSE3!" << std::endl; +#endif + return 0; +} +---- + +NOTE: The *_VERSION* defines that map version number to actual real +identifiers. This way it is easier to write comparisons without messing up with +version numbers. + +To *"strictly"* check the most recent detected extension: + +[source] +---- +#include +#include + +int main() +{ +#if BOOST_HW_SIMD_X86 == BOOST_HW_SIMD_X86_SSE3_VERSION + std::cout << "This is SSE3 and this is the most recent enabled extension!" + << std::endl; +#endif + return 0; +} +---- + +Because of the version systems of predefs and of the inclusive property of SIMD +extensions macros, you can easily check for ranges of supported extensions: + +[source] +---- +#include +#include + +int main() +{ +#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE2_VERSION &&\ + BOOST_HW_SIMD_X86 <= BOOST_HW_SIMD_X86_SSSE3_VERSION + std::cout << "This is SSE2, SSE3 and SSSE3!" << std::endl; +#endif + return 0; +} +---- - [section `BOOST_HW_SIMD_ARM_*_VERSION`] - [include ../include/boost/predef/hardware/simd/arm/versions.h] - [endsect] +NOTE: Unlike gcc and clang, Visual Studio does not allow you to specify precisely +the SSE variants you want to use, the only detections that will take place are +SSE, SSE2, AVX and AVX2. For more informations, + see [@https://msdn.microsoft.com/en-us/library/b0084kay.aspx here]. - [section `BOOST_HW_SIMD_PPC_*_VERSION`] - [include ../include/boost/predef/hardware/simd/ppc/versions.h] - [endsect] - */ +*/ // end::reference[] // We check if SIMD extension of multiples architectures have been detected, // if yes, then this is an error! diff --git a/src/boost/boost/predef/hardware/simd/arm.h b/src/boost/boost/predef/hardware/simd/arm.h index 09da1b684..0d58a26b1 100644 --- a/src/boost/boost/predef/hardware/simd/arm.h +++ b/src/boost/boost/predef/hardware/simd/arm.h @@ -12,31 +12,33 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` - [heading `BOOST_HW_SIMD_ARM`] +/* tag::reference[] += `BOOST_HW_SIMD_ARM` - The SIMD extension for ARM (*if detected*). - Version number depends on the most recent detected extension. +The SIMD extension for ARM (*if detected*). +Version number depends on the most recent detected extension. - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ARM_NEON__`] [__predef_detection__]] - [[`__aarch64__`] [__predef_detection__]] - [[`_M_ARM`] [__predef_detection__]] - [[`_M_ARM64`] [__predef_detection__]] - ] +| `+__ARM_NEON__+` | {predef_detection} +| `+__aarch64__+` | {predef_detection} +| `+_M_ARM+` | {predef_detection} +| `+_M_ARM64+` | {predef_detection} +|=== - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__ARM_NEON__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]] - [[`__aarch64__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]] - [[`_M_ARM`] [BOOST_HW_SIMD_ARM_NEON_VERSION]] - [[`_M_ARM64`] [BOOST_HW_SIMD_ARM_NEON_VERSION]] - ] +| `+__ARM_NEON__+` | BOOST_HW_SIMD_ARM_NEON_VERSION +| `+__aarch64__+` | BOOST_HW_SIMD_ARM_NEON_VERSION +| `+_M_ARM+` | BOOST_HW_SIMD_ARM_NEON_VERSION +| `+_M_ARM64+` | BOOST_HW_SIMD_ARM_NEON_VERSION +|=== - */ +*/ // end::reference[] #define BOOST_HW_SIMD_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/hardware/simd/arm/versions.h b/src/boost/boost/predef/hardware/simd/arm/versions.h index fe9ab41a5..b00e63d75 100644 --- a/src/boost/boost/predef/hardware/simd/arm/versions.h +++ b/src/boost/boost/predef/hardware/simd/arm/versions.h @@ -11,22 +11,28 @@ Distributed under the Boost Software License, Version 1.0. #include -/*` - Those defines represent ARM SIMD extensions versions. +/* tag::reference[] += `BOOST_HW_SIMD_ARM_*_VERSION` - [note You *MUST* compare them with the predef `BOOST_HW_SIMD_ARM`.] - */ +Those defines represent ARM SIMD extensions versions. + +NOTE: You *MUST* compare them with the predef `BOOST_HW_SIMD_ARM`. +*/ // end::reference[] // --------------------------------- -/*` - [heading `BOOST_HW_SIMD_ARM_NEON_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_ARM_NEON_VERSION` - The [@https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON] - ARM extension version number. +The https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29[NEON] +ARM extension version number. - Version number is: *1.0.0*. - */ +Version number is: *1.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_ARM_NEON_VERSION BOOST_VERSION_NUMBER(1, 0, 0) +/* tag::reference[] + +*/ // end::reference[] + #endif diff --git a/src/boost/boost/predef/hardware/simd/ppc.h b/src/boost/boost/predef/hardware/simd/ppc.h index 657ba4976..f9da99dfe 100644 --- a/src/boost/boost/predef/hardware/simd/ppc.h +++ b/src/boost/boost/predef/hardware/simd/ppc.h @@ -12,35 +12,37 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` - [heading `BOOST_HW_SIMD_PPC`] +/* tag::reference[] += `BOOST_HW_SIMD_PPC` - The SIMD extension for PowerPC (*if detected*). - Version number depends on the most recent detected extension. +The SIMD extension for PowerPC (*if detected*). +Version number depends on the most recent detected extension. - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__VECTOR4DOUBLE__`] [__predef_detection__]] +| `+__VECTOR4DOUBLE__+` | {predef_detection} - [[`__ALTIVEC__`] [__predef_detection__]] - [[`__VEC__`] [__predef_detection__]] +| `+__ALTIVEC__+` | {predef_detection} +| `+__VEC__+` | {predef_detection} - [[`__VSX__`] [__predef_detection__]] - ] +| `+__VSX__+` | {predef_detection} +|=== - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__VECTOR4DOUBLE__`] [BOOST_HW_SIMD_PPC_QPX_VERSION]] +| `+__VECTOR4DOUBLE__+` | BOOST_HW_SIMD_PPC_QPX_VERSION - [[`__ALTIVEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]] - [[`__VEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]] +| `+__ALTIVEC__+` | BOOST_HW_SIMD_PPC_VMX_VERSION +| `+__VEC__+` | BOOST_HW_SIMD_PPC_VMX_VERSION - [[`__VSX__`] [BOOST_HW_SIMD_PPC_VSX_VERSION]] - ] +| `+__VSX__+` | BOOST_HW_SIMD_PPC_VSX_VERSION +|=== - */ +*/ // end::reference[] #define BOOST_HW_SIMD_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/hardware/simd/ppc/versions.h b/src/boost/boost/predef/hardware/simd/ppc/versions.h index f78d316b0..6596b2c1c 100644 --- a/src/boost/boost/predef/hardware/simd/ppc/versions.h +++ b/src/boost/boost/predef/hardware/simd/ppc/versions.h @@ -11,41 +11,47 @@ Distributed under the Boost Software License, Version 1.0. #include -/*` - Those defines represent Power PC SIMD extensions versions. +/* tag::reference[] += `BOOST_HW_SIMD_PPC_*_VERSION` - [note You *MUST* compare them with the predef `BOOST_HW_SIMD_PPC`.] - */ +Those defines represent Power PC SIMD extensions versions. + +NOTE: You *MUST* compare them with the predef `BOOST_HW_SIMD_PPC`. +*/ // end::reference[] // --------------------------------- -/*` - [heading `BOOST_HW_SIMD_PPC_VMX_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_PPC_VMX_VERSION` - The [@https://en.wikipedia.org/wiki/AltiVec#VMX128 VMX] powerpc extension - version number. +The https://en.wikipedia.org/wiki/AltiVec#VMX128[VMX] powerpc extension +version number. - Version number is: *1.0.0*. - */ +Version number is: *1.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_PPC_VMX_VERSION BOOST_VERSION_NUMBER(1, 0, 0) -/*` - [heading `BOOST_HW_SIMD_PPC_VSX_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_PPC_VSX_VERSION` - The [@https://en.wikipedia.org/wiki/AltiVec#VSX VSX] powerpc extension version - number. +The https://en.wikipedia.org/wiki/AltiVec#VSX[VSX] powerpc extension version +number. - Version number is: *1.1.0*. - */ +Version number is: *1.1.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_PPC_VSX_VERSION BOOST_VERSION_NUMBER(1, 1, 0) -/*` - [heading `BOOST_HW_SIMD_PPC_QPX_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_PPC_QPX_VERSION` - The QPX powerpc extension version number. +The QPX powerpc extension version number. - Version number is: *2.0.0*. - */ +Version number is: *2.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_PPC_QPX_VERSION BOOST_VERSION_NUMBER(2, 0, 0) +/* tag::reference[] + +*/ // end::reference[] + #endif diff --git a/src/boost/boost/predef/hardware/simd/x86.h b/src/boost/boost/predef/hardware/simd/x86.h index 3ebdda540..7bd9e2105 100644 --- a/src/boost/boost/predef/hardware/simd/x86.h +++ b/src/boost/boost/predef/hardware/simd/x86.h @@ -12,65 +12,67 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` - [heading `BOOST_HW_SIMD_X86`] +/* tag::reference[] += `BOOST_HW_SIMD_X86` - The SIMD extension for x86 (*if detected*). - Version number depends on the most recent detected extension. +The SIMD extension for x86 (*if detected*). +Version number depends on the most recent detected extension. - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SSE__`] [__predef_detection__]] - [[`_M_X64`] [__predef_detection__]] - [[`_M_IX86_FP >= 1`] [__predef_detection__]] +| `+__SSE__+` | {predef_detection} +| `+_M_X64+` | {predef_detection} +| `_M_IX86_FP >= 1` | {predef_detection} - [[`__SSE2__`] [__predef_detection__]] - [[`_M_X64`] [__predef_detection__]] - [[`_M_IX86_FP >= 2`] [__predef_detection__]] +| `+__SSE2__+` | {predef_detection} +| `+_M_X64+` | {predef_detection} +| `_M_IX86_FP >= 2` | {predef_detection} - [[`__SSE3__`] [__predef_detection__]] +| `+__SSE3__+` | {predef_detection} - [[`__SSSE3__`] [__predef_detection__]] +| `+__SSSE3__+` | {predef_detection} - [[`__SSE4_1__`] [__predef_detection__]] +| `+__SSE4_1__+` | {predef_detection} - [[`__SSE4_2__`] [__predef_detection__]] +| `+__SSE4_2__+` | {predef_detection} - [[`__AVX__`] [__predef_detection__]] +| `+__AVX__+` | {predef_detection} - [[`__FMA__`] [__predef_detection__]] +| `+__FMA__+` | {predef_detection} - [[`__AVX2__`] [__predef_detection__]] - ] +| `+__AVX2__+` | {predef_detection} +|=== - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SSE__`] [BOOST_HW_SIMD_X86_SSE_VERSION]] - [[`_M_X64`] [BOOST_HW_SIMD_X86_SSE_VERSION]] - [[`_M_IX86_FP >= 1`] [BOOST_HW_SIMD_X86_SSE_VERSION]] +| `+__SSE__+` | BOOST_HW_SIMD_X86_SSE_VERSION +| `+_M_X64+` | BOOST_HW_SIMD_X86_SSE_VERSION +| `_M_IX86_FP >= 1` | BOOST_HW_SIMD_X86_SSE_VERSION - [[`__SSE2__`] [BOOST_HW_SIMD_X86_SSE2_VERSION]] - [[`_M_X64`] [BOOST_HW_SIMD_X86_SSE2_VERSION]] - [[`_M_IX86_FP >= 2`] [BOOST_HW_SIMD_X86_SSE2_VERSION]] +| `+__SSE2__+` | BOOST_HW_SIMD_X86_SSE2_VERSION +| `+_M_X64+` | BOOST_HW_SIMD_X86_SSE2_VERSION +| `_M_IX86_FP >= 2` | BOOST_HW_SIMD_X86_SSE2_VERSION - [[`__SSE3__`] [BOOST_HW_SIMD_X86_SSE3_VERSION]] +| `+__SSE3__+` | BOOST_HW_SIMD_X86_SSE3_VERSION - [[`__SSSE3__`] [BOOST_HW_SIMD_X86_SSSE3_VERSION]] +| `+__SSSE3__+` | BOOST_HW_SIMD_X86_SSSE3_VERSION - [[`__SSE4_1__`] [BOOST_HW_SIMD_X86_SSE4_1_VERSION]] +| `+__SSE4_1__+` | BOOST_HW_SIMD_X86_SSE4_1_VERSION - [[`__SSE4_2__`] [BOOST_HW_SIMD_X86_SSE4_2_VERSION]] +| `+__SSE4_2__+` | BOOST_HW_SIMD_X86_SSE4_2_VERSION - [[`__AVX__`] [BOOST_HW_SIMD_X86_AVX_VERSION]] +| `+__AVX__+` | BOOST_HW_SIMD_X86_AVX_VERSION - [[`__FMA__`] [BOOST_HW_SIMD_X86_FMA3_VERSION]] +| `+__FMA__+` | BOOST_HW_SIMD_X86_FMA3_VERSION - [[`__AVX2__`] [BOOST_HW_SIMD_X86_AVX2_VERSION]] - ] +| `+__AVX2__+` | BOOST_HW_SIMD_X86_AVX2_VERSION +|=== - */ +*/ // end::reference[] #define BOOST_HW_SIMD_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/hardware/simd/x86/versions.h b/src/boost/boost/predef/hardware/simd/x86/versions.h index cf285b91a..19990a443 100644 --- a/src/boost/boost/predef/hardware/simd/x86/versions.h +++ b/src/boost/boost/predef/hardware/simd/x86/versions.h @@ -11,119 +11,125 @@ Distributed under the Boost Software License, Version 1.0. #include -/*` - Those defines represent x86 SIMD extensions versions. +/* tag::reference[] += `BOOST_HW_SIMD_X86_*_VERSION` - [note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86`.] - */ +Those defines represent x86 SIMD extensions versions. + +NOTE: You *MUST* compare them with the predef `BOOST_HW_SIMD_X86`. +*/ // end::reference[] // --------------------------------- -/*` - [heading `BOOST_HW_SIMD_X86_MMX_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_MMX_VERSION` - The [@https://en.wikipedia.org/wiki/MMX_(instruction_set) MMX] x86 extension - version number. +The https://en.wikipedia.org/wiki/MMX_(instruction_set)[MMX] x86 extension +version number. - Version number is: *0.99.0*. - */ +Version number is: *0.99.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_MMX_VERSION BOOST_VERSION_NUMBER(0, 99, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSE_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSE_VERSION` - The [@https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions SSE] x86 extension - version number. +The https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions[SSE] x86 extension +version number. - Version number is: *1.0.0*. - */ +Version number is: *1.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSE_VERSION BOOST_VERSION_NUMBER(1, 0, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSE2_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSE2_VERSION` - The [@https://en.wikipedia.org/wiki/SSE2 SSE2] x86 extension version number. +The https://en.wikipedia.org/wiki/SSE2[SSE2] x86 extension version number. - Version number is: *2.0.0*. - */ +Version number is: *2.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSE2_VERSION BOOST_VERSION_NUMBER(2, 0, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSE3_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSE3_VERSION` - The [@https://en.wikipedia.org/wiki/SSE3 SSE3] x86 extension version number. +The https://en.wikipedia.org/wiki/SSE3[SSE3] x86 extension version number. - Version number is: *3.0.0*. - */ +Version number is: *3.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSE3_VERSION BOOST_VERSION_NUMBER(3, 0, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSSE3_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSSE3_VERSION` - The [@https://en.wikipedia.org/wiki/SSSE3 SSSE3] x86 extension version number. +The https://en.wikipedia.org/wiki/SSSE3[SSSE3] x86 extension version number. - Version number is: *3.1.0*. - */ +Version number is: *3.1.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSSE3_VERSION BOOST_VERSION_NUMBER(3, 1, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSE4_1_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSE4_1_VERSION` - The [@https://en.wikipedia.org/wiki/SSE4#SSE4.1 SSE4_1] x86 extension version - number. +The https://en.wikipedia.org/wiki/SSE4#SSE4.1[SSE4_1] x86 extension version +number. - Version number is: *4.1.0*. - */ +Version number is: *4.1.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSE4_1_VERSION BOOST_VERSION_NUMBER(4, 1, 0) -/*` - [heading `BOOST_HW_SIMD_X86_SSE4_2_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_SSE4_2_VERSION` - The [@https://en.wikipedia.org/wiki/SSE4##SSE4.2 SSE4_2] x86 extension version - number. +The https://en.wikipedia.org/wiki/SSE4##SSE4.2[SSE4_2] x86 extension version +number. - Version number is: *4.2.0*. - */ +Version number is: *4.2.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_SSE4_2_VERSION BOOST_VERSION_NUMBER(4, 2, 0) -/*` - [heading `BOOST_HW_SIMD_X86_AVX_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AVX_VERSION` - The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions AVX] x86 - extension version number. +The https://en.wikipedia.org/wiki/Advanced_Vector_Extensions[AVX] x86 +extension version number. - Version number is: *5.0.0*. - */ +Version number is: *5.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AVX_VERSION BOOST_VERSION_NUMBER(5, 0, 0) -/*` - [heading `BOOST_HW_SIMD_X86_FMA3_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_FMA3_VERSION` - The [@https://en.wikipedia.org/wiki/FMA_instruction_set FMA3] x86 extension - version number. +The https://en.wikipedia.org/wiki/FMA_instruction_set[FMA3] x86 extension +version number. - Version number is: *5.2.0*. - */ +Version number is: *5.2.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_FMA3_VERSION BOOST_VERSION_NUMBER(5, 2, 0) -/*` - [heading `BOOST_HW_SIMD_X86_AVX2_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AVX2_VERSION` - The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2 AVX2] - x86 extension version number. +The https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2[AVX2] +x86 extension version number. - Version number is: *5.3.0*. - */ +Version number is: *5.3.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AVX2_VERSION BOOST_VERSION_NUMBER(5, 3, 0) -/*` - [heading `BOOST_HW_SIMD_X86_MIC_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_MIC_VERSION` - The [@https://en.wikipedia.org/wiki/Xeon_Phi MIC] (Xeon Phi) x86 extension - version number. +The https://en.wikipedia.org/wiki/Xeon_Phi[MIC] (Xeon Phi) x86 extension +version number. - Version number is: *9.0.0*. - */ +Version number is: *9.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_MIC_VERSION BOOST_VERSION_NUMBER(9, 0, 0) +/* tag::reference[] + +*/ // end::reference[] + #endif diff --git a/src/boost/boost/predef/hardware/simd/x86_amd.h b/src/boost/boost/predef/hardware/simd/x86_amd.h index 87792ae44..57cff16d6 100644 --- a/src/boost/boost/predef/hardware/simd/x86_amd.h +++ b/src/boost/boost/predef/hardware/simd/x86_amd.h @@ -12,42 +12,44 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` - [heading `BOOST_HW_SIMD_X86_AMD`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AMD` - The SIMD extension for x86 (AMD) (*if detected*). - Version number depends on the most recent detected extension. +The SIMD extension for x86 (AMD) (*if detected*). +Version number depends on the most recent detected extension. - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SSE4A__`] [__predef_detection__]] +| `+__SSE4A__+` | {predef_detection} - [[`__FMA4__`] [__predef_detection__]] +| `+__FMA4__+` | {predef_detection} - [[`__XOP__`] [__predef_detection__]] +| `+__XOP__+` | {predef_detection} - [[`BOOST_HW_SIMD_X86`] [__predef_detection__]] - ] +| `BOOST_HW_SIMD_X86` | {predef_detection} +|=== - [table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SSE4A__`] [BOOST_HW_SIMD_X86_SSE4A_VERSION]] +| `+__SSE4A__+` | BOOST_HW_SIMD_X86_SSE4A_VERSION - [[`__FMA4__`] [BOOST_HW_SIMD_X86_FMA4_VERSION]] +| `+__FMA4__+` | BOOST_HW_SIMD_X86_FMA4_VERSION - [[`__XOP__`] [BOOST_HW_SIMD_X86_XOP_VERSION]] +| `+__XOP__+` | BOOST_HW_SIMD_X86_XOP_VERSION - [[`BOOST_HW_SIMD_X86`] [BOOST_HW_SIMD_X86]] - ] +| `BOOST_HW_SIMD_X86` | BOOST_HW_SIMD_X86 +|=== - [note This predef includes every other x86 SIMD extensions and also has other - more specific extensions (FMA4, XOP, SSE4a). You should use this predef - instead of `BOOST_HW_SIMD_X86` to test if those specific extensions have - been detected.] +NOTE: This predef includes every other x86 SIMD extensions and also has other +more specific extensions (FMA4, XOP, SSE4a). You should use this predef +instead of `BOOST_HW_SIMD_X86` to test if those specific extensions have +been detected. - */ +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AMD BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/hardware/simd/x86_amd/versions.h b/src/boost/boost/predef/hardware/simd/x86_amd/versions.h index a4a376836..c9d5aa7c7 100644 --- a/src/boost/boost/predef/hardware/simd/x86_amd/versions.h +++ b/src/boost/boost/predef/hardware/simd/x86_amd/versions.h @@ -11,41 +11,46 @@ Distributed under the Boost Software License, Version 1.0. #include -/*` - Those defines represent x86 (AMD specific) SIMD extensions versions. +/* tag::reference[] += `BOOST_HW_SIMD_X86_AMD_*_VERSION` - [note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86_AMD`.] - */ +Those defines represent x86 (AMD specific) SIMD extensions versions. + +NOTE: You *MUST* compare them with the predef `BOOST_HW_SIMD_X86_AMD`. +*/ // end::reference[] // --------------------------------- -/*` - [heading `BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION` - [@https://en.wikipedia.org/wiki/SSE4##SSE4A SSE4A] x86 extension (AMD specific). +https://en.wikipedia.org/wiki/SSE4##SSE4A[SSE4A] x86 extension (AMD specific). - Version number is: *4.0.0*. - */ +Version number is: *4.0.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION BOOST_VERSION_NUMBER(4, 0, 0) -/*` - [heading `BOOST_HW_SIMD_X86_AMD_FMA4_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AMD_FMA4_VERSION` - [@https://en.wikipedia.org/wiki/FMA_instruction_set#FMA4_instruction_set FMA4] x86 extension (AMD specific). +https://en.wikipedia.org/wiki/FMA_instruction_set#FMA4_instruction_set[FMA4] x86 extension (AMD specific). - Version number is: *5.1.0*. - */ +Version number is: *5.1.0*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AMD_FMA4_VERSION BOOST_VERSION_NUMBER(5, 1, 0) -/*` - [heading `BOOST_HW_SIMD_X86_AMD_XOP_VERSION`] +/* tag::reference[] += `BOOST_HW_SIMD_X86_AMD_XOP_VERSION` - [@https://en.wikipedia.org/wiki/XOP_instruction_set XOP] x86 extension (AMD specific). +https://en.wikipedia.org/wiki/XOP_instruction_set[XOP] x86 extension (AMD specific). - Version number is: *5.1.1*. - */ +Version number is: *5.1.1*. +*/ // end::reference[] #define BOOST_HW_SIMD_X86_AMD_XOP_VERSION BOOST_VERSION_NUMBER(5, 1, 1) +/* tag::reference[] + +*/ // end::reference[] #endif diff --git a/src/boost/boost/predef/language/cuda.h b/src/boost/boost/predef/language/cuda.h index fb84672ef..df59f7570 100644 --- a/src/boost/boost/predef/language/cuda.h +++ b/src/boost/boost/predef/language/cuda.h @@ -11,21 +11,22 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LANG_CUDA`] +/* tag::reference[] += `BOOST_LANG_CUDA` -[@https://en.wikipedia.org/wiki/CUDA CUDA C/C++] language. +https://en.wikipedia.org/wiki/CUDA[CUDA C/{CPP}] language. If available, the version is detected as VV.RR.P. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__CUDACC__`] [__predef_detection__]] - [[`__CUDA__`] [__predef_detection__]] +| `+__CUDACC__+` | {predef_detection} +| `+__CUDA__+` | {predef_detection} - [[`CUDA_VERSION`] [VV.RR.P]] - ] - */ +| `CUDA_VERSION` | VV.RR.P +|=== +*/ // end::reference[] #define BOOST_LANG_CUDA BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/language/objc.h b/src/boost/boost/predef/language/objc.h index 9be0ad35a..7923ab971 100644 --- a/src/boost/boost/predef/language/objc.h +++ b/src/boost/boost/predef/language/objc.h @@ -11,17 +11,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LANG_OBJC`] +/* tag::reference[] += `BOOST_LANG_OBJC` -[@http://en.wikipedia.org/wiki/Objective-C Objective-C] language. +http://en.wikipedia.org/wiki/Objective-C[Objective-C] language. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__OBJC__`] [__predef_detection__]] - ] - */ +| `+__OBJC__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_LANG_OBJC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/language/stdc.h b/src/boost/boost/predef/language/stdc.h index deaae2a6a..597050df0 100644 --- a/src/boost/boost/predef/language/stdc.h +++ b/src/boost/boost/predef/language/stdc.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LANG_STDC`] +/* tag::reference[] += `BOOST_LANG_STDC` -[@http://en.wikipedia.org/wiki/C_(programming_language) Standard C] language. -If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date. +http://en.wikipedia.org/wiki/C_(programming_language)[Standard C] language. +If available, the year of the standard is detected as YYYY.MM.1 from the Epoch date. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__STDC__`] [__predef_detection__]] +| `+__STDC__+` | {predef_detection} - [[`__STDC_VERSION__`] [V.R.P]] - ] - */ +| `+__STDC_VERSION__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LANG_STDC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/language/stdcpp.h b/src/boost/boost/predef/language/stdcpp.h index ffccc0faa..521958c6f 100644 --- a/src/boost/boost/predef/language/stdcpp.h +++ b/src/boost/boost/predef/language/stdcpp.h @@ -11,29 +11,34 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LANG_STDCPP`] +/* tag::reference[] += `BOOST_LANG_STDCPP` -[@http://en.wikipedia.org/wiki/C%2B%2B Standard C++] language. -If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date. -Because of the way the C++ standardization process works the +http://en.wikipedia.org/wiki/C%2B%2B[Standard {CPP}] language. +If available, the year of the standard is detected as YYYY.MM.1 from the Epoch date. +Because of the way the {CPP} standardization process works the defined version year will not be the commonly known year of the standard. Specifically the defined versions are: -[table Detected Version Number vs. C++ Standard Year - [[Detected Version Number] [Standard Year] [C++ Standard]] - [[27.11.1] [1998] [ISO/IEC 14882:1998]] - [[41.12.1] [2011] [ISO/IEC 14882:2011]] -] +.Detected Version Number vs. {CPP} Standard Year +[options="header"] +|=== +| Detected Version Number | Standard Year | {CPP} Standard +| 27.11.1 | 1998 | ISO/IEC 14882:1998 +| 41.3.1 | 2011 | ISO/IEC 14882:2011 +| 44.2.1 | 2014 | ISO/IEC 14882:2014 +| 47.3.1 | 2017 | ISO/IEC 14882:2017 +|=== -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__cplusplus`] [__predef_detection__]] +| `+__cplusplus+` | {predef_detection} - [[`__cplusplus`] [YYYY.MM.1]] - ] - */ +| `+__cplusplus+` | YYYY.MM.1 +|=== +*/ // end::reference[] #define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -52,20 +57,21 @@ Specifically the defined versions are: #define BOOST_LANG_STDCPP_NAME "Standard C++" -/*` -[heading `BOOST_LANG_STDCPPCLI`] +/* tag::reference[] += `BOOST_LANG_STDCPPCLI` -[@http://en.wikipedia.org/wiki/C%2B%2B/CLI Standard C++/CLI] language. -If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date. +http://en.wikipedia.org/wiki/C%2B%2B/CLI[Standard {CPP}/CLI] language. +If available, the year of the standard is detected as YYYY.MM.1 from the Epoch date. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__cplusplus_cli`] [__predef_detection__]] +| `+__cplusplus_cli+` | {predef_detection} - [[`__cplusplus_cli`] [YYYY.MM.1]] - ] - */ +| `+__cplusplus_cli+` | YYYY.MM.1 +|=== +*/ // end::reference[] #define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -84,17 +90,18 @@ If available, the year of the standard is detected as YYYY.MM.1 from the Epoc da #define BOOST_LANG_STDCPPCLI_NAME "Standard C++/CLI" -/*` -[heading `BOOST_LANG_STDECPP`] +/* tag::reference[] += `BOOST_LANG_STDECPP` -[@http://en.wikipedia.org/wiki/Embedded_C%2B%2B Standard Embedded C++] language. +http://en.wikipedia.org/wiki/Embedded_C%2B%2B[Standard Embedded {CPP}] language. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__embedded_cplusplus`] [__predef_detection__]] - ] - */ +| `+__embedded_cplusplus+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/c/cloudabi.h b/src/boost/boost/predef/library/c/cloudabi.h index 13c32a63a..2aa400e74 100644 --- a/src/boost/boost/predef/library/c/cloudabi.h +++ b/src/boost/boost/predef/library/c/cloudabi.h @@ -18,20 +18,21 @@ #include #endif -/*` -[heading `BOOST_LIB_C_CLOUDABI`] +/* tag::reference[] += `BOOST_LIB_C_CLOUDABI` -[@https://github.com/NuxiNL/cloudlibc cloudlibc] - CloudABI's standard C library. +https://github.com/NuxiNL/cloudlibc[cloudlibc] - CloudABI's standard C library. Version number available as major, and minor. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__cloudlibc__`] [__predef_detection__]] +| `+__cloudlibc__+` | {predef_detection} - [[`__cloudlibc_major__`, `__cloudlibc_minor__`] [V.R.0]] - ] - */ +| `+__cloudlibc_major__+`, `+__cloudlibc_minor__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_LIB_C_CLOUDABI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/c/gnu.h b/src/boost/boost/predef/library/c/gnu.h index b29ebf110..217fe764f 100644 --- a/src/boost/boost/predef/library/c/gnu.h +++ b/src/boost/boost/predef/library/c/gnu.h @@ -19,22 +19,23 @@ Distributed under the Boost Software License, Version 1.0. #include #endif -/*` -[heading `BOOST_LIB_C_GNU`] +/* tag::reference[] += `BOOST_LIB_C_GNU` -[@http://en.wikipedia.org/wiki/Glibc GNU glibc] Standard C library. +http://en.wikipedia.org/wiki/Glibc[GNU glibc] Standard C library. Version number available as major, and minor. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__GLIBC__`] [__predef_detection__]] - [[`__GNU_LIBRARY__`] [__predef_detection__]] +| `+__GLIBC__+` | {predef_detection} +| `+__GNU_LIBRARY__+` | {predef_detection} - [[`__GLIBC__`, `__GLIBC_MINOR__`] [V.R.0]] - [[`__GNU_LIBRARY__`, `__GNU_LIBRARY_MINOR__`] [V.R.0]] - ] - */ +| `+__GLIBC__+`, `+__GLIBC_MINOR__+` | V.R.0 +| `+__GNU_LIBRARY__+`, `+__GNU_LIBRARY_MINOR__+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_LIB_C_GNU BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/c/uc.h b/src/boost/boost/predef/library/c/uc.h index 74813a452..d208648f0 100644 --- a/src/boost/boost/predef/library/c/uc.h +++ b/src/boost/boost/predef/library/c/uc.h @@ -13,19 +13,20 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_C_UC`] +/* tag::reference[] += `BOOST_LIB_C_UC` -[@http://en.wikipedia.org/wiki/Uclibc uClibc] Standard C library. +http://en.wikipedia.org/wiki/Uclibc[uClibc] Standard C library. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__UCLIBC__`] [__predef_detection__]] +| `+__UCLIBC__+` | {predef_detection} - [[`__UCLIBC_MAJOR__`, `__UCLIBC_MINOR__`, `__UCLIBC_SUBLEVEL__`] [V.R.P]] - ] - */ +| `+__UCLIBC_MAJOR__+`, `+__UCLIBC_MINOR__+`, `+__UCLIBC_SUBLEVEL__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_C_UC BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/c/vms.h b/src/boost/boost/predef/library/c/vms.h index 13e249b71..c638e4427 100644 --- a/src/boost/boost/predef/library/c/vms.h +++ b/src/boost/boost/predef/library/c/vms.h @@ -13,20 +13,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_C_VMS`] +/* tag::reference[] += `BOOST_LIB_C_VMS` VMS libc Standard C library. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__CRTL_VER`] [__predef_detection__]] +| `+__CRTL_VER+` | {predef_detection} - [[`__CRTL_VER`] [V.R.P]] - ] - */ +| `+__CRTL_VER+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_C_VMS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/c/zos.h b/src/boost/boost/predef/library/c/zos.h index 28df0c813..fcb63ac2e 100644 --- a/src/boost/boost/predef/library/c/zos.h +++ b/src/boost/boost/predef/library/c/zos.h @@ -13,21 +13,22 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_C_ZOS`] +/* tag::reference[] += `BOOST_LIB_C_ZOS` z/OS libc Standard C library. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__LIBREL__`] [__predef_detection__]] +| `+__LIBREL__+` | {predef_detection} - [[`__LIBREL__`] [V.R.P]] - [[`__TARGET_LIB__`] [V.R.P]] - ] - */ +| `+__LIBREL__+` | V.R.P +| `+__TARGET_LIB__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_C_ZOS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/std/cxx.h b/src/boost/boost/predef/library/std/cxx.h index 048da5774..7e1667c57 100644 --- a/src/boost/boost/predef/library/std/cxx.h +++ b/src/boost/boost/predef/library/std/cxx.h @@ -13,25 +13,26 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_STD_CXX`] +/* tag::reference[] += `BOOST_LIB_STD_CXX` -[@http://libcxx.llvm.org/ libc++] C++ Standard Library. +http://libcxx.llvm.org/[libc++] {CPP} Standard Library. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_LIBCPP_VERSION`] [__predef_detection__]] +| `+_LIBCPP_VERSION+` | {predef_detection} - [[`_LIBCPP_VERSION`] [V.0.P]] - ] - */ +| `+_LIBCPP_VERSION+` | V.0.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_CXX BOOST_VERSION_NUMBER_NOT_AVAILABLE #if defined(_LIBCPP_VERSION) # undef BOOST_LIB_STD_CXX -# define BOOST_LIB_STD_CXX BOOST_PREDEF_MAKE_10_VPPP(_LIBCPP_VERSION) +# define BOOST_LIB_STD_CXX BOOST_PREDEF_MAKE_10_VVPPP(_LIBCPP_VERSION) #endif #if BOOST_LIB_STD_CXX diff --git a/src/boost/boost/predef/library/std/dinkumware.h b/src/boost/boost/predef/library/std/dinkumware.h index 7bad4a194..1c71a14de 100644 --- a/src/boost/boost/predef/library/std/dinkumware.h +++ b/src/boost/boost/predef/library/std/dinkumware.h @@ -13,21 +13,22 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_STD_DINKUMWARE`] +/* tag::reference[] += `BOOST_LIB_STD_DINKUMWARE` -[@http://en.wikipedia.org/wiki/Dinkumware Dinkumware] Standard C++ Library. +http://en.wikipedia.org/wiki/Dinkumware[Dinkumware] Standard {CPP} Library. If available version number as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_YVALS`, `__IBMCPP__`] [__predef_detection__]] - [[`_CPPLIB_VER`] [__predef_detection__]] +| `+_YVALS+`, `+__IBMCPP__+` | {predef_detection} +| `+_CPPLIB_VER+` | {predef_detection} - [[`_CPPLIB_VER`] [V.R.0]] - ] - */ +| `+_CPPLIB_VER+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_LIB_STD_DINKUMWARE BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/std/libcomo.h b/src/boost/boost/predef/library/std/libcomo.h index d720d8cb9..34e851163 100644 --- a/src/boost/boost/predef/library/std/libcomo.h +++ b/src/boost/boost/predef/library/std/libcomo.h @@ -13,20 +13,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_STD_COMO`] +/* tag::reference[] += `BOOST_LIB_STD_COMO` -[@http://www.comeaucomputing.com/libcomo/ Comeau Computing] Standard C++ Library. +http://www.comeaucomputing.com/libcomo/[Comeau Computing] Standard {CPP} Library. Version number available as major. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__LIBCOMO__`] [__predef_detection__]] +| `+__LIBCOMO__+` | {predef_detection} - [[`__LIBCOMO_VERSION__`] [V.0.0]] - ] - */ +| `+__LIBCOMO_VERSION__+` | V.0.0 +|=== +*/ // end::reference[] #define BOOST_LIB_STD_COMO BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/std/modena.h b/src/boost/boost/predef/library/std/modena.h index d781a96bb..d715312e9 100644 --- a/src/boost/boost/predef/library/std/modena.h +++ b/src/boost/boost/predef/library/std/modena.h @@ -13,18 +13,19 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_STD_MSIPL`] +/* tag::reference[] += `BOOST_LIB_STD_MSIPL` -[@http://modena.us/ Modena Software Lib++] Standard C++ Library. +http://modena.us/[Modena Software Lib++] Standard {CPP} Library. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`MSIPL_COMPILE_H`] [__predef_detection__]] - [[`__MSIPL_COMPILE_H`] [__predef_detection__]] - ] - */ +| `MSIPL_COMPILE_H` | {predef_detection} +| `+__MSIPL_COMPILE_H+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_LIB_STD_MSIPL BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/std/msl.h b/src/boost/boost/predef/library/std/msl.h index df9d443f0..20adadc7e 100644 --- a/src/boost/boost/predef/library/std/msl.h +++ b/src/boost/boost/predef/library/std/msl.h @@ -13,22 +13,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_STD_MSL`] +/* tag::reference[] += `BOOST_LIB_STD_MSL` -[@http://www.freescale.com/ Metrowerks] Standard C++ Library. +http://www.freescale.com/[Metrowerks] Standard {CPP} Library. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MSL_CPP__`] [__predef_detection__]] - [[`__MSL__`] [__predef_detection__]] +| `+__MSL_CPP__+` | {predef_detection} +| `+__MSL__+` | {predef_detection} - [[`__MSL_CPP__`] [V.R.P]] - [[`__MSL__`] [V.R.P]] - ] - */ +| `+__MSL_CPP__+` | V.R.P +| `+__MSL__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_MSL BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/std/roguewave.h b/src/boost/boost/predef/library/std/roguewave.h index 195dc6c70..4ddd81add 100644 --- a/src/boost/boost/predef/library/std/roguewave.h +++ b/src/boost/boost/predef/library/std/roguewave.h @@ -13,21 +13,22 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_STD_RW`] +/* tag::reference[] += `BOOST_LIB_STD_RW` -[@http://stdcxx.apache.org/ Roguewave] Standard C++ library. +http://stdcxx.apache.org/[Roguewave] Standard {CPP} library. If available version number as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__STD_RWCOMPILER_H__`] [__predef_detection__]] - [[`_RWSTD_VER`] [__predef_detection__]] +| `+__STD_RWCOMPILER_H__+` | {predef_detection} +| `+_RWSTD_VER+` | {predef_detection} - [[`_RWSTD_VER`] [V.R.P]] - ] - */ +| `+_RWSTD_VER+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_RW BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/std/sgi.h b/src/boost/boost/predef/library/std/sgi.h index 8483cf3ff..364d5c056 100644 --- a/src/boost/boost/predef/library/std/sgi.h +++ b/src/boost/boost/predef/library/std/sgi.h @@ -13,20 +13,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_STD_SGI`] +/* tag::reference[] += `BOOST_LIB_STD_SGI` -[@http://www.sgi.com/tech/stl/ SGI] Standard C++ library. +http://www.sgi.com/tech/stl/[SGI] Standard {CPP} library. If available version number as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__STL_CONFIG_H`] [__predef_detection__]] +| `+__STL_CONFIG_H+` | {predef_detection} - [[`__SGI_STL`] [V.R.P]] - ] - */ +| `+__SGI_STL+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_SGI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/std/stdcpp3.h b/src/boost/boost/predef/library/std/stdcpp3.h index f929cb71b..9111ce634 100644 --- a/src/boost/boost/predef/library/std/stdcpp3.h +++ b/src/boost/boost/predef/library/std/stdcpp3.h @@ -13,22 +13,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_STD_GNU`] +/* tag::reference[] += `BOOST_LIB_STD_GNU` -[@http://gcc.gnu.org/libstdc++/ GNU libstdc++] Standard C++ library. +https://gcc.gnu.org/onlinedocs/libstdc%2b%2b/[GNU libstdc++] Standard {CPP} library. Version number available as year (from 1970), month, and day. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__GLIBCXX__`] [__predef_detection__]] - [[`__GLIBCPP__`] [__predef_detection__]] +| `+__GLIBCXX__+` | {predef_detection} +| `+__GLIBCPP__+` | {predef_detection} - [[`__GLIBCXX__`] [V.R.P]] - [[`__GLIBCPP__`] [V.R.P]] - ] - */ +| `+__GLIBCXX__+` | V.R.P +| `+__GLIBCPP__+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_GNU BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/std/stlport.h b/src/boost/boost/predef/library/std/stlport.h index 174e9eaaa..b8c5d872c 100644 --- a/src/boost/boost/predef/library/std/stlport.h +++ b/src/boost/boost/predef/library/std/stlport.h @@ -13,23 +13,24 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_STD_STLPORT`] +/* tag::reference[] += `BOOST_LIB_STD_STLPORT` -[@http://sourceforge.net/projects/stlport/ STLport Standard C++] library. +http://sourceforge.net/projects/stlport/[STLport Standard {CPP}] library. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__SGI_STL_PORT`] [__predef_detection__]] - [[`_STLPORT_VERSION`] [__predef_detection__]] +| `+__SGI_STL_PORT+` | {predef_detection} +| `+_STLPORT_VERSION+` | {predef_detection} - [[`_STLPORT_MAJOR`, `_STLPORT_MINOR`, `_STLPORT_PATCHLEVEL`] [V.R.P]] - [[`_STLPORT_VERSION`] [V.R.P]] - [[`__SGI_STL_PORT`] [V.R.P]] - ] - */ +| `+_STLPORT_MAJOR+`, `+_STLPORT_MINOR+`, `+_STLPORT_PATCHLEVEL+` | V.R.P +| `+_STLPORT_VERSION+` | V.R.P +| `+__SGI_STL_PORT+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_LIB_STD_STLPORT BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/library/std/vacpp.h b/src/boost/boost/predef/library/std/vacpp.h index 8a13f8ab2..5e3ab0f25 100644 --- a/src/boost/boost/predef/library/std/vacpp.h +++ b/src/boost/boost/predef/library/std/vacpp.h @@ -13,17 +13,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_LIB_STD_IBM`] +/* tag::reference[] += `BOOST_LIB_STD_IBM` -[@http://www.ibm.com/software/awdtools/xlcpp/ IBM VACPP Standard C++] library. +http://www.ibm.com/software/awdtools/xlcpp/[IBM VACPP Standard {CPP}] library. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__IBMCPP__`] [__predef_detection__]] - ] - */ +| `+__IBMCPP__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_LIB_STD_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/make.h b/src/boost/boost/predef/make.h index 16c18444f..1fda3460a 100644 --- a/src/boost/boost/predef/make.h +++ b/src/boost/boost/predef/make.h @@ -13,8 +13,8 @@ Distributed under the Boost Software License, Version 1.0. Shorthands for the common version number formats used by vendors... */ -/*` -[heading `BOOST_PREDEF_MAKE_..` macros] +/* tag::reference[] += `BOOST_PREDEF_MAKE_..` macros These set of macros decompose common vendor version number macros which are composed version, revision, and patch digits. @@ -27,71 +27,137 @@ The naming convention indicates: indicates an ignored digit. Macros are: -*/ -/*` `BOOST_PREDEF_MAKE_0X_VRP(V)` */ + +*/ // end::reference[] +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VRP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VRP(V) BOOST_VERSION_NUMBER((V&0xF00)>>8,(V&0xF0)>>4,(V&0xF)) -/*` `BOOST_PREDEF_MAKE_0X_VVRP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VVRP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VVRP(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xF0)>>4,(V&0xF)) -/*` `BOOST_PREDEF_MAKE_0X_VRPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VRPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VRPP(V) BOOST_VERSION_NUMBER((V&0xF000)>>12,(V&0xF00)>>8,(V&0xFF)) -/*` `BOOST_PREDEF_MAKE_0X_VVRR(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VVRR(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VVRR(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xFF),0) -/*` `BOOST_PREDEF_MAKE_0X_VRRPPPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VRRPPPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VRRPPPP(V) BOOST_VERSION_NUMBER((V&0xF000000)>>24,(V&0xFF0000)>>16,(V&0xFFFF)) -/*` `BOOST_PREDEF_MAKE_0X_VVRRP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VVRRP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VVRRP(V) BOOST_VERSION_NUMBER((V&0xFF000)>>12,(V&0xFF0)>>4,(V&0xF)) -/*` `BOOST_PREDEF_MAKE_0X_VRRPP000(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VRRPP000(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VRRPP000(V) BOOST_VERSION_NUMBER((V&0xF0000000)>>28,(V&0xFF00000)>>20,(V&0xFF000)>>12) -/*` `BOOST_PREDEF_MAKE_0X_VVRRPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_0X_VVRRPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_0X_VVRRPP(V) BOOST_VERSION_NUMBER((V&0xFF0000)>>16,(V&0xFF00)>>8,(V&0xFF)) -/*` `BOOST_PREDEF_MAKE_10_VPPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VPPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,0,(V)%1000) -/*` `BOOST_PREDEF_MAKE_10_VR0(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVPPP(V)` +*/ // end::reference[] +#define BOOST_PREDEF_MAKE_10_VVPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%100,0,(V)%1000) +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VR0(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VR0(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,0) -/*` `BOOST_PREDEF_MAKE_10_VRP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRP(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,(V)%10) -/*` `BOOST_PREDEF_MAKE_10_VRP000(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRP000(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRP000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,((V)/1000)%10) -/*` `BOOST_PREDEF_MAKE_10_VRPPPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRPPPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRPPPP(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,(V)%10000) -/*` `BOOST_PREDEF_MAKE_10_VRPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,((V)/100)%10,(V)%100) -/*` `BOOST_PREDEF_MAKE_10_VRR(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRR(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRR(V) BOOST_VERSION_NUMBER(((V)/100)%10,(V)%100,0) -/*` `BOOST_PREDEF_MAKE_10_VRRPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRRPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%10,((V)/100)%100,(V)%100) -/*` `BOOST_PREDEF_MAKE_10_VRR000(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VRR000(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VRR000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/1000)%100,0) -/*` `BOOST_PREDEF_MAKE_10_VV00(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VV00(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VV00(V) BOOST_VERSION_NUMBER(((V)/100)%100,0,0) -/*` `BOOST_PREDEF_MAKE_10_VVRR(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRR(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0) -/*` `BOOST_PREDEF_MAKE_10_VVRRP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRRP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRRP(V) BOOST_VERSION_NUMBER(((V)/1000)%100,((V)/10)%100,(V)%10) -/*` `BOOST_PREDEF_MAKE_10_VVRRPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRRPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%100,((V)/100)%100,(V)%100) -/*` `BOOST_PREDEF_MAKE_10_VVRRPPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRRPPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRRPPP(V) BOOST_VERSION_NUMBER(((V)/100000)%100,((V)/1000)%100,(V)%1000) -/*` `BOOST_PREDEF_MAKE_10_VVRR0PP00(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRR0PP00(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRR0PP00(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,((V)/100)%100) -/*` `BOOST_PREDEF_MAKE_10_VVRR0PPPP(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRR0PPPP(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRR0PPPP(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,(V)%10000) -/*` `BOOST_PREDEF_MAKE_10_VVRR00PP00(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_10_VVRR00PP00(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_10_VVRR00PP00(V) BOOST_VERSION_NUMBER(((V)/100000000)%100,((V)/1000000)%100,((V)/100)%100) -/*` -[heading `BOOST_PREDEF_MAKE_*..` date macros] + +/* tag::reference[] + += `BOOST_PREDEF_MAKE_*..` date macros Date decomposition macros return a date in the relative to the 1970 Epoch date. If the month is not available, January 1st is used as the month and day. If the day is not available, but the month is, the 1st of the month is used as the day. -*/ -/*` `BOOST_PREDEF_MAKE_DATE(Y,M,D)` */ + +*/ // end::reference[] +/* tag::reference[] +* `BOOST_PREDEF_MAKE_DATE(Y,M,D)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_DATE(Y,M,D) BOOST_VERSION_NUMBER((Y)%10000-1970,(M)%100,(D)%100) -/*` `BOOST_PREDEF_MAKE_YYYYMMDD(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_YYYYMMDD(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_YYYYMMDD(V) BOOST_PREDEF_MAKE_DATE(((V)/10000)%10000,((V)/100)%100,(V)%100) -/*` `BOOST_PREDEF_MAKE_YYYY(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_YYYY(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_YYYY(V) BOOST_PREDEF_MAKE_DATE(V,1,1) -/*` `BOOST_PREDEF_MAKE_YYYYMM(V)` */ +/* tag::reference[] +* `BOOST_PREDEF_MAKE_YYYYMM(V)` +*/ // end::reference[] #define BOOST_PREDEF_MAKE_YYYYMM(V) BOOST_PREDEF_MAKE_DATE((V)/100,(V)%100,1) #endif diff --git a/src/boost/boost/predef/os.h b/src/boost/boost/predef/os.h index dde28dd17..639516093 100644 --- a/src/boost/boost/predef/os.h +++ b/src/boost/boost/predef/os.h @@ -13,7 +13,6 @@ Distributed under the Boost Software License, Version 1.0. #include #include -#include #include #include #include diff --git a/src/boost/boost/predef/os/aix.h b/src/boost/boost/predef/os/aix.h index 50151b469..e1c920246 100644 --- a/src/boost/boost/predef/os/aix.h +++ b/src/boost/boost/predef/os/aix.h @@ -11,24 +11,25 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_AIX`] +/* tag::reference[] += `BOOST_OS_AIX` -[@http://en.wikipedia.org/wiki/AIX_operating_system IBM AIX] operating system. +http://en.wikipedia.org/wiki/AIX_operating_system[IBM AIX] operating system. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`_AIX`] [__predef_detection__]] - [[`__TOS_AIX__`] [__predef_detection__]] +| `+_AIX+` | {predef_detection} +| `+__TOS_AIX__+` | {predef_detection} - [[`_AIX43`] [4.3.0]] - [[`_AIX41`] [4.1.0]] - [[`_AIX32`] [3.2.0]] - [[`_AIX3`] [3.0.0]] - ] - */ +| `+_AIX43+` | 4.3.0 +| `+_AIX41+` | 4.1.0 +| `+_AIX32+` | 3.2.0 +| `+_AIX3+` | 3.0.0 +|=== +*/ // end::reference[] #define BOOST_OS_AIX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/amigaos.h b/src/boost/boost/predef/os/amigaos.h index be4d471cf..ddac8fb5e 100644 --- a/src/boost/boost/predef/os/amigaos.h +++ b/src/boost/boost/predef/os/amigaos.h @@ -11,18 +11,19 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_AMIGAOS`] +/* tag::reference[] += `BOOST_OS_AMIGAOS` -[@http://en.wikipedia.org/wiki/AmigaOS AmigaOS] operating system. +http://en.wikipedia.org/wiki/AmigaOS[AmigaOS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`AMIGA`] [__predef_detection__]] - [[`__amigaos__`] [__predef_detection__]] - ] - */ +| `AMIGA` | {predef_detection} +| `+__amigaos__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_AMIGAOS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/android.h b/src/boost/boost/predef/os/android.h deleted file mode 100644 index 22e4bddbf..000000000 --- a/src/boost/boost/predef/os/android.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -Copyright Rene Rivera 2015 -Distributed under the Boost Software License, Version 1.0. -(See accompanying file LICENSE_1_0.txt or copy at -http://www.boost.org/LICENSE_1_0.txt) -*/ - -#ifndef BOOST_PREDEF_OS_ANDROID_H -#define BOOST_PREDEF_OS_ANDROID_H - -#include -#include - -/*` -[heading `BOOST_OS_ANDROID`] - -[@http://en.wikipedia.org/wiki/Android_%28operating_system%29 Android] operating system. - -[table - [[__predef_symbol__] [__predef_version__]] - - [[`__ANDROID__`] [__predef_detection__]] - ] - */ - -#define BOOST_OS_ANDROID BOOST_VERSION_NUMBER_NOT_AVAILABLE - -#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \ - defined(__ANDROID__) \ - ) -# undef BOOST_OS_ANDROID -# define BOOST_OS_ANDROID BOOST_VERSION_NUMBER_AVAILABLE -#endif - -#if BOOST_OS_ANDROID -# define BOOST_OS_ANDROID_AVAILABLE -# include -#endif - -#define BOOST_OS_ANDROID_NAME "Android" - -#endif - -#include -BOOST_PREDEF_DECLARE_TEST(BOOST_OS_ANDROID,BOOST_OS_ANDROID_NAME) diff --git a/src/boost/boost/predef/os/beos.h b/src/boost/boost/predef/os/beos.h index 44b8fe3f1..bc256bd40 100644 --- a/src/boost/boost/predef/os/beos.h +++ b/src/boost/boost/predef/os/beos.h @@ -11,17 +11,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_BEOS`] +/* tag::reference[] += `BOOST_OS_BEOS` -[@http://en.wikipedia.org/wiki/BeOS BeOS] operating system. +http://en.wikipedia.org/wiki/BeOS[BeOS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__BEOS__`] [__predef_detection__]] - ] - */ +| `+__BEOS__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_BEOS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/bsd.h b/src/boost/boost/predef/os/bsd.h index 020a79871..5940f0a5e 100644 --- a/src/boost/boost/predef/os/bsd.h +++ b/src/boost/boost/predef/os/bsd.h @@ -18,36 +18,37 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_BSD`] +/* tag::reference[] += `BOOST_OS_BSD` -[@http://en.wikipedia.org/wiki/Berkeley_Software_Distribution BSD] operating system. +http://en.wikipedia.org/wiki/Berkeley_Software_Distribution[BSD] operating system. BSD has various branch operating systems possible and each detected individually. This detects the following variations and sets a specific version number macro to match: -* `BOOST_OS_BSD_DRAGONFLY` [@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD] -* `BOOST_OS_BSD_FREE` [@http://en.wikipedia.org/wiki/Freebsd FreeBSD] -* `BOOST_OS_BSD_BSDI` [@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS] -* `BOOST_OS_BSD_NET` [@http://en.wikipedia.org/wiki/Netbsd NetBSD] -* `BOOST_OS_BSD_OPEN` [@http://en.wikipedia.org/wiki/Openbsd OpenBSD] +* `BOOST_OS_BSD_DRAGONFLY` http://en.wikipedia.org/wiki/DragonFly_BSD[DragonFly BSD] +* `BOOST_OS_BSD_FREE` http://en.wikipedia.org/wiki/Freebsd[FreeBSD] +* `BOOST_OS_BSD_BSDI` http://en.wikipedia.org/wiki/BSD/OS[BSDi BSD/OS] +* `BOOST_OS_BSD_NET` http://en.wikipedia.org/wiki/Netbsd[NetBSD] +* `BOOST_OS_BSD_OPEN` http://en.wikipedia.org/wiki/Openbsd[OpenBSD] -[note The general `BOOST_OS_BSD` is set in all cases to indicate some form -of BSD. If the above variants is detected the corresponding macro is also set.] +NOTE: The general `BOOST_OS_BSD` is set in all cases to indicate some form +of BSD. If the above variants is detected the corresponding macro is also set. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`BSD`] [__predef_detection__]] - [[`_SYSTYPE_BSD`] [__predef_detection__]] +| `BSD` | {predef_detection} +| `+_SYSTYPE_BSD+` | {predef_detection} - [[`BSD4_2`] [4.2.0]] - [[`BSD4_3`] [4.3.0]] - [[`BSD4_4`] [4.4.0]] - [[`BSD`] [V.R.0]] - ] - */ +| `BSD4_2` | 4.2.0 +| `BSD4_3` | 4.3.0 +| `BSD4_4` | 4.4.0 +| `BSD` | V.R.0 +|=== +*/ // end::reference[] #include #include @@ -89,7 +90,7 @@ of BSD. If the above variants is detected the corresponding macro is also set.] #define BOOST_OS_BSD_NAME "BSD" -#else +#endif #include #include @@ -97,7 +98,5 @@ of BSD. If the above variants is detected the corresponding macro is also set.] #include #include -#endif - #include BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD,BOOST_OS_BSD_NAME) diff --git a/src/boost/boost/predef/os/bsd/bsdi.h b/src/boost/boost/predef/os/bsd/bsdi.h index 320628c40..18daf51f4 100644 --- a/src/boost/boost/predef/os/bsd/bsdi.h +++ b/src/boost/boost/predef/os/bsd/bsdi.h @@ -10,17 +10,18 @@ Distributed under the Boost Software License, Version 1.0. #include -/*` -[heading `BOOST_OS_BSD_BSDI`] +/* tag::reference[] += `BOOST_OS_BSD_BSDI` -[@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS] operating system. +http://en.wikipedia.org/wiki/BSD/OS[BSDi BSD/OS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__bsdi__`] [__predef_detection__]] - ] - */ +| `+__bsdi__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_BSD_BSDI BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -28,6 +29,7 @@ Distributed under the Boost Software License, Version 1.0. defined(__bsdi__) \ ) # ifndef BOOST_OS_BSD_AVAILABLE +# undef BOOST_OS_BSD # define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE # define BOOST_OS_BSD_AVAILABLE # endif diff --git a/src/boost/boost/predef/os/bsd/dragonfly.h b/src/boost/boost/predef/os/bsd/dragonfly.h index 6e5b2b47a..9063e85e3 100644 --- a/src/boost/boost/predef/os/bsd/dragonfly.h +++ b/src/boost/boost/predef/os/bsd/dragonfly.h @@ -10,17 +10,18 @@ Distributed under the Boost Software License, Version 1.0. #include -/*` -[heading `BOOST_OS_BSD_DRAGONFLY`] +/* tag::reference[] += `BOOST_OS_BSD_DRAGONFLY` -[@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD] operating system. +http://en.wikipedia.org/wiki/DragonFly_BSD[DragonFly BSD] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__DragonFly__`] [__predef_detection__]] - ] - */ +| `+__DragonFly__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_BSD_DRAGONFLY BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -28,6 +29,7 @@ Distributed under the Boost Software License, Version 1.0. defined(__DragonFly__) \ ) # ifndef BOOST_OS_BSD_AVAILABLE +# undef BOOST_OS_BSD # define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE # define BOOST_OS_BSD_AVAILABLE # endif diff --git a/src/boost/boost/predef/os/bsd/free.h b/src/boost/boost/predef/os/bsd/free.h index fc4f97a99..ac39779af 100644 --- a/src/boost/boost/predef/os/bsd/free.h +++ b/src/boost/boost/predef/os/bsd/free.h @@ -10,19 +10,20 @@ Distributed under the Boost Software License, Version 1.0. #include -/*` -[heading `BOOST_OS_BSD_FREE`] +/* tag::reference[] += `BOOST_OS_BSD_FREE` -[@http://en.wikipedia.org/wiki/Freebsd FreeBSD] operating system. +http://en.wikipedia.org/wiki/Freebsd[FreeBSD] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__FreeBSD__`] [__predef_detection__]] +| `+__FreeBSD__+` | {predef_detection} - [[`__FreeBSD_version`] [V.R.P]] - ] - */ +| `+__FreeBSD_version+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_OS_BSD_FREE BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -30,6 +31,7 @@ Distributed under the Boost Software License, Version 1.0. defined(__FreeBSD__) \ ) # ifndef BOOST_OS_BSD_AVAILABLE +# undef BOOST_OS_BSD # define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE # define BOOST_OS_BSD_AVAILABLE # endif diff --git a/src/boost/boost/predef/os/bsd/net.h b/src/boost/boost/predef/os/bsd/net.h index 897076d10..3a589dba9 100644 --- a/src/boost/boost/predef/os/bsd/net.h +++ b/src/boost/boost/predef/os/bsd/net.h @@ -10,24 +10,25 @@ Distributed under the Boost Software License, Version 1.0. #include -/*` -[heading `BOOST_OS_BSD_NET`] +/* tag::reference[] += `BOOST_OS_BSD_NET` -[@http://en.wikipedia.org/wiki/Netbsd NetBSD] operating system. +http://en.wikipedia.org/wiki/Netbsd[NetBSD] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__NETBSD__`] [__predef_detection__]] - [[`__NetBSD__`] [__predef_detection__]] +| `+__NETBSD__+` | {predef_detection} +| `+__NetBSD__+` | {predef_detection} - [[`__NETBSD_version`] [V.R.P]] - [[`NetBSD0_8`] [0.8.0]] - [[`NetBSD0_9`] [0.9.0]] - [[`NetBSD1_0`] [1.0.0]] - [[`__NetBSD_Version`] [V.R.P]] - ] - */ +| `+__NETBSD_version+` | V.R.P +| `NetBSD0_8` | 0.8.0 +| `NetBSD0_9` | 0.9.0 +| `NetBSD1_0` | 1.0.0 +| `+__NetBSD_Version+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -35,6 +36,7 @@ Distributed under the Boost Software License, Version 1.0. defined(__NETBSD__) || defined(__NetBSD__) \ ) # ifndef BOOST_OS_BSD_AVAILABLE +# undef BOOST_OS_BSD # define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE # define BOOST_OS_BSD_AVAILABLE # endif @@ -76,7 +78,7 @@ Distributed under the Boost Software License, Version 1.0. # include #endif -#define BOOST_OS_BSD_NET_NAME "DragonFly BSD" +#define BOOST_OS_BSD_NET_NAME "NetBSD" #endif diff --git a/src/boost/boost/predef/os/bsd/open.h b/src/boost/boost/predef/os/bsd/open.h index f3efb7411..612982ca1 100644 --- a/src/boost/boost/predef/os/bsd/open.h +++ b/src/boost/boost/predef/os/bsd/open.h @@ -10,68 +10,69 @@ Distributed under the Boost Software License, Version 1.0. #include -/*` -[heading `BOOST_OS_BSD_OPEN`] +/* tag::reference[] += `BOOST_OS_BSD_OPEN` -[@http://en.wikipedia.org/wiki/Openbsd OpenBSD] operating system. +http://en.wikipedia.org/wiki/Openbsd[OpenBSD] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__OpenBSD__`] [__predef_detection__]] +| `+__OpenBSD__+` | {predef_detection} - [[`OpenBSD2_0`] [2.0.0]] - [[`OpenBSD2_1`] [2.1.0]] - [[`OpenBSD2_2`] [2.2.0]] - [[`OpenBSD2_3`] [2.3.0]] - [[`OpenBSD2_4`] [2.4.0]] - [[`OpenBSD2_5`] [2.5.0]] - [[`OpenBSD2_6`] [2.6.0]] - [[`OpenBSD2_7`] [2.7.0]] - [[`OpenBSD2_8`] [2.8.0]] - [[`OpenBSD2_9`] [2.9.0]] - [[`OpenBSD3_0`] [3.0.0]] - [[`OpenBSD3_1`] [3.1.0]] - [[`OpenBSD3_2`] [3.2.0]] - [[`OpenBSD3_3`] [3.3.0]] - [[`OpenBSD3_4`] [3.4.0]] - [[`OpenBSD3_5`] [3.5.0]] - [[`OpenBSD3_6`] [3.6.0]] - [[`OpenBSD3_7`] [3.7.0]] - [[`OpenBSD3_8`] [3.8.0]] - [[`OpenBSD3_9`] [3.9.0]] - [[`OpenBSD4_0`] [4.0.0]] - [[`OpenBSD4_1`] [4.1.0]] - [[`OpenBSD4_2`] [4.2.0]] - [[`OpenBSD4_3`] [4.3.0]] - [[`OpenBSD4_4`] [4.4.0]] - [[`OpenBSD4_5`] [4.5.0]] - [[`OpenBSD4_6`] [4.6.0]] - [[`OpenBSD4_7`] [4.7.0]] - [[`OpenBSD4_8`] [4.8.0]] - [[`OpenBSD4_9`] [4.9.0]] - [[`OpenBSD5_0`] [5.0.0]] - [[`OpenBSD5_1`] [5.1.0]] - [[`OpenBSD5_2`] [5.2.0]] - [[`OpenBSD5_3`] [5.3.0]] - [[`OpenBSD5_4`] [5.4.0]] - [[`OpenBSD5_5`] [5.5.0]] - [[`OpenBSD5_6`] [5.6.0]] - [[`OpenBSD5_7`] [5.7.0]] - [[`OpenBSD5_8`] [5.8.0]] - [[`OpenBSD5_9`] [5.9.0]] - [[`OpenBSD6_0`] [6.0.0]] - [[`OpenBSD6_1`] [6.1.0]] - [[`OpenBSD6_2`] [6.2.0]] - [[`OpenBSD6_3`] [6.3.0]] - [[`OpenBSD6_4`] [6.4.0]] - [[`OpenBSD6_5`] [6.5.0]] - [[`OpenBSD6_6`] [6.6.0]] - [[`OpenBSD6_7`] [6.7.0]] - [[`OpenBSD6_8`] [6.8.0]] - [[`OpenBSD6_9`] [6.9.0]] - ] - */ +| `OpenBSD2_0` | 2.0.0 +| `OpenBSD2_1` | 2.1.0 +| `OpenBSD2_2` | 2.2.0 +| `OpenBSD2_3` | 2.3.0 +| `OpenBSD2_4` | 2.4.0 +| `OpenBSD2_5` | 2.5.0 +| `OpenBSD2_6` | 2.6.0 +| `OpenBSD2_7` | 2.7.0 +| `OpenBSD2_8` | 2.8.0 +| `OpenBSD2_9` | 2.9.0 +| `OpenBSD3_0` | 3.0.0 +| `OpenBSD3_1` | 3.1.0 +| `OpenBSD3_2` | 3.2.0 +| `OpenBSD3_3` | 3.3.0 +| `OpenBSD3_4` | 3.4.0 +| `OpenBSD3_5` | 3.5.0 +| `OpenBSD3_6` | 3.6.0 +| `OpenBSD3_7` | 3.7.0 +| `OpenBSD3_8` | 3.8.0 +| `OpenBSD3_9` | 3.9.0 +| `OpenBSD4_0` | 4.0.0 +| `OpenBSD4_1` | 4.1.0 +| `OpenBSD4_2` | 4.2.0 +| `OpenBSD4_3` | 4.3.0 +| `OpenBSD4_4` | 4.4.0 +| `OpenBSD4_5` | 4.5.0 +| `OpenBSD4_6` | 4.6.0 +| `OpenBSD4_7` | 4.7.0 +| `OpenBSD4_8` | 4.8.0 +| `OpenBSD4_9` | 4.9.0 +| `OpenBSD5_0` | 5.0.0 +| `OpenBSD5_1` | 5.1.0 +| `OpenBSD5_2` | 5.2.0 +| `OpenBSD5_3` | 5.3.0 +| `OpenBSD5_4` | 5.4.0 +| `OpenBSD5_5` | 5.5.0 +| `OpenBSD5_6` | 5.6.0 +| `OpenBSD5_7` | 5.7.0 +| `OpenBSD5_8` | 5.8.0 +| `OpenBSD5_9` | 5.9.0 +| `OpenBSD6_0` | 6.0.0 +| `OpenBSD6_1` | 6.1.0 +| `OpenBSD6_2` | 6.2.0 +| `OpenBSD6_3` | 6.3.0 +| `OpenBSD6_4` | 6.4.0 +| `OpenBSD6_5` | 6.5.0 +| `OpenBSD6_6` | 6.6.0 +| `OpenBSD6_7` | 6.7.0 +| `OpenBSD6_8` | 6.8.0 +| `OpenBSD6_9` | 6.9.0 +|=== +*/ // end::reference[] #define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -79,6 +80,7 @@ Distributed under the Boost Software License, Version 1.0. defined(__OpenBSD__) \ ) # ifndef BOOST_OS_BSD_AVAILABLE +# undef BOOST_OS_BSD # define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE # define BOOST_OS_BSD_AVAILABLE # endif diff --git a/src/boost/boost/predef/os/cygwin.h b/src/boost/boost/predef/os/cygwin.h index 15fe4c81f..836651ee0 100644 --- a/src/boost/boost/predef/os/cygwin.h +++ b/src/boost/boost/predef/os/cygwin.h @@ -11,19 +11,20 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_CYGWIN`] +/* tag::reference[] += `BOOST_OS_CYGWIN` -[@http://en.wikipedia.org/wiki/Cygwin Cygwin] evironment. +http://en.wikipedia.org/wiki/Cygwin[Cygwin] evironment. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__CYGWIN__`] [__predef_detection__]] +| `+__CYGWIN__+` | {predef_detection} - [[`CYGWIN_VERSION_API_MAJOR`, `CYGWIN_VERSION_API_MINOR`] [V.R.0]] - ] - */ +| `CYGWIN_VERSION_API_MAJOR`, `CYGWIN_VERSION_API_MINOR` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_OS_CYGWIN BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/haiku.h b/src/boost/boost/predef/os/haiku.h index 031a03c62..002dcfe71 100644 --- a/src/boost/boost/predef/os/haiku.h +++ b/src/boost/boost/predef/os/haiku.h @@ -12,17 +12,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_HAIKU`] +/* tag::reference[] += `BOOST_OS_HAIKU` -[@http://en.wikipedia.org/wiki/Haiku_(operating_system) Haiku] operating system. +http://en.wikipedia.org/wiki/Haiku_(operating_system)[Haiku] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__HAIKU__`] [__predef_detection__]] - ] - */ +| `+__HAIKU__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_HAIKU BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/hpux.h b/src/boost/boost/predef/os/hpux.h index 91a5f2166..31a677e42 100644 --- a/src/boost/boost/predef/os/hpux.h +++ b/src/boost/boost/predef/os/hpux.h @@ -11,19 +11,20 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_HPUX`] +/* tag::reference[] += `BOOST_OS_HPUX` -[@http://en.wikipedia.org/wiki/HP-UX HP-UX] operating system. +http://en.wikipedia.org/wiki/HP-UX[HP-UX] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`hpux`] [__predef_detection__]] - [[`_hpux`] [__predef_detection__]] - [[`__hpux`] [__predef_detection__]] - ] - */ +| `hpux` | {predef_detection} +| `+_hpux+` | {predef_detection} +| `+__hpux+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_HPUX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/ios.h b/src/boost/boost/predef/os/ios.h index 96f5a0b35..89a941b3c 100644 --- a/src/boost/boost/predef/os/ios.h +++ b/src/boost/boost/predef/os/ios.h @@ -12,21 +12,22 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_IOS`] +/* tag::reference[] += `BOOST_OS_IOS` -[@http://en.wikipedia.org/wiki/iOS iOS] operating system. +http://en.wikipedia.org/wiki/iOS[iOS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__APPLE__`] [__predef_detection__]] - [[`__MACH__`] [__predef_detection__]] - [[`__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__`] [__predef_detection__]] +| `+__APPLE__+` | {predef_detection} +| `+__MACH__+` | {predef_detection} +| `+__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__+` | {predef_detection} - [[`__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__`] [__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__*1000]] - ] - */ +| `+__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__+` | +__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__+*1000 +|=== +*/ // end::reference[] #define BOOST_OS_IOS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/irix.h b/src/boost/boost/predef/os/irix.h index c0f8f3674..9a10ac6f2 100644 --- a/src/boost/boost/predef/os/irix.h +++ b/src/boost/boost/predef/os/irix.h @@ -11,18 +11,19 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_IRIX`] +/* tag::reference[] += `BOOST_OS_IRIX` -[@http://en.wikipedia.org/wiki/Irix IRIX] operating system. +http://en.wikipedia.org/wiki/Irix[IRIX] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`sgi`] [__predef_detection__]] - [[`__sgi`] [__predef_detection__]] - ] - */ +| `sgi` | {predef_detection} +| `+__sgi+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_IRIX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/linux.h b/src/boost/boost/predef/os/linux.h index 7bd7b38ee..82a79fcfb 100644 --- a/src/boost/boost/predef/os/linux.h +++ b/src/boost/boost/predef/os/linux.h @@ -11,23 +11,27 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_LINUX`] +/* tag::reference[] += `BOOST_OS_LINUX` -[@http://en.wikipedia.org/wiki/Linux Linux] operating system. +http://en.wikipedia.org/wiki/Linux[Linux] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`linux`] [__predef_detection__]] - [[`__linux`] [__predef_detection__]] - ] - */ +| `linux` | {predef_detection} +| `+__linux+` | {predef_detection} +| `+__linux__+` | {predef_detection} +| `+__gnu_linux__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_LINUX BOOST_VERSION_NUMBER_NOT_AVAILABLE #if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \ - defined(linux) || defined(__linux) \ + defined(linux) || defined(__linux) || \ + defined(__linux__) || defined(__gnu_linux__) \ ) # undef BOOST_OS_LINUX # define BOOST_OS_LINUX BOOST_VERSION_NUMBER_AVAILABLE diff --git a/src/boost/boost/predef/os/macos.h b/src/boost/boost/predef/os/macos.h index 33883e6bd..de8594fd5 100644 --- a/src/boost/boost/predef/os/macos.h +++ b/src/boost/boost/predef/os/macos.h @@ -19,23 +19,24 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_MACOS`] +/* tag::reference[] += `BOOST_OS_MACOS` -[@http://en.wikipedia.org/wiki/Mac_OS Mac OS] operating system. +http://en.wikipedia.org/wiki/Mac_OS[Mac OS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`macintosh`] [__predef_detection__]] - [[`Macintosh`] [__predef_detection__]] - [[`__APPLE__`] [__predef_detection__]] - [[`__MACH__`] [__predef_detection__]] +| `macintosh` | {predef_detection} +| `Macintosh` | {predef_detection} +| `+__APPLE__+` | {predef_detection} +| `+__MACH__+` | {predef_detection} - [[`__APPLE__`, `__MACH__`] [10.0.0]] - [[ /otherwise/ ] [9.0.0]] - ] - */ +| `+__APPLE__+`, `+__MACH__+` | 10.0.0 +| `_otherwise_` | 9.0.0 +|=== +*/ // end::reference[] #define BOOST_OS_MACOS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/os400.h b/src/boost/boost/predef/os/os400.h index 93e8aa88f..3631e0af0 100644 --- a/src/boost/boost/predef/os/os400.h +++ b/src/boost/boost/predef/os/os400.h @@ -11,17 +11,18 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_OS400`] +/* tag::reference[] += `BOOST_OS_OS400` -[@http://en.wikipedia.org/wiki/IBM_i IBM OS/400] operating system. +http://en.wikipedia.org/wiki/IBM_i[IBM OS/400] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__OS400__`] [__predef_detection__]] - ] - */ +| `+__OS400__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_OS400 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/qnxnto.h b/src/boost/boost/predef/os/qnxnto.h index 2dc539e3d..e67c98fae 100644 --- a/src/boost/boost/predef/os/qnxnto.h +++ b/src/boost/boost/predef/os/qnxnto.h @@ -11,23 +11,24 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_QNX`] +/* tag::reference[] += `BOOST_OS_QNX` -[@http://en.wikipedia.org/wiki/QNX QNX] operating system. +http://en.wikipedia.org/wiki/QNX[QNX] operating system. Version number available as major, and minor if possible. And version 4 is specifically detected. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__QNX__`] [__predef_detection__]] - [[`__QNXNTO__`] [__predef_detection__]] +| `+__QNX__+` | {predef_detection} +| `+__QNXNTO__+` | {predef_detection} - [[`_NTO_VERSION`] [V.R.0]] - [[`__QNX__`] [4.0.0]] - ] - */ +| `+_NTO_VERSION+` | V.R.0 +| `+__QNX__+` | 4.0.0 +|=== +*/ // end::reference[] #define BOOST_OS_QNX BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/solaris.h b/src/boost/boost/predef/os/solaris.h index d668ba9bc..0194083cc 100644 --- a/src/boost/boost/predef/os/solaris.h +++ b/src/boost/boost/predef/os/solaris.h @@ -11,18 +11,19 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_SOLARIS`] +/* tag::reference[] += `BOOST_OS_SOLARIS` -[@http://en.wikipedia.org/wiki/Solaris_Operating_Environment Solaris] operating system. +http://en.wikipedia.org/wiki/Solaris_Operating_Environment[Solaris] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`sun`] [__predef_detection__]] - [[`__sun`] [__predef_detection__]] - ] - */ +| `sun` | {predef_detection} +| `+__sun+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_SOLARIS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/unix.h b/src/boost/boost/predef/os/unix.h index 12eff4c0b..de13a6645 100644 --- a/src/boost/boost/predef/os/unix.h +++ b/src/boost/boost/predef/os/unix.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_UNIX`] +/* tag::reference[] += `BOOST_OS_UNIX` -[@http://en.wikipedia.org/wiki/Unix Unix Environment] operating system. +http://en.wikipedia.org/wiki/Unix[Unix Environment] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`unix`] [__predef_detection__]] - [[`__unix`] [__predef_detection__]] - [[`_XOPEN_SOURCE`] [__predef_detection__]] - [[`_POSIX_SOURCE`] [__predef_detection__]] - ] - */ +| `unix` | {predef_detection} +| `+__unix+` | {predef_detection} +| `+_XOPEN_SOURCE+` | {predef_detection} +| `+_POSIX_SOURCE+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_UNIX BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -40,20 +41,21 @@ Distributed under the Boost Software License, Version 1.0. #define BOOST_OS_UNIX_NAME "Unix Environment" -/*` -[heading `BOOST_OS_SVR4`] +/* tag::reference[] += `BOOST_OS_SVR4` -[@http://en.wikipedia.org/wiki/UNIX_System_V SVR4 Environment] operating system. +http://en.wikipedia.org/wiki/UNIX_System_V[SVR4 Environment] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__sysv__`] [__predef_detection__]] - [[`__SVR4`] [__predef_detection__]] - [[`__svr4__`] [__predef_detection__]] - [[`_SYSTYPE_SVR4`] [__predef_detection__]] - ] - */ +| `+__sysv__+` | {predef_detection} +| `+__SVR4+` | {predef_detection} +| `+__svr4__+` | {predef_detection} +| `+_SYSTYPE_SVR4+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_SVR4 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/vms.h b/src/boost/boost/predef/os/vms.h index ad1859185..c24daa94b 100644 --- a/src/boost/boost/predef/os/vms.h +++ b/src/boost/boost/predef/os/vms.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_VMS`] +/* tag::reference[] += `BOOST_OS_VMS` -[@http://en.wikipedia.org/wiki/Vms VMS] operating system. +http://en.wikipedia.org/wiki/Vms[VMS] operating system. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`VMS`] [__predef_detection__]] - [[`__VMS`] [__predef_detection__]] +| `VMS` | {predef_detection} +| `+__VMS+` | {predef_detection} - [[`__VMS_VER`] [V.R.P]] - ] - */ +| `+__VMS_VER+` | V.R.P +|=== +*/ // end::reference[] #define BOOST_OS_VMS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/os/windows.h b/src/boost/boost/predef/os/windows.h index ef3ef6be9..304063540 100644 --- a/src/boost/boost/predef/os/windows.h +++ b/src/boost/boost/predef/os/windows.h @@ -11,21 +11,22 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_OS_WINDOWS`] - -[@http://en.wikipedia.org/wiki/Category:Microsoft_Windows Microsoft Windows] operating system. - -[table - [[__predef_symbol__] [__predef_version__]] - - [[`_WIN32`] [__predef_detection__]] - [[`_WIN64`] [__predef_detection__]] - [[`__WIN32__`] [__predef_detection__]] - [[`__TOS_WIN__`] [__predef_detection__]] - [[`__WINDOWS__`] [__predef_detection__]] - ] - */ +/* tag::reference[] += `BOOST_OS_WINDOWS` + +http://en.wikipedia.org/wiki/Category:Microsoft_Windows[Microsoft Windows] operating system. + +[options="header"] +|=== +| {predef_symbol} | {predef_version} + +| `+_WIN32+` | {predef_detection} +| `+_WIN64+` | {predef_detection} +| `+__WIN32__+` | {predef_detection} +| `+__TOS_WIN__+` | {predef_detection} +| `+__WINDOWS__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_OS_WINDOWS BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/other.h b/src/boost/boost/predef/other.h index 874aaaf7c..3ee231b4c 100644 --- a/src/boost/boost/predef/other.h +++ b/src/boost/boost/predef/other.h @@ -1,5 +1,5 @@ /* -Copyright Rene Rivera 2013-2015 +Copyright Rene Ferdinand Rivera Morell 2013-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) @@ -11,6 +11,7 @@ Distributed under the Boost Software License, Version 1.0. #endif #include -/*#include */ +#include +#include #endif diff --git a/src/boost/boost/predef/other/endian.h b/src/boost/boost/predef/other/endian.h index 3adab8b0f..3fb0e0a38 100644 --- a/src/boost/boost/predef/other/endian.h +++ b/src/boost/boost/predef/other/endian.h @@ -13,10 +13,10 @@ Distributed under the Boost Software License, Version 1.0. #include #include #include -#include +#include -/*` -[heading `BOOST_ENDIAN_*`] +/* tag::reference[] += `BOOST_ENDIAN_*` Detection of endian memory ordering. There are four defined macros in this header that define the various generally possible endian @@ -37,12 +37,12 @@ programatic bi-endianness is available. This implementation is a compilation of various publicly available information and acquired knowledge: -# The indispensable documentation of "Pre-defined Compiler Macros" - [@http://sourceforge.net/p/predef/wiki/Endianness Endianness]. -# The various endian specifications available in the - [@http://wikipedia.org/ Wikipedia] computer architecture pages. -# Generally available searches for headers that define endianness. - */ +. The indispensable documentation of "Pre-defined Compiler Macros" + http://sourceforge.net/p/predef/wiki/Endianness[Endianness]. +. The various endian specifications available in the + http://wikipedia.org/[Wikipedia] computer architecture pages. +. Generally available searches for headers that define endianness. +*/ // end::reference[] #define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_NOT_AVAILABLE #define BOOST_ENDIAN_BIG_WORD BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -54,18 +54,14 @@ information and acquired knowledge: */ #if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD -# if BOOST_LIB_C_GNU || BOOST_OS_ANDROID +# if BOOST_LIB_C_GNU || BOOST_PLAT_ANDROID || BOOST_OS_BSD_OPEN # include # else # if BOOST_OS_MACOS # include # else # if BOOST_OS_BSD -# if BOOST_OS_BSD_OPEN -# include -# else -# include -# endif +# include # endif # endif # endif @@ -99,7 +95,7 @@ information and acquired knowledge: # endif #endif -/* Built-in byte-swpped big-endian macros. +/* Built-in byte-swapped big-endian macros. */ #if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD @@ -116,7 +112,7 @@ information and acquired knowledge: # endif #endif -/* Built-in byte-swpped little-endian macros. +/* Built-in byte-swapped little-endian macros. */ #if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD @@ -125,9 +121,12 @@ information and acquired knowledge: defined(__ARMEL__) || \ defined(__THUMBEL__) || \ defined(__AARCH64EL__) || \ + defined(__loongarch__) || \ defined(_MIPSEL) || \ defined(__MIPSEL) || \ - defined(__MIPSEL__) + defined(__MIPSEL__) || \ + defined(__riscv) || \ + defined(__e2k__) # undef BOOST_ENDIAN_LITTLE_BYTE # define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE # endif @@ -157,7 +156,7 @@ information and acquired knowledge: #endif /* Windows on ARM, if not otherwise detected/specified, is always - * byte-swaped little-endian. + * byte-swapped little-endian. */ #if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \ !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD diff --git a/src/boost/boost/predef/other/wordsize.h b/src/boost/boost/predef/other/wordsize.h new file mode 100644 index 000000000..521a14a5a --- /dev/null +++ b/src/boost/boost/predef/other/wordsize.h @@ -0,0 +1,73 @@ +/* +Copyright Rene Ferdinand Rivera Morell 2020-2021 +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +#ifndef BOOST_PREDEF_OTHER_WORD_SIZE_H +#define BOOST_PREDEF_OTHER_WORD_SIZE_H + +#include +#include +#include + +/* tag::reference[] += `BOOST_ARCH_WORD_BITS` + +Detects the native word size, in bits, for the current architecture. There are +two types of macros for this detection: + +* `BOOST_ARCH_WORD_BITS`, gives the number of word size bits + (16, 32, 64). +* `BOOST_ARCH_WORD_BITS_16`, `BOOST_ARCH_WORD_BITS_32`, and + `BOOST_ARCH_WORD_BITS_64`, indicate when the given word size is + detected. + +They allow for both single checks and direct use of the size in code. + +NOTE: The word size is determined manually on each architecture. Hence use of +the `wordsize.h` header will also include all the architecture headers. + +*/ // end::reference[] + +#if !defined(BOOST_ARCH_WORD_BITS_64) +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE +#elif !defined(BOOST_ARCH_WORD_BITS) +# define BOOST_ARCH_WORD_BITS 64 +#endif + +#if !defined(BOOST_ARCH_WORD_BITS_32) +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE +#elif !defined(BOOST_ARCH_WORD_BITS) +# define BOOST_ARCH_WORD_BITS 32 +#endif + +#if !defined(BOOST_ARCH_WORD_BITS_16) +# define BOOST_ARCH_WORD_BITS_16 BOOST_VERSION_NUMBER_NOT_AVAILABLE +#elif !defined(BOOST_ARCH_WORD_BITS) +# define BOOST_ARCH_WORD_BITS 16 +#endif + +#if !defined(BOOST_ARCH_WORD_BITS) +# define BOOST_ARCH_WORD_BITS 0 +#endif + +#define BOOST_ARCH_WORD_BITS_NAME "Word Bits" +#define BOOST_ARCH_WORD_BITS_16_NAME "16-bit Word Size" +#define BOOST_ARCH_WORD_BITS_32_NAME "32-bit Word Size" +#define BOOST_ARCH_WORD_BITS_64_NAME "64-bit Word Size" + +#endif + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_WORD_BITS,BOOST_ARCH_WORD_BITS_NAME) + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_WORD_BITS_16,BOOST_ARCH_WORD_BITS_16_NAME) + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_WORD_BITS_32,BOOST_ARCH_WORD_BITS_32_NAME) + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_WORD_BITS_64,BOOST_ARCH_WORD_BITS_64_NAME) diff --git a/src/boost/boost/predef/other/workaround.h b/src/boost/boost/predef/other/workaround.h new file mode 100644 index 000000000..e769465c6 --- /dev/null +++ b/src/boost/boost/predef/other/workaround.h @@ -0,0 +1,95 @@ +/* +Copyright Rene Rivera 2017 +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +#ifndef BOOST_PREDEF_WORKAROUND_H +#define BOOST_PREDEF_WORKAROUND_H + +/* tag::reference[] + += `BOOST_PREDEF_WORKAROUND` + +[source] +---- +BOOST_PREDEF_WORKAROUND(symbol,comp,major,minor,patch) +---- + +Usage: + +[source] +---- +#if BOOST_PREDEF_WORKAROUND(BOOST_COMP_CLANG,<,3,0,0) + // Workaround for old clang compilers.. +#endif +---- + +Defines a comparison against two version numbers that depends on the definion +of `BOOST_STRICT_CONFIG`. When `BOOST_STRICT_CONFIG` is defined this will expand +to a value convertible to `false`. Which has the effect of disabling all code +conditionally guarded by `BOOST_PREDEF_WORKAROUND`. When `BOOST_STRICT_CONFIG` +is undefine this expand to test the given `symbol` version value with the +`comp` comparison against `BOOST_VERSION_NUMBER(major,minor,patch)`. + +*/ // end::reference[] +#ifdef BOOST_STRICT_CONFIG +# define BOOST_PREDEF_WORKAROUND(symbol, comp, major, minor, patch) (0) +#else +# include +# define BOOST_PREDEF_WORKAROUND(symbol, comp, major, minor, patch) \ + ( (symbol) != (0) ) && \ + ( (symbol) comp (BOOST_VERSION_NUMBER( (major) , (minor) , (patch) )) ) +#endif + +/* tag::reference[] + += `BOOST_PREDEF_TESTED_AT` + +[source] +---- +BOOST_PREDEF_TESTED_AT(symbol,major,minor,patch) +---- + +Usage: + +[source] +---- +#if BOOST_PREDEF_TESTED_AT(BOOST_COMP_CLANG,3,5,0) + // Needed for clang, and last checked for 3.5.0. +#endif +---- + +Defines a comparison against two version numbers that depends on the definion +of `BOOST_STRICT_CONFIG` and `BOOST_DETECT_OUTDATED_WORKAROUNDS`. +When `BOOST_STRICT_CONFIG` is defined this will expand to a value convertible +to `false`. Which has the effect of disabling all code +conditionally guarded by `BOOST_PREDEF_TESTED_AT`. When `BOOST_STRICT_CONFIG` +is undefined this expand to either: + +* A value convertible to `true` when `BOOST_DETECT_OUTDATED_WORKAROUNDS` is not + defined. +* A value convertible `true` when the expansion of + `BOOST_PREDEF_WORKAROUND(symbol, <=, major, minor, patch)` is `true` and + `BOOST_DETECT_OUTDATED_WORKAROUNDS` is defined. +* A compile error when the expansion of + `BOOST_PREDEF_WORKAROUND(symbol, >, major, minor, patch)` is true and + `BOOST_DETECT_OUTDATED_WORKAROUNDS` is defined. + +*/ // end::reference[] +#ifdef BOOST_STRICT_CONFIG +# define BOOST_PREDEF_TESTED_AT(symbol, major, minor, patch) (0) +#else +# ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS +# define BOOST_PREDEF_TESTED_AT(symbol, major, minor, patch) ( \ + BOOST_PREDEF_WORKAROUND(symbol, <=, major, minor, patch) \ + ? 1 \ + : (1%0) ) +# else +# define BOOST_PREDEF_TESTED_AT(symbol, major, minor, patch) \ + ( (symbol) >= BOOST_VERSION_NUMBER_AVAILABLE ) +# endif +#endif + +#endif diff --git a/src/boost/boost/predef/platform.h b/src/boost/boost/predef/platform.h index 9bf8dd91b..19ed5b593 100644 --- a/src/boost/boost/predef/platform.h +++ b/src/boost/boost/predef/platform.h @@ -11,6 +11,7 @@ Distributed under the Boost Software License, Version 1.0. #define BOOST_PREDEF_PLATFORM_H #endif +#include #include #include #include @@ -23,6 +24,5 @@ Distributed under the Boost Software License, Version 1.0. #include #include // deprecated #include -/*#include */ #endif diff --git a/src/boost/boost/predef/platform/android.h b/src/boost/boost/predef/platform/android.h new file mode 100644 index 000000000..3a9212e3c --- /dev/null +++ b/src/boost/boost/predef/platform/android.h @@ -0,0 +1,44 @@ +/* +Copyright Rene Rivera 2015-2019 +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +#ifndef BOOST_PREDEF_PLAT_ANDROID_H +#define BOOST_PREDEF_PLAT_ANDROID_H + +#include +#include + +/* tag::reference[] += `BOOST_PLAT_ANDROID` + +http://en.wikipedia.org/wiki/Android_%28operating_system%29[Android] platform. + +[options="header"] +|=== +| {predef_symbol} | {predef_version} + +| `+__ANDROID__+` | {predef_detection} +|=== +*/ // end::reference[] + +#define BOOST_PLAT_ANDROID BOOST_VERSION_NUMBER_NOT_AVAILABLE + +#if defined(__ANDROID__) +# undef BOOST_PLAT_ANDROID +# define BOOST_PLAT_ANDROID BOOST_VERSION_NUMBER_AVAILABLE +#endif + +#if BOOST_PLAT_ANDROID +# define BOOST_PLAT_ANDROID_AVAILABLE +# include +#endif + +#define BOOST_PLAT_ANDROID_NAME "Android" + +#endif + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_ANDROID,BOOST_PLAT_ANDROID_NAME) diff --git a/src/boost/boost/predef/platform/cloudabi.h b/src/boost/boost/predef/platform/cloudabi.h index 08aeb29d2..314713c8e 100644 --- a/src/boost/boost/predef/platform/cloudabi.h +++ b/src/boost/boost/predef/platform/cloudabi.h @@ -11,17 +11,18 @@ #include #include -/*` -[heading `BOOST_PLAT_CLOUDABI`] +/* tag::reference[] += `BOOST_PLAT_CLOUDABI` -[@https://github.com/NuxiNL/cloudabi CloudABI] platform. +https://github.com/NuxiNL/cloudabi[CloudABI] platform. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__CloudABI__`] [__predef_detection__]] - ] - */ +| `+__CloudABI__+` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_CLOUDABI BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/platform/ios.h b/src/boost/boost/predef/platform/ios.h index 574a6e838..675674e92 100644 --- a/src/boost/boost/predef/platform/ios.h +++ b/src/boost/boost/predef/platform/ios.h @@ -12,16 +12,18 @@ Distributed under the Boost Software License, Version 1.0. #include // BOOST_OS_IOS #include // BOOST_VERSION_NUMBER_NOT_AVAILABLE -/*` -[heading `BOOST_PLAT_IOS_DEVICE`] -[heading `BOOST_PLAT_IOS_SIMULATOR`] +/* tag::reference[] += `BOOST_PLAT_IOS_DEVICE` += `BOOST_PLAT_IOS_SIMULATOR` -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`TARGET_IPHONE_SIMULATOR`] [__predef_detection__]] - ] - */ +| `TARGET_IPHONE_SIMULATOR` | {predef_detection} +| `TARGET_OS_SIMULATOR` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_IOS_DEVICE BOOST_VERSION_NUMBER_NOT_AVAILABLE #define BOOST_PLAT_IOS_SIMULATOR BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -29,7 +31,10 @@ Distributed under the Boost Software License, Version 1.0. // https://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/TargetConditionals.h #if BOOST_OS_IOS # include -# if TARGET_IPHONE_SIMULATOR == 1 +# if defined(TARGET_OS_SIMULATOR) && (TARGET_OS_SIMULATOR == 1) +# undef BOOST_PLAT_IOS_SIMULATOR +# define BOOST_PLAT_IOS_SIMULATOR BOOST_VERSION_NUMBER_AVAILABLE +# elif defined(TARGET_IPHONE_SIMULATOR) && (TARGET_IPHONE_SIMULATOR == 1) # undef BOOST_PLAT_IOS_SIMULATOR # define BOOST_PLAT_IOS_SIMULATOR BOOST_VERSION_NUMBER_AVAILABLE # else diff --git a/src/boost/boost/predef/platform/mingw.h b/src/boost/boost/predef/platform/mingw.h index 34b753de2..25b2dcee8 100644 --- a/src/boost/boost/predef/platform/mingw.h +++ b/src/boost/boost/predef/platform/mingw.h @@ -11,22 +11,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_PLAT_MINGW`] +/* tag::reference[] += `BOOST_PLAT_MINGW` -[@http://en.wikipedia.org/wiki/MinGW MinGW] platform, either variety. +http://en.wikipedia.org/wiki/MinGW[MinGW] platform, either variety. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MINGW32__`] [__predef_detection__]] - [[`__MINGW64__`] [__predef_detection__]] +| `+__MINGW32__+` | {predef_detection} +| `+__MINGW64__+` | {predef_detection} - [[`__MINGW64_VERSION_MAJOR`, `__MINGW64_VERSION_MINOR`] [V.R.0]] - [[`__MINGW32_VERSION_MAJOR`, `__MINGW32_VERSION_MINOR`] [V.R.0]] - ] - */ +| `+__MINGW64_VERSION_MAJOR+`, `+__MINGW64_VERSION_MINOR+` | V.R.0 +| `+__MINGW32_VERSION_MAJOR+`, `+__MINGW32_VERSION_MINOR+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_PLAT_MINGW BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/platform/mingw32.h b/src/boost/boost/predef/platform/mingw32.h index 75e2b0b2d..f1e2c146a 100644 --- a/src/boost/boost/predef/platform/mingw32.h +++ b/src/boost/boost/predef/platform/mingw32.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_PLAT_MINGW32`] +/* tag::reference[] += `BOOST_PLAT_MINGW32` -[@http://www.mingw.org/ MinGW] platform. +http://www.mingw.org/[MinGW] platform. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MINGW32__`] [__predef_detection__]] +| `+__MINGW32__+` | {predef_detection} - [[`__MINGW32_VERSION_MAJOR`, `__MINGW32_VERSION_MINOR`] [V.R.0]] - ] - */ +| `+__MINGW32_VERSION_MAJOR+`, `+__MINGW32_VERSION_MINOR+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_PLAT_MINGW32 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/platform/mingw64.h b/src/boost/boost/predef/platform/mingw64.h index a979a812c..8180a33ae 100644 --- a/src/boost/boost/predef/platform/mingw64.h +++ b/src/boost/boost/predef/platform/mingw64.h @@ -11,20 +11,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_PLAT_MINGW64`] +/* tag::reference[] += `BOOST_PLAT_MINGW64` -[@https://mingw-w64.org/ MinGW-w64] platform. +https://mingw-w64.org/[MinGW-w64] platform. Version number available as major, minor, and patch. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MINGW64__`] [__predef_detection__]] +| `+__MINGW64__+` | {predef_detection} - [[`__MINGW64_VERSION_MAJOR`, `__MINGW64_VERSION_MINOR`] [V.R.0]] - ] - */ +| `+__MINGW64_VERSION_MAJOR+`, `+__MINGW64_VERSION_MINOR+` | V.R.0 +|=== +*/ // end::reference[] #define BOOST_PLAT_MINGW64 BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/platform/windows_desktop.h b/src/boost/boost/predef/platform/windows_desktop.h index 6756e830c..71219e01c 100644 --- a/src/boost/boost/predef/platform/windows_desktop.h +++ b/src/boost/boost/predef/platform/windows_desktop.h @@ -14,20 +14,21 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_DESKTOP`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_DESKTOP` -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows Desktop development. Also available if the Platform SDK is too old to support UWP. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP`] [__predef_detection__]] - [[`!BOOST_PLAT_WINDOWS_UWP`] [__predef_detection__]] - ] - */ +| `WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP` | {predef_detection} +| `!BOOST_PLAT_WINDOWS_UWP` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_DESKTOP BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/platform/windows_phone.h b/src/boost/boost/predef/platform/windows_phone.h index a951d9df3..9c91bb476 100644 --- a/src/boost/boost/predef/platform/windows_phone.h +++ b/src/boost/boost/predef/platform/windows_phone.h @@ -14,18 +14,19 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_PHONE`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_PHONE` -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows Phone development. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP`] [__predef_detection__]] - ] - */ +| `WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_PHONE BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/platform/windows_runtime.h b/src/boost/boost/predef/platform/windows_runtime.h index 89b0e795c..a8bbdd0a5 100644 --- a/src/boost/boost/predef/platform/windows_runtime.h +++ b/src/boost/boost/predef/platform/windows_runtime.h @@ -15,22 +15,23 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_RUNTIME`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_RUNTIME` Deprecated. -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows Phone or Store development. This does not align to the existing development model for UWP and is deprecated. Use one of the other `BOOST_PLAT_WINDOWS_*`definitions instead. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`BOOST_PLAT_WINDOWS_PHONE`] [__predef_detection__]] - [[`BOOST_PLAT_WINDOWS_STORE`] [__predef_detection__]] - ] - */ +| `BOOST_PLAT_WINDOWS_PHONE` | {predef_detection} +| `BOOST_PLAT_WINDOWS_STORE` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_RUNTIME BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/platform/windows_server.h b/src/boost/boost/predef/platform/windows_server.h index 58dcd5be6..5d9e74fb5 100644 --- a/src/boost/boost/predef/platform/windows_server.h +++ b/src/boost/boost/predef/platform/windows_server.h @@ -13,18 +13,19 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_SERVER`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_SERVER` -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows Server development. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`WINAPI_FAMILY == WINAPI_FAMILY_SERVER`] [__predef_detection__]] - ] - */ +| `WINAPI_FAMILY == WINAPI_FAMILY_SERVER` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_SERVER BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/platform/windows_store.h b/src/boost/boost/predef/platform/windows_store.h index 9ba16df25..93125d070 100644 --- a/src/boost/boost/predef/platform/windows_store.h +++ b/src/boost/boost/predef/platform/windows_store.h @@ -14,19 +14,20 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_STORE`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_STORE` -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows Store development. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`WINAPI_FAMILY == WINAPI_FAMILY_PC_APP`] [__predef_detection__]] - [[`WINAPI_FAMILY == WINAPI_FAMILY_APP` (deprecated)] [__predef_detection__]] -] - */ +| `WINAPI_FAMILY == WINAPI_FAMILY_PC_APP` | {predef_detection} +| `WINAPI_FAMILY == WINAPI_FAMILY_APP` (deprecated) | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_STORE BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/platform/windows_system.h b/src/boost/boost/predef/platform/windows_system.h index f4f577932..ca9e18149 100644 --- a/src/boost/boost/predef/platform/windows_system.h +++ b/src/boost/boost/predef/platform/windows_system.h @@ -13,18 +13,19 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_SYSTEM`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_SYSTEM` -[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP] +https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide[UWP] for Windows System development. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM`] [__predef_detection__]] - ] - */ +| `WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM` | {predef_detection} +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_SYSTEM BOOST_VERSION_NUMBER_NOT_AVAILABLE diff --git a/src/boost/boost/predef/platform/windows_uwp.h b/src/boost/boost/predef/platform/windows_uwp.h index 6c1d5b6bb..e650d5770 100644 --- a/src/boost/boost/predef/platform/windows_uwp.h +++ b/src/boost/boost/predef/platform/windows_uwp.h @@ -12,27 +12,28 @@ Distributed under the Boost Software License, Version 1.0. #include #include -/*` -[heading `BOOST_PLAT_WINDOWS_UWP`] +/* tag::reference[] += `BOOST_PLAT_WINDOWS_UWP` -[@http://docs.microsoft.com/windows/uwp/ Universal Windows Platform] +http://docs.microsoft.com/windows/uwp/[Universal Windows Platform] is available if the current development environment is capable of targeting UWP development. -[table - [[__predef_symbol__] [__predef_version__]] +[options="header"] +|=== +| {predef_symbol} | {predef_version} - [[`__MINGW64_VERSION_MAJOR` from `_mingw.h`] [`>= 3`]] - [[`VER_PRODUCTBUILD` from `ntverp.h`] [`>= 9200`]] -] -*/ +| `+__MINGW64_VERSION_MAJOR+` from `+_mingw.h+` | `>= 3` +| `VER_PRODUCTBUILD` from `ntverp.h` | `>= 9200` +|=== +*/ // end::reference[] #define BOOST_PLAT_WINDOWS_UWP BOOST_VERSION_NUMBER_NOT_AVAILABLE #define BOOST_PLAT_WINDOWS_SDK_VERSION BOOST_VERSION_NUMBER_NOT_AVAILABLE #if BOOST_OS_WINDOWS -// MinGW (32-bit) has no ntverp.h header -#if !defined(__MINGW32__) +// MinGW (32-bit), WinCE, and wineg++ don't have a ntverp.h header +#if !defined(__MINGW32__) && !defined(_WIN32_WCE) && !defined(__WINE__) # include # undef BOOST_PLAT_WINDOWS_SDK_VERSION # define BOOST_PLAT_WINDOWS_SDK_VERSION BOOST_VERSION_NUMBER(0, 0, VER_PRODUCTBUILD) diff --git a/src/boost/boost/predef/version.h b/src/boost/boost/predef/version.h index 1fc3c1b0f..5fbc3e9bb 100644 --- a/src/boost/boost/predef/version.h +++ b/src/boost/boost/predef/version.h @@ -10,6 +10,6 @@ Distributed under the Boost Software License, Version 1.0. #include -#define BOOST_PREDEF_VERSION BOOST_VERSION_NUMBER(1,9,0) +#define BOOST_PREDEF_VERSION BOOST_VERSION_NUMBER(1,14,0) #endif diff --git a/src/boost/boost/predef/version_number.h b/src/boost/boost/predef/version_number.h index b7e6928ca..7266a373f 100644 --- a/src/boost/boost/predef/version_number.h +++ b/src/boost/boost/predef/version_number.h @@ -8,21 +8,22 @@ Distributed under the Boost Software License, Version 1.0. #ifndef BOOST_PREDEF_VERSION_NUMBER_H #define BOOST_PREDEF_VERSION_NUMBER_H -/*` -[heading `BOOST_VERSION_NUMBER`] +/* tag::reference[] += `BOOST_VERSION_NUMBER` -`` +[source] +---- BOOST_VERSION_NUMBER(major,minor,patch) -`` +---- Defines standard version numbers, with these properties: -* Decimal base whole numbers in the range \[0,1000000000). +* Decimal base whole numbers in the range [0,1000000000). The number range is designed to allow for a (2,2,5) triplet. Which fits within a 32 bit value. -* The `major` number can be in the \[0,99\] range. -* The `minor` number can be in the \[0,99\] range. -* The `patch` number can be in the \[0,99999\] range. +* The `major` number can be in the [0,99] range. +* The `minor` number can be in the [0,99] range. +* The `patch` number can be in the [0,99999] range. * Values can be specified in any base. As the defined value is an constant expression. * Value can be directly used in both preprocessor and compiler @@ -31,7 +32,7 @@ Defines standard version numbers, with these properties: major, minor, and patch numbers. And values over the ranges are truncated (modulo). -*/ +*/ // end::reference[] #define BOOST_VERSION_NUMBER(major,minor,patch) \ ( (((major)%100)*10000000) + (((minor)%100)*100000) + ((patch)%100000) ) @@ -50,16 +51,17 @@ Defines standard version numbers, with these properties: #define BOOST_VERSION_NUMBER_NOT_AVAILABLE \ BOOST_VERSION_NUMBER_ZERO -/*` -`` +/* tag::reference[] +[source] +---- BOOST_VERSION_NUMBER_MAJOR(N), BOOST_VERSION_NUMBER_MINOR(N), BOOST_VERSION_NUMBER_PATCH(N) -`` +---- The macros extract the major, minor, and patch portion from a well formed version number resulting in a preprocessor expression in the range of -\[0,99\] or \[0,99999\] for the major and minor, or patch numbers +[0,99] or [0,99999] for the major and minor, or patch numbers respectively. -*/ +*/ // end::reference[] #define BOOST_VERSION_NUMBER_MAJOR(N) \ ( ((N)/10000000)%100 ) diff --git a/src/boost/boost/preprocessor/arithmetic/add.hpp b/src/boost/boost/preprocessor/arithmetic/add.hpp index e6866ed46..a5eac1743 100644 --- a/src/boost/boost/preprocessor/arithmetic/add.hpp +++ b/src/boost/boost/preprocessor/arithmetic/add.hpp @@ -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 +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include -# include # include # include # @@ -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 +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# +# /* 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 diff --git a/src/boost/boost/preprocessor/arithmetic/dec.hpp b/src/boost/boost/preprocessor/arithmetic/dec.hpp index 0ae7986a9..90ad03196 100644 --- a/src/boost/boost/preprocessor/arithmetic/dec.hpp +++ b/src/boost/boost/preprocessor/arithmetic/dec.hpp @@ -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 # +# 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 +# +# if BOOST_PP_LIMIT_MAG == 256 +# include +# elif BOOST_PP_LIMIT_MAG == 512 +# include +# include +# elif BOOST_PP_LIMIT_MAG == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_MAG limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/arithmetic/detail/is_1_number.hpp b/src/boost/boost/preprocessor/arithmetic/detail/is_1_number.hpp new file mode 100644 index 000000000..a5794848f --- /dev/null +++ b/src/boost/boost/preprocessor/arithmetic/detail/is_1_number.hpp @@ -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 +# +# define BOOST_PP_DETAIL_IS_1_NUMBER(x) BOOST_PP_EQUAL(x,1) +# +# endif diff --git a/src/boost/boost/preprocessor/arithmetic/detail/is_maximum_number.hpp b/src/boost/boost/preprocessor/arithmetic/detail/is_maximum_number.hpp new file mode 100644 index 000000000..5a622e9a0 --- /dev/null +++ b/src/boost/boost/preprocessor/arithmetic/detail/is_maximum_number.hpp @@ -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 +# include +# +# define BOOST_PP_DETAIL_IS_MAXIMUM_NUMBER(x) BOOST_PP_EQUAL(x,BOOST_PP_DETAIL_MAXIMUM_NUMBER) +# +# endif diff --git a/src/boost/boost/preprocessor/arithmetic/detail/is_minimum_number.hpp b/src/boost/boost/preprocessor/arithmetic/detail/is_minimum_number.hpp new file mode 100644 index 000000000..bbc6b530a --- /dev/null +++ b/src/boost/boost/preprocessor/arithmetic/detail/is_minimum_number.hpp @@ -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 +# +# define BOOST_PP_DETAIL_IS_MINIMUM_NUMBER(x) BOOST_PP_NOT(x) +# +# endif diff --git a/src/boost/boost/preprocessor/arithmetic/detail/maximum_number.hpp b/src/boost/boost/preprocessor/arithmetic/detail/maximum_number.hpp new file mode 100644 index 000000000..b2ab40fb9 --- /dev/null +++ b/src/boost/boost/preprocessor/arithmetic/detail/maximum_number.hpp @@ -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 +# +# define BOOST_PP_DETAIL_MAXIMUM_NUMBER BOOST_PP_LIMIT_MAG +# +# endif diff --git a/src/boost/boost/preprocessor/arithmetic/inc.hpp b/src/boost/boost/preprocessor/arithmetic/inc.hpp index 4c367f970..ee5c54b07 100644 --- a/src/boost/boost/preprocessor/arithmetic/inc.hpp +++ b/src/boost/boost/preprocessor/arithmetic/inc.hpp @@ -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 # +# 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 +# +# if BOOST_PP_LIMIT_MAG == 256 +# include +# elif BOOST_PP_LIMIT_MAG == 512 +# include +# include +# elif BOOST_PP_LIMIT_MAG == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_MAG limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/arithmetic/limits/dec_1024.hpp b/src/boost/boost/preprocessor/arithmetic/limits/dec_1024.hpp new file mode 100644 index 000000000..eea1eae49 --- /dev/null +++ b/src/boost/boost/preprocessor/arithmetic/limits/dec_1024.hpp @@ -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 diff --git a/src/boost/boost/preprocessor/arithmetic/limits/dec_256.hpp b/src/boost/boost/preprocessor/arithmetic/limits/dec_256.hpp new file mode 100644 index 000000000..063462283 --- /dev/null +++ b/src/boost/boost/preprocessor/arithmetic/limits/dec_256.hpp @@ -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 diff --git a/src/boost/boost/preprocessor/arithmetic/limits/dec_512.hpp b/src/boost/boost/preprocessor/arithmetic/limits/dec_512.hpp new file mode 100644 index 000000000..6c8ef155f --- /dev/null +++ b/src/boost/boost/preprocessor/arithmetic/limits/dec_512.hpp @@ -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 diff --git a/src/boost/boost/preprocessor/arithmetic/limits/inc_1024.hpp b/src/boost/boost/preprocessor/arithmetic/limits/inc_1024.hpp new file mode 100644 index 000000000..a532043c4 --- /dev/null +++ b/src/boost/boost/preprocessor/arithmetic/limits/inc_1024.hpp @@ -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 diff --git a/src/boost/boost/preprocessor/arithmetic/limits/inc_256.hpp b/src/boost/boost/preprocessor/arithmetic/limits/inc_256.hpp new file mode 100644 index 000000000..aefa6da70 --- /dev/null +++ b/src/boost/boost/preprocessor/arithmetic/limits/inc_256.hpp @@ -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 diff --git a/src/boost/boost/preprocessor/arithmetic/limits/inc_512.hpp b/src/boost/boost/preprocessor/arithmetic/limits/inc_512.hpp new file mode 100644 index 000000000..23e86c7c7 --- /dev/null +++ b/src/boost/boost/preprocessor/arithmetic/limits/inc_512.hpp @@ -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 diff --git a/src/boost/boost/preprocessor/arithmetic/mod.hpp b/src/boost/boost/preprocessor/arithmetic/mod.hpp index 89f9e0daf..a4676de13 100644 --- a/src/boost/boost/preprocessor/arithmetic/mod.hpp +++ b/src/boost/boost/preprocessor/arithmetic/mod.hpp @@ -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 # include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# +# include # include # # /* 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 +# include +# include +# include +# include +# +# /* 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 diff --git a/src/boost/boost/preprocessor/arithmetic/sub.hpp b/src/boost/boost/preprocessor/arithmetic/sub.hpp index 3ef7a283f..a624a98cf 100644 --- a/src/boost/boost/preprocessor/arithmetic/sub.hpp +++ b/src/boost/boost/preprocessor/arithmetic/sub.hpp @@ -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 # include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# +# include # include # include # @@ -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 +# include +# include +# include +# include +# include +# include +# include +# include +# +# /* 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 diff --git a/src/boost/boost/preprocessor/comparison/equal.hpp b/src/boost/boost/preprocessor/comparison/equal.hpp new file mode 100644 index 000000000..5387e01f2 --- /dev/null +++ b/src/boost/boost/preprocessor/comparison/equal.hpp @@ -0,0 +1,34 @@ +# /* 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_EQUAL_HPP +# define BOOST_PREPROCESSOR_COMPARISON_EQUAL_HPP +# +# include +# include +# include +# +# /* BOOST_PP_EQUAL */ +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() +# define BOOST_PP_EQUAL(x, y) BOOST_PP_COMPL(BOOST_PP_NOT_EQUAL(x, y)) +# else +# define BOOST_PP_EQUAL(x, y) BOOST_PP_EQUAL_I(x, y) +# define BOOST_PP_EQUAL_I(x, y) BOOST_PP_COMPL(BOOST_PP_NOT_EQUAL(x, y)) +# endif +# +# /* BOOST_PP_EQUAL_D */ +# +# define BOOST_PP_EQUAL_D(d, x, y) BOOST_PP_EQUAL(x, y) +# +# endif diff --git a/src/boost/boost/preprocessor/comparison/limits/not_equal_1024.hpp b/src/boost/boost/preprocessor/comparison/limits/not_equal_1024.hpp new file mode 100644 index 000000000..ee15a98a4 --- /dev/null +++ b/src/boost/boost/preprocessor/comparison/limits/not_equal_1024.hpp @@ -0,0 +1,1044 @@ +# /* 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_1024_HPP +# define BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_1024_HPP +# +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_513(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_514(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_515(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_516(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_517(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_518(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_519(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_520(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_521(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_522(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_523(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_524(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_525(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_526(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_527(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_528(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_529(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_530(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_531(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_532(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_533(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_534(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_535(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_536(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_537(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_538(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_539(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_540(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_541(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_542(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_543(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_544(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_545(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_546(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_547(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_548(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_549(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_550(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_551(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_552(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_553(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_554(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_555(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_556(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_557(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_558(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_559(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_560(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_561(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_562(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_563(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_564(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_565(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_566(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_567(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_568(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_569(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_570(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_571(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_572(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_573(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_574(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_575(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_576(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_577(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_578(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_579(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_580(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_581(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_582(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_583(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_584(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_585(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_586(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_587(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_588(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_589(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_590(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_591(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_592(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_593(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_594(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_595(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_596(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_597(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_598(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_599(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_600(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_601(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_602(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_603(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_604(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_605(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_606(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_607(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_608(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_609(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_610(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_611(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_612(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_613(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_614(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_615(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_616(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_617(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_618(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_619(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_620(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_621(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_622(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_623(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_624(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_625(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_626(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_627(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_628(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_629(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_630(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_631(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_632(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_633(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_634(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_635(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_636(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_637(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_638(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_639(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_640(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_641(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_642(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_643(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_644(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_645(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_646(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_647(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_648(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_649(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_650(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_651(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_652(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_653(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_654(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_655(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_656(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_657(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_658(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_659(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_660(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_661(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_662(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_663(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_664(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_665(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_666(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_667(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_668(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_669(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_670(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_671(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_672(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_673(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_674(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_675(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_676(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_677(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_678(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_679(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_680(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_681(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_682(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_683(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_684(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_685(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_686(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_687(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_688(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_689(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_690(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_691(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_692(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_693(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_694(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_695(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_696(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_697(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_698(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_699(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_700(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_701(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_702(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_703(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_704(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_705(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_706(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_707(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_708(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_709(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_710(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_711(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_712(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_713(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_714(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_715(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_716(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_717(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_718(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_719(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_720(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_721(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_722(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_723(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_724(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_725(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_726(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_727(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_728(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_729(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_730(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_731(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_732(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_733(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_734(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_735(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_736(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_737(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_738(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_739(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_740(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_741(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_742(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_743(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_744(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_745(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_746(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_747(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_748(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_749(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_750(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_751(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_752(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_753(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_754(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_755(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_756(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_757(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_758(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_759(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_760(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_761(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_762(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_763(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_764(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_765(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_766(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_767(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_768(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_769(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_770(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_771(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_772(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_773(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_774(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_775(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_776(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_777(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_778(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_779(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_780(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_781(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_782(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_783(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_784(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_785(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_786(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_787(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_788(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_789(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_790(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_791(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_792(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_793(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_794(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_795(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_796(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_797(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_798(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_799(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_800(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_801(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_802(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_803(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_804(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_805(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_806(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_807(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_808(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_809(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_810(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_811(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_812(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_813(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_814(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_815(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_816(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_817(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_818(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_819(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_820(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_821(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_822(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_823(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_824(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_825(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_826(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_827(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_828(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_829(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_830(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_831(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_832(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_833(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_834(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_835(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_836(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_837(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_838(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_839(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_840(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_841(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_842(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_843(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_844(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_845(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_846(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_847(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_848(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_849(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_850(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_851(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_852(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_853(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_854(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_855(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_856(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_857(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_858(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_859(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_860(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_861(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_862(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_863(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_864(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_865(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_866(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_867(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_868(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_869(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_870(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_871(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_872(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_873(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_874(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_875(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_876(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_877(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_878(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_879(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_880(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_881(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_882(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_883(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_884(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_885(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_886(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_887(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_888(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_889(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_890(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_891(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_892(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_893(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_894(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_895(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_896(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_897(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_898(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_899(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_900(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_901(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_902(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_903(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_904(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_905(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_906(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_907(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_908(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_909(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_910(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_911(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_912(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_913(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_914(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_915(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_916(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_917(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_918(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_919(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_920(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_921(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_922(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_923(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_924(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_925(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_926(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_927(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_928(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_929(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_930(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_931(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_932(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_933(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_934(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_935(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_936(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_937(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_938(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_939(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_940(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_941(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_942(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_943(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_944(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_945(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_946(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_947(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_948(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_949(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_950(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_951(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_952(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_953(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_954(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_955(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_956(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_957(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_958(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_959(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_960(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_961(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_962(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_963(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_964(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_965(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_966(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_967(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_968(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_969(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_970(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_971(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_972(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_973(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_974(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_975(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_976(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_977(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_978(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_979(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_980(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_981(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_982(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_983(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_984(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_985(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_986(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_987(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_988(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_989(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_990(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_991(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_992(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_993(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_994(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_995(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_996(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_997(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_998(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_999(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1000(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1001(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1002(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1003(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1004(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1005(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1006(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1007(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1008(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1009(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1010(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1011(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1012(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1013(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1014(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1015(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1016(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1017(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1018(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1019(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1020(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1021(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1022(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1023(c, y) 0 +# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1024(c, y) 0 +# +# define BOOST_PP_NOT_EQUAL_513(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_514(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_515(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_516(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_517(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_518(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_519(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_520(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_521(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_522(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_523(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_524(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_525(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_526(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_527(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_528(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_529(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_530(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_531(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_532(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_533(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_534(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_535(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_536(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_537(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_538(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_539(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_540(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_541(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_542(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_543(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_544(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_545(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_546(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_547(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_548(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_549(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_550(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_551(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_552(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_553(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_554(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_555(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_556(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_557(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_558(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_559(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_560(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_561(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_562(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_563(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_564(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_565(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_566(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_567(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_568(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_569(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_570(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_571(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_572(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_573(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_574(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_575(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_576(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_577(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_578(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_579(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_580(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_581(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_582(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_583(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_584(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_585(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_586(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_587(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_588(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_589(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_590(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_591(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_592(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_593(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_594(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_595(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_596(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_597(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_598(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_599(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_600(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_601(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_602(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_603(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_604(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_605(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_606(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_607(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_608(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_609(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_610(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_611(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_612(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_613(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_614(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_615(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_616(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_617(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_618(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_619(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_620(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_621(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_622(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_623(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_624(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_625(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_626(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_627(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_628(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_629(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_630(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_631(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_632(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_633(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_634(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_635(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_636(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_637(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_638(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_639(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_640(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_641(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_642(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_643(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_644(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_645(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_646(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_647(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_648(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_649(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_650(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_651(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_652(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_653(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_654(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_655(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_656(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_657(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_658(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_659(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_660(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_661(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_662(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_663(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_664(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_665(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_666(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_667(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_668(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_669(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_670(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_671(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_672(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_673(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_674(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_675(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_676(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_677(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_678(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_679(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_680(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_681(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_682(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_683(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_684(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_685(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_686(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_687(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_688(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_689(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_690(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_691(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_692(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_693(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_694(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_695(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_696(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_697(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_698(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_699(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_700(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_701(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_702(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_703(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_704(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_705(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_706(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_707(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_708(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_709(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_710(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_711(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_712(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_713(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_714(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_715(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_716(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_717(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_718(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_719(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_720(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_721(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_722(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_723(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_724(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_725(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_726(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_727(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_728(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_729(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_730(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_731(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_732(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_733(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_734(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_735(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_736(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_737(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_738(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_739(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_740(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_741(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_742(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_743(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_744(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_745(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_746(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_747(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_748(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_749(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_750(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_751(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_752(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_753(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_754(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_755(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_756(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_757(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_758(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_759(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_760(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_761(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_762(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_763(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_764(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_765(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_766(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_767(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_768(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_769(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_770(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_771(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_772(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_773(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_774(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_775(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_776(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_777(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_778(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_779(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_780(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_781(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_782(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_783(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_784(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_785(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_786(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_787(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_788(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_789(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_790(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_791(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_792(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_793(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_794(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_795(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_796(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_797(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_798(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_799(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_800(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_801(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_802(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_803(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_804(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_805(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_806(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_807(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_808(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_809(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_810(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_811(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_812(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_813(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_814(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_815(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_816(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_817(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_818(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_819(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_820(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_821(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_822(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_823(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_824(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_825(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_826(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_827(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_828(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_829(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_830(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_831(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_832(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_833(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_834(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_835(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_836(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_837(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_838(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_839(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_840(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_841(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_842(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_843(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_844(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_845(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_846(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_847(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_848(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_849(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_850(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_851(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_852(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_853(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_854(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_855(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_856(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_857(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_858(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_859(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_860(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_861(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_862(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_863(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_864(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_865(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_866(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_867(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_868(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_869(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_870(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_871(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_872(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_873(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_874(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_875(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_876(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_877(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_878(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_879(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_880(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_881(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_882(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_883(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_884(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_885(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_886(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_887(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_888(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_889(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_890(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_891(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_892(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_893(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_894(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_895(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_896(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_897(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_898(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_899(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_900(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_901(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_902(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_903(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_904(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_905(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_906(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_907(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_908(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_909(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_910(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_911(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_912(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_913(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_914(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_915(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_916(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_917(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_918(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_919(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_920(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_921(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_922(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_923(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_924(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_925(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_926(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_927(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_928(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_929(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_930(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_931(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_932(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_933(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_934(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_935(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_936(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_937(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_938(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_939(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_940(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_941(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_942(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_943(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_944(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_945(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_946(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_947(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_948(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_949(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_950(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_951(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_952(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_953(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_954(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_955(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_956(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_957(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_958(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_959(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_960(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_961(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_962(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_963(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_964(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_965(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_966(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_967(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_968(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_969(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_970(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_971(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_972(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_973(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_974(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_975(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_976(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_977(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_978(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_979(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_980(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_981(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_982(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_983(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_984(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_985(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_986(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_987(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_988(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_989(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_990(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_991(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_992(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_993(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_994(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_995(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_996(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_997(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_998(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_999(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1000(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1001(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1002(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1003(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1004(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1005(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1006(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1007(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1008(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1009(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1010(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1011(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1012(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1013(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1014(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1015(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1016(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1017(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1018(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1019(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1020(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1021(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1022(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1023(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# define BOOST_PP_NOT_EQUAL_1024(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL)) +# +# endif diff --git a/src/boost/boost/preprocessor/comparison/limits/not_equal_256.hpp b/src/boost/boost/preprocessor/comparison/limits/not_equal_256.hpp new file mode 100644 index 000000000..fdd9d652b --- /dev/null +++ b/src/boost/boost/preprocessor/comparison/limits/not_equal_256.hpp @@ -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 diff --git a/src/boost/boost/preprocessor/comparison/limits/not_equal_512.hpp b/src/boost/boost/preprocessor/comparison/limits/not_equal_512.hpp new file mode 100644 index 000000000..a748b08e5 --- /dev/null +++ b/src/boost/boost/preprocessor/comparison/limits/not_equal_512.hpp @@ -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 diff --git a/src/boost/boost/preprocessor/comparison/not_equal.hpp b/src/boost/boost/preprocessor/comparison/not_equal.hpp index e12b89927..857e3a8dd 100644 --- a/src/boost/boost/preprocessor/comparison/not_equal.hpp +++ b/src/boost/boost/preprocessor/comparison/not_equal.hpp @@ -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 # include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# +# include # include # # /* 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 +# include +# +# /* 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 +# +# if BOOST_PP_LIMIT_MAG == 256 +# include +# elif BOOST_PP_LIMIT_MAG == 512 +# include +# include +# elif BOOST_PP_LIMIT_MAG == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_MAG limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/config/config.hpp b/src/boost/boost/preprocessor/config/config.hpp index cd79301ad..44b0ee7ac 100644 --- a/src/boost/boost/preprocessor/config/config.hpp +++ b/src/boost/boost/preprocessor/config/config.hpp @@ -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) * @@ -76,40 +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(__PGI) && !defined(__EDG__)) -# 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 -# if !defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL -# undef BOOST_PP_VARIADICS_MSVC -# define BOOST_PP_VARIADICS_MSVC 1 -# endif -# /* 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)) && (!defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL) -# 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 diff --git a/src/boost/boost/preprocessor/config/limits.hpp b/src/boost/boost/preprocessor/config/limits.hpp new file mode 100644 index 000000000..1d2a20227 --- /dev/null +++ b/src/boost/boost/preprocessor/config/limits.hpp @@ -0,0 +1,163 @@ +# /* 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 (2011,2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP +# define BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP +# +# include +# +# 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_WHILE 256 +# define BOOST_PP_LIMIT_VARIADIC 64 +# define BOOST_PP_LIMIT_TUPLE 64 +# define BOOST_PP_LIMIT_FOR 256 +# 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 +# +# endif diff --git a/src/boost/boost/preprocessor/control/deduce_d.hpp b/src/boost/boost/preprocessor/control/deduce_d.hpp index 0a8ada929..0b0a8af37 100644 --- a/src/boost/boost/preprocessor/control/deduce_d.hpp +++ b/src/boost/boost/preprocessor/control/deduce_d.hpp @@ -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 +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # @@ -19,4 +25,25 @@ # # define BOOST_PP_DEDUCE_D() BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256) # +# else +# +# include +# include +# include +# include +# +# /* 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 diff --git a/src/boost/boost/preprocessor/control/detail/dmc/while.hpp b/src/boost/boost/preprocessor/control/detail/dmc/while.hpp index 8ed571a33..a327ea97c 100644 --- a/src/boost/boost/preprocessor/control/detail/dmc/while.hpp +++ b/src/boost/boost/preprocessor/control/detail/dmc/while.hpp @@ -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 # include @@ -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 diff --git a/src/boost/boost/preprocessor/control/detail/edg/limits/while_1024.hpp b/src/boost/boost/preprocessor/control/detail/edg/limits/while_1024.hpp new file mode 100644 index 000000000..a500a80d6 --- /dev/null +++ b/src/boost/boost/preprocessor/control/detail/edg/limits/while_1024.hpp @@ -0,0 +1,1044 @@ +# /* 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_1024_HPP +# define BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_1024_HPP +# +# define BOOST_PP_WHILE_513(p, o, s) BOOST_PP_WHILE_513_I(p, o, s) +# define BOOST_PP_WHILE_514(p, o, s) BOOST_PP_WHILE_514_I(p, o, s) +# define BOOST_PP_WHILE_515(p, o, s) BOOST_PP_WHILE_515_I(p, o, s) +# define BOOST_PP_WHILE_516(p, o, s) BOOST_PP_WHILE_516_I(p, o, s) +# define BOOST_PP_WHILE_517(p, o, s) BOOST_PP_WHILE_517_I(p, o, s) +# define BOOST_PP_WHILE_518(p, o, s) BOOST_PP_WHILE_518_I(p, o, s) +# define BOOST_PP_WHILE_519(p, o, s) BOOST_PP_WHILE_519_I(p, o, s) +# define BOOST_PP_WHILE_520(p, o, s) BOOST_PP_WHILE_520_I(p, o, s) +# define BOOST_PP_WHILE_521(p, o, s) BOOST_PP_WHILE_521_I(p, o, s) +# define BOOST_PP_WHILE_522(p, o, s) BOOST_PP_WHILE_522_I(p, o, s) +# define BOOST_PP_WHILE_523(p, o, s) BOOST_PP_WHILE_523_I(p, o, s) +# define BOOST_PP_WHILE_524(p, o, s) BOOST_PP_WHILE_524_I(p, o, s) +# define BOOST_PP_WHILE_525(p, o, s) BOOST_PP_WHILE_525_I(p, o, s) +# define BOOST_PP_WHILE_526(p, o, s) BOOST_PP_WHILE_526_I(p, o, s) +# define BOOST_PP_WHILE_527(p, o, s) BOOST_PP_WHILE_527_I(p, o, s) +# define BOOST_PP_WHILE_528(p, o, s) BOOST_PP_WHILE_528_I(p, o, s) +# define BOOST_PP_WHILE_529(p, o, s) BOOST_PP_WHILE_529_I(p, o, s) +# define BOOST_PP_WHILE_530(p, o, s) BOOST_PP_WHILE_530_I(p, o, s) +# define BOOST_PP_WHILE_531(p, o, s) BOOST_PP_WHILE_531_I(p, o, s) +# define BOOST_PP_WHILE_532(p, o, s) BOOST_PP_WHILE_532_I(p, o, s) +# define BOOST_PP_WHILE_533(p, o, s) BOOST_PP_WHILE_533_I(p, o, s) +# define BOOST_PP_WHILE_534(p, o, s) BOOST_PP_WHILE_534_I(p, o, s) +# define BOOST_PP_WHILE_535(p, o, s) BOOST_PP_WHILE_535_I(p, o, s) +# define BOOST_PP_WHILE_536(p, o, s) BOOST_PP_WHILE_536_I(p, o, s) +# define BOOST_PP_WHILE_537(p, o, s) BOOST_PP_WHILE_537_I(p, o, s) +# define BOOST_PP_WHILE_538(p, o, s) BOOST_PP_WHILE_538_I(p, o, s) +# define BOOST_PP_WHILE_539(p, o, s) BOOST_PP_WHILE_539_I(p, o, s) +# define BOOST_PP_WHILE_540(p, o, s) BOOST_PP_WHILE_540_I(p, o, s) +# define BOOST_PP_WHILE_541(p, o, s) BOOST_PP_WHILE_541_I(p, o, s) +# define BOOST_PP_WHILE_542(p, o, s) BOOST_PP_WHILE_542_I(p, o, s) +# define BOOST_PP_WHILE_543(p, o, s) BOOST_PP_WHILE_543_I(p, o, s) +# define BOOST_PP_WHILE_544(p, o, s) BOOST_PP_WHILE_544_I(p, o, s) +# define BOOST_PP_WHILE_545(p, o, s) BOOST_PP_WHILE_545_I(p, o, s) +# define BOOST_PP_WHILE_546(p, o, s) BOOST_PP_WHILE_546_I(p, o, s) +# define BOOST_PP_WHILE_547(p, o, s) BOOST_PP_WHILE_547_I(p, o, s) +# define BOOST_PP_WHILE_548(p, o, s) BOOST_PP_WHILE_548_I(p, o, s) +# define BOOST_PP_WHILE_549(p, o, s) BOOST_PP_WHILE_549_I(p, o, s) +# define BOOST_PP_WHILE_550(p, o, s) BOOST_PP_WHILE_550_I(p, o, s) +# define BOOST_PP_WHILE_551(p, o, s) BOOST_PP_WHILE_551_I(p, o, s) +# define BOOST_PP_WHILE_552(p, o, s) BOOST_PP_WHILE_552_I(p, o, s) +# define BOOST_PP_WHILE_553(p, o, s) BOOST_PP_WHILE_553_I(p, o, s) +# define BOOST_PP_WHILE_554(p, o, s) BOOST_PP_WHILE_554_I(p, o, s) +# define BOOST_PP_WHILE_555(p, o, s) BOOST_PP_WHILE_555_I(p, o, s) +# define BOOST_PP_WHILE_556(p, o, s) BOOST_PP_WHILE_556_I(p, o, s) +# define BOOST_PP_WHILE_557(p, o, s) BOOST_PP_WHILE_557_I(p, o, s) +# define BOOST_PP_WHILE_558(p, o, s) BOOST_PP_WHILE_558_I(p, o, s) +# define BOOST_PP_WHILE_559(p, o, s) BOOST_PP_WHILE_559_I(p, o, s) +# define BOOST_PP_WHILE_560(p, o, s) BOOST_PP_WHILE_560_I(p, o, s) +# define BOOST_PP_WHILE_561(p, o, s) BOOST_PP_WHILE_561_I(p, o, s) +# define BOOST_PP_WHILE_562(p, o, s) BOOST_PP_WHILE_562_I(p, o, s) +# define BOOST_PP_WHILE_563(p, o, s) BOOST_PP_WHILE_563_I(p, o, s) +# define BOOST_PP_WHILE_564(p, o, s) BOOST_PP_WHILE_564_I(p, o, s) +# define BOOST_PP_WHILE_565(p, o, s) BOOST_PP_WHILE_565_I(p, o, s) +# define BOOST_PP_WHILE_566(p, o, s) BOOST_PP_WHILE_566_I(p, o, s) +# define BOOST_PP_WHILE_567(p, o, s) BOOST_PP_WHILE_567_I(p, o, s) +# define BOOST_PP_WHILE_568(p, o, s) BOOST_PP_WHILE_568_I(p, o, s) +# define BOOST_PP_WHILE_569(p, o, s) BOOST_PP_WHILE_569_I(p, o, s) +# define BOOST_PP_WHILE_570(p, o, s) BOOST_PP_WHILE_570_I(p, o, s) +# define BOOST_PP_WHILE_571(p, o, s) BOOST_PP_WHILE_571_I(p, o, s) +# define BOOST_PP_WHILE_572(p, o, s) BOOST_PP_WHILE_572_I(p, o, s) +# define BOOST_PP_WHILE_573(p, o, s) BOOST_PP_WHILE_573_I(p, o, s) +# define BOOST_PP_WHILE_574(p, o, s) BOOST_PP_WHILE_574_I(p, o, s) +# define BOOST_PP_WHILE_575(p, o, s) BOOST_PP_WHILE_575_I(p, o, s) +# define BOOST_PP_WHILE_576(p, o, s) BOOST_PP_WHILE_576_I(p, o, s) +# define BOOST_PP_WHILE_577(p, o, s) BOOST_PP_WHILE_577_I(p, o, s) +# define BOOST_PP_WHILE_578(p, o, s) BOOST_PP_WHILE_578_I(p, o, s) +# define BOOST_PP_WHILE_579(p, o, s) BOOST_PP_WHILE_579_I(p, o, s) +# define BOOST_PP_WHILE_580(p, o, s) BOOST_PP_WHILE_580_I(p, o, s) +# define BOOST_PP_WHILE_581(p, o, s) BOOST_PP_WHILE_581_I(p, o, s) +# define BOOST_PP_WHILE_582(p, o, s) BOOST_PP_WHILE_582_I(p, o, s) +# define BOOST_PP_WHILE_583(p, o, s) BOOST_PP_WHILE_583_I(p, o, s) +# define BOOST_PP_WHILE_584(p, o, s) BOOST_PP_WHILE_584_I(p, o, s) +# define BOOST_PP_WHILE_585(p, o, s) BOOST_PP_WHILE_585_I(p, o, s) +# define BOOST_PP_WHILE_586(p, o, s) BOOST_PP_WHILE_586_I(p, o, s) +# define BOOST_PP_WHILE_587(p, o, s) BOOST_PP_WHILE_587_I(p, o, s) +# define BOOST_PP_WHILE_588(p, o, s) BOOST_PP_WHILE_588_I(p, o, s) +# define BOOST_PP_WHILE_589(p, o, s) BOOST_PP_WHILE_589_I(p, o, s) +# define BOOST_PP_WHILE_590(p, o, s) BOOST_PP_WHILE_590_I(p, o, s) +# define BOOST_PP_WHILE_591(p, o, s) BOOST_PP_WHILE_591_I(p, o, s) +# define BOOST_PP_WHILE_592(p, o, s) BOOST_PP_WHILE_592_I(p, o, s) +# define BOOST_PP_WHILE_593(p, o, s) BOOST_PP_WHILE_593_I(p, o, s) +# define BOOST_PP_WHILE_594(p, o, s) BOOST_PP_WHILE_594_I(p, o, s) +# define BOOST_PP_WHILE_595(p, o, s) BOOST_PP_WHILE_595_I(p, o, s) +# define BOOST_PP_WHILE_596(p, o, s) BOOST_PP_WHILE_596_I(p, o, s) +# define BOOST_PP_WHILE_597(p, o, s) BOOST_PP_WHILE_597_I(p, o, s) +# define BOOST_PP_WHILE_598(p, o, s) BOOST_PP_WHILE_598_I(p, o, s) +# define BOOST_PP_WHILE_599(p, o, s) BOOST_PP_WHILE_599_I(p, o, s) +# define BOOST_PP_WHILE_600(p, o, s) BOOST_PP_WHILE_600_I(p, o, s) +# define BOOST_PP_WHILE_601(p, o, s) BOOST_PP_WHILE_601_I(p, o, s) +# define BOOST_PP_WHILE_602(p, o, s) BOOST_PP_WHILE_602_I(p, o, s) +# define BOOST_PP_WHILE_603(p, o, s) BOOST_PP_WHILE_603_I(p, o, s) +# define BOOST_PP_WHILE_604(p, o, s) BOOST_PP_WHILE_604_I(p, o, s) +# define BOOST_PP_WHILE_605(p, o, s) BOOST_PP_WHILE_605_I(p, o, s) +# define BOOST_PP_WHILE_606(p, o, s) BOOST_PP_WHILE_606_I(p, o, s) +# define BOOST_PP_WHILE_607(p, o, s) BOOST_PP_WHILE_607_I(p, o, s) +# define BOOST_PP_WHILE_608(p, o, s) BOOST_PP_WHILE_608_I(p, o, s) +# define BOOST_PP_WHILE_609(p, o, s) BOOST_PP_WHILE_609_I(p, o, s) +# define BOOST_PP_WHILE_610(p, o, s) BOOST_PP_WHILE_610_I(p, o, s) +# define BOOST_PP_WHILE_611(p, o, s) BOOST_PP_WHILE_611_I(p, o, s) +# define BOOST_PP_WHILE_612(p, o, s) BOOST_PP_WHILE_612_I(p, o, s) +# define BOOST_PP_WHILE_613(p, o, s) BOOST_PP_WHILE_613_I(p, o, s) +# define BOOST_PP_WHILE_614(p, o, s) BOOST_PP_WHILE_614_I(p, o, s) +# define BOOST_PP_WHILE_615(p, o, s) BOOST_PP_WHILE_615_I(p, o, s) +# define BOOST_PP_WHILE_616(p, o, s) BOOST_PP_WHILE_616_I(p, o, s) +# define BOOST_PP_WHILE_617(p, o, s) BOOST_PP_WHILE_617_I(p, o, s) +# define BOOST_PP_WHILE_618(p, o, s) BOOST_PP_WHILE_618_I(p, o, s) +# define BOOST_PP_WHILE_619(p, o, s) BOOST_PP_WHILE_619_I(p, o, s) +# define BOOST_PP_WHILE_620(p, o, s) BOOST_PP_WHILE_620_I(p, o, s) +# define BOOST_PP_WHILE_621(p, o, s) BOOST_PP_WHILE_621_I(p, o, s) +# define BOOST_PP_WHILE_622(p, o, s) BOOST_PP_WHILE_622_I(p, o, s) +# define BOOST_PP_WHILE_623(p, o, s) BOOST_PP_WHILE_623_I(p, o, s) +# define BOOST_PP_WHILE_624(p, o, s) BOOST_PP_WHILE_624_I(p, o, s) +# define BOOST_PP_WHILE_625(p, o, s) BOOST_PP_WHILE_625_I(p, o, s) +# define BOOST_PP_WHILE_626(p, o, s) BOOST_PP_WHILE_626_I(p, o, s) +# define BOOST_PP_WHILE_627(p, o, s) BOOST_PP_WHILE_627_I(p, o, s) +# define BOOST_PP_WHILE_628(p, o, s) BOOST_PP_WHILE_628_I(p, o, s) +# define BOOST_PP_WHILE_629(p, o, s) BOOST_PP_WHILE_629_I(p, o, s) +# define BOOST_PP_WHILE_630(p, o, s) BOOST_PP_WHILE_630_I(p, o, s) +# define BOOST_PP_WHILE_631(p, o, s) BOOST_PP_WHILE_631_I(p, o, s) +# define BOOST_PP_WHILE_632(p, o, s) BOOST_PP_WHILE_632_I(p, o, s) +# define BOOST_PP_WHILE_633(p, o, s) BOOST_PP_WHILE_633_I(p, o, s) +# define BOOST_PP_WHILE_634(p, o, s) BOOST_PP_WHILE_634_I(p, o, s) +# define BOOST_PP_WHILE_635(p, o, s) BOOST_PP_WHILE_635_I(p, o, s) +# define BOOST_PP_WHILE_636(p, o, s) BOOST_PP_WHILE_636_I(p, o, s) +# define BOOST_PP_WHILE_637(p, o, s) BOOST_PP_WHILE_637_I(p, o, s) +# define BOOST_PP_WHILE_638(p, o, s) BOOST_PP_WHILE_638_I(p, o, s) +# define BOOST_PP_WHILE_639(p, o, s) BOOST_PP_WHILE_639_I(p, o, s) +# define BOOST_PP_WHILE_640(p, o, s) BOOST_PP_WHILE_640_I(p, o, s) +# define BOOST_PP_WHILE_641(p, o, s) BOOST_PP_WHILE_641_I(p, o, s) +# define BOOST_PP_WHILE_642(p, o, s) BOOST_PP_WHILE_642_I(p, o, s) +# define BOOST_PP_WHILE_643(p, o, s) BOOST_PP_WHILE_643_I(p, o, s) +# define BOOST_PP_WHILE_644(p, o, s) BOOST_PP_WHILE_644_I(p, o, s) +# define BOOST_PP_WHILE_645(p, o, s) BOOST_PP_WHILE_645_I(p, o, s) +# define BOOST_PP_WHILE_646(p, o, s) BOOST_PP_WHILE_646_I(p, o, s) +# define BOOST_PP_WHILE_647(p, o, s) BOOST_PP_WHILE_647_I(p, o, s) +# define BOOST_PP_WHILE_648(p, o, s) BOOST_PP_WHILE_648_I(p, o, s) +# define BOOST_PP_WHILE_649(p, o, s) BOOST_PP_WHILE_649_I(p, o, s) +# define BOOST_PP_WHILE_650(p, o, s) BOOST_PP_WHILE_650_I(p, o, s) +# define BOOST_PP_WHILE_651(p, o, s) BOOST_PP_WHILE_651_I(p, o, s) +# define BOOST_PP_WHILE_652(p, o, s) BOOST_PP_WHILE_652_I(p, o, s) +# define BOOST_PP_WHILE_653(p, o, s) BOOST_PP_WHILE_653_I(p, o, s) +# define BOOST_PP_WHILE_654(p, o, s) BOOST_PP_WHILE_654_I(p, o, s) +# define BOOST_PP_WHILE_655(p, o, s) BOOST_PP_WHILE_655_I(p, o, s) +# define BOOST_PP_WHILE_656(p, o, s) BOOST_PP_WHILE_656_I(p, o, s) +# define BOOST_PP_WHILE_657(p, o, s) BOOST_PP_WHILE_657_I(p, o, s) +# define BOOST_PP_WHILE_658(p, o, s) BOOST_PP_WHILE_658_I(p, o, s) +# define BOOST_PP_WHILE_659(p, o, s) BOOST_PP_WHILE_659_I(p, o, s) +# define BOOST_PP_WHILE_660(p, o, s) BOOST_PP_WHILE_660_I(p, o, s) +# define BOOST_PP_WHILE_661(p, o, s) BOOST_PP_WHILE_661_I(p, o, s) +# define BOOST_PP_WHILE_662(p, o, s) BOOST_PP_WHILE_662_I(p, o, s) +# define BOOST_PP_WHILE_663(p, o, s) BOOST_PP_WHILE_663_I(p, o, s) +# define BOOST_PP_WHILE_664(p, o, s) BOOST_PP_WHILE_664_I(p, o, s) +# define BOOST_PP_WHILE_665(p, o, s) BOOST_PP_WHILE_665_I(p, o, s) +# define BOOST_PP_WHILE_666(p, o, s) BOOST_PP_WHILE_666_I(p, o, s) +# define BOOST_PP_WHILE_667(p, o, s) BOOST_PP_WHILE_667_I(p, o, s) +# define BOOST_PP_WHILE_668(p, o, s) BOOST_PP_WHILE_668_I(p, o, s) +# define BOOST_PP_WHILE_669(p, o, s) BOOST_PP_WHILE_669_I(p, o, s) +# define BOOST_PP_WHILE_670(p, o, s) BOOST_PP_WHILE_670_I(p, o, s) +# define BOOST_PP_WHILE_671(p, o, s) BOOST_PP_WHILE_671_I(p, o, s) +# define BOOST_PP_WHILE_672(p, o, s) BOOST_PP_WHILE_672_I(p, o, s) +# define BOOST_PP_WHILE_673(p, o, s) BOOST_PP_WHILE_673_I(p, o, s) +# define BOOST_PP_WHILE_674(p, o, s) BOOST_PP_WHILE_674_I(p, o, s) +# define BOOST_PP_WHILE_675(p, o, s) BOOST_PP_WHILE_675_I(p, o, s) +# define BOOST_PP_WHILE_676(p, o, s) BOOST_PP_WHILE_676_I(p, o, s) +# define BOOST_PP_WHILE_677(p, o, s) BOOST_PP_WHILE_677_I(p, o, s) +# define BOOST_PP_WHILE_678(p, o, s) BOOST_PP_WHILE_678_I(p, o, s) +# define BOOST_PP_WHILE_679(p, o, s) BOOST_PP_WHILE_679_I(p, o, s) +# define BOOST_PP_WHILE_680(p, o, s) BOOST_PP_WHILE_680_I(p, o, s) +# define BOOST_PP_WHILE_681(p, o, s) BOOST_PP_WHILE_681_I(p, o, s) +# define BOOST_PP_WHILE_682(p, o, s) BOOST_PP_WHILE_682_I(p, o, s) +# define BOOST_PP_WHILE_683(p, o, s) BOOST_PP_WHILE_683_I(p, o, s) +# define BOOST_PP_WHILE_684(p, o, s) BOOST_PP_WHILE_684_I(p, o, s) +# define BOOST_PP_WHILE_685(p, o, s) BOOST_PP_WHILE_685_I(p, o, s) +# define BOOST_PP_WHILE_686(p, o, s) BOOST_PP_WHILE_686_I(p, o, s) +# define BOOST_PP_WHILE_687(p, o, s) BOOST_PP_WHILE_687_I(p, o, s) +# define BOOST_PP_WHILE_688(p, o, s) BOOST_PP_WHILE_688_I(p, o, s) +# define BOOST_PP_WHILE_689(p, o, s) BOOST_PP_WHILE_689_I(p, o, s) +# define BOOST_PP_WHILE_690(p, o, s) BOOST_PP_WHILE_690_I(p, o, s) +# define BOOST_PP_WHILE_691(p, o, s) BOOST_PP_WHILE_691_I(p, o, s) +# define BOOST_PP_WHILE_692(p, o, s) BOOST_PP_WHILE_692_I(p, o, s) +# define BOOST_PP_WHILE_693(p, o, s) BOOST_PP_WHILE_693_I(p, o, s) +# define BOOST_PP_WHILE_694(p, o, s) BOOST_PP_WHILE_694_I(p, o, s) +# define BOOST_PP_WHILE_695(p, o, s) BOOST_PP_WHILE_695_I(p, o, s) +# define BOOST_PP_WHILE_696(p, o, s) BOOST_PP_WHILE_696_I(p, o, s) +# define BOOST_PP_WHILE_697(p, o, s) BOOST_PP_WHILE_697_I(p, o, s) +# define BOOST_PP_WHILE_698(p, o, s) BOOST_PP_WHILE_698_I(p, o, s) +# define BOOST_PP_WHILE_699(p, o, s) BOOST_PP_WHILE_699_I(p, o, s) +# define BOOST_PP_WHILE_700(p, o, s) BOOST_PP_WHILE_700_I(p, o, s) +# define BOOST_PP_WHILE_701(p, o, s) BOOST_PP_WHILE_701_I(p, o, s) +# define BOOST_PP_WHILE_702(p, o, s) BOOST_PP_WHILE_702_I(p, o, s) +# define BOOST_PP_WHILE_703(p, o, s) BOOST_PP_WHILE_703_I(p, o, s) +# define BOOST_PP_WHILE_704(p, o, s) BOOST_PP_WHILE_704_I(p, o, s) +# define BOOST_PP_WHILE_705(p, o, s) BOOST_PP_WHILE_705_I(p, o, s) +# define BOOST_PP_WHILE_706(p, o, s) BOOST_PP_WHILE_706_I(p, o, s) +# define BOOST_PP_WHILE_707(p, o, s) BOOST_PP_WHILE_707_I(p, o, s) +# define BOOST_PP_WHILE_708(p, o, s) BOOST_PP_WHILE_708_I(p, o, s) +# define BOOST_PP_WHILE_709(p, o, s) BOOST_PP_WHILE_709_I(p, o, s) +# define BOOST_PP_WHILE_710(p, o, s) BOOST_PP_WHILE_710_I(p, o, s) +# define BOOST_PP_WHILE_711(p, o, s) BOOST_PP_WHILE_711_I(p, o, s) +# define BOOST_PP_WHILE_712(p, o, s) BOOST_PP_WHILE_712_I(p, o, s) +# define BOOST_PP_WHILE_713(p, o, s) BOOST_PP_WHILE_713_I(p, o, s) +# define BOOST_PP_WHILE_714(p, o, s) BOOST_PP_WHILE_714_I(p, o, s) +# define BOOST_PP_WHILE_715(p, o, s) BOOST_PP_WHILE_715_I(p, o, s) +# define BOOST_PP_WHILE_716(p, o, s) BOOST_PP_WHILE_716_I(p, o, s) +# define BOOST_PP_WHILE_717(p, o, s) BOOST_PP_WHILE_717_I(p, o, s) +# define BOOST_PP_WHILE_718(p, o, s) BOOST_PP_WHILE_718_I(p, o, s) +# define BOOST_PP_WHILE_719(p, o, s) BOOST_PP_WHILE_719_I(p, o, s) +# define BOOST_PP_WHILE_720(p, o, s) BOOST_PP_WHILE_720_I(p, o, s) +# define BOOST_PP_WHILE_721(p, o, s) BOOST_PP_WHILE_721_I(p, o, s) +# define BOOST_PP_WHILE_722(p, o, s) BOOST_PP_WHILE_722_I(p, o, s) +# define BOOST_PP_WHILE_723(p, o, s) BOOST_PP_WHILE_723_I(p, o, s) +# define BOOST_PP_WHILE_724(p, o, s) BOOST_PP_WHILE_724_I(p, o, s) +# define BOOST_PP_WHILE_725(p, o, s) BOOST_PP_WHILE_725_I(p, o, s) +# define BOOST_PP_WHILE_726(p, o, s) BOOST_PP_WHILE_726_I(p, o, s) +# define BOOST_PP_WHILE_727(p, o, s) BOOST_PP_WHILE_727_I(p, o, s) +# define BOOST_PP_WHILE_728(p, o, s) BOOST_PP_WHILE_728_I(p, o, s) +# define BOOST_PP_WHILE_729(p, o, s) BOOST_PP_WHILE_729_I(p, o, s) +# define BOOST_PP_WHILE_730(p, o, s) BOOST_PP_WHILE_730_I(p, o, s) +# define BOOST_PP_WHILE_731(p, o, s) BOOST_PP_WHILE_731_I(p, o, s) +# define BOOST_PP_WHILE_732(p, o, s) BOOST_PP_WHILE_732_I(p, o, s) +# define BOOST_PP_WHILE_733(p, o, s) BOOST_PP_WHILE_733_I(p, o, s) +# define BOOST_PP_WHILE_734(p, o, s) BOOST_PP_WHILE_734_I(p, o, s) +# define BOOST_PP_WHILE_735(p, o, s) BOOST_PP_WHILE_735_I(p, o, s) +# define BOOST_PP_WHILE_736(p, o, s) BOOST_PP_WHILE_736_I(p, o, s) +# define BOOST_PP_WHILE_737(p, o, s) BOOST_PP_WHILE_737_I(p, o, s) +# define BOOST_PP_WHILE_738(p, o, s) BOOST_PP_WHILE_738_I(p, o, s) +# define BOOST_PP_WHILE_739(p, o, s) BOOST_PP_WHILE_739_I(p, o, s) +# define BOOST_PP_WHILE_740(p, o, s) BOOST_PP_WHILE_740_I(p, o, s) +# define BOOST_PP_WHILE_741(p, o, s) BOOST_PP_WHILE_741_I(p, o, s) +# define BOOST_PP_WHILE_742(p, o, s) BOOST_PP_WHILE_742_I(p, o, s) +# define BOOST_PP_WHILE_743(p, o, s) BOOST_PP_WHILE_743_I(p, o, s) +# define BOOST_PP_WHILE_744(p, o, s) BOOST_PP_WHILE_744_I(p, o, s) +# define BOOST_PP_WHILE_745(p, o, s) BOOST_PP_WHILE_745_I(p, o, s) +# define BOOST_PP_WHILE_746(p, o, s) BOOST_PP_WHILE_746_I(p, o, s) +# define BOOST_PP_WHILE_747(p, o, s) BOOST_PP_WHILE_747_I(p, o, s) +# define BOOST_PP_WHILE_748(p, o, s) BOOST_PP_WHILE_748_I(p, o, s) +# define BOOST_PP_WHILE_749(p, o, s) BOOST_PP_WHILE_749_I(p, o, s) +# define BOOST_PP_WHILE_750(p, o, s) BOOST_PP_WHILE_750_I(p, o, s) +# define BOOST_PP_WHILE_751(p, o, s) BOOST_PP_WHILE_751_I(p, o, s) +# define BOOST_PP_WHILE_752(p, o, s) BOOST_PP_WHILE_752_I(p, o, s) +# define BOOST_PP_WHILE_753(p, o, s) BOOST_PP_WHILE_753_I(p, o, s) +# define BOOST_PP_WHILE_754(p, o, s) BOOST_PP_WHILE_754_I(p, o, s) +# define BOOST_PP_WHILE_755(p, o, s) BOOST_PP_WHILE_755_I(p, o, s) +# define BOOST_PP_WHILE_756(p, o, s) BOOST_PP_WHILE_756_I(p, o, s) +# define BOOST_PP_WHILE_757(p, o, s) BOOST_PP_WHILE_757_I(p, o, s) +# define BOOST_PP_WHILE_758(p, o, s) BOOST_PP_WHILE_758_I(p, o, s) +# define BOOST_PP_WHILE_759(p, o, s) BOOST_PP_WHILE_759_I(p, o, s) +# define BOOST_PP_WHILE_760(p, o, s) BOOST_PP_WHILE_760_I(p, o, s) +# define BOOST_PP_WHILE_761(p, o, s) BOOST_PP_WHILE_761_I(p, o, s) +# define BOOST_PP_WHILE_762(p, o, s) BOOST_PP_WHILE_762_I(p, o, s) +# define BOOST_PP_WHILE_763(p, o, s) BOOST_PP_WHILE_763_I(p, o, s) +# define BOOST_PP_WHILE_764(p, o, s) BOOST_PP_WHILE_764_I(p, o, s) +# define BOOST_PP_WHILE_765(p, o, s) BOOST_PP_WHILE_765_I(p, o, s) +# define BOOST_PP_WHILE_766(p, o, s) BOOST_PP_WHILE_766_I(p, o, s) +# define BOOST_PP_WHILE_767(p, o, s) BOOST_PP_WHILE_767_I(p, o, s) +# define BOOST_PP_WHILE_768(p, o, s) BOOST_PP_WHILE_768_I(p, o, s) +# define BOOST_PP_WHILE_769(p, o, s) BOOST_PP_WHILE_769_I(p, o, s) +# define BOOST_PP_WHILE_770(p, o, s) BOOST_PP_WHILE_770_I(p, o, s) +# define BOOST_PP_WHILE_771(p, o, s) BOOST_PP_WHILE_771_I(p, o, s) +# define BOOST_PP_WHILE_772(p, o, s) BOOST_PP_WHILE_772_I(p, o, s) +# define BOOST_PP_WHILE_773(p, o, s) BOOST_PP_WHILE_773_I(p, o, s) +# define BOOST_PP_WHILE_774(p, o, s) BOOST_PP_WHILE_774_I(p, o, s) +# define BOOST_PP_WHILE_775(p, o, s) BOOST_PP_WHILE_775_I(p, o, s) +# define BOOST_PP_WHILE_776(p, o, s) BOOST_PP_WHILE_776_I(p, o, s) +# define BOOST_PP_WHILE_777(p, o, s) BOOST_PP_WHILE_777_I(p, o, s) +# define BOOST_PP_WHILE_778(p, o, s) BOOST_PP_WHILE_778_I(p, o, s) +# define BOOST_PP_WHILE_779(p, o, s) BOOST_PP_WHILE_779_I(p, o, s) +# define BOOST_PP_WHILE_780(p, o, s) BOOST_PP_WHILE_780_I(p, o, s) +# define BOOST_PP_WHILE_781(p, o, s) BOOST_PP_WHILE_781_I(p, o, s) +# define BOOST_PP_WHILE_782(p, o, s) BOOST_PP_WHILE_782_I(p, o, s) +# define BOOST_PP_WHILE_783(p, o, s) BOOST_PP_WHILE_783_I(p, o, s) +# define BOOST_PP_WHILE_784(p, o, s) BOOST_PP_WHILE_784_I(p, o, s) +# define BOOST_PP_WHILE_785(p, o, s) BOOST_PP_WHILE_785_I(p, o, s) +# define BOOST_PP_WHILE_786(p, o, s) BOOST_PP_WHILE_786_I(p, o, s) +# define BOOST_PP_WHILE_787(p, o, s) BOOST_PP_WHILE_787_I(p, o, s) +# define BOOST_PP_WHILE_788(p, o, s) BOOST_PP_WHILE_788_I(p, o, s) +# define BOOST_PP_WHILE_789(p, o, s) BOOST_PP_WHILE_789_I(p, o, s) +# define BOOST_PP_WHILE_790(p, o, s) BOOST_PP_WHILE_790_I(p, o, s) +# define BOOST_PP_WHILE_791(p, o, s) BOOST_PP_WHILE_791_I(p, o, s) +# define BOOST_PP_WHILE_792(p, o, s) BOOST_PP_WHILE_792_I(p, o, s) +# define BOOST_PP_WHILE_793(p, o, s) BOOST_PP_WHILE_793_I(p, o, s) +# define BOOST_PP_WHILE_794(p, o, s) BOOST_PP_WHILE_794_I(p, o, s) +# define BOOST_PP_WHILE_795(p, o, s) BOOST_PP_WHILE_795_I(p, o, s) +# define BOOST_PP_WHILE_796(p, o, s) BOOST_PP_WHILE_796_I(p, o, s) +# define BOOST_PP_WHILE_797(p, o, s) BOOST_PP_WHILE_797_I(p, o, s) +# define BOOST_PP_WHILE_798(p, o, s) BOOST_PP_WHILE_798_I(p, o, s) +# define BOOST_PP_WHILE_799(p, o, s) BOOST_PP_WHILE_799_I(p, o, s) +# define BOOST_PP_WHILE_800(p, o, s) BOOST_PP_WHILE_800_I(p, o, s) +# define BOOST_PP_WHILE_801(p, o, s) BOOST_PP_WHILE_801_I(p, o, s) +# define BOOST_PP_WHILE_802(p, o, s) BOOST_PP_WHILE_802_I(p, o, s) +# define BOOST_PP_WHILE_803(p, o, s) BOOST_PP_WHILE_803_I(p, o, s) +# define BOOST_PP_WHILE_804(p, o, s) BOOST_PP_WHILE_804_I(p, o, s) +# define BOOST_PP_WHILE_805(p, o, s) BOOST_PP_WHILE_805_I(p, o, s) +# define BOOST_PP_WHILE_806(p, o, s) BOOST_PP_WHILE_806_I(p, o, s) +# define BOOST_PP_WHILE_807(p, o, s) BOOST_PP_WHILE_807_I(p, o, s) +# define BOOST_PP_WHILE_808(p, o, s) BOOST_PP_WHILE_808_I(p, o, s) +# define BOOST_PP_WHILE_809(p, o, s) BOOST_PP_WHILE_809_I(p, o, s) +# define BOOST_PP_WHILE_810(p, o, s) BOOST_PP_WHILE_810_I(p, o, s) +# define BOOST_PP_WHILE_811(p, o, s) BOOST_PP_WHILE_811_I(p, o, s) +# define BOOST_PP_WHILE_812(p, o, s) BOOST_PP_WHILE_812_I(p, o, s) +# define BOOST_PP_WHILE_813(p, o, s) BOOST_PP_WHILE_813_I(p, o, s) +# define BOOST_PP_WHILE_814(p, o, s) BOOST_PP_WHILE_814_I(p, o, s) +# define BOOST_PP_WHILE_815(p, o, s) BOOST_PP_WHILE_815_I(p, o, s) +# define BOOST_PP_WHILE_816(p, o, s) BOOST_PP_WHILE_816_I(p, o, s) +# define BOOST_PP_WHILE_817(p, o, s) BOOST_PP_WHILE_817_I(p, o, s) +# define BOOST_PP_WHILE_818(p, o, s) BOOST_PP_WHILE_818_I(p, o, s) +# define BOOST_PP_WHILE_819(p, o, s) BOOST_PP_WHILE_819_I(p, o, s) +# define BOOST_PP_WHILE_820(p, o, s) BOOST_PP_WHILE_820_I(p, o, s) +# define BOOST_PP_WHILE_821(p, o, s) BOOST_PP_WHILE_821_I(p, o, s) +# define BOOST_PP_WHILE_822(p, o, s) BOOST_PP_WHILE_822_I(p, o, s) +# define BOOST_PP_WHILE_823(p, o, s) BOOST_PP_WHILE_823_I(p, o, s) +# define BOOST_PP_WHILE_824(p, o, s) BOOST_PP_WHILE_824_I(p, o, s) +# define BOOST_PP_WHILE_825(p, o, s) BOOST_PP_WHILE_825_I(p, o, s) +# define BOOST_PP_WHILE_826(p, o, s) BOOST_PP_WHILE_826_I(p, o, s) +# define BOOST_PP_WHILE_827(p, o, s) BOOST_PP_WHILE_827_I(p, o, s) +# define BOOST_PP_WHILE_828(p, o, s) BOOST_PP_WHILE_828_I(p, o, s) +# define BOOST_PP_WHILE_829(p, o, s) BOOST_PP_WHILE_829_I(p, o, s) +# define BOOST_PP_WHILE_830(p, o, s) BOOST_PP_WHILE_830_I(p, o, s) +# define BOOST_PP_WHILE_831(p, o, s) BOOST_PP_WHILE_831_I(p, o, s) +# define BOOST_PP_WHILE_832(p, o, s) BOOST_PP_WHILE_832_I(p, o, s) +# define BOOST_PP_WHILE_833(p, o, s) BOOST_PP_WHILE_833_I(p, o, s) +# define BOOST_PP_WHILE_834(p, o, s) BOOST_PP_WHILE_834_I(p, o, s) +# define BOOST_PP_WHILE_835(p, o, s) BOOST_PP_WHILE_835_I(p, o, s) +# define BOOST_PP_WHILE_836(p, o, s) BOOST_PP_WHILE_836_I(p, o, s) +# define BOOST_PP_WHILE_837(p, o, s) BOOST_PP_WHILE_837_I(p, o, s) +# define BOOST_PP_WHILE_838(p, o, s) BOOST_PP_WHILE_838_I(p, o, s) +# define BOOST_PP_WHILE_839(p, o, s) BOOST_PP_WHILE_839_I(p, o, s) +# define BOOST_PP_WHILE_840(p, o, s) BOOST_PP_WHILE_840_I(p, o, s) +# define BOOST_PP_WHILE_841(p, o, s) BOOST_PP_WHILE_841_I(p, o, s) +# define BOOST_PP_WHILE_842(p, o, s) BOOST_PP_WHILE_842_I(p, o, s) +# define BOOST_PP_WHILE_843(p, o, s) BOOST_PP_WHILE_843_I(p, o, s) +# define BOOST_PP_WHILE_844(p, o, s) BOOST_PP_WHILE_844_I(p, o, s) +# define BOOST_PP_WHILE_845(p, o, s) BOOST_PP_WHILE_845_I(p, o, s) +# define BOOST_PP_WHILE_846(p, o, s) BOOST_PP_WHILE_846_I(p, o, s) +# define BOOST_PP_WHILE_847(p, o, s) BOOST_PP_WHILE_847_I(p, o, s) +# define BOOST_PP_WHILE_848(p, o, s) BOOST_PP_WHILE_848_I(p, o, s) +# define BOOST_PP_WHILE_849(p, o, s) BOOST_PP_WHILE_849_I(p, o, s) +# define BOOST_PP_WHILE_850(p, o, s) BOOST_PP_WHILE_850_I(p, o, s) +# define BOOST_PP_WHILE_851(p, o, s) BOOST_PP_WHILE_851_I(p, o, s) +# define BOOST_PP_WHILE_852(p, o, s) BOOST_PP_WHILE_852_I(p, o, s) +# define BOOST_PP_WHILE_853(p, o, s) BOOST_PP_WHILE_853_I(p, o, s) +# define BOOST_PP_WHILE_854(p, o, s) BOOST_PP_WHILE_854_I(p, o, s) +# define BOOST_PP_WHILE_855(p, o, s) BOOST_PP_WHILE_855_I(p, o, s) +# define BOOST_PP_WHILE_856(p, o, s) BOOST_PP_WHILE_856_I(p, o, s) +# define BOOST_PP_WHILE_857(p, o, s) BOOST_PP_WHILE_857_I(p, o, s) +# define BOOST_PP_WHILE_858(p, o, s) BOOST_PP_WHILE_858_I(p, o, s) +# define BOOST_PP_WHILE_859(p, o, s) BOOST_PP_WHILE_859_I(p, o, s) +# define BOOST_PP_WHILE_860(p, o, s) BOOST_PP_WHILE_860_I(p, o, s) +# define BOOST_PP_WHILE_861(p, o, s) BOOST_PP_WHILE_861_I(p, o, s) +# define BOOST_PP_WHILE_862(p, o, s) BOOST_PP_WHILE_862_I(p, o, s) +# define BOOST_PP_WHILE_863(p, o, s) BOOST_PP_WHILE_863_I(p, o, s) +# define BOOST_PP_WHILE_864(p, o, s) BOOST_PP_WHILE_864_I(p, o, s) +# define BOOST_PP_WHILE_865(p, o, s) BOOST_PP_WHILE_865_I(p, o, s) +# define BOOST_PP_WHILE_866(p, o, s) BOOST_PP_WHILE_866_I(p, o, s) +# define BOOST_PP_WHILE_867(p, o, s) BOOST_PP_WHILE_867_I(p, o, s) +# define BOOST_PP_WHILE_868(p, o, s) BOOST_PP_WHILE_868_I(p, o, s) +# define BOOST_PP_WHILE_869(p, o, s) BOOST_PP_WHILE_869_I(p, o, s) +# define BOOST_PP_WHILE_870(p, o, s) BOOST_PP_WHILE_870_I(p, o, s) +# define BOOST_PP_WHILE_871(p, o, s) BOOST_PP_WHILE_871_I(p, o, s) +# define BOOST_PP_WHILE_872(p, o, s) BOOST_PP_WHILE_872_I(p, o, s) +# define BOOST_PP_WHILE_873(p, o, s) BOOST_PP_WHILE_873_I(p, o, s) +# define BOOST_PP_WHILE_874(p, o, s) BOOST_PP_WHILE_874_I(p, o, s) +# define BOOST_PP_WHILE_875(p, o, s) BOOST_PP_WHILE_875_I(p, o, s) +# define BOOST_PP_WHILE_876(p, o, s) BOOST_PP_WHILE_876_I(p, o, s) +# define BOOST_PP_WHILE_877(p, o, s) BOOST_PP_WHILE_877_I(p, o, s) +# define BOOST_PP_WHILE_878(p, o, s) BOOST_PP_WHILE_878_I(p, o, s) +# define BOOST_PP_WHILE_879(p, o, s) BOOST_PP_WHILE_879_I(p, o, s) +# define BOOST_PP_WHILE_880(p, o, s) BOOST_PP_WHILE_880_I(p, o, s) +# define BOOST_PP_WHILE_881(p, o, s) BOOST_PP_WHILE_881_I(p, o, s) +# define BOOST_PP_WHILE_882(p, o, s) BOOST_PP_WHILE_882_I(p, o, s) +# define BOOST_PP_WHILE_883(p, o, s) BOOST_PP_WHILE_883_I(p, o, s) +# define BOOST_PP_WHILE_884(p, o, s) BOOST_PP_WHILE_884_I(p, o, s) +# define BOOST_PP_WHILE_885(p, o, s) BOOST_PP_WHILE_885_I(p, o, s) +# define BOOST_PP_WHILE_886(p, o, s) BOOST_PP_WHILE_886_I(p, o, s) +# define BOOST_PP_WHILE_887(p, o, s) BOOST_PP_WHILE_887_I(p, o, s) +# define BOOST_PP_WHILE_888(p, o, s) BOOST_PP_WHILE_888_I(p, o, s) +# define BOOST_PP_WHILE_889(p, o, s) BOOST_PP_WHILE_889_I(p, o, s) +# define BOOST_PP_WHILE_890(p, o, s) BOOST_PP_WHILE_890_I(p, o, s) +# define BOOST_PP_WHILE_891(p, o, s) BOOST_PP_WHILE_891_I(p, o, s) +# define BOOST_PP_WHILE_892(p, o, s) BOOST_PP_WHILE_892_I(p, o, s) +# define BOOST_PP_WHILE_893(p, o, s) BOOST_PP_WHILE_893_I(p, o, s) +# define BOOST_PP_WHILE_894(p, o, s) BOOST_PP_WHILE_894_I(p, o, s) +# define BOOST_PP_WHILE_895(p, o, s) BOOST_PP_WHILE_895_I(p, o, s) +# define BOOST_PP_WHILE_896(p, o, s) BOOST_PP_WHILE_896_I(p, o, s) +# define BOOST_PP_WHILE_897(p, o, s) BOOST_PP_WHILE_897_I(p, o, s) +# define BOOST_PP_WHILE_898(p, o, s) BOOST_PP_WHILE_898_I(p, o, s) +# define BOOST_PP_WHILE_899(p, o, s) BOOST_PP_WHILE_899_I(p, o, s) +# define BOOST_PP_WHILE_900(p, o, s) BOOST_PP_WHILE_900_I(p, o, s) +# define BOOST_PP_WHILE_901(p, o, s) BOOST_PP_WHILE_901_I(p, o, s) +# define BOOST_PP_WHILE_902(p, o, s) BOOST_PP_WHILE_902_I(p, o, s) +# define BOOST_PP_WHILE_903(p, o, s) BOOST_PP_WHILE_903_I(p, o, s) +# define BOOST_PP_WHILE_904(p, o, s) BOOST_PP_WHILE_904_I(p, o, s) +# define BOOST_PP_WHILE_905(p, o, s) BOOST_PP_WHILE_905_I(p, o, s) +# define BOOST_PP_WHILE_906(p, o, s) BOOST_PP_WHILE_906_I(p, o, s) +# define BOOST_PP_WHILE_907(p, o, s) BOOST_PP_WHILE_907_I(p, o, s) +# define BOOST_PP_WHILE_908(p, o, s) BOOST_PP_WHILE_908_I(p, o, s) +# define BOOST_PP_WHILE_909(p, o, s) BOOST_PP_WHILE_909_I(p, o, s) +# define BOOST_PP_WHILE_910(p, o, s) BOOST_PP_WHILE_910_I(p, o, s) +# define BOOST_PP_WHILE_911(p, o, s) BOOST_PP_WHILE_911_I(p, o, s) +# define BOOST_PP_WHILE_912(p, o, s) BOOST_PP_WHILE_912_I(p, o, s) +# define BOOST_PP_WHILE_913(p, o, s) BOOST_PP_WHILE_913_I(p, o, s) +# define BOOST_PP_WHILE_914(p, o, s) BOOST_PP_WHILE_914_I(p, o, s) +# define BOOST_PP_WHILE_915(p, o, s) BOOST_PP_WHILE_915_I(p, o, s) +# define BOOST_PP_WHILE_916(p, o, s) BOOST_PP_WHILE_916_I(p, o, s) +# define BOOST_PP_WHILE_917(p, o, s) BOOST_PP_WHILE_917_I(p, o, s) +# define BOOST_PP_WHILE_918(p, o, s) BOOST_PP_WHILE_918_I(p, o, s) +# define BOOST_PP_WHILE_919(p, o, s) BOOST_PP_WHILE_919_I(p, o, s) +# define BOOST_PP_WHILE_920(p, o, s) BOOST_PP_WHILE_920_I(p, o, s) +# define BOOST_PP_WHILE_921(p, o, s) BOOST_PP_WHILE_921_I(p, o, s) +# define BOOST_PP_WHILE_922(p, o, s) BOOST_PP_WHILE_922_I(p, o, s) +# define BOOST_PP_WHILE_923(p, o, s) BOOST_PP_WHILE_923_I(p, o, s) +# define BOOST_PP_WHILE_924(p, o, s) BOOST_PP_WHILE_924_I(p, o, s) +# define BOOST_PP_WHILE_925(p, o, s) BOOST_PP_WHILE_925_I(p, o, s) +# define BOOST_PP_WHILE_926(p, o, s) BOOST_PP_WHILE_926_I(p, o, s) +# define BOOST_PP_WHILE_927(p, o, s) BOOST_PP_WHILE_927_I(p, o, s) +# define BOOST_PP_WHILE_928(p, o, s) BOOST_PP_WHILE_928_I(p, o, s) +# define BOOST_PP_WHILE_929(p, o, s) BOOST_PP_WHILE_929_I(p, o, s) +# define BOOST_PP_WHILE_930(p, o, s) BOOST_PP_WHILE_930_I(p, o, s) +# define BOOST_PP_WHILE_931(p, o, s) BOOST_PP_WHILE_931_I(p, o, s) +# define BOOST_PP_WHILE_932(p, o, s) BOOST_PP_WHILE_932_I(p, o, s) +# define BOOST_PP_WHILE_933(p, o, s) BOOST_PP_WHILE_933_I(p, o, s) +# define BOOST_PP_WHILE_934(p, o, s) BOOST_PP_WHILE_934_I(p, o, s) +# define BOOST_PP_WHILE_935(p, o, s) BOOST_PP_WHILE_935_I(p, o, s) +# define BOOST_PP_WHILE_936(p, o, s) BOOST_PP_WHILE_936_I(p, o, s) +# define BOOST_PP_WHILE_937(p, o, s) BOOST_PP_WHILE_937_I(p, o, s) +# define BOOST_PP_WHILE_938(p, o, s) BOOST_PP_WHILE_938_I(p, o, s) +# define BOOST_PP_WHILE_939(p, o, s) BOOST_PP_WHILE_939_I(p, o, s) +# define BOOST_PP_WHILE_940(p, o, s) BOOST_PP_WHILE_940_I(p, o, s) +# define BOOST_PP_WHILE_941(p, o, s) BOOST_PP_WHILE_941_I(p, o, s) +# define BOOST_PP_WHILE_942(p, o, s) BOOST_PP_WHILE_942_I(p, o, s) +# define BOOST_PP_WHILE_943(p, o, s) BOOST_PP_WHILE_943_I(p, o, s) +# define BOOST_PP_WHILE_944(p, o, s) BOOST_PP_WHILE_944_I(p, o, s) +# define BOOST_PP_WHILE_945(p, o, s) BOOST_PP_WHILE_945_I(p, o, s) +# define BOOST_PP_WHILE_946(p, o, s) BOOST_PP_WHILE_946_I(p, o, s) +# define BOOST_PP_WHILE_947(p, o, s) BOOST_PP_WHILE_947_I(p, o, s) +# define BOOST_PP_WHILE_948(p, o, s) BOOST_PP_WHILE_948_I(p, o, s) +# define BOOST_PP_WHILE_949(p, o, s) BOOST_PP_WHILE_949_I(p, o, s) +# define BOOST_PP_WHILE_950(p, o, s) BOOST_PP_WHILE_950_I(p, o, s) +# define BOOST_PP_WHILE_951(p, o, s) BOOST_PP_WHILE_951_I(p, o, s) +# define BOOST_PP_WHILE_952(p, o, s) BOOST_PP_WHILE_952_I(p, o, s) +# define BOOST_PP_WHILE_953(p, o, s) BOOST_PP_WHILE_953_I(p, o, s) +# define BOOST_PP_WHILE_954(p, o, s) BOOST_PP_WHILE_954_I(p, o, s) +# define BOOST_PP_WHILE_955(p, o, s) BOOST_PP_WHILE_955_I(p, o, s) +# define BOOST_PP_WHILE_956(p, o, s) BOOST_PP_WHILE_956_I(p, o, s) +# define BOOST_PP_WHILE_957(p, o, s) BOOST_PP_WHILE_957_I(p, o, s) +# define BOOST_PP_WHILE_958(p, o, s) BOOST_PP_WHILE_958_I(p, o, s) +# define BOOST_PP_WHILE_959(p, o, s) BOOST_PP_WHILE_959_I(p, o, s) +# define BOOST_PP_WHILE_960(p, o, s) BOOST_PP_WHILE_960_I(p, o, s) +# define BOOST_PP_WHILE_961(p, o, s) BOOST_PP_WHILE_961_I(p, o, s) +# define BOOST_PP_WHILE_962(p, o, s) BOOST_PP_WHILE_962_I(p, o, s) +# define BOOST_PP_WHILE_963(p, o, s) BOOST_PP_WHILE_963_I(p, o, s) +# define BOOST_PP_WHILE_964(p, o, s) BOOST_PP_WHILE_964_I(p, o, s) +# define BOOST_PP_WHILE_965(p, o, s) BOOST_PP_WHILE_965_I(p, o, s) +# define BOOST_PP_WHILE_966(p, o, s) BOOST_PP_WHILE_966_I(p, o, s) +# define BOOST_PP_WHILE_967(p, o, s) BOOST_PP_WHILE_967_I(p, o, s) +# define BOOST_PP_WHILE_968(p, o, s) BOOST_PP_WHILE_968_I(p, o, s) +# define BOOST_PP_WHILE_969(p, o, s) BOOST_PP_WHILE_969_I(p, o, s) +# define BOOST_PP_WHILE_970(p, o, s) BOOST_PP_WHILE_970_I(p, o, s) +# define BOOST_PP_WHILE_971(p, o, s) BOOST_PP_WHILE_971_I(p, o, s) +# define BOOST_PP_WHILE_972(p, o, s) BOOST_PP_WHILE_972_I(p, o, s) +# define BOOST_PP_WHILE_973(p, o, s) BOOST_PP_WHILE_973_I(p, o, s) +# define BOOST_PP_WHILE_974(p, o, s) BOOST_PP_WHILE_974_I(p, o, s) +# define BOOST_PP_WHILE_975(p, o, s) BOOST_PP_WHILE_975_I(p, o, s) +# define BOOST_PP_WHILE_976(p, o, s) BOOST_PP_WHILE_976_I(p, o, s) +# define BOOST_PP_WHILE_977(p, o, s) BOOST_PP_WHILE_977_I(p, o, s) +# define BOOST_PP_WHILE_978(p, o, s) BOOST_PP_WHILE_978_I(p, o, s) +# define BOOST_PP_WHILE_979(p, o, s) BOOST_PP_WHILE_979_I(p, o, s) +# define BOOST_PP_WHILE_980(p, o, s) BOOST_PP_WHILE_980_I(p, o, s) +# define BOOST_PP_WHILE_981(p, o, s) BOOST_PP_WHILE_981_I(p, o, s) +# define BOOST_PP_WHILE_982(p, o, s) BOOST_PP_WHILE_982_I(p, o, s) +# define BOOST_PP_WHILE_983(p, o, s) BOOST_PP_WHILE_983_I(p, o, s) +# define BOOST_PP_WHILE_984(p, o, s) BOOST_PP_WHILE_984_I(p, o, s) +# define BOOST_PP_WHILE_985(p, o, s) BOOST_PP_WHILE_985_I(p, o, s) +# define BOOST_PP_WHILE_986(p, o, s) BOOST_PP_WHILE_986_I(p, o, s) +# define BOOST_PP_WHILE_987(p, o, s) BOOST_PP_WHILE_987_I(p, o, s) +# define BOOST_PP_WHILE_988(p, o, s) BOOST_PP_WHILE_988_I(p, o, s) +# define BOOST_PP_WHILE_989(p, o, s) BOOST_PP_WHILE_989_I(p, o, s) +# define BOOST_PP_WHILE_990(p, o, s) BOOST_PP_WHILE_990_I(p, o, s) +# define BOOST_PP_WHILE_991(p, o, s) BOOST_PP_WHILE_991_I(p, o, s) +# define BOOST_PP_WHILE_992(p, o, s) BOOST_PP_WHILE_992_I(p, o, s) +# define BOOST_PP_WHILE_993(p, o, s) BOOST_PP_WHILE_993_I(p, o, s) +# define BOOST_PP_WHILE_994(p, o, s) BOOST_PP_WHILE_994_I(p, o, s) +# define BOOST_PP_WHILE_995(p, o, s) BOOST_PP_WHILE_995_I(p, o, s) +# define BOOST_PP_WHILE_996(p, o, s) BOOST_PP_WHILE_996_I(p, o, s) +# define BOOST_PP_WHILE_997(p, o, s) BOOST_PP_WHILE_997_I(p, o, s) +# define BOOST_PP_WHILE_998(p, o, s) BOOST_PP_WHILE_998_I(p, o, s) +# define BOOST_PP_WHILE_999(p, o, s) BOOST_PP_WHILE_999_I(p, o, s) +# define BOOST_PP_WHILE_1000(p, o, s) BOOST_PP_WHILE_1000_I(p, o, s) +# define BOOST_PP_WHILE_1001(p, o, s) BOOST_PP_WHILE_1001_I(p, o, s) +# define BOOST_PP_WHILE_1002(p, o, s) BOOST_PP_WHILE_1002_I(p, o, s) +# define BOOST_PP_WHILE_1003(p, o, s) BOOST_PP_WHILE_1003_I(p, o, s) +# define BOOST_PP_WHILE_1004(p, o, s) BOOST_PP_WHILE_1004_I(p, o, s) +# define BOOST_PP_WHILE_1005(p, o, s) BOOST_PP_WHILE_1005_I(p, o, s) +# define BOOST_PP_WHILE_1006(p, o, s) BOOST_PP_WHILE_1006_I(p, o, s) +# define BOOST_PP_WHILE_1007(p, o, s) BOOST_PP_WHILE_1007_I(p, o, s) +# define BOOST_PP_WHILE_1008(p, o, s) BOOST_PP_WHILE_1008_I(p, o, s) +# define BOOST_PP_WHILE_1009(p, o, s) BOOST_PP_WHILE_1009_I(p, o, s) +# define BOOST_PP_WHILE_1010(p, o, s) BOOST_PP_WHILE_1010_I(p, o, s) +# define BOOST_PP_WHILE_1011(p, o, s) BOOST_PP_WHILE_1011_I(p, o, s) +# define BOOST_PP_WHILE_1012(p, o, s) BOOST_PP_WHILE_1012_I(p, o, s) +# define BOOST_PP_WHILE_1013(p, o, s) BOOST_PP_WHILE_1013_I(p, o, s) +# define BOOST_PP_WHILE_1014(p, o, s) BOOST_PP_WHILE_1014_I(p, o, s) +# define BOOST_PP_WHILE_1015(p, o, s) BOOST_PP_WHILE_1015_I(p, o, s) +# define BOOST_PP_WHILE_1016(p, o, s) BOOST_PP_WHILE_1016_I(p, o, s) +# define BOOST_PP_WHILE_1017(p, o, s) BOOST_PP_WHILE_1017_I(p, o, s) +# define BOOST_PP_WHILE_1018(p, o, s) BOOST_PP_WHILE_1018_I(p, o, s) +# define BOOST_PP_WHILE_1019(p, o, s) BOOST_PP_WHILE_1019_I(p, o, s) +# define BOOST_PP_WHILE_1020(p, o, s) BOOST_PP_WHILE_1020_I(p, o, s) +# define BOOST_PP_WHILE_1021(p, o, s) BOOST_PP_WHILE_1021_I(p, o, s) +# define BOOST_PP_WHILE_1022(p, o, s) BOOST_PP_WHILE_1022_I(p, o, s) +# define BOOST_PP_WHILE_1023(p, o, s) BOOST_PP_WHILE_1023_I(p, o, s) +# define BOOST_PP_WHILE_1024(p, o, s) BOOST_PP_WHILE_1024_I(p, o, s) +# +# define BOOST_PP_WHILE_513_I(p, o, s) BOOST_PP_IF(p(514, s), BOOST_PP_WHILE_514, s BOOST_PP_TUPLE_EAT_3)(p, o, o(514, s)) +# define BOOST_PP_WHILE_514_I(p, o, s) BOOST_PP_IF(p(515, s), BOOST_PP_WHILE_515, s BOOST_PP_TUPLE_EAT_3)(p, o, o(515, s)) +# define BOOST_PP_WHILE_515_I(p, o, s) BOOST_PP_IF(p(516, s), BOOST_PP_WHILE_516, s BOOST_PP_TUPLE_EAT_3)(p, o, o(516, s)) +# define BOOST_PP_WHILE_516_I(p, o, s) BOOST_PP_IF(p(517, s), BOOST_PP_WHILE_517, s BOOST_PP_TUPLE_EAT_3)(p, o, o(517, s)) +# define BOOST_PP_WHILE_517_I(p, o, s) BOOST_PP_IF(p(518, s), BOOST_PP_WHILE_518, s BOOST_PP_TUPLE_EAT_3)(p, o, o(518, s)) +# define BOOST_PP_WHILE_518_I(p, o, s) BOOST_PP_IF(p(519, s), BOOST_PP_WHILE_519, s BOOST_PP_TUPLE_EAT_3)(p, o, o(519, s)) +# define BOOST_PP_WHILE_519_I(p, o, s) BOOST_PP_IF(p(520, s), BOOST_PP_WHILE_520, s BOOST_PP_TUPLE_EAT_3)(p, o, o(520, s)) +# define BOOST_PP_WHILE_520_I(p, o, s) BOOST_PP_IF(p(521, s), BOOST_PP_WHILE_521, s BOOST_PP_TUPLE_EAT_3)(p, o, o(521, s)) +# define BOOST_PP_WHILE_521_I(p, o, s) BOOST_PP_IF(p(522, s), BOOST_PP_WHILE_522, s BOOST_PP_TUPLE_EAT_3)(p, o, o(522, s)) +# define BOOST_PP_WHILE_522_I(p, o, s) BOOST_PP_IF(p(523, s), BOOST_PP_WHILE_523, s BOOST_PP_TUPLE_EAT_3)(p, o, o(523, s)) +# define BOOST_PP_WHILE_523_I(p, o, s) BOOST_PP_IF(p(524, s), BOOST_PP_WHILE_524, s BOOST_PP_TUPLE_EAT_3)(p, o, o(524, s)) +# define BOOST_PP_WHILE_524_I(p, o, s) BOOST_PP_IF(p(525, s), BOOST_PP_WHILE_525, s BOOST_PP_TUPLE_EAT_3)(p, o, o(525, s)) +# define BOOST_PP_WHILE_525_I(p, o, s) BOOST_PP_IF(p(526, s), BOOST_PP_WHILE_526, s BOOST_PP_TUPLE_EAT_3)(p, o, o(526, s)) +# define BOOST_PP_WHILE_526_I(p, o, s) BOOST_PP_IF(p(527, s), BOOST_PP_WHILE_527, s BOOST_PP_TUPLE_EAT_3)(p, o, o(527, s)) +# define BOOST_PP_WHILE_527_I(p, o, s) BOOST_PP_IF(p(528, s), BOOST_PP_WHILE_528, s BOOST_PP_TUPLE_EAT_3)(p, o, o(528, s)) +# define BOOST_PP_WHILE_528_I(p, o, s) BOOST_PP_IF(p(529, s), BOOST_PP_WHILE_529, s BOOST_PP_TUPLE_EAT_3)(p, o, o(529, s)) +# define BOOST_PP_WHILE_529_I(p, o, s) BOOST_PP_IF(p(530, s), BOOST_PP_WHILE_530, s BOOST_PP_TUPLE_EAT_3)(p, o, o(530, s)) +# define BOOST_PP_WHILE_530_I(p, o, s) BOOST_PP_IF(p(531, s), BOOST_PP_WHILE_531, s BOOST_PP_TUPLE_EAT_3)(p, o, o(531, s)) +# define BOOST_PP_WHILE_531_I(p, o, s) BOOST_PP_IF(p(532, s), BOOST_PP_WHILE_532, s BOOST_PP_TUPLE_EAT_3)(p, o, o(532, s)) +# define BOOST_PP_WHILE_532_I(p, o, s) BOOST_PP_IF(p(533, s), BOOST_PP_WHILE_533, s BOOST_PP_TUPLE_EAT_3)(p, o, o(533, s)) +# define BOOST_PP_WHILE_533_I(p, o, s) BOOST_PP_IF(p(534, s), BOOST_PP_WHILE_534, s BOOST_PP_TUPLE_EAT_3)(p, o, o(534, s)) +# define BOOST_PP_WHILE_534_I(p, o, s) BOOST_PP_IF(p(535, s), BOOST_PP_WHILE_535, s BOOST_PP_TUPLE_EAT_3)(p, o, o(535, s)) +# define BOOST_PP_WHILE_535_I(p, o, s) BOOST_PP_IF(p(536, s), BOOST_PP_WHILE_536, s BOOST_PP_TUPLE_EAT_3)(p, o, o(536, s)) +# define BOOST_PP_WHILE_536_I(p, o, s) BOOST_PP_IF(p(537, s), BOOST_PP_WHILE_537, s BOOST_PP_TUPLE_EAT_3)(p, o, o(537, s)) +# define BOOST_PP_WHILE_537_I(p, o, s) BOOST_PP_IF(p(538, s), BOOST_PP_WHILE_538, s BOOST_PP_TUPLE_EAT_3)(p, o, o(538, s)) +# define BOOST_PP_WHILE_538_I(p, o, s) BOOST_PP_IF(p(539, s), BOOST_PP_WHILE_539, s BOOST_PP_TUPLE_EAT_3)(p, o, o(539, s)) +# define BOOST_PP_WHILE_539_I(p, o, s) BOOST_PP_IF(p(540, s), BOOST_PP_WHILE_540, s BOOST_PP_TUPLE_EAT_3)(p, o, o(540, s)) +# define BOOST_PP_WHILE_540_I(p, o, s) BOOST_PP_IF(p(541, s), BOOST_PP_WHILE_541, s BOOST_PP_TUPLE_EAT_3)(p, o, o(541, s)) +# define BOOST_PP_WHILE_541_I(p, o, s) BOOST_PP_IF(p(542, s), BOOST_PP_WHILE_542, s BOOST_PP_TUPLE_EAT_3)(p, o, o(542, s)) +# define BOOST_PP_WHILE_542_I(p, o, s) BOOST_PP_IF(p(543, s), BOOST_PP_WHILE_543, s BOOST_PP_TUPLE_EAT_3)(p, o, o(543, s)) +# define BOOST_PP_WHILE_543_I(p, o, s) BOOST_PP_IF(p(544, s), BOOST_PP_WHILE_544, s BOOST_PP_TUPLE_EAT_3)(p, o, o(544, s)) +# define BOOST_PP_WHILE_544_I(p, o, s) BOOST_PP_IF(p(545, s), BOOST_PP_WHILE_545, s BOOST_PP_TUPLE_EAT_3)(p, o, o(545, s)) +# define BOOST_PP_WHILE_545_I(p, o, s) BOOST_PP_IF(p(546, s), BOOST_PP_WHILE_546, s BOOST_PP_TUPLE_EAT_3)(p, o, o(546, s)) +# define BOOST_PP_WHILE_546_I(p, o, s) BOOST_PP_IF(p(547, s), BOOST_PP_WHILE_547, s BOOST_PP_TUPLE_EAT_3)(p, o, o(547, s)) +# define BOOST_PP_WHILE_547_I(p, o, s) BOOST_PP_IF(p(548, s), BOOST_PP_WHILE_548, s BOOST_PP_TUPLE_EAT_3)(p, o, o(548, s)) +# define BOOST_PP_WHILE_548_I(p, o, s) BOOST_PP_IF(p(549, s), BOOST_PP_WHILE_549, s BOOST_PP_TUPLE_EAT_3)(p, o, o(549, s)) +# define BOOST_PP_WHILE_549_I(p, o, s) BOOST_PP_IF(p(550, s), BOOST_PP_WHILE_550, s BOOST_PP_TUPLE_EAT_3)(p, o, o(550, s)) +# define BOOST_PP_WHILE_550_I(p, o, s) BOOST_PP_IF(p(551, s), BOOST_PP_WHILE_551, s BOOST_PP_TUPLE_EAT_3)(p, o, o(551, s)) +# define BOOST_PP_WHILE_551_I(p, o, s) BOOST_PP_IF(p(552, s), BOOST_PP_WHILE_552, s BOOST_PP_TUPLE_EAT_3)(p, o, o(552, s)) +# define BOOST_PP_WHILE_552_I(p, o, s) BOOST_PP_IF(p(553, s), BOOST_PP_WHILE_553, s BOOST_PP_TUPLE_EAT_3)(p, o, o(553, s)) +# define BOOST_PP_WHILE_553_I(p, o, s) BOOST_PP_IF(p(554, s), BOOST_PP_WHILE_554, s BOOST_PP_TUPLE_EAT_3)(p, o, o(554, s)) +# define BOOST_PP_WHILE_554_I(p, o, s) BOOST_PP_IF(p(555, s), BOOST_PP_WHILE_555, s BOOST_PP_TUPLE_EAT_3)(p, o, o(555, s)) +# define BOOST_PP_WHILE_555_I(p, o, s) BOOST_PP_IF(p(556, s), BOOST_PP_WHILE_556, s BOOST_PP_TUPLE_EAT_3)(p, o, o(556, s)) +# define BOOST_PP_WHILE_556_I(p, o, s) BOOST_PP_IF(p(557, s), BOOST_PP_WHILE_557, s BOOST_PP_TUPLE_EAT_3)(p, o, o(557, s)) +# define BOOST_PP_WHILE_557_I(p, o, s) BOOST_PP_IF(p(558, s), BOOST_PP_WHILE_558, s BOOST_PP_TUPLE_EAT_3)(p, o, o(558, s)) +# define BOOST_PP_WHILE_558_I(p, o, s) BOOST_PP_IF(p(559, s), BOOST_PP_WHILE_559, s BOOST_PP_TUPLE_EAT_3)(p, o, o(559, s)) +# define BOOST_PP_WHILE_559_I(p, o, s) BOOST_PP_IF(p(560, s), BOOST_PP_WHILE_560, s BOOST_PP_TUPLE_EAT_3)(p, o, o(560, s)) +# define BOOST_PP_WHILE_560_I(p, o, s) BOOST_PP_IF(p(561, s), BOOST_PP_WHILE_561, s BOOST_PP_TUPLE_EAT_3)(p, o, o(561, s)) +# define BOOST_PP_WHILE_561_I(p, o, s) BOOST_PP_IF(p(562, s), BOOST_PP_WHILE_562, s BOOST_PP_TUPLE_EAT_3)(p, o, o(562, s)) +# define BOOST_PP_WHILE_562_I(p, o, s) BOOST_PP_IF(p(563, s), BOOST_PP_WHILE_563, s BOOST_PP_TUPLE_EAT_3)(p, o, o(563, s)) +# define BOOST_PP_WHILE_563_I(p, o, s) BOOST_PP_IF(p(564, s), BOOST_PP_WHILE_564, s BOOST_PP_TUPLE_EAT_3)(p, o, o(564, s)) +# define BOOST_PP_WHILE_564_I(p, o, s) BOOST_PP_IF(p(565, s), BOOST_PP_WHILE_565, s BOOST_PP_TUPLE_EAT_3)(p, o, o(565, s)) +# define BOOST_PP_WHILE_565_I(p, o, s) BOOST_PP_IF(p(566, s), BOOST_PP_WHILE_566, s BOOST_PP_TUPLE_EAT_3)(p, o, o(566, s)) +# define BOOST_PP_WHILE_566_I(p, o, s) BOOST_PP_IF(p(567, s), BOOST_PP_WHILE_567, s BOOST_PP_TUPLE_EAT_3)(p, o, o(567, s)) +# define BOOST_PP_WHILE_567_I(p, o, s) BOOST_PP_IF(p(568, s), BOOST_PP_WHILE_568, s BOOST_PP_TUPLE_EAT_3)(p, o, o(568, s)) +# define BOOST_PP_WHILE_568_I(p, o, s) BOOST_PP_IF(p(569, s), BOOST_PP_WHILE_569, s BOOST_PP_TUPLE_EAT_3)(p, o, o(569, s)) +# define BOOST_PP_WHILE_569_I(p, o, s) BOOST_PP_IF(p(570, s), BOOST_PP_WHILE_570, s BOOST_PP_TUPLE_EAT_3)(p, o, o(570, s)) +# define BOOST_PP_WHILE_570_I(p, o, s) BOOST_PP_IF(p(571, s), BOOST_PP_WHILE_571, s BOOST_PP_TUPLE_EAT_3)(p, o, o(571, s)) +# define BOOST_PP_WHILE_571_I(p, o, s) BOOST_PP_IF(p(572, s), BOOST_PP_WHILE_572, s BOOST_PP_TUPLE_EAT_3)(p, o, o(572, s)) +# define BOOST_PP_WHILE_572_I(p, o, s) BOOST_PP_IF(p(573, s), BOOST_PP_WHILE_573, s BOOST_PP_TUPLE_EAT_3)(p, o, o(573, s)) +# define BOOST_PP_WHILE_573_I(p, o, s) BOOST_PP_IF(p(574, s), BOOST_PP_WHILE_574, s BOOST_PP_TUPLE_EAT_3)(p, o, o(574, s)) +# define BOOST_PP_WHILE_574_I(p, o, s) BOOST_PP_IF(p(575, s), BOOST_PP_WHILE_575, s BOOST_PP_TUPLE_EAT_3)(p, o, o(575, s)) +# define BOOST_PP_WHILE_575_I(p, o, s) BOOST_PP_IF(p(576, s), BOOST_PP_WHILE_576, s BOOST_PP_TUPLE_EAT_3)(p, o, o(576, s)) +# define BOOST_PP_WHILE_576_I(p, o, s) BOOST_PP_IF(p(577, s), BOOST_PP_WHILE_577, s BOOST_PP_TUPLE_EAT_3)(p, o, o(577, s)) +# define BOOST_PP_WHILE_577_I(p, o, s) BOOST_PP_IF(p(578, s), BOOST_PP_WHILE_578, s BOOST_PP_TUPLE_EAT_3)(p, o, o(578, s)) +# define BOOST_PP_WHILE_578_I(p, o, s) BOOST_PP_IF(p(579, s), BOOST_PP_WHILE_579, s BOOST_PP_TUPLE_EAT_3)(p, o, o(579, s)) +# define BOOST_PP_WHILE_579_I(p, o, s) BOOST_PP_IF(p(580, s), BOOST_PP_WHILE_580, s BOOST_PP_TUPLE_EAT_3)(p, o, o(580, s)) +# define BOOST_PP_WHILE_580_I(p, o, s) BOOST_PP_IF(p(581, s), BOOST_PP_WHILE_581, s BOOST_PP_TUPLE_EAT_3)(p, o, o(581, s)) +# define BOOST_PP_WHILE_581_I(p, o, s) BOOST_PP_IF(p(582, s), BOOST_PP_WHILE_582, s BOOST_PP_TUPLE_EAT_3)(p, o, o(582, s)) +# define BOOST_PP_WHILE_582_I(p, o, s) BOOST_PP_IF(p(583, s), BOOST_PP_WHILE_583, s BOOST_PP_TUPLE_EAT_3)(p, o, o(583, s)) +# define BOOST_PP_WHILE_583_I(p, o, s) BOOST_PP_IF(p(584, s), BOOST_PP_WHILE_584, s BOOST_PP_TUPLE_EAT_3)(p, o, o(584, s)) +# define BOOST_PP_WHILE_584_I(p, o, s) BOOST_PP_IF(p(585, s), BOOST_PP_WHILE_585, s BOOST_PP_TUPLE_EAT_3)(p, o, o(585, s)) +# define BOOST_PP_WHILE_585_I(p, o, s) BOOST_PP_IF(p(586, s), BOOST_PP_WHILE_586, s BOOST_PP_TUPLE_EAT_3)(p, o, o(586, s)) +# define BOOST_PP_WHILE_586_I(p, o, s) BOOST_PP_IF(p(587, s), BOOST_PP_WHILE_587, s BOOST_PP_TUPLE_EAT_3)(p, o, o(587, s)) +# define BOOST_PP_WHILE_587_I(p, o, s) BOOST_PP_IF(p(588, s), BOOST_PP_WHILE_588, s BOOST_PP_TUPLE_EAT_3)(p, o, o(588, s)) +# define BOOST_PP_WHILE_588_I(p, o, s) BOOST_PP_IF(p(589, s), BOOST_PP_WHILE_589, s BOOST_PP_TUPLE_EAT_3)(p, o, o(589, s)) +# define BOOST_PP_WHILE_589_I(p, o, s) BOOST_PP_IF(p(590, s), BOOST_PP_WHILE_590, s BOOST_PP_TUPLE_EAT_3)(p, o, o(590, s)) +# define BOOST_PP_WHILE_590_I(p, o, s) BOOST_PP_IF(p(591, s), BOOST_PP_WHILE_591, s BOOST_PP_TUPLE_EAT_3)(p, o, o(591, s)) +# define BOOST_PP_WHILE_591_I(p, o, s) BOOST_PP_IF(p(592, s), BOOST_PP_WHILE_592, s BOOST_PP_TUPLE_EAT_3)(p, o, o(592, s)) +# define BOOST_PP_WHILE_592_I(p, o, s) BOOST_PP_IF(p(593, s), BOOST_PP_WHILE_593, s BOOST_PP_TUPLE_EAT_3)(p, o, o(593, s)) +# define BOOST_PP_WHILE_593_I(p, o, s) BOOST_PP_IF(p(594, s), BOOST_PP_WHILE_594, s BOOST_PP_TUPLE_EAT_3)(p, o, o(594, s)) +# define BOOST_PP_WHILE_594_I(p, o, s) BOOST_PP_IF(p(595, s), BOOST_PP_WHILE_595, s BOOST_PP_TUPLE_EAT_3)(p, o, o(595, s)) +# define BOOST_PP_WHILE_595_I(p, o, s) BOOST_PP_IF(p(596, s), BOOST_PP_WHILE_596, s BOOST_PP_TUPLE_EAT_3)(p, o, o(596, s)) +# define BOOST_PP_WHILE_596_I(p, o, s) BOOST_PP_IF(p(597, s), BOOST_PP_WHILE_597, s BOOST_PP_TUPLE_EAT_3)(p, o, o(597, s)) +# define BOOST_PP_WHILE_597_I(p, o, s) BOOST_PP_IF(p(598, s), BOOST_PP_WHILE_598, s BOOST_PP_TUPLE_EAT_3)(p, o, o(598, s)) +# define BOOST_PP_WHILE_598_I(p, o, s) BOOST_PP_IF(p(599, s), BOOST_PP_WHILE_599, s BOOST_PP_TUPLE_EAT_3)(p, o, o(599, s)) +# define BOOST_PP_WHILE_599_I(p, o, s) BOOST_PP_IF(p(600, s), BOOST_PP_WHILE_600, s BOOST_PP_TUPLE_EAT_3)(p, o, o(600, s)) +# define BOOST_PP_WHILE_600_I(p, o, s) BOOST_PP_IF(p(601, s), BOOST_PP_WHILE_601, s BOOST_PP_TUPLE_EAT_3)(p, o, o(601, s)) +# define BOOST_PP_WHILE_601_I(p, o, s) BOOST_PP_IF(p(602, s), BOOST_PP_WHILE_602, s BOOST_PP_TUPLE_EAT_3)(p, o, o(602, s)) +# define BOOST_PP_WHILE_602_I(p, o, s) BOOST_PP_IF(p(603, s), BOOST_PP_WHILE_603, s BOOST_PP_TUPLE_EAT_3)(p, o, o(603, s)) +# define BOOST_PP_WHILE_603_I(p, o, s) BOOST_PP_IF(p(604, s), BOOST_PP_WHILE_604, s BOOST_PP_TUPLE_EAT_3)(p, o, o(604, s)) +# define BOOST_PP_WHILE_604_I(p, o, s) BOOST_PP_IF(p(605, s), BOOST_PP_WHILE_605, s BOOST_PP_TUPLE_EAT_3)(p, o, o(605, s)) +# define BOOST_PP_WHILE_605_I(p, o, s) BOOST_PP_IF(p(606, s), BOOST_PP_WHILE_606, s BOOST_PP_TUPLE_EAT_3)(p, o, o(606, s)) +# define BOOST_PP_WHILE_606_I(p, o, s) BOOST_PP_IF(p(607, s), BOOST_PP_WHILE_607, s BOOST_PP_TUPLE_EAT_3)(p, o, o(607, s)) +# define BOOST_PP_WHILE_607_I(p, o, s) BOOST_PP_IF(p(608, s), BOOST_PP_WHILE_608, s BOOST_PP_TUPLE_EAT_3)(p, o, o(608, s)) +# define BOOST_PP_WHILE_608_I(p, o, s) BOOST_PP_IF(p(609, s), BOOST_PP_WHILE_609, s BOOST_PP_TUPLE_EAT_3)(p, o, o(609, s)) +# define BOOST_PP_WHILE_609_I(p, o, s) BOOST_PP_IF(p(610, s), BOOST_PP_WHILE_610, s BOOST_PP_TUPLE_EAT_3)(p, o, o(610, s)) +# define BOOST_PP_WHILE_610_I(p, o, s) BOOST_PP_IF(p(611, s), BOOST_PP_WHILE_611, s BOOST_PP_TUPLE_EAT_3)(p, o, o(611, s)) +# define BOOST_PP_WHILE_611_I(p, o, s) BOOST_PP_IF(p(612, s), BOOST_PP_WHILE_612, s BOOST_PP_TUPLE_EAT_3)(p, o, o(612, s)) +# define BOOST_PP_WHILE_612_I(p, o, s) BOOST_PP_IF(p(613, s), BOOST_PP_WHILE_613, s BOOST_PP_TUPLE_EAT_3)(p, o, o(613, s)) +# define BOOST_PP_WHILE_613_I(p, o, s) BOOST_PP_IF(p(614, s), BOOST_PP_WHILE_614, s BOOST_PP_TUPLE_EAT_3)(p, o, o(614, s)) +# define BOOST_PP_WHILE_614_I(p, o, s) BOOST_PP_IF(p(615, s), BOOST_PP_WHILE_615, s BOOST_PP_TUPLE_EAT_3)(p, o, o(615, s)) +# define BOOST_PP_WHILE_615_I(p, o, s) BOOST_PP_IF(p(616, s), BOOST_PP_WHILE_616, s BOOST_PP_TUPLE_EAT_3)(p, o, o(616, s)) +# define BOOST_PP_WHILE_616_I(p, o, s) BOOST_PP_IF(p(617, s), BOOST_PP_WHILE_617, s BOOST_PP_TUPLE_EAT_3)(p, o, o(617, s)) +# define BOOST_PP_WHILE_617_I(p, o, s) BOOST_PP_IF(p(618, s), BOOST_PP_WHILE_618, s BOOST_PP_TUPLE_EAT_3)(p, o, o(618, s)) +# define BOOST_PP_WHILE_618_I(p, o, s) BOOST_PP_IF(p(619, s), BOOST_PP_WHILE_619, s BOOST_PP_TUPLE_EAT_3)(p, o, o(619, s)) +# define BOOST_PP_WHILE_619_I(p, o, s) BOOST_PP_IF(p(620, s), BOOST_PP_WHILE_620, s BOOST_PP_TUPLE_EAT_3)(p, o, o(620, s)) +# define BOOST_PP_WHILE_620_I(p, o, s) BOOST_PP_IF(p(621, s), BOOST_PP_WHILE_621, s BOOST_PP_TUPLE_EAT_3)(p, o, o(621, s)) +# define BOOST_PP_WHILE_621_I(p, o, s) BOOST_PP_IF(p(622, s), BOOST_PP_WHILE_622, s BOOST_PP_TUPLE_EAT_3)(p, o, o(622, s)) +# define BOOST_PP_WHILE_622_I(p, o, s) BOOST_PP_IF(p(623, s), BOOST_PP_WHILE_623, s BOOST_PP_TUPLE_EAT_3)(p, o, o(623, s)) +# define BOOST_PP_WHILE_623_I(p, o, s) BOOST_PP_IF(p(624, s), BOOST_PP_WHILE_624, s BOOST_PP_TUPLE_EAT_3)(p, o, o(624, s)) +# define BOOST_PP_WHILE_624_I(p, o, s) BOOST_PP_IF(p(625, s), BOOST_PP_WHILE_625, s BOOST_PP_TUPLE_EAT_3)(p, o, o(625, s)) +# define BOOST_PP_WHILE_625_I(p, o, s) BOOST_PP_IF(p(626, s), BOOST_PP_WHILE_626, s BOOST_PP_TUPLE_EAT_3)(p, o, o(626, s)) +# define BOOST_PP_WHILE_626_I(p, o, s) BOOST_PP_IF(p(627, s), BOOST_PP_WHILE_627, s BOOST_PP_TUPLE_EAT_3)(p, o, o(627, s)) +# define BOOST_PP_WHILE_627_I(p, o, s) BOOST_PP_IF(p(628, s), BOOST_PP_WHILE_628, s BOOST_PP_TUPLE_EAT_3)(p, o, o(628, s)) +# define BOOST_PP_WHILE_628_I(p, o, s) BOOST_PP_IF(p(629, s), BOOST_PP_WHILE_629, s BOOST_PP_TUPLE_EAT_3)(p, o, o(629, s)) +# define BOOST_PP_WHILE_629_I(p, o, s) BOOST_PP_IF(p(630, s), BOOST_PP_WHILE_630, s BOOST_PP_TUPLE_EAT_3)(p, o, o(630, s)) +# define BOOST_PP_WHILE_630_I(p, o, s) BOOST_PP_IF(p(631, s), BOOST_PP_WHILE_631, s BOOST_PP_TUPLE_EAT_3)(p, o, o(631, s)) +# define BOOST_PP_WHILE_631_I(p, o, s) BOOST_PP_IF(p(632, s), BOOST_PP_WHILE_632, s BOOST_PP_TUPLE_EAT_3)(p, o, o(632, s)) +# define BOOST_PP_WHILE_632_I(p, o, s) BOOST_PP_IF(p(633, s), BOOST_PP_WHILE_633, s BOOST_PP_TUPLE_EAT_3)(p, o, o(633, s)) +# define BOOST_PP_WHILE_633_I(p, o, s) BOOST_PP_IF(p(634, s), BOOST_PP_WHILE_634, s BOOST_PP_TUPLE_EAT_3)(p, o, o(634, s)) +# define BOOST_PP_WHILE_634_I(p, o, s) BOOST_PP_IF(p(635, s), BOOST_PP_WHILE_635, s BOOST_PP_TUPLE_EAT_3)(p, o, o(635, s)) +# define BOOST_PP_WHILE_635_I(p, o, s) BOOST_PP_IF(p(636, s), BOOST_PP_WHILE_636, s BOOST_PP_TUPLE_EAT_3)(p, o, o(636, s)) +# define BOOST_PP_WHILE_636_I(p, o, s) BOOST_PP_IF(p(637, s), BOOST_PP_WHILE_637, s BOOST_PP_TUPLE_EAT_3)(p, o, o(637, s)) +# define BOOST_PP_WHILE_637_I(p, o, s) BOOST_PP_IF(p(638, s), BOOST_PP_WHILE_638, s BOOST_PP_TUPLE_EAT_3)(p, o, o(638, s)) +# define BOOST_PP_WHILE_638_I(p, o, s) BOOST_PP_IF(p(639, s), BOOST_PP_WHILE_639, s BOOST_PP_TUPLE_EAT_3)(p, o, o(639, s)) +# define BOOST_PP_WHILE_639_I(p, o, s) BOOST_PP_IF(p(640, s), BOOST_PP_WHILE_640, s BOOST_PP_TUPLE_EAT_3)(p, o, o(640, s)) +# define BOOST_PP_WHILE_640_I(p, o, s) BOOST_PP_IF(p(641, s), BOOST_PP_WHILE_641, s BOOST_PP_TUPLE_EAT_3)(p, o, o(641, s)) +# define BOOST_PP_WHILE_641_I(p, o, s) BOOST_PP_IF(p(642, s), BOOST_PP_WHILE_642, s BOOST_PP_TUPLE_EAT_3)(p, o, o(642, s)) +# define BOOST_PP_WHILE_642_I(p, o, s) BOOST_PP_IF(p(643, s), BOOST_PP_WHILE_643, s BOOST_PP_TUPLE_EAT_3)(p, o, o(643, s)) +# define BOOST_PP_WHILE_643_I(p, o, s) BOOST_PP_IF(p(644, s), BOOST_PP_WHILE_644, s BOOST_PP_TUPLE_EAT_3)(p, o, o(644, s)) +# define BOOST_PP_WHILE_644_I(p, o, s) BOOST_PP_IF(p(645, s), BOOST_PP_WHILE_645, s BOOST_PP_TUPLE_EAT_3)(p, o, o(645, s)) +# define BOOST_PP_WHILE_645_I(p, o, s) BOOST_PP_IF(p(646, s), BOOST_PP_WHILE_646, s BOOST_PP_TUPLE_EAT_3)(p, o, o(646, s)) +# define BOOST_PP_WHILE_646_I(p, o, s) BOOST_PP_IF(p(647, s), BOOST_PP_WHILE_647, s BOOST_PP_TUPLE_EAT_3)(p, o, o(647, s)) +# define BOOST_PP_WHILE_647_I(p, o, s) BOOST_PP_IF(p(648, s), BOOST_PP_WHILE_648, s BOOST_PP_TUPLE_EAT_3)(p, o, o(648, s)) +# define BOOST_PP_WHILE_648_I(p, o, s) BOOST_PP_IF(p(649, s), BOOST_PP_WHILE_649, s BOOST_PP_TUPLE_EAT_3)(p, o, o(649, s)) +# define BOOST_PP_WHILE_649_I(p, o, s) BOOST_PP_IF(p(650, s), BOOST_PP_WHILE_650, s BOOST_PP_TUPLE_EAT_3)(p, o, o(650, s)) +# define BOOST_PP_WHILE_650_I(p, o, s) BOOST_PP_IF(p(651, s), BOOST_PP_WHILE_651, s BOOST_PP_TUPLE_EAT_3)(p, o, o(651, s)) +# define BOOST_PP_WHILE_651_I(p, o, s) BOOST_PP_IF(p(652, s), BOOST_PP_WHILE_652, s BOOST_PP_TUPLE_EAT_3)(p, o, o(652, s)) +# define BOOST_PP_WHILE_652_I(p, o, s) BOOST_PP_IF(p(653, s), BOOST_PP_WHILE_653, s BOOST_PP_TUPLE_EAT_3)(p, o, o(653, s)) +# define BOOST_PP_WHILE_653_I(p, o, s) BOOST_PP_IF(p(654, s), BOOST_PP_WHILE_654, s BOOST_PP_TUPLE_EAT_3)(p, o, o(654, s)) +# define BOOST_PP_WHILE_654_I(p, o, s) BOOST_PP_IF(p(655, s), BOOST_PP_WHILE_655, s BOOST_PP_TUPLE_EAT_3)(p, o, o(655, s)) +# define BOOST_PP_WHILE_655_I(p, o, s) BOOST_PP_IF(p(656, s), BOOST_PP_WHILE_656, s BOOST_PP_TUPLE_EAT_3)(p, o, o(656, s)) +# define BOOST_PP_WHILE_656_I(p, o, s) BOOST_PP_IF(p(657, s), BOOST_PP_WHILE_657, s BOOST_PP_TUPLE_EAT_3)(p, o, o(657, s)) +# define BOOST_PP_WHILE_657_I(p, o, s) BOOST_PP_IF(p(658, s), BOOST_PP_WHILE_658, s BOOST_PP_TUPLE_EAT_3)(p, o, o(658, s)) +# define BOOST_PP_WHILE_658_I(p, o, s) BOOST_PP_IF(p(659, s), BOOST_PP_WHILE_659, s BOOST_PP_TUPLE_EAT_3)(p, o, o(659, s)) +# define BOOST_PP_WHILE_659_I(p, o, s) BOOST_PP_IF(p(660, s), BOOST_PP_WHILE_660, s BOOST_PP_TUPLE_EAT_3)(p, o, o(660, s)) +# define BOOST_PP_WHILE_660_I(p, o, s) BOOST_PP_IF(p(661, s), BOOST_PP_WHILE_661, s BOOST_PP_TUPLE_EAT_3)(p, o, o(661, s)) +# define BOOST_PP_WHILE_661_I(p, o, s) BOOST_PP_IF(p(662, s), BOOST_PP_WHILE_662, s BOOST_PP_TUPLE_EAT_3)(p, o, o(662, s)) +# define BOOST_PP_WHILE_662_I(p, o, s) BOOST_PP_IF(p(663, s), BOOST_PP_WHILE_663, s BOOST_PP_TUPLE_EAT_3)(p, o, o(663, s)) +# define BOOST_PP_WHILE_663_I(p, o, s) BOOST_PP_IF(p(664, s), BOOST_PP_WHILE_664, s BOOST_PP_TUPLE_EAT_3)(p, o, o(664, s)) +# define BOOST_PP_WHILE_664_I(p, o, s) BOOST_PP_IF(p(665, s), BOOST_PP_WHILE_665, s BOOST_PP_TUPLE_EAT_3)(p, o, o(665, s)) +# define BOOST_PP_WHILE_665_I(p, o, s) BOOST_PP_IF(p(666, s), BOOST_PP_WHILE_666, s BOOST_PP_TUPLE_EAT_3)(p, o, o(666, s)) +# define BOOST_PP_WHILE_666_I(p, o, s) BOOST_PP_IF(p(667, s), BOOST_PP_WHILE_667, s BOOST_PP_TUPLE_EAT_3)(p, o, o(667, s)) +# define BOOST_PP_WHILE_667_I(p, o, s) BOOST_PP_IF(p(668, s), BOOST_PP_WHILE_668, s BOOST_PP_TUPLE_EAT_3)(p, o, o(668, s)) +# define BOOST_PP_WHILE_668_I(p, o, s) BOOST_PP_IF(p(669, s), BOOST_PP_WHILE_669, s BOOST_PP_TUPLE_EAT_3)(p, o, o(669, s)) +# define BOOST_PP_WHILE_669_I(p, o, s) BOOST_PP_IF(p(670, s), BOOST_PP_WHILE_670, s BOOST_PP_TUPLE_EAT_3)(p, o, o(670, s)) +# define BOOST_PP_WHILE_670_I(p, o, s) BOOST_PP_IF(p(671, s), BOOST_PP_WHILE_671, s BOOST_PP_TUPLE_EAT_3)(p, o, o(671, s)) +# define BOOST_PP_WHILE_671_I(p, o, s) BOOST_PP_IF(p(672, s), BOOST_PP_WHILE_672, s BOOST_PP_TUPLE_EAT_3)(p, o, o(672, s)) +# define BOOST_PP_WHILE_672_I(p, o, s) BOOST_PP_IF(p(673, s), BOOST_PP_WHILE_673, s BOOST_PP_TUPLE_EAT_3)(p, o, o(673, s)) +# define BOOST_PP_WHILE_673_I(p, o, s) BOOST_PP_IF(p(674, s), BOOST_PP_WHILE_674, s BOOST_PP_TUPLE_EAT_3)(p, o, o(674, s)) +# define BOOST_PP_WHILE_674_I(p, o, s) BOOST_PP_IF(p(675, s), BOOST_PP_WHILE_675, s BOOST_PP_TUPLE_EAT_3)(p, o, o(675, s)) +# define BOOST_PP_WHILE_675_I(p, o, s) BOOST_PP_IF(p(676, s), BOOST_PP_WHILE_676, s BOOST_PP_TUPLE_EAT_3)(p, o, o(676, s)) +# define BOOST_PP_WHILE_676_I(p, o, s) BOOST_PP_IF(p(677, s), BOOST_PP_WHILE_677, s BOOST_PP_TUPLE_EAT_3)(p, o, o(677, s)) +# define BOOST_PP_WHILE_677_I(p, o, s) BOOST_PP_IF(p(678, s), BOOST_PP_WHILE_678, s BOOST_PP_TUPLE_EAT_3)(p, o, o(678, s)) +# define BOOST_PP_WHILE_678_I(p, o, s) BOOST_PP_IF(p(679, s), BOOST_PP_WHILE_679, s BOOST_PP_TUPLE_EAT_3)(p, o, o(679, s)) +# define BOOST_PP_WHILE_679_I(p, o, s) BOOST_PP_IF(p(680, s), BOOST_PP_WHILE_680, s BOOST_PP_TUPLE_EAT_3)(p, o, o(680, s)) +# define BOOST_PP_WHILE_680_I(p, o, s) BOOST_PP_IF(p(681, s), BOOST_PP_WHILE_681, s BOOST_PP_TUPLE_EAT_3)(p, o, o(681, s)) +# define BOOST_PP_WHILE_681_I(p, o, s) BOOST_PP_IF(p(682, s), BOOST_PP_WHILE_682, s BOOST_PP_TUPLE_EAT_3)(p, o, o(682, s)) +# define BOOST_PP_WHILE_682_I(p, o, s) BOOST_PP_IF(p(683, s), BOOST_PP_WHILE_683, s BOOST_PP_TUPLE_EAT_3)(p, o, o(683, s)) +# define BOOST_PP_WHILE_683_I(p, o, s) BOOST_PP_IF(p(684, s), BOOST_PP_WHILE_684, s BOOST_PP_TUPLE_EAT_3)(p, o, o(684, s)) +# define BOOST_PP_WHILE_684_I(p, o, s) BOOST_PP_IF(p(685, s), BOOST_PP_WHILE_685, s BOOST_PP_TUPLE_EAT_3)(p, o, o(685, s)) +# define BOOST_PP_WHILE_685_I(p, o, s) BOOST_PP_IF(p(686, s), BOOST_PP_WHILE_686, s BOOST_PP_TUPLE_EAT_3)(p, o, o(686, s)) +# define BOOST_PP_WHILE_686_I(p, o, s) BOOST_PP_IF(p(687, s), BOOST_PP_WHILE_687, s BOOST_PP_TUPLE_EAT_3)(p, o, o(687, s)) +# define BOOST_PP_WHILE_687_I(p, o, s) BOOST_PP_IF(p(688, s), BOOST_PP_WHILE_688, s BOOST_PP_TUPLE_EAT_3)(p, o, o(688, s)) +# define BOOST_PP_WHILE_688_I(p, o, s) BOOST_PP_IF(p(689, s), BOOST_PP_WHILE_689, s BOOST_PP_TUPLE_EAT_3)(p, o, o(689, s)) +# define BOOST_PP_WHILE_689_I(p, o, s) BOOST_PP_IF(p(690, s), BOOST_PP_WHILE_690, s BOOST_PP_TUPLE_EAT_3)(p, o, o(690, s)) +# define BOOST_PP_WHILE_690_I(p, o, s) BOOST_PP_IF(p(691, s), BOOST_PP_WHILE_691, s BOOST_PP_TUPLE_EAT_3)(p, o, o(691, s)) +# define BOOST_PP_WHILE_691_I(p, o, s) BOOST_PP_IF(p(692, s), BOOST_PP_WHILE_692, s BOOST_PP_TUPLE_EAT_3)(p, o, o(692, s)) +# define BOOST_PP_WHILE_692_I(p, o, s) BOOST_PP_IF(p(693, s), BOOST_PP_WHILE_693, s BOOST_PP_TUPLE_EAT_3)(p, o, o(693, s)) +# define BOOST_PP_WHILE_693_I(p, o, s) BOOST_PP_IF(p(694, s), BOOST_PP_WHILE_694, s BOOST_PP_TUPLE_EAT_3)(p, o, o(694, s)) +# define BOOST_PP_WHILE_694_I(p, o, s) BOOST_PP_IF(p(695, s), BOOST_PP_WHILE_695, s BOOST_PP_TUPLE_EAT_3)(p, o, o(695, s)) +# define BOOST_PP_WHILE_695_I(p, o, s) BOOST_PP_IF(p(696, s), BOOST_PP_WHILE_696, s BOOST_PP_TUPLE_EAT_3)(p, o, o(696, s)) +# define BOOST_PP_WHILE_696_I(p, o, s) BOOST_PP_IF(p(697, s), BOOST_PP_WHILE_697, s BOOST_PP_TUPLE_EAT_3)(p, o, o(697, s)) +# define BOOST_PP_WHILE_697_I(p, o, s) BOOST_PP_IF(p(698, s), BOOST_PP_WHILE_698, s BOOST_PP_TUPLE_EAT_3)(p, o, o(698, s)) +# define BOOST_PP_WHILE_698_I(p, o, s) BOOST_PP_IF(p(699, s), BOOST_PP_WHILE_699, s BOOST_PP_TUPLE_EAT_3)(p, o, o(699, s)) +# define BOOST_PP_WHILE_699_I(p, o, s) BOOST_PP_IF(p(700, s), BOOST_PP_WHILE_700, s BOOST_PP_TUPLE_EAT_3)(p, o, o(700, s)) +# define BOOST_PP_WHILE_700_I(p, o, s) BOOST_PP_IF(p(701, s), BOOST_PP_WHILE_701, s BOOST_PP_TUPLE_EAT_3)(p, o, o(701, s)) +# define BOOST_PP_WHILE_701_I(p, o, s) BOOST_PP_IF(p(702, s), BOOST_PP_WHILE_702, s BOOST_PP_TUPLE_EAT_3)(p, o, o(702, s)) +# define BOOST_PP_WHILE_702_I(p, o, s) BOOST_PP_IF(p(703, s), BOOST_PP_WHILE_703, s BOOST_PP_TUPLE_EAT_3)(p, o, o(703, s)) +# define BOOST_PP_WHILE_703_I(p, o, s) BOOST_PP_IF(p(704, s), BOOST_PP_WHILE_704, s BOOST_PP_TUPLE_EAT_3)(p, o, o(704, s)) +# define BOOST_PP_WHILE_704_I(p, o, s) BOOST_PP_IF(p(705, s), BOOST_PP_WHILE_705, s BOOST_PP_TUPLE_EAT_3)(p, o, o(705, s)) +# define BOOST_PP_WHILE_705_I(p, o, s) BOOST_PP_IF(p(706, s), BOOST_PP_WHILE_706, s BOOST_PP_TUPLE_EAT_3)(p, o, o(706, s)) +# define BOOST_PP_WHILE_706_I(p, o, s) BOOST_PP_IF(p(707, s), BOOST_PP_WHILE_707, s BOOST_PP_TUPLE_EAT_3)(p, o, o(707, s)) +# define BOOST_PP_WHILE_707_I(p, o, s) BOOST_PP_IF(p(708, s), BOOST_PP_WHILE_708, s BOOST_PP_TUPLE_EAT_3)(p, o, o(708, s)) +# define BOOST_PP_WHILE_708_I(p, o, s) BOOST_PP_IF(p(709, s), BOOST_PP_WHILE_709, s BOOST_PP_TUPLE_EAT_3)(p, o, o(709, s)) +# define BOOST_PP_WHILE_709_I(p, o, s) BOOST_PP_IF(p(710, s), BOOST_PP_WHILE_710, s BOOST_PP_TUPLE_EAT_3)(p, o, o(710, s)) +# define BOOST_PP_WHILE_710_I(p, o, s) BOOST_PP_IF(p(711, s), BOOST_PP_WHILE_711, s BOOST_PP_TUPLE_EAT_3)(p, o, o(711, s)) +# define BOOST_PP_WHILE_711_I(p, o, s) BOOST_PP_IF(p(712, s), BOOST_PP_WHILE_712, s BOOST_PP_TUPLE_EAT_3)(p, o, o(712, s)) +# define BOOST_PP_WHILE_712_I(p, o, s) BOOST_PP_IF(p(713, s), BOOST_PP_WHILE_713, s BOOST_PP_TUPLE_EAT_3)(p, o, o(713, s)) +# define BOOST_PP_WHILE_713_I(p, o, s) BOOST_PP_IF(p(714, s), BOOST_PP_WHILE_714, s BOOST_PP_TUPLE_EAT_3)(p, o, o(714, s)) +# define BOOST_PP_WHILE_714_I(p, o, s) BOOST_PP_IF(p(715, s), BOOST_PP_WHILE_715, s BOOST_PP_TUPLE_EAT_3)(p, o, o(715, s)) +# define BOOST_PP_WHILE_715_I(p, o, s) BOOST_PP_IF(p(716, s), BOOST_PP_WHILE_716, s BOOST_PP_TUPLE_EAT_3)(p, o, o(716, s)) +# define BOOST_PP_WHILE_716_I(p, o, s) BOOST_PP_IF(p(717, s), BOOST_PP_WHILE_717, s BOOST_PP_TUPLE_EAT_3)(p, o, o(717, s)) +# define BOOST_PP_WHILE_717_I(p, o, s) BOOST_PP_IF(p(718, s), BOOST_PP_WHILE_718, s BOOST_PP_TUPLE_EAT_3)(p, o, o(718, s)) +# define BOOST_PP_WHILE_718_I(p, o, s) BOOST_PP_IF(p(719, s), BOOST_PP_WHILE_719, s BOOST_PP_TUPLE_EAT_3)(p, o, o(719, s)) +# define BOOST_PP_WHILE_719_I(p, o, s) BOOST_PP_IF(p(720, s), BOOST_PP_WHILE_720, s BOOST_PP_TUPLE_EAT_3)(p, o, o(720, s)) +# define BOOST_PP_WHILE_720_I(p, o, s) BOOST_PP_IF(p(721, s), BOOST_PP_WHILE_721, s BOOST_PP_TUPLE_EAT_3)(p, o, o(721, s)) +# define BOOST_PP_WHILE_721_I(p, o, s) BOOST_PP_IF(p(722, s), BOOST_PP_WHILE_722, s BOOST_PP_TUPLE_EAT_3)(p, o, o(722, s)) +# define BOOST_PP_WHILE_722_I(p, o, s) BOOST_PP_IF(p(723, s), BOOST_PP_WHILE_723, s BOOST_PP_TUPLE_EAT_3)(p, o, o(723, s)) +# define BOOST_PP_WHILE_723_I(p, o, s) BOOST_PP_IF(p(724, s), BOOST_PP_WHILE_724, s BOOST_PP_TUPLE_EAT_3)(p, o, o(724, s)) +# define BOOST_PP_WHILE_724_I(p, o, s) BOOST_PP_IF(p(725, s), BOOST_PP_WHILE_725, s BOOST_PP_TUPLE_EAT_3)(p, o, o(725, s)) +# define BOOST_PP_WHILE_725_I(p, o, s) BOOST_PP_IF(p(726, s), BOOST_PP_WHILE_726, s BOOST_PP_TUPLE_EAT_3)(p, o, o(726, s)) +# define BOOST_PP_WHILE_726_I(p, o, s) BOOST_PP_IF(p(727, s), BOOST_PP_WHILE_727, s BOOST_PP_TUPLE_EAT_3)(p, o, o(727, s)) +# define BOOST_PP_WHILE_727_I(p, o, s) BOOST_PP_IF(p(728, s), BOOST_PP_WHILE_728, s BOOST_PP_TUPLE_EAT_3)(p, o, o(728, s)) +# define BOOST_PP_WHILE_728_I(p, o, s) BOOST_PP_IF(p(729, s), BOOST_PP_WHILE_729, s BOOST_PP_TUPLE_EAT_3)(p, o, o(729, s)) +# define BOOST_PP_WHILE_729_I(p, o, s) BOOST_PP_IF(p(730, s), BOOST_PP_WHILE_730, s BOOST_PP_TUPLE_EAT_3)(p, o, o(730, s)) +# define BOOST_PP_WHILE_730_I(p, o, s) BOOST_PP_IF(p(731, s), BOOST_PP_WHILE_731, s BOOST_PP_TUPLE_EAT_3)(p, o, o(731, s)) +# define BOOST_PP_WHILE_731_I(p, o, s) BOOST_PP_IF(p(732, s), BOOST_PP_WHILE_732, s BOOST_PP_TUPLE_EAT_3)(p, o, o(732, s)) +# define BOOST_PP_WHILE_732_I(p, o, s) BOOST_PP_IF(p(733, s), BOOST_PP_WHILE_733, s BOOST_PP_TUPLE_EAT_3)(p, o, o(733, s)) +# define BOOST_PP_WHILE_733_I(p, o, s) BOOST_PP_IF(p(734, s), BOOST_PP_WHILE_734, s BOOST_PP_TUPLE_EAT_3)(p, o, o(734, s)) +# define BOOST_PP_WHILE_734_I(p, o, s) BOOST_PP_IF(p(735, s), BOOST_PP_WHILE_735, s BOOST_PP_TUPLE_EAT_3)(p, o, o(735, s)) +# define BOOST_PP_WHILE_735_I(p, o, s) BOOST_PP_IF(p(736, s), BOOST_PP_WHILE_736, s BOOST_PP_TUPLE_EAT_3)(p, o, o(736, s)) +# define BOOST_PP_WHILE_736_I(p, o, s) BOOST_PP_IF(p(737, s), BOOST_PP_WHILE_737, s BOOST_PP_TUPLE_EAT_3)(p, o, o(737, s)) +# define BOOST_PP_WHILE_737_I(p, o, s) BOOST_PP_IF(p(738, s), BOOST_PP_WHILE_738, s BOOST_PP_TUPLE_EAT_3)(p, o, o(738, s)) +# define BOOST_PP_WHILE_738_I(p, o, s) BOOST_PP_IF(p(739, s), BOOST_PP_WHILE_739, s BOOST_PP_TUPLE_EAT_3)(p, o, o(739, s)) +# define BOOST_PP_WHILE_739_I(p, o, s) BOOST_PP_IF(p(740, s), BOOST_PP_WHILE_740, s BOOST_PP_TUPLE_EAT_3)(p, o, o(740, s)) +# define BOOST_PP_WHILE_740_I(p, o, s) BOOST_PP_IF(p(741, s), BOOST_PP_WHILE_741, s BOOST_PP_TUPLE_EAT_3)(p, o, o(741, s)) +# define BOOST_PP_WHILE_741_I(p, o, s) BOOST_PP_IF(p(742, s), BOOST_PP_WHILE_742, s BOOST_PP_TUPLE_EAT_3)(p, o, o(742, s)) +# define BOOST_PP_WHILE_742_I(p, o, s) BOOST_PP_IF(p(743, s), BOOST_PP_WHILE_743, s BOOST_PP_TUPLE_EAT_3)(p, o, o(743, s)) +# define BOOST_PP_WHILE_743_I(p, o, s) BOOST_PP_IF(p(744, s), BOOST_PP_WHILE_744, s BOOST_PP_TUPLE_EAT_3)(p, o, o(744, s)) +# define BOOST_PP_WHILE_744_I(p, o, s) BOOST_PP_IF(p(745, s), BOOST_PP_WHILE_745, s BOOST_PP_TUPLE_EAT_3)(p, o, o(745, s)) +# define BOOST_PP_WHILE_745_I(p, o, s) BOOST_PP_IF(p(746, s), BOOST_PP_WHILE_746, s BOOST_PP_TUPLE_EAT_3)(p, o, o(746, s)) +# define BOOST_PP_WHILE_746_I(p, o, s) BOOST_PP_IF(p(747, s), BOOST_PP_WHILE_747, s BOOST_PP_TUPLE_EAT_3)(p, o, o(747, s)) +# define BOOST_PP_WHILE_747_I(p, o, s) BOOST_PP_IF(p(748, s), BOOST_PP_WHILE_748, s BOOST_PP_TUPLE_EAT_3)(p, o, o(748, s)) +# define BOOST_PP_WHILE_748_I(p, o, s) BOOST_PP_IF(p(749, s), BOOST_PP_WHILE_749, s BOOST_PP_TUPLE_EAT_3)(p, o, o(749, s)) +# define BOOST_PP_WHILE_749_I(p, o, s) BOOST_PP_IF(p(750, s), BOOST_PP_WHILE_750, s BOOST_PP_TUPLE_EAT_3)(p, o, o(750, s)) +# define BOOST_PP_WHILE_750_I(p, o, s) BOOST_PP_IF(p(751, s), BOOST_PP_WHILE_751, s BOOST_PP_TUPLE_EAT_3)(p, o, o(751, s)) +# define BOOST_PP_WHILE_751_I(p, o, s) BOOST_PP_IF(p(752, s), BOOST_PP_WHILE_752, s BOOST_PP_TUPLE_EAT_3)(p, o, o(752, s)) +# define BOOST_PP_WHILE_752_I(p, o, s) BOOST_PP_IF(p(753, s), BOOST_PP_WHILE_753, s BOOST_PP_TUPLE_EAT_3)(p, o, o(753, s)) +# define BOOST_PP_WHILE_753_I(p, o, s) BOOST_PP_IF(p(754, s), BOOST_PP_WHILE_754, s BOOST_PP_TUPLE_EAT_3)(p, o, o(754, s)) +# define BOOST_PP_WHILE_754_I(p, o, s) BOOST_PP_IF(p(755, s), BOOST_PP_WHILE_755, s BOOST_PP_TUPLE_EAT_3)(p, o, o(755, s)) +# define BOOST_PP_WHILE_755_I(p, o, s) BOOST_PP_IF(p(756, s), BOOST_PP_WHILE_756, s BOOST_PP_TUPLE_EAT_3)(p, o, o(756, s)) +# define BOOST_PP_WHILE_756_I(p, o, s) BOOST_PP_IF(p(757, s), BOOST_PP_WHILE_757, s BOOST_PP_TUPLE_EAT_3)(p, o, o(757, s)) +# define BOOST_PP_WHILE_757_I(p, o, s) BOOST_PP_IF(p(758, s), BOOST_PP_WHILE_758, s BOOST_PP_TUPLE_EAT_3)(p, o, o(758, s)) +# define BOOST_PP_WHILE_758_I(p, o, s) BOOST_PP_IF(p(759, s), BOOST_PP_WHILE_759, s BOOST_PP_TUPLE_EAT_3)(p, o, o(759, s)) +# define BOOST_PP_WHILE_759_I(p, o, s) BOOST_PP_IF(p(760, s), BOOST_PP_WHILE_760, s BOOST_PP_TUPLE_EAT_3)(p, o, o(760, s)) +# define BOOST_PP_WHILE_760_I(p, o, s) BOOST_PP_IF(p(761, s), BOOST_PP_WHILE_761, s BOOST_PP_TUPLE_EAT_3)(p, o, o(761, s)) +# define BOOST_PP_WHILE_761_I(p, o, s) BOOST_PP_IF(p(762, s), BOOST_PP_WHILE_762, s BOOST_PP_TUPLE_EAT_3)(p, o, o(762, s)) +# define BOOST_PP_WHILE_762_I(p, o, s) BOOST_PP_IF(p(763, s), BOOST_PP_WHILE_763, s BOOST_PP_TUPLE_EAT_3)(p, o, o(763, s)) +# define BOOST_PP_WHILE_763_I(p, o, s) BOOST_PP_IF(p(764, s), BOOST_PP_WHILE_764, s BOOST_PP_TUPLE_EAT_3)(p, o, o(764, s)) +# define BOOST_PP_WHILE_764_I(p, o, s) BOOST_PP_IF(p(765, s), BOOST_PP_WHILE_765, s BOOST_PP_TUPLE_EAT_3)(p, o, o(765, s)) +# define BOOST_PP_WHILE_765_I(p, o, s) BOOST_PP_IF(p(766, s), BOOST_PP_WHILE_766, s BOOST_PP_TUPLE_EAT_3)(p, o, o(766, s)) +# define BOOST_PP_WHILE_766_I(p, o, s) BOOST_PP_IF(p(767, s), BOOST_PP_WHILE_767, s BOOST_PP_TUPLE_EAT_3)(p, o, o(767, s)) +# define BOOST_PP_WHILE_767_I(p, o, s) BOOST_PP_IF(p(768, s), BOOST_PP_WHILE_768, s BOOST_PP_TUPLE_EAT_3)(p, o, o(768, s)) +# define BOOST_PP_WHILE_768_I(p, o, s) BOOST_PP_IF(p(769, s), BOOST_PP_WHILE_769, s BOOST_PP_TUPLE_EAT_3)(p, o, o(769, s)) +# define BOOST_PP_WHILE_769_I(p, o, s) BOOST_PP_IF(p(770, s), BOOST_PP_WHILE_770, s BOOST_PP_TUPLE_EAT_3)(p, o, o(770, s)) +# define BOOST_PP_WHILE_770_I(p, o, s) BOOST_PP_IF(p(771, s), BOOST_PP_WHILE_771, s BOOST_PP_TUPLE_EAT_3)(p, o, o(771, s)) +# define BOOST_PP_WHILE_771_I(p, o, s) BOOST_PP_IF(p(772, s), BOOST_PP_WHILE_772, s BOOST_PP_TUPLE_EAT_3)(p, o, o(772, s)) +# define BOOST_PP_WHILE_772_I(p, o, s) BOOST_PP_IF(p(773, s), BOOST_PP_WHILE_773, s BOOST_PP_TUPLE_EAT_3)(p, o, o(773, s)) +# define BOOST_PP_WHILE_773_I(p, o, s) BOOST_PP_IF(p(774, s), BOOST_PP_WHILE_774, s BOOST_PP_TUPLE_EAT_3)(p, o, o(774, s)) +# define BOOST_PP_WHILE_774_I(p, o, s) BOOST_PP_IF(p(775, s), BOOST_PP_WHILE_775, s BOOST_PP_TUPLE_EAT_3)(p, o, o(775, s)) +# define BOOST_PP_WHILE_775_I(p, o, s) BOOST_PP_IF(p(776, s), BOOST_PP_WHILE_776, s BOOST_PP_TUPLE_EAT_3)(p, o, o(776, s)) +# define BOOST_PP_WHILE_776_I(p, o, s) BOOST_PP_IF(p(777, s), BOOST_PP_WHILE_777, s BOOST_PP_TUPLE_EAT_3)(p, o, o(777, s)) +# define BOOST_PP_WHILE_777_I(p, o, s) BOOST_PP_IF(p(778, s), BOOST_PP_WHILE_778, s BOOST_PP_TUPLE_EAT_3)(p, o, o(778, s)) +# define BOOST_PP_WHILE_778_I(p, o, s) BOOST_PP_IF(p(779, s), BOOST_PP_WHILE_779, s BOOST_PP_TUPLE_EAT_3)(p, o, o(779, s)) +# define BOOST_PP_WHILE_779_I(p, o, s) BOOST_PP_IF(p(780, s), BOOST_PP_WHILE_780, s BOOST_PP_TUPLE_EAT_3)(p, o, o(780, s)) +# define BOOST_PP_WHILE_780_I(p, o, s) BOOST_PP_IF(p(781, s), BOOST_PP_WHILE_781, s BOOST_PP_TUPLE_EAT_3)(p, o, o(781, s)) +# define BOOST_PP_WHILE_781_I(p, o, s) BOOST_PP_IF(p(782, s), BOOST_PP_WHILE_782, s BOOST_PP_TUPLE_EAT_3)(p, o, o(782, s)) +# define BOOST_PP_WHILE_782_I(p, o, s) BOOST_PP_IF(p(783, s), BOOST_PP_WHILE_783, s BOOST_PP_TUPLE_EAT_3)(p, o, o(783, s)) +# define BOOST_PP_WHILE_783_I(p, o, s) BOOST_PP_IF(p(784, s), BOOST_PP_WHILE_784, s BOOST_PP_TUPLE_EAT_3)(p, o, o(784, s)) +# define BOOST_PP_WHILE_784_I(p, o, s) BOOST_PP_IF(p(785, s), BOOST_PP_WHILE_785, s BOOST_PP_TUPLE_EAT_3)(p, o, o(785, s)) +# define BOOST_PP_WHILE_785_I(p, o, s) BOOST_PP_IF(p(786, s), BOOST_PP_WHILE_786, s BOOST_PP_TUPLE_EAT_3)(p, o, o(786, s)) +# define BOOST_PP_WHILE_786_I(p, o, s) BOOST_PP_IF(p(787, s), BOOST_PP_WHILE_787, s BOOST_PP_TUPLE_EAT_3)(p, o, o(787, s)) +# define BOOST_PP_WHILE_787_I(p, o, s) BOOST_PP_IF(p(788, s), BOOST_PP_WHILE_788, s BOOST_PP_TUPLE_EAT_3)(p, o, o(788, s)) +# define BOOST_PP_WHILE_788_I(p, o, s) BOOST_PP_IF(p(789, s), BOOST_PP_WHILE_789, s BOOST_PP_TUPLE_EAT_3)(p, o, o(789, s)) +# define BOOST_PP_WHILE_789_I(p, o, s) BOOST_PP_IF(p(790, s), BOOST_PP_WHILE_790, s BOOST_PP_TUPLE_EAT_3)(p, o, o(790, s)) +# define BOOST_PP_WHILE_790_I(p, o, s) BOOST_PP_IF(p(791, s), BOOST_PP_WHILE_791, s BOOST_PP_TUPLE_EAT_3)(p, o, o(791, s)) +# define BOOST_PP_WHILE_791_I(p, o, s) BOOST_PP_IF(p(792, s), BOOST_PP_WHILE_792, s BOOST_PP_TUPLE_EAT_3)(p, o, o(792, s)) +# define BOOST_PP_WHILE_792_I(p, o, s) BOOST_PP_IF(p(793, s), BOOST_PP_WHILE_793, s BOOST_PP_TUPLE_EAT_3)(p, o, o(793, s)) +# define BOOST_PP_WHILE_793_I(p, o, s) BOOST_PP_IF(p(794, s), BOOST_PP_WHILE_794, s BOOST_PP_TUPLE_EAT_3)(p, o, o(794, s)) +# define BOOST_PP_WHILE_794_I(p, o, s) BOOST_PP_IF(p(795, s), BOOST_PP_WHILE_795, s BOOST_PP_TUPLE_EAT_3)(p, o, o(795, s)) +# define BOOST_PP_WHILE_795_I(p, o, s) BOOST_PP_IF(p(796, s), BOOST_PP_WHILE_796, s BOOST_PP_TUPLE_EAT_3)(p, o, o(796, s)) +# define BOOST_PP_WHILE_796_I(p, o, s) BOOST_PP_IF(p(797, s), BOOST_PP_WHILE_797, s BOOST_PP_TUPLE_EAT_3)(p, o, o(797, s)) +# define BOOST_PP_WHILE_797_I(p, o, s) BOOST_PP_IF(p(798, s), BOOST_PP_WHILE_798, s BOOST_PP_TUPLE_EAT_3)(p, o, o(798, s)) +# define BOOST_PP_WHILE_798_I(p, o, s) BOOST_PP_IF(p(799, s), BOOST_PP_WHILE_799, s BOOST_PP_TUPLE_EAT_3)(p, o, o(799, s)) +# define BOOST_PP_WHILE_799_I(p, o, s) BOOST_PP_IF(p(800, s), BOOST_PP_WHILE_800, s BOOST_PP_TUPLE_EAT_3)(p, o, o(800, s)) +# define BOOST_PP_WHILE_800_I(p, o, s) BOOST_PP_IF(p(801, s), BOOST_PP_WHILE_801, s BOOST_PP_TUPLE_EAT_3)(p, o, o(801, s)) +# define BOOST_PP_WHILE_801_I(p, o, s) BOOST_PP_IF(p(802, s), BOOST_PP_WHILE_802, s BOOST_PP_TUPLE_EAT_3)(p, o, o(802, s)) +# define BOOST_PP_WHILE_802_I(p, o, s) BOOST_PP_IF(p(803, s), BOOST_PP_WHILE_803, s BOOST_PP_TUPLE_EAT_3)(p, o, o(803, s)) +# define BOOST_PP_WHILE_803_I(p, o, s) BOOST_PP_IF(p(804, s), BOOST_PP_WHILE_804, s BOOST_PP_TUPLE_EAT_3)(p, o, o(804, s)) +# define BOOST_PP_WHILE_804_I(p, o, s) BOOST_PP_IF(p(805, s), BOOST_PP_WHILE_805, s BOOST_PP_TUPLE_EAT_3)(p, o, o(805, s)) +# define BOOST_PP_WHILE_805_I(p, o, s) BOOST_PP_IF(p(806, s), BOOST_PP_WHILE_806, s BOOST_PP_TUPLE_EAT_3)(p, o, o(806, s)) +# define BOOST_PP_WHILE_806_I(p, o, s) BOOST_PP_IF(p(807, s), BOOST_PP_WHILE_807, s BOOST_PP_TUPLE_EAT_3)(p, o, o(807, s)) +# define BOOST_PP_WHILE_807_I(p, o, s) BOOST_PP_IF(p(808, s), BOOST_PP_WHILE_808, s BOOST_PP_TUPLE_EAT_3)(p, o, o(808, s)) +# define BOOST_PP_WHILE_808_I(p, o, s) BOOST_PP_IF(p(809, s), BOOST_PP_WHILE_809, s BOOST_PP_TUPLE_EAT_3)(p, o, o(809, s)) +# define BOOST_PP_WHILE_809_I(p, o, s) BOOST_PP_IF(p(810, s), BOOST_PP_WHILE_810, s BOOST_PP_TUPLE_EAT_3)(p, o, o(810, s)) +# define BOOST_PP_WHILE_810_I(p, o, s) BOOST_PP_IF(p(811, s), BOOST_PP_WHILE_811, s BOOST_PP_TUPLE_EAT_3)(p, o, o(811, s)) +# define BOOST_PP_WHILE_811_I(p, o, s) BOOST_PP_IF(p(812, s), BOOST_PP_WHILE_812, s BOOST_PP_TUPLE_EAT_3)(p, o, o(812, s)) +# define BOOST_PP_WHILE_812_I(p, o, s) BOOST_PP_IF(p(813, s), BOOST_PP_WHILE_813, s BOOST_PP_TUPLE_EAT_3)(p, o, o(813, s)) +# define BOOST_PP_WHILE_813_I(p, o, s) BOOST_PP_IF(p(814, s), BOOST_PP_WHILE_814, s BOOST_PP_TUPLE_EAT_3)(p, o, o(814, s)) +# define BOOST_PP_WHILE_814_I(p, o, s) BOOST_PP_IF(p(815, s), BOOST_PP_WHILE_815, s BOOST_PP_TUPLE_EAT_3)(p, o, o(815, s)) +# define BOOST_PP_WHILE_815_I(p, o, s) BOOST_PP_IF(p(816, s), BOOST_PP_WHILE_816, s BOOST_PP_TUPLE_EAT_3)(p, o, o(816, s)) +# define BOOST_PP_WHILE_816_I(p, o, s) BOOST_PP_IF(p(817, s), BOOST_PP_WHILE_817, s BOOST_PP_TUPLE_EAT_3)(p, o, o(817, s)) +# define BOOST_PP_WHILE_817_I(p, o, s) BOOST_PP_IF(p(818, s), BOOST_PP_WHILE_818, s BOOST_PP_TUPLE_EAT_3)(p, o, o(818, s)) +# define BOOST_PP_WHILE_818_I(p, o, s) BOOST_PP_IF(p(819, s), BOOST_PP_WHILE_819, s BOOST_PP_TUPLE_EAT_3)(p, o, o(819, s)) +# define BOOST_PP_WHILE_819_I(p, o, s) BOOST_PP_IF(p(820, s), BOOST_PP_WHILE_820, s BOOST_PP_TUPLE_EAT_3)(p, o, o(820, s)) +# define BOOST_PP_WHILE_820_I(p, o, s) BOOST_PP_IF(p(821, s), BOOST_PP_WHILE_821, s BOOST_PP_TUPLE_EAT_3)(p, o, o(821, s)) +# define BOOST_PP_WHILE_821_I(p, o, s) BOOST_PP_IF(p(822, s), BOOST_PP_WHILE_822, s BOOST_PP_TUPLE_EAT_3)(p, o, o(822, s)) +# define BOOST_PP_WHILE_822_I(p, o, s) BOOST_PP_IF(p(823, s), BOOST_PP_WHILE_823, s BOOST_PP_TUPLE_EAT_3)(p, o, o(823, s)) +# define BOOST_PP_WHILE_823_I(p, o, s) BOOST_PP_IF(p(824, s), BOOST_PP_WHILE_824, s BOOST_PP_TUPLE_EAT_3)(p, o, o(824, s)) +# define BOOST_PP_WHILE_824_I(p, o, s) BOOST_PP_IF(p(825, s), BOOST_PP_WHILE_825, s BOOST_PP_TUPLE_EAT_3)(p, o, o(825, s)) +# define BOOST_PP_WHILE_825_I(p, o, s) BOOST_PP_IF(p(826, s), BOOST_PP_WHILE_826, s BOOST_PP_TUPLE_EAT_3)(p, o, o(826, s)) +# define BOOST_PP_WHILE_826_I(p, o, s) BOOST_PP_IF(p(827, s), BOOST_PP_WHILE_827, s BOOST_PP_TUPLE_EAT_3)(p, o, o(827, s)) +# define BOOST_PP_WHILE_827_I(p, o, s) BOOST_PP_IF(p(828, s), BOOST_PP_WHILE_828, s BOOST_PP_TUPLE_EAT_3)(p, o, o(828, s)) +# define BOOST_PP_WHILE_828_I(p, o, s) BOOST_PP_IF(p(829, s), BOOST_PP_WHILE_829, s BOOST_PP_TUPLE_EAT_3)(p, o, o(829, s)) +# define BOOST_PP_WHILE_829_I(p, o, s) BOOST_PP_IF(p(830, s), BOOST_PP_WHILE_830, s BOOST_PP_TUPLE_EAT_3)(p, o, o(830, s)) +# define BOOST_PP_WHILE_830_I(p, o, s) BOOST_PP_IF(p(831, s), BOOST_PP_WHILE_831, s BOOST_PP_TUPLE_EAT_3)(p, o, o(831, s)) +# define BOOST_PP_WHILE_831_I(p, o, s) BOOST_PP_IF(p(832, s), BOOST_PP_WHILE_832, s BOOST_PP_TUPLE_EAT_3)(p, o, o(832, s)) +# define BOOST_PP_WHILE_832_I(p, o, s) BOOST_PP_IF(p(833, s), BOOST_PP_WHILE_833, s BOOST_PP_TUPLE_EAT_3)(p, o, o(833, s)) +# define BOOST_PP_WHILE_833_I(p, o, s) BOOST_PP_IF(p(834, s), BOOST_PP_WHILE_834, s BOOST_PP_TUPLE_EAT_3)(p, o, o(834, s)) +# define BOOST_PP_WHILE_834_I(p, o, s) BOOST_PP_IF(p(835, s), BOOST_PP_WHILE_835, s BOOST_PP_TUPLE_EAT_3)(p, o, o(835, s)) +# define BOOST_PP_WHILE_835_I(p, o, s) BOOST_PP_IF(p(836, s), BOOST_PP_WHILE_836, s BOOST_PP_TUPLE_EAT_3)(p, o, o(836, s)) +# define BOOST_PP_WHILE_836_I(p, o, s) BOOST_PP_IF(p(837, s), BOOST_PP_WHILE_837, s BOOST_PP_TUPLE_EAT_3)(p, o, o(837, s)) +# define BOOST_PP_WHILE_837_I(p, o, s) BOOST_PP_IF(p(838, s), BOOST_PP_WHILE_838, s BOOST_PP_TUPLE_EAT_3)(p, o, o(838, s)) +# define BOOST_PP_WHILE_838_I(p, o, s) BOOST_PP_IF(p(839, s), BOOST_PP_WHILE_839, s BOOST_PP_TUPLE_EAT_3)(p, o, o(839, s)) +# define BOOST_PP_WHILE_839_I(p, o, s) BOOST_PP_IF(p(840, s), BOOST_PP_WHILE_840, s BOOST_PP_TUPLE_EAT_3)(p, o, o(840, s)) +# define BOOST_PP_WHILE_840_I(p, o, s) BOOST_PP_IF(p(841, s), BOOST_PP_WHILE_841, s BOOST_PP_TUPLE_EAT_3)(p, o, o(841, s)) +# define BOOST_PP_WHILE_841_I(p, o, s) BOOST_PP_IF(p(842, s), BOOST_PP_WHILE_842, s BOOST_PP_TUPLE_EAT_3)(p, o, o(842, s)) +# define BOOST_PP_WHILE_842_I(p, o, s) BOOST_PP_IF(p(843, s), BOOST_PP_WHILE_843, s BOOST_PP_TUPLE_EAT_3)(p, o, o(843, s)) +# define BOOST_PP_WHILE_843_I(p, o, s) BOOST_PP_IF(p(844, s), BOOST_PP_WHILE_844, s BOOST_PP_TUPLE_EAT_3)(p, o, o(844, s)) +# define BOOST_PP_WHILE_844_I(p, o, s) BOOST_PP_IF(p(845, s), BOOST_PP_WHILE_845, s BOOST_PP_TUPLE_EAT_3)(p, o, o(845, s)) +# define BOOST_PP_WHILE_845_I(p, o, s) BOOST_PP_IF(p(846, s), BOOST_PP_WHILE_846, s BOOST_PP_TUPLE_EAT_3)(p, o, o(846, s)) +# define BOOST_PP_WHILE_846_I(p, o, s) BOOST_PP_IF(p(847, s), BOOST_PP_WHILE_847, s BOOST_PP_TUPLE_EAT_3)(p, o, o(847, s)) +# define BOOST_PP_WHILE_847_I(p, o, s) BOOST_PP_IF(p(848, s), BOOST_PP_WHILE_848, s BOOST_PP_TUPLE_EAT_3)(p, o, o(848, s)) +# define BOOST_PP_WHILE_848_I(p, o, s) BOOST_PP_IF(p(849, s), BOOST_PP_WHILE_849, s BOOST_PP_TUPLE_EAT_3)(p, o, o(849, s)) +# define BOOST_PP_WHILE_849_I(p, o, s) BOOST_PP_IF(p(850, s), BOOST_PP_WHILE_850, s BOOST_PP_TUPLE_EAT_3)(p, o, o(850, s)) +# define BOOST_PP_WHILE_850_I(p, o, s) BOOST_PP_IF(p(851, s), BOOST_PP_WHILE_851, s BOOST_PP_TUPLE_EAT_3)(p, o, o(851, s)) +# define BOOST_PP_WHILE_851_I(p, o, s) BOOST_PP_IF(p(852, s), BOOST_PP_WHILE_852, s BOOST_PP_TUPLE_EAT_3)(p, o, o(852, s)) +# define BOOST_PP_WHILE_852_I(p, o, s) BOOST_PP_IF(p(853, s), BOOST_PP_WHILE_853, s BOOST_PP_TUPLE_EAT_3)(p, o, o(853, s)) +# define BOOST_PP_WHILE_853_I(p, o, s) BOOST_PP_IF(p(854, s), BOOST_PP_WHILE_854, s BOOST_PP_TUPLE_EAT_3)(p, o, o(854, s)) +# define BOOST_PP_WHILE_854_I(p, o, s) BOOST_PP_IF(p(855, s), BOOST_PP_WHILE_855, s BOOST_PP_TUPLE_EAT_3)(p, o, o(855, s)) +# define BOOST_PP_WHILE_855_I(p, o, s) BOOST_PP_IF(p(856, s), BOOST_PP_WHILE_856, s BOOST_PP_TUPLE_EAT_3)(p, o, o(856, s)) +# define BOOST_PP_WHILE_856_I(p, o, s) BOOST_PP_IF(p(857, s), BOOST_PP_WHILE_857, s BOOST_PP_TUPLE_EAT_3)(p, o, o(857, s)) +# define BOOST_PP_WHILE_857_I(p, o, s) BOOST_PP_IF(p(858, s), BOOST_PP_WHILE_858, s BOOST_PP_TUPLE_EAT_3)(p, o, o(858, s)) +# define BOOST_PP_WHILE_858_I(p, o, s) BOOST_PP_IF(p(859, s), BOOST_PP_WHILE_859, s BOOST_PP_TUPLE_EAT_3)(p, o, o(859, s)) +# define BOOST_PP_WHILE_859_I(p, o, s) BOOST_PP_IF(p(860, s), BOOST_PP_WHILE_860, s BOOST_PP_TUPLE_EAT_3)(p, o, o(860, s)) +# define BOOST_PP_WHILE_860_I(p, o, s) BOOST_PP_IF(p(861, s), BOOST_PP_WHILE_861, s BOOST_PP_TUPLE_EAT_3)(p, o, o(861, s)) +# define BOOST_PP_WHILE_861_I(p, o, s) BOOST_PP_IF(p(862, s), BOOST_PP_WHILE_862, s BOOST_PP_TUPLE_EAT_3)(p, o, o(862, s)) +# define BOOST_PP_WHILE_862_I(p, o, s) BOOST_PP_IF(p(863, s), BOOST_PP_WHILE_863, s BOOST_PP_TUPLE_EAT_3)(p, o, o(863, s)) +# define BOOST_PP_WHILE_863_I(p, o, s) BOOST_PP_IF(p(864, s), BOOST_PP_WHILE_864, s BOOST_PP_TUPLE_EAT_3)(p, o, o(864, s)) +# define BOOST_PP_WHILE_864_I(p, o, s) BOOST_PP_IF(p(865, s), BOOST_PP_WHILE_865, s BOOST_PP_TUPLE_EAT_3)(p, o, o(865, s)) +# define BOOST_PP_WHILE_865_I(p, o, s) BOOST_PP_IF(p(866, s), BOOST_PP_WHILE_866, s BOOST_PP_TUPLE_EAT_3)(p, o, o(866, s)) +# define BOOST_PP_WHILE_866_I(p, o, s) BOOST_PP_IF(p(867, s), BOOST_PP_WHILE_867, s BOOST_PP_TUPLE_EAT_3)(p, o, o(867, s)) +# define BOOST_PP_WHILE_867_I(p, o, s) BOOST_PP_IF(p(868, s), BOOST_PP_WHILE_868, s BOOST_PP_TUPLE_EAT_3)(p, o, o(868, s)) +# define BOOST_PP_WHILE_868_I(p, o, s) BOOST_PP_IF(p(869, s), BOOST_PP_WHILE_869, s BOOST_PP_TUPLE_EAT_3)(p, o, o(869, s)) +# define BOOST_PP_WHILE_869_I(p, o, s) BOOST_PP_IF(p(870, s), BOOST_PP_WHILE_870, s BOOST_PP_TUPLE_EAT_3)(p, o, o(870, s)) +# define BOOST_PP_WHILE_870_I(p, o, s) BOOST_PP_IF(p(871, s), BOOST_PP_WHILE_871, s BOOST_PP_TUPLE_EAT_3)(p, o, o(871, s)) +# define BOOST_PP_WHILE_871_I(p, o, s) BOOST_PP_IF(p(872, s), BOOST_PP_WHILE_872, s BOOST_PP_TUPLE_EAT_3)(p, o, o(872, s)) +# define BOOST_PP_WHILE_872_I(p, o, s) BOOST_PP_IF(p(873, s), BOOST_PP_WHILE_873, s BOOST_PP_TUPLE_EAT_3)(p, o, o(873, s)) +# define BOOST_PP_WHILE_873_I(p, o, s) BOOST_PP_IF(p(874, s), BOOST_PP_WHILE_874, s BOOST_PP_TUPLE_EAT_3)(p, o, o(874, s)) +# define BOOST_PP_WHILE_874_I(p, o, s) BOOST_PP_IF(p(875, s), BOOST_PP_WHILE_875, s BOOST_PP_TUPLE_EAT_3)(p, o, o(875, s)) +# define BOOST_PP_WHILE_875_I(p, o, s) BOOST_PP_IF(p(876, s), BOOST_PP_WHILE_876, s BOOST_PP_TUPLE_EAT_3)(p, o, o(876, s)) +# define BOOST_PP_WHILE_876_I(p, o, s) BOOST_PP_IF(p(877, s), BOOST_PP_WHILE_877, s BOOST_PP_TUPLE_EAT_3)(p, o, o(877, s)) +# define BOOST_PP_WHILE_877_I(p, o, s) BOOST_PP_IF(p(878, s), BOOST_PP_WHILE_878, s BOOST_PP_TUPLE_EAT_3)(p, o, o(878, s)) +# define BOOST_PP_WHILE_878_I(p, o, s) BOOST_PP_IF(p(879, s), BOOST_PP_WHILE_879, s BOOST_PP_TUPLE_EAT_3)(p, o, o(879, s)) +# define BOOST_PP_WHILE_879_I(p, o, s) BOOST_PP_IF(p(880, s), BOOST_PP_WHILE_880, s BOOST_PP_TUPLE_EAT_3)(p, o, o(880, s)) +# define BOOST_PP_WHILE_880_I(p, o, s) BOOST_PP_IF(p(881, s), BOOST_PP_WHILE_881, s BOOST_PP_TUPLE_EAT_3)(p, o, o(881, s)) +# define BOOST_PP_WHILE_881_I(p, o, s) BOOST_PP_IF(p(882, s), BOOST_PP_WHILE_882, s BOOST_PP_TUPLE_EAT_3)(p, o, o(882, s)) +# define BOOST_PP_WHILE_882_I(p, o, s) BOOST_PP_IF(p(883, s), BOOST_PP_WHILE_883, s BOOST_PP_TUPLE_EAT_3)(p, o, o(883, s)) +# define BOOST_PP_WHILE_883_I(p, o, s) BOOST_PP_IF(p(884, s), BOOST_PP_WHILE_884, s BOOST_PP_TUPLE_EAT_3)(p, o, o(884, s)) +# define BOOST_PP_WHILE_884_I(p, o, s) BOOST_PP_IF(p(885, s), BOOST_PP_WHILE_885, s BOOST_PP_TUPLE_EAT_3)(p, o, o(885, s)) +# define BOOST_PP_WHILE_885_I(p, o, s) BOOST_PP_IF(p(886, s), BOOST_PP_WHILE_886, s BOOST_PP_TUPLE_EAT_3)(p, o, o(886, s)) +# define BOOST_PP_WHILE_886_I(p, o, s) BOOST_PP_IF(p(887, s), BOOST_PP_WHILE_887, s BOOST_PP_TUPLE_EAT_3)(p, o, o(887, s)) +# define BOOST_PP_WHILE_887_I(p, o, s) BOOST_PP_IF(p(888, s), BOOST_PP_WHILE_888, s BOOST_PP_TUPLE_EAT_3)(p, o, o(888, s)) +# define BOOST_PP_WHILE_888_I(p, o, s) BOOST_PP_IF(p(889, s), BOOST_PP_WHILE_889, s BOOST_PP_TUPLE_EAT_3)(p, o, o(889, s)) +# define BOOST_PP_WHILE_889_I(p, o, s) BOOST_PP_IF(p(890, s), BOOST_PP_WHILE_890, s BOOST_PP_TUPLE_EAT_3)(p, o, o(890, s)) +# define BOOST_PP_WHILE_890_I(p, o, s) BOOST_PP_IF(p(891, s), BOOST_PP_WHILE_891, s BOOST_PP_TUPLE_EAT_3)(p, o, o(891, s)) +# define BOOST_PP_WHILE_891_I(p, o, s) BOOST_PP_IF(p(892, s), BOOST_PP_WHILE_892, s BOOST_PP_TUPLE_EAT_3)(p, o, o(892, s)) +# define BOOST_PP_WHILE_892_I(p, o, s) BOOST_PP_IF(p(893, s), BOOST_PP_WHILE_893, s BOOST_PP_TUPLE_EAT_3)(p, o, o(893, s)) +# define BOOST_PP_WHILE_893_I(p, o, s) BOOST_PP_IF(p(894, s), BOOST_PP_WHILE_894, s BOOST_PP_TUPLE_EAT_3)(p, o, o(894, s)) +# define BOOST_PP_WHILE_894_I(p, o, s) BOOST_PP_IF(p(895, s), BOOST_PP_WHILE_895, s BOOST_PP_TUPLE_EAT_3)(p, o, o(895, s)) +# define BOOST_PP_WHILE_895_I(p, o, s) BOOST_PP_IF(p(896, s), BOOST_PP_WHILE_896, s BOOST_PP_TUPLE_EAT_3)(p, o, o(896, s)) +# define BOOST_PP_WHILE_896_I(p, o, s) BOOST_PP_IF(p(897, s), BOOST_PP_WHILE_897, s BOOST_PP_TUPLE_EAT_3)(p, o, o(897, s)) +# define BOOST_PP_WHILE_897_I(p, o, s) BOOST_PP_IF(p(898, s), BOOST_PP_WHILE_898, s BOOST_PP_TUPLE_EAT_3)(p, o, o(898, s)) +# define BOOST_PP_WHILE_898_I(p, o, s) BOOST_PP_IF(p(899, s), BOOST_PP_WHILE_899, s BOOST_PP_TUPLE_EAT_3)(p, o, o(899, s)) +# define BOOST_PP_WHILE_899_I(p, o, s) BOOST_PP_IF(p(900, s), BOOST_PP_WHILE_900, s BOOST_PP_TUPLE_EAT_3)(p, o, o(900, s)) +# define BOOST_PP_WHILE_900_I(p, o, s) BOOST_PP_IF(p(901, s), BOOST_PP_WHILE_901, s BOOST_PP_TUPLE_EAT_3)(p, o, o(901, s)) +# define BOOST_PP_WHILE_901_I(p, o, s) BOOST_PP_IF(p(902, s), BOOST_PP_WHILE_902, s BOOST_PP_TUPLE_EAT_3)(p, o, o(902, s)) +# define BOOST_PP_WHILE_902_I(p, o, s) BOOST_PP_IF(p(903, s), BOOST_PP_WHILE_903, s BOOST_PP_TUPLE_EAT_3)(p, o, o(903, s)) +# define BOOST_PP_WHILE_903_I(p, o, s) BOOST_PP_IF(p(904, s), BOOST_PP_WHILE_904, s BOOST_PP_TUPLE_EAT_3)(p, o, o(904, s)) +# define BOOST_PP_WHILE_904_I(p, o, s) BOOST_PP_IF(p(905, s), BOOST_PP_WHILE_905, s BOOST_PP_TUPLE_EAT_3)(p, o, o(905, s)) +# define BOOST_PP_WHILE_905_I(p, o, s) BOOST_PP_IF(p(906, s), BOOST_PP_WHILE_906, s BOOST_PP_TUPLE_EAT_3)(p, o, o(906, s)) +# define BOOST_PP_WHILE_906_I(p, o, s) BOOST_PP_IF(p(907, s), BOOST_PP_WHILE_907, s BOOST_PP_TUPLE_EAT_3)(p, o, o(907, s)) +# define BOOST_PP_WHILE_907_I(p, o, s) BOOST_PP_IF(p(908, s), BOOST_PP_WHILE_908, s BOOST_PP_TUPLE_EAT_3)(p, o, o(908, s)) +# define BOOST_PP_WHILE_908_I(p, o, s) BOOST_PP_IF(p(909, s), BOOST_PP_WHILE_909, s BOOST_PP_TUPLE_EAT_3)(p, o, o(909, s)) +# define BOOST_PP_WHILE_909_I(p, o, s) BOOST_PP_IF(p(910, s), BOOST_PP_WHILE_910, s BOOST_PP_TUPLE_EAT_3)(p, o, o(910, s)) +# define BOOST_PP_WHILE_910_I(p, o, s) BOOST_PP_IF(p(911, s), BOOST_PP_WHILE_911, s BOOST_PP_TUPLE_EAT_3)(p, o, o(911, s)) +# define BOOST_PP_WHILE_911_I(p, o, s) BOOST_PP_IF(p(912, s), BOOST_PP_WHILE_912, s BOOST_PP_TUPLE_EAT_3)(p, o, o(912, s)) +# define BOOST_PP_WHILE_912_I(p, o, s) BOOST_PP_IF(p(913, s), BOOST_PP_WHILE_913, s BOOST_PP_TUPLE_EAT_3)(p, o, o(913, s)) +# define BOOST_PP_WHILE_913_I(p, o, s) BOOST_PP_IF(p(914, s), BOOST_PP_WHILE_914, s BOOST_PP_TUPLE_EAT_3)(p, o, o(914, s)) +# define BOOST_PP_WHILE_914_I(p, o, s) BOOST_PP_IF(p(915, s), BOOST_PP_WHILE_915, s BOOST_PP_TUPLE_EAT_3)(p, o, o(915, s)) +# define BOOST_PP_WHILE_915_I(p, o, s) BOOST_PP_IF(p(916, s), BOOST_PP_WHILE_916, s BOOST_PP_TUPLE_EAT_3)(p, o, o(916, s)) +# define BOOST_PP_WHILE_916_I(p, o, s) BOOST_PP_IF(p(917, s), BOOST_PP_WHILE_917, s BOOST_PP_TUPLE_EAT_3)(p, o, o(917, s)) +# define BOOST_PP_WHILE_917_I(p, o, s) BOOST_PP_IF(p(918, s), BOOST_PP_WHILE_918, s BOOST_PP_TUPLE_EAT_3)(p, o, o(918, s)) +# define BOOST_PP_WHILE_918_I(p, o, s) BOOST_PP_IF(p(919, s), BOOST_PP_WHILE_919, s BOOST_PP_TUPLE_EAT_3)(p, o, o(919, s)) +# define BOOST_PP_WHILE_919_I(p, o, s) BOOST_PP_IF(p(920, s), BOOST_PP_WHILE_920, s BOOST_PP_TUPLE_EAT_3)(p, o, o(920, s)) +# define BOOST_PP_WHILE_920_I(p, o, s) BOOST_PP_IF(p(921, s), BOOST_PP_WHILE_921, s BOOST_PP_TUPLE_EAT_3)(p, o, o(921, s)) +# define BOOST_PP_WHILE_921_I(p, o, s) BOOST_PP_IF(p(922, s), BOOST_PP_WHILE_922, s BOOST_PP_TUPLE_EAT_3)(p, o, o(922, s)) +# define BOOST_PP_WHILE_922_I(p, o, s) BOOST_PP_IF(p(923, s), BOOST_PP_WHILE_923, s BOOST_PP_TUPLE_EAT_3)(p, o, o(923, s)) +# define BOOST_PP_WHILE_923_I(p, o, s) BOOST_PP_IF(p(924, s), BOOST_PP_WHILE_924, s BOOST_PP_TUPLE_EAT_3)(p, o, o(924, s)) +# define BOOST_PP_WHILE_924_I(p, o, s) BOOST_PP_IF(p(925, s), BOOST_PP_WHILE_925, s BOOST_PP_TUPLE_EAT_3)(p, o, o(925, s)) +# define BOOST_PP_WHILE_925_I(p, o, s) BOOST_PP_IF(p(926, s), BOOST_PP_WHILE_926, s BOOST_PP_TUPLE_EAT_3)(p, o, o(926, s)) +# define BOOST_PP_WHILE_926_I(p, o, s) BOOST_PP_IF(p(927, s), BOOST_PP_WHILE_927, s BOOST_PP_TUPLE_EAT_3)(p, o, o(927, s)) +# define BOOST_PP_WHILE_927_I(p, o, s) BOOST_PP_IF(p(928, s), BOOST_PP_WHILE_928, s BOOST_PP_TUPLE_EAT_3)(p, o, o(928, s)) +# define BOOST_PP_WHILE_928_I(p, o, s) BOOST_PP_IF(p(929, s), BOOST_PP_WHILE_929, s BOOST_PP_TUPLE_EAT_3)(p, o, o(929, s)) +# define BOOST_PP_WHILE_929_I(p, o, s) BOOST_PP_IF(p(930, s), BOOST_PP_WHILE_930, s BOOST_PP_TUPLE_EAT_3)(p, o, o(930, s)) +# define BOOST_PP_WHILE_930_I(p, o, s) BOOST_PP_IF(p(931, s), BOOST_PP_WHILE_931, s BOOST_PP_TUPLE_EAT_3)(p, o, o(931, s)) +# define BOOST_PP_WHILE_931_I(p, o, s) BOOST_PP_IF(p(932, s), BOOST_PP_WHILE_932, s BOOST_PP_TUPLE_EAT_3)(p, o, o(932, s)) +# define BOOST_PP_WHILE_932_I(p, o, s) BOOST_PP_IF(p(933, s), BOOST_PP_WHILE_933, s BOOST_PP_TUPLE_EAT_3)(p, o, o(933, s)) +# define BOOST_PP_WHILE_933_I(p, o, s) BOOST_PP_IF(p(934, s), BOOST_PP_WHILE_934, s BOOST_PP_TUPLE_EAT_3)(p, o, o(934, s)) +# define BOOST_PP_WHILE_934_I(p, o, s) BOOST_PP_IF(p(935, s), BOOST_PP_WHILE_935, s BOOST_PP_TUPLE_EAT_3)(p, o, o(935, s)) +# define BOOST_PP_WHILE_935_I(p, o, s) BOOST_PP_IF(p(936, s), BOOST_PP_WHILE_936, s BOOST_PP_TUPLE_EAT_3)(p, o, o(936, s)) +# define BOOST_PP_WHILE_936_I(p, o, s) BOOST_PP_IF(p(937, s), BOOST_PP_WHILE_937, s BOOST_PP_TUPLE_EAT_3)(p, o, o(937, s)) +# define BOOST_PP_WHILE_937_I(p, o, s) BOOST_PP_IF(p(938, s), BOOST_PP_WHILE_938, s BOOST_PP_TUPLE_EAT_3)(p, o, o(938, s)) +# define BOOST_PP_WHILE_938_I(p, o, s) BOOST_PP_IF(p(939, s), BOOST_PP_WHILE_939, s BOOST_PP_TUPLE_EAT_3)(p, o, o(939, s)) +# define BOOST_PP_WHILE_939_I(p, o, s) BOOST_PP_IF(p(940, s), BOOST_PP_WHILE_940, s BOOST_PP_TUPLE_EAT_3)(p, o, o(940, s)) +# define BOOST_PP_WHILE_940_I(p, o, s) BOOST_PP_IF(p(941, s), BOOST_PP_WHILE_941, s BOOST_PP_TUPLE_EAT_3)(p, o, o(941, s)) +# define BOOST_PP_WHILE_941_I(p, o, s) BOOST_PP_IF(p(942, s), BOOST_PP_WHILE_942, s BOOST_PP_TUPLE_EAT_3)(p, o, o(942, s)) +# define BOOST_PP_WHILE_942_I(p, o, s) BOOST_PP_IF(p(943, s), BOOST_PP_WHILE_943, s BOOST_PP_TUPLE_EAT_3)(p, o, o(943, s)) +# define BOOST_PP_WHILE_943_I(p, o, s) BOOST_PP_IF(p(944, s), BOOST_PP_WHILE_944, s BOOST_PP_TUPLE_EAT_3)(p, o, o(944, s)) +# define BOOST_PP_WHILE_944_I(p, o, s) BOOST_PP_IF(p(945, s), BOOST_PP_WHILE_945, s BOOST_PP_TUPLE_EAT_3)(p, o, o(945, s)) +# define BOOST_PP_WHILE_945_I(p, o, s) BOOST_PP_IF(p(946, s), BOOST_PP_WHILE_946, s BOOST_PP_TUPLE_EAT_3)(p, o, o(946, s)) +# define BOOST_PP_WHILE_946_I(p, o, s) BOOST_PP_IF(p(947, s), BOOST_PP_WHILE_947, s BOOST_PP_TUPLE_EAT_3)(p, o, o(947, s)) +# define BOOST_PP_WHILE_947_I(p, o, s) BOOST_PP_IF(p(948, s), BOOST_PP_WHILE_948, s BOOST_PP_TUPLE_EAT_3)(p, o, o(948, s)) +# define BOOST_PP_WHILE_948_I(p, o, s) BOOST_PP_IF(p(949, s), BOOST_PP_WHILE_949, s BOOST_PP_TUPLE_EAT_3)(p, o, o(949, s)) +# define BOOST_PP_WHILE_949_I(p, o, s) BOOST_PP_IF(p(950, s), BOOST_PP_WHILE_950, s BOOST_PP_TUPLE_EAT_3)(p, o, o(950, s)) +# define BOOST_PP_WHILE_950_I(p, o, s) BOOST_PP_IF(p(951, s), BOOST_PP_WHILE_951, s BOOST_PP_TUPLE_EAT_3)(p, o, o(951, s)) +# define BOOST_PP_WHILE_951_I(p, o, s) BOOST_PP_IF(p(952, s), BOOST_PP_WHILE_952, s BOOST_PP_TUPLE_EAT_3)(p, o, o(952, s)) +# define BOOST_PP_WHILE_952_I(p, o, s) BOOST_PP_IF(p(953, s), BOOST_PP_WHILE_953, s BOOST_PP_TUPLE_EAT_3)(p, o, o(953, s)) +# define BOOST_PP_WHILE_953_I(p, o, s) BOOST_PP_IF(p(954, s), BOOST_PP_WHILE_954, s BOOST_PP_TUPLE_EAT_3)(p, o, o(954, s)) +# define BOOST_PP_WHILE_954_I(p, o, s) BOOST_PP_IF(p(955, s), BOOST_PP_WHILE_955, s BOOST_PP_TUPLE_EAT_3)(p, o, o(955, s)) +# define BOOST_PP_WHILE_955_I(p, o, s) BOOST_PP_IF(p(956, s), BOOST_PP_WHILE_956, s BOOST_PP_TUPLE_EAT_3)(p, o, o(956, s)) +# define BOOST_PP_WHILE_956_I(p, o, s) BOOST_PP_IF(p(957, s), BOOST_PP_WHILE_957, s BOOST_PP_TUPLE_EAT_3)(p, o, o(957, s)) +# define BOOST_PP_WHILE_957_I(p, o, s) BOOST_PP_IF(p(958, s), BOOST_PP_WHILE_958, s BOOST_PP_TUPLE_EAT_3)(p, o, o(958, s)) +# define BOOST_PP_WHILE_958_I(p, o, s) BOOST_PP_IF(p(959, s), BOOST_PP_WHILE_959, s BOOST_PP_TUPLE_EAT_3)(p, o, o(959, s)) +# define BOOST_PP_WHILE_959_I(p, o, s) BOOST_PP_IF(p(960, s), BOOST_PP_WHILE_960, s BOOST_PP_TUPLE_EAT_3)(p, o, o(960, s)) +# define BOOST_PP_WHILE_960_I(p, o, s) BOOST_PP_IF(p(961, s), BOOST_PP_WHILE_961, s BOOST_PP_TUPLE_EAT_3)(p, o, o(961, s)) +# define BOOST_PP_WHILE_961_I(p, o, s) BOOST_PP_IF(p(962, s), BOOST_PP_WHILE_962, s BOOST_PP_TUPLE_EAT_3)(p, o, o(962, s)) +# define BOOST_PP_WHILE_962_I(p, o, s) BOOST_PP_IF(p(963, s), BOOST_PP_WHILE_963, s BOOST_PP_TUPLE_EAT_3)(p, o, o(963, s)) +# define BOOST_PP_WHILE_963_I(p, o, s) BOOST_PP_IF(p(964, s), BOOST_PP_WHILE_964, s BOOST_PP_TUPLE_EAT_3)(p, o, o(964, s)) +# define BOOST_PP_WHILE_964_I(p, o, s) BOOST_PP_IF(p(965, s), BOOST_PP_WHILE_965, s BOOST_PP_TUPLE_EAT_3)(p, o, o(965, s)) +# define BOOST_PP_WHILE_965_I(p, o, s) BOOST_PP_IF(p(966, s), BOOST_PP_WHILE_966, s BOOST_PP_TUPLE_EAT_3)(p, o, o(966, s)) +# define BOOST_PP_WHILE_966_I(p, o, s) BOOST_PP_IF(p(967, s), BOOST_PP_WHILE_967, s BOOST_PP_TUPLE_EAT_3)(p, o, o(967, s)) +# define BOOST_PP_WHILE_967_I(p, o, s) BOOST_PP_IF(p(968, s), BOOST_PP_WHILE_968, s BOOST_PP_TUPLE_EAT_3)(p, o, o(968, s)) +# define BOOST_PP_WHILE_968_I(p, o, s) BOOST_PP_IF(p(969, s), BOOST_PP_WHILE_969, s BOOST_PP_TUPLE_EAT_3)(p, o, o(969, s)) +# define BOOST_PP_WHILE_969_I(p, o, s) BOOST_PP_IF(p(970, s), BOOST_PP_WHILE_970, s BOOST_PP_TUPLE_EAT_3)(p, o, o(970, s)) +# define BOOST_PP_WHILE_970_I(p, o, s) BOOST_PP_IF(p(971, s), BOOST_PP_WHILE_971, s BOOST_PP_TUPLE_EAT_3)(p, o, o(971, s)) +# define BOOST_PP_WHILE_971_I(p, o, s) BOOST_PP_IF(p(972, s), BOOST_PP_WHILE_972, s BOOST_PP_TUPLE_EAT_3)(p, o, o(972, s)) +# define BOOST_PP_WHILE_972_I(p, o, s) BOOST_PP_IF(p(973, s), BOOST_PP_WHILE_973, s BOOST_PP_TUPLE_EAT_3)(p, o, o(973, s)) +# define BOOST_PP_WHILE_973_I(p, o, s) BOOST_PP_IF(p(974, s), BOOST_PP_WHILE_974, s BOOST_PP_TUPLE_EAT_3)(p, o, o(974, s)) +# define BOOST_PP_WHILE_974_I(p, o, s) BOOST_PP_IF(p(975, s), BOOST_PP_WHILE_975, s BOOST_PP_TUPLE_EAT_3)(p, o, o(975, s)) +# define BOOST_PP_WHILE_975_I(p, o, s) BOOST_PP_IF(p(976, s), BOOST_PP_WHILE_976, s BOOST_PP_TUPLE_EAT_3)(p, o, o(976, s)) +# define BOOST_PP_WHILE_976_I(p, o, s) BOOST_PP_IF(p(977, s), BOOST_PP_WHILE_977, s BOOST_PP_TUPLE_EAT_3)(p, o, o(977, s)) +# define BOOST_PP_WHILE_977_I(p, o, s) BOOST_PP_IF(p(978, s), BOOST_PP_WHILE_978, s BOOST_PP_TUPLE_EAT_3)(p, o, o(978, s)) +# define BOOST_PP_WHILE_978_I(p, o, s) BOOST_PP_IF(p(979, s), BOOST_PP_WHILE_979, s BOOST_PP_TUPLE_EAT_3)(p, o, o(979, s)) +# define BOOST_PP_WHILE_979_I(p, o, s) BOOST_PP_IF(p(980, s), BOOST_PP_WHILE_980, s BOOST_PP_TUPLE_EAT_3)(p, o, o(980, s)) +# define BOOST_PP_WHILE_980_I(p, o, s) BOOST_PP_IF(p(981, s), BOOST_PP_WHILE_981, s BOOST_PP_TUPLE_EAT_3)(p, o, o(981, s)) +# define BOOST_PP_WHILE_981_I(p, o, s) BOOST_PP_IF(p(982, s), BOOST_PP_WHILE_982, s BOOST_PP_TUPLE_EAT_3)(p, o, o(982, s)) +# define BOOST_PP_WHILE_982_I(p, o, s) BOOST_PP_IF(p(983, s), BOOST_PP_WHILE_983, s BOOST_PP_TUPLE_EAT_3)(p, o, o(983, s)) +# define BOOST_PP_WHILE_983_I(p, o, s) BOOST_PP_IF(p(984, s), BOOST_PP_WHILE_984, s BOOST_PP_TUPLE_EAT_3)(p, o, o(984, s)) +# define BOOST_PP_WHILE_984_I(p, o, s) BOOST_PP_IF(p(985, s), BOOST_PP_WHILE_985, s BOOST_PP_TUPLE_EAT_3)(p, o, o(985, s)) +# define BOOST_PP_WHILE_985_I(p, o, s) BOOST_PP_IF(p(986, s), BOOST_PP_WHILE_986, s BOOST_PP_TUPLE_EAT_3)(p, o, o(986, s)) +# define BOOST_PP_WHILE_986_I(p, o, s) BOOST_PP_IF(p(987, s), BOOST_PP_WHILE_987, s BOOST_PP_TUPLE_EAT_3)(p, o, o(987, s)) +# define BOOST_PP_WHILE_987_I(p, o, s) BOOST_PP_IF(p(988, s), BOOST_PP_WHILE_988, s BOOST_PP_TUPLE_EAT_3)(p, o, o(988, s)) +# define BOOST_PP_WHILE_988_I(p, o, s) BOOST_PP_IF(p(989, s), BOOST_PP_WHILE_989, s BOOST_PP_TUPLE_EAT_3)(p, o, o(989, s)) +# define BOOST_PP_WHILE_989_I(p, o, s) BOOST_PP_IF(p(990, s), BOOST_PP_WHILE_990, s BOOST_PP_TUPLE_EAT_3)(p, o, o(990, s)) +# define BOOST_PP_WHILE_990_I(p, o, s) BOOST_PP_IF(p(991, s), BOOST_PP_WHILE_991, s BOOST_PP_TUPLE_EAT_3)(p, o, o(991, s)) +# define BOOST_PP_WHILE_991_I(p, o, s) BOOST_PP_IF(p(992, s), BOOST_PP_WHILE_992, s BOOST_PP_TUPLE_EAT_3)(p, o, o(992, s)) +# define BOOST_PP_WHILE_992_I(p, o, s) BOOST_PP_IF(p(993, s), BOOST_PP_WHILE_993, s BOOST_PP_TUPLE_EAT_3)(p, o, o(993, s)) +# define BOOST_PP_WHILE_993_I(p, o, s) BOOST_PP_IF(p(994, s), BOOST_PP_WHILE_994, s BOOST_PP_TUPLE_EAT_3)(p, o, o(994, s)) +# define BOOST_PP_WHILE_994_I(p, o, s) BOOST_PP_IF(p(995, s), BOOST_PP_WHILE_995, s BOOST_PP_TUPLE_EAT_3)(p, o, o(995, s)) +# define BOOST_PP_WHILE_995_I(p, o, s) BOOST_PP_IF(p(996, s), BOOST_PP_WHILE_996, s BOOST_PP_TUPLE_EAT_3)(p, o, o(996, s)) +# define BOOST_PP_WHILE_996_I(p, o, s) BOOST_PP_IF(p(997, s), BOOST_PP_WHILE_997, s BOOST_PP_TUPLE_EAT_3)(p, o, o(997, s)) +# define BOOST_PP_WHILE_997_I(p, o, s) BOOST_PP_IF(p(998, s), BOOST_PP_WHILE_998, s BOOST_PP_TUPLE_EAT_3)(p, o, o(998, s)) +# define BOOST_PP_WHILE_998_I(p, o, s) BOOST_PP_IF(p(999, s), BOOST_PP_WHILE_999, s BOOST_PP_TUPLE_EAT_3)(p, o, o(999, s)) +# define BOOST_PP_WHILE_999_I(p, o, s) BOOST_PP_IF(p(1000, s), BOOST_PP_WHILE_1000, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1000, s)) +# define BOOST_PP_WHILE_1000_I(p, o, s) BOOST_PP_IF(p(1001, s), BOOST_PP_WHILE_1001, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1001, s)) +# define BOOST_PP_WHILE_1001_I(p, o, s) BOOST_PP_IF(p(1002, s), BOOST_PP_WHILE_1002, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1002, s)) +# define BOOST_PP_WHILE_1002_I(p, o, s) BOOST_PP_IF(p(1003, s), BOOST_PP_WHILE_1003, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1003, s)) +# define BOOST_PP_WHILE_1003_I(p, o, s) BOOST_PP_IF(p(1004, s), BOOST_PP_WHILE_1004, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1004, s)) +# define BOOST_PP_WHILE_1004_I(p, o, s) BOOST_PP_IF(p(1005, s), BOOST_PP_WHILE_1005, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1005, s)) +# define BOOST_PP_WHILE_1005_I(p, o, s) BOOST_PP_IF(p(1006, s), BOOST_PP_WHILE_1006, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1006, s)) +# define BOOST_PP_WHILE_1006_I(p, o, s) BOOST_PP_IF(p(1007, s), BOOST_PP_WHILE_1007, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1007, s)) +# define BOOST_PP_WHILE_1007_I(p, o, s) BOOST_PP_IF(p(1008, s), BOOST_PP_WHILE_1008, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1008, s)) +# define BOOST_PP_WHILE_1008_I(p, o, s) BOOST_PP_IF(p(1009, s), BOOST_PP_WHILE_1009, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1009, s)) +# define BOOST_PP_WHILE_1009_I(p, o, s) BOOST_PP_IF(p(1010, s), BOOST_PP_WHILE_1010, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1010, s)) +# define BOOST_PP_WHILE_1010_I(p, o, s) BOOST_PP_IF(p(1011, s), BOOST_PP_WHILE_1011, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1011, s)) +# define BOOST_PP_WHILE_1011_I(p, o, s) BOOST_PP_IF(p(1012, s), BOOST_PP_WHILE_1012, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1012, s)) +# define BOOST_PP_WHILE_1012_I(p, o, s) BOOST_PP_IF(p(1013, s), BOOST_PP_WHILE_1013, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1013, s)) +# define BOOST_PP_WHILE_1013_I(p, o, s) BOOST_PP_IF(p(1014, s), BOOST_PP_WHILE_1014, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1014, s)) +# define BOOST_PP_WHILE_1014_I(p, o, s) BOOST_PP_IF(p(1015, s), BOOST_PP_WHILE_1015, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1015, s)) +# define BOOST_PP_WHILE_1015_I(p, o, s) BOOST_PP_IF(p(1016, s), BOOST_PP_WHILE_1016, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1016, s)) +# define BOOST_PP_WHILE_1016_I(p, o, s) BOOST_PP_IF(p(1017, s), BOOST_PP_WHILE_1017, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1017, s)) +# define BOOST_PP_WHILE_1017_I(p, o, s) BOOST_PP_IF(p(1018, s), BOOST_PP_WHILE_1018, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1018, s)) +# define BOOST_PP_WHILE_1018_I(p, o, s) BOOST_PP_IF(p(1019, s), BOOST_PP_WHILE_1019, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1019, s)) +# define BOOST_PP_WHILE_1019_I(p, o, s) BOOST_PP_IF(p(1020, s), BOOST_PP_WHILE_1020, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1020, s)) +# define BOOST_PP_WHILE_1020_I(p, o, s) BOOST_PP_IF(p(1021, s), BOOST_PP_WHILE_1021, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1021, s)) +# define BOOST_PP_WHILE_1021_I(p, o, s) BOOST_PP_IF(p(1022, s), BOOST_PP_WHILE_1022, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1022, s)) +# define BOOST_PP_WHILE_1022_I(p, o, s) BOOST_PP_IF(p(1023, s), BOOST_PP_WHILE_1023, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1023, s)) +# define BOOST_PP_WHILE_1023_I(p, o, s) BOOST_PP_IF(p(1024, s), BOOST_PP_WHILE_1024, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1024, s)) +# define BOOST_PP_WHILE_1024_I(p, o, s) BOOST_PP_IF(p(1025, s), BOOST_PP_WHILE_1025, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1025, s)) +# +# endif diff --git a/src/boost/boost/preprocessor/control/detail/edg/limits/while_256.hpp b/src/boost/boost/preprocessor/control/detail/edg/limits/while_256.hpp new file mode 100644 index 000000000..81db8f836 --- /dev/null +++ b/src/boost/boost/preprocessor/control/detail/edg/limits/while_256.hpp @@ -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 diff --git a/src/boost/boost/preprocessor/control/detail/edg/limits/while_512.hpp b/src/boost/boost/preprocessor/control/detail/edg/limits/while_512.hpp new file mode 100644 index 000000000..935dfc6cc --- /dev/null +++ b/src/boost/boost/preprocessor/control/detail/edg/limits/while_512.hpp @@ -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 diff --git a/src/boost/boost/preprocessor/control/detail/edg/while.hpp b/src/boost/boost/preprocessor/control/detail/edg/while.hpp index ea10ecccd..3cd6844ff 100644 --- a/src/boost/boost/preprocessor/control/detail/edg/while.hpp +++ b/src/boost/boost/preprocessor/control/detail/edg/while.hpp @@ -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 +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # @@ -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 +# include +# +# include +# +# if BOOST_PP_LIMIT_WHILE == 256 +# include +# elif BOOST_PP_LIMIT_WHILE == 512 +# include +# include +# elif BOOST_PP_LIMIT_WHILE == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/control/detail/limits/while_1024.hpp b/src/boost/boost/preprocessor/control/detail/limits/while_1024.hpp new file mode 100644 index 000000000..02ed16910 --- /dev/null +++ b/src/boost/boost/preprocessor/control/detail/limits/while_1024.hpp @@ -0,0 +1,1044 @@ +# /* 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_WHILE_1024_HPP +# define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_1024_HPP +# +# define BOOST_PP_WHILE_513(p, o, s) BOOST_PP_WHILE_513_C(BOOST_PP_BOOL(p(514, s)), p, o, s) +# define BOOST_PP_WHILE_514(p, o, s) BOOST_PP_WHILE_514_C(BOOST_PP_BOOL(p(515, s)), p, o, s) +# define BOOST_PP_WHILE_515(p, o, s) BOOST_PP_WHILE_515_C(BOOST_PP_BOOL(p(516, s)), p, o, s) +# define BOOST_PP_WHILE_516(p, o, s) BOOST_PP_WHILE_516_C(BOOST_PP_BOOL(p(517, s)), p, o, s) +# define BOOST_PP_WHILE_517(p, o, s) BOOST_PP_WHILE_517_C(BOOST_PP_BOOL(p(518, s)), p, o, s) +# define BOOST_PP_WHILE_518(p, o, s) BOOST_PP_WHILE_518_C(BOOST_PP_BOOL(p(519, s)), p, o, s) +# define BOOST_PP_WHILE_519(p, o, s) BOOST_PP_WHILE_519_C(BOOST_PP_BOOL(p(520, s)), p, o, s) +# define BOOST_PP_WHILE_520(p, o, s) BOOST_PP_WHILE_520_C(BOOST_PP_BOOL(p(521, s)), p, o, s) +# define BOOST_PP_WHILE_521(p, o, s) BOOST_PP_WHILE_521_C(BOOST_PP_BOOL(p(522, s)), p, o, s) +# define BOOST_PP_WHILE_522(p, o, s) BOOST_PP_WHILE_522_C(BOOST_PP_BOOL(p(523, s)), p, o, s) +# define BOOST_PP_WHILE_523(p, o, s) BOOST_PP_WHILE_523_C(BOOST_PP_BOOL(p(524, s)), p, o, s) +# define BOOST_PP_WHILE_524(p, o, s) BOOST_PP_WHILE_524_C(BOOST_PP_BOOL(p(525, s)), p, o, s) +# define BOOST_PP_WHILE_525(p, o, s) BOOST_PP_WHILE_525_C(BOOST_PP_BOOL(p(526, s)), p, o, s) +# define BOOST_PP_WHILE_526(p, o, s) BOOST_PP_WHILE_526_C(BOOST_PP_BOOL(p(527, s)), p, o, s) +# define BOOST_PP_WHILE_527(p, o, s) BOOST_PP_WHILE_527_C(BOOST_PP_BOOL(p(528, s)), p, o, s) +# define BOOST_PP_WHILE_528(p, o, s) BOOST_PP_WHILE_528_C(BOOST_PP_BOOL(p(529, s)), p, o, s) +# define BOOST_PP_WHILE_529(p, o, s) BOOST_PP_WHILE_529_C(BOOST_PP_BOOL(p(530, s)), p, o, s) +# define BOOST_PP_WHILE_530(p, o, s) BOOST_PP_WHILE_530_C(BOOST_PP_BOOL(p(531, s)), p, o, s) +# define BOOST_PP_WHILE_531(p, o, s) BOOST_PP_WHILE_531_C(BOOST_PP_BOOL(p(532, s)), p, o, s) +# define BOOST_PP_WHILE_532(p, o, s) BOOST_PP_WHILE_532_C(BOOST_PP_BOOL(p(533, s)), p, o, s) +# define BOOST_PP_WHILE_533(p, o, s) BOOST_PP_WHILE_533_C(BOOST_PP_BOOL(p(534, s)), p, o, s) +# define BOOST_PP_WHILE_534(p, o, s) BOOST_PP_WHILE_534_C(BOOST_PP_BOOL(p(535, s)), p, o, s) +# define BOOST_PP_WHILE_535(p, o, s) BOOST_PP_WHILE_535_C(BOOST_PP_BOOL(p(536, s)), p, o, s) +# define BOOST_PP_WHILE_536(p, o, s) BOOST_PP_WHILE_536_C(BOOST_PP_BOOL(p(537, s)), p, o, s) +# define BOOST_PP_WHILE_537(p, o, s) BOOST_PP_WHILE_537_C(BOOST_PP_BOOL(p(538, s)), p, o, s) +# define BOOST_PP_WHILE_538(p, o, s) BOOST_PP_WHILE_538_C(BOOST_PP_BOOL(p(539, s)), p, o, s) +# define BOOST_PP_WHILE_539(p, o, s) BOOST_PP_WHILE_539_C(BOOST_PP_BOOL(p(540, s)), p, o, s) +# define BOOST_PP_WHILE_540(p, o, s) BOOST_PP_WHILE_540_C(BOOST_PP_BOOL(p(541, s)), p, o, s) +# define BOOST_PP_WHILE_541(p, o, s) BOOST_PP_WHILE_541_C(BOOST_PP_BOOL(p(542, s)), p, o, s) +# define BOOST_PP_WHILE_542(p, o, s) BOOST_PP_WHILE_542_C(BOOST_PP_BOOL(p(543, s)), p, o, s) +# define BOOST_PP_WHILE_543(p, o, s) BOOST_PP_WHILE_543_C(BOOST_PP_BOOL(p(544, s)), p, o, s) +# define BOOST_PP_WHILE_544(p, o, s) BOOST_PP_WHILE_544_C(BOOST_PP_BOOL(p(545, s)), p, o, s) +# define BOOST_PP_WHILE_545(p, o, s) BOOST_PP_WHILE_545_C(BOOST_PP_BOOL(p(546, s)), p, o, s) +# define BOOST_PP_WHILE_546(p, o, s) BOOST_PP_WHILE_546_C(BOOST_PP_BOOL(p(547, s)), p, o, s) +# define BOOST_PP_WHILE_547(p, o, s) BOOST_PP_WHILE_547_C(BOOST_PP_BOOL(p(548, s)), p, o, s) +# define BOOST_PP_WHILE_548(p, o, s) BOOST_PP_WHILE_548_C(BOOST_PP_BOOL(p(549, s)), p, o, s) +# define BOOST_PP_WHILE_549(p, o, s) BOOST_PP_WHILE_549_C(BOOST_PP_BOOL(p(550, s)), p, o, s) +# define BOOST_PP_WHILE_550(p, o, s) BOOST_PP_WHILE_550_C(BOOST_PP_BOOL(p(551, s)), p, o, s) +# define BOOST_PP_WHILE_551(p, o, s) BOOST_PP_WHILE_551_C(BOOST_PP_BOOL(p(552, s)), p, o, s) +# define BOOST_PP_WHILE_552(p, o, s) BOOST_PP_WHILE_552_C(BOOST_PP_BOOL(p(553, s)), p, o, s) +# define BOOST_PP_WHILE_553(p, o, s) BOOST_PP_WHILE_553_C(BOOST_PP_BOOL(p(554, s)), p, o, s) +# define BOOST_PP_WHILE_554(p, o, s) BOOST_PP_WHILE_554_C(BOOST_PP_BOOL(p(555, s)), p, o, s) +# define BOOST_PP_WHILE_555(p, o, s) BOOST_PP_WHILE_555_C(BOOST_PP_BOOL(p(556, s)), p, o, s) +# define BOOST_PP_WHILE_556(p, o, s) BOOST_PP_WHILE_556_C(BOOST_PP_BOOL(p(557, s)), p, o, s) +# define BOOST_PP_WHILE_557(p, o, s) BOOST_PP_WHILE_557_C(BOOST_PP_BOOL(p(558, s)), p, o, s) +# define BOOST_PP_WHILE_558(p, o, s) BOOST_PP_WHILE_558_C(BOOST_PP_BOOL(p(559, s)), p, o, s) +# define BOOST_PP_WHILE_559(p, o, s) BOOST_PP_WHILE_559_C(BOOST_PP_BOOL(p(560, s)), p, o, s) +# define BOOST_PP_WHILE_560(p, o, s) BOOST_PP_WHILE_560_C(BOOST_PP_BOOL(p(561, s)), p, o, s) +# define BOOST_PP_WHILE_561(p, o, s) BOOST_PP_WHILE_561_C(BOOST_PP_BOOL(p(562, s)), p, o, s) +# define BOOST_PP_WHILE_562(p, o, s) BOOST_PP_WHILE_562_C(BOOST_PP_BOOL(p(563, s)), p, o, s) +# define BOOST_PP_WHILE_563(p, o, s) BOOST_PP_WHILE_563_C(BOOST_PP_BOOL(p(564, s)), p, o, s) +# define BOOST_PP_WHILE_564(p, o, s) BOOST_PP_WHILE_564_C(BOOST_PP_BOOL(p(565, s)), p, o, s) +# define BOOST_PP_WHILE_565(p, o, s) BOOST_PP_WHILE_565_C(BOOST_PP_BOOL(p(566, s)), p, o, s) +# define BOOST_PP_WHILE_566(p, o, s) BOOST_PP_WHILE_566_C(BOOST_PP_BOOL(p(567, s)), p, o, s) +# define BOOST_PP_WHILE_567(p, o, s) BOOST_PP_WHILE_567_C(BOOST_PP_BOOL(p(568, s)), p, o, s) +# define BOOST_PP_WHILE_568(p, o, s) BOOST_PP_WHILE_568_C(BOOST_PP_BOOL(p(569, s)), p, o, s) +# define BOOST_PP_WHILE_569(p, o, s) BOOST_PP_WHILE_569_C(BOOST_PP_BOOL(p(570, s)), p, o, s) +# define BOOST_PP_WHILE_570(p, o, s) BOOST_PP_WHILE_570_C(BOOST_PP_BOOL(p(571, s)), p, o, s) +# define BOOST_PP_WHILE_571(p, o, s) BOOST_PP_WHILE_571_C(BOOST_PP_BOOL(p(572, s)), p, o, s) +# define BOOST_PP_WHILE_572(p, o, s) BOOST_PP_WHILE_572_C(BOOST_PP_BOOL(p(573, s)), p, o, s) +# define BOOST_PP_WHILE_573(p, o, s) BOOST_PP_WHILE_573_C(BOOST_PP_BOOL(p(574, s)), p, o, s) +# define BOOST_PP_WHILE_574(p, o, s) BOOST_PP_WHILE_574_C(BOOST_PP_BOOL(p(575, s)), p, o, s) +# define BOOST_PP_WHILE_575(p, o, s) BOOST_PP_WHILE_575_C(BOOST_PP_BOOL(p(576, s)), p, o, s) +# define BOOST_PP_WHILE_576(p, o, s) BOOST_PP_WHILE_576_C(BOOST_PP_BOOL(p(577, s)), p, o, s) +# define BOOST_PP_WHILE_577(p, o, s) BOOST_PP_WHILE_577_C(BOOST_PP_BOOL(p(578, s)), p, o, s) +# define BOOST_PP_WHILE_578(p, o, s) BOOST_PP_WHILE_578_C(BOOST_PP_BOOL(p(579, s)), p, o, s) +# define BOOST_PP_WHILE_579(p, o, s) BOOST_PP_WHILE_579_C(BOOST_PP_BOOL(p(580, s)), p, o, s) +# define BOOST_PP_WHILE_580(p, o, s) BOOST_PP_WHILE_580_C(BOOST_PP_BOOL(p(581, s)), p, o, s) +# define BOOST_PP_WHILE_581(p, o, s) BOOST_PP_WHILE_581_C(BOOST_PP_BOOL(p(582, s)), p, o, s) +# define BOOST_PP_WHILE_582(p, o, s) BOOST_PP_WHILE_582_C(BOOST_PP_BOOL(p(583, s)), p, o, s) +# define BOOST_PP_WHILE_583(p, o, s) BOOST_PP_WHILE_583_C(BOOST_PP_BOOL(p(584, s)), p, o, s) +# define BOOST_PP_WHILE_584(p, o, s) BOOST_PP_WHILE_584_C(BOOST_PP_BOOL(p(585, s)), p, o, s) +# define BOOST_PP_WHILE_585(p, o, s) BOOST_PP_WHILE_585_C(BOOST_PP_BOOL(p(586, s)), p, o, s) +# define BOOST_PP_WHILE_586(p, o, s) BOOST_PP_WHILE_586_C(BOOST_PP_BOOL(p(587, s)), p, o, s) +# define BOOST_PP_WHILE_587(p, o, s) BOOST_PP_WHILE_587_C(BOOST_PP_BOOL(p(588, s)), p, o, s) +# define BOOST_PP_WHILE_588(p, o, s) BOOST_PP_WHILE_588_C(BOOST_PP_BOOL(p(589, s)), p, o, s) +# define BOOST_PP_WHILE_589(p, o, s) BOOST_PP_WHILE_589_C(BOOST_PP_BOOL(p(590, s)), p, o, s) +# define BOOST_PP_WHILE_590(p, o, s) BOOST_PP_WHILE_590_C(BOOST_PP_BOOL(p(591, s)), p, o, s) +# define BOOST_PP_WHILE_591(p, o, s) BOOST_PP_WHILE_591_C(BOOST_PP_BOOL(p(592, s)), p, o, s) +# define BOOST_PP_WHILE_592(p, o, s) BOOST_PP_WHILE_592_C(BOOST_PP_BOOL(p(593, s)), p, o, s) +# define BOOST_PP_WHILE_593(p, o, s) BOOST_PP_WHILE_593_C(BOOST_PP_BOOL(p(594, s)), p, o, s) +# define BOOST_PP_WHILE_594(p, o, s) BOOST_PP_WHILE_594_C(BOOST_PP_BOOL(p(595, s)), p, o, s) +# define BOOST_PP_WHILE_595(p, o, s) BOOST_PP_WHILE_595_C(BOOST_PP_BOOL(p(596, s)), p, o, s) +# define BOOST_PP_WHILE_596(p, o, s) BOOST_PP_WHILE_596_C(BOOST_PP_BOOL(p(597, s)), p, o, s) +# define BOOST_PP_WHILE_597(p, o, s) BOOST_PP_WHILE_597_C(BOOST_PP_BOOL(p(598, s)), p, o, s) +# define BOOST_PP_WHILE_598(p, o, s) BOOST_PP_WHILE_598_C(BOOST_PP_BOOL(p(599, s)), p, o, s) +# define BOOST_PP_WHILE_599(p, o, s) BOOST_PP_WHILE_599_C(BOOST_PP_BOOL(p(600, s)), p, o, s) +# define BOOST_PP_WHILE_600(p, o, s) BOOST_PP_WHILE_600_C(BOOST_PP_BOOL(p(601, s)), p, o, s) +# define BOOST_PP_WHILE_601(p, o, s) BOOST_PP_WHILE_601_C(BOOST_PP_BOOL(p(602, s)), p, o, s) +# define BOOST_PP_WHILE_602(p, o, s) BOOST_PP_WHILE_602_C(BOOST_PP_BOOL(p(603, s)), p, o, s) +# define BOOST_PP_WHILE_603(p, o, s) BOOST_PP_WHILE_603_C(BOOST_PP_BOOL(p(604, s)), p, o, s) +# define BOOST_PP_WHILE_604(p, o, s) BOOST_PP_WHILE_604_C(BOOST_PP_BOOL(p(605, s)), p, o, s) +# define BOOST_PP_WHILE_605(p, o, s) BOOST_PP_WHILE_605_C(BOOST_PP_BOOL(p(606, s)), p, o, s) +# define BOOST_PP_WHILE_606(p, o, s) BOOST_PP_WHILE_606_C(BOOST_PP_BOOL(p(607, s)), p, o, s) +# define BOOST_PP_WHILE_607(p, o, s) BOOST_PP_WHILE_607_C(BOOST_PP_BOOL(p(608, s)), p, o, s) +# define BOOST_PP_WHILE_608(p, o, s) BOOST_PP_WHILE_608_C(BOOST_PP_BOOL(p(609, s)), p, o, s) +# define BOOST_PP_WHILE_609(p, o, s) BOOST_PP_WHILE_609_C(BOOST_PP_BOOL(p(610, s)), p, o, s) +# define BOOST_PP_WHILE_610(p, o, s) BOOST_PP_WHILE_610_C(BOOST_PP_BOOL(p(611, s)), p, o, s) +# define BOOST_PP_WHILE_611(p, o, s) BOOST_PP_WHILE_611_C(BOOST_PP_BOOL(p(612, s)), p, o, s) +# define BOOST_PP_WHILE_612(p, o, s) BOOST_PP_WHILE_612_C(BOOST_PP_BOOL(p(613, s)), p, o, s) +# define BOOST_PP_WHILE_613(p, o, s) BOOST_PP_WHILE_613_C(BOOST_PP_BOOL(p(614, s)), p, o, s) +# define BOOST_PP_WHILE_614(p, o, s) BOOST_PP_WHILE_614_C(BOOST_PP_BOOL(p(615, s)), p, o, s) +# define BOOST_PP_WHILE_615(p, o, s) BOOST_PP_WHILE_615_C(BOOST_PP_BOOL(p(616, s)), p, o, s) +# define BOOST_PP_WHILE_616(p, o, s) BOOST_PP_WHILE_616_C(BOOST_PP_BOOL(p(617, s)), p, o, s) +# define BOOST_PP_WHILE_617(p, o, s) BOOST_PP_WHILE_617_C(BOOST_PP_BOOL(p(618, s)), p, o, s) +# define BOOST_PP_WHILE_618(p, o, s) BOOST_PP_WHILE_618_C(BOOST_PP_BOOL(p(619, s)), p, o, s) +# define BOOST_PP_WHILE_619(p, o, s) BOOST_PP_WHILE_619_C(BOOST_PP_BOOL(p(620, s)), p, o, s) +# define BOOST_PP_WHILE_620(p, o, s) BOOST_PP_WHILE_620_C(BOOST_PP_BOOL(p(621, s)), p, o, s) +# define BOOST_PP_WHILE_621(p, o, s) BOOST_PP_WHILE_621_C(BOOST_PP_BOOL(p(622, s)), p, o, s) +# define BOOST_PP_WHILE_622(p, o, s) BOOST_PP_WHILE_622_C(BOOST_PP_BOOL(p(623, s)), p, o, s) +# define BOOST_PP_WHILE_623(p, o, s) BOOST_PP_WHILE_623_C(BOOST_PP_BOOL(p(624, s)), p, o, s) +# define BOOST_PP_WHILE_624(p, o, s) BOOST_PP_WHILE_624_C(BOOST_PP_BOOL(p(625, s)), p, o, s) +# define BOOST_PP_WHILE_625(p, o, s) BOOST_PP_WHILE_625_C(BOOST_PP_BOOL(p(626, s)), p, o, s) +# define BOOST_PP_WHILE_626(p, o, s) BOOST_PP_WHILE_626_C(BOOST_PP_BOOL(p(627, s)), p, o, s) +# define BOOST_PP_WHILE_627(p, o, s) BOOST_PP_WHILE_627_C(BOOST_PP_BOOL(p(628, s)), p, o, s) +# define BOOST_PP_WHILE_628(p, o, s) BOOST_PP_WHILE_628_C(BOOST_PP_BOOL(p(629, s)), p, o, s) +# define BOOST_PP_WHILE_629(p, o, s) BOOST_PP_WHILE_629_C(BOOST_PP_BOOL(p(630, s)), p, o, s) +# define BOOST_PP_WHILE_630(p, o, s) BOOST_PP_WHILE_630_C(BOOST_PP_BOOL(p(631, s)), p, o, s) +# define BOOST_PP_WHILE_631(p, o, s) BOOST_PP_WHILE_631_C(BOOST_PP_BOOL(p(632, s)), p, o, s) +# define BOOST_PP_WHILE_632(p, o, s) BOOST_PP_WHILE_632_C(BOOST_PP_BOOL(p(633, s)), p, o, s) +# define BOOST_PP_WHILE_633(p, o, s) BOOST_PP_WHILE_633_C(BOOST_PP_BOOL(p(634, s)), p, o, s) +# define BOOST_PP_WHILE_634(p, o, s) BOOST_PP_WHILE_634_C(BOOST_PP_BOOL(p(635, s)), p, o, s) +# define BOOST_PP_WHILE_635(p, o, s) BOOST_PP_WHILE_635_C(BOOST_PP_BOOL(p(636, s)), p, o, s) +# define BOOST_PP_WHILE_636(p, o, s) BOOST_PP_WHILE_636_C(BOOST_PP_BOOL(p(637, s)), p, o, s) +# define BOOST_PP_WHILE_637(p, o, s) BOOST_PP_WHILE_637_C(BOOST_PP_BOOL(p(638, s)), p, o, s) +# define BOOST_PP_WHILE_638(p, o, s) BOOST_PP_WHILE_638_C(BOOST_PP_BOOL(p(639, s)), p, o, s) +# define BOOST_PP_WHILE_639(p, o, s) BOOST_PP_WHILE_639_C(BOOST_PP_BOOL(p(640, s)), p, o, s) +# define BOOST_PP_WHILE_640(p, o, s) BOOST_PP_WHILE_640_C(BOOST_PP_BOOL(p(641, s)), p, o, s) +# define BOOST_PP_WHILE_641(p, o, s) BOOST_PP_WHILE_641_C(BOOST_PP_BOOL(p(642, s)), p, o, s) +# define BOOST_PP_WHILE_642(p, o, s) BOOST_PP_WHILE_642_C(BOOST_PP_BOOL(p(643, s)), p, o, s) +# define BOOST_PP_WHILE_643(p, o, s) BOOST_PP_WHILE_643_C(BOOST_PP_BOOL(p(644, s)), p, o, s) +# define BOOST_PP_WHILE_644(p, o, s) BOOST_PP_WHILE_644_C(BOOST_PP_BOOL(p(645, s)), p, o, s) +# define BOOST_PP_WHILE_645(p, o, s) BOOST_PP_WHILE_645_C(BOOST_PP_BOOL(p(646, s)), p, o, s) +# define BOOST_PP_WHILE_646(p, o, s) BOOST_PP_WHILE_646_C(BOOST_PP_BOOL(p(647, s)), p, o, s) +# define BOOST_PP_WHILE_647(p, o, s) BOOST_PP_WHILE_647_C(BOOST_PP_BOOL(p(648, s)), p, o, s) +# define BOOST_PP_WHILE_648(p, o, s) BOOST_PP_WHILE_648_C(BOOST_PP_BOOL(p(649, s)), p, o, s) +# define BOOST_PP_WHILE_649(p, o, s) BOOST_PP_WHILE_649_C(BOOST_PP_BOOL(p(650, s)), p, o, s) +# define BOOST_PP_WHILE_650(p, o, s) BOOST_PP_WHILE_650_C(BOOST_PP_BOOL(p(651, s)), p, o, s) +# define BOOST_PP_WHILE_651(p, o, s) BOOST_PP_WHILE_651_C(BOOST_PP_BOOL(p(652, s)), p, o, s) +# define BOOST_PP_WHILE_652(p, o, s) BOOST_PP_WHILE_652_C(BOOST_PP_BOOL(p(653, s)), p, o, s) +# define BOOST_PP_WHILE_653(p, o, s) BOOST_PP_WHILE_653_C(BOOST_PP_BOOL(p(654, s)), p, o, s) +# define BOOST_PP_WHILE_654(p, o, s) BOOST_PP_WHILE_654_C(BOOST_PP_BOOL(p(655, s)), p, o, s) +# define BOOST_PP_WHILE_655(p, o, s) BOOST_PP_WHILE_655_C(BOOST_PP_BOOL(p(656, s)), p, o, s) +# define BOOST_PP_WHILE_656(p, o, s) BOOST_PP_WHILE_656_C(BOOST_PP_BOOL(p(657, s)), p, o, s) +# define BOOST_PP_WHILE_657(p, o, s) BOOST_PP_WHILE_657_C(BOOST_PP_BOOL(p(658, s)), p, o, s) +# define BOOST_PP_WHILE_658(p, o, s) BOOST_PP_WHILE_658_C(BOOST_PP_BOOL(p(659, s)), p, o, s) +# define BOOST_PP_WHILE_659(p, o, s) BOOST_PP_WHILE_659_C(BOOST_PP_BOOL(p(660, s)), p, o, s) +# define BOOST_PP_WHILE_660(p, o, s) BOOST_PP_WHILE_660_C(BOOST_PP_BOOL(p(661, s)), p, o, s) +# define BOOST_PP_WHILE_661(p, o, s) BOOST_PP_WHILE_661_C(BOOST_PP_BOOL(p(662, s)), p, o, s) +# define BOOST_PP_WHILE_662(p, o, s) BOOST_PP_WHILE_662_C(BOOST_PP_BOOL(p(663, s)), p, o, s) +# define BOOST_PP_WHILE_663(p, o, s) BOOST_PP_WHILE_663_C(BOOST_PP_BOOL(p(664, s)), p, o, s) +# define BOOST_PP_WHILE_664(p, o, s) BOOST_PP_WHILE_664_C(BOOST_PP_BOOL(p(665, s)), p, o, s) +# define BOOST_PP_WHILE_665(p, o, s) BOOST_PP_WHILE_665_C(BOOST_PP_BOOL(p(666, s)), p, o, s) +# define BOOST_PP_WHILE_666(p, o, s) BOOST_PP_WHILE_666_C(BOOST_PP_BOOL(p(667, s)), p, o, s) +# define BOOST_PP_WHILE_667(p, o, s) BOOST_PP_WHILE_667_C(BOOST_PP_BOOL(p(668, s)), p, o, s) +# define BOOST_PP_WHILE_668(p, o, s) BOOST_PP_WHILE_668_C(BOOST_PP_BOOL(p(669, s)), p, o, s) +# define BOOST_PP_WHILE_669(p, o, s) BOOST_PP_WHILE_669_C(BOOST_PP_BOOL(p(670, s)), p, o, s) +# define BOOST_PP_WHILE_670(p, o, s) BOOST_PP_WHILE_670_C(BOOST_PP_BOOL(p(671, s)), p, o, s) +# define BOOST_PP_WHILE_671(p, o, s) BOOST_PP_WHILE_671_C(BOOST_PP_BOOL(p(672, s)), p, o, s) +# define BOOST_PP_WHILE_672(p, o, s) BOOST_PP_WHILE_672_C(BOOST_PP_BOOL(p(673, s)), p, o, s) +# define BOOST_PP_WHILE_673(p, o, s) BOOST_PP_WHILE_673_C(BOOST_PP_BOOL(p(674, s)), p, o, s) +# define BOOST_PP_WHILE_674(p, o, s) BOOST_PP_WHILE_674_C(BOOST_PP_BOOL(p(675, s)), p, o, s) +# define BOOST_PP_WHILE_675(p, o, s) BOOST_PP_WHILE_675_C(BOOST_PP_BOOL(p(676, s)), p, o, s) +# define BOOST_PP_WHILE_676(p, o, s) BOOST_PP_WHILE_676_C(BOOST_PP_BOOL(p(677, s)), p, o, s) +# define BOOST_PP_WHILE_677(p, o, s) BOOST_PP_WHILE_677_C(BOOST_PP_BOOL(p(678, s)), p, o, s) +# define BOOST_PP_WHILE_678(p, o, s) BOOST_PP_WHILE_678_C(BOOST_PP_BOOL(p(679, s)), p, o, s) +# define BOOST_PP_WHILE_679(p, o, s) BOOST_PP_WHILE_679_C(BOOST_PP_BOOL(p(680, s)), p, o, s) +# define BOOST_PP_WHILE_680(p, o, s) BOOST_PP_WHILE_680_C(BOOST_PP_BOOL(p(681, s)), p, o, s) +# define BOOST_PP_WHILE_681(p, o, s) BOOST_PP_WHILE_681_C(BOOST_PP_BOOL(p(682, s)), p, o, s) +# define BOOST_PP_WHILE_682(p, o, s) BOOST_PP_WHILE_682_C(BOOST_PP_BOOL(p(683, s)), p, o, s) +# define BOOST_PP_WHILE_683(p, o, s) BOOST_PP_WHILE_683_C(BOOST_PP_BOOL(p(684, s)), p, o, s) +# define BOOST_PP_WHILE_684(p, o, s) BOOST_PP_WHILE_684_C(BOOST_PP_BOOL(p(685, s)), p, o, s) +# define BOOST_PP_WHILE_685(p, o, s) BOOST_PP_WHILE_685_C(BOOST_PP_BOOL(p(686, s)), p, o, s) +# define BOOST_PP_WHILE_686(p, o, s) BOOST_PP_WHILE_686_C(BOOST_PP_BOOL(p(687, s)), p, o, s) +# define BOOST_PP_WHILE_687(p, o, s) BOOST_PP_WHILE_687_C(BOOST_PP_BOOL(p(688, s)), p, o, s) +# define BOOST_PP_WHILE_688(p, o, s) BOOST_PP_WHILE_688_C(BOOST_PP_BOOL(p(689, s)), p, o, s) +# define BOOST_PP_WHILE_689(p, o, s) BOOST_PP_WHILE_689_C(BOOST_PP_BOOL(p(690, s)), p, o, s) +# define BOOST_PP_WHILE_690(p, o, s) BOOST_PP_WHILE_690_C(BOOST_PP_BOOL(p(691, s)), p, o, s) +# define BOOST_PP_WHILE_691(p, o, s) BOOST_PP_WHILE_691_C(BOOST_PP_BOOL(p(692, s)), p, o, s) +# define BOOST_PP_WHILE_692(p, o, s) BOOST_PP_WHILE_692_C(BOOST_PP_BOOL(p(693, s)), p, o, s) +# define BOOST_PP_WHILE_693(p, o, s) BOOST_PP_WHILE_693_C(BOOST_PP_BOOL(p(694, s)), p, o, s) +# define BOOST_PP_WHILE_694(p, o, s) BOOST_PP_WHILE_694_C(BOOST_PP_BOOL(p(695, s)), p, o, s) +# define BOOST_PP_WHILE_695(p, o, s) BOOST_PP_WHILE_695_C(BOOST_PP_BOOL(p(696, s)), p, o, s) +# define BOOST_PP_WHILE_696(p, o, s) BOOST_PP_WHILE_696_C(BOOST_PP_BOOL(p(697, s)), p, o, s) +# define BOOST_PP_WHILE_697(p, o, s) BOOST_PP_WHILE_697_C(BOOST_PP_BOOL(p(698, s)), p, o, s) +# define BOOST_PP_WHILE_698(p, o, s) BOOST_PP_WHILE_698_C(BOOST_PP_BOOL(p(699, s)), p, o, s) +# define BOOST_PP_WHILE_699(p, o, s) BOOST_PP_WHILE_699_C(BOOST_PP_BOOL(p(700, s)), p, o, s) +# define BOOST_PP_WHILE_700(p, o, s) BOOST_PP_WHILE_700_C(BOOST_PP_BOOL(p(701, s)), p, o, s) +# define BOOST_PP_WHILE_701(p, o, s) BOOST_PP_WHILE_701_C(BOOST_PP_BOOL(p(702, s)), p, o, s) +# define BOOST_PP_WHILE_702(p, o, s) BOOST_PP_WHILE_702_C(BOOST_PP_BOOL(p(703, s)), p, o, s) +# define BOOST_PP_WHILE_703(p, o, s) BOOST_PP_WHILE_703_C(BOOST_PP_BOOL(p(704, s)), p, o, s) +# define BOOST_PP_WHILE_704(p, o, s) BOOST_PP_WHILE_704_C(BOOST_PP_BOOL(p(705, s)), p, o, s) +# define BOOST_PP_WHILE_705(p, o, s) BOOST_PP_WHILE_705_C(BOOST_PP_BOOL(p(706, s)), p, o, s) +# define BOOST_PP_WHILE_706(p, o, s) BOOST_PP_WHILE_706_C(BOOST_PP_BOOL(p(707, s)), p, o, s) +# define BOOST_PP_WHILE_707(p, o, s) BOOST_PP_WHILE_707_C(BOOST_PP_BOOL(p(708, s)), p, o, s) +# define BOOST_PP_WHILE_708(p, o, s) BOOST_PP_WHILE_708_C(BOOST_PP_BOOL(p(709, s)), p, o, s) +# define BOOST_PP_WHILE_709(p, o, s) BOOST_PP_WHILE_709_C(BOOST_PP_BOOL(p(710, s)), p, o, s) +# define BOOST_PP_WHILE_710(p, o, s) BOOST_PP_WHILE_710_C(BOOST_PP_BOOL(p(711, s)), p, o, s) +# define BOOST_PP_WHILE_711(p, o, s) BOOST_PP_WHILE_711_C(BOOST_PP_BOOL(p(712, s)), p, o, s) +# define BOOST_PP_WHILE_712(p, o, s) BOOST_PP_WHILE_712_C(BOOST_PP_BOOL(p(713, s)), p, o, s) +# define BOOST_PP_WHILE_713(p, o, s) BOOST_PP_WHILE_713_C(BOOST_PP_BOOL(p(714, s)), p, o, s) +# define BOOST_PP_WHILE_714(p, o, s) BOOST_PP_WHILE_714_C(BOOST_PP_BOOL(p(715, s)), p, o, s) +# define BOOST_PP_WHILE_715(p, o, s) BOOST_PP_WHILE_715_C(BOOST_PP_BOOL(p(716, s)), p, o, s) +# define BOOST_PP_WHILE_716(p, o, s) BOOST_PP_WHILE_716_C(BOOST_PP_BOOL(p(717, s)), p, o, s) +# define BOOST_PP_WHILE_717(p, o, s) BOOST_PP_WHILE_717_C(BOOST_PP_BOOL(p(718, s)), p, o, s) +# define BOOST_PP_WHILE_718(p, o, s) BOOST_PP_WHILE_718_C(BOOST_PP_BOOL(p(719, s)), p, o, s) +# define BOOST_PP_WHILE_719(p, o, s) BOOST_PP_WHILE_719_C(BOOST_PP_BOOL(p(720, s)), p, o, s) +# define BOOST_PP_WHILE_720(p, o, s) BOOST_PP_WHILE_720_C(BOOST_PP_BOOL(p(721, s)), p, o, s) +# define BOOST_PP_WHILE_721(p, o, s) BOOST_PP_WHILE_721_C(BOOST_PP_BOOL(p(722, s)), p, o, s) +# define BOOST_PP_WHILE_722(p, o, s) BOOST_PP_WHILE_722_C(BOOST_PP_BOOL(p(723, s)), p, o, s) +# define BOOST_PP_WHILE_723(p, o, s) BOOST_PP_WHILE_723_C(BOOST_PP_BOOL(p(724, s)), p, o, s) +# define BOOST_PP_WHILE_724(p, o, s) BOOST_PP_WHILE_724_C(BOOST_PP_BOOL(p(725, s)), p, o, s) +# define BOOST_PP_WHILE_725(p, o, s) BOOST_PP_WHILE_725_C(BOOST_PP_BOOL(p(726, s)), p, o, s) +# define BOOST_PP_WHILE_726(p, o, s) BOOST_PP_WHILE_726_C(BOOST_PP_BOOL(p(727, s)), p, o, s) +# define BOOST_PP_WHILE_727(p, o, s) BOOST_PP_WHILE_727_C(BOOST_PP_BOOL(p(728, s)), p, o, s) +# define BOOST_PP_WHILE_728(p, o, s) BOOST_PP_WHILE_728_C(BOOST_PP_BOOL(p(729, s)), p, o, s) +# define BOOST_PP_WHILE_729(p, o, s) BOOST_PP_WHILE_729_C(BOOST_PP_BOOL(p(730, s)), p, o, s) +# define BOOST_PP_WHILE_730(p, o, s) BOOST_PP_WHILE_730_C(BOOST_PP_BOOL(p(731, s)), p, o, s) +# define BOOST_PP_WHILE_731(p, o, s) BOOST_PP_WHILE_731_C(BOOST_PP_BOOL(p(732, s)), p, o, s) +# define BOOST_PP_WHILE_732(p, o, s) BOOST_PP_WHILE_732_C(BOOST_PP_BOOL(p(733, s)), p, o, s) +# define BOOST_PP_WHILE_733(p, o, s) BOOST_PP_WHILE_733_C(BOOST_PP_BOOL(p(734, s)), p, o, s) +# define BOOST_PP_WHILE_734(p, o, s) BOOST_PP_WHILE_734_C(BOOST_PP_BOOL(p(735, s)), p, o, s) +# define BOOST_PP_WHILE_735(p, o, s) BOOST_PP_WHILE_735_C(BOOST_PP_BOOL(p(736, s)), p, o, s) +# define BOOST_PP_WHILE_736(p, o, s) BOOST_PP_WHILE_736_C(BOOST_PP_BOOL(p(737, s)), p, o, s) +# define BOOST_PP_WHILE_737(p, o, s) BOOST_PP_WHILE_737_C(BOOST_PP_BOOL(p(738, s)), p, o, s) +# define BOOST_PP_WHILE_738(p, o, s) BOOST_PP_WHILE_738_C(BOOST_PP_BOOL(p(739, s)), p, o, s) +# define BOOST_PP_WHILE_739(p, o, s) BOOST_PP_WHILE_739_C(BOOST_PP_BOOL(p(740, s)), p, o, s) +# define BOOST_PP_WHILE_740(p, o, s) BOOST_PP_WHILE_740_C(BOOST_PP_BOOL(p(741, s)), p, o, s) +# define BOOST_PP_WHILE_741(p, o, s) BOOST_PP_WHILE_741_C(BOOST_PP_BOOL(p(742, s)), p, o, s) +# define BOOST_PP_WHILE_742(p, o, s) BOOST_PP_WHILE_742_C(BOOST_PP_BOOL(p(743, s)), p, o, s) +# define BOOST_PP_WHILE_743(p, o, s) BOOST_PP_WHILE_743_C(BOOST_PP_BOOL(p(744, s)), p, o, s) +# define BOOST_PP_WHILE_744(p, o, s) BOOST_PP_WHILE_744_C(BOOST_PP_BOOL(p(745, s)), p, o, s) +# define BOOST_PP_WHILE_745(p, o, s) BOOST_PP_WHILE_745_C(BOOST_PP_BOOL(p(746, s)), p, o, s) +# define BOOST_PP_WHILE_746(p, o, s) BOOST_PP_WHILE_746_C(BOOST_PP_BOOL(p(747, s)), p, o, s) +# define BOOST_PP_WHILE_747(p, o, s) BOOST_PP_WHILE_747_C(BOOST_PP_BOOL(p(748, s)), p, o, s) +# define BOOST_PP_WHILE_748(p, o, s) BOOST_PP_WHILE_748_C(BOOST_PP_BOOL(p(749, s)), p, o, s) +# define BOOST_PP_WHILE_749(p, o, s) BOOST_PP_WHILE_749_C(BOOST_PP_BOOL(p(750, s)), p, o, s) +# define BOOST_PP_WHILE_750(p, o, s) BOOST_PP_WHILE_750_C(BOOST_PP_BOOL(p(751, s)), p, o, s) +# define BOOST_PP_WHILE_751(p, o, s) BOOST_PP_WHILE_751_C(BOOST_PP_BOOL(p(752, s)), p, o, s) +# define BOOST_PP_WHILE_752(p, o, s) BOOST_PP_WHILE_752_C(BOOST_PP_BOOL(p(753, s)), p, o, s) +# define BOOST_PP_WHILE_753(p, o, s) BOOST_PP_WHILE_753_C(BOOST_PP_BOOL(p(754, s)), p, o, s) +# define BOOST_PP_WHILE_754(p, o, s) BOOST_PP_WHILE_754_C(BOOST_PP_BOOL(p(755, s)), p, o, s) +# define BOOST_PP_WHILE_755(p, o, s) BOOST_PP_WHILE_755_C(BOOST_PP_BOOL(p(756, s)), p, o, s) +# define BOOST_PP_WHILE_756(p, o, s) BOOST_PP_WHILE_756_C(BOOST_PP_BOOL(p(757, s)), p, o, s) +# define BOOST_PP_WHILE_757(p, o, s) BOOST_PP_WHILE_757_C(BOOST_PP_BOOL(p(758, s)), p, o, s) +# define BOOST_PP_WHILE_758(p, o, s) BOOST_PP_WHILE_758_C(BOOST_PP_BOOL(p(759, s)), p, o, s) +# define BOOST_PP_WHILE_759(p, o, s) BOOST_PP_WHILE_759_C(BOOST_PP_BOOL(p(760, s)), p, o, s) +# define BOOST_PP_WHILE_760(p, o, s) BOOST_PP_WHILE_760_C(BOOST_PP_BOOL(p(761, s)), p, o, s) +# define BOOST_PP_WHILE_761(p, o, s) BOOST_PP_WHILE_761_C(BOOST_PP_BOOL(p(762, s)), p, o, s) +# define BOOST_PP_WHILE_762(p, o, s) BOOST_PP_WHILE_762_C(BOOST_PP_BOOL(p(763, s)), p, o, s) +# define BOOST_PP_WHILE_763(p, o, s) BOOST_PP_WHILE_763_C(BOOST_PP_BOOL(p(764, s)), p, o, s) +# define BOOST_PP_WHILE_764(p, o, s) BOOST_PP_WHILE_764_C(BOOST_PP_BOOL(p(765, s)), p, o, s) +# define BOOST_PP_WHILE_765(p, o, s) BOOST_PP_WHILE_765_C(BOOST_PP_BOOL(p(766, s)), p, o, s) +# define BOOST_PP_WHILE_766(p, o, s) BOOST_PP_WHILE_766_C(BOOST_PP_BOOL(p(767, s)), p, o, s) +# define BOOST_PP_WHILE_767(p, o, s) BOOST_PP_WHILE_767_C(BOOST_PP_BOOL(p(768, s)), p, o, s) +# define BOOST_PP_WHILE_768(p, o, s) BOOST_PP_WHILE_768_C(BOOST_PP_BOOL(p(769, s)), p, o, s) +# define BOOST_PP_WHILE_769(p, o, s) BOOST_PP_WHILE_769_C(BOOST_PP_BOOL(p(770, s)), p, o, s) +# define BOOST_PP_WHILE_770(p, o, s) BOOST_PP_WHILE_770_C(BOOST_PP_BOOL(p(771, s)), p, o, s) +# define BOOST_PP_WHILE_771(p, o, s) BOOST_PP_WHILE_771_C(BOOST_PP_BOOL(p(772, s)), p, o, s) +# define BOOST_PP_WHILE_772(p, o, s) BOOST_PP_WHILE_772_C(BOOST_PP_BOOL(p(773, s)), p, o, s) +# define BOOST_PP_WHILE_773(p, o, s) BOOST_PP_WHILE_773_C(BOOST_PP_BOOL(p(774, s)), p, o, s) +# define BOOST_PP_WHILE_774(p, o, s) BOOST_PP_WHILE_774_C(BOOST_PP_BOOL(p(775, s)), p, o, s) +# define BOOST_PP_WHILE_775(p, o, s) BOOST_PP_WHILE_775_C(BOOST_PP_BOOL(p(776, s)), p, o, s) +# define BOOST_PP_WHILE_776(p, o, s) BOOST_PP_WHILE_776_C(BOOST_PP_BOOL(p(777, s)), p, o, s) +# define BOOST_PP_WHILE_777(p, o, s) BOOST_PP_WHILE_777_C(BOOST_PP_BOOL(p(778, s)), p, o, s) +# define BOOST_PP_WHILE_778(p, o, s) BOOST_PP_WHILE_778_C(BOOST_PP_BOOL(p(779, s)), p, o, s) +# define BOOST_PP_WHILE_779(p, o, s) BOOST_PP_WHILE_779_C(BOOST_PP_BOOL(p(780, s)), p, o, s) +# define BOOST_PP_WHILE_780(p, o, s) BOOST_PP_WHILE_780_C(BOOST_PP_BOOL(p(781, s)), p, o, s) +# define BOOST_PP_WHILE_781(p, o, s) BOOST_PP_WHILE_781_C(BOOST_PP_BOOL(p(782, s)), p, o, s) +# define BOOST_PP_WHILE_782(p, o, s) BOOST_PP_WHILE_782_C(BOOST_PP_BOOL(p(783, s)), p, o, s) +# define BOOST_PP_WHILE_783(p, o, s) BOOST_PP_WHILE_783_C(BOOST_PP_BOOL(p(784, s)), p, o, s) +# define BOOST_PP_WHILE_784(p, o, s) BOOST_PP_WHILE_784_C(BOOST_PP_BOOL(p(785, s)), p, o, s) +# define BOOST_PP_WHILE_785(p, o, s) BOOST_PP_WHILE_785_C(BOOST_PP_BOOL(p(786, s)), p, o, s) +# define BOOST_PP_WHILE_786(p, o, s) BOOST_PP_WHILE_786_C(BOOST_PP_BOOL(p(787, s)), p, o, s) +# define BOOST_PP_WHILE_787(p, o, s) BOOST_PP_WHILE_787_C(BOOST_PP_BOOL(p(788, s)), p, o, s) +# define BOOST_PP_WHILE_788(p, o, s) BOOST_PP_WHILE_788_C(BOOST_PP_BOOL(p(789, s)), p, o, s) +# define BOOST_PP_WHILE_789(p, o, s) BOOST_PP_WHILE_789_C(BOOST_PP_BOOL(p(790, s)), p, o, s) +# define BOOST_PP_WHILE_790(p, o, s) BOOST_PP_WHILE_790_C(BOOST_PP_BOOL(p(791, s)), p, o, s) +# define BOOST_PP_WHILE_791(p, o, s) BOOST_PP_WHILE_791_C(BOOST_PP_BOOL(p(792, s)), p, o, s) +# define BOOST_PP_WHILE_792(p, o, s) BOOST_PP_WHILE_792_C(BOOST_PP_BOOL(p(793, s)), p, o, s) +# define BOOST_PP_WHILE_793(p, o, s) BOOST_PP_WHILE_793_C(BOOST_PP_BOOL(p(794, s)), p, o, s) +# define BOOST_PP_WHILE_794(p, o, s) BOOST_PP_WHILE_794_C(BOOST_PP_BOOL(p(795, s)), p, o, s) +# define BOOST_PP_WHILE_795(p, o, s) BOOST_PP_WHILE_795_C(BOOST_PP_BOOL(p(796, s)), p, o, s) +# define BOOST_PP_WHILE_796(p, o, s) BOOST_PP_WHILE_796_C(BOOST_PP_BOOL(p(797, s)), p, o, s) +# define BOOST_PP_WHILE_797(p, o, s) BOOST_PP_WHILE_797_C(BOOST_PP_BOOL(p(798, s)), p, o, s) +# define BOOST_PP_WHILE_798(p, o, s) BOOST_PP_WHILE_798_C(BOOST_PP_BOOL(p(799, s)), p, o, s) +# define BOOST_PP_WHILE_799(p, o, s) BOOST_PP_WHILE_799_C(BOOST_PP_BOOL(p(800, s)), p, o, s) +# define BOOST_PP_WHILE_800(p, o, s) BOOST_PP_WHILE_800_C(BOOST_PP_BOOL(p(801, s)), p, o, s) +# define BOOST_PP_WHILE_801(p, o, s) BOOST_PP_WHILE_801_C(BOOST_PP_BOOL(p(802, s)), p, o, s) +# define BOOST_PP_WHILE_802(p, o, s) BOOST_PP_WHILE_802_C(BOOST_PP_BOOL(p(803, s)), p, o, s) +# define BOOST_PP_WHILE_803(p, o, s) BOOST_PP_WHILE_803_C(BOOST_PP_BOOL(p(804, s)), p, o, s) +# define BOOST_PP_WHILE_804(p, o, s) BOOST_PP_WHILE_804_C(BOOST_PP_BOOL(p(805, s)), p, o, s) +# define BOOST_PP_WHILE_805(p, o, s) BOOST_PP_WHILE_805_C(BOOST_PP_BOOL(p(806, s)), p, o, s) +# define BOOST_PP_WHILE_806(p, o, s) BOOST_PP_WHILE_806_C(BOOST_PP_BOOL(p(807, s)), p, o, s) +# define BOOST_PP_WHILE_807(p, o, s) BOOST_PP_WHILE_807_C(BOOST_PP_BOOL(p(808, s)), p, o, s) +# define BOOST_PP_WHILE_808(p, o, s) BOOST_PP_WHILE_808_C(BOOST_PP_BOOL(p(809, s)), p, o, s) +# define BOOST_PP_WHILE_809(p, o, s) BOOST_PP_WHILE_809_C(BOOST_PP_BOOL(p(810, s)), p, o, s) +# define BOOST_PP_WHILE_810(p, o, s) BOOST_PP_WHILE_810_C(BOOST_PP_BOOL(p(811, s)), p, o, s) +# define BOOST_PP_WHILE_811(p, o, s) BOOST_PP_WHILE_811_C(BOOST_PP_BOOL(p(812, s)), p, o, s) +# define BOOST_PP_WHILE_812(p, o, s) BOOST_PP_WHILE_812_C(BOOST_PP_BOOL(p(813, s)), p, o, s) +# define BOOST_PP_WHILE_813(p, o, s) BOOST_PP_WHILE_813_C(BOOST_PP_BOOL(p(814, s)), p, o, s) +# define BOOST_PP_WHILE_814(p, o, s) BOOST_PP_WHILE_814_C(BOOST_PP_BOOL(p(815, s)), p, o, s) +# define BOOST_PP_WHILE_815(p, o, s) BOOST_PP_WHILE_815_C(BOOST_PP_BOOL(p(816, s)), p, o, s) +# define BOOST_PP_WHILE_816(p, o, s) BOOST_PP_WHILE_816_C(BOOST_PP_BOOL(p(817, s)), p, o, s) +# define BOOST_PP_WHILE_817(p, o, s) BOOST_PP_WHILE_817_C(BOOST_PP_BOOL(p(818, s)), p, o, s) +# define BOOST_PP_WHILE_818(p, o, s) BOOST_PP_WHILE_818_C(BOOST_PP_BOOL(p(819, s)), p, o, s) +# define BOOST_PP_WHILE_819(p, o, s) BOOST_PP_WHILE_819_C(BOOST_PP_BOOL(p(820, s)), p, o, s) +# define BOOST_PP_WHILE_820(p, o, s) BOOST_PP_WHILE_820_C(BOOST_PP_BOOL(p(821, s)), p, o, s) +# define BOOST_PP_WHILE_821(p, o, s) BOOST_PP_WHILE_821_C(BOOST_PP_BOOL(p(822, s)), p, o, s) +# define BOOST_PP_WHILE_822(p, o, s) BOOST_PP_WHILE_822_C(BOOST_PP_BOOL(p(823, s)), p, o, s) +# define BOOST_PP_WHILE_823(p, o, s) BOOST_PP_WHILE_823_C(BOOST_PP_BOOL(p(824, s)), p, o, s) +# define BOOST_PP_WHILE_824(p, o, s) BOOST_PP_WHILE_824_C(BOOST_PP_BOOL(p(825, s)), p, o, s) +# define BOOST_PP_WHILE_825(p, o, s) BOOST_PP_WHILE_825_C(BOOST_PP_BOOL(p(826, s)), p, o, s) +# define BOOST_PP_WHILE_826(p, o, s) BOOST_PP_WHILE_826_C(BOOST_PP_BOOL(p(827, s)), p, o, s) +# define BOOST_PP_WHILE_827(p, o, s) BOOST_PP_WHILE_827_C(BOOST_PP_BOOL(p(828, s)), p, o, s) +# define BOOST_PP_WHILE_828(p, o, s) BOOST_PP_WHILE_828_C(BOOST_PP_BOOL(p(829, s)), p, o, s) +# define BOOST_PP_WHILE_829(p, o, s) BOOST_PP_WHILE_829_C(BOOST_PP_BOOL(p(830, s)), p, o, s) +# define BOOST_PP_WHILE_830(p, o, s) BOOST_PP_WHILE_830_C(BOOST_PP_BOOL(p(831, s)), p, o, s) +# define BOOST_PP_WHILE_831(p, o, s) BOOST_PP_WHILE_831_C(BOOST_PP_BOOL(p(832, s)), p, o, s) +# define BOOST_PP_WHILE_832(p, o, s) BOOST_PP_WHILE_832_C(BOOST_PP_BOOL(p(833, s)), p, o, s) +# define BOOST_PP_WHILE_833(p, o, s) BOOST_PP_WHILE_833_C(BOOST_PP_BOOL(p(834, s)), p, o, s) +# define BOOST_PP_WHILE_834(p, o, s) BOOST_PP_WHILE_834_C(BOOST_PP_BOOL(p(835, s)), p, o, s) +# define BOOST_PP_WHILE_835(p, o, s) BOOST_PP_WHILE_835_C(BOOST_PP_BOOL(p(836, s)), p, o, s) +# define BOOST_PP_WHILE_836(p, o, s) BOOST_PP_WHILE_836_C(BOOST_PP_BOOL(p(837, s)), p, o, s) +# define BOOST_PP_WHILE_837(p, o, s) BOOST_PP_WHILE_837_C(BOOST_PP_BOOL(p(838, s)), p, o, s) +# define BOOST_PP_WHILE_838(p, o, s) BOOST_PP_WHILE_838_C(BOOST_PP_BOOL(p(839, s)), p, o, s) +# define BOOST_PP_WHILE_839(p, o, s) BOOST_PP_WHILE_839_C(BOOST_PP_BOOL(p(840, s)), p, o, s) +# define BOOST_PP_WHILE_840(p, o, s) BOOST_PP_WHILE_840_C(BOOST_PP_BOOL(p(841, s)), p, o, s) +# define BOOST_PP_WHILE_841(p, o, s) BOOST_PP_WHILE_841_C(BOOST_PP_BOOL(p(842, s)), p, o, s) +# define BOOST_PP_WHILE_842(p, o, s) BOOST_PP_WHILE_842_C(BOOST_PP_BOOL(p(843, s)), p, o, s) +# define BOOST_PP_WHILE_843(p, o, s) BOOST_PP_WHILE_843_C(BOOST_PP_BOOL(p(844, s)), p, o, s) +# define BOOST_PP_WHILE_844(p, o, s) BOOST_PP_WHILE_844_C(BOOST_PP_BOOL(p(845, s)), p, o, s) +# define BOOST_PP_WHILE_845(p, o, s) BOOST_PP_WHILE_845_C(BOOST_PP_BOOL(p(846, s)), p, o, s) +# define BOOST_PP_WHILE_846(p, o, s) BOOST_PP_WHILE_846_C(BOOST_PP_BOOL(p(847, s)), p, o, s) +# define BOOST_PP_WHILE_847(p, o, s) BOOST_PP_WHILE_847_C(BOOST_PP_BOOL(p(848, s)), p, o, s) +# define BOOST_PP_WHILE_848(p, o, s) BOOST_PP_WHILE_848_C(BOOST_PP_BOOL(p(849, s)), p, o, s) +# define BOOST_PP_WHILE_849(p, o, s) BOOST_PP_WHILE_849_C(BOOST_PP_BOOL(p(850, s)), p, o, s) +# define BOOST_PP_WHILE_850(p, o, s) BOOST_PP_WHILE_850_C(BOOST_PP_BOOL(p(851, s)), p, o, s) +# define BOOST_PP_WHILE_851(p, o, s) BOOST_PP_WHILE_851_C(BOOST_PP_BOOL(p(852, s)), p, o, s) +# define BOOST_PP_WHILE_852(p, o, s) BOOST_PP_WHILE_852_C(BOOST_PP_BOOL(p(853, s)), p, o, s) +# define BOOST_PP_WHILE_853(p, o, s) BOOST_PP_WHILE_853_C(BOOST_PP_BOOL(p(854, s)), p, o, s) +# define BOOST_PP_WHILE_854(p, o, s) BOOST_PP_WHILE_854_C(BOOST_PP_BOOL(p(855, s)), p, o, s) +# define BOOST_PP_WHILE_855(p, o, s) BOOST_PP_WHILE_855_C(BOOST_PP_BOOL(p(856, s)), p, o, s) +# define BOOST_PP_WHILE_856(p, o, s) BOOST_PP_WHILE_856_C(BOOST_PP_BOOL(p(857, s)), p, o, s) +# define BOOST_PP_WHILE_857(p, o, s) BOOST_PP_WHILE_857_C(BOOST_PP_BOOL(p(858, s)), p, o, s) +# define BOOST_PP_WHILE_858(p, o, s) BOOST_PP_WHILE_858_C(BOOST_PP_BOOL(p(859, s)), p, o, s) +# define BOOST_PP_WHILE_859(p, o, s) BOOST_PP_WHILE_859_C(BOOST_PP_BOOL(p(860, s)), p, o, s) +# define BOOST_PP_WHILE_860(p, o, s) BOOST_PP_WHILE_860_C(BOOST_PP_BOOL(p(861, s)), p, o, s) +# define BOOST_PP_WHILE_861(p, o, s) BOOST_PP_WHILE_861_C(BOOST_PP_BOOL(p(862, s)), p, o, s) +# define BOOST_PP_WHILE_862(p, o, s) BOOST_PP_WHILE_862_C(BOOST_PP_BOOL(p(863, s)), p, o, s) +# define BOOST_PP_WHILE_863(p, o, s) BOOST_PP_WHILE_863_C(BOOST_PP_BOOL(p(864, s)), p, o, s) +# define BOOST_PP_WHILE_864(p, o, s) BOOST_PP_WHILE_864_C(BOOST_PP_BOOL(p(865, s)), p, o, s) +# define BOOST_PP_WHILE_865(p, o, s) BOOST_PP_WHILE_865_C(BOOST_PP_BOOL(p(866, s)), p, o, s) +# define BOOST_PP_WHILE_866(p, o, s) BOOST_PP_WHILE_866_C(BOOST_PP_BOOL(p(867, s)), p, o, s) +# define BOOST_PP_WHILE_867(p, o, s) BOOST_PP_WHILE_867_C(BOOST_PP_BOOL(p(868, s)), p, o, s) +# define BOOST_PP_WHILE_868(p, o, s) BOOST_PP_WHILE_868_C(BOOST_PP_BOOL(p(869, s)), p, o, s) +# define BOOST_PP_WHILE_869(p, o, s) BOOST_PP_WHILE_869_C(BOOST_PP_BOOL(p(870, s)), p, o, s) +# define BOOST_PP_WHILE_870(p, o, s) BOOST_PP_WHILE_870_C(BOOST_PP_BOOL(p(871, s)), p, o, s) +# define BOOST_PP_WHILE_871(p, o, s) BOOST_PP_WHILE_871_C(BOOST_PP_BOOL(p(872, s)), p, o, s) +# define BOOST_PP_WHILE_872(p, o, s) BOOST_PP_WHILE_872_C(BOOST_PP_BOOL(p(873, s)), p, o, s) +# define BOOST_PP_WHILE_873(p, o, s) BOOST_PP_WHILE_873_C(BOOST_PP_BOOL(p(874, s)), p, o, s) +# define BOOST_PP_WHILE_874(p, o, s) BOOST_PP_WHILE_874_C(BOOST_PP_BOOL(p(875, s)), p, o, s) +# define BOOST_PP_WHILE_875(p, o, s) BOOST_PP_WHILE_875_C(BOOST_PP_BOOL(p(876, s)), p, o, s) +# define BOOST_PP_WHILE_876(p, o, s) BOOST_PP_WHILE_876_C(BOOST_PP_BOOL(p(877, s)), p, o, s) +# define BOOST_PP_WHILE_877(p, o, s) BOOST_PP_WHILE_877_C(BOOST_PP_BOOL(p(878, s)), p, o, s) +# define BOOST_PP_WHILE_878(p, o, s) BOOST_PP_WHILE_878_C(BOOST_PP_BOOL(p(879, s)), p, o, s) +# define BOOST_PP_WHILE_879(p, o, s) BOOST_PP_WHILE_879_C(BOOST_PP_BOOL(p(880, s)), p, o, s) +# define BOOST_PP_WHILE_880(p, o, s) BOOST_PP_WHILE_880_C(BOOST_PP_BOOL(p(881, s)), p, o, s) +# define BOOST_PP_WHILE_881(p, o, s) BOOST_PP_WHILE_881_C(BOOST_PP_BOOL(p(882, s)), p, o, s) +# define BOOST_PP_WHILE_882(p, o, s) BOOST_PP_WHILE_882_C(BOOST_PP_BOOL(p(883, s)), p, o, s) +# define BOOST_PP_WHILE_883(p, o, s) BOOST_PP_WHILE_883_C(BOOST_PP_BOOL(p(884, s)), p, o, s) +# define BOOST_PP_WHILE_884(p, o, s) BOOST_PP_WHILE_884_C(BOOST_PP_BOOL(p(885, s)), p, o, s) +# define BOOST_PP_WHILE_885(p, o, s) BOOST_PP_WHILE_885_C(BOOST_PP_BOOL(p(886, s)), p, o, s) +# define BOOST_PP_WHILE_886(p, o, s) BOOST_PP_WHILE_886_C(BOOST_PP_BOOL(p(887, s)), p, o, s) +# define BOOST_PP_WHILE_887(p, o, s) BOOST_PP_WHILE_887_C(BOOST_PP_BOOL(p(888, s)), p, o, s) +# define BOOST_PP_WHILE_888(p, o, s) BOOST_PP_WHILE_888_C(BOOST_PP_BOOL(p(889, s)), p, o, s) +# define BOOST_PP_WHILE_889(p, o, s) BOOST_PP_WHILE_889_C(BOOST_PP_BOOL(p(890, s)), p, o, s) +# define BOOST_PP_WHILE_890(p, o, s) BOOST_PP_WHILE_890_C(BOOST_PP_BOOL(p(891, s)), p, o, s) +# define BOOST_PP_WHILE_891(p, o, s) BOOST_PP_WHILE_891_C(BOOST_PP_BOOL(p(892, s)), p, o, s) +# define BOOST_PP_WHILE_892(p, o, s) BOOST_PP_WHILE_892_C(BOOST_PP_BOOL(p(893, s)), p, o, s) +# define BOOST_PP_WHILE_893(p, o, s) BOOST_PP_WHILE_893_C(BOOST_PP_BOOL(p(894, s)), p, o, s) +# define BOOST_PP_WHILE_894(p, o, s) BOOST_PP_WHILE_894_C(BOOST_PP_BOOL(p(895, s)), p, o, s) +# define BOOST_PP_WHILE_895(p, o, s) BOOST_PP_WHILE_895_C(BOOST_PP_BOOL(p(896, s)), p, o, s) +# define BOOST_PP_WHILE_896(p, o, s) BOOST_PP_WHILE_896_C(BOOST_PP_BOOL(p(897, s)), p, o, s) +# define BOOST_PP_WHILE_897(p, o, s) BOOST_PP_WHILE_897_C(BOOST_PP_BOOL(p(898, s)), p, o, s) +# define BOOST_PP_WHILE_898(p, o, s) BOOST_PP_WHILE_898_C(BOOST_PP_BOOL(p(899, s)), p, o, s) +# define BOOST_PP_WHILE_899(p, o, s) BOOST_PP_WHILE_899_C(BOOST_PP_BOOL(p(900, s)), p, o, s) +# define BOOST_PP_WHILE_900(p, o, s) BOOST_PP_WHILE_900_C(BOOST_PP_BOOL(p(901, s)), p, o, s) +# define BOOST_PP_WHILE_901(p, o, s) BOOST_PP_WHILE_901_C(BOOST_PP_BOOL(p(902, s)), p, o, s) +# define BOOST_PP_WHILE_902(p, o, s) BOOST_PP_WHILE_902_C(BOOST_PP_BOOL(p(903, s)), p, o, s) +# define BOOST_PP_WHILE_903(p, o, s) BOOST_PP_WHILE_903_C(BOOST_PP_BOOL(p(904, s)), p, o, s) +# define BOOST_PP_WHILE_904(p, o, s) BOOST_PP_WHILE_904_C(BOOST_PP_BOOL(p(905, s)), p, o, s) +# define BOOST_PP_WHILE_905(p, o, s) BOOST_PP_WHILE_905_C(BOOST_PP_BOOL(p(906, s)), p, o, s) +# define BOOST_PP_WHILE_906(p, o, s) BOOST_PP_WHILE_906_C(BOOST_PP_BOOL(p(907, s)), p, o, s) +# define BOOST_PP_WHILE_907(p, o, s) BOOST_PP_WHILE_907_C(BOOST_PP_BOOL(p(908, s)), p, o, s) +# define BOOST_PP_WHILE_908(p, o, s) BOOST_PP_WHILE_908_C(BOOST_PP_BOOL(p(909, s)), p, o, s) +# define BOOST_PP_WHILE_909(p, o, s) BOOST_PP_WHILE_909_C(BOOST_PP_BOOL(p(910, s)), p, o, s) +# define BOOST_PP_WHILE_910(p, o, s) BOOST_PP_WHILE_910_C(BOOST_PP_BOOL(p(911, s)), p, o, s) +# define BOOST_PP_WHILE_911(p, o, s) BOOST_PP_WHILE_911_C(BOOST_PP_BOOL(p(912, s)), p, o, s) +# define BOOST_PP_WHILE_912(p, o, s) BOOST_PP_WHILE_912_C(BOOST_PP_BOOL(p(913, s)), p, o, s) +# define BOOST_PP_WHILE_913(p, o, s) BOOST_PP_WHILE_913_C(BOOST_PP_BOOL(p(914, s)), p, o, s) +# define BOOST_PP_WHILE_914(p, o, s) BOOST_PP_WHILE_914_C(BOOST_PP_BOOL(p(915, s)), p, o, s) +# define BOOST_PP_WHILE_915(p, o, s) BOOST_PP_WHILE_915_C(BOOST_PP_BOOL(p(916, s)), p, o, s) +# define BOOST_PP_WHILE_916(p, o, s) BOOST_PP_WHILE_916_C(BOOST_PP_BOOL(p(917, s)), p, o, s) +# define BOOST_PP_WHILE_917(p, o, s) BOOST_PP_WHILE_917_C(BOOST_PP_BOOL(p(918, s)), p, o, s) +# define BOOST_PP_WHILE_918(p, o, s) BOOST_PP_WHILE_918_C(BOOST_PP_BOOL(p(919, s)), p, o, s) +# define BOOST_PP_WHILE_919(p, o, s) BOOST_PP_WHILE_919_C(BOOST_PP_BOOL(p(920, s)), p, o, s) +# define BOOST_PP_WHILE_920(p, o, s) BOOST_PP_WHILE_920_C(BOOST_PP_BOOL(p(921, s)), p, o, s) +# define BOOST_PP_WHILE_921(p, o, s) BOOST_PP_WHILE_921_C(BOOST_PP_BOOL(p(922, s)), p, o, s) +# define BOOST_PP_WHILE_922(p, o, s) BOOST_PP_WHILE_922_C(BOOST_PP_BOOL(p(923, s)), p, o, s) +# define BOOST_PP_WHILE_923(p, o, s) BOOST_PP_WHILE_923_C(BOOST_PP_BOOL(p(924, s)), p, o, s) +# define BOOST_PP_WHILE_924(p, o, s) BOOST_PP_WHILE_924_C(BOOST_PP_BOOL(p(925, s)), p, o, s) +# define BOOST_PP_WHILE_925(p, o, s) BOOST_PP_WHILE_925_C(BOOST_PP_BOOL(p(926, s)), p, o, s) +# define BOOST_PP_WHILE_926(p, o, s) BOOST_PP_WHILE_926_C(BOOST_PP_BOOL(p(927, s)), p, o, s) +# define BOOST_PP_WHILE_927(p, o, s) BOOST_PP_WHILE_927_C(BOOST_PP_BOOL(p(928, s)), p, o, s) +# define BOOST_PP_WHILE_928(p, o, s) BOOST_PP_WHILE_928_C(BOOST_PP_BOOL(p(929, s)), p, o, s) +# define BOOST_PP_WHILE_929(p, o, s) BOOST_PP_WHILE_929_C(BOOST_PP_BOOL(p(930, s)), p, o, s) +# define BOOST_PP_WHILE_930(p, o, s) BOOST_PP_WHILE_930_C(BOOST_PP_BOOL(p(931, s)), p, o, s) +# define BOOST_PP_WHILE_931(p, o, s) BOOST_PP_WHILE_931_C(BOOST_PP_BOOL(p(932, s)), p, o, s) +# define BOOST_PP_WHILE_932(p, o, s) BOOST_PP_WHILE_932_C(BOOST_PP_BOOL(p(933, s)), p, o, s) +# define BOOST_PP_WHILE_933(p, o, s) BOOST_PP_WHILE_933_C(BOOST_PP_BOOL(p(934, s)), p, o, s) +# define BOOST_PP_WHILE_934(p, o, s) BOOST_PP_WHILE_934_C(BOOST_PP_BOOL(p(935, s)), p, o, s) +# define BOOST_PP_WHILE_935(p, o, s) BOOST_PP_WHILE_935_C(BOOST_PP_BOOL(p(936, s)), p, o, s) +# define BOOST_PP_WHILE_936(p, o, s) BOOST_PP_WHILE_936_C(BOOST_PP_BOOL(p(937, s)), p, o, s) +# define BOOST_PP_WHILE_937(p, o, s) BOOST_PP_WHILE_937_C(BOOST_PP_BOOL(p(938, s)), p, o, s) +# define BOOST_PP_WHILE_938(p, o, s) BOOST_PP_WHILE_938_C(BOOST_PP_BOOL(p(939, s)), p, o, s) +# define BOOST_PP_WHILE_939(p, o, s) BOOST_PP_WHILE_939_C(BOOST_PP_BOOL(p(940, s)), p, o, s) +# define BOOST_PP_WHILE_940(p, o, s) BOOST_PP_WHILE_940_C(BOOST_PP_BOOL(p(941, s)), p, o, s) +# define BOOST_PP_WHILE_941(p, o, s) BOOST_PP_WHILE_941_C(BOOST_PP_BOOL(p(942, s)), p, o, s) +# define BOOST_PP_WHILE_942(p, o, s) BOOST_PP_WHILE_942_C(BOOST_PP_BOOL(p(943, s)), p, o, s) +# define BOOST_PP_WHILE_943(p, o, s) BOOST_PP_WHILE_943_C(BOOST_PP_BOOL(p(944, s)), p, o, s) +# define BOOST_PP_WHILE_944(p, o, s) BOOST_PP_WHILE_944_C(BOOST_PP_BOOL(p(945, s)), p, o, s) +# define BOOST_PP_WHILE_945(p, o, s) BOOST_PP_WHILE_945_C(BOOST_PP_BOOL(p(946, s)), p, o, s) +# define BOOST_PP_WHILE_946(p, o, s) BOOST_PP_WHILE_946_C(BOOST_PP_BOOL(p(947, s)), p, o, s) +# define BOOST_PP_WHILE_947(p, o, s) BOOST_PP_WHILE_947_C(BOOST_PP_BOOL(p(948, s)), p, o, s) +# define BOOST_PP_WHILE_948(p, o, s) BOOST_PP_WHILE_948_C(BOOST_PP_BOOL(p(949, s)), p, o, s) +# define BOOST_PP_WHILE_949(p, o, s) BOOST_PP_WHILE_949_C(BOOST_PP_BOOL(p(950, s)), p, o, s) +# define BOOST_PP_WHILE_950(p, o, s) BOOST_PP_WHILE_950_C(BOOST_PP_BOOL(p(951, s)), p, o, s) +# define BOOST_PP_WHILE_951(p, o, s) BOOST_PP_WHILE_951_C(BOOST_PP_BOOL(p(952, s)), p, o, s) +# define BOOST_PP_WHILE_952(p, o, s) BOOST_PP_WHILE_952_C(BOOST_PP_BOOL(p(953, s)), p, o, s) +# define BOOST_PP_WHILE_953(p, o, s) BOOST_PP_WHILE_953_C(BOOST_PP_BOOL(p(954, s)), p, o, s) +# define BOOST_PP_WHILE_954(p, o, s) BOOST_PP_WHILE_954_C(BOOST_PP_BOOL(p(955, s)), p, o, s) +# define BOOST_PP_WHILE_955(p, o, s) BOOST_PP_WHILE_955_C(BOOST_PP_BOOL(p(956, s)), p, o, s) +# define BOOST_PP_WHILE_956(p, o, s) BOOST_PP_WHILE_956_C(BOOST_PP_BOOL(p(957, s)), p, o, s) +# define BOOST_PP_WHILE_957(p, o, s) BOOST_PP_WHILE_957_C(BOOST_PP_BOOL(p(958, s)), p, o, s) +# define BOOST_PP_WHILE_958(p, o, s) BOOST_PP_WHILE_958_C(BOOST_PP_BOOL(p(959, s)), p, o, s) +# define BOOST_PP_WHILE_959(p, o, s) BOOST_PP_WHILE_959_C(BOOST_PP_BOOL(p(960, s)), p, o, s) +# define BOOST_PP_WHILE_960(p, o, s) BOOST_PP_WHILE_960_C(BOOST_PP_BOOL(p(961, s)), p, o, s) +# define BOOST_PP_WHILE_961(p, o, s) BOOST_PP_WHILE_961_C(BOOST_PP_BOOL(p(962, s)), p, o, s) +# define BOOST_PP_WHILE_962(p, o, s) BOOST_PP_WHILE_962_C(BOOST_PP_BOOL(p(963, s)), p, o, s) +# define BOOST_PP_WHILE_963(p, o, s) BOOST_PP_WHILE_963_C(BOOST_PP_BOOL(p(964, s)), p, o, s) +# define BOOST_PP_WHILE_964(p, o, s) BOOST_PP_WHILE_964_C(BOOST_PP_BOOL(p(965, s)), p, o, s) +# define BOOST_PP_WHILE_965(p, o, s) BOOST_PP_WHILE_965_C(BOOST_PP_BOOL(p(966, s)), p, o, s) +# define BOOST_PP_WHILE_966(p, o, s) BOOST_PP_WHILE_966_C(BOOST_PP_BOOL(p(967, s)), p, o, s) +# define BOOST_PP_WHILE_967(p, o, s) BOOST_PP_WHILE_967_C(BOOST_PP_BOOL(p(968, s)), p, o, s) +# define BOOST_PP_WHILE_968(p, o, s) BOOST_PP_WHILE_968_C(BOOST_PP_BOOL(p(969, s)), p, o, s) +# define BOOST_PP_WHILE_969(p, o, s) BOOST_PP_WHILE_969_C(BOOST_PP_BOOL(p(970, s)), p, o, s) +# define BOOST_PP_WHILE_970(p, o, s) BOOST_PP_WHILE_970_C(BOOST_PP_BOOL(p(971, s)), p, o, s) +# define BOOST_PP_WHILE_971(p, o, s) BOOST_PP_WHILE_971_C(BOOST_PP_BOOL(p(972, s)), p, o, s) +# define BOOST_PP_WHILE_972(p, o, s) BOOST_PP_WHILE_972_C(BOOST_PP_BOOL(p(973, s)), p, o, s) +# define BOOST_PP_WHILE_973(p, o, s) BOOST_PP_WHILE_973_C(BOOST_PP_BOOL(p(974, s)), p, o, s) +# define BOOST_PP_WHILE_974(p, o, s) BOOST_PP_WHILE_974_C(BOOST_PP_BOOL(p(975, s)), p, o, s) +# define BOOST_PP_WHILE_975(p, o, s) BOOST_PP_WHILE_975_C(BOOST_PP_BOOL(p(976, s)), p, o, s) +# define BOOST_PP_WHILE_976(p, o, s) BOOST_PP_WHILE_976_C(BOOST_PP_BOOL(p(977, s)), p, o, s) +# define BOOST_PP_WHILE_977(p, o, s) BOOST_PP_WHILE_977_C(BOOST_PP_BOOL(p(978, s)), p, o, s) +# define BOOST_PP_WHILE_978(p, o, s) BOOST_PP_WHILE_978_C(BOOST_PP_BOOL(p(979, s)), p, o, s) +# define BOOST_PP_WHILE_979(p, o, s) BOOST_PP_WHILE_979_C(BOOST_PP_BOOL(p(980, s)), p, o, s) +# define BOOST_PP_WHILE_980(p, o, s) BOOST_PP_WHILE_980_C(BOOST_PP_BOOL(p(981, s)), p, o, s) +# define BOOST_PP_WHILE_981(p, o, s) BOOST_PP_WHILE_981_C(BOOST_PP_BOOL(p(982, s)), p, o, s) +# define BOOST_PP_WHILE_982(p, o, s) BOOST_PP_WHILE_982_C(BOOST_PP_BOOL(p(983, s)), p, o, s) +# define BOOST_PP_WHILE_983(p, o, s) BOOST_PP_WHILE_983_C(BOOST_PP_BOOL(p(984, s)), p, o, s) +# define BOOST_PP_WHILE_984(p, o, s) BOOST_PP_WHILE_984_C(BOOST_PP_BOOL(p(985, s)), p, o, s) +# define BOOST_PP_WHILE_985(p, o, s) BOOST_PP_WHILE_985_C(BOOST_PP_BOOL(p(986, s)), p, o, s) +# define BOOST_PP_WHILE_986(p, o, s) BOOST_PP_WHILE_986_C(BOOST_PP_BOOL(p(987, s)), p, o, s) +# define BOOST_PP_WHILE_987(p, o, s) BOOST_PP_WHILE_987_C(BOOST_PP_BOOL(p(988, s)), p, o, s) +# define BOOST_PP_WHILE_988(p, o, s) BOOST_PP_WHILE_988_C(BOOST_PP_BOOL(p(989, s)), p, o, s) +# define BOOST_PP_WHILE_989(p, o, s) BOOST_PP_WHILE_989_C(BOOST_PP_BOOL(p(990, s)), p, o, s) +# define BOOST_PP_WHILE_990(p, o, s) BOOST_PP_WHILE_990_C(BOOST_PP_BOOL(p(991, s)), p, o, s) +# define BOOST_PP_WHILE_991(p, o, s) BOOST_PP_WHILE_991_C(BOOST_PP_BOOL(p(992, s)), p, o, s) +# define BOOST_PP_WHILE_992(p, o, s) BOOST_PP_WHILE_992_C(BOOST_PP_BOOL(p(993, s)), p, o, s) +# define BOOST_PP_WHILE_993(p, o, s) BOOST_PP_WHILE_993_C(BOOST_PP_BOOL(p(994, s)), p, o, s) +# define BOOST_PP_WHILE_994(p, o, s) BOOST_PP_WHILE_994_C(BOOST_PP_BOOL(p(995, s)), p, o, s) +# define BOOST_PP_WHILE_995(p, o, s) BOOST_PP_WHILE_995_C(BOOST_PP_BOOL(p(996, s)), p, o, s) +# define BOOST_PP_WHILE_996(p, o, s) BOOST_PP_WHILE_996_C(BOOST_PP_BOOL(p(997, s)), p, o, s) +# define BOOST_PP_WHILE_997(p, o, s) BOOST_PP_WHILE_997_C(BOOST_PP_BOOL(p(998, s)), p, o, s) +# define BOOST_PP_WHILE_998(p, o, s) BOOST_PP_WHILE_998_C(BOOST_PP_BOOL(p(999, s)), p, o, s) +# define BOOST_PP_WHILE_999(p, o, s) BOOST_PP_WHILE_999_C(BOOST_PP_BOOL(p(1000, s)), p, o, s) +# define BOOST_PP_WHILE_1000(p, o, s) BOOST_PP_WHILE_1000_C(BOOST_PP_BOOL(p(1001, s)), p, o, s) +# define BOOST_PP_WHILE_1001(p, o, s) BOOST_PP_WHILE_1001_C(BOOST_PP_BOOL(p(1002, s)), p, o, s) +# define BOOST_PP_WHILE_1002(p, o, s) BOOST_PP_WHILE_1002_C(BOOST_PP_BOOL(p(1003, s)), p, o, s) +# define BOOST_PP_WHILE_1003(p, o, s) BOOST_PP_WHILE_1003_C(BOOST_PP_BOOL(p(1004, s)), p, o, s) +# define BOOST_PP_WHILE_1004(p, o, s) BOOST_PP_WHILE_1004_C(BOOST_PP_BOOL(p(1005, s)), p, o, s) +# define BOOST_PP_WHILE_1005(p, o, s) BOOST_PP_WHILE_1005_C(BOOST_PP_BOOL(p(1006, s)), p, o, s) +# define BOOST_PP_WHILE_1006(p, o, s) BOOST_PP_WHILE_1006_C(BOOST_PP_BOOL(p(1007, s)), p, o, s) +# define BOOST_PP_WHILE_1007(p, o, s) BOOST_PP_WHILE_1007_C(BOOST_PP_BOOL(p(1008, s)), p, o, s) +# define BOOST_PP_WHILE_1008(p, o, s) BOOST_PP_WHILE_1008_C(BOOST_PP_BOOL(p(1009, s)), p, o, s) +# define BOOST_PP_WHILE_1009(p, o, s) BOOST_PP_WHILE_1009_C(BOOST_PP_BOOL(p(1010, s)), p, o, s) +# define BOOST_PP_WHILE_1010(p, o, s) BOOST_PP_WHILE_1010_C(BOOST_PP_BOOL(p(1011, s)), p, o, s) +# define BOOST_PP_WHILE_1011(p, o, s) BOOST_PP_WHILE_1011_C(BOOST_PP_BOOL(p(1012, s)), p, o, s) +# define BOOST_PP_WHILE_1012(p, o, s) BOOST_PP_WHILE_1012_C(BOOST_PP_BOOL(p(1013, s)), p, o, s) +# define BOOST_PP_WHILE_1013(p, o, s) BOOST_PP_WHILE_1013_C(BOOST_PP_BOOL(p(1014, s)), p, o, s) +# define BOOST_PP_WHILE_1014(p, o, s) BOOST_PP_WHILE_1014_C(BOOST_PP_BOOL(p(1015, s)), p, o, s) +# define BOOST_PP_WHILE_1015(p, o, s) BOOST_PP_WHILE_1015_C(BOOST_PP_BOOL(p(1016, s)), p, o, s) +# define BOOST_PP_WHILE_1016(p, o, s) BOOST_PP_WHILE_1016_C(BOOST_PP_BOOL(p(1017, s)), p, o, s) +# define BOOST_PP_WHILE_1017(p, o, s) BOOST_PP_WHILE_1017_C(BOOST_PP_BOOL(p(1018, s)), p, o, s) +# define BOOST_PP_WHILE_1018(p, o, s) BOOST_PP_WHILE_1018_C(BOOST_PP_BOOL(p(1019, s)), p, o, s) +# define BOOST_PP_WHILE_1019(p, o, s) BOOST_PP_WHILE_1019_C(BOOST_PP_BOOL(p(1020, s)), p, o, s) +# define BOOST_PP_WHILE_1020(p, o, s) BOOST_PP_WHILE_1020_C(BOOST_PP_BOOL(p(1021, s)), p, o, s) +# define BOOST_PP_WHILE_1021(p, o, s) BOOST_PP_WHILE_1021_C(BOOST_PP_BOOL(p(1022, s)), p, o, s) +# define BOOST_PP_WHILE_1022(p, o, s) BOOST_PP_WHILE_1022_C(BOOST_PP_BOOL(p(1023, s)), p, o, s) +# define BOOST_PP_WHILE_1023(p, o, s) BOOST_PP_WHILE_1023_C(BOOST_PP_BOOL(p(1024, s)), p, o, s) +# define BOOST_PP_WHILE_1024(p, o, s) BOOST_PP_WHILE_1024_C(BOOST_PP_BOOL(p(1025, s)), p, o, s) +# +# define BOOST_PP_WHILE_513_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_514, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(514, s)) +# define BOOST_PP_WHILE_514_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_515, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(515, s)) +# define BOOST_PP_WHILE_515_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_516, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(516, s)) +# define BOOST_PP_WHILE_516_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_517, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(517, s)) +# define BOOST_PP_WHILE_517_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_518, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(518, s)) +# define BOOST_PP_WHILE_518_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_519, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(519, s)) +# define BOOST_PP_WHILE_519_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_520, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(520, s)) +# define BOOST_PP_WHILE_520_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_521, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(521, s)) +# define BOOST_PP_WHILE_521_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_522, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(522, s)) +# define BOOST_PP_WHILE_522_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_523, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(523, s)) +# define BOOST_PP_WHILE_523_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_524, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(524, s)) +# define BOOST_PP_WHILE_524_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_525, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(525, s)) +# define BOOST_PP_WHILE_525_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_526, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(526, s)) +# define BOOST_PP_WHILE_526_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_527, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(527, s)) +# define BOOST_PP_WHILE_527_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_528, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(528, s)) +# define BOOST_PP_WHILE_528_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_529, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(529, s)) +# define BOOST_PP_WHILE_529_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_530, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(530, s)) +# define BOOST_PP_WHILE_530_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_531, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(531, s)) +# define BOOST_PP_WHILE_531_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_532, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(532, s)) +# define BOOST_PP_WHILE_532_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_533, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(533, s)) +# define BOOST_PP_WHILE_533_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_534, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(534, s)) +# define BOOST_PP_WHILE_534_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_535, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(535, s)) +# define BOOST_PP_WHILE_535_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_536, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(536, s)) +# define BOOST_PP_WHILE_536_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_537, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(537, s)) +# define BOOST_PP_WHILE_537_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_538, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(538, s)) +# define BOOST_PP_WHILE_538_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_539, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(539, s)) +# define BOOST_PP_WHILE_539_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_540, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(540, s)) +# define BOOST_PP_WHILE_540_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_541, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(541, s)) +# define BOOST_PP_WHILE_541_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_542, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(542, s)) +# define BOOST_PP_WHILE_542_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_543, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(543, s)) +# define BOOST_PP_WHILE_543_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_544, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(544, s)) +# define BOOST_PP_WHILE_544_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_545, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(545, s)) +# define BOOST_PP_WHILE_545_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_546, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(546, s)) +# define BOOST_PP_WHILE_546_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_547, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(547, s)) +# define BOOST_PP_WHILE_547_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_548, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(548, s)) +# define BOOST_PP_WHILE_548_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_549, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(549, s)) +# define BOOST_PP_WHILE_549_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_550, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(550, s)) +# define BOOST_PP_WHILE_550_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_551, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(551, s)) +# define BOOST_PP_WHILE_551_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_552, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(552, s)) +# define BOOST_PP_WHILE_552_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_553, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(553, s)) +# define BOOST_PP_WHILE_553_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_554, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(554, s)) +# define BOOST_PP_WHILE_554_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_555, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(555, s)) +# define BOOST_PP_WHILE_555_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_556, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(556, s)) +# define BOOST_PP_WHILE_556_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_557, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(557, s)) +# define BOOST_PP_WHILE_557_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_558, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(558, s)) +# define BOOST_PP_WHILE_558_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_559, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(559, s)) +# define BOOST_PP_WHILE_559_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_560, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(560, s)) +# define BOOST_PP_WHILE_560_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_561, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(561, s)) +# define BOOST_PP_WHILE_561_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_562, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(562, s)) +# define BOOST_PP_WHILE_562_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_563, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(563, s)) +# define BOOST_PP_WHILE_563_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_564, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(564, s)) +# define BOOST_PP_WHILE_564_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_565, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(565, s)) +# define BOOST_PP_WHILE_565_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_566, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(566, s)) +# define BOOST_PP_WHILE_566_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_567, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(567, s)) +# define BOOST_PP_WHILE_567_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_568, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(568, s)) +# define BOOST_PP_WHILE_568_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_569, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(569, s)) +# define BOOST_PP_WHILE_569_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_570, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(570, s)) +# define BOOST_PP_WHILE_570_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_571, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(571, s)) +# define BOOST_PP_WHILE_571_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_572, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(572, s)) +# define BOOST_PP_WHILE_572_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_573, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(573, s)) +# define BOOST_PP_WHILE_573_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_574, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(574, s)) +# define BOOST_PP_WHILE_574_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_575, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(575, s)) +# define BOOST_PP_WHILE_575_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_576, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(576, s)) +# define BOOST_PP_WHILE_576_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_577, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(577, s)) +# define BOOST_PP_WHILE_577_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_578, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(578, s)) +# define BOOST_PP_WHILE_578_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_579, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(579, s)) +# define BOOST_PP_WHILE_579_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_580, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(580, s)) +# define BOOST_PP_WHILE_580_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_581, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(581, s)) +# define BOOST_PP_WHILE_581_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_582, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(582, s)) +# define BOOST_PP_WHILE_582_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_583, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(583, s)) +# define BOOST_PP_WHILE_583_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_584, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(584, s)) +# define BOOST_PP_WHILE_584_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_585, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(585, s)) +# define BOOST_PP_WHILE_585_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_586, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(586, s)) +# define BOOST_PP_WHILE_586_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_587, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(587, s)) +# define BOOST_PP_WHILE_587_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_588, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(588, s)) +# define BOOST_PP_WHILE_588_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_589, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(589, s)) +# define BOOST_PP_WHILE_589_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_590, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(590, s)) +# define BOOST_PP_WHILE_590_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_591, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(591, s)) +# define BOOST_PP_WHILE_591_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_592, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(592, s)) +# define BOOST_PP_WHILE_592_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_593, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(593, s)) +# define BOOST_PP_WHILE_593_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_594, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(594, s)) +# define BOOST_PP_WHILE_594_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_595, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(595, s)) +# define BOOST_PP_WHILE_595_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_596, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(596, s)) +# define BOOST_PP_WHILE_596_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_597, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(597, s)) +# define BOOST_PP_WHILE_597_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_598, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(598, s)) +# define BOOST_PP_WHILE_598_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_599, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(599, s)) +# define BOOST_PP_WHILE_599_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_600, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(600, s)) +# define BOOST_PP_WHILE_600_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_601, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(601, s)) +# define BOOST_PP_WHILE_601_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_602, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(602, s)) +# define BOOST_PP_WHILE_602_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_603, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(603, s)) +# define BOOST_PP_WHILE_603_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_604, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(604, s)) +# define BOOST_PP_WHILE_604_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_605, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(605, s)) +# define BOOST_PP_WHILE_605_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_606, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(606, s)) +# define BOOST_PP_WHILE_606_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_607, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(607, s)) +# define BOOST_PP_WHILE_607_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_608, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(608, s)) +# define BOOST_PP_WHILE_608_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_609, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(609, s)) +# define BOOST_PP_WHILE_609_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_610, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(610, s)) +# define BOOST_PP_WHILE_610_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_611, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(611, s)) +# define BOOST_PP_WHILE_611_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_612, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(612, s)) +# define BOOST_PP_WHILE_612_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_613, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(613, s)) +# define BOOST_PP_WHILE_613_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_614, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(614, s)) +# define BOOST_PP_WHILE_614_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_615, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(615, s)) +# define BOOST_PP_WHILE_615_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_616, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(616, s)) +# define BOOST_PP_WHILE_616_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_617, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(617, s)) +# define BOOST_PP_WHILE_617_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_618, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(618, s)) +# define BOOST_PP_WHILE_618_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_619, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(619, s)) +# define BOOST_PP_WHILE_619_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_620, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(620, s)) +# define BOOST_PP_WHILE_620_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_621, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(621, s)) +# define BOOST_PP_WHILE_621_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_622, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(622, s)) +# define BOOST_PP_WHILE_622_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_623, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(623, s)) +# define BOOST_PP_WHILE_623_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_624, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(624, s)) +# define BOOST_PP_WHILE_624_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_625, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(625, s)) +# define BOOST_PP_WHILE_625_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_626, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(626, s)) +# define BOOST_PP_WHILE_626_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_627, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(627, s)) +# define BOOST_PP_WHILE_627_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_628, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(628, s)) +# define BOOST_PP_WHILE_628_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_629, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(629, s)) +# define BOOST_PP_WHILE_629_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_630, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(630, s)) +# define BOOST_PP_WHILE_630_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_631, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(631, s)) +# define BOOST_PP_WHILE_631_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_632, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(632, s)) +# define BOOST_PP_WHILE_632_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_633, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(633, s)) +# define BOOST_PP_WHILE_633_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_634, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(634, s)) +# define BOOST_PP_WHILE_634_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_635, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(635, s)) +# define BOOST_PP_WHILE_635_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_636, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(636, s)) +# define BOOST_PP_WHILE_636_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_637, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(637, s)) +# define BOOST_PP_WHILE_637_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_638, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(638, s)) +# define BOOST_PP_WHILE_638_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_639, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(639, s)) +# define BOOST_PP_WHILE_639_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_640, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(640, s)) +# define BOOST_PP_WHILE_640_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_641, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(641, s)) +# define BOOST_PP_WHILE_641_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_642, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(642, s)) +# define BOOST_PP_WHILE_642_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_643, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(643, s)) +# define BOOST_PP_WHILE_643_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_644, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(644, s)) +# define BOOST_PP_WHILE_644_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_645, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(645, s)) +# define BOOST_PP_WHILE_645_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_646, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(646, s)) +# define BOOST_PP_WHILE_646_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_647, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(647, s)) +# define BOOST_PP_WHILE_647_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_648, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(648, s)) +# define BOOST_PP_WHILE_648_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_649, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(649, s)) +# define BOOST_PP_WHILE_649_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_650, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(650, s)) +# define BOOST_PP_WHILE_650_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_651, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(651, s)) +# define BOOST_PP_WHILE_651_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_652, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(652, s)) +# define BOOST_PP_WHILE_652_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_653, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(653, s)) +# define BOOST_PP_WHILE_653_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_654, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(654, s)) +# define BOOST_PP_WHILE_654_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_655, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(655, s)) +# define BOOST_PP_WHILE_655_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_656, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(656, s)) +# define BOOST_PP_WHILE_656_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_657, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(657, s)) +# define BOOST_PP_WHILE_657_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_658, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(658, s)) +# define BOOST_PP_WHILE_658_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_659, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(659, s)) +# define BOOST_PP_WHILE_659_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_660, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(660, s)) +# define BOOST_PP_WHILE_660_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_661, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(661, s)) +# define BOOST_PP_WHILE_661_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_662, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(662, s)) +# define BOOST_PP_WHILE_662_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_663, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(663, s)) +# define BOOST_PP_WHILE_663_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_664, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(664, s)) +# define BOOST_PP_WHILE_664_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_665, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(665, s)) +# define BOOST_PP_WHILE_665_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_666, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(666, s)) +# define BOOST_PP_WHILE_666_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_667, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(667, s)) +# define BOOST_PP_WHILE_667_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_668, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(668, s)) +# define BOOST_PP_WHILE_668_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_669, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(669, s)) +# define BOOST_PP_WHILE_669_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_670, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(670, s)) +# define BOOST_PP_WHILE_670_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_671, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(671, s)) +# define BOOST_PP_WHILE_671_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_672, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(672, s)) +# define BOOST_PP_WHILE_672_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_673, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(673, s)) +# define BOOST_PP_WHILE_673_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_674, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(674, s)) +# define BOOST_PP_WHILE_674_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_675, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(675, s)) +# define BOOST_PP_WHILE_675_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_676, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(676, s)) +# define BOOST_PP_WHILE_676_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_677, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(677, s)) +# define BOOST_PP_WHILE_677_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_678, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(678, s)) +# define BOOST_PP_WHILE_678_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_679, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(679, s)) +# define BOOST_PP_WHILE_679_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_680, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(680, s)) +# define BOOST_PP_WHILE_680_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_681, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(681, s)) +# define BOOST_PP_WHILE_681_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_682, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(682, s)) +# define BOOST_PP_WHILE_682_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_683, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(683, s)) +# define BOOST_PP_WHILE_683_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_684, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(684, s)) +# define BOOST_PP_WHILE_684_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_685, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(685, s)) +# define BOOST_PP_WHILE_685_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_686, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(686, s)) +# define BOOST_PP_WHILE_686_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_687, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(687, s)) +# define BOOST_PP_WHILE_687_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_688, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(688, s)) +# define BOOST_PP_WHILE_688_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_689, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(689, s)) +# define BOOST_PP_WHILE_689_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_690, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(690, s)) +# define BOOST_PP_WHILE_690_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_691, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(691, s)) +# define BOOST_PP_WHILE_691_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_692, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(692, s)) +# define BOOST_PP_WHILE_692_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_693, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(693, s)) +# define BOOST_PP_WHILE_693_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_694, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(694, s)) +# define BOOST_PP_WHILE_694_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_695, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(695, s)) +# define BOOST_PP_WHILE_695_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_696, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(696, s)) +# define BOOST_PP_WHILE_696_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_697, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(697, s)) +# define BOOST_PP_WHILE_697_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_698, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(698, s)) +# define BOOST_PP_WHILE_698_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_699, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(699, s)) +# define BOOST_PP_WHILE_699_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_700, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(700, s)) +# define BOOST_PP_WHILE_700_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_701, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(701, s)) +# define BOOST_PP_WHILE_701_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_702, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(702, s)) +# define BOOST_PP_WHILE_702_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_703, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(703, s)) +# define BOOST_PP_WHILE_703_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_704, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(704, s)) +# define BOOST_PP_WHILE_704_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_705, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(705, s)) +# define BOOST_PP_WHILE_705_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_706, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(706, s)) +# define BOOST_PP_WHILE_706_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_707, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(707, s)) +# define BOOST_PP_WHILE_707_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_708, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(708, s)) +# define BOOST_PP_WHILE_708_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_709, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(709, s)) +# define BOOST_PP_WHILE_709_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_710, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(710, s)) +# define BOOST_PP_WHILE_710_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_711, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(711, s)) +# define BOOST_PP_WHILE_711_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_712, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(712, s)) +# define BOOST_PP_WHILE_712_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_713, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(713, s)) +# define BOOST_PP_WHILE_713_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_714, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(714, s)) +# define BOOST_PP_WHILE_714_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_715, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(715, s)) +# define BOOST_PP_WHILE_715_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_716, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(716, s)) +# define BOOST_PP_WHILE_716_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_717, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(717, s)) +# define BOOST_PP_WHILE_717_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_718, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(718, s)) +# define BOOST_PP_WHILE_718_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_719, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(719, s)) +# define BOOST_PP_WHILE_719_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_720, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(720, s)) +# define BOOST_PP_WHILE_720_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_721, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(721, s)) +# define BOOST_PP_WHILE_721_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_722, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(722, s)) +# define BOOST_PP_WHILE_722_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_723, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(723, s)) +# define BOOST_PP_WHILE_723_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_724, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(724, s)) +# define BOOST_PP_WHILE_724_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_725, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(725, s)) +# define BOOST_PP_WHILE_725_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_726, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(726, s)) +# define BOOST_PP_WHILE_726_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_727, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(727, s)) +# define BOOST_PP_WHILE_727_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_728, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(728, s)) +# define BOOST_PP_WHILE_728_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_729, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(729, s)) +# define BOOST_PP_WHILE_729_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_730, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(730, s)) +# define BOOST_PP_WHILE_730_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_731, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(731, s)) +# define BOOST_PP_WHILE_731_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_732, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(732, s)) +# define BOOST_PP_WHILE_732_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_733, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(733, s)) +# define BOOST_PP_WHILE_733_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_734, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(734, s)) +# define BOOST_PP_WHILE_734_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_735, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(735, s)) +# define BOOST_PP_WHILE_735_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_736, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(736, s)) +# define BOOST_PP_WHILE_736_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_737, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(737, s)) +# define BOOST_PP_WHILE_737_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_738, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(738, s)) +# define BOOST_PP_WHILE_738_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_739, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(739, s)) +# define BOOST_PP_WHILE_739_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_740, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(740, s)) +# define BOOST_PP_WHILE_740_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_741, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(741, s)) +# define BOOST_PP_WHILE_741_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_742, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(742, s)) +# define BOOST_PP_WHILE_742_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_743, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(743, s)) +# define BOOST_PP_WHILE_743_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_744, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(744, s)) +# define BOOST_PP_WHILE_744_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_745, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(745, s)) +# define BOOST_PP_WHILE_745_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_746, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(746, s)) +# define BOOST_PP_WHILE_746_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_747, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(747, s)) +# define BOOST_PP_WHILE_747_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_748, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(748, s)) +# define BOOST_PP_WHILE_748_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_749, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(749, s)) +# define BOOST_PP_WHILE_749_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_750, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(750, s)) +# define BOOST_PP_WHILE_750_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_751, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(751, s)) +# define BOOST_PP_WHILE_751_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_752, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(752, s)) +# define BOOST_PP_WHILE_752_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_753, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(753, s)) +# define BOOST_PP_WHILE_753_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_754, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(754, s)) +# define BOOST_PP_WHILE_754_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_755, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(755, s)) +# define BOOST_PP_WHILE_755_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_756, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(756, s)) +# define BOOST_PP_WHILE_756_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_757, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(757, s)) +# define BOOST_PP_WHILE_757_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_758, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(758, s)) +# define BOOST_PP_WHILE_758_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_759, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(759, s)) +# define BOOST_PP_WHILE_759_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_760, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(760, s)) +# define BOOST_PP_WHILE_760_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_761, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(761, s)) +# define BOOST_PP_WHILE_761_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_762, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(762, s)) +# define BOOST_PP_WHILE_762_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_763, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(763, s)) +# define BOOST_PP_WHILE_763_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_764, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(764, s)) +# define BOOST_PP_WHILE_764_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_765, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(765, s)) +# define BOOST_PP_WHILE_765_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_766, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(766, s)) +# define BOOST_PP_WHILE_766_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_767, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(767, s)) +# define BOOST_PP_WHILE_767_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_768, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(768, s)) +# define BOOST_PP_WHILE_768_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_769, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(769, s)) +# define BOOST_PP_WHILE_769_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_770, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(770, s)) +# define BOOST_PP_WHILE_770_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_771, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(771, s)) +# define BOOST_PP_WHILE_771_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_772, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(772, s)) +# define BOOST_PP_WHILE_772_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_773, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(773, s)) +# define BOOST_PP_WHILE_773_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_774, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(774, s)) +# define BOOST_PP_WHILE_774_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_775, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(775, s)) +# define BOOST_PP_WHILE_775_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_776, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(776, s)) +# define BOOST_PP_WHILE_776_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_777, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(777, s)) +# define BOOST_PP_WHILE_777_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_778, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(778, s)) +# define BOOST_PP_WHILE_778_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_779, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(779, s)) +# define BOOST_PP_WHILE_779_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_780, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(780, s)) +# define BOOST_PP_WHILE_780_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_781, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(781, s)) +# define BOOST_PP_WHILE_781_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_782, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(782, s)) +# define BOOST_PP_WHILE_782_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_783, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(783, s)) +# define BOOST_PP_WHILE_783_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_784, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(784, s)) +# define BOOST_PP_WHILE_784_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_785, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(785, s)) +# define BOOST_PP_WHILE_785_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_786, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(786, s)) +# define BOOST_PP_WHILE_786_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_787, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(787, s)) +# define BOOST_PP_WHILE_787_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_788, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(788, s)) +# define BOOST_PP_WHILE_788_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_789, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(789, s)) +# define BOOST_PP_WHILE_789_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_790, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(790, s)) +# define BOOST_PP_WHILE_790_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_791, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(791, s)) +# define BOOST_PP_WHILE_791_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_792, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(792, s)) +# define BOOST_PP_WHILE_792_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_793, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(793, s)) +# define BOOST_PP_WHILE_793_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_794, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(794, s)) +# define BOOST_PP_WHILE_794_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_795, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(795, s)) +# define BOOST_PP_WHILE_795_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_796, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(796, s)) +# define BOOST_PP_WHILE_796_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_797, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(797, s)) +# define BOOST_PP_WHILE_797_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_798, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(798, s)) +# define BOOST_PP_WHILE_798_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_799, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(799, s)) +# define BOOST_PP_WHILE_799_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_800, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(800, s)) +# define BOOST_PP_WHILE_800_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_801, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(801, s)) +# define BOOST_PP_WHILE_801_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_802, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(802, s)) +# define BOOST_PP_WHILE_802_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_803, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(803, s)) +# define BOOST_PP_WHILE_803_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_804, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(804, s)) +# define BOOST_PP_WHILE_804_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_805, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(805, s)) +# define BOOST_PP_WHILE_805_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_806, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(806, s)) +# define BOOST_PP_WHILE_806_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_807, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(807, s)) +# define BOOST_PP_WHILE_807_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_808, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(808, s)) +# define BOOST_PP_WHILE_808_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_809, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(809, s)) +# define BOOST_PP_WHILE_809_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_810, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(810, s)) +# define BOOST_PP_WHILE_810_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_811, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(811, s)) +# define BOOST_PP_WHILE_811_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_812, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(812, s)) +# define BOOST_PP_WHILE_812_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_813, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(813, s)) +# define BOOST_PP_WHILE_813_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_814, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(814, s)) +# define BOOST_PP_WHILE_814_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_815, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(815, s)) +# define BOOST_PP_WHILE_815_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_816, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(816, s)) +# define BOOST_PP_WHILE_816_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_817, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(817, s)) +# define BOOST_PP_WHILE_817_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_818, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(818, s)) +# define BOOST_PP_WHILE_818_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_819, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(819, s)) +# define BOOST_PP_WHILE_819_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_820, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(820, s)) +# define BOOST_PP_WHILE_820_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_821, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(821, s)) +# define BOOST_PP_WHILE_821_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_822, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(822, s)) +# define BOOST_PP_WHILE_822_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_823, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(823, s)) +# define BOOST_PP_WHILE_823_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_824, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(824, s)) +# define BOOST_PP_WHILE_824_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_825, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(825, s)) +# define BOOST_PP_WHILE_825_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_826, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(826, s)) +# define BOOST_PP_WHILE_826_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_827, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(827, s)) +# define BOOST_PP_WHILE_827_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_828, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(828, s)) +# define BOOST_PP_WHILE_828_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_829, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(829, s)) +# define BOOST_PP_WHILE_829_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_830, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(830, s)) +# define BOOST_PP_WHILE_830_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_831, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(831, s)) +# define BOOST_PP_WHILE_831_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_832, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(832, s)) +# define BOOST_PP_WHILE_832_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_833, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(833, s)) +# define BOOST_PP_WHILE_833_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_834, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(834, s)) +# define BOOST_PP_WHILE_834_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_835, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(835, s)) +# define BOOST_PP_WHILE_835_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_836, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(836, s)) +# define BOOST_PP_WHILE_836_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_837, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(837, s)) +# define BOOST_PP_WHILE_837_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_838, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(838, s)) +# define BOOST_PP_WHILE_838_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_839, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(839, s)) +# define BOOST_PP_WHILE_839_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_840, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(840, s)) +# define BOOST_PP_WHILE_840_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_841, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(841, s)) +# define BOOST_PP_WHILE_841_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_842, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(842, s)) +# define BOOST_PP_WHILE_842_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_843, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(843, s)) +# define BOOST_PP_WHILE_843_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_844, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(844, s)) +# define BOOST_PP_WHILE_844_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_845, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(845, s)) +# define BOOST_PP_WHILE_845_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_846, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(846, s)) +# define BOOST_PP_WHILE_846_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_847, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(847, s)) +# define BOOST_PP_WHILE_847_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_848, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(848, s)) +# define BOOST_PP_WHILE_848_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_849, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(849, s)) +# define BOOST_PP_WHILE_849_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_850, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(850, s)) +# define BOOST_PP_WHILE_850_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_851, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(851, s)) +# define BOOST_PP_WHILE_851_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_852, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(852, s)) +# define BOOST_PP_WHILE_852_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_853, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(853, s)) +# define BOOST_PP_WHILE_853_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_854, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(854, s)) +# define BOOST_PP_WHILE_854_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_855, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(855, s)) +# define BOOST_PP_WHILE_855_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_856, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(856, s)) +# define BOOST_PP_WHILE_856_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_857, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(857, s)) +# define BOOST_PP_WHILE_857_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_858, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(858, s)) +# define BOOST_PP_WHILE_858_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_859, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(859, s)) +# define BOOST_PP_WHILE_859_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_860, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(860, s)) +# define BOOST_PP_WHILE_860_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_861, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(861, s)) +# define BOOST_PP_WHILE_861_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_862, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(862, s)) +# define BOOST_PP_WHILE_862_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_863, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(863, s)) +# define BOOST_PP_WHILE_863_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_864, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(864, s)) +# define BOOST_PP_WHILE_864_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_865, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(865, s)) +# define BOOST_PP_WHILE_865_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_866, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(866, s)) +# define BOOST_PP_WHILE_866_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_867, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(867, s)) +# define BOOST_PP_WHILE_867_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_868, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(868, s)) +# define BOOST_PP_WHILE_868_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_869, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(869, s)) +# define BOOST_PP_WHILE_869_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_870, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(870, s)) +# define BOOST_PP_WHILE_870_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_871, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(871, s)) +# define BOOST_PP_WHILE_871_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_872, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(872, s)) +# define BOOST_PP_WHILE_872_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_873, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(873, s)) +# define BOOST_PP_WHILE_873_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_874, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(874, s)) +# define BOOST_PP_WHILE_874_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_875, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(875, s)) +# define BOOST_PP_WHILE_875_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_876, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(876, s)) +# define BOOST_PP_WHILE_876_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_877, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(877, s)) +# define BOOST_PP_WHILE_877_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_878, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(878, s)) +# define BOOST_PP_WHILE_878_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_879, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(879, s)) +# define BOOST_PP_WHILE_879_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_880, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(880, s)) +# define BOOST_PP_WHILE_880_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_881, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(881, s)) +# define BOOST_PP_WHILE_881_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_882, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(882, s)) +# define BOOST_PP_WHILE_882_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_883, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(883, s)) +# define BOOST_PP_WHILE_883_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_884, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(884, s)) +# define BOOST_PP_WHILE_884_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_885, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(885, s)) +# define BOOST_PP_WHILE_885_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_886, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(886, s)) +# define BOOST_PP_WHILE_886_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_887, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(887, s)) +# define BOOST_PP_WHILE_887_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_888, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(888, s)) +# define BOOST_PP_WHILE_888_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_889, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(889, s)) +# define BOOST_PP_WHILE_889_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_890, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(890, s)) +# define BOOST_PP_WHILE_890_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_891, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(891, s)) +# define BOOST_PP_WHILE_891_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_892, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(892, s)) +# define BOOST_PP_WHILE_892_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_893, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(893, s)) +# define BOOST_PP_WHILE_893_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_894, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(894, s)) +# define BOOST_PP_WHILE_894_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_895, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(895, s)) +# define BOOST_PP_WHILE_895_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_896, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(896, s)) +# define BOOST_PP_WHILE_896_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_897, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(897, s)) +# define BOOST_PP_WHILE_897_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_898, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(898, s)) +# define BOOST_PP_WHILE_898_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_899, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(899, s)) +# define BOOST_PP_WHILE_899_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_900, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(900, s)) +# define BOOST_PP_WHILE_900_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_901, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(901, s)) +# define BOOST_PP_WHILE_901_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_902, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(902, s)) +# define BOOST_PP_WHILE_902_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_903, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(903, s)) +# define BOOST_PP_WHILE_903_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_904, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(904, s)) +# define BOOST_PP_WHILE_904_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_905, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(905, s)) +# define BOOST_PP_WHILE_905_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_906, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(906, s)) +# define BOOST_PP_WHILE_906_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_907, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(907, s)) +# define BOOST_PP_WHILE_907_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_908, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(908, s)) +# define BOOST_PP_WHILE_908_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_909, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(909, s)) +# define BOOST_PP_WHILE_909_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_910, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(910, s)) +# define BOOST_PP_WHILE_910_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_911, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(911, s)) +# define BOOST_PP_WHILE_911_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_912, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(912, s)) +# define BOOST_PP_WHILE_912_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_913, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(913, s)) +# define BOOST_PP_WHILE_913_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_914, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(914, s)) +# define BOOST_PP_WHILE_914_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_915, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(915, s)) +# define BOOST_PP_WHILE_915_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_916, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(916, s)) +# define BOOST_PP_WHILE_916_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_917, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(917, s)) +# define BOOST_PP_WHILE_917_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_918, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(918, s)) +# define BOOST_PP_WHILE_918_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_919, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(919, s)) +# define BOOST_PP_WHILE_919_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_920, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(920, s)) +# define BOOST_PP_WHILE_920_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_921, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(921, s)) +# define BOOST_PP_WHILE_921_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_922, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(922, s)) +# define BOOST_PP_WHILE_922_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_923, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(923, s)) +# define BOOST_PP_WHILE_923_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_924, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(924, s)) +# define BOOST_PP_WHILE_924_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_925, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(925, s)) +# define BOOST_PP_WHILE_925_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_926, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(926, s)) +# define BOOST_PP_WHILE_926_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_927, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(927, s)) +# define BOOST_PP_WHILE_927_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_928, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(928, s)) +# define BOOST_PP_WHILE_928_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_929, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(929, s)) +# define BOOST_PP_WHILE_929_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_930, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(930, s)) +# define BOOST_PP_WHILE_930_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_931, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(931, s)) +# define BOOST_PP_WHILE_931_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_932, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(932, s)) +# define BOOST_PP_WHILE_932_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_933, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(933, s)) +# define BOOST_PP_WHILE_933_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_934, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(934, s)) +# define BOOST_PP_WHILE_934_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_935, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(935, s)) +# define BOOST_PP_WHILE_935_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_936, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(936, s)) +# define BOOST_PP_WHILE_936_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_937, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(937, s)) +# define BOOST_PP_WHILE_937_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_938, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(938, s)) +# define BOOST_PP_WHILE_938_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_939, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(939, s)) +# define BOOST_PP_WHILE_939_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_940, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(940, s)) +# define BOOST_PP_WHILE_940_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_941, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(941, s)) +# define BOOST_PP_WHILE_941_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_942, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(942, s)) +# define BOOST_PP_WHILE_942_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_943, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(943, s)) +# define BOOST_PP_WHILE_943_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_944, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(944, s)) +# define BOOST_PP_WHILE_944_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_945, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(945, s)) +# define BOOST_PP_WHILE_945_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_946, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(946, s)) +# define BOOST_PP_WHILE_946_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_947, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(947, s)) +# define BOOST_PP_WHILE_947_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_948, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(948, s)) +# define BOOST_PP_WHILE_948_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_949, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(949, s)) +# define BOOST_PP_WHILE_949_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_950, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(950, s)) +# define BOOST_PP_WHILE_950_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_951, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(951, s)) +# define BOOST_PP_WHILE_951_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_952, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(952, s)) +# define BOOST_PP_WHILE_952_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_953, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(953, s)) +# define BOOST_PP_WHILE_953_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_954, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(954, s)) +# define BOOST_PP_WHILE_954_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_955, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(955, s)) +# define BOOST_PP_WHILE_955_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_956, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(956, s)) +# define BOOST_PP_WHILE_956_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_957, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(957, s)) +# define BOOST_PP_WHILE_957_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_958, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(958, s)) +# define BOOST_PP_WHILE_958_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_959, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(959, s)) +# define BOOST_PP_WHILE_959_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_960, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(960, s)) +# define BOOST_PP_WHILE_960_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_961, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(961, s)) +# define BOOST_PP_WHILE_961_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_962, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(962, s)) +# define BOOST_PP_WHILE_962_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_963, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(963, s)) +# define BOOST_PP_WHILE_963_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_964, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(964, s)) +# define BOOST_PP_WHILE_964_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_965, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(965, s)) +# define BOOST_PP_WHILE_965_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_966, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(966, s)) +# define BOOST_PP_WHILE_966_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_967, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(967, s)) +# define BOOST_PP_WHILE_967_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_968, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(968, s)) +# define BOOST_PP_WHILE_968_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_969, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(969, s)) +# define BOOST_PP_WHILE_969_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_970, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(970, s)) +# define BOOST_PP_WHILE_970_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_971, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(971, s)) +# define BOOST_PP_WHILE_971_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_972, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(972, s)) +# define BOOST_PP_WHILE_972_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_973, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(973, s)) +# define BOOST_PP_WHILE_973_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_974, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(974, s)) +# define BOOST_PP_WHILE_974_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_975, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(975, s)) +# define BOOST_PP_WHILE_975_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_976, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(976, s)) +# define BOOST_PP_WHILE_976_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_977, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(977, s)) +# define BOOST_PP_WHILE_977_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_978, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(978, s)) +# define BOOST_PP_WHILE_978_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_979, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(979, s)) +# define BOOST_PP_WHILE_979_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_980, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(980, s)) +# define BOOST_PP_WHILE_980_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_981, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(981, s)) +# define BOOST_PP_WHILE_981_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_982, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(982, s)) +# define BOOST_PP_WHILE_982_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_983, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(983, s)) +# define BOOST_PP_WHILE_983_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_984, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(984, s)) +# define BOOST_PP_WHILE_984_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_985, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(985, s)) +# define BOOST_PP_WHILE_985_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_986, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(986, s)) +# define BOOST_PP_WHILE_986_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_987, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(987, s)) +# define BOOST_PP_WHILE_987_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_988, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(988, s)) +# define BOOST_PP_WHILE_988_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_989, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(989, s)) +# define BOOST_PP_WHILE_989_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_990, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(990, s)) +# define BOOST_PP_WHILE_990_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_991, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(991, s)) +# define BOOST_PP_WHILE_991_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_992, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(992, s)) +# define BOOST_PP_WHILE_992_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_993, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(993, s)) +# define BOOST_PP_WHILE_993_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_994, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(994, s)) +# define BOOST_PP_WHILE_994_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_995, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(995, s)) +# define BOOST_PP_WHILE_995_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_996, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(996, s)) +# define BOOST_PP_WHILE_996_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_997, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(997, s)) +# define BOOST_PP_WHILE_997_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_998, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(998, s)) +# define BOOST_PP_WHILE_998_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_999, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(999, s)) +# define BOOST_PP_WHILE_999_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1000, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1000, s)) +# define BOOST_PP_WHILE_1000_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1001, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1001, s)) +# define BOOST_PP_WHILE_1001_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1002, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1002, s)) +# define BOOST_PP_WHILE_1002_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1003, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1003, s)) +# define BOOST_PP_WHILE_1003_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1004, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1004, s)) +# define BOOST_PP_WHILE_1004_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1005, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1005, s)) +# define BOOST_PP_WHILE_1005_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1006, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1006, s)) +# define BOOST_PP_WHILE_1006_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1007, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1007, s)) +# define BOOST_PP_WHILE_1007_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1008, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1008, s)) +# define BOOST_PP_WHILE_1008_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1009, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1009, s)) +# define BOOST_PP_WHILE_1009_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1010, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1010, s)) +# define BOOST_PP_WHILE_1010_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1011, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1011, s)) +# define BOOST_PP_WHILE_1011_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1012, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1012, s)) +# define BOOST_PP_WHILE_1012_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1013, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1013, s)) +# define BOOST_PP_WHILE_1013_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1014, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1014, s)) +# define BOOST_PP_WHILE_1014_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1015, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1015, s)) +# define BOOST_PP_WHILE_1015_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1016, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1016, s)) +# define BOOST_PP_WHILE_1016_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1017, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1017, s)) +# define BOOST_PP_WHILE_1017_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1018, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1018, s)) +# define BOOST_PP_WHILE_1018_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1019, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1019, s)) +# define BOOST_PP_WHILE_1019_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1020, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1020, s)) +# define BOOST_PP_WHILE_1020_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1021, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1021, s)) +# define BOOST_PP_WHILE_1021_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1022, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1022, s)) +# define BOOST_PP_WHILE_1022_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1023, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1023, s)) +# define BOOST_PP_WHILE_1023_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1024, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1024, s)) +# define BOOST_PP_WHILE_1024_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1025, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1025, s)) +# +# endif diff --git a/src/boost/boost/preprocessor/control/detail/limits/while_256.hpp b/src/boost/boost/preprocessor/control/detail/limits/while_256.hpp new file mode 100644 index 000000000..724fa104a --- /dev/null +++ b/src/boost/boost/preprocessor/control/detail/limits/while_256.hpp @@ -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_WHILE_256_HPP +# define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_256_HPP +# +# define BOOST_PP_WHILE_0(p, o, s) BOOST_PP_WHILE_0_C(BOOST_PP_BOOL(p(1, s)), p, o, s) +# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_C(BOOST_PP_BOOL(p(2, s)), p, o, s) +# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_C(BOOST_PP_BOOL(p(3, s)), p, o, s) +# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_C(BOOST_PP_BOOL(p(4, s)), p, o, s) +# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_C(BOOST_PP_BOOL(p(5, s)), p, o, s) +# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_C(BOOST_PP_BOOL(p(6, s)), p, o, s) +# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_C(BOOST_PP_BOOL(p(7, s)), p, o, s) +# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_C(BOOST_PP_BOOL(p(8, s)), p, o, s) +# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_C(BOOST_PP_BOOL(p(9, s)), p, o, s) +# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_C(BOOST_PP_BOOL(p(10, s)), p, o, s) +# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_C(BOOST_PP_BOOL(p(11, s)), p, o, s) +# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_C(BOOST_PP_BOOL(p(12, s)), p, o, s) +# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_C(BOOST_PP_BOOL(p(13, s)), p, o, s) +# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_C(BOOST_PP_BOOL(p(14, s)), p, o, s) +# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_C(BOOST_PP_BOOL(p(15, s)), p, o, s) +# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_C(BOOST_PP_BOOL(p(16, s)), p, o, s) +# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_C(BOOST_PP_BOOL(p(17, s)), p, o, s) +# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_C(BOOST_PP_BOOL(p(18, s)), p, o, s) +# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_C(BOOST_PP_BOOL(p(19, s)), p, o, s) +# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_C(BOOST_PP_BOOL(p(20, s)), p, o, s) +# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_C(BOOST_PP_BOOL(p(21, s)), p, o, s) +# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_C(BOOST_PP_BOOL(p(22, s)), p, o, s) +# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_C(BOOST_PP_BOOL(p(23, s)), p, o, s) +# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_C(BOOST_PP_BOOL(p(24, s)), p, o, s) +# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_C(BOOST_PP_BOOL(p(25, s)), p, o, s) +# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_C(BOOST_PP_BOOL(p(26, s)), p, o, s) +# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_C(BOOST_PP_BOOL(p(27, s)), p, o, s) +# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_C(BOOST_PP_BOOL(p(28, s)), p, o, s) +# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_C(BOOST_PP_BOOL(p(29, s)), p, o, s) +# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_C(BOOST_PP_BOOL(p(30, s)), p, o, s) +# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_C(BOOST_PP_BOOL(p(31, s)), p, o, s) +# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_C(BOOST_PP_BOOL(p(32, s)), p, o, s) +# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_C(BOOST_PP_BOOL(p(33, s)), p, o, s) +# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_C(BOOST_PP_BOOL(p(34, s)), p, o, s) +# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_C(BOOST_PP_BOOL(p(35, s)), p, o, s) +# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_C(BOOST_PP_BOOL(p(36, s)), p, o, s) +# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_C(BOOST_PP_BOOL(p(37, s)), p, o, s) +# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_C(BOOST_PP_BOOL(p(38, s)), p, o, s) +# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_C(BOOST_PP_BOOL(p(39, s)), p, o, s) +# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_C(BOOST_PP_BOOL(p(40, s)), p, o, s) +# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_C(BOOST_PP_BOOL(p(41, s)), p, o, s) +# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_C(BOOST_PP_BOOL(p(42, s)), p, o, s) +# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_C(BOOST_PP_BOOL(p(43, s)), p, o, s) +# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_C(BOOST_PP_BOOL(p(44, s)), p, o, s) +# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_C(BOOST_PP_BOOL(p(45, s)), p, o, s) +# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_C(BOOST_PP_BOOL(p(46, s)), p, o, s) +# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_C(BOOST_PP_BOOL(p(47, s)), p, o, s) +# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_C(BOOST_PP_BOOL(p(48, s)), p, o, s) +# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_C(BOOST_PP_BOOL(p(49, s)), p, o, s) +# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_C(BOOST_PP_BOOL(p(50, s)), p, o, s) +# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_C(BOOST_PP_BOOL(p(51, s)), p, o, s) +# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_C(BOOST_PP_BOOL(p(52, s)), p, o, s) +# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_C(BOOST_PP_BOOL(p(53, s)), p, o, s) +# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_C(BOOST_PP_BOOL(p(54, s)), p, o, s) +# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_C(BOOST_PP_BOOL(p(55, s)), p, o, s) +# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_C(BOOST_PP_BOOL(p(56, s)), p, o, s) +# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_C(BOOST_PP_BOOL(p(57, s)), p, o, s) +# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_C(BOOST_PP_BOOL(p(58, s)), p, o, s) +# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_C(BOOST_PP_BOOL(p(59, s)), p, o, s) +# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_C(BOOST_PP_BOOL(p(60, s)), p, o, s) +# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_C(BOOST_PP_BOOL(p(61, s)), p, o, s) +# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_C(BOOST_PP_BOOL(p(62, s)), p, o, s) +# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_C(BOOST_PP_BOOL(p(63, s)), p, o, s) +# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_C(BOOST_PP_BOOL(p(64, s)), p, o, s) +# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_C(BOOST_PP_BOOL(p(65, s)), p, o, s) +# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_C(BOOST_PP_BOOL(p(66, s)), p, o, s) +# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_C(BOOST_PP_BOOL(p(67, s)), p, o, s) +# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_C(BOOST_PP_BOOL(p(68, s)), p, o, s) +# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_C(BOOST_PP_BOOL(p(69, s)), p, o, s) +# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_C(BOOST_PP_BOOL(p(70, s)), p, o, s) +# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_C(BOOST_PP_BOOL(p(71, s)), p, o, s) +# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_C(BOOST_PP_BOOL(p(72, s)), p, o, s) +# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_C(BOOST_PP_BOOL(p(73, s)), p, o, s) +# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_C(BOOST_PP_BOOL(p(74, s)), p, o, s) +# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_C(BOOST_PP_BOOL(p(75, s)), p, o, s) +# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_C(BOOST_PP_BOOL(p(76, s)), p, o, s) +# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_C(BOOST_PP_BOOL(p(77, s)), p, o, s) +# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_C(BOOST_PP_BOOL(p(78, s)), p, o, s) +# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_C(BOOST_PP_BOOL(p(79, s)), p, o, s) +# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_C(BOOST_PP_BOOL(p(80, s)), p, o, s) +# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_C(BOOST_PP_BOOL(p(81, s)), p, o, s) +# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_C(BOOST_PP_BOOL(p(82, s)), p, o, s) +# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_C(BOOST_PP_BOOL(p(83, s)), p, o, s) +# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_C(BOOST_PP_BOOL(p(84, s)), p, o, s) +# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_C(BOOST_PP_BOOL(p(85, s)), p, o, s) +# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_C(BOOST_PP_BOOL(p(86, s)), p, o, s) +# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_C(BOOST_PP_BOOL(p(87, s)), p, o, s) +# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_C(BOOST_PP_BOOL(p(88, s)), p, o, s) +# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_C(BOOST_PP_BOOL(p(89, s)), p, o, s) +# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_C(BOOST_PP_BOOL(p(90, s)), p, o, s) +# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_C(BOOST_PP_BOOL(p(91, s)), p, o, s) +# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_C(BOOST_PP_BOOL(p(92, s)), p, o, s) +# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_C(BOOST_PP_BOOL(p(93, s)), p, o, s) +# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_C(BOOST_PP_BOOL(p(94, s)), p, o, s) +# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_C(BOOST_PP_BOOL(p(95, s)), p, o, s) +# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_C(BOOST_PP_BOOL(p(96, s)), p, o, s) +# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_C(BOOST_PP_BOOL(p(97, s)), p, o, s) +# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_C(BOOST_PP_BOOL(p(98, s)), p, o, s) +# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_C(BOOST_PP_BOOL(p(99, s)), p, o, s) +# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_C(BOOST_PP_BOOL(p(100, s)), p, o, s) +# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_C(BOOST_PP_BOOL(p(101, s)), p, o, s) +# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_C(BOOST_PP_BOOL(p(102, s)), p, o, s) +# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_C(BOOST_PP_BOOL(p(103, s)), p, o, s) +# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_C(BOOST_PP_BOOL(p(104, s)), p, o, s) +# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_C(BOOST_PP_BOOL(p(105, s)), p, o, s) +# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_C(BOOST_PP_BOOL(p(106, s)), p, o, s) +# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_C(BOOST_PP_BOOL(p(107, s)), p, o, s) +# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_C(BOOST_PP_BOOL(p(108, s)), p, o, s) +# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_C(BOOST_PP_BOOL(p(109, s)), p, o, s) +# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_C(BOOST_PP_BOOL(p(110, s)), p, o, s) +# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_C(BOOST_PP_BOOL(p(111, s)), p, o, s) +# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_C(BOOST_PP_BOOL(p(112, s)), p, o, s) +# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_C(BOOST_PP_BOOL(p(113, s)), p, o, s) +# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_C(BOOST_PP_BOOL(p(114, s)), p, o, s) +# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_C(BOOST_PP_BOOL(p(115, s)), p, o, s) +# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_C(BOOST_PP_BOOL(p(116, s)), p, o, s) +# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_C(BOOST_PP_BOOL(p(117, s)), p, o, s) +# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_C(BOOST_PP_BOOL(p(118, s)), p, o, s) +# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_C(BOOST_PP_BOOL(p(119, s)), p, o, s) +# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_C(BOOST_PP_BOOL(p(120, s)), p, o, s) +# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_C(BOOST_PP_BOOL(p(121, s)), p, o, s) +# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_C(BOOST_PP_BOOL(p(122, s)), p, o, s) +# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_C(BOOST_PP_BOOL(p(123, s)), p, o, s) +# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_C(BOOST_PP_BOOL(p(124, s)), p, o, s) +# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_C(BOOST_PP_BOOL(p(125, s)), p, o, s) +# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_C(BOOST_PP_BOOL(p(126, s)), p, o, s) +# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_C(BOOST_PP_BOOL(p(127, s)), p, o, s) +# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_C(BOOST_PP_BOOL(p(128, s)), p, o, s) +# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_C(BOOST_PP_BOOL(p(129, s)), p, o, s) +# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_C(BOOST_PP_BOOL(p(130, s)), p, o, s) +# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_C(BOOST_PP_BOOL(p(131, s)), p, o, s) +# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_C(BOOST_PP_BOOL(p(132, s)), p, o, s) +# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_C(BOOST_PP_BOOL(p(133, s)), p, o, s) +# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_C(BOOST_PP_BOOL(p(134, s)), p, o, s) +# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_C(BOOST_PP_BOOL(p(135, s)), p, o, s) +# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_C(BOOST_PP_BOOL(p(136, s)), p, o, s) +# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_C(BOOST_PP_BOOL(p(137, s)), p, o, s) +# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_C(BOOST_PP_BOOL(p(138, s)), p, o, s) +# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_C(BOOST_PP_BOOL(p(139, s)), p, o, s) +# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_C(BOOST_PP_BOOL(p(140, s)), p, o, s) +# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_C(BOOST_PP_BOOL(p(141, s)), p, o, s) +# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_C(BOOST_PP_BOOL(p(142, s)), p, o, s) +# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_C(BOOST_PP_BOOL(p(143, s)), p, o, s) +# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_C(BOOST_PP_BOOL(p(144, s)), p, o, s) +# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_C(BOOST_PP_BOOL(p(145, s)), p, o, s) +# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_C(BOOST_PP_BOOL(p(146, s)), p, o, s) +# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_C(BOOST_PP_BOOL(p(147, s)), p, o, s) +# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_C(BOOST_PP_BOOL(p(148, s)), p, o, s) +# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_C(BOOST_PP_BOOL(p(149, s)), p, o, s) +# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_C(BOOST_PP_BOOL(p(150, s)), p, o, s) +# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_C(BOOST_PP_BOOL(p(151, s)), p, o, s) +# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_C(BOOST_PP_BOOL(p(152, s)), p, o, s) +# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_C(BOOST_PP_BOOL(p(153, s)), p, o, s) +# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_C(BOOST_PP_BOOL(p(154, s)), p, o, s) +# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_C(BOOST_PP_BOOL(p(155, s)), p, o, s) +# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_C(BOOST_PP_BOOL(p(156, s)), p, o, s) +# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_C(BOOST_PP_BOOL(p(157, s)), p, o, s) +# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_C(BOOST_PP_BOOL(p(158, s)), p, o, s) +# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_C(BOOST_PP_BOOL(p(159, s)), p, o, s) +# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_C(BOOST_PP_BOOL(p(160, s)), p, o, s) +# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_C(BOOST_PP_BOOL(p(161, s)), p, o, s) +# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_C(BOOST_PP_BOOL(p(162, s)), p, o, s) +# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_C(BOOST_PP_BOOL(p(163, s)), p, o, s) +# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_C(BOOST_PP_BOOL(p(164, s)), p, o, s) +# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_C(BOOST_PP_BOOL(p(165, s)), p, o, s) +# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_C(BOOST_PP_BOOL(p(166, s)), p, o, s) +# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_C(BOOST_PP_BOOL(p(167, s)), p, o, s) +# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_C(BOOST_PP_BOOL(p(168, s)), p, o, s) +# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_C(BOOST_PP_BOOL(p(169, s)), p, o, s) +# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_C(BOOST_PP_BOOL(p(170, s)), p, o, s) +# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_C(BOOST_PP_BOOL(p(171, s)), p, o, s) +# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_C(BOOST_PP_BOOL(p(172, s)), p, o, s) +# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_C(BOOST_PP_BOOL(p(173, s)), p, o, s) +# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_C(BOOST_PP_BOOL(p(174, s)), p, o, s) +# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_C(BOOST_PP_BOOL(p(175, s)), p, o, s) +# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_C(BOOST_PP_BOOL(p(176, s)), p, o, s) +# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_C(BOOST_PP_BOOL(p(177, s)), p, o, s) +# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_C(BOOST_PP_BOOL(p(178, s)), p, o, s) +# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_C(BOOST_PP_BOOL(p(179, s)), p, o, s) +# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_C(BOOST_PP_BOOL(p(180, s)), p, o, s) +# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_C(BOOST_PP_BOOL(p(181, s)), p, o, s) +# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_C(BOOST_PP_BOOL(p(182, s)), p, o, s) +# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_C(BOOST_PP_BOOL(p(183, s)), p, o, s) +# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_C(BOOST_PP_BOOL(p(184, s)), p, o, s) +# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_C(BOOST_PP_BOOL(p(185, s)), p, o, s) +# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_C(BOOST_PP_BOOL(p(186, s)), p, o, s) +# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_C(BOOST_PP_BOOL(p(187, s)), p, o, s) +# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_C(BOOST_PP_BOOL(p(188, s)), p, o, s) +# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_C(BOOST_PP_BOOL(p(189, s)), p, o, s) +# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_C(BOOST_PP_BOOL(p(190, s)), p, o, s) +# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_C(BOOST_PP_BOOL(p(191, s)), p, o, s) +# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_C(BOOST_PP_BOOL(p(192, s)), p, o, s) +# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_C(BOOST_PP_BOOL(p(193, s)), p, o, s) +# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_C(BOOST_PP_BOOL(p(194, s)), p, o, s) +# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_C(BOOST_PP_BOOL(p(195, s)), p, o, s) +# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_C(BOOST_PP_BOOL(p(196, s)), p, o, s) +# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_C(BOOST_PP_BOOL(p(197, s)), p, o, s) +# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_C(BOOST_PP_BOOL(p(198, s)), p, o, s) +# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_C(BOOST_PP_BOOL(p(199, s)), p, o, s) +# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_C(BOOST_PP_BOOL(p(200, s)), p, o, s) +# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_C(BOOST_PP_BOOL(p(201, s)), p, o, s) +# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_C(BOOST_PP_BOOL(p(202, s)), p, o, s) +# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_C(BOOST_PP_BOOL(p(203, s)), p, o, s) +# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_C(BOOST_PP_BOOL(p(204, s)), p, o, s) +# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_C(BOOST_PP_BOOL(p(205, s)), p, o, s) +# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_C(BOOST_PP_BOOL(p(206, s)), p, o, s) +# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_C(BOOST_PP_BOOL(p(207, s)), p, o, s) +# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_C(BOOST_PP_BOOL(p(208, s)), p, o, s) +# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_C(BOOST_PP_BOOL(p(209, s)), p, o, s) +# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_C(BOOST_PP_BOOL(p(210, s)), p, o, s) +# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_C(BOOST_PP_BOOL(p(211, s)), p, o, s) +# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_C(BOOST_PP_BOOL(p(212, s)), p, o, s) +# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_C(BOOST_PP_BOOL(p(213, s)), p, o, s) +# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_C(BOOST_PP_BOOL(p(214, s)), p, o, s) +# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_C(BOOST_PP_BOOL(p(215, s)), p, o, s) +# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_C(BOOST_PP_BOOL(p(216, s)), p, o, s) +# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_C(BOOST_PP_BOOL(p(217, s)), p, o, s) +# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_C(BOOST_PP_BOOL(p(218, s)), p, o, s) +# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_C(BOOST_PP_BOOL(p(219, s)), p, o, s) +# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_C(BOOST_PP_BOOL(p(220, s)), p, o, s) +# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_C(BOOST_PP_BOOL(p(221, s)), p, o, s) +# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_C(BOOST_PP_BOOL(p(222, s)), p, o, s) +# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_C(BOOST_PP_BOOL(p(223, s)), p, o, s) +# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_C(BOOST_PP_BOOL(p(224, s)), p, o, s) +# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_C(BOOST_PP_BOOL(p(225, s)), p, o, s) +# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_C(BOOST_PP_BOOL(p(226, s)), p, o, s) +# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_C(BOOST_PP_BOOL(p(227, s)), p, o, s) +# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_C(BOOST_PP_BOOL(p(228, s)), p, o, s) +# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_C(BOOST_PP_BOOL(p(229, s)), p, o, s) +# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_C(BOOST_PP_BOOL(p(230, s)), p, o, s) +# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_C(BOOST_PP_BOOL(p(231, s)), p, o, s) +# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_C(BOOST_PP_BOOL(p(232, s)), p, o, s) +# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_C(BOOST_PP_BOOL(p(233, s)), p, o, s) +# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_C(BOOST_PP_BOOL(p(234, s)), p, o, s) +# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_C(BOOST_PP_BOOL(p(235, s)), p, o, s) +# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_C(BOOST_PP_BOOL(p(236, s)), p, o, s) +# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_C(BOOST_PP_BOOL(p(237, s)), p, o, s) +# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_C(BOOST_PP_BOOL(p(238, s)), p, o, s) +# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_C(BOOST_PP_BOOL(p(239, s)), p, o, s) +# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_C(BOOST_PP_BOOL(p(240, s)), p, o, s) +# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_C(BOOST_PP_BOOL(p(241, s)), p, o, s) +# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_C(BOOST_PP_BOOL(p(242, s)), p, o, s) +# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_C(BOOST_PP_BOOL(p(243, s)), p, o, s) +# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_C(BOOST_PP_BOOL(p(244, s)), p, o, s) +# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_C(BOOST_PP_BOOL(p(245, s)), p, o, s) +# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_C(BOOST_PP_BOOL(p(246, s)), p, o, s) +# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_C(BOOST_PP_BOOL(p(247, s)), p, o, s) +# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_C(BOOST_PP_BOOL(p(248, s)), p, o, s) +# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_C(BOOST_PP_BOOL(p(249, s)), p, o, s) +# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_C(BOOST_PP_BOOL(p(250, s)), p, o, s) +# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_C(BOOST_PP_BOOL(p(251, s)), p, o, s) +# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_C(BOOST_PP_BOOL(p(252, s)), p, o, s) +# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_C(BOOST_PP_BOOL(p(253, s)), p, o, s) +# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_C(BOOST_PP_BOOL(p(254, s)), p, o, s) +# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_C(BOOST_PP_BOOL(p(255, s)), p, o, s) +# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_C(BOOST_PP_BOOL(p(256, s)), p, o, s) +# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_C(BOOST_PP_BOOL(p(257, s)), p, o, s) +# +# define BOOST_PP_WHILE_0_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_1, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(1, s)) +# define BOOST_PP_WHILE_1_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(2, s)) +# define BOOST_PP_WHILE_2_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(3, s)) +# define BOOST_PP_WHILE_3_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(4, s)) +# define BOOST_PP_WHILE_4_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(5, s)) +# define BOOST_PP_WHILE_5_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(6, s)) +# define BOOST_PP_WHILE_6_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(7, s)) +# define BOOST_PP_WHILE_7_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(8, s)) +# define BOOST_PP_WHILE_8_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(9, s)) +# define BOOST_PP_WHILE_9_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(10, s)) +# define BOOST_PP_WHILE_10_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(11, s)) +# define BOOST_PP_WHILE_11_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(12, s)) +# define BOOST_PP_WHILE_12_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(13, s)) +# define BOOST_PP_WHILE_13_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(14, s)) +# define BOOST_PP_WHILE_14_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(15, s)) +# define BOOST_PP_WHILE_15_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(16, s)) +# define BOOST_PP_WHILE_16_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(17, s)) +# define BOOST_PP_WHILE_17_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(18, s)) +# define BOOST_PP_WHILE_18_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(19, s)) +# define BOOST_PP_WHILE_19_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(20, s)) +# define BOOST_PP_WHILE_20_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(21, s)) +# define BOOST_PP_WHILE_21_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(22, s)) +# define BOOST_PP_WHILE_22_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(23, s)) +# define BOOST_PP_WHILE_23_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(24, s)) +# define BOOST_PP_WHILE_24_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(25, s)) +# define BOOST_PP_WHILE_25_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(26, s)) +# define BOOST_PP_WHILE_26_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(27, s)) +# define BOOST_PP_WHILE_27_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(28, s)) +# define BOOST_PP_WHILE_28_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(29, s)) +# define BOOST_PP_WHILE_29_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(30, s)) +# define BOOST_PP_WHILE_30_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(31, s)) +# define BOOST_PP_WHILE_31_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(32, s)) +# define BOOST_PP_WHILE_32_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(33, s)) +# define BOOST_PP_WHILE_33_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(34, s)) +# define BOOST_PP_WHILE_34_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(35, s)) +# define BOOST_PP_WHILE_35_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(36, s)) +# define BOOST_PP_WHILE_36_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(37, s)) +# define BOOST_PP_WHILE_37_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(38, s)) +# define BOOST_PP_WHILE_38_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(39, s)) +# define BOOST_PP_WHILE_39_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(40, s)) +# define BOOST_PP_WHILE_40_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(41, s)) +# define BOOST_PP_WHILE_41_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(42, s)) +# define BOOST_PP_WHILE_42_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(43, s)) +# define BOOST_PP_WHILE_43_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(44, s)) +# define BOOST_PP_WHILE_44_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(45, s)) +# define BOOST_PP_WHILE_45_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(46, s)) +# define BOOST_PP_WHILE_46_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(47, s)) +# define BOOST_PP_WHILE_47_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(48, s)) +# define BOOST_PP_WHILE_48_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(49, s)) +# define BOOST_PP_WHILE_49_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(50, s)) +# define BOOST_PP_WHILE_50_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(51, s)) +# define BOOST_PP_WHILE_51_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(52, s)) +# define BOOST_PP_WHILE_52_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(53, s)) +# define BOOST_PP_WHILE_53_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(54, s)) +# define BOOST_PP_WHILE_54_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(55, s)) +# define BOOST_PP_WHILE_55_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(56, s)) +# define BOOST_PP_WHILE_56_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(57, s)) +# define BOOST_PP_WHILE_57_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(58, s)) +# define BOOST_PP_WHILE_58_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(59, s)) +# define BOOST_PP_WHILE_59_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(60, s)) +# define BOOST_PP_WHILE_60_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(61, s)) +# define BOOST_PP_WHILE_61_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(62, s)) +# define BOOST_PP_WHILE_62_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(63, s)) +# define BOOST_PP_WHILE_63_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(64, s)) +# define BOOST_PP_WHILE_64_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(65, s)) +# define BOOST_PP_WHILE_65_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(66, s)) +# define BOOST_PP_WHILE_66_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(67, s)) +# define BOOST_PP_WHILE_67_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(68, s)) +# define BOOST_PP_WHILE_68_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(69, s)) +# define BOOST_PP_WHILE_69_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(70, s)) +# define BOOST_PP_WHILE_70_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(71, s)) +# define BOOST_PP_WHILE_71_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(72, s)) +# define BOOST_PP_WHILE_72_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(73, s)) +# define BOOST_PP_WHILE_73_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(74, s)) +# define BOOST_PP_WHILE_74_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(75, s)) +# define BOOST_PP_WHILE_75_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(76, s)) +# define BOOST_PP_WHILE_76_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(77, s)) +# define BOOST_PP_WHILE_77_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(78, s)) +# define BOOST_PP_WHILE_78_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(79, s)) +# define BOOST_PP_WHILE_79_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(80, s)) +# define BOOST_PP_WHILE_80_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(81, s)) +# define BOOST_PP_WHILE_81_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(82, s)) +# define BOOST_PP_WHILE_82_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(83, s)) +# define BOOST_PP_WHILE_83_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(84, s)) +# define BOOST_PP_WHILE_84_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(85, s)) +# define BOOST_PP_WHILE_85_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(86, s)) +# define BOOST_PP_WHILE_86_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(87, s)) +# define BOOST_PP_WHILE_87_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(88, s)) +# define BOOST_PP_WHILE_88_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(89, s)) +# define BOOST_PP_WHILE_89_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(90, s)) +# define BOOST_PP_WHILE_90_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(91, s)) +# define BOOST_PP_WHILE_91_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(92, s)) +# define BOOST_PP_WHILE_92_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(93, s)) +# define BOOST_PP_WHILE_93_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(94, s)) +# define BOOST_PP_WHILE_94_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(95, s)) +# define BOOST_PP_WHILE_95_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(96, s)) +# define BOOST_PP_WHILE_96_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(97, s)) +# define BOOST_PP_WHILE_97_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(98, s)) +# define BOOST_PP_WHILE_98_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(99, s)) +# define BOOST_PP_WHILE_99_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(100, s)) +# define BOOST_PP_WHILE_100_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(101, s)) +# define BOOST_PP_WHILE_101_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(102, s)) +# define BOOST_PP_WHILE_102_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(103, s)) +# define BOOST_PP_WHILE_103_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(104, s)) +# define BOOST_PP_WHILE_104_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(105, s)) +# define BOOST_PP_WHILE_105_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(106, s)) +# define BOOST_PP_WHILE_106_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(107, s)) +# define BOOST_PP_WHILE_107_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(108, s)) +# define BOOST_PP_WHILE_108_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(109, s)) +# define BOOST_PP_WHILE_109_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(110, s)) +# define BOOST_PP_WHILE_110_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(111, s)) +# define BOOST_PP_WHILE_111_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(112, s)) +# define BOOST_PP_WHILE_112_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(113, s)) +# define BOOST_PP_WHILE_113_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(114, s)) +# define BOOST_PP_WHILE_114_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(115, s)) +# define BOOST_PP_WHILE_115_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(116, s)) +# define BOOST_PP_WHILE_116_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(117, s)) +# define BOOST_PP_WHILE_117_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(118, s)) +# define BOOST_PP_WHILE_118_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(119, s)) +# define BOOST_PP_WHILE_119_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(120, s)) +# define BOOST_PP_WHILE_120_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(121, s)) +# define BOOST_PP_WHILE_121_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(122, s)) +# define BOOST_PP_WHILE_122_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(123, s)) +# define BOOST_PP_WHILE_123_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(124, s)) +# define BOOST_PP_WHILE_124_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(125, s)) +# define BOOST_PP_WHILE_125_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(126, s)) +# define BOOST_PP_WHILE_126_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(127, s)) +# define BOOST_PP_WHILE_127_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(128, s)) +# define BOOST_PP_WHILE_128_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(129, s)) +# define BOOST_PP_WHILE_129_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(130, s)) +# define BOOST_PP_WHILE_130_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(131, s)) +# define BOOST_PP_WHILE_131_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(132, s)) +# define BOOST_PP_WHILE_132_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(133, s)) +# define BOOST_PP_WHILE_133_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(134, s)) +# define BOOST_PP_WHILE_134_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(135, s)) +# define BOOST_PP_WHILE_135_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(136, s)) +# define BOOST_PP_WHILE_136_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(137, s)) +# define BOOST_PP_WHILE_137_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(138, s)) +# define BOOST_PP_WHILE_138_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(139, s)) +# define BOOST_PP_WHILE_139_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(140, s)) +# define BOOST_PP_WHILE_140_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(141, s)) +# define BOOST_PP_WHILE_141_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(142, s)) +# define BOOST_PP_WHILE_142_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(143, s)) +# define BOOST_PP_WHILE_143_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(144, s)) +# define BOOST_PP_WHILE_144_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(145, s)) +# define BOOST_PP_WHILE_145_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(146, s)) +# define BOOST_PP_WHILE_146_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(147, s)) +# define BOOST_PP_WHILE_147_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(148, s)) +# define BOOST_PP_WHILE_148_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(149, s)) +# define BOOST_PP_WHILE_149_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(150, s)) +# define BOOST_PP_WHILE_150_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(151, s)) +# define BOOST_PP_WHILE_151_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(152, s)) +# define BOOST_PP_WHILE_152_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(153, s)) +# define BOOST_PP_WHILE_153_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(154, s)) +# define BOOST_PP_WHILE_154_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(155, s)) +# define BOOST_PP_WHILE_155_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(156, s)) +# define BOOST_PP_WHILE_156_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(157, s)) +# define BOOST_PP_WHILE_157_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(158, s)) +# define BOOST_PP_WHILE_158_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(159, s)) +# define BOOST_PP_WHILE_159_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(160, s)) +# define BOOST_PP_WHILE_160_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(161, s)) +# define BOOST_PP_WHILE_161_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(162, s)) +# define BOOST_PP_WHILE_162_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(163, s)) +# define BOOST_PP_WHILE_163_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(164, s)) +# define BOOST_PP_WHILE_164_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(165, s)) +# define BOOST_PP_WHILE_165_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(166, s)) +# define BOOST_PP_WHILE_166_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(167, s)) +# define BOOST_PP_WHILE_167_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(168, s)) +# define BOOST_PP_WHILE_168_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(169, s)) +# define BOOST_PP_WHILE_169_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(170, s)) +# define BOOST_PP_WHILE_170_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(171, s)) +# define BOOST_PP_WHILE_171_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(172, s)) +# define BOOST_PP_WHILE_172_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(173, s)) +# define BOOST_PP_WHILE_173_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(174, s)) +# define BOOST_PP_WHILE_174_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(175, s)) +# define BOOST_PP_WHILE_175_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(176, s)) +# define BOOST_PP_WHILE_176_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(177, s)) +# define BOOST_PP_WHILE_177_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(178, s)) +# define BOOST_PP_WHILE_178_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(179, s)) +# define BOOST_PP_WHILE_179_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(180, s)) +# define BOOST_PP_WHILE_180_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(181, s)) +# define BOOST_PP_WHILE_181_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(182, s)) +# define BOOST_PP_WHILE_182_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(183, s)) +# define BOOST_PP_WHILE_183_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(184, s)) +# define BOOST_PP_WHILE_184_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(185, s)) +# define BOOST_PP_WHILE_185_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(186, s)) +# define BOOST_PP_WHILE_186_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(187, s)) +# define BOOST_PP_WHILE_187_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(188, s)) +# define BOOST_PP_WHILE_188_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(189, s)) +# define BOOST_PP_WHILE_189_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(190, s)) +# define BOOST_PP_WHILE_190_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(191, s)) +# define BOOST_PP_WHILE_191_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(192, s)) +# define BOOST_PP_WHILE_192_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(193, s)) +# define BOOST_PP_WHILE_193_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(194, s)) +# define BOOST_PP_WHILE_194_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(195, s)) +# define BOOST_PP_WHILE_195_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(196, s)) +# define BOOST_PP_WHILE_196_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(197, s)) +# define BOOST_PP_WHILE_197_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(198, s)) +# define BOOST_PP_WHILE_198_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(199, s)) +# define BOOST_PP_WHILE_199_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(200, s)) +# define BOOST_PP_WHILE_200_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(201, s)) +# define BOOST_PP_WHILE_201_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(202, s)) +# define BOOST_PP_WHILE_202_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(203, s)) +# define BOOST_PP_WHILE_203_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(204, s)) +# define BOOST_PP_WHILE_204_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(205, s)) +# define BOOST_PP_WHILE_205_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(206, s)) +# define BOOST_PP_WHILE_206_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(207, s)) +# define BOOST_PP_WHILE_207_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(208, s)) +# define BOOST_PP_WHILE_208_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(209, s)) +# define BOOST_PP_WHILE_209_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(210, s)) +# define BOOST_PP_WHILE_210_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(211, s)) +# define BOOST_PP_WHILE_211_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(212, s)) +# define BOOST_PP_WHILE_212_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(213, s)) +# define BOOST_PP_WHILE_213_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(214, s)) +# define BOOST_PP_WHILE_214_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(215, s)) +# define BOOST_PP_WHILE_215_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(216, s)) +# define BOOST_PP_WHILE_216_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(217, s)) +# define BOOST_PP_WHILE_217_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(218, s)) +# define BOOST_PP_WHILE_218_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(219, s)) +# define BOOST_PP_WHILE_219_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(220, s)) +# define BOOST_PP_WHILE_220_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(221, s)) +# define BOOST_PP_WHILE_221_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(222, s)) +# define BOOST_PP_WHILE_222_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(223, s)) +# define BOOST_PP_WHILE_223_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(224, s)) +# define BOOST_PP_WHILE_224_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(225, s)) +# define BOOST_PP_WHILE_225_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(226, s)) +# define BOOST_PP_WHILE_226_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(227, s)) +# define BOOST_PP_WHILE_227_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(228, s)) +# define BOOST_PP_WHILE_228_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(229, s)) +# define BOOST_PP_WHILE_229_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(230, s)) +# define BOOST_PP_WHILE_230_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(231, s)) +# define BOOST_PP_WHILE_231_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(232, s)) +# define BOOST_PP_WHILE_232_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(233, s)) +# define BOOST_PP_WHILE_233_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(234, s)) +# define BOOST_PP_WHILE_234_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(235, s)) +# define BOOST_PP_WHILE_235_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(236, s)) +# define BOOST_PP_WHILE_236_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(237, s)) +# define BOOST_PP_WHILE_237_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(238, s)) +# define BOOST_PP_WHILE_238_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(239, s)) +# define BOOST_PP_WHILE_239_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(240, s)) +# define BOOST_PP_WHILE_240_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(241, s)) +# define BOOST_PP_WHILE_241_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(242, s)) +# define BOOST_PP_WHILE_242_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(243, s)) +# define BOOST_PP_WHILE_243_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(244, s)) +# define BOOST_PP_WHILE_244_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(245, s)) +# define BOOST_PP_WHILE_245_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(246, s)) +# define BOOST_PP_WHILE_246_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(247, s)) +# define BOOST_PP_WHILE_247_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(248, s)) +# define BOOST_PP_WHILE_248_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(249, s)) +# define BOOST_PP_WHILE_249_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(250, s)) +# define BOOST_PP_WHILE_250_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(251, s)) +# define BOOST_PP_WHILE_251_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(252, s)) +# define BOOST_PP_WHILE_252_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(253, s)) +# define BOOST_PP_WHILE_253_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(254, s)) +# define BOOST_PP_WHILE_254_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(255, s)) +# define BOOST_PP_WHILE_255_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(256, s)) +# define BOOST_PP_WHILE_256_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(257, s)) +# +# endif diff --git a/src/boost/boost/preprocessor/control/detail/limits/while_512.hpp b/src/boost/boost/preprocessor/control/detail/limits/while_512.hpp new file mode 100644 index 000000000..51c7cd5cc --- /dev/null +++ b/src/boost/boost/preprocessor/control/detail/limits/while_512.hpp @@ -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_WHILE_512_HPP +# define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_512_HPP +# +# define BOOST_PP_WHILE_257(p, o, s) BOOST_PP_WHILE_257_C(BOOST_PP_BOOL(p(258, s)), p, o, s) +# define BOOST_PP_WHILE_258(p, o, s) BOOST_PP_WHILE_258_C(BOOST_PP_BOOL(p(259, s)), p, o, s) +# define BOOST_PP_WHILE_259(p, o, s) BOOST_PP_WHILE_259_C(BOOST_PP_BOOL(p(260, s)), p, o, s) +# define BOOST_PP_WHILE_260(p, o, s) BOOST_PP_WHILE_260_C(BOOST_PP_BOOL(p(261, s)), p, o, s) +# define BOOST_PP_WHILE_261(p, o, s) BOOST_PP_WHILE_261_C(BOOST_PP_BOOL(p(262, s)), p, o, s) +# define BOOST_PP_WHILE_262(p, o, s) BOOST_PP_WHILE_262_C(BOOST_PP_BOOL(p(263, s)), p, o, s) +# define BOOST_PP_WHILE_263(p, o, s) BOOST_PP_WHILE_263_C(BOOST_PP_BOOL(p(264, s)), p, o, s) +# define BOOST_PP_WHILE_264(p, o, s) BOOST_PP_WHILE_264_C(BOOST_PP_BOOL(p(265, s)), p, o, s) +# define BOOST_PP_WHILE_265(p, o, s) BOOST_PP_WHILE_265_C(BOOST_PP_BOOL(p(266, s)), p, o, s) +# define BOOST_PP_WHILE_266(p, o, s) BOOST_PP_WHILE_266_C(BOOST_PP_BOOL(p(267, s)), p, o, s) +# define BOOST_PP_WHILE_267(p, o, s) BOOST_PP_WHILE_267_C(BOOST_PP_BOOL(p(268, s)), p, o, s) +# define BOOST_PP_WHILE_268(p, o, s) BOOST_PP_WHILE_268_C(BOOST_PP_BOOL(p(269, s)), p, o, s) +# define BOOST_PP_WHILE_269(p, o, s) BOOST_PP_WHILE_269_C(BOOST_PP_BOOL(p(270, s)), p, o, s) +# define BOOST_PP_WHILE_270(p, o, s) BOOST_PP_WHILE_270_C(BOOST_PP_BOOL(p(271, s)), p, o, s) +# define BOOST_PP_WHILE_271(p, o, s) BOOST_PP_WHILE_271_C(BOOST_PP_BOOL(p(272, s)), p, o, s) +# define BOOST_PP_WHILE_272(p, o, s) BOOST_PP_WHILE_272_C(BOOST_PP_BOOL(p(273, s)), p, o, s) +# define BOOST_PP_WHILE_273(p, o, s) BOOST_PP_WHILE_273_C(BOOST_PP_BOOL(p(274, s)), p, o, s) +# define BOOST_PP_WHILE_274(p, o, s) BOOST_PP_WHILE_274_C(BOOST_PP_BOOL(p(275, s)), p, o, s) +# define BOOST_PP_WHILE_275(p, o, s) BOOST_PP_WHILE_275_C(BOOST_PP_BOOL(p(276, s)), p, o, s) +# define BOOST_PP_WHILE_276(p, o, s) BOOST_PP_WHILE_276_C(BOOST_PP_BOOL(p(277, s)), p, o, s) +# define BOOST_PP_WHILE_277(p, o, s) BOOST_PP_WHILE_277_C(BOOST_PP_BOOL(p(278, s)), p, o, s) +# define BOOST_PP_WHILE_278(p, o, s) BOOST_PP_WHILE_278_C(BOOST_PP_BOOL(p(279, s)), p, o, s) +# define BOOST_PP_WHILE_279(p, o, s) BOOST_PP_WHILE_279_C(BOOST_PP_BOOL(p(280, s)), p, o, s) +# define BOOST_PP_WHILE_280(p, o, s) BOOST_PP_WHILE_280_C(BOOST_PP_BOOL(p(281, s)), p, o, s) +# define BOOST_PP_WHILE_281(p, o, s) BOOST_PP_WHILE_281_C(BOOST_PP_BOOL(p(282, s)), p, o, s) +# define BOOST_PP_WHILE_282(p, o, s) BOOST_PP_WHILE_282_C(BOOST_PP_BOOL(p(283, s)), p, o, s) +# define BOOST_PP_WHILE_283(p, o, s) BOOST_PP_WHILE_283_C(BOOST_PP_BOOL(p(284, s)), p, o, s) +# define BOOST_PP_WHILE_284(p, o, s) BOOST_PP_WHILE_284_C(BOOST_PP_BOOL(p(285, s)), p, o, s) +# define BOOST_PP_WHILE_285(p, o, s) BOOST_PP_WHILE_285_C(BOOST_PP_BOOL(p(286, s)), p, o, s) +# define BOOST_PP_WHILE_286(p, o, s) BOOST_PP_WHILE_286_C(BOOST_PP_BOOL(p(287, s)), p, o, s) +# define BOOST_PP_WHILE_287(p, o, s) BOOST_PP_WHILE_287_C(BOOST_PP_BOOL(p(288, s)), p, o, s) +# define BOOST_PP_WHILE_288(p, o, s) BOOST_PP_WHILE_288_C(BOOST_PP_BOOL(p(289, s)), p, o, s) +# define BOOST_PP_WHILE_289(p, o, s) BOOST_PP_WHILE_289_C(BOOST_PP_BOOL(p(290, s)), p, o, s) +# define BOOST_PP_WHILE_290(p, o, s) BOOST_PP_WHILE_290_C(BOOST_PP_BOOL(p(291, s)), p, o, s) +# define BOOST_PP_WHILE_291(p, o, s) BOOST_PP_WHILE_291_C(BOOST_PP_BOOL(p(292, s)), p, o, s) +# define BOOST_PP_WHILE_292(p, o, s) BOOST_PP_WHILE_292_C(BOOST_PP_BOOL(p(293, s)), p, o, s) +# define BOOST_PP_WHILE_293(p, o, s) BOOST_PP_WHILE_293_C(BOOST_PP_BOOL(p(294, s)), p, o, s) +# define BOOST_PP_WHILE_294(p, o, s) BOOST_PP_WHILE_294_C(BOOST_PP_BOOL(p(295, s)), p, o, s) +# define BOOST_PP_WHILE_295(p, o, s) BOOST_PP_WHILE_295_C(BOOST_PP_BOOL(p(296, s)), p, o, s) +# define BOOST_PP_WHILE_296(p, o, s) BOOST_PP_WHILE_296_C(BOOST_PP_BOOL(p(297, s)), p, o, s) +# define BOOST_PP_WHILE_297(p, o, s) BOOST_PP_WHILE_297_C(BOOST_PP_BOOL(p(298, s)), p, o, s) +# define BOOST_PP_WHILE_298(p, o, s) BOOST_PP_WHILE_298_C(BOOST_PP_BOOL(p(299, s)), p, o, s) +# define BOOST_PP_WHILE_299(p, o, s) BOOST_PP_WHILE_299_C(BOOST_PP_BOOL(p(300, s)), p, o, s) +# define BOOST_PP_WHILE_300(p, o, s) BOOST_PP_WHILE_300_C(BOOST_PP_BOOL(p(301, s)), p, o, s) +# define BOOST_PP_WHILE_301(p, o, s) BOOST_PP_WHILE_301_C(BOOST_PP_BOOL(p(302, s)), p, o, s) +# define BOOST_PP_WHILE_302(p, o, s) BOOST_PP_WHILE_302_C(BOOST_PP_BOOL(p(303, s)), p, o, s) +# define BOOST_PP_WHILE_303(p, o, s) BOOST_PP_WHILE_303_C(BOOST_PP_BOOL(p(304, s)), p, o, s) +# define BOOST_PP_WHILE_304(p, o, s) BOOST_PP_WHILE_304_C(BOOST_PP_BOOL(p(305, s)), p, o, s) +# define BOOST_PP_WHILE_305(p, o, s) BOOST_PP_WHILE_305_C(BOOST_PP_BOOL(p(306, s)), p, o, s) +# define BOOST_PP_WHILE_306(p, o, s) BOOST_PP_WHILE_306_C(BOOST_PP_BOOL(p(307, s)), p, o, s) +# define BOOST_PP_WHILE_307(p, o, s) BOOST_PP_WHILE_307_C(BOOST_PP_BOOL(p(308, s)), p, o, s) +# define BOOST_PP_WHILE_308(p, o, s) BOOST_PP_WHILE_308_C(BOOST_PP_BOOL(p(309, s)), p, o, s) +# define BOOST_PP_WHILE_309(p, o, s) BOOST_PP_WHILE_309_C(BOOST_PP_BOOL(p(310, s)), p, o, s) +# define BOOST_PP_WHILE_310(p, o, s) BOOST_PP_WHILE_310_C(BOOST_PP_BOOL(p(311, s)), p, o, s) +# define BOOST_PP_WHILE_311(p, o, s) BOOST_PP_WHILE_311_C(BOOST_PP_BOOL(p(312, s)), p, o, s) +# define BOOST_PP_WHILE_312(p, o, s) BOOST_PP_WHILE_312_C(BOOST_PP_BOOL(p(313, s)), p, o, s) +# define BOOST_PP_WHILE_313(p, o, s) BOOST_PP_WHILE_313_C(BOOST_PP_BOOL(p(314, s)), p, o, s) +# define BOOST_PP_WHILE_314(p, o, s) BOOST_PP_WHILE_314_C(BOOST_PP_BOOL(p(315, s)), p, o, s) +# define BOOST_PP_WHILE_315(p, o, s) BOOST_PP_WHILE_315_C(BOOST_PP_BOOL(p(316, s)), p, o, s) +# define BOOST_PP_WHILE_316(p, o, s) BOOST_PP_WHILE_316_C(BOOST_PP_BOOL(p(317, s)), p, o, s) +# define BOOST_PP_WHILE_317(p, o, s) BOOST_PP_WHILE_317_C(BOOST_PP_BOOL(p(318, s)), p, o, s) +# define BOOST_PP_WHILE_318(p, o, s) BOOST_PP_WHILE_318_C(BOOST_PP_BOOL(p(319, s)), p, o, s) +# define BOOST_PP_WHILE_319(p, o, s) BOOST_PP_WHILE_319_C(BOOST_PP_BOOL(p(320, s)), p, o, s) +# define BOOST_PP_WHILE_320(p, o, s) BOOST_PP_WHILE_320_C(BOOST_PP_BOOL(p(321, s)), p, o, s) +# define BOOST_PP_WHILE_321(p, o, s) BOOST_PP_WHILE_321_C(BOOST_PP_BOOL(p(322, s)), p, o, s) +# define BOOST_PP_WHILE_322(p, o, s) BOOST_PP_WHILE_322_C(BOOST_PP_BOOL(p(323, s)), p, o, s) +# define BOOST_PP_WHILE_323(p, o, s) BOOST_PP_WHILE_323_C(BOOST_PP_BOOL(p(324, s)), p, o, s) +# define BOOST_PP_WHILE_324(p, o, s) BOOST_PP_WHILE_324_C(BOOST_PP_BOOL(p(325, s)), p, o, s) +# define BOOST_PP_WHILE_325(p, o, s) BOOST_PP_WHILE_325_C(BOOST_PP_BOOL(p(326, s)), p, o, s) +# define BOOST_PP_WHILE_326(p, o, s) BOOST_PP_WHILE_326_C(BOOST_PP_BOOL(p(327, s)), p, o, s) +# define BOOST_PP_WHILE_327(p, o, s) BOOST_PP_WHILE_327_C(BOOST_PP_BOOL(p(328, s)), p, o, s) +# define BOOST_PP_WHILE_328(p, o, s) BOOST_PP_WHILE_328_C(BOOST_PP_BOOL(p(329, s)), p, o, s) +# define BOOST_PP_WHILE_329(p, o, s) BOOST_PP_WHILE_329_C(BOOST_PP_BOOL(p(330, s)), p, o, s) +# define BOOST_PP_WHILE_330(p, o, s) BOOST_PP_WHILE_330_C(BOOST_PP_BOOL(p(331, s)), p, o, s) +# define BOOST_PP_WHILE_331(p, o, s) BOOST_PP_WHILE_331_C(BOOST_PP_BOOL(p(332, s)), p, o, s) +# define BOOST_PP_WHILE_332(p, o, s) BOOST_PP_WHILE_332_C(BOOST_PP_BOOL(p(333, s)), p, o, s) +# define BOOST_PP_WHILE_333(p, o, s) BOOST_PP_WHILE_333_C(BOOST_PP_BOOL(p(334, s)), p, o, s) +# define BOOST_PP_WHILE_334(p, o, s) BOOST_PP_WHILE_334_C(BOOST_PP_BOOL(p(335, s)), p, o, s) +# define BOOST_PP_WHILE_335(p, o, s) BOOST_PP_WHILE_335_C(BOOST_PP_BOOL(p(336, s)), p, o, s) +# define BOOST_PP_WHILE_336(p, o, s) BOOST_PP_WHILE_336_C(BOOST_PP_BOOL(p(337, s)), p, o, s) +# define BOOST_PP_WHILE_337(p, o, s) BOOST_PP_WHILE_337_C(BOOST_PP_BOOL(p(338, s)), p, o, s) +# define BOOST_PP_WHILE_338(p, o, s) BOOST_PP_WHILE_338_C(BOOST_PP_BOOL(p(339, s)), p, o, s) +# define BOOST_PP_WHILE_339(p, o, s) BOOST_PP_WHILE_339_C(BOOST_PP_BOOL(p(340, s)), p, o, s) +# define BOOST_PP_WHILE_340(p, o, s) BOOST_PP_WHILE_340_C(BOOST_PP_BOOL(p(341, s)), p, o, s) +# define BOOST_PP_WHILE_341(p, o, s) BOOST_PP_WHILE_341_C(BOOST_PP_BOOL(p(342, s)), p, o, s) +# define BOOST_PP_WHILE_342(p, o, s) BOOST_PP_WHILE_342_C(BOOST_PP_BOOL(p(343, s)), p, o, s) +# define BOOST_PP_WHILE_343(p, o, s) BOOST_PP_WHILE_343_C(BOOST_PP_BOOL(p(344, s)), p, o, s) +# define BOOST_PP_WHILE_344(p, o, s) BOOST_PP_WHILE_344_C(BOOST_PP_BOOL(p(345, s)), p, o, s) +# define BOOST_PP_WHILE_345(p, o, s) BOOST_PP_WHILE_345_C(BOOST_PP_BOOL(p(346, s)), p, o, s) +# define BOOST_PP_WHILE_346(p, o, s) BOOST_PP_WHILE_346_C(BOOST_PP_BOOL(p(347, s)), p, o, s) +# define BOOST_PP_WHILE_347(p, o, s) BOOST_PP_WHILE_347_C(BOOST_PP_BOOL(p(348, s)), p, o, s) +# define BOOST_PP_WHILE_348(p, o, s) BOOST_PP_WHILE_348_C(BOOST_PP_BOOL(p(349, s)), p, o, s) +# define BOOST_PP_WHILE_349(p, o, s) BOOST_PP_WHILE_349_C(BOOST_PP_BOOL(p(350, s)), p, o, s) +# define BOOST_PP_WHILE_350(p, o, s) BOOST_PP_WHILE_350_C(BOOST_PP_BOOL(p(351, s)), p, o, s) +# define BOOST_PP_WHILE_351(p, o, s) BOOST_PP_WHILE_351_C(BOOST_PP_BOOL(p(352, s)), p, o, s) +# define BOOST_PP_WHILE_352(p, o, s) BOOST_PP_WHILE_352_C(BOOST_PP_BOOL(p(353, s)), p, o, s) +# define BOOST_PP_WHILE_353(p, o, s) BOOST_PP_WHILE_353_C(BOOST_PP_BOOL(p(354, s)), p, o, s) +# define BOOST_PP_WHILE_354(p, o, s) BOOST_PP_WHILE_354_C(BOOST_PP_BOOL(p(355, s)), p, o, s) +# define BOOST_PP_WHILE_355(p, o, s) BOOST_PP_WHILE_355_C(BOOST_PP_BOOL(p(356, s)), p, o, s) +# define BOOST_PP_WHILE_356(p, o, s) BOOST_PP_WHILE_356_C(BOOST_PP_BOOL(p(357, s)), p, o, s) +# define BOOST_PP_WHILE_357(p, o, s) BOOST_PP_WHILE_357_C(BOOST_PP_BOOL(p(358, s)), p, o, s) +# define BOOST_PP_WHILE_358(p, o, s) BOOST_PP_WHILE_358_C(BOOST_PP_BOOL(p(359, s)), p, o, s) +# define BOOST_PP_WHILE_359(p, o, s) BOOST_PP_WHILE_359_C(BOOST_PP_BOOL(p(360, s)), p, o, s) +# define BOOST_PP_WHILE_360(p, o, s) BOOST_PP_WHILE_360_C(BOOST_PP_BOOL(p(361, s)), p, o, s) +# define BOOST_PP_WHILE_361(p, o, s) BOOST_PP_WHILE_361_C(BOOST_PP_BOOL(p(362, s)), p, o, s) +# define BOOST_PP_WHILE_362(p, o, s) BOOST_PP_WHILE_362_C(BOOST_PP_BOOL(p(363, s)), p, o, s) +# define BOOST_PP_WHILE_363(p, o, s) BOOST_PP_WHILE_363_C(BOOST_PP_BOOL(p(364, s)), p, o, s) +# define BOOST_PP_WHILE_364(p, o, s) BOOST_PP_WHILE_364_C(BOOST_PP_BOOL(p(365, s)), p, o, s) +# define BOOST_PP_WHILE_365(p, o, s) BOOST_PP_WHILE_365_C(BOOST_PP_BOOL(p(366, s)), p, o, s) +# define BOOST_PP_WHILE_366(p, o, s) BOOST_PP_WHILE_366_C(BOOST_PP_BOOL(p(367, s)), p, o, s) +# define BOOST_PP_WHILE_367(p, o, s) BOOST_PP_WHILE_367_C(BOOST_PP_BOOL(p(368, s)), p, o, s) +# define BOOST_PP_WHILE_368(p, o, s) BOOST_PP_WHILE_368_C(BOOST_PP_BOOL(p(369, s)), p, o, s) +# define BOOST_PP_WHILE_369(p, o, s) BOOST_PP_WHILE_369_C(BOOST_PP_BOOL(p(370, s)), p, o, s) +# define BOOST_PP_WHILE_370(p, o, s) BOOST_PP_WHILE_370_C(BOOST_PP_BOOL(p(371, s)), p, o, s) +# define BOOST_PP_WHILE_371(p, o, s) BOOST_PP_WHILE_371_C(BOOST_PP_BOOL(p(372, s)), p, o, s) +# define BOOST_PP_WHILE_372(p, o, s) BOOST_PP_WHILE_372_C(BOOST_PP_BOOL(p(373, s)), p, o, s) +# define BOOST_PP_WHILE_373(p, o, s) BOOST_PP_WHILE_373_C(BOOST_PP_BOOL(p(374, s)), p, o, s) +# define BOOST_PP_WHILE_374(p, o, s) BOOST_PP_WHILE_374_C(BOOST_PP_BOOL(p(375, s)), p, o, s) +# define BOOST_PP_WHILE_375(p, o, s) BOOST_PP_WHILE_375_C(BOOST_PP_BOOL(p(376, s)), p, o, s) +# define BOOST_PP_WHILE_376(p, o, s) BOOST_PP_WHILE_376_C(BOOST_PP_BOOL(p(377, s)), p, o, s) +# define BOOST_PP_WHILE_377(p, o, s) BOOST_PP_WHILE_377_C(BOOST_PP_BOOL(p(378, s)), p, o, s) +# define BOOST_PP_WHILE_378(p, o, s) BOOST_PP_WHILE_378_C(BOOST_PP_BOOL(p(379, s)), p, o, s) +# define BOOST_PP_WHILE_379(p, o, s) BOOST_PP_WHILE_379_C(BOOST_PP_BOOL(p(380, s)), p, o, s) +# define BOOST_PP_WHILE_380(p, o, s) BOOST_PP_WHILE_380_C(BOOST_PP_BOOL(p(381, s)), p, o, s) +# define BOOST_PP_WHILE_381(p, o, s) BOOST_PP_WHILE_381_C(BOOST_PP_BOOL(p(382, s)), p, o, s) +# define BOOST_PP_WHILE_382(p, o, s) BOOST_PP_WHILE_382_C(BOOST_PP_BOOL(p(383, s)), p, o, s) +# define BOOST_PP_WHILE_383(p, o, s) BOOST_PP_WHILE_383_C(BOOST_PP_BOOL(p(384, s)), p, o, s) +# define BOOST_PP_WHILE_384(p, o, s) BOOST_PP_WHILE_384_C(BOOST_PP_BOOL(p(385, s)), p, o, s) +# define BOOST_PP_WHILE_385(p, o, s) BOOST_PP_WHILE_385_C(BOOST_PP_BOOL(p(386, s)), p, o, s) +# define BOOST_PP_WHILE_386(p, o, s) BOOST_PP_WHILE_386_C(BOOST_PP_BOOL(p(387, s)), p, o, s) +# define BOOST_PP_WHILE_387(p, o, s) BOOST_PP_WHILE_387_C(BOOST_PP_BOOL(p(388, s)), p, o, s) +# define BOOST_PP_WHILE_388(p, o, s) BOOST_PP_WHILE_388_C(BOOST_PP_BOOL(p(389, s)), p, o, s) +# define BOOST_PP_WHILE_389(p, o, s) BOOST_PP_WHILE_389_C(BOOST_PP_BOOL(p(390, s)), p, o, s) +# define BOOST_PP_WHILE_390(p, o, s) BOOST_PP_WHILE_390_C(BOOST_PP_BOOL(p(391, s)), p, o, s) +# define BOOST_PP_WHILE_391(p, o, s) BOOST_PP_WHILE_391_C(BOOST_PP_BOOL(p(392, s)), p, o, s) +# define BOOST_PP_WHILE_392(p, o, s) BOOST_PP_WHILE_392_C(BOOST_PP_BOOL(p(393, s)), p, o, s) +# define BOOST_PP_WHILE_393(p, o, s) BOOST_PP_WHILE_393_C(BOOST_PP_BOOL(p(394, s)), p, o, s) +# define BOOST_PP_WHILE_394(p, o, s) BOOST_PP_WHILE_394_C(BOOST_PP_BOOL(p(395, s)), p, o, s) +# define BOOST_PP_WHILE_395(p, o, s) BOOST_PP_WHILE_395_C(BOOST_PP_BOOL(p(396, s)), p, o, s) +# define BOOST_PP_WHILE_396(p, o, s) BOOST_PP_WHILE_396_C(BOOST_PP_BOOL(p(397, s)), p, o, s) +# define BOOST_PP_WHILE_397(p, o, s) BOOST_PP_WHILE_397_C(BOOST_PP_BOOL(p(398, s)), p, o, s) +# define BOOST_PP_WHILE_398(p, o, s) BOOST_PP_WHILE_398_C(BOOST_PP_BOOL(p(399, s)), p, o, s) +# define BOOST_PP_WHILE_399(p, o, s) BOOST_PP_WHILE_399_C(BOOST_PP_BOOL(p(400, s)), p, o, s) +# define BOOST_PP_WHILE_400(p, o, s) BOOST_PP_WHILE_400_C(BOOST_PP_BOOL(p(401, s)), p, o, s) +# define BOOST_PP_WHILE_401(p, o, s) BOOST_PP_WHILE_401_C(BOOST_PP_BOOL(p(402, s)), p, o, s) +# define BOOST_PP_WHILE_402(p, o, s) BOOST_PP_WHILE_402_C(BOOST_PP_BOOL(p(403, s)), p, o, s) +# define BOOST_PP_WHILE_403(p, o, s) BOOST_PP_WHILE_403_C(BOOST_PP_BOOL(p(404, s)), p, o, s) +# define BOOST_PP_WHILE_404(p, o, s) BOOST_PP_WHILE_404_C(BOOST_PP_BOOL(p(405, s)), p, o, s) +# define BOOST_PP_WHILE_405(p, o, s) BOOST_PP_WHILE_405_C(BOOST_PP_BOOL(p(406, s)), p, o, s) +# define BOOST_PP_WHILE_406(p, o, s) BOOST_PP_WHILE_406_C(BOOST_PP_BOOL(p(407, s)), p, o, s) +# define BOOST_PP_WHILE_407(p, o, s) BOOST_PP_WHILE_407_C(BOOST_PP_BOOL(p(408, s)), p, o, s) +# define BOOST_PP_WHILE_408(p, o, s) BOOST_PP_WHILE_408_C(BOOST_PP_BOOL(p(409, s)), p, o, s) +# define BOOST_PP_WHILE_409(p, o, s) BOOST_PP_WHILE_409_C(BOOST_PP_BOOL(p(410, s)), p, o, s) +# define BOOST_PP_WHILE_410(p, o, s) BOOST_PP_WHILE_410_C(BOOST_PP_BOOL(p(411, s)), p, o, s) +# define BOOST_PP_WHILE_411(p, o, s) BOOST_PP_WHILE_411_C(BOOST_PP_BOOL(p(412, s)), p, o, s) +# define BOOST_PP_WHILE_412(p, o, s) BOOST_PP_WHILE_412_C(BOOST_PP_BOOL(p(413, s)), p, o, s) +# define BOOST_PP_WHILE_413(p, o, s) BOOST_PP_WHILE_413_C(BOOST_PP_BOOL(p(414, s)), p, o, s) +# define BOOST_PP_WHILE_414(p, o, s) BOOST_PP_WHILE_414_C(BOOST_PP_BOOL(p(415, s)), p, o, s) +# define BOOST_PP_WHILE_415(p, o, s) BOOST_PP_WHILE_415_C(BOOST_PP_BOOL(p(416, s)), p, o, s) +# define BOOST_PP_WHILE_416(p, o, s) BOOST_PP_WHILE_416_C(BOOST_PP_BOOL(p(417, s)), p, o, s) +# define BOOST_PP_WHILE_417(p, o, s) BOOST_PP_WHILE_417_C(BOOST_PP_BOOL(p(418, s)), p, o, s) +# define BOOST_PP_WHILE_418(p, o, s) BOOST_PP_WHILE_418_C(BOOST_PP_BOOL(p(419, s)), p, o, s) +# define BOOST_PP_WHILE_419(p, o, s) BOOST_PP_WHILE_419_C(BOOST_PP_BOOL(p(420, s)), p, o, s) +# define BOOST_PP_WHILE_420(p, o, s) BOOST_PP_WHILE_420_C(BOOST_PP_BOOL(p(421, s)), p, o, s) +# define BOOST_PP_WHILE_421(p, o, s) BOOST_PP_WHILE_421_C(BOOST_PP_BOOL(p(422, s)), p, o, s) +# define BOOST_PP_WHILE_422(p, o, s) BOOST_PP_WHILE_422_C(BOOST_PP_BOOL(p(423, s)), p, o, s) +# define BOOST_PP_WHILE_423(p, o, s) BOOST_PP_WHILE_423_C(BOOST_PP_BOOL(p(424, s)), p, o, s) +# define BOOST_PP_WHILE_424(p, o, s) BOOST_PP_WHILE_424_C(BOOST_PP_BOOL(p(425, s)), p, o, s) +# define BOOST_PP_WHILE_425(p, o, s) BOOST_PP_WHILE_425_C(BOOST_PP_BOOL(p(426, s)), p, o, s) +# define BOOST_PP_WHILE_426(p, o, s) BOOST_PP_WHILE_426_C(BOOST_PP_BOOL(p(427, s)), p, o, s) +# define BOOST_PP_WHILE_427(p, o, s) BOOST_PP_WHILE_427_C(BOOST_PP_BOOL(p(428, s)), p, o, s) +# define BOOST_PP_WHILE_428(p, o, s) BOOST_PP_WHILE_428_C(BOOST_PP_BOOL(p(429, s)), p, o, s) +# define BOOST_PP_WHILE_429(p, o, s) BOOST_PP_WHILE_429_C(BOOST_PP_BOOL(p(430, s)), p, o, s) +# define BOOST_PP_WHILE_430(p, o, s) BOOST_PP_WHILE_430_C(BOOST_PP_BOOL(p(431, s)), p, o, s) +# define BOOST_PP_WHILE_431(p, o, s) BOOST_PP_WHILE_431_C(BOOST_PP_BOOL(p(432, s)), p, o, s) +# define BOOST_PP_WHILE_432(p, o, s) BOOST_PP_WHILE_432_C(BOOST_PP_BOOL(p(433, s)), p, o, s) +# define BOOST_PP_WHILE_433(p, o, s) BOOST_PP_WHILE_433_C(BOOST_PP_BOOL(p(434, s)), p, o, s) +# define BOOST_PP_WHILE_434(p, o, s) BOOST_PP_WHILE_434_C(BOOST_PP_BOOL(p(435, s)), p, o, s) +# define BOOST_PP_WHILE_435(p, o, s) BOOST_PP_WHILE_435_C(BOOST_PP_BOOL(p(436, s)), p, o, s) +# define BOOST_PP_WHILE_436(p, o, s) BOOST_PP_WHILE_436_C(BOOST_PP_BOOL(p(437, s)), p, o, s) +# define BOOST_PP_WHILE_437(p, o, s) BOOST_PP_WHILE_437_C(BOOST_PP_BOOL(p(438, s)), p, o, s) +# define BOOST_PP_WHILE_438(p, o, s) BOOST_PP_WHILE_438_C(BOOST_PP_BOOL(p(439, s)), p, o, s) +# define BOOST_PP_WHILE_439(p, o, s) BOOST_PP_WHILE_439_C(BOOST_PP_BOOL(p(440, s)), p, o, s) +# define BOOST_PP_WHILE_440(p, o, s) BOOST_PP_WHILE_440_C(BOOST_PP_BOOL(p(441, s)), p, o, s) +# define BOOST_PP_WHILE_441(p, o, s) BOOST_PP_WHILE_441_C(BOOST_PP_BOOL(p(442, s)), p, o, s) +# define BOOST_PP_WHILE_442(p, o, s) BOOST_PP_WHILE_442_C(BOOST_PP_BOOL(p(443, s)), p, o, s) +# define BOOST_PP_WHILE_443(p, o, s) BOOST_PP_WHILE_443_C(BOOST_PP_BOOL(p(444, s)), p, o, s) +# define BOOST_PP_WHILE_444(p, o, s) BOOST_PP_WHILE_444_C(BOOST_PP_BOOL(p(445, s)), p, o, s) +# define BOOST_PP_WHILE_445(p, o, s) BOOST_PP_WHILE_445_C(BOOST_PP_BOOL(p(446, s)), p, o, s) +# define BOOST_PP_WHILE_446(p, o, s) BOOST_PP_WHILE_446_C(BOOST_PP_BOOL(p(447, s)), p, o, s) +# define BOOST_PP_WHILE_447(p, o, s) BOOST_PP_WHILE_447_C(BOOST_PP_BOOL(p(448, s)), p, o, s) +# define BOOST_PP_WHILE_448(p, o, s) BOOST_PP_WHILE_448_C(BOOST_PP_BOOL(p(449, s)), p, o, s) +# define BOOST_PP_WHILE_449(p, o, s) BOOST_PP_WHILE_449_C(BOOST_PP_BOOL(p(450, s)), p, o, s) +# define BOOST_PP_WHILE_450(p, o, s) BOOST_PP_WHILE_450_C(BOOST_PP_BOOL(p(451, s)), p, o, s) +# define BOOST_PP_WHILE_451(p, o, s) BOOST_PP_WHILE_451_C(BOOST_PP_BOOL(p(452, s)), p, o, s) +# define BOOST_PP_WHILE_452(p, o, s) BOOST_PP_WHILE_452_C(BOOST_PP_BOOL(p(453, s)), p, o, s) +# define BOOST_PP_WHILE_453(p, o, s) BOOST_PP_WHILE_453_C(BOOST_PP_BOOL(p(454, s)), p, o, s) +# define BOOST_PP_WHILE_454(p, o, s) BOOST_PP_WHILE_454_C(BOOST_PP_BOOL(p(455, s)), p, o, s) +# define BOOST_PP_WHILE_455(p, o, s) BOOST_PP_WHILE_455_C(BOOST_PP_BOOL(p(456, s)), p, o, s) +# define BOOST_PP_WHILE_456(p, o, s) BOOST_PP_WHILE_456_C(BOOST_PP_BOOL(p(457, s)), p, o, s) +# define BOOST_PP_WHILE_457(p, o, s) BOOST_PP_WHILE_457_C(BOOST_PP_BOOL(p(458, s)), p, o, s) +# define BOOST_PP_WHILE_458(p, o, s) BOOST_PP_WHILE_458_C(BOOST_PP_BOOL(p(459, s)), p, o, s) +# define BOOST_PP_WHILE_459(p, o, s) BOOST_PP_WHILE_459_C(BOOST_PP_BOOL(p(460, s)), p, o, s) +# define BOOST_PP_WHILE_460(p, o, s) BOOST_PP_WHILE_460_C(BOOST_PP_BOOL(p(461, s)), p, o, s) +# define BOOST_PP_WHILE_461(p, o, s) BOOST_PP_WHILE_461_C(BOOST_PP_BOOL(p(462, s)), p, o, s) +# define BOOST_PP_WHILE_462(p, o, s) BOOST_PP_WHILE_462_C(BOOST_PP_BOOL(p(463, s)), p, o, s) +# define BOOST_PP_WHILE_463(p, o, s) BOOST_PP_WHILE_463_C(BOOST_PP_BOOL(p(464, s)), p, o, s) +# define BOOST_PP_WHILE_464(p, o, s) BOOST_PP_WHILE_464_C(BOOST_PP_BOOL(p(465, s)), p, o, s) +# define BOOST_PP_WHILE_465(p, o, s) BOOST_PP_WHILE_465_C(BOOST_PP_BOOL(p(466, s)), p, o, s) +# define BOOST_PP_WHILE_466(p, o, s) BOOST_PP_WHILE_466_C(BOOST_PP_BOOL(p(467, s)), p, o, s) +# define BOOST_PP_WHILE_467(p, o, s) BOOST_PP_WHILE_467_C(BOOST_PP_BOOL(p(468, s)), p, o, s) +# define BOOST_PP_WHILE_468(p, o, s) BOOST_PP_WHILE_468_C(BOOST_PP_BOOL(p(469, s)), p, o, s) +# define BOOST_PP_WHILE_469(p, o, s) BOOST_PP_WHILE_469_C(BOOST_PP_BOOL(p(470, s)), p, o, s) +# define BOOST_PP_WHILE_470(p, o, s) BOOST_PP_WHILE_470_C(BOOST_PP_BOOL(p(471, s)), p, o, s) +# define BOOST_PP_WHILE_471(p, o, s) BOOST_PP_WHILE_471_C(BOOST_PP_BOOL(p(472, s)), p, o, s) +# define BOOST_PP_WHILE_472(p, o, s) BOOST_PP_WHILE_472_C(BOOST_PP_BOOL(p(473, s)), p, o, s) +# define BOOST_PP_WHILE_473(p, o, s) BOOST_PP_WHILE_473_C(BOOST_PP_BOOL(p(474, s)), p, o, s) +# define BOOST_PP_WHILE_474(p, o, s) BOOST_PP_WHILE_474_C(BOOST_PP_BOOL(p(475, s)), p, o, s) +# define BOOST_PP_WHILE_475(p, o, s) BOOST_PP_WHILE_475_C(BOOST_PP_BOOL(p(476, s)), p, o, s) +# define BOOST_PP_WHILE_476(p, o, s) BOOST_PP_WHILE_476_C(BOOST_PP_BOOL(p(477, s)), p, o, s) +# define BOOST_PP_WHILE_477(p, o, s) BOOST_PP_WHILE_477_C(BOOST_PP_BOOL(p(478, s)), p, o, s) +# define BOOST_PP_WHILE_478(p, o, s) BOOST_PP_WHILE_478_C(BOOST_PP_BOOL(p(479, s)), p, o, s) +# define BOOST_PP_WHILE_479(p, o, s) BOOST_PP_WHILE_479_C(BOOST_PP_BOOL(p(480, s)), p, o, s) +# define BOOST_PP_WHILE_480(p, o, s) BOOST_PP_WHILE_480_C(BOOST_PP_BOOL(p(481, s)), p, o, s) +# define BOOST_PP_WHILE_481(p, o, s) BOOST_PP_WHILE_481_C(BOOST_PP_BOOL(p(482, s)), p, o, s) +# define BOOST_PP_WHILE_482(p, o, s) BOOST_PP_WHILE_482_C(BOOST_PP_BOOL(p(483, s)), p, o, s) +# define BOOST_PP_WHILE_483(p, o, s) BOOST_PP_WHILE_483_C(BOOST_PP_BOOL(p(484, s)), p, o, s) +# define BOOST_PP_WHILE_484(p, o, s) BOOST_PP_WHILE_484_C(BOOST_PP_BOOL(p(485, s)), p, o, s) +# define BOOST_PP_WHILE_485(p, o, s) BOOST_PP_WHILE_485_C(BOOST_PP_BOOL(p(486, s)), p, o, s) +# define BOOST_PP_WHILE_486(p, o, s) BOOST_PP_WHILE_486_C(BOOST_PP_BOOL(p(487, s)), p, o, s) +# define BOOST_PP_WHILE_487(p, o, s) BOOST_PP_WHILE_487_C(BOOST_PP_BOOL(p(488, s)), p, o, s) +# define BOOST_PP_WHILE_488(p, o, s) BOOST_PP_WHILE_488_C(BOOST_PP_BOOL(p(489, s)), p, o, s) +# define BOOST_PP_WHILE_489(p, o, s) BOOST_PP_WHILE_489_C(BOOST_PP_BOOL(p(490, s)), p, o, s) +# define BOOST_PP_WHILE_490(p, o, s) BOOST_PP_WHILE_490_C(BOOST_PP_BOOL(p(491, s)), p, o, s) +# define BOOST_PP_WHILE_491(p, o, s) BOOST_PP_WHILE_491_C(BOOST_PP_BOOL(p(492, s)), p, o, s) +# define BOOST_PP_WHILE_492(p, o, s) BOOST_PP_WHILE_492_C(BOOST_PP_BOOL(p(493, s)), p, o, s) +# define BOOST_PP_WHILE_493(p, o, s) BOOST_PP_WHILE_493_C(BOOST_PP_BOOL(p(494, s)), p, o, s) +# define BOOST_PP_WHILE_494(p, o, s) BOOST_PP_WHILE_494_C(BOOST_PP_BOOL(p(495, s)), p, o, s) +# define BOOST_PP_WHILE_495(p, o, s) BOOST_PP_WHILE_495_C(BOOST_PP_BOOL(p(496, s)), p, o, s) +# define BOOST_PP_WHILE_496(p, o, s) BOOST_PP_WHILE_496_C(BOOST_PP_BOOL(p(497, s)), p, o, s) +# define BOOST_PP_WHILE_497(p, o, s) BOOST_PP_WHILE_497_C(BOOST_PP_BOOL(p(498, s)), p, o, s) +# define BOOST_PP_WHILE_498(p, o, s) BOOST_PP_WHILE_498_C(BOOST_PP_BOOL(p(499, s)), p, o, s) +# define BOOST_PP_WHILE_499(p, o, s) BOOST_PP_WHILE_499_C(BOOST_PP_BOOL(p(500, s)), p, o, s) +# define BOOST_PP_WHILE_500(p, o, s) BOOST_PP_WHILE_500_C(BOOST_PP_BOOL(p(501, s)), p, o, s) +# define BOOST_PP_WHILE_501(p, o, s) BOOST_PP_WHILE_501_C(BOOST_PP_BOOL(p(502, s)), p, o, s) +# define BOOST_PP_WHILE_502(p, o, s) BOOST_PP_WHILE_502_C(BOOST_PP_BOOL(p(503, s)), p, o, s) +# define BOOST_PP_WHILE_503(p, o, s) BOOST_PP_WHILE_503_C(BOOST_PP_BOOL(p(504, s)), p, o, s) +# define BOOST_PP_WHILE_504(p, o, s) BOOST_PP_WHILE_504_C(BOOST_PP_BOOL(p(505, s)), p, o, s) +# define BOOST_PP_WHILE_505(p, o, s) BOOST_PP_WHILE_505_C(BOOST_PP_BOOL(p(506, s)), p, o, s) +# define BOOST_PP_WHILE_506(p, o, s) BOOST_PP_WHILE_506_C(BOOST_PP_BOOL(p(507, s)), p, o, s) +# define BOOST_PP_WHILE_507(p, o, s) BOOST_PP_WHILE_507_C(BOOST_PP_BOOL(p(508, s)), p, o, s) +# define BOOST_PP_WHILE_508(p, o, s) BOOST_PP_WHILE_508_C(BOOST_PP_BOOL(p(509, s)), p, o, s) +# define BOOST_PP_WHILE_509(p, o, s) BOOST_PP_WHILE_509_C(BOOST_PP_BOOL(p(510, s)), p, o, s) +# define BOOST_PP_WHILE_510(p, o, s) BOOST_PP_WHILE_510_C(BOOST_PP_BOOL(p(511, s)), p, o, s) +# define BOOST_PP_WHILE_511(p, o, s) BOOST_PP_WHILE_511_C(BOOST_PP_BOOL(p(512, s)), p, o, s) +# define BOOST_PP_WHILE_512(p, o, s) BOOST_PP_WHILE_512_C(BOOST_PP_BOOL(p(513, s)), p, o, s) +# +# define BOOST_PP_WHILE_257_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_258, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(258, s)) +# define BOOST_PP_WHILE_258_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_259, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(259, s)) +# define BOOST_PP_WHILE_259_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_260, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(260, s)) +# define BOOST_PP_WHILE_260_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_261, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(261, s)) +# define BOOST_PP_WHILE_261_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_262, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(262, s)) +# define BOOST_PP_WHILE_262_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_263, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(263, s)) +# define BOOST_PP_WHILE_263_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_264, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(264, s)) +# define BOOST_PP_WHILE_264_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_265, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(265, s)) +# define BOOST_PP_WHILE_265_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_266, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(266, s)) +# define BOOST_PP_WHILE_266_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_267, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(267, s)) +# define BOOST_PP_WHILE_267_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_268, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(268, s)) +# define BOOST_PP_WHILE_268_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_269, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(269, s)) +# define BOOST_PP_WHILE_269_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_270, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(270, s)) +# define BOOST_PP_WHILE_270_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_271, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(271, s)) +# define BOOST_PP_WHILE_271_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_272, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(272, s)) +# define BOOST_PP_WHILE_272_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_273, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(273, s)) +# define BOOST_PP_WHILE_273_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_274, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(274, s)) +# define BOOST_PP_WHILE_274_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_275, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(275, s)) +# define BOOST_PP_WHILE_275_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_276, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(276, s)) +# define BOOST_PP_WHILE_276_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_277, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(277, s)) +# define BOOST_PP_WHILE_277_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_278, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(278, s)) +# define BOOST_PP_WHILE_278_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_279, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(279, s)) +# define BOOST_PP_WHILE_279_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_280, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(280, s)) +# define BOOST_PP_WHILE_280_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_281, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(281, s)) +# define BOOST_PP_WHILE_281_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_282, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(282, s)) +# define BOOST_PP_WHILE_282_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_283, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(283, s)) +# define BOOST_PP_WHILE_283_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_284, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(284, s)) +# define BOOST_PP_WHILE_284_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_285, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(285, s)) +# define BOOST_PP_WHILE_285_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_286, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(286, s)) +# define BOOST_PP_WHILE_286_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_287, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(287, s)) +# define BOOST_PP_WHILE_287_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_288, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(288, s)) +# define BOOST_PP_WHILE_288_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_289, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(289, s)) +# define BOOST_PP_WHILE_289_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_290, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(290, s)) +# define BOOST_PP_WHILE_290_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_291, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(291, s)) +# define BOOST_PP_WHILE_291_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_292, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(292, s)) +# define BOOST_PP_WHILE_292_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_293, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(293, s)) +# define BOOST_PP_WHILE_293_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_294, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(294, s)) +# define BOOST_PP_WHILE_294_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_295, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(295, s)) +# define BOOST_PP_WHILE_295_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_296, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(296, s)) +# define BOOST_PP_WHILE_296_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_297, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(297, s)) +# define BOOST_PP_WHILE_297_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_298, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(298, s)) +# define BOOST_PP_WHILE_298_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_299, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(299, s)) +# define BOOST_PP_WHILE_299_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_300, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(300, s)) +# define BOOST_PP_WHILE_300_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_301, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(301, s)) +# define BOOST_PP_WHILE_301_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_302, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(302, s)) +# define BOOST_PP_WHILE_302_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_303, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(303, s)) +# define BOOST_PP_WHILE_303_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_304, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(304, s)) +# define BOOST_PP_WHILE_304_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_305, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(305, s)) +# define BOOST_PP_WHILE_305_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_306, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(306, s)) +# define BOOST_PP_WHILE_306_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_307, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(307, s)) +# define BOOST_PP_WHILE_307_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_308, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(308, s)) +# define BOOST_PP_WHILE_308_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_309, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(309, s)) +# define BOOST_PP_WHILE_309_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_310, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(310, s)) +# define BOOST_PP_WHILE_310_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_311, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(311, s)) +# define BOOST_PP_WHILE_311_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_312, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(312, s)) +# define BOOST_PP_WHILE_312_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_313, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(313, s)) +# define BOOST_PP_WHILE_313_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_314, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(314, s)) +# define BOOST_PP_WHILE_314_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_315, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(315, s)) +# define BOOST_PP_WHILE_315_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_316, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(316, s)) +# define BOOST_PP_WHILE_316_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_317, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(317, s)) +# define BOOST_PP_WHILE_317_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_318, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(318, s)) +# define BOOST_PP_WHILE_318_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_319, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(319, s)) +# define BOOST_PP_WHILE_319_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_320, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(320, s)) +# define BOOST_PP_WHILE_320_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_321, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(321, s)) +# define BOOST_PP_WHILE_321_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_322, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(322, s)) +# define BOOST_PP_WHILE_322_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_323, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(323, s)) +# define BOOST_PP_WHILE_323_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_324, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(324, s)) +# define BOOST_PP_WHILE_324_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_325, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(325, s)) +# define BOOST_PP_WHILE_325_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_326, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(326, s)) +# define BOOST_PP_WHILE_326_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_327, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(327, s)) +# define BOOST_PP_WHILE_327_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_328, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(328, s)) +# define BOOST_PP_WHILE_328_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_329, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(329, s)) +# define BOOST_PP_WHILE_329_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_330, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(330, s)) +# define BOOST_PP_WHILE_330_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_331, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(331, s)) +# define BOOST_PP_WHILE_331_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_332, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(332, s)) +# define BOOST_PP_WHILE_332_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_333, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(333, s)) +# define BOOST_PP_WHILE_333_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_334, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(334, s)) +# define BOOST_PP_WHILE_334_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_335, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(335, s)) +# define BOOST_PP_WHILE_335_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_336, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(336, s)) +# define BOOST_PP_WHILE_336_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_337, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(337, s)) +# define BOOST_PP_WHILE_337_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_338, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(338, s)) +# define BOOST_PP_WHILE_338_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_339, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(339, s)) +# define BOOST_PP_WHILE_339_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_340, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(340, s)) +# define BOOST_PP_WHILE_340_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_341, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(341, s)) +# define BOOST_PP_WHILE_341_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_342, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(342, s)) +# define BOOST_PP_WHILE_342_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_343, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(343, s)) +# define BOOST_PP_WHILE_343_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_344, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(344, s)) +# define BOOST_PP_WHILE_344_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_345, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(345, s)) +# define BOOST_PP_WHILE_345_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_346, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(346, s)) +# define BOOST_PP_WHILE_346_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_347, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(347, s)) +# define BOOST_PP_WHILE_347_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_348, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(348, s)) +# define BOOST_PP_WHILE_348_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_349, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(349, s)) +# define BOOST_PP_WHILE_349_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_350, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(350, s)) +# define BOOST_PP_WHILE_350_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_351, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(351, s)) +# define BOOST_PP_WHILE_351_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_352, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(352, s)) +# define BOOST_PP_WHILE_352_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_353, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(353, s)) +# define BOOST_PP_WHILE_353_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_354, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(354, s)) +# define BOOST_PP_WHILE_354_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_355, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(355, s)) +# define BOOST_PP_WHILE_355_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_356, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(356, s)) +# define BOOST_PP_WHILE_356_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_357, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(357, s)) +# define BOOST_PP_WHILE_357_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_358, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(358, s)) +# define BOOST_PP_WHILE_358_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_359, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(359, s)) +# define BOOST_PP_WHILE_359_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_360, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(360, s)) +# define BOOST_PP_WHILE_360_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_361, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(361, s)) +# define BOOST_PP_WHILE_361_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_362, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(362, s)) +# define BOOST_PP_WHILE_362_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_363, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(363, s)) +# define BOOST_PP_WHILE_363_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_364, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(364, s)) +# define BOOST_PP_WHILE_364_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_365, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(365, s)) +# define BOOST_PP_WHILE_365_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_366, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(366, s)) +# define BOOST_PP_WHILE_366_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_367, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(367, s)) +# define BOOST_PP_WHILE_367_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_368, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(368, s)) +# define BOOST_PP_WHILE_368_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_369, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(369, s)) +# define BOOST_PP_WHILE_369_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_370, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(370, s)) +# define BOOST_PP_WHILE_370_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_371, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(371, s)) +# define BOOST_PP_WHILE_371_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_372, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(372, s)) +# define BOOST_PP_WHILE_372_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_373, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(373, s)) +# define BOOST_PP_WHILE_373_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_374, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(374, s)) +# define BOOST_PP_WHILE_374_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_375, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(375, s)) +# define BOOST_PP_WHILE_375_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_376, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(376, s)) +# define BOOST_PP_WHILE_376_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_377, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(377, s)) +# define BOOST_PP_WHILE_377_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_378, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(378, s)) +# define BOOST_PP_WHILE_378_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_379, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(379, s)) +# define BOOST_PP_WHILE_379_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_380, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(380, s)) +# define BOOST_PP_WHILE_380_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_381, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(381, s)) +# define BOOST_PP_WHILE_381_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_382, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(382, s)) +# define BOOST_PP_WHILE_382_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_383, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(383, s)) +# define BOOST_PP_WHILE_383_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_384, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(384, s)) +# define BOOST_PP_WHILE_384_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_385, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(385, s)) +# define BOOST_PP_WHILE_385_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_386, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(386, s)) +# define BOOST_PP_WHILE_386_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_387, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(387, s)) +# define BOOST_PP_WHILE_387_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_388, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(388, s)) +# define BOOST_PP_WHILE_388_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_389, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(389, s)) +# define BOOST_PP_WHILE_389_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_390, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(390, s)) +# define BOOST_PP_WHILE_390_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_391, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(391, s)) +# define BOOST_PP_WHILE_391_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_392, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(392, s)) +# define BOOST_PP_WHILE_392_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_393, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(393, s)) +# define BOOST_PP_WHILE_393_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_394, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(394, s)) +# define BOOST_PP_WHILE_394_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_395, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(395, s)) +# define BOOST_PP_WHILE_395_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_396, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(396, s)) +# define BOOST_PP_WHILE_396_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_397, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(397, s)) +# define BOOST_PP_WHILE_397_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_398, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(398, s)) +# define BOOST_PP_WHILE_398_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_399, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(399, s)) +# define BOOST_PP_WHILE_399_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_400, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(400, s)) +# define BOOST_PP_WHILE_400_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_401, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(401, s)) +# define BOOST_PP_WHILE_401_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_402, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(402, s)) +# define BOOST_PP_WHILE_402_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_403, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(403, s)) +# define BOOST_PP_WHILE_403_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_404, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(404, s)) +# define BOOST_PP_WHILE_404_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_405, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(405, s)) +# define BOOST_PP_WHILE_405_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_406, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(406, s)) +# define BOOST_PP_WHILE_406_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_407, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(407, s)) +# define BOOST_PP_WHILE_407_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_408, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(408, s)) +# define BOOST_PP_WHILE_408_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_409, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(409, s)) +# define BOOST_PP_WHILE_409_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_410, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(410, s)) +# define BOOST_PP_WHILE_410_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_411, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(411, s)) +# define BOOST_PP_WHILE_411_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_412, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(412, s)) +# define BOOST_PP_WHILE_412_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_413, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(413, s)) +# define BOOST_PP_WHILE_413_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_414, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(414, s)) +# define BOOST_PP_WHILE_414_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_415, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(415, s)) +# define BOOST_PP_WHILE_415_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_416, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(416, s)) +# define BOOST_PP_WHILE_416_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_417, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(417, s)) +# define BOOST_PP_WHILE_417_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_418, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(418, s)) +# define BOOST_PP_WHILE_418_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_419, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(419, s)) +# define BOOST_PP_WHILE_419_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_420, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(420, s)) +# define BOOST_PP_WHILE_420_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_421, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(421, s)) +# define BOOST_PP_WHILE_421_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_422, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(422, s)) +# define BOOST_PP_WHILE_422_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_423, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(423, s)) +# define BOOST_PP_WHILE_423_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_424, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(424, s)) +# define BOOST_PP_WHILE_424_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_425, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(425, s)) +# define BOOST_PP_WHILE_425_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_426, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(426, s)) +# define BOOST_PP_WHILE_426_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_427, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(427, s)) +# define BOOST_PP_WHILE_427_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_428, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(428, s)) +# define BOOST_PP_WHILE_428_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_429, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(429, s)) +# define BOOST_PP_WHILE_429_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_430, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(430, s)) +# define BOOST_PP_WHILE_430_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_431, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(431, s)) +# define BOOST_PP_WHILE_431_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_432, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(432, s)) +# define BOOST_PP_WHILE_432_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_433, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(433, s)) +# define BOOST_PP_WHILE_433_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_434, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(434, s)) +# define BOOST_PP_WHILE_434_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_435, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(435, s)) +# define BOOST_PP_WHILE_435_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_436, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(436, s)) +# define BOOST_PP_WHILE_436_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_437, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(437, s)) +# define BOOST_PP_WHILE_437_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_438, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(438, s)) +# define BOOST_PP_WHILE_438_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_439, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(439, s)) +# define BOOST_PP_WHILE_439_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_440, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(440, s)) +# define BOOST_PP_WHILE_440_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_441, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(441, s)) +# define BOOST_PP_WHILE_441_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_442, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(442, s)) +# define BOOST_PP_WHILE_442_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_443, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(443, s)) +# define BOOST_PP_WHILE_443_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_444, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(444, s)) +# define BOOST_PP_WHILE_444_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_445, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(445, s)) +# define BOOST_PP_WHILE_445_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_446, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(446, s)) +# define BOOST_PP_WHILE_446_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_447, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(447, s)) +# define BOOST_PP_WHILE_447_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_448, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(448, s)) +# define BOOST_PP_WHILE_448_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_449, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(449, s)) +# define BOOST_PP_WHILE_449_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_450, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(450, s)) +# define BOOST_PP_WHILE_450_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_451, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(451, s)) +# define BOOST_PP_WHILE_451_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_452, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(452, s)) +# define BOOST_PP_WHILE_452_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_453, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(453, s)) +# define BOOST_PP_WHILE_453_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_454, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(454, s)) +# define BOOST_PP_WHILE_454_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_455, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(455, s)) +# define BOOST_PP_WHILE_455_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_456, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(456, s)) +# define BOOST_PP_WHILE_456_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_457, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(457, s)) +# define BOOST_PP_WHILE_457_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_458, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(458, s)) +# define BOOST_PP_WHILE_458_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_459, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(459, s)) +# define BOOST_PP_WHILE_459_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_460, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(460, s)) +# define BOOST_PP_WHILE_460_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_461, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(461, s)) +# define BOOST_PP_WHILE_461_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_462, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(462, s)) +# define BOOST_PP_WHILE_462_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_463, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(463, s)) +# define BOOST_PP_WHILE_463_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_464, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(464, s)) +# define BOOST_PP_WHILE_464_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_465, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(465, s)) +# define BOOST_PP_WHILE_465_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_466, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(466, s)) +# define BOOST_PP_WHILE_466_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_467, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(467, s)) +# define BOOST_PP_WHILE_467_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_468, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(468, s)) +# define BOOST_PP_WHILE_468_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_469, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(469, s)) +# define BOOST_PP_WHILE_469_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_470, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(470, s)) +# define BOOST_PP_WHILE_470_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_471, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(471, s)) +# define BOOST_PP_WHILE_471_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_472, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(472, s)) +# define BOOST_PP_WHILE_472_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_473, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(473, s)) +# define BOOST_PP_WHILE_473_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_474, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(474, s)) +# define BOOST_PP_WHILE_474_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_475, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(475, s)) +# define BOOST_PP_WHILE_475_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_476, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(476, s)) +# define BOOST_PP_WHILE_476_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_477, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(477, s)) +# define BOOST_PP_WHILE_477_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_478, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(478, s)) +# define BOOST_PP_WHILE_478_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_479, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(479, s)) +# define BOOST_PP_WHILE_479_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_480, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(480, s)) +# define BOOST_PP_WHILE_480_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_481, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(481, s)) +# define BOOST_PP_WHILE_481_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_482, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(482, s)) +# define BOOST_PP_WHILE_482_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_483, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(483, s)) +# define BOOST_PP_WHILE_483_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_484, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(484, s)) +# define BOOST_PP_WHILE_484_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_485, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(485, s)) +# define BOOST_PP_WHILE_485_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_486, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(486, s)) +# define BOOST_PP_WHILE_486_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_487, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(487, s)) +# define BOOST_PP_WHILE_487_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_488, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(488, s)) +# define BOOST_PP_WHILE_488_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_489, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(489, s)) +# define BOOST_PP_WHILE_489_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_490, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(490, s)) +# define BOOST_PP_WHILE_490_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_491, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(491, s)) +# define BOOST_PP_WHILE_491_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_492, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(492, s)) +# define BOOST_PP_WHILE_492_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_493, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(493, s)) +# define BOOST_PP_WHILE_493_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_494, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(494, s)) +# define BOOST_PP_WHILE_494_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_495, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(495, s)) +# define BOOST_PP_WHILE_495_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_496, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(496, s)) +# define BOOST_PP_WHILE_496_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_497, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(497, s)) +# define BOOST_PP_WHILE_497_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_498, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(498, s)) +# define BOOST_PP_WHILE_498_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_499, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(499, s)) +# define BOOST_PP_WHILE_499_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_500, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(500, s)) +# define BOOST_PP_WHILE_500_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_501, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(501, s)) +# define BOOST_PP_WHILE_501_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_502, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(502, s)) +# define BOOST_PP_WHILE_502_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_503, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(503, s)) +# define BOOST_PP_WHILE_503_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_504, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(504, s)) +# define BOOST_PP_WHILE_504_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_505, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(505, s)) +# define BOOST_PP_WHILE_505_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_506, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(506, s)) +# define BOOST_PP_WHILE_506_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_507, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(507, s)) +# define BOOST_PP_WHILE_507_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_508, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(508, s)) +# define BOOST_PP_WHILE_508_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_509, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(509, s)) +# define BOOST_PP_WHILE_509_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_510, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(510, s)) +# define BOOST_PP_WHILE_510_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_511, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(511, s)) +# define BOOST_PP_WHILE_511_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_512, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(512, s)) +# define BOOST_PP_WHILE_512_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_513, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(513, s)) +# +# endif diff --git a/src/boost/boost/preprocessor/control/detail/while.hpp b/src/boost/boost/preprocessor/control/detail/while.hpp index 1196c91f5..f1ca9091a 100644 --- a/src/boost/boost/preprocessor/control/detail/while.hpp +++ b/src/boost/boost/preprocessor/control/detail/while.hpp @@ -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_WHILE_HPP # define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # include @@ -532,5 +537,27 @@ # define BOOST_PP_WHILE_255_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(256, s)) # define BOOST_PP_WHILE_256_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(257, s)) # +# else +# +# include +# include +# include +# +# include +# +# if BOOST_PP_LIMIT_WHILE == 256 +# include +# elif BOOST_PP_LIMIT_WHILE == 512 +# include +# include +# elif BOOST_PP_LIMIT_WHILE == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit +# endif +# +# endif # # endif diff --git a/src/boost/boost/preprocessor/control/limits/while_1024.hpp b/src/boost/boost/preprocessor/control/limits/while_1024.hpp new file mode 100644 index 000000000..8740887f4 --- /dev/null +++ b/src/boost/boost/preprocessor/control/limits/while_1024.hpp @@ -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_CONTROL_WHILE_1024_HPP +# define BOOST_PREPROCESSOR_CONTROL_WHILE_1024_HPP +# +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_513(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_514(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_515(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_516(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_517(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_518(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_519(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_520(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_521(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_522(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_523(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_524(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_525(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_526(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_527(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_528(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_529(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_530(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_531(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_532(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_533(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_534(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_535(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_536(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_537(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_538(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_539(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_540(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_541(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_542(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_543(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_544(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_545(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_546(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_547(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_548(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_549(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_550(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_551(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_552(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_553(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_554(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_555(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_556(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_557(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_558(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_559(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_560(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_561(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_562(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_563(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_564(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_565(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_566(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_567(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_568(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_569(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_570(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_571(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_572(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_573(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_574(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_575(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_576(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_577(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_578(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_579(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_580(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_581(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_582(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_583(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_584(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_585(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_586(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_587(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_588(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_589(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_590(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_591(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_592(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_593(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_594(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_595(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_596(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_597(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_598(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_599(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_600(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_601(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_602(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_603(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_604(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_605(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_606(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_607(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_608(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_609(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_610(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_611(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_612(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_613(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_614(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_615(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_616(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_617(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_618(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_619(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_620(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_621(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_622(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_623(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_624(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_625(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_626(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_627(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_628(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_629(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_630(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_631(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_632(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_633(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_634(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_635(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_636(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_637(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_638(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_639(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_640(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_641(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_642(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_643(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_644(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_645(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_646(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_647(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_648(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_649(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_650(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_651(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_652(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_653(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_654(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_655(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_656(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_657(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_658(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_659(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_660(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_661(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_662(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_663(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_664(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_665(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_666(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_667(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_668(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_669(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_670(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_671(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_672(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_673(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_674(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_675(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_676(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_677(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_678(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_679(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_680(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_681(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_682(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_683(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_684(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_685(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_686(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_687(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_688(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_689(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_690(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_691(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_692(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_693(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_694(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_695(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_696(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_697(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_698(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_699(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_700(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_701(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_702(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_703(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_704(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_705(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_706(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_707(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_708(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_709(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_710(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_711(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_712(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_713(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_714(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_715(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_716(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_717(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_718(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_719(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_720(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_721(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_722(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_723(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_724(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_725(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_726(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_727(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_728(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_729(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_730(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_731(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_732(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_733(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_734(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_735(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_736(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_737(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_738(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_739(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_740(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_741(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_742(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_743(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_744(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_745(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_746(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_747(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_748(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_749(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_750(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_751(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_752(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_753(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_754(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_755(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_756(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_757(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_758(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_759(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_760(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_761(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_762(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_763(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_764(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_765(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_766(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_767(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_768(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_769(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_770(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_771(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_772(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_773(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_774(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_775(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_776(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_777(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_778(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_779(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_780(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_781(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_782(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_783(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_784(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_785(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_786(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_787(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_788(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_789(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_790(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_791(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_792(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_793(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_794(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_795(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_796(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_797(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_798(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_799(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_800(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_801(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_802(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_803(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_804(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_805(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_806(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_807(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_808(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_809(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_810(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_811(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_812(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_813(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_814(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_815(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_816(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_817(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_818(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_819(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_820(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_821(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_822(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_823(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_824(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_825(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_826(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_827(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_828(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_829(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_830(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_831(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_832(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_833(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_834(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_835(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_836(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_837(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_838(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_839(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_840(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_841(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_842(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_843(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_844(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_845(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_846(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_847(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_848(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_849(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_850(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_851(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_852(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_853(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_854(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_855(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_856(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_857(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_858(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_859(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_860(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_861(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_862(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_863(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_864(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_865(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_866(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_867(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_868(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_869(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_870(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_871(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_872(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_873(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_874(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_875(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_876(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_877(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_878(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_879(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_880(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_881(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_882(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_883(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_884(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_885(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_886(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_887(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_888(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_889(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_890(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_891(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_892(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_893(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_894(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_895(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_896(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_897(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_898(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_899(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_900(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_901(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_902(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_903(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_904(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_905(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_906(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_907(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_908(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_909(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_910(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_911(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_912(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_913(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_914(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_915(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_916(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_917(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_918(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_919(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_920(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_921(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_922(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_923(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_924(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_925(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_926(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_927(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_928(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_929(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_930(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_931(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_932(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_933(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_934(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_935(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_936(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_937(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_938(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_939(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_940(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_941(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_942(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_943(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_944(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_945(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_946(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_947(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_948(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_949(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_950(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_951(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_952(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_953(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_954(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_955(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_956(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_957(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_958(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_959(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_960(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_961(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_962(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_963(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_964(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_965(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_966(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_967(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_968(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_969(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_970(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_971(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_972(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_973(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_974(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_975(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_976(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_977(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_978(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_979(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_980(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_981(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_982(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_983(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_984(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_985(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_986(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_987(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_988(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_989(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_990(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_991(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_992(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_993(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_994(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_995(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_996(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_997(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_998(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_999(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1000(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1001(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1002(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1003(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1004(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1005(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1006(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1007(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1008(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1009(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1010(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1011(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1012(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1013(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1014(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1015(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1016(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1017(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1018(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1019(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1020(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1021(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1022(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1023(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1024(p, o, s) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/control/limits/while_256.hpp b/src/boost/boost/preprocessor/control/limits/while_256.hpp new file mode 100644 index 000000000..3bdd10398 --- /dev/null +++ b/src/boost/boost/preprocessor/control/limits/while_256.hpp @@ -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_CONTROL_WHILE_256_HPP +# define BOOST_PREPROCESSOR_CONTROL_WHILE_256_HPP +# +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_0(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_2(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_3(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_4(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_5(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_6(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_7(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_8(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_9(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_10(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_11(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_12(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_13(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_14(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_15(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_16(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_17(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_18(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_19(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_20(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_21(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_22(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_23(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_24(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_25(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_26(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_27(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_28(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_29(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_30(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_31(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_32(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_33(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_34(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_35(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_36(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_37(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_38(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_39(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_40(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_41(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_42(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_43(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_44(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_45(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_46(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_47(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_48(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_49(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_50(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_51(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_52(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_53(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_54(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_55(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_56(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_57(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_58(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_59(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_60(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_61(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_62(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_63(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_64(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_65(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_66(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_67(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_68(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_69(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_70(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_71(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_72(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_73(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_74(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_75(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_76(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_77(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_78(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_79(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_80(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_81(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_82(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_83(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_84(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_85(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_86(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_87(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_88(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_89(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_90(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_91(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_92(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_93(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_94(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_95(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_96(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_97(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_98(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_99(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_100(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_101(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_102(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_103(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_104(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_105(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_106(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_107(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_108(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_109(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_110(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_111(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_112(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_113(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_114(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_115(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_116(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_117(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_118(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_119(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_120(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_121(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_122(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_123(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_124(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_125(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_126(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_127(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_128(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_129(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_130(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_131(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_132(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_133(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_134(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_135(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_136(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_137(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_138(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_139(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_140(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_141(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_142(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_143(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_144(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_145(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_146(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_147(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_148(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_149(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_150(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_151(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_152(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_153(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_154(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_155(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_156(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_157(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_158(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_159(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_160(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_161(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_162(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_163(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_164(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_165(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_166(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_167(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_168(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_169(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_170(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_171(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_172(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_173(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_174(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_175(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_176(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_177(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_178(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_179(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_180(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_181(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_182(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_183(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_184(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_185(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_186(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_187(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_188(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_189(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_190(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_191(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_192(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_193(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_194(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_195(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_196(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_197(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_198(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_199(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_200(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_201(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_202(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_203(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_204(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_205(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_206(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_207(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_208(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_209(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_210(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_211(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_212(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_213(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_214(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_215(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_216(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_217(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_218(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_219(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_220(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_221(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_222(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_223(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_224(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_225(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_226(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_227(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_228(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_229(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_230(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_231(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_232(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_233(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_234(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_235(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_236(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_237(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_238(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_239(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_240(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_241(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_242(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_243(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_244(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_245(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_246(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_247(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_248(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_249(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_250(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_251(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_252(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_253(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_254(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_255(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_256(p, o, s) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/control/limits/while_512.hpp b/src/boost/boost/preprocessor/control/limits/while_512.hpp new file mode 100644 index 000000000..252c71ea5 --- /dev/null +++ b/src/boost/boost/preprocessor/control/limits/while_512.hpp @@ -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_CONTROL_WHILE_512_HPP +# define BOOST_PREPROCESSOR_CONTROL_WHILE_512_HPP +# +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_257(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_258(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_259(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_260(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_261(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_262(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_263(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_264(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_265(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_266(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_267(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_268(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_269(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_270(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_271(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_272(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_273(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_274(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_275(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_276(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_277(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_278(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_279(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_280(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_281(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_282(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_283(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_284(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_285(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_286(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_287(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_288(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_289(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_290(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_291(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_292(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_293(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_294(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_295(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_296(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_297(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_298(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_299(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_300(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_301(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_302(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_303(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_304(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_305(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_306(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_307(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_308(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_309(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_310(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_311(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_312(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_313(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_314(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_315(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_316(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_317(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_318(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_319(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_320(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_321(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_322(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_323(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_324(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_325(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_326(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_327(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_328(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_329(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_330(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_331(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_332(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_333(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_334(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_335(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_336(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_337(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_338(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_339(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_340(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_341(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_342(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_343(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_344(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_345(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_346(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_347(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_348(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_349(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_350(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_351(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_352(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_353(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_354(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_355(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_356(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_357(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_358(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_359(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_360(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_361(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_362(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_363(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_364(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_365(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_366(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_367(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_368(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_369(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_370(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_371(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_372(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_373(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_374(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_375(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_376(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_377(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_378(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_379(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_380(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_381(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_382(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_383(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_384(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_385(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_386(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_387(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_388(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_389(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_390(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_391(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_392(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_393(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_394(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_395(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_396(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_397(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_398(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_399(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_400(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_401(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_402(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_403(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_404(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_405(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_406(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_407(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_408(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_409(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_410(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_411(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_412(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_413(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_414(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_415(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_416(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_417(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_418(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_419(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_420(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_421(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_422(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_423(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_424(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_425(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_426(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_427(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_428(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_429(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_430(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_431(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_432(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_433(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_434(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_435(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_436(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_437(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_438(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_439(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_440(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_441(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_442(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_443(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_444(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_445(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_446(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_447(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_448(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_449(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_450(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_451(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_452(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_453(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_454(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_455(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_456(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_457(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_458(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_459(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_460(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_461(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_462(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_463(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_464(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_465(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_466(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_467(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_468(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_469(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_470(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_471(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_472(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_473(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_474(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_475(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_476(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_477(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_478(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_479(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_480(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_481(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_482(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_483(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_484(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_485(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_486(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_487(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_488(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_489(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_490(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_491(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_492(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_493(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_494(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_495(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_496(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_497(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_498(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_499(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_500(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_501(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_502(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_503(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_504(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_505(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_506(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_507(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_508(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_509(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_510(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_511(p, o, s) 0 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_512(p, o, s) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/control/while.hpp b/src/boost/boost/preprocessor/control/while.hpp index 31f97467f..14ba4f1cb 100644 --- a/src/boost/boost/preprocessor/control/while.hpp +++ b/src/boost/boost/preprocessor/control/while.hpp @@ -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_WHILE_HPP # define BOOST_PREPROCESSOR_CONTROL_WHILE_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # include @@ -309,4 +314,74 @@ # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_255(p, o, s) 0 # define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_256(p, o, s) 0 # +# else +# +# include +# include +# include +# include +# include +# include +# include +# include +# +# /* BOOST_PP_WHILE */ +# +# if 0 +# define BOOST_PP_WHILE(pred, op, state) +# endif +# +# if BOOST_PP_LIMIT_WHILE == 256 +# define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))) +# elif BOOST_PP_LIMIT_WHILE == 512 +# define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512))) +# elif BOOST_PP_LIMIT_WHILE == 1024 +# define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 1024))) +# else +# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit +# endif +# +# define BOOST_PP_WHILE_P(n) BOOST_PP_WHILE_P_DEC(BOOST_PP_DEC(n)) +# +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() +# define BOOST_PP_WHILE_P_DEC(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_CAT(BOOST_PP_WHILE_ , n)(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_ , n)(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_CHECK_, BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_ , n)(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)))) +# else +# define BOOST_PP_WHILE_P_DEC(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_CAT(BOOST_PP_WHILE_ , n)(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_ , n)(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL))) +# endif +# +# define BOOST_PP_WHILE_F(d, _) 0 +# +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() +# include +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() +# include +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC() +# include +# else +# include +# endif +# +# if BOOST_PP_LIMIT_WHILE == 256 +# define BOOST_PP_WHILE_257(p, o, s) BOOST_PP_ERROR(0x0001) +# elif BOOST_PP_LIMIT_WHILE == 512 +# define BOOST_PP_WHILE_513(p, o, s) BOOST_PP_ERROR(0x0001) +# elif BOOST_PP_LIMIT_WHILE == 1024 +# define BOOST_PP_WHILE_1025(p, o, s) BOOST_PP_ERROR(0x0001) +# endif +# +# define BOOST_PP_WHILE_CHECK_BOOST_PP_NIL 1 +# +# if BOOST_PP_LIMIT_WHILE == 256 +# include +# elif BOOST_PP_LIMIT_WHILE == 512 +# include +# include +# elif BOOST_PP_LIMIT_WHILE == 1024 +# include +# include +# include +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/detail/auto_rec.hpp b/src/boost/boost/preprocessor/detail/auto_rec.hpp index 9e706fa74..bb18b862b 100644 --- a/src/boost/boost/preprocessor/detail/auto_rec.hpp +++ b/src/boost/boost/preprocessor/detail/auto_rec.hpp @@ -7,10 +7,14 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # include # +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC() # include # else @@ -290,4 +294,41 @@ # define BOOST_PP_NODE_255(p) BOOST_PP_IIF(p(255), 255, 256) # # endif +# +# endif +# +# else +# +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC() +# include +# else +# +# ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP +# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP +# +# /* BOOST_PP_AUTO_REC */ +# +# include +# +# define BOOST_PP_AUTO_REC(pred, n) BOOST_PP_NODE_ENTRY_ ## n(pred) +# +# include +# +# if BOOST_PP_LIMIT_MAG == 256 +# include +# elif BOOST_PP_LIMIT_MAG == 512 +# include +# include +# elif BOOST_PP_LIMIT_MAG == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_MAG limit +# endif +# +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/detail/dmc/auto_rec.hpp b/src/boost/boost/preprocessor/detail/dmc/auto_rec.hpp index dda0ba9f7..47110c7be 100644 --- a/src/boost/boost/preprocessor/detail/dmc/auto_rec.hpp +++ b/src/boost/boost/preprocessor/detail/dmc/auto_rec.hpp @@ -9,8 +9,8 @@ # # /* See http://www.boost.org for most recent version. */ # -# ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP -# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP +# ifndef BOOST_PREPROCESSOR_DETAIL_DMC_AUTO_REC_HPP +# define BOOST_PREPROCESSOR_DETAIL_DMC_AUTO_REC_HPP # # include # diff --git a/src/boost/boost/preprocessor/detail/limits/auto_rec_1024.hpp b/src/boost/boost/preprocessor/detail/limits/auto_rec_1024.hpp new file mode 100644 index 000000000..924e4f7b4 --- /dev/null +++ b/src/boost/boost/preprocessor/detail/limits/auto_rec_1024.hpp @@ -0,0 +1,532 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_1024_HPP +# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_1024_HPP +# +# define BOOST_PP_NODE_ENTRY_1024(p) BOOST_PP_NODE_512(p)(p)(p)(p)(p)(p)(p)(p)(p)(p) +# +# define BOOST_PP_NODE_512(p) BOOST_PP_IIF(p(512), BOOST_PP_NODE_256, BOOST_PP_NODE_768) +# define BOOST_PP_NODE_768(p) BOOST_PP_IIF(p(768), BOOST_PP_NODE_640, BOOST_PP_NODE_896) +# define BOOST_PP_NODE_640(p) BOOST_PP_IIF(p(640), BOOST_PP_NODE_576, BOOST_PP_NODE_704) +# define BOOST_PP_NODE_576(p) BOOST_PP_IIF(p(576), BOOST_PP_NODE_544, BOOST_PP_NODE_608) +# define BOOST_PP_NODE_544(p) BOOST_PP_IIF(p(544), BOOST_PP_NODE_528, BOOST_PP_NODE_560) +# define BOOST_PP_NODE_528(p) BOOST_PP_IIF(p(528), BOOST_PP_NODE_520, BOOST_PP_NODE_536) +# define BOOST_PP_NODE_520(p) BOOST_PP_IIF(p(520), BOOST_PP_NODE_516, BOOST_PP_NODE_524) +# define BOOST_PP_NODE_516(p) BOOST_PP_IIF(p(516), BOOST_PP_NODE_514, BOOST_PP_NODE_518) +# define BOOST_PP_NODE_514(p) BOOST_PP_IIF(p(514), BOOST_PP_NODE_513, BOOST_PP_NODE_515) +# define BOOST_PP_NODE_513(p) BOOST_PP_IIF(p(513), 513, 514) +# define BOOST_PP_NODE_515(p) BOOST_PP_IIF(p(515), 515, 516) +# define BOOST_PP_NODE_518(p) BOOST_PP_IIF(p(518), BOOST_PP_NODE_517, BOOST_PP_NODE_519) +# define BOOST_PP_NODE_517(p) BOOST_PP_IIF(p(517), 517, 518) +# define BOOST_PP_NODE_519(p) BOOST_PP_IIF(p(519), 519, 520) +# define BOOST_PP_NODE_524(p) BOOST_PP_IIF(p(524), BOOST_PP_NODE_522, BOOST_PP_NODE_526) +# define BOOST_PP_NODE_522(p) BOOST_PP_IIF(p(522), BOOST_PP_NODE_521, BOOST_PP_NODE_523) +# define BOOST_PP_NODE_521(p) BOOST_PP_IIF(p(521), 521, 522) +# define BOOST_PP_NODE_523(p) BOOST_PP_IIF(p(523), 523, 524) +# define BOOST_PP_NODE_526(p) BOOST_PP_IIF(p(526), BOOST_PP_NODE_525, BOOST_PP_NODE_527) +# define BOOST_PP_NODE_525(p) BOOST_PP_IIF(p(525), 525, 526) +# define BOOST_PP_NODE_527(p) BOOST_PP_IIF(p(527), 527, 528) +# define BOOST_PP_NODE_536(p) BOOST_PP_IIF(p(536), BOOST_PP_NODE_532, BOOST_PP_NODE_540) +# define BOOST_PP_NODE_532(p) BOOST_PP_IIF(p(532), BOOST_PP_NODE_530, BOOST_PP_NODE_534) +# define BOOST_PP_NODE_530(p) BOOST_PP_IIF(p(530), BOOST_PP_NODE_529, BOOST_PP_NODE_531) +# define BOOST_PP_NODE_529(p) BOOST_PP_IIF(p(529), 529, 530) +# define BOOST_PP_NODE_531(p) BOOST_PP_IIF(p(531), 531, 532) +# define BOOST_PP_NODE_534(p) BOOST_PP_IIF(p(534), BOOST_PP_NODE_533, BOOST_PP_NODE_535) +# define BOOST_PP_NODE_533(p) BOOST_PP_IIF(p(533), 533, 534) +# define BOOST_PP_NODE_535(p) BOOST_PP_IIF(p(535), 535, 536) +# define BOOST_PP_NODE_540(p) BOOST_PP_IIF(p(540), BOOST_PP_NODE_538, BOOST_PP_NODE_542) +# define BOOST_PP_NODE_538(p) BOOST_PP_IIF(p(538), BOOST_PP_NODE_537, BOOST_PP_NODE_539) +# define BOOST_PP_NODE_537(p) BOOST_PP_IIF(p(537), 537, 538) +# define BOOST_PP_NODE_539(p) BOOST_PP_IIF(p(539), 539, 540) +# define BOOST_PP_NODE_542(p) BOOST_PP_IIF(p(542), BOOST_PP_NODE_541, BOOST_PP_NODE_543) +# define BOOST_PP_NODE_541(p) BOOST_PP_IIF(p(541), 541, 542) +# define BOOST_PP_NODE_543(p) BOOST_PP_IIF(p(543), 543, 544) +# define BOOST_PP_NODE_560(p) BOOST_PP_IIF(p(560), BOOST_PP_NODE_552, BOOST_PP_NODE_568) +# define BOOST_PP_NODE_552(p) BOOST_PP_IIF(p(552), BOOST_PP_NODE_548, BOOST_PP_NODE_556) +# define BOOST_PP_NODE_548(p) BOOST_PP_IIF(p(548), BOOST_PP_NODE_546, BOOST_PP_NODE_550) +# define BOOST_PP_NODE_546(p) BOOST_PP_IIF(p(546), BOOST_PP_NODE_545, BOOST_PP_NODE_547) +# define BOOST_PP_NODE_545(p) BOOST_PP_IIF(p(545), 545, 546) +# define BOOST_PP_NODE_547(p) BOOST_PP_IIF(p(547), 547, 548) +# define BOOST_PP_NODE_550(p) BOOST_PP_IIF(p(550), BOOST_PP_NODE_549, BOOST_PP_NODE_551) +# define BOOST_PP_NODE_549(p) BOOST_PP_IIF(p(549), 549, 550) +# define BOOST_PP_NODE_551(p) BOOST_PP_IIF(p(551), 551, 552) +# define BOOST_PP_NODE_556(p) BOOST_PP_IIF(p(556), BOOST_PP_NODE_554, BOOST_PP_NODE_558) +# define BOOST_PP_NODE_554(p) BOOST_PP_IIF(p(554), BOOST_PP_NODE_553, BOOST_PP_NODE_555) +# define BOOST_PP_NODE_553(p) BOOST_PP_IIF(p(553), 553, 554) +# define BOOST_PP_NODE_555(p) BOOST_PP_IIF(p(555), 555, 556) +# define BOOST_PP_NODE_558(p) BOOST_PP_IIF(p(558), BOOST_PP_NODE_557, BOOST_PP_NODE_559) +# define BOOST_PP_NODE_557(p) BOOST_PP_IIF(p(557), 557, 558) +# define BOOST_PP_NODE_559(p) BOOST_PP_IIF(p(559), 559, 560) +# define BOOST_PP_NODE_568(p) BOOST_PP_IIF(p(568), BOOST_PP_NODE_564, BOOST_PP_NODE_572) +# define BOOST_PP_NODE_564(p) BOOST_PP_IIF(p(564), BOOST_PP_NODE_562, BOOST_PP_NODE_566) +# define BOOST_PP_NODE_562(p) BOOST_PP_IIF(p(562), BOOST_PP_NODE_561, BOOST_PP_NODE_563) +# define BOOST_PP_NODE_561(p) BOOST_PP_IIF(p(561), 561, 562) +# define BOOST_PP_NODE_563(p) BOOST_PP_IIF(p(563), 563, 564) +# define BOOST_PP_NODE_566(p) BOOST_PP_IIF(p(566), BOOST_PP_NODE_565, BOOST_PP_NODE_567) +# define BOOST_PP_NODE_565(p) BOOST_PP_IIF(p(565), 565, 566) +# define BOOST_PP_NODE_567(p) BOOST_PP_IIF(p(567), 567, 568) +# define BOOST_PP_NODE_572(p) BOOST_PP_IIF(p(572), BOOST_PP_NODE_570, BOOST_PP_NODE_574) +# define BOOST_PP_NODE_570(p) BOOST_PP_IIF(p(570), BOOST_PP_NODE_569, BOOST_PP_NODE_571) +# define BOOST_PP_NODE_569(p) BOOST_PP_IIF(p(569), 569, 570) +# define BOOST_PP_NODE_571(p) BOOST_PP_IIF(p(571), 571, 572) +# define BOOST_PP_NODE_574(p) BOOST_PP_IIF(p(574), BOOST_PP_NODE_573, BOOST_PP_NODE_575) +# define BOOST_PP_NODE_573(p) BOOST_PP_IIF(p(573), 573, 574) +# define BOOST_PP_NODE_575(p) BOOST_PP_IIF(p(575), 575, 576) +# define BOOST_PP_NODE_608(p) BOOST_PP_IIF(p(608), BOOST_PP_NODE_592, BOOST_PP_NODE_624) +# define BOOST_PP_NODE_592(p) BOOST_PP_IIF(p(592), BOOST_PP_NODE_584, BOOST_PP_NODE_600) +# define BOOST_PP_NODE_584(p) BOOST_PP_IIF(p(584), BOOST_PP_NODE_580, BOOST_PP_NODE_588) +# define BOOST_PP_NODE_580(p) BOOST_PP_IIF(p(580), BOOST_PP_NODE_578, BOOST_PP_NODE_582) +# define BOOST_PP_NODE_578(p) BOOST_PP_IIF(p(578), BOOST_PP_NODE_577, BOOST_PP_NODE_579) +# define BOOST_PP_NODE_577(p) BOOST_PP_IIF(p(577), 577, 578) +# define BOOST_PP_NODE_579(p) BOOST_PP_IIF(p(579), 579, 580) +# define BOOST_PP_NODE_582(p) BOOST_PP_IIF(p(582), BOOST_PP_NODE_581, BOOST_PP_NODE_583) +# define BOOST_PP_NODE_581(p) BOOST_PP_IIF(p(581), 581, 582) +# define BOOST_PP_NODE_583(p) BOOST_PP_IIF(p(583), 583, 584) +# define BOOST_PP_NODE_588(p) BOOST_PP_IIF(p(588), BOOST_PP_NODE_586, BOOST_PP_NODE_590) +# define BOOST_PP_NODE_586(p) BOOST_PP_IIF(p(586), BOOST_PP_NODE_585, BOOST_PP_NODE_587) +# define BOOST_PP_NODE_585(p) BOOST_PP_IIF(p(585), 585, 586) +# define BOOST_PP_NODE_587(p) BOOST_PP_IIF(p(587), 587, 588) +# define BOOST_PP_NODE_590(p) BOOST_PP_IIF(p(590), BOOST_PP_NODE_589, BOOST_PP_NODE_591) +# define BOOST_PP_NODE_589(p) BOOST_PP_IIF(p(589), 589, 590) +# define BOOST_PP_NODE_591(p) BOOST_PP_IIF(p(591), 591, 592) +# define BOOST_PP_NODE_600(p) BOOST_PP_IIF(p(600), BOOST_PP_NODE_596, BOOST_PP_NODE_604) +# define BOOST_PP_NODE_596(p) BOOST_PP_IIF(p(596), BOOST_PP_NODE_594, BOOST_PP_NODE_598) +# define BOOST_PP_NODE_594(p) BOOST_PP_IIF(p(594), BOOST_PP_NODE_593, BOOST_PP_NODE_595) +# define BOOST_PP_NODE_593(p) BOOST_PP_IIF(p(593), 593, 594) +# define BOOST_PP_NODE_595(p) BOOST_PP_IIF(p(595), 595, 596) +# define BOOST_PP_NODE_598(p) BOOST_PP_IIF(p(598), BOOST_PP_NODE_597, BOOST_PP_NODE_599) +# define BOOST_PP_NODE_597(p) BOOST_PP_IIF(p(597), 597, 598) +# define BOOST_PP_NODE_599(p) BOOST_PP_IIF(p(599), 599, 600) +# define BOOST_PP_NODE_604(p) BOOST_PP_IIF(p(604), BOOST_PP_NODE_602, BOOST_PP_NODE_606) +# define BOOST_PP_NODE_602(p) BOOST_PP_IIF(p(602), BOOST_PP_NODE_601, BOOST_PP_NODE_603) +# define BOOST_PP_NODE_601(p) BOOST_PP_IIF(p(601), 601, 602) +# define BOOST_PP_NODE_603(p) BOOST_PP_IIF(p(603), 603, 604) +# define BOOST_PP_NODE_606(p) BOOST_PP_IIF(p(606), BOOST_PP_NODE_605, BOOST_PP_NODE_607) +# define BOOST_PP_NODE_605(p) BOOST_PP_IIF(p(605), 605, 606) +# define BOOST_PP_NODE_607(p) BOOST_PP_IIF(p(607), 607, 608) +# define BOOST_PP_NODE_624(p) BOOST_PP_IIF(p(624), BOOST_PP_NODE_616, BOOST_PP_NODE_632) +# define BOOST_PP_NODE_616(p) BOOST_PP_IIF(p(616), BOOST_PP_NODE_612, BOOST_PP_NODE_620) +# define BOOST_PP_NODE_612(p) BOOST_PP_IIF(p(612), BOOST_PP_NODE_610, BOOST_PP_NODE_614) +# define BOOST_PP_NODE_610(p) BOOST_PP_IIF(p(610), BOOST_PP_NODE_609, BOOST_PP_NODE_611) +# define BOOST_PP_NODE_609(p) BOOST_PP_IIF(p(609), 609, 610) +# define BOOST_PP_NODE_611(p) BOOST_PP_IIF(p(611), 611, 612) +# define BOOST_PP_NODE_614(p) BOOST_PP_IIF(p(614), BOOST_PP_NODE_613, BOOST_PP_NODE_615) +# define BOOST_PP_NODE_613(p) BOOST_PP_IIF(p(613), 613, 614) +# define BOOST_PP_NODE_615(p) BOOST_PP_IIF(p(615), 615, 616) +# define BOOST_PP_NODE_620(p) BOOST_PP_IIF(p(620), BOOST_PP_NODE_618, BOOST_PP_NODE_622) +# define BOOST_PP_NODE_618(p) BOOST_PP_IIF(p(618), BOOST_PP_NODE_617, BOOST_PP_NODE_619) +# define BOOST_PP_NODE_617(p) BOOST_PP_IIF(p(617), 617, 618) +# define BOOST_PP_NODE_619(p) BOOST_PP_IIF(p(619), 619, 620) +# define BOOST_PP_NODE_622(p) BOOST_PP_IIF(p(622), BOOST_PP_NODE_621, BOOST_PP_NODE_623) +# define BOOST_PP_NODE_621(p) BOOST_PP_IIF(p(621), 621, 622) +# define BOOST_PP_NODE_623(p) BOOST_PP_IIF(p(623), 623, 624) +# define BOOST_PP_NODE_632(p) BOOST_PP_IIF(p(632), BOOST_PP_NODE_628, BOOST_PP_NODE_636) +# define BOOST_PP_NODE_628(p) BOOST_PP_IIF(p(628), BOOST_PP_NODE_626, BOOST_PP_NODE_630) +# define BOOST_PP_NODE_626(p) BOOST_PP_IIF(p(626), BOOST_PP_NODE_625, BOOST_PP_NODE_627) +# define BOOST_PP_NODE_625(p) BOOST_PP_IIF(p(625), 625, 626) +# define BOOST_PP_NODE_627(p) BOOST_PP_IIF(p(627), 627, 628) +# define BOOST_PP_NODE_630(p) BOOST_PP_IIF(p(630), BOOST_PP_NODE_629, BOOST_PP_NODE_631) +# define BOOST_PP_NODE_629(p) BOOST_PP_IIF(p(629), 629, 630) +# define BOOST_PP_NODE_631(p) BOOST_PP_IIF(p(631), 631, 632) +# define BOOST_PP_NODE_636(p) BOOST_PP_IIF(p(636), BOOST_PP_NODE_634, BOOST_PP_NODE_638) +# define BOOST_PP_NODE_634(p) BOOST_PP_IIF(p(634), BOOST_PP_NODE_633, BOOST_PP_NODE_635) +# define BOOST_PP_NODE_633(p) BOOST_PP_IIF(p(633), 633, 634) +# define BOOST_PP_NODE_635(p) BOOST_PP_IIF(p(635), 635, 636) +# define BOOST_PP_NODE_638(p) BOOST_PP_IIF(p(638), BOOST_PP_NODE_637, BOOST_PP_NODE_639) +# define BOOST_PP_NODE_637(p) BOOST_PP_IIF(p(637), 637, 638) +# define BOOST_PP_NODE_639(p) BOOST_PP_IIF(p(639), 639, 640) +# define BOOST_PP_NODE_704(p) BOOST_PP_IIF(p(704), BOOST_PP_NODE_672, BOOST_PP_NODE_736) +# define BOOST_PP_NODE_672(p) BOOST_PP_IIF(p(672), BOOST_PP_NODE_656, BOOST_PP_NODE_688) +# define BOOST_PP_NODE_656(p) BOOST_PP_IIF(p(656), BOOST_PP_NODE_648, BOOST_PP_NODE_664) +# define BOOST_PP_NODE_648(p) BOOST_PP_IIF(p(648), BOOST_PP_NODE_644, BOOST_PP_NODE_652) +# define BOOST_PP_NODE_644(p) BOOST_PP_IIF(p(644), BOOST_PP_NODE_642, BOOST_PP_NODE_646) +# define BOOST_PP_NODE_642(p) BOOST_PP_IIF(p(642), BOOST_PP_NODE_641, BOOST_PP_NODE_643) +# define BOOST_PP_NODE_641(p) BOOST_PP_IIF(p(641), 641, 642) +# define BOOST_PP_NODE_643(p) BOOST_PP_IIF(p(643), 643, 644) +# define BOOST_PP_NODE_646(p) BOOST_PP_IIF(p(646), BOOST_PP_NODE_645, BOOST_PP_NODE_647) +# define BOOST_PP_NODE_645(p) BOOST_PP_IIF(p(645), 645, 646) +# define BOOST_PP_NODE_647(p) BOOST_PP_IIF(p(647), 647, 648) +# define BOOST_PP_NODE_652(p) BOOST_PP_IIF(p(652), BOOST_PP_NODE_650, BOOST_PP_NODE_654) +# define BOOST_PP_NODE_650(p) BOOST_PP_IIF(p(650), BOOST_PP_NODE_649, BOOST_PP_NODE_651) +# define BOOST_PP_NODE_649(p) BOOST_PP_IIF(p(649), 649, 650) +# define BOOST_PP_NODE_651(p) BOOST_PP_IIF(p(651), 651, 652) +# define BOOST_PP_NODE_654(p) BOOST_PP_IIF(p(654), BOOST_PP_NODE_653, BOOST_PP_NODE_655) +# define BOOST_PP_NODE_653(p) BOOST_PP_IIF(p(653), 653, 654) +# define BOOST_PP_NODE_655(p) BOOST_PP_IIF(p(655), 655, 656) +# define BOOST_PP_NODE_664(p) BOOST_PP_IIF(p(664), BOOST_PP_NODE_660, BOOST_PP_NODE_668) +# define BOOST_PP_NODE_660(p) BOOST_PP_IIF(p(660), BOOST_PP_NODE_658, BOOST_PP_NODE_662) +# define BOOST_PP_NODE_658(p) BOOST_PP_IIF(p(658), BOOST_PP_NODE_657, BOOST_PP_NODE_659) +# define BOOST_PP_NODE_657(p) BOOST_PP_IIF(p(657), 657, 658) +# define BOOST_PP_NODE_659(p) BOOST_PP_IIF(p(659), 659, 660) +# define BOOST_PP_NODE_662(p) BOOST_PP_IIF(p(662), BOOST_PP_NODE_661, BOOST_PP_NODE_663) +# define BOOST_PP_NODE_661(p) BOOST_PP_IIF(p(661), 661, 662) +# define BOOST_PP_NODE_663(p) BOOST_PP_IIF(p(663), 663, 664) +# define BOOST_PP_NODE_668(p) BOOST_PP_IIF(p(668), BOOST_PP_NODE_666, BOOST_PP_NODE_670) +# define BOOST_PP_NODE_666(p) BOOST_PP_IIF(p(666), BOOST_PP_NODE_665, BOOST_PP_NODE_667) +# define BOOST_PP_NODE_665(p) BOOST_PP_IIF(p(665), 665, 666) +# define BOOST_PP_NODE_667(p) BOOST_PP_IIF(p(667), 667, 668) +# define BOOST_PP_NODE_670(p) BOOST_PP_IIF(p(670), BOOST_PP_NODE_669, BOOST_PP_NODE_671) +# define BOOST_PP_NODE_669(p) BOOST_PP_IIF(p(669), 669, 670) +# define BOOST_PP_NODE_671(p) BOOST_PP_IIF(p(671), 671, 672) +# define BOOST_PP_NODE_688(p) BOOST_PP_IIF(p(688), BOOST_PP_NODE_680, BOOST_PP_NODE_696) +# define BOOST_PP_NODE_680(p) BOOST_PP_IIF(p(680), BOOST_PP_NODE_676, BOOST_PP_NODE_684) +# define BOOST_PP_NODE_676(p) BOOST_PP_IIF(p(676), BOOST_PP_NODE_674, BOOST_PP_NODE_678) +# define BOOST_PP_NODE_674(p) BOOST_PP_IIF(p(674), BOOST_PP_NODE_673, BOOST_PP_NODE_675) +# define BOOST_PP_NODE_673(p) BOOST_PP_IIF(p(673), 673, 674) +# define BOOST_PP_NODE_675(p) BOOST_PP_IIF(p(675), 675, 676) +# define BOOST_PP_NODE_678(p) BOOST_PP_IIF(p(678), BOOST_PP_NODE_677, BOOST_PP_NODE_679) +# define BOOST_PP_NODE_677(p) BOOST_PP_IIF(p(677), 677, 678) +# define BOOST_PP_NODE_679(p) BOOST_PP_IIF(p(679), 679, 680) +# define BOOST_PP_NODE_684(p) BOOST_PP_IIF(p(684), BOOST_PP_NODE_682, BOOST_PP_NODE_686) +# define BOOST_PP_NODE_682(p) BOOST_PP_IIF(p(682), BOOST_PP_NODE_681, BOOST_PP_NODE_683) +# define BOOST_PP_NODE_681(p) BOOST_PP_IIF(p(681), 681, 682) +# define BOOST_PP_NODE_683(p) BOOST_PP_IIF(p(683), 683, 684) +# define BOOST_PP_NODE_686(p) BOOST_PP_IIF(p(686), BOOST_PP_NODE_685, BOOST_PP_NODE_687) +# define BOOST_PP_NODE_685(p) BOOST_PP_IIF(p(685), 685, 686) +# define BOOST_PP_NODE_687(p) BOOST_PP_IIF(p(687), 687, 688) +# define BOOST_PP_NODE_696(p) BOOST_PP_IIF(p(696), BOOST_PP_NODE_692, BOOST_PP_NODE_700) +# define BOOST_PP_NODE_692(p) BOOST_PP_IIF(p(692), BOOST_PP_NODE_690, BOOST_PP_NODE_694) +# define BOOST_PP_NODE_690(p) BOOST_PP_IIF(p(690), BOOST_PP_NODE_689, BOOST_PP_NODE_691) +# define BOOST_PP_NODE_689(p) BOOST_PP_IIF(p(689), 689, 690) +# define BOOST_PP_NODE_691(p) BOOST_PP_IIF(p(691), 691, 692) +# define BOOST_PP_NODE_694(p) BOOST_PP_IIF(p(694), BOOST_PP_NODE_693, BOOST_PP_NODE_695) +# define BOOST_PP_NODE_693(p) BOOST_PP_IIF(p(693), 693, 694) +# define BOOST_PP_NODE_695(p) BOOST_PP_IIF(p(695), 695, 696) +# define BOOST_PP_NODE_700(p) BOOST_PP_IIF(p(700), BOOST_PP_NODE_698, BOOST_PP_NODE_702) +# define BOOST_PP_NODE_698(p) BOOST_PP_IIF(p(698), BOOST_PP_NODE_697, BOOST_PP_NODE_699) +# define BOOST_PP_NODE_697(p) BOOST_PP_IIF(p(697), 697, 698) +# define BOOST_PP_NODE_699(p) BOOST_PP_IIF(p(699), 699, 700) +# define BOOST_PP_NODE_702(p) BOOST_PP_IIF(p(702), BOOST_PP_NODE_701, BOOST_PP_NODE_703) +# define BOOST_PP_NODE_701(p) BOOST_PP_IIF(p(701), 701, 702) +# define BOOST_PP_NODE_703(p) BOOST_PP_IIF(p(703), 703, 704) +# define BOOST_PP_NODE_736(p) BOOST_PP_IIF(p(736), BOOST_PP_NODE_720, BOOST_PP_NODE_752) +# define BOOST_PP_NODE_720(p) BOOST_PP_IIF(p(720), BOOST_PP_NODE_712, BOOST_PP_NODE_728) +# define BOOST_PP_NODE_712(p) BOOST_PP_IIF(p(712), BOOST_PP_NODE_708, BOOST_PP_NODE_716) +# define BOOST_PP_NODE_708(p) BOOST_PP_IIF(p(708), BOOST_PP_NODE_706, BOOST_PP_NODE_710) +# define BOOST_PP_NODE_706(p) BOOST_PP_IIF(p(706), BOOST_PP_NODE_705, BOOST_PP_NODE_707) +# define BOOST_PP_NODE_705(p) BOOST_PP_IIF(p(705), 705, 706) +# define BOOST_PP_NODE_707(p) BOOST_PP_IIF(p(707), 707, 708) +# define BOOST_PP_NODE_710(p) BOOST_PP_IIF(p(710), BOOST_PP_NODE_709, BOOST_PP_NODE_711) +# define BOOST_PP_NODE_709(p) BOOST_PP_IIF(p(709), 709, 710) +# define BOOST_PP_NODE_711(p) BOOST_PP_IIF(p(711), 711, 712) +# define BOOST_PP_NODE_716(p) BOOST_PP_IIF(p(716), BOOST_PP_NODE_714, BOOST_PP_NODE_718) +# define BOOST_PP_NODE_714(p) BOOST_PP_IIF(p(714), BOOST_PP_NODE_713, BOOST_PP_NODE_715) +# define BOOST_PP_NODE_713(p) BOOST_PP_IIF(p(713), 713, 714) +# define BOOST_PP_NODE_715(p) BOOST_PP_IIF(p(715), 715, 716) +# define BOOST_PP_NODE_718(p) BOOST_PP_IIF(p(718), BOOST_PP_NODE_717, BOOST_PP_NODE_719) +# define BOOST_PP_NODE_717(p) BOOST_PP_IIF(p(717), 717, 718) +# define BOOST_PP_NODE_719(p) BOOST_PP_IIF(p(719), 719, 720) +# define BOOST_PP_NODE_728(p) BOOST_PP_IIF(p(728), BOOST_PP_NODE_724, BOOST_PP_NODE_732) +# define BOOST_PP_NODE_724(p) BOOST_PP_IIF(p(724), BOOST_PP_NODE_722, BOOST_PP_NODE_726) +# define BOOST_PP_NODE_722(p) BOOST_PP_IIF(p(722), BOOST_PP_NODE_721, BOOST_PP_NODE_723) +# define BOOST_PP_NODE_721(p) BOOST_PP_IIF(p(721), 721, 722) +# define BOOST_PP_NODE_723(p) BOOST_PP_IIF(p(723), 723, 724) +# define BOOST_PP_NODE_726(p) BOOST_PP_IIF(p(726), BOOST_PP_NODE_725, BOOST_PP_NODE_727) +# define BOOST_PP_NODE_725(p) BOOST_PP_IIF(p(725), 725, 726) +# define BOOST_PP_NODE_727(p) BOOST_PP_IIF(p(727), 727, 728) +# define BOOST_PP_NODE_732(p) BOOST_PP_IIF(p(732), BOOST_PP_NODE_730, BOOST_PP_NODE_734) +# define BOOST_PP_NODE_730(p) BOOST_PP_IIF(p(730), BOOST_PP_NODE_729, BOOST_PP_NODE_731) +# define BOOST_PP_NODE_729(p) BOOST_PP_IIF(p(729), 729, 730) +# define BOOST_PP_NODE_731(p) BOOST_PP_IIF(p(731), 731, 732) +# define BOOST_PP_NODE_734(p) BOOST_PP_IIF(p(734), BOOST_PP_NODE_733, BOOST_PP_NODE_735) +# define BOOST_PP_NODE_733(p) BOOST_PP_IIF(p(733), 733, 734) +# define BOOST_PP_NODE_735(p) BOOST_PP_IIF(p(735), 735, 736) +# define BOOST_PP_NODE_752(p) BOOST_PP_IIF(p(752), BOOST_PP_NODE_744, BOOST_PP_NODE_760) +# define BOOST_PP_NODE_744(p) BOOST_PP_IIF(p(744), BOOST_PP_NODE_740, BOOST_PP_NODE_748) +# define BOOST_PP_NODE_740(p) BOOST_PP_IIF(p(740), BOOST_PP_NODE_738, BOOST_PP_NODE_742) +# define BOOST_PP_NODE_738(p) BOOST_PP_IIF(p(738), BOOST_PP_NODE_737, BOOST_PP_NODE_739) +# define BOOST_PP_NODE_737(p) BOOST_PP_IIF(p(737), 737, 738) +# define BOOST_PP_NODE_739(p) BOOST_PP_IIF(p(739), 739, 740) +# define BOOST_PP_NODE_742(p) BOOST_PP_IIF(p(742), BOOST_PP_NODE_741, BOOST_PP_NODE_743) +# define BOOST_PP_NODE_741(p) BOOST_PP_IIF(p(741), 741, 742) +# define BOOST_PP_NODE_743(p) BOOST_PP_IIF(p(743), 743, 744) +# define BOOST_PP_NODE_748(p) BOOST_PP_IIF(p(748), BOOST_PP_NODE_746, BOOST_PP_NODE_750) +# define BOOST_PP_NODE_746(p) BOOST_PP_IIF(p(746), BOOST_PP_NODE_745, BOOST_PP_NODE_747) +# define BOOST_PP_NODE_745(p) BOOST_PP_IIF(p(745), 745, 746) +# define BOOST_PP_NODE_747(p) BOOST_PP_IIF(p(747), 747, 748) +# define BOOST_PP_NODE_750(p) BOOST_PP_IIF(p(750), BOOST_PP_NODE_749, BOOST_PP_NODE_751) +# define BOOST_PP_NODE_749(p) BOOST_PP_IIF(p(749), 749, 750) +# define BOOST_PP_NODE_751(p) BOOST_PP_IIF(p(751), 751, 752) +# define BOOST_PP_NODE_760(p) BOOST_PP_IIF(p(760), BOOST_PP_NODE_756, BOOST_PP_NODE_764) +# define BOOST_PP_NODE_756(p) BOOST_PP_IIF(p(756), BOOST_PP_NODE_754, BOOST_PP_NODE_758) +# define BOOST_PP_NODE_754(p) BOOST_PP_IIF(p(754), BOOST_PP_NODE_753, BOOST_PP_NODE_755) +# define BOOST_PP_NODE_753(p) BOOST_PP_IIF(p(753), 753, 754) +# define BOOST_PP_NODE_755(p) BOOST_PP_IIF(p(755), 755, 756) +# define BOOST_PP_NODE_758(p) BOOST_PP_IIF(p(758), BOOST_PP_NODE_757, BOOST_PP_NODE_759) +# define BOOST_PP_NODE_757(p) BOOST_PP_IIF(p(757), 757, 758) +# define BOOST_PP_NODE_759(p) BOOST_PP_IIF(p(759), 759, 760) +# define BOOST_PP_NODE_764(p) BOOST_PP_IIF(p(764), BOOST_PP_NODE_762, BOOST_PP_NODE_766) +# define BOOST_PP_NODE_762(p) BOOST_PP_IIF(p(762), BOOST_PP_NODE_761, BOOST_PP_NODE_763) +# define BOOST_PP_NODE_761(p) BOOST_PP_IIF(p(761), 761, 762) +# define BOOST_PP_NODE_763(p) BOOST_PP_IIF(p(763), 763, 764) +# define BOOST_PP_NODE_766(p) BOOST_PP_IIF(p(766), BOOST_PP_NODE_765, BOOST_PP_NODE_767) +# define BOOST_PP_NODE_765(p) BOOST_PP_IIF(p(765), 765, 766) +# define BOOST_PP_NODE_767(p) BOOST_PP_IIF(p(767), 767, 768) +# define BOOST_PP_NODE_896(p) BOOST_PP_IIF(p(896), BOOST_PP_NODE_832, BOOST_PP_NODE_960) +# define BOOST_PP_NODE_832(p) BOOST_PP_IIF(p(832), BOOST_PP_NODE_800, BOOST_PP_NODE_864) +# define BOOST_PP_NODE_800(p) BOOST_PP_IIF(p(800), BOOST_PP_NODE_784, BOOST_PP_NODE_816) +# define BOOST_PP_NODE_784(p) BOOST_PP_IIF(p(784), BOOST_PP_NODE_776, BOOST_PP_NODE_792) +# define BOOST_PP_NODE_776(p) BOOST_PP_IIF(p(776), BOOST_PP_NODE_772, BOOST_PP_NODE_780) +# define BOOST_PP_NODE_772(p) BOOST_PP_IIF(p(772), BOOST_PP_NODE_770, BOOST_PP_NODE_774) +# define BOOST_PP_NODE_770(p) BOOST_PP_IIF(p(770), BOOST_PP_NODE_769, BOOST_PP_NODE_771) +# define BOOST_PP_NODE_769(p) BOOST_PP_IIF(p(769), 769, 770) +# define BOOST_PP_NODE_771(p) BOOST_PP_IIF(p(771), 771, 772) +# define BOOST_PP_NODE_774(p) BOOST_PP_IIF(p(774), BOOST_PP_NODE_773, BOOST_PP_NODE_775) +# define BOOST_PP_NODE_773(p) BOOST_PP_IIF(p(773), 773, 774) +# define BOOST_PP_NODE_775(p) BOOST_PP_IIF(p(775), 775, 776) +# define BOOST_PP_NODE_780(p) BOOST_PP_IIF(p(780), BOOST_PP_NODE_778, BOOST_PP_NODE_782) +# define BOOST_PP_NODE_778(p) BOOST_PP_IIF(p(778), BOOST_PP_NODE_777, BOOST_PP_NODE_779) +# define BOOST_PP_NODE_777(p) BOOST_PP_IIF(p(777), 777, 778) +# define BOOST_PP_NODE_779(p) BOOST_PP_IIF(p(779), 779, 780) +# define BOOST_PP_NODE_782(p) BOOST_PP_IIF(p(782), BOOST_PP_NODE_781, BOOST_PP_NODE_783) +# define BOOST_PP_NODE_781(p) BOOST_PP_IIF(p(781), 781, 782) +# define BOOST_PP_NODE_783(p) BOOST_PP_IIF(p(783), 783, 784) +# define BOOST_PP_NODE_792(p) BOOST_PP_IIF(p(792), BOOST_PP_NODE_788, BOOST_PP_NODE_796) +# define BOOST_PP_NODE_788(p) BOOST_PP_IIF(p(788), BOOST_PP_NODE_786, BOOST_PP_NODE_790) +# define BOOST_PP_NODE_786(p) BOOST_PP_IIF(p(786), BOOST_PP_NODE_785, BOOST_PP_NODE_787) +# define BOOST_PP_NODE_785(p) BOOST_PP_IIF(p(785), 785, 786) +# define BOOST_PP_NODE_787(p) BOOST_PP_IIF(p(787), 787, 788) +# define BOOST_PP_NODE_790(p) BOOST_PP_IIF(p(790), BOOST_PP_NODE_789, BOOST_PP_NODE_791) +# define BOOST_PP_NODE_789(p) BOOST_PP_IIF(p(789), 789, 790) +# define BOOST_PP_NODE_791(p) BOOST_PP_IIF(p(791), 791, 792) +# define BOOST_PP_NODE_796(p) BOOST_PP_IIF(p(796), BOOST_PP_NODE_794, BOOST_PP_NODE_798) +# define BOOST_PP_NODE_794(p) BOOST_PP_IIF(p(794), BOOST_PP_NODE_793, BOOST_PP_NODE_795) +# define BOOST_PP_NODE_793(p) BOOST_PP_IIF(p(793), 793, 794) +# define BOOST_PP_NODE_795(p) BOOST_PP_IIF(p(795), 795, 796) +# define BOOST_PP_NODE_798(p) BOOST_PP_IIF(p(798), BOOST_PP_NODE_797, BOOST_PP_NODE_799) +# define BOOST_PP_NODE_797(p) BOOST_PP_IIF(p(797), 797, 798) +# define BOOST_PP_NODE_799(p) BOOST_PP_IIF(p(799), 799, 800) +# define BOOST_PP_NODE_816(p) BOOST_PP_IIF(p(816), BOOST_PP_NODE_808, BOOST_PP_NODE_824) +# define BOOST_PP_NODE_808(p) BOOST_PP_IIF(p(808), BOOST_PP_NODE_804, BOOST_PP_NODE_812) +# define BOOST_PP_NODE_804(p) BOOST_PP_IIF(p(804), BOOST_PP_NODE_802, BOOST_PP_NODE_806) +# define BOOST_PP_NODE_802(p) BOOST_PP_IIF(p(802), BOOST_PP_NODE_801, BOOST_PP_NODE_803) +# define BOOST_PP_NODE_801(p) BOOST_PP_IIF(p(801), 801, 802) +# define BOOST_PP_NODE_803(p) BOOST_PP_IIF(p(803), 803, 804) +# define BOOST_PP_NODE_806(p) BOOST_PP_IIF(p(806), BOOST_PP_NODE_805, BOOST_PP_NODE_807) +# define BOOST_PP_NODE_805(p) BOOST_PP_IIF(p(805), 805, 806) +# define BOOST_PP_NODE_807(p) BOOST_PP_IIF(p(807), 807, 808) +# define BOOST_PP_NODE_812(p) BOOST_PP_IIF(p(812), BOOST_PP_NODE_810, BOOST_PP_NODE_814) +# define BOOST_PP_NODE_810(p) BOOST_PP_IIF(p(810), BOOST_PP_NODE_809, BOOST_PP_NODE_811) +# define BOOST_PP_NODE_809(p) BOOST_PP_IIF(p(809), 809, 810) +# define BOOST_PP_NODE_811(p) BOOST_PP_IIF(p(811), 811, 812) +# define BOOST_PP_NODE_814(p) BOOST_PP_IIF(p(814), BOOST_PP_NODE_813, BOOST_PP_NODE_815) +# define BOOST_PP_NODE_813(p) BOOST_PP_IIF(p(813), 813, 814) +# define BOOST_PP_NODE_815(p) BOOST_PP_IIF(p(815), 815, 816) +# define BOOST_PP_NODE_824(p) BOOST_PP_IIF(p(824), BOOST_PP_NODE_820, BOOST_PP_NODE_828) +# define BOOST_PP_NODE_820(p) BOOST_PP_IIF(p(820), BOOST_PP_NODE_818, BOOST_PP_NODE_822) +# define BOOST_PP_NODE_818(p) BOOST_PP_IIF(p(818), BOOST_PP_NODE_817, BOOST_PP_NODE_819) +# define BOOST_PP_NODE_817(p) BOOST_PP_IIF(p(817), 817, 818) +# define BOOST_PP_NODE_819(p) BOOST_PP_IIF(p(819), 819, 820) +# define BOOST_PP_NODE_822(p) BOOST_PP_IIF(p(822), BOOST_PP_NODE_821, BOOST_PP_NODE_823) +# define BOOST_PP_NODE_821(p) BOOST_PP_IIF(p(821), 821, 822) +# define BOOST_PP_NODE_823(p) BOOST_PP_IIF(p(823), 823, 824) +# define BOOST_PP_NODE_828(p) BOOST_PP_IIF(p(828), BOOST_PP_NODE_826, BOOST_PP_NODE_830) +# define BOOST_PP_NODE_826(p) BOOST_PP_IIF(p(826), BOOST_PP_NODE_825, BOOST_PP_NODE_827) +# define BOOST_PP_NODE_825(p) BOOST_PP_IIF(p(825), 825, 826) +# define BOOST_PP_NODE_827(p) BOOST_PP_IIF(p(827), 827, 828) +# define BOOST_PP_NODE_830(p) BOOST_PP_IIF(p(830), BOOST_PP_NODE_829, BOOST_PP_NODE_831) +# define BOOST_PP_NODE_829(p) BOOST_PP_IIF(p(829), 829, 830) +# define BOOST_PP_NODE_831(p) BOOST_PP_IIF(p(831), 831, 832) +# define BOOST_PP_NODE_864(p) BOOST_PP_IIF(p(864), BOOST_PP_NODE_848, BOOST_PP_NODE_880) +# define BOOST_PP_NODE_848(p) BOOST_PP_IIF(p(848), BOOST_PP_NODE_840, BOOST_PP_NODE_856) +# define BOOST_PP_NODE_840(p) BOOST_PP_IIF(p(840), BOOST_PP_NODE_836, BOOST_PP_NODE_844) +# define BOOST_PP_NODE_836(p) BOOST_PP_IIF(p(836), BOOST_PP_NODE_834, BOOST_PP_NODE_838) +# define BOOST_PP_NODE_834(p) BOOST_PP_IIF(p(834), BOOST_PP_NODE_833, BOOST_PP_NODE_835) +# define BOOST_PP_NODE_833(p) BOOST_PP_IIF(p(833), 833, 834) +# define BOOST_PP_NODE_835(p) BOOST_PP_IIF(p(835), 835, 836) +# define BOOST_PP_NODE_838(p) BOOST_PP_IIF(p(838), BOOST_PP_NODE_837, BOOST_PP_NODE_839) +# define BOOST_PP_NODE_837(p) BOOST_PP_IIF(p(837), 837, 838) +# define BOOST_PP_NODE_839(p) BOOST_PP_IIF(p(839), 839, 840) +# define BOOST_PP_NODE_844(p) BOOST_PP_IIF(p(844), BOOST_PP_NODE_842, BOOST_PP_NODE_846) +# define BOOST_PP_NODE_842(p) BOOST_PP_IIF(p(842), BOOST_PP_NODE_841, BOOST_PP_NODE_843) +# define BOOST_PP_NODE_841(p) BOOST_PP_IIF(p(841), 841, 842) +# define BOOST_PP_NODE_843(p) BOOST_PP_IIF(p(843), 843, 844) +# define BOOST_PP_NODE_846(p) BOOST_PP_IIF(p(846), BOOST_PP_NODE_845, BOOST_PP_NODE_847) +# define BOOST_PP_NODE_845(p) BOOST_PP_IIF(p(845), 845, 846) +# define BOOST_PP_NODE_847(p) BOOST_PP_IIF(p(847), 847, 848) +# define BOOST_PP_NODE_856(p) BOOST_PP_IIF(p(856), BOOST_PP_NODE_852, BOOST_PP_NODE_860) +# define BOOST_PP_NODE_852(p) BOOST_PP_IIF(p(852), BOOST_PP_NODE_850, BOOST_PP_NODE_854) +# define BOOST_PP_NODE_850(p) BOOST_PP_IIF(p(850), BOOST_PP_NODE_849, BOOST_PP_NODE_851) +# define BOOST_PP_NODE_849(p) BOOST_PP_IIF(p(849), 849, 850) +# define BOOST_PP_NODE_851(p) BOOST_PP_IIF(p(851), 851, 852) +# define BOOST_PP_NODE_854(p) BOOST_PP_IIF(p(854), BOOST_PP_NODE_853, BOOST_PP_NODE_855) +# define BOOST_PP_NODE_853(p) BOOST_PP_IIF(p(853), 853, 854) +# define BOOST_PP_NODE_855(p) BOOST_PP_IIF(p(855), 855, 856) +# define BOOST_PP_NODE_860(p) BOOST_PP_IIF(p(860), BOOST_PP_NODE_858, BOOST_PP_NODE_862) +# define BOOST_PP_NODE_858(p) BOOST_PP_IIF(p(858), BOOST_PP_NODE_857, BOOST_PP_NODE_859) +# define BOOST_PP_NODE_857(p) BOOST_PP_IIF(p(857), 857, 858) +# define BOOST_PP_NODE_859(p) BOOST_PP_IIF(p(859), 859, 860) +# define BOOST_PP_NODE_862(p) BOOST_PP_IIF(p(862), BOOST_PP_NODE_861, BOOST_PP_NODE_863) +# define BOOST_PP_NODE_861(p) BOOST_PP_IIF(p(861), 861, 862) +# define BOOST_PP_NODE_863(p) BOOST_PP_IIF(p(863), 863, 864) +# define BOOST_PP_NODE_880(p) BOOST_PP_IIF(p(880), BOOST_PP_NODE_872, BOOST_PP_NODE_888) +# define BOOST_PP_NODE_872(p) BOOST_PP_IIF(p(872), BOOST_PP_NODE_868, BOOST_PP_NODE_876) +# define BOOST_PP_NODE_868(p) BOOST_PP_IIF(p(868), BOOST_PP_NODE_866, BOOST_PP_NODE_870) +# define BOOST_PP_NODE_866(p) BOOST_PP_IIF(p(866), BOOST_PP_NODE_865, BOOST_PP_NODE_867) +# define BOOST_PP_NODE_865(p) BOOST_PP_IIF(p(865), 865, 866) +# define BOOST_PP_NODE_867(p) BOOST_PP_IIF(p(867), 867, 868) +# define BOOST_PP_NODE_870(p) BOOST_PP_IIF(p(870), BOOST_PP_NODE_869, BOOST_PP_NODE_871) +# define BOOST_PP_NODE_869(p) BOOST_PP_IIF(p(869), 869, 870) +# define BOOST_PP_NODE_871(p) BOOST_PP_IIF(p(871), 871, 872) +# define BOOST_PP_NODE_876(p) BOOST_PP_IIF(p(876), BOOST_PP_NODE_874, BOOST_PP_NODE_878) +# define BOOST_PP_NODE_874(p) BOOST_PP_IIF(p(874), BOOST_PP_NODE_873, BOOST_PP_NODE_875) +# define BOOST_PP_NODE_873(p) BOOST_PP_IIF(p(873), 873, 874) +# define BOOST_PP_NODE_875(p) BOOST_PP_IIF(p(875), 875, 876) +# define BOOST_PP_NODE_878(p) BOOST_PP_IIF(p(878), BOOST_PP_NODE_877, BOOST_PP_NODE_879) +# define BOOST_PP_NODE_877(p) BOOST_PP_IIF(p(877), 877, 878) +# define BOOST_PP_NODE_879(p) BOOST_PP_IIF(p(879), 879, 880) +# define BOOST_PP_NODE_888(p) BOOST_PP_IIF(p(888), BOOST_PP_NODE_884, BOOST_PP_NODE_892) +# define BOOST_PP_NODE_884(p) BOOST_PP_IIF(p(884), BOOST_PP_NODE_882, BOOST_PP_NODE_886) +# define BOOST_PP_NODE_882(p) BOOST_PP_IIF(p(882), BOOST_PP_NODE_881, BOOST_PP_NODE_883) +# define BOOST_PP_NODE_881(p) BOOST_PP_IIF(p(881), 881, 882) +# define BOOST_PP_NODE_883(p) BOOST_PP_IIF(p(883), 883, 884) +# define BOOST_PP_NODE_886(p) BOOST_PP_IIF(p(886), BOOST_PP_NODE_885, BOOST_PP_NODE_887) +# define BOOST_PP_NODE_885(p) BOOST_PP_IIF(p(885), 885, 886) +# define BOOST_PP_NODE_887(p) BOOST_PP_IIF(p(887), 887, 888) +# define BOOST_PP_NODE_892(p) BOOST_PP_IIF(p(892), BOOST_PP_NODE_890, BOOST_PP_NODE_894) +# define BOOST_PP_NODE_890(p) BOOST_PP_IIF(p(890), BOOST_PP_NODE_889, BOOST_PP_NODE_891) +# define BOOST_PP_NODE_889(p) BOOST_PP_IIF(p(889), 889, 890) +# define BOOST_PP_NODE_891(p) BOOST_PP_IIF(p(891), 891, 892) +# define BOOST_PP_NODE_894(p) BOOST_PP_IIF(p(894), BOOST_PP_NODE_893, BOOST_PP_NODE_895) +# define BOOST_PP_NODE_893(p) BOOST_PP_IIF(p(893), 893, 894) +# define BOOST_PP_NODE_895(p) BOOST_PP_IIF(p(895), 895, 896) +# define BOOST_PP_NODE_960(p) BOOST_PP_IIF(p(960), BOOST_PP_NODE_928, BOOST_PP_NODE_992) +# define BOOST_PP_NODE_928(p) BOOST_PP_IIF(p(928), BOOST_PP_NODE_912, BOOST_PP_NODE_944) +# define BOOST_PP_NODE_912(p) BOOST_PP_IIF(p(912), BOOST_PP_NODE_904, BOOST_PP_NODE_920) +# define BOOST_PP_NODE_904(p) BOOST_PP_IIF(p(904), BOOST_PP_NODE_900, BOOST_PP_NODE_908) +# define BOOST_PP_NODE_900(p) BOOST_PP_IIF(p(900), BOOST_PP_NODE_898, BOOST_PP_NODE_902) +# define BOOST_PP_NODE_898(p) BOOST_PP_IIF(p(898), BOOST_PP_NODE_897, BOOST_PP_NODE_899) +# define BOOST_PP_NODE_897(p) BOOST_PP_IIF(p(897), 897, 898) +# define BOOST_PP_NODE_899(p) BOOST_PP_IIF(p(899), 899, 900) +# define BOOST_PP_NODE_902(p) BOOST_PP_IIF(p(902), BOOST_PP_NODE_901, BOOST_PP_NODE_903) +# define BOOST_PP_NODE_901(p) BOOST_PP_IIF(p(901), 901, 902) +# define BOOST_PP_NODE_903(p) BOOST_PP_IIF(p(903), 903, 904) +# define BOOST_PP_NODE_908(p) BOOST_PP_IIF(p(908), BOOST_PP_NODE_906, BOOST_PP_NODE_910) +# define BOOST_PP_NODE_906(p) BOOST_PP_IIF(p(906), BOOST_PP_NODE_905, BOOST_PP_NODE_907) +# define BOOST_PP_NODE_905(p) BOOST_PP_IIF(p(905), 905, 906) +# define BOOST_PP_NODE_907(p) BOOST_PP_IIF(p(907), 907, 908) +# define BOOST_PP_NODE_910(p) BOOST_PP_IIF(p(910), BOOST_PP_NODE_909, BOOST_PP_NODE_911) +# define BOOST_PP_NODE_909(p) BOOST_PP_IIF(p(909), 909, 910) +# define BOOST_PP_NODE_911(p) BOOST_PP_IIF(p(911), 911, 912) +# define BOOST_PP_NODE_920(p) BOOST_PP_IIF(p(920), BOOST_PP_NODE_916, BOOST_PP_NODE_924) +# define BOOST_PP_NODE_916(p) BOOST_PP_IIF(p(916), BOOST_PP_NODE_914, BOOST_PP_NODE_918) +# define BOOST_PP_NODE_914(p) BOOST_PP_IIF(p(914), BOOST_PP_NODE_913, BOOST_PP_NODE_915) +# define BOOST_PP_NODE_913(p) BOOST_PP_IIF(p(913), 913, 914) +# define BOOST_PP_NODE_915(p) BOOST_PP_IIF(p(915), 915, 916) +# define BOOST_PP_NODE_918(p) BOOST_PP_IIF(p(918), BOOST_PP_NODE_917, BOOST_PP_NODE_919) +# define BOOST_PP_NODE_917(p) BOOST_PP_IIF(p(917), 917, 918) +# define BOOST_PP_NODE_919(p) BOOST_PP_IIF(p(919), 919, 920) +# define BOOST_PP_NODE_924(p) BOOST_PP_IIF(p(924), BOOST_PP_NODE_922, BOOST_PP_NODE_926) +# define BOOST_PP_NODE_922(p) BOOST_PP_IIF(p(922), BOOST_PP_NODE_921, BOOST_PP_NODE_923) +# define BOOST_PP_NODE_921(p) BOOST_PP_IIF(p(921), 921, 922) +# define BOOST_PP_NODE_923(p) BOOST_PP_IIF(p(923), 923, 924) +# define BOOST_PP_NODE_926(p) BOOST_PP_IIF(p(926), BOOST_PP_NODE_925, BOOST_PP_NODE_927) +# define BOOST_PP_NODE_925(p) BOOST_PP_IIF(p(925), 925, 926) +# define BOOST_PP_NODE_927(p) BOOST_PP_IIF(p(927), 927, 928) +# define BOOST_PP_NODE_944(p) BOOST_PP_IIF(p(944), BOOST_PP_NODE_936, BOOST_PP_NODE_952) +# define BOOST_PP_NODE_936(p) BOOST_PP_IIF(p(936), BOOST_PP_NODE_932, BOOST_PP_NODE_940) +# define BOOST_PP_NODE_932(p) BOOST_PP_IIF(p(932), BOOST_PP_NODE_930, BOOST_PP_NODE_934) +# define BOOST_PP_NODE_930(p) BOOST_PP_IIF(p(930), BOOST_PP_NODE_929, BOOST_PP_NODE_931) +# define BOOST_PP_NODE_929(p) BOOST_PP_IIF(p(929), 929, 930) +# define BOOST_PP_NODE_931(p) BOOST_PP_IIF(p(931), 931, 932) +# define BOOST_PP_NODE_934(p) BOOST_PP_IIF(p(934), BOOST_PP_NODE_933, BOOST_PP_NODE_935) +# define BOOST_PP_NODE_933(p) BOOST_PP_IIF(p(933), 933, 934) +# define BOOST_PP_NODE_935(p) BOOST_PP_IIF(p(935), 935, 936) +# define BOOST_PP_NODE_940(p) BOOST_PP_IIF(p(940), BOOST_PP_NODE_938, BOOST_PP_NODE_942) +# define BOOST_PP_NODE_938(p) BOOST_PP_IIF(p(938), BOOST_PP_NODE_937, BOOST_PP_NODE_939) +# define BOOST_PP_NODE_937(p) BOOST_PP_IIF(p(937), 937, 938) +# define BOOST_PP_NODE_939(p) BOOST_PP_IIF(p(939), 939, 940) +# define BOOST_PP_NODE_942(p) BOOST_PP_IIF(p(942), BOOST_PP_NODE_941, BOOST_PP_NODE_943) +# define BOOST_PP_NODE_941(p) BOOST_PP_IIF(p(941), 941, 942) +# define BOOST_PP_NODE_943(p) BOOST_PP_IIF(p(943), 943, 944) +# define BOOST_PP_NODE_952(p) BOOST_PP_IIF(p(952), BOOST_PP_NODE_948, BOOST_PP_NODE_956) +# define BOOST_PP_NODE_948(p) BOOST_PP_IIF(p(948), BOOST_PP_NODE_946, BOOST_PP_NODE_950) +# define BOOST_PP_NODE_946(p) BOOST_PP_IIF(p(946), BOOST_PP_NODE_945, BOOST_PP_NODE_947) +# define BOOST_PP_NODE_945(p) BOOST_PP_IIF(p(945), 945, 946) +# define BOOST_PP_NODE_947(p) BOOST_PP_IIF(p(947), 947, 948) +# define BOOST_PP_NODE_950(p) BOOST_PP_IIF(p(950), BOOST_PP_NODE_949, BOOST_PP_NODE_951) +# define BOOST_PP_NODE_949(p) BOOST_PP_IIF(p(949), 949, 950) +# define BOOST_PP_NODE_951(p) BOOST_PP_IIF(p(951), 951, 952) +# define BOOST_PP_NODE_956(p) BOOST_PP_IIF(p(956), BOOST_PP_NODE_954, BOOST_PP_NODE_958) +# define BOOST_PP_NODE_954(p) BOOST_PP_IIF(p(954), BOOST_PP_NODE_953, BOOST_PP_NODE_955) +# define BOOST_PP_NODE_953(p) BOOST_PP_IIF(p(953), 953, 954) +# define BOOST_PP_NODE_955(p) BOOST_PP_IIF(p(955), 955, 956) +# define BOOST_PP_NODE_958(p) BOOST_PP_IIF(p(958), BOOST_PP_NODE_957, BOOST_PP_NODE_959) +# define BOOST_PP_NODE_957(p) BOOST_PP_IIF(p(957), 957, 958) +# define BOOST_PP_NODE_959(p) BOOST_PP_IIF(p(959), 959, 960) +# define BOOST_PP_NODE_992(p) BOOST_PP_IIF(p(992), BOOST_PP_NODE_976, BOOST_PP_NODE_1008) +# define BOOST_PP_NODE_976(p) BOOST_PP_IIF(p(976), BOOST_PP_NODE_968, BOOST_PP_NODE_984) +# define BOOST_PP_NODE_968(p) BOOST_PP_IIF(p(968), BOOST_PP_NODE_964, BOOST_PP_NODE_972) +# define BOOST_PP_NODE_964(p) BOOST_PP_IIF(p(964), BOOST_PP_NODE_962, BOOST_PP_NODE_966) +# define BOOST_PP_NODE_962(p) BOOST_PP_IIF(p(962), BOOST_PP_NODE_961, BOOST_PP_NODE_963) +# define BOOST_PP_NODE_961(p) BOOST_PP_IIF(p(961), 961, 962) +# define BOOST_PP_NODE_963(p) BOOST_PP_IIF(p(963), 963, 964) +# define BOOST_PP_NODE_966(p) BOOST_PP_IIF(p(966), BOOST_PP_NODE_965, BOOST_PP_NODE_967) +# define BOOST_PP_NODE_965(p) BOOST_PP_IIF(p(965), 965, 966) +# define BOOST_PP_NODE_967(p) BOOST_PP_IIF(p(967), 967, 968) +# define BOOST_PP_NODE_972(p) BOOST_PP_IIF(p(972), BOOST_PP_NODE_970, BOOST_PP_NODE_974) +# define BOOST_PP_NODE_970(p) BOOST_PP_IIF(p(970), BOOST_PP_NODE_969, BOOST_PP_NODE_971) +# define BOOST_PP_NODE_969(p) BOOST_PP_IIF(p(969), 969, 970) +# define BOOST_PP_NODE_971(p) BOOST_PP_IIF(p(971), 971, 972) +# define BOOST_PP_NODE_974(p) BOOST_PP_IIF(p(974), BOOST_PP_NODE_973, BOOST_PP_NODE_975) +# define BOOST_PP_NODE_973(p) BOOST_PP_IIF(p(973), 973, 974) +# define BOOST_PP_NODE_975(p) BOOST_PP_IIF(p(975), 975, 976) +# define BOOST_PP_NODE_984(p) BOOST_PP_IIF(p(984), BOOST_PP_NODE_980, BOOST_PP_NODE_988) +# define BOOST_PP_NODE_980(p) BOOST_PP_IIF(p(980), BOOST_PP_NODE_978, BOOST_PP_NODE_982) +# define BOOST_PP_NODE_978(p) BOOST_PP_IIF(p(978), BOOST_PP_NODE_977, BOOST_PP_NODE_979) +# define BOOST_PP_NODE_977(p) BOOST_PP_IIF(p(977), 977, 978) +# define BOOST_PP_NODE_979(p) BOOST_PP_IIF(p(979), 979, 980) +# define BOOST_PP_NODE_982(p) BOOST_PP_IIF(p(982), BOOST_PP_NODE_981, BOOST_PP_NODE_983) +# define BOOST_PP_NODE_981(p) BOOST_PP_IIF(p(981), 981, 982) +# define BOOST_PP_NODE_983(p) BOOST_PP_IIF(p(983), 983, 984) +# define BOOST_PP_NODE_988(p) BOOST_PP_IIF(p(988), BOOST_PP_NODE_986, BOOST_PP_NODE_990) +# define BOOST_PP_NODE_986(p) BOOST_PP_IIF(p(986), BOOST_PP_NODE_985, BOOST_PP_NODE_987) +# define BOOST_PP_NODE_985(p) BOOST_PP_IIF(p(985), 985, 986) +# define BOOST_PP_NODE_987(p) BOOST_PP_IIF(p(987), 987, 988) +# define BOOST_PP_NODE_990(p) BOOST_PP_IIF(p(990), BOOST_PP_NODE_989, BOOST_PP_NODE_991) +# define BOOST_PP_NODE_989(p) BOOST_PP_IIF(p(989), 989, 990) +# define BOOST_PP_NODE_991(p) BOOST_PP_IIF(p(991), 991, 992) +# define BOOST_PP_NODE_1008(p) BOOST_PP_IIF(p(1008), BOOST_PP_NODE_1000, BOOST_PP_NODE_1016) +# define BOOST_PP_NODE_1000(p) BOOST_PP_IIF(p(1000), BOOST_PP_NODE_996, BOOST_PP_NODE_1004) +# define BOOST_PP_NODE_996(p) BOOST_PP_IIF(p(996), BOOST_PP_NODE_994, BOOST_PP_NODE_998) +# define BOOST_PP_NODE_994(p) BOOST_PP_IIF(p(994), BOOST_PP_NODE_993, BOOST_PP_NODE_995) +# define BOOST_PP_NODE_993(p) BOOST_PP_IIF(p(993), 993, 994) +# define BOOST_PP_NODE_995(p) BOOST_PP_IIF(p(995), 995, 996) +# define BOOST_PP_NODE_998(p) BOOST_PP_IIF(p(998), BOOST_PP_NODE_997, BOOST_PP_NODE_999) +# define BOOST_PP_NODE_997(p) BOOST_PP_IIF(p(997), 997, 998) +# define BOOST_PP_NODE_999(p) BOOST_PP_IIF(p(999), 999, 1000) +# define BOOST_PP_NODE_1004(p) BOOST_PP_IIF(p(1004), BOOST_PP_NODE_1002, BOOST_PP_NODE_1006) +# define BOOST_PP_NODE_1002(p) BOOST_PP_IIF(p(1002), BOOST_PP_NODE_1001, BOOST_PP_NODE_1003) +# define BOOST_PP_NODE_1001(p) BOOST_PP_IIF(p(1001), 1001, 1002) +# define BOOST_PP_NODE_1003(p) BOOST_PP_IIF(p(1003), 1003, 1004) +# define BOOST_PP_NODE_1006(p) BOOST_PP_IIF(p(1006), BOOST_PP_NODE_1005, BOOST_PP_NODE_1007) +# define BOOST_PP_NODE_1005(p) BOOST_PP_IIF(p(1005), 1005, 1006) +# define BOOST_PP_NODE_1007(p) BOOST_PP_IIF(p(1007), 1007, 1008) +# define BOOST_PP_NODE_1016(p) BOOST_PP_IIF(p(1016), BOOST_PP_NODE_1012, BOOST_PP_NODE_1020) +# define BOOST_PP_NODE_1012(p) BOOST_PP_IIF(p(1012), BOOST_PP_NODE_1010, BOOST_PP_NODE_1014) +# define BOOST_PP_NODE_1010(p) BOOST_PP_IIF(p(1010), BOOST_PP_NODE_1009, BOOST_PP_NODE_1011) +# define BOOST_PP_NODE_1009(p) BOOST_PP_IIF(p(1009), 1009, 1010) +# define BOOST_PP_NODE_1011(p) BOOST_PP_IIF(p(1011), 1011, 1012) +# define BOOST_PP_NODE_1014(p) BOOST_PP_IIF(p(1014), BOOST_PP_NODE_1013, BOOST_PP_NODE_1015) +# define BOOST_PP_NODE_1013(p) BOOST_PP_IIF(p(1013), 1013, 1014) +# define BOOST_PP_NODE_1015(p) BOOST_PP_IIF(p(1015), 1015, 1016) +# define BOOST_PP_NODE_1020(p) BOOST_PP_IIF(p(1020), BOOST_PP_NODE_1018, BOOST_PP_NODE_1022) +# define BOOST_PP_NODE_1018(p) BOOST_PP_IIF(p(1018), BOOST_PP_NODE_1017, BOOST_PP_NODE_1019) +# define BOOST_PP_NODE_1017(p) BOOST_PP_IIF(p(1017), 1017, 1018) +# define BOOST_PP_NODE_1019(p) BOOST_PP_IIF(p(1019), 1019, 1020) +# define BOOST_PP_NODE_1022(p) BOOST_PP_IIF(p(1022), BOOST_PP_NODE_1021, BOOST_PP_NODE_1023) +# define BOOST_PP_NODE_1021(p) BOOST_PP_IIF(p(1021), 1021, 1022) +# define BOOST_PP_NODE_1023(p) BOOST_PP_IIF(p(1023), 1023, 1024) +# +# endif diff --git a/src/boost/boost/preprocessor/detail/limits/auto_rec_256.hpp b/src/boost/boost/preprocessor/detail/limits/auto_rec_256.hpp new file mode 100644 index 000000000..feb68e344 --- /dev/null +++ b/src/boost/boost/preprocessor/detail/limits/auto_rec_256.hpp @@ -0,0 +1,280 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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_DETAIL_AUTO_REC_256_HPP +# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_256_HPP +# +# define BOOST_PP_NODE_ENTRY_256(p) BOOST_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p) +# define BOOST_PP_NODE_ENTRY_128(p) BOOST_PP_NODE_64(p)(p)(p)(p)(p)(p)(p) +# define BOOST_PP_NODE_ENTRY_64(p) BOOST_PP_NODE_32(p)(p)(p)(p)(p)(p) +# define BOOST_PP_NODE_ENTRY_32(p) BOOST_PP_NODE_16(p)(p)(p)(p)(p) +# define BOOST_PP_NODE_ENTRY_16(p) BOOST_PP_NODE_8(p)(p)(p)(p) +# define BOOST_PP_NODE_ENTRY_8(p) BOOST_PP_NODE_4(p)(p)(p) +# define BOOST_PP_NODE_ENTRY_4(p) BOOST_PP_NODE_2(p)(p) +# define BOOST_PP_NODE_ENTRY_2(p) BOOST_PP_NODE_1(p) +# +# define BOOST_PP_NODE_128(p) BOOST_PP_IIF(p(128), BOOST_PP_NODE_64, BOOST_PP_NODE_192) +# define BOOST_PP_NODE_64(p) BOOST_PP_IIF(p(64), BOOST_PP_NODE_32, BOOST_PP_NODE_96) +# define BOOST_PP_NODE_32(p) BOOST_PP_IIF(p(32), BOOST_PP_NODE_16, BOOST_PP_NODE_48) +# define BOOST_PP_NODE_16(p) BOOST_PP_IIF(p(16), BOOST_PP_NODE_8, BOOST_PP_NODE_24) +# define BOOST_PP_NODE_8(p) BOOST_PP_IIF(p(8), BOOST_PP_NODE_4, BOOST_PP_NODE_12) +# define BOOST_PP_NODE_4(p) BOOST_PP_IIF(p(4), BOOST_PP_NODE_2, BOOST_PP_NODE_6) +# define BOOST_PP_NODE_2(p) BOOST_PP_IIF(p(2), BOOST_PP_NODE_1, BOOST_PP_NODE_3) +# define BOOST_PP_NODE_1(p) BOOST_PP_IIF(p(1), 1, 2) +# define BOOST_PP_NODE_3(p) BOOST_PP_IIF(p(3), 3, 4) +# define BOOST_PP_NODE_6(p) BOOST_PP_IIF(p(6), BOOST_PP_NODE_5, BOOST_PP_NODE_7) +# define BOOST_PP_NODE_5(p) BOOST_PP_IIF(p(5), 5, 6) +# define BOOST_PP_NODE_7(p) BOOST_PP_IIF(p(7), 7, 8) +# define BOOST_PP_NODE_12(p) BOOST_PP_IIF(p(12), BOOST_PP_NODE_10, BOOST_PP_NODE_14) +# define BOOST_PP_NODE_10(p) BOOST_PP_IIF(p(10), BOOST_PP_NODE_9, BOOST_PP_NODE_11) +# define BOOST_PP_NODE_9(p) BOOST_PP_IIF(p(9), 9, 10) +# define BOOST_PP_NODE_11(p) BOOST_PP_IIF(p(11), 11, 12) +# define BOOST_PP_NODE_14(p) BOOST_PP_IIF(p(14), BOOST_PP_NODE_13, BOOST_PP_NODE_15) +# define BOOST_PP_NODE_13(p) BOOST_PP_IIF(p(13), 13, 14) +# define BOOST_PP_NODE_15(p) BOOST_PP_IIF(p(15), 15, 16) +# define BOOST_PP_NODE_24(p) BOOST_PP_IIF(p(24), BOOST_PP_NODE_20, BOOST_PP_NODE_28) +# define BOOST_PP_NODE_20(p) BOOST_PP_IIF(p(20), BOOST_PP_NODE_18, BOOST_PP_NODE_22) +# define BOOST_PP_NODE_18(p) BOOST_PP_IIF(p(18), BOOST_PP_NODE_17, BOOST_PP_NODE_19) +# define BOOST_PP_NODE_17(p) BOOST_PP_IIF(p(17), 17, 18) +# define BOOST_PP_NODE_19(p) BOOST_PP_IIF(p(19), 19, 20) +# define BOOST_PP_NODE_22(p) BOOST_PP_IIF(p(22), BOOST_PP_NODE_21, BOOST_PP_NODE_23) +# define BOOST_PP_NODE_21(p) BOOST_PP_IIF(p(21), 21, 22) +# define BOOST_PP_NODE_23(p) BOOST_PP_IIF(p(23), 23, 24) +# define BOOST_PP_NODE_28(p) BOOST_PP_IIF(p(28), BOOST_PP_NODE_26, BOOST_PP_NODE_30) +# define BOOST_PP_NODE_26(p) BOOST_PP_IIF(p(26), BOOST_PP_NODE_25, BOOST_PP_NODE_27) +# define BOOST_PP_NODE_25(p) BOOST_PP_IIF(p(25), 25, 26) +# define BOOST_PP_NODE_27(p) BOOST_PP_IIF(p(27), 27, 28) +# define BOOST_PP_NODE_30(p) BOOST_PP_IIF(p(30), BOOST_PP_NODE_29, BOOST_PP_NODE_31) +# define BOOST_PP_NODE_29(p) BOOST_PP_IIF(p(29), 29, 30) +# define BOOST_PP_NODE_31(p) BOOST_PP_IIF(p(31), 31, 32) +# define BOOST_PP_NODE_48(p) BOOST_PP_IIF(p(48), BOOST_PP_NODE_40, BOOST_PP_NODE_56) +# define BOOST_PP_NODE_40(p) BOOST_PP_IIF(p(40), BOOST_PP_NODE_36, BOOST_PP_NODE_44) +# define BOOST_PP_NODE_36(p) BOOST_PP_IIF(p(36), BOOST_PP_NODE_34, BOOST_PP_NODE_38) +# define BOOST_PP_NODE_34(p) BOOST_PP_IIF(p(34), BOOST_PP_NODE_33, BOOST_PP_NODE_35) +# define BOOST_PP_NODE_33(p) BOOST_PP_IIF(p(33), 33, 34) +# define BOOST_PP_NODE_35(p) BOOST_PP_IIF(p(35), 35, 36) +# define BOOST_PP_NODE_38(p) BOOST_PP_IIF(p(38), BOOST_PP_NODE_37, BOOST_PP_NODE_39) +# define BOOST_PP_NODE_37(p) BOOST_PP_IIF(p(37), 37, 38) +# define BOOST_PP_NODE_39(p) BOOST_PP_IIF(p(39), 39, 40) +# define BOOST_PP_NODE_44(p) BOOST_PP_IIF(p(44), BOOST_PP_NODE_42, BOOST_PP_NODE_46) +# define BOOST_PP_NODE_42(p) BOOST_PP_IIF(p(42), BOOST_PP_NODE_41, BOOST_PP_NODE_43) +# define BOOST_PP_NODE_41(p) BOOST_PP_IIF(p(41), 41, 42) +# define BOOST_PP_NODE_43(p) BOOST_PP_IIF(p(43), 43, 44) +# define BOOST_PP_NODE_46(p) BOOST_PP_IIF(p(46), BOOST_PP_NODE_45, BOOST_PP_NODE_47) +# define BOOST_PP_NODE_45(p) BOOST_PP_IIF(p(45), 45, 46) +# define BOOST_PP_NODE_47(p) BOOST_PP_IIF(p(47), 47, 48) +# define BOOST_PP_NODE_56(p) BOOST_PP_IIF(p(56), BOOST_PP_NODE_52, BOOST_PP_NODE_60) +# define BOOST_PP_NODE_52(p) BOOST_PP_IIF(p(52), BOOST_PP_NODE_50, BOOST_PP_NODE_54) +# define BOOST_PP_NODE_50(p) BOOST_PP_IIF(p(50), BOOST_PP_NODE_49, BOOST_PP_NODE_51) +# define BOOST_PP_NODE_49(p) BOOST_PP_IIF(p(49), 49, 50) +# define BOOST_PP_NODE_51(p) BOOST_PP_IIF(p(51), 51, 52) +# define BOOST_PP_NODE_54(p) BOOST_PP_IIF(p(54), BOOST_PP_NODE_53, BOOST_PP_NODE_55) +# define BOOST_PP_NODE_53(p) BOOST_PP_IIF(p(53), 53, 54) +# define BOOST_PP_NODE_55(p) BOOST_PP_IIF(p(55), 55, 56) +# define BOOST_PP_NODE_60(p) BOOST_PP_IIF(p(60), BOOST_PP_NODE_58, BOOST_PP_NODE_62) +# define BOOST_PP_NODE_58(p) BOOST_PP_IIF(p(58), BOOST_PP_NODE_57, BOOST_PP_NODE_59) +# define BOOST_PP_NODE_57(p) BOOST_PP_IIF(p(57), 57, 58) +# define BOOST_PP_NODE_59(p) BOOST_PP_IIF(p(59), 59, 60) +# define BOOST_PP_NODE_62(p) BOOST_PP_IIF(p(62), BOOST_PP_NODE_61, BOOST_PP_NODE_63) +# define BOOST_PP_NODE_61(p) BOOST_PP_IIF(p(61), 61, 62) +# define BOOST_PP_NODE_63(p) BOOST_PP_IIF(p(63), 63, 64) +# define BOOST_PP_NODE_96(p) BOOST_PP_IIF(p(96), BOOST_PP_NODE_80, BOOST_PP_NODE_112) +# define BOOST_PP_NODE_80(p) BOOST_PP_IIF(p(80), BOOST_PP_NODE_72, BOOST_PP_NODE_88) +# define BOOST_PP_NODE_72(p) BOOST_PP_IIF(p(72), BOOST_PP_NODE_68, BOOST_PP_NODE_76) +# define BOOST_PP_NODE_68(p) BOOST_PP_IIF(p(68), BOOST_PP_NODE_66, BOOST_PP_NODE_70) +# define BOOST_PP_NODE_66(p) BOOST_PP_IIF(p(66), BOOST_PP_NODE_65, BOOST_PP_NODE_67) +# define BOOST_PP_NODE_65(p) BOOST_PP_IIF(p(65), 65, 66) +# define BOOST_PP_NODE_67(p) BOOST_PP_IIF(p(67), 67, 68) +# define BOOST_PP_NODE_70(p) BOOST_PP_IIF(p(70), BOOST_PP_NODE_69, BOOST_PP_NODE_71) +# define BOOST_PP_NODE_69(p) BOOST_PP_IIF(p(69), 69, 70) +# define BOOST_PP_NODE_71(p) BOOST_PP_IIF(p(71), 71, 72) +# define BOOST_PP_NODE_76(p) BOOST_PP_IIF(p(76), BOOST_PP_NODE_74, BOOST_PP_NODE_78) +# define BOOST_PP_NODE_74(p) BOOST_PP_IIF(p(74), BOOST_PP_NODE_73, BOOST_PP_NODE_75) +# define BOOST_PP_NODE_73(p) BOOST_PP_IIF(p(73), 73, 74) +# define BOOST_PP_NODE_75(p) BOOST_PP_IIF(p(75), 75, 76) +# define BOOST_PP_NODE_78(p) BOOST_PP_IIF(p(78), BOOST_PP_NODE_77, BOOST_PP_NODE_79) +# define BOOST_PP_NODE_77(p) BOOST_PP_IIF(p(77), 77, 78) +# define BOOST_PP_NODE_79(p) BOOST_PP_IIF(p(79), 79, 80) +# define BOOST_PP_NODE_88(p) BOOST_PP_IIF(p(88), BOOST_PP_NODE_84, BOOST_PP_NODE_92) +# define BOOST_PP_NODE_84(p) BOOST_PP_IIF(p(84), BOOST_PP_NODE_82, BOOST_PP_NODE_86) +# define BOOST_PP_NODE_82(p) BOOST_PP_IIF(p(82), BOOST_PP_NODE_81, BOOST_PP_NODE_83) +# define BOOST_PP_NODE_81(p) BOOST_PP_IIF(p(81), 81, 82) +# define BOOST_PP_NODE_83(p) BOOST_PP_IIF(p(83), 83, 84) +# define BOOST_PP_NODE_86(p) BOOST_PP_IIF(p(86), BOOST_PP_NODE_85, BOOST_PP_NODE_87) +# define BOOST_PP_NODE_85(p) BOOST_PP_IIF(p(85), 85, 86) +# define BOOST_PP_NODE_87(p) BOOST_PP_IIF(p(87), 87, 88) +# define BOOST_PP_NODE_92(p) BOOST_PP_IIF(p(92), BOOST_PP_NODE_90, BOOST_PP_NODE_94) +# define BOOST_PP_NODE_90(p) BOOST_PP_IIF(p(90), BOOST_PP_NODE_89, BOOST_PP_NODE_91) +# define BOOST_PP_NODE_89(p) BOOST_PP_IIF(p(89), 89, 90) +# define BOOST_PP_NODE_91(p) BOOST_PP_IIF(p(91), 91, 92) +# define BOOST_PP_NODE_94(p) BOOST_PP_IIF(p(94), BOOST_PP_NODE_93, BOOST_PP_NODE_95) +# define BOOST_PP_NODE_93(p) BOOST_PP_IIF(p(93), 93, 94) +# define BOOST_PP_NODE_95(p) BOOST_PP_IIF(p(95), 95, 96) +# define BOOST_PP_NODE_112(p) BOOST_PP_IIF(p(112), BOOST_PP_NODE_104, BOOST_PP_NODE_120) +# define BOOST_PP_NODE_104(p) BOOST_PP_IIF(p(104), BOOST_PP_NODE_100, BOOST_PP_NODE_108) +# define BOOST_PP_NODE_100(p) BOOST_PP_IIF(p(100), BOOST_PP_NODE_98, BOOST_PP_NODE_102) +# define BOOST_PP_NODE_98(p) BOOST_PP_IIF(p(98), BOOST_PP_NODE_97, BOOST_PP_NODE_99) +# define BOOST_PP_NODE_97(p) BOOST_PP_IIF(p(97), 97, 98) +# define BOOST_PP_NODE_99(p) BOOST_PP_IIF(p(99), 99, 100) +# define BOOST_PP_NODE_102(p) BOOST_PP_IIF(p(102), BOOST_PP_NODE_101, BOOST_PP_NODE_103) +# define BOOST_PP_NODE_101(p) BOOST_PP_IIF(p(101), 101, 102) +# define BOOST_PP_NODE_103(p) BOOST_PP_IIF(p(103), 103, 104) +# define BOOST_PP_NODE_108(p) BOOST_PP_IIF(p(108), BOOST_PP_NODE_106, BOOST_PP_NODE_110) +# define BOOST_PP_NODE_106(p) BOOST_PP_IIF(p(106), BOOST_PP_NODE_105, BOOST_PP_NODE_107) +# define BOOST_PP_NODE_105(p) BOOST_PP_IIF(p(105), 105, 106) +# define BOOST_PP_NODE_107(p) BOOST_PP_IIF(p(107), 107, 108) +# define BOOST_PP_NODE_110(p) BOOST_PP_IIF(p(110), BOOST_PP_NODE_109, BOOST_PP_NODE_111) +# define BOOST_PP_NODE_109(p) BOOST_PP_IIF(p(109), 109, 110) +# define BOOST_PP_NODE_111(p) BOOST_PP_IIF(p(111), 111, 112) +# define BOOST_PP_NODE_120(p) BOOST_PP_IIF(p(120), BOOST_PP_NODE_116, BOOST_PP_NODE_124) +# define BOOST_PP_NODE_116(p) BOOST_PP_IIF(p(116), BOOST_PP_NODE_114, BOOST_PP_NODE_118) +# define BOOST_PP_NODE_114(p) BOOST_PP_IIF(p(114), BOOST_PP_NODE_113, BOOST_PP_NODE_115) +# define BOOST_PP_NODE_113(p) BOOST_PP_IIF(p(113), 113, 114) +# define BOOST_PP_NODE_115(p) BOOST_PP_IIF(p(115), 115, 116) +# define BOOST_PP_NODE_118(p) BOOST_PP_IIF(p(118), BOOST_PP_NODE_117, BOOST_PP_NODE_119) +# define BOOST_PP_NODE_117(p) BOOST_PP_IIF(p(117), 117, 118) +# define BOOST_PP_NODE_119(p) BOOST_PP_IIF(p(119), 119, 120) +# define BOOST_PP_NODE_124(p) BOOST_PP_IIF(p(124), BOOST_PP_NODE_122, BOOST_PP_NODE_126) +# define BOOST_PP_NODE_122(p) BOOST_PP_IIF(p(122), BOOST_PP_NODE_121, BOOST_PP_NODE_123) +# define BOOST_PP_NODE_121(p) BOOST_PP_IIF(p(121), 121, 122) +# define BOOST_PP_NODE_123(p) BOOST_PP_IIF(p(123), 123, 124) +# define BOOST_PP_NODE_126(p) BOOST_PP_IIF(p(126), BOOST_PP_NODE_125, BOOST_PP_NODE_127) +# define BOOST_PP_NODE_125(p) BOOST_PP_IIF(p(125), 125, 126) +# define BOOST_PP_NODE_127(p) BOOST_PP_IIF(p(127), 127, 128) +# define BOOST_PP_NODE_192(p) BOOST_PP_IIF(p(192), BOOST_PP_NODE_160, BOOST_PP_NODE_224) +# define BOOST_PP_NODE_160(p) BOOST_PP_IIF(p(160), BOOST_PP_NODE_144, BOOST_PP_NODE_176) +# define BOOST_PP_NODE_144(p) BOOST_PP_IIF(p(144), BOOST_PP_NODE_136, BOOST_PP_NODE_152) +# define BOOST_PP_NODE_136(p) BOOST_PP_IIF(p(136), BOOST_PP_NODE_132, BOOST_PP_NODE_140) +# define BOOST_PP_NODE_132(p) BOOST_PP_IIF(p(132), BOOST_PP_NODE_130, BOOST_PP_NODE_134) +# define BOOST_PP_NODE_130(p) BOOST_PP_IIF(p(130), BOOST_PP_NODE_129, BOOST_PP_NODE_131) +# define BOOST_PP_NODE_129(p) BOOST_PP_IIF(p(129), 129, 130) +# define BOOST_PP_NODE_131(p) BOOST_PP_IIF(p(131), 131, 132) +# define BOOST_PP_NODE_134(p) BOOST_PP_IIF(p(134), BOOST_PP_NODE_133, BOOST_PP_NODE_135) +# define BOOST_PP_NODE_133(p) BOOST_PP_IIF(p(133), 133, 134) +# define BOOST_PP_NODE_135(p) BOOST_PP_IIF(p(135), 135, 136) +# define BOOST_PP_NODE_140(p) BOOST_PP_IIF(p(140), BOOST_PP_NODE_138, BOOST_PP_NODE_142) +# define BOOST_PP_NODE_138(p) BOOST_PP_IIF(p(138), BOOST_PP_NODE_137, BOOST_PP_NODE_139) +# define BOOST_PP_NODE_137(p) BOOST_PP_IIF(p(137), 137, 138) +# define BOOST_PP_NODE_139(p) BOOST_PP_IIF(p(139), 139, 140) +# define BOOST_PP_NODE_142(p) BOOST_PP_IIF(p(142), BOOST_PP_NODE_141, BOOST_PP_NODE_143) +# define BOOST_PP_NODE_141(p) BOOST_PP_IIF(p(141), 141, 142) +# define BOOST_PP_NODE_143(p) BOOST_PP_IIF(p(143), 143, 144) +# define BOOST_PP_NODE_152(p) BOOST_PP_IIF(p(152), BOOST_PP_NODE_148, BOOST_PP_NODE_156) +# define BOOST_PP_NODE_148(p) BOOST_PP_IIF(p(148), BOOST_PP_NODE_146, BOOST_PP_NODE_150) +# define BOOST_PP_NODE_146(p) BOOST_PP_IIF(p(146), BOOST_PP_NODE_145, BOOST_PP_NODE_147) +# define BOOST_PP_NODE_145(p) BOOST_PP_IIF(p(145), 145, 146) +# define BOOST_PP_NODE_147(p) BOOST_PP_IIF(p(147), 147, 148) +# define BOOST_PP_NODE_150(p) BOOST_PP_IIF(p(150), BOOST_PP_NODE_149, BOOST_PP_NODE_151) +# define BOOST_PP_NODE_149(p) BOOST_PP_IIF(p(149), 149, 150) +# define BOOST_PP_NODE_151(p) BOOST_PP_IIF(p(151), 151, 152) +# define BOOST_PP_NODE_156(p) BOOST_PP_IIF(p(156), BOOST_PP_NODE_154, BOOST_PP_NODE_158) +# define BOOST_PP_NODE_154(p) BOOST_PP_IIF(p(154), BOOST_PP_NODE_153, BOOST_PP_NODE_155) +# define BOOST_PP_NODE_153(p) BOOST_PP_IIF(p(153), 153, 154) +# define BOOST_PP_NODE_155(p) BOOST_PP_IIF(p(155), 155, 156) +# define BOOST_PP_NODE_158(p) BOOST_PP_IIF(p(158), BOOST_PP_NODE_157, BOOST_PP_NODE_159) +# define BOOST_PP_NODE_157(p) BOOST_PP_IIF(p(157), 157, 158) +# define BOOST_PP_NODE_159(p) BOOST_PP_IIF(p(159), 159, 160) +# define BOOST_PP_NODE_176(p) BOOST_PP_IIF(p(176), BOOST_PP_NODE_168, BOOST_PP_NODE_184) +# define BOOST_PP_NODE_168(p) BOOST_PP_IIF(p(168), BOOST_PP_NODE_164, BOOST_PP_NODE_172) +# define BOOST_PP_NODE_164(p) BOOST_PP_IIF(p(164), BOOST_PP_NODE_162, BOOST_PP_NODE_166) +# define BOOST_PP_NODE_162(p) BOOST_PP_IIF(p(162), BOOST_PP_NODE_161, BOOST_PP_NODE_163) +# define BOOST_PP_NODE_161(p) BOOST_PP_IIF(p(161), 161, 162) +# define BOOST_PP_NODE_163(p) BOOST_PP_IIF(p(163), 163, 164) +# define BOOST_PP_NODE_166(p) BOOST_PP_IIF(p(166), BOOST_PP_NODE_165, BOOST_PP_NODE_167) +# define BOOST_PP_NODE_165(p) BOOST_PP_IIF(p(165), 165, 166) +# define BOOST_PP_NODE_167(p) BOOST_PP_IIF(p(167), 167, 168) +# define BOOST_PP_NODE_172(p) BOOST_PP_IIF(p(172), BOOST_PP_NODE_170, BOOST_PP_NODE_174) +# define BOOST_PP_NODE_170(p) BOOST_PP_IIF(p(170), BOOST_PP_NODE_169, BOOST_PP_NODE_171) +# define BOOST_PP_NODE_169(p) BOOST_PP_IIF(p(169), 169, 170) +# define BOOST_PP_NODE_171(p) BOOST_PP_IIF(p(171), 171, 172) +# define BOOST_PP_NODE_174(p) BOOST_PP_IIF(p(174), BOOST_PP_NODE_173, BOOST_PP_NODE_175) +# define BOOST_PP_NODE_173(p) BOOST_PP_IIF(p(173), 173, 174) +# define BOOST_PP_NODE_175(p) BOOST_PP_IIF(p(175), 175, 176) +# define BOOST_PP_NODE_184(p) BOOST_PP_IIF(p(184), BOOST_PP_NODE_180, BOOST_PP_NODE_188) +# define BOOST_PP_NODE_180(p) BOOST_PP_IIF(p(180), BOOST_PP_NODE_178, BOOST_PP_NODE_182) +# define BOOST_PP_NODE_178(p) BOOST_PP_IIF(p(178), BOOST_PP_NODE_177, BOOST_PP_NODE_179) +# define BOOST_PP_NODE_177(p) BOOST_PP_IIF(p(177), 177, 178) +# define BOOST_PP_NODE_179(p) BOOST_PP_IIF(p(179), 179, 180) +# define BOOST_PP_NODE_182(p) BOOST_PP_IIF(p(182), BOOST_PP_NODE_181, BOOST_PP_NODE_183) +# define BOOST_PP_NODE_181(p) BOOST_PP_IIF(p(181), 181, 182) +# define BOOST_PP_NODE_183(p) BOOST_PP_IIF(p(183), 183, 184) +# define BOOST_PP_NODE_188(p) BOOST_PP_IIF(p(188), BOOST_PP_NODE_186, BOOST_PP_NODE_190) +# define BOOST_PP_NODE_186(p) BOOST_PP_IIF(p(186), BOOST_PP_NODE_185, BOOST_PP_NODE_187) +# define BOOST_PP_NODE_185(p) BOOST_PP_IIF(p(185), 185, 186) +# define BOOST_PP_NODE_187(p) BOOST_PP_IIF(p(187), 187, 188) +# define BOOST_PP_NODE_190(p) BOOST_PP_IIF(p(190), BOOST_PP_NODE_189, BOOST_PP_NODE_191) +# define BOOST_PP_NODE_189(p) BOOST_PP_IIF(p(189), 189, 190) +# define BOOST_PP_NODE_191(p) BOOST_PP_IIF(p(191), 191, 192) +# define BOOST_PP_NODE_224(p) BOOST_PP_IIF(p(224), BOOST_PP_NODE_208, BOOST_PP_NODE_240) +# define BOOST_PP_NODE_208(p) BOOST_PP_IIF(p(208), BOOST_PP_NODE_200, BOOST_PP_NODE_216) +# define BOOST_PP_NODE_200(p) BOOST_PP_IIF(p(200), BOOST_PP_NODE_196, BOOST_PP_NODE_204) +# define BOOST_PP_NODE_196(p) BOOST_PP_IIF(p(196), BOOST_PP_NODE_194, BOOST_PP_NODE_198) +# define BOOST_PP_NODE_194(p) BOOST_PP_IIF(p(194), BOOST_PP_NODE_193, BOOST_PP_NODE_195) +# define BOOST_PP_NODE_193(p) BOOST_PP_IIF(p(193), 193, 194) +# define BOOST_PP_NODE_195(p) BOOST_PP_IIF(p(195), 195, 196) +# define BOOST_PP_NODE_198(p) BOOST_PP_IIF(p(198), BOOST_PP_NODE_197, BOOST_PP_NODE_199) +# define BOOST_PP_NODE_197(p) BOOST_PP_IIF(p(197), 197, 198) +# define BOOST_PP_NODE_199(p) BOOST_PP_IIF(p(199), 199, 200) +# define BOOST_PP_NODE_204(p) BOOST_PP_IIF(p(204), BOOST_PP_NODE_202, BOOST_PP_NODE_206) +# define BOOST_PP_NODE_202(p) BOOST_PP_IIF(p(202), BOOST_PP_NODE_201, BOOST_PP_NODE_203) +# define BOOST_PP_NODE_201(p) BOOST_PP_IIF(p(201), 201, 202) +# define BOOST_PP_NODE_203(p) BOOST_PP_IIF(p(203), 203, 204) +# define BOOST_PP_NODE_206(p) BOOST_PP_IIF(p(206), BOOST_PP_NODE_205, BOOST_PP_NODE_207) +# define BOOST_PP_NODE_205(p) BOOST_PP_IIF(p(205), 205, 206) +# define BOOST_PP_NODE_207(p) BOOST_PP_IIF(p(207), 207, 208) +# define BOOST_PP_NODE_216(p) BOOST_PP_IIF(p(216), BOOST_PP_NODE_212, BOOST_PP_NODE_220) +# define BOOST_PP_NODE_212(p) BOOST_PP_IIF(p(212), BOOST_PP_NODE_210, BOOST_PP_NODE_214) +# define BOOST_PP_NODE_210(p) BOOST_PP_IIF(p(210), BOOST_PP_NODE_209, BOOST_PP_NODE_211) +# define BOOST_PP_NODE_209(p) BOOST_PP_IIF(p(209), 209, 210) +# define BOOST_PP_NODE_211(p) BOOST_PP_IIF(p(211), 211, 212) +# define BOOST_PP_NODE_214(p) BOOST_PP_IIF(p(214), BOOST_PP_NODE_213, BOOST_PP_NODE_215) +# define BOOST_PP_NODE_213(p) BOOST_PP_IIF(p(213), 213, 214) +# define BOOST_PP_NODE_215(p) BOOST_PP_IIF(p(215), 215, 216) +# define BOOST_PP_NODE_220(p) BOOST_PP_IIF(p(220), BOOST_PP_NODE_218, BOOST_PP_NODE_222) +# define BOOST_PP_NODE_218(p) BOOST_PP_IIF(p(218), BOOST_PP_NODE_217, BOOST_PP_NODE_219) +# define BOOST_PP_NODE_217(p) BOOST_PP_IIF(p(217), 217, 218) +# define BOOST_PP_NODE_219(p) BOOST_PP_IIF(p(219), 219, 220) +# define BOOST_PP_NODE_222(p) BOOST_PP_IIF(p(222), BOOST_PP_NODE_221, BOOST_PP_NODE_223) +# define BOOST_PP_NODE_221(p) BOOST_PP_IIF(p(221), 221, 222) +# define BOOST_PP_NODE_223(p) BOOST_PP_IIF(p(223), 223, 224) +# define BOOST_PP_NODE_240(p) BOOST_PP_IIF(p(240), BOOST_PP_NODE_232, BOOST_PP_NODE_248) +# define BOOST_PP_NODE_232(p) BOOST_PP_IIF(p(232), BOOST_PP_NODE_228, BOOST_PP_NODE_236) +# define BOOST_PP_NODE_228(p) BOOST_PP_IIF(p(228), BOOST_PP_NODE_226, BOOST_PP_NODE_230) +# define BOOST_PP_NODE_226(p) BOOST_PP_IIF(p(226), BOOST_PP_NODE_225, BOOST_PP_NODE_227) +# define BOOST_PP_NODE_225(p) BOOST_PP_IIF(p(225), 225, 226) +# define BOOST_PP_NODE_227(p) BOOST_PP_IIF(p(227), 227, 228) +# define BOOST_PP_NODE_230(p) BOOST_PP_IIF(p(230), BOOST_PP_NODE_229, BOOST_PP_NODE_231) +# define BOOST_PP_NODE_229(p) BOOST_PP_IIF(p(229), 229, 230) +# define BOOST_PP_NODE_231(p) BOOST_PP_IIF(p(231), 231, 232) +# define BOOST_PP_NODE_236(p) BOOST_PP_IIF(p(236), BOOST_PP_NODE_234, BOOST_PP_NODE_238) +# define BOOST_PP_NODE_234(p) BOOST_PP_IIF(p(234), BOOST_PP_NODE_233, BOOST_PP_NODE_235) +# define BOOST_PP_NODE_233(p) BOOST_PP_IIF(p(233), 233, 234) +# define BOOST_PP_NODE_235(p) BOOST_PP_IIF(p(235), 235, 236) +# define BOOST_PP_NODE_238(p) BOOST_PP_IIF(p(238), BOOST_PP_NODE_237, BOOST_PP_NODE_239) +# define BOOST_PP_NODE_237(p) BOOST_PP_IIF(p(237), 237, 238) +# define BOOST_PP_NODE_239(p) BOOST_PP_IIF(p(239), 239, 240) +# define BOOST_PP_NODE_248(p) BOOST_PP_IIF(p(248), BOOST_PP_NODE_244, BOOST_PP_NODE_252) +# define BOOST_PP_NODE_244(p) BOOST_PP_IIF(p(244), BOOST_PP_NODE_242, BOOST_PP_NODE_246) +# define BOOST_PP_NODE_242(p) BOOST_PP_IIF(p(242), BOOST_PP_NODE_241, BOOST_PP_NODE_243) +# define BOOST_PP_NODE_241(p) BOOST_PP_IIF(p(241), 241, 242) +# define BOOST_PP_NODE_243(p) BOOST_PP_IIF(p(243), 243, 244) +# define BOOST_PP_NODE_246(p) BOOST_PP_IIF(p(246), BOOST_PP_NODE_245, BOOST_PP_NODE_247) +# define BOOST_PP_NODE_245(p) BOOST_PP_IIF(p(245), 245, 246) +# define BOOST_PP_NODE_247(p) BOOST_PP_IIF(p(247), 247, 248) +# define BOOST_PP_NODE_252(p) BOOST_PP_IIF(p(252), BOOST_PP_NODE_250, BOOST_PP_NODE_254) +# define BOOST_PP_NODE_250(p) BOOST_PP_IIF(p(250), BOOST_PP_NODE_249, BOOST_PP_NODE_251) +# define BOOST_PP_NODE_249(p) BOOST_PP_IIF(p(249), 249, 250) +# define BOOST_PP_NODE_251(p) BOOST_PP_IIF(p(251), 251, 252) +# define BOOST_PP_NODE_254(p) BOOST_PP_IIF(p(254), BOOST_PP_NODE_253, BOOST_PP_NODE_255) +# define BOOST_PP_NODE_253(p) BOOST_PP_IIF(p(253), 253, 254) +# define BOOST_PP_NODE_255(p) BOOST_PP_IIF(p(255), 255, 256) +# +# endif diff --git a/src/boost/boost/preprocessor/detail/limits/auto_rec_512.hpp b/src/boost/boost/preprocessor/detail/limits/auto_rec_512.hpp new file mode 100644 index 000000000..f3b4ddaa0 --- /dev/null +++ b/src/boost/boost/preprocessor/detail/limits/auto_rec_512.hpp @@ -0,0 +1,276 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_512_HPP +# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_512_HPP +# +# define BOOST_PP_NODE_ENTRY_512(p) BOOST_PP_NODE_256(p)(p)(p)(p)(p)(p)(p)(p)(p) +# +# define BOOST_PP_NODE_256(p) BOOST_PP_IIF(p(256), BOOST_PP_NODE_128, BOOST_PP_NODE_384) +# define BOOST_PP_NODE_384(p) BOOST_PP_IIF(p(384), BOOST_PP_NODE_320, BOOST_PP_NODE_448) +# define BOOST_PP_NODE_320(p) BOOST_PP_IIF(p(320), BOOST_PP_NODE_288, BOOST_PP_NODE_352) +# define BOOST_PP_NODE_288(p) BOOST_PP_IIF(p(288), BOOST_PP_NODE_272, BOOST_PP_NODE_304) +# define BOOST_PP_NODE_272(p) BOOST_PP_IIF(p(272), BOOST_PP_NODE_264, BOOST_PP_NODE_280) +# define BOOST_PP_NODE_264(p) BOOST_PP_IIF(p(264), BOOST_PP_NODE_260, BOOST_PP_NODE_268) +# define BOOST_PP_NODE_260(p) BOOST_PP_IIF(p(260), BOOST_PP_NODE_258, BOOST_PP_NODE_262) +# define BOOST_PP_NODE_258(p) BOOST_PP_IIF(p(258), BOOST_PP_NODE_257, BOOST_PP_NODE_259) +# define BOOST_PP_NODE_257(p) BOOST_PP_IIF(p(257), 257, 258) +# define BOOST_PP_NODE_259(p) BOOST_PP_IIF(p(259), 259, 260) +# define BOOST_PP_NODE_262(p) BOOST_PP_IIF(p(262), BOOST_PP_NODE_261, BOOST_PP_NODE_263) +# define BOOST_PP_NODE_261(p) BOOST_PP_IIF(p(261), 261, 262) +# define BOOST_PP_NODE_263(p) BOOST_PP_IIF(p(263), 263, 264) +# define BOOST_PP_NODE_268(p) BOOST_PP_IIF(p(268), BOOST_PP_NODE_266, BOOST_PP_NODE_270) +# define BOOST_PP_NODE_266(p) BOOST_PP_IIF(p(266), BOOST_PP_NODE_265, BOOST_PP_NODE_267) +# define BOOST_PP_NODE_265(p) BOOST_PP_IIF(p(265), 265, 266) +# define BOOST_PP_NODE_267(p) BOOST_PP_IIF(p(267), 267, 268) +# define BOOST_PP_NODE_270(p) BOOST_PP_IIF(p(270), BOOST_PP_NODE_269, BOOST_PP_NODE_271) +# define BOOST_PP_NODE_269(p) BOOST_PP_IIF(p(269), 269, 270) +# define BOOST_PP_NODE_271(p) BOOST_PP_IIF(p(271), 271, 272) +# define BOOST_PP_NODE_280(p) BOOST_PP_IIF(p(280), BOOST_PP_NODE_276, BOOST_PP_NODE_284) +# define BOOST_PP_NODE_276(p) BOOST_PP_IIF(p(276), BOOST_PP_NODE_274, BOOST_PP_NODE_278) +# define BOOST_PP_NODE_274(p) BOOST_PP_IIF(p(274), BOOST_PP_NODE_273, BOOST_PP_NODE_275) +# define BOOST_PP_NODE_273(p) BOOST_PP_IIF(p(273), 273, 274) +# define BOOST_PP_NODE_275(p) BOOST_PP_IIF(p(275), 275, 276) +# define BOOST_PP_NODE_278(p) BOOST_PP_IIF(p(278), BOOST_PP_NODE_277, BOOST_PP_NODE_279) +# define BOOST_PP_NODE_277(p) BOOST_PP_IIF(p(277), 277, 278) +# define BOOST_PP_NODE_279(p) BOOST_PP_IIF(p(279), 279, 280) +# define BOOST_PP_NODE_284(p) BOOST_PP_IIF(p(284), BOOST_PP_NODE_282, BOOST_PP_NODE_286) +# define BOOST_PP_NODE_282(p) BOOST_PP_IIF(p(282), BOOST_PP_NODE_281, BOOST_PP_NODE_283) +# define BOOST_PP_NODE_281(p) BOOST_PP_IIF(p(281), 281, 282) +# define BOOST_PP_NODE_283(p) BOOST_PP_IIF(p(283), 283, 284) +# define BOOST_PP_NODE_286(p) BOOST_PP_IIF(p(286), BOOST_PP_NODE_285, BOOST_PP_NODE_287) +# define BOOST_PP_NODE_285(p) BOOST_PP_IIF(p(285), 285, 286) +# define BOOST_PP_NODE_287(p) BOOST_PP_IIF(p(287), 287, 288) +# define BOOST_PP_NODE_304(p) BOOST_PP_IIF(p(304), BOOST_PP_NODE_296, BOOST_PP_NODE_312) +# define BOOST_PP_NODE_296(p) BOOST_PP_IIF(p(296), BOOST_PP_NODE_292, BOOST_PP_NODE_300) +# define BOOST_PP_NODE_292(p) BOOST_PP_IIF(p(292), BOOST_PP_NODE_290, BOOST_PP_NODE_294) +# define BOOST_PP_NODE_290(p) BOOST_PP_IIF(p(290), BOOST_PP_NODE_289, BOOST_PP_NODE_291) +# define BOOST_PP_NODE_289(p) BOOST_PP_IIF(p(289), 289, 290) +# define BOOST_PP_NODE_291(p) BOOST_PP_IIF(p(291), 291, 292) +# define BOOST_PP_NODE_294(p) BOOST_PP_IIF(p(294), BOOST_PP_NODE_293, BOOST_PP_NODE_295) +# define BOOST_PP_NODE_293(p) BOOST_PP_IIF(p(293), 293, 294) +# define BOOST_PP_NODE_295(p) BOOST_PP_IIF(p(295), 295, 296) +# define BOOST_PP_NODE_300(p) BOOST_PP_IIF(p(300), BOOST_PP_NODE_298, BOOST_PP_NODE_302) +# define BOOST_PP_NODE_298(p) BOOST_PP_IIF(p(298), BOOST_PP_NODE_297, BOOST_PP_NODE_299) +# define BOOST_PP_NODE_297(p) BOOST_PP_IIF(p(297), 297, 298) +# define BOOST_PP_NODE_299(p) BOOST_PP_IIF(p(299), 299, 300) +# define BOOST_PP_NODE_302(p) BOOST_PP_IIF(p(302), BOOST_PP_NODE_301, BOOST_PP_NODE_303) +# define BOOST_PP_NODE_301(p) BOOST_PP_IIF(p(301), 301, 302) +# define BOOST_PP_NODE_303(p) BOOST_PP_IIF(p(303), 303, 304) +# define BOOST_PP_NODE_312(p) BOOST_PP_IIF(p(312), BOOST_PP_NODE_308, BOOST_PP_NODE_316) +# define BOOST_PP_NODE_308(p) BOOST_PP_IIF(p(308), BOOST_PP_NODE_306, BOOST_PP_NODE_310) +# define BOOST_PP_NODE_306(p) BOOST_PP_IIF(p(306), BOOST_PP_NODE_305, BOOST_PP_NODE_307) +# define BOOST_PP_NODE_305(p) BOOST_PP_IIF(p(305), 305, 306) +# define BOOST_PP_NODE_307(p) BOOST_PP_IIF(p(307), 307, 308) +# define BOOST_PP_NODE_310(p) BOOST_PP_IIF(p(310), BOOST_PP_NODE_309, BOOST_PP_NODE_311) +# define BOOST_PP_NODE_309(p) BOOST_PP_IIF(p(309), 309, 310) +# define BOOST_PP_NODE_311(p) BOOST_PP_IIF(p(311), 311, 312) +# define BOOST_PP_NODE_316(p) BOOST_PP_IIF(p(316), BOOST_PP_NODE_314, BOOST_PP_NODE_318) +# define BOOST_PP_NODE_314(p) BOOST_PP_IIF(p(314), BOOST_PP_NODE_313, BOOST_PP_NODE_315) +# define BOOST_PP_NODE_313(p) BOOST_PP_IIF(p(313), 313, 314) +# define BOOST_PP_NODE_315(p) BOOST_PP_IIF(p(315), 315, 316) +# define BOOST_PP_NODE_318(p) BOOST_PP_IIF(p(318), BOOST_PP_NODE_317, BOOST_PP_NODE_319) +# define BOOST_PP_NODE_317(p) BOOST_PP_IIF(p(317), 317, 318) +# define BOOST_PP_NODE_319(p) BOOST_PP_IIF(p(319), 319, 320) +# define BOOST_PP_NODE_352(p) BOOST_PP_IIF(p(352), BOOST_PP_NODE_336, BOOST_PP_NODE_368) +# define BOOST_PP_NODE_336(p) BOOST_PP_IIF(p(336), BOOST_PP_NODE_328, BOOST_PP_NODE_344) +# define BOOST_PP_NODE_328(p) BOOST_PP_IIF(p(328), BOOST_PP_NODE_324, BOOST_PP_NODE_332) +# define BOOST_PP_NODE_324(p) BOOST_PP_IIF(p(324), BOOST_PP_NODE_322, BOOST_PP_NODE_326) +# define BOOST_PP_NODE_322(p) BOOST_PP_IIF(p(322), BOOST_PP_NODE_321, BOOST_PP_NODE_323) +# define BOOST_PP_NODE_321(p) BOOST_PP_IIF(p(321), 321, 322) +# define BOOST_PP_NODE_323(p) BOOST_PP_IIF(p(323), 323, 324) +# define BOOST_PP_NODE_326(p) BOOST_PP_IIF(p(326), BOOST_PP_NODE_325, BOOST_PP_NODE_327) +# define BOOST_PP_NODE_325(p) BOOST_PP_IIF(p(325), 325, 326) +# define BOOST_PP_NODE_327(p) BOOST_PP_IIF(p(327), 327, 328) +# define BOOST_PP_NODE_332(p) BOOST_PP_IIF(p(332), BOOST_PP_NODE_330, BOOST_PP_NODE_334) +# define BOOST_PP_NODE_330(p) BOOST_PP_IIF(p(330), BOOST_PP_NODE_329, BOOST_PP_NODE_331) +# define BOOST_PP_NODE_329(p) BOOST_PP_IIF(p(329), 329, 330) +# define BOOST_PP_NODE_331(p) BOOST_PP_IIF(p(331), 331, 332) +# define BOOST_PP_NODE_334(p) BOOST_PP_IIF(p(334), BOOST_PP_NODE_333, BOOST_PP_NODE_335) +# define BOOST_PP_NODE_333(p) BOOST_PP_IIF(p(333), 333, 334) +# define BOOST_PP_NODE_335(p) BOOST_PP_IIF(p(335), 335, 336) +# define BOOST_PP_NODE_344(p) BOOST_PP_IIF(p(344), BOOST_PP_NODE_340, BOOST_PP_NODE_348) +# define BOOST_PP_NODE_340(p) BOOST_PP_IIF(p(340), BOOST_PP_NODE_338, BOOST_PP_NODE_342) +# define BOOST_PP_NODE_338(p) BOOST_PP_IIF(p(338), BOOST_PP_NODE_337, BOOST_PP_NODE_339) +# define BOOST_PP_NODE_337(p) BOOST_PP_IIF(p(337), 337, 338) +# define BOOST_PP_NODE_339(p) BOOST_PP_IIF(p(339), 339, 340) +# define BOOST_PP_NODE_342(p) BOOST_PP_IIF(p(342), BOOST_PP_NODE_341, BOOST_PP_NODE_343) +# define BOOST_PP_NODE_341(p) BOOST_PP_IIF(p(341), 341, 342) +# define BOOST_PP_NODE_343(p) BOOST_PP_IIF(p(343), 343, 344) +# define BOOST_PP_NODE_348(p) BOOST_PP_IIF(p(348), BOOST_PP_NODE_346, BOOST_PP_NODE_350) +# define BOOST_PP_NODE_346(p) BOOST_PP_IIF(p(346), BOOST_PP_NODE_345, BOOST_PP_NODE_347) +# define BOOST_PP_NODE_345(p) BOOST_PP_IIF(p(345), 345, 346) +# define BOOST_PP_NODE_347(p) BOOST_PP_IIF(p(347), 347, 348) +# define BOOST_PP_NODE_350(p) BOOST_PP_IIF(p(350), BOOST_PP_NODE_349, BOOST_PP_NODE_351) +# define BOOST_PP_NODE_349(p) BOOST_PP_IIF(p(349), 349, 350) +# define BOOST_PP_NODE_351(p) BOOST_PP_IIF(p(351), 351, 352) +# define BOOST_PP_NODE_368(p) BOOST_PP_IIF(p(368), BOOST_PP_NODE_360, BOOST_PP_NODE_376) +# define BOOST_PP_NODE_360(p) BOOST_PP_IIF(p(360), BOOST_PP_NODE_356, BOOST_PP_NODE_364) +# define BOOST_PP_NODE_356(p) BOOST_PP_IIF(p(356), BOOST_PP_NODE_354, BOOST_PP_NODE_358) +# define BOOST_PP_NODE_354(p) BOOST_PP_IIF(p(354), BOOST_PP_NODE_353, BOOST_PP_NODE_355) +# define BOOST_PP_NODE_353(p) BOOST_PP_IIF(p(353), 353, 354) +# define BOOST_PP_NODE_355(p) BOOST_PP_IIF(p(355), 355, 356) +# define BOOST_PP_NODE_358(p) BOOST_PP_IIF(p(358), BOOST_PP_NODE_357, BOOST_PP_NODE_359) +# define BOOST_PP_NODE_357(p) BOOST_PP_IIF(p(357), 357, 358) +# define BOOST_PP_NODE_359(p) BOOST_PP_IIF(p(359), 359, 360) +# define BOOST_PP_NODE_364(p) BOOST_PP_IIF(p(364), BOOST_PP_NODE_362, BOOST_PP_NODE_366) +# define BOOST_PP_NODE_362(p) BOOST_PP_IIF(p(362), BOOST_PP_NODE_361, BOOST_PP_NODE_363) +# define BOOST_PP_NODE_361(p) BOOST_PP_IIF(p(361), 361, 362) +# define BOOST_PP_NODE_363(p) BOOST_PP_IIF(p(363), 363, 364) +# define BOOST_PP_NODE_366(p) BOOST_PP_IIF(p(366), BOOST_PP_NODE_365, BOOST_PP_NODE_367) +# define BOOST_PP_NODE_365(p) BOOST_PP_IIF(p(365), 365, 366) +# define BOOST_PP_NODE_367(p) BOOST_PP_IIF(p(367), 367, 368) +# define BOOST_PP_NODE_376(p) BOOST_PP_IIF(p(376), BOOST_PP_NODE_372, BOOST_PP_NODE_380) +# define BOOST_PP_NODE_372(p) BOOST_PP_IIF(p(372), BOOST_PP_NODE_370, BOOST_PP_NODE_374) +# define BOOST_PP_NODE_370(p) BOOST_PP_IIF(p(370), BOOST_PP_NODE_369, BOOST_PP_NODE_371) +# define BOOST_PP_NODE_369(p) BOOST_PP_IIF(p(369), 369, 370) +# define BOOST_PP_NODE_371(p) BOOST_PP_IIF(p(371), 371, 372) +# define BOOST_PP_NODE_374(p) BOOST_PP_IIF(p(374), BOOST_PP_NODE_373, BOOST_PP_NODE_375) +# define BOOST_PP_NODE_373(p) BOOST_PP_IIF(p(373), 373, 374) +# define BOOST_PP_NODE_375(p) BOOST_PP_IIF(p(375), 375, 376) +# define BOOST_PP_NODE_380(p) BOOST_PP_IIF(p(380), BOOST_PP_NODE_378, BOOST_PP_NODE_382) +# define BOOST_PP_NODE_378(p) BOOST_PP_IIF(p(378), BOOST_PP_NODE_377, BOOST_PP_NODE_379) +# define BOOST_PP_NODE_377(p) BOOST_PP_IIF(p(377), 377, 378) +# define BOOST_PP_NODE_379(p) BOOST_PP_IIF(p(379), 379, 380) +# define BOOST_PP_NODE_382(p) BOOST_PP_IIF(p(382), BOOST_PP_NODE_381, BOOST_PP_NODE_383) +# define BOOST_PP_NODE_381(p) BOOST_PP_IIF(p(381), 381, 382) +# define BOOST_PP_NODE_383(p) BOOST_PP_IIF(p(383), 383, 384) +# define BOOST_PP_NODE_448(p) BOOST_PP_IIF(p(448), BOOST_PP_NODE_416, BOOST_PP_NODE_480) +# define BOOST_PP_NODE_416(p) BOOST_PP_IIF(p(416), BOOST_PP_NODE_400, BOOST_PP_NODE_432) +# define BOOST_PP_NODE_400(p) BOOST_PP_IIF(p(400), BOOST_PP_NODE_392, BOOST_PP_NODE_408) +# define BOOST_PP_NODE_392(p) BOOST_PP_IIF(p(392), BOOST_PP_NODE_388, BOOST_PP_NODE_396) +# define BOOST_PP_NODE_388(p) BOOST_PP_IIF(p(388), BOOST_PP_NODE_386, BOOST_PP_NODE_390) +# define BOOST_PP_NODE_386(p) BOOST_PP_IIF(p(386), BOOST_PP_NODE_385, BOOST_PP_NODE_387) +# define BOOST_PP_NODE_385(p) BOOST_PP_IIF(p(385), 385, 386) +# define BOOST_PP_NODE_387(p) BOOST_PP_IIF(p(387), 387, 388) +# define BOOST_PP_NODE_390(p) BOOST_PP_IIF(p(390), BOOST_PP_NODE_389, BOOST_PP_NODE_391) +# define BOOST_PP_NODE_389(p) BOOST_PP_IIF(p(389), 389, 390) +# define BOOST_PP_NODE_391(p) BOOST_PP_IIF(p(391), 391, 392) +# define BOOST_PP_NODE_396(p) BOOST_PP_IIF(p(396), BOOST_PP_NODE_394, BOOST_PP_NODE_398) +# define BOOST_PP_NODE_394(p) BOOST_PP_IIF(p(394), BOOST_PP_NODE_393, BOOST_PP_NODE_395) +# define BOOST_PP_NODE_393(p) BOOST_PP_IIF(p(393), 393, 394) +# define BOOST_PP_NODE_395(p) BOOST_PP_IIF(p(395), 395, 396) +# define BOOST_PP_NODE_398(p) BOOST_PP_IIF(p(398), BOOST_PP_NODE_397, BOOST_PP_NODE_399) +# define BOOST_PP_NODE_397(p) BOOST_PP_IIF(p(397), 397, 398) +# define BOOST_PP_NODE_399(p) BOOST_PP_IIF(p(399), 399, 400) +# define BOOST_PP_NODE_408(p) BOOST_PP_IIF(p(408), BOOST_PP_NODE_404, BOOST_PP_NODE_412) +# define BOOST_PP_NODE_404(p) BOOST_PP_IIF(p(404), BOOST_PP_NODE_402, BOOST_PP_NODE_406) +# define BOOST_PP_NODE_402(p) BOOST_PP_IIF(p(402), BOOST_PP_NODE_401, BOOST_PP_NODE_403) +# define BOOST_PP_NODE_401(p) BOOST_PP_IIF(p(401), 401, 402) +# define BOOST_PP_NODE_403(p) BOOST_PP_IIF(p(403), 403, 404) +# define BOOST_PP_NODE_406(p) BOOST_PP_IIF(p(406), BOOST_PP_NODE_405, BOOST_PP_NODE_407) +# define BOOST_PP_NODE_405(p) BOOST_PP_IIF(p(405), 405, 406) +# define BOOST_PP_NODE_407(p) BOOST_PP_IIF(p(407), 407, 408) +# define BOOST_PP_NODE_412(p) BOOST_PP_IIF(p(412), BOOST_PP_NODE_410, BOOST_PP_NODE_414) +# define BOOST_PP_NODE_410(p) BOOST_PP_IIF(p(410), BOOST_PP_NODE_409, BOOST_PP_NODE_411) +# define BOOST_PP_NODE_409(p) BOOST_PP_IIF(p(409), 409, 410) +# define BOOST_PP_NODE_411(p) BOOST_PP_IIF(p(411), 411, 412) +# define BOOST_PP_NODE_414(p) BOOST_PP_IIF(p(414), BOOST_PP_NODE_413, BOOST_PP_NODE_415) +# define BOOST_PP_NODE_413(p) BOOST_PP_IIF(p(413), 413, 414) +# define BOOST_PP_NODE_415(p) BOOST_PP_IIF(p(415), 415, 416) +# define BOOST_PP_NODE_432(p) BOOST_PP_IIF(p(432), BOOST_PP_NODE_424, BOOST_PP_NODE_440) +# define BOOST_PP_NODE_424(p) BOOST_PP_IIF(p(424), BOOST_PP_NODE_420, BOOST_PP_NODE_428) +# define BOOST_PP_NODE_420(p) BOOST_PP_IIF(p(420), BOOST_PP_NODE_418, BOOST_PP_NODE_422) +# define BOOST_PP_NODE_418(p) BOOST_PP_IIF(p(418), BOOST_PP_NODE_417, BOOST_PP_NODE_419) +# define BOOST_PP_NODE_417(p) BOOST_PP_IIF(p(417), 417, 418) +# define BOOST_PP_NODE_419(p) BOOST_PP_IIF(p(419), 419, 420) +# define BOOST_PP_NODE_422(p) BOOST_PP_IIF(p(422), BOOST_PP_NODE_421, BOOST_PP_NODE_423) +# define BOOST_PP_NODE_421(p) BOOST_PP_IIF(p(421), 421, 422) +# define BOOST_PP_NODE_423(p) BOOST_PP_IIF(p(423), 423, 424) +# define BOOST_PP_NODE_428(p) BOOST_PP_IIF(p(428), BOOST_PP_NODE_426, BOOST_PP_NODE_430) +# define BOOST_PP_NODE_426(p) BOOST_PP_IIF(p(426), BOOST_PP_NODE_425, BOOST_PP_NODE_427) +# define BOOST_PP_NODE_425(p) BOOST_PP_IIF(p(425), 425, 426) +# define BOOST_PP_NODE_427(p) BOOST_PP_IIF(p(427), 427, 428) +# define BOOST_PP_NODE_430(p) BOOST_PP_IIF(p(430), BOOST_PP_NODE_429, BOOST_PP_NODE_431) +# define BOOST_PP_NODE_429(p) BOOST_PP_IIF(p(429), 429, 430) +# define BOOST_PP_NODE_431(p) BOOST_PP_IIF(p(431), 431, 432) +# define BOOST_PP_NODE_440(p) BOOST_PP_IIF(p(440), BOOST_PP_NODE_436, BOOST_PP_NODE_444) +# define BOOST_PP_NODE_436(p) BOOST_PP_IIF(p(436), BOOST_PP_NODE_434, BOOST_PP_NODE_438) +# define BOOST_PP_NODE_434(p) BOOST_PP_IIF(p(434), BOOST_PP_NODE_433, BOOST_PP_NODE_435) +# define BOOST_PP_NODE_433(p) BOOST_PP_IIF(p(433), 433, 434) +# define BOOST_PP_NODE_435(p) BOOST_PP_IIF(p(435), 435, 436) +# define BOOST_PP_NODE_438(p) BOOST_PP_IIF(p(438), BOOST_PP_NODE_437, BOOST_PP_NODE_439) +# define BOOST_PP_NODE_437(p) BOOST_PP_IIF(p(437), 437, 438) +# define BOOST_PP_NODE_439(p) BOOST_PP_IIF(p(439), 439, 440) +# define BOOST_PP_NODE_444(p) BOOST_PP_IIF(p(444), BOOST_PP_NODE_442, BOOST_PP_NODE_446) +# define BOOST_PP_NODE_442(p) BOOST_PP_IIF(p(442), BOOST_PP_NODE_441, BOOST_PP_NODE_443) +# define BOOST_PP_NODE_441(p) BOOST_PP_IIF(p(441), 441, 442) +# define BOOST_PP_NODE_443(p) BOOST_PP_IIF(p(443), 443, 444) +# define BOOST_PP_NODE_446(p) BOOST_PP_IIF(p(446), BOOST_PP_NODE_445, BOOST_PP_NODE_447) +# define BOOST_PP_NODE_445(p) BOOST_PP_IIF(p(445), 445, 446) +# define BOOST_PP_NODE_447(p) BOOST_PP_IIF(p(447), 447, 448) +# define BOOST_PP_NODE_480(p) BOOST_PP_IIF(p(480), BOOST_PP_NODE_464, BOOST_PP_NODE_496) +# define BOOST_PP_NODE_464(p) BOOST_PP_IIF(p(464), BOOST_PP_NODE_456, BOOST_PP_NODE_472) +# define BOOST_PP_NODE_456(p) BOOST_PP_IIF(p(456), BOOST_PP_NODE_452, BOOST_PP_NODE_460) +# define BOOST_PP_NODE_452(p) BOOST_PP_IIF(p(452), BOOST_PP_NODE_450, BOOST_PP_NODE_454) +# define BOOST_PP_NODE_450(p) BOOST_PP_IIF(p(450), BOOST_PP_NODE_449, BOOST_PP_NODE_451) +# define BOOST_PP_NODE_449(p) BOOST_PP_IIF(p(449), 449, 450) +# define BOOST_PP_NODE_451(p) BOOST_PP_IIF(p(451), 451, 452) +# define BOOST_PP_NODE_454(p) BOOST_PP_IIF(p(454), BOOST_PP_NODE_453, BOOST_PP_NODE_455) +# define BOOST_PP_NODE_453(p) BOOST_PP_IIF(p(453), 453, 454) +# define BOOST_PP_NODE_455(p) BOOST_PP_IIF(p(455), 455, 456) +# define BOOST_PP_NODE_460(p) BOOST_PP_IIF(p(460), BOOST_PP_NODE_458, BOOST_PP_NODE_462) +# define BOOST_PP_NODE_458(p) BOOST_PP_IIF(p(458), BOOST_PP_NODE_457, BOOST_PP_NODE_459) +# define BOOST_PP_NODE_457(p) BOOST_PP_IIF(p(457), 457, 458) +# define BOOST_PP_NODE_459(p) BOOST_PP_IIF(p(459), 459, 460) +# define BOOST_PP_NODE_462(p) BOOST_PP_IIF(p(462), BOOST_PP_NODE_461, BOOST_PP_NODE_463) +# define BOOST_PP_NODE_461(p) BOOST_PP_IIF(p(461), 461, 462) +# define BOOST_PP_NODE_463(p) BOOST_PP_IIF(p(463), 463, 464) +# define BOOST_PP_NODE_472(p) BOOST_PP_IIF(p(472), BOOST_PP_NODE_468, BOOST_PP_NODE_476) +# define BOOST_PP_NODE_468(p) BOOST_PP_IIF(p(468), BOOST_PP_NODE_466, BOOST_PP_NODE_470) +# define BOOST_PP_NODE_466(p) BOOST_PP_IIF(p(466), BOOST_PP_NODE_465, BOOST_PP_NODE_467) +# define BOOST_PP_NODE_465(p) BOOST_PP_IIF(p(465), 465, 466) +# define BOOST_PP_NODE_467(p) BOOST_PP_IIF(p(467), 467, 468) +# define BOOST_PP_NODE_470(p) BOOST_PP_IIF(p(470), BOOST_PP_NODE_469, BOOST_PP_NODE_471) +# define BOOST_PP_NODE_469(p) BOOST_PP_IIF(p(469), 469, 470) +# define BOOST_PP_NODE_471(p) BOOST_PP_IIF(p(471), 471, 472) +# define BOOST_PP_NODE_476(p) BOOST_PP_IIF(p(476), BOOST_PP_NODE_474, BOOST_PP_NODE_478) +# define BOOST_PP_NODE_474(p) BOOST_PP_IIF(p(474), BOOST_PP_NODE_473, BOOST_PP_NODE_475) +# define BOOST_PP_NODE_473(p) BOOST_PP_IIF(p(473), 473, 474) +# define BOOST_PP_NODE_475(p) BOOST_PP_IIF(p(475), 475, 476) +# define BOOST_PP_NODE_478(p) BOOST_PP_IIF(p(478), BOOST_PP_NODE_477, BOOST_PP_NODE_479) +# define BOOST_PP_NODE_477(p) BOOST_PP_IIF(p(477), 477, 478) +# define BOOST_PP_NODE_479(p) BOOST_PP_IIF(p(479), 479, 480) +# define BOOST_PP_NODE_496(p) BOOST_PP_IIF(p(496), BOOST_PP_NODE_488, BOOST_PP_NODE_504) +# define BOOST_PP_NODE_488(p) BOOST_PP_IIF(p(488), BOOST_PP_NODE_484, BOOST_PP_NODE_492) +# define BOOST_PP_NODE_484(p) BOOST_PP_IIF(p(484), BOOST_PP_NODE_482, BOOST_PP_NODE_486) +# define BOOST_PP_NODE_482(p) BOOST_PP_IIF(p(482), BOOST_PP_NODE_481, BOOST_PP_NODE_483) +# define BOOST_PP_NODE_481(p) BOOST_PP_IIF(p(481), 481, 482) +# define BOOST_PP_NODE_483(p) BOOST_PP_IIF(p(483), 483, 484) +# define BOOST_PP_NODE_486(p) BOOST_PP_IIF(p(486), BOOST_PP_NODE_485, BOOST_PP_NODE_487) +# define BOOST_PP_NODE_485(p) BOOST_PP_IIF(p(485), 485, 486) +# define BOOST_PP_NODE_487(p) BOOST_PP_IIF(p(487), 487, 488) +# define BOOST_PP_NODE_492(p) BOOST_PP_IIF(p(492), BOOST_PP_NODE_490, BOOST_PP_NODE_494) +# define BOOST_PP_NODE_490(p) BOOST_PP_IIF(p(490), BOOST_PP_NODE_489, BOOST_PP_NODE_491) +# define BOOST_PP_NODE_489(p) BOOST_PP_IIF(p(489), 489, 490) +# define BOOST_PP_NODE_491(p) BOOST_PP_IIF(p(491), 491, 492) +# define BOOST_PP_NODE_494(p) BOOST_PP_IIF(p(494), BOOST_PP_NODE_493, BOOST_PP_NODE_495) +# define BOOST_PP_NODE_493(p) BOOST_PP_IIF(p(493), 493, 494) +# define BOOST_PP_NODE_495(p) BOOST_PP_IIF(p(495), 495, 496) +# define BOOST_PP_NODE_504(p) BOOST_PP_IIF(p(504), BOOST_PP_NODE_500, BOOST_PP_NODE_508) +# define BOOST_PP_NODE_500(p) BOOST_PP_IIF(p(500), BOOST_PP_NODE_498, BOOST_PP_NODE_502) +# define BOOST_PP_NODE_498(p) BOOST_PP_IIF(p(498), BOOST_PP_NODE_497, BOOST_PP_NODE_499) +# define BOOST_PP_NODE_497(p) BOOST_PP_IIF(p(497), 497, 498) +# define BOOST_PP_NODE_499(p) BOOST_PP_IIF(p(499), 499, 500) +# define BOOST_PP_NODE_502(p) BOOST_PP_IIF(p(502), BOOST_PP_NODE_501, BOOST_PP_NODE_503) +# define BOOST_PP_NODE_501(p) BOOST_PP_IIF(p(501), 501, 502) +# define BOOST_PP_NODE_503(p) BOOST_PP_IIF(p(503), 503, 504) +# define BOOST_PP_NODE_508(p) BOOST_PP_IIF(p(508), BOOST_PP_NODE_506, BOOST_PP_NODE_510) +# define BOOST_PP_NODE_506(p) BOOST_PP_IIF(p(506), BOOST_PP_NODE_505, BOOST_PP_NODE_507) +# define BOOST_PP_NODE_505(p) BOOST_PP_IIF(p(505), 505, 506) +# define BOOST_PP_NODE_507(p) BOOST_PP_IIF(p(507), 507, 508) +# define BOOST_PP_NODE_510(p) BOOST_PP_IIF(p(510), BOOST_PP_NODE_509, BOOST_PP_NODE_511) +# define BOOST_PP_NODE_509(p) BOOST_PP_IIF(p(509), 509, 510) +# define BOOST_PP_NODE_511(p) BOOST_PP_IIF(p(511), 511, 512) +# +# endif diff --git a/src/boost/boost/preprocessor/detail/split.hpp b/src/boost/boost/preprocessor/detail/split.hpp deleted file mode 100644 index 99d91837f..000000000 --- a/src/boost/boost/preprocessor/detail/split.hpp +++ /dev/null @@ -1,35 +0,0 @@ -# /* ************************************************************************** -# * * -# * (C) Copyright Paul Mensonides 2002. -# * Distributed under the Boost Software License, Version 1.0. (See -# * accompanying file LICENSE_1_0.txt or copy at -# * http://www.boost.org/LICENSE_1_0.txt) -# * * -# ************************************************************************** */ -# -# ifndef BOOST_PREPROCESSOR_DETAIL_SPLIT_HPP -# define BOOST_PREPROCESSOR_DETAIL_SPLIT_HPP -# -# include -# -# /* BOOST_PP_SPLIT */ -# -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() -# define BOOST_PP_SPLIT(n, im) BOOST_PP_SPLIT_I((n, im)) -# define BOOST_PP_SPLIT_I(par) BOOST_PP_SPLIT_II ## par -# define BOOST_PP_SPLIT_II(n, a, b) BOOST_PP_SPLIT_ ## n(a, b) -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() -# define BOOST_PP_SPLIT(n, im) BOOST_PP_SPLIT_I(n((im))) -# define BOOST_PP_SPLIT_I(n) BOOST_PP_SPLIT_ID(BOOST_PP_SPLIT_II_ ## n) -# define BOOST_PP_SPLIT_II_0(s) BOOST_PP_SPLIT_ID(BOOST_PP_SPLIT_0 s) -# define BOOST_PP_SPLIT_II_1(s) BOOST_PP_SPLIT_ID(BOOST_PP_SPLIT_1 s) -# define BOOST_PP_SPLIT_ID(id) id -# else -# define BOOST_PP_SPLIT(n, im) BOOST_PP_SPLIT_I(n)(im) -# define BOOST_PP_SPLIT_I(n) BOOST_PP_SPLIT_ ## n -# endif -# -# define BOOST_PP_SPLIT_0(a, b) a -# define BOOST_PP_SPLIT_1(a, b) b -# -# endif diff --git a/src/boost/boost/preprocessor/enum.hpp b/src/boost/boost/preprocessor/enum.hpp deleted file mode 100644 index a5bd7e06d..000000000 --- a/src/boost/boost/preprocessor/enum.hpp +++ /dev/null @@ -1,17 +0,0 @@ -# /* ************************************************************************** -# * * -# * (C) Copyright Paul Mensonides 2002. -# * 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_ENUM_HPP -# define BOOST_PREPROCESSOR_ENUM_HPP -# -# include -# -# endif diff --git a/src/boost/boost/preprocessor/enum_params.hpp b/src/boost/boost/preprocessor/enum_params.hpp deleted file mode 100644 index 4b033501a..000000000 --- a/src/boost/boost/preprocessor/enum_params.hpp +++ /dev/null @@ -1,17 +0,0 @@ -# /* ************************************************************************** -# * * -# * (C) Copyright Paul Mensonides 2002. -# * 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_ENUM_PARAMS_HPP -# define BOOST_PREPROCESSOR_ENUM_PARAMS_HPP -# -# include -# -# endif diff --git a/src/boost/boost/preprocessor/enum_params_with_a_default.hpp b/src/boost/boost/preprocessor/enum_params_with_a_default.hpp deleted file mode 100644 index ed7f22d00..000000000 --- a/src/boost/boost/preprocessor/enum_params_with_a_default.hpp +++ /dev/null @@ -1,17 +0,0 @@ -# /* ************************************************************************** -# * * -# * (C) Copyright Paul Mensonides 2002. -# * 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_ENUM_PARAMS_WITH_A_DEFAULT_HPP -# define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP -# -# include -# -# endif diff --git a/src/boost/boost/preprocessor/facilities/check_empty.hpp b/src/boost/boost/preprocessor/facilities/check_empty.hpp new file mode 100644 index 000000000..9048b3af4 --- /dev/null +++ b/src/boost/boost/preprocessor/facilities/check_empty.hpp @@ -0,0 +1,19 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2019. +# * Distributed under the Boost Software License, Version 1.0. (See +# * accompanying file LICENSE_1_0.txt or copy at +# * http://www.boost.org/LICENSE_1_0.txt) +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_FACILITIES_CHECK_EMPTY_HPP +# define BOOST_PREPROCESSOR_FACILITIES_CHECK_EMPTY_HPP +# include +# if BOOST_PP_VARIADIC_HAS_OPT() +# include +# define BOOST_PP_CHECK_EMPTY(...) BOOST_PP_IS_EMPTY_OPT(__VA_ARGS__) +# endif /* BOOST_PP_VARIADIC_HAS_OPT() */ +# endif /* BOOST_PREPROCESSOR_FACILITIES_CHECK_EMPTY_HPP */ diff --git a/src/boost/boost/preprocessor/facilities/detail/is_empty.hpp b/src/boost/boost/preprocessor/facilities/detail/is_empty.hpp index c24c92f1f..a5c9bf94d 100644 --- a/src/boost/boost/preprocessor/facilities/detail/is_empty.hpp +++ b/src/boost/boost/preprocessor/facilities/detail/is_empty.hpp @@ -31,8 +31,8 @@ #if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 #define BOOST_PP_DETAIL_IS_EMPTY_PROCESS(param) \ - BOOST_PP_IS_BEGIN_PARENS \ - ( \ + BOOST_PP_IS_BEGIN_PARENS \ + ( \ BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C param () \ ) \ /**/ @@ -40,7 +40,7 @@ #else #define BOOST_PP_DETAIL_IS_EMPTY_PROCESS(...) \ - BOOST_PP_IS_BEGIN_PARENS \ + BOOST_PP_IS_BEGIN_PARENS \ ( \ BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \ ) \ diff --git a/src/boost/boost/preprocessor/facilities/intercept.hpp b/src/boost/boost/preprocessor/facilities/intercept.hpp index 3cbaa67d4..aab3a9673 100644 --- a/src/boost/boost/preprocessor/facilities/intercept.hpp +++ b/src/boost/boost/preprocessor/facilities/intercept.hpp @@ -7,11 +7,17 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # ifndef BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_HPP # define BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # /* BOOST_PP_INTERCEPT */ # # define BOOST_PP_INTERCEPT BOOST_PP_INTERCEPT_ @@ -274,4 +280,27 @@ # define BOOST_PP_INTERCEPT_255 # define BOOST_PP_INTERCEPT_256 # +# else +# +# /* BOOST_PP_INTERCEPT */ +# +# define BOOST_PP_INTERCEPT BOOST_PP_INTERCEPT_ +# +# include +# +# if BOOST_PP_LIMIT_MAG == 256 +# include +# elif BOOST_PP_LIMIT_MAG == 512 +# include +# include +# elif BOOST_PP_LIMIT_MAG == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_MAG limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/facilities/is_empty.hpp b/src/boost/boost/preprocessor/facilities/is_empty.hpp index 6ceb04525..e319d96f9 100644 --- a/src/boost/boost/preprocessor/facilities/is_empty.hpp +++ b/src/boost/boost/preprocessor/facilities/is_empty.hpp @@ -14,43 +14,6 @@ # define BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_HPP # # include -# -# if BOOST_PP_VARIADICS -# # include # -# else -# -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() -# include -# include -# else -# include -# include -# endif -# -# /* BOOST_PP_IS_EMPTY */ -# -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() -# define BOOST_PP_IS_EMPTY(x) BOOST_PP_IS_EMPTY_I(x BOOST_PP_IS_EMPTY_HELPER) -# define BOOST_PP_IS_EMPTY_I(contents) BOOST_PP_TUPLE_ELEM(2, 1, (BOOST_PP_IS_EMPTY_DEF_ ## contents())) -# define BOOST_PP_IS_EMPTY_DEF_BOOST_PP_IS_EMPTY_HELPER 1, BOOST_PP_IDENTITY(1) -# define BOOST_PP_IS_EMPTY_HELPER() , 0 -# else -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() -# define BOOST_PP_IS_EMPTY(x) BOOST_PP_IS_EMPTY_I(BOOST_PP_IS_EMPTY_HELPER x ()) -# define BOOST_PP_IS_EMPTY_I(test) BOOST_PP_IS_EMPTY_II(BOOST_PP_SPLIT(0, BOOST_PP_CAT(BOOST_PP_IS_EMPTY_DEF_, test))) -# define BOOST_PP_IS_EMPTY_II(id) id -# else -# define BOOST_PP_IS_EMPTY(x) BOOST_PP_IS_EMPTY_I((BOOST_PP_IS_EMPTY_HELPER x ())) -# define BOOST_PP_IS_EMPTY_I(par) BOOST_PP_IS_EMPTY_II ## par -# define BOOST_PP_IS_EMPTY_II(test) BOOST_PP_SPLIT(0, BOOST_PP_CAT(BOOST_PP_IS_EMPTY_DEF_, test)) -# endif -# define BOOST_PP_IS_EMPTY_HELPER() 1 -# define BOOST_PP_IS_EMPTY_DEF_1 1, BOOST_PP_NIL -# define BOOST_PP_IS_EMPTY_DEF_BOOST_PP_IS_EMPTY_HELPER 0, BOOST_PP_NIL -# endif -# -# endif /* BOOST_PP_VARIADICS */ -# # endif /* BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_HPP */ diff --git a/src/boost/boost/preprocessor/facilities/is_empty_variadic.hpp b/src/boost/boost/preprocessor/facilities/is_empty_variadic.hpp index 8ce6d4319..ee87fe250 100644 --- a/src/boost/boost/preprocessor/facilities/is_empty_variadic.hpp +++ b/src/boost/boost/preprocessor/facilities/is_empty_variadic.hpp @@ -1,6 +1,6 @@ # /* ************************************************************************** # * * -# * (C) Copyright Edward Diener 2014. +# * (C) Copyright Edward Diener 2014,2019. # * Distributed under the Boost Software License, Version 1.0. (See # * accompanying file LICENSE_1_0.txt or copy at # * http://www.boost.org/LICENSE_1_0.txt) @@ -13,9 +13,6 @@ # define BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_VARIADIC_HPP # # include -# -# if BOOST_PP_VARIADICS -# # include # include # @@ -37,7 +34,34 @@ /**/ #define BOOST_PP_IS_EMPTY_ZERO(param) 0 # else +# if defined(__cplusplus) && __cplusplus > 201703L +# include #define BOOST_PP_IS_EMPTY(...) \ + BOOST_PP_DETAIL_IS_EMPTY_IIF \ + ( \ + BOOST_PP_VARIADIC_HAS_OPT() \ + ) \ + ( \ + BOOST_PP_IS_EMPTY_OPT, \ + BOOST_PP_IS_EMPTY_NO_OPT \ + ) \ + (__VA_ARGS__) \ +/**/ +#define BOOST_PP_IS_EMPTY_FUNCTION2(...) \ + __VA_OPT__(0,) 1 \ +/**/ +#define BOOST_PP_IS_EMPTY_FUNCTION(...) \ + BOOST_PP_IS_EMPTY_FUNCTION2(__VA_ARGS__) \ +/**/ +#define BOOST_PP_IS_EMPTY_OPT(...) \ + BOOST_PP_VARIADIC_HAS_OPT_ELEM0(BOOST_PP_IS_EMPTY_FUNCTION(__VA_ARGS__),) \ +/**/ +# else +#define BOOST_PP_IS_EMPTY(...) \ + BOOST_PP_IS_EMPTY_NO_OPT(__VA_ARGS__) \ +/**/ +# endif /* defined(__cplusplus) && __cplusplus > 201703L */ +#define BOOST_PP_IS_EMPTY_NO_OPT(...) \ BOOST_PP_DETAIL_IS_EMPTY_IIF \ ( \ BOOST_PP_IS_BEGIN_PARENS \ @@ -53,5 +77,4 @@ /**/ #define BOOST_PP_IS_EMPTY_ZERO(...) 0 # endif /* BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 */ -# endif /* BOOST_PP_VARIADICS */ # endif /* BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_VARIADIC_HPP */ diff --git a/src/boost/boost/preprocessor/facilities/limits/intercept_1024.hpp b/src/boost/boost/preprocessor/facilities/limits/intercept_1024.hpp new file mode 100644 index 000000000..5fd223b10 --- /dev/null +++ b/src/boost/boost/preprocessor/facilities/limits/intercept_1024.hpp @@ -0,0 +1,530 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_1024_HPP +# define BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_1024_HPP +# +# define BOOST_PP_INTERCEPT_513 +# define BOOST_PP_INTERCEPT_514 +# define BOOST_PP_INTERCEPT_515 +# define BOOST_PP_INTERCEPT_516 +# define BOOST_PP_INTERCEPT_517 +# define BOOST_PP_INTERCEPT_518 +# define BOOST_PP_INTERCEPT_519 +# define BOOST_PP_INTERCEPT_520 +# define BOOST_PP_INTERCEPT_521 +# define BOOST_PP_INTERCEPT_522 +# define BOOST_PP_INTERCEPT_523 +# define BOOST_PP_INTERCEPT_524 +# define BOOST_PP_INTERCEPT_525 +# define BOOST_PP_INTERCEPT_526 +# define BOOST_PP_INTERCEPT_527 +# define BOOST_PP_INTERCEPT_528 +# define BOOST_PP_INTERCEPT_529 +# define BOOST_PP_INTERCEPT_530 +# define BOOST_PP_INTERCEPT_531 +# define BOOST_PP_INTERCEPT_532 +# define BOOST_PP_INTERCEPT_533 +# define BOOST_PP_INTERCEPT_534 +# define BOOST_PP_INTERCEPT_535 +# define BOOST_PP_INTERCEPT_536 +# define BOOST_PP_INTERCEPT_537 +# define BOOST_PP_INTERCEPT_538 +# define BOOST_PP_INTERCEPT_539 +# define BOOST_PP_INTERCEPT_540 +# define BOOST_PP_INTERCEPT_541 +# define BOOST_PP_INTERCEPT_542 +# define BOOST_PP_INTERCEPT_543 +# define BOOST_PP_INTERCEPT_544 +# define BOOST_PP_INTERCEPT_545 +# define BOOST_PP_INTERCEPT_546 +# define BOOST_PP_INTERCEPT_547 +# define BOOST_PP_INTERCEPT_548 +# define BOOST_PP_INTERCEPT_549 +# define BOOST_PP_INTERCEPT_550 +# define BOOST_PP_INTERCEPT_551 +# define BOOST_PP_INTERCEPT_552 +# define BOOST_PP_INTERCEPT_553 +# define BOOST_PP_INTERCEPT_554 +# define BOOST_PP_INTERCEPT_555 +# define BOOST_PP_INTERCEPT_556 +# define BOOST_PP_INTERCEPT_557 +# define BOOST_PP_INTERCEPT_558 +# define BOOST_PP_INTERCEPT_559 +# define BOOST_PP_INTERCEPT_560 +# define BOOST_PP_INTERCEPT_561 +# define BOOST_PP_INTERCEPT_562 +# define BOOST_PP_INTERCEPT_563 +# define BOOST_PP_INTERCEPT_564 +# define BOOST_PP_INTERCEPT_565 +# define BOOST_PP_INTERCEPT_566 +# define BOOST_PP_INTERCEPT_567 +# define BOOST_PP_INTERCEPT_568 +# define BOOST_PP_INTERCEPT_569 +# define BOOST_PP_INTERCEPT_570 +# define BOOST_PP_INTERCEPT_571 +# define BOOST_PP_INTERCEPT_572 +# define BOOST_PP_INTERCEPT_573 +# define BOOST_PP_INTERCEPT_574 +# define BOOST_PP_INTERCEPT_575 +# define BOOST_PP_INTERCEPT_576 +# define BOOST_PP_INTERCEPT_577 +# define BOOST_PP_INTERCEPT_578 +# define BOOST_PP_INTERCEPT_579 +# define BOOST_PP_INTERCEPT_580 +# define BOOST_PP_INTERCEPT_581 +# define BOOST_PP_INTERCEPT_582 +# define BOOST_PP_INTERCEPT_583 +# define BOOST_PP_INTERCEPT_584 +# define BOOST_PP_INTERCEPT_585 +# define BOOST_PP_INTERCEPT_586 +# define BOOST_PP_INTERCEPT_587 +# define BOOST_PP_INTERCEPT_588 +# define BOOST_PP_INTERCEPT_589 +# define BOOST_PP_INTERCEPT_590 +# define BOOST_PP_INTERCEPT_591 +# define BOOST_PP_INTERCEPT_592 +# define BOOST_PP_INTERCEPT_593 +# define BOOST_PP_INTERCEPT_594 +# define BOOST_PP_INTERCEPT_595 +# define BOOST_PP_INTERCEPT_596 +# define BOOST_PP_INTERCEPT_597 +# define BOOST_PP_INTERCEPT_598 +# define BOOST_PP_INTERCEPT_599 +# define BOOST_PP_INTERCEPT_600 +# define BOOST_PP_INTERCEPT_601 +# define BOOST_PP_INTERCEPT_602 +# define BOOST_PP_INTERCEPT_603 +# define BOOST_PP_INTERCEPT_604 +# define BOOST_PP_INTERCEPT_605 +# define BOOST_PP_INTERCEPT_606 +# define BOOST_PP_INTERCEPT_607 +# define BOOST_PP_INTERCEPT_608 +# define BOOST_PP_INTERCEPT_609 +# define BOOST_PP_INTERCEPT_610 +# define BOOST_PP_INTERCEPT_611 +# define BOOST_PP_INTERCEPT_612 +# define BOOST_PP_INTERCEPT_613 +# define BOOST_PP_INTERCEPT_614 +# define BOOST_PP_INTERCEPT_615 +# define BOOST_PP_INTERCEPT_616 +# define BOOST_PP_INTERCEPT_617 +# define BOOST_PP_INTERCEPT_618 +# define BOOST_PP_INTERCEPT_619 +# define BOOST_PP_INTERCEPT_620 +# define BOOST_PP_INTERCEPT_621 +# define BOOST_PP_INTERCEPT_622 +# define BOOST_PP_INTERCEPT_623 +# define BOOST_PP_INTERCEPT_624 +# define BOOST_PP_INTERCEPT_625 +# define BOOST_PP_INTERCEPT_626 +# define BOOST_PP_INTERCEPT_627 +# define BOOST_PP_INTERCEPT_628 +# define BOOST_PP_INTERCEPT_629 +# define BOOST_PP_INTERCEPT_630 +# define BOOST_PP_INTERCEPT_631 +# define BOOST_PP_INTERCEPT_632 +# define BOOST_PP_INTERCEPT_633 +# define BOOST_PP_INTERCEPT_634 +# define BOOST_PP_INTERCEPT_635 +# define BOOST_PP_INTERCEPT_636 +# define BOOST_PP_INTERCEPT_637 +# define BOOST_PP_INTERCEPT_638 +# define BOOST_PP_INTERCEPT_639 +# define BOOST_PP_INTERCEPT_640 +# define BOOST_PP_INTERCEPT_641 +# define BOOST_PP_INTERCEPT_642 +# define BOOST_PP_INTERCEPT_643 +# define BOOST_PP_INTERCEPT_644 +# define BOOST_PP_INTERCEPT_645 +# define BOOST_PP_INTERCEPT_646 +# define BOOST_PP_INTERCEPT_647 +# define BOOST_PP_INTERCEPT_648 +# define BOOST_PP_INTERCEPT_649 +# define BOOST_PP_INTERCEPT_650 +# define BOOST_PP_INTERCEPT_651 +# define BOOST_PP_INTERCEPT_652 +# define BOOST_PP_INTERCEPT_653 +# define BOOST_PP_INTERCEPT_654 +# define BOOST_PP_INTERCEPT_655 +# define BOOST_PP_INTERCEPT_656 +# define BOOST_PP_INTERCEPT_657 +# define BOOST_PP_INTERCEPT_658 +# define BOOST_PP_INTERCEPT_659 +# define BOOST_PP_INTERCEPT_660 +# define BOOST_PP_INTERCEPT_661 +# define BOOST_PP_INTERCEPT_662 +# define BOOST_PP_INTERCEPT_663 +# define BOOST_PP_INTERCEPT_664 +# define BOOST_PP_INTERCEPT_665 +# define BOOST_PP_INTERCEPT_666 +# define BOOST_PP_INTERCEPT_667 +# define BOOST_PP_INTERCEPT_668 +# define BOOST_PP_INTERCEPT_669 +# define BOOST_PP_INTERCEPT_670 +# define BOOST_PP_INTERCEPT_671 +# define BOOST_PP_INTERCEPT_672 +# define BOOST_PP_INTERCEPT_673 +# define BOOST_PP_INTERCEPT_674 +# define BOOST_PP_INTERCEPT_675 +# define BOOST_PP_INTERCEPT_676 +# define BOOST_PP_INTERCEPT_677 +# define BOOST_PP_INTERCEPT_678 +# define BOOST_PP_INTERCEPT_679 +# define BOOST_PP_INTERCEPT_680 +# define BOOST_PP_INTERCEPT_681 +# define BOOST_PP_INTERCEPT_682 +# define BOOST_PP_INTERCEPT_683 +# define BOOST_PP_INTERCEPT_684 +# define BOOST_PP_INTERCEPT_685 +# define BOOST_PP_INTERCEPT_686 +# define BOOST_PP_INTERCEPT_687 +# define BOOST_PP_INTERCEPT_688 +# define BOOST_PP_INTERCEPT_689 +# define BOOST_PP_INTERCEPT_690 +# define BOOST_PP_INTERCEPT_691 +# define BOOST_PP_INTERCEPT_692 +# define BOOST_PP_INTERCEPT_693 +# define BOOST_PP_INTERCEPT_694 +# define BOOST_PP_INTERCEPT_695 +# define BOOST_PP_INTERCEPT_696 +# define BOOST_PP_INTERCEPT_697 +# define BOOST_PP_INTERCEPT_698 +# define BOOST_PP_INTERCEPT_699 +# define BOOST_PP_INTERCEPT_700 +# define BOOST_PP_INTERCEPT_701 +# define BOOST_PP_INTERCEPT_702 +# define BOOST_PP_INTERCEPT_703 +# define BOOST_PP_INTERCEPT_704 +# define BOOST_PP_INTERCEPT_705 +# define BOOST_PP_INTERCEPT_706 +# define BOOST_PP_INTERCEPT_707 +# define BOOST_PP_INTERCEPT_708 +# define BOOST_PP_INTERCEPT_709 +# define BOOST_PP_INTERCEPT_710 +# define BOOST_PP_INTERCEPT_711 +# define BOOST_PP_INTERCEPT_712 +# define BOOST_PP_INTERCEPT_713 +# define BOOST_PP_INTERCEPT_714 +# define BOOST_PP_INTERCEPT_715 +# define BOOST_PP_INTERCEPT_716 +# define BOOST_PP_INTERCEPT_717 +# define BOOST_PP_INTERCEPT_718 +# define BOOST_PP_INTERCEPT_719 +# define BOOST_PP_INTERCEPT_720 +# define BOOST_PP_INTERCEPT_721 +# define BOOST_PP_INTERCEPT_722 +# define BOOST_PP_INTERCEPT_723 +# define BOOST_PP_INTERCEPT_724 +# define BOOST_PP_INTERCEPT_725 +# define BOOST_PP_INTERCEPT_726 +# define BOOST_PP_INTERCEPT_727 +# define BOOST_PP_INTERCEPT_728 +# define BOOST_PP_INTERCEPT_729 +# define BOOST_PP_INTERCEPT_730 +# define BOOST_PP_INTERCEPT_731 +# define BOOST_PP_INTERCEPT_732 +# define BOOST_PP_INTERCEPT_733 +# define BOOST_PP_INTERCEPT_734 +# define BOOST_PP_INTERCEPT_735 +# define BOOST_PP_INTERCEPT_736 +# define BOOST_PP_INTERCEPT_737 +# define BOOST_PP_INTERCEPT_738 +# define BOOST_PP_INTERCEPT_739 +# define BOOST_PP_INTERCEPT_740 +# define BOOST_PP_INTERCEPT_741 +# define BOOST_PP_INTERCEPT_742 +# define BOOST_PP_INTERCEPT_743 +# define BOOST_PP_INTERCEPT_744 +# define BOOST_PP_INTERCEPT_745 +# define BOOST_PP_INTERCEPT_746 +# define BOOST_PP_INTERCEPT_747 +# define BOOST_PP_INTERCEPT_748 +# define BOOST_PP_INTERCEPT_749 +# define BOOST_PP_INTERCEPT_750 +# define BOOST_PP_INTERCEPT_751 +# define BOOST_PP_INTERCEPT_752 +# define BOOST_PP_INTERCEPT_753 +# define BOOST_PP_INTERCEPT_754 +# define BOOST_PP_INTERCEPT_755 +# define BOOST_PP_INTERCEPT_756 +# define BOOST_PP_INTERCEPT_757 +# define BOOST_PP_INTERCEPT_758 +# define BOOST_PP_INTERCEPT_759 +# define BOOST_PP_INTERCEPT_760 +# define BOOST_PP_INTERCEPT_761 +# define BOOST_PP_INTERCEPT_762 +# define BOOST_PP_INTERCEPT_763 +# define BOOST_PP_INTERCEPT_764 +# define BOOST_PP_INTERCEPT_765 +# define BOOST_PP_INTERCEPT_766 +# define BOOST_PP_INTERCEPT_767 +# define BOOST_PP_INTERCEPT_768 +# define BOOST_PP_INTERCEPT_769 +# define BOOST_PP_INTERCEPT_770 +# define BOOST_PP_INTERCEPT_771 +# define BOOST_PP_INTERCEPT_772 +# define BOOST_PP_INTERCEPT_773 +# define BOOST_PP_INTERCEPT_774 +# define BOOST_PP_INTERCEPT_775 +# define BOOST_PP_INTERCEPT_776 +# define BOOST_PP_INTERCEPT_777 +# define BOOST_PP_INTERCEPT_778 +# define BOOST_PP_INTERCEPT_779 +# define BOOST_PP_INTERCEPT_780 +# define BOOST_PP_INTERCEPT_781 +# define BOOST_PP_INTERCEPT_782 +# define BOOST_PP_INTERCEPT_783 +# define BOOST_PP_INTERCEPT_784 +# define BOOST_PP_INTERCEPT_785 +# define BOOST_PP_INTERCEPT_786 +# define BOOST_PP_INTERCEPT_787 +# define BOOST_PP_INTERCEPT_788 +# define BOOST_PP_INTERCEPT_789 +# define BOOST_PP_INTERCEPT_790 +# define BOOST_PP_INTERCEPT_791 +# define BOOST_PP_INTERCEPT_792 +# define BOOST_PP_INTERCEPT_793 +# define BOOST_PP_INTERCEPT_794 +# define BOOST_PP_INTERCEPT_795 +# define BOOST_PP_INTERCEPT_796 +# define BOOST_PP_INTERCEPT_797 +# define BOOST_PP_INTERCEPT_798 +# define BOOST_PP_INTERCEPT_799 +# define BOOST_PP_INTERCEPT_800 +# define BOOST_PP_INTERCEPT_801 +# define BOOST_PP_INTERCEPT_802 +# define BOOST_PP_INTERCEPT_803 +# define BOOST_PP_INTERCEPT_804 +# define BOOST_PP_INTERCEPT_805 +# define BOOST_PP_INTERCEPT_806 +# define BOOST_PP_INTERCEPT_807 +# define BOOST_PP_INTERCEPT_808 +# define BOOST_PP_INTERCEPT_809 +# define BOOST_PP_INTERCEPT_810 +# define BOOST_PP_INTERCEPT_811 +# define BOOST_PP_INTERCEPT_812 +# define BOOST_PP_INTERCEPT_813 +# define BOOST_PP_INTERCEPT_814 +# define BOOST_PP_INTERCEPT_815 +# define BOOST_PP_INTERCEPT_816 +# define BOOST_PP_INTERCEPT_817 +# define BOOST_PP_INTERCEPT_818 +# define BOOST_PP_INTERCEPT_819 +# define BOOST_PP_INTERCEPT_820 +# define BOOST_PP_INTERCEPT_821 +# define BOOST_PP_INTERCEPT_822 +# define BOOST_PP_INTERCEPT_823 +# define BOOST_PP_INTERCEPT_824 +# define BOOST_PP_INTERCEPT_825 +# define BOOST_PP_INTERCEPT_826 +# define BOOST_PP_INTERCEPT_827 +# define BOOST_PP_INTERCEPT_828 +# define BOOST_PP_INTERCEPT_829 +# define BOOST_PP_INTERCEPT_830 +# define BOOST_PP_INTERCEPT_831 +# define BOOST_PP_INTERCEPT_832 +# define BOOST_PP_INTERCEPT_833 +# define BOOST_PP_INTERCEPT_834 +# define BOOST_PP_INTERCEPT_835 +# define BOOST_PP_INTERCEPT_836 +# define BOOST_PP_INTERCEPT_837 +# define BOOST_PP_INTERCEPT_838 +# define BOOST_PP_INTERCEPT_839 +# define BOOST_PP_INTERCEPT_840 +# define BOOST_PP_INTERCEPT_841 +# define BOOST_PP_INTERCEPT_842 +# define BOOST_PP_INTERCEPT_843 +# define BOOST_PP_INTERCEPT_844 +# define BOOST_PP_INTERCEPT_845 +# define BOOST_PP_INTERCEPT_846 +# define BOOST_PP_INTERCEPT_847 +# define BOOST_PP_INTERCEPT_848 +# define BOOST_PP_INTERCEPT_849 +# define BOOST_PP_INTERCEPT_850 +# define BOOST_PP_INTERCEPT_851 +# define BOOST_PP_INTERCEPT_852 +# define BOOST_PP_INTERCEPT_853 +# define BOOST_PP_INTERCEPT_854 +# define BOOST_PP_INTERCEPT_855 +# define BOOST_PP_INTERCEPT_856 +# define BOOST_PP_INTERCEPT_857 +# define BOOST_PP_INTERCEPT_858 +# define BOOST_PP_INTERCEPT_859 +# define BOOST_PP_INTERCEPT_860 +# define BOOST_PP_INTERCEPT_861 +# define BOOST_PP_INTERCEPT_862 +# define BOOST_PP_INTERCEPT_863 +# define BOOST_PP_INTERCEPT_864 +# define BOOST_PP_INTERCEPT_865 +# define BOOST_PP_INTERCEPT_866 +# define BOOST_PP_INTERCEPT_867 +# define BOOST_PP_INTERCEPT_868 +# define BOOST_PP_INTERCEPT_869 +# define BOOST_PP_INTERCEPT_870 +# define BOOST_PP_INTERCEPT_871 +# define BOOST_PP_INTERCEPT_872 +# define BOOST_PP_INTERCEPT_873 +# define BOOST_PP_INTERCEPT_874 +# define BOOST_PP_INTERCEPT_875 +# define BOOST_PP_INTERCEPT_876 +# define BOOST_PP_INTERCEPT_877 +# define BOOST_PP_INTERCEPT_878 +# define BOOST_PP_INTERCEPT_879 +# define BOOST_PP_INTERCEPT_880 +# define BOOST_PP_INTERCEPT_881 +# define BOOST_PP_INTERCEPT_882 +# define BOOST_PP_INTERCEPT_883 +# define BOOST_PP_INTERCEPT_884 +# define BOOST_PP_INTERCEPT_885 +# define BOOST_PP_INTERCEPT_886 +# define BOOST_PP_INTERCEPT_887 +# define BOOST_PP_INTERCEPT_888 +# define BOOST_PP_INTERCEPT_889 +# define BOOST_PP_INTERCEPT_890 +# define BOOST_PP_INTERCEPT_891 +# define BOOST_PP_INTERCEPT_892 +# define BOOST_PP_INTERCEPT_893 +# define BOOST_PP_INTERCEPT_894 +# define BOOST_PP_INTERCEPT_895 +# define BOOST_PP_INTERCEPT_896 +# define BOOST_PP_INTERCEPT_897 +# define BOOST_PP_INTERCEPT_898 +# define BOOST_PP_INTERCEPT_899 +# define BOOST_PP_INTERCEPT_900 +# define BOOST_PP_INTERCEPT_901 +# define BOOST_PP_INTERCEPT_902 +# define BOOST_PP_INTERCEPT_903 +# define BOOST_PP_INTERCEPT_904 +# define BOOST_PP_INTERCEPT_905 +# define BOOST_PP_INTERCEPT_906 +# define BOOST_PP_INTERCEPT_907 +# define BOOST_PP_INTERCEPT_908 +# define BOOST_PP_INTERCEPT_909 +# define BOOST_PP_INTERCEPT_910 +# define BOOST_PP_INTERCEPT_911 +# define BOOST_PP_INTERCEPT_912 +# define BOOST_PP_INTERCEPT_913 +# define BOOST_PP_INTERCEPT_914 +# define BOOST_PP_INTERCEPT_915 +# define BOOST_PP_INTERCEPT_916 +# define BOOST_PP_INTERCEPT_917 +# define BOOST_PP_INTERCEPT_918 +# define BOOST_PP_INTERCEPT_919 +# define BOOST_PP_INTERCEPT_920 +# define BOOST_PP_INTERCEPT_921 +# define BOOST_PP_INTERCEPT_922 +# define BOOST_PP_INTERCEPT_923 +# define BOOST_PP_INTERCEPT_924 +# define BOOST_PP_INTERCEPT_925 +# define BOOST_PP_INTERCEPT_926 +# define BOOST_PP_INTERCEPT_927 +# define BOOST_PP_INTERCEPT_928 +# define BOOST_PP_INTERCEPT_929 +# define BOOST_PP_INTERCEPT_930 +# define BOOST_PP_INTERCEPT_931 +# define BOOST_PP_INTERCEPT_932 +# define BOOST_PP_INTERCEPT_933 +# define BOOST_PP_INTERCEPT_934 +# define BOOST_PP_INTERCEPT_935 +# define BOOST_PP_INTERCEPT_936 +# define BOOST_PP_INTERCEPT_937 +# define BOOST_PP_INTERCEPT_938 +# define BOOST_PP_INTERCEPT_939 +# define BOOST_PP_INTERCEPT_940 +# define BOOST_PP_INTERCEPT_941 +# define BOOST_PP_INTERCEPT_942 +# define BOOST_PP_INTERCEPT_943 +# define BOOST_PP_INTERCEPT_944 +# define BOOST_PP_INTERCEPT_945 +# define BOOST_PP_INTERCEPT_946 +# define BOOST_PP_INTERCEPT_947 +# define BOOST_PP_INTERCEPT_948 +# define BOOST_PP_INTERCEPT_949 +# define BOOST_PP_INTERCEPT_950 +# define BOOST_PP_INTERCEPT_951 +# define BOOST_PP_INTERCEPT_952 +# define BOOST_PP_INTERCEPT_953 +# define BOOST_PP_INTERCEPT_954 +# define BOOST_PP_INTERCEPT_955 +# define BOOST_PP_INTERCEPT_956 +# define BOOST_PP_INTERCEPT_957 +# define BOOST_PP_INTERCEPT_958 +# define BOOST_PP_INTERCEPT_959 +# define BOOST_PP_INTERCEPT_960 +# define BOOST_PP_INTERCEPT_961 +# define BOOST_PP_INTERCEPT_962 +# define BOOST_PP_INTERCEPT_963 +# define BOOST_PP_INTERCEPT_964 +# define BOOST_PP_INTERCEPT_965 +# define BOOST_PP_INTERCEPT_966 +# define BOOST_PP_INTERCEPT_967 +# define BOOST_PP_INTERCEPT_968 +# define BOOST_PP_INTERCEPT_969 +# define BOOST_PP_INTERCEPT_970 +# define BOOST_PP_INTERCEPT_971 +# define BOOST_PP_INTERCEPT_972 +# define BOOST_PP_INTERCEPT_973 +# define BOOST_PP_INTERCEPT_974 +# define BOOST_PP_INTERCEPT_975 +# define BOOST_PP_INTERCEPT_976 +# define BOOST_PP_INTERCEPT_977 +# define BOOST_PP_INTERCEPT_978 +# define BOOST_PP_INTERCEPT_979 +# define BOOST_PP_INTERCEPT_980 +# define BOOST_PP_INTERCEPT_981 +# define BOOST_PP_INTERCEPT_982 +# define BOOST_PP_INTERCEPT_983 +# define BOOST_PP_INTERCEPT_984 +# define BOOST_PP_INTERCEPT_985 +# define BOOST_PP_INTERCEPT_986 +# define BOOST_PP_INTERCEPT_987 +# define BOOST_PP_INTERCEPT_988 +# define BOOST_PP_INTERCEPT_989 +# define BOOST_PP_INTERCEPT_990 +# define BOOST_PP_INTERCEPT_991 +# define BOOST_PP_INTERCEPT_992 +# define BOOST_PP_INTERCEPT_993 +# define BOOST_PP_INTERCEPT_994 +# define BOOST_PP_INTERCEPT_995 +# define BOOST_PP_INTERCEPT_996 +# define BOOST_PP_INTERCEPT_997 +# define BOOST_PP_INTERCEPT_998 +# define BOOST_PP_INTERCEPT_999 +# define BOOST_PP_INTERCEPT_1000 +# define BOOST_PP_INTERCEPT_1001 +# define BOOST_PP_INTERCEPT_1002 +# define BOOST_PP_INTERCEPT_1003 +# define BOOST_PP_INTERCEPT_1004 +# define BOOST_PP_INTERCEPT_1005 +# define BOOST_PP_INTERCEPT_1006 +# define BOOST_PP_INTERCEPT_1007 +# define BOOST_PP_INTERCEPT_1008 +# define BOOST_PP_INTERCEPT_1009 +# define BOOST_PP_INTERCEPT_1010 +# define BOOST_PP_INTERCEPT_1011 +# define BOOST_PP_INTERCEPT_1012 +# define BOOST_PP_INTERCEPT_1013 +# define BOOST_PP_INTERCEPT_1014 +# define BOOST_PP_INTERCEPT_1015 +# define BOOST_PP_INTERCEPT_1016 +# define BOOST_PP_INTERCEPT_1017 +# define BOOST_PP_INTERCEPT_1018 +# define BOOST_PP_INTERCEPT_1019 +# define BOOST_PP_INTERCEPT_1020 +# define BOOST_PP_INTERCEPT_1021 +# define BOOST_PP_INTERCEPT_1022 +# define BOOST_PP_INTERCEPT_1023 +# define BOOST_PP_INTERCEPT_1024 +# +# endif diff --git a/src/boost/boost/preprocessor/facilities/limits/intercept_256.hpp b/src/boost/boost/preprocessor/facilities/limits/intercept_256.hpp new file mode 100644 index 000000000..bc24a5b9c --- /dev/null +++ b/src/boost/boost/preprocessor/facilities/limits/intercept_256.hpp @@ -0,0 +1,273 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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_FACILITIES_INTERCEPT_256_HPP +# define BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_256_HPP +# +# define BOOST_PP_INTERCEPT_0 +# define BOOST_PP_INTERCEPT_1 +# define BOOST_PP_INTERCEPT_2 +# define BOOST_PP_INTERCEPT_3 +# define BOOST_PP_INTERCEPT_4 +# define BOOST_PP_INTERCEPT_5 +# define BOOST_PP_INTERCEPT_6 +# define BOOST_PP_INTERCEPT_7 +# define BOOST_PP_INTERCEPT_8 +# define BOOST_PP_INTERCEPT_9 +# define BOOST_PP_INTERCEPT_10 +# define BOOST_PP_INTERCEPT_11 +# define BOOST_PP_INTERCEPT_12 +# define BOOST_PP_INTERCEPT_13 +# define BOOST_PP_INTERCEPT_14 +# define BOOST_PP_INTERCEPT_15 +# define BOOST_PP_INTERCEPT_16 +# define BOOST_PP_INTERCEPT_17 +# define BOOST_PP_INTERCEPT_18 +# define BOOST_PP_INTERCEPT_19 +# define BOOST_PP_INTERCEPT_20 +# define BOOST_PP_INTERCEPT_21 +# define BOOST_PP_INTERCEPT_22 +# define BOOST_PP_INTERCEPT_23 +# define BOOST_PP_INTERCEPT_24 +# define BOOST_PP_INTERCEPT_25 +# define BOOST_PP_INTERCEPT_26 +# define BOOST_PP_INTERCEPT_27 +# define BOOST_PP_INTERCEPT_28 +# define BOOST_PP_INTERCEPT_29 +# define BOOST_PP_INTERCEPT_30 +# define BOOST_PP_INTERCEPT_31 +# define BOOST_PP_INTERCEPT_32 +# define BOOST_PP_INTERCEPT_33 +# define BOOST_PP_INTERCEPT_34 +# define BOOST_PP_INTERCEPT_35 +# define BOOST_PP_INTERCEPT_36 +# define BOOST_PP_INTERCEPT_37 +# define BOOST_PP_INTERCEPT_38 +# define BOOST_PP_INTERCEPT_39 +# define BOOST_PP_INTERCEPT_40 +# define BOOST_PP_INTERCEPT_41 +# define BOOST_PP_INTERCEPT_42 +# define BOOST_PP_INTERCEPT_43 +# define BOOST_PP_INTERCEPT_44 +# define BOOST_PP_INTERCEPT_45 +# define BOOST_PP_INTERCEPT_46 +# define BOOST_PP_INTERCEPT_47 +# define BOOST_PP_INTERCEPT_48 +# define BOOST_PP_INTERCEPT_49 +# define BOOST_PP_INTERCEPT_50 +# define BOOST_PP_INTERCEPT_51 +# define BOOST_PP_INTERCEPT_52 +# define BOOST_PP_INTERCEPT_53 +# define BOOST_PP_INTERCEPT_54 +# define BOOST_PP_INTERCEPT_55 +# define BOOST_PP_INTERCEPT_56 +# define BOOST_PP_INTERCEPT_57 +# define BOOST_PP_INTERCEPT_58 +# define BOOST_PP_INTERCEPT_59 +# define BOOST_PP_INTERCEPT_60 +# define BOOST_PP_INTERCEPT_61 +# define BOOST_PP_INTERCEPT_62 +# define BOOST_PP_INTERCEPT_63 +# define BOOST_PP_INTERCEPT_64 +# define BOOST_PP_INTERCEPT_65 +# define BOOST_PP_INTERCEPT_66 +# define BOOST_PP_INTERCEPT_67 +# define BOOST_PP_INTERCEPT_68 +# define BOOST_PP_INTERCEPT_69 +# define BOOST_PP_INTERCEPT_70 +# define BOOST_PP_INTERCEPT_71 +# define BOOST_PP_INTERCEPT_72 +# define BOOST_PP_INTERCEPT_73 +# define BOOST_PP_INTERCEPT_74 +# define BOOST_PP_INTERCEPT_75 +# define BOOST_PP_INTERCEPT_76 +# define BOOST_PP_INTERCEPT_77 +# define BOOST_PP_INTERCEPT_78 +# define BOOST_PP_INTERCEPT_79 +# define BOOST_PP_INTERCEPT_80 +# define BOOST_PP_INTERCEPT_81 +# define BOOST_PP_INTERCEPT_82 +# define BOOST_PP_INTERCEPT_83 +# define BOOST_PP_INTERCEPT_84 +# define BOOST_PP_INTERCEPT_85 +# define BOOST_PP_INTERCEPT_86 +# define BOOST_PP_INTERCEPT_87 +# define BOOST_PP_INTERCEPT_88 +# define BOOST_PP_INTERCEPT_89 +# define BOOST_PP_INTERCEPT_90 +# define BOOST_PP_INTERCEPT_91 +# define BOOST_PP_INTERCEPT_92 +# define BOOST_PP_INTERCEPT_93 +# define BOOST_PP_INTERCEPT_94 +# define BOOST_PP_INTERCEPT_95 +# define BOOST_PP_INTERCEPT_96 +# define BOOST_PP_INTERCEPT_97 +# define BOOST_PP_INTERCEPT_98 +# define BOOST_PP_INTERCEPT_99 +# define BOOST_PP_INTERCEPT_100 +# define BOOST_PP_INTERCEPT_101 +# define BOOST_PP_INTERCEPT_102 +# define BOOST_PP_INTERCEPT_103 +# define BOOST_PP_INTERCEPT_104 +# define BOOST_PP_INTERCEPT_105 +# define BOOST_PP_INTERCEPT_106 +# define BOOST_PP_INTERCEPT_107 +# define BOOST_PP_INTERCEPT_108 +# define BOOST_PP_INTERCEPT_109 +# define BOOST_PP_INTERCEPT_110 +# define BOOST_PP_INTERCEPT_111 +# define BOOST_PP_INTERCEPT_112 +# define BOOST_PP_INTERCEPT_113 +# define BOOST_PP_INTERCEPT_114 +# define BOOST_PP_INTERCEPT_115 +# define BOOST_PP_INTERCEPT_116 +# define BOOST_PP_INTERCEPT_117 +# define BOOST_PP_INTERCEPT_118 +# define BOOST_PP_INTERCEPT_119 +# define BOOST_PP_INTERCEPT_120 +# define BOOST_PP_INTERCEPT_121 +# define BOOST_PP_INTERCEPT_122 +# define BOOST_PP_INTERCEPT_123 +# define BOOST_PP_INTERCEPT_124 +# define BOOST_PP_INTERCEPT_125 +# define BOOST_PP_INTERCEPT_126 +# define BOOST_PP_INTERCEPT_127 +# define BOOST_PP_INTERCEPT_128 +# define BOOST_PP_INTERCEPT_129 +# define BOOST_PP_INTERCEPT_130 +# define BOOST_PP_INTERCEPT_131 +# define BOOST_PP_INTERCEPT_132 +# define BOOST_PP_INTERCEPT_133 +# define BOOST_PP_INTERCEPT_134 +# define BOOST_PP_INTERCEPT_135 +# define BOOST_PP_INTERCEPT_136 +# define BOOST_PP_INTERCEPT_137 +# define BOOST_PP_INTERCEPT_138 +# define BOOST_PP_INTERCEPT_139 +# define BOOST_PP_INTERCEPT_140 +# define BOOST_PP_INTERCEPT_141 +# define BOOST_PP_INTERCEPT_142 +# define BOOST_PP_INTERCEPT_143 +# define BOOST_PP_INTERCEPT_144 +# define BOOST_PP_INTERCEPT_145 +# define BOOST_PP_INTERCEPT_146 +# define BOOST_PP_INTERCEPT_147 +# define BOOST_PP_INTERCEPT_148 +# define BOOST_PP_INTERCEPT_149 +# define BOOST_PP_INTERCEPT_150 +# define BOOST_PP_INTERCEPT_151 +# define BOOST_PP_INTERCEPT_152 +# define BOOST_PP_INTERCEPT_153 +# define BOOST_PP_INTERCEPT_154 +# define BOOST_PP_INTERCEPT_155 +# define BOOST_PP_INTERCEPT_156 +# define BOOST_PP_INTERCEPT_157 +# define BOOST_PP_INTERCEPT_158 +# define BOOST_PP_INTERCEPT_159 +# define BOOST_PP_INTERCEPT_160 +# define BOOST_PP_INTERCEPT_161 +# define BOOST_PP_INTERCEPT_162 +# define BOOST_PP_INTERCEPT_163 +# define BOOST_PP_INTERCEPT_164 +# define BOOST_PP_INTERCEPT_165 +# define BOOST_PP_INTERCEPT_166 +# define BOOST_PP_INTERCEPT_167 +# define BOOST_PP_INTERCEPT_168 +# define BOOST_PP_INTERCEPT_169 +# define BOOST_PP_INTERCEPT_170 +# define BOOST_PP_INTERCEPT_171 +# define BOOST_PP_INTERCEPT_172 +# define BOOST_PP_INTERCEPT_173 +# define BOOST_PP_INTERCEPT_174 +# define BOOST_PP_INTERCEPT_175 +# define BOOST_PP_INTERCEPT_176 +# define BOOST_PP_INTERCEPT_177 +# define BOOST_PP_INTERCEPT_178 +# define BOOST_PP_INTERCEPT_179 +# define BOOST_PP_INTERCEPT_180 +# define BOOST_PP_INTERCEPT_181 +# define BOOST_PP_INTERCEPT_182 +# define BOOST_PP_INTERCEPT_183 +# define BOOST_PP_INTERCEPT_184 +# define BOOST_PP_INTERCEPT_185 +# define BOOST_PP_INTERCEPT_186 +# define BOOST_PP_INTERCEPT_187 +# define BOOST_PP_INTERCEPT_188 +# define BOOST_PP_INTERCEPT_189 +# define BOOST_PP_INTERCEPT_190 +# define BOOST_PP_INTERCEPT_191 +# define BOOST_PP_INTERCEPT_192 +# define BOOST_PP_INTERCEPT_193 +# define BOOST_PP_INTERCEPT_194 +# define BOOST_PP_INTERCEPT_195 +# define BOOST_PP_INTERCEPT_196 +# define BOOST_PP_INTERCEPT_197 +# define BOOST_PP_INTERCEPT_198 +# define BOOST_PP_INTERCEPT_199 +# define BOOST_PP_INTERCEPT_200 +# define BOOST_PP_INTERCEPT_201 +# define BOOST_PP_INTERCEPT_202 +# define BOOST_PP_INTERCEPT_203 +# define BOOST_PP_INTERCEPT_204 +# define BOOST_PP_INTERCEPT_205 +# define BOOST_PP_INTERCEPT_206 +# define BOOST_PP_INTERCEPT_207 +# define BOOST_PP_INTERCEPT_208 +# define BOOST_PP_INTERCEPT_209 +# define BOOST_PP_INTERCEPT_210 +# define BOOST_PP_INTERCEPT_211 +# define BOOST_PP_INTERCEPT_212 +# define BOOST_PP_INTERCEPT_213 +# define BOOST_PP_INTERCEPT_214 +# define BOOST_PP_INTERCEPT_215 +# define BOOST_PP_INTERCEPT_216 +# define BOOST_PP_INTERCEPT_217 +# define BOOST_PP_INTERCEPT_218 +# define BOOST_PP_INTERCEPT_219 +# define BOOST_PP_INTERCEPT_220 +# define BOOST_PP_INTERCEPT_221 +# define BOOST_PP_INTERCEPT_222 +# define BOOST_PP_INTERCEPT_223 +# define BOOST_PP_INTERCEPT_224 +# define BOOST_PP_INTERCEPT_225 +# define BOOST_PP_INTERCEPT_226 +# define BOOST_PP_INTERCEPT_227 +# define BOOST_PP_INTERCEPT_228 +# define BOOST_PP_INTERCEPT_229 +# define BOOST_PP_INTERCEPT_230 +# define BOOST_PP_INTERCEPT_231 +# define BOOST_PP_INTERCEPT_232 +# define BOOST_PP_INTERCEPT_233 +# define BOOST_PP_INTERCEPT_234 +# define BOOST_PP_INTERCEPT_235 +# define BOOST_PP_INTERCEPT_236 +# define BOOST_PP_INTERCEPT_237 +# define BOOST_PP_INTERCEPT_238 +# define BOOST_PP_INTERCEPT_239 +# define BOOST_PP_INTERCEPT_240 +# define BOOST_PP_INTERCEPT_241 +# define BOOST_PP_INTERCEPT_242 +# define BOOST_PP_INTERCEPT_243 +# define BOOST_PP_INTERCEPT_244 +# define BOOST_PP_INTERCEPT_245 +# define BOOST_PP_INTERCEPT_246 +# define BOOST_PP_INTERCEPT_247 +# define BOOST_PP_INTERCEPT_248 +# define BOOST_PP_INTERCEPT_249 +# define BOOST_PP_INTERCEPT_250 +# define BOOST_PP_INTERCEPT_251 +# define BOOST_PP_INTERCEPT_252 +# define BOOST_PP_INTERCEPT_253 +# define BOOST_PP_INTERCEPT_254 +# define BOOST_PP_INTERCEPT_255 +# define BOOST_PP_INTERCEPT_256 +# +# endif diff --git a/src/boost/boost/preprocessor/facilities/limits/intercept_512.hpp b/src/boost/boost/preprocessor/facilities/limits/intercept_512.hpp new file mode 100644 index 000000000..e1512226a --- /dev/null +++ b/src/boost/boost/preprocessor/facilities/limits/intercept_512.hpp @@ -0,0 +1,274 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_512_HPP +# define BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_512_HPP +# +# define BOOST_PP_INTERCEPT_257 +# define BOOST_PP_INTERCEPT_258 +# define BOOST_PP_INTERCEPT_259 +# define BOOST_PP_INTERCEPT_260 +# define BOOST_PP_INTERCEPT_261 +# define BOOST_PP_INTERCEPT_262 +# define BOOST_PP_INTERCEPT_263 +# define BOOST_PP_INTERCEPT_264 +# define BOOST_PP_INTERCEPT_265 +# define BOOST_PP_INTERCEPT_266 +# define BOOST_PP_INTERCEPT_267 +# define BOOST_PP_INTERCEPT_268 +# define BOOST_PP_INTERCEPT_269 +# define BOOST_PP_INTERCEPT_270 +# define BOOST_PP_INTERCEPT_271 +# define BOOST_PP_INTERCEPT_272 +# define BOOST_PP_INTERCEPT_273 +# define BOOST_PP_INTERCEPT_274 +# define BOOST_PP_INTERCEPT_275 +# define BOOST_PP_INTERCEPT_276 +# define BOOST_PP_INTERCEPT_277 +# define BOOST_PP_INTERCEPT_278 +# define BOOST_PP_INTERCEPT_279 +# define BOOST_PP_INTERCEPT_280 +# define BOOST_PP_INTERCEPT_281 +# define BOOST_PP_INTERCEPT_282 +# define BOOST_PP_INTERCEPT_283 +# define BOOST_PP_INTERCEPT_284 +# define BOOST_PP_INTERCEPT_285 +# define BOOST_PP_INTERCEPT_286 +# define BOOST_PP_INTERCEPT_287 +# define BOOST_PP_INTERCEPT_288 +# define BOOST_PP_INTERCEPT_289 +# define BOOST_PP_INTERCEPT_290 +# define BOOST_PP_INTERCEPT_291 +# define BOOST_PP_INTERCEPT_292 +# define BOOST_PP_INTERCEPT_293 +# define BOOST_PP_INTERCEPT_294 +# define BOOST_PP_INTERCEPT_295 +# define BOOST_PP_INTERCEPT_296 +# define BOOST_PP_INTERCEPT_297 +# define BOOST_PP_INTERCEPT_298 +# define BOOST_PP_INTERCEPT_299 +# define BOOST_PP_INTERCEPT_300 +# define BOOST_PP_INTERCEPT_301 +# define BOOST_PP_INTERCEPT_302 +# define BOOST_PP_INTERCEPT_303 +# define BOOST_PP_INTERCEPT_304 +# define BOOST_PP_INTERCEPT_305 +# define BOOST_PP_INTERCEPT_306 +# define BOOST_PP_INTERCEPT_307 +# define BOOST_PP_INTERCEPT_308 +# define BOOST_PP_INTERCEPT_309 +# define BOOST_PP_INTERCEPT_310 +# define BOOST_PP_INTERCEPT_311 +# define BOOST_PP_INTERCEPT_312 +# define BOOST_PP_INTERCEPT_313 +# define BOOST_PP_INTERCEPT_314 +# define BOOST_PP_INTERCEPT_315 +# define BOOST_PP_INTERCEPT_316 +# define BOOST_PP_INTERCEPT_317 +# define BOOST_PP_INTERCEPT_318 +# define BOOST_PP_INTERCEPT_319 +# define BOOST_PP_INTERCEPT_320 +# define BOOST_PP_INTERCEPT_321 +# define BOOST_PP_INTERCEPT_322 +# define BOOST_PP_INTERCEPT_323 +# define BOOST_PP_INTERCEPT_324 +# define BOOST_PP_INTERCEPT_325 +# define BOOST_PP_INTERCEPT_326 +# define BOOST_PP_INTERCEPT_327 +# define BOOST_PP_INTERCEPT_328 +# define BOOST_PP_INTERCEPT_329 +# define BOOST_PP_INTERCEPT_330 +# define BOOST_PP_INTERCEPT_331 +# define BOOST_PP_INTERCEPT_332 +# define BOOST_PP_INTERCEPT_333 +# define BOOST_PP_INTERCEPT_334 +# define BOOST_PP_INTERCEPT_335 +# define BOOST_PP_INTERCEPT_336 +# define BOOST_PP_INTERCEPT_337 +# define BOOST_PP_INTERCEPT_338 +# define BOOST_PP_INTERCEPT_339 +# define BOOST_PP_INTERCEPT_340 +# define BOOST_PP_INTERCEPT_341 +# define BOOST_PP_INTERCEPT_342 +# define BOOST_PP_INTERCEPT_343 +# define BOOST_PP_INTERCEPT_344 +# define BOOST_PP_INTERCEPT_345 +# define BOOST_PP_INTERCEPT_346 +# define BOOST_PP_INTERCEPT_347 +# define BOOST_PP_INTERCEPT_348 +# define BOOST_PP_INTERCEPT_349 +# define BOOST_PP_INTERCEPT_350 +# define BOOST_PP_INTERCEPT_351 +# define BOOST_PP_INTERCEPT_352 +# define BOOST_PP_INTERCEPT_353 +# define BOOST_PP_INTERCEPT_354 +# define BOOST_PP_INTERCEPT_355 +# define BOOST_PP_INTERCEPT_356 +# define BOOST_PP_INTERCEPT_357 +# define BOOST_PP_INTERCEPT_358 +# define BOOST_PP_INTERCEPT_359 +# define BOOST_PP_INTERCEPT_360 +# define BOOST_PP_INTERCEPT_361 +# define BOOST_PP_INTERCEPT_362 +# define BOOST_PP_INTERCEPT_363 +# define BOOST_PP_INTERCEPT_364 +# define BOOST_PP_INTERCEPT_365 +# define BOOST_PP_INTERCEPT_366 +# define BOOST_PP_INTERCEPT_367 +# define BOOST_PP_INTERCEPT_368 +# define BOOST_PP_INTERCEPT_369 +# define BOOST_PP_INTERCEPT_370 +# define BOOST_PP_INTERCEPT_371 +# define BOOST_PP_INTERCEPT_372 +# define BOOST_PP_INTERCEPT_373 +# define BOOST_PP_INTERCEPT_374 +# define BOOST_PP_INTERCEPT_375 +# define BOOST_PP_INTERCEPT_376 +# define BOOST_PP_INTERCEPT_377 +# define BOOST_PP_INTERCEPT_378 +# define BOOST_PP_INTERCEPT_379 +# define BOOST_PP_INTERCEPT_380 +# define BOOST_PP_INTERCEPT_381 +# define BOOST_PP_INTERCEPT_382 +# define BOOST_PP_INTERCEPT_383 +# define BOOST_PP_INTERCEPT_384 +# define BOOST_PP_INTERCEPT_385 +# define BOOST_PP_INTERCEPT_386 +# define BOOST_PP_INTERCEPT_387 +# define BOOST_PP_INTERCEPT_388 +# define BOOST_PP_INTERCEPT_389 +# define BOOST_PP_INTERCEPT_390 +# define BOOST_PP_INTERCEPT_391 +# define BOOST_PP_INTERCEPT_392 +# define BOOST_PP_INTERCEPT_393 +# define BOOST_PP_INTERCEPT_394 +# define BOOST_PP_INTERCEPT_395 +# define BOOST_PP_INTERCEPT_396 +# define BOOST_PP_INTERCEPT_397 +# define BOOST_PP_INTERCEPT_398 +# define BOOST_PP_INTERCEPT_399 +# define BOOST_PP_INTERCEPT_400 +# define BOOST_PP_INTERCEPT_401 +# define BOOST_PP_INTERCEPT_402 +# define BOOST_PP_INTERCEPT_403 +# define BOOST_PP_INTERCEPT_404 +# define BOOST_PP_INTERCEPT_405 +# define BOOST_PP_INTERCEPT_406 +# define BOOST_PP_INTERCEPT_407 +# define BOOST_PP_INTERCEPT_408 +# define BOOST_PP_INTERCEPT_409 +# define BOOST_PP_INTERCEPT_410 +# define BOOST_PP_INTERCEPT_411 +# define BOOST_PP_INTERCEPT_412 +# define BOOST_PP_INTERCEPT_413 +# define BOOST_PP_INTERCEPT_414 +# define BOOST_PP_INTERCEPT_415 +# define BOOST_PP_INTERCEPT_416 +# define BOOST_PP_INTERCEPT_417 +# define BOOST_PP_INTERCEPT_418 +# define BOOST_PP_INTERCEPT_419 +# define BOOST_PP_INTERCEPT_420 +# define BOOST_PP_INTERCEPT_421 +# define BOOST_PP_INTERCEPT_422 +# define BOOST_PP_INTERCEPT_423 +# define BOOST_PP_INTERCEPT_424 +# define BOOST_PP_INTERCEPT_425 +# define BOOST_PP_INTERCEPT_426 +# define BOOST_PP_INTERCEPT_427 +# define BOOST_PP_INTERCEPT_428 +# define BOOST_PP_INTERCEPT_429 +# define BOOST_PP_INTERCEPT_430 +# define BOOST_PP_INTERCEPT_431 +# define BOOST_PP_INTERCEPT_432 +# define BOOST_PP_INTERCEPT_433 +# define BOOST_PP_INTERCEPT_434 +# define BOOST_PP_INTERCEPT_435 +# define BOOST_PP_INTERCEPT_436 +# define BOOST_PP_INTERCEPT_437 +# define BOOST_PP_INTERCEPT_438 +# define BOOST_PP_INTERCEPT_439 +# define BOOST_PP_INTERCEPT_440 +# define BOOST_PP_INTERCEPT_441 +# define BOOST_PP_INTERCEPT_442 +# define BOOST_PP_INTERCEPT_443 +# define BOOST_PP_INTERCEPT_444 +# define BOOST_PP_INTERCEPT_445 +# define BOOST_PP_INTERCEPT_446 +# define BOOST_PP_INTERCEPT_447 +# define BOOST_PP_INTERCEPT_448 +# define BOOST_PP_INTERCEPT_449 +# define BOOST_PP_INTERCEPT_450 +# define BOOST_PP_INTERCEPT_451 +# define BOOST_PP_INTERCEPT_452 +# define BOOST_PP_INTERCEPT_453 +# define BOOST_PP_INTERCEPT_454 +# define BOOST_PP_INTERCEPT_455 +# define BOOST_PP_INTERCEPT_456 +# define BOOST_PP_INTERCEPT_457 +# define BOOST_PP_INTERCEPT_458 +# define BOOST_PP_INTERCEPT_459 +# define BOOST_PP_INTERCEPT_460 +# define BOOST_PP_INTERCEPT_461 +# define BOOST_PP_INTERCEPT_462 +# define BOOST_PP_INTERCEPT_463 +# define BOOST_PP_INTERCEPT_464 +# define BOOST_PP_INTERCEPT_465 +# define BOOST_PP_INTERCEPT_466 +# define BOOST_PP_INTERCEPT_467 +# define BOOST_PP_INTERCEPT_468 +# define BOOST_PP_INTERCEPT_469 +# define BOOST_PP_INTERCEPT_470 +# define BOOST_PP_INTERCEPT_471 +# define BOOST_PP_INTERCEPT_472 +# define BOOST_PP_INTERCEPT_473 +# define BOOST_PP_INTERCEPT_474 +# define BOOST_PP_INTERCEPT_475 +# define BOOST_PP_INTERCEPT_476 +# define BOOST_PP_INTERCEPT_477 +# define BOOST_PP_INTERCEPT_478 +# define BOOST_PP_INTERCEPT_479 +# define BOOST_PP_INTERCEPT_480 +# define BOOST_PP_INTERCEPT_481 +# define BOOST_PP_INTERCEPT_482 +# define BOOST_PP_INTERCEPT_483 +# define BOOST_PP_INTERCEPT_484 +# define BOOST_PP_INTERCEPT_485 +# define BOOST_PP_INTERCEPT_486 +# define BOOST_PP_INTERCEPT_487 +# define BOOST_PP_INTERCEPT_488 +# define BOOST_PP_INTERCEPT_489 +# define BOOST_PP_INTERCEPT_490 +# define BOOST_PP_INTERCEPT_491 +# define BOOST_PP_INTERCEPT_492 +# define BOOST_PP_INTERCEPT_493 +# define BOOST_PP_INTERCEPT_494 +# define BOOST_PP_INTERCEPT_495 +# define BOOST_PP_INTERCEPT_496 +# define BOOST_PP_INTERCEPT_497 +# define BOOST_PP_INTERCEPT_498 +# define BOOST_PP_INTERCEPT_499 +# define BOOST_PP_INTERCEPT_500 +# define BOOST_PP_INTERCEPT_501 +# define BOOST_PP_INTERCEPT_502 +# define BOOST_PP_INTERCEPT_503 +# define BOOST_PP_INTERCEPT_504 +# define BOOST_PP_INTERCEPT_505 +# define BOOST_PP_INTERCEPT_506 +# define BOOST_PP_INTERCEPT_507 +# define BOOST_PP_INTERCEPT_508 +# define BOOST_PP_INTERCEPT_509 +# define BOOST_PP_INTERCEPT_510 +# define BOOST_PP_INTERCEPT_511 +# define BOOST_PP_INTERCEPT_512 +# +# endif diff --git a/src/boost/boost/preprocessor/facilities/overload.hpp b/src/boost/boost/preprocessor/facilities/overload.hpp index 105d0a1a9..fe5648bac 100644 --- a/src/boost/boost/preprocessor/facilities/overload.hpp +++ b/src/boost/boost/preprocessor/facilities/overload.hpp @@ -18,8 +18,6 @@ # # /* BOOST_PP_OVERLOAD */ # -# if BOOST_PP_VARIADICS -# define BOOST_PP_OVERLOAD(prefix, ...) BOOST_PP_CAT(prefix, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)) -# endif +# define BOOST_PP_OVERLOAD(prefix, ...) BOOST_PP_CAT(prefix, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)) # # endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/forward1.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/forward1.hpp index 2ee8eeb23..8fdc9e414 100644 --- a/src/boost/boost/preprocessor/iteration/detail/iter/forward1.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/iter/forward1.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # if defined(BOOST_PP_ITERATION_LIMITS) @@ -42,6 +44,11 @@ # if (BOOST_PP_ITERATION_START_1) > (BOOST_PP_ITERATION_FINISH_1) # include # else +# +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_ITERATION_START_1 <= 0 && BOOST_PP_ITERATION_FINISH_1 >= 0 # define BOOST_PP_ITERATION_1 0 # include BOOST_PP_FILENAME_1 @@ -1327,6 +1334,26 @@ # include BOOST_PP_FILENAME_1 # undef BOOST_PP_ITERATION_1 # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif +# # endif # # undef BOOST_PP_IS_ITERATING diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/forward2.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/forward2.hpp index 6088f5ba1..66159db54 100644 --- a/src/boost/boost/preprocessor/iteration/detail/iter/forward2.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/iter/forward2.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # if defined(BOOST_PP_ITERATION_LIMITS) @@ -40,6 +42,11 @@ # if (BOOST_PP_ITERATION_START_2) > (BOOST_PP_ITERATION_FINISH_2) # include # else +# +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_ITERATION_START_2 <= 0 && BOOST_PP_ITERATION_FINISH_2 >= 0 # define BOOST_PP_ITERATION_2 0 # include BOOST_PP_FILENAME_2 @@ -1325,6 +1332,26 @@ # include BOOST_PP_FILENAME_2 # undef BOOST_PP_ITERATION_2 # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif +# # endif # # undef BOOST_PP_ITERATION_DEPTH diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/forward3.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/forward3.hpp index 010d68731..268a91828 100644 --- a/src/boost/boost/preprocessor/iteration/detail/iter/forward3.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/iter/forward3.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # if defined(BOOST_PP_ITERATION_LIMITS) @@ -40,6 +42,11 @@ # if (BOOST_PP_ITERATION_START_3) > (BOOST_PP_ITERATION_FINISH_3) # include # else +# +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_ITERATION_START_3 <= 0 && BOOST_PP_ITERATION_FINISH_3 >= 0 # define BOOST_PP_ITERATION_3 0 # include BOOST_PP_FILENAME_3 @@ -1325,6 +1332,26 @@ # include BOOST_PP_FILENAME_3 # undef BOOST_PP_ITERATION_3 # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif +# # endif # # undef BOOST_PP_ITERATION_DEPTH diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/forward4.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/forward4.hpp index aadc3120c..3c1612606 100644 --- a/src/boost/boost/preprocessor/iteration/detail/iter/forward4.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/iter/forward4.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # if defined(BOOST_PP_ITERATION_LIMITS) @@ -40,6 +42,11 @@ # if (BOOST_PP_ITERATION_START_4) > (BOOST_PP_ITERATION_FINISH_4) # include # else +# +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_ITERATION_START_4 <= 0 && BOOST_PP_ITERATION_FINISH_4 >= 0 # define BOOST_PP_ITERATION_4 0 # include BOOST_PP_FILENAME_4 @@ -1325,6 +1332,26 @@ # include BOOST_PP_FILENAME_4 # undef BOOST_PP_ITERATION_4 # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif +# # endif # # undef BOOST_PP_ITERATION_DEPTH diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/forward5.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/forward5.hpp index 94fc06a96..9c1a6a3c9 100644 --- a/src/boost/boost/preprocessor/iteration/detail/iter/forward5.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/iter/forward5.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # if defined(BOOST_PP_ITERATION_LIMITS) @@ -40,6 +42,11 @@ # if (BOOST_PP_ITERATION_START_5) > (BOOST_PP_ITERATION_FINISH_5) # include # else +# +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_ITERATION_START_5 <= 0 && BOOST_PP_ITERATION_FINISH_5 >= 0 # define BOOST_PP_ITERATION_5 0 # include BOOST_PP_FILENAME_5 @@ -1325,6 +1332,26 @@ # include BOOST_PP_FILENAME_5 # undef BOOST_PP_ITERATION_5 # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif +# # endif # # undef BOOST_PP_ITERATION_DEPTH diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward1_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward1_1024.hpp new file mode 100644 index 000000000..b53632a6c --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward1_1024.hpp @@ -0,0 +1,2573 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_START_1 <= 513 && BOOST_PP_ITERATION_FINISH_1 >= 513 +# define BOOST_PP_ITERATION_1 513 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 514 && BOOST_PP_ITERATION_FINISH_1 >= 514 +# define BOOST_PP_ITERATION_1 514 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 515 && BOOST_PP_ITERATION_FINISH_1 >= 515 +# define BOOST_PP_ITERATION_1 515 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 516 && BOOST_PP_ITERATION_FINISH_1 >= 516 +# define BOOST_PP_ITERATION_1 516 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 517 && BOOST_PP_ITERATION_FINISH_1 >= 517 +# define BOOST_PP_ITERATION_1 517 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 518 && BOOST_PP_ITERATION_FINISH_1 >= 518 +# define BOOST_PP_ITERATION_1 518 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 519 && BOOST_PP_ITERATION_FINISH_1 >= 519 +# define BOOST_PP_ITERATION_1 519 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 520 && BOOST_PP_ITERATION_FINISH_1 >= 520 +# define BOOST_PP_ITERATION_1 520 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 521 && BOOST_PP_ITERATION_FINISH_1 >= 521 +# define BOOST_PP_ITERATION_1 521 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 522 && BOOST_PP_ITERATION_FINISH_1 >= 522 +# define BOOST_PP_ITERATION_1 522 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 523 && BOOST_PP_ITERATION_FINISH_1 >= 523 +# define BOOST_PP_ITERATION_1 523 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 524 && BOOST_PP_ITERATION_FINISH_1 >= 524 +# define BOOST_PP_ITERATION_1 524 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 525 && BOOST_PP_ITERATION_FINISH_1 >= 525 +# define BOOST_PP_ITERATION_1 525 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 526 && BOOST_PP_ITERATION_FINISH_1 >= 526 +# define BOOST_PP_ITERATION_1 526 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 527 && BOOST_PP_ITERATION_FINISH_1 >= 527 +# define BOOST_PP_ITERATION_1 527 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 528 && BOOST_PP_ITERATION_FINISH_1 >= 528 +# define BOOST_PP_ITERATION_1 528 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 529 && BOOST_PP_ITERATION_FINISH_1 >= 529 +# define BOOST_PP_ITERATION_1 529 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 530 && BOOST_PP_ITERATION_FINISH_1 >= 530 +# define BOOST_PP_ITERATION_1 530 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 531 && BOOST_PP_ITERATION_FINISH_1 >= 531 +# define BOOST_PP_ITERATION_1 531 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 532 && BOOST_PP_ITERATION_FINISH_1 >= 532 +# define BOOST_PP_ITERATION_1 532 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 533 && BOOST_PP_ITERATION_FINISH_1 >= 533 +# define BOOST_PP_ITERATION_1 533 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 534 && BOOST_PP_ITERATION_FINISH_1 >= 534 +# define BOOST_PP_ITERATION_1 534 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 535 && BOOST_PP_ITERATION_FINISH_1 >= 535 +# define BOOST_PP_ITERATION_1 535 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 536 && BOOST_PP_ITERATION_FINISH_1 >= 536 +# define BOOST_PP_ITERATION_1 536 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 537 && BOOST_PP_ITERATION_FINISH_1 >= 537 +# define BOOST_PP_ITERATION_1 537 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 538 && BOOST_PP_ITERATION_FINISH_1 >= 538 +# define BOOST_PP_ITERATION_1 538 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 539 && BOOST_PP_ITERATION_FINISH_1 >= 539 +# define BOOST_PP_ITERATION_1 539 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 540 && BOOST_PP_ITERATION_FINISH_1 >= 540 +# define BOOST_PP_ITERATION_1 540 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 541 && BOOST_PP_ITERATION_FINISH_1 >= 541 +# define BOOST_PP_ITERATION_1 541 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 542 && BOOST_PP_ITERATION_FINISH_1 >= 542 +# define BOOST_PP_ITERATION_1 542 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 543 && BOOST_PP_ITERATION_FINISH_1 >= 543 +# define BOOST_PP_ITERATION_1 543 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 544 && BOOST_PP_ITERATION_FINISH_1 >= 544 +# define BOOST_PP_ITERATION_1 544 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 545 && BOOST_PP_ITERATION_FINISH_1 >= 545 +# define BOOST_PP_ITERATION_1 545 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 546 && BOOST_PP_ITERATION_FINISH_1 >= 546 +# define BOOST_PP_ITERATION_1 546 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 547 && BOOST_PP_ITERATION_FINISH_1 >= 547 +# define BOOST_PP_ITERATION_1 547 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 548 && BOOST_PP_ITERATION_FINISH_1 >= 548 +# define BOOST_PP_ITERATION_1 548 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 549 && BOOST_PP_ITERATION_FINISH_1 >= 549 +# define BOOST_PP_ITERATION_1 549 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 550 && BOOST_PP_ITERATION_FINISH_1 >= 550 +# define BOOST_PP_ITERATION_1 550 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 551 && BOOST_PP_ITERATION_FINISH_1 >= 551 +# define BOOST_PP_ITERATION_1 551 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 552 && BOOST_PP_ITERATION_FINISH_1 >= 552 +# define BOOST_PP_ITERATION_1 552 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 553 && BOOST_PP_ITERATION_FINISH_1 >= 553 +# define BOOST_PP_ITERATION_1 553 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 554 && BOOST_PP_ITERATION_FINISH_1 >= 554 +# define BOOST_PP_ITERATION_1 554 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 555 && BOOST_PP_ITERATION_FINISH_1 >= 555 +# define BOOST_PP_ITERATION_1 555 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 556 && BOOST_PP_ITERATION_FINISH_1 >= 556 +# define BOOST_PP_ITERATION_1 556 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 557 && BOOST_PP_ITERATION_FINISH_1 >= 557 +# define BOOST_PP_ITERATION_1 557 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 558 && BOOST_PP_ITERATION_FINISH_1 >= 558 +# define BOOST_PP_ITERATION_1 558 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 559 && BOOST_PP_ITERATION_FINISH_1 >= 559 +# define BOOST_PP_ITERATION_1 559 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 560 && BOOST_PP_ITERATION_FINISH_1 >= 560 +# define BOOST_PP_ITERATION_1 560 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 561 && BOOST_PP_ITERATION_FINISH_1 >= 561 +# define BOOST_PP_ITERATION_1 561 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 562 && BOOST_PP_ITERATION_FINISH_1 >= 562 +# define BOOST_PP_ITERATION_1 562 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 563 && BOOST_PP_ITERATION_FINISH_1 >= 563 +# define BOOST_PP_ITERATION_1 563 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 564 && BOOST_PP_ITERATION_FINISH_1 >= 564 +# define BOOST_PP_ITERATION_1 564 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 565 && BOOST_PP_ITERATION_FINISH_1 >= 565 +# define BOOST_PP_ITERATION_1 565 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 566 && BOOST_PP_ITERATION_FINISH_1 >= 566 +# define BOOST_PP_ITERATION_1 566 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 567 && BOOST_PP_ITERATION_FINISH_1 >= 567 +# define BOOST_PP_ITERATION_1 567 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 568 && BOOST_PP_ITERATION_FINISH_1 >= 568 +# define BOOST_PP_ITERATION_1 568 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 569 && BOOST_PP_ITERATION_FINISH_1 >= 569 +# define BOOST_PP_ITERATION_1 569 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 570 && BOOST_PP_ITERATION_FINISH_1 >= 570 +# define BOOST_PP_ITERATION_1 570 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 571 && BOOST_PP_ITERATION_FINISH_1 >= 571 +# define BOOST_PP_ITERATION_1 571 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 572 && BOOST_PP_ITERATION_FINISH_1 >= 572 +# define BOOST_PP_ITERATION_1 572 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 573 && BOOST_PP_ITERATION_FINISH_1 >= 573 +# define BOOST_PP_ITERATION_1 573 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 574 && BOOST_PP_ITERATION_FINISH_1 >= 574 +# define BOOST_PP_ITERATION_1 574 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 575 && BOOST_PP_ITERATION_FINISH_1 >= 575 +# define BOOST_PP_ITERATION_1 575 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 576 && BOOST_PP_ITERATION_FINISH_1 >= 576 +# define BOOST_PP_ITERATION_1 576 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 577 && BOOST_PP_ITERATION_FINISH_1 >= 577 +# define BOOST_PP_ITERATION_1 577 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 578 && BOOST_PP_ITERATION_FINISH_1 >= 578 +# define BOOST_PP_ITERATION_1 578 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 579 && BOOST_PP_ITERATION_FINISH_1 >= 579 +# define BOOST_PP_ITERATION_1 579 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 580 && BOOST_PP_ITERATION_FINISH_1 >= 580 +# define BOOST_PP_ITERATION_1 580 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 581 && BOOST_PP_ITERATION_FINISH_1 >= 581 +# define BOOST_PP_ITERATION_1 581 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 582 && BOOST_PP_ITERATION_FINISH_1 >= 582 +# define BOOST_PP_ITERATION_1 582 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 583 && BOOST_PP_ITERATION_FINISH_1 >= 583 +# define BOOST_PP_ITERATION_1 583 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 584 && BOOST_PP_ITERATION_FINISH_1 >= 584 +# define BOOST_PP_ITERATION_1 584 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 585 && BOOST_PP_ITERATION_FINISH_1 >= 585 +# define BOOST_PP_ITERATION_1 585 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 586 && BOOST_PP_ITERATION_FINISH_1 >= 586 +# define BOOST_PP_ITERATION_1 586 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 587 && BOOST_PP_ITERATION_FINISH_1 >= 587 +# define BOOST_PP_ITERATION_1 587 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 588 && BOOST_PP_ITERATION_FINISH_1 >= 588 +# define BOOST_PP_ITERATION_1 588 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 589 && BOOST_PP_ITERATION_FINISH_1 >= 589 +# define BOOST_PP_ITERATION_1 589 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 590 && BOOST_PP_ITERATION_FINISH_1 >= 590 +# define BOOST_PP_ITERATION_1 590 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 591 && BOOST_PP_ITERATION_FINISH_1 >= 591 +# define BOOST_PP_ITERATION_1 591 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 592 && BOOST_PP_ITERATION_FINISH_1 >= 592 +# define BOOST_PP_ITERATION_1 592 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 593 && BOOST_PP_ITERATION_FINISH_1 >= 593 +# define BOOST_PP_ITERATION_1 593 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 594 && BOOST_PP_ITERATION_FINISH_1 >= 594 +# define BOOST_PP_ITERATION_1 594 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 595 && BOOST_PP_ITERATION_FINISH_1 >= 595 +# define BOOST_PP_ITERATION_1 595 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 596 && BOOST_PP_ITERATION_FINISH_1 >= 596 +# define BOOST_PP_ITERATION_1 596 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 597 && BOOST_PP_ITERATION_FINISH_1 >= 597 +# define BOOST_PP_ITERATION_1 597 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 598 && BOOST_PP_ITERATION_FINISH_1 >= 598 +# define BOOST_PP_ITERATION_1 598 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 599 && BOOST_PP_ITERATION_FINISH_1 >= 599 +# define BOOST_PP_ITERATION_1 599 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 600 && BOOST_PP_ITERATION_FINISH_1 >= 600 +# define BOOST_PP_ITERATION_1 600 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 601 && BOOST_PP_ITERATION_FINISH_1 >= 601 +# define BOOST_PP_ITERATION_1 601 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 602 && BOOST_PP_ITERATION_FINISH_1 >= 602 +# define BOOST_PP_ITERATION_1 602 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 603 && BOOST_PP_ITERATION_FINISH_1 >= 603 +# define BOOST_PP_ITERATION_1 603 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 604 && BOOST_PP_ITERATION_FINISH_1 >= 604 +# define BOOST_PP_ITERATION_1 604 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 605 && BOOST_PP_ITERATION_FINISH_1 >= 605 +# define BOOST_PP_ITERATION_1 605 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 606 && BOOST_PP_ITERATION_FINISH_1 >= 606 +# define BOOST_PP_ITERATION_1 606 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 607 && BOOST_PP_ITERATION_FINISH_1 >= 607 +# define BOOST_PP_ITERATION_1 607 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 608 && BOOST_PP_ITERATION_FINISH_1 >= 608 +# define BOOST_PP_ITERATION_1 608 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 609 && BOOST_PP_ITERATION_FINISH_1 >= 609 +# define BOOST_PP_ITERATION_1 609 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 610 && BOOST_PP_ITERATION_FINISH_1 >= 610 +# define BOOST_PP_ITERATION_1 610 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 611 && BOOST_PP_ITERATION_FINISH_1 >= 611 +# define BOOST_PP_ITERATION_1 611 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 612 && BOOST_PP_ITERATION_FINISH_1 >= 612 +# define BOOST_PP_ITERATION_1 612 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 613 && BOOST_PP_ITERATION_FINISH_1 >= 613 +# define BOOST_PP_ITERATION_1 613 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 614 && BOOST_PP_ITERATION_FINISH_1 >= 614 +# define BOOST_PP_ITERATION_1 614 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 615 && BOOST_PP_ITERATION_FINISH_1 >= 615 +# define BOOST_PP_ITERATION_1 615 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 616 && BOOST_PP_ITERATION_FINISH_1 >= 616 +# define BOOST_PP_ITERATION_1 616 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 617 && BOOST_PP_ITERATION_FINISH_1 >= 617 +# define BOOST_PP_ITERATION_1 617 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 618 && BOOST_PP_ITERATION_FINISH_1 >= 618 +# define BOOST_PP_ITERATION_1 618 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 619 && BOOST_PP_ITERATION_FINISH_1 >= 619 +# define BOOST_PP_ITERATION_1 619 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 620 && BOOST_PP_ITERATION_FINISH_1 >= 620 +# define BOOST_PP_ITERATION_1 620 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 621 && BOOST_PP_ITERATION_FINISH_1 >= 621 +# define BOOST_PP_ITERATION_1 621 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 622 && BOOST_PP_ITERATION_FINISH_1 >= 622 +# define BOOST_PP_ITERATION_1 622 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 623 && BOOST_PP_ITERATION_FINISH_1 >= 623 +# define BOOST_PP_ITERATION_1 623 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 624 && BOOST_PP_ITERATION_FINISH_1 >= 624 +# define BOOST_PP_ITERATION_1 624 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 625 && BOOST_PP_ITERATION_FINISH_1 >= 625 +# define BOOST_PP_ITERATION_1 625 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 626 && BOOST_PP_ITERATION_FINISH_1 >= 626 +# define BOOST_PP_ITERATION_1 626 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 627 && BOOST_PP_ITERATION_FINISH_1 >= 627 +# define BOOST_PP_ITERATION_1 627 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 628 && BOOST_PP_ITERATION_FINISH_1 >= 628 +# define BOOST_PP_ITERATION_1 628 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 629 && BOOST_PP_ITERATION_FINISH_1 >= 629 +# define BOOST_PP_ITERATION_1 629 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 630 && BOOST_PP_ITERATION_FINISH_1 >= 630 +# define BOOST_PP_ITERATION_1 630 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 631 && BOOST_PP_ITERATION_FINISH_1 >= 631 +# define BOOST_PP_ITERATION_1 631 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 632 && BOOST_PP_ITERATION_FINISH_1 >= 632 +# define BOOST_PP_ITERATION_1 632 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 633 && BOOST_PP_ITERATION_FINISH_1 >= 633 +# define BOOST_PP_ITERATION_1 633 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 634 && BOOST_PP_ITERATION_FINISH_1 >= 634 +# define BOOST_PP_ITERATION_1 634 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 635 && BOOST_PP_ITERATION_FINISH_1 >= 635 +# define BOOST_PP_ITERATION_1 635 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 636 && BOOST_PP_ITERATION_FINISH_1 >= 636 +# define BOOST_PP_ITERATION_1 636 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 637 && BOOST_PP_ITERATION_FINISH_1 >= 637 +# define BOOST_PP_ITERATION_1 637 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 638 && BOOST_PP_ITERATION_FINISH_1 >= 638 +# define BOOST_PP_ITERATION_1 638 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 639 && BOOST_PP_ITERATION_FINISH_1 >= 639 +# define BOOST_PP_ITERATION_1 639 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 640 && BOOST_PP_ITERATION_FINISH_1 >= 640 +# define BOOST_PP_ITERATION_1 640 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 641 && BOOST_PP_ITERATION_FINISH_1 >= 641 +# define BOOST_PP_ITERATION_1 641 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 642 && BOOST_PP_ITERATION_FINISH_1 >= 642 +# define BOOST_PP_ITERATION_1 642 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 643 && BOOST_PP_ITERATION_FINISH_1 >= 643 +# define BOOST_PP_ITERATION_1 643 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 644 && BOOST_PP_ITERATION_FINISH_1 >= 644 +# define BOOST_PP_ITERATION_1 644 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 645 && BOOST_PP_ITERATION_FINISH_1 >= 645 +# define BOOST_PP_ITERATION_1 645 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 646 && BOOST_PP_ITERATION_FINISH_1 >= 646 +# define BOOST_PP_ITERATION_1 646 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 647 && BOOST_PP_ITERATION_FINISH_1 >= 647 +# define BOOST_PP_ITERATION_1 647 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 648 && BOOST_PP_ITERATION_FINISH_1 >= 648 +# define BOOST_PP_ITERATION_1 648 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 649 && BOOST_PP_ITERATION_FINISH_1 >= 649 +# define BOOST_PP_ITERATION_1 649 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 650 && BOOST_PP_ITERATION_FINISH_1 >= 650 +# define BOOST_PP_ITERATION_1 650 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 651 && BOOST_PP_ITERATION_FINISH_1 >= 651 +# define BOOST_PP_ITERATION_1 651 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 652 && BOOST_PP_ITERATION_FINISH_1 >= 652 +# define BOOST_PP_ITERATION_1 652 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 653 && BOOST_PP_ITERATION_FINISH_1 >= 653 +# define BOOST_PP_ITERATION_1 653 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 654 && BOOST_PP_ITERATION_FINISH_1 >= 654 +# define BOOST_PP_ITERATION_1 654 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 655 && BOOST_PP_ITERATION_FINISH_1 >= 655 +# define BOOST_PP_ITERATION_1 655 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 656 && BOOST_PP_ITERATION_FINISH_1 >= 656 +# define BOOST_PP_ITERATION_1 656 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 657 && BOOST_PP_ITERATION_FINISH_1 >= 657 +# define BOOST_PP_ITERATION_1 657 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 658 && BOOST_PP_ITERATION_FINISH_1 >= 658 +# define BOOST_PP_ITERATION_1 658 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 659 && BOOST_PP_ITERATION_FINISH_1 >= 659 +# define BOOST_PP_ITERATION_1 659 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 660 && BOOST_PP_ITERATION_FINISH_1 >= 660 +# define BOOST_PP_ITERATION_1 660 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 661 && BOOST_PP_ITERATION_FINISH_1 >= 661 +# define BOOST_PP_ITERATION_1 661 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 662 && BOOST_PP_ITERATION_FINISH_1 >= 662 +# define BOOST_PP_ITERATION_1 662 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 663 && BOOST_PP_ITERATION_FINISH_1 >= 663 +# define BOOST_PP_ITERATION_1 663 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 664 && BOOST_PP_ITERATION_FINISH_1 >= 664 +# define BOOST_PP_ITERATION_1 664 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 665 && BOOST_PP_ITERATION_FINISH_1 >= 665 +# define BOOST_PP_ITERATION_1 665 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 666 && BOOST_PP_ITERATION_FINISH_1 >= 666 +# define BOOST_PP_ITERATION_1 666 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 667 && BOOST_PP_ITERATION_FINISH_1 >= 667 +# define BOOST_PP_ITERATION_1 667 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 668 && BOOST_PP_ITERATION_FINISH_1 >= 668 +# define BOOST_PP_ITERATION_1 668 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 669 && BOOST_PP_ITERATION_FINISH_1 >= 669 +# define BOOST_PP_ITERATION_1 669 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 670 && BOOST_PP_ITERATION_FINISH_1 >= 670 +# define BOOST_PP_ITERATION_1 670 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 671 && BOOST_PP_ITERATION_FINISH_1 >= 671 +# define BOOST_PP_ITERATION_1 671 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 672 && BOOST_PP_ITERATION_FINISH_1 >= 672 +# define BOOST_PP_ITERATION_1 672 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 673 && BOOST_PP_ITERATION_FINISH_1 >= 673 +# define BOOST_PP_ITERATION_1 673 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 674 && BOOST_PP_ITERATION_FINISH_1 >= 674 +# define BOOST_PP_ITERATION_1 674 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 675 && BOOST_PP_ITERATION_FINISH_1 >= 675 +# define BOOST_PP_ITERATION_1 675 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 676 && BOOST_PP_ITERATION_FINISH_1 >= 676 +# define BOOST_PP_ITERATION_1 676 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 677 && BOOST_PP_ITERATION_FINISH_1 >= 677 +# define BOOST_PP_ITERATION_1 677 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 678 && BOOST_PP_ITERATION_FINISH_1 >= 678 +# define BOOST_PP_ITERATION_1 678 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 679 && BOOST_PP_ITERATION_FINISH_1 >= 679 +# define BOOST_PP_ITERATION_1 679 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 680 && BOOST_PP_ITERATION_FINISH_1 >= 680 +# define BOOST_PP_ITERATION_1 680 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 681 && BOOST_PP_ITERATION_FINISH_1 >= 681 +# define BOOST_PP_ITERATION_1 681 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 682 && BOOST_PP_ITERATION_FINISH_1 >= 682 +# define BOOST_PP_ITERATION_1 682 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 683 && BOOST_PP_ITERATION_FINISH_1 >= 683 +# define BOOST_PP_ITERATION_1 683 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 684 && BOOST_PP_ITERATION_FINISH_1 >= 684 +# define BOOST_PP_ITERATION_1 684 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 685 && BOOST_PP_ITERATION_FINISH_1 >= 685 +# define BOOST_PP_ITERATION_1 685 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 686 && BOOST_PP_ITERATION_FINISH_1 >= 686 +# define BOOST_PP_ITERATION_1 686 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 687 && BOOST_PP_ITERATION_FINISH_1 >= 687 +# define BOOST_PP_ITERATION_1 687 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 688 && BOOST_PP_ITERATION_FINISH_1 >= 688 +# define BOOST_PP_ITERATION_1 688 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 689 && BOOST_PP_ITERATION_FINISH_1 >= 689 +# define BOOST_PP_ITERATION_1 689 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 690 && BOOST_PP_ITERATION_FINISH_1 >= 690 +# define BOOST_PP_ITERATION_1 690 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 691 && BOOST_PP_ITERATION_FINISH_1 >= 691 +# define BOOST_PP_ITERATION_1 691 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 692 && BOOST_PP_ITERATION_FINISH_1 >= 692 +# define BOOST_PP_ITERATION_1 692 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 693 && BOOST_PP_ITERATION_FINISH_1 >= 693 +# define BOOST_PP_ITERATION_1 693 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 694 && BOOST_PP_ITERATION_FINISH_1 >= 694 +# define BOOST_PP_ITERATION_1 694 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 695 && BOOST_PP_ITERATION_FINISH_1 >= 695 +# define BOOST_PP_ITERATION_1 695 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 696 && BOOST_PP_ITERATION_FINISH_1 >= 696 +# define BOOST_PP_ITERATION_1 696 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 697 && BOOST_PP_ITERATION_FINISH_1 >= 697 +# define BOOST_PP_ITERATION_1 697 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 698 && BOOST_PP_ITERATION_FINISH_1 >= 698 +# define BOOST_PP_ITERATION_1 698 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 699 && BOOST_PP_ITERATION_FINISH_1 >= 699 +# define BOOST_PP_ITERATION_1 699 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 700 && BOOST_PP_ITERATION_FINISH_1 >= 700 +# define BOOST_PP_ITERATION_1 700 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 701 && BOOST_PP_ITERATION_FINISH_1 >= 701 +# define BOOST_PP_ITERATION_1 701 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 702 && BOOST_PP_ITERATION_FINISH_1 >= 702 +# define BOOST_PP_ITERATION_1 702 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 703 && BOOST_PP_ITERATION_FINISH_1 >= 703 +# define BOOST_PP_ITERATION_1 703 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 704 && BOOST_PP_ITERATION_FINISH_1 >= 704 +# define BOOST_PP_ITERATION_1 704 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 705 && BOOST_PP_ITERATION_FINISH_1 >= 705 +# define BOOST_PP_ITERATION_1 705 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 706 && BOOST_PP_ITERATION_FINISH_1 >= 706 +# define BOOST_PP_ITERATION_1 706 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 707 && BOOST_PP_ITERATION_FINISH_1 >= 707 +# define BOOST_PP_ITERATION_1 707 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 708 && BOOST_PP_ITERATION_FINISH_1 >= 708 +# define BOOST_PP_ITERATION_1 708 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 709 && BOOST_PP_ITERATION_FINISH_1 >= 709 +# define BOOST_PP_ITERATION_1 709 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 710 && BOOST_PP_ITERATION_FINISH_1 >= 710 +# define BOOST_PP_ITERATION_1 710 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 711 && BOOST_PP_ITERATION_FINISH_1 >= 711 +# define BOOST_PP_ITERATION_1 711 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 712 && BOOST_PP_ITERATION_FINISH_1 >= 712 +# define BOOST_PP_ITERATION_1 712 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 713 && BOOST_PP_ITERATION_FINISH_1 >= 713 +# define BOOST_PP_ITERATION_1 713 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 714 && BOOST_PP_ITERATION_FINISH_1 >= 714 +# define BOOST_PP_ITERATION_1 714 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 715 && BOOST_PP_ITERATION_FINISH_1 >= 715 +# define BOOST_PP_ITERATION_1 715 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 716 && BOOST_PP_ITERATION_FINISH_1 >= 716 +# define BOOST_PP_ITERATION_1 716 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 717 && BOOST_PP_ITERATION_FINISH_1 >= 717 +# define BOOST_PP_ITERATION_1 717 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 718 && BOOST_PP_ITERATION_FINISH_1 >= 718 +# define BOOST_PP_ITERATION_1 718 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 719 && BOOST_PP_ITERATION_FINISH_1 >= 719 +# define BOOST_PP_ITERATION_1 719 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 720 && BOOST_PP_ITERATION_FINISH_1 >= 720 +# define BOOST_PP_ITERATION_1 720 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 721 && BOOST_PP_ITERATION_FINISH_1 >= 721 +# define BOOST_PP_ITERATION_1 721 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 722 && BOOST_PP_ITERATION_FINISH_1 >= 722 +# define BOOST_PP_ITERATION_1 722 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 723 && BOOST_PP_ITERATION_FINISH_1 >= 723 +# define BOOST_PP_ITERATION_1 723 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 724 && BOOST_PP_ITERATION_FINISH_1 >= 724 +# define BOOST_PP_ITERATION_1 724 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 725 && BOOST_PP_ITERATION_FINISH_1 >= 725 +# define BOOST_PP_ITERATION_1 725 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 726 && BOOST_PP_ITERATION_FINISH_1 >= 726 +# define BOOST_PP_ITERATION_1 726 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 727 && BOOST_PP_ITERATION_FINISH_1 >= 727 +# define BOOST_PP_ITERATION_1 727 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 728 && BOOST_PP_ITERATION_FINISH_1 >= 728 +# define BOOST_PP_ITERATION_1 728 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 729 && BOOST_PP_ITERATION_FINISH_1 >= 729 +# define BOOST_PP_ITERATION_1 729 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 730 && BOOST_PP_ITERATION_FINISH_1 >= 730 +# define BOOST_PP_ITERATION_1 730 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 731 && BOOST_PP_ITERATION_FINISH_1 >= 731 +# define BOOST_PP_ITERATION_1 731 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 732 && BOOST_PP_ITERATION_FINISH_1 >= 732 +# define BOOST_PP_ITERATION_1 732 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 733 && BOOST_PP_ITERATION_FINISH_1 >= 733 +# define BOOST_PP_ITERATION_1 733 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 734 && BOOST_PP_ITERATION_FINISH_1 >= 734 +# define BOOST_PP_ITERATION_1 734 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 735 && BOOST_PP_ITERATION_FINISH_1 >= 735 +# define BOOST_PP_ITERATION_1 735 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 736 && BOOST_PP_ITERATION_FINISH_1 >= 736 +# define BOOST_PP_ITERATION_1 736 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 737 && BOOST_PP_ITERATION_FINISH_1 >= 737 +# define BOOST_PP_ITERATION_1 737 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 738 && BOOST_PP_ITERATION_FINISH_1 >= 738 +# define BOOST_PP_ITERATION_1 738 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 739 && BOOST_PP_ITERATION_FINISH_1 >= 739 +# define BOOST_PP_ITERATION_1 739 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 740 && BOOST_PP_ITERATION_FINISH_1 >= 740 +# define BOOST_PP_ITERATION_1 740 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 741 && BOOST_PP_ITERATION_FINISH_1 >= 741 +# define BOOST_PP_ITERATION_1 741 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 742 && BOOST_PP_ITERATION_FINISH_1 >= 742 +# define BOOST_PP_ITERATION_1 742 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 743 && BOOST_PP_ITERATION_FINISH_1 >= 743 +# define BOOST_PP_ITERATION_1 743 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 744 && BOOST_PP_ITERATION_FINISH_1 >= 744 +# define BOOST_PP_ITERATION_1 744 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 745 && BOOST_PP_ITERATION_FINISH_1 >= 745 +# define BOOST_PP_ITERATION_1 745 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 746 && BOOST_PP_ITERATION_FINISH_1 >= 746 +# define BOOST_PP_ITERATION_1 746 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 747 && BOOST_PP_ITERATION_FINISH_1 >= 747 +# define BOOST_PP_ITERATION_1 747 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 748 && BOOST_PP_ITERATION_FINISH_1 >= 748 +# define BOOST_PP_ITERATION_1 748 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 749 && BOOST_PP_ITERATION_FINISH_1 >= 749 +# define BOOST_PP_ITERATION_1 749 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 750 && BOOST_PP_ITERATION_FINISH_1 >= 750 +# define BOOST_PP_ITERATION_1 750 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 751 && BOOST_PP_ITERATION_FINISH_1 >= 751 +# define BOOST_PP_ITERATION_1 751 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 752 && BOOST_PP_ITERATION_FINISH_1 >= 752 +# define BOOST_PP_ITERATION_1 752 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 753 && BOOST_PP_ITERATION_FINISH_1 >= 753 +# define BOOST_PP_ITERATION_1 753 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 754 && BOOST_PP_ITERATION_FINISH_1 >= 754 +# define BOOST_PP_ITERATION_1 754 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 755 && BOOST_PP_ITERATION_FINISH_1 >= 755 +# define BOOST_PP_ITERATION_1 755 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 756 && BOOST_PP_ITERATION_FINISH_1 >= 756 +# define BOOST_PP_ITERATION_1 756 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 757 && BOOST_PP_ITERATION_FINISH_1 >= 757 +# define BOOST_PP_ITERATION_1 757 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 758 && BOOST_PP_ITERATION_FINISH_1 >= 758 +# define BOOST_PP_ITERATION_1 758 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 759 && BOOST_PP_ITERATION_FINISH_1 >= 759 +# define BOOST_PP_ITERATION_1 759 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 760 && BOOST_PP_ITERATION_FINISH_1 >= 760 +# define BOOST_PP_ITERATION_1 760 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 761 && BOOST_PP_ITERATION_FINISH_1 >= 761 +# define BOOST_PP_ITERATION_1 761 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 762 && BOOST_PP_ITERATION_FINISH_1 >= 762 +# define BOOST_PP_ITERATION_1 762 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 763 && BOOST_PP_ITERATION_FINISH_1 >= 763 +# define BOOST_PP_ITERATION_1 763 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 764 && BOOST_PP_ITERATION_FINISH_1 >= 764 +# define BOOST_PP_ITERATION_1 764 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 765 && BOOST_PP_ITERATION_FINISH_1 >= 765 +# define BOOST_PP_ITERATION_1 765 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 766 && BOOST_PP_ITERATION_FINISH_1 >= 766 +# define BOOST_PP_ITERATION_1 766 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 767 && BOOST_PP_ITERATION_FINISH_1 >= 767 +# define BOOST_PP_ITERATION_1 767 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 768 && BOOST_PP_ITERATION_FINISH_1 >= 768 +# define BOOST_PP_ITERATION_1 768 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 769 && BOOST_PP_ITERATION_FINISH_1 >= 769 +# define BOOST_PP_ITERATION_1 769 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 770 && BOOST_PP_ITERATION_FINISH_1 >= 770 +# define BOOST_PP_ITERATION_1 770 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 771 && BOOST_PP_ITERATION_FINISH_1 >= 771 +# define BOOST_PP_ITERATION_1 771 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 772 && BOOST_PP_ITERATION_FINISH_1 >= 772 +# define BOOST_PP_ITERATION_1 772 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 773 && BOOST_PP_ITERATION_FINISH_1 >= 773 +# define BOOST_PP_ITERATION_1 773 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 774 && BOOST_PP_ITERATION_FINISH_1 >= 774 +# define BOOST_PP_ITERATION_1 774 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 775 && BOOST_PP_ITERATION_FINISH_1 >= 775 +# define BOOST_PP_ITERATION_1 775 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 776 && BOOST_PP_ITERATION_FINISH_1 >= 776 +# define BOOST_PP_ITERATION_1 776 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 777 && BOOST_PP_ITERATION_FINISH_1 >= 777 +# define BOOST_PP_ITERATION_1 777 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 778 && BOOST_PP_ITERATION_FINISH_1 >= 778 +# define BOOST_PP_ITERATION_1 778 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 779 && BOOST_PP_ITERATION_FINISH_1 >= 779 +# define BOOST_PP_ITERATION_1 779 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 780 && BOOST_PP_ITERATION_FINISH_1 >= 780 +# define BOOST_PP_ITERATION_1 780 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 781 && BOOST_PP_ITERATION_FINISH_1 >= 781 +# define BOOST_PP_ITERATION_1 781 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 782 && BOOST_PP_ITERATION_FINISH_1 >= 782 +# define BOOST_PP_ITERATION_1 782 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 783 && BOOST_PP_ITERATION_FINISH_1 >= 783 +# define BOOST_PP_ITERATION_1 783 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 784 && BOOST_PP_ITERATION_FINISH_1 >= 784 +# define BOOST_PP_ITERATION_1 784 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 785 && BOOST_PP_ITERATION_FINISH_1 >= 785 +# define BOOST_PP_ITERATION_1 785 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 786 && BOOST_PP_ITERATION_FINISH_1 >= 786 +# define BOOST_PP_ITERATION_1 786 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 787 && BOOST_PP_ITERATION_FINISH_1 >= 787 +# define BOOST_PP_ITERATION_1 787 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 788 && BOOST_PP_ITERATION_FINISH_1 >= 788 +# define BOOST_PP_ITERATION_1 788 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 789 && BOOST_PP_ITERATION_FINISH_1 >= 789 +# define BOOST_PP_ITERATION_1 789 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 790 && BOOST_PP_ITERATION_FINISH_1 >= 790 +# define BOOST_PP_ITERATION_1 790 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 791 && BOOST_PP_ITERATION_FINISH_1 >= 791 +# define BOOST_PP_ITERATION_1 791 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 792 && BOOST_PP_ITERATION_FINISH_1 >= 792 +# define BOOST_PP_ITERATION_1 792 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 793 && BOOST_PP_ITERATION_FINISH_1 >= 793 +# define BOOST_PP_ITERATION_1 793 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 794 && BOOST_PP_ITERATION_FINISH_1 >= 794 +# define BOOST_PP_ITERATION_1 794 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 795 && BOOST_PP_ITERATION_FINISH_1 >= 795 +# define BOOST_PP_ITERATION_1 795 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 796 && BOOST_PP_ITERATION_FINISH_1 >= 796 +# define BOOST_PP_ITERATION_1 796 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 797 && BOOST_PP_ITERATION_FINISH_1 >= 797 +# define BOOST_PP_ITERATION_1 797 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 798 && BOOST_PP_ITERATION_FINISH_1 >= 798 +# define BOOST_PP_ITERATION_1 798 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 799 && BOOST_PP_ITERATION_FINISH_1 >= 799 +# define BOOST_PP_ITERATION_1 799 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 800 && BOOST_PP_ITERATION_FINISH_1 >= 800 +# define BOOST_PP_ITERATION_1 800 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 801 && BOOST_PP_ITERATION_FINISH_1 >= 801 +# define BOOST_PP_ITERATION_1 801 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 802 && BOOST_PP_ITERATION_FINISH_1 >= 802 +# define BOOST_PP_ITERATION_1 802 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 803 && BOOST_PP_ITERATION_FINISH_1 >= 803 +# define BOOST_PP_ITERATION_1 803 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 804 && BOOST_PP_ITERATION_FINISH_1 >= 804 +# define BOOST_PP_ITERATION_1 804 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 805 && BOOST_PP_ITERATION_FINISH_1 >= 805 +# define BOOST_PP_ITERATION_1 805 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 806 && BOOST_PP_ITERATION_FINISH_1 >= 806 +# define BOOST_PP_ITERATION_1 806 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 807 && BOOST_PP_ITERATION_FINISH_1 >= 807 +# define BOOST_PP_ITERATION_1 807 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 808 && BOOST_PP_ITERATION_FINISH_1 >= 808 +# define BOOST_PP_ITERATION_1 808 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 809 && BOOST_PP_ITERATION_FINISH_1 >= 809 +# define BOOST_PP_ITERATION_1 809 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 810 && BOOST_PP_ITERATION_FINISH_1 >= 810 +# define BOOST_PP_ITERATION_1 810 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 811 && BOOST_PP_ITERATION_FINISH_1 >= 811 +# define BOOST_PP_ITERATION_1 811 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 812 && BOOST_PP_ITERATION_FINISH_1 >= 812 +# define BOOST_PP_ITERATION_1 812 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 813 && BOOST_PP_ITERATION_FINISH_1 >= 813 +# define BOOST_PP_ITERATION_1 813 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 814 && BOOST_PP_ITERATION_FINISH_1 >= 814 +# define BOOST_PP_ITERATION_1 814 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 815 && BOOST_PP_ITERATION_FINISH_1 >= 815 +# define BOOST_PP_ITERATION_1 815 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 816 && BOOST_PP_ITERATION_FINISH_1 >= 816 +# define BOOST_PP_ITERATION_1 816 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 817 && BOOST_PP_ITERATION_FINISH_1 >= 817 +# define BOOST_PP_ITERATION_1 817 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 818 && BOOST_PP_ITERATION_FINISH_1 >= 818 +# define BOOST_PP_ITERATION_1 818 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 819 && BOOST_PP_ITERATION_FINISH_1 >= 819 +# define BOOST_PP_ITERATION_1 819 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 820 && BOOST_PP_ITERATION_FINISH_1 >= 820 +# define BOOST_PP_ITERATION_1 820 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 821 && BOOST_PP_ITERATION_FINISH_1 >= 821 +# define BOOST_PP_ITERATION_1 821 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 822 && BOOST_PP_ITERATION_FINISH_1 >= 822 +# define BOOST_PP_ITERATION_1 822 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 823 && BOOST_PP_ITERATION_FINISH_1 >= 823 +# define BOOST_PP_ITERATION_1 823 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 824 && BOOST_PP_ITERATION_FINISH_1 >= 824 +# define BOOST_PP_ITERATION_1 824 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 825 && BOOST_PP_ITERATION_FINISH_1 >= 825 +# define BOOST_PP_ITERATION_1 825 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 826 && BOOST_PP_ITERATION_FINISH_1 >= 826 +# define BOOST_PP_ITERATION_1 826 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 827 && BOOST_PP_ITERATION_FINISH_1 >= 827 +# define BOOST_PP_ITERATION_1 827 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 828 && BOOST_PP_ITERATION_FINISH_1 >= 828 +# define BOOST_PP_ITERATION_1 828 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 829 && BOOST_PP_ITERATION_FINISH_1 >= 829 +# define BOOST_PP_ITERATION_1 829 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 830 && BOOST_PP_ITERATION_FINISH_1 >= 830 +# define BOOST_PP_ITERATION_1 830 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 831 && BOOST_PP_ITERATION_FINISH_1 >= 831 +# define BOOST_PP_ITERATION_1 831 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 832 && BOOST_PP_ITERATION_FINISH_1 >= 832 +# define BOOST_PP_ITERATION_1 832 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 833 && BOOST_PP_ITERATION_FINISH_1 >= 833 +# define BOOST_PP_ITERATION_1 833 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 834 && BOOST_PP_ITERATION_FINISH_1 >= 834 +# define BOOST_PP_ITERATION_1 834 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 835 && BOOST_PP_ITERATION_FINISH_1 >= 835 +# define BOOST_PP_ITERATION_1 835 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 836 && BOOST_PP_ITERATION_FINISH_1 >= 836 +# define BOOST_PP_ITERATION_1 836 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 837 && BOOST_PP_ITERATION_FINISH_1 >= 837 +# define BOOST_PP_ITERATION_1 837 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 838 && BOOST_PP_ITERATION_FINISH_1 >= 838 +# define BOOST_PP_ITERATION_1 838 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 839 && BOOST_PP_ITERATION_FINISH_1 >= 839 +# define BOOST_PP_ITERATION_1 839 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 840 && BOOST_PP_ITERATION_FINISH_1 >= 840 +# define BOOST_PP_ITERATION_1 840 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 841 && BOOST_PP_ITERATION_FINISH_1 >= 841 +# define BOOST_PP_ITERATION_1 841 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 842 && BOOST_PP_ITERATION_FINISH_1 >= 842 +# define BOOST_PP_ITERATION_1 842 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 843 && BOOST_PP_ITERATION_FINISH_1 >= 843 +# define BOOST_PP_ITERATION_1 843 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 844 && BOOST_PP_ITERATION_FINISH_1 >= 844 +# define BOOST_PP_ITERATION_1 844 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 845 && BOOST_PP_ITERATION_FINISH_1 >= 845 +# define BOOST_PP_ITERATION_1 845 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 846 && BOOST_PP_ITERATION_FINISH_1 >= 846 +# define BOOST_PP_ITERATION_1 846 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 847 && BOOST_PP_ITERATION_FINISH_1 >= 847 +# define BOOST_PP_ITERATION_1 847 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 848 && BOOST_PP_ITERATION_FINISH_1 >= 848 +# define BOOST_PP_ITERATION_1 848 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 849 && BOOST_PP_ITERATION_FINISH_1 >= 849 +# define BOOST_PP_ITERATION_1 849 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 850 && BOOST_PP_ITERATION_FINISH_1 >= 850 +# define BOOST_PP_ITERATION_1 850 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 851 && BOOST_PP_ITERATION_FINISH_1 >= 851 +# define BOOST_PP_ITERATION_1 851 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 852 && BOOST_PP_ITERATION_FINISH_1 >= 852 +# define BOOST_PP_ITERATION_1 852 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 853 && BOOST_PP_ITERATION_FINISH_1 >= 853 +# define BOOST_PP_ITERATION_1 853 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 854 && BOOST_PP_ITERATION_FINISH_1 >= 854 +# define BOOST_PP_ITERATION_1 854 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 855 && BOOST_PP_ITERATION_FINISH_1 >= 855 +# define BOOST_PP_ITERATION_1 855 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 856 && BOOST_PP_ITERATION_FINISH_1 >= 856 +# define BOOST_PP_ITERATION_1 856 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 857 && BOOST_PP_ITERATION_FINISH_1 >= 857 +# define BOOST_PP_ITERATION_1 857 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 858 && BOOST_PP_ITERATION_FINISH_1 >= 858 +# define BOOST_PP_ITERATION_1 858 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 859 && BOOST_PP_ITERATION_FINISH_1 >= 859 +# define BOOST_PP_ITERATION_1 859 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 860 && BOOST_PP_ITERATION_FINISH_1 >= 860 +# define BOOST_PP_ITERATION_1 860 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 861 && BOOST_PP_ITERATION_FINISH_1 >= 861 +# define BOOST_PP_ITERATION_1 861 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 862 && BOOST_PP_ITERATION_FINISH_1 >= 862 +# define BOOST_PP_ITERATION_1 862 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 863 && BOOST_PP_ITERATION_FINISH_1 >= 863 +# define BOOST_PP_ITERATION_1 863 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 864 && BOOST_PP_ITERATION_FINISH_1 >= 864 +# define BOOST_PP_ITERATION_1 864 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 865 && BOOST_PP_ITERATION_FINISH_1 >= 865 +# define BOOST_PP_ITERATION_1 865 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 866 && BOOST_PP_ITERATION_FINISH_1 >= 866 +# define BOOST_PP_ITERATION_1 866 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 867 && BOOST_PP_ITERATION_FINISH_1 >= 867 +# define BOOST_PP_ITERATION_1 867 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 868 && BOOST_PP_ITERATION_FINISH_1 >= 868 +# define BOOST_PP_ITERATION_1 868 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 869 && BOOST_PP_ITERATION_FINISH_1 >= 869 +# define BOOST_PP_ITERATION_1 869 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 870 && BOOST_PP_ITERATION_FINISH_1 >= 870 +# define BOOST_PP_ITERATION_1 870 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 871 && BOOST_PP_ITERATION_FINISH_1 >= 871 +# define BOOST_PP_ITERATION_1 871 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 872 && BOOST_PP_ITERATION_FINISH_1 >= 872 +# define BOOST_PP_ITERATION_1 872 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 873 && BOOST_PP_ITERATION_FINISH_1 >= 873 +# define BOOST_PP_ITERATION_1 873 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 874 && BOOST_PP_ITERATION_FINISH_1 >= 874 +# define BOOST_PP_ITERATION_1 874 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 875 && BOOST_PP_ITERATION_FINISH_1 >= 875 +# define BOOST_PP_ITERATION_1 875 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 876 && BOOST_PP_ITERATION_FINISH_1 >= 876 +# define BOOST_PP_ITERATION_1 876 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 877 && BOOST_PP_ITERATION_FINISH_1 >= 877 +# define BOOST_PP_ITERATION_1 877 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 878 && BOOST_PP_ITERATION_FINISH_1 >= 878 +# define BOOST_PP_ITERATION_1 878 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 879 && BOOST_PP_ITERATION_FINISH_1 >= 879 +# define BOOST_PP_ITERATION_1 879 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 880 && BOOST_PP_ITERATION_FINISH_1 >= 880 +# define BOOST_PP_ITERATION_1 880 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 881 && BOOST_PP_ITERATION_FINISH_1 >= 881 +# define BOOST_PP_ITERATION_1 881 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 882 && BOOST_PP_ITERATION_FINISH_1 >= 882 +# define BOOST_PP_ITERATION_1 882 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 883 && BOOST_PP_ITERATION_FINISH_1 >= 883 +# define BOOST_PP_ITERATION_1 883 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 884 && BOOST_PP_ITERATION_FINISH_1 >= 884 +# define BOOST_PP_ITERATION_1 884 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 885 && BOOST_PP_ITERATION_FINISH_1 >= 885 +# define BOOST_PP_ITERATION_1 885 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 886 && BOOST_PP_ITERATION_FINISH_1 >= 886 +# define BOOST_PP_ITERATION_1 886 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 887 && BOOST_PP_ITERATION_FINISH_1 >= 887 +# define BOOST_PP_ITERATION_1 887 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 888 && BOOST_PP_ITERATION_FINISH_1 >= 888 +# define BOOST_PP_ITERATION_1 888 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 889 && BOOST_PP_ITERATION_FINISH_1 >= 889 +# define BOOST_PP_ITERATION_1 889 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 890 && BOOST_PP_ITERATION_FINISH_1 >= 890 +# define BOOST_PP_ITERATION_1 890 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 891 && BOOST_PP_ITERATION_FINISH_1 >= 891 +# define BOOST_PP_ITERATION_1 891 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 892 && BOOST_PP_ITERATION_FINISH_1 >= 892 +# define BOOST_PP_ITERATION_1 892 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 893 && BOOST_PP_ITERATION_FINISH_1 >= 893 +# define BOOST_PP_ITERATION_1 893 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 894 && BOOST_PP_ITERATION_FINISH_1 >= 894 +# define BOOST_PP_ITERATION_1 894 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 895 && BOOST_PP_ITERATION_FINISH_1 >= 895 +# define BOOST_PP_ITERATION_1 895 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 896 && BOOST_PP_ITERATION_FINISH_1 >= 896 +# define BOOST_PP_ITERATION_1 896 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 897 && BOOST_PP_ITERATION_FINISH_1 >= 897 +# define BOOST_PP_ITERATION_1 897 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 898 && BOOST_PP_ITERATION_FINISH_1 >= 898 +# define BOOST_PP_ITERATION_1 898 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 899 && BOOST_PP_ITERATION_FINISH_1 >= 899 +# define BOOST_PP_ITERATION_1 899 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 900 && BOOST_PP_ITERATION_FINISH_1 >= 900 +# define BOOST_PP_ITERATION_1 900 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 901 && BOOST_PP_ITERATION_FINISH_1 >= 901 +# define BOOST_PP_ITERATION_1 901 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 902 && BOOST_PP_ITERATION_FINISH_1 >= 902 +# define BOOST_PP_ITERATION_1 902 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 903 && BOOST_PP_ITERATION_FINISH_1 >= 903 +# define BOOST_PP_ITERATION_1 903 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 904 && BOOST_PP_ITERATION_FINISH_1 >= 904 +# define BOOST_PP_ITERATION_1 904 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 905 && BOOST_PP_ITERATION_FINISH_1 >= 905 +# define BOOST_PP_ITERATION_1 905 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 906 && BOOST_PP_ITERATION_FINISH_1 >= 906 +# define BOOST_PP_ITERATION_1 906 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 907 && BOOST_PP_ITERATION_FINISH_1 >= 907 +# define BOOST_PP_ITERATION_1 907 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 908 && BOOST_PP_ITERATION_FINISH_1 >= 908 +# define BOOST_PP_ITERATION_1 908 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 909 && BOOST_PP_ITERATION_FINISH_1 >= 909 +# define BOOST_PP_ITERATION_1 909 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 910 && BOOST_PP_ITERATION_FINISH_1 >= 910 +# define BOOST_PP_ITERATION_1 910 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 911 && BOOST_PP_ITERATION_FINISH_1 >= 911 +# define BOOST_PP_ITERATION_1 911 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 912 && BOOST_PP_ITERATION_FINISH_1 >= 912 +# define BOOST_PP_ITERATION_1 912 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 913 && BOOST_PP_ITERATION_FINISH_1 >= 913 +# define BOOST_PP_ITERATION_1 913 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 914 && BOOST_PP_ITERATION_FINISH_1 >= 914 +# define BOOST_PP_ITERATION_1 914 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 915 && BOOST_PP_ITERATION_FINISH_1 >= 915 +# define BOOST_PP_ITERATION_1 915 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 916 && BOOST_PP_ITERATION_FINISH_1 >= 916 +# define BOOST_PP_ITERATION_1 916 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 917 && BOOST_PP_ITERATION_FINISH_1 >= 917 +# define BOOST_PP_ITERATION_1 917 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 918 && BOOST_PP_ITERATION_FINISH_1 >= 918 +# define BOOST_PP_ITERATION_1 918 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 919 && BOOST_PP_ITERATION_FINISH_1 >= 919 +# define BOOST_PP_ITERATION_1 919 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 920 && BOOST_PP_ITERATION_FINISH_1 >= 920 +# define BOOST_PP_ITERATION_1 920 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 921 && BOOST_PP_ITERATION_FINISH_1 >= 921 +# define BOOST_PP_ITERATION_1 921 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 922 && BOOST_PP_ITERATION_FINISH_1 >= 922 +# define BOOST_PP_ITERATION_1 922 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 923 && BOOST_PP_ITERATION_FINISH_1 >= 923 +# define BOOST_PP_ITERATION_1 923 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 924 && BOOST_PP_ITERATION_FINISH_1 >= 924 +# define BOOST_PP_ITERATION_1 924 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 925 && BOOST_PP_ITERATION_FINISH_1 >= 925 +# define BOOST_PP_ITERATION_1 925 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 926 && BOOST_PP_ITERATION_FINISH_1 >= 926 +# define BOOST_PP_ITERATION_1 926 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 927 && BOOST_PP_ITERATION_FINISH_1 >= 927 +# define BOOST_PP_ITERATION_1 927 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 928 && BOOST_PP_ITERATION_FINISH_1 >= 928 +# define BOOST_PP_ITERATION_1 928 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 929 && BOOST_PP_ITERATION_FINISH_1 >= 929 +# define BOOST_PP_ITERATION_1 929 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 930 && BOOST_PP_ITERATION_FINISH_1 >= 930 +# define BOOST_PP_ITERATION_1 930 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 931 && BOOST_PP_ITERATION_FINISH_1 >= 931 +# define BOOST_PP_ITERATION_1 931 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 932 && BOOST_PP_ITERATION_FINISH_1 >= 932 +# define BOOST_PP_ITERATION_1 932 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 933 && BOOST_PP_ITERATION_FINISH_1 >= 933 +# define BOOST_PP_ITERATION_1 933 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 934 && BOOST_PP_ITERATION_FINISH_1 >= 934 +# define BOOST_PP_ITERATION_1 934 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 935 && BOOST_PP_ITERATION_FINISH_1 >= 935 +# define BOOST_PP_ITERATION_1 935 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 936 && BOOST_PP_ITERATION_FINISH_1 >= 936 +# define BOOST_PP_ITERATION_1 936 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 937 && BOOST_PP_ITERATION_FINISH_1 >= 937 +# define BOOST_PP_ITERATION_1 937 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 938 && BOOST_PP_ITERATION_FINISH_1 >= 938 +# define BOOST_PP_ITERATION_1 938 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 939 && BOOST_PP_ITERATION_FINISH_1 >= 939 +# define BOOST_PP_ITERATION_1 939 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 940 && BOOST_PP_ITERATION_FINISH_1 >= 940 +# define BOOST_PP_ITERATION_1 940 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 941 && BOOST_PP_ITERATION_FINISH_1 >= 941 +# define BOOST_PP_ITERATION_1 941 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 942 && BOOST_PP_ITERATION_FINISH_1 >= 942 +# define BOOST_PP_ITERATION_1 942 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 943 && BOOST_PP_ITERATION_FINISH_1 >= 943 +# define BOOST_PP_ITERATION_1 943 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 944 && BOOST_PP_ITERATION_FINISH_1 >= 944 +# define BOOST_PP_ITERATION_1 944 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 945 && BOOST_PP_ITERATION_FINISH_1 >= 945 +# define BOOST_PP_ITERATION_1 945 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 946 && BOOST_PP_ITERATION_FINISH_1 >= 946 +# define BOOST_PP_ITERATION_1 946 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 947 && BOOST_PP_ITERATION_FINISH_1 >= 947 +# define BOOST_PP_ITERATION_1 947 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 948 && BOOST_PP_ITERATION_FINISH_1 >= 948 +# define BOOST_PP_ITERATION_1 948 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 949 && BOOST_PP_ITERATION_FINISH_1 >= 949 +# define BOOST_PP_ITERATION_1 949 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 950 && BOOST_PP_ITERATION_FINISH_1 >= 950 +# define BOOST_PP_ITERATION_1 950 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 951 && BOOST_PP_ITERATION_FINISH_1 >= 951 +# define BOOST_PP_ITERATION_1 951 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 952 && BOOST_PP_ITERATION_FINISH_1 >= 952 +# define BOOST_PP_ITERATION_1 952 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 953 && BOOST_PP_ITERATION_FINISH_1 >= 953 +# define BOOST_PP_ITERATION_1 953 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 954 && BOOST_PP_ITERATION_FINISH_1 >= 954 +# define BOOST_PP_ITERATION_1 954 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 955 && BOOST_PP_ITERATION_FINISH_1 >= 955 +# define BOOST_PP_ITERATION_1 955 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 956 && BOOST_PP_ITERATION_FINISH_1 >= 956 +# define BOOST_PP_ITERATION_1 956 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 957 && BOOST_PP_ITERATION_FINISH_1 >= 957 +# define BOOST_PP_ITERATION_1 957 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 958 && BOOST_PP_ITERATION_FINISH_1 >= 958 +# define BOOST_PP_ITERATION_1 958 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 959 && BOOST_PP_ITERATION_FINISH_1 >= 959 +# define BOOST_PP_ITERATION_1 959 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 960 && BOOST_PP_ITERATION_FINISH_1 >= 960 +# define BOOST_PP_ITERATION_1 960 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 961 && BOOST_PP_ITERATION_FINISH_1 >= 961 +# define BOOST_PP_ITERATION_1 961 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 962 && BOOST_PP_ITERATION_FINISH_1 >= 962 +# define BOOST_PP_ITERATION_1 962 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 963 && BOOST_PP_ITERATION_FINISH_1 >= 963 +# define BOOST_PP_ITERATION_1 963 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 964 && BOOST_PP_ITERATION_FINISH_1 >= 964 +# define BOOST_PP_ITERATION_1 964 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 965 && BOOST_PP_ITERATION_FINISH_1 >= 965 +# define BOOST_PP_ITERATION_1 965 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 966 && BOOST_PP_ITERATION_FINISH_1 >= 966 +# define BOOST_PP_ITERATION_1 966 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 967 && BOOST_PP_ITERATION_FINISH_1 >= 967 +# define BOOST_PP_ITERATION_1 967 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 968 && BOOST_PP_ITERATION_FINISH_1 >= 968 +# define BOOST_PP_ITERATION_1 968 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 969 && BOOST_PP_ITERATION_FINISH_1 >= 969 +# define BOOST_PP_ITERATION_1 969 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 970 && BOOST_PP_ITERATION_FINISH_1 >= 970 +# define BOOST_PP_ITERATION_1 970 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 971 && BOOST_PP_ITERATION_FINISH_1 >= 971 +# define BOOST_PP_ITERATION_1 971 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 972 && BOOST_PP_ITERATION_FINISH_1 >= 972 +# define BOOST_PP_ITERATION_1 972 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 973 && BOOST_PP_ITERATION_FINISH_1 >= 973 +# define BOOST_PP_ITERATION_1 973 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 974 && BOOST_PP_ITERATION_FINISH_1 >= 974 +# define BOOST_PP_ITERATION_1 974 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 975 && BOOST_PP_ITERATION_FINISH_1 >= 975 +# define BOOST_PP_ITERATION_1 975 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 976 && BOOST_PP_ITERATION_FINISH_1 >= 976 +# define BOOST_PP_ITERATION_1 976 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 977 && BOOST_PP_ITERATION_FINISH_1 >= 977 +# define BOOST_PP_ITERATION_1 977 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 978 && BOOST_PP_ITERATION_FINISH_1 >= 978 +# define BOOST_PP_ITERATION_1 978 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 979 && BOOST_PP_ITERATION_FINISH_1 >= 979 +# define BOOST_PP_ITERATION_1 979 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 980 && BOOST_PP_ITERATION_FINISH_1 >= 980 +# define BOOST_PP_ITERATION_1 980 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 981 && BOOST_PP_ITERATION_FINISH_1 >= 981 +# define BOOST_PP_ITERATION_1 981 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 982 && BOOST_PP_ITERATION_FINISH_1 >= 982 +# define BOOST_PP_ITERATION_1 982 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 983 && BOOST_PP_ITERATION_FINISH_1 >= 983 +# define BOOST_PP_ITERATION_1 983 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 984 && BOOST_PP_ITERATION_FINISH_1 >= 984 +# define BOOST_PP_ITERATION_1 984 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 985 && BOOST_PP_ITERATION_FINISH_1 >= 985 +# define BOOST_PP_ITERATION_1 985 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 986 && BOOST_PP_ITERATION_FINISH_1 >= 986 +# define BOOST_PP_ITERATION_1 986 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 987 && BOOST_PP_ITERATION_FINISH_1 >= 987 +# define BOOST_PP_ITERATION_1 987 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 988 && BOOST_PP_ITERATION_FINISH_1 >= 988 +# define BOOST_PP_ITERATION_1 988 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 989 && BOOST_PP_ITERATION_FINISH_1 >= 989 +# define BOOST_PP_ITERATION_1 989 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 990 && BOOST_PP_ITERATION_FINISH_1 >= 990 +# define BOOST_PP_ITERATION_1 990 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 991 && BOOST_PP_ITERATION_FINISH_1 >= 991 +# define BOOST_PP_ITERATION_1 991 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 992 && BOOST_PP_ITERATION_FINISH_1 >= 992 +# define BOOST_PP_ITERATION_1 992 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 993 && BOOST_PP_ITERATION_FINISH_1 >= 993 +# define BOOST_PP_ITERATION_1 993 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 994 && BOOST_PP_ITERATION_FINISH_1 >= 994 +# define BOOST_PP_ITERATION_1 994 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 995 && BOOST_PP_ITERATION_FINISH_1 >= 995 +# define BOOST_PP_ITERATION_1 995 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 996 && BOOST_PP_ITERATION_FINISH_1 >= 996 +# define BOOST_PP_ITERATION_1 996 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 997 && BOOST_PP_ITERATION_FINISH_1 >= 997 +# define BOOST_PP_ITERATION_1 997 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 998 && BOOST_PP_ITERATION_FINISH_1 >= 998 +# define BOOST_PP_ITERATION_1 998 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 999 && BOOST_PP_ITERATION_FINISH_1 >= 999 +# define BOOST_PP_ITERATION_1 999 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1000 && BOOST_PP_ITERATION_FINISH_1 >= 1000 +# define BOOST_PP_ITERATION_1 1000 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1001 && BOOST_PP_ITERATION_FINISH_1 >= 1001 +# define BOOST_PP_ITERATION_1 1001 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1002 && BOOST_PP_ITERATION_FINISH_1 >= 1002 +# define BOOST_PP_ITERATION_1 1002 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1003 && BOOST_PP_ITERATION_FINISH_1 >= 1003 +# define BOOST_PP_ITERATION_1 1003 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1004 && BOOST_PP_ITERATION_FINISH_1 >= 1004 +# define BOOST_PP_ITERATION_1 1004 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1005 && BOOST_PP_ITERATION_FINISH_1 >= 1005 +# define BOOST_PP_ITERATION_1 1005 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1006 && BOOST_PP_ITERATION_FINISH_1 >= 1006 +# define BOOST_PP_ITERATION_1 1006 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1007 && BOOST_PP_ITERATION_FINISH_1 >= 1007 +# define BOOST_PP_ITERATION_1 1007 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1008 && BOOST_PP_ITERATION_FINISH_1 >= 1008 +# define BOOST_PP_ITERATION_1 1008 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1009 && BOOST_PP_ITERATION_FINISH_1 >= 1009 +# define BOOST_PP_ITERATION_1 1009 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1010 && BOOST_PP_ITERATION_FINISH_1 >= 1010 +# define BOOST_PP_ITERATION_1 1010 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1011 && BOOST_PP_ITERATION_FINISH_1 >= 1011 +# define BOOST_PP_ITERATION_1 1011 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1012 && BOOST_PP_ITERATION_FINISH_1 >= 1012 +# define BOOST_PP_ITERATION_1 1012 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1013 && BOOST_PP_ITERATION_FINISH_1 >= 1013 +# define BOOST_PP_ITERATION_1 1013 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1014 && BOOST_PP_ITERATION_FINISH_1 >= 1014 +# define BOOST_PP_ITERATION_1 1014 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1015 && BOOST_PP_ITERATION_FINISH_1 >= 1015 +# define BOOST_PP_ITERATION_1 1015 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1016 && BOOST_PP_ITERATION_FINISH_1 >= 1016 +# define BOOST_PP_ITERATION_1 1016 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1017 && BOOST_PP_ITERATION_FINISH_1 >= 1017 +# define BOOST_PP_ITERATION_1 1017 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1018 && BOOST_PP_ITERATION_FINISH_1 >= 1018 +# define BOOST_PP_ITERATION_1 1018 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1019 && BOOST_PP_ITERATION_FINISH_1 >= 1019 +# define BOOST_PP_ITERATION_1 1019 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1020 && BOOST_PP_ITERATION_FINISH_1 >= 1020 +# define BOOST_PP_ITERATION_1 1020 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1021 && BOOST_PP_ITERATION_FINISH_1 >= 1021 +# define BOOST_PP_ITERATION_1 1021 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1022 && BOOST_PP_ITERATION_FINISH_1 >= 1022 +# define BOOST_PP_ITERATION_1 1022 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1023 && BOOST_PP_ITERATION_FINISH_1 >= 1023 +# define BOOST_PP_ITERATION_1 1023 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1024 && BOOST_PP_ITERATION_FINISH_1 >= 1024 +# define BOOST_PP_ITERATION_1 1024 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward1_256.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward1_256.hpp new file mode 100644 index 000000000..269c18229 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward1_256.hpp @@ -0,0 +1,1296 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_START_1 <= 0 && BOOST_PP_ITERATION_FINISH_1 >= 0 +# define BOOST_PP_ITERATION_1 0 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 1 && BOOST_PP_ITERATION_FINISH_1 >= 1 +# define BOOST_PP_ITERATION_1 1 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 2 && BOOST_PP_ITERATION_FINISH_1 >= 2 +# define BOOST_PP_ITERATION_1 2 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 3 && BOOST_PP_ITERATION_FINISH_1 >= 3 +# define BOOST_PP_ITERATION_1 3 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 4 && BOOST_PP_ITERATION_FINISH_1 >= 4 +# define BOOST_PP_ITERATION_1 4 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 5 && BOOST_PP_ITERATION_FINISH_1 >= 5 +# define BOOST_PP_ITERATION_1 5 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 6 && BOOST_PP_ITERATION_FINISH_1 >= 6 +# define BOOST_PP_ITERATION_1 6 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 7 && BOOST_PP_ITERATION_FINISH_1 >= 7 +# define BOOST_PP_ITERATION_1 7 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 8 && BOOST_PP_ITERATION_FINISH_1 >= 8 +# define BOOST_PP_ITERATION_1 8 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 9 && BOOST_PP_ITERATION_FINISH_1 >= 9 +# define BOOST_PP_ITERATION_1 9 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 10 && BOOST_PP_ITERATION_FINISH_1 >= 10 +# define BOOST_PP_ITERATION_1 10 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 11 && BOOST_PP_ITERATION_FINISH_1 >= 11 +# define BOOST_PP_ITERATION_1 11 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 12 && BOOST_PP_ITERATION_FINISH_1 >= 12 +# define BOOST_PP_ITERATION_1 12 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 13 && BOOST_PP_ITERATION_FINISH_1 >= 13 +# define BOOST_PP_ITERATION_1 13 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 14 && BOOST_PP_ITERATION_FINISH_1 >= 14 +# define BOOST_PP_ITERATION_1 14 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 15 && BOOST_PP_ITERATION_FINISH_1 >= 15 +# define BOOST_PP_ITERATION_1 15 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 16 && BOOST_PP_ITERATION_FINISH_1 >= 16 +# define BOOST_PP_ITERATION_1 16 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 17 && BOOST_PP_ITERATION_FINISH_1 >= 17 +# define BOOST_PP_ITERATION_1 17 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 18 && BOOST_PP_ITERATION_FINISH_1 >= 18 +# define BOOST_PP_ITERATION_1 18 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 19 && BOOST_PP_ITERATION_FINISH_1 >= 19 +# define BOOST_PP_ITERATION_1 19 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 20 && BOOST_PP_ITERATION_FINISH_1 >= 20 +# define BOOST_PP_ITERATION_1 20 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 21 && BOOST_PP_ITERATION_FINISH_1 >= 21 +# define BOOST_PP_ITERATION_1 21 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 22 && BOOST_PP_ITERATION_FINISH_1 >= 22 +# define BOOST_PP_ITERATION_1 22 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 23 && BOOST_PP_ITERATION_FINISH_1 >= 23 +# define BOOST_PP_ITERATION_1 23 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 24 && BOOST_PP_ITERATION_FINISH_1 >= 24 +# define BOOST_PP_ITERATION_1 24 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 25 && BOOST_PP_ITERATION_FINISH_1 >= 25 +# define BOOST_PP_ITERATION_1 25 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 26 && BOOST_PP_ITERATION_FINISH_1 >= 26 +# define BOOST_PP_ITERATION_1 26 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 27 && BOOST_PP_ITERATION_FINISH_1 >= 27 +# define BOOST_PP_ITERATION_1 27 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 28 && BOOST_PP_ITERATION_FINISH_1 >= 28 +# define BOOST_PP_ITERATION_1 28 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 29 && BOOST_PP_ITERATION_FINISH_1 >= 29 +# define BOOST_PP_ITERATION_1 29 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 30 && BOOST_PP_ITERATION_FINISH_1 >= 30 +# define BOOST_PP_ITERATION_1 30 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 31 && BOOST_PP_ITERATION_FINISH_1 >= 31 +# define BOOST_PP_ITERATION_1 31 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 32 && BOOST_PP_ITERATION_FINISH_1 >= 32 +# define BOOST_PP_ITERATION_1 32 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 33 && BOOST_PP_ITERATION_FINISH_1 >= 33 +# define BOOST_PP_ITERATION_1 33 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 34 && BOOST_PP_ITERATION_FINISH_1 >= 34 +# define BOOST_PP_ITERATION_1 34 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 35 && BOOST_PP_ITERATION_FINISH_1 >= 35 +# define BOOST_PP_ITERATION_1 35 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 36 && BOOST_PP_ITERATION_FINISH_1 >= 36 +# define BOOST_PP_ITERATION_1 36 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 37 && BOOST_PP_ITERATION_FINISH_1 >= 37 +# define BOOST_PP_ITERATION_1 37 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 38 && BOOST_PP_ITERATION_FINISH_1 >= 38 +# define BOOST_PP_ITERATION_1 38 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 39 && BOOST_PP_ITERATION_FINISH_1 >= 39 +# define BOOST_PP_ITERATION_1 39 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 40 && BOOST_PP_ITERATION_FINISH_1 >= 40 +# define BOOST_PP_ITERATION_1 40 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 41 && BOOST_PP_ITERATION_FINISH_1 >= 41 +# define BOOST_PP_ITERATION_1 41 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 42 && BOOST_PP_ITERATION_FINISH_1 >= 42 +# define BOOST_PP_ITERATION_1 42 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 43 && BOOST_PP_ITERATION_FINISH_1 >= 43 +# define BOOST_PP_ITERATION_1 43 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 44 && BOOST_PP_ITERATION_FINISH_1 >= 44 +# define BOOST_PP_ITERATION_1 44 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 45 && BOOST_PP_ITERATION_FINISH_1 >= 45 +# define BOOST_PP_ITERATION_1 45 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 46 && BOOST_PP_ITERATION_FINISH_1 >= 46 +# define BOOST_PP_ITERATION_1 46 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 47 && BOOST_PP_ITERATION_FINISH_1 >= 47 +# define BOOST_PP_ITERATION_1 47 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 48 && BOOST_PP_ITERATION_FINISH_1 >= 48 +# define BOOST_PP_ITERATION_1 48 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 49 && BOOST_PP_ITERATION_FINISH_1 >= 49 +# define BOOST_PP_ITERATION_1 49 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 50 && BOOST_PP_ITERATION_FINISH_1 >= 50 +# define BOOST_PP_ITERATION_1 50 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 51 && BOOST_PP_ITERATION_FINISH_1 >= 51 +# define BOOST_PP_ITERATION_1 51 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 52 && BOOST_PP_ITERATION_FINISH_1 >= 52 +# define BOOST_PP_ITERATION_1 52 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 53 && BOOST_PP_ITERATION_FINISH_1 >= 53 +# define BOOST_PP_ITERATION_1 53 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 54 && BOOST_PP_ITERATION_FINISH_1 >= 54 +# define BOOST_PP_ITERATION_1 54 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 55 && BOOST_PP_ITERATION_FINISH_1 >= 55 +# define BOOST_PP_ITERATION_1 55 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 56 && BOOST_PP_ITERATION_FINISH_1 >= 56 +# define BOOST_PP_ITERATION_1 56 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 57 && BOOST_PP_ITERATION_FINISH_1 >= 57 +# define BOOST_PP_ITERATION_1 57 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 58 && BOOST_PP_ITERATION_FINISH_1 >= 58 +# define BOOST_PP_ITERATION_1 58 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 59 && BOOST_PP_ITERATION_FINISH_1 >= 59 +# define BOOST_PP_ITERATION_1 59 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 60 && BOOST_PP_ITERATION_FINISH_1 >= 60 +# define BOOST_PP_ITERATION_1 60 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 61 && BOOST_PP_ITERATION_FINISH_1 >= 61 +# define BOOST_PP_ITERATION_1 61 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 62 && BOOST_PP_ITERATION_FINISH_1 >= 62 +# define BOOST_PP_ITERATION_1 62 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 63 && BOOST_PP_ITERATION_FINISH_1 >= 63 +# define BOOST_PP_ITERATION_1 63 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 64 && BOOST_PP_ITERATION_FINISH_1 >= 64 +# define BOOST_PP_ITERATION_1 64 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 65 && BOOST_PP_ITERATION_FINISH_1 >= 65 +# define BOOST_PP_ITERATION_1 65 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 66 && BOOST_PP_ITERATION_FINISH_1 >= 66 +# define BOOST_PP_ITERATION_1 66 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 67 && BOOST_PP_ITERATION_FINISH_1 >= 67 +# define BOOST_PP_ITERATION_1 67 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 68 && BOOST_PP_ITERATION_FINISH_1 >= 68 +# define BOOST_PP_ITERATION_1 68 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 69 && BOOST_PP_ITERATION_FINISH_1 >= 69 +# define BOOST_PP_ITERATION_1 69 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 70 && BOOST_PP_ITERATION_FINISH_1 >= 70 +# define BOOST_PP_ITERATION_1 70 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 71 && BOOST_PP_ITERATION_FINISH_1 >= 71 +# define BOOST_PP_ITERATION_1 71 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 72 && BOOST_PP_ITERATION_FINISH_1 >= 72 +# define BOOST_PP_ITERATION_1 72 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 73 && BOOST_PP_ITERATION_FINISH_1 >= 73 +# define BOOST_PP_ITERATION_1 73 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 74 && BOOST_PP_ITERATION_FINISH_1 >= 74 +# define BOOST_PP_ITERATION_1 74 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 75 && BOOST_PP_ITERATION_FINISH_1 >= 75 +# define BOOST_PP_ITERATION_1 75 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 76 && BOOST_PP_ITERATION_FINISH_1 >= 76 +# define BOOST_PP_ITERATION_1 76 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 77 && BOOST_PP_ITERATION_FINISH_1 >= 77 +# define BOOST_PP_ITERATION_1 77 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 78 && BOOST_PP_ITERATION_FINISH_1 >= 78 +# define BOOST_PP_ITERATION_1 78 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 79 && BOOST_PP_ITERATION_FINISH_1 >= 79 +# define BOOST_PP_ITERATION_1 79 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 80 && BOOST_PP_ITERATION_FINISH_1 >= 80 +# define BOOST_PP_ITERATION_1 80 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 81 && BOOST_PP_ITERATION_FINISH_1 >= 81 +# define BOOST_PP_ITERATION_1 81 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 82 && BOOST_PP_ITERATION_FINISH_1 >= 82 +# define BOOST_PP_ITERATION_1 82 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 83 && BOOST_PP_ITERATION_FINISH_1 >= 83 +# define BOOST_PP_ITERATION_1 83 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 84 && BOOST_PP_ITERATION_FINISH_1 >= 84 +# define BOOST_PP_ITERATION_1 84 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 85 && BOOST_PP_ITERATION_FINISH_1 >= 85 +# define BOOST_PP_ITERATION_1 85 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 86 && BOOST_PP_ITERATION_FINISH_1 >= 86 +# define BOOST_PP_ITERATION_1 86 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 87 && BOOST_PP_ITERATION_FINISH_1 >= 87 +# define BOOST_PP_ITERATION_1 87 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 88 && BOOST_PP_ITERATION_FINISH_1 >= 88 +# define BOOST_PP_ITERATION_1 88 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 89 && BOOST_PP_ITERATION_FINISH_1 >= 89 +# define BOOST_PP_ITERATION_1 89 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 90 && BOOST_PP_ITERATION_FINISH_1 >= 90 +# define BOOST_PP_ITERATION_1 90 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 91 && BOOST_PP_ITERATION_FINISH_1 >= 91 +# define BOOST_PP_ITERATION_1 91 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 92 && BOOST_PP_ITERATION_FINISH_1 >= 92 +# define BOOST_PP_ITERATION_1 92 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 93 && BOOST_PP_ITERATION_FINISH_1 >= 93 +# define BOOST_PP_ITERATION_1 93 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 94 && BOOST_PP_ITERATION_FINISH_1 >= 94 +# define BOOST_PP_ITERATION_1 94 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 95 && BOOST_PP_ITERATION_FINISH_1 >= 95 +# define BOOST_PP_ITERATION_1 95 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 96 && BOOST_PP_ITERATION_FINISH_1 >= 96 +# define BOOST_PP_ITERATION_1 96 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 97 && BOOST_PP_ITERATION_FINISH_1 >= 97 +# define BOOST_PP_ITERATION_1 97 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 98 && BOOST_PP_ITERATION_FINISH_1 >= 98 +# define BOOST_PP_ITERATION_1 98 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 99 && BOOST_PP_ITERATION_FINISH_1 >= 99 +# define BOOST_PP_ITERATION_1 99 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 100 && BOOST_PP_ITERATION_FINISH_1 >= 100 +# define BOOST_PP_ITERATION_1 100 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 101 && BOOST_PP_ITERATION_FINISH_1 >= 101 +# define BOOST_PP_ITERATION_1 101 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 102 && BOOST_PP_ITERATION_FINISH_1 >= 102 +# define BOOST_PP_ITERATION_1 102 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 103 && BOOST_PP_ITERATION_FINISH_1 >= 103 +# define BOOST_PP_ITERATION_1 103 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 104 && BOOST_PP_ITERATION_FINISH_1 >= 104 +# define BOOST_PP_ITERATION_1 104 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 105 && BOOST_PP_ITERATION_FINISH_1 >= 105 +# define BOOST_PP_ITERATION_1 105 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 106 && BOOST_PP_ITERATION_FINISH_1 >= 106 +# define BOOST_PP_ITERATION_1 106 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 107 && BOOST_PP_ITERATION_FINISH_1 >= 107 +# define BOOST_PP_ITERATION_1 107 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 108 && BOOST_PP_ITERATION_FINISH_1 >= 108 +# define BOOST_PP_ITERATION_1 108 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 109 && BOOST_PP_ITERATION_FINISH_1 >= 109 +# define BOOST_PP_ITERATION_1 109 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 110 && BOOST_PP_ITERATION_FINISH_1 >= 110 +# define BOOST_PP_ITERATION_1 110 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 111 && BOOST_PP_ITERATION_FINISH_1 >= 111 +# define BOOST_PP_ITERATION_1 111 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 112 && BOOST_PP_ITERATION_FINISH_1 >= 112 +# define BOOST_PP_ITERATION_1 112 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 113 && BOOST_PP_ITERATION_FINISH_1 >= 113 +# define BOOST_PP_ITERATION_1 113 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 114 && BOOST_PP_ITERATION_FINISH_1 >= 114 +# define BOOST_PP_ITERATION_1 114 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 115 && BOOST_PP_ITERATION_FINISH_1 >= 115 +# define BOOST_PP_ITERATION_1 115 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 116 && BOOST_PP_ITERATION_FINISH_1 >= 116 +# define BOOST_PP_ITERATION_1 116 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 117 && BOOST_PP_ITERATION_FINISH_1 >= 117 +# define BOOST_PP_ITERATION_1 117 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 118 && BOOST_PP_ITERATION_FINISH_1 >= 118 +# define BOOST_PP_ITERATION_1 118 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 119 && BOOST_PP_ITERATION_FINISH_1 >= 119 +# define BOOST_PP_ITERATION_1 119 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 120 && BOOST_PP_ITERATION_FINISH_1 >= 120 +# define BOOST_PP_ITERATION_1 120 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 121 && BOOST_PP_ITERATION_FINISH_1 >= 121 +# define BOOST_PP_ITERATION_1 121 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 122 && BOOST_PP_ITERATION_FINISH_1 >= 122 +# define BOOST_PP_ITERATION_1 122 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 123 && BOOST_PP_ITERATION_FINISH_1 >= 123 +# define BOOST_PP_ITERATION_1 123 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 124 && BOOST_PP_ITERATION_FINISH_1 >= 124 +# define BOOST_PP_ITERATION_1 124 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 125 && BOOST_PP_ITERATION_FINISH_1 >= 125 +# define BOOST_PP_ITERATION_1 125 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 126 && BOOST_PP_ITERATION_FINISH_1 >= 126 +# define BOOST_PP_ITERATION_1 126 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 127 && BOOST_PP_ITERATION_FINISH_1 >= 127 +# define BOOST_PP_ITERATION_1 127 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 128 && BOOST_PP_ITERATION_FINISH_1 >= 128 +# define BOOST_PP_ITERATION_1 128 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 129 && BOOST_PP_ITERATION_FINISH_1 >= 129 +# define BOOST_PP_ITERATION_1 129 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 130 && BOOST_PP_ITERATION_FINISH_1 >= 130 +# define BOOST_PP_ITERATION_1 130 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 131 && BOOST_PP_ITERATION_FINISH_1 >= 131 +# define BOOST_PP_ITERATION_1 131 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 132 && BOOST_PP_ITERATION_FINISH_1 >= 132 +# define BOOST_PP_ITERATION_1 132 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 133 && BOOST_PP_ITERATION_FINISH_1 >= 133 +# define BOOST_PP_ITERATION_1 133 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 134 && BOOST_PP_ITERATION_FINISH_1 >= 134 +# define BOOST_PP_ITERATION_1 134 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 135 && BOOST_PP_ITERATION_FINISH_1 >= 135 +# define BOOST_PP_ITERATION_1 135 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 136 && BOOST_PP_ITERATION_FINISH_1 >= 136 +# define BOOST_PP_ITERATION_1 136 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 137 && BOOST_PP_ITERATION_FINISH_1 >= 137 +# define BOOST_PP_ITERATION_1 137 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 138 && BOOST_PP_ITERATION_FINISH_1 >= 138 +# define BOOST_PP_ITERATION_1 138 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 139 && BOOST_PP_ITERATION_FINISH_1 >= 139 +# define BOOST_PP_ITERATION_1 139 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 140 && BOOST_PP_ITERATION_FINISH_1 >= 140 +# define BOOST_PP_ITERATION_1 140 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 141 && BOOST_PP_ITERATION_FINISH_1 >= 141 +# define BOOST_PP_ITERATION_1 141 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 142 && BOOST_PP_ITERATION_FINISH_1 >= 142 +# define BOOST_PP_ITERATION_1 142 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 143 && BOOST_PP_ITERATION_FINISH_1 >= 143 +# define BOOST_PP_ITERATION_1 143 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 144 && BOOST_PP_ITERATION_FINISH_1 >= 144 +# define BOOST_PP_ITERATION_1 144 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 145 && BOOST_PP_ITERATION_FINISH_1 >= 145 +# define BOOST_PP_ITERATION_1 145 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 146 && BOOST_PP_ITERATION_FINISH_1 >= 146 +# define BOOST_PP_ITERATION_1 146 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 147 && BOOST_PP_ITERATION_FINISH_1 >= 147 +# define BOOST_PP_ITERATION_1 147 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 148 && BOOST_PP_ITERATION_FINISH_1 >= 148 +# define BOOST_PP_ITERATION_1 148 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 149 && BOOST_PP_ITERATION_FINISH_1 >= 149 +# define BOOST_PP_ITERATION_1 149 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 150 && BOOST_PP_ITERATION_FINISH_1 >= 150 +# define BOOST_PP_ITERATION_1 150 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 151 && BOOST_PP_ITERATION_FINISH_1 >= 151 +# define BOOST_PP_ITERATION_1 151 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 152 && BOOST_PP_ITERATION_FINISH_1 >= 152 +# define BOOST_PP_ITERATION_1 152 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 153 && BOOST_PP_ITERATION_FINISH_1 >= 153 +# define BOOST_PP_ITERATION_1 153 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 154 && BOOST_PP_ITERATION_FINISH_1 >= 154 +# define BOOST_PP_ITERATION_1 154 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 155 && BOOST_PP_ITERATION_FINISH_1 >= 155 +# define BOOST_PP_ITERATION_1 155 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 156 && BOOST_PP_ITERATION_FINISH_1 >= 156 +# define BOOST_PP_ITERATION_1 156 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 157 && BOOST_PP_ITERATION_FINISH_1 >= 157 +# define BOOST_PP_ITERATION_1 157 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 158 && BOOST_PP_ITERATION_FINISH_1 >= 158 +# define BOOST_PP_ITERATION_1 158 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 159 && BOOST_PP_ITERATION_FINISH_1 >= 159 +# define BOOST_PP_ITERATION_1 159 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 160 && BOOST_PP_ITERATION_FINISH_1 >= 160 +# define BOOST_PP_ITERATION_1 160 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 161 && BOOST_PP_ITERATION_FINISH_1 >= 161 +# define BOOST_PP_ITERATION_1 161 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 162 && BOOST_PP_ITERATION_FINISH_1 >= 162 +# define BOOST_PP_ITERATION_1 162 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 163 && BOOST_PP_ITERATION_FINISH_1 >= 163 +# define BOOST_PP_ITERATION_1 163 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 164 && BOOST_PP_ITERATION_FINISH_1 >= 164 +# define BOOST_PP_ITERATION_1 164 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 165 && BOOST_PP_ITERATION_FINISH_1 >= 165 +# define BOOST_PP_ITERATION_1 165 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 166 && BOOST_PP_ITERATION_FINISH_1 >= 166 +# define BOOST_PP_ITERATION_1 166 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 167 && BOOST_PP_ITERATION_FINISH_1 >= 167 +# define BOOST_PP_ITERATION_1 167 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 168 && BOOST_PP_ITERATION_FINISH_1 >= 168 +# define BOOST_PP_ITERATION_1 168 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 169 && BOOST_PP_ITERATION_FINISH_1 >= 169 +# define BOOST_PP_ITERATION_1 169 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 170 && BOOST_PP_ITERATION_FINISH_1 >= 170 +# define BOOST_PP_ITERATION_1 170 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 171 && BOOST_PP_ITERATION_FINISH_1 >= 171 +# define BOOST_PP_ITERATION_1 171 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 172 && BOOST_PP_ITERATION_FINISH_1 >= 172 +# define BOOST_PP_ITERATION_1 172 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 173 && BOOST_PP_ITERATION_FINISH_1 >= 173 +# define BOOST_PP_ITERATION_1 173 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 174 && BOOST_PP_ITERATION_FINISH_1 >= 174 +# define BOOST_PP_ITERATION_1 174 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 175 && BOOST_PP_ITERATION_FINISH_1 >= 175 +# define BOOST_PP_ITERATION_1 175 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 176 && BOOST_PP_ITERATION_FINISH_1 >= 176 +# define BOOST_PP_ITERATION_1 176 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 177 && BOOST_PP_ITERATION_FINISH_1 >= 177 +# define BOOST_PP_ITERATION_1 177 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 178 && BOOST_PP_ITERATION_FINISH_1 >= 178 +# define BOOST_PP_ITERATION_1 178 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 179 && BOOST_PP_ITERATION_FINISH_1 >= 179 +# define BOOST_PP_ITERATION_1 179 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 180 && BOOST_PP_ITERATION_FINISH_1 >= 180 +# define BOOST_PP_ITERATION_1 180 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 181 && BOOST_PP_ITERATION_FINISH_1 >= 181 +# define BOOST_PP_ITERATION_1 181 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 182 && BOOST_PP_ITERATION_FINISH_1 >= 182 +# define BOOST_PP_ITERATION_1 182 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 183 && BOOST_PP_ITERATION_FINISH_1 >= 183 +# define BOOST_PP_ITERATION_1 183 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 184 && BOOST_PP_ITERATION_FINISH_1 >= 184 +# define BOOST_PP_ITERATION_1 184 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 185 && BOOST_PP_ITERATION_FINISH_1 >= 185 +# define BOOST_PP_ITERATION_1 185 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 186 && BOOST_PP_ITERATION_FINISH_1 >= 186 +# define BOOST_PP_ITERATION_1 186 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 187 && BOOST_PP_ITERATION_FINISH_1 >= 187 +# define BOOST_PP_ITERATION_1 187 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 188 && BOOST_PP_ITERATION_FINISH_1 >= 188 +# define BOOST_PP_ITERATION_1 188 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 189 && BOOST_PP_ITERATION_FINISH_1 >= 189 +# define BOOST_PP_ITERATION_1 189 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 190 && BOOST_PP_ITERATION_FINISH_1 >= 190 +# define BOOST_PP_ITERATION_1 190 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 191 && BOOST_PP_ITERATION_FINISH_1 >= 191 +# define BOOST_PP_ITERATION_1 191 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 192 && BOOST_PP_ITERATION_FINISH_1 >= 192 +# define BOOST_PP_ITERATION_1 192 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 193 && BOOST_PP_ITERATION_FINISH_1 >= 193 +# define BOOST_PP_ITERATION_1 193 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 194 && BOOST_PP_ITERATION_FINISH_1 >= 194 +# define BOOST_PP_ITERATION_1 194 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 195 && BOOST_PP_ITERATION_FINISH_1 >= 195 +# define BOOST_PP_ITERATION_1 195 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 196 && BOOST_PP_ITERATION_FINISH_1 >= 196 +# define BOOST_PP_ITERATION_1 196 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 197 && BOOST_PP_ITERATION_FINISH_1 >= 197 +# define BOOST_PP_ITERATION_1 197 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 198 && BOOST_PP_ITERATION_FINISH_1 >= 198 +# define BOOST_PP_ITERATION_1 198 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 199 && BOOST_PP_ITERATION_FINISH_1 >= 199 +# define BOOST_PP_ITERATION_1 199 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 200 && BOOST_PP_ITERATION_FINISH_1 >= 200 +# define BOOST_PP_ITERATION_1 200 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 201 && BOOST_PP_ITERATION_FINISH_1 >= 201 +# define BOOST_PP_ITERATION_1 201 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 202 && BOOST_PP_ITERATION_FINISH_1 >= 202 +# define BOOST_PP_ITERATION_1 202 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 203 && BOOST_PP_ITERATION_FINISH_1 >= 203 +# define BOOST_PP_ITERATION_1 203 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 204 && BOOST_PP_ITERATION_FINISH_1 >= 204 +# define BOOST_PP_ITERATION_1 204 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 205 && BOOST_PP_ITERATION_FINISH_1 >= 205 +# define BOOST_PP_ITERATION_1 205 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 206 && BOOST_PP_ITERATION_FINISH_1 >= 206 +# define BOOST_PP_ITERATION_1 206 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 207 && BOOST_PP_ITERATION_FINISH_1 >= 207 +# define BOOST_PP_ITERATION_1 207 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 208 && BOOST_PP_ITERATION_FINISH_1 >= 208 +# define BOOST_PP_ITERATION_1 208 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 209 && BOOST_PP_ITERATION_FINISH_1 >= 209 +# define BOOST_PP_ITERATION_1 209 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 210 && BOOST_PP_ITERATION_FINISH_1 >= 210 +# define BOOST_PP_ITERATION_1 210 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 211 && BOOST_PP_ITERATION_FINISH_1 >= 211 +# define BOOST_PP_ITERATION_1 211 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 212 && BOOST_PP_ITERATION_FINISH_1 >= 212 +# define BOOST_PP_ITERATION_1 212 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 213 && BOOST_PP_ITERATION_FINISH_1 >= 213 +# define BOOST_PP_ITERATION_1 213 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 214 && BOOST_PP_ITERATION_FINISH_1 >= 214 +# define BOOST_PP_ITERATION_1 214 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 215 && BOOST_PP_ITERATION_FINISH_1 >= 215 +# define BOOST_PP_ITERATION_1 215 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 216 && BOOST_PP_ITERATION_FINISH_1 >= 216 +# define BOOST_PP_ITERATION_1 216 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 217 && BOOST_PP_ITERATION_FINISH_1 >= 217 +# define BOOST_PP_ITERATION_1 217 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 218 && BOOST_PP_ITERATION_FINISH_1 >= 218 +# define BOOST_PP_ITERATION_1 218 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 219 && BOOST_PP_ITERATION_FINISH_1 >= 219 +# define BOOST_PP_ITERATION_1 219 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 220 && BOOST_PP_ITERATION_FINISH_1 >= 220 +# define BOOST_PP_ITERATION_1 220 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 221 && BOOST_PP_ITERATION_FINISH_1 >= 221 +# define BOOST_PP_ITERATION_1 221 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 222 && BOOST_PP_ITERATION_FINISH_1 >= 222 +# define BOOST_PP_ITERATION_1 222 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 223 && BOOST_PP_ITERATION_FINISH_1 >= 223 +# define BOOST_PP_ITERATION_1 223 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 224 && BOOST_PP_ITERATION_FINISH_1 >= 224 +# define BOOST_PP_ITERATION_1 224 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 225 && BOOST_PP_ITERATION_FINISH_1 >= 225 +# define BOOST_PP_ITERATION_1 225 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 226 && BOOST_PP_ITERATION_FINISH_1 >= 226 +# define BOOST_PP_ITERATION_1 226 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 227 && BOOST_PP_ITERATION_FINISH_1 >= 227 +# define BOOST_PP_ITERATION_1 227 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 228 && BOOST_PP_ITERATION_FINISH_1 >= 228 +# define BOOST_PP_ITERATION_1 228 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 229 && BOOST_PP_ITERATION_FINISH_1 >= 229 +# define BOOST_PP_ITERATION_1 229 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 230 && BOOST_PP_ITERATION_FINISH_1 >= 230 +# define BOOST_PP_ITERATION_1 230 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 231 && BOOST_PP_ITERATION_FINISH_1 >= 231 +# define BOOST_PP_ITERATION_1 231 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 232 && BOOST_PP_ITERATION_FINISH_1 >= 232 +# define BOOST_PP_ITERATION_1 232 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 233 && BOOST_PP_ITERATION_FINISH_1 >= 233 +# define BOOST_PP_ITERATION_1 233 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 234 && BOOST_PP_ITERATION_FINISH_1 >= 234 +# define BOOST_PP_ITERATION_1 234 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 235 && BOOST_PP_ITERATION_FINISH_1 >= 235 +# define BOOST_PP_ITERATION_1 235 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 236 && BOOST_PP_ITERATION_FINISH_1 >= 236 +# define BOOST_PP_ITERATION_1 236 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 237 && BOOST_PP_ITERATION_FINISH_1 >= 237 +# define BOOST_PP_ITERATION_1 237 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 238 && BOOST_PP_ITERATION_FINISH_1 >= 238 +# define BOOST_PP_ITERATION_1 238 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 239 && BOOST_PP_ITERATION_FINISH_1 >= 239 +# define BOOST_PP_ITERATION_1 239 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 240 && BOOST_PP_ITERATION_FINISH_1 >= 240 +# define BOOST_PP_ITERATION_1 240 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 241 && BOOST_PP_ITERATION_FINISH_1 >= 241 +# define BOOST_PP_ITERATION_1 241 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 242 && BOOST_PP_ITERATION_FINISH_1 >= 242 +# define BOOST_PP_ITERATION_1 242 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 243 && BOOST_PP_ITERATION_FINISH_1 >= 243 +# define BOOST_PP_ITERATION_1 243 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 244 && BOOST_PP_ITERATION_FINISH_1 >= 244 +# define BOOST_PP_ITERATION_1 244 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 245 && BOOST_PP_ITERATION_FINISH_1 >= 245 +# define BOOST_PP_ITERATION_1 245 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 246 && BOOST_PP_ITERATION_FINISH_1 >= 246 +# define BOOST_PP_ITERATION_1 246 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 247 && BOOST_PP_ITERATION_FINISH_1 >= 247 +# define BOOST_PP_ITERATION_1 247 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 248 && BOOST_PP_ITERATION_FINISH_1 >= 248 +# define BOOST_PP_ITERATION_1 248 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 249 && BOOST_PP_ITERATION_FINISH_1 >= 249 +# define BOOST_PP_ITERATION_1 249 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 250 && BOOST_PP_ITERATION_FINISH_1 >= 250 +# define BOOST_PP_ITERATION_1 250 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 251 && BOOST_PP_ITERATION_FINISH_1 >= 251 +# define BOOST_PP_ITERATION_1 251 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 252 && BOOST_PP_ITERATION_FINISH_1 >= 252 +# define BOOST_PP_ITERATION_1 252 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 253 && BOOST_PP_ITERATION_FINISH_1 >= 253 +# define BOOST_PP_ITERATION_1 253 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 254 && BOOST_PP_ITERATION_FINISH_1 >= 254 +# define BOOST_PP_ITERATION_1 254 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 255 && BOOST_PP_ITERATION_FINISH_1 >= 255 +# define BOOST_PP_ITERATION_1 255 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 256 && BOOST_PP_ITERATION_FINISH_1 >= 256 +# define BOOST_PP_ITERATION_1 256 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward1_512.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward1_512.hpp new file mode 100644 index 000000000..58122dc82 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward1_512.hpp @@ -0,0 +1,1293 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_START_1 <= 257 && BOOST_PP_ITERATION_FINISH_1 >= 257 +# define BOOST_PP_ITERATION_1 257 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 258 && BOOST_PP_ITERATION_FINISH_1 >= 258 +# define BOOST_PP_ITERATION_1 258 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 259 && BOOST_PP_ITERATION_FINISH_1 >= 259 +# define BOOST_PP_ITERATION_1 259 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 260 && BOOST_PP_ITERATION_FINISH_1 >= 260 +# define BOOST_PP_ITERATION_1 260 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 261 && BOOST_PP_ITERATION_FINISH_1 >= 261 +# define BOOST_PP_ITERATION_1 261 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 262 && BOOST_PP_ITERATION_FINISH_1 >= 262 +# define BOOST_PP_ITERATION_1 262 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 263 && BOOST_PP_ITERATION_FINISH_1 >= 263 +# define BOOST_PP_ITERATION_1 263 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 264 && BOOST_PP_ITERATION_FINISH_1 >= 264 +# define BOOST_PP_ITERATION_1 264 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 265 && BOOST_PP_ITERATION_FINISH_1 >= 265 +# define BOOST_PP_ITERATION_1 265 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 266 && BOOST_PP_ITERATION_FINISH_1 >= 266 +# define BOOST_PP_ITERATION_1 266 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 267 && BOOST_PP_ITERATION_FINISH_1 >= 267 +# define BOOST_PP_ITERATION_1 267 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 268 && BOOST_PP_ITERATION_FINISH_1 >= 268 +# define BOOST_PP_ITERATION_1 268 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 269 && BOOST_PP_ITERATION_FINISH_1 >= 269 +# define BOOST_PP_ITERATION_1 269 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 270 && BOOST_PP_ITERATION_FINISH_1 >= 270 +# define BOOST_PP_ITERATION_1 270 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 271 && BOOST_PP_ITERATION_FINISH_1 >= 271 +# define BOOST_PP_ITERATION_1 271 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 272 && BOOST_PP_ITERATION_FINISH_1 >= 272 +# define BOOST_PP_ITERATION_1 272 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 273 && BOOST_PP_ITERATION_FINISH_1 >= 273 +# define BOOST_PP_ITERATION_1 273 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 274 && BOOST_PP_ITERATION_FINISH_1 >= 274 +# define BOOST_PP_ITERATION_1 274 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 275 && BOOST_PP_ITERATION_FINISH_1 >= 275 +# define BOOST_PP_ITERATION_1 275 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 276 && BOOST_PP_ITERATION_FINISH_1 >= 276 +# define BOOST_PP_ITERATION_1 276 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 277 && BOOST_PP_ITERATION_FINISH_1 >= 277 +# define BOOST_PP_ITERATION_1 277 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 278 && BOOST_PP_ITERATION_FINISH_1 >= 278 +# define BOOST_PP_ITERATION_1 278 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 279 && BOOST_PP_ITERATION_FINISH_1 >= 279 +# define BOOST_PP_ITERATION_1 279 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 280 && BOOST_PP_ITERATION_FINISH_1 >= 280 +# define BOOST_PP_ITERATION_1 280 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 281 && BOOST_PP_ITERATION_FINISH_1 >= 281 +# define BOOST_PP_ITERATION_1 281 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 282 && BOOST_PP_ITERATION_FINISH_1 >= 282 +# define BOOST_PP_ITERATION_1 282 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 283 && BOOST_PP_ITERATION_FINISH_1 >= 283 +# define BOOST_PP_ITERATION_1 283 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 284 && BOOST_PP_ITERATION_FINISH_1 >= 284 +# define BOOST_PP_ITERATION_1 284 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 285 && BOOST_PP_ITERATION_FINISH_1 >= 285 +# define BOOST_PP_ITERATION_1 285 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 286 && BOOST_PP_ITERATION_FINISH_1 >= 286 +# define BOOST_PP_ITERATION_1 286 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 287 && BOOST_PP_ITERATION_FINISH_1 >= 287 +# define BOOST_PP_ITERATION_1 287 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 288 && BOOST_PP_ITERATION_FINISH_1 >= 288 +# define BOOST_PP_ITERATION_1 288 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 289 && BOOST_PP_ITERATION_FINISH_1 >= 289 +# define BOOST_PP_ITERATION_1 289 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 290 && BOOST_PP_ITERATION_FINISH_1 >= 290 +# define BOOST_PP_ITERATION_1 290 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 291 && BOOST_PP_ITERATION_FINISH_1 >= 291 +# define BOOST_PP_ITERATION_1 291 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 292 && BOOST_PP_ITERATION_FINISH_1 >= 292 +# define BOOST_PP_ITERATION_1 292 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 293 && BOOST_PP_ITERATION_FINISH_1 >= 293 +# define BOOST_PP_ITERATION_1 293 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 294 && BOOST_PP_ITERATION_FINISH_1 >= 294 +# define BOOST_PP_ITERATION_1 294 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 295 && BOOST_PP_ITERATION_FINISH_1 >= 295 +# define BOOST_PP_ITERATION_1 295 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 296 && BOOST_PP_ITERATION_FINISH_1 >= 296 +# define BOOST_PP_ITERATION_1 296 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 297 && BOOST_PP_ITERATION_FINISH_1 >= 297 +# define BOOST_PP_ITERATION_1 297 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 298 && BOOST_PP_ITERATION_FINISH_1 >= 298 +# define BOOST_PP_ITERATION_1 298 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 299 && BOOST_PP_ITERATION_FINISH_1 >= 299 +# define BOOST_PP_ITERATION_1 299 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 300 && BOOST_PP_ITERATION_FINISH_1 >= 300 +# define BOOST_PP_ITERATION_1 300 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 301 && BOOST_PP_ITERATION_FINISH_1 >= 301 +# define BOOST_PP_ITERATION_1 301 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 302 && BOOST_PP_ITERATION_FINISH_1 >= 302 +# define BOOST_PP_ITERATION_1 302 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 303 && BOOST_PP_ITERATION_FINISH_1 >= 303 +# define BOOST_PP_ITERATION_1 303 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 304 && BOOST_PP_ITERATION_FINISH_1 >= 304 +# define BOOST_PP_ITERATION_1 304 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 305 && BOOST_PP_ITERATION_FINISH_1 >= 305 +# define BOOST_PP_ITERATION_1 305 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 306 && BOOST_PP_ITERATION_FINISH_1 >= 306 +# define BOOST_PP_ITERATION_1 306 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 307 && BOOST_PP_ITERATION_FINISH_1 >= 307 +# define BOOST_PP_ITERATION_1 307 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 308 && BOOST_PP_ITERATION_FINISH_1 >= 308 +# define BOOST_PP_ITERATION_1 308 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 309 && BOOST_PP_ITERATION_FINISH_1 >= 309 +# define BOOST_PP_ITERATION_1 309 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 310 && BOOST_PP_ITERATION_FINISH_1 >= 310 +# define BOOST_PP_ITERATION_1 310 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 311 && BOOST_PP_ITERATION_FINISH_1 >= 311 +# define BOOST_PP_ITERATION_1 311 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 312 && BOOST_PP_ITERATION_FINISH_1 >= 312 +# define BOOST_PP_ITERATION_1 312 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 313 && BOOST_PP_ITERATION_FINISH_1 >= 313 +# define BOOST_PP_ITERATION_1 313 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 314 && BOOST_PP_ITERATION_FINISH_1 >= 314 +# define BOOST_PP_ITERATION_1 314 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 315 && BOOST_PP_ITERATION_FINISH_1 >= 315 +# define BOOST_PP_ITERATION_1 315 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 316 && BOOST_PP_ITERATION_FINISH_1 >= 316 +# define BOOST_PP_ITERATION_1 316 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 317 && BOOST_PP_ITERATION_FINISH_1 >= 317 +# define BOOST_PP_ITERATION_1 317 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 318 && BOOST_PP_ITERATION_FINISH_1 >= 318 +# define BOOST_PP_ITERATION_1 318 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 319 && BOOST_PP_ITERATION_FINISH_1 >= 319 +# define BOOST_PP_ITERATION_1 319 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 320 && BOOST_PP_ITERATION_FINISH_1 >= 320 +# define BOOST_PP_ITERATION_1 320 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 321 && BOOST_PP_ITERATION_FINISH_1 >= 321 +# define BOOST_PP_ITERATION_1 321 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 322 && BOOST_PP_ITERATION_FINISH_1 >= 322 +# define BOOST_PP_ITERATION_1 322 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 323 && BOOST_PP_ITERATION_FINISH_1 >= 323 +# define BOOST_PP_ITERATION_1 323 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 324 && BOOST_PP_ITERATION_FINISH_1 >= 324 +# define BOOST_PP_ITERATION_1 324 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 325 && BOOST_PP_ITERATION_FINISH_1 >= 325 +# define BOOST_PP_ITERATION_1 325 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 326 && BOOST_PP_ITERATION_FINISH_1 >= 326 +# define BOOST_PP_ITERATION_1 326 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 327 && BOOST_PP_ITERATION_FINISH_1 >= 327 +# define BOOST_PP_ITERATION_1 327 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 328 && BOOST_PP_ITERATION_FINISH_1 >= 328 +# define BOOST_PP_ITERATION_1 328 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 329 && BOOST_PP_ITERATION_FINISH_1 >= 329 +# define BOOST_PP_ITERATION_1 329 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 330 && BOOST_PP_ITERATION_FINISH_1 >= 330 +# define BOOST_PP_ITERATION_1 330 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 331 && BOOST_PP_ITERATION_FINISH_1 >= 331 +# define BOOST_PP_ITERATION_1 331 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 332 && BOOST_PP_ITERATION_FINISH_1 >= 332 +# define BOOST_PP_ITERATION_1 332 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 333 && BOOST_PP_ITERATION_FINISH_1 >= 333 +# define BOOST_PP_ITERATION_1 333 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 334 && BOOST_PP_ITERATION_FINISH_1 >= 334 +# define BOOST_PP_ITERATION_1 334 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 335 && BOOST_PP_ITERATION_FINISH_1 >= 335 +# define BOOST_PP_ITERATION_1 335 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 336 && BOOST_PP_ITERATION_FINISH_1 >= 336 +# define BOOST_PP_ITERATION_1 336 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 337 && BOOST_PP_ITERATION_FINISH_1 >= 337 +# define BOOST_PP_ITERATION_1 337 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 338 && BOOST_PP_ITERATION_FINISH_1 >= 338 +# define BOOST_PP_ITERATION_1 338 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 339 && BOOST_PP_ITERATION_FINISH_1 >= 339 +# define BOOST_PP_ITERATION_1 339 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 340 && BOOST_PP_ITERATION_FINISH_1 >= 340 +# define BOOST_PP_ITERATION_1 340 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 341 && BOOST_PP_ITERATION_FINISH_1 >= 341 +# define BOOST_PP_ITERATION_1 341 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 342 && BOOST_PP_ITERATION_FINISH_1 >= 342 +# define BOOST_PP_ITERATION_1 342 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 343 && BOOST_PP_ITERATION_FINISH_1 >= 343 +# define BOOST_PP_ITERATION_1 343 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 344 && BOOST_PP_ITERATION_FINISH_1 >= 344 +# define BOOST_PP_ITERATION_1 344 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 345 && BOOST_PP_ITERATION_FINISH_1 >= 345 +# define BOOST_PP_ITERATION_1 345 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 346 && BOOST_PP_ITERATION_FINISH_1 >= 346 +# define BOOST_PP_ITERATION_1 346 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 347 && BOOST_PP_ITERATION_FINISH_1 >= 347 +# define BOOST_PP_ITERATION_1 347 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 348 && BOOST_PP_ITERATION_FINISH_1 >= 348 +# define BOOST_PP_ITERATION_1 348 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 349 && BOOST_PP_ITERATION_FINISH_1 >= 349 +# define BOOST_PP_ITERATION_1 349 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 350 && BOOST_PP_ITERATION_FINISH_1 >= 350 +# define BOOST_PP_ITERATION_1 350 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 351 && BOOST_PP_ITERATION_FINISH_1 >= 351 +# define BOOST_PP_ITERATION_1 351 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 352 && BOOST_PP_ITERATION_FINISH_1 >= 352 +# define BOOST_PP_ITERATION_1 352 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 353 && BOOST_PP_ITERATION_FINISH_1 >= 353 +# define BOOST_PP_ITERATION_1 353 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 354 && BOOST_PP_ITERATION_FINISH_1 >= 354 +# define BOOST_PP_ITERATION_1 354 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 355 && BOOST_PP_ITERATION_FINISH_1 >= 355 +# define BOOST_PP_ITERATION_1 355 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 356 && BOOST_PP_ITERATION_FINISH_1 >= 356 +# define BOOST_PP_ITERATION_1 356 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 357 && BOOST_PP_ITERATION_FINISH_1 >= 357 +# define BOOST_PP_ITERATION_1 357 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 358 && BOOST_PP_ITERATION_FINISH_1 >= 358 +# define BOOST_PP_ITERATION_1 358 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 359 && BOOST_PP_ITERATION_FINISH_1 >= 359 +# define BOOST_PP_ITERATION_1 359 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 360 && BOOST_PP_ITERATION_FINISH_1 >= 360 +# define BOOST_PP_ITERATION_1 360 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 361 && BOOST_PP_ITERATION_FINISH_1 >= 361 +# define BOOST_PP_ITERATION_1 361 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 362 && BOOST_PP_ITERATION_FINISH_1 >= 362 +# define BOOST_PP_ITERATION_1 362 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 363 && BOOST_PP_ITERATION_FINISH_1 >= 363 +# define BOOST_PP_ITERATION_1 363 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 364 && BOOST_PP_ITERATION_FINISH_1 >= 364 +# define BOOST_PP_ITERATION_1 364 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 365 && BOOST_PP_ITERATION_FINISH_1 >= 365 +# define BOOST_PP_ITERATION_1 365 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 366 && BOOST_PP_ITERATION_FINISH_1 >= 366 +# define BOOST_PP_ITERATION_1 366 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 367 && BOOST_PP_ITERATION_FINISH_1 >= 367 +# define BOOST_PP_ITERATION_1 367 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 368 && BOOST_PP_ITERATION_FINISH_1 >= 368 +# define BOOST_PP_ITERATION_1 368 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 369 && BOOST_PP_ITERATION_FINISH_1 >= 369 +# define BOOST_PP_ITERATION_1 369 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 370 && BOOST_PP_ITERATION_FINISH_1 >= 370 +# define BOOST_PP_ITERATION_1 370 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 371 && BOOST_PP_ITERATION_FINISH_1 >= 371 +# define BOOST_PP_ITERATION_1 371 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 372 && BOOST_PP_ITERATION_FINISH_1 >= 372 +# define BOOST_PP_ITERATION_1 372 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 373 && BOOST_PP_ITERATION_FINISH_1 >= 373 +# define BOOST_PP_ITERATION_1 373 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 374 && BOOST_PP_ITERATION_FINISH_1 >= 374 +# define BOOST_PP_ITERATION_1 374 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 375 && BOOST_PP_ITERATION_FINISH_1 >= 375 +# define BOOST_PP_ITERATION_1 375 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 376 && BOOST_PP_ITERATION_FINISH_1 >= 376 +# define BOOST_PP_ITERATION_1 376 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 377 && BOOST_PP_ITERATION_FINISH_1 >= 377 +# define BOOST_PP_ITERATION_1 377 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 378 && BOOST_PP_ITERATION_FINISH_1 >= 378 +# define BOOST_PP_ITERATION_1 378 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 379 && BOOST_PP_ITERATION_FINISH_1 >= 379 +# define BOOST_PP_ITERATION_1 379 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 380 && BOOST_PP_ITERATION_FINISH_1 >= 380 +# define BOOST_PP_ITERATION_1 380 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 381 && BOOST_PP_ITERATION_FINISH_1 >= 381 +# define BOOST_PP_ITERATION_1 381 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 382 && BOOST_PP_ITERATION_FINISH_1 >= 382 +# define BOOST_PP_ITERATION_1 382 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 383 && BOOST_PP_ITERATION_FINISH_1 >= 383 +# define BOOST_PP_ITERATION_1 383 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 384 && BOOST_PP_ITERATION_FINISH_1 >= 384 +# define BOOST_PP_ITERATION_1 384 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 385 && BOOST_PP_ITERATION_FINISH_1 >= 385 +# define BOOST_PP_ITERATION_1 385 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 386 && BOOST_PP_ITERATION_FINISH_1 >= 386 +# define BOOST_PP_ITERATION_1 386 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 387 && BOOST_PP_ITERATION_FINISH_1 >= 387 +# define BOOST_PP_ITERATION_1 387 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 388 && BOOST_PP_ITERATION_FINISH_1 >= 388 +# define BOOST_PP_ITERATION_1 388 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 389 && BOOST_PP_ITERATION_FINISH_1 >= 389 +# define BOOST_PP_ITERATION_1 389 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 390 && BOOST_PP_ITERATION_FINISH_1 >= 390 +# define BOOST_PP_ITERATION_1 390 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 391 && BOOST_PP_ITERATION_FINISH_1 >= 391 +# define BOOST_PP_ITERATION_1 391 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 392 && BOOST_PP_ITERATION_FINISH_1 >= 392 +# define BOOST_PP_ITERATION_1 392 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 393 && BOOST_PP_ITERATION_FINISH_1 >= 393 +# define BOOST_PP_ITERATION_1 393 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 394 && BOOST_PP_ITERATION_FINISH_1 >= 394 +# define BOOST_PP_ITERATION_1 394 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 395 && BOOST_PP_ITERATION_FINISH_1 >= 395 +# define BOOST_PP_ITERATION_1 395 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 396 && BOOST_PP_ITERATION_FINISH_1 >= 396 +# define BOOST_PP_ITERATION_1 396 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 397 && BOOST_PP_ITERATION_FINISH_1 >= 397 +# define BOOST_PP_ITERATION_1 397 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 398 && BOOST_PP_ITERATION_FINISH_1 >= 398 +# define BOOST_PP_ITERATION_1 398 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 399 && BOOST_PP_ITERATION_FINISH_1 >= 399 +# define BOOST_PP_ITERATION_1 399 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 400 && BOOST_PP_ITERATION_FINISH_1 >= 400 +# define BOOST_PP_ITERATION_1 400 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 401 && BOOST_PP_ITERATION_FINISH_1 >= 401 +# define BOOST_PP_ITERATION_1 401 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 402 && BOOST_PP_ITERATION_FINISH_1 >= 402 +# define BOOST_PP_ITERATION_1 402 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 403 && BOOST_PP_ITERATION_FINISH_1 >= 403 +# define BOOST_PP_ITERATION_1 403 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 404 && BOOST_PP_ITERATION_FINISH_1 >= 404 +# define BOOST_PP_ITERATION_1 404 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 405 && BOOST_PP_ITERATION_FINISH_1 >= 405 +# define BOOST_PP_ITERATION_1 405 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 406 && BOOST_PP_ITERATION_FINISH_1 >= 406 +# define BOOST_PP_ITERATION_1 406 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 407 && BOOST_PP_ITERATION_FINISH_1 >= 407 +# define BOOST_PP_ITERATION_1 407 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 408 && BOOST_PP_ITERATION_FINISH_1 >= 408 +# define BOOST_PP_ITERATION_1 408 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 409 && BOOST_PP_ITERATION_FINISH_1 >= 409 +# define BOOST_PP_ITERATION_1 409 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 410 && BOOST_PP_ITERATION_FINISH_1 >= 410 +# define BOOST_PP_ITERATION_1 410 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 411 && BOOST_PP_ITERATION_FINISH_1 >= 411 +# define BOOST_PP_ITERATION_1 411 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 412 && BOOST_PP_ITERATION_FINISH_1 >= 412 +# define BOOST_PP_ITERATION_1 412 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 413 && BOOST_PP_ITERATION_FINISH_1 >= 413 +# define BOOST_PP_ITERATION_1 413 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 414 && BOOST_PP_ITERATION_FINISH_1 >= 414 +# define BOOST_PP_ITERATION_1 414 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 415 && BOOST_PP_ITERATION_FINISH_1 >= 415 +# define BOOST_PP_ITERATION_1 415 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 416 && BOOST_PP_ITERATION_FINISH_1 >= 416 +# define BOOST_PP_ITERATION_1 416 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 417 && BOOST_PP_ITERATION_FINISH_1 >= 417 +# define BOOST_PP_ITERATION_1 417 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 418 && BOOST_PP_ITERATION_FINISH_1 >= 418 +# define BOOST_PP_ITERATION_1 418 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 419 && BOOST_PP_ITERATION_FINISH_1 >= 419 +# define BOOST_PP_ITERATION_1 419 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 420 && BOOST_PP_ITERATION_FINISH_1 >= 420 +# define BOOST_PP_ITERATION_1 420 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 421 && BOOST_PP_ITERATION_FINISH_1 >= 421 +# define BOOST_PP_ITERATION_1 421 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 422 && BOOST_PP_ITERATION_FINISH_1 >= 422 +# define BOOST_PP_ITERATION_1 422 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 423 && BOOST_PP_ITERATION_FINISH_1 >= 423 +# define BOOST_PP_ITERATION_1 423 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 424 && BOOST_PP_ITERATION_FINISH_1 >= 424 +# define BOOST_PP_ITERATION_1 424 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 425 && BOOST_PP_ITERATION_FINISH_1 >= 425 +# define BOOST_PP_ITERATION_1 425 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 426 && BOOST_PP_ITERATION_FINISH_1 >= 426 +# define BOOST_PP_ITERATION_1 426 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 427 && BOOST_PP_ITERATION_FINISH_1 >= 427 +# define BOOST_PP_ITERATION_1 427 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 428 && BOOST_PP_ITERATION_FINISH_1 >= 428 +# define BOOST_PP_ITERATION_1 428 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 429 && BOOST_PP_ITERATION_FINISH_1 >= 429 +# define BOOST_PP_ITERATION_1 429 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 430 && BOOST_PP_ITERATION_FINISH_1 >= 430 +# define BOOST_PP_ITERATION_1 430 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 431 && BOOST_PP_ITERATION_FINISH_1 >= 431 +# define BOOST_PP_ITERATION_1 431 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 432 && BOOST_PP_ITERATION_FINISH_1 >= 432 +# define BOOST_PP_ITERATION_1 432 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 433 && BOOST_PP_ITERATION_FINISH_1 >= 433 +# define BOOST_PP_ITERATION_1 433 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 434 && BOOST_PP_ITERATION_FINISH_1 >= 434 +# define BOOST_PP_ITERATION_1 434 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 435 && BOOST_PP_ITERATION_FINISH_1 >= 435 +# define BOOST_PP_ITERATION_1 435 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 436 && BOOST_PP_ITERATION_FINISH_1 >= 436 +# define BOOST_PP_ITERATION_1 436 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 437 && BOOST_PP_ITERATION_FINISH_1 >= 437 +# define BOOST_PP_ITERATION_1 437 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 438 && BOOST_PP_ITERATION_FINISH_1 >= 438 +# define BOOST_PP_ITERATION_1 438 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 439 && BOOST_PP_ITERATION_FINISH_1 >= 439 +# define BOOST_PP_ITERATION_1 439 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 440 && BOOST_PP_ITERATION_FINISH_1 >= 440 +# define BOOST_PP_ITERATION_1 440 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 441 && BOOST_PP_ITERATION_FINISH_1 >= 441 +# define BOOST_PP_ITERATION_1 441 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 442 && BOOST_PP_ITERATION_FINISH_1 >= 442 +# define BOOST_PP_ITERATION_1 442 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 443 && BOOST_PP_ITERATION_FINISH_1 >= 443 +# define BOOST_PP_ITERATION_1 443 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 444 && BOOST_PP_ITERATION_FINISH_1 >= 444 +# define BOOST_PP_ITERATION_1 444 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 445 && BOOST_PP_ITERATION_FINISH_1 >= 445 +# define BOOST_PP_ITERATION_1 445 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 446 && BOOST_PP_ITERATION_FINISH_1 >= 446 +# define BOOST_PP_ITERATION_1 446 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 447 && BOOST_PP_ITERATION_FINISH_1 >= 447 +# define BOOST_PP_ITERATION_1 447 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 448 && BOOST_PP_ITERATION_FINISH_1 >= 448 +# define BOOST_PP_ITERATION_1 448 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 449 && BOOST_PP_ITERATION_FINISH_1 >= 449 +# define BOOST_PP_ITERATION_1 449 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 450 && BOOST_PP_ITERATION_FINISH_1 >= 450 +# define BOOST_PP_ITERATION_1 450 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 451 && BOOST_PP_ITERATION_FINISH_1 >= 451 +# define BOOST_PP_ITERATION_1 451 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 452 && BOOST_PP_ITERATION_FINISH_1 >= 452 +# define BOOST_PP_ITERATION_1 452 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 453 && BOOST_PP_ITERATION_FINISH_1 >= 453 +# define BOOST_PP_ITERATION_1 453 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 454 && BOOST_PP_ITERATION_FINISH_1 >= 454 +# define BOOST_PP_ITERATION_1 454 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 455 && BOOST_PP_ITERATION_FINISH_1 >= 455 +# define BOOST_PP_ITERATION_1 455 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 456 && BOOST_PP_ITERATION_FINISH_1 >= 456 +# define BOOST_PP_ITERATION_1 456 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 457 && BOOST_PP_ITERATION_FINISH_1 >= 457 +# define BOOST_PP_ITERATION_1 457 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 458 && BOOST_PP_ITERATION_FINISH_1 >= 458 +# define BOOST_PP_ITERATION_1 458 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 459 && BOOST_PP_ITERATION_FINISH_1 >= 459 +# define BOOST_PP_ITERATION_1 459 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 460 && BOOST_PP_ITERATION_FINISH_1 >= 460 +# define BOOST_PP_ITERATION_1 460 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 461 && BOOST_PP_ITERATION_FINISH_1 >= 461 +# define BOOST_PP_ITERATION_1 461 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 462 && BOOST_PP_ITERATION_FINISH_1 >= 462 +# define BOOST_PP_ITERATION_1 462 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 463 && BOOST_PP_ITERATION_FINISH_1 >= 463 +# define BOOST_PP_ITERATION_1 463 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 464 && BOOST_PP_ITERATION_FINISH_1 >= 464 +# define BOOST_PP_ITERATION_1 464 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 465 && BOOST_PP_ITERATION_FINISH_1 >= 465 +# define BOOST_PP_ITERATION_1 465 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 466 && BOOST_PP_ITERATION_FINISH_1 >= 466 +# define BOOST_PP_ITERATION_1 466 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 467 && BOOST_PP_ITERATION_FINISH_1 >= 467 +# define BOOST_PP_ITERATION_1 467 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 468 && BOOST_PP_ITERATION_FINISH_1 >= 468 +# define BOOST_PP_ITERATION_1 468 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 469 && BOOST_PP_ITERATION_FINISH_1 >= 469 +# define BOOST_PP_ITERATION_1 469 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 470 && BOOST_PP_ITERATION_FINISH_1 >= 470 +# define BOOST_PP_ITERATION_1 470 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 471 && BOOST_PP_ITERATION_FINISH_1 >= 471 +# define BOOST_PP_ITERATION_1 471 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 472 && BOOST_PP_ITERATION_FINISH_1 >= 472 +# define BOOST_PP_ITERATION_1 472 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 473 && BOOST_PP_ITERATION_FINISH_1 >= 473 +# define BOOST_PP_ITERATION_1 473 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 474 && BOOST_PP_ITERATION_FINISH_1 >= 474 +# define BOOST_PP_ITERATION_1 474 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 475 && BOOST_PP_ITERATION_FINISH_1 >= 475 +# define BOOST_PP_ITERATION_1 475 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 476 && BOOST_PP_ITERATION_FINISH_1 >= 476 +# define BOOST_PP_ITERATION_1 476 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 477 && BOOST_PP_ITERATION_FINISH_1 >= 477 +# define BOOST_PP_ITERATION_1 477 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 478 && BOOST_PP_ITERATION_FINISH_1 >= 478 +# define BOOST_PP_ITERATION_1 478 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 479 && BOOST_PP_ITERATION_FINISH_1 >= 479 +# define BOOST_PP_ITERATION_1 479 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 480 && BOOST_PP_ITERATION_FINISH_1 >= 480 +# define BOOST_PP_ITERATION_1 480 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 481 && BOOST_PP_ITERATION_FINISH_1 >= 481 +# define BOOST_PP_ITERATION_1 481 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 482 && BOOST_PP_ITERATION_FINISH_1 >= 482 +# define BOOST_PP_ITERATION_1 482 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 483 && BOOST_PP_ITERATION_FINISH_1 >= 483 +# define BOOST_PP_ITERATION_1 483 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 484 && BOOST_PP_ITERATION_FINISH_1 >= 484 +# define BOOST_PP_ITERATION_1 484 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 485 && BOOST_PP_ITERATION_FINISH_1 >= 485 +# define BOOST_PP_ITERATION_1 485 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 486 && BOOST_PP_ITERATION_FINISH_1 >= 486 +# define BOOST_PP_ITERATION_1 486 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 487 && BOOST_PP_ITERATION_FINISH_1 >= 487 +# define BOOST_PP_ITERATION_1 487 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 488 && BOOST_PP_ITERATION_FINISH_1 >= 488 +# define BOOST_PP_ITERATION_1 488 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 489 && BOOST_PP_ITERATION_FINISH_1 >= 489 +# define BOOST_PP_ITERATION_1 489 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 490 && BOOST_PP_ITERATION_FINISH_1 >= 490 +# define BOOST_PP_ITERATION_1 490 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 491 && BOOST_PP_ITERATION_FINISH_1 >= 491 +# define BOOST_PP_ITERATION_1 491 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 492 && BOOST_PP_ITERATION_FINISH_1 >= 492 +# define BOOST_PP_ITERATION_1 492 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 493 && BOOST_PP_ITERATION_FINISH_1 >= 493 +# define BOOST_PP_ITERATION_1 493 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 494 && BOOST_PP_ITERATION_FINISH_1 >= 494 +# define BOOST_PP_ITERATION_1 494 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 495 && BOOST_PP_ITERATION_FINISH_1 >= 495 +# define BOOST_PP_ITERATION_1 495 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 496 && BOOST_PP_ITERATION_FINISH_1 >= 496 +# define BOOST_PP_ITERATION_1 496 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 497 && BOOST_PP_ITERATION_FINISH_1 >= 497 +# define BOOST_PP_ITERATION_1 497 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 498 && BOOST_PP_ITERATION_FINISH_1 >= 498 +# define BOOST_PP_ITERATION_1 498 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 499 && BOOST_PP_ITERATION_FINISH_1 >= 499 +# define BOOST_PP_ITERATION_1 499 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 500 && BOOST_PP_ITERATION_FINISH_1 >= 500 +# define BOOST_PP_ITERATION_1 500 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 501 && BOOST_PP_ITERATION_FINISH_1 >= 501 +# define BOOST_PP_ITERATION_1 501 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 502 && BOOST_PP_ITERATION_FINISH_1 >= 502 +# define BOOST_PP_ITERATION_1 502 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 503 && BOOST_PP_ITERATION_FINISH_1 >= 503 +# define BOOST_PP_ITERATION_1 503 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 504 && BOOST_PP_ITERATION_FINISH_1 >= 504 +# define BOOST_PP_ITERATION_1 504 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 505 && BOOST_PP_ITERATION_FINISH_1 >= 505 +# define BOOST_PP_ITERATION_1 505 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 506 && BOOST_PP_ITERATION_FINISH_1 >= 506 +# define BOOST_PP_ITERATION_1 506 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 507 && BOOST_PP_ITERATION_FINISH_1 >= 507 +# define BOOST_PP_ITERATION_1 507 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 508 && BOOST_PP_ITERATION_FINISH_1 >= 508 +# define BOOST_PP_ITERATION_1 508 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 509 && BOOST_PP_ITERATION_FINISH_1 >= 509 +# define BOOST_PP_ITERATION_1 509 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 510 && BOOST_PP_ITERATION_FINISH_1 >= 510 +# define BOOST_PP_ITERATION_1 510 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 511 && BOOST_PP_ITERATION_FINISH_1 >= 511 +# define BOOST_PP_ITERATION_1 511 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_START_1 <= 512 && BOOST_PP_ITERATION_FINISH_1 >= 512 +# define BOOST_PP_ITERATION_1 512 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward2_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward2_1024.hpp new file mode 100644 index 000000000..e7c372652 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward2_1024.hpp @@ -0,0 +1,2573 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * Distributed under the Boost Software License, Version 1.0. (See +# * accompanying file LICENSE_2_0.txt or copy at +# * http://www.boost.org/LICENSE_2_0.txt) +# * * +# ************************************************************************** */ +# +# /* Revised by Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_START_2 <= 513 && BOOST_PP_ITERATION_FINISH_2 >= 513 +# define BOOST_PP_ITERATION_2 513 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 514 && BOOST_PP_ITERATION_FINISH_2 >= 514 +# define BOOST_PP_ITERATION_2 514 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 515 && BOOST_PP_ITERATION_FINISH_2 >= 515 +# define BOOST_PP_ITERATION_2 515 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 516 && BOOST_PP_ITERATION_FINISH_2 >= 516 +# define BOOST_PP_ITERATION_2 516 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 517 && BOOST_PP_ITERATION_FINISH_2 >= 517 +# define BOOST_PP_ITERATION_2 517 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 518 && BOOST_PP_ITERATION_FINISH_2 >= 518 +# define BOOST_PP_ITERATION_2 518 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 519 && BOOST_PP_ITERATION_FINISH_2 >= 519 +# define BOOST_PP_ITERATION_2 519 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 520 && BOOST_PP_ITERATION_FINISH_2 >= 520 +# define BOOST_PP_ITERATION_2 520 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 521 && BOOST_PP_ITERATION_FINISH_2 >= 521 +# define BOOST_PP_ITERATION_2 521 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 522 && BOOST_PP_ITERATION_FINISH_2 >= 522 +# define BOOST_PP_ITERATION_2 522 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 523 && BOOST_PP_ITERATION_FINISH_2 >= 523 +# define BOOST_PP_ITERATION_2 523 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 524 && BOOST_PP_ITERATION_FINISH_2 >= 524 +# define BOOST_PP_ITERATION_2 524 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 525 && BOOST_PP_ITERATION_FINISH_2 >= 525 +# define BOOST_PP_ITERATION_2 525 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 526 && BOOST_PP_ITERATION_FINISH_2 >= 526 +# define BOOST_PP_ITERATION_2 526 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 527 && BOOST_PP_ITERATION_FINISH_2 >= 527 +# define BOOST_PP_ITERATION_2 527 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 528 && BOOST_PP_ITERATION_FINISH_2 >= 528 +# define BOOST_PP_ITERATION_2 528 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 529 && BOOST_PP_ITERATION_FINISH_2 >= 529 +# define BOOST_PP_ITERATION_2 529 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 530 && BOOST_PP_ITERATION_FINISH_2 >= 530 +# define BOOST_PP_ITERATION_2 530 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 531 && BOOST_PP_ITERATION_FINISH_2 >= 531 +# define BOOST_PP_ITERATION_2 531 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 532 && BOOST_PP_ITERATION_FINISH_2 >= 532 +# define BOOST_PP_ITERATION_2 532 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 533 && BOOST_PP_ITERATION_FINISH_2 >= 533 +# define BOOST_PP_ITERATION_2 533 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 534 && BOOST_PP_ITERATION_FINISH_2 >= 534 +# define BOOST_PP_ITERATION_2 534 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 535 && BOOST_PP_ITERATION_FINISH_2 >= 535 +# define BOOST_PP_ITERATION_2 535 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 536 && BOOST_PP_ITERATION_FINISH_2 >= 536 +# define BOOST_PP_ITERATION_2 536 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 537 && BOOST_PP_ITERATION_FINISH_2 >= 537 +# define BOOST_PP_ITERATION_2 537 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 538 && BOOST_PP_ITERATION_FINISH_2 >= 538 +# define BOOST_PP_ITERATION_2 538 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 539 && BOOST_PP_ITERATION_FINISH_2 >= 539 +# define BOOST_PP_ITERATION_2 539 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 540 && BOOST_PP_ITERATION_FINISH_2 >= 540 +# define BOOST_PP_ITERATION_2 540 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 541 && BOOST_PP_ITERATION_FINISH_2 >= 541 +# define BOOST_PP_ITERATION_2 541 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 542 && BOOST_PP_ITERATION_FINISH_2 >= 542 +# define BOOST_PP_ITERATION_2 542 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 543 && BOOST_PP_ITERATION_FINISH_2 >= 543 +# define BOOST_PP_ITERATION_2 543 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 544 && BOOST_PP_ITERATION_FINISH_2 >= 544 +# define BOOST_PP_ITERATION_2 544 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 545 && BOOST_PP_ITERATION_FINISH_2 >= 545 +# define BOOST_PP_ITERATION_2 545 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 546 && BOOST_PP_ITERATION_FINISH_2 >= 546 +# define BOOST_PP_ITERATION_2 546 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 547 && BOOST_PP_ITERATION_FINISH_2 >= 547 +# define BOOST_PP_ITERATION_2 547 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 548 && BOOST_PP_ITERATION_FINISH_2 >= 548 +# define BOOST_PP_ITERATION_2 548 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 549 && BOOST_PP_ITERATION_FINISH_2 >= 549 +# define BOOST_PP_ITERATION_2 549 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 550 && BOOST_PP_ITERATION_FINISH_2 >= 550 +# define BOOST_PP_ITERATION_2 550 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 551 && BOOST_PP_ITERATION_FINISH_2 >= 551 +# define BOOST_PP_ITERATION_2 551 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 552 && BOOST_PP_ITERATION_FINISH_2 >= 552 +# define BOOST_PP_ITERATION_2 552 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 553 && BOOST_PP_ITERATION_FINISH_2 >= 553 +# define BOOST_PP_ITERATION_2 553 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 554 && BOOST_PP_ITERATION_FINISH_2 >= 554 +# define BOOST_PP_ITERATION_2 554 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 555 && BOOST_PP_ITERATION_FINISH_2 >= 555 +# define BOOST_PP_ITERATION_2 555 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 556 && BOOST_PP_ITERATION_FINISH_2 >= 556 +# define BOOST_PP_ITERATION_2 556 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 557 && BOOST_PP_ITERATION_FINISH_2 >= 557 +# define BOOST_PP_ITERATION_2 557 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 558 && BOOST_PP_ITERATION_FINISH_2 >= 558 +# define BOOST_PP_ITERATION_2 558 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 559 && BOOST_PP_ITERATION_FINISH_2 >= 559 +# define BOOST_PP_ITERATION_2 559 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 560 && BOOST_PP_ITERATION_FINISH_2 >= 560 +# define BOOST_PP_ITERATION_2 560 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 561 && BOOST_PP_ITERATION_FINISH_2 >= 561 +# define BOOST_PP_ITERATION_2 561 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 562 && BOOST_PP_ITERATION_FINISH_2 >= 562 +# define BOOST_PP_ITERATION_2 562 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 563 && BOOST_PP_ITERATION_FINISH_2 >= 563 +# define BOOST_PP_ITERATION_2 563 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 564 && BOOST_PP_ITERATION_FINISH_2 >= 564 +# define BOOST_PP_ITERATION_2 564 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 565 && BOOST_PP_ITERATION_FINISH_2 >= 565 +# define BOOST_PP_ITERATION_2 565 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 566 && BOOST_PP_ITERATION_FINISH_2 >= 566 +# define BOOST_PP_ITERATION_2 566 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 567 && BOOST_PP_ITERATION_FINISH_2 >= 567 +# define BOOST_PP_ITERATION_2 567 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 568 && BOOST_PP_ITERATION_FINISH_2 >= 568 +# define BOOST_PP_ITERATION_2 568 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 569 && BOOST_PP_ITERATION_FINISH_2 >= 569 +# define BOOST_PP_ITERATION_2 569 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 570 && BOOST_PP_ITERATION_FINISH_2 >= 570 +# define BOOST_PP_ITERATION_2 570 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 571 && BOOST_PP_ITERATION_FINISH_2 >= 571 +# define BOOST_PP_ITERATION_2 571 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 572 && BOOST_PP_ITERATION_FINISH_2 >= 572 +# define BOOST_PP_ITERATION_2 572 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 573 && BOOST_PP_ITERATION_FINISH_2 >= 573 +# define BOOST_PP_ITERATION_2 573 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 574 && BOOST_PP_ITERATION_FINISH_2 >= 574 +# define BOOST_PP_ITERATION_2 574 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 575 && BOOST_PP_ITERATION_FINISH_2 >= 575 +# define BOOST_PP_ITERATION_2 575 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 576 && BOOST_PP_ITERATION_FINISH_2 >= 576 +# define BOOST_PP_ITERATION_2 576 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 577 && BOOST_PP_ITERATION_FINISH_2 >= 577 +# define BOOST_PP_ITERATION_2 577 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 578 && BOOST_PP_ITERATION_FINISH_2 >= 578 +# define BOOST_PP_ITERATION_2 578 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 579 && BOOST_PP_ITERATION_FINISH_2 >= 579 +# define BOOST_PP_ITERATION_2 579 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 580 && BOOST_PP_ITERATION_FINISH_2 >= 580 +# define BOOST_PP_ITERATION_2 580 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 581 && BOOST_PP_ITERATION_FINISH_2 >= 581 +# define BOOST_PP_ITERATION_2 581 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 582 && BOOST_PP_ITERATION_FINISH_2 >= 582 +# define BOOST_PP_ITERATION_2 582 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 583 && BOOST_PP_ITERATION_FINISH_2 >= 583 +# define BOOST_PP_ITERATION_2 583 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 584 && BOOST_PP_ITERATION_FINISH_2 >= 584 +# define BOOST_PP_ITERATION_2 584 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 585 && BOOST_PP_ITERATION_FINISH_2 >= 585 +# define BOOST_PP_ITERATION_2 585 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 586 && BOOST_PP_ITERATION_FINISH_2 >= 586 +# define BOOST_PP_ITERATION_2 586 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 587 && BOOST_PP_ITERATION_FINISH_2 >= 587 +# define BOOST_PP_ITERATION_2 587 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 588 && BOOST_PP_ITERATION_FINISH_2 >= 588 +# define BOOST_PP_ITERATION_2 588 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 589 && BOOST_PP_ITERATION_FINISH_2 >= 589 +# define BOOST_PP_ITERATION_2 589 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 590 && BOOST_PP_ITERATION_FINISH_2 >= 590 +# define BOOST_PP_ITERATION_2 590 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 591 && BOOST_PP_ITERATION_FINISH_2 >= 591 +# define BOOST_PP_ITERATION_2 591 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 592 && BOOST_PP_ITERATION_FINISH_2 >= 592 +# define BOOST_PP_ITERATION_2 592 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 593 && BOOST_PP_ITERATION_FINISH_2 >= 593 +# define BOOST_PP_ITERATION_2 593 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 594 && BOOST_PP_ITERATION_FINISH_2 >= 594 +# define BOOST_PP_ITERATION_2 594 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 595 && BOOST_PP_ITERATION_FINISH_2 >= 595 +# define BOOST_PP_ITERATION_2 595 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 596 && BOOST_PP_ITERATION_FINISH_2 >= 596 +# define BOOST_PP_ITERATION_2 596 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 597 && BOOST_PP_ITERATION_FINISH_2 >= 597 +# define BOOST_PP_ITERATION_2 597 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 598 && BOOST_PP_ITERATION_FINISH_2 >= 598 +# define BOOST_PP_ITERATION_2 598 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 599 && BOOST_PP_ITERATION_FINISH_2 >= 599 +# define BOOST_PP_ITERATION_2 599 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 600 && BOOST_PP_ITERATION_FINISH_2 >= 600 +# define BOOST_PP_ITERATION_2 600 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 601 && BOOST_PP_ITERATION_FINISH_2 >= 601 +# define BOOST_PP_ITERATION_2 601 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 602 && BOOST_PP_ITERATION_FINISH_2 >= 602 +# define BOOST_PP_ITERATION_2 602 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 603 && BOOST_PP_ITERATION_FINISH_2 >= 603 +# define BOOST_PP_ITERATION_2 603 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 604 && BOOST_PP_ITERATION_FINISH_2 >= 604 +# define BOOST_PP_ITERATION_2 604 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 605 && BOOST_PP_ITERATION_FINISH_2 >= 605 +# define BOOST_PP_ITERATION_2 605 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 606 && BOOST_PP_ITERATION_FINISH_2 >= 606 +# define BOOST_PP_ITERATION_2 606 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 607 && BOOST_PP_ITERATION_FINISH_2 >= 607 +# define BOOST_PP_ITERATION_2 607 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 608 && BOOST_PP_ITERATION_FINISH_2 >= 608 +# define BOOST_PP_ITERATION_2 608 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 609 && BOOST_PP_ITERATION_FINISH_2 >= 609 +# define BOOST_PP_ITERATION_2 609 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 610 && BOOST_PP_ITERATION_FINISH_2 >= 610 +# define BOOST_PP_ITERATION_2 610 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 611 && BOOST_PP_ITERATION_FINISH_2 >= 611 +# define BOOST_PP_ITERATION_2 611 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 612 && BOOST_PP_ITERATION_FINISH_2 >= 612 +# define BOOST_PP_ITERATION_2 612 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 613 && BOOST_PP_ITERATION_FINISH_2 >= 613 +# define BOOST_PP_ITERATION_2 613 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 614 && BOOST_PP_ITERATION_FINISH_2 >= 614 +# define BOOST_PP_ITERATION_2 614 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 615 && BOOST_PP_ITERATION_FINISH_2 >= 615 +# define BOOST_PP_ITERATION_2 615 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 616 && BOOST_PP_ITERATION_FINISH_2 >= 616 +# define BOOST_PP_ITERATION_2 616 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 617 && BOOST_PP_ITERATION_FINISH_2 >= 617 +# define BOOST_PP_ITERATION_2 617 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 618 && BOOST_PP_ITERATION_FINISH_2 >= 618 +# define BOOST_PP_ITERATION_2 618 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 619 && BOOST_PP_ITERATION_FINISH_2 >= 619 +# define BOOST_PP_ITERATION_2 619 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 620 && BOOST_PP_ITERATION_FINISH_2 >= 620 +# define BOOST_PP_ITERATION_2 620 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 621 && BOOST_PP_ITERATION_FINISH_2 >= 621 +# define BOOST_PP_ITERATION_2 621 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 622 && BOOST_PP_ITERATION_FINISH_2 >= 622 +# define BOOST_PP_ITERATION_2 622 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 623 && BOOST_PP_ITERATION_FINISH_2 >= 623 +# define BOOST_PP_ITERATION_2 623 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 624 && BOOST_PP_ITERATION_FINISH_2 >= 624 +# define BOOST_PP_ITERATION_2 624 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 625 && BOOST_PP_ITERATION_FINISH_2 >= 625 +# define BOOST_PP_ITERATION_2 625 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 626 && BOOST_PP_ITERATION_FINISH_2 >= 626 +# define BOOST_PP_ITERATION_2 626 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 627 && BOOST_PP_ITERATION_FINISH_2 >= 627 +# define BOOST_PP_ITERATION_2 627 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 628 && BOOST_PP_ITERATION_FINISH_2 >= 628 +# define BOOST_PP_ITERATION_2 628 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 629 && BOOST_PP_ITERATION_FINISH_2 >= 629 +# define BOOST_PP_ITERATION_2 629 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 630 && BOOST_PP_ITERATION_FINISH_2 >= 630 +# define BOOST_PP_ITERATION_2 630 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 631 && BOOST_PP_ITERATION_FINISH_2 >= 631 +# define BOOST_PP_ITERATION_2 631 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 632 && BOOST_PP_ITERATION_FINISH_2 >= 632 +# define BOOST_PP_ITERATION_2 632 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 633 && BOOST_PP_ITERATION_FINISH_2 >= 633 +# define BOOST_PP_ITERATION_2 633 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 634 && BOOST_PP_ITERATION_FINISH_2 >= 634 +# define BOOST_PP_ITERATION_2 634 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 635 && BOOST_PP_ITERATION_FINISH_2 >= 635 +# define BOOST_PP_ITERATION_2 635 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 636 && BOOST_PP_ITERATION_FINISH_2 >= 636 +# define BOOST_PP_ITERATION_2 636 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 637 && BOOST_PP_ITERATION_FINISH_2 >= 637 +# define BOOST_PP_ITERATION_2 637 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 638 && BOOST_PP_ITERATION_FINISH_2 >= 638 +# define BOOST_PP_ITERATION_2 638 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 639 && BOOST_PP_ITERATION_FINISH_2 >= 639 +# define BOOST_PP_ITERATION_2 639 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 640 && BOOST_PP_ITERATION_FINISH_2 >= 640 +# define BOOST_PP_ITERATION_2 640 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 641 && BOOST_PP_ITERATION_FINISH_2 >= 641 +# define BOOST_PP_ITERATION_2 641 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 642 && BOOST_PP_ITERATION_FINISH_2 >= 642 +# define BOOST_PP_ITERATION_2 642 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 643 && BOOST_PP_ITERATION_FINISH_2 >= 643 +# define BOOST_PP_ITERATION_2 643 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 644 && BOOST_PP_ITERATION_FINISH_2 >= 644 +# define BOOST_PP_ITERATION_2 644 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 645 && BOOST_PP_ITERATION_FINISH_2 >= 645 +# define BOOST_PP_ITERATION_2 645 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 646 && BOOST_PP_ITERATION_FINISH_2 >= 646 +# define BOOST_PP_ITERATION_2 646 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 647 && BOOST_PP_ITERATION_FINISH_2 >= 647 +# define BOOST_PP_ITERATION_2 647 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 648 && BOOST_PP_ITERATION_FINISH_2 >= 648 +# define BOOST_PP_ITERATION_2 648 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 649 && BOOST_PP_ITERATION_FINISH_2 >= 649 +# define BOOST_PP_ITERATION_2 649 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 650 && BOOST_PP_ITERATION_FINISH_2 >= 650 +# define BOOST_PP_ITERATION_2 650 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 651 && BOOST_PP_ITERATION_FINISH_2 >= 651 +# define BOOST_PP_ITERATION_2 651 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 652 && BOOST_PP_ITERATION_FINISH_2 >= 652 +# define BOOST_PP_ITERATION_2 652 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 653 && BOOST_PP_ITERATION_FINISH_2 >= 653 +# define BOOST_PP_ITERATION_2 653 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 654 && BOOST_PP_ITERATION_FINISH_2 >= 654 +# define BOOST_PP_ITERATION_2 654 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 655 && BOOST_PP_ITERATION_FINISH_2 >= 655 +# define BOOST_PP_ITERATION_2 655 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 656 && BOOST_PP_ITERATION_FINISH_2 >= 656 +# define BOOST_PP_ITERATION_2 656 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 657 && BOOST_PP_ITERATION_FINISH_2 >= 657 +# define BOOST_PP_ITERATION_2 657 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 658 && BOOST_PP_ITERATION_FINISH_2 >= 658 +# define BOOST_PP_ITERATION_2 658 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 659 && BOOST_PP_ITERATION_FINISH_2 >= 659 +# define BOOST_PP_ITERATION_2 659 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 660 && BOOST_PP_ITERATION_FINISH_2 >= 660 +# define BOOST_PP_ITERATION_2 660 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 661 && BOOST_PP_ITERATION_FINISH_2 >= 661 +# define BOOST_PP_ITERATION_2 661 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 662 && BOOST_PP_ITERATION_FINISH_2 >= 662 +# define BOOST_PP_ITERATION_2 662 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 663 && BOOST_PP_ITERATION_FINISH_2 >= 663 +# define BOOST_PP_ITERATION_2 663 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 664 && BOOST_PP_ITERATION_FINISH_2 >= 664 +# define BOOST_PP_ITERATION_2 664 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 665 && BOOST_PP_ITERATION_FINISH_2 >= 665 +# define BOOST_PP_ITERATION_2 665 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 666 && BOOST_PP_ITERATION_FINISH_2 >= 666 +# define BOOST_PP_ITERATION_2 666 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 667 && BOOST_PP_ITERATION_FINISH_2 >= 667 +# define BOOST_PP_ITERATION_2 667 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 668 && BOOST_PP_ITERATION_FINISH_2 >= 668 +# define BOOST_PP_ITERATION_2 668 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 669 && BOOST_PP_ITERATION_FINISH_2 >= 669 +# define BOOST_PP_ITERATION_2 669 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 670 && BOOST_PP_ITERATION_FINISH_2 >= 670 +# define BOOST_PP_ITERATION_2 670 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 671 && BOOST_PP_ITERATION_FINISH_2 >= 671 +# define BOOST_PP_ITERATION_2 671 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 672 && BOOST_PP_ITERATION_FINISH_2 >= 672 +# define BOOST_PP_ITERATION_2 672 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 673 && BOOST_PP_ITERATION_FINISH_2 >= 673 +# define BOOST_PP_ITERATION_2 673 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 674 && BOOST_PP_ITERATION_FINISH_2 >= 674 +# define BOOST_PP_ITERATION_2 674 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 675 && BOOST_PP_ITERATION_FINISH_2 >= 675 +# define BOOST_PP_ITERATION_2 675 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 676 && BOOST_PP_ITERATION_FINISH_2 >= 676 +# define BOOST_PP_ITERATION_2 676 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 677 && BOOST_PP_ITERATION_FINISH_2 >= 677 +# define BOOST_PP_ITERATION_2 677 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 678 && BOOST_PP_ITERATION_FINISH_2 >= 678 +# define BOOST_PP_ITERATION_2 678 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 679 && BOOST_PP_ITERATION_FINISH_2 >= 679 +# define BOOST_PP_ITERATION_2 679 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 680 && BOOST_PP_ITERATION_FINISH_2 >= 680 +# define BOOST_PP_ITERATION_2 680 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 681 && BOOST_PP_ITERATION_FINISH_2 >= 681 +# define BOOST_PP_ITERATION_2 681 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 682 && BOOST_PP_ITERATION_FINISH_2 >= 682 +# define BOOST_PP_ITERATION_2 682 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 683 && BOOST_PP_ITERATION_FINISH_2 >= 683 +# define BOOST_PP_ITERATION_2 683 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 684 && BOOST_PP_ITERATION_FINISH_2 >= 684 +# define BOOST_PP_ITERATION_2 684 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 685 && BOOST_PP_ITERATION_FINISH_2 >= 685 +# define BOOST_PP_ITERATION_2 685 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 686 && BOOST_PP_ITERATION_FINISH_2 >= 686 +# define BOOST_PP_ITERATION_2 686 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 687 && BOOST_PP_ITERATION_FINISH_2 >= 687 +# define BOOST_PP_ITERATION_2 687 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 688 && BOOST_PP_ITERATION_FINISH_2 >= 688 +# define BOOST_PP_ITERATION_2 688 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 689 && BOOST_PP_ITERATION_FINISH_2 >= 689 +# define BOOST_PP_ITERATION_2 689 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 690 && BOOST_PP_ITERATION_FINISH_2 >= 690 +# define BOOST_PP_ITERATION_2 690 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 691 && BOOST_PP_ITERATION_FINISH_2 >= 691 +# define BOOST_PP_ITERATION_2 691 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 692 && BOOST_PP_ITERATION_FINISH_2 >= 692 +# define BOOST_PP_ITERATION_2 692 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 693 && BOOST_PP_ITERATION_FINISH_2 >= 693 +# define BOOST_PP_ITERATION_2 693 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 694 && BOOST_PP_ITERATION_FINISH_2 >= 694 +# define BOOST_PP_ITERATION_2 694 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 695 && BOOST_PP_ITERATION_FINISH_2 >= 695 +# define BOOST_PP_ITERATION_2 695 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 696 && BOOST_PP_ITERATION_FINISH_2 >= 696 +# define BOOST_PP_ITERATION_2 696 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 697 && BOOST_PP_ITERATION_FINISH_2 >= 697 +# define BOOST_PP_ITERATION_2 697 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 698 && BOOST_PP_ITERATION_FINISH_2 >= 698 +# define BOOST_PP_ITERATION_2 698 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 699 && BOOST_PP_ITERATION_FINISH_2 >= 699 +# define BOOST_PP_ITERATION_2 699 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 700 && BOOST_PP_ITERATION_FINISH_2 >= 700 +# define BOOST_PP_ITERATION_2 700 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 701 && BOOST_PP_ITERATION_FINISH_2 >= 701 +# define BOOST_PP_ITERATION_2 701 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 702 && BOOST_PP_ITERATION_FINISH_2 >= 702 +# define BOOST_PP_ITERATION_2 702 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 703 && BOOST_PP_ITERATION_FINISH_2 >= 703 +# define BOOST_PP_ITERATION_2 703 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 704 && BOOST_PP_ITERATION_FINISH_2 >= 704 +# define BOOST_PP_ITERATION_2 704 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 705 && BOOST_PP_ITERATION_FINISH_2 >= 705 +# define BOOST_PP_ITERATION_2 705 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 706 && BOOST_PP_ITERATION_FINISH_2 >= 706 +# define BOOST_PP_ITERATION_2 706 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 707 && BOOST_PP_ITERATION_FINISH_2 >= 707 +# define BOOST_PP_ITERATION_2 707 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 708 && BOOST_PP_ITERATION_FINISH_2 >= 708 +# define BOOST_PP_ITERATION_2 708 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 709 && BOOST_PP_ITERATION_FINISH_2 >= 709 +# define BOOST_PP_ITERATION_2 709 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 710 && BOOST_PP_ITERATION_FINISH_2 >= 710 +# define BOOST_PP_ITERATION_2 710 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 711 && BOOST_PP_ITERATION_FINISH_2 >= 711 +# define BOOST_PP_ITERATION_2 711 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 712 && BOOST_PP_ITERATION_FINISH_2 >= 712 +# define BOOST_PP_ITERATION_2 712 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 713 && BOOST_PP_ITERATION_FINISH_2 >= 713 +# define BOOST_PP_ITERATION_2 713 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 714 && BOOST_PP_ITERATION_FINISH_2 >= 714 +# define BOOST_PP_ITERATION_2 714 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 715 && BOOST_PP_ITERATION_FINISH_2 >= 715 +# define BOOST_PP_ITERATION_2 715 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 716 && BOOST_PP_ITERATION_FINISH_2 >= 716 +# define BOOST_PP_ITERATION_2 716 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 717 && BOOST_PP_ITERATION_FINISH_2 >= 717 +# define BOOST_PP_ITERATION_2 717 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 718 && BOOST_PP_ITERATION_FINISH_2 >= 718 +# define BOOST_PP_ITERATION_2 718 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 719 && BOOST_PP_ITERATION_FINISH_2 >= 719 +# define BOOST_PP_ITERATION_2 719 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 720 && BOOST_PP_ITERATION_FINISH_2 >= 720 +# define BOOST_PP_ITERATION_2 720 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 721 && BOOST_PP_ITERATION_FINISH_2 >= 721 +# define BOOST_PP_ITERATION_2 721 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 722 && BOOST_PP_ITERATION_FINISH_2 >= 722 +# define BOOST_PP_ITERATION_2 722 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 723 && BOOST_PP_ITERATION_FINISH_2 >= 723 +# define BOOST_PP_ITERATION_2 723 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 724 && BOOST_PP_ITERATION_FINISH_2 >= 724 +# define BOOST_PP_ITERATION_2 724 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 725 && BOOST_PP_ITERATION_FINISH_2 >= 725 +# define BOOST_PP_ITERATION_2 725 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 726 && BOOST_PP_ITERATION_FINISH_2 >= 726 +# define BOOST_PP_ITERATION_2 726 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 727 && BOOST_PP_ITERATION_FINISH_2 >= 727 +# define BOOST_PP_ITERATION_2 727 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 728 && BOOST_PP_ITERATION_FINISH_2 >= 728 +# define BOOST_PP_ITERATION_2 728 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 729 && BOOST_PP_ITERATION_FINISH_2 >= 729 +# define BOOST_PP_ITERATION_2 729 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 730 && BOOST_PP_ITERATION_FINISH_2 >= 730 +# define BOOST_PP_ITERATION_2 730 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 731 && BOOST_PP_ITERATION_FINISH_2 >= 731 +# define BOOST_PP_ITERATION_2 731 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 732 && BOOST_PP_ITERATION_FINISH_2 >= 732 +# define BOOST_PP_ITERATION_2 732 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 733 && BOOST_PP_ITERATION_FINISH_2 >= 733 +# define BOOST_PP_ITERATION_2 733 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 734 && BOOST_PP_ITERATION_FINISH_2 >= 734 +# define BOOST_PP_ITERATION_2 734 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 735 && BOOST_PP_ITERATION_FINISH_2 >= 735 +# define BOOST_PP_ITERATION_2 735 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 736 && BOOST_PP_ITERATION_FINISH_2 >= 736 +# define BOOST_PP_ITERATION_2 736 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 737 && BOOST_PP_ITERATION_FINISH_2 >= 737 +# define BOOST_PP_ITERATION_2 737 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 738 && BOOST_PP_ITERATION_FINISH_2 >= 738 +# define BOOST_PP_ITERATION_2 738 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 739 && BOOST_PP_ITERATION_FINISH_2 >= 739 +# define BOOST_PP_ITERATION_2 739 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 740 && BOOST_PP_ITERATION_FINISH_2 >= 740 +# define BOOST_PP_ITERATION_2 740 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 741 && BOOST_PP_ITERATION_FINISH_2 >= 741 +# define BOOST_PP_ITERATION_2 741 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 742 && BOOST_PP_ITERATION_FINISH_2 >= 742 +# define BOOST_PP_ITERATION_2 742 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 743 && BOOST_PP_ITERATION_FINISH_2 >= 743 +# define BOOST_PP_ITERATION_2 743 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 744 && BOOST_PP_ITERATION_FINISH_2 >= 744 +# define BOOST_PP_ITERATION_2 744 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 745 && BOOST_PP_ITERATION_FINISH_2 >= 745 +# define BOOST_PP_ITERATION_2 745 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 746 && BOOST_PP_ITERATION_FINISH_2 >= 746 +# define BOOST_PP_ITERATION_2 746 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 747 && BOOST_PP_ITERATION_FINISH_2 >= 747 +# define BOOST_PP_ITERATION_2 747 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 748 && BOOST_PP_ITERATION_FINISH_2 >= 748 +# define BOOST_PP_ITERATION_2 748 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 749 && BOOST_PP_ITERATION_FINISH_2 >= 749 +# define BOOST_PP_ITERATION_2 749 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 750 && BOOST_PP_ITERATION_FINISH_2 >= 750 +# define BOOST_PP_ITERATION_2 750 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 751 && BOOST_PP_ITERATION_FINISH_2 >= 751 +# define BOOST_PP_ITERATION_2 751 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 752 && BOOST_PP_ITERATION_FINISH_2 >= 752 +# define BOOST_PP_ITERATION_2 752 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 753 && BOOST_PP_ITERATION_FINISH_2 >= 753 +# define BOOST_PP_ITERATION_2 753 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 754 && BOOST_PP_ITERATION_FINISH_2 >= 754 +# define BOOST_PP_ITERATION_2 754 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 755 && BOOST_PP_ITERATION_FINISH_2 >= 755 +# define BOOST_PP_ITERATION_2 755 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 756 && BOOST_PP_ITERATION_FINISH_2 >= 756 +# define BOOST_PP_ITERATION_2 756 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 757 && BOOST_PP_ITERATION_FINISH_2 >= 757 +# define BOOST_PP_ITERATION_2 757 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 758 && BOOST_PP_ITERATION_FINISH_2 >= 758 +# define BOOST_PP_ITERATION_2 758 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 759 && BOOST_PP_ITERATION_FINISH_2 >= 759 +# define BOOST_PP_ITERATION_2 759 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 760 && BOOST_PP_ITERATION_FINISH_2 >= 760 +# define BOOST_PP_ITERATION_2 760 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 761 && BOOST_PP_ITERATION_FINISH_2 >= 761 +# define BOOST_PP_ITERATION_2 761 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 762 && BOOST_PP_ITERATION_FINISH_2 >= 762 +# define BOOST_PP_ITERATION_2 762 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 763 && BOOST_PP_ITERATION_FINISH_2 >= 763 +# define BOOST_PP_ITERATION_2 763 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 764 && BOOST_PP_ITERATION_FINISH_2 >= 764 +# define BOOST_PP_ITERATION_2 764 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 765 && BOOST_PP_ITERATION_FINISH_2 >= 765 +# define BOOST_PP_ITERATION_2 765 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 766 && BOOST_PP_ITERATION_FINISH_2 >= 766 +# define BOOST_PP_ITERATION_2 766 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 767 && BOOST_PP_ITERATION_FINISH_2 >= 767 +# define BOOST_PP_ITERATION_2 767 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 768 && BOOST_PP_ITERATION_FINISH_2 >= 768 +# define BOOST_PP_ITERATION_2 768 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 769 && BOOST_PP_ITERATION_FINISH_2 >= 769 +# define BOOST_PP_ITERATION_2 769 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 770 && BOOST_PP_ITERATION_FINISH_2 >= 770 +# define BOOST_PP_ITERATION_2 770 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 771 && BOOST_PP_ITERATION_FINISH_2 >= 771 +# define BOOST_PP_ITERATION_2 771 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 772 && BOOST_PP_ITERATION_FINISH_2 >= 772 +# define BOOST_PP_ITERATION_2 772 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 773 && BOOST_PP_ITERATION_FINISH_2 >= 773 +# define BOOST_PP_ITERATION_2 773 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 774 && BOOST_PP_ITERATION_FINISH_2 >= 774 +# define BOOST_PP_ITERATION_2 774 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 775 && BOOST_PP_ITERATION_FINISH_2 >= 775 +# define BOOST_PP_ITERATION_2 775 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 776 && BOOST_PP_ITERATION_FINISH_2 >= 776 +# define BOOST_PP_ITERATION_2 776 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 777 && BOOST_PP_ITERATION_FINISH_2 >= 777 +# define BOOST_PP_ITERATION_2 777 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 778 && BOOST_PP_ITERATION_FINISH_2 >= 778 +# define BOOST_PP_ITERATION_2 778 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 779 && BOOST_PP_ITERATION_FINISH_2 >= 779 +# define BOOST_PP_ITERATION_2 779 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 780 && BOOST_PP_ITERATION_FINISH_2 >= 780 +# define BOOST_PP_ITERATION_2 780 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 781 && BOOST_PP_ITERATION_FINISH_2 >= 781 +# define BOOST_PP_ITERATION_2 781 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 782 && BOOST_PP_ITERATION_FINISH_2 >= 782 +# define BOOST_PP_ITERATION_2 782 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 783 && BOOST_PP_ITERATION_FINISH_2 >= 783 +# define BOOST_PP_ITERATION_2 783 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 784 && BOOST_PP_ITERATION_FINISH_2 >= 784 +# define BOOST_PP_ITERATION_2 784 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 785 && BOOST_PP_ITERATION_FINISH_2 >= 785 +# define BOOST_PP_ITERATION_2 785 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 786 && BOOST_PP_ITERATION_FINISH_2 >= 786 +# define BOOST_PP_ITERATION_2 786 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 787 && BOOST_PP_ITERATION_FINISH_2 >= 787 +# define BOOST_PP_ITERATION_2 787 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 788 && BOOST_PP_ITERATION_FINISH_2 >= 788 +# define BOOST_PP_ITERATION_2 788 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 789 && BOOST_PP_ITERATION_FINISH_2 >= 789 +# define BOOST_PP_ITERATION_2 789 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 790 && BOOST_PP_ITERATION_FINISH_2 >= 790 +# define BOOST_PP_ITERATION_2 790 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 791 && BOOST_PP_ITERATION_FINISH_2 >= 791 +# define BOOST_PP_ITERATION_2 791 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 792 && BOOST_PP_ITERATION_FINISH_2 >= 792 +# define BOOST_PP_ITERATION_2 792 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 793 && BOOST_PP_ITERATION_FINISH_2 >= 793 +# define BOOST_PP_ITERATION_2 793 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 794 && BOOST_PP_ITERATION_FINISH_2 >= 794 +# define BOOST_PP_ITERATION_2 794 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 795 && BOOST_PP_ITERATION_FINISH_2 >= 795 +# define BOOST_PP_ITERATION_2 795 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 796 && BOOST_PP_ITERATION_FINISH_2 >= 796 +# define BOOST_PP_ITERATION_2 796 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 797 && BOOST_PP_ITERATION_FINISH_2 >= 797 +# define BOOST_PP_ITERATION_2 797 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 798 && BOOST_PP_ITERATION_FINISH_2 >= 798 +# define BOOST_PP_ITERATION_2 798 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 799 && BOOST_PP_ITERATION_FINISH_2 >= 799 +# define BOOST_PP_ITERATION_2 799 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 800 && BOOST_PP_ITERATION_FINISH_2 >= 800 +# define BOOST_PP_ITERATION_2 800 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 801 && BOOST_PP_ITERATION_FINISH_2 >= 801 +# define BOOST_PP_ITERATION_2 801 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 802 && BOOST_PP_ITERATION_FINISH_2 >= 802 +# define BOOST_PP_ITERATION_2 802 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 803 && BOOST_PP_ITERATION_FINISH_2 >= 803 +# define BOOST_PP_ITERATION_2 803 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 804 && BOOST_PP_ITERATION_FINISH_2 >= 804 +# define BOOST_PP_ITERATION_2 804 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 805 && BOOST_PP_ITERATION_FINISH_2 >= 805 +# define BOOST_PP_ITERATION_2 805 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 806 && BOOST_PP_ITERATION_FINISH_2 >= 806 +# define BOOST_PP_ITERATION_2 806 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 807 && BOOST_PP_ITERATION_FINISH_2 >= 807 +# define BOOST_PP_ITERATION_2 807 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 808 && BOOST_PP_ITERATION_FINISH_2 >= 808 +# define BOOST_PP_ITERATION_2 808 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 809 && BOOST_PP_ITERATION_FINISH_2 >= 809 +# define BOOST_PP_ITERATION_2 809 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 810 && BOOST_PP_ITERATION_FINISH_2 >= 810 +# define BOOST_PP_ITERATION_2 810 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 811 && BOOST_PP_ITERATION_FINISH_2 >= 811 +# define BOOST_PP_ITERATION_2 811 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 812 && BOOST_PP_ITERATION_FINISH_2 >= 812 +# define BOOST_PP_ITERATION_2 812 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 813 && BOOST_PP_ITERATION_FINISH_2 >= 813 +# define BOOST_PP_ITERATION_2 813 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 814 && BOOST_PP_ITERATION_FINISH_2 >= 814 +# define BOOST_PP_ITERATION_2 814 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 815 && BOOST_PP_ITERATION_FINISH_2 >= 815 +# define BOOST_PP_ITERATION_2 815 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 816 && BOOST_PP_ITERATION_FINISH_2 >= 816 +# define BOOST_PP_ITERATION_2 816 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 817 && BOOST_PP_ITERATION_FINISH_2 >= 817 +# define BOOST_PP_ITERATION_2 817 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 818 && BOOST_PP_ITERATION_FINISH_2 >= 818 +# define BOOST_PP_ITERATION_2 818 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 819 && BOOST_PP_ITERATION_FINISH_2 >= 819 +# define BOOST_PP_ITERATION_2 819 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 820 && BOOST_PP_ITERATION_FINISH_2 >= 820 +# define BOOST_PP_ITERATION_2 820 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 821 && BOOST_PP_ITERATION_FINISH_2 >= 821 +# define BOOST_PP_ITERATION_2 821 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 822 && BOOST_PP_ITERATION_FINISH_2 >= 822 +# define BOOST_PP_ITERATION_2 822 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 823 && BOOST_PP_ITERATION_FINISH_2 >= 823 +# define BOOST_PP_ITERATION_2 823 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 824 && BOOST_PP_ITERATION_FINISH_2 >= 824 +# define BOOST_PP_ITERATION_2 824 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 825 && BOOST_PP_ITERATION_FINISH_2 >= 825 +# define BOOST_PP_ITERATION_2 825 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 826 && BOOST_PP_ITERATION_FINISH_2 >= 826 +# define BOOST_PP_ITERATION_2 826 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 827 && BOOST_PP_ITERATION_FINISH_2 >= 827 +# define BOOST_PP_ITERATION_2 827 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 828 && BOOST_PP_ITERATION_FINISH_2 >= 828 +# define BOOST_PP_ITERATION_2 828 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 829 && BOOST_PP_ITERATION_FINISH_2 >= 829 +# define BOOST_PP_ITERATION_2 829 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 830 && BOOST_PP_ITERATION_FINISH_2 >= 830 +# define BOOST_PP_ITERATION_2 830 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 831 && BOOST_PP_ITERATION_FINISH_2 >= 831 +# define BOOST_PP_ITERATION_2 831 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 832 && BOOST_PP_ITERATION_FINISH_2 >= 832 +# define BOOST_PP_ITERATION_2 832 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 833 && BOOST_PP_ITERATION_FINISH_2 >= 833 +# define BOOST_PP_ITERATION_2 833 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 834 && BOOST_PP_ITERATION_FINISH_2 >= 834 +# define BOOST_PP_ITERATION_2 834 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 835 && BOOST_PP_ITERATION_FINISH_2 >= 835 +# define BOOST_PP_ITERATION_2 835 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 836 && BOOST_PP_ITERATION_FINISH_2 >= 836 +# define BOOST_PP_ITERATION_2 836 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 837 && BOOST_PP_ITERATION_FINISH_2 >= 837 +# define BOOST_PP_ITERATION_2 837 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 838 && BOOST_PP_ITERATION_FINISH_2 >= 838 +# define BOOST_PP_ITERATION_2 838 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 839 && BOOST_PP_ITERATION_FINISH_2 >= 839 +# define BOOST_PP_ITERATION_2 839 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 840 && BOOST_PP_ITERATION_FINISH_2 >= 840 +# define BOOST_PP_ITERATION_2 840 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 841 && BOOST_PP_ITERATION_FINISH_2 >= 841 +# define BOOST_PP_ITERATION_2 841 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 842 && BOOST_PP_ITERATION_FINISH_2 >= 842 +# define BOOST_PP_ITERATION_2 842 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 843 && BOOST_PP_ITERATION_FINISH_2 >= 843 +# define BOOST_PP_ITERATION_2 843 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 844 && BOOST_PP_ITERATION_FINISH_2 >= 844 +# define BOOST_PP_ITERATION_2 844 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 845 && BOOST_PP_ITERATION_FINISH_2 >= 845 +# define BOOST_PP_ITERATION_2 845 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 846 && BOOST_PP_ITERATION_FINISH_2 >= 846 +# define BOOST_PP_ITERATION_2 846 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 847 && BOOST_PP_ITERATION_FINISH_2 >= 847 +# define BOOST_PP_ITERATION_2 847 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 848 && BOOST_PP_ITERATION_FINISH_2 >= 848 +# define BOOST_PP_ITERATION_2 848 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 849 && BOOST_PP_ITERATION_FINISH_2 >= 849 +# define BOOST_PP_ITERATION_2 849 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 850 && BOOST_PP_ITERATION_FINISH_2 >= 850 +# define BOOST_PP_ITERATION_2 850 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 851 && BOOST_PP_ITERATION_FINISH_2 >= 851 +# define BOOST_PP_ITERATION_2 851 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 852 && BOOST_PP_ITERATION_FINISH_2 >= 852 +# define BOOST_PP_ITERATION_2 852 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 853 && BOOST_PP_ITERATION_FINISH_2 >= 853 +# define BOOST_PP_ITERATION_2 853 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 854 && BOOST_PP_ITERATION_FINISH_2 >= 854 +# define BOOST_PP_ITERATION_2 854 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 855 && BOOST_PP_ITERATION_FINISH_2 >= 855 +# define BOOST_PP_ITERATION_2 855 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 856 && BOOST_PP_ITERATION_FINISH_2 >= 856 +# define BOOST_PP_ITERATION_2 856 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 857 && BOOST_PP_ITERATION_FINISH_2 >= 857 +# define BOOST_PP_ITERATION_2 857 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 858 && BOOST_PP_ITERATION_FINISH_2 >= 858 +# define BOOST_PP_ITERATION_2 858 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 859 && BOOST_PP_ITERATION_FINISH_2 >= 859 +# define BOOST_PP_ITERATION_2 859 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 860 && BOOST_PP_ITERATION_FINISH_2 >= 860 +# define BOOST_PP_ITERATION_2 860 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 861 && BOOST_PP_ITERATION_FINISH_2 >= 861 +# define BOOST_PP_ITERATION_2 861 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 862 && BOOST_PP_ITERATION_FINISH_2 >= 862 +# define BOOST_PP_ITERATION_2 862 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 863 && BOOST_PP_ITERATION_FINISH_2 >= 863 +# define BOOST_PP_ITERATION_2 863 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 864 && BOOST_PP_ITERATION_FINISH_2 >= 864 +# define BOOST_PP_ITERATION_2 864 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 865 && BOOST_PP_ITERATION_FINISH_2 >= 865 +# define BOOST_PP_ITERATION_2 865 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 866 && BOOST_PP_ITERATION_FINISH_2 >= 866 +# define BOOST_PP_ITERATION_2 866 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 867 && BOOST_PP_ITERATION_FINISH_2 >= 867 +# define BOOST_PP_ITERATION_2 867 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 868 && BOOST_PP_ITERATION_FINISH_2 >= 868 +# define BOOST_PP_ITERATION_2 868 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 869 && BOOST_PP_ITERATION_FINISH_2 >= 869 +# define BOOST_PP_ITERATION_2 869 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 870 && BOOST_PP_ITERATION_FINISH_2 >= 870 +# define BOOST_PP_ITERATION_2 870 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 871 && BOOST_PP_ITERATION_FINISH_2 >= 871 +# define BOOST_PP_ITERATION_2 871 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 872 && BOOST_PP_ITERATION_FINISH_2 >= 872 +# define BOOST_PP_ITERATION_2 872 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 873 && BOOST_PP_ITERATION_FINISH_2 >= 873 +# define BOOST_PP_ITERATION_2 873 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 874 && BOOST_PP_ITERATION_FINISH_2 >= 874 +# define BOOST_PP_ITERATION_2 874 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 875 && BOOST_PP_ITERATION_FINISH_2 >= 875 +# define BOOST_PP_ITERATION_2 875 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 876 && BOOST_PP_ITERATION_FINISH_2 >= 876 +# define BOOST_PP_ITERATION_2 876 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 877 && BOOST_PP_ITERATION_FINISH_2 >= 877 +# define BOOST_PP_ITERATION_2 877 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 878 && BOOST_PP_ITERATION_FINISH_2 >= 878 +# define BOOST_PP_ITERATION_2 878 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 879 && BOOST_PP_ITERATION_FINISH_2 >= 879 +# define BOOST_PP_ITERATION_2 879 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 880 && BOOST_PP_ITERATION_FINISH_2 >= 880 +# define BOOST_PP_ITERATION_2 880 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 881 && BOOST_PP_ITERATION_FINISH_2 >= 881 +# define BOOST_PP_ITERATION_2 881 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 882 && BOOST_PP_ITERATION_FINISH_2 >= 882 +# define BOOST_PP_ITERATION_2 882 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 883 && BOOST_PP_ITERATION_FINISH_2 >= 883 +# define BOOST_PP_ITERATION_2 883 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 884 && BOOST_PP_ITERATION_FINISH_2 >= 884 +# define BOOST_PP_ITERATION_2 884 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 885 && BOOST_PP_ITERATION_FINISH_2 >= 885 +# define BOOST_PP_ITERATION_2 885 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 886 && BOOST_PP_ITERATION_FINISH_2 >= 886 +# define BOOST_PP_ITERATION_2 886 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 887 && BOOST_PP_ITERATION_FINISH_2 >= 887 +# define BOOST_PP_ITERATION_2 887 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 888 && BOOST_PP_ITERATION_FINISH_2 >= 888 +# define BOOST_PP_ITERATION_2 888 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 889 && BOOST_PP_ITERATION_FINISH_2 >= 889 +# define BOOST_PP_ITERATION_2 889 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 890 && BOOST_PP_ITERATION_FINISH_2 >= 890 +# define BOOST_PP_ITERATION_2 890 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 891 && BOOST_PP_ITERATION_FINISH_2 >= 891 +# define BOOST_PP_ITERATION_2 891 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 892 && BOOST_PP_ITERATION_FINISH_2 >= 892 +# define BOOST_PP_ITERATION_2 892 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 893 && BOOST_PP_ITERATION_FINISH_2 >= 893 +# define BOOST_PP_ITERATION_2 893 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 894 && BOOST_PP_ITERATION_FINISH_2 >= 894 +# define BOOST_PP_ITERATION_2 894 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 895 && BOOST_PP_ITERATION_FINISH_2 >= 895 +# define BOOST_PP_ITERATION_2 895 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 896 && BOOST_PP_ITERATION_FINISH_2 >= 896 +# define BOOST_PP_ITERATION_2 896 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 897 && BOOST_PP_ITERATION_FINISH_2 >= 897 +# define BOOST_PP_ITERATION_2 897 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 898 && BOOST_PP_ITERATION_FINISH_2 >= 898 +# define BOOST_PP_ITERATION_2 898 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 899 && BOOST_PP_ITERATION_FINISH_2 >= 899 +# define BOOST_PP_ITERATION_2 899 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 900 && BOOST_PP_ITERATION_FINISH_2 >= 900 +# define BOOST_PP_ITERATION_2 900 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 901 && BOOST_PP_ITERATION_FINISH_2 >= 901 +# define BOOST_PP_ITERATION_2 901 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 902 && BOOST_PP_ITERATION_FINISH_2 >= 902 +# define BOOST_PP_ITERATION_2 902 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 903 && BOOST_PP_ITERATION_FINISH_2 >= 903 +# define BOOST_PP_ITERATION_2 903 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 904 && BOOST_PP_ITERATION_FINISH_2 >= 904 +# define BOOST_PP_ITERATION_2 904 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 905 && BOOST_PP_ITERATION_FINISH_2 >= 905 +# define BOOST_PP_ITERATION_2 905 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 906 && BOOST_PP_ITERATION_FINISH_2 >= 906 +# define BOOST_PP_ITERATION_2 906 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 907 && BOOST_PP_ITERATION_FINISH_2 >= 907 +# define BOOST_PP_ITERATION_2 907 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 908 && BOOST_PP_ITERATION_FINISH_2 >= 908 +# define BOOST_PP_ITERATION_2 908 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 909 && BOOST_PP_ITERATION_FINISH_2 >= 909 +# define BOOST_PP_ITERATION_2 909 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 910 && BOOST_PP_ITERATION_FINISH_2 >= 910 +# define BOOST_PP_ITERATION_2 910 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 911 && BOOST_PP_ITERATION_FINISH_2 >= 911 +# define BOOST_PP_ITERATION_2 911 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 912 && BOOST_PP_ITERATION_FINISH_2 >= 912 +# define BOOST_PP_ITERATION_2 912 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 913 && BOOST_PP_ITERATION_FINISH_2 >= 913 +# define BOOST_PP_ITERATION_2 913 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 914 && BOOST_PP_ITERATION_FINISH_2 >= 914 +# define BOOST_PP_ITERATION_2 914 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 915 && BOOST_PP_ITERATION_FINISH_2 >= 915 +# define BOOST_PP_ITERATION_2 915 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 916 && BOOST_PP_ITERATION_FINISH_2 >= 916 +# define BOOST_PP_ITERATION_2 916 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 917 && BOOST_PP_ITERATION_FINISH_2 >= 917 +# define BOOST_PP_ITERATION_2 917 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 918 && BOOST_PP_ITERATION_FINISH_2 >= 918 +# define BOOST_PP_ITERATION_2 918 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 919 && BOOST_PP_ITERATION_FINISH_2 >= 919 +# define BOOST_PP_ITERATION_2 919 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 920 && BOOST_PP_ITERATION_FINISH_2 >= 920 +# define BOOST_PP_ITERATION_2 920 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 921 && BOOST_PP_ITERATION_FINISH_2 >= 921 +# define BOOST_PP_ITERATION_2 921 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 922 && BOOST_PP_ITERATION_FINISH_2 >= 922 +# define BOOST_PP_ITERATION_2 922 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 923 && BOOST_PP_ITERATION_FINISH_2 >= 923 +# define BOOST_PP_ITERATION_2 923 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 924 && BOOST_PP_ITERATION_FINISH_2 >= 924 +# define BOOST_PP_ITERATION_2 924 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 925 && BOOST_PP_ITERATION_FINISH_2 >= 925 +# define BOOST_PP_ITERATION_2 925 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 926 && BOOST_PP_ITERATION_FINISH_2 >= 926 +# define BOOST_PP_ITERATION_2 926 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 927 && BOOST_PP_ITERATION_FINISH_2 >= 927 +# define BOOST_PP_ITERATION_2 927 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 928 && BOOST_PP_ITERATION_FINISH_2 >= 928 +# define BOOST_PP_ITERATION_2 928 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 929 && BOOST_PP_ITERATION_FINISH_2 >= 929 +# define BOOST_PP_ITERATION_2 929 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 930 && BOOST_PP_ITERATION_FINISH_2 >= 930 +# define BOOST_PP_ITERATION_2 930 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 931 && BOOST_PP_ITERATION_FINISH_2 >= 931 +# define BOOST_PP_ITERATION_2 931 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 932 && BOOST_PP_ITERATION_FINISH_2 >= 932 +# define BOOST_PP_ITERATION_2 932 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 933 && BOOST_PP_ITERATION_FINISH_2 >= 933 +# define BOOST_PP_ITERATION_2 933 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 934 && BOOST_PP_ITERATION_FINISH_2 >= 934 +# define BOOST_PP_ITERATION_2 934 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 935 && BOOST_PP_ITERATION_FINISH_2 >= 935 +# define BOOST_PP_ITERATION_2 935 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 936 && BOOST_PP_ITERATION_FINISH_2 >= 936 +# define BOOST_PP_ITERATION_2 936 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 937 && BOOST_PP_ITERATION_FINISH_2 >= 937 +# define BOOST_PP_ITERATION_2 937 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 938 && BOOST_PP_ITERATION_FINISH_2 >= 938 +# define BOOST_PP_ITERATION_2 938 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 939 && BOOST_PP_ITERATION_FINISH_2 >= 939 +# define BOOST_PP_ITERATION_2 939 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 940 && BOOST_PP_ITERATION_FINISH_2 >= 940 +# define BOOST_PP_ITERATION_2 940 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 941 && BOOST_PP_ITERATION_FINISH_2 >= 941 +# define BOOST_PP_ITERATION_2 941 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 942 && BOOST_PP_ITERATION_FINISH_2 >= 942 +# define BOOST_PP_ITERATION_2 942 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 943 && BOOST_PP_ITERATION_FINISH_2 >= 943 +# define BOOST_PP_ITERATION_2 943 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 944 && BOOST_PP_ITERATION_FINISH_2 >= 944 +# define BOOST_PP_ITERATION_2 944 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 945 && BOOST_PP_ITERATION_FINISH_2 >= 945 +# define BOOST_PP_ITERATION_2 945 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 946 && BOOST_PP_ITERATION_FINISH_2 >= 946 +# define BOOST_PP_ITERATION_2 946 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 947 && BOOST_PP_ITERATION_FINISH_2 >= 947 +# define BOOST_PP_ITERATION_2 947 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 948 && BOOST_PP_ITERATION_FINISH_2 >= 948 +# define BOOST_PP_ITERATION_2 948 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 949 && BOOST_PP_ITERATION_FINISH_2 >= 949 +# define BOOST_PP_ITERATION_2 949 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 950 && BOOST_PP_ITERATION_FINISH_2 >= 950 +# define BOOST_PP_ITERATION_2 950 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 951 && BOOST_PP_ITERATION_FINISH_2 >= 951 +# define BOOST_PP_ITERATION_2 951 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 952 && BOOST_PP_ITERATION_FINISH_2 >= 952 +# define BOOST_PP_ITERATION_2 952 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 953 && BOOST_PP_ITERATION_FINISH_2 >= 953 +# define BOOST_PP_ITERATION_2 953 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 954 && BOOST_PP_ITERATION_FINISH_2 >= 954 +# define BOOST_PP_ITERATION_2 954 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 955 && BOOST_PP_ITERATION_FINISH_2 >= 955 +# define BOOST_PP_ITERATION_2 955 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 956 && BOOST_PP_ITERATION_FINISH_2 >= 956 +# define BOOST_PP_ITERATION_2 956 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 957 && BOOST_PP_ITERATION_FINISH_2 >= 957 +# define BOOST_PP_ITERATION_2 957 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 958 && BOOST_PP_ITERATION_FINISH_2 >= 958 +# define BOOST_PP_ITERATION_2 958 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 959 && BOOST_PP_ITERATION_FINISH_2 >= 959 +# define BOOST_PP_ITERATION_2 959 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 960 && BOOST_PP_ITERATION_FINISH_2 >= 960 +# define BOOST_PP_ITERATION_2 960 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 961 && BOOST_PP_ITERATION_FINISH_2 >= 961 +# define BOOST_PP_ITERATION_2 961 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 962 && BOOST_PP_ITERATION_FINISH_2 >= 962 +# define BOOST_PP_ITERATION_2 962 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 963 && BOOST_PP_ITERATION_FINISH_2 >= 963 +# define BOOST_PP_ITERATION_2 963 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 964 && BOOST_PP_ITERATION_FINISH_2 >= 964 +# define BOOST_PP_ITERATION_2 964 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 965 && BOOST_PP_ITERATION_FINISH_2 >= 965 +# define BOOST_PP_ITERATION_2 965 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 966 && BOOST_PP_ITERATION_FINISH_2 >= 966 +# define BOOST_PP_ITERATION_2 966 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 967 && BOOST_PP_ITERATION_FINISH_2 >= 967 +# define BOOST_PP_ITERATION_2 967 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 968 && BOOST_PP_ITERATION_FINISH_2 >= 968 +# define BOOST_PP_ITERATION_2 968 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 969 && BOOST_PP_ITERATION_FINISH_2 >= 969 +# define BOOST_PP_ITERATION_2 969 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 970 && BOOST_PP_ITERATION_FINISH_2 >= 970 +# define BOOST_PP_ITERATION_2 970 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 971 && BOOST_PP_ITERATION_FINISH_2 >= 971 +# define BOOST_PP_ITERATION_2 971 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 972 && BOOST_PP_ITERATION_FINISH_2 >= 972 +# define BOOST_PP_ITERATION_2 972 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 973 && BOOST_PP_ITERATION_FINISH_2 >= 973 +# define BOOST_PP_ITERATION_2 973 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 974 && BOOST_PP_ITERATION_FINISH_2 >= 974 +# define BOOST_PP_ITERATION_2 974 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 975 && BOOST_PP_ITERATION_FINISH_2 >= 975 +# define BOOST_PP_ITERATION_2 975 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 976 && BOOST_PP_ITERATION_FINISH_2 >= 976 +# define BOOST_PP_ITERATION_2 976 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 977 && BOOST_PP_ITERATION_FINISH_2 >= 977 +# define BOOST_PP_ITERATION_2 977 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 978 && BOOST_PP_ITERATION_FINISH_2 >= 978 +# define BOOST_PP_ITERATION_2 978 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 979 && BOOST_PP_ITERATION_FINISH_2 >= 979 +# define BOOST_PP_ITERATION_2 979 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 980 && BOOST_PP_ITERATION_FINISH_2 >= 980 +# define BOOST_PP_ITERATION_2 980 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 981 && BOOST_PP_ITERATION_FINISH_2 >= 981 +# define BOOST_PP_ITERATION_2 981 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 982 && BOOST_PP_ITERATION_FINISH_2 >= 982 +# define BOOST_PP_ITERATION_2 982 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 983 && BOOST_PP_ITERATION_FINISH_2 >= 983 +# define BOOST_PP_ITERATION_2 983 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 984 && BOOST_PP_ITERATION_FINISH_2 >= 984 +# define BOOST_PP_ITERATION_2 984 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 985 && BOOST_PP_ITERATION_FINISH_2 >= 985 +# define BOOST_PP_ITERATION_2 985 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 986 && BOOST_PP_ITERATION_FINISH_2 >= 986 +# define BOOST_PP_ITERATION_2 986 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 987 && BOOST_PP_ITERATION_FINISH_2 >= 987 +# define BOOST_PP_ITERATION_2 987 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 988 && BOOST_PP_ITERATION_FINISH_2 >= 988 +# define BOOST_PP_ITERATION_2 988 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 989 && BOOST_PP_ITERATION_FINISH_2 >= 989 +# define BOOST_PP_ITERATION_2 989 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 990 && BOOST_PP_ITERATION_FINISH_2 >= 990 +# define BOOST_PP_ITERATION_2 990 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 991 && BOOST_PP_ITERATION_FINISH_2 >= 991 +# define BOOST_PP_ITERATION_2 991 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 992 && BOOST_PP_ITERATION_FINISH_2 >= 992 +# define BOOST_PP_ITERATION_2 992 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 993 && BOOST_PP_ITERATION_FINISH_2 >= 993 +# define BOOST_PP_ITERATION_2 993 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 994 && BOOST_PP_ITERATION_FINISH_2 >= 994 +# define BOOST_PP_ITERATION_2 994 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 995 && BOOST_PP_ITERATION_FINISH_2 >= 995 +# define BOOST_PP_ITERATION_2 995 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 996 && BOOST_PP_ITERATION_FINISH_2 >= 996 +# define BOOST_PP_ITERATION_2 996 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 997 && BOOST_PP_ITERATION_FINISH_2 >= 997 +# define BOOST_PP_ITERATION_2 997 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 998 && BOOST_PP_ITERATION_FINISH_2 >= 998 +# define BOOST_PP_ITERATION_2 998 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 999 && BOOST_PP_ITERATION_FINISH_2 >= 999 +# define BOOST_PP_ITERATION_2 999 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1000 && BOOST_PP_ITERATION_FINISH_2 >= 1000 +# define BOOST_PP_ITERATION_2 1000 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1001 && BOOST_PP_ITERATION_FINISH_2 >= 1001 +# define BOOST_PP_ITERATION_2 1001 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1002 && BOOST_PP_ITERATION_FINISH_2 >= 1002 +# define BOOST_PP_ITERATION_2 1002 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1003 && BOOST_PP_ITERATION_FINISH_2 >= 1003 +# define BOOST_PP_ITERATION_2 1003 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1004 && BOOST_PP_ITERATION_FINISH_2 >= 1004 +# define BOOST_PP_ITERATION_2 1004 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1005 && BOOST_PP_ITERATION_FINISH_2 >= 1005 +# define BOOST_PP_ITERATION_2 1005 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1006 && BOOST_PP_ITERATION_FINISH_2 >= 1006 +# define BOOST_PP_ITERATION_2 1006 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1007 && BOOST_PP_ITERATION_FINISH_2 >= 1007 +# define BOOST_PP_ITERATION_2 1007 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1008 && BOOST_PP_ITERATION_FINISH_2 >= 1008 +# define BOOST_PP_ITERATION_2 1008 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1009 && BOOST_PP_ITERATION_FINISH_2 >= 1009 +# define BOOST_PP_ITERATION_2 1009 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1010 && BOOST_PP_ITERATION_FINISH_2 >= 1010 +# define BOOST_PP_ITERATION_2 1010 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1011 && BOOST_PP_ITERATION_FINISH_2 >= 1011 +# define BOOST_PP_ITERATION_2 1011 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1012 && BOOST_PP_ITERATION_FINISH_2 >= 1012 +# define BOOST_PP_ITERATION_2 1012 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1013 && BOOST_PP_ITERATION_FINISH_2 >= 1013 +# define BOOST_PP_ITERATION_2 1013 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1014 && BOOST_PP_ITERATION_FINISH_2 >= 1014 +# define BOOST_PP_ITERATION_2 1014 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1015 && BOOST_PP_ITERATION_FINISH_2 >= 1015 +# define BOOST_PP_ITERATION_2 1015 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1016 && BOOST_PP_ITERATION_FINISH_2 >= 1016 +# define BOOST_PP_ITERATION_2 1016 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1017 && BOOST_PP_ITERATION_FINISH_2 >= 1017 +# define BOOST_PP_ITERATION_2 1017 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1018 && BOOST_PP_ITERATION_FINISH_2 >= 1018 +# define BOOST_PP_ITERATION_2 1018 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1019 && BOOST_PP_ITERATION_FINISH_2 >= 1019 +# define BOOST_PP_ITERATION_2 1019 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1020 && BOOST_PP_ITERATION_FINISH_2 >= 1020 +# define BOOST_PP_ITERATION_2 1020 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1021 && BOOST_PP_ITERATION_FINISH_2 >= 1021 +# define BOOST_PP_ITERATION_2 1021 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1022 && BOOST_PP_ITERATION_FINISH_2 >= 1022 +# define BOOST_PP_ITERATION_2 1022 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1023 && BOOST_PP_ITERATION_FINISH_2 >= 1023 +# define BOOST_PP_ITERATION_2 1023 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1024 && BOOST_PP_ITERATION_FINISH_2 >= 1024 +# define BOOST_PP_ITERATION_2 1024 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward2_256.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward2_256.hpp new file mode 100644 index 000000000..e3c946dfd --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward2_256.hpp @@ -0,0 +1,1296 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_START_2 <= 0 && BOOST_PP_ITERATION_FINISH_2 >= 0 +# define BOOST_PP_ITERATION_2 0 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 1 && BOOST_PP_ITERATION_FINISH_2 >= 1 +# define BOOST_PP_ITERATION_2 1 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 2 && BOOST_PP_ITERATION_FINISH_2 >= 2 +# define BOOST_PP_ITERATION_2 2 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 3 && BOOST_PP_ITERATION_FINISH_2 >= 3 +# define BOOST_PP_ITERATION_2 3 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 4 && BOOST_PP_ITERATION_FINISH_2 >= 4 +# define BOOST_PP_ITERATION_2 4 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 5 && BOOST_PP_ITERATION_FINISH_2 >= 5 +# define BOOST_PP_ITERATION_2 5 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 6 && BOOST_PP_ITERATION_FINISH_2 >= 6 +# define BOOST_PP_ITERATION_2 6 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 7 && BOOST_PP_ITERATION_FINISH_2 >= 7 +# define BOOST_PP_ITERATION_2 7 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 8 && BOOST_PP_ITERATION_FINISH_2 >= 8 +# define BOOST_PP_ITERATION_2 8 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 9 && BOOST_PP_ITERATION_FINISH_2 >= 9 +# define BOOST_PP_ITERATION_2 9 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 10 && BOOST_PP_ITERATION_FINISH_2 >= 10 +# define BOOST_PP_ITERATION_2 10 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 11 && BOOST_PP_ITERATION_FINISH_2 >= 11 +# define BOOST_PP_ITERATION_2 11 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 12 && BOOST_PP_ITERATION_FINISH_2 >= 12 +# define BOOST_PP_ITERATION_2 12 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 13 && BOOST_PP_ITERATION_FINISH_2 >= 13 +# define BOOST_PP_ITERATION_2 13 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 14 && BOOST_PP_ITERATION_FINISH_2 >= 14 +# define BOOST_PP_ITERATION_2 14 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 15 && BOOST_PP_ITERATION_FINISH_2 >= 15 +# define BOOST_PP_ITERATION_2 15 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 16 && BOOST_PP_ITERATION_FINISH_2 >= 16 +# define BOOST_PP_ITERATION_2 16 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 17 && BOOST_PP_ITERATION_FINISH_2 >= 17 +# define BOOST_PP_ITERATION_2 17 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 18 && BOOST_PP_ITERATION_FINISH_2 >= 18 +# define BOOST_PP_ITERATION_2 18 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 19 && BOOST_PP_ITERATION_FINISH_2 >= 19 +# define BOOST_PP_ITERATION_2 19 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 20 && BOOST_PP_ITERATION_FINISH_2 >= 20 +# define BOOST_PP_ITERATION_2 20 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 21 && BOOST_PP_ITERATION_FINISH_2 >= 21 +# define BOOST_PP_ITERATION_2 21 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 22 && BOOST_PP_ITERATION_FINISH_2 >= 22 +# define BOOST_PP_ITERATION_2 22 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 23 && BOOST_PP_ITERATION_FINISH_2 >= 23 +# define BOOST_PP_ITERATION_2 23 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 24 && BOOST_PP_ITERATION_FINISH_2 >= 24 +# define BOOST_PP_ITERATION_2 24 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 25 && BOOST_PP_ITERATION_FINISH_2 >= 25 +# define BOOST_PP_ITERATION_2 25 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 26 && BOOST_PP_ITERATION_FINISH_2 >= 26 +# define BOOST_PP_ITERATION_2 26 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 27 && BOOST_PP_ITERATION_FINISH_2 >= 27 +# define BOOST_PP_ITERATION_2 27 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 28 && BOOST_PP_ITERATION_FINISH_2 >= 28 +# define BOOST_PP_ITERATION_2 28 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 29 && BOOST_PP_ITERATION_FINISH_2 >= 29 +# define BOOST_PP_ITERATION_2 29 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 30 && BOOST_PP_ITERATION_FINISH_2 >= 30 +# define BOOST_PP_ITERATION_2 30 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 31 && BOOST_PP_ITERATION_FINISH_2 >= 31 +# define BOOST_PP_ITERATION_2 31 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 32 && BOOST_PP_ITERATION_FINISH_2 >= 32 +# define BOOST_PP_ITERATION_2 32 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 33 && BOOST_PP_ITERATION_FINISH_2 >= 33 +# define BOOST_PP_ITERATION_2 33 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 34 && BOOST_PP_ITERATION_FINISH_2 >= 34 +# define BOOST_PP_ITERATION_2 34 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 35 && BOOST_PP_ITERATION_FINISH_2 >= 35 +# define BOOST_PP_ITERATION_2 35 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 36 && BOOST_PP_ITERATION_FINISH_2 >= 36 +# define BOOST_PP_ITERATION_2 36 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 37 && BOOST_PP_ITERATION_FINISH_2 >= 37 +# define BOOST_PP_ITERATION_2 37 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 38 && BOOST_PP_ITERATION_FINISH_2 >= 38 +# define BOOST_PP_ITERATION_2 38 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 39 && BOOST_PP_ITERATION_FINISH_2 >= 39 +# define BOOST_PP_ITERATION_2 39 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 40 && BOOST_PP_ITERATION_FINISH_2 >= 40 +# define BOOST_PP_ITERATION_2 40 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 41 && BOOST_PP_ITERATION_FINISH_2 >= 41 +# define BOOST_PP_ITERATION_2 41 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 42 && BOOST_PP_ITERATION_FINISH_2 >= 42 +# define BOOST_PP_ITERATION_2 42 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 43 && BOOST_PP_ITERATION_FINISH_2 >= 43 +# define BOOST_PP_ITERATION_2 43 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 44 && BOOST_PP_ITERATION_FINISH_2 >= 44 +# define BOOST_PP_ITERATION_2 44 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 45 && BOOST_PP_ITERATION_FINISH_2 >= 45 +# define BOOST_PP_ITERATION_2 45 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 46 && BOOST_PP_ITERATION_FINISH_2 >= 46 +# define BOOST_PP_ITERATION_2 46 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 47 && BOOST_PP_ITERATION_FINISH_2 >= 47 +# define BOOST_PP_ITERATION_2 47 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 48 && BOOST_PP_ITERATION_FINISH_2 >= 48 +# define BOOST_PP_ITERATION_2 48 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 49 && BOOST_PP_ITERATION_FINISH_2 >= 49 +# define BOOST_PP_ITERATION_2 49 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 50 && BOOST_PP_ITERATION_FINISH_2 >= 50 +# define BOOST_PP_ITERATION_2 50 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 51 && BOOST_PP_ITERATION_FINISH_2 >= 51 +# define BOOST_PP_ITERATION_2 51 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 52 && BOOST_PP_ITERATION_FINISH_2 >= 52 +# define BOOST_PP_ITERATION_2 52 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 53 && BOOST_PP_ITERATION_FINISH_2 >= 53 +# define BOOST_PP_ITERATION_2 53 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 54 && BOOST_PP_ITERATION_FINISH_2 >= 54 +# define BOOST_PP_ITERATION_2 54 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 55 && BOOST_PP_ITERATION_FINISH_2 >= 55 +# define BOOST_PP_ITERATION_2 55 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 56 && BOOST_PP_ITERATION_FINISH_2 >= 56 +# define BOOST_PP_ITERATION_2 56 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 57 && BOOST_PP_ITERATION_FINISH_2 >= 57 +# define BOOST_PP_ITERATION_2 57 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 58 && BOOST_PP_ITERATION_FINISH_2 >= 58 +# define BOOST_PP_ITERATION_2 58 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 59 && BOOST_PP_ITERATION_FINISH_2 >= 59 +# define BOOST_PP_ITERATION_2 59 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 60 && BOOST_PP_ITERATION_FINISH_2 >= 60 +# define BOOST_PP_ITERATION_2 60 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 61 && BOOST_PP_ITERATION_FINISH_2 >= 61 +# define BOOST_PP_ITERATION_2 61 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 62 && BOOST_PP_ITERATION_FINISH_2 >= 62 +# define BOOST_PP_ITERATION_2 62 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 63 && BOOST_PP_ITERATION_FINISH_2 >= 63 +# define BOOST_PP_ITERATION_2 63 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 64 && BOOST_PP_ITERATION_FINISH_2 >= 64 +# define BOOST_PP_ITERATION_2 64 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 65 && BOOST_PP_ITERATION_FINISH_2 >= 65 +# define BOOST_PP_ITERATION_2 65 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 66 && BOOST_PP_ITERATION_FINISH_2 >= 66 +# define BOOST_PP_ITERATION_2 66 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 67 && BOOST_PP_ITERATION_FINISH_2 >= 67 +# define BOOST_PP_ITERATION_2 67 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 68 && BOOST_PP_ITERATION_FINISH_2 >= 68 +# define BOOST_PP_ITERATION_2 68 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 69 && BOOST_PP_ITERATION_FINISH_2 >= 69 +# define BOOST_PP_ITERATION_2 69 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 70 && BOOST_PP_ITERATION_FINISH_2 >= 70 +# define BOOST_PP_ITERATION_2 70 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 71 && BOOST_PP_ITERATION_FINISH_2 >= 71 +# define BOOST_PP_ITERATION_2 71 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 72 && BOOST_PP_ITERATION_FINISH_2 >= 72 +# define BOOST_PP_ITERATION_2 72 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 73 && BOOST_PP_ITERATION_FINISH_2 >= 73 +# define BOOST_PP_ITERATION_2 73 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 74 && BOOST_PP_ITERATION_FINISH_2 >= 74 +# define BOOST_PP_ITERATION_2 74 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 75 && BOOST_PP_ITERATION_FINISH_2 >= 75 +# define BOOST_PP_ITERATION_2 75 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 76 && BOOST_PP_ITERATION_FINISH_2 >= 76 +# define BOOST_PP_ITERATION_2 76 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 77 && BOOST_PP_ITERATION_FINISH_2 >= 77 +# define BOOST_PP_ITERATION_2 77 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 78 && BOOST_PP_ITERATION_FINISH_2 >= 78 +# define BOOST_PP_ITERATION_2 78 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 79 && BOOST_PP_ITERATION_FINISH_2 >= 79 +# define BOOST_PP_ITERATION_2 79 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 80 && BOOST_PP_ITERATION_FINISH_2 >= 80 +# define BOOST_PP_ITERATION_2 80 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 81 && BOOST_PP_ITERATION_FINISH_2 >= 81 +# define BOOST_PP_ITERATION_2 81 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 82 && BOOST_PP_ITERATION_FINISH_2 >= 82 +# define BOOST_PP_ITERATION_2 82 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 83 && BOOST_PP_ITERATION_FINISH_2 >= 83 +# define BOOST_PP_ITERATION_2 83 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 84 && BOOST_PP_ITERATION_FINISH_2 >= 84 +# define BOOST_PP_ITERATION_2 84 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 85 && BOOST_PP_ITERATION_FINISH_2 >= 85 +# define BOOST_PP_ITERATION_2 85 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 86 && BOOST_PP_ITERATION_FINISH_2 >= 86 +# define BOOST_PP_ITERATION_2 86 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 87 && BOOST_PP_ITERATION_FINISH_2 >= 87 +# define BOOST_PP_ITERATION_2 87 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 88 && BOOST_PP_ITERATION_FINISH_2 >= 88 +# define BOOST_PP_ITERATION_2 88 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 89 && BOOST_PP_ITERATION_FINISH_2 >= 89 +# define BOOST_PP_ITERATION_2 89 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 90 && BOOST_PP_ITERATION_FINISH_2 >= 90 +# define BOOST_PP_ITERATION_2 90 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 91 && BOOST_PP_ITERATION_FINISH_2 >= 91 +# define BOOST_PP_ITERATION_2 91 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 92 && BOOST_PP_ITERATION_FINISH_2 >= 92 +# define BOOST_PP_ITERATION_2 92 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 93 && BOOST_PP_ITERATION_FINISH_2 >= 93 +# define BOOST_PP_ITERATION_2 93 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 94 && BOOST_PP_ITERATION_FINISH_2 >= 94 +# define BOOST_PP_ITERATION_2 94 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 95 && BOOST_PP_ITERATION_FINISH_2 >= 95 +# define BOOST_PP_ITERATION_2 95 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 96 && BOOST_PP_ITERATION_FINISH_2 >= 96 +# define BOOST_PP_ITERATION_2 96 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 97 && BOOST_PP_ITERATION_FINISH_2 >= 97 +# define BOOST_PP_ITERATION_2 97 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 98 && BOOST_PP_ITERATION_FINISH_2 >= 98 +# define BOOST_PP_ITERATION_2 98 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 99 && BOOST_PP_ITERATION_FINISH_2 >= 99 +# define BOOST_PP_ITERATION_2 99 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 100 && BOOST_PP_ITERATION_FINISH_2 >= 100 +# define BOOST_PP_ITERATION_2 100 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 101 && BOOST_PP_ITERATION_FINISH_2 >= 101 +# define BOOST_PP_ITERATION_2 101 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 102 && BOOST_PP_ITERATION_FINISH_2 >= 102 +# define BOOST_PP_ITERATION_2 102 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 103 && BOOST_PP_ITERATION_FINISH_2 >= 103 +# define BOOST_PP_ITERATION_2 103 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 104 && BOOST_PP_ITERATION_FINISH_2 >= 104 +# define BOOST_PP_ITERATION_2 104 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 105 && BOOST_PP_ITERATION_FINISH_2 >= 105 +# define BOOST_PP_ITERATION_2 105 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 106 && BOOST_PP_ITERATION_FINISH_2 >= 106 +# define BOOST_PP_ITERATION_2 106 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 107 && BOOST_PP_ITERATION_FINISH_2 >= 107 +# define BOOST_PP_ITERATION_2 107 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 108 && BOOST_PP_ITERATION_FINISH_2 >= 108 +# define BOOST_PP_ITERATION_2 108 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 109 && BOOST_PP_ITERATION_FINISH_2 >= 109 +# define BOOST_PP_ITERATION_2 109 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 110 && BOOST_PP_ITERATION_FINISH_2 >= 110 +# define BOOST_PP_ITERATION_2 110 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 111 && BOOST_PP_ITERATION_FINISH_2 >= 111 +# define BOOST_PP_ITERATION_2 111 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 112 && BOOST_PP_ITERATION_FINISH_2 >= 112 +# define BOOST_PP_ITERATION_2 112 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 113 && BOOST_PP_ITERATION_FINISH_2 >= 113 +# define BOOST_PP_ITERATION_2 113 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 114 && BOOST_PP_ITERATION_FINISH_2 >= 114 +# define BOOST_PP_ITERATION_2 114 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 115 && BOOST_PP_ITERATION_FINISH_2 >= 115 +# define BOOST_PP_ITERATION_2 115 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 116 && BOOST_PP_ITERATION_FINISH_2 >= 116 +# define BOOST_PP_ITERATION_2 116 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 117 && BOOST_PP_ITERATION_FINISH_2 >= 117 +# define BOOST_PP_ITERATION_2 117 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 118 && BOOST_PP_ITERATION_FINISH_2 >= 118 +# define BOOST_PP_ITERATION_2 118 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 119 && BOOST_PP_ITERATION_FINISH_2 >= 119 +# define BOOST_PP_ITERATION_2 119 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 120 && BOOST_PP_ITERATION_FINISH_2 >= 120 +# define BOOST_PP_ITERATION_2 120 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 121 && BOOST_PP_ITERATION_FINISH_2 >= 121 +# define BOOST_PP_ITERATION_2 121 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 122 && BOOST_PP_ITERATION_FINISH_2 >= 122 +# define BOOST_PP_ITERATION_2 122 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 123 && BOOST_PP_ITERATION_FINISH_2 >= 123 +# define BOOST_PP_ITERATION_2 123 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 124 && BOOST_PP_ITERATION_FINISH_2 >= 124 +# define BOOST_PP_ITERATION_2 124 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 125 && BOOST_PP_ITERATION_FINISH_2 >= 125 +# define BOOST_PP_ITERATION_2 125 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 126 && BOOST_PP_ITERATION_FINISH_2 >= 126 +# define BOOST_PP_ITERATION_2 126 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 127 && BOOST_PP_ITERATION_FINISH_2 >= 127 +# define BOOST_PP_ITERATION_2 127 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 128 && BOOST_PP_ITERATION_FINISH_2 >= 128 +# define BOOST_PP_ITERATION_2 128 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 129 && BOOST_PP_ITERATION_FINISH_2 >= 129 +# define BOOST_PP_ITERATION_2 129 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 130 && BOOST_PP_ITERATION_FINISH_2 >= 130 +# define BOOST_PP_ITERATION_2 130 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 131 && BOOST_PP_ITERATION_FINISH_2 >= 131 +# define BOOST_PP_ITERATION_2 131 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 132 && BOOST_PP_ITERATION_FINISH_2 >= 132 +# define BOOST_PP_ITERATION_2 132 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 133 && BOOST_PP_ITERATION_FINISH_2 >= 133 +# define BOOST_PP_ITERATION_2 133 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 134 && BOOST_PP_ITERATION_FINISH_2 >= 134 +# define BOOST_PP_ITERATION_2 134 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 135 && BOOST_PP_ITERATION_FINISH_2 >= 135 +# define BOOST_PP_ITERATION_2 135 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 136 && BOOST_PP_ITERATION_FINISH_2 >= 136 +# define BOOST_PP_ITERATION_2 136 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 137 && BOOST_PP_ITERATION_FINISH_2 >= 137 +# define BOOST_PP_ITERATION_2 137 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 138 && BOOST_PP_ITERATION_FINISH_2 >= 138 +# define BOOST_PP_ITERATION_2 138 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 139 && BOOST_PP_ITERATION_FINISH_2 >= 139 +# define BOOST_PP_ITERATION_2 139 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 140 && BOOST_PP_ITERATION_FINISH_2 >= 140 +# define BOOST_PP_ITERATION_2 140 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 141 && BOOST_PP_ITERATION_FINISH_2 >= 141 +# define BOOST_PP_ITERATION_2 141 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 142 && BOOST_PP_ITERATION_FINISH_2 >= 142 +# define BOOST_PP_ITERATION_2 142 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 143 && BOOST_PP_ITERATION_FINISH_2 >= 143 +# define BOOST_PP_ITERATION_2 143 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 144 && BOOST_PP_ITERATION_FINISH_2 >= 144 +# define BOOST_PP_ITERATION_2 144 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 145 && BOOST_PP_ITERATION_FINISH_2 >= 145 +# define BOOST_PP_ITERATION_2 145 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 146 && BOOST_PP_ITERATION_FINISH_2 >= 146 +# define BOOST_PP_ITERATION_2 146 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 147 && BOOST_PP_ITERATION_FINISH_2 >= 147 +# define BOOST_PP_ITERATION_2 147 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 148 && BOOST_PP_ITERATION_FINISH_2 >= 148 +# define BOOST_PP_ITERATION_2 148 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 149 && BOOST_PP_ITERATION_FINISH_2 >= 149 +# define BOOST_PP_ITERATION_2 149 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 150 && BOOST_PP_ITERATION_FINISH_2 >= 150 +# define BOOST_PP_ITERATION_2 150 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 151 && BOOST_PP_ITERATION_FINISH_2 >= 151 +# define BOOST_PP_ITERATION_2 151 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 152 && BOOST_PP_ITERATION_FINISH_2 >= 152 +# define BOOST_PP_ITERATION_2 152 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 153 && BOOST_PP_ITERATION_FINISH_2 >= 153 +# define BOOST_PP_ITERATION_2 153 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 154 && BOOST_PP_ITERATION_FINISH_2 >= 154 +# define BOOST_PP_ITERATION_2 154 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 155 && BOOST_PP_ITERATION_FINISH_2 >= 155 +# define BOOST_PP_ITERATION_2 155 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 156 && BOOST_PP_ITERATION_FINISH_2 >= 156 +# define BOOST_PP_ITERATION_2 156 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 157 && BOOST_PP_ITERATION_FINISH_2 >= 157 +# define BOOST_PP_ITERATION_2 157 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 158 && BOOST_PP_ITERATION_FINISH_2 >= 158 +# define BOOST_PP_ITERATION_2 158 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 159 && BOOST_PP_ITERATION_FINISH_2 >= 159 +# define BOOST_PP_ITERATION_2 159 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 160 && BOOST_PP_ITERATION_FINISH_2 >= 160 +# define BOOST_PP_ITERATION_2 160 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 161 && BOOST_PP_ITERATION_FINISH_2 >= 161 +# define BOOST_PP_ITERATION_2 161 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 162 && BOOST_PP_ITERATION_FINISH_2 >= 162 +# define BOOST_PP_ITERATION_2 162 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 163 && BOOST_PP_ITERATION_FINISH_2 >= 163 +# define BOOST_PP_ITERATION_2 163 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 164 && BOOST_PP_ITERATION_FINISH_2 >= 164 +# define BOOST_PP_ITERATION_2 164 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 165 && BOOST_PP_ITERATION_FINISH_2 >= 165 +# define BOOST_PP_ITERATION_2 165 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 166 && BOOST_PP_ITERATION_FINISH_2 >= 166 +# define BOOST_PP_ITERATION_2 166 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 167 && BOOST_PP_ITERATION_FINISH_2 >= 167 +# define BOOST_PP_ITERATION_2 167 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 168 && BOOST_PP_ITERATION_FINISH_2 >= 168 +# define BOOST_PP_ITERATION_2 168 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 169 && BOOST_PP_ITERATION_FINISH_2 >= 169 +# define BOOST_PP_ITERATION_2 169 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 170 && BOOST_PP_ITERATION_FINISH_2 >= 170 +# define BOOST_PP_ITERATION_2 170 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 171 && BOOST_PP_ITERATION_FINISH_2 >= 171 +# define BOOST_PP_ITERATION_2 171 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 172 && BOOST_PP_ITERATION_FINISH_2 >= 172 +# define BOOST_PP_ITERATION_2 172 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 173 && BOOST_PP_ITERATION_FINISH_2 >= 173 +# define BOOST_PP_ITERATION_2 173 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 174 && BOOST_PP_ITERATION_FINISH_2 >= 174 +# define BOOST_PP_ITERATION_2 174 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 175 && BOOST_PP_ITERATION_FINISH_2 >= 175 +# define BOOST_PP_ITERATION_2 175 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 176 && BOOST_PP_ITERATION_FINISH_2 >= 176 +# define BOOST_PP_ITERATION_2 176 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 177 && BOOST_PP_ITERATION_FINISH_2 >= 177 +# define BOOST_PP_ITERATION_2 177 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 178 && BOOST_PP_ITERATION_FINISH_2 >= 178 +# define BOOST_PP_ITERATION_2 178 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 179 && BOOST_PP_ITERATION_FINISH_2 >= 179 +# define BOOST_PP_ITERATION_2 179 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 180 && BOOST_PP_ITERATION_FINISH_2 >= 180 +# define BOOST_PP_ITERATION_2 180 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 181 && BOOST_PP_ITERATION_FINISH_2 >= 181 +# define BOOST_PP_ITERATION_2 181 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 182 && BOOST_PP_ITERATION_FINISH_2 >= 182 +# define BOOST_PP_ITERATION_2 182 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 183 && BOOST_PP_ITERATION_FINISH_2 >= 183 +# define BOOST_PP_ITERATION_2 183 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 184 && BOOST_PP_ITERATION_FINISH_2 >= 184 +# define BOOST_PP_ITERATION_2 184 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 185 && BOOST_PP_ITERATION_FINISH_2 >= 185 +# define BOOST_PP_ITERATION_2 185 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 186 && BOOST_PP_ITERATION_FINISH_2 >= 186 +# define BOOST_PP_ITERATION_2 186 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 187 && BOOST_PP_ITERATION_FINISH_2 >= 187 +# define BOOST_PP_ITERATION_2 187 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 188 && BOOST_PP_ITERATION_FINISH_2 >= 188 +# define BOOST_PP_ITERATION_2 188 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 189 && BOOST_PP_ITERATION_FINISH_2 >= 189 +# define BOOST_PP_ITERATION_2 189 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 190 && BOOST_PP_ITERATION_FINISH_2 >= 190 +# define BOOST_PP_ITERATION_2 190 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 191 && BOOST_PP_ITERATION_FINISH_2 >= 191 +# define BOOST_PP_ITERATION_2 191 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 192 && BOOST_PP_ITERATION_FINISH_2 >= 192 +# define BOOST_PP_ITERATION_2 192 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 193 && BOOST_PP_ITERATION_FINISH_2 >= 193 +# define BOOST_PP_ITERATION_2 193 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 194 && BOOST_PP_ITERATION_FINISH_2 >= 194 +# define BOOST_PP_ITERATION_2 194 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 195 && BOOST_PP_ITERATION_FINISH_2 >= 195 +# define BOOST_PP_ITERATION_2 195 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 196 && BOOST_PP_ITERATION_FINISH_2 >= 196 +# define BOOST_PP_ITERATION_2 196 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 197 && BOOST_PP_ITERATION_FINISH_2 >= 197 +# define BOOST_PP_ITERATION_2 197 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 198 && BOOST_PP_ITERATION_FINISH_2 >= 198 +# define BOOST_PP_ITERATION_2 198 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 199 && BOOST_PP_ITERATION_FINISH_2 >= 199 +# define BOOST_PP_ITERATION_2 199 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 200 && BOOST_PP_ITERATION_FINISH_2 >= 200 +# define BOOST_PP_ITERATION_2 200 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 201 && BOOST_PP_ITERATION_FINISH_2 >= 201 +# define BOOST_PP_ITERATION_2 201 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 202 && BOOST_PP_ITERATION_FINISH_2 >= 202 +# define BOOST_PP_ITERATION_2 202 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 203 && BOOST_PP_ITERATION_FINISH_2 >= 203 +# define BOOST_PP_ITERATION_2 203 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 204 && BOOST_PP_ITERATION_FINISH_2 >= 204 +# define BOOST_PP_ITERATION_2 204 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 205 && BOOST_PP_ITERATION_FINISH_2 >= 205 +# define BOOST_PP_ITERATION_2 205 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 206 && BOOST_PP_ITERATION_FINISH_2 >= 206 +# define BOOST_PP_ITERATION_2 206 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 207 && BOOST_PP_ITERATION_FINISH_2 >= 207 +# define BOOST_PP_ITERATION_2 207 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 208 && BOOST_PP_ITERATION_FINISH_2 >= 208 +# define BOOST_PP_ITERATION_2 208 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 209 && BOOST_PP_ITERATION_FINISH_2 >= 209 +# define BOOST_PP_ITERATION_2 209 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 210 && BOOST_PP_ITERATION_FINISH_2 >= 210 +# define BOOST_PP_ITERATION_2 210 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 211 && BOOST_PP_ITERATION_FINISH_2 >= 211 +# define BOOST_PP_ITERATION_2 211 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 212 && BOOST_PP_ITERATION_FINISH_2 >= 212 +# define BOOST_PP_ITERATION_2 212 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 213 && BOOST_PP_ITERATION_FINISH_2 >= 213 +# define BOOST_PP_ITERATION_2 213 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 214 && BOOST_PP_ITERATION_FINISH_2 >= 214 +# define BOOST_PP_ITERATION_2 214 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 215 && BOOST_PP_ITERATION_FINISH_2 >= 215 +# define BOOST_PP_ITERATION_2 215 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 216 && BOOST_PP_ITERATION_FINISH_2 >= 216 +# define BOOST_PP_ITERATION_2 216 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 217 && BOOST_PP_ITERATION_FINISH_2 >= 217 +# define BOOST_PP_ITERATION_2 217 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 218 && BOOST_PP_ITERATION_FINISH_2 >= 218 +# define BOOST_PP_ITERATION_2 218 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 219 && BOOST_PP_ITERATION_FINISH_2 >= 219 +# define BOOST_PP_ITERATION_2 219 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 220 && BOOST_PP_ITERATION_FINISH_2 >= 220 +# define BOOST_PP_ITERATION_2 220 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 221 && BOOST_PP_ITERATION_FINISH_2 >= 221 +# define BOOST_PP_ITERATION_2 221 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 222 && BOOST_PP_ITERATION_FINISH_2 >= 222 +# define BOOST_PP_ITERATION_2 222 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 223 && BOOST_PP_ITERATION_FINISH_2 >= 223 +# define BOOST_PP_ITERATION_2 223 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 224 && BOOST_PP_ITERATION_FINISH_2 >= 224 +# define BOOST_PP_ITERATION_2 224 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 225 && BOOST_PP_ITERATION_FINISH_2 >= 225 +# define BOOST_PP_ITERATION_2 225 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 226 && BOOST_PP_ITERATION_FINISH_2 >= 226 +# define BOOST_PP_ITERATION_2 226 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 227 && BOOST_PP_ITERATION_FINISH_2 >= 227 +# define BOOST_PP_ITERATION_2 227 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 228 && BOOST_PP_ITERATION_FINISH_2 >= 228 +# define BOOST_PP_ITERATION_2 228 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 229 && BOOST_PP_ITERATION_FINISH_2 >= 229 +# define BOOST_PP_ITERATION_2 229 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 230 && BOOST_PP_ITERATION_FINISH_2 >= 230 +# define BOOST_PP_ITERATION_2 230 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 231 && BOOST_PP_ITERATION_FINISH_2 >= 231 +# define BOOST_PP_ITERATION_2 231 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 232 && BOOST_PP_ITERATION_FINISH_2 >= 232 +# define BOOST_PP_ITERATION_2 232 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 233 && BOOST_PP_ITERATION_FINISH_2 >= 233 +# define BOOST_PP_ITERATION_2 233 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 234 && BOOST_PP_ITERATION_FINISH_2 >= 234 +# define BOOST_PP_ITERATION_2 234 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 235 && BOOST_PP_ITERATION_FINISH_2 >= 235 +# define BOOST_PP_ITERATION_2 235 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 236 && BOOST_PP_ITERATION_FINISH_2 >= 236 +# define BOOST_PP_ITERATION_2 236 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 237 && BOOST_PP_ITERATION_FINISH_2 >= 237 +# define BOOST_PP_ITERATION_2 237 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 238 && BOOST_PP_ITERATION_FINISH_2 >= 238 +# define BOOST_PP_ITERATION_2 238 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 239 && BOOST_PP_ITERATION_FINISH_2 >= 239 +# define BOOST_PP_ITERATION_2 239 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 240 && BOOST_PP_ITERATION_FINISH_2 >= 240 +# define BOOST_PP_ITERATION_2 240 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 241 && BOOST_PP_ITERATION_FINISH_2 >= 241 +# define BOOST_PP_ITERATION_2 241 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 242 && BOOST_PP_ITERATION_FINISH_2 >= 242 +# define BOOST_PP_ITERATION_2 242 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 243 && BOOST_PP_ITERATION_FINISH_2 >= 243 +# define BOOST_PP_ITERATION_2 243 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 244 && BOOST_PP_ITERATION_FINISH_2 >= 244 +# define BOOST_PP_ITERATION_2 244 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 245 && BOOST_PP_ITERATION_FINISH_2 >= 245 +# define BOOST_PP_ITERATION_2 245 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 246 && BOOST_PP_ITERATION_FINISH_2 >= 246 +# define BOOST_PP_ITERATION_2 246 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 247 && BOOST_PP_ITERATION_FINISH_2 >= 247 +# define BOOST_PP_ITERATION_2 247 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 248 && BOOST_PP_ITERATION_FINISH_2 >= 248 +# define BOOST_PP_ITERATION_2 248 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 249 && BOOST_PP_ITERATION_FINISH_2 >= 249 +# define BOOST_PP_ITERATION_2 249 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 250 && BOOST_PP_ITERATION_FINISH_2 >= 250 +# define BOOST_PP_ITERATION_2 250 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 251 && BOOST_PP_ITERATION_FINISH_2 >= 251 +# define BOOST_PP_ITERATION_2 251 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 252 && BOOST_PP_ITERATION_FINISH_2 >= 252 +# define BOOST_PP_ITERATION_2 252 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 253 && BOOST_PP_ITERATION_FINISH_2 >= 253 +# define BOOST_PP_ITERATION_2 253 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 254 && BOOST_PP_ITERATION_FINISH_2 >= 254 +# define BOOST_PP_ITERATION_2 254 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 255 && BOOST_PP_ITERATION_FINISH_2 >= 255 +# define BOOST_PP_ITERATION_2 255 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 256 && BOOST_PP_ITERATION_FINISH_2 >= 256 +# define BOOST_PP_ITERATION_2 256 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward2_512.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward2_512.hpp new file mode 100644 index 000000000..e434720d9 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward2_512.hpp @@ -0,0 +1,1293 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_START_2 <= 257 && BOOST_PP_ITERATION_FINISH_2 >= 257 +# define BOOST_PP_ITERATION_2 257 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 258 && BOOST_PP_ITERATION_FINISH_2 >= 258 +# define BOOST_PP_ITERATION_2 258 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 259 && BOOST_PP_ITERATION_FINISH_2 >= 259 +# define BOOST_PP_ITERATION_2 259 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 260 && BOOST_PP_ITERATION_FINISH_2 >= 260 +# define BOOST_PP_ITERATION_2 260 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 261 && BOOST_PP_ITERATION_FINISH_2 >= 261 +# define BOOST_PP_ITERATION_2 261 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 262 && BOOST_PP_ITERATION_FINISH_2 >= 262 +# define BOOST_PP_ITERATION_2 262 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 263 && BOOST_PP_ITERATION_FINISH_2 >= 263 +# define BOOST_PP_ITERATION_2 263 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 264 && BOOST_PP_ITERATION_FINISH_2 >= 264 +# define BOOST_PP_ITERATION_2 264 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 265 && BOOST_PP_ITERATION_FINISH_2 >= 265 +# define BOOST_PP_ITERATION_2 265 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 266 && BOOST_PP_ITERATION_FINISH_2 >= 266 +# define BOOST_PP_ITERATION_2 266 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 267 && BOOST_PP_ITERATION_FINISH_2 >= 267 +# define BOOST_PP_ITERATION_2 267 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 268 && BOOST_PP_ITERATION_FINISH_2 >= 268 +# define BOOST_PP_ITERATION_2 268 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 269 && BOOST_PP_ITERATION_FINISH_2 >= 269 +# define BOOST_PP_ITERATION_2 269 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 270 && BOOST_PP_ITERATION_FINISH_2 >= 270 +# define BOOST_PP_ITERATION_2 270 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 271 && BOOST_PP_ITERATION_FINISH_2 >= 271 +# define BOOST_PP_ITERATION_2 271 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 272 && BOOST_PP_ITERATION_FINISH_2 >= 272 +# define BOOST_PP_ITERATION_2 272 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 273 && BOOST_PP_ITERATION_FINISH_2 >= 273 +# define BOOST_PP_ITERATION_2 273 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 274 && BOOST_PP_ITERATION_FINISH_2 >= 274 +# define BOOST_PP_ITERATION_2 274 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 275 && BOOST_PP_ITERATION_FINISH_2 >= 275 +# define BOOST_PP_ITERATION_2 275 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 276 && BOOST_PP_ITERATION_FINISH_2 >= 276 +# define BOOST_PP_ITERATION_2 276 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 277 && BOOST_PP_ITERATION_FINISH_2 >= 277 +# define BOOST_PP_ITERATION_2 277 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 278 && BOOST_PP_ITERATION_FINISH_2 >= 278 +# define BOOST_PP_ITERATION_2 278 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 279 && BOOST_PP_ITERATION_FINISH_2 >= 279 +# define BOOST_PP_ITERATION_2 279 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 280 && BOOST_PP_ITERATION_FINISH_2 >= 280 +# define BOOST_PP_ITERATION_2 280 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 281 && BOOST_PP_ITERATION_FINISH_2 >= 281 +# define BOOST_PP_ITERATION_2 281 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 282 && BOOST_PP_ITERATION_FINISH_2 >= 282 +# define BOOST_PP_ITERATION_2 282 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 283 && BOOST_PP_ITERATION_FINISH_2 >= 283 +# define BOOST_PP_ITERATION_2 283 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 284 && BOOST_PP_ITERATION_FINISH_2 >= 284 +# define BOOST_PP_ITERATION_2 284 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 285 && BOOST_PP_ITERATION_FINISH_2 >= 285 +# define BOOST_PP_ITERATION_2 285 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 286 && BOOST_PP_ITERATION_FINISH_2 >= 286 +# define BOOST_PP_ITERATION_2 286 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 287 && BOOST_PP_ITERATION_FINISH_2 >= 287 +# define BOOST_PP_ITERATION_2 287 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 288 && BOOST_PP_ITERATION_FINISH_2 >= 288 +# define BOOST_PP_ITERATION_2 288 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 289 && BOOST_PP_ITERATION_FINISH_2 >= 289 +# define BOOST_PP_ITERATION_2 289 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 290 && BOOST_PP_ITERATION_FINISH_2 >= 290 +# define BOOST_PP_ITERATION_2 290 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 291 && BOOST_PP_ITERATION_FINISH_2 >= 291 +# define BOOST_PP_ITERATION_2 291 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 292 && BOOST_PP_ITERATION_FINISH_2 >= 292 +# define BOOST_PP_ITERATION_2 292 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 293 && BOOST_PP_ITERATION_FINISH_2 >= 293 +# define BOOST_PP_ITERATION_2 293 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 294 && BOOST_PP_ITERATION_FINISH_2 >= 294 +# define BOOST_PP_ITERATION_2 294 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 295 && BOOST_PP_ITERATION_FINISH_2 >= 295 +# define BOOST_PP_ITERATION_2 295 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 296 && BOOST_PP_ITERATION_FINISH_2 >= 296 +# define BOOST_PP_ITERATION_2 296 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 297 && BOOST_PP_ITERATION_FINISH_2 >= 297 +# define BOOST_PP_ITERATION_2 297 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 298 && BOOST_PP_ITERATION_FINISH_2 >= 298 +# define BOOST_PP_ITERATION_2 298 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 299 && BOOST_PP_ITERATION_FINISH_2 >= 299 +# define BOOST_PP_ITERATION_2 299 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 300 && BOOST_PP_ITERATION_FINISH_2 >= 300 +# define BOOST_PP_ITERATION_2 300 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 301 && BOOST_PP_ITERATION_FINISH_2 >= 301 +# define BOOST_PP_ITERATION_2 301 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 302 && BOOST_PP_ITERATION_FINISH_2 >= 302 +# define BOOST_PP_ITERATION_2 302 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 303 && BOOST_PP_ITERATION_FINISH_2 >= 303 +# define BOOST_PP_ITERATION_2 303 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 304 && BOOST_PP_ITERATION_FINISH_2 >= 304 +# define BOOST_PP_ITERATION_2 304 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 305 && BOOST_PP_ITERATION_FINISH_2 >= 305 +# define BOOST_PP_ITERATION_2 305 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 306 && BOOST_PP_ITERATION_FINISH_2 >= 306 +# define BOOST_PP_ITERATION_2 306 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 307 && BOOST_PP_ITERATION_FINISH_2 >= 307 +# define BOOST_PP_ITERATION_2 307 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 308 && BOOST_PP_ITERATION_FINISH_2 >= 308 +# define BOOST_PP_ITERATION_2 308 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 309 && BOOST_PP_ITERATION_FINISH_2 >= 309 +# define BOOST_PP_ITERATION_2 309 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 310 && BOOST_PP_ITERATION_FINISH_2 >= 310 +# define BOOST_PP_ITERATION_2 310 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 311 && BOOST_PP_ITERATION_FINISH_2 >= 311 +# define BOOST_PP_ITERATION_2 311 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 312 && BOOST_PP_ITERATION_FINISH_2 >= 312 +# define BOOST_PP_ITERATION_2 312 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 313 && BOOST_PP_ITERATION_FINISH_2 >= 313 +# define BOOST_PP_ITERATION_2 313 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 314 && BOOST_PP_ITERATION_FINISH_2 >= 314 +# define BOOST_PP_ITERATION_2 314 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 315 && BOOST_PP_ITERATION_FINISH_2 >= 315 +# define BOOST_PP_ITERATION_2 315 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 316 && BOOST_PP_ITERATION_FINISH_2 >= 316 +# define BOOST_PP_ITERATION_2 316 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 317 && BOOST_PP_ITERATION_FINISH_2 >= 317 +# define BOOST_PP_ITERATION_2 317 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 318 && BOOST_PP_ITERATION_FINISH_2 >= 318 +# define BOOST_PP_ITERATION_2 318 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 319 && BOOST_PP_ITERATION_FINISH_2 >= 319 +# define BOOST_PP_ITERATION_2 319 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 320 && BOOST_PP_ITERATION_FINISH_2 >= 320 +# define BOOST_PP_ITERATION_2 320 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 321 && BOOST_PP_ITERATION_FINISH_2 >= 321 +# define BOOST_PP_ITERATION_2 321 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 322 && BOOST_PP_ITERATION_FINISH_2 >= 322 +# define BOOST_PP_ITERATION_2 322 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 323 && BOOST_PP_ITERATION_FINISH_2 >= 323 +# define BOOST_PP_ITERATION_2 323 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 324 && BOOST_PP_ITERATION_FINISH_2 >= 324 +# define BOOST_PP_ITERATION_2 324 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 325 && BOOST_PP_ITERATION_FINISH_2 >= 325 +# define BOOST_PP_ITERATION_2 325 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 326 && BOOST_PP_ITERATION_FINISH_2 >= 326 +# define BOOST_PP_ITERATION_2 326 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 327 && BOOST_PP_ITERATION_FINISH_2 >= 327 +# define BOOST_PP_ITERATION_2 327 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 328 && BOOST_PP_ITERATION_FINISH_2 >= 328 +# define BOOST_PP_ITERATION_2 328 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 329 && BOOST_PP_ITERATION_FINISH_2 >= 329 +# define BOOST_PP_ITERATION_2 329 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 330 && BOOST_PP_ITERATION_FINISH_2 >= 330 +# define BOOST_PP_ITERATION_2 330 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 331 && BOOST_PP_ITERATION_FINISH_2 >= 331 +# define BOOST_PP_ITERATION_2 331 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 332 && BOOST_PP_ITERATION_FINISH_2 >= 332 +# define BOOST_PP_ITERATION_2 332 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 333 && BOOST_PP_ITERATION_FINISH_2 >= 333 +# define BOOST_PP_ITERATION_2 333 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 334 && BOOST_PP_ITERATION_FINISH_2 >= 334 +# define BOOST_PP_ITERATION_2 334 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 335 && BOOST_PP_ITERATION_FINISH_2 >= 335 +# define BOOST_PP_ITERATION_2 335 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 336 && BOOST_PP_ITERATION_FINISH_2 >= 336 +# define BOOST_PP_ITERATION_2 336 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 337 && BOOST_PP_ITERATION_FINISH_2 >= 337 +# define BOOST_PP_ITERATION_2 337 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 338 && BOOST_PP_ITERATION_FINISH_2 >= 338 +# define BOOST_PP_ITERATION_2 338 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 339 && BOOST_PP_ITERATION_FINISH_2 >= 339 +# define BOOST_PP_ITERATION_2 339 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 340 && BOOST_PP_ITERATION_FINISH_2 >= 340 +# define BOOST_PP_ITERATION_2 340 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 341 && BOOST_PP_ITERATION_FINISH_2 >= 341 +# define BOOST_PP_ITERATION_2 341 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 342 && BOOST_PP_ITERATION_FINISH_2 >= 342 +# define BOOST_PP_ITERATION_2 342 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 343 && BOOST_PP_ITERATION_FINISH_2 >= 343 +# define BOOST_PP_ITERATION_2 343 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 344 && BOOST_PP_ITERATION_FINISH_2 >= 344 +# define BOOST_PP_ITERATION_2 344 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 345 && BOOST_PP_ITERATION_FINISH_2 >= 345 +# define BOOST_PP_ITERATION_2 345 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 346 && BOOST_PP_ITERATION_FINISH_2 >= 346 +# define BOOST_PP_ITERATION_2 346 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 347 && BOOST_PP_ITERATION_FINISH_2 >= 347 +# define BOOST_PP_ITERATION_2 347 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 348 && BOOST_PP_ITERATION_FINISH_2 >= 348 +# define BOOST_PP_ITERATION_2 348 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 349 && BOOST_PP_ITERATION_FINISH_2 >= 349 +# define BOOST_PP_ITERATION_2 349 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 350 && BOOST_PP_ITERATION_FINISH_2 >= 350 +# define BOOST_PP_ITERATION_2 350 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 351 && BOOST_PP_ITERATION_FINISH_2 >= 351 +# define BOOST_PP_ITERATION_2 351 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 352 && BOOST_PP_ITERATION_FINISH_2 >= 352 +# define BOOST_PP_ITERATION_2 352 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 353 && BOOST_PP_ITERATION_FINISH_2 >= 353 +# define BOOST_PP_ITERATION_2 353 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 354 && BOOST_PP_ITERATION_FINISH_2 >= 354 +# define BOOST_PP_ITERATION_2 354 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 355 && BOOST_PP_ITERATION_FINISH_2 >= 355 +# define BOOST_PP_ITERATION_2 355 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 356 && BOOST_PP_ITERATION_FINISH_2 >= 356 +# define BOOST_PP_ITERATION_2 356 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 357 && BOOST_PP_ITERATION_FINISH_2 >= 357 +# define BOOST_PP_ITERATION_2 357 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 358 && BOOST_PP_ITERATION_FINISH_2 >= 358 +# define BOOST_PP_ITERATION_2 358 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 359 && BOOST_PP_ITERATION_FINISH_2 >= 359 +# define BOOST_PP_ITERATION_2 359 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 360 && BOOST_PP_ITERATION_FINISH_2 >= 360 +# define BOOST_PP_ITERATION_2 360 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 361 && BOOST_PP_ITERATION_FINISH_2 >= 361 +# define BOOST_PP_ITERATION_2 361 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 362 && BOOST_PP_ITERATION_FINISH_2 >= 362 +# define BOOST_PP_ITERATION_2 362 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 363 && BOOST_PP_ITERATION_FINISH_2 >= 363 +# define BOOST_PP_ITERATION_2 363 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 364 && BOOST_PP_ITERATION_FINISH_2 >= 364 +# define BOOST_PP_ITERATION_2 364 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 365 && BOOST_PP_ITERATION_FINISH_2 >= 365 +# define BOOST_PP_ITERATION_2 365 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 366 && BOOST_PP_ITERATION_FINISH_2 >= 366 +# define BOOST_PP_ITERATION_2 366 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 367 && BOOST_PP_ITERATION_FINISH_2 >= 367 +# define BOOST_PP_ITERATION_2 367 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 368 && BOOST_PP_ITERATION_FINISH_2 >= 368 +# define BOOST_PP_ITERATION_2 368 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 369 && BOOST_PP_ITERATION_FINISH_2 >= 369 +# define BOOST_PP_ITERATION_2 369 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 370 && BOOST_PP_ITERATION_FINISH_2 >= 370 +# define BOOST_PP_ITERATION_2 370 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 371 && BOOST_PP_ITERATION_FINISH_2 >= 371 +# define BOOST_PP_ITERATION_2 371 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 372 && BOOST_PP_ITERATION_FINISH_2 >= 372 +# define BOOST_PP_ITERATION_2 372 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 373 && BOOST_PP_ITERATION_FINISH_2 >= 373 +# define BOOST_PP_ITERATION_2 373 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 374 && BOOST_PP_ITERATION_FINISH_2 >= 374 +# define BOOST_PP_ITERATION_2 374 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 375 && BOOST_PP_ITERATION_FINISH_2 >= 375 +# define BOOST_PP_ITERATION_2 375 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 376 && BOOST_PP_ITERATION_FINISH_2 >= 376 +# define BOOST_PP_ITERATION_2 376 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 377 && BOOST_PP_ITERATION_FINISH_2 >= 377 +# define BOOST_PP_ITERATION_2 377 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 378 && BOOST_PP_ITERATION_FINISH_2 >= 378 +# define BOOST_PP_ITERATION_2 378 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 379 && BOOST_PP_ITERATION_FINISH_2 >= 379 +# define BOOST_PP_ITERATION_2 379 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 380 && BOOST_PP_ITERATION_FINISH_2 >= 380 +# define BOOST_PP_ITERATION_2 380 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 381 && BOOST_PP_ITERATION_FINISH_2 >= 381 +# define BOOST_PP_ITERATION_2 381 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 382 && BOOST_PP_ITERATION_FINISH_2 >= 382 +# define BOOST_PP_ITERATION_2 382 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 383 && BOOST_PP_ITERATION_FINISH_2 >= 383 +# define BOOST_PP_ITERATION_2 383 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 384 && BOOST_PP_ITERATION_FINISH_2 >= 384 +# define BOOST_PP_ITERATION_2 384 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 385 && BOOST_PP_ITERATION_FINISH_2 >= 385 +# define BOOST_PP_ITERATION_2 385 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 386 && BOOST_PP_ITERATION_FINISH_2 >= 386 +# define BOOST_PP_ITERATION_2 386 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 387 && BOOST_PP_ITERATION_FINISH_2 >= 387 +# define BOOST_PP_ITERATION_2 387 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 388 && BOOST_PP_ITERATION_FINISH_2 >= 388 +# define BOOST_PP_ITERATION_2 388 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 389 && BOOST_PP_ITERATION_FINISH_2 >= 389 +# define BOOST_PP_ITERATION_2 389 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 390 && BOOST_PP_ITERATION_FINISH_2 >= 390 +# define BOOST_PP_ITERATION_2 390 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 391 && BOOST_PP_ITERATION_FINISH_2 >= 391 +# define BOOST_PP_ITERATION_2 391 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 392 && BOOST_PP_ITERATION_FINISH_2 >= 392 +# define BOOST_PP_ITERATION_2 392 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 393 && BOOST_PP_ITERATION_FINISH_2 >= 393 +# define BOOST_PP_ITERATION_2 393 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 394 && BOOST_PP_ITERATION_FINISH_2 >= 394 +# define BOOST_PP_ITERATION_2 394 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 395 && BOOST_PP_ITERATION_FINISH_2 >= 395 +# define BOOST_PP_ITERATION_2 395 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 396 && BOOST_PP_ITERATION_FINISH_2 >= 396 +# define BOOST_PP_ITERATION_2 396 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 397 && BOOST_PP_ITERATION_FINISH_2 >= 397 +# define BOOST_PP_ITERATION_2 397 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 398 && BOOST_PP_ITERATION_FINISH_2 >= 398 +# define BOOST_PP_ITERATION_2 398 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 399 && BOOST_PP_ITERATION_FINISH_2 >= 399 +# define BOOST_PP_ITERATION_2 399 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 400 && BOOST_PP_ITERATION_FINISH_2 >= 400 +# define BOOST_PP_ITERATION_2 400 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 401 && BOOST_PP_ITERATION_FINISH_2 >= 401 +# define BOOST_PP_ITERATION_2 401 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 402 && BOOST_PP_ITERATION_FINISH_2 >= 402 +# define BOOST_PP_ITERATION_2 402 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 403 && BOOST_PP_ITERATION_FINISH_2 >= 403 +# define BOOST_PP_ITERATION_2 403 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 404 && BOOST_PP_ITERATION_FINISH_2 >= 404 +# define BOOST_PP_ITERATION_2 404 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 405 && BOOST_PP_ITERATION_FINISH_2 >= 405 +# define BOOST_PP_ITERATION_2 405 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 406 && BOOST_PP_ITERATION_FINISH_2 >= 406 +# define BOOST_PP_ITERATION_2 406 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 407 && BOOST_PP_ITERATION_FINISH_2 >= 407 +# define BOOST_PP_ITERATION_2 407 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 408 && BOOST_PP_ITERATION_FINISH_2 >= 408 +# define BOOST_PP_ITERATION_2 408 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 409 && BOOST_PP_ITERATION_FINISH_2 >= 409 +# define BOOST_PP_ITERATION_2 409 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 410 && BOOST_PP_ITERATION_FINISH_2 >= 410 +# define BOOST_PP_ITERATION_2 410 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 411 && BOOST_PP_ITERATION_FINISH_2 >= 411 +# define BOOST_PP_ITERATION_2 411 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 412 && BOOST_PP_ITERATION_FINISH_2 >= 412 +# define BOOST_PP_ITERATION_2 412 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 413 && BOOST_PP_ITERATION_FINISH_2 >= 413 +# define BOOST_PP_ITERATION_2 413 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 414 && BOOST_PP_ITERATION_FINISH_2 >= 414 +# define BOOST_PP_ITERATION_2 414 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 415 && BOOST_PP_ITERATION_FINISH_2 >= 415 +# define BOOST_PP_ITERATION_2 415 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 416 && BOOST_PP_ITERATION_FINISH_2 >= 416 +# define BOOST_PP_ITERATION_2 416 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 417 && BOOST_PP_ITERATION_FINISH_2 >= 417 +# define BOOST_PP_ITERATION_2 417 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 418 && BOOST_PP_ITERATION_FINISH_2 >= 418 +# define BOOST_PP_ITERATION_2 418 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 419 && BOOST_PP_ITERATION_FINISH_2 >= 419 +# define BOOST_PP_ITERATION_2 419 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 420 && BOOST_PP_ITERATION_FINISH_2 >= 420 +# define BOOST_PP_ITERATION_2 420 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 421 && BOOST_PP_ITERATION_FINISH_2 >= 421 +# define BOOST_PP_ITERATION_2 421 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 422 && BOOST_PP_ITERATION_FINISH_2 >= 422 +# define BOOST_PP_ITERATION_2 422 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 423 && BOOST_PP_ITERATION_FINISH_2 >= 423 +# define BOOST_PP_ITERATION_2 423 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 424 && BOOST_PP_ITERATION_FINISH_2 >= 424 +# define BOOST_PP_ITERATION_2 424 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 425 && BOOST_PP_ITERATION_FINISH_2 >= 425 +# define BOOST_PP_ITERATION_2 425 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 426 && BOOST_PP_ITERATION_FINISH_2 >= 426 +# define BOOST_PP_ITERATION_2 426 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 427 && BOOST_PP_ITERATION_FINISH_2 >= 427 +# define BOOST_PP_ITERATION_2 427 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 428 && BOOST_PP_ITERATION_FINISH_2 >= 428 +# define BOOST_PP_ITERATION_2 428 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 429 && BOOST_PP_ITERATION_FINISH_2 >= 429 +# define BOOST_PP_ITERATION_2 429 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 430 && BOOST_PP_ITERATION_FINISH_2 >= 430 +# define BOOST_PP_ITERATION_2 430 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 431 && BOOST_PP_ITERATION_FINISH_2 >= 431 +# define BOOST_PP_ITERATION_2 431 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 432 && BOOST_PP_ITERATION_FINISH_2 >= 432 +# define BOOST_PP_ITERATION_2 432 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 433 && BOOST_PP_ITERATION_FINISH_2 >= 433 +# define BOOST_PP_ITERATION_2 433 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 434 && BOOST_PP_ITERATION_FINISH_2 >= 434 +# define BOOST_PP_ITERATION_2 434 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 435 && BOOST_PP_ITERATION_FINISH_2 >= 435 +# define BOOST_PP_ITERATION_2 435 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 436 && BOOST_PP_ITERATION_FINISH_2 >= 436 +# define BOOST_PP_ITERATION_2 436 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 437 && BOOST_PP_ITERATION_FINISH_2 >= 437 +# define BOOST_PP_ITERATION_2 437 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 438 && BOOST_PP_ITERATION_FINISH_2 >= 438 +# define BOOST_PP_ITERATION_2 438 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 439 && BOOST_PP_ITERATION_FINISH_2 >= 439 +# define BOOST_PP_ITERATION_2 439 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 440 && BOOST_PP_ITERATION_FINISH_2 >= 440 +# define BOOST_PP_ITERATION_2 440 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 441 && BOOST_PP_ITERATION_FINISH_2 >= 441 +# define BOOST_PP_ITERATION_2 441 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 442 && BOOST_PP_ITERATION_FINISH_2 >= 442 +# define BOOST_PP_ITERATION_2 442 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 443 && BOOST_PP_ITERATION_FINISH_2 >= 443 +# define BOOST_PP_ITERATION_2 443 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 444 && BOOST_PP_ITERATION_FINISH_2 >= 444 +# define BOOST_PP_ITERATION_2 444 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 445 && BOOST_PP_ITERATION_FINISH_2 >= 445 +# define BOOST_PP_ITERATION_2 445 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 446 && BOOST_PP_ITERATION_FINISH_2 >= 446 +# define BOOST_PP_ITERATION_2 446 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 447 && BOOST_PP_ITERATION_FINISH_2 >= 447 +# define BOOST_PP_ITERATION_2 447 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 448 && BOOST_PP_ITERATION_FINISH_2 >= 448 +# define BOOST_PP_ITERATION_2 448 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 449 && BOOST_PP_ITERATION_FINISH_2 >= 449 +# define BOOST_PP_ITERATION_2 449 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 450 && BOOST_PP_ITERATION_FINISH_2 >= 450 +# define BOOST_PP_ITERATION_2 450 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 451 && BOOST_PP_ITERATION_FINISH_2 >= 451 +# define BOOST_PP_ITERATION_2 451 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 452 && BOOST_PP_ITERATION_FINISH_2 >= 452 +# define BOOST_PP_ITERATION_2 452 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 453 && BOOST_PP_ITERATION_FINISH_2 >= 453 +# define BOOST_PP_ITERATION_2 453 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 454 && BOOST_PP_ITERATION_FINISH_2 >= 454 +# define BOOST_PP_ITERATION_2 454 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 455 && BOOST_PP_ITERATION_FINISH_2 >= 455 +# define BOOST_PP_ITERATION_2 455 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 456 && BOOST_PP_ITERATION_FINISH_2 >= 456 +# define BOOST_PP_ITERATION_2 456 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 457 && BOOST_PP_ITERATION_FINISH_2 >= 457 +# define BOOST_PP_ITERATION_2 457 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 458 && BOOST_PP_ITERATION_FINISH_2 >= 458 +# define BOOST_PP_ITERATION_2 458 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 459 && BOOST_PP_ITERATION_FINISH_2 >= 459 +# define BOOST_PP_ITERATION_2 459 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 460 && BOOST_PP_ITERATION_FINISH_2 >= 460 +# define BOOST_PP_ITERATION_2 460 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 461 && BOOST_PP_ITERATION_FINISH_2 >= 461 +# define BOOST_PP_ITERATION_2 461 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 462 && BOOST_PP_ITERATION_FINISH_2 >= 462 +# define BOOST_PP_ITERATION_2 462 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 463 && BOOST_PP_ITERATION_FINISH_2 >= 463 +# define BOOST_PP_ITERATION_2 463 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 464 && BOOST_PP_ITERATION_FINISH_2 >= 464 +# define BOOST_PP_ITERATION_2 464 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 465 && BOOST_PP_ITERATION_FINISH_2 >= 465 +# define BOOST_PP_ITERATION_2 465 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 466 && BOOST_PP_ITERATION_FINISH_2 >= 466 +# define BOOST_PP_ITERATION_2 466 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 467 && BOOST_PP_ITERATION_FINISH_2 >= 467 +# define BOOST_PP_ITERATION_2 467 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 468 && BOOST_PP_ITERATION_FINISH_2 >= 468 +# define BOOST_PP_ITERATION_2 468 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 469 && BOOST_PP_ITERATION_FINISH_2 >= 469 +# define BOOST_PP_ITERATION_2 469 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 470 && BOOST_PP_ITERATION_FINISH_2 >= 470 +# define BOOST_PP_ITERATION_2 470 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 471 && BOOST_PP_ITERATION_FINISH_2 >= 471 +# define BOOST_PP_ITERATION_2 471 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 472 && BOOST_PP_ITERATION_FINISH_2 >= 472 +# define BOOST_PP_ITERATION_2 472 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 473 && BOOST_PP_ITERATION_FINISH_2 >= 473 +# define BOOST_PP_ITERATION_2 473 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 474 && BOOST_PP_ITERATION_FINISH_2 >= 474 +# define BOOST_PP_ITERATION_2 474 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 475 && BOOST_PP_ITERATION_FINISH_2 >= 475 +# define BOOST_PP_ITERATION_2 475 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 476 && BOOST_PP_ITERATION_FINISH_2 >= 476 +# define BOOST_PP_ITERATION_2 476 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 477 && BOOST_PP_ITERATION_FINISH_2 >= 477 +# define BOOST_PP_ITERATION_2 477 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 478 && BOOST_PP_ITERATION_FINISH_2 >= 478 +# define BOOST_PP_ITERATION_2 478 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 479 && BOOST_PP_ITERATION_FINISH_2 >= 479 +# define BOOST_PP_ITERATION_2 479 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 480 && BOOST_PP_ITERATION_FINISH_2 >= 480 +# define BOOST_PP_ITERATION_2 480 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 481 && BOOST_PP_ITERATION_FINISH_2 >= 481 +# define BOOST_PP_ITERATION_2 481 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 482 && BOOST_PP_ITERATION_FINISH_2 >= 482 +# define BOOST_PP_ITERATION_2 482 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 483 && BOOST_PP_ITERATION_FINISH_2 >= 483 +# define BOOST_PP_ITERATION_2 483 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 484 && BOOST_PP_ITERATION_FINISH_2 >= 484 +# define BOOST_PP_ITERATION_2 484 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 485 && BOOST_PP_ITERATION_FINISH_2 >= 485 +# define BOOST_PP_ITERATION_2 485 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 486 && BOOST_PP_ITERATION_FINISH_2 >= 486 +# define BOOST_PP_ITERATION_2 486 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 487 && BOOST_PP_ITERATION_FINISH_2 >= 487 +# define BOOST_PP_ITERATION_2 487 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 488 && BOOST_PP_ITERATION_FINISH_2 >= 488 +# define BOOST_PP_ITERATION_2 488 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 489 && BOOST_PP_ITERATION_FINISH_2 >= 489 +# define BOOST_PP_ITERATION_2 489 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 490 && BOOST_PP_ITERATION_FINISH_2 >= 490 +# define BOOST_PP_ITERATION_2 490 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 491 && BOOST_PP_ITERATION_FINISH_2 >= 491 +# define BOOST_PP_ITERATION_2 491 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 492 && BOOST_PP_ITERATION_FINISH_2 >= 492 +# define BOOST_PP_ITERATION_2 492 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 493 && BOOST_PP_ITERATION_FINISH_2 >= 493 +# define BOOST_PP_ITERATION_2 493 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 494 && BOOST_PP_ITERATION_FINISH_2 >= 494 +# define BOOST_PP_ITERATION_2 494 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 495 && BOOST_PP_ITERATION_FINISH_2 >= 495 +# define BOOST_PP_ITERATION_2 495 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 496 && BOOST_PP_ITERATION_FINISH_2 >= 496 +# define BOOST_PP_ITERATION_2 496 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 497 && BOOST_PP_ITERATION_FINISH_2 >= 497 +# define BOOST_PP_ITERATION_2 497 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 498 && BOOST_PP_ITERATION_FINISH_2 >= 498 +# define BOOST_PP_ITERATION_2 498 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 499 && BOOST_PP_ITERATION_FINISH_2 >= 499 +# define BOOST_PP_ITERATION_2 499 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 500 && BOOST_PP_ITERATION_FINISH_2 >= 500 +# define BOOST_PP_ITERATION_2 500 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 501 && BOOST_PP_ITERATION_FINISH_2 >= 501 +# define BOOST_PP_ITERATION_2 501 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 502 && BOOST_PP_ITERATION_FINISH_2 >= 502 +# define BOOST_PP_ITERATION_2 502 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 503 && BOOST_PP_ITERATION_FINISH_2 >= 503 +# define BOOST_PP_ITERATION_2 503 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 504 && BOOST_PP_ITERATION_FINISH_2 >= 504 +# define BOOST_PP_ITERATION_2 504 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 505 && BOOST_PP_ITERATION_FINISH_2 >= 505 +# define BOOST_PP_ITERATION_2 505 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 506 && BOOST_PP_ITERATION_FINISH_2 >= 506 +# define BOOST_PP_ITERATION_2 506 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 507 && BOOST_PP_ITERATION_FINISH_2 >= 507 +# define BOOST_PP_ITERATION_2 507 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 508 && BOOST_PP_ITERATION_FINISH_2 >= 508 +# define BOOST_PP_ITERATION_2 508 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 509 && BOOST_PP_ITERATION_FINISH_2 >= 509 +# define BOOST_PP_ITERATION_2 509 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 510 && BOOST_PP_ITERATION_FINISH_2 >= 510 +# define BOOST_PP_ITERATION_2 510 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 511 && BOOST_PP_ITERATION_FINISH_2 >= 511 +# define BOOST_PP_ITERATION_2 511 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_START_2 <= 512 && BOOST_PP_ITERATION_FINISH_2 >= 512 +# define BOOST_PP_ITERATION_2 512 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward3_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward3_1024.hpp new file mode 100644 index 000000000..aab1311a6 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward3_1024.hpp @@ -0,0 +1,2573 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * Distributed under the Boost Software License, Version 1.0. (See +# * accompanying file LICENSE_3_0.txt or copy at +# * http://www.boost.org/LICENSE_3_0.txt) +# * * +# ************************************************************************** */ +# +# /* Revised by Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_START_3 <= 513 && BOOST_PP_ITERATION_FINISH_3 >= 513 +# define BOOST_PP_ITERATION_3 513 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 514 && BOOST_PP_ITERATION_FINISH_3 >= 514 +# define BOOST_PP_ITERATION_3 514 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 515 && BOOST_PP_ITERATION_FINISH_3 >= 515 +# define BOOST_PP_ITERATION_3 515 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 516 && BOOST_PP_ITERATION_FINISH_3 >= 516 +# define BOOST_PP_ITERATION_3 516 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 517 && BOOST_PP_ITERATION_FINISH_3 >= 517 +# define BOOST_PP_ITERATION_3 517 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 518 && BOOST_PP_ITERATION_FINISH_3 >= 518 +# define BOOST_PP_ITERATION_3 518 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 519 && BOOST_PP_ITERATION_FINISH_3 >= 519 +# define BOOST_PP_ITERATION_3 519 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 520 && BOOST_PP_ITERATION_FINISH_3 >= 520 +# define BOOST_PP_ITERATION_3 520 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 521 && BOOST_PP_ITERATION_FINISH_3 >= 521 +# define BOOST_PP_ITERATION_3 521 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 522 && BOOST_PP_ITERATION_FINISH_3 >= 522 +# define BOOST_PP_ITERATION_3 522 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 523 && BOOST_PP_ITERATION_FINISH_3 >= 523 +# define BOOST_PP_ITERATION_3 523 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 524 && BOOST_PP_ITERATION_FINISH_3 >= 524 +# define BOOST_PP_ITERATION_3 524 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 525 && BOOST_PP_ITERATION_FINISH_3 >= 525 +# define BOOST_PP_ITERATION_3 525 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 526 && BOOST_PP_ITERATION_FINISH_3 >= 526 +# define BOOST_PP_ITERATION_3 526 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 527 && BOOST_PP_ITERATION_FINISH_3 >= 527 +# define BOOST_PP_ITERATION_3 527 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 528 && BOOST_PP_ITERATION_FINISH_3 >= 528 +# define BOOST_PP_ITERATION_3 528 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 529 && BOOST_PP_ITERATION_FINISH_3 >= 529 +# define BOOST_PP_ITERATION_3 529 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 530 && BOOST_PP_ITERATION_FINISH_3 >= 530 +# define BOOST_PP_ITERATION_3 530 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 531 && BOOST_PP_ITERATION_FINISH_3 >= 531 +# define BOOST_PP_ITERATION_3 531 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 532 && BOOST_PP_ITERATION_FINISH_3 >= 532 +# define BOOST_PP_ITERATION_3 532 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 533 && BOOST_PP_ITERATION_FINISH_3 >= 533 +# define BOOST_PP_ITERATION_3 533 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 534 && BOOST_PP_ITERATION_FINISH_3 >= 534 +# define BOOST_PP_ITERATION_3 534 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 535 && BOOST_PP_ITERATION_FINISH_3 >= 535 +# define BOOST_PP_ITERATION_3 535 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 536 && BOOST_PP_ITERATION_FINISH_3 >= 536 +# define BOOST_PP_ITERATION_3 536 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 537 && BOOST_PP_ITERATION_FINISH_3 >= 537 +# define BOOST_PP_ITERATION_3 537 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 538 && BOOST_PP_ITERATION_FINISH_3 >= 538 +# define BOOST_PP_ITERATION_3 538 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 539 && BOOST_PP_ITERATION_FINISH_3 >= 539 +# define BOOST_PP_ITERATION_3 539 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 540 && BOOST_PP_ITERATION_FINISH_3 >= 540 +# define BOOST_PP_ITERATION_3 540 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 541 && BOOST_PP_ITERATION_FINISH_3 >= 541 +# define BOOST_PP_ITERATION_3 541 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 542 && BOOST_PP_ITERATION_FINISH_3 >= 542 +# define BOOST_PP_ITERATION_3 542 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 543 && BOOST_PP_ITERATION_FINISH_3 >= 543 +# define BOOST_PP_ITERATION_3 543 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 544 && BOOST_PP_ITERATION_FINISH_3 >= 544 +# define BOOST_PP_ITERATION_3 544 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 545 && BOOST_PP_ITERATION_FINISH_3 >= 545 +# define BOOST_PP_ITERATION_3 545 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 546 && BOOST_PP_ITERATION_FINISH_3 >= 546 +# define BOOST_PP_ITERATION_3 546 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 547 && BOOST_PP_ITERATION_FINISH_3 >= 547 +# define BOOST_PP_ITERATION_3 547 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 548 && BOOST_PP_ITERATION_FINISH_3 >= 548 +# define BOOST_PP_ITERATION_3 548 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 549 && BOOST_PP_ITERATION_FINISH_3 >= 549 +# define BOOST_PP_ITERATION_3 549 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 550 && BOOST_PP_ITERATION_FINISH_3 >= 550 +# define BOOST_PP_ITERATION_3 550 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 551 && BOOST_PP_ITERATION_FINISH_3 >= 551 +# define BOOST_PP_ITERATION_3 551 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 552 && BOOST_PP_ITERATION_FINISH_3 >= 552 +# define BOOST_PP_ITERATION_3 552 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 553 && BOOST_PP_ITERATION_FINISH_3 >= 553 +# define BOOST_PP_ITERATION_3 553 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 554 && BOOST_PP_ITERATION_FINISH_3 >= 554 +# define BOOST_PP_ITERATION_3 554 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 555 && BOOST_PP_ITERATION_FINISH_3 >= 555 +# define BOOST_PP_ITERATION_3 555 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 556 && BOOST_PP_ITERATION_FINISH_3 >= 556 +# define BOOST_PP_ITERATION_3 556 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 557 && BOOST_PP_ITERATION_FINISH_3 >= 557 +# define BOOST_PP_ITERATION_3 557 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 558 && BOOST_PP_ITERATION_FINISH_3 >= 558 +# define BOOST_PP_ITERATION_3 558 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 559 && BOOST_PP_ITERATION_FINISH_3 >= 559 +# define BOOST_PP_ITERATION_3 559 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 560 && BOOST_PP_ITERATION_FINISH_3 >= 560 +# define BOOST_PP_ITERATION_3 560 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 561 && BOOST_PP_ITERATION_FINISH_3 >= 561 +# define BOOST_PP_ITERATION_3 561 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 562 && BOOST_PP_ITERATION_FINISH_3 >= 562 +# define BOOST_PP_ITERATION_3 562 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 563 && BOOST_PP_ITERATION_FINISH_3 >= 563 +# define BOOST_PP_ITERATION_3 563 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 564 && BOOST_PP_ITERATION_FINISH_3 >= 564 +# define BOOST_PP_ITERATION_3 564 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 565 && BOOST_PP_ITERATION_FINISH_3 >= 565 +# define BOOST_PP_ITERATION_3 565 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 566 && BOOST_PP_ITERATION_FINISH_3 >= 566 +# define BOOST_PP_ITERATION_3 566 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 567 && BOOST_PP_ITERATION_FINISH_3 >= 567 +# define BOOST_PP_ITERATION_3 567 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 568 && BOOST_PP_ITERATION_FINISH_3 >= 568 +# define BOOST_PP_ITERATION_3 568 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 569 && BOOST_PP_ITERATION_FINISH_3 >= 569 +# define BOOST_PP_ITERATION_3 569 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 570 && BOOST_PP_ITERATION_FINISH_3 >= 570 +# define BOOST_PP_ITERATION_3 570 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 571 && BOOST_PP_ITERATION_FINISH_3 >= 571 +# define BOOST_PP_ITERATION_3 571 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 572 && BOOST_PP_ITERATION_FINISH_3 >= 572 +# define BOOST_PP_ITERATION_3 572 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 573 && BOOST_PP_ITERATION_FINISH_3 >= 573 +# define BOOST_PP_ITERATION_3 573 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 574 && BOOST_PP_ITERATION_FINISH_3 >= 574 +# define BOOST_PP_ITERATION_3 574 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 575 && BOOST_PP_ITERATION_FINISH_3 >= 575 +# define BOOST_PP_ITERATION_3 575 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 576 && BOOST_PP_ITERATION_FINISH_3 >= 576 +# define BOOST_PP_ITERATION_3 576 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 577 && BOOST_PP_ITERATION_FINISH_3 >= 577 +# define BOOST_PP_ITERATION_3 577 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 578 && BOOST_PP_ITERATION_FINISH_3 >= 578 +# define BOOST_PP_ITERATION_3 578 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 579 && BOOST_PP_ITERATION_FINISH_3 >= 579 +# define BOOST_PP_ITERATION_3 579 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 580 && BOOST_PP_ITERATION_FINISH_3 >= 580 +# define BOOST_PP_ITERATION_3 580 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 581 && BOOST_PP_ITERATION_FINISH_3 >= 581 +# define BOOST_PP_ITERATION_3 581 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 582 && BOOST_PP_ITERATION_FINISH_3 >= 582 +# define BOOST_PP_ITERATION_3 582 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 583 && BOOST_PP_ITERATION_FINISH_3 >= 583 +# define BOOST_PP_ITERATION_3 583 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 584 && BOOST_PP_ITERATION_FINISH_3 >= 584 +# define BOOST_PP_ITERATION_3 584 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 585 && BOOST_PP_ITERATION_FINISH_3 >= 585 +# define BOOST_PP_ITERATION_3 585 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 586 && BOOST_PP_ITERATION_FINISH_3 >= 586 +# define BOOST_PP_ITERATION_3 586 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 587 && BOOST_PP_ITERATION_FINISH_3 >= 587 +# define BOOST_PP_ITERATION_3 587 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 588 && BOOST_PP_ITERATION_FINISH_3 >= 588 +# define BOOST_PP_ITERATION_3 588 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 589 && BOOST_PP_ITERATION_FINISH_3 >= 589 +# define BOOST_PP_ITERATION_3 589 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 590 && BOOST_PP_ITERATION_FINISH_3 >= 590 +# define BOOST_PP_ITERATION_3 590 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 591 && BOOST_PP_ITERATION_FINISH_3 >= 591 +# define BOOST_PP_ITERATION_3 591 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 592 && BOOST_PP_ITERATION_FINISH_3 >= 592 +# define BOOST_PP_ITERATION_3 592 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 593 && BOOST_PP_ITERATION_FINISH_3 >= 593 +# define BOOST_PP_ITERATION_3 593 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 594 && BOOST_PP_ITERATION_FINISH_3 >= 594 +# define BOOST_PP_ITERATION_3 594 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 595 && BOOST_PP_ITERATION_FINISH_3 >= 595 +# define BOOST_PP_ITERATION_3 595 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 596 && BOOST_PP_ITERATION_FINISH_3 >= 596 +# define BOOST_PP_ITERATION_3 596 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 597 && BOOST_PP_ITERATION_FINISH_3 >= 597 +# define BOOST_PP_ITERATION_3 597 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 598 && BOOST_PP_ITERATION_FINISH_3 >= 598 +# define BOOST_PP_ITERATION_3 598 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 599 && BOOST_PP_ITERATION_FINISH_3 >= 599 +# define BOOST_PP_ITERATION_3 599 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 600 && BOOST_PP_ITERATION_FINISH_3 >= 600 +# define BOOST_PP_ITERATION_3 600 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 601 && BOOST_PP_ITERATION_FINISH_3 >= 601 +# define BOOST_PP_ITERATION_3 601 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 602 && BOOST_PP_ITERATION_FINISH_3 >= 602 +# define BOOST_PP_ITERATION_3 602 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 603 && BOOST_PP_ITERATION_FINISH_3 >= 603 +# define BOOST_PP_ITERATION_3 603 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 604 && BOOST_PP_ITERATION_FINISH_3 >= 604 +# define BOOST_PP_ITERATION_3 604 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 605 && BOOST_PP_ITERATION_FINISH_3 >= 605 +# define BOOST_PP_ITERATION_3 605 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 606 && BOOST_PP_ITERATION_FINISH_3 >= 606 +# define BOOST_PP_ITERATION_3 606 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 607 && BOOST_PP_ITERATION_FINISH_3 >= 607 +# define BOOST_PP_ITERATION_3 607 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 608 && BOOST_PP_ITERATION_FINISH_3 >= 608 +# define BOOST_PP_ITERATION_3 608 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 609 && BOOST_PP_ITERATION_FINISH_3 >= 609 +# define BOOST_PP_ITERATION_3 609 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 610 && BOOST_PP_ITERATION_FINISH_3 >= 610 +# define BOOST_PP_ITERATION_3 610 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 611 && BOOST_PP_ITERATION_FINISH_3 >= 611 +# define BOOST_PP_ITERATION_3 611 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 612 && BOOST_PP_ITERATION_FINISH_3 >= 612 +# define BOOST_PP_ITERATION_3 612 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 613 && BOOST_PP_ITERATION_FINISH_3 >= 613 +# define BOOST_PP_ITERATION_3 613 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 614 && BOOST_PP_ITERATION_FINISH_3 >= 614 +# define BOOST_PP_ITERATION_3 614 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 615 && BOOST_PP_ITERATION_FINISH_3 >= 615 +# define BOOST_PP_ITERATION_3 615 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 616 && BOOST_PP_ITERATION_FINISH_3 >= 616 +# define BOOST_PP_ITERATION_3 616 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 617 && BOOST_PP_ITERATION_FINISH_3 >= 617 +# define BOOST_PP_ITERATION_3 617 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 618 && BOOST_PP_ITERATION_FINISH_3 >= 618 +# define BOOST_PP_ITERATION_3 618 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 619 && BOOST_PP_ITERATION_FINISH_3 >= 619 +# define BOOST_PP_ITERATION_3 619 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 620 && BOOST_PP_ITERATION_FINISH_3 >= 620 +# define BOOST_PP_ITERATION_3 620 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 621 && BOOST_PP_ITERATION_FINISH_3 >= 621 +# define BOOST_PP_ITERATION_3 621 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 622 && BOOST_PP_ITERATION_FINISH_3 >= 622 +# define BOOST_PP_ITERATION_3 622 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 623 && BOOST_PP_ITERATION_FINISH_3 >= 623 +# define BOOST_PP_ITERATION_3 623 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 624 && BOOST_PP_ITERATION_FINISH_3 >= 624 +# define BOOST_PP_ITERATION_3 624 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 625 && BOOST_PP_ITERATION_FINISH_3 >= 625 +# define BOOST_PP_ITERATION_3 625 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 626 && BOOST_PP_ITERATION_FINISH_3 >= 626 +# define BOOST_PP_ITERATION_3 626 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 627 && BOOST_PP_ITERATION_FINISH_3 >= 627 +# define BOOST_PP_ITERATION_3 627 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 628 && BOOST_PP_ITERATION_FINISH_3 >= 628 +# define BOOST_PP_ITERATION_3 628 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 629 && BOOST_PP_ITERATION_FINISH_3 >= 629 +# define BOOST_PP_ITERATION_3 629 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 630 && BOOST_PP_ITERATION_FINISH_3 >= 630 +# define BOOST_PP_ITERATION_3 630 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 631 && BOOST_PP_ITERATION_FINISH_3 >= 631 +# define BOOST_PP_ITERATION_3 631 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 632 && BOOST_PP_ITERATION_FINISH_3 >= 632 +# define BOOST_PP_ITERATION_3 632 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 633 && BOOST_PP_ITERATION_FINISH_3 >= 633 +# define BOOST_PP_ITERATION_3 633 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 634 && BOOST_PP_ITERATION_FINISH_3 >= 634 +# define BOOST_PP_ITERATION_3 634 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 635 && BOOST_PP_ITERATION_FINISH_3 >= 635 +# define BOOST_PP_ITERATION_3 635 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 636 && BOOST_PP_ITERATION_FINISH_3 >= 636 +# define BOOST_PP_ITERATION_3 636 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 637 && BOOST_PP_ITERATION_FINISH_3 >= 637 +# define BOOST_PP_ITERATION_3 637 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 638 && BOOST_PP_ITERATION_FINISH_3 >= 638 +# define BOOST_PP_ITERATION_3 638 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 639 && BOOST_PP_ITERATION_FINISH_3 >= 639 +# define BOOST_PP_ITERATION_3 639 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 640 && BOOST_PP_ITERATION_FINISH_3 >= 640 +# define BOOST_PP_ITERATION_3 640 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 641 && BOOST_PP_ITERATION_FINISH_3 >= 641 +# define BOOST_PP_ITERATION_3 641 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 642 && BOOST_PP_ITERATION_FINISH_3 >= 642 +# define BOOST_PP_ITERATION_3 642 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 643 && BOOST_PP_ITERATION_FINISH_3 >= 643 +# define BOOST_PP_ITERATION_3 643 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 644 && BOOST_PP_ITERATION_FINISH_3 >= 644 +# define BOOST_PP_ITERATION_3 644 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 645 && BOOST_PP_ITERATION_FINISH_3 >= 645 +# define BOOST_PP_ITERATION_3 645 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 646 && BOOST_PP_ITERATION_FINISH_3 >= 646 +# define BOOST_PP_ITERATION_3 646 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 647 && BOOST_PP_ITERATION_FINISH_3 >= 647 +# define BOOST_PP_ITERATION_3 647 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 648 && BOOST_PP_ITERATION_FINISH_3 >= 648 +# define BOOST_PP_ITERATION_3 648 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 649 && BOOST_PP_ITERATION_FINISH_3 >= 649 +# define BOOST_PP_ITERATION_3 649 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 650 && BOOST_PP_ITERATION_FINISH_3 >= 650 +# define BOOST_PP_ITERATION_3 650 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 651 && BOOST_PP_ITERATION_FINISH_3 >= 651 +# define BOOST_PP_ITERATION_3 651 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 652 && BOOST_PP_ITERATION_FINISH_3 >= 652 +# define BOOST_PP_ITERATION_3 652 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 653 && BOOST_PP_ITERATION_FINISH_3 >= 653 +# define BOOST_PP_ITERATION_3 653 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 654 && BOOST_PP_ITERATION_FINISH_3 >= 654 +# define BOOST_PP_ITERATION_3 654 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 655 && BOOST_PP_ITERATION_FINISH_3 >= 655 +# define BOOST_PP_ITERATION_3 655 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 656 && BOOST_PP_ITERATION_FINISH_3 >= 656 +# define BOOST_PP_ITERATION_3 656 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 657 && BOOST_PP_ITERATION_FINISH_3 >= 657 +# define BOOST_PP_ITERATION_3 657 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 658 && BOOST_PP_ITERATION_FINISH_3 >= 658 +# define BOOST_PP_ITERATION_3 658 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 659 && BOOST_PP_ITERATION_FINISH_3 >= 659 +# define BOOST_PP_ITERATION_3 659 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 660 && BOOST_PP_ITERATION_FINISH_3 >= 660 +# define BOOST_PP_ITERATION_3 660 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 661 && BOOST_PP_ITERATION_FINISH_3 >= 661 +# define BOOST_PP_ITERATION_3 661 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 662 && BOOST_PP_ITERATION_FINISH_3 >= 662 +# define BOOST_PP_ITERATION_3 662 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 663 && BOOST_PP_ITERATION_FINISH_3 >= 663 +# define BOOST_PP_ITERATION_3 663 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 664 && BOOST_PP_ITERATION_FINISH_3 >= 664 +# define BOOST_PP_ITERATION_3 664 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 665 && BOOST_PP_ITERATION_FINISH_3 >= 665 +# define BOOST_PP_ITERATION_3 665 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 666 && BOOST_PP_ITERATION_FINISH_3 >= 666 +# define BOOST_PP_ITERATION_3 666 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 667 && BOOST_PP_ITERATION_FINISH_3 >= 667 +# define BOOST_PP_ITERATION_3 667 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 668 && BOOST_PP_ITERATION_FINISH_3 >= 668 +# define BOOST_PP_ITERATION_3 668 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 669 && BOOST_PP_ITERATION_FINISH_3 >= 669 +# define BOOST_PP_ITERATION_3 669 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 670 && BOOST_PP_ITERATION_FINISH_3 >= 670 +# define BOOST_PP_ITERATION_3 670 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 671 && BOOST_PP_ITERATION_FINISH_3 >= 671 +# define BOOST_PP_ITERATION_3 671 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 672 && BOOST_PP_ITERATION_FINISH_3 >= 672 +# define BOOST_PP_ITERATION_3 672 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 673 && BOOST_PP_ITERATION_FINISH_3 >= 673 +# define BOOST_PP_ITERATION_3 673 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 674 && BOOST_PP_ITERATION_FINISH_3 >= 674 +# define BOOST_PP_ITERATION_3 674 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 675 && BOOST_PP_ITERATION_FINISH_3 >= 675 +# define BOOST_PP_ITERATION_3 675 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 676 && BOOST_PP_ITERATION_FINISH_3 >= 676 +# define BOOST_PP_ITERATION_3 676 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 677 && BOOST_PP_ITERATION_FINISH_3 >= 677 +# define BOOST_PP_ITERATION_3 677 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 678 && BOOST_PP_ITERATION_FINISH_3 >= 678 +# define BOOST_PP_ITERATION_3 678 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 679 && BOOST_PP_ITERATION_FINISH_3 >= 679 +# define BOOST_PP_ITERATION_3 679 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 680 && BOOST_PP_ITERATION_FINISH_3 >= 680 +# define BOOST_PP_ITERATION_3 680 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 681 && BOOST_PP_ITERATION_FINISH_3 >= 681 +# define BOOST_PP_ITERATION_3 681 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 682 && BOOST_PP_ITERATION_FINISH_3 >= 682 +# define BOOST_PP_ITERATION_3 682 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 683 && BOOST_PP_ITERATION_FINISH_3 >= 683 +# define BOOST_PP_ITERATION_3 683 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 684 && BOOST_PP_ITERATION_FINISH_3 >= 684 +# define BOOST_PP_ITERATION_3 684 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 685 && BOOST_PP_ITERATION_FINISH_3 >= 685 +# define BOOST_PP_ITERATION_3 685 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 686 && BOOST_PP_ITERATION_FINISH_3 >= 686 +# define BOOST_PP_ITERATION_3 686 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 687 && BOOST_PP_ITERATION_FINISH_3 >= 687 +# define BOOST_PP_ITERATION_3 687 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 688 && BOOST_PP_ITERATION_FINISH_3 >= 688 +# define BOOST_PP_ITERATION_3 688 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 689 && BOOST_PP_ITERATION_FINISH_3 >= 689 +# define BOOST_PP_ITERATION_3 689 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 690 && BOOST_PP_ITERATION_FINISH_3 >= 690 +# define BOOST_PP_ITERATION_3 690 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 691 && BOOST_PP_ITERATION_FINISH_3 >= 691 +# define BOOST_PP_ITERATION_3 691 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 692 && BOOST_PP_ITERATION_FINISH_3 >= 692 +# define BOOST_PP_ITERATION_3 692 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 693 && BOOST_PP_ITERATION_FINISH_3 >= 693 +# define BOOST_PP_ITERATION_3 693 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 694 && BOOST_PP_ITERATION_FINISH_3 >= 694 +# define BOOST_PP_ITERATION_3 694 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 695 && BOOST_PP_ITERATION_FINISH_3 >= 695 +# define BOOST_PP_ITERATION_3 695 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 696 && BOOST_PP_ITERATION_FINISH_3 >= 696 +# define BOOST_PP_ITERATION_3 696 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 697 && BOOST_PP_ITERATION_FINISH_3 >= 697 +# define BOOST_PP_ITERATION_3 697 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 698 && BOOST_PP_ITERATION_FINISH_3 >= 698 +# define BOOST_PP_ITERATION_3 698 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 699 && BOOST_PP_ITERATION_FINISH_3 >= 699 +# define BOOST_PP_ITERATION_3 699 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 700 && BOOST_PP_ITERATION_FINISH_3 >= 700 +# define BOOST_PP_ITERATION_3 700 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 701 && BOOST_PP_ITERATION_FINISH_3 >= 701 +# define BOOST_PP_ITERATION_3 701 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 702 && BOOST_PP_ITERATION_FINISH_3 >= 702 +# define BOOST_PP_ITERATION_3 702 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 703 && BOOST_PP_ITERATION_FINISH_3 >= 703 +# define BOOST_PP_ITERATION_3 703 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 704 && BOOST_PP_ITERATION_FINISH_3 >= 704 +# define BOOST_PP_ITERATION_3 704 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 705 && BOOST_PP_ITERATION_FINISH_3 >= 705 +# define BOOST_PP_ITERATION_3 705 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 706 && BOOST_PP_ITERATION_FINISH_3 >= 706 +# define BOOST_PP_ITERATION_3 706 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 707 && BOOST_PP_ITERATION_FINISH_3 >= 707 +# define BOOST_PP_ITERATION_3 707 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 708 && BOOST_PP_ITERATION_FINISH_3 >= 708 +# define BOOST_PP_ITERATION_3 708 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 709 && BOOST_PP_ITERATION_FINISH_3 >= 709 +# define BOOST_PP_ITERATION_3 709 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 710 && BOOST_PP_ITERATION_FINISH_3 >= 710 +# define BOOST_PP_ITERATION_3 710 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 711 && BOOST_PP_ITERATION_FINISH_3 >= 711 +# define BOOST_PP_ITERATION_3 711 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 712 && BOOST_PP_ITERATION_FINISH_3 >= 712 +# define BOOST_PP_ITERATION_3 712 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 713 && BOOST_PP_ITERATION_FINISH_3 >= 713 +# define BOOST_PP_ITERATION_3 713 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 714 && BOOST_PP_ITERATION_FINISH_3 >= 714 +# define BOOST_PP_ITERATION_3 714 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 715 && BOOST_PP_ITERATION_FINISH_3 >= 715 +# define BOOST_PP_ITERATION_3 715 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 716 && BOOST_PP_ITERATION_FINISH_3 >= 716 +# define BOOST_PP_ITERATION_3 716 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 717 && BOOST_PP_ITERATION_FINISH_3 >= 717 +# define BOOST_PP_ITERATION_3 717 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 718 && BOOST_PP_ITERATION_FINISH_3 >= 718 +# define BOOST_PP_ITERATION_3 718 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 719 && BOOST_PP_ITERATION_FINISH_3 >= 719 +# define BOOST_PP_ITERATION_3 719 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 720 && BOOST_PP_ITERATION_FINISH_3 >= 720 +# define BOOST_PP_ITERATION_3 720 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 721 && BOOST_PP_ITERATION_FINISH_3 >= 721 +# define BOOST_PP_ITERATION_3 721 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 722 && BOOST_PP_ITERATION_FINISH_3 >= 722 +# define BOOST_PP_ITERATION_3 722 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 723 && BOOST_PP_ITERATION_FINISH_3 >= 723 +# define BOOST_PP_ITERATION_3 723 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 724 && BOOST_PP_ITERATION_FINISH_3 >= 724 +# define BOOST_PP_ITERATION_3 724 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 725 && BOOST_PP_ITERATION_FINISH_3 >= 725 +# define BOOST_PP_ITERATION_3 725 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 726 && BOOST_PP_ITERATION_FINISH_3 >= 726 +# define BOOST_PP_ITERATION_3 726 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 727 && BOOST_PP_ITERATION_FINISH_3 >= 727 +# define BOOST_PP_ITERATION_3 727 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 728 && BOOST_PP_ITERATION_FINISH_3 >= 728 +# define BOOST_PP_ITERATION_3 728 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 729 && BOOST_PP_ITERATION_FINISH_3 >= 729 +# define BOOST_PP_ITERATION_3 729 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 730 && BOOST_PP_ITERATION_FINISH_3 >= 730 +# define BOOST_PP_ITERATION_3 730 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 731 && BOOST_PP_ITERATION_FINISH_3 >= 731 +# define BOOST_PP_ITERATION_3 731 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 732 && BOOST_PP_ITERATION_FINISH_3 >= 732 +# define BOOST_PP_ITERATION_3 732 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 733 && BOOST_PP_ITERATION_FINISH_3 >= 733 +# define BOOST_PP_ITERATION_3 733 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 734 && BOOST_PP_ITERATION_FINISH_3 >= 734 +# define BOOST_PP_ITERATION_3 734 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 735 && BOOST_PP_ITERATION_FINISH_3 >= 735 +# define BOOST_PP_ITERATION_3 735 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 736 && BOOST_PP_ITERATION_FINISH_3 >= 736 +# define BOOST_PP_ITERATION_3 736 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 737 && BOOST_PP_ITERATION_FINISH_3 >= 737 +# define BOOST_PP_ITERATION_3 737 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 738 && BOOST_PP_ITERATION_FINISH_3 >= 738 +# define BOOST_PP_ITERATION_3 738 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 739 && BOOST_PP_ITERATION_FINISH_3 >= 739 +# define BOOST_PP_ITERATION_3 739 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 740 && BOOST_PP_ITERATION_FINISH_3 >= 740 +# define BOOST_PP_ITERATION_3 740 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 741 && BOOST_PP_ITERATION_FINISH_3 >= 741 +# define BOOST_PP_ITERATION_3 741 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 742 && BOOST_PP_ITERATION_FINISH_3 >= 742 +# define BOOST_PP_ITERATION_3 742 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 743 && BOOST_PP_ITERATION_FINISH_3 >= 743 +# define BOOST_PP_ITERATION_3 743 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 744 && BOOST_PP_ITERATION_FINISH_3 >= 744 +# define BOOST_PP_ITERATION_3 744 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 745 && BOOST_PP_ITERATION_FINISH_3 >= 745 +# define BOOST_PP_ITERATION_3 745 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 746 && BOOST_PP_ITERATION_FINISH_3 >= 746 +# define BOOST_PP_ITERATION_3 746 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 747 && BOOST_PP_ITERATION_FINISH_3 >= 747 +# define BOOST_PP_ITERATION_3 747 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 748 && BOOST_PP_ITERATION_FINISH_3 >= 748 +# define BOOST_PP_ITERATION_3 748 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 749 && BOOST_PP_ITERATION_FINISH_3 >= 749 +# define BOOST_PP_ITERATION_3 749 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 750 && BOOST_PP_ITERATION_FINISH_3 >= 750 +# define BOOST_PP_ITERATION_3 750 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 751 && BOOST_PP_ITERATION_FINISH_3 >= 751 +# define BOOST_PP_ITERATION_3 751 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 752 && BOOST_PP_ITERATION_FINISH_3 >= 752 +# define BOOST_PP_ITERATION_3 752 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 753 && BOOST_PP_ITERATION_FINISH_3 >= 753 +# define BOOST_PP_ITERATION_3 753 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 754 && BOOST_PP_ITERATION_FINISH_3 >= 754 +# define BOOST_PP_ITERATION_3 754 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 755 && BOOST_PP_ITERATION_FINISH_3 >= 755 +# define BOOST_PP_ITERATION_3 755 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 756 && BOOST_PP_ITERATION_FINISH_3 >= 756 +# define BOOST_PP_ITERATION_3 756 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 757 && BOOST_PP_ITERATION_FINISH_3 >= 757 +# define BOOST_PP_ITERATION_3 757 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 758 && BOOST_PP_ITERATION_FINISH_3 >= 758 +# define BOOST_PP_ITERATION_3 758 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 759 && BOOST_PP_ITERATION_FINISH_3 >= 759 +# define BOOST_PP_ITERATION_3 759 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 760 && BOOST_PP_ITERATION_FINISH_3 >= 760 +# define BOOST_PP_ITERATION_3 760 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 761 && BOOST_PP_ITERATION_FINISH_3 >= 761 +# define BOOST_PP_ITERATION_3 761 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 762 && BOOST_PP_ITERATION_FINISH_3 >= 762 +# define BOOST_PP_ITERATION_3 762 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 763 && BOOST_PP_ITERATION_FINISH_3 >= 763 +# define BOOST_PP_ITERATION_3 763 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 764 && BOOST_PP_ITERATION_FINISH_3 >= 764 +# define BOOST_PP_ITERATION_3 764 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 765 && BOOST_PP_ITERATION_FINISH_3 >= 765 +# define BOOST_PP_ITERATION_3 765 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 766 && BOOST_PP_ITERATION_FINISH_3 >= 766 +# define BOOST_PP_ITERATION_3 766 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 767 && BOOST_PP_ITERATION_FINISH_3 >= 767 +# define BOOST_PP_ITERATION_3 767 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 768 && BOOST_PP_ITERATION_FINISH_3 >= 768 +# define BOOST_PP_ITERATION_3 768 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 769 && BOOST_PP_ITERATION_FINISH_3 >= 769 +# define BOOST_PP_ITERATION_3 769 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 770 && BOOST_PP_ITERATION_FINISH_3 >= 770 +# define BOOST_PP_ITERATION_3 770 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 771 && BOOST_PP_ITERATION_FINISH_3 >= 771 +# define BOOST_PP_ITERATION_3 771 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 772 && BOOST_PP_ITERATION_FINISH_3 >= 772 +# define BOOST_PP_ITERATION_3 772 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 773 && BOOST_PP_ITERATION_FINISH_3 >= 773 +# define BOOST_PP_ITERATION_3 773 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 774 && BOOST_PP_ITERATION_FINISH_3 >= 774 +# define BOOST_PP_ITERATION_3 774 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 775 && BOOST_PP_ITERATION_FINISH_3 >= 775 +# define BOOST_PP_ITERATION_3 775 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 776 && BOOST_PP_ITERATION_FINISH_3 >= 776 +# define BOOST_PP_ITERATION_3 776 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 777 && BOOST_PP_ITERATION_FINISH_3 >= 777 +# define BOOST_PP_ITERATION_3 777 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 778 && BOOST_PP_ITERATION_FINISH_3 >= 778 +# define BOOST_PP_ITERATION_3 778 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 779 && BOOST_PP_ITERATION_FINISH_3 >= 779 +# define BOOST_PP_ITERATION_3 779 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 780 && BOOST_PP_ITERATION_FINISH_3 >= 780 +# define BOOST_PP_ITERATION_3 780 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 781 && BOOST_PP_ITERATION_FINISH_3 >= 781 +# define BOOST_PP_ITERATION_3 781 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 782 && BOOST_PP_ITERATION_FINISH_3 >= 782 +# define BOOST_PP_ITERATION_3 782 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 783 && BOOST_PP_ITERATION_FINISH_3 >= 783 +# define BOOST_PP_ITERATION_3 783 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 784 && BOOST_PP_ITERATION_FINISH_3 >= 784 +# define BOOST_PP_ITERATION_3 784 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 785 && BOOST_PP_ITERATION_FINISH_3 >= 785 +# define BOOST_PP_ITERATION_3 785 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 786 && BOOST_PP_ITERATION_FINISH_3 >= 786 +# define BOOST_PP_ITERATION_3 786 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 787 && BOOST_PP_ITERATION_FINISH_3 >= 787 +# define BOOST_PP_ITERATION_3 787 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 788 && BOOST_PP_ITERATION_FINISH_3 >= 788 +# define BOOST_PP_ITERATION_3 788 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 789 && BOOST_PP_ITERATION_FINISH_3 >= 789 +# define BOOST_PP_ITERATION_3 789 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 790 && BOOST_PP_ITERATION_FINISH_3 >= 790 +# define BOOST_PP_ITERATION_3 790 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 791 && BOOST_PP_ITERATION_FINISH_3 >= 791 +# define BOOST_PP_ITERATION_3 791 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 792 && BOOST_PP_ITERATION_FINISH_3 >= 792 +# define BOOST_PP_ITERATION_3 792 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 793 && BOOST_PP_ITERATION_FINISH_3 >= 793 +# define BOOST_PP_ITERATION_3 793 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 794 && BOOST_PP_ITERATION_FINISH_3 >= 794 +# define BOOST_PP_ITERATION_3 794 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 795 && BOOST_PP_ITERATION_FINISH_3 >= 795 +# define BOOST_PP_ITERATION_3 795 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 796 && BOOST_PP_ITERATION_FINISH_3 >= 796 +# define BOOST_PP_ITERATION_3 796 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 797 && BOOST_PP_ITERATION_FINISH_3 >= 797 +# define BOOST_PP_ITERATION_3 797 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 798 && BOOST_PP_ITERATION_FINISH_3 >= 798 +# define BOOST_PP_ITERATION_3 798 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 799 && BOOST_PP_ITERATION_FINISH_3 >= 799 +# define BOOST_PP_ITERATION_3 799 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 800 && BOOST_PP_ITERATION_FINISH_3 >= 800 +# define BOOST_PP_ITERATION_3 800 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 801 && BOOST_PP_ITERATION_FINISH_3 >= 801 +# define BOOST_PP_ITERATION_3 801 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 802 && BOOST_PP_ITERATION_FINISH_3 >= 802 +# define BOOST_PP_ITERATION_3 802 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 803 && BOOST_PP_ITERATION_FINISH_3 >= 803 +# define BOOST_PP_ITERATION_3 803 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 804 && BOOST_PP_ITERATION_FINISH_3 >= 804 +# define BOOST_PP_ITERATION_3 804 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 805 && BOOST_PP_ITERATION_FINISH_3 >= 805 +# define BOOST_PP_ITERATION_3 805 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 806 && BOOST_PP_ITERATION_FINISH_3 >= 806 +# define BOOST_PP_ITERATION_3 806 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 807 && BOOST_PP_ITERATION_FINISH_3 >= 807 +# define BOOST_PP_ITERATION_3 807 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 808 && BOOST_PP_ITERATION_FINISH_3 >= 808 +# define BOOST_PP_ITERATION_3 808 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 809 && BOOST_PP_ITERATION_FINISH_3 >= 809 +# define BOOST_PP_ITERATION_3 809 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 810 && BOOST_PP_ITERATION_FINISH_3 >= 810 +# define BOOST_PP_ITERATION_3 810 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 811 && BOOST_PP_ITERATION_FINISH_3 >= 811 +# define BOOST_PP_ITERATION_3 811 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 812 && BOOST_PP_ITERATION_FINISH_3 >= 812 +# define BOOST_PP_ITERATION_3 812 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 813 && BOOST_PP_ITERATION_FINISH_3 >= 813 +# define BOOST_PP_ITERATION_3 813 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 814 && BOOST_PP_ITERATION_FINISH_3 >= 814 +# define BOOST_PP_ITERATION_3 814 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 815 && BOOST_PP_ITERATION_FINISH_3 >= 815 +# define BOOST_PP_ITERATION_3 815 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 816 && BOOST_PP_ITERATION_FINISH_3 >= 816 +# define BOOST_PP_ITERATION_3 816 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 817 && BOOST_PP_ITERATION_FINISH_3 >= 817 +# define BOOST_PP_ITERATION_3 817 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 818 && BOOST_PP_ITERATION_FINISH_3 >= 818 +# define BOOST_PP_ITERATION_3 818 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 819 && BOOST_PP_ITERATION_FINISH_3 >= 819 +# define BOOST_PP_ITERATION_3 819 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 820 && BOOST_PP_ITERATION_FINISH_3 >= 820 +# define BOOST_PP_ITERATION_3 820 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 821 && BOOST_PP_ITERATION_FINISH_3 >= 821 +# define BOOST_PP_ITERATION_3 821 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 822 && BOOST_PP_ITERATION_FINISH_3 >= 822 +# define BOOST_PP_ITERATION_3 822 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 823 && BOOST_PP_ITERATION_FINISH_3 >= 823 +# define BOOST_PP_ITERATION_3 823 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 824 && BOOST_PP_ITERATION_FINISH_3 >= 824 +# define BOOST_PP_ITERATION_3 824 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 825 && BOOST_PP_ITERATION_FINISH_3 >= 825 +# define BOOST_PP_ITERATION_3 825 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 826 && BOOST_PP_ITERATION_FINISH_3 >= 826 +# define BOOST_PP_ITERATION_3 826 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 827 && BOOST_PP_ITERATION_FINISH_3 >= 827 +# define BOOST_PP_ITERATION_3 827 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 828 && BOOST_PP_ITERATION_FINISH_3 >= 828 +# define BOOST_PP_ITERATION_3 828 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 829 && BOOST_PP_ITERATION_FINISH_3 >= 829 +# define BOOST_PP_ITERATION_3 829 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 830 && BOOST_PP_ITERATION_FINISH_3 >= 830 +# define BOOST_PP_ITERATION_3 830 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 831 && BOOST_PP_ITERATION_FINISH_3 >= 831 +# define BOOST_PP_ITERATION_3 831 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 832 && BOOST_PP_ITERATION_FINISH_3 >= 832 +# define BOOST_PP_ITERATION_3 832 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 833 && BOOST_PP_ITERATION_FINISH_3 >= 833 +# define BOOST_PP_ITERATION_3 833 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 834 && BOOST_PP_ITERATION_FINISH_3 >= 834 +# define BOOST_PP_ITERATION_3 834 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 835 && BOOST_PP_ITERATION_FINISH_3 >= 835 +# define BOOST_PP_ITERATION_3 835 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 836 && BOOST_PP_ITERATION_FINISH_3 >= 836 +# define BOOST_PP_ITERATION_3 836 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 837 && BOOST_PP_ITERATION_FINISH_3 >= 837 +# define BOOST_PP_ITERATION_3 837 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 838 && BOOST_PP_ITERATION_FINISH_3 >= 838 +# define BOOST_PP_ITERATION_3 838 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 839 && BOOST_PP_ITERATION_FINISH_3 >= 839 +# define BOOST_PP_ITERATION_3 839 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 840 && BOOST_PP_ITERATION_FINISH_3 >= 840 +# define BOOST_PP_ITERATION_3 840 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 841 && BOOST_PP_ITERATION_FINISH_3 >= 841 +# define BOOST_PP_ITERATION_3 841 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 842 && BOOST_PP_ITERATION_FINISH_3 >= 842 +# define BOOST_PP_ITERATION_3 842 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 843 && BOOST_PP_ITERATION_FINISH_3 >= 843 +# define BOOST_PP_ITERATION_3 843 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 844 && BOOST_PP_ITERATION_FINISH_3 >= 844 +# define BOOST_PP_ITERATION_3 844 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 845 && BOOST_PP_ITERATION_FINISH_3 >= 845 +# define BOOST_PP_ITERATION_3 845 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 846 && BOOST_PP_ITERATION_FINISH_3 >= 846 +# define BOOST_PP_ITERATION_3 846 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 847 && BOOST_PP_ITERATION_FINISH_3 >= 847 +# define BOOST_PP_ITERATION_3 847 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 848 && BOOST_PP_ITERATION_FINISH_3 >= 848 +# define BOOST_PP_ITERATION_3 848 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 849 && BOOST_PP_ITERATION_FINISH_3 >= 849 +# define BOOST_PP_ITERATION_3 849 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 850 && BOOST_PP_ITERATION_FINISH_3 >= 850 +# define BOOST_PP_ITERATION_3 850 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 851 && BOOST_PP_ITERATION_FINISH_3 >= 851 +# define BOOST_PP_ITERATION_3 851 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 852 && BOOST_PP_ITERATION_FINISH_3 >= 852 +# define BOOST_PP_ITERATION_3 852 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 853 && BOOST_PP_ITERATION_FINISH_3 >= 853 +# define BOOST_PP_ITERATION_3 853 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 854 && BOOST_PP_ITERATION_FINISH_3 >= 854 +# define BOOST_PP_ITERATION_3 854 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 855 && BOOST_PP_ITERATION_FINISH_3 >= 855 +# define BOOST_PP_ITERATION_3 855 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 856 && BOOST_PP_ITERATION_FINISH_3 >= 856 +# define BOOST_PP_ITERATION_3 856 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 857 && BOOST_PP_ITERATION_FINISH_3 >= 857 +# define BOOST_PP_ITERATION_3 857 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 858 && BOOST_PP_ITERATION_FINISH_3 >= 858 +# define BOOST_PP_ITERATION_3 858 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 859 && BOOST_PP_ITERATION_FINISH_3 >= 859 +# define BOOST_PP_ITERATION_3 859 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 860 && BOOST_PP_ITERATION_FINISH_3 >= 860 +# define BOOST_PP_ITERATION_3 860 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 861 && BOOST_PP_ITERATION_FINISH_3 >= 861 +# define BOOST_PP_ITERATION_3 861 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 862 && BOOST_PP_ITERATION_FINISH_3 >= 862 +# define BOOST_PP_ITERATION_3 862 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 863 && BOOST_PP_ITERATION_FINISH_3 >= 863 +# define BOOST_PP_ITERATION_3 863 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 864 && BOOST_PP_ITERATION_FINISH_3 >= 864 +# define BOOST_PP_ITERATION_3 864 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 865 && BOOST_PP_ITERATION_FINISH_3 >= 865 +# define BOOST_PP_ITERATION_3 865 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 866 && BOOST_PP_ITERATION_FINISH_3 >= 866 +# define BOOST_PP_ITERATION_3 866 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 867 && BOOST_PP_ITERATION_FINISH_3 >= 867 +# define BOOST_PP_ITERATION_3 867 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 868 && BOOST_PP_ITERATION_FINISH_3 >= 868 +# define BOOST_PP_ITERATION_3 868 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 869 && BOOST_PP_ITERATION_FINISH_3 >= 869 +# define BOOST_PP_ITERATION_3 869 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 870 && BOOST_PP_ITERATION_FINISH_3 >= 870 +# define BOOST_PP_ITERATION_3 870 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 871 && BOOST_PP_ITERATION_FINISH_3 >= 871 +# define BOOST_PP_ITERATION_3 871 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 872 && BOOST_PP_ITERATION_FINISH_3 >= 872 +# define BOOST_PP_ITERATION_3 872 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 873 && BOOST_PP_ITERATION_FINISH_3 >= 873 +# define BOOST_PP_ITERATION_3 873 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 874 && BOOST_PP_ITERATION_FINISH_3 >= 874 +# define BOOST_PP_ITERATION_3 874 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 875 && BOOST_PP_ITERATION_FINISH_3 >= 875 +# define BOOST_PP_ITERATION_3 875 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 876 && BOOST_PP_ITERATION_FINISH_3 >= 876 +# define BOOST_PP_ITERATION_3 876 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 877 && BOOST_PP_ITERATION_FINISH_3 >= 877 +# define BOOST_PP_ITERATION_3 877 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 878 && BOOST_PP_ITERATION_FINISH_3 >= 878 +# define BOOST_PP_ITERATION_3 878 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 879 && BOOST_PP_ITERATION_FINISH_3 >= 879 +# define BOOST_PP_ITERATION_3 879 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 880 && BOOST_PP_ITERATION_FINISH_3 >= 880 +# define BOOST_PP_ITERATION_3 880 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 881 && BOOST_PP_ITERATION_FINISH_3 >= 881 +# define BOOST_PP_ITERATION_3 881 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 882 && BOOST_PP_ITERATION_FINISH_3 >= 882 +# define BOOST_PP_ITERATION_3 882 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 883 && BOOST_PP_ITERATION_FINISH_3 >= 883 +# define BOOST_PP_ITERATION_3 883 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 884 && BOOST_PP_ITERATION_FINISH_3 >= 884 +# define BOOST_PP_ITERATION_3 884 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 885 && BOOST_PP_ITERATION_FINISH_3 >= 885 +# define BOOST_PP_ITERATION_3 885 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 886 && BOOST_PP_ITERATION_FINISH_3 >= 886 +# define BOOST_PP_ITERATION_3 886 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 887 && BOOST_PP_ITERATION_FINISH_3 >= 887 +# define BOOST_PP_ITERATION_3 887 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 888 && BOOST_PP_ITERATION_FINISH_3 >= 888 +# define BOOST_PP_ITERATION_3 888 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 889 && BOOST_PP_ITERATION_FINISH_3 >= 889 +# define BOOST_PP_ITERATION_3 889 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 890 && BOOST_PP_ITERATION_FINISH_3 >= 890 +# define BOOST_PP_ITERATION_3 890 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 891 && BOOST_PP_ITERATION_FINISH_3 >= 891 +# define BOOST_PP_ITERATION_3 891 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 892 && BOOST_PP_ITERATION_FINISH_3 >= 892 +# define BOOST_PP_ITERATION_3 892 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 893 && BOOST_PP_ITERATION_FINISH_3 >= 893 +# define BOOST_PP_ITERATION_3 893 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 894 && BOOST_PP_ITERATION_FINISH_3 >= 894 +# define BOOST_PP_ITERATION_3 894 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 895 && BOOST_PP_ITERATION_FINISH_3 >= 895 +# define BOOST_PP_ITERATION_3 895 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 896 && BOOST_PP_ITERATION_FINISH_3 >= 896 +# define BOOST_PP_ITERATION_3 896 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 897 && BOOST_PP_ITERATION_FINISH_3 >= 897 +# define BOOST_PP_ITERATION_3 897 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 898 && BOOST_PP_ITERATION_FINISH_3 >= 898 +# define BOOST_PP_ITERATION_3 898 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 899 && BOOST_PP_ITERATION_FINISH_3 >= 899 +# define BOOST_PP_ITERATION_3 899 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 900 && BOOST_PP_ITERATION_FINISH_3 >= 900 +# define BOOST_PP_ITERATION_3 900 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 901 && BOOST_PP_ITERATION_FINISH_3 >= 901 +# define BOOST_PP_ITERATION_3 901 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 902 && BOOST_PP_ITERATION_FINISH_3 >= 902 +# define BOOST_PP_ITERATION_3 902 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 903 && BOOST_PP_ITERATION_FINISH_3 >= 903 +# define BOOST_PP_ITERATION_3 903 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 904 && BOOST_PP_ITERATION_FINISH_3 >= 904 +# define BOOST_PP_ITERATION_3 904 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 905 && BOOST_PP_ITERATION_FINISH_3 >= 905 +# define BOOST_PP_ITERATION_3 905 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 906 && BOOST_PP_ITERATION_FINISH_3 >= 906 +# define BOOST_PP_ITERATION_3 906 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 907 && BOOST_PP_ITERATION_FINISH_3 >= 907 +# define BOOST_PP_ITERATION_3 907 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 908 && BOOST_PP_ITERATION_FINISH_3 >= 908 +# define BOOST_PP_ITERATION_3 908 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 909 && BOOST_PP_ITERATION_FINISH_3 >= 909 +# define BOOST_PP_ITERATION_3 909 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 910 && BOOST_PP_ITERATION_FINISH_3 >= 910 +# define BOOST_PP_ITERATION_3 910 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 911 && BOOST_PP_ITERATION_FINISH_3 >= 911 +# define BOOST_PP_ITERATION_3 911 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 912 && BOOST_PP_ITERATION_FINISH_3 >= 912 +# define BOOST_PP_ITERATION_3 912 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 913 && BOOST_PP_ITERATION_FINISH_3 >= 913 +# define BOOST_PP_ITERATION_3 913 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 914 && BOOST_PP_ITERATION_FINISH_3 >= 914 +# define BOOST_PP_ITERATION_3 914 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 915 && BOOST_PP_ITERATION_FINISH_3 >= 915 +# define BOOST_PP_ITERATION_3 915 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 916 && BOOST_PP_ITERATION_FINISH_3 >= 916 +# define BOOST_PP_ITERATION_3 916 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 917 && BOOST_PP_ITERATION_FINISH_3 >= 917 +# define BOOST_PP_ITERATION_3 917 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 918 && BOOST_PP_ITERATION_FINISH_3 >= 918 +# define BOOST_PP_ITERATION_3 918 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 919 && BOOST_PP_ITERATION_FINISH_3 >= 919 +# define BOOST_PP_ITERATION_3 919 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 920 && BOOST_PP_ITERATION_FINISH_3 >= 920 +# define BOOST_PP_ITERATION_3 920 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 921 && BOOST_PP_ITERATION_FINISH_3 >= 921 +# define BOOST_PP_ITERATION_3 921 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 922 && BOOST_PP_ITERATION_FINISH_3 >= 922 +# define BOOST_PP_ITERATION_3 922 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 923 && BOOST_PP_ITERATION_FINISH_3 >= 923 +# define BOOST_PP_ITERATION_3 923 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 924 && BOOST_PP_ITERATION_FINISH_3 >= 924 +# define BOOST_PP_ITERATION_3 924 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 925 && BOOST_PP_ITERATION_FINISH_3 >= 925 +# define BOOST_PP_ITERATION_3 925 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 926 && BOOST_PP_ITERATION_FINISH_3 >= 926 +# define BOOST_PP_ITERATION_3 926 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 927 && BOOST_PP_ITERATION_FINISH_3 >= 927 +# define BOOST_PP_ITERATION_3 927 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 928 && BOOST_PP_ITERATION_FINISH_3 >= 928 +# define BOOST_PP_ITERATION_3 928 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 929 && BOOST_PP_ITERATION_FINISH_3 >= 929 +# define BOOST_PP_ITERATION_3 929 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 930 && BOOST_PP_ITERATION_FINISH_3 >= 930 +# define BOOST_PP_ITERATION_3 930 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 931 && BOOST_PP_ITERATION_FINISH_3 >= 931 +# define BOOST_PP_ITERATION_3 931 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 932 && BOOST_PP_ITERATION_FINISH_3 >= 932 +# define BOOST_PP_ITERATION_3 932 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 933 && BOOST_PP_ITERATION_FINISH_3 >= 933 +# define BOOST_PP_ITERATION_3 933 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 934 && BOOST_PP_ITERATION_FINISH_3 >= 934 +# define BOOST_PP_ITERATION_3 934 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 935 && BOOST_PP_ITERATION_FINISH_3 >= 935 +# define BOOST_PP_ITERATION_3 935 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 936 && BOOST_PP_ITERATION_FINISH_3 >= 936 +# define BOOST_PP_ITERATION_3 936 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 937 && BOOST_PP_ITERATION_FINISH_3 >= 937 +# define BOOST_PP_ITERATION_3 937 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 938 && BOOST_PP_ITERATION_FINISH_3 >= 938 +# define BOOST_PP_ITERATION_3 938 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 939 && BOOST_PP_ITERATION_FINISH_3 >= 939 +# define BOOST_PP_ITERATION_3 939 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 940 && BOOST_PP_ITERATION_FINISH_3 >= 940 +# define BOOST_PP_ITERATION_3 940 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 941 && BOOST_PP_ITERATION_FINISH_3 >= 941 +# define BOOST_PP_ITERATION_3 941 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 942 && BOOST_PP_ITERATION_FINISH_3 >= 942 +# define BOOST_PP_ITERATION_3 942 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 943 && BOOST_PP_ITERATION_FINISH_3 >= 943 +# define BOOST_PP_ITERATION_3 943 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 944 && BOOST_PP_ITERATION_FINISH_3 >= 944 +# define BOOST_PP_ITERATION_3 944 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 945 && BOOST_PP_ITERATION_FINISH_3 >= 945 +# define BOOST_PP_ITERATION_3 945 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 946 && BOOST_PP_ITERATION_FINISH_3 >= 946 +# define BOOST_PP_ITERATION_3 946 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 947 && BOOST_PP_ITERATION_FINISH_3 >= 947 +# define BOOST_PP_ITERATION_3 947 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 948 && BOOST_PP_ITERATION_FINISH_3 >= 948 +# define BOOST_PP_ITERATION_3 948 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 949 && BOOST_PP_ITERATION_FINISH_3 >= 949 +# define BOOST_PP_ITERATION_3 949 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 950 && BOOST_PP_ITERATION_FINISH_3 >= 950 +# define BOOST_PP_ITERATION_3 950 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 951 && BOOST_PP_ITERATION_FINISH_3 >= 951 +# define BOOST_PP_ITERATION_3 951 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 952 && BOOST_PP_ITERATION_FINISH_3 >= 952 +# define BOOST_PP_ITERATION_3 952 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 953 && BOOST_PP_ITERATION_FINISH_3 >= 953 +# define BOOST_PP_ITERATION_3 953 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 954 && BOOST_PP_ITERATION_FINISH_3 >= 954 +# define BOOST_PP_ITERATION_3 954 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 955 && BOOST_PP_ITERATION_FINISH_3 >= 955 +# define BOOST_PP_ITERATION_3 955 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 956 && BOOST_PP_ITERATION_FINISH_3 >= 956 +# define BOOST_PP_ITERATION_3 956 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 957 && BOOST_PP_ITERATION_FINISH_3 >= 957 +# define BOOST_PP_ITERATION_3 957 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 958 && BOOST_PP_ITERATION_FINISH_3 >= 958 +# define BOOST_PP_ITERATION_3 958 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 959 && BOOST_PP_ITERATION_FINISH_3 >= 959 +# define BOOST_PP_ITERATION_3 959 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 960 && BOOST_PP_ITERATION_FINISH_3 >= 960 +# define BOOST_PP_ITERATION_3 960 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 961 && BOOST_PP_ITERATION_FINISH_3 >= 961 +# define BOOST_PP_ITERATION_3 961 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 962 && BOOST_PP_ITERATION_FINISH_3 >= 962 +# define BOOST_PP_ITERATION_3 962 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 963 && BOOST_PP_ITERATION_FINISH_3 >= 963 +# define BOOST_PP_ITERATION_3 963 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 964 && BOOST_PP_ITERATION_FINISH_3 >= 964 +# define BOOST_PP_ITERATION_3 964 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 965 && BOOST_PP_ITERATION_FINISH_3 >= 965 +# define BOOST_PP_ITERATION_3 965 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 966 && BOOST_PP_ITERATION_FINISH_3 >= 966 +# define BOOST_PP_ITERATION_3 966 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 967 && BOOST_PP_ITERATION_FINISH_3 >= 967 +# define BOOST_PP_ITERATION_3 967 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 968 && BOOST_PP_ITERATION_FINISH_3 >= 968 +# define BOOST_PP_ITERATION_3 968 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 969 && BOOST_PP_ITERATION_FINISH_3 >= 969 +# define BOOST_PP_ITERATION_3 969 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 970 && BOOST_PP_ITERATION_FINISH_3 >= 970 +# define BOOST_PP_ITERATION_3 970 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 971 && BOOST_PP_ITERATION_FINISH_3 >= 971 +# define BOOST_PP_ITERATION_3 971 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 972 && BOOST_PP_ITERATION_FINISH_3 >= 972 +# define BOOST_PP_ITERATION_3 972 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 973 && BOOST_PP_ITERATION_FINISH_3 >= 973 +# define BOOST_PP_ITERATION_3 973 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 974 && BOOST_PP_ITERATION_FINISH_3 >= 974 +# define BOOST_PP_ITERATION_3 974 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 975 && BOOST_PP_ITERATION_FINISH_3 >= 975 +# define BOOST_PP_ITERATION_3 975 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 976 && BOOST_PP_ITERATION_FINISH_3 >= 976 +# define BOOST_PP_ITERATION_3 976 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 977 && BOOST_PP_ITERATION_FINISH_3 >= 977 +# define BOOST_PP_ITERATION_3 977 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 978 && BOOST_PP_ITERATION_FINISH_3 >= 978 +# define BOOST_PP_ITERATION_3 978 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 979 && BOOST_PP_ITERATION_FINISH_3 >= 979 +# define BOOST_PP_ITERATION_3 979 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 980 && BOOST_PP_ITERATION_FINISH_3 >= 980 +# define BOOST_PP_ITERATION_3 980 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 981 && BOOST_PP_ITERATION_FINISH_3 >= 981 +# define BOOST_PP_ITERATION_3 981 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 982 && BOOST_PP_ITERATION_FINISH_3 >= 982 +# define BOOST_PP_ITERATION_3 982 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 983 && BOOST_PP_ITERATION_FINISH_3 >= 983 +# define BOOST_PP_ITERATION_3 983 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 984 && BOOST_PP_ITERATION_FINISH_3 >= 984 +# define BOOST_PP_ITERATION_3 984 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 985 && BOOST_PP_ITERATION_FINISH_3 >= 985 +# define BOOST_PP_ITERATION_3 985 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 986 && BOOST_PP_ITERATION_FINISH_3 >= 986 +# define BOOST_PP_ITERATION_3 986 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 987 && BOOST_PP_ITERATION_FINISH_3 >= 987 +# define BOOST_PP_ITERATION_3 987 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 988 && BOOST_PP_ITERATION_FINISH_3 >= 988 +# define BOOST_PP_ITERATION_3 988 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 989 && BOOST_PP_ITERATION_FINISH_3 >= 989 +# define BOOST_PP_ITERATION_3 989 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 990 && BOOST_PP_ITERATION_FINISH_3 >= 990 +# define BOOST_PP_ITERATION_3 990 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 991 && BOOST_PP_ITERATION_FINISH_3 >= 991 +# define BOOST_PP_ITERATION_3 991 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 992 && BOOST_PP_ITERATION_FINISH_3 >= 992 +# define BOOST_PP_ITERATION_3 992 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 993 && BOOST_PP_ITERATION_FINISH_3 >= 993 +# define BOOST_PP_ITERATION_3 993 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 994 && BOOST_PP_ITERATION_FINISH_3 >= 994 +# define BOOST_PP_ITERATION_3 994 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 995 && BOOST_PP_ITERATION_FINISH_3 >= 995 +# define BOOST_PP_ITERATION_3 995 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 996 && BOOST_PP_ITERATION_FINISH_3 >= 996 +# define BOOST_PP_ITERATION_3 996 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 997 && BOOST_PP_ITERATION_FINISH_3 >= 997 +# define BOOST_PP_ITERATION_3 997 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 998 && BOOST_PP_ITERATION_FINISH_3 >= 998 +# define BOOST_PP_ITERATION_3 998 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 999 && BOOST_PP_ITERATION_FINISH_3 >= 999 +# define BOOST_PP_ITERATION_3 999 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1000 && BOOST_PP_ITERATION_FINISH_3 >= 1000 +# define BOOST_PP_ITERATION_3 1000 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1001 && BOOST_PP_ITERATION_FINISH_3 >= 1001 +# define BOOST_PP_ITERATION_3 1001 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1002 && BOOST_PP_ITERATION_FINISH_3 >= 1002 +# define BOOST_PP_ITERATION_3 1002 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1003 && BOOST_PP_ITERATION_FINISH_3 >= 1003 +# define BOOST_PP_ITERATION_3 1003 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1004 && BOOST_PP_ITERATION_FINISH_3 >= 1004 +# define BOOST_PP_ITERATION_3 1004 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1005 && BOOST_PP_ITERATION_FINISH_3 >= 1005 +# define BOOST_PP_ITERATION_3 1005 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1006 && BOOST_PP_ITERATION_FINISH_3 >= 1006 +# define BOOST_PP_ITERATION_3 1006 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1007 && BOOST_PP_ITERATION_FINISH_3 >= 1007 +# define BOOST_PP_ITERATION_3 1007 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1008 && BOOST_PP_ITERATION_FINISH_3 >= 1008 +# define BOOST_PP_ITERATION_3 1008 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1009 && BOOST_PP_ITERATION_FINISH_3 >= 1009 +# define BOOST_PP_ITERATION_3 1009 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1010 && BOOST_PP_ITERATION_FINISH_3 >= 1010 +# define BOOST_PP_ITERATION_3 1010 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1011 && BOOST_PP_ITERATION_FINISH_3 >= 1011 +# define BOOST_PP_ITERATION_3 1011 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1012 && BOOST_PP_ITERATION_FINISH_3 >= 1012 +# define BOOST_PP_ITERATION_3 1012 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1013 && BOOST_PP_ITERATION_FINISH_3 >= 1013 +# define BOOST_PP_ITERATION_3 1013 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1014 && BOOST_PP_ITERATION_FINISH_3 >= 1014 +# define BOOST_PP_ITERATION_3 1014 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1015 && BOOST_PP_ITERATION_FINISH_3 >= 1015 +# define BOOST_PP_ITERATION_3 1015 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1016 && BOOST_PP_ITERATION_FINISH_3 >= 1016 +# define BOOST_PP_ITERATION_3 1016 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1017 && BOOST_PP_ITERATION_FINISH_3 >= 1017 +# define BOOST_PP_ITERATION_3 1017 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1018 && BOOST_PP_ITERATION_FINISH_3 >= 1018 +# define BOOST_PP_ITERATION_3 1018 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1019 && BOOST_PP_ITERATION_FINISH_3 >= 1019 +# define BOOST_PP_ITERATION_3 1019 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1020 && BOOST_PP_ITERATION_FINISH_3 >= 1020 +# define BOOST_PP_ITERATION_3 1020 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1021 && BOOST_PP_ITERATION_FINISH_3 >= 1021 +# define BOOST_PP_ITERATION_3 1021 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1022 && BOOST_PP_ITERATION_FINISH_3 >= 1022 +# define BOOST_PP_ITERATION_3 1022 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1023 && BOOST_PP_ITERATION_FINISH_3 >= 1023 +# define BOOST_PP_ITERATION_3 1023 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1024 && BOOST_PP_ITERATION_FINISH_3 >= 1024 +# define BOOST_PP_ITERATION_3 1024 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward3_256.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward3_256.hpp new file mode 100644 index 000000000..f193f7ea3 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward3_256.hpp @@ -0,0 +1,1296 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_START_3 <= 0 && BOOST_PP_ITERATION_FINISH_3 >= 0 +# define BOOST_PP_ITERATION_3 0 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 1 && BOOST_PP_ITERATION_FINISH_3 >= 1 +# define BOOST_PP_ITERATION_3 1 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 2 && BOOST_PP_ITERATION_FINISH_3 >= 2 +# define BOOST_PP_ITERATION_3 2 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 3 && BOOST_PP_ITERATION_FINISH_3 >= 3 +# define BOOST_PP_ITERATION_3 3 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 4 && BOOST_PP_ITERATION_FINISH_3 >= 4 +# define BOOST_PP_ITERATION_3 4 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 5 && BOOST_PP_ITERATION_FINISH_3 >= 5 +# define BOOST_PP_ITERATION_3 5 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 6 && BOOST_PP_ITERATION_FINISH_3 >= 6 +# define BOOST_PP_ITERATION_3 6 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 7 && BOOST_PP_ITERATION_FINISH_3 >= 7 +# define BOOST_PP_ITERATION_3 7 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 8 && BOOST_PP_ITERATION_FINISH_3 >= 8 +# define BOOST_PP_ITERATION_3 8 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 9 && BOOST_PP_ITERATION_FINISH_3 >= 9 +# define BOOST_PP_ITERATION_3 9 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 10 && BOOST_PP_ITERATION_FINISH_3 >= 10 +# define BOOST_PP_ITERATION_3 10 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 11 && BOOST_PP_ITERATION_FINISH_3 >= 11 +# define BOOST_PP_ITERATION_3 11 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 12 && BOOST_PP_ITERATION_FINISH_3 >= 12 +# define BOOST_PP_ITERATION_3 12 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 13 && BOOST_PP_ITERATION_FINISH_3 >= 13 +# define BOOST_PP_ITERATION_3 13 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 14 && BOOST_PP_ITERATION_FINISH_3 >= 14 +# define BOOST_PP_ITERATION_3 14 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 15 && BOOST_PP_ITERATION_FINISH_3 >= 15 +# define BOOST_PP_ITERATION_3 15 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 16 && BOOST_PP_ITERATION_FINISH_3 >= 16 +# define BOOST_PP_ITERATION_3 16 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 17 && BOOST_PP_ITERATION_FINISH_3 >= 17 +# define BOOST_PP_ITERATION_3 17 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 18 && BOOST_PP_ITERATION_FINISH_3 >= 18 +# define BOOST_PP_ITERATION_3 18 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 19 && BOOST_PP_ITERATION_FINISH_3 >= 19 +# define BOOST_PP_ITERATION_3 19 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 20 && BOOST_PP_ITERATION_FINISH_3 >= 20 +# define BOOST_PP_ITERATION_3 20 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 21 && BOOST_PP_ITERATION_FINISH_3 >= 21 +# define BOOST_PP_ITERATION_3 21 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 22 && BOOST_PP_ITERATION_FINISH_3 >= 22 +# define BOOST_PP_ITERATION_3 22 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 23 && BOOST_PP_ITERATION_FINISH_3 >= 23 +# define BOOST_PP_ITERATION_3 23 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 24 && BOOST_PP_ITERATION_FINISH_3 >= 24 +# define BOOST_PP_ITERATION_3 24 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 25 && BOOST_PP_ITERATION_FINISH_3 >= 25 +# define BOOST_PP_ITERATION_3 25 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 26 && BOOST_PP_ITERATION_FINISH_3 >= 26 +# define BOOST_PP_ITERATION_3 26 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 27 && BOOST_PP_ITERATION_FINISH_3 >= 27 +# define BOOST_PP_ITERATION_3 27 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 28 && BOOST_PP_ITERATION_FINISH_3 >= 28 +# define BOOST_PP_ITERATION_3 28 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 29 && BOOST_PP_ITERATION_FINISH_3 >= 29 +# define BOOST_PP_ITERATION_3 29 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 30 && BOOST_PP_ITERATION_FINISH_3 >= 30 +# define BOOST_PP_ITERATION_3 30 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 31 && BOOST_PP_ITERATION_FINISH_3 >= 31 +# define BOOST_PP_ITERATION_3 31 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 32 && BOOST_PP_ITERATION_FINISH_3 >= 32 +# define BOOST_PP_ITERATION_3 32 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 33 && BOOST_PP_ITERATION_FINISH_3 >= 33 +# define BOOST_PP_ITERATION_3 33 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 34 && BOOST_PP_ITERATION_FINISH_3 >= 34 +# define BOOST_PP_ITERATION_3 34 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 35 && BOOST_PP_ITERATION_FINISH_3 >= 35 +# define BOOST_PP_ITERATION_3 35 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 36 && BOOST_PP_ITERATION_FINISH_3 >= 36 +# define BOOST_PP_ITERATION_3 36 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 37 && BOOST_PP_ITERATION_FINISH_3 >= 37 +# define BOOST_PP_ITERATION_3 37 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 38 && BOOST_PP_ITERATION_FINISH_3 >= 38 +# define BOOST_PP_ITERATION_3 38 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 39 && BOOST_PP_ITERATION_FINISH_3 >= 39 +# define BOOST_PP_ITERATION_3 39 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 40 && BOOST_PP_ITERATION_FINISH_3 >= 40 +# define BOOST_PP_ITERATION_3 40 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 41 && BOOST_PP_ITERATION_FINISH_3 >= 41 +# define BOOST_PP_ITERATION_3 41 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 42 && BOOST_PP_ITERATION_FINISH_3 >= 42 +# define BOOST_PP_ITERATION_3 42 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 43 && BOOST_PP_ITERATION_FINISH_3 >= 43 +# define BOOST_PP_ITERATION_3 43 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 44 && BOOST_PP_ITERATION_FINISH_3 >= 44 +# define BOOST_PP_ITERATION_3 44 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 45 && BOOST_PP_ITERATION_FINISH_3 >= 45 +# define BOOST_PP_ITERATION_3 45 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 46 && BOOST_PP_ITERATION_FINISH_3 >= 46 +# define BOOST_PP_ITERATION_3 46 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 47 && BOOST_PP_ITERATION_FINISH_3 >= 47 +# define BOOST_PP_ITERATION_3 47 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 48 && BOOST_PP_ITERATION_FINISH_3 >= 48 +# define BOOST_PP_ITERATION_3 48 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 49 && BOOST_PP_ITERATION_FINISH_3 >= 49 +# define BOOST_PP_ITERATION_3 49 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 50 && BOOST_PP_ITERATION_FINISH_3 >= 50 +# define BOOST_PP_ITERATION_3 50 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 51 && BOOST_PP_ITERATION_FINISH_3 >= 51 +# define BOOST_PP_ITERATION_3 51 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 52 && BOOST_PP_ITERATION_FINISH_3 >= 52 +# define BOOST_PP_ITERATION_3 52 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 53 && BOOST_PP_ITERATION_FINISH_3 >= 53 +# define BOOST_PP_ITERATION_3 53 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 54 && BOOST_PP_ITERATION_FINISH_3 >= 54 +# define BOOST_PP_ITERATION_3 54 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 55 && BOOST_PP_ITERATION_FINISH_3 >= 55 +# define BOOST_PP_ITERATION_3 55 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 56 && BOOST_PP_ITERATION_FINISH_3 >= 56 +# define BOOST_PP_ITERATION_3 56 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 57 && BOOST_PP_ITERATION_FINISH_3 >= 57 +# define BOOST_PP_ITERATION_3 57 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 58 && BOOST_PP_ITERATION_FINISH_3 >= 58 +# define BOOST_PP_ITERATION_3 58 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 59 && BOOST_PP_ITERATION_FINISH_3 >= 59 +# define BOOST_PP_ITERATION_3 59 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 60 && BOOST_PP_ITERATION_FINISH_3 >= 60 +# define BOOST_PP_ITERATION_3 60 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 61 && BOOST_PP_ITERATION_FINISH_3 >= 61 +# define BOOST_PP_ITERATION_3 61 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 62 && BOOST_PP_ITERATION_FINISH_3 >= 62 +# define BOOST_PP_ITERATION_3 62 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 63 && BOOST_PP_ITERATION_FINISH_3 >= 63 +# define BOOST_PP_ITERATION_3 63 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 64 && BOOST_PP_ITERATION_FINISH_3 >= 64 +# define BOOST_PP_ITERATION_3 64 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 65 && BOOST_PP_ITERATION_FINISH_3 >= 65 +# define BOOST_PP_ITERATION_3 65 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 66 && BOOST_PP_ITERATION_FINISH_3 >= 66 +# define BOOST_PP_ITERATION_3 66 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 67 && BOOST_PP_ITERATION_FINISH_3 >= 67 +# define BOOST_PP_ITERATION_3 67 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 68 && BOOST_PP_ITERATION_FINISH_3 >= 68 +# define BOOST_PP_ITERATION_3 68 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 69 && BOOST_PP_ITERATION_FINISH_3 >= 69 +# define BOOST_PP_ITERATION_3 69 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 70 && BOOST_PP_ITERATION_FINISH_3 >= 70 +# define BOOST_PP_ITERATION_3 70 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 71 && BOOST_PP_ITERATION_FINISH_3 >= 71 +# define BOOST_PP_ITERATION_3 71 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 72 && BOOST_PP_ITERATION_FINISH_3 >= 72 +# define BOOST_PP_ITERATION_3 72 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 73 && BOOST_PP_ITERATION_FINISH_3 >= 73 +# define BOOST_PP_ITERATION_3 73 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 74 && BOOST_PP_ITERATION_FINISH_3 >= 74 +# define BOOST_PP_ITERATION_3 74 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 75 && BOOST_PP_ITERATION_FINISH_3 >= 75 +# define BOOST_PP_ITERATION_3 75 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 76 && BOOST_PP_ITERATION_FINISH_3 >= 76 +# define BOOST_PP_ITERATION_3 76 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 77 && BOOST_PP_ITERATION_FINISH_3 >= 77 +# define BOOST_PP_ITERATION_3 77 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 78 && BOOST_PP_ITERATION_FINISH_3 >= 78 +# define BOOST_PP_ITERATION_3 78 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 79 && BOOST_PP_ITERATION_FINISH_3 >= 79 +# define BOOST_PP_ITERATION_3 79 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 80 && BOOST_PP_ITERATION_FINISH_3 >= 80 +# define BOOST_PP_ITERATION_3 80 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 81 && BOOST_PP_ITERATION_FINISH_3 >= 81 +# define BOOST_PP_ITERATION_3 81 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 82 && BOOST_PP_ITERATION_FINISH_3 >= 82 +# define BOOST_PP_ITERATION_3 82 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 83 && BOOST_PP_ITERATION_FINISH_3 >= 83 +# define BOOST_PP_ITERATION_3 83 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 84 && BOOST_PP_ITERATION_FINISH_3 >= 84 +# define BOOST_PP_ITERATION_3 84 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 85 && BOOST_PP_ITERATION_FINISH_3 >= 85 +# define BOOST_PP_ITERATION_3 85 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 86 && BOOST_PP_ITERATION_FINISH_3 >= 86 +# define BOOST_PP_ITERATION_3 86 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 87 && BOOST_PP_ITERATION_FINISH_3 >= 87 +# define BOOST_PP_ITERATION_3 87 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 88 && BOOST_PP_ITERATION_FINISH_3 >= 88 +# define BOOST_PP_ITERATION_3 88 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 89 && BOOST_PP_ITERATION_FINISH_3 >= 89 +# define BOOST_PP_ITERATION_3 89 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 90 && BOOST_PP_ITERATION_FINISH_3 >= 90 +# define BOOST_PP_ITERATION_3 90 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 91 && BOOST_PP_ITERATION_FINISH_3 >= 91 +# define BOOST_PP_ITERATION_3 91 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 92 && BOOST_PP_ITERATION_FINISH_3 >= 92 +# define BOOST_PP_ITERATION_3 92 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 93 && BOOST_PP_ITERATION_FINISH_3 >= 93 +# define BOOST_PP_ITERATION_3 93 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 94 && BOOST_PP_ITERATION_FINISH_3 >= 94 +# define BOOST_PP_ITERATION_3 94 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 95 && BOOST_PP_ITERATION_FINISH_3 >= 95 +# define BOOST_PP_ITERATION_3 95 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 96 && BOOST_PP_ITERATION_FINISH_3 >= 96 +# define BOOST_PP_ITERATION_3 96 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 97 && BOOST_PP_ITERATION_FINISH_3 >= 97 +# define BOOST_PP_ITERATION_3 97 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 98 && BOOST_PP_ITERATION_FINISH_3 >= 98 +# define BOOST_PP_ITERATION_3 98 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 99 && BOOST_PP_ITERATION_FINISH_3 >= 99 +# define BOOST_PP_ITERATION_3 99 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 100 && BOOST_PP_ITERATION_FINISH_3 >= 100 +# define BOOST_PP_ITERATION_3 100 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 101 && BOOST_PP_ITERATION_FINISH_3 >= 101 +# define BOOST_PP_ITERATION_3 101 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 102 && BOOST_PP_ITERATION_FINISH_3 >= 102 +# define BOOST_PP_ITERATION_3 102 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 103 && BOOST_PP_ITERATION_FINISH_3 >= 103 +# define BOOST_PP_ITERATION_3 103 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 104 && BOOST_PP_ITERATION_FINISH_3 >= 104 +# define BOOST_PP_ITERATION_3 104 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 105 && BOOST_PP_ITERATION_FINISH_3 >= 105 +# define BOOST_PP_ITERATION_3 105 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 106 && BOOST_PP_ITERATION_FINISH_3 >= 106 +# define BOOST_PP_ITERATION_3 106 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 107 && BOOST_PP_ITERATION_FINISH_3 >= 107 +# define BOOST_PP_ITERATION_3 107 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 108 && BOOST_PP_ITERATION_FINISH_3 >= 108 +# define BOOST_PP_ITERATION_3 108 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 109 && BOOST_PP_ITERATION_FINISH_3 >= 109 +# define BOOST_PP_ITERATION_3 109 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 110 && BOOST_PP_ITERATION_FINISH_3 >= 110 +# define BOOST_PP_ITERATION_3 110 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 111 && BOOST_PP_ITERATION_FINISH_3 >= 111 +# define BOOST_PP_ITERATION_3 111 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 112 && BOOST_PP_ITERATION_FINISH_3 >= 112 +# define BOOST_PP_ITERATION_3 112 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 113 && BOOST_PP_ITERATION_FINISH_3 >= 113 +# define BOOST_PP_ITERATION_3 113 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 114 && BOOST_PP_ITERATION_FINISH_3 >= 114 +# define BOOST_PP_ITERATION_3 114 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 115 && BOOST_PP_ITERATION_FINISH_3 >= 115 +# define BOOST_PP_ITERATION_3 115 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 116 && BOOST_PP_ITERATION_FINISH_3 >= 116 +# define BOOST_PP_ITERATION_3 116 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 117 && BOOST_PP_ITERATION_FINISH_3 >= 117 +# define BOOST_PP_ITERATION_3 117 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 118 && BOOST_PP_ITERATION_FINISH_3 >= 118 +# define BOOST_PP_ITERATION_3 118 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 119 && BOOST_PP_ITERATION_FINISH_3 >= 119 +# define BOOST_PP_ITERATION_3 119 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 120 && BOOST_PP_ITERATION_FINISH_3 >= 120 +# define BOOST_PP_ITERATION_3 120 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 121 && BOOST_PP_ITERATION_FINISH_3 >= 121 +# define BOOST_PP_ITERATION_3 121 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 122 && BOOST_PP_ITERATION_FINISH_3 >= 122 +# define BOOST_PP_ITERATION_3 122 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 123 && BOOST_PP_ITERATION_FINISH_3 >= 123 +# define BOOST_PP_ITERATION_3 123 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 124 && BOOST_PP_ITERATION_FINISH_3 >= 124 +# define BOOST_PP_ITERATION_3 124 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 125 && BOOST_PP_ITERATION_FINISH_3 >= 125 +# define BOOST_PP_ITERATION_3 125 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 126 && BOOST_PP_ITERATION_FINISH_3 >= 126 +# define BOOST_PP_ITERATION_3 126 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 127 && BOOST_PP_ITERATION_FINISH_3 >= 127 +# define BOOST_PP_ITERATION_3 127 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 128 && BOOST_PP_ITERATION_FINISH_3 >= 128 +# define BOOST_PP_ITERATION_3 128 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 129 && BOOST_PP_ITERATION_FINISH_3 >= 129 +# define BOOST_PP_ITERATION_3 129 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 130 && BOOST_PP_ITERATION_FINISH_3 >= 130 +# define BOOST_PP_ITERATION_3 130 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 131 && BOOST_PP_ITERATION_FINISH_3 >= 131 +# define BOOST_PP_ITERATION_3 131 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 132 && BOOST_PP_ITERATION_FINISH_3 >= 132 +# define BOOST_PP_ITERATION_3 132 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 133 && BOOST_PP_ITERATION_FINISH_3 >= 133 +# define BOOST_PP_ITERATION_3 133 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 134 && BOOST_PP_ITERATION_FINISH_3 >= 134 +# define BOOST_PP_ITERATION_3 134 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 135 && BOOST_PP_ITERATION_FINISH_3 >= 135 +# define BOOST_PP_ITERATION_3 135 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 136 && BOOST_PP_ITERATION_FINISH_3 >= 136 +# define BOOST_PP_ITERATION_3 136 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 137 && BOOST_PP_ITERATION_FINISH_3 >= 137 +# define BOOST_PP_ITERATION_3 137 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 138 && BOOST_PP_ITERATION_FINISH_3 >= 138 +# define BOOST_PP_ITERATION_3 138 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 139 && BOOST_PP_ITERATION_FINISH_3 >= 139 +# define BOOST_PP_ITERATION_3 139 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 140 && BOOST_PP_ITERATION_FINISH_3 >= 140 +# define BOOST_PP_ITERATION_3 140 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 141 && BOOST_PP_ITERATION_FINISH_3 >= 141 +# define BOOST_PP_ITERATION_3 141 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 142 && BOOST_PP_ITERATION_FINISH_3 >= 142 +# define BOOST_PP_ITERATION_3 142 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 143 && BOOST_PP_ITERATION_FINISH_3 >= 143 +# define BOOST_PP_ITERATION_3 143 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 144 && BOOST_PP_ITERATION_FINISH_3 >= 144 +# define BOOST_PP_ITERATION_3 144 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 145 && BOOST_PP_ITERATION_FINISH_3 >= 145 +# define BOOST_PP_ITERATION_3 145 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 146 && BOOST_PP_ITERATION_FINISH_3 >= 146 +# define BOOST_PP_ITERATION_3 146 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 147 && BOOST_PP_ITERATION_FINISH_3 >= 147 +# define BOOST_PP_ITERATION_3 147 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 148 && BOOST_PP_ITERATION_FINISH_3 >= 148 +# define BOOST_PP_ITERATION_3 148 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 149 && BOOST_PP_ITERATION_FINISH_3 >= 149 +# define BOOST_PP_ITERATION_3 149 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 150 && BOOST_PP_ITERATION_FINISH_3 >= 150 +# define BOOST_PP_ITERATION_3 150 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 151 && BOOST_PP_ITERATION_FINISH_3 >= 151 +# define BOOST_PP_ITERATION_3 151 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 152 && BOOST_PP_ITERATION_FINISH_3 >= 152 +# define BOOST_PP_ITERATION_3 152 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 153 && BOOST_PP_ITERATION_FINISH_3 >= 153 +# define BOOST_PP_ITERATION_3 153 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 154 && BOOST_PP_ITERATION_FINISH_3 >= 154 +# define BOOST_PP_ITERATION_3 154 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 155 && BOOST_PP_ITERATION_FINISH_3 >= 155 +# define BOOST_PP_ITERATION_3 155 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 156 && BOOST_PP_ITERATION_FINISH_3 >= 156 +# define BOOST_PP_ITERATION_3 156 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 157 && BOOST_PP_ITERATION_FINISH_3 >= 157 +# define BOOST_PP_ITERATION_3 157 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 158 && BOOST_PP_ITERATION_FINISH_3 >= 158 +# define BOOST_PP_ITERATION_3 158 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 159 && BOOST_PP_ITERATION_FINISH_3 >= 159 +# define BOOST_PP_ITERATION_3 159 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 160 && BOOST_PP_ITERATION_FINISH_3 >= 160 +# define BOOST_PP_ITERATION_3 160 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 161 && BOOST_PP_ITERATION_FINISH_3 >= 161 +# define BOOST_PP_ITERATION_3 161 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 162 && BOOST_PP_ITERATION_FINISH_3 >= 162 +# define BOOST_PP_ITERATION_3 162 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 163 && BOOST_PP_ITERATION_FINISH_3 >= 163 +# define BOOST_PP_ITERATION_3 163 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 164 && BOOST_PP_ITERATION_FINISH_3 >= 164 +# define BOOST_PP_ITERATION_3 164 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 165 && BOOST_PP_ITERATION_FINISH_3 >= 165 +# define BOOST_PP_ITERATION_3 165 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 166 && BOOST_PP_ITERATION_FINISH_3 >= 166 +# define BOOST_PP_ITERATION_3 166 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 167 && BOOST_PP_ITERATION_FINISH_3 >= 167 +# define BOOST_PP_ITERATION_3 167 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 168 && BOOST_PP_ITERATION_FINISH_3 >= 168 +# define BOOST_PP_ITERATION_3 168 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 169 && BOOST_PP_ITERATION_FINISH_3 >= 169 +# define BOOST_PP_ITERATION_3 169 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 170 && BOOST_PP_ITERATION_FINISH_3 >= 170 +# define BOOST_PP_ITERATION_3 170 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 171 && BOOST_PP_ITERATION_FINISH_3 >= 171 +# define BOOST_PP_ITERATION_3 171 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 172 && BOOST_PP_ITERATION_FINISH_3 >= 172 +# define BOOST_PP_ITERATION_3 172 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 173 && BOOST_PP_ITERATION_FINISH_3 >= 173 +# define BOOST_PP_ITERATION_3 173 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 174 && BOOST_PP_ITERATION_FINISH_3 >= 174 +# define BOOST_PP_ITERATION_3 174 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 175 && BOOST_PP_ITERATION_FINISH_3 >= 175 +# define BOOST_PP_ITERATION_3 175 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 176 && BOOST_PP_ITERATION_FINISH_3 >= 176 +# define BOOST_PP_ITERATION_3 176 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 177 && BOOST_PP_ITERATION_FINISH_3 >= 177 +# define BOOST_PP_ITERATION_3 177 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 178 && BOOST_PP_ITERATION_FINISH_3 >= 178 +# define BOOST_PP_ITERATION_3 178 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 179 && BOOST_PP_ITERATION_FINISH_3 >= 179 +# define BOOST_PP_ITERATION_3 179 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 180 && BOOST_PP_ITERATION_FINISH_3 >= 180 +# define BOOST_PP_ITERATION_3 180 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 181 && BOOST_PP_ITERATION_FINISH_3 >= 181 +# define BOOST_PP_ITERATION_3 181 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 182 && BOOST_PP_ITERATION_FINISH_3 >= 182 +# define BOOST_PP_ITERATION_3 182 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 183 && BOOST_PP_ITERATION_FINISH_3 >= 183 +# define BOOST_PP_ITERATION_3 183 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 184 && BOOST_PP_ITERATION_FINISH_3 >= 184 +# define BOOST_PP_ITERATION_3 184 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 185 && BOOST_PP_ITERATION_FINISH_3 >= 185 +# define BOOST_PP_ITERATION_3 185 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 186 && BOOST_PP_ITERATION_FINISH_3 >= 186 +# define BOOST_PP_ITERATION_3 186 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 187 && BOOST_PP_ITERATION_FINISH_3 >= 187 +# define BOOST_PP_ITERATION_3 187 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 188 && BOOST_PP_ITERATION_FINISH_3 >= 188 +# define BOOST_PP_ITERATION_3 188 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 189 && BOOST_PP_ITERATION_FINISH_3 >= 189 +# define BOOST_PP_ITERATION_3 189 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 190 && BOOST_PP_ITERATION_FINISH_3 >= 190 +# define BOOST_PP_ITERATION_3 190 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 191 && BOOST_PP_ITERATION_FINISH_3 >= 191 +# define BOOST_PP_ITERATION_3 191 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 192 && BOOST_PP_ITERATION_FINISH_3 >= 192 +# define BOOST_PP_ITERATION_3 192 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 193 && BOOST_PP_ITERATION_FINISH_3 >= 193 +# define BOOST_PP_ITERATION_3 193 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 194 && BOOST_PP_ITERATION_FINISH_3 >= 194 +# define BOOST_PP_ITERATION_3 194 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 195 && BOOST_PP_ITERATION_FINISH_3 >= 195 +# define BOOST_PP_ITERATION_3 195 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 196 && BOOST_PP_ITERATION_FINISH_3 >= 196 +# define BOOST_PP_ITERATION_3 196 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 197 && BOOST_PP_ITERATION_FINISH_3 >= 197 +# define BOOST_PP_ITERATION_3 197 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 198 && BOOST_PP_ITERATION_FINISH_3 >= 198 +# define BOOST_PP_ITERATION_3 198 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 199 && BOOST_PP_ITERATION_FINISH_3 >= 199 +# define BOOST_PP_ITERATION_3 199 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 200 && BOOST_PP_ITERATION_FINISH_3 >= 200 +# define BOOST_PP_ITERATION_3 200 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 201 && BOOST_PP_ITERATION_FINISH_3 >= 201 +# define BOOST_PP_ITERATION_3 201 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 202 && BOOST_PP_ITERATION_FINISH_3 >= 202 +# define BOOST_PP_ITERATION_3 202 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 203 && BOOST_PP_ITERATION_FINISH_3 >= 203 +# define BOOST_PP_ITERATION_3 203 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 204 && BOOST_PP_ITERATION_FINISH_3 >= 204 +# define BOOST_PP_ITERATION_3 204 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 205 && BOOST_PP_ITERATION_FINISH_3 >= 205 +# define BOOST_PP_ITERATION_3 205 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 206 && BOOST_PP_ITERATION_FINISH_3 >= 206 +# define BOOST_PP_ITERATION_3 206 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 207 && BOOST_PP_ITERATION_FINISH_3 >= 207 +# define BOOST_PP_ITERATION_3 207 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 208 && BOOST_PP_ITERATION_FINISH_3 >= 208 +# define BOOST_PP_ITERATION_3 208 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 209 && BOOST_PP_ITERATION_FINISH_3 >= 209 +# define BOOST_PP_ITERATION_3 209 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 210 && BOOST_PP_ITERATION_FINISH_3 >= 210 +# define BOOST_PP_ITERATION_3 210 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 211 && BOOST_PP_ITERATION_FINISH_3 >= 211 +# define BOOST_PP_ITERATION_3 211 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 212 && BOOST_PP_ITERATION_FINISH_3 >= 212 +# define BOOST_PP_ITERATION_3 212 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 213 && BOOST_PP_ITERATION_FINISH_3 >= 213 +# define BOOST_PP_ITERATION_3 213 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 214 && BOOST_PP_ITERATION_FINISH_3 >= 214 +# define BOOST_PP_ITERATION_3 214 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 215 && BOOST_PP_ITERATION_FINISH_3 >= 215 +# define BOOST_PP_ITERATION_3 215 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 216 && BOOST_PP_ITERATION_FINISH_3 >= 216 +# define BOOST_PP_ITERATION_3 216 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 217 && BOOST_PP_ITERATION_FINISH_3 >= 217 +# define BOOST_PP_ITERATION_3 217 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 218 && BOOST_PP_ITERATION_FINISH_3 >= 218 +# define BOOST_PP_ITERATION_3 218 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 219 && BOOST_PP_ITERATION_FINISH_3 >= 219 +# define BOOST_PP_ITERATION_3 219 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 220 && BOOST_PP_ITERATION_FINISH_3 >= 220 +# define BOOST_PP_ITERATION_3 220 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 221 && BOOST_PP_ITERATION_FINISH_3 >= 221 +# define BOOST_PP_ITERATION_3 221 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 222 && BOOST_PP_ITERATION_FINISH_3 >= 222 +# define BOOST_PP_ITERATION_3 222 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 223 && BOOST_PP_ITERATION_FINISH_3 >= 223 +# define BOOST_PP_ITERATION_3 223 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 224 && BOOST_PP_ITERATION_FINISH_3 >= 224 +# define BOOST_PP_ITERATION_3 224 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 225 && BOOST_PP_ITERATION_FINISH_3 >= 225 +# define BOOST_PP_ITERATION_3 225 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 226 && BOOST_PP_ITERATION_FINISH_3 >= 226 +# define BOOST_PP_ITERATION_3 226 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 227 && BOOST_PP_ITERATION_FINISH_3 >= 227 +# define BOOST_PP_ITERATION_3 227 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 228 && BOOST_PP_ITERATION_FINISH_3 >= 228 +# define BOOST_PP_ITERATION_3 228 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 229 && BOOST_PP_ITERATION_FINISH_3 >= 229 +# define BOOST_PP_ITERATION_3 229 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 230 && BOOST_PP_ITERATION_FINISH_3 >= 230 +# define BOOST_PP_ITERATION_3 230 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 231 && BOOST_PP_ITERATION_FINISH_3 >= 231 +# define BOOST_PP_ITERATION_3 231 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 232 && BOOST_PP_ITERATION_FINISH_3 >= 232 +# define BOOST_PP_ITERATION_3 232 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 233 && BOOST_PP_ITERATION_FINISH_3 >= 233 +# define BOOST_PP_ITERATION_3 233 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 234 && BOOST_PP_ITERATION_FINISH_3 >= 234 +# define BOOST_PP_ITERATION_3 234 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 235 && BOOST_PP_ITERATION_FINISH_3 >= 235 +# define BOOST_PP_ITERATION_3 235 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 236 && BOOST_PP_ITERATION_FINISH_3 >= 236 +# define BOOST_PP_ITERATION_3 236 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 237 && BOOST_PP_ITERATION_FINISH_3 >= 237 +# define BOOST_PP_ITERATION_3 237 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 238 && BOOST_PP_ITERATION_FINISH_3 >= 238 +# define BOOST_PP_ITERATION_3 238 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 239 && BOOST_PP_ITERATION_FINISH_3 >= 239 +# define BOOST_PP_ITERATION_3 239 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 240 && BOOST_PP_ITERATION_FINISH_3 >= 240 +# define BOOST_PP_ITERATION_3 240 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 241 && BOOST_PP_ITERATION_FINISH_3 >= 241 +# define BOOST_PP_ITERATION_3 241 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 242 && BOOST_PP_ITERATION_FINISH_3 >= 242 +# define BOOST_PP_ITERATION_3 242 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 243 && BOOST_PP_ITERATION_FINISH_3 >= 243 +# define BOOST_PP_ITERATION_3 243 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 244 && BOOST_PP_ITERATION_FINISH_3 >= 244 +# define BOOST_PP_ITERATION_3 244 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 245 && BOOST_PP_ITERATION_FINISH_3 >= 245 +# define BOOST_PP_ITERATION_3 245 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 246 && BOOST_PP_ITERATION_FINISH_3 >= 246 +# define BOOST_PP_ITERATION_3 246 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 247 && BOOST_PP_ITERATION_FINISH_3 >= 247 +# define BOOST_PP_ITERATION_3 247 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 248 && BOOST_PP_ITERATION_FINISH_3 >= 248 +# define BOOST_PP_ITERATION_3 248 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 249 && BOOST_PP_ITERATION_FINISH_3 >= 249 +# define BOOST_PP_ITERATION_3 249 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 250 && BOOST_PP_ITERATION_FINISH_3 >= 250 +# define BOOST_PP_ITERATION_3 250 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 251 && BOOST_PP_ITERATION_FINISH_3 >= 251 +# define BOOST_PP_ITERATION_3 251 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 252 && BOOST_PP_ITERATION_FINISH_3 >= 252 +# define BOOST_PP_ITERATION_3 252 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 253 && BOOST_PP_ITERATION_FINISH_3 >= 253 +# define BOOST_PP_ITERATION_3 253 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 254 && BOOST_PP_ITERATION_FINISH_3 >= 254 +# define BOOST_PP_ITERATION_3 254 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 255 && BOOST_PP_ITERATION_FINISH_3 >= 255 +# define BOOST_PP_ITERATION_3 255 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 256 && BOOST_PP_ITERATION_FINISH_3 >= 256 +# define BOOST_PP_ITERATION_3 256 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward3_512.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward3_512.hpp new file mode 100644 index 000000000..c3abc2bd4 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward3_512.hpp @@ -0,0 +1,1293 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_START_3 <= 257 && BOOST_PP_ITERATION_FINISH_3 >= 257 +# define BOOST_PP_ITERATION_3 257 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 258 && BOOST_PP_ITERATION_FINISH_3 >= 258 +# define BOOST_PP_ITERATION_3 258 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 259 && BOOST_PP_ITERATION_FINISH_3 >= 259 +# define BOOST_PP_ITERATION_3 259 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 260 && BOOST_PP_ITERATION_FINISH_3 >= 260 +# define BOOST_PP_ITERATION_3 260 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 261 && BOOST_PP_ITERATION_FINISH_3 >= 261 +# define BOOST_PP_ITERATION_3 261 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 262 && BOOST_PP_ITERATION_FINISH_3 >= 262 +# define BOOST_PP_ITERATION_3 262 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 263 && BOOST_PP_ITERATION_FINISH_3 >= 263 +# define BOOST_PP_ITERATION_3 263 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 264 && BOOST_PP_ITERATION_FINISH_3 >= 264 +# define BOOST_PP_ITERATION_3 264 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 265 && BOOST_PP_ITERATION_FINISH_3 >= 265 +# define BOOST_PP_ITERATION_3 265 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 266 && BOOST_PP_ITERATION_FINISH_3 >= 266 +# define BOOST_PP_ITERATION_3 266 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 267 && BOOST_PP_ITERATION_FINISH_3 >= 267 +# define BOOST_PP_ITERATION_3 267 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 268 && BOOST_PP_ITERATION_FINISH_3 >= 268 +# define BOOST_PP_ITERATION_3 268 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 269 && BOOST_PP_ITERATION_FINISH_3 >= 269 +# define BOOST_PP_ITERATION_3 269 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 270 && BOOST_PP_ITERATION_FINISH_3 >= 270 +# define BOOST_PP_ITERATION_3 270 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 271 && BOOST_PP_ITERATION_FINISH_3 >= 271 +# define BOOST_PP_ITERATION_3 271 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 272 && BOOST_PP_ITERATION_FINISH_3 >= 272 +# define BOOST_PP_ITERATION_3 272 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 273 && BOOST_PP_ITERATION_FINISH_3 >= 273 +# define BOOST_PP_ITERATION_3 273 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 274 && BOOST_PP_ITERATION_FINISH_3 >= 274 +# define BOOST_PP_ITERATION_3 274 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 275 && BOOST_PP_ITERATION_FINISH_3 >= 275 +# define BOOST_PP_ITERATION_3 275 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 276 && BOOST_PP_ITERATION_FINISH_3 >= 276 +# define BOOST_PP_ITERATION_3 276 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 277 && BOOST_PP_ITERATION_FINISH_3 >= 277 +# define BOOST_PP_ITERATION_3 277 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 278 && BOOST_PP_ITERATION_FINISH_3 >= 278 +# define BOOST_PP_ITERATION_3 278 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 279 && BOOST_PP_ITERATION_FINISH_3 >= 279 +# define BOOST_PP_ITERATION_3 279 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 280 && BOOST_PP_ITERATION_FINISH_3 >= 280 +# define BOOST_PP_ITERATION_3 280 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 281 && BOOST_PP_ITERATION_FINISH_3 >= 281 +# define BOOST_PP_ITERATION_3 281 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 282 && BOOST_PP_ITERATION_FINISH_3 >= 282 +# define BOOST_PP_ITERATION_3 282 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 283 && BOOST_PP_ITERATION_FINISH_3 >= 283 +# define BOOST_PP_ITERATION_3 283 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 284 && BOOST_PP_ITERATION_FINISH_3 >= 284 +# define BOOST_PP_ITERATION_3 284 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 285 && BOOST_PP_ITERATION_FINISH_3 >= 285 +# define BOOST_PP_ITERATION_3 285 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 286 && BOOST_PP_ITERATION_FINISH_3 >= 286 +# define BOOST_PP_ITERATION_3 286 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 287 && BOOST_PP_ITERATION_FINISH_3 >= 287 +# define BOOST_PP_ITERATION_3 287 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 288 && BOOST_PP_ITERATION_FINISH_3 >= 288 +# define BOOST_PP_ITERATION_3 288 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 289 && BOOST_PP_ITERATION_FINISH_3 >= 289 +# define BOOST_PP_ITERATION_3 289 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 290 && BOOST_PP_ITERATION_FINISH_3 >= 290 +# define BOOST_PP_ITERATION_3 290 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 291 && BOOST_PP_ITERATION_FINISH_3 >= 291 +# define BOOST_PP_ITERATION_3 291 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 292 && BOOST_PP_ITERATION_FINISH_3 >= 292 +# define BOOST_PP_ITERATION_3 292 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 293 && BOOST_PP_ITERATION_FINISH_3 >= 293 +# define BOOST_PP_ITERATION_3 293 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 294 && BOOST_PP_ITERATION_FINISH_3 >= 294 +# define BOOST_PP_ITERATION_3 294 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 295 && BOOST_PP_ITERATION_FINISH_3 >= 295 +# define BOOST_PP_ITERATION_3 295 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 296 && BOOST_PP_ITERATION_FINISH_3 >= 296 +# define BOOST_PP_ITERATION_3 296 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 297 && BOOST_PP_ITERATION_FINISH_3 >= 297 +# define BOOST_PP_ITERATION_3 297 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 298 && BOOST_PP_ITERATION_FINISH_3 >= 298 +# define BOOST_PP_ITERATION_3 298 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 299 && BOOST_PP_ITERATION_FINISH_3 >= 299 +# define BOOST_PP_ITERATION_3 299 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 300 && BOOST_PP_ITERATION_FINISH_3 >= 300 +# define BOOST_PP_ITERATION_3 300 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 301 && BOOST_PP_ITERATION_FINISH_3 >= 301 +# define BOOST_PP_ITERATION_3 301 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 302 && BOOST_PP_ITERATION_FINISH_3 >= 302 +# define BOOST_PP_ITERATION_3 302 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 303 && BOOST_PP_ITERATION_FINISH_3 >= 303 +# define BOOST_PP_ITERATION_3 303 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 304 && BOOST_PP_ITERATION_FINISH_3 >= 304 +# define BOOST_PP_ITERATION_3 304 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 305 && BOOST_PP_ITERATION_FINISH_3 >= 305 +# define BOOST_PP_ITERATION_3 305 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 306 && BOOST_PP_ITERATION_FINISH_3 >= 306 +# define BOOST_PP_ITERATION_3 306 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 307 && BOOST_PP_ITERATION_FINISH_3 >= 307 +# define BOOST_PP_ITERATION_3 307 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 308 && BOOST_PP_ITERATION_FINISH_3 >= 308 +# define BOOST_PP_ITERATION_3 308 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 309 && BOOST_PP_ITERATION_FINISH_3 >= 309 +# define BOOST_PP_ITERATION_3 309 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 310 && BOOST_PP_ITERATION_FINISH_3 >= 310 +# define BOOST_PP_ITERATION_3 310 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 311 && BOOST_PP_ITERATION_FINISH_3 >= 311 +# define BOOST_PP_ITERATION_3 311 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 312 && BOOST_PP_ITERATION_FINISH_3 >= 312 +# define BOOST_PP_ITERATION_3 312 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 313 && BOOST_PP_ITERATION_FINISH_3 >= 313 +# define BOOST_PP_ITERATION_3 313 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 314 && BOOST_PP_ITERATION_FINISH_3 >= 314 +# define BOOST_PP_ITERATION_3 314 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 315 && BOOST_PP_ITERATION_FINISH_3 >= 315 +# define BOOST_PP_ITERATION_3 315 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 316 && BOOST_PP_ITERATION_FINISH_3 >= 316 +# define BOOST_PP_ITERATION_3 316 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 317 && BOOST_PP_ITERATION_FINISH_3 >= 317 +# define BOOST_PP_ITERATION_3 317 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 318 && BOOST_PP_ITERATION_FINISH_3 >= 318 +# define BOOST_PP_ITERATION_3 318 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 319 && BOOST_PP_ITERATION_FINISH_3 >= 319 +# define BOOST_PP_ITERATION_3 319 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 320 && BOOST_PP_ITERATION_FINISH_3 >= 320 +# define BOOST_PP_ITERATION_3 320 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 321 && BOOST_PP_ITERATION_FINISH_3 >= 321 +# define BOOST_PP_ITERATION_3 321 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 322 && BOOST_PP_ITERATION_FINISH_3 >= 322 +# define BOOST_PP_ITERATION_3 322 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 323 && BOOST_PP_ITERATION_FINISH_3 >= 323 +# define BOOST_PP_ITERATION_3 323 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 324 && BOOST_PP_ITERATION_FINISH_3 >= 324 +# define BOOST_PP_ITERATION_3 324 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 325 && BOOST_PP_ITERATION_FINISH_3 >= 325 +# define BOOST_PP_ITERATION_3 325 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 326 && BOOST_PP_ITERATION_FINISH_3 >= 326 +# define BOOST_PP_ITERATION_3 326 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 327 && BOOST_PP_ITERATION_FINISH_3 >= 327 +# define BOOST_PP_ITERATION_3 327 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 328 && BOOST_PP_ITERATION_FINISH_3 >= 328 +# define BOOST_PP_ITERATION_3 328 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 329 && BOOST_PP_ITERATION_FINISH_3 >= 329 +# define BOOST_PP_ITERATION_3 329 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 330 && BOOST_PP_ITERATION_FINISH_3 >= 330 +# define BOOST_PP_ITERATION_3 330 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 331 && BOOST_PP_ITERATION_FINISH_3 >= 331 +# define BOOST_PP_ITERATION_3 331 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 332 && BOOST_PP_ITERATION_FINISH_3 >= 332 +# define BOOST_PP_ITERATION_3 332 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 333 && BOOST_PP_ITERATION_FINISH_3 >= 333 +# define BOOST_PP_ITERATION_3 333 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 334 && BOOST_PP_ITERATION_FINISH_3 >= 334 +# define BOOST_PP_ITERATION_3 334 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 335 && BOOST_PP_ITERATION_FINISH_3 >= 335 +# define BOOST_PP_ITERATION_3 335 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 336 && BOOST_PP_ITERATION_FINISH_3 >= 336 +# define BOOST_PP_ITERATION_3 336 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 337 && BOOST_PP_ITERATION_FINISH_3 >= 337 +# define BOOST_PP_ITERATION_3 337 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 338 && BOOST_PP_ITERATION_FINISH_3 >= 338 +# define BOOST_PP_ITERATION_3 338 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 339 && BOOST_PP_ITERATION_FINISH_3 >= 339 +# define BOOST_PP_ITERATION_3 339 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 340 && BOOST_PP_ITERATION_FINISH_3 >= 340 +# define BOOST_PP_ITERATION_3 340 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 341 && BOOST_PP_ITERATION_FINISH_3 >= 341 +# define BOOST_PP_ITERATION_3 341 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 342 && BOOST_PP_ITERATION_FINISH_3 >= 342 +# define BOOST_PP_ITERATION_3 342 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 343 && BOOST_PP_ITERATION_FINISH_3 >= 343 +# define BOOST_PP_ITERATION_3 343 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 344 && BOOST_PP_ITERATION_FINISH_3 >= 344 +# define BOOST_PP_ITERATION_3 344 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 345 && BOOST_PP_ITERATION_FINISH_3 >= 345 +# define BOOST_PP_ITERATION_3 345 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 346 && BOOST_PP_ITERATION_FINISH_3 >= 346 +# define BOOST_PP_ITERATION_3 346 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 347 && BOOST_PP_ITERATION_FINISH_3 >= 347 +# define BOOST_PP_ITERATION_3 347 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 348 && BOOST_PP_ITERATION_FINISH_3 >= 348 +# define BOOST_PP_ITERATION_3 348 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 349 && BOOST_PP_ITERATION_FINISH_3 >= 349 +# define BOOST_PP_ITERATION_3 349 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 350 && BOOST_PP_ITERATION_FINISH_3 >= 350 +# define BOOST_PP_ITERATION_3 350 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 351 && BOOST_PP_ITERATION_FINISH_3 >= 351 +# define BOOST_PP_ITERATION_3 351 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 352 && BOOST_PP_ITERATION_FINISH_3 >= 352 +# define BOOST_PP_ITERATION_3 352 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 353 && BOOST_PP_ITERATION_FINISH_3 >= 353 +# define BOOST_PP_ITERATION_3 353 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 354 && BOOST_PP_ITERATION_FINISH_3 >= 354 +# define BOOST_PP_ITERATION_3 354 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 355 && BOOST_PP_ITERATION_FINISH_3 >= 355 +# define BOOST_PP_ITERATION_3 355 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 356 && BOOST_PP_ITERATION_FINISH_3 >= 356 +# define BOOST_PP_ITERATION_3 356 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 357 && BOOST_PP_ITERATION_FINISH_3 >= 357 +# define BOOST_PP_ITERATION_3 357 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 358 && BOOST_PP_ITERATION_FINISH_3 >= 358 +# define BOOST_PP_ITERATION_3 358 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 359 && BOOST_PP_ITERATION_FINISH_3 >= 359 +# define BOOST_PP_ITERATION_3 359 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 360 && BOOST_PP_ITERATION_FINISH_3 >= 360 +# define BOOST_PP_ITERATION_3 360 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 361 && BOOST_PP_ITERATION_FINISH_3 >= 361 +# define BOOST_PP_ITERATION_3 361 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 362 && BOOST_PP_ITERATION_FINISH_3 >= 362 +# define BOOST_PP_ITERATION_3 362 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 363 && BOOST_PP_ITERATION_FINISH_3 >= 363 +# define BOOST_PP_ITERATION_3 363 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 364 && BOOST_PP_ITERATION_FINISH_3 >= 364 +# define BOOST_PP_ITERATION_3 364 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 365 && BOOST_PP_ITERATION_FINISH_3 >= 365 +# define BOOST_PP_ITERATION_3 365 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 366 && BOOST_PP_ITERATION_FINISH_3 >= 366 +# define BOOST_PP_ITERATION_3 366 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 367 && BOOST_PP_ITERATION_FINISH_3 >= 367 +# define BOOST_PP_ITERATION_3 367 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 368 && BOOST_PP_ITERATION_FINISH_3 >= 368 +# define BOOST_PP_ITERATION_3 368 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 369 && BOOST_PP_ITERATION_FINISH_3 >= 369 +# define BOOST_PP_ITERATION_3 369 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 370 && BOOST_PP_ITERATION_FINISH_3 >= 370 +# define BOOST_PP_ITERATION_3 370 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 371 && BOOST_PP_ITERATION_FINISH_3 >= 371 +# define BOOST_PP_ITERATION_3 371 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 372 && BOOST_PP_ITERATION_FINISH_3 >= 372 +# define BOOST_PP_ITERATION_3 372 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 373 && BOOST_PP_ITERATION_FINISH_3 >= 373 +# define BOOST_PP_ITERATION_3 373 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 374 && BOOST_PP_ITERATION_FINISH_3 >= 374 +# define BOOST_PP_ITERATION_3 374 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 375 && BOOST_PP_ITERATION_FINISH_3 >= 375 +# define BOOST_PP_ITERATION_3 375 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 376 && BOOST_PP_ITERATION_FINISH_3 >= 376 +# define BOOST_PP_ITERATION_3 376 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 377 && BOOST_PP_ITERATION_FINISH_3 >= 377 +# define BOOST_PP_ITERATION_3 377 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 378 && BOOST_PP_ITERATION_FINISH_3 >= 378 +# define BOOST_PP_ITERATION_3 378 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 379 && BOOST_PP_ITERATION_FINISH_3 >= 379 +# define BOOST_PP_ITERATION_3 379 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 380 && BOOST_PP_ITERATION_FINISH_3 >= 380 +# define BOOST_PP_ITERATION_3 380 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 381 && BOOST_PP_ITERATION_FINISH_3 >= 381 +# define BOOST_PP_ITERATION_3 381 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 382 && BOOST_PP_ITERATION_FINISH_3 >= 382 +# define BOOST_PP_ITERATION_3 382 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 383 && BOOST_PP_ITERATION_FINISH_3 >= 383 +# define BOOST_PP_ITERATION_3 383 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 384 && BOOST_PP_ITERATION_FINISH_3 >= 384 +# define BOOST_PP_ITERATION_3 384 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 385 && BOOST_PP_ITERATION_FINISH_3 >= 385 +# define BOOST_PP_ITERATION_3 385 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 386 && BOOST_PP_ITERATION_FINISH_3 >= 386 +# define BOOST_PP_ITERATION_3 386 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 387 && BOOST_PP_ITERATION_FINISH_3 >= 387 +# define BOOST_PP_ITERATION_3 387 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 388 && BOOST_PP_ITERATION_FINISH_3 >= 388 +# define BOOST_PP_ITERATION_3 388 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 389 && BOOST_PP_ITERATION_FINISH_3 >= 389 +# define BOOST_PP_ITERATION_3 389 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 390 && BOOST_PP_ITERATION_FINISH_3 >= 390 +# define BOOST_PP_ITERATION_3 390 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 391 && BOOST_PP_ITERATION_FINISH_3 >= 391 +# define BOOST_PP_ITERATION_3 391 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 392 && BOOST_PP_ITERATION_FINISH_3 >= 392 +# define BOOST_PP_ITERATION_3 392 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 393 && BOOST_PP_ITERATION_FINISH_3 >= 393 +# define BOOST_PP_ITERATION_3 393 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 394 && BOOST_PP_ITERATION_FINISH_3 >= 394 +# define BOOST_PP_ITERATION_3 394 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 395 && BOOST_PP_ITERATION_FINISH_3 >= 395 +# define BOOST_PP_ITERATION_3 395 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 396 && BOOST_PP_ITERATION_FINISH_3 >= 396 +# define BOOST_PP_ITERATION_3 396 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 397 && BOOST_PP_ITERATION_FINISH_3 >= 397 +# define BOOST_PP_ITERATION_3 397 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 398 && BOOST_PP_ITERATION_FINISH_3 >= 398 +# define BOOST_PP_ITERATION_3 398 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 399 && BOOST_PP_ITERATION_FINISH_3 >= 399 +# define BOOST_PP_ITERATION_3 399 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 400 && BOOST_PP_ITERATION_FINISH_3 >= 400 +# define BOOST_PP_ITERATION_3 400 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 401 && BOOST_PP_ITERATION_FINISH_3 >= 401 +# define BOOST_PP_ITERATION_3 401 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 402 && BOOST_PP_ITERATION_FINISH_3 >= 402 +# define BOOST_PP_ITERATION_3 402 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 403 && BOOST_PP_ITERATION_FINISH_3 >= 403 +# define BOOST_PP_ITERATION_3 403 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 404 && BOOST_PP_ITERATION_FINISH_3 >= 404 +# define BOOST_PP_ITERATION_3 404 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 405 && BOOST_PP_ITERATION_FINISH_3 >= 405 +# define BOOST_PP_ITERATION_3 405 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 406 && BOOST_PP_ITERATION_FINISH_3 >= 406 +# define BOOST_PP_ITERATION_3 406 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 407 && BOOST_PP_ITERATION_FINISH_3 >= 407 +# define BOOST_PP_ITERATION_3 407 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 408 && BOOST_PP_ITERATION_FINISH_3 >= 408 +# define BOOST_PP_ITERATION_3 408 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 409 && BOOST_PP_ITERATION_FINISH_3 >= 409 +# define BOOST_PP_ITERATION_3 409 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 410 && BOOST_PP_ITERATION_FINISH_3 >= 410 +# define BOOST_PP_ITERATION_3 410 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 411 && BOOST_PP_ITERATION_FINISH_3 >= 411 +# define BOOST_PP_ITERATION_3 411 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 412 && BOOST_PP_ITERATION_FINISH_3 >= 412 +# define BOOST_PP_ITERATION_3 412 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 413 && BOOST_PP_ITERATION_FINISH_3 >= 413 +# define BOOST_PP_ITERATION_3 413 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 414 && BOOST_PP_ITERATION_FINISH_3 >= 414 +# define BOOST_PP_ITERATION_3 414 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 415 && BOOST_PP_ITERATION_FINISH_3 >= 415 +# define BOOST_PP_ITERATION_3 415 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 416 && BOOST_PP_ITERATION_FINISH_3 >= 416 +# define BOOST_PP_ITERATION_3 416 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 417 && BOOST_PP_ITERATION_FINISH_3 >= 417 +# define BOOST_PP_ITERATION_3 417 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 418 && BOOST_PP_ITERATION_FINISH_3 >= 418 +# define BOOST_PP_ITERATION_3 418 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 419 && BOOST_PP_ITERATION_FINISH_3 >= 419 +# define BOOST_PP_ITERATION_3 419 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 420 && BOOST_PP_ITERATION_FINISH_3 >= 420 +# define BOOST_PP_ITERATION_3 420 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 421 && BOOST_PP_ITERATION_FINISH_3 >= 421 +# define BOOST_PP_ITERATION_3 421 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 422 && BOOST_PP_ITERATION_FINISH_3 >= 422 +# define BOOST_PP_ITERATION_3 422 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 423 && BOOST_PP_ITERATION_FINISH_3 >= 423 +# define BOOST_PP_ITERATION_3 423 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 424 && BOOST_PP_ITERATION_FINISH_3 >= 424 +# define BOOST_PP_ITERATION_3 424 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 425 && BOOST_PP_ITERATION_FINISH_3 >= 425 +# define BOOST_PP_ITERATION_3 425 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 426 && BOOST_PP_ITERATION_FINISH_3 >= 426 +# define BOOST_PP_ITERATION_3 426 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 427 && BOOST_PP_ITERATION_FINISH_3 >= 427 +# define BOOST_PP_ITERATION_3 427 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 428 && BOOST_PP_ITERATION_FINISH_3 >= 428 +# define BOOST_PP_ITERATION_3 428 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 429 && BOOST_PP_ITERATION_FINISH_3 >= 429 +# define BOOST_PP_ITERATION_3 429 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 430 && BOOST_PP_ITERATION_FINISH_3 >= 430 +# define BOOST_PP_ITERATION_3 430 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 431 && BOOST_PP_ITERATION_FINISH_3 >= 431 +# define BOOST_PP_ITERATION_3 431 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 432 && BOOST_PP_ITERATION_FINISH_3 >= 432 +# define BOOST_PP_ITERATION_3 432 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 433 && BOOST_PP_ITERATION_FINISH_3 >= 433 +# define BOOST_PP_ITERATION_3 433 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 434 && BOOST_PP_ITERATION_FINISH_3 >= 434 +# define BOOST_PP_ITERATION_3 434 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 435 && BOOST_PP_ITERATION_FINISH_3 >= 435 +# define BOOST_PP_ITERATION_3 435 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 436 && BOOST_PP_ITERATION_FINISH_3 >= 436 +# define BOOST_PP_ITERATION_3 436 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 437 && BOOST_PP_ITERATION_FINISH_3 >= 437 +# define BOOST_PP_ITERATION_3 437 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 438 && BOOST_PP_ITERATION_FINISH_3 >= 438 +# define BOOST_PP_ITERATION_3 438 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 439 && BOOST_PP_ITERATION_FINISH_3 >= 439 +# define BOOST_PP_ITERATION_3 439 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 440 && BOOST_PP_ITERATION_FINISH_3 >= 440 +# define BOOST_PP_ITERATION_3 440 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 441 && BOOST_PP_ITERATION_FINISH_3 >= 441 +# define BOOST_PP_ITERATION_3 441 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 442 && BOOST_PP_ITERATION_FINISH_3 >= 442 +# define BOOST_PP_ITERATION_3 442 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 443 && BOOST_PP_ITERATION_FINISH_3 >= 443 +# define BOOST_PP_ITERATION_3 443 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 444 && BOOST_PP_ITERATION_FINISH_3 >= 444 +# define BOOST_PP_ITERATION_3 444 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 445 && BOOST_PP_ITERATION_FINISH_3 >= 445 +# define BOOST_PP_ITERATION_3 445 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 446 && BOOST_PP_ITERATION_FINISH_3 >= 446 +# define BOOST_PP_ITERATION_3 446 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 447 && BOOST_PP_ITERATION_FINISH_3 >= 447 +# define BOOST_PP_ITERATION_3 447 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 448 && BOOST_PP_ITERATION_FINISH_3 >= 448 +# define BOOST_PP_ITERATION_3 448 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 449 && BOOST_PP_ITERATION_FINISH_3 >= 449 +# define BOOST_PP_ITERATION_3 449 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 450 && BOOST_PP_ITERATION_FINISH_3 >= 450 +# define BOOST_PP_ITERATION_3 450 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 451 && BOOST_PP_ITERATION_FINISH_3 >= 451 +# define BOOST_PP_ITERATION_3 451 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 452 && BOOST_PP_ITERATION_FINISH_3 >= 452 +# define BOOST_PP_ITERATION_3 452 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 453 && BOOST_PP_ITERATION_FINISH_3 >= 453 +# define BOOST_PP_ITERATION_3 453 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 454 && BOOST_PP_ITERATION_FINISH_3 >= 454 +# define BOOST_PP_ITERATION_3 454 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 455 && BOOST_PP_ITERATION_FINISH_3 >= 455 +# define BOOST_PP_ITERATION_3 455 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 456 && BOOST_PP_ITERATION_FINISH_3 >= 456 +# define BOOST_PP_ITERATION_3 456 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 457 && BOOST_PP_ITERATION_FINISH_3 >= 457 +# define BOOST_PP_ITERATION_3 457 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 458 && BOOST_PP_ITERATION_FINISH_3 >= 458 +# define BOOST_PP_ITERATION_3 458 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 459 && BOOST_PP_ITERATION_FINISH_3 >= 459 +# define BOOST_PP_ITERATION_3 459 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 460 && BOOST_PP_ITERATION_FINISH_3 >= 460 +# define BOOST_PP_ITERATION_3 460 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 461 && BOOST_PP_ITERATION_FINISH_3 >= 461 +# define BOOST_PP_ITERATION_3 461 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 462 && BOOST_PP_ITERATION_FINISH_3 >= 462 +# define BOOST_PP_ITERATION_3 462 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 463 && BOOST_PP_ITERATION_FINISH_3 >= 463 +# define BOOST_PP_ITERATION_3 463 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 464 && BOOST_PP_ITERATION_FINISH_3 >= 464 +# define BOOST_PP_ITERATION_3 464 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 465 && BOOST_PP_ITERATION_FINISH_3 >= 465 +# define BOOST_PP_ITERATION_3 465 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 466 && BOOST_PP_ITERATION_FINISH_3 >= 466 +# define BOOST_PP_ITERATION_3 466 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 467 && BOOST_PP_ITERATION_FINISH_3 >= 467 +# define BOOST_PP_ITERATION_3 467 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 468 && BOOST_PP_ITERATION_FINISH_3 >= 468 +# define BOOST_PP_ITERATION_3 468 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 469 && BOOST_PP_ITERATION_FINISH_3 >= 469 +# define BOOST_PP_ITERATION_3 469 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 470 && BOOST_PP_ITERATION_FINISH_3 >= 470 +# define BOOST_PP_ITERATION_3 470 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 471 && BOOST_PP_ITERATION_FINISH_3 >= 471 +# define BOOST_PP_ITERATION_3 471 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 472 && BOOST_PP_ITERATION_FINISH_3 >= 472 +# define BOOST_PP_ITERATION_3 472 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 473 && BOOST_PP_ITERATION_FINISH_3 >= 473 +# define BOOST_PP_ITERATION_3 473 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 474 && BOOST_PP_ITERATION_FINISH_3 >= 474 +# define BOOST_PP_ITERATION_3 474 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 475 && BOOST_PP_ITERATION_FINISH_3 >= 475 +# define BOOST_PP_ITERATION_3 475 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 476 && BOOST_PP_ITERATION_FINISH_3 >= 476 +# define BOOST_PP_ITERATION_3 476 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 477 && BOOST_PP_ITERATION_FINISH_3 >= 477 +# define BOOST_PP_ITERATION_3 477 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 478 && BOOST_PP_ITERATION_FINISH_3 >= 478 +# define BOOST_PP_ITERATION_3 478 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 479 && BOOST_PP_ITERATION_FINISH_3 >= 479 +# define BOOST_PP_ITERATION_3 479 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 480 && BOOST_PP_ITERATION_FINISH_3 >= 480 +# define BOOST_PP_ITERATION_3 480 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 481 && BOOST_PP_ITERATION_FINISH_3 >= 481 +# define BOOST_PP_ITERATION_3 481 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 482 && BOOST_PP_ITERATION_FINISH_3 >= 482 +# define BOOST_PP_ITERATION_3 482 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 483 && BOOST_PP_ITERATION_FINISH_3 >= 483 +# define BOOST_PP_ITERATION_3 483 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 484 && BOOST_PP_ITERATION_FINISH_3 >= 484 +# define BOOST_PP_ITERATION_3 484 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 485 && BOOST_PP_ITERATION_FINISH_3 >= 485 +# define BOOST_PP_ITERATION_3 485 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 486 && BOOST_PP_ITERATION_FINISH_3 >= 486 +# define BOOST_PP_ITERATION_3 486 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 487 && BOOST_PP_ITERATION_FINISH_3 >= 487 +# define BOOST_PP_ITERATION_3 487 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 488 && BOOST_PP_ITERATION_FINISH_3 >= 488 +# define BOOST_PP_ITERATION_3 488 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 489 && BOOST_PP_ITERATION_FINISH_3 >= 489 +# define BOOST_PP_ITERATION_3 489 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 490 && BOOST_PP_ITERATION_FINISH_3 >= 490 +# define BOOST_PP_ITERATION_3 490 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 491 && BOOST_PP_ITERATION_FINISH_3 >= 491 +# define BOOST_PP_ITERATION_3 491 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 492 && BOOST_PP_ITERATION_FINISH_3 >= 492 +# define BOOST_PP_ITERATION_3 492 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 493 && BOOST_PP_ITERATION_FINISH_3 >= 493 +# define BOOST_PP_ITERATION_3 493 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 494 && BOOST_PP_ITERATION_FINISH_3 >= 494 +# define BOOST_PP_ITERATION_3 494 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 495 && BOOST_PP_ITERATION_FINISH_3 >= 495 +# define BOOST_PP_ITERATION_3 495 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 496 && BOOST_PP_ITERATION_FINISH_3 >= 496 +# define BOOST_PP_ITERATION_3 496 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 497 && BOOST_PP_ITERATION_FINISH_3 >= 497 +# define BOOST_PP_ITERATION_3 497 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 498 && BOOST_PP_ITERATION_FINISH_3 >= 498 +# define BOOST_PP_ITERATION_3 498 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 499 && BOOST_PP_ITERATION_FINISH_3 >= 499 +# define BOOST_PP_ITERATION_3 499 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 500 && BOOST_PP_ITERATION_FINISH_3 >= 500 +# define BOOST_PP_ITERATION_3 500 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 501 && BOOST_PP_ITERATION_FINISH_3 >= 501 +# define BOOST_PP_ITERATION_3 501 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 502 && BOOST_PP_ITERATION_FINISH_3 >= 502 +# define BOOST_PP_ITERATION_3 502 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 503 && BOOST_PP_ITERATION_FINISH_3 >= 503 +# define BOOST_PP_ITERATION_3 503 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 504 && BOOST_PP_ITERATION_FINISH_3 >= 504 +# define BOOST_PP_ITERATION_3 504 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 505 && BOOST_PP_ITERATION_FINISH_3 >= 505 +# define BOOST_PP_ITERATION_3 505 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 506 && BOOST_PP_ITERATION_FINISH_3 >= 506 +# define BOOST_PP_ITERATION_3 506 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 507 && BOOST_PP_ITERATION_FINISH_3 >= 507 +# define BOOST_PP_ITERATION_3 507 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 508 && BOOST_PP_ITERATION_FINISH_3 >= 508 +# define BOOST_PP_ITERATION_3 508 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 509 && BOOST_PP_ITERATION_FINISH_3 >= 509 +# define BOOST_PP_ITERATION_3 509 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 510 && BOOST_PP_ITERATION_FINISH_3 >= 510 +# define BOOST_PP_ITERATION_3 510 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 511 && BOOST_PP_ITERATION_FINISH_3 >= 511 +# define BOOST_PP_ITERATION_3 511 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_START_3 <= 512 && BOOST_PP_ITERATION_FINISH_3 >= 512 +# define BOOST_PP_ITERATION_3 512 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward4_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward4_1024.hpp new file mode 100644 index 000000000..5a463f0ae --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward4_1024.hpp @@ -0,0 +1,2573 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * Distributed under the Boost Software License, Version 1.0. (See +# * accompanying file LICENSE_4_0.txt or copy at +# * http://www.boost.org/LICENSE_4_0.txt) +# * * +# ************************************************************************** */ +# +# /* Revised by Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_START_4 <= 513 && BOOST_PP_ITERATION_FINISH_4 >= 513 +# define BOOST_PP_ITERATION_4 513 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 514 && BOOST_PP_ITERATION_FINISH_4 >= 514 +# define BOOST_PP_ITERATION_4 514 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 515 && BOOST_PP_ITERATION_FINISH_4 >= 515 +# define BOOST_PP_ITERATION_4 515 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 516 && BOOST_PP_ITERATION_FINISH_4 >= 516 +# define BOOST_PP_ITERATION_4 516 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 517 && BOOST_PP_ITERATION_FINISH_4 >= 517 +# define BOOST_PP_ITERATION_4 517 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 518 && BOOST_PP_ITERATION_FINISH_4 >= 518 +# define BOOST_PP_ITERATION_4 518 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 519 && BOOST_PP_ITERATION_FINISH_4 >= 519 +# define BOOST_PP_ITERATION_4 519 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 520 && BOOST_PP_ITERATION_FINISH_4 >= 520 +# define BOOST_PP_ITERATION_4 520 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 521 && BOOST_PP_ITERATION_FINISH_4 >= 521 +# define BOOST_PP_ITERATION_4 521 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 522 && BOOST_PP_ITERATION_FINISH_4 >= 522 +# define BOOST_PP_ITERATION_4 522 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 523 && BOOST_PP_ITERATION_FINISH_4 >= 523 +# define BOOST_PP_ITERATION_4 523 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 524 && BOOST_PP_ITERATION_FINISH_4 >= 524 +# define BOOST_PP_ITERATION_4 524 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 525 && BOOST_PP_ITERATION_FINISH_4 >= 525 +# define BOOST_PP_ITERATION_4 525 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 526 && BOOST_PP_ITERATION_FINISH_4 >= 526 +# define BOOST_PP_ITERATION_4 526 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 527 && BOOST_PP_ITERATION_FINISH_4 >= 527 +# define BOOST_PP_ITERATION_4 527 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 528 && BOOST_PP_ITERATION_FINISH_4 >= 528 +# define BOOST_PP_ITERATION_4 528 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 529 && BOOST_PP_ITERATION_FINISH_4 >= 529 +# define BOOST_PP_ITERATION_4 529 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 530 && BOOST_PP_ITERATION_FINISH_4 >= 530 +# define BOOST_PP_ITERATION_4 530 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 531 && BOOST_PP_ITERATION_FINISH_4 >= 531 +# define BOOST_PP_ITERATION_4 531 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 532 && BOOST_PP_ITERATION_FINISH_4 >= 532 +# define BOOST_PP_ITERATION_4 532 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 533 && BOOST_PP_ITERATION_FINISH_4 >= 533 +# define BOOST_PP_ITERATION_4 533 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 534 && BOOST_PP_ITERATION_FINISH_4 >= 534 +# define BOOST_PP_ITERATION_4 534 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 535 && BOOST_PP_ITERATION_FINISH_4 >= 535 +# define BOOST_PP_ITERATION_4 535 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 536 && BOOST_PP_ITERATION_FINISH_4 >= 536 +# define BOOST_PP_ITERATION_4 536 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 537 && BOOST_PP_ITERATION_FINISH_4 >= 537 +# define BOOST_PP_ITERATION_4 537 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 538 && BOOST_PP_ITERATION_FINISH_4 >= 538 +# define BOOST_PP_ITERATION_4 538 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 539 && BOOST_PP_ITERATION_FINISH_4 >= 539 +# define BOOST_PP_ITERATION_4 539 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 540 && BOOST_PP_ITERATION_FINISH_4 >= 540 +# define BOOST_PP_ITERATION_4 540 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 541 && BOOST_PP_ITERATION_FINISH_4 >= 541 +# define BOOST_PP_ITERATION_4 541 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 542 && BOOST_PP_ITERATION_FINISH_4 >= 542 +# define BOOST_PP_ITERATION_4 542 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 543 && BOOST_PP_ITERATION_FINISH_4 >= 543 +# define BOOST_PP_ITERATION_4 543 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 544 && BOOST_PP_ITERATION_FINISH_4 >= 544 +# define BOOST_PP_ITERATION_4 544 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 545 && BOOST_PP_ITERATION_FINISH_4 >= 545 +# define BOOST_PP_ITERATION_4 545 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 546 && BOOST_PP_ITERATION_FINISH_4 >= 546 +# define BOOST_PP_ITERATION_4 546 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 547 && BOOST_PP_ITERATION_FINISH_4 >= 547 +# define BOOST_PP_ITERATION_4 547 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 548 && BOOST_PP_ITERATION_FINISH_4 >= 548 +# define BOOST_PP_ITERATION_4 548 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 549 && BOOST_PP_ITERATION_FINISH_4 >= 549 +# define BOOST_PP_ITERATION_4 549 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 550 && BOOST_PP_ITERATION_FINISH_4 >= 550 +# define BOOST_PP_ITERATION_4 550 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 551 && BOOST_PP_ITERATION_FINISH_4 >= 551 +# define BOOST_PP_ITERATION_4 551 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 552 && BOOST_PP_ITERATION_FINISH_4 >= 552 +# define BOOST_PP_ITERATION_4 552 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 553 && BOOST_PP_ITERATION_FINISH_4 >= 553 +# define BOOST_PP_ITERATION_4 553 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 554 && BOOST_PP_ITERATION_FINISH_4 >= 554 +# define BOOST_PP_ITERATION_4 554 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 555 && BOOST_PP_ITERATION_FINISH_4 >= 555 +# define BOOST_PP_ITERATION_4 555 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 556 && BOOST_PP_ITERATION_FINISH_4 >= 556 +# define BOOST_PP_ITERATION_4 556 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 557 && BOOST_PP_ITERATION_FINISH_4 >= 557 +# define BOOST_PP_ITERATION_4 557 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 558 && BOOST_PP_ITERATION_FINISH_4 >= 558 +# define BOOST_PP_ITERATION_4 558 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 559 && BOOST_PP_ITERATION_FINISH_4 >= 559 +# define BOOST_PP_ITERATION_4 559 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 560 && BOOST_PP_ITERATION_FINISH_4 >= 560 +# define BOOST_PP_ITERATION_4 560 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 561 && BOOST_PP_ITERATION_FINISH_4 >= 561 +# define BOOST_PP_ITERATION_4 561 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 562 && BOOST_PP_ITERATION_FINISH_4 >= 562 +# define BOOST_PP_ITERATION_4 562 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 563 && BOOST_PP_ITERATION_FINISH_4 >= 563 +# define BOOST_PP_ITERATION_4 563 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 564 && BOOST_PP_ITERATION_FINISH_4 >= 564 +# define BOOST_PP_ITERATION_4 564 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 565 && BOOST_PP_ITERATION_FINISH_4 >= 565 +# define BOOST_PP_ITERATION_4 565 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 566 && BOOST_PP_ITERATION_FINISH_4 >= 566 +# define BOOST_PP_ITERATION_4 566 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 567 && BOOST_PP_ITERATION_FINISH_4 >= 567 +# define BOOST_PP_ITERATION_4 567 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 568 && BOOST_PP_ITERATION_FINISH_4 >= 568 +# define BOOST_PP_ITERATION_4 568 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 569 && BOOST_PP_ITERATION_FINISH_4 >= 569 +# define BOOST_PP_ITERATION_4 569 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 570 && BOOST_PP_ITERATION_FINISH_4 >= 570 +# define BOOST_PP_ITERATION_4 570 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 571 && BOOST_PP_ITERATION_FINISH_4 >= 571 +# define BOOST_PP_ITERATION_4 571 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 572 && BOOST_PP_ITERATION_FINISH_4 >= 572 +# define BOOST_PP_ITERATION_4 572 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 573 && BOOST_PP_ITERATION_FINISH_4 >= 573 +# define BOOST_PP_ITERATION_4 573 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 574 && BOOST_PP_ITERATION_FINISH_4 >= 574 +# define BOOST_PP_ITERATION_4 574 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 575 && BOOST_PP_ITERATION_FINISH_4 >= 575 +# define BOOST_PP_ITERATION_4 575 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 576 && BOOST_PP_ITERATION_FINISH_4 >= 576 +# define BOOST_PP_ITERATION_4 576 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 577 && BOOST_PP_ITERATION_FINISH_4 >= 577 +# define BOOST_PP_ITERATION_4 577 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 578 && BOOST_PP_ITERATION_FINISH_4 >= 578 +# define BOOST_PP_ITERATION_4 578 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 579 && BOOST_PP_ITERATION_FINISH_4 >= 579 +# define BOOST_PP_ITERATION_4 579 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 580 && BOOST_PP_ITERATION_FINISH_4 >= 580 +# define BOOST_PP_ITERATION_4 580 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 581 && BOOST_PP_ITERATION_FINISH_4 >= 581 +# define BOOST_PP_ITERATION_4 581 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 582 && BOOST_PP_ITERATION_FINISH_4 >= 582 +# define BOOST_PP_ITERATION_4 582 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 583 && BOOST_PP_ITERATION_FINISH_4 >= 583 +# define BOOST_PP_ITERATION_4 583 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 584 && BOOST_PP_ITERATION_FINISH_4 >= 584 +# define BOOST_PP_ITERATION_4 584 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 585 && BOOST_PP_ITERATION_FINISH_4 >= 585 +# define BOOST_PP_ITERATION_4 585 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 586 && BOOST_PP_ITERATION_FINISH_4 >= 586 +# define BOOST_PP_ITERATION_4 586 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 587 && BOOST_PP_ITERATION_FINISH_4 >= 587 +# define BOOST_PP_ITERATION_4 587 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 588 && BOOST_PP_ITERATION_FINISH_4 >= 588 +# define BOOST_PP_ITERATION_4 588 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 589 && BOOST_PP_ITERATION_FINISH_4 >= 589 +# define BOOST_PP_ITERATION_4 589 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 590 && BOOST_PP_ITERATION_FINISH_4 >= 590 +# define BOOST_PP_ITERATION_4 590 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 591 && BOOST_PP_ITERATION_FINISH_4 >= 591 +# define BOOST_PP_ITERATION_4 591 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 592 && BOOST_PP_ITERATION_FINISH_4 >= 592 +# define BOOST_PP_ITERATION_4 592 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 593 && BOOST_PP_ITERATION_FINISH_4 >= 593 +# define BOOST_PP_ITERATION_4 593 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 594 && BOOST_PP_ITERATION_FINISH_4 >= 594 +# define BOOST_PP_ITERATION_4 594 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 595 && BOOST_PP_ITERATION_FINISH_4 >= 595 +# define BOOST_PP_ITERATION_4 595 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 596 && BOOST_PP_ITERATION_FINISH_4 >= 596 +# define BOOST_PP_ITERATION_4 596 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 597 && BOOST_PP_ITERATION_FINISH_4 >= 597 +# define BOOST_PP_ITERATION_4 597 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 598 && BOOST_PP_ITERATION_FINISH_4 >= 598 +# define BOOST_PP_ITERATION_4 598 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 599 && BOOST_PP_ITERATION_FINISH_4 >= 599 +# define BOOST_PP_ITERATION_4 599 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 600 && BOOST_PP_ITERATION_FINISH_4 >= 600 +# define BOOST_PP_ITERATION_4 600 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 601 && BOOST_PP_ITERATION_FINISH_4 >= 601 +# define BOOST_PP_ITERATION_4 601 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 602 && BOOST_PP_ITERATION_FINISH_4 >= 602 +# define BOOST_PP_ITERATION_4 602 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 603 && BOOST_PP_ITERATION_FINISH_4 >= 603 +# define BOOST_PP_ITERATION_4 603 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 604 && BOOST_PP_ITERATION_FINISH_4 >= 604 +# define BOOST_PP_ITERATION_4 604 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 605 && BOOST_PP_ITERATION_FINISH_4 >= 605 +# define BOOST_PP_ITERATION_4 605 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 606 && BOOST_PP_ITERATION_FINISH_4 >= 606 +# define BOOST_PP_ITERATION_4 606 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 607 && BOOST_PP_ITERATION_FINISH_4 >= 607 +# define BOOST_PP_ITERATION_4 607 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 608 && BOOST_PP_ITERATION_FINISH_4 >= 608 +# define BOOST_PP_ITERATION_4 608 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 609 && BOOST_PP_ITERATION_FINISH_4 >= 609 +# define BOOST_PP_ITERATION_4 609 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 610 && BOOST_PP_ITERATION_FINISH_4 >= 610 +# define BOOST_PP_ITERATION_4 610 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 611 && BOOST_PP_ITERATION_FINISH_4 >= 611 +# define BOOST_PP_ITERATION_4 611 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 612 && BOOST_PP_ITERATION_FINISH_4 >= 612 +# define BOOST_PP_ITERATION_4 612 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 613 && BOOST_PP_ITERATION_FINISH_4 >= 613 +# define BOOST_PP_ITERATION_4 613 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 614 && BOOST_PP_ITERATION_FINISH_4 >= 614 +# define BOOST_PP_ITERATION_4 614 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 615 && BOOST_PP_ITERATION_FINISH_4 >= 615 +# define BOOST_PP_ITERATION_4 615 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 616 && BOOST_PP_ITERATION_FINISH_4 >= 616 +# define BOOST_PP_ITERATION_4 616 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 617 && BOOST_PP_ITERATION_FINISH_4 >= 617 +# define BOOST_PP_ITERATION_4 617 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 618 && BOOST_PP_ITERATION_FINISH_4 >= 618 +# define BOOST_PP_ITERATION_4 618 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 619 && BOOST_PP_ITERATION_FINISH_4 >= 619 +# define BOOST_PP_ITERATION_4 619 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 620 && BOOST_PP_ITERATION_FINISH_4 >= 620 +# define BOOST_PP_ITERATION_4 620 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 621 && BOOST_PP_ITERATION_FINISH_4 >= 621 +# define BOOST_PP_ITERATION_4 621 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 622 && BOOST_PP_ITERATION_FINISH_4 >= 622 +# define BOOST_PP_ITERATION_4 622 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 623 && BOOST_PP_ITERATION_FINISH_4 >= 623 +# define BOOST_PP_ITERATION_4 623 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 624 && BOOST_PP_ITERATION_FINISH_4 >= 624 +# define BOOST_PP_ITERATION_4 624 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 625 && BOOST_PP_ITERATION_FINISH_4 >= 625 +# define BOOST_PP_ITERATION_4 625 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 626 && BOOST_PP_ITERATION_FINISH_4 >= 626 +# define BOOST_PP_ITERATION_4 626 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 627 && BOOST_PP_ITERATION_FINISH_4 >= 627 +# define BOOST_PP_ITERATION_4 627 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 628 && BOOST_PP_ITERATION_FINISH_4 >= 628 +# define BOOST_PP_ITERATION_4 628 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 629 && BOOST_PP_ITERATION_FINISH_4 >= 629 +# define BOOST_PP_ITERATION_4 629 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 630 && BOOST_PP_ITERATION_FINISH_4 >= 630 +# define BOOST_PP_ITERATION_4 630 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 631 && BOOST_PP_ITERATION_FINISH_4 >= 631 +# define BOOST_PP_ITERATION_4 631 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 632 && BOOST_PP_ITERATION_FINISH_4 >= 632 +# define BOOST_PP_ITERATION_4 632 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 633 && BOOST_PP_ITERATION_FINISH_4 >= 633 +# define BOOST_PP_ITERATION_4 633 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 634 && BOOST_PP_ITERATION_FINISH_4 >= 634 +# define BOOST_PP_ITERATION_4 634 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 635 && BOOST_PP_ITERATION_FINISH_4 >= 635 +# define BOOST_PP_ITERATION_4 635 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 636 && BOOST_PP_ITERATION_FINISH_4 >= 636 +# define BOOST_PP_ITERATION_4 636 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 637 && BOOST_PP_ITERATION_FINISH_4 >= 637 +# define BOOST_PP_ITERATION_4 637 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 638 && BOOST_PP_ITERATION_FINISH_4 >= 638 +# define BOOST_PP_ITERATION_4 638 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 639 && BOOST_PP_ITERATION_FINISH_4 >= 639 +# define BOOST_PP_ITERATION_4 639 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 640 && BOOST_PP_ITERATION_FINISH_4 >= 640 +# define BOOST_PP_ITERATION_4 640 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 641 && BOOST_PP_ITERATION_FINISH_4 >= 641 +# define BOOST_PP_ITERATION_4 641 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 642 && BOOST_PP_ITERATION_FINISH_4 >= 642 +# define BOOST_PP_ITERATION_4 642 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 643 && BOOST_PP_ITERATION_FINISH_4 >= 643 +# define BOOST_PP_ITERATION_4 643 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 644 && BOOST_PP_ITERATION_FINISH_4 >= 644 +# define BOOST_PP_ITERATION_4 644 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 645 && BOOST_PP_ITERATION_FINISH_4 >= 645 +# define BOOST_PP_ITERATION_4 645 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 646 && BOOST_PP_ITERATION_FINISH_4 >= 646 +# define BOOST_PP_ITERATION_4 646 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 647 && BOOST_PP_ITERATION_FINISH_4 >= 647 +# define BOOST_PP_ITERATION_4 647 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 648 && BOOST_PP_ITERATION_FINISH_4 >= 648 +# define BOOST_PP_ITERATION_4 648 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 649 && BOOST_PP_ITERATION_FINISH_4 >= 649 +# define BOOST_PP_ITERATION_4 649 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 650 && BOOST_PP_ITERATION_FINISH_4 >= 650 +# define BOOST_PP_ITERATION_4 650 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 651 && BOOST_PP_ITERATION_FINISH_4 >= 651 +# define BOOST_PP_ITERATION_4 651 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 652 && BOOST_PP_ITERATION_FINISH_4 >= 652 +# define BOOST_PP_ITERATION_4 652 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 653 && BOOST_PP_ITERATION_FINISH_4 >= 653 +# define BOOST_PP_ITERATION_4 653 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 654 && BOOST_PP_ITERATION_FINISH_4 >= 654 +# define BOOST_PP_ITERATION_4 654 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 655 && BOOST_PP_ITERATION_FINISH_4 >= 655 +# define BOOST_PP_ITERATION_4 655 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 656 && BOOST_PP_ITERATION_FINISH_4 >= 656 +# define BOOST_PP_ITERATION_4 656 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 657 && BOOST_PP_ITERATION_FINISH_4 >= 657 +# define BOOST_PP_ITERATION_4 657 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 658 && BOOST_PP_ITERATION_FINISH_4 >= 658 +# define BOOST_PP_ITERATION_4 658 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 659 && BOOST_PP_ITERATION_FINISH_4 >= 659 +# define BOOST_PP_ITERATION_4 659 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 660 && BOOST_PP_ITERATION_FINISH_4 >= 660 +# define BOOST_PP_ITERATION_4 660 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 661 && BOOST_PP_ITERATION_FINISH_4 >= 661 +# define BOOST_PP_ITERATION_4 661 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 662 && BOOST_PP_ITERATION_FINISH_4 >= 662 +# define BOOST_PP_ITERATION_4 662 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 663 && BOOST_PP_ITERATION_FINISH_4 >= 663 +# define BOOST_PP_ITERATION_4 663 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 664 && BOOST_PP_ITERATION_FINISH_4 >= 664 +# define BOOST_PP_ITERATION_4 664 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 665 && BOOST_PP_ITERATION_FINISH_4 >= 665 +# define BOOST_PP_ITERATION_4 665 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 666 && BOOST_PP_ITERATION_FINISH_4 >= 666 +# define BOOST_PP_ITERATION_4 666 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 667 && BOOST_PP_ITERATION_FINISH_4 >= 667 +# define BOOST_PP_ITERATION_4 667 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 668 && BOOST_PP_ITERATION_FINISH_4 >= 668 +# define BOOST_PP_ITERATION_4 668 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 669 && BOOST_PP_ITERATION_FINISH_4 >= 669 +# define BOOST_PP_ITERATION_4 669 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 670 && BOOST_PP_ITERATION_FINISH_4 >= 670 +# define BOOST_PP_ITERATION_4 670 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 671 && BOOST_PP_ITERATION_FINISH_4 >= 671 +# define BOOST_PP_ITERATION_4 671 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 672 && BOOST_PP_ITERATION_FINISH_4 >= 672 +# define BOOST_PP_ITERATION_4 672 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 673 && BOOST_PP_ITERATION_FINISH_4 >= 673 +# define BOOST_PP_ITERATION_4 673 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 674 && BOOST_PP_ITERATION_FINISH_4 >= 674 +# define BOOST_PP_ITERATION_4 674 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 675 && BOOST_PP_ITERATION_FINISH_4 >= 675 +# define BOOST_PP_ITERATION_4 675 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 676 && BOOST_PP_ITERATION_FINISH_4 >= 676 +# define BOOST_PP_ITERATION_4 676 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 677 && BOOST_PP_ITERATION_FINISH_4 >= 677 +# define BOOST_PP_ITERATION_4 677 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 678 && BOOST_PP_ITERATION_FINISH_4 >= 678 +# define BOOST_PP_ITERATION_4 678 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 679 && BOOST_PP_ITERATION_FINISH_4 >= 679 +# define BOOST_PP_ITERATION_4 679 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 680 && BOOST_PP_ITERATION_FINISH_4 >= 680 +# define BOOST_PP_ITERATION_4 680 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 681 && BOOST_PP_ITERATION_FINISH_4 >= 681 +# define BOOST_PP_ITERATION_4 681 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 682 && BOOST_PP_ITERATION_FINISH_4 >= 682 +# define BOOST_PP_ITERATION_4 682 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 683 && BOOST_PP_ITERATION_FINISH_4 >= 683 +# define BOOST_PP_ITERATION_4 683 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 684 && BOOST_PP_ITERATION_FINISH_4 >= 684 +# define BOOST_PP_ITERATION_4 684 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 685 && BOOST_PP_ITERATION_FINISH_4 >= 685 +# define BOOST_PP_ITERATION_4 685 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 686 && BOOST_PP_ITERATION_FINISH_4 >= 686 +# define BOOST_PP_ITERATION_4 686 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 687 && BOOST_PP_ITERATION_FINISH_4 >= 687 +# define BOOST_PP_ITERATION_4 687 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 688 && BOOST_PP_ITERATION_FINISH_4 >= 688 +# define BOOST_PP_ITERATION_4 688 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 689 && BOOST_PP_ITERATION_FINISH_4 >= 689 +# define BOOST_PP_ITERATION_4 689 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 690 && BOOST_PP_ITERATION_FINISH_4 >= 690 +# define BOOST_PP_ITERATION_4 690 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 691 && BOOST_PP_ITERATION_FINISH_4 >= 691 +# define BOOST_PP_ITERATION_4 691 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 692 && BOOST_PP_ITERATION_FINISH_4 >= 692 +# define BOOST_PP_ITERATION_4 692 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 693 && BOOST_PP_ITERATION_FINISH_4 >= 693 +# define BOOST_PP_ITERATION_4 693 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 694 && BOOST_PP_ITERATION_FINISH_4 >= 694 +# define BOOST_PP_ITERATION_4 694 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 695 && BOOST_PP_ITERATION_FINISH_4 >= 695 +# define BOOST_PP_ITERATION_4 695 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 696 && BOOST_PP_ITERATION_FINISH_4 >= 696 +# define BOOST_PP_ITERATION_4 696 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 697 && BOOST_PP_ITERATION_FINISH_4 >= 697 +# define BOOST_PP_ITERATION_4 697 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 698 && BOOST_PP_ITERATION_FINISH_4 >= 698 +# define BOOST_PP_ITERATION_4 698 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 699 && BOOST_PP_ITERATION_FINISH_4 >= 699 +# define BOOST_PP_ITERATION_4 699 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 700 && BOOST_PP_ITERATION_FINISH_4 >= 700 +# define BOOST_PP_ITERATION_4 700 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 701 && BOOST_PP_ITERATION_FINISH_4 >= 701 +# define BOOST_PP_ITERATION_4 701 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 702 && BOOST_PP_ITERATION_FINISH_4 >= 702 +# define BOOST_PP_ITERATION_4 702 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 703 && BOOST_PP_ITERATION_FINISH_4 >= 703 +# define BOOST_PP_ITERATION_4 703 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 704 && BOOST_PP_ITERATION_FINISH_4 >= 704 +# define BOOST_PP_ITERATION_4 704 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 705 && BOOST_PP_ITERATION_FINISH_4 >= 705 +# define BOOST_PP_ITERATION_4 705 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 706 && BOOST_PP_ITERATION_FINISH_4 >= 706 +# define BOOST_PP_ITERATION_4 706 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 707 && BOOST_PP_ITERATION_FINISH_4 >= 707 +# define BOOST_PP_ITERATION_4 707 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 708 && BOOST_PP_ITERATION_FINISH_4 >= 708 +# define BOOST_PP_ITERATION_4 708 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 709 && BOOST_PP_ITERATION_FINISH_4 >= 709 +# define BOOST_PP_ITERATION_4 709 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 710 && BOOST_PP_ITERATION_FINISH_4 >= 710 +# define BOOST_PP_ITERATION_4 710 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 711 && BOOST_PP_ITERATION_FINISH_4 >= 711 +# define BOOST_PP_ITERATION_4 711 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 712 && BOOST_PP_ITERATION_FINISH_4 >= 712 +# define BOOST_PP_ITERATION_4 712 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 713 && BOOST_PP_ITERATION_FINISH_4 >= 713 +# define BOOST_PP_ITERATION_4 713 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 714 && BOOST_PP_ITERATION_FINISH_4 >= 714 +# define BOOST_PP_ITERATION_4 714 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 715 && BOOST_PP_ITERATION_FINISH_4 >= 715 +# define BOOST_PP_ITERATION_4 715 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 716 && BOOST_PP_ITERATION_FINISH_4 >= 716 +# define BOOST_PP_ITERATION_4 716 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 717 && BOOST_PP_ITERATION_FINISH_4 >= 717 +# define BOOST_PP_ITERATION_4 717 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 718 && BOOST_PP_ITERATION_FINISH_4 >= 718 +# define BOOST_PP_ITERATION_4 718 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 719 && BOOST_PP_ITERATION_FINISH_4 >= 719 +# define BOOST_PP_ITERATION_4 719 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 720 && BOOST_PP_ITERATION_FINISH_4 >= 720 +# define BOOST_PP_ITERATION_4 720 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 721 && BOOST_PP_ITERATION_FINISH_4 >= 721 +# define BOOST_PP_ITERATION_4 721 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 722 && BOOST_PP_ITERATION_FINISH_4 >= 722 +# define BOOST_PP_ITERATION_4 722 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 723 && BOOST_PP_ITERATION_FINISH_4 >= 723 +# define BOOST_PP_ITERATION_4 723 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 724 && BOOST_PP_ITERATION_FINISH_4 >= 724 +# define BOOST_PP_ITERATION_4 724 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 725 && BOOST_PP_ITERATION_FINISH_4 >= 725 +# define BOOST_PP_ITERATION_4 725 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 726 && BOOST_PP_ITERATION_FINISH_4 >= 726 +# define BOOST_PP_ITERATION_4 726 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 727 && BOOST_PP_ITERATION_FINISH_4 >= 727 +# define BOOST_PP_ITERATION_4 727 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 728 && BOOST_PP_ITERATION_FINISH_4 >= 728 +# define BOOST_PP_ITERATION_4 728 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 729 && BOOST_PP_ITERATION_FINISH_4 >= 729 +# define BOOST_PP_ITERATION_4 729 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 730 && BOOST_PP_ITERATION_FINISH_4 >= 730 +# define BOOST_PP_ITERATION_4 730 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 731 && BOOST_PP_ITERATION_FINISH_4 >= 731 +# define BOOST_PP_ITERATION_4 731 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 732 && BOOST_PP_ITERATION_FINISH_4 >= 732 +# define BOOST_PP_ITERATION_4 732 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 733 && BOOST_PP_ITERATION_FINISH_4 >= 733 +# define BOOST_PP_ITERATION_4 733 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 734 && BOOST_PP_ITERATION_FINISH_4 >= 734 +# define BOOST_PP_ITERATION_4 734 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 735 && BOOST_PP_ITERATION_FINISH_4 >= 735 +# define BOOST_PP_ITERATION_4 735 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 736 && BOOST_PP_ITERATION_FINISH_4 >= 736 +# define BOOST_PP_ITERATION_4 736 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 737 && BOOST_PP_ITERATION_FINISH_4 >= 737 +# define BOOST_PP_ITERATION_4 737 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 738 && BOOST_PP_ITERATION_FINISH_4 >= 738 +# define BOOST_PP_ITERATION_4 738 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 739 && BOOST_PP_ITERATION_FINISH_4 >= 739 +# define BOOST_PP_ITERATION_4 739 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 740 && BOOST_PP_ITERATION_FINISH_4 >= 740 +# define BOOST_PP_ITERATION_4 740 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 741 && BOOST_PP_ITERATION_FINISH_4 >= 741 +# define BOOST_PP_ITERATION_4 741 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 742 && BOOST_PP_ITERATION_FINISH_4 >= 742 +# define BOOST_PP_ITERATION_4 742 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 743 && BOOST_PP_ITERATION_FINISH_4 >= 743 +# define BOOST_PP_ITERATION_4 743 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 744 && BOOST_PP_ITERATION_FINISH_4 >= 744 +# define BOOST_PP_ITERATION_4 744 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 745 && BOOST_PP_ITERATION_FINISH_4 >= 745 +# define BOOST_PP_ITERATION_4 745 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 746 && BOOST_PP_ITERATION_FINISH_4 >= 746 +# define BOOST_PP_ITERATION_4 746 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 747 && BOOST_PP_ITERATION_FINISH_4 >= 747 +# define BOOST_PP_ITERATION_4 747 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 748 && BOOST_PP_ITERATION_FINISH_4 >= 748 +# define BOOST_PP_ITERATION_4 748 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 749 && BOOST_PP_ITERATION_FINISH_4 >= 749 +# define BOOST_PP_ITERATION_4 749 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 750 && BOOST_PP_ITERATION_FINISH_4 >= 750 +# define BOOST_PP_ITERATION_4 750 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 751 && BOOST_PP_ITERATION_FINISH_4 >= 751 +# define BOOST_PP_ITERATION_4 751 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 752 && BOOST_PP_ITERATION_FINISH_4 >= 752 +# define BOOST_PP_ITERATION_4 752 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 753 && BOOST_PP_ITERATION_FINISH_4 >= 753 +# define BOOST_PP_ITERATION_4 753 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 754 && BOOST_PP_ITERATION_FINISH_4 >= 754 +# define BOOST_PP_ITERATION_4 754 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 755 && BOOST_PP_ITERATION_FINISH_4 >= 755 +# define BOOST_PP_ITERATION_4 755 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 756 && BOOST_PP_ITERATION_FINISH_4 >= 756 +# define BOOST_PP_ITERATION_4 756 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 757 && BOOST_PP_ITERATION_FINISH_4 >= 757 +# define BOOST_PP_ITERATION_4 757 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 758 && BOOST_PP_ITERATION_FINISH_4 >= 758 +# define BOOST_PP_ITERATION_4 758 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 759 && BOOST_PP_ITERATION_FINISH_4 >= 759 +# define BOOST_PP_ITERATION_4 759 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 760 && BOOST_PP_ITERATION_FINISH_4 >= 760 +# define BOOST_PP_ITERATION_4 760 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 761 && BOOST_PP_ITERATION_FINISH_4 >= 761 +# define BOOST_PP_ITERATION_4 761 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 762 && BOOST_PP_ITERATION_FINISH_4 >= 762 +# define BOOST_PP_ITERATION_4 762 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 763 && BOOST_PP_ITERATION_FINISH_4 >= 763 +# define BOOST_PP_ITERATION_4 763 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 764 && BOOST_PP_ITERATION_FINISH_4 >= 764 +# define BOOST_PP_ITERATION_4 764 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 765 && BOOST_PP_ITERATION_FINISH_4 >= 765 +# define BOOST_PP_ITERATION_4 765 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 766 && BOOST_PP_ITERATION_FINISH_4 >= 766 +# define BOOST_PP_ITERATION_4 766 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 767 && BOOST_PP_ITERATION_FINISH_4 >= 767 +# define BOOST_PP_ITERATION_4 767 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 768 && BOOST_PP_ITERATION_FINISH_4 >= 768 +# define BOOST_PP_ITERATION_4 768 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 769 && BOOST_PP_ITERATION_FINISH_4 >= 769 +# define BOOST_PP_ITERATION_4 769 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 770 && BOOST_PP_ITERATION_FINISH_4 >= 770 +# define BOOST_PP_ITERATION_4 770 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 771 && BOOST_PP_ITERATION_FINISH_4 >= 771 +# define BOOST_PP_ITERATION_4 771 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 772 && BOOST_PP_ITERATION_FINISH_4 >= 772 +# define BOOST_PP_ITERATION_4 772 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 773 && BOOST_PP_ITERATION_FINISH_4 >= 773 +# define BOOST_PP_ITERATION_4 773 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 774 && BOOST_PP_ITERATION_FINISH_4 >= 774 +# define BOOST_PP_ITERATION_4 774 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 775 && BOOST_PP_ITERATION_FINISH_4 >= 775 +# define BOOST_PP_ITERATION_4 775 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 776 && BOOST_PP_ITERATION_FINISH_4 >= 776 +# define BOOST_PP_ITERATION_4 776 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 777 && BOOST_PP_ITERATION_FINISH_4 >= 777 +# define BOOST_PP_ITERATION_4 777 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 778 && BOOST_PP_ITERATION_FINISH_4 >= 778 +# define BOOST_PP_ITERATION_4 778 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 779 && BOOST_PP_ITERATION_FINISH_4 >= 779 +# define BOOST_PP_ITERATION_4 779 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 780 && BOOST_PP_ITERATION_FINISH_4 >= 780 +# define BOOST_PP_ITERATION_4 780 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 781 && BOOST_PP_ITERATION_FINISH_4 >= 781 +# define BOOST_PP_ITERATION_4 781 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 782 && BOOST_PP_ITERATION_FINISH_4 >= 782 +# define BOOST_PP_ITERATION_4 782 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 783 && BOOST_PP_ITERATION_FINISH_4 >= 783 +# define BOOST_PP_ITERATION_4 783 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 784 && BOOST_PP_ITERATION_FINISH_4 >= 784 +# define BOOST_PP_ITERATION_4 784 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 785 && BOOST_PP_ITERATION_FINISH_4 >= 785 +# define BOOST_PP_ITERATION_4 785 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 786 && BOOST_PP_ITERATION_FINISH_4 >= 786 +# define BOOST_PP_ITERATION_4 786 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 787 && BOOST_PP_ITERATION_FINISH_4 >= 787 +# define BOOST_PP_ITERATION_4 787 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 788 && BOOST_PP_ITERATION_FINISH_4 >= 788 +# define BOOST_PP_ITERATION_4 788 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 789 && BOOST_PP_ITERATION_FINISH_4 >= 789 +# define BOOST_PP_ITERATION_4 789 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 790 && BOOST_PP_ITERATION_FINISH_4 >= 790 +# define BOOST_PP_ITERATION_4 790 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 791 && BOOST_PP_ITERATION_FINISH_4 >= 791 +# define BOOST_PP_ITERATION_4 791 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 792 && BOOST_PP_ITERATION_FINISH_4 >= 792 +# define BOOST_PP_ITERATION_4 792 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 793 && BOOST_PP_ITERATION_FINISH_4 >= 793 +# define BOOST_PP_ITERATION_4 793 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 794 && BOOST_PP_ITERATION_FINISH_4 >= 794 +# define BOOST_PP_ITERATION_4 794 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 795 && BOOST_PP_ITERATION_FINISH_4 >= 795 +# define BOOST_PP_ITERATION_4 795 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 796 && BOOST_PP_ITERATION_FINISH_4 >= 796 +# define BOOST_PP_ITERATION_4 796 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 797 && BOOST_PP_ITERATION_FINISH_4 >= 797 +# define BOOST_PP_ITERATION_4 797 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 798 && BOOST_PP_ITERATION_FINISH_4 >= 798 +# define BOOST_PP_ITERATION_4 798 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 799 && BOOST_PP_ITERATION_FINISH_4 >= 799 +# define BOOST_PP_ITERATION_4 799 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 800 && BOOST_PP_ITERATION_FINISH_4 >= 800 +# define BOOST_PP_ITERATION_4 800 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 801 && BOOST_PP_ITERATION_FINISH_4 >= 801 +# define BOOST_PP_ITERATION_4 801 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 802 && BOOST_PP_ITERATION_FINISH_4 >= 802 +# define BOOST_PP_ITERATION_4 802 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 803 && BOOST_PP_ITERATION_FINISH_4 >= 803 +# define BOOST_PP_ITERATION_4 803 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 804 && BOOST_PP_ITERATION_FINISH_4 >= 804 +# define BOOST_PP_ITERATION_4 804 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 805 && BOOST_PP_ITERATION_FINISH_4 >= 805 +# define BOOST_PP_ITERATION_4 805 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 806 && BOOST_PP_ITERATION_FINISH_4 >= 806 +# define BOOST_PP_ITERATION_4 806 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 807 && BOOST_PP_ITERATION_FINISH_4 >= 807 +# define BOOST_PP_ITERATION_4 807 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 808 && BOOST_PP_ITERATION_FINISH_4 >= 808 +# define BOOST_PP_ITERATION_4 808 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 809 && BOOST_PP_ITERATION_FINISH_4 >= 809 +# define BOOST_PP_ITERATION_4 809 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 810 && BOOST_PP_ITERATION_FINISH_4 >= 810 +# define BOOST_PP_ITERATION_4 810 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 811 && BOOST_PP_ITERATION_FINISH_4 >= 811 +# define BOOST_PP_ITERATION_4 811 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 812 && BOOST_PP_ITERATION_FINISH_4 >= 812 +# define BOOST_PP_ITERATION_4 812 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 813 && BOOST_PP_ITERATION_FINISH_4 >= 813 +# define BOOST_PP_ITERATION_4 813 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 814 && BOOST_PP_ITERATION_FINISH_4 >= 814 +# define BOOST_PP_ITERATION_4 814 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 815 && BOOST_PP_ITERATION_FINISH_4 >= 815 +# define BOOST_PP_ITERATION_4 815 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 816 && BOOST_PP_ITERATION_FINISH_4 >= 816 +# define BOOST_PP_ITERATION_4 816 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 817 && BOOST_PP_ITERATION_FINISH_4 >= 817 +# define BOOST_PP_ITERATION_4 817 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 818 && BOOST_PP_ITERATION_FINISH_4 >= 818 +# define BOOST_PP_ITERATION_4 818 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 819 && BOOST_PP_ITERATION_FINISH_4 >= 819 +# define BOOST_PP_ITERATION_4 819 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 820 && BOOST_PP_ITERATION_FINISH_4 >= 820 +# define BOOST_PP_ITERATION_4 820 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 821 && BOOST_PP_ITERATION_FINISH_4 >= 821 +# define BOOST_PP_ITERATION_4 821 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 822 && BOOST_PP_ITERATION_FINISH_4 >= 822 +# define BOOST_PP_ITERATION_4 822 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 823 && BOOST_PP_ITERATION_FINISH_4 >= 823 +# define BOOST_PP_ITERATION_4 823 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 824 && BOOST_PP_ITERATION_FINISH_4 >= 824 +# define BOOST_PP_ITERATION_4 824 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 825 && BOOST_PP_ITERATION_FINISH_4 >= 825 +# define BOOST_PP_ITERATION_4 825 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 826 && BOOST_PP_ITERATION_FINISH_4 >= 826 +# define BOOST_PP_ITERATION_4 826 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 827 && BOOST_PP_ITERATION_FINISH_4 >= 827 +# define BOOST_PP_ITERATION_4 827 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 828 && BOOST_PP_ITERATION_FINISH_4 >= 828 +# define BOOST_PP_ITERATION_4 828 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 829 && BOOST_PP_ITERATION_FINISH_4 >= 829 +# define BOOST_PP_ITERATION_4 829 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 830 && BOOST_PP_ITERATION_FINISH_4 >= 830 +# define BOOST_PP_ITERATION_4 830 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 831 && BOOST_PP_ITERATION_FINISH_4 >= 831 +# define BOOST_PP_ITERATION_4 831 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 832 && BOOST_PP_ITERATION_FINISH_4 >= 832 +# define BOOST_PP_ITERATION_4 832 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 833 && BOOST_PP_ITERATION_FINISH_4 >= 833 +# define BOOST_PP_ITERATION_4 833 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 834 && BOOST_PP_ITERATION_FINISH_4 >= 834 +# define BOOST_PP_ITERATION_4 834 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 835 && BOOST_PP_ITERATION_FINISH_4 >= 835 +# define BOOST_PP_ITERATION_4 835 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 836 && BOOST_PP_ITERATION_FINISH_4 >= 836 +# define BOOST_PP_ITERATION_4 836 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 837 && BOOST_PP_ITERATION_FINISH_4 >= 837 +# define BOOST_PP_ITERATION_4 837 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 838 && BOOST_PP_ITERATION_FINISH_4 >= 838 +# define BOOST_PP_ITERATION_4 838 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 839 && BOOST_PP_ITERATION_FINISH_4 >= 839 +# define BOOST_PP_ITERATION_4 839 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 840 && BOOST_PP_ITERATION_FINISH_4 >= 840 +# define BOOST_PP_ITERATION_4 840 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 841 && BOOST_PP_ITERATION_FINISH_4 >= 841 +# define BOOST_PP_ITERATION_4 841 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 842 && BOOST_PP_ITERATION_FINISH_4 >= 842 +# define BOOST_PP_ITERATION_4 842 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 843 && BOOST_PP_ITERATION_FINISH_4 >= 843 +# define BOOST_PP_ITERATION_4 843 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 844 && BOOST_PP_ITERATION_FINISH_4 >= 844 +# define BOOST_PP_ITERATION_4 844 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 845 && BOOST_PP_ITERATION_FINISH_4 >= 845 +# define BOOST_PP_ITERATION_4 845 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 846 && BOOST_PP_ITERATION_FINISH_4 >= 846 +# define BOOST_PP_ITERATION_4 846 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 847 && BOOST_PP_ITERATION_FINISH_4 >= 847 +# define BOOST_PP_ITERATION_4 847 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 848 && BOOST_PP_ITERATION_FINISH_4 >= 848 +# define BOOST_PP_ITERATION_4 848 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 849 && BOOST_PP_ITERATION_FINISH_4 >= 849 +# define BOOST_PP_ITERATION_4 849 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 850 && BOOST_PP_ITERATION_FINISH_4 >= 850 +# define BOOST_PP_ITERATION_4 850 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 851 && BOOST_PP_ITERATION_FINISH_4 >= 851 +# define BOOST_PP_ITERATION_4 851 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 852 && BOOST_PP_ITERATION_FINISH_4 >= 852 +# define BOOST_PP_ITERATION_4 852 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 853 && BOOST_PP_ITERATION_FINISH_4 >= 853 +# define BOOST_PP_ITERATION_4 853 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 854 && BOOST_PP_ITERATION_FINISH_4 >= 854 +# define BOOST_PP_ITERATION_4 854 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 855 && BOOST_PP_ITERATION_FINISH_4 >= 855 +# define BOOST_PP_ITERATION_4 855 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 856 && BOOST_PP_ITERATION_FINISH_4 >= 856 +# define BOOST_PP_ITERATION_4 856 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 857 && BOOST_PP_ITERATION_FINISH_4 >= 857 +# define BOOST_PP_ITERATION_4 857 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 858 && BOOST_PP_ITERATION_FINISH_4 >= 858 +# define BOOST_PP_ITERATION_4 858 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 859 && BOOST_PP_ITERATION_FINISH_4 >= 859 +# define BOOST_PP_ITERATION_4 859 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 860 && BOOST_PP_ITERATION_FINISH_4 >= 860 +# define BOOST_PP_ITERATION_4 860 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 861 && BOOST_PP_ITERATION_FINISH_4 >= 861 +# define BOOST_PP_ITERATION_4 861 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 862 && BOOST_PP_ITERATION_FINISH_4 >= 862 +# define BOOST_PP_ITERATION_4 862 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 863 && BOOST_PP_ITERATION_FINISH_4 >= 863 +# define BOOST_PP_ITERATION_4 863 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 864 && BOOST_PP_ITERATION_FINISH_4 >= 864 +# define BOOST_PP_ITERATION_4 864 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 865 && BOOST_PP_ITERATION_FINISH_4 >= 865 +# define BOOST_PP_ITERATION_4 865 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 866 && BOOST_PP_ITERATION_FINISH_4 >= 866 +# define BOOST_PP_ITERATION_4 866 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 867 && BOOST_PP_ITERATION_FINISH_4 >= 867 +# define BOOST_PP_ITERATION_4 867 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 868 && BOOST_PP_ITERATION_FINISH_4 >= 868 +# define BOOST_PP_ITERATION_4 868 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 869 && BOOST_PP_ITERATION_FINISH_4 >= 869 +# define BOOST_PP_ITERATION_4 869 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 870 && BOOST_PP_ITERATION_FINISH_4 >= 870 +# define BOOST_PP_ITERATION_4 870 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 871 && BOOST_PP_ITERATION_FINISH_4 >= 871 +# define BOOST_PP_ITERATION_4 871 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 872 && BOOST_PP_ITERATION_FINISH_4 >= 872 +# define BOOST_PP_ITERATION_4 872 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 873 && BOOST_PP_ITERATION_FINISH_4 >= 873 +# define BOOST_PP_ITERATION_4 873 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 874 && BOOST_PP_ITERATION_FINISH_4 >= 874 +# define BOOST_PP_ITERATION_4 874 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 875 && BOOST_PP_ITERATION_FINISH_4 >= 875 +# define BOOST_PP_ITERATION_4 875 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 876 && BOOST_PP_ITERATION_FINISH_4 >= 876 +# define BOOST_PP_ITERATION_4 876 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 877 && BOOST_PP_ITERATION_FINISH_4 >= 877 +# define BOOST_PP_ITERATION_4 877 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 878 && BOOST_PP_ITERATION_FINISH_4 >= 878 +# define BOOST_PP_ITERATION_4 878 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 879 && BOOST_PP_ITERATION_FINISH_4 >= 879 +# define BOOST_PP_ITERATION_4 879 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 880 && BOOST_PP_ITERATION_FINISH_4 >= 880 +# define BOOST_PP_ITERATION_4 880 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 881 && BOOST_PP_ITERATION_FINISH_4 >= 881 +# define BOOST_PP_ITERATION_4 881 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 882 && BOOST_PP_ITERATION_FINISH_4 >= 882 +# define BOOST_PP_ITERATION_4 882 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 883 && BOOST_PP_ITERATION_FINISH_4 >= 883 +# define BOOST_PP_ITERATION_4 883 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 884 && BOOST_PP_ITERATION_FINISH_4 >= 884 +# define BOOST_PP_ITERATION_4 884 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 885 && BOOST_PP_ITERATION_FINISH_4 >= 885 +# define BOOST_PP_ITERATION_4 885 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 886 && BOOST_PP_ITERATION_FINISH_4 >= 886 +# define BOOST_PP_ITERATION_4 886 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 887 && BOOST_PP_ITERATION_FINISH_4 >= 887 +# define BOOST_PP_ITERATION_4 887 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 888 && BOOST_PP_ITERATION_FINISH_4 >= 888 +# define BOOST_PP_ITERATION_4 888 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 889 && BOOST_PP_ITERATION_FINISH_4 >= 889 +# define BOOST_PP_ITERATION_4 889 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 890 && BOOST_PP_ITERATION_FINISH_4 >= 890 +# define BOOST_PP_ITERATION_4 890 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 891 && BOOST_PP_ITERATION_FINISH_4 >= 891 +# define BOOST_PP_ITERATION_4 891 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 892 && BOOST_PP_ITERATION_FINISH_4 >= 892 +# define BOOST_PP_ITERATION_4 892 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 893 && BOOST_PP_ITERATION_FINISH_4 >= 893 +# define BOOST_PP_ITERATION_4 893 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 894 && BOOST_PP_ITERATION_FINISH_4 >= 894 +# define BOOST_PP_ITERATION_4 894 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 895 && BOOST_PP_ITERATION_FINISH_4 >= 895 +# define BOOST_PP_ITERATION_4 895 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 896 && BOOST_PP_ITERATION_FINISH_4 >= 896 +# define BOOST_PP_ITERATION_4 896 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 897 && BOOST_PP_ITERATION_FINISH_4 >= 897 +# define BOOST_PP_ITERATION_4 897 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 898 && BOOST_PP_ITERATION_FINISH_4 >= 898 +# define BOOST_PP_ITERATION_4 898 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 899 && BOOST_PP_ITERATION_FINISH_4 >= 899 +# define BOOST_PP_ITERATION_4 899 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 900 && BOOST_PP_ITERATION_FINISH_4 >= 900 +# define BOOST_PP_ITERATION_4 900 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 901 && BOOST_PP_ITERATION_FINISH_4 >= 901 +# define BOOST_PP_ITERATION_4 901 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 902 && BOOST_PP_ITERATION_FINISH_4 >= 902 +# define BOOST_PP_ITERATION_4 902 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 903 && BOOST_PP_ITERATION_FINISH_4 >= 903 +# define BOOST_PP_ITERATION_4 903 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 904 && BOOST_PP_ITERATION_FINISH_4 >= 904 +# define BOOST_PP_ITERATION_4 904 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 905 && BOOST_PP_ITERATION_FINISH_4 >= 905 +# define BOOST_PP_ITERATION_4 905 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 906 && BOOST_PP_ITERATION_FINISH_4 >= 906 +# define BOOST_PP_ITERATION_4 906 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 907 && BOOST_PP_ITERATION_FINISH_4 >= 907 +# define BOOST_PP_ITERATION_4 907 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 908 && BOOST_PP_ITERATION_FINISH_4 >= 908 +# define BOOST_PP_ITERATION_4 908 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 909 && BOOST_PP_ITERATION_FINISH_4 >= 909 +# define BOOST_PP_ITERATION_4 909 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 910 && BOOST_PP_ITERATION_FINISH_4 >= 910 +# define BOOST_PP_ITERATION_4 910 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 911 && BOOST_PP_ITERATION_FINISH_4 >= 911 +# define BOOST_PP_ITERATION_4 911 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 912 && BOOST_PP_ITERATION_FINISH_4 >= 912 +# define BOOST_PP_ITERATION_4 912 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 913 && BOOST_PP_ITERATION_FINISH_4 >= 913 +# define BOOST_PP_ITERATION_4 913 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 914 && BOOST_PP_ITERATION_FINISH_4 >= 914 +# define BOOST_PP_ITERATION_4 914 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 915 && BOOST_PP_ITERATION_FINISH_4 >= 915 +# define BOOST_PP_ITERATION_4 915 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 916 && BOOST_PP_ITERATION_FINISH_4 >= 916 +# define BOOST_PP_ITERATION_4 916 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 917 && BOOST_PP_ITERATION_FINISH_4 >= 917 +# define BOOST_PP_ITERATION_4 917 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 918 && BOOST_PP_ITERATION_FINISH_4 >= 918 +# define BOOST_PP_ITERATION_4 918 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 919 && BOOST_PP_ITERATION_FINISH_4 >= 919 +# define BOOST_PP_ITERATION_4 919 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 920 && BOOST_PP_ITERATION_FINISH_4 >= 920 +# define BOOST_PP_ITERATION_4 920 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 921 && BOOST_PP_ITERATION_FINISH_4 >= 921 +# define BOOST_PP_ITERATION_4 921 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 922 && BOOST_PP_ITERATION_FINISH_4 >= 922 +# define BOOST_PP_ITERATION_4 922 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 923 && BOOST_PP_ITERATION_FINISH_4 >= 923 +# define BOOST_PP_ITERATION_4 923 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 924 && BOOST_PP_ITERATION_FINISH_4 >= 924 +# define BOOST_PP_ITERATION_4 924 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 925 && BOOST_PP_ITERATION_FINISH_4 >= 925 +# define BOOST_PP_ITERATION_4 925 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 926 && BOOST_PP_ITERATION_FINISH_4 >= 926 +# define BOOST_PP_ITERATION_4 926 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 927 && BOOST_PP_ITERATION_FINISH_4 >= 927 +# define BOOST_PP_ITERATION_4 927 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 928 && BOOST_PP_ITERATION_FINISH_4 >= 928 +# define BOOST_PP_ITERATION_4 928 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 929 && BOOST_PP_ITERATION_FINISH_4 >= 929 +# define BOOST_PP_ITERATION_4 929 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 930 && BOOST_PP_ITERATION_FINISH_4 >= 930 +# define BOOST_PP_ITERATION_4 930 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 931 && BOOST_PP_ITERATION_FINISH_4 >= 931 +# define BOOST_PP_ITERATION_4 931 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 932 && BOOST_PP_ITERATION_FINISH_4 >= 932 +# define BOOST_PP_ITERATION_4 932 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 933 && BOOST_PP_ITERATION_FINISH_4 >= 933 +# define BOOST_PP_ITERATION_4 933 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 934 && BOOST_PP_ITERATION_FINISH_4 >= 934 +# define BOOST_PP_ITERATION_4 934 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 935 && BOOST_PP_ITERATION_FINISH_4 >= 935 +# define BOOST_PP_ITERATION_4 935 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 936 && BOOST_PP_ITERATION_FINISH_4 >= 936 +# define BOOST_PP_ITERATION_4 936 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 937 && BOOST_PP_ITERATION_FINISH_4 >= 937 +# define BOOST_PP_ITERATION_4 937 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 938 && BOOST_PP_ITERATION_FINISH_4 >= 938 +# define BOOST_PP_ITERATION_4 938 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 939 && BOOST_PP_ITERATION_FINISH_4 >= 939 +# define BOOST_PP_ITERATION_4 939 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 940 && BOOST_PP_ITERATION_FINISH_4 >= 940 +# define BOOST_PP_ITERATION_4 940 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 941 && BOOST_PP_ITERATION_FINISH_4 >= 941 +# define BOOST_PP_ITERATION_4 941 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 942 && BOOST_PP_ITERATION_FINISH_4 >= 942 +# define BOOST_PP_ITERATION_4 942 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 943 && BOOST_PP_ITERATION_FINISH_4 >= 943 +# define BOOST_PP_ITERATION_4 943 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 944 && BOOST_PP_ITERATION_FINISH_4 >= 944 +# define BOOST_PP_ITERATION_4 944 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 945 && BOOST_PP_ITERATION_FINISH_4 >= 945 +# define BOOST_PP_ITERATION_4 945 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 946 && BOOST_PP_ITERATION_FINISH_4 >= 946 +# define BOOST_PP_ITERATION_4 946 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 947 && BOOST_PP_ITERATION_FINISH_4 >= 947 +# define BOOST_PP_ITERATION_4 947 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 948 && BOOST_PP_ITERATION_FINISH_4 >= 948 +# define BOOST_PP_ITERATION_4 948 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 949 && BOOST_PP_ITERATION_FINISH_4 >= 949 +# define BOOST_PP_ITERATION_4 949 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 950 && BOOST_PP_ITERATION_FINISH_4 >= 950 +# define BOOST_PP_ITERATION_4 950 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 951 && BOOST_PP_ITERATION_FINISH_4 >= 951 +# define BOOST_PP_ITERATION_4 951 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 952 && BOOST_PP_ITERATION_FINISH_4 >= 952 +# define BOOST_PP_ITERATION_4 952 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 953 && BOOST_PP_ITERATION_FINISH_4 >= 953 +# define BOOST_PP_ITERATION_4 953 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 954 && BOOST_PP_ITERATION_FINISH_4 >= 954 +# define BOOST_PP_ITERATION_4 954 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 955 && BOOST_PP_ITERATION_FINISH_4 >= 955 +# define BOOST_PP_ITERATION_4 955 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 956 && BOOST_PP_ITERATION_FINISH_4 >= 956 +# define BOOST_PP_ITERATION_4 956 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 957 && BOOST_PP_ITERATION_FINISH_4 >= 957 +# define BOOST_PP_ITERATION_4 957 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 958 && BOOST_PP_ITERATION_FINISH_4 >= 958 +# define BOOST_PP_ITERATION_4 958 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 959 && BOOST_PP_ITERATION_FINISH_4 >= 959 +# define BOOST_PP_ITERATION_4 959 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 960 && BOOST_PP_ITERATION_FINISH_4 >= 960 +# define BOOST_PP_ITERATION_4 960 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 961 && BOOST_PP_ITERATION_FINISH_4 >= 961 +# define BOOST_PP_ITERATION_4 961 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 962 && BOOST_PP_ITERATION_FINISH_4 >= 962 +# define BOOST_PP_ITERATION_4 962 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 963 && BOOST_PP_ITERATION_FINISH_4 >= 963 +# define BOOST_PP_ITERATION_4 963 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 964 && BOOST_PP_ITERATION_FINISH_4 >= 964 +# define BOOST_PP_ITERATION_4 964 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 965 && BOOST_PP_ITERATION_FINISH_4 >= 965 +# define BOOST_PP_ITERATION_4 965 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 966 && BOOST_PP_ITERATION_FINISH_4 >= 966 +# define BOOST_PP_ITERATION_4 966 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 967 && BOOST_PP_ITERATION_FINISH_4 >= 967 +# define BOOST_PP_ITERATION_4 967 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 968 && BOOST_PP_ITERATION_FINISH_4 >= 968 +# define BOOST_PP_ITERATION_4 968 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 969 && BOOST_PP_ITERATION_FINISH_4 >= 969 +# define BOOST_PP_ITERATION_4 969 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 970 && BOOST_PP_ITERATION_FINISH_4 >= 970 +# define BOOST_PP_ITERATION_4 970 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 971 && BOOST_PP_ITERATION_FINISH_4 >= 971 +# define BOOST_PP_ITERATION_4 971 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 972 && BOOST_PP_ITERATION_FINISH_4 >= 972 +# define BOOST_PP_ITERATION_4 972 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 973 && BOOST_PP_ITERATION_FINISH_4 >= 973 +# define BOOST_PP_ITERATION_4 973 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 974 && BOOST_PP_ITERATION_FINISH_4 >= 974 +# define BOOST_PP_ITERATION_4 974 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 975 && BOOST_PP_ITERATION_FINISH_4 >= 975 +# define BOOST_PP_ITERATION_4 975 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 976 && BOOST_PP_ITERATION_FINISH_4 >= 976 +# define BOOST_PP_ITERATION_4 976 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 977 && BOOST_PP_ITERATION_FINISH_4 >= 977 +# define BOOST_PP_ITERATION_4 977 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 978 && BOOST_PP_ITERATION_FINISH_4 >= 978 +# define BOOST_PP_ITERATION_4 978 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 979 && BOOST_PP_ITERATION_FINISH_4 >= 979 +# define BOOST_PP_ITERATION_4 979 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 980 && BOOST_PP_ITERATION_FINISH_4 >= 980 +# define BOOST_PP_ITERATION_4 980 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 981 && BOOST_PP_ITERATION_FINISH_4 >= 981 +# define BOOST_PP_ITERATION_4 981 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 982 && BOOST_PP_ITERATION_FINISH_4 >= 982 +# define BOOST_PP_ITERATION_4 982 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 983 && BOOST_PP_ITERATION_FINISH_4 >= 983 +# define BOOST_PP_ITERATION_4 983 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 984 && BOOST_PP_ITERATION_FINISH_4 >= 984 +# define BOOST_PP_ITERATION_4 984 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 985 && BOOST_PP_ITERATION_FINISH_4 >= 985 +# define BOOST_PP_ITERATION_4 985 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 986 && BOOST_PP_ITERATION_FINISH_4 >= 986 +# define BOOST_PP_ITERATION_4 986 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 987 && BOOST_PP_ITERATION_FINISH_4 >= 987 +# define BOOST_PP_ITERATION_4 987 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 988 && BOOST_PP_ITERATION_FINISH_4 >= 988 +# define BOOST_PP_ITERATION_4 988 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 989 && BOOST_PP_ITERATION_FINISH_4 >= 989 +# define BOOST_PP_ITERATION_4 989 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 990 && BOOST_PP_ITERATION_FINISH_4 >= 990 +# define BOOST_PP_ITERATION_4 990 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 991 && BOOST_PP_ITERATION_FINISH_4 >= 991 +# define BOOST_PP_ITERATION_4 991 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 992 && BOOST_PP_ITERATION_FINISH_4 >= 992 +# define BOOST_PP_ITERATION_4 992 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 993 && BOOST_PP_ITERATION_FINISH_4 >= 993 +# define BOOST_PP_ITERATION_4 993 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 994 && BOOST_PP_ITERATION_FINISH_4 >= 994 +# define BOOST_PP_ITERATION_4 994 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 995 && BOOST_PP_ITERATION_FINISH_4 >= 995 +# define BOOST_PP_ITERATION_4 995 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 996 && BOOST_PP_ITERATION_FINISH_4 >= 996 +# define BOOST_PP_ITERATION_4 996 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 997 && BOOST_PP_ITERATION_FINISH_4 >= 997 +# define BOOST_PP_ITERATION_4 997 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 998 && BOOST_PP_ITERATION_FINISH_4 >= 998 +# define BOOST_PP_ITERATION_4 998 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 999 && BOOST_PP_ITERATION_FINISH_4 >= 999 +# define BOOST_PP_ITERATION_4 999 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1000 && BOOST_PP_ITERATION_FINISH_4 >= 1000 +# define BOOST_PP_ITERATION_4 1000 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1001 && BOOST_PP_ITERATION_FINISH_4 >= 1001 +# define BOOST_PP_ITERATION_4 1001 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1002 && BOOST_PP_ITERATION_FINISH_4 >= 1002 +# define BOOST_PP_ITERATION_4 1002 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1003 && BOOST_PP_ITERATION_FINISH_4 >= 1003 +# define BOOST_PP_ITERATION_4 1003 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1004 && BOOST_PP_ITERATION_FINISH_4 >= 1004 +# define BOOST_PP_ITERATION_4 1004 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1005 && BOOST_PP_ITERATION_FINISH_4 >= 1005 +# define BOOST_PP_ITERATION_4 1005 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1006 && BOOST_PP_ITERATION_FINISH_4 >= 1006 +# define BOOST_PP_ITERATION_4 1006 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1007 && BOOST_PP_ITERATION_FINISH_4 >= 1007 +# define BOOST_PP_ITERATION_4 1007 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1008 && BOOST_PP_ITERATION_FINISH_4 >= 1008 +# define BOOST_PP_ITERATION_4 1008 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1009 && BOOST_PP_ITERATION_FINISH_4 >= 1009 +# define BOOST_PP_ITERATION_4 1009 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1010 && BOOST_PP_ITERATION_FINISH_4 >= 1010 +# define BOOST_PP_ITERATION_4 1010 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1011 && BOOST_PP_ITERATION_FINISH_4 >= 1011 +# define BOOST_PP_ITERATION_4 1011 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1012 && BOOST_PP_ITERATION_FINISH_4 >= 1012 +# define BOOST_PP_ITERATION_4 1012 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1013 && BOOST_PP_ITERATION_FINISH_4 >= 1013 +# define BOOST_PP_ITERATION_4 1013 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1014 && BOOST_PP_ITERATION_FINISH_4 >= 1014 +# define BOOST_PP_ITERATION_4 1014 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1015 && BOOST_PP_ITERATION_FINISH_4 >= 1015 +# define BOOST_PP_ITERATION_4 1015 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1016 && BOOST_PP_ITERATION_FINISH_4 >= 1016 +# define BOOST_PP_ITERATION_4 1016 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1017 && BOOST_PP_ITERATION_FINISH_4 >= 1017 +# define BOOST_PP_ITERATION_4 1017 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1018 && BOOST_PP_ITERATION_FINISH_4 >= 1018 +# define BOOST_PP_ITERATION_4 1018 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1019 && BOOST_PP_ITERATION_FINISH_4 >= 1019 +# define BOOST_PP_ITERATION_4 1019 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1020 && BOOST_PP_ITERATION_FINISH_4 >= 1020 +# define BOOST_PP_ITERATION_4 1020 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1021 && BOOST_PP_ITERATION_FINISH_4 >= 1021 +# define BOOST_PP_ITERATION_4 1021 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1022 && BOOST_PP_ITERATION_FINISH_4 >= 1022 +# define BOOST_PP_ITERATION_4 1022 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1023 && BOOST_PP_ITERATION_FINISH_4 >= 1023 +# define BOOST_PP_ITERATION_4 1023 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1024 && BOOST_PP_ITERATION_FINISH_4 >= 1024 +# define BOOST_PP_ITERATION_4 1024 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward4_256.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward4_256.hpp new file mode 100644 index 000000000..41ab62776 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward4_256.hpp @@ -0,0 +1,1296 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_START_4 <= 0 && BOOST_PP_ITERATION_FINISH_4 >= 0 +# define BOOST_PP_ITERATION_4 0 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 1 && BOOST_PP_ITERATION_FINISH_4 >= 1 +# define BOOST_PP_ITERATION_4 1 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 2 && BOOST_PP_ITERATION_FINISH_4 >= 2 +# define BOOST_PP_ITERATION_4 2 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 3 && BOOST_PP_ITERATION_FINISH_4 >= 3 +# define BOOST_PP_ITERATION_4 3 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 4 && BOOST_PP_ITERATION_FINISH_4 >= 4 +# define BOOST_PP_ITERATION_4 4 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 5 && BOOST_PP_ITERATION_FINISH_4 >= 5 +# define BOOST_PP_ITERATION_4 5 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 6 && BOOST_PP_ITERATION_FINISH_4 >= 6 +# define BOOST_PP_ITERATION_4 6 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 7 && BOOST_PP_ITERATION_FINISH_4 >= 7 +# define BOOST_PP_ITERATION_4 7 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 8 && BOOST_PP_ITERATION_FINISH_4 >= 8 +# define BOOST_PP_ITERATION_4 8 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 9 && BOOST_PP_ITERATION_FINISH_4 >= 9 +# define BOOST_PP_ITERATION_4 9 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 10 && BOOST_PP_ITERATION_FINISH_4 >= 10 +# define BOOST_PP_ITERATION_4 10 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 11 && BOOST_PP_ITERATION_FINISH_4 >= 11 +# define BOOST_PP_ITERATION_4 11 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 12 && BOOST_PP_ITERATION_FINISH_4 >= 12 +# define BOOST_PP_ITERATION_4 12 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 13 && BOOST_PP_ITERATION_FINISH_4 >= 13 +# define BOOST_PP_ITERATION_4 13 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 14 && BOOST_PP_ITERATION_FINISH_4 >= 14 +# define BOOST_PP_ITERATION_4 14 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 15 && BOOST_PP_ITERATION_FINISH_4 >= 15 +# define BOOST_PP_ITERATION_4 15 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 16 && BOOST_PP_ITERATION_FINISH_4 >= 16 +# define BOOST_PP_ITERATION_4 16 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 17 && BOOST_PP_ITERATION_FINISH_4 >= 17 +# define BOOST_PP_ITERATION_4 17 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 18 && BOOST_PP_ITERATION_FINISH_4 >= 18 +# define BOOST_PP_ITERATION_4 18 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 19 && BOOST_PP_ITERATION_FINISH_4 >= 19 +# define BOOST_PP_ITERATION_4 19 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 20 && BOOST_PP_ITERATION_FINISH_4 >= 20 +# define BOOST_PP_ITERATION_4 20 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 21 && BOOST_PP_ITERATION_FINISH_4 >= 21 +# define BOOST_PP_ITERATION_4 21 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 22 && BOOST_PP_ITERATION_FINISH_4 >= 22 +# define BOOST_PP_ITERATION_4 22 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 23 && BOOST_PP_ITERATION_FINISH_4 >= 23 +# define BOOST_PP_ITERATION_4 23 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 24 && BOOST_PP_ITERATION_FINISH_4 >= 24 +# define BOOST_PP_ITERATION_4 24 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 25 && BOOST_PP_ITERATION_FINISH_4 >= 25 +# define BOOST_PP_ITERATION_4 25 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 26 && BOOST_PP_ITERATION_FINISH_4 >= 26 +# define BOOST_PP_ITERATION_4 26 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 27 && BOOST_PP_ITERATION_FINISH_4 >= 27 +# define BOOST_PP_ITERATION_4 27 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 28 && BOOST_PP_ITERATION_FINISH_4 >= 28 +# define BOOST_PP_ITERATION_4 28 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 29 && BOOST_PP_ITERATION_FINISH_4 >= 29 +# define BOOST_PP_ITERATION_4 29 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 30 && BOOST_PP_ITERATION_FINISH_4 >= 30 +# define BOOST_PP_ITERATION_4 30 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 31 && BOOST_PP_ITERATION_FINISH_4 >= 31 +# define BOOST_PP_ITERATION_4 31 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 32 && BOOST_PP_ITERATION_FINISH_4 >= 32 +# define BOOST_PP_ITERATION_4 32 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 33 && BOOST_PP_ITERATION_FINISH_4 >= 33 +# define BOOST_PP_ITERATION_4 33 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 34 && BOOST_PP_ITERATION_FINISH_4 >= 34 +# define BOOST_PP_ITERATION_4 34 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 35 && BOOST_PP_ITERATION_FINISH_4 >= 35 +# define BOOST_PP_ITERATION_4 35 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 36 && BOOST_PP_ITERATION_FINISH_4 >= 36 +# define BOOST_PP_ITERATION_4 36 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 37 && BOOST_PP_ITERATION_FINISH_4 >= 37 +# define BOOST_PP_ITERATION_4 37 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 38 && BOOST_PP_ITERATION_FINISH_4 >= 38 +# define BOOST_PP_ITERATION_4 38 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 39 && BOOST_PP_ITERATION_FINISH_4 >= 39 +# define BOOST_PP_ITERATION_4 39 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 40 && BOOST_PP_ITERATION_FINISH_4 >= 40 +# define BOOST_PP_ITERATION_4 40 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 41 && BOOST_PP_ITERATION_FINISH_4 >= 41 +# define BOOST_PP_ITERATION_4 41 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 42 && BOOST_PP_ITERATION_FINISH_4 >= 42 +# define BOOST_PP_ITERATION_4 42 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 43 && BOOST_PP_ITERATION_FINISH_4 >= 43 +# define BOOST_PP_ITERATION_4 43 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 44 && BOOST_PP_ITERATION_FINISH_4 >= 44 +# define BOOST_PP_ITERATION_4 44 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 45 && BOOST_PP_ITERATION_FINISH_4 >= 45 +# define BOOST_PP_ITERATION_4 45 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 46 && BOOST_PP_ITERATION_FINISH_4 >= 46 +# define BOOST_PP_ITERATION_4 46 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 47 && BOOST_PP_ITERATION_FINISH_4 >= 47 +# define BOOST_PP_ITERATION_4 47 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 48 && BOOST_PP_ITERATION_FINISH_4 >= 48 +# define BOOST_PP_ITERATION_4 48 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 49 && BOOST_PP_ITERATION_FINISH_4 >= 49 +# define BOOST_PP_ITERATION_4 49 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 50 && BOOST_PP_ITERATION_FINISH_4 >= 50 +# define BOOST_PP_ITERATION_4 50 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 51 && BOOST_PP_ITERATION_FINISH_4 >= 51 +# define BOOST_PP_ITERATION_4 51 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 52 && BOOST_PP_ITERATION_FINISH_4 >= 52 +# define BOOST_PP_ITERATION_4 52 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 53 && BOOST_PP_ITERATION_FINISH_4 >= 53 +# define BOOST_PP_ITERATION_4 53 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 54 && BOOST_PP_ITERATION_FINISH_4 >= 54 +# define BOOST_PP_ITERATION_4 54 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 55 && BOOST_PP_ITERATION_FINISH_4 >= 55 +# define BOOST_PP_ITERATION_4 55 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 56 && BOOST_PP_ITERATION_FINISH_4 >= 56 +# define BOOST_PP_ITERATION_4 56 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 57 && BOOST_PP_ITERATION_FINISH_4 >= 57 +# define BOOST_PP_ITERATION_4 57 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 58 && BOOST_PP_ITERATION_FINISH_4 >= 58 +# define BOOST_PP_ITERATION_4 58 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 59 && BOOST_PP_ITERATION_FINISH_4 >= 59 +# define BOOST_PP_ITERATION_4 59 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 60 && BOOST_PP_ITERATION_FINISH_4 >= 60 +# define BOOST_PP_ITERATION_4 60 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 61 && BOOST_PP_ITERATION_FINISH_4 >= 61 +# define BOOST_PP_ITERATION_4 61 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 62 && BOOST_PP_ITERATION_FINISH_4 >= 62 +# define BOOST_PP_ITERATION_4 62 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 63 && BOOST_PP_ITERATION_FINISH_4 >= 63 +# define BOOST_PP_ITERATION_4 63 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 64 && BOOST_PP_ITERATION_FINISH_4 >= 64 +# define BOOST_PP_ITERATION_4 64 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 65 && BOOST_PP_ITERATION_FINISH_4 >= 65 +# define BOOST_PP_ITERATION_4 65 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 66 && BOOST_PP_ITERATION_FINISH_4 >= 66 +# define BOOST_PP_ITERATION_4 66 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 67 && BOOST_PP_ITERATION_FINISH_4 >= 67 +# define BOOST_PP_ITERATION_4 67 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 68 && BOOST_PP_ITERATION_FINISH_4 >= 68 +# define BOOST_PP_ITERATION_4 68 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 69 && BOOST_PP_ITERATION_FINISH_4 >= 69 +# define BOOST_PP_ITERATION_4 69 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 70 && BOOST_PP_ITERATION_FINISH_4 >= 70 +# define BOOST_PP_ITERATION_4 70 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 71 && BOOST_PP_ITERATION_FINISH_4 >= 71 +# define BOOST_PP_ITERATION_4 71 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 72 && BOOST_PP_ITERATION_FINISH_4 >= 72 +# define BOOST_PP_ITERATION_4 72 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 73 && BOOST_PP_ITERATION_FINISH_4 >= 73 +# define BOOST_PP_ITERATION_4 73 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 74 && BOOST_PP_ITERATION_FINISH_4 >= 74 +# define BOOST_PP_ITERATION_4 74 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 75 && BOOST_PP_ITERATION_FINISH_4 >= 75 +# define BOOST_PP_ITERATION_4 75 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 76 && BOOST_PP_ITERATION_FINISH_4 >= 76 +# define BOOST_PP_ITERATION_4 76 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 77 && BOOST_PP_ITERATION_FINISH_4 >= 77 +# define BOOST_PP_ITERATION_4 77 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 78 && BOOST_PP_ITERATION_FINISH_4 >= 78 +# define BOOST_PP_ITERATION_4 78 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 79 && BOOST_PP_ITERATION_FINISH_4 >= 79 +# define BOOST_PP_ITERATION_4 79 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 80 && BOOST_PP_ITERATION_FINISH_4 >= 80 +# define BOOST_PP_ITERATION_4 80 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 81 && BOOST_PP_ITERATION_FINISH_4 >= 81 +# define BOOST_PP_ITERATION_4 81 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 82 && BOOST_PP_ITERATION_FINISH_4 >= 82 +# define BOOST_PP_ITERATION_4 82 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 83 && BOOST_PP_ITERATION_FINISH_4 >= 83 +# define BOOST_PP_ITERATION_4 83 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 84 && BOOST_PP_ITERATION_FINISH_4 >= 84 +# define BOOST_PP_ITERATION_4 84 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 85 && BOOST_PP_ITERATION_FINISH_4 >= 85 +# define BOOST_PP_ITERATION_4 85 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 86 && BOOST_PP_ITERATION_FINISH_4 >= 86 +# define BOOST_PP_ITERATION_4 86 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 87 && BOOST_PP_ITERATION_FINISH_4 >= 87 +# define BOOST_PP_ITERATION_4 87 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 88 && BOOST_PP_ITERATION_FINISH_4 >= 88 +# define BOOST_PP_ITERATION_4 88 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 89 && BOOST_PP_ITERATION_FINISH_4 >= 89 +# define BOOST_PP_ITERATION_4 89 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 90 && BOOST_PP_ITERATION_FINISH_4 >= 90 +# define BOOST_PP_ITERATION_4 90 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 91 && BOOST_PP_ITERATION_FINISH_4 >= 91 +# define BOOST_PP_ITERATION_4 91 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 92 && BOOST_PP_ITERATION_FINISH_4 >= 92 +# define BOOST_PP_ITERATION_4 92 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 93 && BOOST_PP_ITERATION_FINISH_4 >= 93 +# define BOOST_PP_ITERATION_4 93 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 94 && BOOST_PP_ITERATION_FINISH_4 >= 94 +# define BOOST_PP_ITERATION_4 94 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 95 && BOOST_PP_ITERATION_FINISH_4 >= 95 +# define BOOST_PP_ITERATION_4 95 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 96 && BOOST_PP_ITERATION_FINISH_4 >= 96 +# define BOOST_PP_ITERATION_4 96 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 97 && BOOST_PP_ITERATION_FINISH_4 >= 97 +# define BOOST_PP_ITERATION_4 97 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 98 && BOOST_PP_ITERATION_FINISH_4 >= 98 +# define BOOST_PP_ITERATION_4 98 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 99 && BOOST_PP_ITERATION_FINISH_4 >= 99 +# define BOOST_PP_ITERATION_4 99 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 100 && BOOST_PP_ITERATION_FINISH_4 >= 100 +# define BOOST_PP_ITERATION_4 100 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 101 && BOOST_PP_ITERATION_FINISH_4 >= 101 +# define BOOST_PP_ITERATION_4 101 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 102 && BOOST_PP_ITERATION_FINISH_4 >= 102 +# define BOOST_PP_ITERATION_4 102 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 103 && BOOST_PP_ITERATION_FINISH_4 >= 103 +# define BOOST_PP_ITERATION_4 103 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 104 && BOOST_PP_ITERATION_FINISH_4 >= 104 +# define BOOST_PP_ITERATION_4 104 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 105 && BOOST_PP_ITERATION_FINISH_4 >= 105 +# define BOOST_PP_ITERATION_4 105 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 106 && BOOST_PP_ITERATION_FINISH_4 >= 106 +# define BOOST_PP_ITERATION_4 106 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 107 && BOOST_PP_ITERATION_FINISH_4 >= 107 +# define BOOST_PP_ITERATION_4 107 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 108 && BOOST_PP_ITERATION_FINISH_4 >= 108 +# define BOOST_PP_ITERATION_4 108 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 109 && BOOST_PP_ITERATION_FINISH_4 >= 109 +# define BOOST_PP_ITERATION_4 109 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 110 && BOOST_PP_ITERATION_FINISH_4 >= 110 +# define BOOST_PP_ITERATION_4 110 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 111 && BOOST_PP_ITERATION_FINISH_4 >= 111 +# define BOOST_PP_ITERATION_4 111 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 112 && BOOST_PP_ITERATION_FINISH_4 >= 112 +# define BOOST_PP_ITERATION_4 112 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 113 && BOOST_PP_ITERATION_FINISH_4 >= 113 +# define BOOST_PP_ITERATION_4 113 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 114 && BOOST_PP_ITERATION_FINISH_4 >= 114 +# define BOOST_PP_ITERATION_4 114 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 115 && BOOST_PP_ITERATION_FINISH_4 >= 115 +# define BOOST_PP_ITERATION_4 115 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 116 && BOOST_PP_ITERATION_FINISH_4 >= 116 +# define BOOST_PP_ITERATION_4 116 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 117 && BOOST_PP_ITERATION_FINISH_4 >= 117 +# define BOOST_PP_ITERATION_4 117 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 118 && BOOST_PP_ITERATION_FINISH_4 >= 118 +# define BOOST_PP_ITERATION_4 118 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 119 && BOOST_PP_ITERATION_FINISH_4 >= 119 +# define BOOST_PP_ITERATION_4 119 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 120 && BOOST_PP_ITERATION_FINISH_4 >= 120 +# define BOOST_PP_ITERATION_4 120 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 121 && BOOST_PP_ITERATION_FINISH_4 >= 121 +# define BOOST_PP_ITERATION_4 121 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 122 && BOOST_PP_ITERATION_FINISH_4 >= 122 +# define BOOST_PP_ITERATION_4 122 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 123 && BOOST_PP_ITERATION_FINISH_4 >= 123 +# define BOOST_PP_ITERATION_4 123 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 124 && BOOST_PP_ITERATION_FINISH_4 >= 124 +# define BOOST_PP_ITERATION_4 124 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 125 && BOOST_PP_ITERATION_FINISH_4 >= 125 +# define BOOST_PP_ITERATION_4 125 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 126 && BOOST_PP_ITERATION_FINISH_4 >= 126 +# define BOOST_PP_ITERATION_4 126 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 127 && BOOST_PP_ITERATION_FINISH_4 >= 127 +# define BOOST_PP_ITERATION_4 127 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 128 && BOOST_PP_ITERATION_FINISH_4 >= 128 +# define BOOST_PP_ITERATION_4 128 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 129 && BOOST_PP_ITERATION_FINISH_4 >= 129 +# define BOOST_PP_ITERATION_4 129 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 130 && BOOST_PP_ITERATION_FINISH_4 >= 130 +# define BOOST_PP_ITERATION_4 130 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 131 && BOOST_PP_ITERATION_FINISH_4 >= 131 +# define BOOST_PP_ITERATION_4 131 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 132 && BOOST_PP_ITERATION_FINISH_4 >= 132 +# define BOOST_PP_ITERATION_4 132 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 133 && BOOST_PP_ITERATION_FINISH_4 >= 133 +# define BOOST_PP_ITERATION_4 133 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 134 && BOOST_PP_ITERATION_FINISH_4 >= 134 +# define BOOST_PP_ITERATION_4 134 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 135 && BOOST_PP_ITERATION_FINISH_4 >= 135 +# define BOOST_PP_ITERATION_4 135 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 136 && BOOST_PP_ITERATION_FINISH_4 >= 136 +# define BOOST_PP_ITERATION_4 136 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 137 && BOOST_PP_ITERATION_FINISH_4 >= 137 +# define BOOST_PP_ITERATION_4 137 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 138 && BOOST_PP_ITERATION_FINISH_4 >= 138 +# define BOOST_PP_ITERATION_4 138 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 139 && BOOST_PP_ITERATION_FINISH_4 >= 139 +# define BOOST_PP_ITERATION_4 139 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 140 && BOOST_PP_ITERATION_FINISH_4 >= 140 +# define BOOST_PP_ITERATION_4 140 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 141 && BOOST_PP_ITERATION_FINISH_4 >= 141 +# define BOOST_PP_ITERATION_4 141 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 142 && BOOST_PP_ITERATION_FINISH_4 >= 142 +# define BOOST_PP_ITERATION_4 142 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 143 && BOOST_PP_ITERATION_FINISH_4 >= 143 +# define BOOST_PP_ITERATION_4 143 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 144 && BOOST_PP_ITERATION_FINISH_4 >= 144 +# define BOOST_PP_ITERATION_4 144 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 145 && BOOST_PP_ITERATION_FINISH_4 >= 145 +# define BOOST_PP_ITERATION_4 145 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 146 && BOOST_PP_ITERATION_FINISH_4 >= 146 +# define BOOST_PP_ITERATION_4 146 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 147 && BOOST_PP_ITERATION_FINISH_4 >= 147 +# define BOOST_PP_ITERATION_4 147 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 148 && BOOST_PP_ITERATION_FINISH_4 >= 148 +# define BOOST_PP_ITERATION_4 148 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 149 && BOOST_PP_ITERATION_FINISH_4 >= 149 +# define BOOST_PP_ITERATION_4 149 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 150 && BOOST_PP_ITERATION_FINISH_4 >= 150 +# define BOOST_PP_ITERATION_4 150 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 151 && BOOST_PP_ITERATION_FINISH_4 >= 151 +# define BOOST_PP_ITERATION_4 151 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 152 && BOOST_PP_ITERATION_FINISH_4 >= 152 +# define BOOST_PP_ITERATION_4 152 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 153 && BOOST_PP_ITERATION_FINISH_4 >= 153 +# define BOOST_PP_ITERATION_4 153 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 154 && BOOST_PP_ITERATION_FINISH_4 >= 154 +# define BOOST_PP_ITERATION_4 154 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 155 && BOOST_PP_ITERATION_FINISH_4 >= 155 +# define BOOST_PP_ITERATION_4 155 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 156 && BOOST_PP_ITERATION_FINISH_4 >= 156 +# define BOOST_PP_ITERATION_4 156 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 157 && BOOST_PP_ITERATION_FINISH_4 >= 157 +# define BOOST_PP_ITERATION_4 157 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 158 && BOOST_PP_ITERATION_FINISH_4 >= 158 +# define BOOST_PP_ITERATION_4 158 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 159 && BOOST_PP_ITERATION_FINISH_4 >= 159 +# define BOOST_PP_ITERATION_4 159 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 160 && BOOST_PP_ITERATION_FINISH_4 >= 160 +# define BOOST_PP_ITERATION_4 160 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 161 && BOOST_PP_ITERATION_FINISH_4 >= 161 +# define BOOST_PP_ITERATION_4 161 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 162 && BOOST_PP_ITERATION_FINISH_4 >= 162 +# define BOOST_PP_ITERATION_4 162 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 163 && BOOST_PP_ITERATION_FINISH_4 >= 163 +# define BOOST_PP_ITERATION_4 163 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 164 && BOOST_PP_ITERATION_FINISH_4 >= 164 +# define BOOST_PP_ITERATION_4 164 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 165 && BOOST_PP_ITERATION_FINISH_4 >= 165 +# define BOOST_PP_ITERATION_4 165 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 166 && BOOST_PP_ITERATION_FINISH_4 >= 166 +# define BOOST_PP_ITERATION_4 166 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 167 && BOOST_PP_ITERATION_FINISH_4 >= 167 +# define BOOST_PP_ITERATION_4 167 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 168 && BOOST_PP_ITERATION_FINISH_4 >= 168 +# define BOOST_PP_ITERATION_4 168 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 169 && BOOST_PP_ITERATION_FINISH_4 >= 169 +# define BOOST_PP_ITERATION_4 169 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 170 && BOOST_PP_ITERATION_FINISH_4 >= 170 +# define BOOST_PP_ITERATION_4 170 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 171 && BOOST_PP_ITERATION_FINISH_4 >= 171 +# define BOOST_PP_ITERATION_4 171 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 172 && BOOST_PP_ITERATION_FINISH_4 >= 172 +# define BOOST_PP_ITERATION_4 172 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 173 && BOOST_PP_ITERATION_FINISH_4 >= 173 +# define BOOST_PP_ITERATION_4 173 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 174 && BOOST_PP_ITERATION_FINISH_4 >= 174 +# define BOOST_PP_ITERATION_4 174 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 175 && BOOST_PP_ITERATION_FINISH_4 >= 175 +# define BOOST_PP_ITERATION_4 175 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 176 && BOOST_PP_ITERATION_FINISH_4 >= 176 +# define BOOST_PP_ITERATION_4 176 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 177 && BOOST_PP_ITERATION_FINISH_4 >= 177 +# define BOOST_PP_ITERATION_4 177 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 178 && BOOST_PP_ITERATION_FINISH_4 >= 178 +# define BOOST_PP_ITERATION_4 178 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 179 && BOOST_PP_ITERATION_FINISH_4 >= 179 +# define BOOST_PP_ITERATION_4 179 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 180 && BOOST_PP_ITERATION_FINISH_4 >= 180 +# define BOOST_PP_ITERATION_4 180 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 181 && BOOST_PP_ITERATION_FINISH_4 >= 181 +# define BOOST_PP_ITERATION_4 181 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 182 && BOOST_PP_ITERATION_FINISH_4 >= 182 +# define BOOST_PP_ITERATION_4 182 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 183 && BOOST_PP_ITERATION_FINISH_4 >= 183 +# define BOOST_PP_ITERATION_4 183 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 184 && BOOST_PP_ITERATION_FINISH_4 >= 184 +# define BOOST_PP_ITERATION_4 184 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 185 && BOOST_PP_ITERATION_FINISH_4 >= 185 +# define BOOST_PP_ITERATION_4 185 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 186 && BOOST_PP_ITERATION_FINISH_4 >= 186 +# define BOOST_PP_ITERATION_4 186 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 187 && BOOST_PP_ITERATION_FINISH_4 >= 187 +# define BOOST_PP_ITERATION_4 187 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 188 && BOOST_PP_ITERATION_FINISH_4 >= 188 +# define BOOST_PP_ITERATION_4 188 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 189 && BOOST_PP_ITERATION_FINISH_4 >= 189 +# define BOOST_PP_ITERATION_4 189 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 190 && BOOST_PP_ITERATION_FINISH_4 >= 190 +# define BOOST_PP_ITERATION_4 190 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 191 && BOOST_PP_ITERATION_FINISH_4 >= 191 +# define BOOST_PP_ITERATION_4 191 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 192 && BOOST_PP_ITERATION_FINISH_4 >= 192 +# define BOOST_PP_ITERATION_4 192 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 193 && BOOST_PP_ITERATION_FINISH_4 >= 193 +# define BOOST_PP_ITERATION_4 193 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 194 && BOOST_PP_ITERATION_FINISH_4 >= 194 +# define BOOST_PP_ITERATION_4 194 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 195 && BOOST_PP_ITERATION_FINISH_4 >= 195 +# define BOOST_PP_ITERATION_4 195 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 196 && BOOST_PP_ITERATION_FINISH_4 >= 196 +# define BOOST_PP_ITERATION_4 196 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 197 && BOOST_PP_ITERATION_FINISH_4 >= 197 +# define BOOST_PP_ITERATION_4 197 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 198 && BOOST_PP_ITERATION_FINISH_4 >= 198 +# define BOOST_PP_ITERATION_4 198 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 199 && BOOST_PP_ITERATION_FINISH_4 >= 199 +# define BOOST_PP_ITERATION_4 199 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 200 && BOOST_PP_ITERATION_FINISH_4 >= 200 +# define BOOST_PP_ITERATION_4 200 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 201 && BOOST_PP_ITERATION_FINISH_4 >= 201 +# define BOOST_PP_ITERATION_4 201 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 202 && BOOST_PP_ITERATION_FINISH_4 >= 202 +# define BOOST_PP_ITERATION_4 202 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 203 && BOOST_PP_ITERATION_FINISH_4 >= 203 +# define BOOST_PP_ITERATION_4 203 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 204 && BOOST_PP_ITERATION_FINISH_4 >= 204 +# define BOOST_PP_ITERATION_4 204 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 205 && BOOST_PP_ITERATION_FINISH_4 >= 205 +# define BOOST_PP_ITERATION_4 205 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 206 && BOOST_PP_ITERATION_FINISH_4 >= 206 +# define BOOST_PP_ITERATION_4 206 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 207 && BOOST_PP_ITERATION_FINISH_4 >= 207 +# define BOOST_PP_ITERATION_4 207 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 208 && BOOST_PP_ITERATION_FINISH_4 >= 208 +# define BOOST_PP_ITERATION_4 208 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 209 && BOOST_PP_ITERATION_FINISH_4 >= 209 +# define BOOST_PP_ITERATION_4 209 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 210 && BOOST_PP_ITERATION_FINISH_4 >= 210 +# define BOOST_PP_ITERATION_4 210 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 211 && BOOST_PP_ITERATION_FINISH_4 >= 211 +# define BOOST_PP_ITERATION_4 211 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 212 && BOOST_PP_ITERATION_FINISH_4 >= 212 +# define BOOST_PP_ITERATION_4 212 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 213 && BOOST_PP_ITERATION_FINISH_4 >= 213 +# define BOOST_PP_ITERATION_4 213 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 214 && BOOST_PP_ITERATION_FINISH_4 >= 214 +# define BOOST_PP_ITERATION_4 214 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 215 && BOOST_PP_ITERATION_FINISH_4 >= 215 +# define BOOST_PP_ITERATION_4 215 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 216 && BOOST_PP_ITERATION_FINISH_4 >= 216 +# define BOOST_PP_ITERATION_4 216 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 217 && BOOST_PP_ITERATION_FINISH_4 >= 217 +# define BOOST_PP_ITERATION_4 217 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 218 && BOOST_PP_ITERATION_FINISH_4 >= 218 +# define BOOST_PP_ITERATION_4 218 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 219 && BOOST_PP_ITERATION_FINISH_4 >= 219 +# define BOOST_PP_ITERATION_4 219 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 220 && BOOST_PP_ITERATION_FINISH_4 >= 220 +# define BOOST_PP_ITERATION_4 220 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 221 && BOOST_PP_ITERATION_FINISH_4 >= 221 +# define BOOST_PP_ITERATION_4 221 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 222 && BOOST_PP_ITERATION_FINISH_4 >= 222 +# define BOOST_PP_ITERATION_4 222 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 223 && BOOST_PP_ITERATION_FINISH_4 >= 223 +# define BOOST_PP_ITERATION_4 223 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 224 && BOOST_PP_ITERATION_FINISH_4 >= 224 +# define BOOST_PP_ITERATION_4 224 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 225 && BOOST_PP_ITERATION_FINISH_4 >= 225 +# define BOOST_PP_ITERATION_4 225 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 226 && BOOST_PP_ITERATION_FINISH_4 >= 226 +# define BOOST_PP_ITERATION_4 226 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 227 && BOOST_PP_ITERATION_FINISH_4 >= 227 +# define BOOST_PP_ITERATION_4 227 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 228 && BOOST_PP_ITERATION_FINISH_4 >= 228 +# define BOOST_PP_ITERATION_4 228 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 229 && BOOST_PP_ITERATION_FINISH_4 >= 229 +# define BOOST_PP_ITERATION_4 229 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 230 && BOOST_PP_ITERATION_FINISH_4 >= 230 +# define BOOST_PP_ITERATION_4 230 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 231 && BOOST_PP_ITERATION_FINISH_4 >= 231 +# define BOOST_PP_ITERATION_4 231 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 232 && BOOST_PP_ITERATION_FINISH_4 >= 232 +# define BOOST_PP_ITERATION_4 232 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 233 && BOOST_PP_ITERATION_FINISH_4 >= 233 +# define BOOST_PP_ITERATION_4 233 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 234 && BOOST_PP_ITERATION_FINISH_4 >= 234 +# define BOOST_PP_ITERATION_4 234 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 235 && BOOST_PP_ITERATION_FINISH_4 >= 235 +# define BOOST_PP_ITERATION_4 235 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 236 && BOOST_PP_ITERATION_FINISH_4 >= 236 +# define BOOST_PP_ITERATION_4 236 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 237 && BOOST_PP_ITERATION_FINISH_4 >= 237 +# define BOOST_PP_ITERATION_4 237 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 238 && BOOST_PP_ITERATION_FINISH_4 >= 238 +# define BOOST_PP_ITERATION_4 238 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 239 && BOOST_PP_ITERATION_FINISH_4 >= 239 +# define BOOST_PP_ITERATION_4 239 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 240 && BOOST_PP_ITERATION_FINISH_4 >= 240 +# define BOOST_PP_ITERATION_4 240 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 241 && BOOST_PP_ITERATION_FINISH_4 >= 241 +# define BOOST_PP_ITERATION_4 241 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 242 && BOOST_PP_ITERATION_FINISH_4 >= 242 +# define BOOST_PP_ITERATION_4 242 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 243 && BOOST_PP_ITERATION_FINISH_4 >= 243 +# define BOOST_PP_ITERATION_4 243 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 244 && BOOST_PP_ITERATION_FINISH_4 >= 244 +# define BOOST_PP_ITERATION_4 244 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 245 && BOOST_PP_ITERATION_FINISH_4 >= 245 +# define BOOST_PP_ITERATION_4 245 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 246 && BOOST_PP_ITERATION_FINISH_4 >= 246 +# define BOOST_PP_ITERATION_4 246 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 247 && BOOST_PP_ITERATION_FINISH_4 >= 247 +# define BOOST_PP_ITERATION_4 247 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 248 && BOOST_PP_ITERATION_FINISH_4 >= 248 +# define BOOST_PP_ITERATION_4 248 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 249 && BOOST_PP_ITERATION_FINISH_4 >= 249 +# define BOOST_PP_ITERATION_4 249 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 250 && BOOST_PP_ITERATION_FINISH_4 >= 250 +# define BOOST_PP_ITERATION_4 250 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 251 && BOOST_PP_ITERATION_FINISH_4 >= 251 +# define BOOST_PP_ITERATION_4 251 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 252 && BOOST_PP_ITERATION_FINISH_4 >= 252 +# define BOOST_PP_ITERATION_4 252 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 253 && BOOST_PP_ITERATION_FINISH_4 >= 253 +# define BOOST_PP_ITERATION_4 253 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 254 && BOOST_PP_ITERATION_FINISH_4 >= 254 +# define BOOST_PP_ITERATION_4 254 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 255 && BOOST_PP_ITERATION_FINISH_4 >= 255 +# define BOOST_PP_ITERATION_4 255 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 256 && BOOST_PP_ITERATION_FINISH_4 >= 256 +# define BOOST_PP_ITERATION_4 256 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward4_512.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward4_512.hpp new file mode 100644 index 000000000..6186a89c5 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward4_512.hpp @@ -0,0 +1,1293 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_START_4 <= 257 && BOOST_PP_ITERATION_FINISH_4 >= 257 +# define BOOST_PP_ITERATION_4 257 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 258 && BOOST_PP_ITERATION_FINISH_4 >= 258 +# define BOOST_PP_ITERATION_4 258 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 259 && BOOST_PP_ITERATION_FINISH_4 >= 259 +# define BOOST_PP_ITERATION_4 259 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 260 && BOOST_PP_ITERATION_FINISH_4 >= 260 +# define BOOST_PP_ITERATION_4 260 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 261 && BOOST_PP_ITERATION_FINISH_4 >= 261 +# define BOOST_PP_ITERATION_4 261 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 262 && BOOST_PP_ITERATION_FINISH_4 >= 262 +# define BOOST_PP_ITERATION_4 262 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 263 && BOOST_PP_ITERATION_FINISH_4 >= 263 +# define BOOST_PP_ITERATION_4 263 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 264 && BOOST_PP_ITERATION_FINISH_4 >= 264 +# define BOOST_PP_ITERATION_4 264 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 265 && BOOST_PP_ITERATION_FINISH_4 >= 265 +# define BOOST_PP_ITERATION_4 265 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 266 && BOOST_PP_ITERATION_FINISH_4 >= 266 +# define BOOST_PP_ITERATION_4 266 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 267 && BOOST_PP_ITERATION_FINISH_4 >= 267 +# define BOOST_PP_ITERATION_4 267 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 268 && BOOST_PP_ITERATION_FINISH_4 >= 268 +# define BOOST_PP_ITERATION_4 268 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 269 && BOOST_PP_ITERATION_FINISH_4 >= 269 +# define BOOST_PP_ITERATION_4 269 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 270 && BOOST_PP_ITERATION_FINISH_4 >= 270 +# define BOOST_PP_ITERATION_4 270 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 271 && BOOST_PP_ITERATION_FINISH_4 >= 271 +# define BOOST_PP_ITERATION_4 271 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 272 && BOOST_PP_ITERATION_FINISH_4 >= 272 +# define BOOST_PP_ITERATION_4 272 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 273 && BOOST_PP_ITERATION_FINISH_4 >= 273 +# define BOOST_PP_ITERATION_4 273 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 274 && BOOST_PP_ITERATION_FINISH_4 >= 274 +# define BOOST_PP_ITERATION_4 274 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 275 && BOOST_PP_ITERATION_FINISH_4 >= 275 +# define BOOST_PP_ITERATION_4 275 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 276 && BOOST_PP_ITERATION_FINISH_4 >= 276 +# define BOOST_PP_ITERATION_4 276 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 277 && BOOST_PP_ITERATION_FINISH_4 >= 277 +# define BOOST_PP_ITERATION_4 277 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 278 && BOOST_PP_ITERATION_FINISH_4 >= 278 +# define BOOST_PP_ITERATION_4 278 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 279 && BOOST_PP_ITERATION_FINISH_4 >= 279 +# define BOOST_PP_ITERATION_4 279 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 280 && BOOST_PP_ITERATION_FINISH_4 >= 280 +# define BOOST_PP_ITERATION_4 280 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 281 && BOOST_PP_ITERATION_FINISH_4 >= 281 +# define BOOST_PP_ITERATION_4 281 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 282 && BOOST_PP_ITERATION_FINISH_4 >= 282 +# define BOOST_PP_ITERATION_4 282 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 283 && BOOST_PP_ITERATION_FINISH_4 >= 283 +# define BOOST_PP_ITERATION_4 283 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 284 && BOOST_PP_ITERATION_FINISH_4 >= 284 +# define BOOST_PP_ITERATION_4 284 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 285 && BOOST_PP_ITERATION_FINISH_4 >= 285 +# define BOOST_PP_ITERATION_4 285 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 286 && BOOST_PP_ITERATION_FINISH_4 >= 286 +# define BOOST_PP_ITERATION_4 286 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 287 && BOOST_PP_ITERATION_FINISH_4 >= 287 +# define BOOST_PP_ITERATION_4 287 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 288 && BOOST_PP_ITERATION_FINISH_4 >= 288 +# define BOOST_PP_ITERATION_4 288 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 289 && BOOST_PP_ITERATION_FINISH_4 >= 289 +# define BOOST_PP_ITERATION_4 289 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 290 && BOOST_PP_ITERATION_FINISH_4 >= 290 +# define BOOST_PP_ITERATION_4 290 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 291 && BOOST_PP_ITERATION_FINISH_4 >= 291 +# define BOOST_PP_ITERATION_4 291 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 292 && BOOST_PP_ITERATION_FINISH_4 >= 292 +# define BOOST_PP_ITERATION_4 292 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 293 && BOOST_PP_ITERATION_FINISH_4 >= 293 +# define BOOST_PP_ITERATION_4 293 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 294 && BOOST_PP_ITERATION_FINISH_4 >= 294 +# define BOOST_PP_ITERATION_4 294 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 295 && BOOST_PP_ITERATION_FINISH_4 >= 295 +# define BOOST_PP_ITERATION_4 295 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 296 && BOOST_PP_ITERATION_FINISH_4 >= 296 +# define BOOST_PP_ITERATION_4 296 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 297 && BOOST_PP_ITERATION_FINISH_4 >= 297 +# define BOOST_PP_ITERATION_4 297 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 298 && BOOST_PP_ITERATION_FINISH_4 >= 298 +# define BOOST_PP_ITERATION_4 298 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 299 && BOOST_PP_ITERATION_FINISH_4 >= 299 +# define BOOST_PP_ITERATION_4 299 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 300 && BOOST_PP_ITERATION_FINISH_4 >= 300 +# define BOOST_PP_ITERATION_4 300 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 301 && BOOST_PP_ITERATION_FINISH_4 >= 301 +# define BOOST_PP_ITERATION_4 301 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 302 && BOOST_PP_ITERATION_FINISH_4 >= 302 +# define BOOST_PP_ITERATION_4 302 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 303 && BOOST_PP_ITERATION_FINISH_4 >= 303 +# define BOOST_PP_ITERATION_4 303 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 304 && BOOST_PP_ITERATION_FINISH_4 >= 304 +# define BOOST_PP_ITERATION_4 304 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 305 && BOOST_PP_ITERATION_FINISH_4 >= 305 +# define BOOST_PP_ITERATION_4 305 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 306 && BOOST_PP_ITERATION_FINISH_4 >= 306 +# define BOOST_PP_ITERATION_4 306 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 307 && BOOST_PP_ITERATION_FINISH_4 >= 307 +# define BOOST_PP_ITERATION_4 307 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 308 && BOOST_PP_ITERATION_FINISH_4 >= 308 +# define BOOST_PP_ITERATION_4 308 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 309 && BOOST_PP_ITERATION_FINISH_4 >= 309 +# define BOOST_PP_ITERATION_4 309 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 310 && BOOST_PP_ITERATION_FINISH_4 >= 310 +# define BOOST_PP_ITERATION_4 310 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 311 && BOOST_PP_ITERATION_FINISH_4 >= 311 +# define BOOST_PP_ITERATION_4 311 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 312 && BOOST_PP_ITERATION_FINISH_4 >= 312 +# define BOOST_PP_ITERATION_4 312 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 313 && BOOST_PP_ITERATION_FINISH_4 >= 313 +# define BOOST_PP_ITERATION_4 313 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 314 && BOOST_PP_ITERATION_FINISH_4 >= 314 +# define BOOST_PP_ITERATION_4 314 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 315 && BOOST_PP_ITERATION_FINISH_4 >= 315 +# define BOOST_PP_ITERATION_4 315 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 316 && BOOST_PP_ITERATION_FINISH_4 >= 316 +# define BOOST_PP_ITERATION_4 316 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 317 && BOOST_PP_ITERATION_FINISH_4 >= 317 +# define BOOST_PP_ITERATION_4 317 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 318 && BOOST_PP_ITERATION_FINISH_4 >= 318 +# define BOOST_PP_ITERATION_4 318 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 319 && BOOST_PP_ITERATION_FINISH_4 >= 319 +# define BOOST_PP_ITERATION_4 319 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 320 && BOOST_PP_ITERATION_FINISH_4 >= 320 +# define BOOST_PP_ITERATION_4 320 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 321 && BOOST_PP_ITERATION_FINISH_4 >= 321 +# define BOOST_PP_ITERATION_4 321 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 322 && BOOST_PP_ITERATION_FINISH_4 >= 322 +# define BOOST_PP_ITERATION_4 322 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 323 && BOOST_PP_ITERATION_FINISH_4 >= 323 +# define BOOST_PP_ITERATION_4 323 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 324 && BOOST_PP_ITERATION_FINISH_4 >= 324 +# define BOOST_PP_ITERATION_4 324 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 325 && BOOST_PP_ITERATION_FINISH_4 >= 325 +# define BOOST_PP_ITERATION_4 325 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 326 && BOOST_PP_ITERATION_FINISH_4 >= 326 +# define BOOST_PP_ITERATION_4 326 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 327 && BOOST_PP_ITERATION_FINISH_4 >= 327 +# define BOOST_PP_ITERATION_4 327 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 328 && BOOST_PP_ITERATION_FINISH_4 >= 328 +# define BOOST_PP_ITERATION_4 328 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 329 && BOOST_PP_ITERATION_FINISH_4 >= 329 +# define BOOST_PP_ITERATION_4 329 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 330 && BOOST_PP_ITERATION_FINISH_4 >= 330 +# define BOOST_PP_ITERATION_4 330 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 331 && BOOST_PP_ITERATION_FINISH_4 >= 331 +# define BOOST_PP_ITERATION_4 331 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 332 && BOOST_PP_ITERATION_FINISH_4 >= 332 +# define BOOST_PP_ITERATION_4 332 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 333 && BOOST_PP_ITERATION_FINISH_4 >= 333 +# define BOOST_PP_ITERATION_4 333 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 334 && BOOST_PP_ITERATION_FINISH_4 >= 334 +# define BOOST_PP_ITERATION_4 334 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 335 && BOOST_PP_ITERATION_FINISH_4 >= 335 +# define BOOST_PP_ITERATION_4 335 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 336 && BOOST_PP_ITERATION_FINISH_4 >= 336 +# define BOOST_PP_ITERATION_4 336 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 337 && BOOST_PP_ITERATION_FINISH_4 >= 337 +# define BOOST_PP_ITERATION_4 337 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 338 && BOOST_PP_ITERATION_FINISH_4 >= 338 +# define BOOST_PP_ITERATION_4 338 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 339 && BOOST_PP_ITERATION_FINISH_4 >= 339 +# define BOOST_PP_ITERATION_4 339 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 340 && BOOST_PP_ITERATION_FINISH_4 >= 340 +# define BOOST_PP_ITERATION_4 340 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 341 && BOOST_PP_ITERATION_FINISH_4 >= 341 +# define BOOST_PP_ITERATION_4 341 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 342 && BOOST_PP_ITERATION_FINISH_4 >= 342 +# define BOOST_PP_ITERATION_4 342 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 343 && BOOST_PP_ITERATION_FINISH_4 >= 343 +# define BOOST_PP_ITERATION_4 343 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 344 && BOOST_PP_ITERATION_FINISH_4 >= 344 +# define BOOST_PP_ITERATION_4 344 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 345 && BOOST_PP_ITERATION_FINISH_4 >= 345 +# define BOOST_PP_ITERATION_4 345 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 346 && BOOST_PP_ITERATION_FINISH_4 >= 346 +# define BOOST_PP_ITERATION_4 346 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 347 && BOOST_PP_ITERATION_FINISH_4 >= 347 +# define BOOST_PP_ITERATION_4 347 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 348 && BOOST_PP_ITERATION_FINISH_4 >= 348 +# define BOOST_PP_ITERATION_4 348 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 349 && BOOST_PP_ITERATION_FINISH_4 >= 349 +# define BOOST_PP_ITERATION_4 349 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 350 && BOOST_PP_ITERATION_FINISH_4 >= 350 +# define BOOST_PP_ITERATION_4 350 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 351 && BOOST_PP_ITERATION_FINISH_4 >= 351 +# define BOOST_PP_ITERATION_4 351 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 352 && BOOST_PP_ITERATION_FINISH_4 >= 352 +# define BOOST_PP_ITERATION_4 352 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 353 && BOOST_PP_ITERATION_FINISH_4 >= 353 +# define BOOST_PP_ITERATION_4 353 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 354 && BOOST_PP_ITERATION_FINISH_4 >= 354 +# define BOOST_PP_ITERATION_4 354 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 355 && BOOST_PP_ITERATION_FINISH_4 >= 355 +# define BOOST_PP_ITERATION_4 355 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 356 && BOOST_PP_ITERATION_FINISH_4 >= 356 +# define BOOST_PP_ITERATION_4 356 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 357 && BOOST_PP_ITERATION_FINISH_4 >= 357 +# define BOOST_PP_ITERATION_4 357 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 358 && BOOST_PP_ITERATION_FINISH_4 >= 358 +# define BOOST_PP_ITERATION_4 358 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 359 && BOOST_PP_ITERATION_FINISH_4 >= 359 +# define BOOST_PP_ITERATION_4 359 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 360 && BOOST_PP_ITERATION_FINISH_4 >= 360 +# define BOOST_PP_ITERATION_4 360 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 361 && BOOST_PP_ITERATION_FINISH_4 >= 361 +# define BOOST_PP_ITERATION_4 361 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 362 && BOOST_PP_ITERATION_FINISH_4 >= 362 +# define BOOST_PP_ITERATION_4 362 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 363 && BOOST_PP_ITERATION_FINISH_4 >= 363 +# define BOOST_PP_ITERATION_4 363 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 364 && BOOST_PP_ITERATION_FINISH_4 >= 364 +# define BOOST_PP_ITERATION_4 364 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 365 && BOOST_PP_ITERATION_FINISH_4 >= 365 +# define BOOST_PP_ITERATION_4 365 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 366 && BOOST_PP_ITERATION_FINISH_4 >= 366 +# define BOOST_PP_ITERATION_4 366 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 367 && BOOST_PP_ITERATION_FINISH_4 >= 367 +# define BOOST_PP_ITERATION_4 367 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 368 && BOOST_PP_ITERATION_FINISH_4 >= 368 +# define BOOST_PP_ITERATION_4 368 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 369 && BOOST_PP_ITERATION_FINISH_4 >= 369 +# define BOOST_PP_ITERATION_4 369 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 370 && BOOST_PP_ITERATION_FINISH_4 >= 370 +# define BOOST_PP_ITERATION_4 370 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 371 && BOOST_PP_ITERATION_FINISH_4 >= 371 +# define BOOST_PP_ITERATION_4 371 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 372 && BOOST_PP_ITERATION_FINISH_4 >= 372 +# define BOOST_PP_ITERATION_4 372 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 373 && BOOST_PP_ITERATION_FINISH_4 >= 373 +# define BOOST_PP_ITERATION_4 373 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 374 && BOOST_PP_ITERATION_FINISH_4 >= 374 +# define BOOST_PP_ITERATION_4 374 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 375 && BOOST_PP_ITERATION_FINISH_4 >= 375 +# define BOOST_PP_ITERATION_4 375 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 376 && BOOST_PP_ITERATION_FINISH_4 >= 376 +# define BOOST_PP_ITERATION_4 376 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 377 && BOOST_PP_ITERATION_FINISH_4 >= 377 +# define BOOST_PP_ITERATION_4 377 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 378 && BOOST_PP_ITERATION_FINISH_4 >= 378 +# define BOOST_PP_ITERATION_4 378 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 379 && BOOST_PP_ITERATION_FINISH_4 >= 379 +# define BOOST_PP_ITERATION_4 379 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 380 && BOOST_PP_ITERATION_FINISH_4 >= 380 +# define BOOST_PP_ITERATION_4 380 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 381 && BOOST_PP_ITERATION_FINISH_4 >= 381 +# define BOOST_PP_ITERATION_4 381 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 382 && BOOST_PP_ITERATION_FINISH_4 >= 382 +# define BOOST_PP_ITERATION_4 382 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 383 && BOOST_PP_ITERATION_FINISH_4 >= 383 +# define BOOST_PP_ITERATION_4 383 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 384 && BOOST_PP_ITERATION_FINISH_4 >= 384 +# define BOOST_PP_ITERATION_4 384 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 385 && BOOST_PP_ITERATION_FINISH_4 >= 385 +# define BOOST_PP_ITERATION_4 385 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 386 && BOOST_PP_ITERATION_FINISH_4 >= 386 +# define BOOST_PP_ITERATION_4 386 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 387 && BOOST_PP_ITERATION_FINISH_4 >= 387 +# define BOOST_PP_ITERATION_4 387 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 388 && BOOST_PP_ITERATION_FINISH_4 >= 388 +# define BOOST_PP_ITERATION_4 388 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 389 && BOOST_PP_ITERATION_FINISH_4 >= 389 +# define BOOST_PP_ITERATION_4 389 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 390 && BOOST_PP_ITERATION_FINISH_4 >= 390 +# define BOOST_PP_ITERATION_4 390 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 391 && BOOST_PP_ITERATION_FINISH_4 >= 391 +# define BOOST_PP_ITERATION_4 391 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 392 && BOOST_PP_ITERATION_FINISH_4 >= 392 +# define BOOST_PP_ITERATION_4 392 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 393 && BOOST_PP_ITERATION_FINISH_4 >= 393 +# define BOOST_PP_ITERATION_4 393 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 394 && BOOST_PP_ITERATION_FINISH_4 >= 394 +# define BOOST_PP_ITERATION_4 394 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 395 && BOOST_PP_ITERATION_FINISH_4 >= 395 +# define BOOST_PP_ITERATION_4 395 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 396 && BOOST_PP_ITERATION_FINISH_4 >= 396 +# define BOOST_PP_ITERATION_4 396 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 397 && BOOST_PP_ITERATION_FINISH_4 >= 397 +# define BOOST_PP_ITERATION_4 397 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 398 && BOOST_PP_ITERATION_FINISH_4 >= 398 +# define BOOST_PP_ITERATION_4 398 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 399 && BOOST_PP_ITERATION_FINISH_4 >= 399 +# define BOOST_PP_ITERATION_4 399 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 400 && BOOST_PP_ITERATION_FINISH_4 >= 400 +# define BOOST_PP_ITERATION_4 400 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 401 && BOOST_PP_ITERATION_FINISH_4 >= 401 +# define BOOST_PP_ITERATION_4 401 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 402 && BOOST_PP_ITERATION_FINISH_4 >= 402 +# define BOOST_PP_ITERATION_4 402 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 403 && BOOST_PP_ITERATION_FINISH_4 >= 403 +# define BOOST_PP_ITERATION_4 403 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 404 && BOOST_PP_ITERATION_FINISH_4 >= 404 +# define BOOST_PP_ITERATION_4 404 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 405 && BOOST_PP_ITERATION_FINISH_4 >= 405 +# define BOOST_PP_ITERATION_4 405 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 406 && BOOST_PP_ITERATION_FINISH_4 >= 406 +# define BOOST_PP_ITERATION_4 406 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 407 && BOOST_PP_ITERATION_FINISH_4 >= 407 +# define BOOST_PP_ITERATION_4 407 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 408 && BOOST_PP_ITERATION_FINISH_4 >= 408 +# define BOOST_PP_ITERATION_4 408 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 409 && BOOST_PP_ITERATION_FINISH_4 >= 409 +# define BOOST_PP_ITERATION_4 409 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 410 && BOOST_PP_ITERATION_FINISH_4 >= 410 +# define BOOST_PP_ITERATION_4 410 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 411 && BOOST_PP_ITERATION_FINISH_4 >= 411 +# define BOOST_PP_ITERATION_4 411 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 412 && BOOST_PP_ITERATION_FINISH_4 >= 412 +# define BOOST_PP_ITERATION_4 412 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 413 && BOOST_PP_ITERATION_FINISH_4 >= 413 +# define BOOST_PP_ITERATION_4 413 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 414 && BOOST_PP_ITERATION_FINISH_4 >= 414 +# define BOOST_PP_ITERATION_4 414 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 415 && BOOST_PP_ITERATION_FINISH_4 >= 415 +# define BOOST_PP_ITERATION_4 415 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 416 && BOOST_PP_ITERATION_FINISH_4 >= 416 +# define BOOST_PP_ITERATION_4 416 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 417 && BOOST_PP_ITERATION_FINISH_4 >= 417 +# define BOOST_PP_ITERATION_4 417 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 418 && BOOST_PP_ITERATION_FINISH_4 >= 418 +# define BOOST_PP_ITERATION_4 418 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 419 && BOOST_PP_ITERATION_FINISH_4 >= 419 +# define BOOST_PP_ITERATION_4 419 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 420 && BOOST_PP_ITERATION_FINISH_4 >= 420 +# define BOOST_PP_ITERATION_4 420 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 421 && BOOST_PP_ITERATION_FINISH_4 >= 421 +# define BOOST_PP_ITERATION_4 421 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 422 && BOOST_PP_ITERATION_FINISH_4 >= 422 +# define BOOST_PP_ITERATION_4 422 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 423 && BOOST_PP_ITERATION_FINISH_4 >= 423 +# define BOOST_PP_ITERATION_4 423 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 424 && BOOST_PP_ITERATION_FINISH_4 >= 424 +# define BOOST_PP_ITERATION_4 424 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 425 && BOOST_PP_ITERATION_FINISH_4 >= 425 +# define BOOST_PP_ITERATION_4 425 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 426 && BOOST_PP_ITERATION_FINISH_4 >= 426 +# define BOOST_PP_ITERATION_4 426 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 427 && BOOST_PP_ITERATION_FINISH_4 >= 427 +# define BOOST_PP_ITERATION_4 427 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 428 && BOOST_PP_ITERATION_FINISH_4 >= 428 +# define BOOST_PP_ITERATION_4 428 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 429 && BOOST_PP_ITERATION_FINISH_4 >= 429 +# define BOOST_PP_ITERATION_4 429 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 430 && BOOST_PP_ITERATION_FINISH_4 >= 430 +# define BOOST_PP_ITERATION_4 430 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 431 && BOOST_PP_ITERATION_FINISH_4 >= 431 +# define BOOST_PP_ITERATION_4 431 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 432 && BOOST_PP_ITERATION_FINISH_4 >= 432 +# define BOOST_PP_ITERATION_4 432 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 433 && BOOST_PP_ITERATION_FINISH_4 >= 433 +# define BOOST_PP_ITERATION_4 433 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 434 && BOOST_PP_ITERATION_FINISH_4 >= 434 +# define BOOST_PP_ITERATION_4 434 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 435 && BOOST_PP_ITERATION_FINISH_4 >= 435 +# define BOOST_PP_ITERATION_4 435 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 436 && BOOST_PP_ITERATION_FINISH_4 >= 436 +# define BOOST_PP_ITERATION_4 436 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 437 && BOOST_PP_ITERATION_FINISH_4 >= 437 +# define BOOST_PP_ITERATION_4 437 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 438 && BOOST_PP_ITERATION_FINISH_4 >= 438 +# define BOOST_PP_ITERATION_4 438 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 439 && BOOST_PP_ITERATION_FINISH_4 >= 439 +# define BOOST_PP_ITERATION_4 439 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 440 && BOOST_PP_ITERATION_FINISH_4 >= 440 +# define BOOST_PP_ITERATION_4 440 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 441 && BOOST_PP_ITERATION_FINISH_4 >= 441 +# define BOOST_PP_ITERATION_4 441 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 442 && BOOST_PP_ITERATION_FINISH_4 >= 442 +# define BOOST_PP_ITERATION_4 442 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 443 && BOOST_PP_ITERATION_FINISH_4 >= 443 +# define BOOST_PP_ITERATION_4 443 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 444 && BOOST_PP_ITERATION_FINISH_4 >= 444 +# define BOOST_PP_ITERATION_4 444 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 445 && BOOST_PP_ITERATION_FINISH_4 >= 445 +# define BOOST_PP_ITERATION_4 445 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 446 && BOOST_PP_ITERATION_FINISH_4 >= 446 +# define BOOST_PP_ITERATION_4 446 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 447 && BOOST_PP_ITERATION_FINISH_4 >= 447 +# define BOOST_PP_ITERATION_4 447 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 448 && BOOST_PP_ITERATION_FINISH_4 >= 448 +# define BOOST_PP_ITERATION_4 448 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 449 && BOOST_PP_ITERATION_FINISH_4 >= 449 +# define BOOST_PP_ITERATION_4 449 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 450 && BOOST_PP_ITERATION_FINISH_4 >= 450 +# define BOOST_PP_ITERATION_4 450 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 451 && BOOST_PP_ITERATION_FINISH_4 >= 451 +# define BOOST_PP_ITERATION_4 451 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 452 && BOOST_PP_ITERATION_FINISH_4 >= 452 +# define BOOST_PP_ITERATION_4 452 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 453 && BOOST_PP_ITERATION_FINISH_4 >= 453 +# define BOOST_PP_ITERATION_4 453 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 454 && BOOST_PP_ITERATION_FINISH_4 >= 454 +# define BOOST_PP_ITERATION_4 454 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 455 && BOOST_PP_ITERATION_FINISH_4 >= 455 +# define BOOST_PP_ITERATION_4 455 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 456 && BOOST_PP_ITERATION_FINISH_4 >= 456 +# define BOOST_PP_ITERATION_4 456 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 457 && BOOST_PP_ITERATION_FINISH_4 >= 457 +# define BOOST_PP_ITERATION_4 457 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 458 && BOOST_PP_ITERATION_FINISH_4 >= 458 +# define BOOST_PP_ITERATION_4 458 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 459 && BOOST_PP_ITERATION_FINISH_4 >= 459 +# define BOOST_PP_ITERATION_4 459 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 460 && BOOST_PP_ITERATION_FINISH_4 >= 460 +# define BOOST_PP_ITERATION_4 460 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 461 && BOOST_PP_ITERATION_FINISH_4 >= 461 +# define BOOST_PP_ITERATION_4 461 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 462 && BOOST_PP_ITERATION_FINISH_4 >= 462 +# define BOOST_PP_ITERATION_4 462 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 463 && BOOST_PP_ITERATION_FINISH_4 >= 463 +# define BOOST_PP_ITERATION_4 463 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 464 && BOOST_PP_ITERATION_FINISH_4 >= 464 +# define BOOST_PP_ITERATION_4 464 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 465 && BOOST_PP_ITERATION_FINISH_4 >= 465 +# define BOOST_PP_ITERATION_4 465 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 466 && BOOST_PP_ITERATION_FINISH_4 >= 466 +# define BOOST_PP_ITERATION_4 466 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 467 && BOOST_PP_ITERATION_FINISH_4 >= 467 +# define BOOST_PP_ITERATION_4 467 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 468 && BOOST_PP_ITERATION_FINISH_4 >= 468 +# define BOOST_PP_ITERATION_4 468 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 469 && BOOST_PP_ITERATION_FINISH_4 >= 469 +# define BOOST_PP_ITERATION_4 469 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 470 && BOOST_PP_ITERATION_FINISH_4 >= 470 +# define BOOST_PP_ITERATION_4 470 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 471 && BOOST_PP_ITERATION_FINISH_4 >= 471 +# define BOOST_PP_ITERATION_4 471 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 472 && BOOST_PP_ITERATION_FINISH_4 >= 472 +# define BOOST_PP_ITERATION_4 472 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 473 && BOOST_PP_ITERATION_FINISH_4 >= 473 +# define BOOST_PP_ITERATION_4 473 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 474 && BOOST_PP_ITERATION_FINISH_4 >= 474 +# define BOOST_PP_ITERATION_4 474 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 475 && BOOST_PP_ITERATION_FINISH_4 >= 475 +# define BOOST_PP_ITERATION_4 475 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 476 && BOOST_PP_ITERATION_FINISH_4 >= 476 +# define BOOST_PP_ITERATION_4 476 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 477 && BOOST_PP_ITERATION_FINISH_4 >= 477 +# define BOOST_PP_ITERATION_4 477 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 478 && BOOST_PP_ITERATION_FINISH_4 >= 478 +# define BOOST_PP_ITERATION_4 478 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 479 && BOOST_PP_ITERATION_FINISH_4 >= 479 +# define BOOST_PP_ITERATION_4 479 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 480 && BOOST_PP_ITERATION_FINISH_4 >= 480 +# define BOOST_PP_ITERATION_4 480 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 481 && BOOST_PP_ITERATION_FINISH_4 >= 481 +# define BOOST_PP_ITERATION_4 481 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 482 && BOOST_PP_ITERATION_FINISH_4 >= 482 +# define BOOST_PP_ITERATION_4 482 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 483 && BOOST_PP_ITERATION_FINISH_4 >= 483 +# define BOOST_PP_ITERATION_4 483 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 484 && BOOST_PP_ITERATION_FINISH_4 >= 484 +# define BOOST_PP_ITERATION_4 484 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 485 && BOOST_PP_ITERATION_FINISH_4 >= 485 +# define BOOST_PP_ITERATION_4 485 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 486 && BOOST_PP_ITERATION_FINISH_4 >= 486 +# define BOOST_PP_ITERATION_4 486 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 487 && BOOST_PP_ITERATION_FINISH_4 >= 487 +# define BOOST_PP_ITERATION_4 487 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 488 && BOOST_PP_ITERATION_FINISH_4 >= 488 +# define BOOST_PP_ITERATION_4 488 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 489 && BOOST_PP_ITERATION_FINISH_4 >= 489 +# define BOOST_PP_ITERATION_4 489 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 490 && BOOST_PP_ITERATION_FINISH_4 >= 490 +# define BOOST_PP_ITERATION_4 490 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 491 && BOOST_PP_ITERATION_FINISH_4 >= 491 +# define BOOST_PP_ITERATION_4 491 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 492 && BOOST_PP_ITERATION_FINISH_4 >= 492 +# define BOOST_PP_ITERATION_4 492 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 493 && BOOST_PP_ITERATION_FINISH_4 >= 493 +# define BOOST_PP_ITERATION_4 493 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 494 && BOOST_PP_ITERATION_FINISH_4 >= 494 +# define BOOST_PP_ITERATION_4 494 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 495 && BOOST_PP_ITERATION_FINISH_4 >= 495 +# define BOOST_PP_ITERATION_4 495 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 496 && BOOST_PP_ITERATION_FINISH_4 >= 496 +# define BOOST_PP_ITERATION_4 496 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 497 && BOOST_PP_ITERATION_FINISH_4 >= 497 +# define BOOST_PP_ITERATION_4 497 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 498 && BOOST_PP_ITERATION_FINISH_4 >= 498 +# define BOOST_PP_ITERATION_4 498 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 499 && BOOST_PP_ITERATION_FINISH_4 >= 499 +# define BOOST_PP_ITERATION_4 499 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 500 && BOOST_PP_ITERATION_FINISH_4 >= 500 +# define BOOST_PP_ITERATION_4 500 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 501 && BOOST_PP_ITERATION_FINISH_4 >= 501 +# define BOOST_PP_ITERATION_4 501 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 502 && BOOST_PP_ITERATION_FINISH_4 >= 502 +# define BOOST_PP_ITERATION_4 502 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 503 && BOOST_PP_ITERATION_FINISH_4 >= 503 +# define BOOST_PP_ITERATION_4 503 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 504 && BOOST_PP_ITERATION_FINISH_4 >= 504 +# define BOOST_PP_ITERATION_4 504 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 505 && BOOST_PP_ITERATION_FINISH_4 >= 505 +# define BOOST_PP_ITERATION_4 505 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 506 && BOOST_PP_ITERATION_FINISH_4 >= 506 +# define BOOST_PP_ITERATION_4 506 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 507 && BOOST_PP_ITERATION_FINISH_4 >= 507 +# define BOOST_PP_ITERATION_4 507 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 508 && BOOST_PP_ITERATION_FINISH_4 >= 508 +# define BOOST_PP_ITERATION_4 508 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 509 && BOOST_PP_ITERATION_FINISH_4 >= 509 +# define BOOST_PP_ITERATION_4 509 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 510 && BOOST_PP_ITERATION_FINISH_4 >= 510 +# define BOOST_PP_ITERATION_4 510 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 511 && BOOST_PP_ITERATION_FINISH_4 >= 511 +# define BOOST_PP_ITERATION_4 511 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_START_4 <= 512 && BOOST_PP_ITERATION_FINISH_4 >= 512 +# define BOOST_PP_ITERATION_4 512 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward5_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward5_1024.hpp new file mode 100644 index 000000000..d1c897187 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward5_1024.hpp @@ -0,0 +1,2573 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * Distributed under the Boost Software License, Version 1.0. (See +# * accompanying file LICENSE_5_0.txt or copy at +# * http://www.boost.org/LICENSE_5_0.txt) +# * * +# ************************************************************************** */ +# +# /* Revised by Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_START_5 <= 513 && BOOST_PP_ITERATION_FINISH_5 >= 513 +# define BOOST_PP_ITERATION_5 513 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 514 && BOOST_PP_ITERATION_FINISH_5 >= 514 +# define BOOST_PP_ITERATION_5 514 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 515 && BOOST_PP_ITERATION_FINISH_5 >= 515 +# define BOOST_PP_ITERATION_5 515 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 516 && BOOST_PP_ITERATION_FINISH_5 >= 516 +# define BOOST_PP_ITERATION_5 516 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 517 && BOOST_PP_ITERATION_FINISH_5 >= 517 +# define BOOST_PP_ITERATION_5 517 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 518 && BOOST_PP_ITERATION_FINISH_5 >= 518 +# define BOOST_PP_ITERATION_5 518 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 519 && BOOST_PP_ITERATION_FINISH_5 >= 519 +# define BOOST_PP_ITERATION_5 519 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 520 && BOOST_PP_ITERATION_FINISH_5 >= 520 +# define BOOST_PP_ITERATION_5 520 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 521 && BOOST_PP_ITERATION_FINISH_5 >= 521 +# define BOOST_PP_ITERATION_5 521 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 522 && BOOST_PP_ITERATION_FINISH_5 >= 522 +# define BOOST_PP_ITERATION_5 522 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 523 && BOOST_PP_ITERATION_FINISH_5 >= 523 +# define BOOST_PP_ITERATION_5 523 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 524 && BOOST_PP_ITERATION_FINISH_5 >= 524 +# define BOOST_PP_ITERATION_5 524 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 525 && BOOST_PP_ITERATION_FINISH_5 >= 525 +# define BOOST_PP_ITERATION_5 525 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 526 && BOOST_PP_ITERATION_FINISH_5 >= 526 +# define BOOST_PP_ITERATION_5 526 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 527 && BOOST_PP_ITERATION_FINISH_5 >= 527 +# define BOOST_PP_ITERATION_5 527 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 528 && BOOST_PP_ITERATION_FINISH_5 >= 528 +# define BOOST_PP_ITERATION_5 528 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 529 && BOOST_PP_ITERATION_FINISH_5 >= 529 +# define BOOST_PP_ITERATION_5 529 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 530 && BOOST_PP_ITERATION_FINISH_5 >= 530 +# define BOOST_PP_ITERATION_5 530 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 531 && BOOST_PP_ITERATION_FINISH_5 >= 531 +# define BOOST_PP_ITERATION_5 531 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 532 && BOOST_PP_ITERATION_FINISH_5 >= 532 +# define BOOST_PP_ITERATION_5 532 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 533 && BOOST_PP_ITERATION_FINISH_5 >= 533 +# define BOOST_PP_ITERATION_5 533 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 534 && BOOST_PP_ITERATION_FINISH_5 >= 534 +# define BOOST_PP_ITERATION_5 534 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 535 && BOOST_PP_ITERATION_FINISH_5 >= 535 +# define BOOST_PP_ITERATION_5 535 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 536 && BOOST_PP_ITERATION_FINISH_5 >= 536 +# define BOOST_PP_ITERATION_5 536 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 537 && BOOST_PP_ITERATION_FINISH_5 >= 537 +# define BOOST_PP_ITERATION_5 537 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 538 && BOOST_PP_ITERATION_FINISH_5 >= 538 +# define BOOST_PP_ITERATION_5 538 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 539 && BOOST_PP_ITERATION_FINISH_5 >= 539 +# define BOOST_PP_ITERATION_5 539 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 540 && BOOST_PP_ITERATION_FINISH_5 >= 540 +# define BOOST_PP_ITERATION_5 540 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 541 && BOOST_PP_ITERATION_FINISH_5 >= 541 +# define BOOST_PP_ITERATION_5 541 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 542 && BOOST_PP_ITERATION_FINISH_5 >= 542 +# define BOOST_PP_ITERATION_5 542 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 543 && BOOST_PP_ITERATION_FINISH_5 >= 543 +# define BOOST_PP_ITERATION_5 543 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 544 && BOOST_PP_ITERATION_FINISH_5 >= 544 +# define BOOST_PP_ITERATION_5 544 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 545 && BOOST_PP_ITERATION_FINISH_5 >= 545 +# define BOOST_PP_ITERATION_5 545 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 546 && BOOST_PP_ITERATION_FINISH_5 >= 546 +# define BOOST_PP_ITERATION_5 546 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 547 && BOOST_PP_ITERATION_FINISH_5 >= 547 +# define BOOST_PP_ITERATION_5 547 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 548 && BOOST_PP_ITERATION_FINISH_5 >= 548 +# define BOOST_PP_ITERATION_5 548 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 549 && BOOST_PP_ITERATION_FINISH_5 >= 549 +# define BOOST_PP_ITERATION_5 549 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 550 && BOOST_PP_ITERATION_FINISH_5 >= 550 +# define BOOST_PP_ITERATION_5 550 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 551 && BOOST_PP_ITERATION_FINISH_5 >= 551 +# define BOOST_PP_ITERATION_5 551 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 552 && BOOST_PP_ITERATION_FINISH_5 >= 552 +# define BOOST_PP_ITERATION_5 552 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 553 && BOOST_PP_ITERATION_FINISH_5 >= 553 +# define BOOST_PP_ITERATION_5 553 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 554 && BOOST_PP_ITERATION_FINISH_5 >= 554 +# define BOOST_PP_ITERATION_5 554 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 555 && BOOST_PP_ITERATION_FINISH_5 >= 555 +# define BOOST_PP_ITERATION_5 555 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 556 && BOOST_PP_ITERATION_FINISH_5 >= 556 +# define BOOST_PP_ITERATION_5 556 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 557 && BOOST_PP_ITERATION_FINISH_5 >= 557 +# define BOOST_PP_ITERATION_5 557 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 558 && BOOST_PP_ITERATION_FINISH_5 >= 558 +# define BOOST_PP_ITERATION_5 558 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 559 && BOOST_PP_ITERATION_FINISH_5 >= 559 +# define BOOST_PP_ITERATION_5 559 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 560 && BOOST_PP_ITERATION_FINISH_5 >= 560 +# define BOOST_PP_ITERATION_5 560 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 561 && BOOST_PP_ITERATION_FINISH_5 >= 561 +# define BOOST_PP_ITERATION_5 561 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 562 && BOOST_PP_ITERATION_FINISH_5 >= 562 +# define BOOST_PP_ITERATION_5 562 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 563 && BOOST_PP_ITERATION_FINISH_5 >= 563 +# define BOOST_PP_ITERATION_5 563 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 564 && BOOST_PP_ITERATION_FINISH_5 >= 564 +# define BOOST_PP_ITERATION_5 564 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 565 && BOOST_PP_ITERATION_FINISH_5 >= 565 +# define BOOST_PP_ITERATION_5 565 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 566 && BOOST_PP_ITERATION_FINISH_5 >= 566 +# define BOOST_PP_ITERATION_5 566 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 567 && BOOST_PP_ITERATION_FINISH_5 >= 567 +# define BOOST_PP_ITERATION_5 567 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 568 && BOOST_PP_ITERATION_FINISH_5 >= 568 +# define BOOST_PP_ITERATION_5 568 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 569 && BOOST_PP_ITERATION_FINISH_5 >= 569 +# define BOOST_PP_ITERATION_5 569 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 570 && BOOST_PP_ITERATION_FINISH_5 >= 570 +# define BOOST_PP_ITERATION_5 570 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 571 && BOOST_PP_ITERATION_FINISH_5 >= 571 +# define BOOST_PP_ITERATION_5 571 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 572 && BOOST_PP_ITERATION_FINISH_5 >= 572 +# define BOOST_PP_ITERATION_5 572 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 573 && BOOST_PP_ITERATION_FINISH_5 >= 573 +# define BOOST_PP_ITERATION_5 573 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 574 && BOOST_PP_ITERATION_FINISH_5 >= 574 +# define BOOST_PP_ITERATION_5 574 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 575 && BOOST_PP_ITERATION_FINISH_5 >= 575 +# define BOOST_PP_ITERATION_5 575 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 576 && BOOST_PP_ITERATION_FINISH_5 >= 576 +# define BOOST_PP_ITERATION_5 576 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 577 && BOOST_PP_ITERATION_FINISH_5 >= 577 +# define BOOST_PP_ITERATION_5 577 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 578 && BOOST_PP_ITERATION_FINISH_5 >= 578 +# define BOOST_PP_ITERATION_5 578 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 579 && BOOST_PP_ITERATION_FINISH_5 >= 579 +# define BOOST_PP_ITERATION_5 579 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 580 && BOOST_PP_ITERATION_FINISH_5 >= 580 +# define BOOST_PP_ITERATION_5 580 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 581 && BOOST_PP_ITERATION_FINISH_5 >= 581 +# define BOOST_PP_ITERATION_5 581 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 582 && BOOST_PP_ITERATION_FINISH_5 >= 582 +# define BOOST_PP_ITERATION_5 582 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 583 && BOOST_PP_ITERATION_FINISH_5 >= 583 +# define BOOST_PP_ITERATION_5 583 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 584 && BOOST_PP_ITERATION_FINISH_5 >= 584 +# define BOOST_PP_ITERATION_5 584 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 585 && BOOST_PP_ITERATION_FINISH_5 >= 585 +# define BOOST_PP_ITERATION_5 585 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 586 && BOOST_PP_ITERATION_FINISH_5 >= 586 +# define BOOST_PP_ITERATION_5 586 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 587 && BOOST_PP_ITERATION_FINISH_5 >= 587 +# define BOOST_PP_ITERATION_5 587 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 588 && BOOST_PP_ITERATION_FINISH_5 >= 588 +# define BOOST_PP_ITERATION_5 588 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 589 && BOOST_PP_ITERATION_FINISH_5 >= 589 +# define BOOST_PP_ITERATION_5 589 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 590 && BOOST_PP_ITERATION_FINISH_5 >= 590 +# define BOOST_PP_ITERATION_5 590 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 591 && BOOST_PP_ITERATION_FINISH_5 >= 591 +# define BOOST_PP_ITERATION_5 591 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 592 && BOOST_PP_ITERATION_FINISH_5 >= 592 +# define BOOST_PP_ITERATION_5 592 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 593 && BOOST_PP_ITERATION_FINISH_5 >= 593 +# define BOOST_PP_ITERATION_5 593 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 594 && BOOST_PP_ITERATION_FINISH_5 >= 594 +# define BOOST_PP_ITERATION_5 594 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 595 && BOOST_PP_ITERATION_FINISH_5 >= 595 +# define BOOST_PP_ITERATION_5 595 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 596 && BOOST_PP_ITERATION_FINISH_5 >= 596 +# define BOOST_PP_ITERATION_5 596 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 597 && BOOST_PP_ITERATION_FINISH_5 >= 597 +# define BOOST_PP_ITERATION_5 597 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 598 && BOOST_PP_ITERATION_FINISH_5 >= 598 +# define BOOST_PP_ITERATION_5 598 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 599 && BOOST_PP_ITERATION_FINISH_5 >= 599 +# define BOOST_PP_ITERATION_5 599 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 600 && BOOST_PP_ITERATION_FINISH_5 >= 600 +# define BOOST_PP_ITERATION_5 600 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 601 && BOOST_PP_ITERATION_FINISH_5 >= 601 +# define BOOST_PP_ITERATION_5 601 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 602 && BOOST_PP_ITERATION_FINISH_5 >= 602 +# define BOOST_PP_ITERATION_5 602 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 603 && BOOST_PP_ITERATION_FINISH_5 >= 603 +# define BOOST_PP_ITERATION_5 603 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 604 && BOOST_PP_ITERATION_FINISH_5 >= 604 +# define BOOST_PP_ITERATION_5 604 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 605 && BOOST_PP_ITERATION_FINISH_5 >= 605 +# define BOOST_PP_ITERATION_5 605 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 606 && BOOST_PP_ITERATION_FINISH_5 >= 606 +# define BOOST_PP_ITERATION_5 606 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 607 && BOOST_PP_ITERATION_FINISH_5 >= 607 +# define BOOST_PP_ITERATION_5 607 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 608 && BOOST_PP_ITERATION_FINISH_5 >= 608 +# define BOOST_PP_ITERATION_5 608 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 609 && BOOST_PP_ITERATION_FINISH_5 >= 609 +# define BOOST_PP_ITERATION_5 609 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 610 && BOOST_PP_ITERATION_FINISH_5 >= 610 +# define BOOST_PP_ITERATION_5 610 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 611 && BOOST_PP_ITERATION_FINISH_5 >= 611 +# define BOOST_PP_ITERATION_5 611 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 612 && BOOST_PP_ITERATION_FINISH_5 >= 612 +# define BOOST_PP_ITERATION_5 612 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 613 && BOOST_PP_ITERATION_FINISH_5 >= 613 +# define BOOST_PP_ITERATION_5 613 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 614 && BOOST_PP_ITERATION_FINISH_5 >= 614 +# define BOOST_PP_ITERATION_5 614 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 615 && BOOST_PP_ITERATION_FINISH_5 >= 615 +# define BOOST_PP_ITERATION_5 615 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 616 && BOOST_PP_ITERATION_FINISH_5 >= 616 +# define BOOST_PP_ITERATION_5 616 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 617 && BOOST_PP_ITERATION_FINISH_5 >= 617 +# define BOOST_PP_ITERATION_5 617 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 618 && BOOST_PP_ITERATION_FINISH_5 >= 618 +# define BOOST_PP_ITERATION_5 618 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 619 && BOOST_PP_ITERATION_FINISH_5 >= 619 +# define BOOST_PP_ITERATION_5 619 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 620 && BOOST_PP_ITERATION_FINISH_5 >= 620 +# define BOOST_PP_ITERATION_5 620 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 621 && BOOST_PP_ITERATION_FINISH_5 >= 621 +# define BOOST_PP_ITERATION_5 621 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 622 && BOOST_PP_ITERATION_FINISH_5 >= 622 +# define BOOST_PP_ITERATION_5 622 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 623 && BOOST_PP_ITERATION_FINISH_5 >= 623 +# define BOOST_PP_ITERATION_5 623 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 624 && BOOST_PP_ITERATION_FINISH_5 >= 624 +# define BOOST_PP_ITERATION_5 624 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 625 && BOOST_PP_ITERATION_FINISH_5 >= 625 +# define BOOST_PP_ITERATION_5 625 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 626 && BOOST_PP_ITERATION_FINISH_5 >= 626 +# define BOOST_PP_ITERATION_5 626 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 627 && BOOST_PP_ITERATION_FINISH_5 >= 627 +# define BOOST_PP_ITERATION_5 627 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 628 && BOOST_PP_ITERATION_FINISH_5 >= 628 +# define BOOST_PP_ITERATION_5 628 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 629 && BOOST_PP_ITERATION_FINISH_5 >= 629 +# define BOOST_PP_ITERATION_5 629 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 630 && BOOST_PP_ITERATION_FINISH_5 >= 630 +# define BOOST_PP_ITERATION_5 630 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 631 && BOOST_PP_ITERATION_FINISH_5 >= 631 +# define BOOST_PP_ITERATION_5 631 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 632 && BOOST_PP_ITERATION_FINISH_5 >= 632 +# define BOOST_PP_ITERATION_5 632 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 633 && BOOST_PP_ITERATION_FINISH_5 >= 633 +# define BOOST_PP_ITERATION_5 633 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 634 && BOOST_PP_ITERATION_FINISH_5 >= 634 +# define BOOST_PP_ITERATION_5 634 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 635 && BOOST_PP_ITERATION_FINISH_5 >= 635 +# define BOOST_PP_ITERATION_5 635 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 636 && BOOST_PP_ITERATION_FINISH_5 >= 636 +# define BOOST_PP_ITERATION_5 636 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 637 && BOOST_PP_ITERATION_FINISH_5 >= 637 +# define BOOST_PP_ITERATION_5 637 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 638 && BOOST_PP_ITERATION_FINISH_5 >= 638 +# define BOOST_PP_ITERATION_5 638 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 639 && BOOST_PP_ITERATION_FINISH_5 >= 639 +# define BOOST_PP_ITERATION_5 639 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 640 && BOOST_PP_ITERATION_FINISH_5 >= 640 +# define BOOST_PP_ITERATION_5 640 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 641 && BOOST_PP_ITERATION_FINISH_5 >= 641 +# define BOOST_PP_ITERATION_5 641 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 642 && BOOST_PP_ITERATION_FINISH_5 >= 642 +# define BOOST_PP_ITERATION_5 642 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 643 && BOOST_PP_ITERATION_FINISH_5 >= 643 +# define BOOST_PP_ITERATION_5 643 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 644 && BOOST_PP_ITERATION_FINISH_5 >= 644 +# define BOOST_PP_ITERATION_5 644 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 645 && BOOST_PP_ITERATION_FINISH_5 >= 645 +# define BOOST_PP_ITERATION_5 645 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 646 && BOOST_PP_ITERATION_FINISH_5 >= 646 +# define BOOST_PP_ITERATION_5 646 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 647 && BOOST_PP_ITERATION_FINISH_5 >= 647 +# define BOOST_PP_ITERATION_5 647 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 648 && BOOST_PP_ITERATION_FINISH_5 >= 648 +# define BOOST_PP_ITERATION_5 648 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 649 && BOOST_PP_ITERATION_FINISH_5 >= 649 +# define BOOST_PP_ITERATION_5 649 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 650 && BOOST_PP_ITERATION_FINISH_5 >= 650 +# define BOOST_PP_ITERATION_5 650 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 651 && BOOST_PP_ITERATION_FINISH_5 >= 651 +# define BOOST_PP_ITERATION_5 651 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 652 && BOOST_PP_ITERATION_FINISH_5 >= 652 +# define BOOST_PP_ITERATION_5 652 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 653 && BOOST_PP_ITERATION_FINISH_5 >= 653 +# define BOOST_PP_ITERATION_5 653 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 654 && BOOST_PP_ITERATION_FINISH_5 >= 654 +# define BOOST_PP_ITERATION_5 654 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 655 && BOOST_PP_ITERATION_FINISH_5 >= 655 +# define BOOST_PP_ITERATION_5 655 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 656 && BOOST_PP_ITERATION_FINISH_5 >= 656 +# define BOOST_PP_ITERATION_5 656 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 657 && BOOST_PP_ITERATION_FINISH_5 >= 657 +# define BOOST_PP_ITERATION_5 657 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 658 && BOOST_PP_ITERATION_FINISH_5 >= 658 +# define BOOST_PP_ITERATION_5 658 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 659 && BOOST_PP_ITERATION_FINISH_5 >= 659 +# define BOOST_PP_ITERATION_5 659 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 660 && BOOST_PP_ITERATION_FINISH_5 >= 660 +# define BOOST_PP_ITERATION_5 660 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 661 && BOOST_PP_ITERATION_FINISH_5 >= 661 +# define BOOST_PP_ITERATION_5 661 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 662 && BOOST_PP_ITERATION_FINISH_5 >= 662 +# define BOOST_PP_ITERATION_5 662 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 663 && BOOST_PP_ITERATION_FINISH_5 >= 663 +# define BOOST_PP_ITERATION_5 663 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 664 && BOOST_PP_ITERATION_FINISH_5 >= 664 +# define BOOST_PP_ITERATION_5 664 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 665 && BOOST_PP_ITERATION_FINISH_5 >= 665 +# define BOOST_PP_ITERATION_5 665 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 666 && BOOST_PP_ITERATION_FINISH_5 >= 666 +# define BOOST_PP_ITERATION_5 666 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 667 && BOOST_PP_ITERATION_FINISH_5 >= 667 +# define BOOST_PP_ITERATION_5 667 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 668 && BOOST_PP_ITERATION_FINISH_5 >= 668 +# define BOOST_PP_ITERATION_5 668 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 669 && BOOST_PP_ITERATION_FINISH_5 >= 669 +# define BOOST_PP_ITERATION_5 669 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 670 && BOOST_PP_ITERATION_FINISH_5 >= 670 +# define BOOST_PP_ITERATION_5 670 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 671 && BOOST_PP_ITERATION_FINISH_5 >= 671 +# define BOOST_PP_ITERATION_5 671 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 672 && BOOST_PP_ITERATION_FINISH_5 >= 672 +# define BOOST_PP_ITERATION_5 672 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 673 && BOOST_PP_ITERATION_FINISH_5 >= 673 +# define BOOST_PP_ITERATION_5 673 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 674 && BOOST_PP_ITERATION_FINISH_5 >= 674 +# define BOOST_PP_ITERATION_5 674 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 675 && BOOST_PP_ITERATION_FINISH_5 >= 675 +# define BOOST_PP_ITERATION_5 675 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 676 && BOOST_PP_ITERATION_FINISH_5 >= 676 +# define BOOST_PP_ITERATION_5 676 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 677 && BOOST_PP_ITERATION_FINISH_5 >= 677 +# define BOOST_PP_ITERATION_5 677 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 678 && BOOST_PP_ITERATION_FINISH_5 >= 678 +# define BOOST_PP_ITERATION_5 678 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 679 && BOOST_PP_ITERATION_FINISH_5 >= 679 +# define BOOST_PP_ITERATION_5 679 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 680 && BOOST_PP_ITERATION_FINISH_5 >= 680 +# define BOOST_PP_ITERATION_5 680 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 681 && BOOST_PP_ITERATION_FINISH_5 >= 681 +# define BOOST_PP_ITERATION_5 681 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 682 && BOOST_PP_ITERATION_FINISH_5 >= 682 +# define BOOST_PP_ITERATION_5 682 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 683 && BOOST_PP_ITERATION_FINISH_5 >= 683 +# define BOOST_PP_ITERATION_5 683 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 684 && BOOST_PP_ITERATION_FINISH_5 >= 684 +# define BOOST_PP_ITERATION_5 684 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 685 && BOOST_PP_ITERATION_FINISH_5 >= 685 +# define BOOST_PP_ITERATION_5 685 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 686 && BOOST_PP_ITERATION_FINISH_5 >= 686 +# define BOOST_PP_ITERATION_5 686 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 687 && BOOST_PP_ITERATION_FINISH_5 >= 687 +# define BOOST_PP_ITERATION_5 687 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 688 && BOOST_PP_ITERATION_FINISH_5 >= 688 +# define BOOST_PP_ITERATION_5 688 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 689 && BOOST_PP_ITERATION_FINISH_5 >= 689 +# define BOOST_PP_ITERATION_5 689 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 690 && BOOST_PP_ITERATION_FINISH_5 >= 690 +# define BOOST_PP_ITERATION_5 690 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 691 && BOOST_PP_ITERATION_FINISH_5 >= 691 +# define BOOST_PP_ITERATION_5 691 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 692 && BOOST_PP_ITERATION_FINISH_5 >= 692 +# define BOOST_PP_ITERATION_5 692 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 693 && BOOST_PP_ITERATION_FINISH_5 >= 693 +# define BOOST_PP_ITERATION_5 693 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 694 && BOOST_PP_ITERATION_FINISH_5 >= 694 +# define BOOST_PP_ITERATION_5 694 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 695 && BOOST_PP_ITERATION_FINISH_5 >= 695 +# define BOOST_PP_ITERATION_5 695 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 696 && BOOST_PP_ITERATION_FINISH_5 >= 696 +# define BOOST_PP_ITERATION_5 696 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 697 && BOOST_PP_ITERATION_FINISH_5 >= 697 +# define BOOST_PP_ITERATION_5 697 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 698 && BOOST_PP_ITERATION_FINISH_5 >= 698 +# define BOOST_PP_ITERATION_5 698 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 699 && BOOST_PP_ITERATION_FINISH_5 >= 699 +# define BOOST_PP_ITERATION_5 699 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 700 && BOOST_PP_ITERATION_FINISH_5 >= 700 +# define BOOST_PP_ITERATION_5 700 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 701 && BOOST_PP_ITERATION_FINISH_5 >= 701 +# define BOOST_PP_ITERATION_5 701 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 702 && BOOST_PP_ITERATION_FINISH_5 >= 702 +# define BOOST_PP_ITERATION_5 702 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 703 && BOOST_PP_ITERATION_FINISH_5 >= 703 +# define BOOST_PP_ITERATION_5 703 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 704 && BOOST_PP_ITERATION_FINISH_5 >= 704 +# define BOOST_PP_ITERATION_5 704 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 705 && BOOST_PP_ITERATION_FINISH_5 >= 705 +# define BOOST_PP_ITERATION_5 705 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 706 && BOOST_PP_ITERATION_FINISH_5 >= 706 +# define BOOST_PP_ITERATION_5 706 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 707 && BOOST_PP_ITERATION_FINISH_5 >= 707 +# define BOOST_PP_ITERATION_5 707 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 708 && BOOST_PP_ITERATION_FINISH_5 >= 708 +# define BOOST_PP_ITERATION_5 708 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 709 && BOOST_PP_ITERATION_FINISH_5 >= 709 +# define BOOST_PP_ITERATION_5 709 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 710 && BOOST_PP_ITERATION_FINISH_5 >= 710 +# define BOOST_PP_ITERATION_5 710 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 711 && BOOST_PP_ITERATION_FINISH_5 >= 711 +# define BOOST_PP_ITERATION_5 711 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 712 && BOOST_PP_ITERATION_FINISH_5 >= 712 +# define BOOST_PP_ITERATION_5 712 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 713 && BOOST_PP_ITERATION_FINISH_5 >= 713 +# define BOOST_PP_ITERATION_5 713 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 714 && BOOST_PP_ITERATION_FINISH_5 >= 714 +# define BOOST_PP_ITERATION_5 714 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 715 && BOOST_PP_ITERATION_FINISH_5 >= 715 +# define BOOST_PP_ITERATION_5 715 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 716 && BOOST_PP_ITERATION_FINISH_5 >= 716 +# define BOOST_PP_ITERATION_5 716 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 717 && BOOST_PP_ITERATION_FINISH_5 >= 717 +# define BOOST_PP_ITERATION_5 717 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 718 && BOOST_PP_ITERATION_FINISH_5 >= 718 +# define BOOST_PP_ITERATION_5 718 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 719 && BOOST_PP_ITERATION_FINISH_5 >= 719 +# define BOOST_PP_ITERATION_5 719 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 720 && BOOST_PP_ITERATION_FINISH_5 >= 720 +# define BOOST_PP_ITERATION_5 720 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 721 && BOOST_PP_ITERATION_FINISH_5 >= 721 +# define BOOST_PP_ITERATION_5 721 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 722 && BOOST_PP_ITERATION_FINISH_5 >= 722 +# define BOOST_PP_ITERATION_5 722 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 723 && BOOST_PP_ITERATION_FINISH_5 >= 723 +# define BOOST_PP_ITERATION_5 723 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 724 && BOOST_PP_ITERATION_FINISH_5 >= 724 +# define BOOST_PP_ITERATION_5 724 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 725 && BOOST_PP_ITERATION_FINISH_5 >= 725 +# define BOOST_PP_ITERATION_5 725 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 726 && BOOST_PP_ITERATION_FINISH_5 >= 726 +# define BOOST_PP_ITERATION_5 726 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 727 && BOOST_PP_ITERATION_FINISH_5 >= 727 +# define BOOST_PP_ITERATION_5 727 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 728 && BOOST_PP_ITERATION_FINISH_5 >= 728 +# define BOOST_PP_ITERATION_5 728 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 729 && BOOST_PP_ITERATION_FINISH_5 >= 729 +# define BOOST_PP_ITERATION_5 729 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 730 && BOOST_PP_ITERATION_FINISH_5 >= 730 +# define BOOST_PP_ITERATION_5 730 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 731 && BOOST_PP_ITERATION_FINISH_5 >= 731 +# define BOOST_PP_ITERATION_5 731 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 732 && BOOST_PP_ITERATION_FINISH_5 >= 732 +# define BOOST_PP_ITERATION_5 732 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 733 && BOOST_PP_ITERATION_FINISH_5 >= 733 +# define BOOST_PP_ITERATION_5 733 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 734 && BOOST_PP_ITERATION_FINISH_5 >= 734 +# define BOOST_PP_ITERATION_5 734 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 735 && BOOST_PP_ITERATION_FINISH_5 >= 735 +# define BOOST_PP_ITERATION_5 735 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 736 && BOOST_PP_ITERATION_FINISH_5 >= 736 +# define BOOST_PP_ITERATION_5 736 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 737 && BOOST_PP_ITERATION_FINISH_5 >= 737 +# define BOOST_PP_ITERATION_5 737 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 738 && BOOST_PP_ITERATION_FINISH_5 >= 738 +# define BOOST_PP_ITERATION_5 738 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 739 && BOOST_PP_ITERATION_FINISH_5 >= 739 +# define BOOST_PP_ITERATION_5 739 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 740 && BOOST_PP_ITERATION_FINISH_5 >= 740 +# define BOOST_PP_ITERATION_5 740 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 741 && BOOST_PP_ITERATION_FINISH_5 >= 741 +# define BOOST_PP_ITERATION_5 741 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 742 && BOOST_PP_ITERATION_FINISH_5 >= 742 +# define BOOST_PP_ITERATION_5 742 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 743 && BOOST_PP_ITERATION_FINISH_5 >= 743 +# define BOOST_PP_ITERATION_5 743 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 744 && BOOST_PP_ITERATION_FINISH_5 >= 744 +# define BOOST_PP_ITERATION_5 744 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 745 && BOOST_PP_ITERATION_FINISH_5 >= 745 +# define BOOST_PP_ITERATION_5 745 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 746 && BOOST_PP_ITERATION_FINISH_5 >= 746 +# define BOOST_PP_ITERATION_5 746 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 747 && BOOST_PP_ITERATION_FINISH_5 >= 747 +# define BOOST_PP_ITERATION_5 747 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 748 && BOOST_PP_ITERATION_FINISH_5 >= 748 +# define BOOST_PP_ITERATION_5 748 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 749 && BOOST_PP_ITERATION_FINISH_5 >= 749 +# define BOOST_PP_ITERATION_5 749 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 750 && BOOST_PP_ITERATION_FINISH_5 >= 750 +# define BOOST_PP_ITERATION_5 750 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 751 && BOOST_PP_ITERATION_FINISH_5 >= 751 +# define BOOST_PP_ITERATION_5 751 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 752 && BOOST_PP_ITERATION_FINISH_5 >= 752 +# define BOOST_PP_ITERATION_5 752 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 753 && BOOST_PP_ITERATION_FINISH_5 >= 753 +# define BOOST_PP_ITERATION_5 753 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 754 && BOOST_PP_ITERATION_FINISH_5 >= 754 +# define BOOST_PP_ITERATION_5 754 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 755 && BOOST_PP_ITERATION_FINISH_5 >= 755 +# define BOOST_PP_ITERATION_5 755 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 756 && BOOST_PP_ITERATION_FINISH_5 >= 756 +# define BOOST_PP_ITERATION_5 756 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 757 && BOOST_PP_ITERATION_FINISH_5 >= 757 +# define BOOST_PP_ITERATION_5 757 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 758 && BOOST_PP_ITERATION_FINISH_5 >= 758 +# define BOOST_PP_ITERATION_5 758 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 759 && BOOST_PP_ITERATION_FINISH_5 >= 759 +# define BOOST_PP_ITERATION_5 759 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 760 && BOOST_PP_ITERATION_FINISH_5 >= 760 +# define BOOST_PP_ITERATION_5 760 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 761 && BOOST_PP_ITERATION_FINISH_5 >= 761 +# define BOOST_PP_ITERATION_5 761 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 762 && BOOST_PP_ITERATION_FINISH_5 >= 762 +# define BOOST_PP_ITERATION_5 762 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 763 && BOOST_PP_ITERATION_FINISH_5 >= 763 +# define BOOST_PP_ITERATION_5 763 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 764 && BOOST_PP_ITERATION_FINISH_5 >= 764 +# define BOOST_PP_ITERATION_5 764 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 765 && BOOST_PP_ITERATION_FINISH_5 >= 765 +# define BOOST_PP_ITERATION_5 765 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 766 && BOOST_PP_ITERATION_FINISH_5 >= 766 +# define BOOST_PP_ITERATION_5 766 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 767 && BOOST_PP_ITERATION_FINISH_5 >= 767 +# define BOOST_PP_ITERATION_5 767 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 768 && BOOST_PP_ITERATION_FINISH_5 >= 768 +# define BOOST_PP_ITERATION_5 768 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 769 && BOOST_PP_ITERATION_FINISH_5 >= 769 +# define BOOST_PP_ITERATION_5 769 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 770 && BOOST_PP_ITERATION_FINISH_5 >= 770 +# define BOOST_PP_ITERATION_5 770 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 771 && BOOST_PP_ITERATION_FINISH_5 >= 771 +# define BOOST_PP_ITERATION_5 771 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 772 && BOOST_PP_ITERATION_FINISH_5 >= 772 +# define BOOST_PP_ITERATION_5 772 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 773 && BOOST_PP_ITERATION_FINISH_5 >= 773 +# define BOOST_PP_ITERATION_5 773 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 774 && BOOST_PP_ITERATION_FINISH_5 >= 774 +# define BOOST_PP_ITERATION_5 774 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 775 && BOOST_PP_ITERATION_FINISH_5 >= 775 +# define BOOST_PP_ITERATION_5 775 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 776 && BOOST_PP_ITERATION_FINISH_5 >= 776 +# define BOOST_PP_ITERATION_5 776 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 777 && BOOST_PP_ITERATION_FINISH_5 >= 777 +# define BOOST_PP_ITERATION_5 777 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 778 && BOOST_PP_ITERATION_FINISH_5 >= 778 +# define BOOST_PP_ITERATION_5 778 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 779 && BOOST_PP_ITERATION_FINISH_5 >= 779 +# define BOOST_PP_ITERATION_5 779 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 780 && BOOST_PP_ITERATION_FINISH_5 >= 780 +# define BOOST_PP_ITERATION_5 780 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 781 && BOOST_PP_ITERATION_FINISH_5 >= 781 +# define BOOST_PP_ITERATION_5 781 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 782 && BOOST_PP_ITERATION_FINISH_5 >= 782 +# define BOOST_PP_ITERATION_5 782 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 783 && BOOST_PP_ITERATION_FINISH_5 >= 783 +# define BOOST_PP_ITERATION_5 783 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 784 && BOOST_PP_ITERATION_FINISH_5 >= 784 +# define BOOST_PP_ITERATION_5 784 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 785 && BOOST_PP_ITERATION_FINISH_5 >= 785 +# define BOOST_PP_ITERATION_5 785 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 786 && BOOST_PP_ITERATION_FINISH_5 >= 786 +# define BOOST_PP_ITERATION_5 786 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 787 && BOOST_PP_ITERATION_FINISH_5 >= 787 +# define BOOST_PP_ITERATION_5 787 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 788 && BOOST_PP_ITERATION_FINISH_5 >= 788 +# define BOOST_PP_ITERATION_5 788 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 789 && BOOST_PP_ITERATION_FINISH_5 >= 789 +# define BOOST_PP_ITERATION_5 789 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 790 && BOOST_PP_ITERATION_FINISH_5 >= 790 +# define BOOST_PP_ITERATION_5 790 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 791 && BOOST_PP_ITERATION_FINISH_5 >= 791 +# define BOOST_PP_ITERATION_5 791 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 792 && BOOST_PP_ITERATION_FINISH_5 >= 792 +# define BOOST_PP_ITERATION_5 792 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 793 && BOOST_PP_ITERATION_FINISH_5 >= 793 +# define BOOST_PP_ITERATION_5 793 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 794 && BOOST_PP_ITERATION_FINISH_5 >= 794 +# define BOOST_PP_ITERATION_5 794 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 795 && BOOST_PP_ITERATION_FINISH_5 >= 795 +# define BOOST_PP_ITERATION_5 795 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 796 && BOOST_PP_ITERATION_FINISH_5 >= 796 +# define BOOST_PP_ITERATION_5 796 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 797 && BOOST_PP_ITERATION_FINISH_5 >= 797 +# define BOOST_PP_ITERATION_5 797 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 798 && BOOST_PP_ITERATION_FINISH_5 >= 798 +# define BOOST_PP_ITERATION_5 798 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 799 && BOOST_PP_ITERATION_FINISH_5 >= 799 +# define BOOST_PP_ITERATION_5 799 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 800 && BOOST_PP_ITERATION_FINISH_5 >= 800 +# define BOOST_PP_ITERATION_5 800 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 801 && BOOST_PP_ITERATION_FINISH_5 >= 801 +# define BOOST_PP_ITERATION_5 801 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 802 && BOOST_PP_ITERATION_FINISH_5 >= 802 +# define BOOST_PP_ITERATION_5 802 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 803 && BOOST_PP_ITERATION_FINISH_5 >= 803 +# define BOOST_PP_ITERATION_5 803 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 804 && BOOST_PP_ITERATION_FINISH_5 >= 804 +# define BOOST_PP_ITERATION_5 804 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 805 && BOOST_PP_ITERATION_FINISH_5 >= 805 +# define BOOST_PP_ITERATION_5 805 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 806 && BOOST_PP_ITERATION_FINISH_5 >= 806 +# define BOOST_PP_ITERATION_5 806 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 807 && BOOST_PP_ITERATION_FINISH_5 >= 807 +# define BOOST_PP_ITERATION_5 807 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 808 && BOOST_PP_ITERATION_FINISH_5 >= 808 +# define BOOST_PP_ITERATION_5 808 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 809 && BOOST_PP_ITERATION_FINISH_5 >= 809 +# define BOOST_PP_ITERATION_5 809 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 810 && BOOST_PP_ITERATION_FINISH_5 >= 810 +# define BOOST_PP_ITERATION_5 810 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 811 && BOOST_PP_ITERATION_FINISH_5 >= 811 +# define BOOST_PP_ITERATION_5 811 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 812 && BOOST_PP_ITERATION_FINISH_5 >= 812 +# define BOOST_PP_ITERATION_5 812 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 813 && BOOST_PP_ITERATION_FINISH_5 >= 813 +# define BOOST_PP_ITERATION_5 813 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 814 && BOOST_PP_ITERATION_FINISH_5 >= 814 +# define BOOST_PP_ITERATION_5 814 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 815 && BOOST_PP_ITERATION_FINISH_5 >= 815 +# define BOOST_PP_ITERATION_5 815 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 816 && BOOST_PP_ITERATION_FINISH_5 >= 816 +# define BOOST_PP_ITERATION_5 816 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 817 && BOOST_PP_ITERATION_FINISH_5 >= 817 +# define BOOST_PP_ITERATION_5 817 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 818 && BOOST_PP_ITERATION_FINISH_5 >= 818 +# define BOOST_PP_ITERATION_5 818 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 819 && BOOST_PP_ITERATION_FINISH_5 >= 819 +# define BOOST_PP_ITERATION_5 819 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 820 && BOOST_PP_ITERATION_FINISH_5 >= 820 +# define BOOST_PP_ITERATION_5 820 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 821 && BOOST_PP_ITERATION_FINISH_5 >= 821 +# define BOOST_PP_ITERATION_5 821 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 822 && BOOST_PP_ITERATION_FINISH_5 >= 822 +# define BOOST_PP_ITERATION_5 822 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 823 && BOOST_PP_ITERATION_FINISH_5 >= 823 +# define BOOST_PP_ITERATION_5 823 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 824 && BOOST_PP_ITERATION_FINISH_5 >= 824 +# define BOOST_PP_ITERATION_5 824 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 825 && BOOST_PP_ITERATION_FINISH_5 >= 825 +# define BOOST_PP_ITERATION_5 825 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 826 && BOOST_PP_ITERATION_FINISH_5 >= 826 +# define BOOST_PP_ITERATION_5 826 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 827 && BOOST_PP_ITERATION_FINISH_5 >= 827 +# define BOOST_PP_ITERATION_5 827 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 828 && BOOST_PP_ITERATION_FINISH_5 >= 828 +# define BOOST_PP_ITERATION_5 828 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 829 && BOOST_PP_ITERATION_FINISH_5 >= 829 +# define BOOST_PP_ITERATION_5 829 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 830 && BOOST_PP_ITERATION_FINISH_5 >= 830 +# define BOOST_PP_ITERATION_5 830 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 831 && BOOST_PP_ITERATION_FINISH_5 >= 831 +# define BOOST_PP_ITERATION_5 831 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 832 && BOOST_PP_ITERATION_FINISH_5 >= 832 +# define BOOST_PP_ITERATION_5 832 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 833 && BOOST_PP_ITERATION_FINISH_5 >= 833 +# define BOOST_PP_ITERATION_5 833 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 834 && BOOST_PP_ITERATION_FINISH_5 >= 834 +# define BOOST_PP_ITERATION_5 834 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 835 && BOOST_PP_ITERATION_FINISH_5 >= 835 +# define BOOST_PP_ITERATION_5 835 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 836 && BOOST_PP_ITERATION_FINISH_5 >= 836 +# define BOOST_PP_ITERATION_5 836 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 837 && BOOST_PP_ITERATION_FINISH_5 >= 837 +# define BOOST_PP_ITERATION_5 837 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 838 && BOOST_PP_ITERATION_FINISH_5 >= 838 +# define BOOST_PP_ITERATION_5 838 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 839 && BOOST_PP_ITERATION_FINISH_5 >= 839 +# define BOOST_PP_ITERATION_5 839 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 840 && BOOST_PP_ITERATION_FINISH_5 >= 840 +# define BOOST_PP_ITERATION_5 840 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 841 && BOOST_PP_ITERATION_FINISH_5 >= 841 +# define BOOST_PP_ITERATION_5 841 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 842 && BOOST_PP_ITERATION_FINISH_5 >= 842 +# define BOOST_PP_ITERATION_5 842 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 843 && BOOST_PP_ITERATION_FINISH_5 >= 843 +# define BOOST_PP_ITERATION_5 843 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 844 && BOOST_PP_ITERATION_FINISH_5 >= 844 +# define BOOST_PP_ITERATION_5 844 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 845 && BOOST_PP_ITERATION_FINISH_5 >= 845 +# define BOOST_PP_ITERATION_5 845 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 846 && BOOST_PP_ITERATION_FINISH_5 >= 846 +# define BOOST_PP_ITERATION_5 846 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 847 && BOOST_PP_ITERATION_FINISH_5 >= 847 +# define BOOST_PP_ITERATION_5 847 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 848 && BOOST_PP_ITERATION_FINISH_5 >= 848 +# define BOOST_PP_ITERATION_5 848 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 849 && BOOST_PP_ITERATION_FINISH_5 >= 849 +# define BOOST_PP_ITERATION_5 849 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 850 && BOOST_PP_ITERATION_FINISH_5 >= 850 +# define BOOST_PP_ITERATION_5 850 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 851 && BOOST_PP_ITERATION_FINISH_5 >= 851 +# define BOOST_PP_ITERATION_5 851 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 852 && BOOST_PP_ITERATION_FINISH_5 >= 852 +# define BOOST_PP_ITERATION_5 852 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 853 && BOOST_PP_ITERATION_FINISH_5 >= 853 +# define BOOST_PP_ITERATION_5 853 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 854 && BOOST_PP_ITERATION_FINISH_5 >= 854 +# define BOOST_PP_ITERATION_5 854 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 855 && BOOST_PP_ITERATION_FINISH_5 >= 855 +# define BOOST_PP_ITERATION_5 855 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 856 && BOOST_PP_ITERATION_FINISH_5 >= 856 +# define BOOST_PP_ITERATION_5 856 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 857 && BOOST_PP_ITERATION_FINISH_5 >= 857 +# define BOOST_PP_ITERATION_5 857 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 858 && BOOST_PP_ITERATION_FINISH_5 >= 858 +# define BOOST_PP_ITERATION_5 858 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 859 && BOOST_PP_ITERATION_FINISH_5 >= 859 +# define BOOST_PP_ITERATION_5 859 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 860 && BOOST_PP_ITERATION_FINISH_5 >= 860 +# define BOOST_PP_ITERATION_5 860 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 861 && BOOST_PP_ITERATION_FINISH_5 >= 861 +# define BOOST_PP_ITERATION_5 861 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 862 && BOOST_PP_ITERATION_FINISH_5 >= 862 +# define BOOST_PP_ITERATION_5 862 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 863 && BOOST_PP_ITERATION_FINISH_5 >= 863 +# define BOOST_PP_ITERATION_5 863 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 864 && BOOST_PP_ITERATION_FINISH_5 >= 864 +# define BOOST_PP_ITERATION_5 864 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 865 && BOOST_PP_ITERATION_FINISH_5 >= 865 +# define BOOST_PP_ITERATION_5 865 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 866 && BOOST_PP_ITERATION_FINISH_5 >= 866 +# define BOOST_PP_ITERATION_5 866 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 867 && BOOST_PP_ITERATION_FINISH_5 >= 867 +# define BOOST_PP_ITERATION_5 867 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 868 && BOOST_PP_ITERATION_FINISH_5 >= 868 +# define BOOST_PP_ITERATION_5 868 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 869 && BOOST_PP_ITERATION_FINISH_5 >= 869 +# define BOOST_PP_ITERATION_5 869 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 870 && BOOST_PP_ITERATION_FINISH_5 >= 870 +# define BOOST_PP_ITERATION_5 870 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 871 && BOOST_PP_ITERATION_FINISH_5 >= 871 +# define BOOST_PP_ITERATION_5 871 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 872 && BOOST_PP_ITERATION_FINISH_5 >= 872 +# define BOOST_PP_ITERATION_5 872 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 873 && BOOST_PP_ITERATION_FINISH_5 >= 873 +# define BOOST_PP_ITERATION_5 873 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 874 && BOOST_PP_ITERATION_FINISH_5 >= 874 +# define BOOST_PP_ITERATION_5 874 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 875 && BOOST_PP_ITERATION_FINISH_5 >= 875 +# define BOOST_PP_ITERATION_5 875 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 876 && BOOST_PP_ITERATION_FINISH_5 >= 876 +# define BOOST_PP_ITERATION_5 876 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 877 && BOOST_PP_ITERATION_FINISH_5 >= 877 +# define BOOST_PP_ITERATION_5 877 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 878 && BOOST_PP_ITERATION_FINISH_5 >= 878 +# define BOOST_PP_ITERATION_5 878 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 879 && BOOST_PP_ITERATION_FINISH_5 >= 879 +# define BOOST_PP_ITERATION_5 879 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 880 && BOOST_PP_ITERATION_FINISH_5 >= 880 +# define BOOST_PP_ITERATION_5 880 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 881 && BOOST_PP_ITERATION_FINISH_5 >= 881 +# define BOOST_PP_ITERATION_5 881 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 882 && BOOST_PP_ITERATION_FINISH_5 >= 882 +# define BOOST_PP_ITERATION_5 882 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 883 && BOOST_PP_ITERATION_FINISH_5 >= 883 +# define BOOST_PP_ITERATION_5 883 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 884 && BOOST_PP_ITERATION_FINISH_5 >= 884 +# define BOOST_PP_ITERATION_5 884 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 885 && BOOST_PP_ITERATION_FINISH_5 >= 885 +# define BOOST_PP_ITERATION_5 885 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 886 && BOOST_PP_ITERATION_FINISH_5 >= 886 +# define BOOST_PP_ITERATION_5 886 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 887 && BOOST_PP_ITERATION_FINISH_5 >= 887 +# define BOOST_PP_ITERATION_5 887 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 888 && BOOST_PP_ITERATION_FINISH_5 >= 888 +# define BOOST_PP_ITERATION_5 888 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 889 && BOOST_PP_ITERATION_FINISH_5 >= 889 +# define BOOST_PP_ITERATION_5 889 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 890 && BOOST_PP_ITERATION_FINISH_5 >= 890 +# define BOOST_PP_ITERATION_5 890 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 891 && BOOST_PP_ITERATION_FINISH_5 >= 891 +# define BOOST_PP_ITERATION_5 891 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 892 && BOOST_PP_ITERATION_FINISH_5 >= 892 +# define BOOST_PP_ITERATION_5 892 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 893 && BOOST_PP_ITERATION_FINISH_5 >= 893 +# define BOOST_PP_ITERATION_5 893 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 894 && BOOST_PP_ITERATION_FINISH_5 >= 894 +# define BOOST_PP_ITERATION_5 894 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 895 && BOOST_PP_ITERATION_FINISH_5 >= 895 +# define BOOST_PP_ITERATION_5 895 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 896 && BOOST_PP_ITERATION_FINISH_5 >= 896 +# define BOOST_PP_ITERATION_5 896 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 897 && BOOST_PP_ITERATION_FINISH_5 >= 897 +# define BOOST_PP_ITERATION_5 897 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 898 && BOOST_PP_ITERATION_FINISH_5 >= 898 +# define BOOST_PP_ITERATION_5 898 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 899 && BOOST_PP_ITERATION_FINISH_5 >= 899 +# define BOOST_PP_ITERATION_5 899 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 900 && BOOST_PP_ITERATION_FINISH_5 >= 900 +# define BOOST_PP_ITERATION_5 900 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 901 && BOOST_PP_ITERATION_FINISH_5 >= 901 +# define BOOST_PP_ITERATION_5 901 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 902 && BOOST_PP_ITERATION_FINISH_5 >= 902 +# define BOOST_PP_ITERATION_5 902 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 903 && BOOST_PP_ITERATION_FINISH_5 >= 903 +# define BOOST_PP_ITERATION_5 903 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 904 && BOOST_PP_ITERATION_FINISH_5 >= 904 +# define BOOST_PP_ITERATION_5 904 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 905 && BOOST_PP_ITERATION_FINISH_5 >= 905 +# define BOOST_PP_ITERATION_5 905 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 906 && BOOST_PP_ITERATION_FINISH_5 >= 906 +# define BOOST_PP_ITERATION_5 906 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 907 && BOOST_PP_ITERATION_FINISH_5 >= 907 +# define BOOST_PP_ITERATION_5 907 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 908 && BOOST_PP_ITERATION_FINISH_5 >= 908 +# define BOOST_PP_ITERATION_5 908 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 909 && BOOST_PP_ITERATION_FINISH_5 >= 909 +# define BOOST_PP_ITERATION_5 909 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 910 && BOOST_PP_ITERATION_FINISH_5 >= 910 +# define BOOST_PP_ITERATION_5 910 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 911 && BOOST_PP_ITERATION_FINISH_5 >= 911 +# define BOOST_PP_ITERATION_5 911 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 912 && BOOST_PP_ITERATION_FINISH_5 >= 912 +# define BOOST_PP_ITERATION_5 912 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 913 && BOOST_PP_ITERATION_FINISH_5 >= 913 +# define BOOST_PP_ITERATION_5 913 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 914 && BOOST_PP_ITERATION_FINISH_5 >= 914 +# define BOOST_PP_ITERATION_5 914 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 915 && BOOST_PP_ITERATION_FINISH_5 >= 915 +# define BOOST_PP_ITERATION_5 915 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 916 && BOOST_PP_ITERATION_FINISH_5 >= 916 +# define BOOST_PP_ITERATION_5 916 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 917 && BOOST_PP_ITERATION_FINISH_5 >= 917 +# define BOOST_PP_ITERATION_5 917 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 918 && BOOST_PP_ITERATION_FINISH_5 >= 918 +# define BOOST_PP_ITERATION_5 918 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 919 && BOOST_PP_ITERATION_FINISH_5 >= 919 +# define BOOST_PP_ITERATION_5 919 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 920 && BOOST_PP_ITERATION_FINISH_5 >= 920 +# define BOOST_PP_ITERATION_5 920 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 921 && BOOST_PP_ITERATION_FINISH_5 >= 921 +# define BOOST_PP_ITERATION_5 921 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 922 && BOOST_PP_ITERATION_FINISH_5 >= 922 +# define BOOST_PP_ITERATION_5 922 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 923 && BOOST_PP_ITERATION_FINISH_5 >= 923 +# define BOOST_PP_ITERATION_5 923 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 924 && BOOST_PP_ITERATION_FINISH_5 >= 924 +# define BOOST_PP_ITERATION_5 924 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 925 && BOOST_PP_ITERATION_FINISH_5 >= 925 +# define BOOST_PP_ITERATION_5 925 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 926 && BOOST_PP_ITERATION_FINISH_5 >= 926 +# define BOOST_PP_ITERATION_5 926 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 927 && BOOST_PP_ITERATION_FINISH_5 >= 927 +# define BOOST_PP_ITERATION_5 927 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 928 && BOOST_PP_ITERATION_FINISH_5 >= 928 +# define BOOST_PP_ITERATION_5 928 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 929 && BOOST_PP_ITERATION_FINISH_5 >= 929 +# define BOOST_PP_ITERATION_5 929 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 930 && BOOST_PP_ITERATION_FINISH_5 >= 930 +# define BOOST_PP_ITERATION_5 930 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 931 && BOOST_PP_ITERATION_FINISH_5 >= 931 +# define BOOST_PP_ITERATION_5 931 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 932 && BOOST_PP_ITERATION_FINISH_5 >= 932 +# define BOOST_PP_ITERATION_5 932 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 933 && BOOST_PP_ITERATION_FINISH_5 >= 933 +# define BOOST_PP_ITERATION_5 933 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 934 && BOOST_PP_ITERATION_FINISH_5 >= 934 +# define BOOST_PP_ITERATION_5 934 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 935 && BOOST_PP_ITERATION_FINISH_5 >= 935 +# define BOOST_PP_ITERATION_5 935 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 936 && BOOST_PP_ITERATION_FINISH_5 >= 936 +# define BOOST_PP_ITERATION_5 936 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 937 && BOOST_PP_ITERATION_FINISH_5 >= 937 +# define BOOST_PP_ITERATION_5 937 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 938 && BOOST_PP_ITERATION_FINISH_5 >= 938 +# define BOOST_PP_ITERATION_5 938 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 939 && BOOST_PP_ITERATION_FINISH_5 >= 939 +# define BOOST_PP_ITERATION_5 939 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 940 && BOOST_PP_ITERATION_FINISH_5 >= 940 +# define BOOST_PP_ITERATION_5 940 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 941 && BOOST_PP_ITERATION_FINISH_5 >= 941 +# define BOOST_PP_ITERATION_5 941 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 942 && BOOST_PP_ITERATION_FINISH_5 >= 942 +# define BOOST_PP_ITERATION_5 942 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 943 && BOOST_PP_ITERATION_FINISH_5 >= 943 +# define BOOST_PP_ITERATION_5 943 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 944 && BOOST_PP_ITERATION_FINISH_5 >= 944 +# define BOOST_PP_ITERATION_5 944 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 945 && BOOST_PP_ITERATION_FINISH_5 >= 945 +# define BOOST_PP_ITERATION_5 945 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 946 && BOOST_PP_ITERATION_FINISH_5 >= 946 +# define BOOST_PP_ITERATION_5 946 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 947 && BOOST_PP_ITERATION_FINISH_5 >= 947 +# define BOOST_PP_ITERATION_5 947 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 948 && BOOST_PP_ITERATION_FINISH_5 >= 948 +# define BOOST_PP_ITERATION_5 948 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 949 && BOOST_PP_ITERATION_FINISH_5 >= 949 +# define BOOST_PP_ITERATION_5 949 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 950 && BOOST_PP_ITERATION_FINISH_5 >= 950 +# define BOOST_PP_ITERATION_5 950 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 951 && BOOST_PP_ITERATION_FINISH_5 >= 951 +# define BOOST_PP_ITERATION_5 951 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 952 && BOOST_PP_ITERATION_FINISH_5 >= 952 +# define BOOST_PP_ITERATION_5 952 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 953 && BOOST_PP_ITERATION_FINISH_5 >= 953 +# define BOOST_PP_ITERATION_5 953 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 954 && BOOST_PP_ITERATION_FINISH_5 >= 954 +# define BOOST_PP_ITERATION_5 954 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 955 && BOOST_PP_ITERATION_FINISH_5 >= 955 +# define BOOST_PP_ITERATION_5 955 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 956 && BOOST_PP_ITERATION_FINISH_5 >= 956 +# define BOOST_PP_ITERATION_5 956 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 957 && BOOST_PP_ITERATION_FINISH_5 >= 957 +# define BOOST_PP_ITERATION_5 957 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 958 && BOOST_PP_ITERATION_FINISH_5 >= 958 +# define BOOST_PP_ITERATION_5 958 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 959 && BOOST_PP_ITERATION_FINISH_5 >= 959 +# define BOOST_PP_ITERATION_5 959 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 960 && BOOST_PP_ITERATION_FINISH_5 >= 960 +# define BOOST_PP_ITERATION_5 960 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 961 && BOOST_PP_ITERATION_FINISH_5 >= 961 +# define BOOST_PP_ITERATION_5 961 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 962 && BOOST_PP_ITERATION_FINISH_5 >= 962 +# define BOOST_PP_ITERATION_5 962 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 963 && BOOST_PP_ITERATION_FINISH_5 >= 963 +# define BOOST_PP_ITERATION_5 963 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 964 && BOOST_PP_ITERATION_FINISH_5 >= 964 +# define BOOST_PP_ITERATION_5 964 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 965 && BOOST_PP_ITERATION_FINISH_5 >= 965 +# define BOOST_PP_ITERATION_5 965 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 966 && BOOST_PP_ITERATION_FINISH_5 >= 966 +# define BOOST_PP_ITERATION_5 966 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 967 && BOOST_PP_ITERATION_FINISH_5 >= 967 +# define BOOST_PP_ITERATION_5 967 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 968 && BOOST_PP_ITERATION_FINISH_5 >= 968 +# define BOOST_PP_ITERATION_5 968 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 969 && BOOST_PP_ITERATION_FINISH_5 >= 969 +# define BOOST_PP_ITERATION_5 969 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 970 && BOOST_PP_ITERATION_FINISH_5 >= 970 +# define BOOST_PP_ITERATION_5 970 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 971 && BOOST_PP_ITERATION_FINISH_5 >= 971 +# define BOOST_PP_ITERATION_5 971 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 972 && BOOST_PP_ITERATION_FINISH_5 >= 972 +# define BOOST_PP_ITERATION_5 972 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 973 && BOOST_PP_ITERATION_FINISH_5 >= 973 +# define BOOST_PP_ITERATION_5 973 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 974 && BOOST_PP_ITERATION_FINISH_5 >= 974 +# define BOOST_PP_ITERATION_5 974 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 975 && BOOST_PP_ITERATION_FINISH_5 >= 975 +# define BOOST_PP_ITERATION_5 975 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 976 && BOOST_PP_ITERATION_FINISH_5 >= 976 +# define BOOST_PP_ITERATION_5 976 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 977 && BOOST_PP_ITERATION_FINISH_5 >= 977 +# define BOOST_PP_ITERATION_5 977 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 978 && BOOST_PP_ITERATION_FINISH_5 >= 978 +# define BOOST_PP_ITERATION_5 978 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 979 && BOOST_PP_ITERATION_FINISH_5 >= 979 +# define BOOST_PP_ITERATION_5 979 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 980 && BOOST_PP_ITERATION_FINISH_5 >= 980 +# define BOOST_PP_ITERATION_5 980 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 981 && BOOST_PP_ITERATION_FINISH_5 >= 981 +# define BOOST_PP_ITERATION_5 981 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 982 && BOOST_PP_ITERATION_FINISH_5 >= 982 +# define BOOST_PP_ITERATION_5 982 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 983 && BOOST_PP_ITERATION_FINISH_5 >= 983 +# define BOOST_PP_ITERATION_5 983 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 984 && BOOST_PP_ITERATION_FINISH_5 >= 984 +# define BOOST_PP_ITERATION_5 984 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 985 && BOOST_PP_ITERATION_FINISH_5 >= 985 +# define BOOST_PP_ITERATION_5 985 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 986 && BOOST_PP_ITERATION_FINISH_5 >= 986 +# define BOOST_PP_ITERATION_5 986 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 987 && BOOST_PP_ITERATION_FINISH_5 >= 987 +# define BOOST_PP_ITERATION_5 987 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 988 && BOOST_PP_ITERATION_FINISH_5 >= 988 +# define BOOST_PP_ITERATION_5 988 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 989 && BOOST_PP_ITERATION_FINISH_5 >= 989 +# define BOOST_PP_ITERATION_5 989 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 990 && BOOST_PP_ITERATION_FINISH_5 >= 990 +# define BOOST_PP_ITERATION_5 990 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 991 && BOOST_PP_ITERATION_FINISH_5 >= 991 +# define BOOST_PP_ITERATION_5 991 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 992 && BOOST_PP_ITERATION_FINISH_5 >= 992 +# define BOOST_PP_ITERATION_5 992 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 993 && BOOST_PP_ITERATION_FINISH_5 >= 993 +# define BOOST_PP_ITERATION_5 993 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 994 && BOOST_PP_ITERATION_FINISH_5 >= 994 +# define BOOST_PP_ITERATION_5 994 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 995 && BOOST_PP_ITERATION_FINISH_5 >= 995 +# define BOOST_PP_ITERATION_5 995 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 996 && BOOST_PP_ITERATION_FINISH_5 >= 996 +# define BOOST_PP_ITERATION_5 996 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 997 && BOOST_PP_ITERATION_FINISH_5 >= 997 +# define BOOST_PP_ITERATION_5 997 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 998 && BOOST_PP_ITERATION_FINISH_5 >= 998 +# define BOOST_PP_ITERATION_5 998 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 999 && BOOST_PP_ITERATION_FINISH_5 >= 999 +# define BOOST_PP_ITERATION_5 999 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1000 && BOOST_PP_ITERATION_FINISH_5 >= 1000 +# define BOOST_PP_ITERATION_5 1000 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1001 && BOOST_PP_ITERATION_FINISH_5 >= 1001 +# define BOOST_PP_ITERATION_5 1001 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1002 && BOOST_PP_ITERATION_FINISH_5 >= 1002 +# define BOOST_PP_ITERATION_5 1002 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1003 && BOOST_PP_ITERATION_FINISH_5 >= 1003 +# define BOOST_PP_ITERATION_5 1003 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1004 && BOOST_PP_ITERATION_FINISH_5 >= 1004 +# define BOOST_PP_ITERATION_5 1004 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1005 && BOOST_PP_ITERATION_FINISH_5 >= 1005 +# define BOOST_PP_ITERATION_5 1005 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1006 && BOOST_PP_ITERATION_FINISH_5 >= 1006 +# define BOOST_PP_ITERATION_5 1006 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1007 && BOOST_PP_ITERATION_FINISH_5 >= 1007 +# define BOOST_PP_ITERATION_5 1007 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1008 && BOOST_PP_ITERATION_FINISH_5 >= 1008 +# define BOOST_PP_ITERATION_5 1008 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1009 && BOOST_PP_ITERATION_FINISH_5 >= 1009 +# define BOOST_PP_ITERATION_5 1009 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1010 && BOOST_PP_ITERATION_FINISH_5 >= 1010 +# define BOOST_PP_ITERATION_5 1010 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1011 && BOOST_PP_ITERATION_FINISH_5 >= 1011 +# define BOOST_PP_ITERATION_5 1011 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1012 && BOOST_PP_ITERATION_FINISH_5 >= 1012 +# define BOOST_PP_ITERATION_5 1012 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1013 && BOOST_PP_ITERATION_FINISH_5 >= 1013 +# define BOOST_PP_ITERATION_5 1013 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1014 && BOOST_PP_ITERATION_FINISH_5 >= 1014 +# define BOOST_PP_ITERATION_5 1014 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1015 && BOOST_PP_ITERATION_FINISH_5 >= 1015 +# define BOOST_PP_ITERATION_5 1015 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1016 && BOOST_PP_ITERATION_FINISH_5 >= 1016 +# define BOOST_PP_ITERATION_5 1016 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1017 && BOOST_PP_ITERATION_FINISH_5 >= 1017 +# define BOOST_PP_ITERATION_5 1017 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1018 && BOOST_PP_ITERATION_FINISH_5 >= 1018 +# define BOOST_PP_ITERATION_5 1018 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1019 && BOOST_PP_ITERATION_FINISH_5 >= 1019 +# define BOOST_PP_ITERATION_5 1019 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1020 && BOOST_PP_ITERATION_FINISH_5 >= 1020 +# define BOOST_PP_ITERATION_5 1020 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1021 && BOOST_PP_ITERATION_FINISH_5 >= 1021 +# define BOOST_PP_ITERATION_5 1021 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1022 && BOOST_PP_ITERATION_FINISH_5 >= 1022 +# define BOOST_PP_ITERATION_5 1022 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1023 && BOOST_PP_ITERATION_FINISH_5 >= 1023 +# define BOOST_PP_ITERATION_5 1023 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1024 && BOOST_PP_ITERATION_FINISH_5 >= 1024 +# define BOOST_PP_ITERATION_5 1024 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward5_256.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward5_256.hpp new file mode 100644 index 000000000..0e022cfe0 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward5_256.hpp @@ -0,0 +1,1296 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_START_5 <= 0 && BOOST_PP_ITERATION_FINISH_5 >= 0 +# define BOOST_PP_ITERATION_5 0 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 1 && BOOST_PP_ITERATION_FINISH_5 >= 1 +# define BOOST_PP_ITERATION_5 1 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 2 && BOOST_PP_ITERATION_FINISH_5 >= 2 +# define BOOST_PP_ITERATION_5 2 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 3 && BOOST_PP_ITERATION_FINISH_5 >= 3 +# define BOOST_PP_ITERATION_5 3 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 4 && BOOST_PP_ITERATION_FINISH_5 >= 4 +# define BOOST_PP_ITERATION_5 4 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 5 && BOOST_PP_ITERATION_FINISH_5 >= 5 +# define BOOST_PP_ITERATION_5 5 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 6 && BOOST_PP_ITERATION_FINISH_5 >= 6 +# define BOOST_PP_ITERATION_5 6 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 7 && BOOST_PP_ITERATION_FINISH_5 >= 7 +# define BOOST_PP_ITERATION_5 7 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 8 && BOOST_PP_ITERATION_FINISH_5 >= 8 +# define BOOST_PP_ITERATION_5 8 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 9 && BOOST_PP_ITERATION_FINISH_5 >= 9 +# define BOOST_PP_ITERATION_5 9 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 10 && BOOST_PP_ITERATION_FINISH_5 >= 10 +# define BOOST_PP_ITERATION_5 10 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 11 && BOOST_PP_ITERATION_FINISH_5 >= 11 +# define BOOST_PP_ITERATION_5 11 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 12 && BOOST_PP_ITERATION_FINISH_5 >= 12 +# define BOOST_PP_ITERATION_5 12 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 13 && BOOST_PP_ITERATION_FINISH_5 >= 13 +# define BOOST_PP_ITERATION_5 13 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 14 && BOOST_PP_ITERATION_FINISH_5 >= 14 +# define BOOST_PP_ITERATION_5 14 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 15 && BOOST_PP_ITERATION_FINISH_5 >= 15 +# define BOOST_PP_ITERATION_5 15 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 16 && BOOST_PP_ITERATION_FINISH_5 >= 16 +# define BOOST_PP_ITERATION_5 16 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 17 && BOOST_PP_ITERATION_FINISH_5 >= 17 +# define BOOST_PP_ITERATION_5 17 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 18 && BOOST_PP_ITERATION_FINISH_5 >= 18 +# define BOOST_PP_ITERATION_5 18 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 19 && BOOST_PP_ITERATION_FINISH_5 >= 19 +# define BOOST_PP_ITERATION_5 19 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 20 && BOOST_PP_ITERATION_FINISH_5 >= 20 +# define BOOST_PP_ITERATION_5 20 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 21 && BOOST_PP_ITERATION_FINISH_5 >= 21 +# define BOOST_PP_ITERATION_5 21 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 22 && BOOST_PP_ITERATION_FINISH_5 >= 22 +# define BOOST_PP_ITERATION_5 22 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 23 && BOOST_PP_ITERATION_FINISH_5 >= 23 +# define BOOST_PP_ITERATION_5 23 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 24 && BOOST_PP_ITERATION_FINISH_5 >= 24 +# define BOOST_PP_ITERATION_5 24 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 25 && BOOST_PP_ITERATION_FINISH_5 >= 25 +# define BOOST_PP_ITERATION_5 25 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 26 && BOOST_PP_ITERATION_FINISH_5 >= 26 +# define BOOST_PP_ITERATION_5 26 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 27 && BOOST_PP_ITERATION_FINISH_5 >= 27 +# define BOOST_PP_ITERATION_5 27 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 28 && BOOST_PP_ITERATION_FINISH_5 >= 28 +# define BOOST_PP_ITERATION_5 28 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 29 && BOOST_PP_ITERATION_FINISH_5 >= 29 +# define BOOST_PP_ITERATION_5 29 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 30 && BOOST_PP_ITERATION_FINISH_5 >= 30 +# define BOOST_PP_ITERATION_5 30 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 31 && BOOST_PP_ITERATION_FINISH_5 >= 31 +# define BOOST_PP_ITERATION_5 31 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 32 && BOOST_PP_ITERATION_FINISH_5 >= 32 +# define BOOST_PP_ITERATION_5 32 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 33 && BOOST_PP_ITERATION_FINISH_5 >= 33 +# define BOOST_PP_ITERATION_5 33 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 34 && BOOST_PP_ITERATION_FINISH_5 >= 34 +# define BOOST_PP_ITERATION_5 34 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 35 && BOOST_PP_ITERATION_FINISH_5 >= 35 +# define BOOST_PP_ITERATION_5 35 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 36 && BOOST_PP_ITERATION_FINISH_5 >= 36 +# define BOOST_PP_ITERATION_5 36 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 37 && BOOST_PP_ITERATION_FINISH_5 >= 37 +# define BOOST_PP_ITERATION_5 37 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 38 && BOOST_PP_ITERATION_FINISH_5 >= 38 +# define BOOST_PP_ITERATION_5 38 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 39 && BOOST_PP_ITERATION_FINISH_5 >= 39 +# define BOOST_PP_ITERATION_5 39 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 40 && BOOST_PP_ITERATION_FINISH_5 >= 40 +# define BOOST_PP_ITERATION_5 40 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 41 && BOOST_PP_ITERATION_FINISH_5 >= 41 +# define BOOST_PP_ITERATION_5 41 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 42 && BOOST_PP_ITERATION_FINISH_5 >= 42 +# define BOOST_PP_ITERATION_5 42 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 43 && BOOST_PP_ITERATION_FINISH_5 >= 43 +# define BOOST_PP_ITERATION_5 43 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 44 && BOOST_PP_ITERATION_FINISH_5 >= 44 +# define BOOST_PP_ITERATION_5 44 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 45 && BOOST_PP_ITERATION_FINISH_5 >= 45 +# define BOOST_PP_ITERATION_5 45 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 46 && BOOST_PP_ITERATION_FINISH_5 >= 46 +# define BOOST_PP_ITERATION_5 46 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 47 && BOOST_PP_ITERATION_FINISH_5 >= 47 +# define BOOST_PP_ITERATION_5 47 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 48 && BOOST_PP_ITERATION_FINISH_5 >= 48 +# define BOOST_PP_ITERATION_5 48 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 49 && BOOST_PP_ITERATION_FINISH_5 >= 49 +# define BOOST_PP_ITERATION_5 49 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 50 && BOOST_PP_ITERATION_FINISH_5 >= 50 +# define BOOST_PP_ITERATION_5 50 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 51 && BOOST_PP_ITERATION_FINISH_5 >= 51 +# define BOOST_PP_ITERATION_5 51 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 52 && BOOST_PP_ITERATION_FINISH_5 >= 52 +# define BOOST_PP_ITERATION_5 52 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 53 && BOOST_PP_ITERATION_FINISH_5 >= 53 +# define BOOST_PP_ITERATION_5 53 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 54 && BOOST_PP_ITERATION_FINISH_5 >= 54 +# define BOOST_PP_ITERATION_5 54 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 55 && BOOST_PP_ITERATION_FINISH_5 >= 55 +# define BOOST_PP_ITERATION_5 55 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 56 && BOOST_PP_ITERATION_FINISH_5 >= 56 +# define BOOST_PP_ITERATION_5 56 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 57 && BOOST_PP_ITERATION_FINISH_5 >= 57 +# define BOOST_PP_ITERATION_5 57 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 58 && BOOST_PP_ITERATION_FINISH_5 >= 58 +# define BOOST_PP_ITERATION_5 58 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 59 && BOOST_PP_ITERATION_FINISH_5 >= 59 +# define BOOST_PP_ITERATION_5 59 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 60 && BOOST_PP_ITERATION_FINISH_5 >= 60 +# define BOOST_PP_ITERATION_5 60 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 61 && BOOST_PP_ITERATION_FINISH_5 >= 61 +# define BOOST_PP_ITERATION_5 61 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 62 && BOOST_PP_ITERATION_FINISH_5 >= 62 +# define BOOST_PP_ITERATION_5 62 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 63 && BOOST_PP_ITERATION_FINISH_5 >= 63 +# define BOOST_PP_ITERATION_5 63 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 64 && BOOST_PP_ITERATION_FINISH_5 >= 64 +# define BOOST_PP_ITERATION_5 64 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 65 && BOOST_PP_ITERATION_FINISH_5 >= 65 +# define BOOST_PP_ITERATION_5 65 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 66 && BOOST_PP_ITERATION_FINISH_5 >= 66 +# define BOOST_PP_ITERATION_5 66 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 67 && BOOST_PP_ITERATION_FINISH_5 >= 67 +# define BOOST_PP_ITERATION_5 67 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 68 && BOOST_PP_ITERATION_FINISH_5 >= 68 +# define BOOST_PP_ITERATION_5 68 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 69 && BOOST_PP_ITERATION_FINISH_5 >= 69 +# define BOOST_PP_ITERATION_5 69 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 70 && BOOST_PP_ITERATION_FINISH_5 >= 70 +# define BOOST_PP_ITERATION_5 70 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 71 && BOOST_PP_ITERATION_FINISH_5 >= 71 +# define BOOST_PP_ITERATION_5 71 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 72 && BOOST_PP_ITERATION_FINISH_5 >= 72 +# define BOOST_PP_ITERATION_5 72 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 73 && BOOST_PP_ITERATION_FINISH_5 >= 73 +# define BOOST_PP_ITERATION_5 73 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 74 && BOOST_PP_ITERATION_FINISH_5 >= 74 +# define BOOST_PP_ITERATION_5 74 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 75 && BOOST_PP_ITERATION_FINISH_5 >= 75 +# define BOOST_PP_ITERATION_5 75 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 76 && BOOST_PP_ITERATION_FINISH_5 >= 76 +# define BOOST_PP_ITERATION_5 76 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 77 && BOOST_PP_ITERATION_FINISH_5 >= 77 +# define BOOST_PP_ITERATION_5 77 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 78 && BOOST_PP_ITERATION_FINISH_5 >= 78 +# define BOOST_PP_ITERATION_5 78 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 79 && BOOST_PP_ITERATION_FINISH_5 >= 79 +# define BOOST_PP_ITERATION_5 79 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 80 && BOOST_PP_ITERATION_FINISH_5 >= 80 +# define BOOST_PP_ITERATION_5 80 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 81 && BOOST_PP_ITERATION_FINISH_5 >= 81 +# define BOOST_PP_ITERATION_5 81 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 82 && BOOST_PP_ITERATION_FINISH_5 >= 82 +# define BOOST_PP_ITERATION_5 82 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 83 && BOOST_PP_ITERATION_FINISH_5 >= 83 +# define BOOST_PP_ITERATION_5 83 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 84 && BOOST_PP_ITERATION_FINISH_5 >= 84 +# define BOOST_PP_ITERATION_5 84 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 85 && BOOST_PP_ITERATION_FINISH_5 >= 85 +# define BOOST_PP_ITERATION_5 85 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 86 && BOOST_PP_ITERATION_FINISH_5 >= 86 +# define BOOST_PP_ITERATION_5 86 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 87 && BOOST_PP_ITERATION_FINISH_5 >= 87 +# define BOOST_PP_ITERATION_5 87 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 88 && BOOST_PP_ITERATION_FINISH_5 >= 88 +# define BOOST_PP_ITERATION_5 88 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 89 && BOOST_PP_ITERATION_FINISH_5 >= 89 +# define BOOST_PP_ITERATION_5 89 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 90 && BOOST_PP_ITERATION_FINISH_5 >= 90 +# define BOOST_PP_ITERATION_5 90 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 91 && BOOST_PP_ITERATION_FINISH_5 >= 91 +# define BOOST_PP_ITERATION_5 91 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 92 && BOOST_PP_ITERATION_FINISH_5 >= 92 +# define BOOST_PP_ITERATION_5 92 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 93 && BOOST_PP_ITERATION_FINISH_5 >= 93 +# define BOOST_PP_ITERATION_5 93 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 94 && BOOST_PP_ITERATION_FINISH_5 >= 94 +# define BOOST_PP_ITERATION_5 94 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 95 && BOOST_PP_ITERATION_FINISH_5 >= 95 +# define BOOST_PP_ITERATION_5 95 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 96 && BOOST_PP_ITERATION_FINISH_5 >= 96 +# define BOOST_PP_ITERATION_5 96 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 97 && BOOST_PP_ITERATION_FINISH_5 >= 97 +# define BOOST_PP_ITERATION_5 97 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 98 && BOOST_PP_ITERATION_FINISH_5 >= 98 +# define BOOST_PP_ITERATION_5 98 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 99 && BOOST_PP_ITERATION_FINISH_5 >= 99 +# define BOOST_PP_ITERATION_5 99 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 100 && BOOST_PP_ITERATION_FINISH_5 >= 100 +# define BOOST_PP_ITERATION_5 100 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 101 && BOOST_PP_ITERATION_FINISH_5 >= 101 +# define BOOST_PP_ITERATION_5 101 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 102 && BOOST_PP_ITERATION_FINISH_5 >= 102 +# define BOOST_PP_ITERATION_5 102 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 103 && BOOST_PP_ITERATION_FINISH_5 >= 103 +# define BOOST_PP_ITERATION_5 103 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 104 && BOOST_PP_ITERATION_FINISH_5 >= 104 +# define BOOST_PP_ITERATION_5 104 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 105 && BOOST_PP_ITERATION_FINISH_5 >= 105 +# define BOOST_PP_ITERATION_5 105 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 106 && BOOST_PP_ITERATION_FINISH_5 >= 106 +# define BOOST_PP_ITERATION_5 106 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 107 && BOOST_PP_ITERATION_FINISH_5 >= 107 +# define BOOST_PP_ITERATION_5 107 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 108 && BOOST_PP_ITERATION_FINISH_5 >= 108 +# define BOOST_PP_ITERATION_5 108 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 109 && BOOST_PP_ITERATION_FINISH_5 >= 109 +# define BOOST_PP_ITERATION_5 109 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 110 && BOOST_PP_ITERATION_FINISH_5 >= 110 +# define BOOST_PP_ITERATION_5 110 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 111 && BOOST_PP_ITERATION_FINISH_5 >= 111 +# define BOOST_PP_ITERATION_5 111 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 112 && BOOST_PP_ITERATION_FINISH_5 >= 112 +# define BOOST_PP_ITERATION_5 112 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 113 && BOOST_PP_ITERATION_FINISH_5 >= 113 +# define BOOST_PP_ITERATION_5 113 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 114 && BOOST_PP_ITERATION_FINISH_5 >= 114 +# define BOOST_PP_ITERATION_5 114 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 115 && BOOST_PP_ITERATION_FINISH_5 >= 115 +# define BOOST_PP_ITERATION_5 115 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 116 && BOOST_PP_ITERATION_FINISH_5 >= 116 +# define BOOST_PP_ITERATION_5 116 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 117 && BOOST_PP_ITERATION_FINISH_5 >= 117 +# define BOOST_PP_ITERATION_5 117 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 118 && BOOST_PP_ITERATION_FINISH_5 >= 118 +# define BOOST_PP_ITERATION_5 118 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 119 && BOOST_PP_ITERATION_FINISH_5 >= 119 +# define BOOST_PP_ITERATION_5 119 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 120 && BOOST_PP_ITERATION_FINISH_5 >= 120 +# define BOOST_PP_ITERATION_5 120 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 121 && BOOST_PP_ITERATION_FINISH_5 >= 121 +# define BOOST_PP_ITERATION_5 121 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 122 && BOOST_PP_ITERATION_FINISH_5 >= 122 +# define BOOST_PP_ITERATION_5 122 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 123 && BOOST_PP_ITERATION_FINISH_5 >= 123 +# define BOOST_PP_ITERATION_5 123 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 124 && BOOST_PP_ITERATION_FINISH_5 >= 124 +# define BOOST_PP_ITERATION_5 124 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 125 && BOOST_PP_ITERATION_FINISH_5 >= 125 +# define BOOST_PP_ITERATION_5 125 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 126 && BOOST_PP_ITERATION_FINISH_5 >= 126 +# define BOOST_PP_ITERATION_5 126 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 127 && BOOST_PP_ITERATION_FINISH_5 >= 127 +# define BOOST_PP_ITERATION_5 127 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 128 && BOOST_PP_ITERATION_FINISH_5 >= 128 +# define BOOST_PP_ITERATION_5 128 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 129 && BOOST_PP_ITERATION_FINISH_5 >= 129 +# define BOOST_PP_ITERATION_5 129 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 130 && BOOST_PP_ITERATION_FINISH_5 >= 130 +# define BOOST_PP_ITERATION_5 130 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 131 && BOOST_PP_ITERATION_FINISH_5 >= 131 +# define BOOST_PP_ITERATION_5 131 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 132 && BOOST_PP_ITERATION_FINISH_5 >= 132 +# define BOOST_PP_ITERATION_5 132 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 133 && BOOST_PP_ITERATION_FINISH_5 >= 133 +# define BOOST_PP_ITERATION_5 133 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 134 && BOOST_PP_ITERATION_FINISH_5 >= 134 +# define BOOST_PP_ITERATION_5 134 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 135 && BOOST_PP_ITERATION_FINISH_5 >= 135 +# define BOOST_PP_ITERATION_5 135 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 136 && BOOST_PP_ITERATION_FINISH_5 >= 136 +# define BOOST_PP_ITERATION_5 136 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 137 && BOOST_PP_ITERATION_FINISH_5 >= 137 +# define BOOST_PP_ITERATION_5 137 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 138 && BOOST_PP_ITERATION_FINISH_5 >= 138 +# define BOOST_PP_ITERATION_5 138 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 139 && BOOST_PP_ITERATION_FINISH_5 >= 139 +# define BOOST_PP_ITERATION_5 139 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 140 && BOOST_PP_ITERATION_FINISH_5 >= 140 +# define BOOST_PP_ITERATION_5 140 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 141 && BOOST_PP_ITERATION_FINISH_5 >= 141 +# define BOOST_PP_ITERATION_5 141 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 142 && BOOST_PP_ITERATION_FINISH_5 >= 142 +# define BOOST_PP_ITERATION_5 142 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 143 && BOOST_PP_ITERATION_FINISH_5 >= 143 +# define BOOST_PP_ITERATION_5 143 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 144 && BOOST_PP_ITERATION_FINISH_5 >= 144 +# define BOOST_PP_ITERATION_5 144 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 145 && BOOST_PP_ITERATION_FINISH_5 >= 145 +# define BOOST_PP_ITERATION_5 145 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 146 && BOOST_PP_ITERATION_FINISH_5 >= 146 +# define BOOST_PP_ITERATION_5 146 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 147 && BOOST_PP_ITERATION_FINISH_5 >= 147 +# define BOOST_PP_ITERATION_5 147 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 148 && BOOST_PP_ITERATION_FINISH_5 >= 148 +# define BOOST_PP_ITERATION_5 148 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 149 && BOOST_PP_ITERATION_FINISH_5 >= 149 +# define BOOST_PP_ITERATION_5 149 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 150 && BOOST_PP_ITERATION_FINISH_5 >= 150 +# define BOOST_PP_ITERATION_5 150 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 151 && BOOST_PP_ITERATION_FINISH_5 >= 151 +# define BOOST_PP_ITERATION_5 151 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 152 && BOOST_PP_ITERATION_FINISH_5 >= 152 +# define BOOST_PP_ITERATION_5 152 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 153 && BOOST_PP_ITERATION_FINISH_5 >= 153 +# define BOOST_PP_ITERATION_5 153 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 154 && BOOST_PP_ITERATION_FINISH_5 >= 154 +# define BOOST_PP_ITERATION_5 154 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 155 && BOOST_PP_ITERATION_FINISH_5 >= 155 +# define BOOST_PP_ITERATION_5 155 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 156 && BOOST_PP_ITERATION_FINISH_5 >= 156 +# define BOOST_PP_ITERATION_5 156 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 157 && BOOST_PP_ITERATION_FINISH_5 >= 157 +# define BOOST_PP_ITERATION_5 157 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 158 && BOOST_PP_ITERATION_FINISH_5 >= 158 +# define BOOST_PP_ITERATION_5 158 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 159 && BOOST_PP_ITERATION_FINISH_5 >= 159 +# define BOOST_PP_ITERATION_5 159 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 160 && BOOST_PP_ITERATION_FINISH_5 >= 160 +# define BOOST_PP_ITERATION_5 160 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 161 && BOOST_PP_ITERATION_FINISH_5 >= 161 +# define BOOST_PP_ITERATION_5 161 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 162 && BOOST_PP_ITERATION_FINISH_5 >= 162 +# define BOOST_PP_ITERATION_5 162 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 163 && BOOST_PP_ITERATION_FINISH_5 >= 163 +# define BOOST_PP_ITERATION_5 163 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 164 && BOOST_PP_ITERATION_FINISH_5 >= 164 +# define BOOST_PP_ITERATION_5 164 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 165 && BOOST_PP_ITERATION_FINISH_5 >= 165 +# define BOOST_PP_ITERATION_5 165 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 166 && BOOST_PP_ITERATION_FINISH_5 >= 166 +# define BOOST_PP_ITERATION_5 166 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 167 && BOOST_PP_ITERATION_FINISH_5 >= 167 +# define BOOST_PP_ITERATION_5 167 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 168 && BOOST_PP_ITERATION_FINISH_5 >= 168 +# define BOOST_PP_ITERATION_5 168 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 169 && BOOST_PP_ITERATION_FINISH_5 >= 169 +# define BOOST_PP_ITERATION_5 169 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 170 && BOOST_PP_ITERATION_FINISH_5 >= 170 +# define BOOST_PP_ITERATION_5 170 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 171 && BOOST_PP_ITERATION_FINISH_5 >= 171 +# define BOOST_PP_ITERATION_5 171 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 172 && BOOST_PP_ITERATION_FINISH_5 >= 172 +# define BOOST_PP_ITERATION_5 172 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 173 && BOOST_PP_ITERATION_FINISH_5 >= 173 +# define BOOST_PP_ITERATION_5 173 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 174 && BOOST_PP_ITERATION_FINISH_5 >= 174 +# define BOOST_PP_ITERATION_5 174 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 175 && BOOST_PP_ITERATION_FINISH_5 >= 175 +# define BOOST_PP_ITERATION_5 175 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 176 && BOOST_PP_ITERATION_FINISH_5 >= 176 +# define BOOST_PP_ITERATION_5 176 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 177 && BOOST_PP_ITERATION_FINISH_5 >= 177 +# define BOOST_PP_ITERATION_5 177 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 178 && BOOST_PP_ITERATION_FINISH_5 >= 178 +# define BOOST_PP_ITERATION_5 178 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 179 && BOOST_PP_ITERATION_FINISH_5 >= 179 +# define BOOST_PP_ITERATION_5 179 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 180 && BOOST_PP_ITERATION_FINISH_5 >= 180 +# define BOOST_PP_ITERATION_5 180 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 181 && BOOST_PP_ITERATION_FINISH_5 >= 181 +# define BOOST_PP_ITERATION_5 181 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 182 && BOOST_PP_ITERATION_FINISH_5 >= 182 +# define BOOST_PP_ITERATION_5 182 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 183 && BOOST_PP_ITERATION_FINISH_5 >= 183 +# define BOOST_PP_ITERATION_5 183 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 184 && BOOST_PP_ITERATION_FINISH_5 >= 184 +# define BOOST_PP_ITERATION_5 184 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 185 && BOOST_PP_ITERATION_FINISH_5 >= 185 +# define BOOST_PP_ITERATION_5 185 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 186 && BOOST_PP_ITERATION_FINISH_5 >= 186 +# define BOOST_PP_ITERATION_5 186 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 187 && BOOST_PP_ITERATION_FINISH_5 >= 187 +# define BOOST_PP_ITERATION_5 187 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 188 && BOOST_PP_ITERATION_FINISH_5 >= 188 +# define BOOST_PP_ITERATION_5 188 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 189 && BOOST_PP_ITERATION_FINISH_5 >= 189 +# define BOOST_PP_ITERATION_5 189 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 190 && BOOST_PP_ITERATION_FINISH_5 >= 190 +# define BOOST_PP_ITERATION_5 190 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 191 && BOOST_PP_ITERATION_FINISH_5 >= 191 +# define BOOST_PP_ITERATION_5 191 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 192 && BOOST_PP_ITERATION_FINISH_5 >= 192 +# define BOOST_PP_ITERATION_5 192 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 193 && BOOST_PP_ITERATION_FINISH_5 >= 193 +# define BOOST_PP_ITERATION_5 193 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 194 && BOOST_PP_ITERATION_FINISH_5 >= 194 +# define BOOST_PP_ITERATION_5 194 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 195 && BOOST_PP_ITERATION_FINISH_5 >= 195 +# define BOOST_PP_ITERATION_5 195 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 196 && BOOST_PP_ITERATION_FINISH_5 >= 196 +# define BOOST_PP_ITERATION_5 196 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 197 && BOOST_PP_ITERATION_FINISH_5 >= 197 +# define BOOST_PP_ITERATION_5 197 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 198 && BOOST_PP_ITERATION_FINISH_5 >= 198 +# define BOOST_PP_ITERATION_5 198 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 199 && BOOST_PP_ITERATION_FINISH_5 >= 199 +# define BOOST_PP_ITERATION_5 199 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 200 && BOOST_PP_ITERATION_FINISH_5 >= 200 +# define BOOST_PP_ITERATION_5 200 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 201 && BOOST_PP_ITERATION_FINISH_5 >= 201 +# define BOOST_PP_ITERATION_5 201 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 202 && BOOST_PP_ITERATION_FINISH_5 >= 202 +# define BOOST_PP_ITERATION_5 202 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 203 && BOOST_PP_ITERATION_FINISH_5 >= 203 +# define BOOST_PP_ITERATION_5 203 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 204 && BOOST_PP_ITERATION_FINISH_5 >= 204 +# define BOOST_PP_ITERATION_5 204 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 205 && BOOST_PP_ITERATION_FINISH_5 >= 205 +# define BOOST_PP_ITERATION_5 205 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 206 && BOOST_PP_ITERATION_FINISH_5 >= 206 +# define BOOST_PP_ITERATION_5 206 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 207 && BOOST_PP_ITERATION_FINISH_5 >= 207 +# define BOOST_PP_ITERATION_5 207 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 208 && BOOST_PP_ITERATION_FINISH_5 >= 208 +# define BOOST_PP_ITERATION_5 208 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 209 && BOOST_PP_ITERATION_FINISH_5 >= 209 +# define BOOST_PP_ITERATION_5 209 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 210 && BOOST_PP_ITERATION_FINISH_5 >= 210 +# define BOOST_PP_ITERATION_5 210 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 211 && BOOST_PP_ITERATION_FINISH_5 >= 211 +# define BOOST_PP_ITERATION_5 211 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 212 && BOOST_PP_ITERATION_FINISH_5 >= 212 +# define BOOST_PP_ITERATION_5 212 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 213 && BOOST_PP_ITERATION_FINISH_5 >= 213 +# define BOOST_PP_ITERATION_5 213 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 214 && BOOST_PP_ITERATION_FINISH_5 >= 214 +# define BOOST_PP_ITERATION_5 214 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 215 && BOOST_PP_ITERATION_FINISH_5 >= 215 +# define BOOST_PP_ITERATION_5 215 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 216 && BOOST_PP_ITERATION_FINISH_5 >= 216 +# define BOOST_PP_ITERATION_5 216 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 217 && BOOST_PP_ITERATION_FINISH_5 >= 217 +# define BOOST_PP_ITERATION_5 217 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 218 && BOOST_PP_ITERATION_FINISH_5 >= 218 +# define BOOST_PP_ITERATION_5 218 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 219 && BOOST_PP_ITERATION_FINISH_5 >= 219 +# define BOOST_PP_ITERATION_5 219 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 220 && BOOST_PP_ITERATION_FINISH_5 >= 220 +# define BOOST_PP_ITERATION_5 220 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 221 && BOOST_PP_ITERATION_FINISH_5 >= 221 +# define BOOST_PP_ITERATION_5 221 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 222 && BOOST_PP_ITERATION_FINISH_5 >= 222 +# define BOOST_PP_ITERATION_5 222 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 223 && BOOST_PP_ITERATION_FINISH_5 >= 223 +# define BOOST_PP_ITERATION_5 223 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 224 && BOOST_PP_ITERATION_FINISH_5 >= 224 +# define BOOST_PP_ITERATION_5 224 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 225 && BOOST_PP_ITERATION_FINISH_5 >= 225 +# define BOOST_PP_ITERATION_5 225 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 226 && BOOST_PP_ITERATION_FINISH_5 >= 226 +# define BOOST_PP_ITERATION_5 226 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 227 && BOOST_PP_ITERATION_FINISH_5 >= 227 +# define BOOST_PP_ITERATION_5 227 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 228 && BOOST_PP_ITERATION_FINISH_5 >= 228 +# define BOOST_PP_ITERATION_5 228 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 229 && BOOST_PP_ITERATION_FINISH_5 >= 229 +# define BOOST_PP_ITERATION_5 229 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 230 && BOOST_PP_ITERATION_FINISH_5 >= 230 +# define BOOST_PP_ITERATION_5 230 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 231 && BOOST_PP_ITERATION_FINISH_5 >= 231 +# define BOOST_PP_ITERATION_5 231 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 232 && BOOST_PP_ITERATION_FINISH_5 >= 232 +# define BOOST_PP_ITERATION_5 232 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 233 && BOOST_PP_ITERATION_FINISH_5 >= 233 +# define BOOST_PP_ITERATION_5 233 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 234 && BOOST_PP_ITERATION_FINISH_5 >= 234 +# define BOOST_PP_ITERATION_5 234 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 235 && BOOST_PP_ITERATION_FINISH_5 >= 235 +# define BOOST_PP_ITERATION_5 235 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 236 && BOOST_PP_ITERATION_FINISH_5 >= 236 +# define BOOST_PP_ITERATION_5 236 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 237 && BOOST_PP_ITERATION_FINISH_5 >= 237 +# define BOOST_PP_ITERATION_5 237 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 238 && BOOST_PP_ITERATION_FINISH_5 >= 238 +# define BOOST_PP_ITERATION_5 238 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 239 && BOOST_PP_ITERATION_FINISH_5 >= 239 +# define BOOST_PP_ITERATION_5 239 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 240 && BOOST_PP_ITERATION_FINISH_5 >= 240 +# define BOOST_PP_ITERATION_5 240 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 241 && BOOST_PP_ITERATION_FINISH_5 >= 241 +# define BOOST_PP_ITERATION_5 241 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 242 && BOOST_PP_ITERATION_FINISH_5 >= 242 +# define BOOST_PP_ITERATION_5 242 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 243 && BOOST_PP_ITERATION_FINISH_5 >= 243 +# define BOOST_PP_ITERATION_5 243 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 244 && BOOST_PP_ITERATION_FINISH_5 >= 244 +# define BOOST_PP_ITERATION_5 244 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 245 && BOOST_PP_ITERATION_FINISH_5 >= 245 +# define BOOST_PP_ITERATION_5 245 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 246 && BOOST_PP_ITERATION_FINISH_5 >= 246 +# define BOOST_PP_ITERATION_5 246 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 247 && BOOST_PP_ITERATION_FINISH_5 >= 247 +# define BOOST_PP_ITERATION_5 247 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 248 && BOOST_PP_ITERATION_FINISH_5 >= 248 +# define BOOST_PP_ITERATION_5 248 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 249 && BOOST_PP_ITERATION_FINISH_5 >= 249 +# define BOOST_PP_ITERATION_5 249 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 250 && BOOST_PP_ITERATION_FINISH_5 >= 250 +# define BOOST_PP_ITERATION_5 250 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 251 && BOOST_PP_ITERATION_FINISH_5 >= 251 +# define BOOST_PP_ITERATION_5 251 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 252 && BOOST_PP_ITERATION_FINISH_5 >= 252 +# define BOOST_PP_ITERATION_5 252 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 253 && BOOST_PP_ITERATION_FINISH_5 >= 253 +# define BOOST_PP_ITERATION_5 253 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 254 && BOOST_PP_ITERATION_FINISH_5 >= 254 +# define BOOST_PP_ITERATION_5 254 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 255 && BOOST_PP_ITERATION_FINISH_5 >= 255 +# define BOOST_PP_ITERATION_5 255 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 256 && BOOST_PP_ITERATION_FINISH_5 >= 256 +# define BOOST_PP_ITERATION_5 256 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward5_512.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward5_512.hpp new file mode 100644 index 000000000..dbddffe85 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/forward5_512.hpp @@ -0,0 +1,1293 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_START_5 <= 257 && BOOST_PP_ITERATION_FINISH_5 >= 257 +# define BOOST_PP_ITERATION_5 257 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 258 && BOOST_PP_ITERATION_FINISH_5 >= 258 +# define BOOST_PP_ITERATION_5 258 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 259 && BOOST_PP_ITERATION_FINISH_5 >= 259 +# define BOOST_PP_ITERATION_5 259 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 260 && BOOST_PP_ITERATION_FINISH_5 >= 260 +# define BOOST_PP_ITERATION_5 260 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 261 && BOOST_PP_ITERATION_FINISH_5 >= 261 +# define BOOST_PP_ITERATION_5 261 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 262 && BOOST_PP_ITERATION_FINISH_5 >= 262 +# define BOOST_PP_ITERATION_5 262 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 263 && BOOST_PP_ITERATION_FINISH_5 >= 263 +# define BOOST_PP_ITERATION_5 263 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 264 && BOOST_PP_ITERATION_FINISH_5 >= 264 +# define BOOST_PP_ITERATION_5 264 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 265 && BOOST_PP_ITERATION_FINISH_5 >= 265 +# define BOOST_PP_ITERATION_5 265 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 266 && BOOST_PP_ITERATION_FINISH_5 >= 266 +# define BOOST_PP_ITERATION_5 266 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 267 && BOOST_PP_ITERATION_FINISH_5 >= 267 +# define BOOST_PP_ITERATION_5 267 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 268 && BOOST_PP_ITERATION_FINISH_5 >= 268 +# define BOOST_PP_ITERATION_5 268 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 269 && BOOST_PP_ITERATION_FINISH_5 >= 269 +# define BOOST_PP_ITERATION_5 269 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 270 && BOOST_PP_ITERATION_FINISH_5 >= 270 +# define BOOST_PP_ITERATION_5 270 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 271 && BOOST_PP_ITERATION_FINISH_5 >= 271 +# define BOOST_PP_ITERATION_5 271 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 272 && BOOST_PP_ITERATION_FINISH_5 >= 272 +# define BOOST_PP_ITERATION_5 272 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 273 && BOOST_PP_ITERATION_FINISH_5 >= 273 +# define BOOST_PP_ITERATION_5 273 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 274 && BOOST_PP_ITERATION_FINISH_5 >= 274 +# define BOOST_PP_ITERATION_5 274 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 275 && BOOST_PP_ITERATION_FINISH_5 >= 275 +# define BOOST_PP_ITERATION_5 275 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 276 && BOOST_PP_ITERATION_FINISH_5 >= 276 +# define BOOST_PP_ITERATION_5 276 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 277 && BOOST_PP_ITERATION_FINISH_5 >= 277 +# define BOOST_PP_ITERATION_5 277 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 278 && BOOST_PP_ITERATION_FINISH_5 >= 278 +# define BOOST_PP_ITERATION_5 278 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 279 && BOOST_PP_ITERATION_FINISH_5 >= 279 +# define BOOST_PP_ITERATION_5 279 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 280 && BOOST_PP_ITERATION_FINISH_5 >= 280 +# define BOOST_PP_ITERATION_5 280 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 281 && BOOST_PP_ITERATION_FINISH_5 >= 281 +# define BOOST_PP_ITERATION_5 281 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 282 && BOOST_PP_ITERATION_FINISH_5 >= 282 +# define BOOST_PP_ITERATION_5 282 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 283 && BOOST_PP_ITERATION_FINISH_5 >= 283 +# define BOOST_PP_ITERATION_5 283 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 284 && BOOST_PP_ITERATION_FINISH_5 >= 284 +# define BOOST_PP_ITERATION_5 284 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 285 && BOOST_PP_ITERATION_FINISH_5 >= 285 +# define BOOST_PP_ITERATION_5 285 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 286 && BOOST_PP_ITERATION_FINISH_5 >= 286 +# define BOOST_PP_ITERATION_5 286 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 287 && BOOST_PP_ITERATION_FINISH_5 >= 287 +# define BOOST_PP_ITERATION_5 287 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 288 && BOOST_PP_ITERATION_FINISH_5 >= 288 +# define BOOST_PP_ITERATION_5 288 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 289 && BOOST_PP_ITERATION_FINISH_5 >= 289 +# define BOOST_PP_ITERATION_5 289 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 290 && BOOST_PP_ITERATION_FINISH_5 >= 290 +# define BOOST_PP_ITERATION_5 290 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 291 && BOOST_PP_ITERATION_FINISH_5 >= 291 +# define BOOST_PP_ITERATION_5 291 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 292 && BOOST_PP_ITERATION_FINISH_5 >= 292 +# define BOOST_PP_ITERATION_5 292 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 293 && BOOST_PP_ITERATION_FINISH_5 >= 293 +# define BOOST_PP_ITERATION_5 293 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 294 && BOOST_PP_ITERATION_FINISH_5 >= 294 +# define BOOST_PP_ITERATION_5 294 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 295 && BOOST_PP_ITERATION_FINISH_5 >= 295 +# define BOOST_PP_ITERATION_5 295 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 296 && BOOST_PP_ITERATION_FINISH_5 >= 296 +# define BOOST_PP_ITERATION_5 296 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 297 && BOOST_PP_ITERATION_FINISH_5 >= 297 +# define BOOST_PP_ITERATION_5 297 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 298 && BOOST_PP_ITERATION_FINISH_5 >= 298 +# define BOOST_PP_ITERATION_5 298 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 299 && BOOST_PP_ITERATION_FINISH_5 >= 299 +# define BOOST_PP_ITERATION_5 299 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 300 && BOOST_PP_ITERATION_FINISH_5 >= 300 +# define BOOST_PP_ITERATION_5 300 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 301 && BOOST_PP_ITERATION_FINISH_5 >= 301 +# define BOOST_PP_ITERATION_5 301 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 302 && BOOST_PP_ITERATION_FINISH_5 >= 302 +# define BOOST_PP_ITERATION_5 302 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 303 && BOOST_PP_ITERATION_FINISH_5 >= 303 +# define BOOST_PP_ITERATION_5 303 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 304 && BOOST_PP_ITERATION_FINISH_5 >= 304 +# define BOOST_PP_ITERATION_5 304 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 305 && BOOST_PP_ITERATION_FINISH_5 >= 305 +# define BOOST_PP_ITERATION_5 305 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 306 && BOOST_PP_ITERATION_FINISH_5 >= 306 +# define BOOST_PP_ITERATION_5 306 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 307 && BOOST_PP_ITERATION_FINISH_5 >= 307 +# define BOOST_PP_ITERATION_5 307 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 308 && BOOST_PP_ITERATION_FINISH_5 >= 308 +# define BOOST_PP_ITERATION_5 308 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 309 && BOOST_PP_ITERATION_FINISH_5 >= 309 +# define BOOST_PP_ITERATION_5 309 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 310 && BOOST_PP_ITERATION_FINISH_5 >= 310 +# define BOOST_PP_ITERATION_5 310 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 311 && BOOST_PP_ITERATION_FINISH_5 >= 311 +# define BOOST_PP_ITERATION_5 311 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 312 && BOOST_PP_ITERATION_FINISH_5 >= 312 +# define BOOST_PP_ITERATION_5 312 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 313 && BOOST_PP_ITERATION_FINISH_5 >= 313 +# define BOOST_PP_ITERATION_5 313 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 314 && BOOST_PP_ITERATION_FINISH_5 >= 314 +# define BOOST_PP_ITERATION_5 314 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 315 && BOOST_PP_ITERATION_FINISH_5 >= 315 +# define BOOST_PP_ITERATION_5 315 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 316 && BOOST_PP_ITERATION_FINISH_5 >= 316 +# define BOOST_PP_ITERATION_5 316 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 317 && BOOST_PP_ITERATION_FINISH_5 >= 317 +# define BOOST_PP_ITERATION_5 317 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 318 && BOOST_PP_ITERATION_FINISH_5 >= 318 +# define BOOST_PP_ITERATION_5 318 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 319 && BOOST_PP_ITERATION_FINISH_5 >= 319 +# define BOOST_PP_ITERATION_5 319 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 320 && BOOST_PP_ITERATION_FINISH_5 >= 320 +# define BOOST_PP_ITERATION_5 320 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 321 && BOOST_PP_ITERATION_FINISH_5 >= 321 +# define BOOST_PP_ITERATION_5 321 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 322 && BOOST_PP_ITERATION_FINISH_5 >= 322 +# define BOOST_PP_ITERATION_5 322 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 323 && BOOST_PP_ITERATION_FINISH_5 >= 323 +# define BOOST_PP_ITERATION_5 323 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 324 && BOOST_PP_ITERATION_FINISH_5 >= 324 +# define BOOST_PP_ITERATION_5 324 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 325 && BOOST_PP_ITERATION_FINISH_5 >= 325 +# define BOOST_PP_ITERATION_5 325 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 326 && BOOST_PP_ITERATION_FINISH_5 >= 326 +# define BOOST_PP_ITERATION_5 326 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 327 && BOOST_PP_ITERATION_FINISH_5 >= 327 +# define BOOST_PP_ITERATION_5 327 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 328 && BOOST_PP_ITERATION_FINISH_5 >= 328 +# define BOOST_PP_ITERATION_5 328 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 329 && BOOST_PP_ITERATION_FINISH_5 >= 329 +# define BOOST_PP_ITERATION_5 329 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 330 && BOOST_PP_ITERATION_FINISH_5 >= 330 +# define BOOST_PP_ITERATION_5 330 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 331 && BOOST_PP_ITERATION_FINISH_5 >= 331 +# define BOOST_PP_ITERATION_5 331 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 332 && BOOST_PP_ITERATION_FINISH_5 >= 332 +# define BOOST_PP_ITERATION_5 332 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 333 && BOOST_PP_ITERATION_FINISH_5 >= 333 +# define BOOST_PP_ITERATION_5 333 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 334 && BOOST_PP_ITERATION_FINISH_5 >= 334 +# define BOOST_PP_ITERATION_5 334 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 335 && BOOST_PP_ITERATION_FINISH_5 >= 335 +# define BOOST_PP_ITERATION_5 335 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 336 && BOOST_PP_ITERATION_FINISH_5 >= 336 +# define BOOST_PP_ITERATION_5 336 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 337 && BOOST_PP_ITERATION_FINISH_5 >= 337 +# define BOOST_PP_ITERATION_5 337 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 338 && BOOST_PP_ITERATION_FINISH_5 >= 338 +# define BOOST_PP_ITERATION_5 338 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 339 && BOOST_PP_ITERATION_FINISH_5 >= 339 +# define BOOST_PP_ITERATION_5 339 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 340 && BOOST_PP_ITERATION_FINISH_5 >= 340 +# define BOOST_PP_ITERATION_5 340 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 341 && BOOST_PP_ITERATION_FINISH_5 >= 341 +# define BOOST_PP_ITERATION_5 341 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 342 && BOOST_PP_ITERATION_FINISH_5 >= 342 +# define BOOST_PP_ITERATION_5 342 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 343 && BOOST_PP_ITERATION_FINISH_5 >= 343 +# define BOOST_PP_ITERATION_5 343 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 344 && BOOST_PP_ITERATION_FINISH_5 >= 344 +# define BOOST_PP_ITERATION_5 344 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 345 && BOOST_PP_ITERATION_FINISH_5 >= 345 +# define BOOST_PP_ITERATION_5 345 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 346 && BOOST_PP_ITERATION_FINISH_5 >= 346 +# define BOOST_PP_ITERATION_5 346 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 347 && BOOST_PP_ITERATION_FINISH_5 >= 347 +# define BOOST_PP_ITERATION_5 347 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 348 && BOOST_PP_ITERATION_FINISH_5 >= 348 +# define BOOST_PP_ITERATION_5 348 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 349 && BOOST_PP_ITERATION_FINISH_5 >= 349 +# define BOOST_PP_ITERATION_5 349 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 350 && BOOST_PP_ITERATION_FINISH_5 >= 350 +# define BOOST_PP_ITERATION_5 350 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 351 && BOOST_PP_ITERATION_FINISH_5 >= 351 +# define BOOST_PP_ITERATION_5 351 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 352 && BOOST_PP_ITERATION_FINISH_5 >= 352 +# define BOOST_PP_ITERATION_5 352 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 353 && BOOST_PP_ITERATION_FINISH_5 >= 353 +# define BOOST_PP_ITERATION_5 353 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 354 && BOOST_PP_ITERATION_FINISH_5 >= 354 +# define BOOST_PP_ITERATION_5 354 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 355 && BOOST_PP_ITERATION_FINISH_5 >= 355 +# define BOOST_PP_ITERATION_5 355 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 356 && BOOST_PP_ITERATION_FINISH_5 >= 356 +# define BOOST_PP_ITERATION_5 356 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 357 && BOOST_PP_ITERATION_FINISH_5 >= 357 +# define BOOST_PP_ITERATION_5 357 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 358 && BOOST_PP_ITERATION_FINISH_5 >= 358 +# define BOOST_PP_ITERATION_5 358 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 359 && BOOST_PP_ITERATION_FINISH_5 >= 359 +# define BOOST_PP_ITERATION_5 359 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 360 && BOOST_PP_ITERATION_FINISH_5 >= 360 +# define BOOST_PP_ITERATION_5 360 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 361 && BOOST_PP_ITERATION_FINISH_5 >= 361 +# define BOOST_PP_ITERATION_5 361 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 362 && BOOST_PP_ITERATION_FINISH_5 >= 362 +# define BOOST_PP_ITERATION_5 362 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 363 && BOOST_PP_ITERATION_FINISH_5 >= 363 +# define BOOST_PP_ITERATION_5 363 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 364 && BOOST_PP_ITERATION_FINISH_5 >= 364 +# define BOOST_PP_ITERATION_5 364 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 365 && BOOST_PP_ITERATION_FINISH_5 >= 365 +# define BOOST_PP_ITERATION_5 365 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 366 && BOOST_PP_ITERATION_FINISH_5 >= 366 +# define BOOST_PP_ITERATION_5 366 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 367 && BOOST_PP_ITERATION_FINISH_5 >= 367 +# define BOOST_PP_ITERATION_5 367 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 368 && BOOST_PP_ITERATION_FINISH_5 >= 368 +# define BOOST_PP_ITERATION_5 368 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 369 && BOOST_PP_ITERATION_FINISH_5 >= 369 +# define BOOST_PP_ITERATION_5 369 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 370 && BOOST_PP_ITERATION_FINISH_5 >= 370 +# define BOOST_PP_ITERATION_5 370 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 371 && BOOST_PP_ITERATION_FINISH_5 >= 371 +# define BOOST_PP_ITERATION_5 371 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 372 && BOOST_PP_ITERATION_FINISH_5 >= 372 +# define BOOST_PP_ITERATION_5 372 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 373 && BOOST_PP_ITERATION_FINISH_5 >= 373 +# define BOOST_PP_ITERATION_5 373 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 374 && BOOST_PP_ITERATION_FINISH_5 >= 374 +# define BOOST_PP_ITERATION_5 374 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 375 && BOOST_PP_ITERATION_FINISH_5 >= 375 +# define BOOST_PP_ITERATION_5 375 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 376 && BOOST_PP_ITERATION_FINISH_5 >= 376 +# define BOOST_PP_ITERATION_5 376 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 377 && BOOST_PP_ITERATION_FINISH_5 >= 377 +# define BOOST_PP_ITERATION_5 377 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 378 && BOOST_PP_ITERATION_FINISH_5 >= 378 +# define BOOST_PP_ITERATION_5 378 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 379 && BOOST_PP_ITERATION_FINISH_5 >= 379 +# define BOOST_PP_ITERATION_5 379 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 380 && BOOST_PP_ITERATION_FINISH_5 >= 380 +# define BOOST_PP_ITERATION_5 380 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 381 && BOOST_PP_ITERATION_FINISH_5 >= 381 +# define BOOST_PP_ITERATION_5 381 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 382 && BOOST_PP_ITERATION_FINISH_5 >= 382 +# define BOOST_PP_ITERATION_5 382 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 383 && BOOST_PP_ITERATION_FINISH_5 >= 383 +# define BOOST_PP_ITERATION_5 383 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 384 && BOOST_PP_ITERATION_FINISH_5 >= 384 +# define BOOST_PP_ITERATION_5 384 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 385 && BOOST_PP_ITERATION_FINISH_5 >= 385 +# define BOOST_PP_ITERATION_5 385 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 386 && BOOST_PP_ITERATION_FINISH_5 >= 386 +# define BOOST_PP_ITERATION_5 386 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 387 && BOOST_PP_ITERATION_FINISH_5 >= 387 +# define BOOST_PP_ITERATION_5 387 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 388 && BOOST_PP_ITERATION_FINISH_5 >= 388 +# define BOOST_PP_ITERATION_5 388 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 389 && BOOST_PP_ITERATION_FINISH_5 >= 389 +# define BOOST_PP_ITERATION_5 389 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 390 && BOOST_PP_ITERATION_FINISH_5 >= 390 +# define BOOST_PP_ITERATION_5 390 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 391 && BOOST_PP_ITERATION_FINISH_5 >= 391 +# define BOOST_PP_ITERATION_5 391 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 392 && BOOST_PP_ITERATION_FINISH_5 >= 392 +# define BOOST_PP_ITERATION_5 392 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 393 && BOOST_PP_ITERATION_FINISH_5 >= 393 +# define BOOST_PP_ITERATION_5 393 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 394 && BOOST_PP_ITERATION_FINISH_5 >= 394 +# define BOOST_PP_ITERATION_5 394 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 395 && BOOST_PP_ITERATION_FINISH_5 >= 395 +# define BOOST_PP_ITERATION_5 395 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 396 && BOOST_PP_ITERATION_FINISH_5 >= 396 +# define BOOST_PP_ITERATION_5 396 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 397 && BOOST_PP_ITERATION_FINISH_5 >= 397 +# define BOOST_PP_ITERATION_5 397 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 398 && BOOST_PP_ITERATION_FINISH_5 >= 398 +# define BOOST_PP_ITERATION_5 398 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 399 && BOOST_PP_ITERATION_FINISH_5 >= 399 +# define BOOST_PP_ITERATION_5 399 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 400 && BOOST_PP_ITERATION_FINISH_5 >= 400 +# define BOOST_PP_ITERATION_5 400 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 401 && BOOST_PP_ITERATION_FINISH_5 >= 401 +# define BOOST_PP_ITERATION_5 401 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 402 && BOOST_PP_ITERATION_FINISH_5 >= 402 +# define BOOST_PP_ITERATION_5 402 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 403 && BOOST_PP_ITERATION_FINISH_5 >= 403 +# define BOOST_PP_ITERATION_5 403 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 404 && BOOST_PP_ITERATION_FINISH_5 >= 404 +# define BOOST_PP_ITERATION_5 404 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 405 && BOOST_PP_ITERATION_FINISH_5 >= 405 +# define BOOST_PP_ITERATION_5 405 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 406 && BOOST_PP_ITERATION_FINISH_5 >= 406 +# define BOOST_PP_ITERATION_5 406 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 407 && BOOST_PP_ITERATION_FINISH_5 >= 407 +# define BOOST_PP_ITERATION_5 407 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 408 && BOOST_PP_ITERATION_FINISH_5 >= 408 +# define BOOST_PP_ITERATION_5 408 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 409 && BOOST_PP_ITERATION_FINISH_5 >= 409 +# define BOOST_PP_ITERATION_5 409 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 410 && BOOST_PP_ITERATION_FINISH_5 >= 410 +# define BOOST_PP_ITERATION_5 410 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 411 && BOOST_PP_ITERATION_FINISH_5 >= 411 +# define BOOST_PP_ITERATION_5 411 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 412 && BOOST_PP_ITERATION_FINISH_5 >= 412 +# define BOOST_PP_ITERATION_5 412 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 413 && BOOST_PP_ITERATION_FINISH_5 >= 413 +# define BOOST_PP_ITERATION_5 413 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 414 && BOOST_PP_ITERATION_FINISH_5 >= 414 +# define BOOST_PP_ITERATION_5 414 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 415 && BOOST_PP_ITERATION_FINISH_5 >= 415 +# define BOOST_PP_ITERATION_5 415 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 416 && BOOST_PP_ITERATION_FINISH_5 >= 416 +# define BOOST_PP_ITERATION_5 416 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 417 && BOOST_PP_ITERATION_FINISH_5 >= 417 +# define BOOST_PP_ITERATION_5 417 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 418 && BOOST_PP_ITERATION_FINISH_5 >= 418 +# define BOOST_PP_ITERATION_5 418 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 419 && BOOST_PP_ITERATION_FINISH_5 >= 419 +# define BOOST_PP_ITERATION_5 419 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 420 && BOOST_PP_ITERATION_FINISH_5 >= 420 +# define BOOST_PP_ITERATION_5 420 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 421 && BOOST_PP_ITERATION_FINISH_5 >= 421 +# define BOOST_PP_ITERATION_5 421 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 422 && BOOST_PP_ITERATION_FINISH_5 >= 422 +# define BOOST_PP_ITERATION_5 422 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 423 && BOOST_PP_ITERATION_FINISH_5 >= 423 +# define BOOST_PP_ITERATION_5 423 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 424 && BOOST_PP_ITERATION_FINISH_5 >= 424 +# define BOOST_PP_ITERATION_5 424 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 425 && BOOST_PP_ITERATION_FINISH_5 >= 425 +# define BOOST_PP_ITERATION_5 425 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 426 && BOOST_PP_ITERATION_FINISH_5 >= 426 +# define BOOST_PP_ITERATION_5 426 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 427 && BOOST_PP_ITERATION_FINISH_5 >= 427 +# define BOOST_PP_ITERATION_5 427 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 428 && BOOST_PP_ITERATION_FINISH_5 >= 428 +# define BOOST_PP_ITERATION_5 428 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 429 && BOOST_PP_ITERATION_FINISH_5 >= 429 +# define BOOST_PP_ITERATION_5 429 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 430 && BOOST_PP_ITERATION_FINISH_5 >= 430 +# define BOOST_PP_ITERATION_5 430 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 431 && BOOST_PP_ITERATION_FINISH_5 >= 431 +# define BOOST_PP_ITERATION_5 431 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 432 && BOOST_PP_ITERATION_FINISH_5 >= 432 +# define BOOST_PP_ITERATION_5 432 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 433 && BOOST_PP_ITERATION_FINISH_5 >= 433 +# define BOOST_PP_ITERATION_5 433 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 434 && BOOST_PP_ITERATION_FINISH_5 >= 434 +# define BOOST_PP_ITERATION_5 434 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 435 && BOOST_PP_ITERATION_FINISH_5 >= 435 +# define BOOST_PP_ITERATION_5 435 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 436 && BOOST_PP_ITERATION_FINISH_5 >= 436 +# define BOOST_PP_ITERATION_5 436 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 437 && BOOST_PP_ITERATION_FINISH_5 >= 437 +# define BOOST_PP_ITERATION_5 437 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 438 && BOOST_PP_ITERATION_FINISH_5 >= 438 +# define BOOST_PP_ITERATION_5 438 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 439 && BOOST_PP_ITERATION_FINISH_5 >= 439 +# define BOOST_PP_ITERATION_5 439 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 440 && BOOST_PP_ITERATION_FINISH_5 >= 440 +# define BOOST_PP_ITERATION_5 440 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 441 && BOOST_PP_ITERATION_FINISH_5 >= 441 +# define BOOST_PP_ITERATION_5 441 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 442 && BOOST_PP_ITERATION_FINISH_5 >= 442 +# define BOOST_PP_ITERATION_5 442 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 443 && BOOST_PP_ITERATION_FINISH_5 >= 443 +# define BOOST_PP_ITERATION_5 443 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 444 && BOOST_PP_ITERATION_FINISH_5 >= 444 +# define BOOST_PP_ITERATION_5 444 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 445 && BOOST_PP_ITERATION_FINISH_5 >= 445 +# define BOOST_PP_ITERATION_5 445 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 446 && BOOST_PP_ITERATION_FINISH_5 >= 446 +# define BOOST_PP_ITERATION_5 446 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 447 && BOOST_PP_ITERATION_FINISH_5 >= 447 +# define BOOST_PP_ITERATION_5 447 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 448 && BOOST_PP_ITERATION_FINISH_5 >= 448 +# define BOOST_PP_ITERATION_5 448 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 449 && BOOST_PP_ITERATION_FINISH_5 >= 449 +# define BOOST_PP_ITERATION_5 449 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 450 && BOOST_PP_ITERATION_FINISH_5 >= 450 +# define BOOST_PP_ITERATION_5 450 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 451 && BOOST_PP_ITERATION_FINISH_5 >= 451 +# define BOOST_PP_ITERATION_5 451 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 452 && BOOST_PP_ITERATION_FINISH_5 >= 452 +# define BOOST_PP_ITERATION_5 452 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 453 && BOOST_PP_ITERATION_FINISH_5 >= 453 +# define BOOST_PP_ITERATION_5 453 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 454 && BOOST_PP_ITERATION_FINISH_5 >= 454 +# define BOOST_PP_ITERATION_5 454 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 455 && BOOST_PP_ITERATION_FINISH_5 >= 455 +# define BOOST_PP_ITERATION_5 455 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 456 && BOOST_PP_ITERATION_FINISH_5 >= 456 +# define BOOST_PP_ITERATION_5 456 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 457 && BOOST_PP_ITERATION_FINISH_5 >= 457 +# define BOOST_PP_ITERATION_5 457 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 458 && BOOST_PP_ITERATION_FINISH_5 >= 458 +# define BOOST_PP_ITERATION_5 458 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 459 && BOOST_PP_ITERATION_FINISH_5 >= 459 +# define BOOST_PP_ITERATION_5 459 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 460 && BOOST_PP_ITERATION_FINISH_5 >= 460 +# define BOOST_PP_ITERATION_5 460 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 461 && BOOST_PP_ITERATION_FINISH_5 >= 461 +# define BOOST_PP_ITERATION_5 461 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 462 && BOOST_PP_ITERATION_FINISH_5 >= 462 +# define BOOST_PP_ITERATION_5 462 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 463 && BOOST_PP_ITERATION_FINISH_5 >= 463 +# define BOOST_PP_ITERATION_5 463 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 464 && BOOST_PP_ITERATION_FINISH_5 >= 464 +# define BOOST_PP_ITERATION_5 464 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 465 && BOOST_PP_ITERATION_FINISH_5 >= 465 +# define BOOST_PP_ITERATION_5 465 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 466 && BOOST_PP_ITERATION_FINISH_5 >= 466 +# define BOOST_PP_ITERATION_5 466 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 467 && BOOST_PP_ITERATION_FINISH_5 >= 467 +# define BOOST_PP_ITERATION_5 467 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 468 && BOOST_PP_ITERATION_FINISH_5 >= 468 +# define BOOST_PP_ITERATION_5 468 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 469 && BOOST_PP_ITERATION_FINISH_5 >= 469 +# define BOOST_PP_ITERATION_5 469 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 470 && BOOST_PP_ITERATION_FINISH_5 >= 470 +# define BOOST_PP_ITERATION_5 470 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 471 && BOOST_PP_ITERATION_FINISH_5 >= 471 +# define BOOST_PP_ITERATION_5 471 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 472 && BOOST_PP_ITERATION_FINISH_5 >= 472 +# define BOOST_PP_ITERATION_5 472 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 473 && BOOST_PP_ITERATION_FINISH_5 >= 473 +# define BOOST_PP_ITERATION_5 473 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 474 && BOOST_PP_ITERATION_FINISH_5 >= 474 +# define BOOST_PP_ITERATION_5 474 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 475 && BOOST_PP_ITERATION_FINISH_5 >= 475 +# define BOOST_PP_ITERATION_5 475 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 476 && BOOST_PP_ITERATION_FINISH_5 >= 476 +# define BOOST_PP_ITERATION_5 476 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 477 && BOOST_PP_ITERATION_FINISH_5 >= 477 +# define BOOST_PP_ITERATION_5 477 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 478 && BOOST_PP_ITERATION_FINISH_5 >= 478 +# define BOOST_PP_ITERATION_5 478 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 479 && BOOST_PP_ITERATION_FINISH_5 >= 479 +# define BOOST_PP_ITERATION_5 479 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 480 && BOOST_PP_ITERATION_FINISH_5 >= 480 +# define BOOST_PP_ITERATION_5 480 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 481 && BOOST_PP_ITERATION_FINISH_5 >= 481 +# define BOOST_PP_ITERATION_5 481 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 482 && BOOST_PP_ITERATION_FINISH_5 >= 482 +# define BOOST_PP_ITERATION_5 482 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 483 && BOOST_PP_ITERATION_FINISH_5 >= 483 +# define BOOST_PP_ITERATION_5 483 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 484 && BOOST_PP_ITERATION_FINISH_5 >= 484 +# define BOOST_PP_ITERATION_5 484 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 485 && BOOST_PP_ITERATION_FINISH_5 >= 485 +# define BOOST_PP_ITERATION_5 485 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 486 && BOOST_PP_ITERATION_FINISH_5 >= 486 +# define BOOST_PP_ITERATION_5 486 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 487 && BOOST_PP_ITERATION_FINISH_5 >= 487 +# define BOOST_PP_ITERATION_5 487 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 488 && BOOST_PP_ITERATION_FINISH_5 >= 488 +# define BOOST_PP_ITERATION_5 488 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 489 && BOOST_PP_ITERATION_FINISH_5 >= 489 +# define BOOST_PP_ITERATION_5 489 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 490 && BOOST_PP_ITERATION_FINISH_5 >= 490 +# define BOOST_PP_ITERATION_5 490 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 491 && BOOST_PP_ITERATION_FINISH_5 >= 491 +# define BOOST_PP_ITERATION_5 491 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 492 && BOOST_PP_ITERATION_FINISH_5 >= 492 +# define BOOST_PP_ITERATION_5 492 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 493 && BOOST_PP_ITERATION_FINISH_5 >= 493 +# define BOOST_PP_ITERATION_5 493 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 494 && BOOST_PP_ITERATION_FINISH_5 >= 494 +# define BOOST_PP_ITERATION_5 494 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 495 && BOOST_PP_ITERATION_FINISH_5 >= 495 +# define BOOST_PP_ITERATION_5 495 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 496 && BOOST_PP_ITERATION_FINISH_5 >= 496 +# define BOOST_PP_ITERATION_5 496 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 497 && BOOST_PP_ITERATION_FINISH_5 >= 497 +# define BOOST_PP_ITERATION_5 497 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 498 && BOOST_PP_ITERATION_FINISH_5 >= 498 +# define BOOST_PP_ITERATION_5 498 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 499 && BOOST_PP_ITERATION_FINISH_5 >= 499 +# define BOOST_PP_ITERATION_5 499 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 500 && BOOST_PP_ITERATION_FINISH_5 >= 500 +# define BOOST_PP_ITERATION_5 500 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 501 && BOOST_PP_ITERATION_FINISH_5 >= 501 +# define BOOST_PP_ITERATION_5 501 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 502 && BOOST_PP_ITERATION_FINISH_5 >= 502 +# define BOOST_PP_ITERATION_5 502 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 503 && BOOST_PP_ITERATION_FINISH_5 >= 503 +# define BOOST_PP_ITERATION_5 503 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 504 && BOOST_PP_ITERATION_FINISH_5 >= 504 +# define BOOST_PP_ITERATION_5 504 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 505 && BOOST_PP_ITERATION_FINISH_5 >= 505 +# define BOOST_PP_ITERATION_5 505 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 506 && BOOST_PP_ITERATION_FINISH_5 >= 506 +# define BOOST_PP_ITERATION_5 506 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 507 && BOOST_PP_ITERATION_FINISH_5 >= 507 +# define BOOST_PP_ITERATION_5 507 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 508 && BOOST_PP_ITERATION_FINISH_5 >= 508 +# define BOOST_PP_ITERATION_5 508 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 509 && BOOST_PP_ITERATION_FINISH_5 >= 509 +# define BOOST_PP_ITERATION_5 509 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 510 && BOOST_PP_ITERATION_FINISH_5 >= 510 +# define BOOST_PP_ITERATION_5 510 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 511 && BOOST_PP_ITERATION_FINISH_5 >= 511 +# define BOOST_PP_ITERATION_5 511 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_START_5 <= 512 && BOOST_PP_ITERATION_FINISH_5 >= 512 +# define BOOST_PP_ITERATION_5 512 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse1_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse1_1024.hpp new file mode 100644 index 000000000..0510c0845 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse1_1024.hpp @@ -0,0 +1,2571 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_FINISH_1 <= 1024 && BOOST_PP_ITERATION_START_1 >= 1024 +# define BOOST_PP_ITERATION_1 1024 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1023 && BOOST_PP_ITERATION_START_1 >= 1023 +# define BOOST_PP_ITERATION_1 1023 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1022 && BOOST_PP_ITERATION_START_1 >= 1022 +# define BOOST_PP_ITERATION_1 1022 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1021 && BOOST_PP_ITERATION_START_1 >= 1021 +# define BOOST_PP_ITERATION_1 1021 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1020 && BOOST_PP_ITERATION_START_1 >= 1020 +# define BOOST_PP_ITERATION_1 1020 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1019 && BOOST_PP_ITERATION_START_1 >= 1019 +# define BOOST_PP_ITERATION_1 1019 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1018 && BOOST_PP_ITERATION_START_1 >= 1018 +# define BOOST_PP_ITERATION_1 1018 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1017 && BOOST_PP_ITERATION_START_1 >= 1017 +# define BOOST_PP_ITERATION_1 1017 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1016 && BOOST_PP_ITERATION_START_1 >= 1016 +# define BOOST_PP_ITERATION_1 1016 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1015 && BOOST_PP_ITERATION_START_1 >= 1015 +# define BOOST_PP_ITERATION_1 1015 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1014 && BOOST_PP_ITERATION_START_1 >= 1014 +# define BOOST_PP_ITERATION_1 1014 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1013 && BOOST_PP_ITERATION_START_1 >= 1013 +# define BOOST_PP_ITERATION_1 1013 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1012 && BOOST_PP_ITERATION_START_1 >= 1012 +# define BOOST_PP_ITERATION_1 1012 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1011 && BOOST_PP_ITERATION_START_1 >= 1011 +# define BOOST_PP_ITERATION_1 1011 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1010 && BOOST_PP_ITERATION_START_1 >= 1010 +# define BOOST_PP_ITERATION_1 1010 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1009 && BOOST_PP_ITERATION_START_1 >= 1009 +# define BOOST_PP_ITERATION_1 1009 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1008 && BOOST_PP_ITERATION_START_1 >= 1008 +# define BOOST_PP_ITERATION_1 1008 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1007 && BOOST_PP_ITERATION_START_1 >= 1007 +# define BOOST_PP_ITERATION_1 1007 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1006 && BOOST_PP_ITERATION_START_1 >= 1006 +# define BOOST_PP_ITERATION_1 1006 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1005 && BOOST_PP_ITERATION_START_1 >= 1005 +# define BOOST_PP_ITERATION_1 1005 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1004 && BOOST_PP_ITERATION_START_1 >= 1004 +# define BOOST_PP_ITERATION_1 1004 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1003 && BOOST_PP_ITERATION_START_1 >= 1003 +# define BOOST_PP_ITERATION_1 1003 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1002 && BOOST_PP_ITERATION_START_1 >= 1002 +# define BOOST_PP_ITERATION_1 1002 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1001 && BOOST_PP_ITERATION_START_1 >= 1001 +# define BOOST_PP_ITERATION_1 1001 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1000 && BOOST_PP_ITERATION_START_1 >= 1000 +# define BOOST_PP_ITERATION_1 1000 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 999 && BOOST_PP_ITERATION_START_1 >= 999 +# define BOOST_PP_ITERATION_1 999 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 998 && BOOST_PP_ITERATION_START_1 >= 998 +# define BOOST_PP_ITERATION_1 998 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 997 && BOOST_PP_ITERATION_START_1 >= 997 +# define BOOST_PP_ITERATION_1 997 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 996 && BOOST_PP_ITERATION_START_1 >= 996 +# define BOOST_PP_ITERATION_1 996 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 995 && BOOST_PP_ITERATION_START_1 >= 995 +# define BOOST_PP_ITERATION_1 995 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 994 && BOOST_PP_ITERATION_START_1 >= 994 +# define BOOST_PP_ITERATION_1 994 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 993 && BOOST_PP_ITERATION_START_1 >= 993 +# define BOOST_PP_ITERATION_1 993 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 992 && BOOST_PP_ITERATION_START_1 >= 992 +# define BOOST_PP_ITERATION_1 992 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 991 && BOOST_PP_ITERATION_START_1 >= 991 +# define BOOST_PP_ITERATION_1 991 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 990 && BOOST_PP_ITERATION_START_1 >= 990 +# define BOOST_PP_ITERATION_1 990 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 989 && BOOST_PP_ITERATION_START_1 >= 989 +# define BOOST_PP_ITERATION_1 989 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 988 && BOOST_PP_ITERATION_START_1 >= 988 +# define BOOST_PP_ITERATION_1 988 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 987 && BOOST_PP_ITERATION_START_1 >= 987 +# define BOOST_PP_ITERATION_1 987 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 986 && BOOST_PP_ITERATION_START_1 >= 986 +# define BOOST_PP_ITERATION_1 986 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 985 && BOOST_PP_ITERATION_START_1 >= 985 +# define BOOST_PP_ITERATION_1 985 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 984 && BOOST_PP_ITERATION_START_1 >= 984 +# define BOOST_PP_ITERATION_1 984 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 983 && BOOST_PP_ITERATION_START_1 >= 983 +# define BOOST_PP_ITERATION_1 983 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 982 && BOOST_PP_ITERATION_START_1 >= 982 +# define BOOST_PP_ITERATION_1 982 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 981 && BOOST_PP_ITERATION_START_1 >= 981 +# define BOOST_PP_ITERATION_1 981 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 980 && BOOST_PP_ITERATION_START_1 >= 980 +# define BOOST_PP_ITERATION_1 980 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 979 && BOOST_PP_ITERATION_START_1 >= 979 +# define BOOST_PP_ITERATION_1 979 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 978 && BOOST_PP_ITERATION_START_1 >= 978 +# define BOOST_PP_ITERATION_1 978 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 977 && BOOST_PP_ITERATION_START_1 >= 977 +# define BOOST_PP_ITERATION_1 977 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 976 && BOOST_PP_ITERATION_START_1 >= 976 +# define BOOST_PP_ITERATION_1 976 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 975 && BOOST_PP_ITERATION_START_1 >= 975 +# define BOOST_PP_ITERATION_1 975 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 974 && BOOST_PP_ITERATION_START_1 >= 974 +# define BOOST_PP_ITERATION_1 974 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 973 && BOOST_PP_ITERATION_START_1 >= 973 +# define BOOST_PP_ITERATION_1 973 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 972 && BOOST_PP_ITERATION_START_1 >= 972 +# define BOOST_PP_ITERATION_1 972 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 971 && BOOST_PP_ITERATION_START_1 >= 971 +# define BOOST_PP_ITERATION_1 971 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 970 && BOOST_PP_ITERATION_START_1 >= 970 +# define BOOST_PP_ITERATION_1 970 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 969 && BOOST_PP_ITERATION_START_1 >= 969 +# define BOOST_PP_ITERATION_1 969 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 968 && BOOST_PP_ITERATION_START_1 >= 968 +# define BOOST_PP_ITERATION_1 968 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 967 && BOOST_PP_ITERATION_START_1 >= 967 +# define BOOST_PP_ITERATION_1 967 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 966 && BOOST_PP_ITERATION_START_1 >= 966 +# define BOOST_PP_ITERATION_1 966 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 965 && BOOST_PP_ITERATION_START_1 >= 965 +# define BOOST_PP_ITERATION_1 965 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 964 && BOOST_PP_ITERATION_START_1 >= 964 +# define BOOST_PP_ITERATION_1 964 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 963 && BOOST_PP_ITERATION_START_1 >= 963 +# define BOOST_PP_ITERATION_1 963 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 962 && BOOST_PP_ITERATION_START_1 >= 962 +# define BOOST_PP_ITERATION_1 962 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 961 && BOOST_PP_ITERATION_START_1 >= 961 +# define BOOST_PP_ITERATION_1 961 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 960 && BOOST_PP_ITERATION_START_1 >= 960 +# define BOOST_PP_ITERATION_1 960 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 959 && BOOST_PP_ITERATION_START_1 >= 959 +# define BOOST_PP_ITERATION_1 959 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 958 && BOOST_PP_ITERATION_START_1 >= 958 +# define BOOST_PP_ITERATION_1 958 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 957 && BOOST_PP_ITERATION_START_1 >= 957 +# define BOOST_PP_ITERATION_1 957 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 956 && BOOST_PP_ITERATION_START_1 >= 956 +# define BOOST_PP_ITERATION_1 956 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 955 && BOOST_PP_ITERATION_START_1 >= 955 +# define BOOST_PP_ITERATION_1 955 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 954 && BOOST_PP_ITERATION_START_1 >= 954 +# define BOOST_PP_ITERATION_1 954 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 953 && BOOST_PP_ITERATION_START_1 >= 953 +# define BOOST_PP_ITERATION_1 953 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 952 && BOOST_PP_ITERATION_START_1 >= 952 +# define BOOST_PP_ITERATION_1 952 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 951 && BOOST_PP_ITERATION_START_1 >= 951 +# define BOOST_PP_ITERATION_1 951 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 950 && BOOST_PP_ITERATION_START_1 >= 950 +# define BOOST_PP_ITERATION_1 950 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 949 && BOOST_PP_ITERATION_START_1 >= 949 +# define BOOST_PP_ITERATION_1 949 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 948 && BOOST_PP_ITERATION_START_1 >= 948 +# define BOOST_PP_ITERATION_1 948 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 947 && BOOST_PP_ITERATION_START_1 >= 947 +# define BOOST_PP_ITERATION_1 947 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 946 && BOOST_PP_ITERATION_START_1 >= 946 +# define BOOST_PP_ITERATION_1 946 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 945 && BOOST_PP_ITERATION_START_1 >= 945 +# define BOOST_PP_ITERATION_1 945 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 944 && BOOST_PP_ITERATION_START_1 >= 944 +# define BOOST_PP_ITERATION_1 944 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 943 && BOOST_PP_ITERATION_START_1 >= 943 +# define BOOST_PP_ITERATION_1 943 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 942 && BOOST_PP_ITERATION_START_1 >= 942 +# define BOOST_PP_ITERATION_1 942 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 941 && BOOST_PP_ITERATION_START_1 >= 941 +# define BOOST_PP_ITERATION_1 941 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 940 && BOOST_PP_ITERATION_START_1 >= 940 +# define BOOST_PP_ITERATION_1 940 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 939 && BOOST_PP_ITERATION_START_1 >= 939 +# define BOOST_PP_ITERATION_1 939 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 938 && BOOST_PP_ITERATION_START_1 >= 938 +# define BOOST_PP_ITERATION_1 938 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 937 && BOOST_PP_ITERATION_START_1 >= 937 +# define BOOST_PP_ITERATION_1 937 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 936 && BOOST_PP_ITERATION_START_1 >= 936 +# define BOOST_PP_ITERATION_1 936 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 935 && BOOST_PP_ITERATION_START_1 >= 935 +# define BOOST_PP_ITERATION_1 935 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 934 && BOOST_PP_ITERATION_START_1 >= 934 +# define BOOST_PP_ITERATION_1 934 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 933 && BOOST_PP_ITERATION_START_1 >= 933 +# define BOOST_PP_ITERATION_1 933 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 932 && BOOST_PP_ITERATION_START_1 >= 932 +# define BOOST_PP_ITERATION_1 932 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 931 && BOOST_PP_ITERATION_START_1 >= 931 +# define BOOST_PP_ITERATION_1 931 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 930 && BOOST_PP_ITERATION_START_1 >= 930 +# define BOOST_PP_ITERATION_1 930 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 929 && BOOST_PP_ITERATION_START_1 >= 929 +# define BOOST_PP_ITERATION_1 929 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 928 && BOOST_PP_ITERATION_START_1 >= 928 +# define BOOST_PP_ITERATION_1 928 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 927 && BOOST_PP_ITERATION_START_1 >= 927 +# define BOOST_PP_ITERATION_1 927 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 926 && BOOST_PP_ITERATION_START_1 >= 926 +# define BOOST_PP_ITERATION_1 926 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 925 && BOOST_PP_ITERATION_START_1 >= 925 +# define BOOST_PP_ITERATION_1 925 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 924 && BOOST_PP_ITERATION_START_1 >= 924 +# define BOOST_PP_ITERATION_1 924 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 923 && BOOST_PP_ITERATION_START_1 >= 923 +# define BOOST_PP_ITERATION_1 923 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 922 && BOOST_PP_ITERATION_START_1 >= 922 +# define BOOST_PP_ITERATION_1 922 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 921 && BOOST_PP_ITERATION_START_1 >= 921 +# define BOOST_PP_ITERATION_1 921 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 920 && BOOST_PP_ITERATION_START_1 >= 920 +# define BOOST_PP_ITERATION_1 920 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 919 && BOOST_PP_ITERATION_START_1 >= 919 +# define BOOST_PP_ITERATION_1 919 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 918 && BOOST_PP_ITERATION_START_1 >= 918 +# define BOOST_PP_ITERATION_1 918 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 917 && BOOST_PP_ITERATION_START_1 >= 917 +# define BOOST_PP_ITERATION_1 917 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 916 && BOOST_PP_ITERATION_START_1 >= 916 +# define BOOST_PP_ITERATION_1 916 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 915 && BOOST_PP_ITERATION_START_1 >= 915 +# define BOOST_PP_ITERATION_1 915 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 914 && BOOST_PP_ITERATION_START_1 >= 914 +# define BOOST_PP_ITERATION_1 914 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 913 && BOOST_PP_ITERATION_START_1 >= 913 +# define BOOST_PP_ITERATION_1 913 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 912 && BOOST_PP_ITERATION_START_1 >= 912 +# define BOOST_PP_ITERATION_1 912 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 911 && BOOST_PP_ITERATION_START_1 >= 911 +# define BOOST_PP_ITERATION_1 911 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 910 && BOOST_PP_ITERATION_START_1 >= 910 +# define BOOST_PP_ITERATION_1 910 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 909 && BOOST_PP_ITERATION_START_1 >= 909 +# define BOOST_PP_ITERATION_1 909 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 908 && BOOST_PP_ITERATION_START_1 >= 908 +# define BOOST_PP_ITERATION_1 908 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 907 && BOOST_PP_ITERATION_START_1 >= 907 +# define BOOST_PP_ITERATION_1 907 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 906 && BOOST_PP_ITERATION_START_1 >= 906 +# define BOOST_PP_ITERATION_1 906 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 905 && BOOST_PP_ITERATION_START_1 >= 905 +# define BOOST_PP_ITERATION_1 905 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 904 && BOOST_PP_ITERATION_START_1 >= 904 +# define BOOST_PP_ITERATION_1 904 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 903 && BOOST_PP_ITERATION_START_1 >= 903 +# define BOOST_PP_ITERATION_1 903 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 902 && BOOST_PP_ITERATION_START_1 >= 902 +# define BOOST_PP_ITERATION_1 902 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 901 && BOOST_PP_ITERATION_START_1 >= 901 +# define BOOST_PP_ITERATION_1 901 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 900 && BOOST_PP_ITERATION_START_1 >= 900 +# define BOOST_PP_ITERATION_1 900 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 899 && BOOST_PP_ITERATION_START_1 >= 899 +# define BOOST_PP_ITERATION_1 899 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 898 && BOOST_PP_ITERATION_START_1 >= 898 +# define BOOST_PP_ITERATION_1 898 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 897 && BOOST_PP_ITERATION_START_1 >= 897 +# define BOOST_PP_ITERATION_1 897 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 896 && BOOST_PP_ITERATION_START_1 >= 896 +# define BOOST_PP_ITERATION_1 896 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 895 && BOOST_PP_ITERATION_START_1 >= 895 +# define BOOST_PP_ITERATION_1 895 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 894 && BOOST_PP_ITERATION_START_1 >= 894 +# define BOOST_PP_ITERATION_1 894 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 893 && BOOST_PP_ITERATION_START_1 >= 893 +# define BOOST_PP_ITERATION_1 893 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 892 && BOOST_PP_ITERATION_START_1 >= 892 +# define BOOST_PP_ITERATION_1 892 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 891 && BOOST_PP_ITERATION_START_1 >= 891 +# define BOOST_PP_ITERATION_1 891 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 890 && BOOST_PP_ITERATION_START_1 >= 890 +# define BOOST_PP_ITERATION_1 890 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 889 && BOOST_PP_ITERATION_START_1 >= 889 +# define BOOST_PP_ITERATION_1 889 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 888 && BOOST_PP_ITERATION_START_1 >= 888 +# define BOOST_PP_ITERATION_1 888 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 887 && BOOST_PP_ITERATION_START_1 >= 887 +# define BOOST_PP_ITERATION_1 887 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 886 && BOOST_PP_ITERATION_START_1 >= 886 +# define BOOST_PP_ITERATION_1 886 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 885 && BOOST_PP_ITERATION_START_1 >= 885 +# define BOOST_PP_ITERATION_1 885 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 884 && BOOST_PP_ITERATION_START_1 >= 884 +# define BOOST_PP_ITERATION_1 884 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 883 && BOOST_PP_ITERATION_START_1 >= 883 +# define BOOST_PP_ITERATION_1 883 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 882 && BOOST_PP_ITERATION_START_1 >= 882 +# define BOOST_PP_ITERATION_1 882 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 881 && BOOST_PP_ITERATION_START_1 >= 881 +# define BOOST_PP_ITERATION_1 881 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 880 && BOOST_PP_ITERATION_START_1 >= 880 +# define BOOST_PP_ITERATION_1 880 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 879 && BOOST_PP_ITERATION_START_1 >= 879 +# define BOOST_PP_ITERATION_1 879 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 878 && BOOST_PP_ITERATION_START_1 >= 878 +# define BOOST_PP_ITERATION_1 878 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 877 && BOOST_PP_ITERATION_START_1 >= 877 +# define BOOST_PP_ITERATION_1 877 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 876 && BOOST_PP_ITERATION_START_1 >= 876 +# define BOOST_PP_ITERATION_1 876 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 875 && BOOST_PP_ITERATION_START_1 >= 875 +# define BOOST_PP_ITERATION_1 875 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 874 && BOOST_PP_ITERATION_START_1 >= 874 +# define BOOST_PP_ITERATION_1 874 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 873 && BOOST_PP_ITERATION_START_1 >= 873 +# define BOOST_PP_ITERATION_1 873 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 872 && BOOST_PP_ITERATION_START_1 >= 872 +# define BOOST_PP_ITERATION_1 872 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 871 && BOOST_PP_ITERATION_START_1 >= 871 +# define BOOST_PP_ITERATION_1 871 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 870 && BOOST_PP_ITERATION_START_1 >= 870 +# define BOOST_PP_ITERATION_1 870 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 869 && BOOST_PP_ITERATION_START_1 >= 869 +# define BOOST_PP_ITERATION_1 869 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 868 && BOOST_PP_ITERATION_START_1 >= 868 +# define BOOST_PP_ITERATION_1 868 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 867 && BOOST_PP_ITERATION_START_1 >= 867 +# define BOOST_PP_ITERATION_1 867 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 866 && BOOST_PP_ITERATION_START_1 >= 866 +# define BOOST_PP_ITERATION_1 866 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 865 && BOOST_PP_ITERATION_START_1 >= 865 +# define BOOST_PP_ITERATION_1 865 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 864 && BOOST_PP_ITERATION_START_1 >= 864 +# define BOOST_PP_ITERATION_1 864 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 863 && BOOST_PP_ITERATION_START_1 >= 863 +# define BOOST_PP_ITERATION_1 863 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 862 && BOOST_PP_ITERATION_START_1 >= 862 +# define BOOST_PP_ITERATION_1 862 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 861 && BOOST_PP_ITERATION_START_1 >= 861 +# define BOOST_PP_ITERATION_1 861 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 860 && BOOST_PP_ITERATION_START_1 >= 860 +# define BOOST_PP_ITERATION_1 860 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 859 && BOOST_PP_ITERATION_START_1 >= 859 +# define BOOST_PP_ITERATION_1 859 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 858 && BOOST_PP_ITERATION_START_1 >= 858 +# define BOOST_PP_ITERATION_1 858 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 857 && BOOST_PP_ITERATION_START_1 >= 857 +# define BOOST_PP_ITERATION_1 857 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 856 && BOOST_PP_ITERATION_START_1 >= 856 +# define BOOST_PP_ITERATION_1 856 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 855 && BOOST_PP_ITERATION_START_1 >= 855 +# define BOOST_PP_ITERATION_1 855 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 854 && BOOST_PP_ITERATION_START_1 >= 854 +# define BOOST_PP_ITERATION_1 854 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 853 && BOOST_PP_ITERATION_START_1 >= 853 +# define BOOST_PP_ITERATION_1 853 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 852 && BOOST_PP_ITERATION_START_1 >= 852 +# define BOOST_PP_ITERATION_1 852 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 851 && BOOST_PP_ITERATION_START_1 >= 851 +# define BOOST_PP_ITERATION_1 851 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 850 && BOOST_PP_ITERATION_START_1 >= 850 +# define BOOST_PP_ITERATION_1 850 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 849 && BOOST_PP_ITERATION_START_1 >= 849 +# define BOOST_PP_ITERATION_1 849 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 848 && BOOST_PP_ITERATION_START_1 >= 848 +# define BOOST_PP_ITERATION_1 848 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 847 && BOOST_PP_ITERATION_START_1 >= 847 +# define BOOST_PP_ITERATION_1 847 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 846 && BOOST_PP_ITERATION_START_1 >= 846 +# define BOOST_PP_ITERATION_1 846 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 845 && BOOST_PP_ITERATION_START_1 >= 845 +# define BOOST_PP_ITERATION_1 845 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 844 && BOOST_PP_ITERATION_START_1 >= 844 +# define BOOST_PP_ITERATION_1 844 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 843 && BOOST_PP_ITERATION_START_1 >= 843 +# define BOOST_PP_ITERATION_1 843 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 842 && BOOST_PP_ITERATION_START_1 >= 842 +# define BOOST_PP_ITERATION_1 842 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 841 && BOOST_PP_ITERATION_START_1 >= 841 +# define BOOST_PP_ITERATION_1 841 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 840 && BOOST_PP_ITERATION_START_1 >= 840 +# define BOOST_PP_ITERATION_1 840 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 839 && BOOST_PP_ITERATION_START_1 >= 839 +# define BOOST_PP_ITERATION_1 839 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 838 && BOOST_PP_ITERATION_START_1 >= 838 +# define BOOST_PP_ITERATION_1 838 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 837 && BOOST_PP_ITERATION_START_1 >= 837 +# define BOOST_PP_ITERATION_1 837 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 836 && BOOST_PP_ITERATION_START_1 >= 836 +# define BOOST_PP_ITERATION_1 836 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 835 && BOOST_PP_ITERATION_START_1 >= 835 +# define BOOST_PP_ITERATION_1 835 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 834 && BOOST_PP_ITERATION_START_1 >= 834 +# define BOOST_PP_ITERATION_1 834 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 833 && BOOST_PP_ITERATION_START_1 >= 833 +# define BOOST_PP_ITERATION_1 833 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 832 && BOOST_PP_ITERATION_START_1 >= 832 +# define BOOST_PP_ITERATION_1 832 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 831 && BOOST_PP_ITERATION_START_1 >= 831 +# define BOOST_PP_ITERATION_1 831 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 830 && BOOST_PP_ITERATION_START_1 >= 830 +# define BOOST_PP_ITERATION_1 830 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 829 && BOOST_PP_ITERATION_START_1 >= 829 +# define BOOST_PP_ITERATION_1 829 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 828 && BOOST_PP_ITERATION_START_1 >= 828 +# define BOOST_PP_ITERATION_1 828 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 827 && BOOST_PP_ITERATION_START_1 >= 827 +# define BOOST_PP_ITERATION_1 827 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 826 && BOOST_PP_ITERATION_START_1 >= 826 +# define BOOST_PP_ITERATION_1 826 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 825 && BOOST_PP_ITERATION_START_1 >= 825 +# define BOOST_PP_ITERATION_1 825 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 824 && BOOST_PP_ITERATION_START_1 >= 824 +# define BOOST_PP_ITERATION_1 824 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 823 && BOOST_PP_ITERATION_START_1 >= 823 +# define BOOST_PP_ITERATION_1 823 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 822 && BOOST_PP_ITERATION_START_1 >= 822 +# define BOOST_PP_ITERATION_1 822 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 821 && BOOST_PP_ITERATION_START_1 >= 821 +# define BOOST_PP_ITERATION_1 821 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 820 && BOOST_PP_ITERATION_START_1 >= 820 +# define BOOST_PP_ITERATION_1 820 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 819 && BOOST_PP_ITERATION_START_1 >= 819 +# define BOOST_PP_ITERATION_1 819 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 818 && BOOST_PP_ITERATION_START_1 >= 818 +# define BOOST_PP_ITERATION_1 818 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 817 && BOOST_PP_ITERATION_START_1 >= 817 +# define BOOST_PP_ITERATION_1 817 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 816 && BOOST_PP_ITERATION_START_1 >= 816 +# define BOOST_PP_ITERATION_1 816 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 815 && BOOST_PP_ITERATION_START_1 >= 815 +# define BOOST_PP_ITERATION_1 815 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 814 && BOOST_PP_ITERATION_START_1 >= 814 +# define BOOST_PP_ITERATION_1 814 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 813 && BOOST_PP_ITERATION_START_1 >= 813 +# define BOOST_PP_ITERATION_1 813 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 812 && BOOST_PP_ITERATION_START_1 >= 812 +# define BOOST_PP_ITERATION_1 812 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 811 && BOOST_PP_ITERATION_START_1 >= 811 +# define BOOST_PP_ITERATION_1 811 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 810 && BOOST_PP_ITERATION_START_1 >= 810 +# define BOOST_PP_ITERATION_1 810 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 809 && BOOST_PP_ITERATION_START_1 >= 809 +# define BOOST_PP_ITERATION_1 809 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 808 && BOOST_PP_ITERATION_START_1 >= 808 +# define BOOST_PP_ITERATION_1 808 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 807 && BOOST_PP_ITERATION_START_1 >= 807 +# define BOOST_PP_ITERATION_1 807 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 806 && BOOST_PP_ITERATION_START_1 >= 806 +# define BOOST_PP_ITERATION_1 806 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 805 && BOOST_PP_ITERATION_START_1 >= 805 +# define BOOST_PP_ITERATION_1 805 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 804 && BOOST_PP_ITERATION_START_1 >= 804 +# define BOOST_PP_ITERATION_1 804 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 803 && BOOST_PP_ITERATION_START_1 >= 803 +# define BOOST_PP_ITERATION_1 803 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 802 && BOOST_PP_ITERATION_START_1 >= 802 +# define BOOST_PP_ITERATION_1 802 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 801 && BOOST_PP_ITERATION_START_1 >= 801 +# define BOOST_PP_ITERATION_1 801 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 800 && BOOST_PP_ITERATION_START_1 >= 800 +# define BOOST_PP_ITERATION_1 800 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 799 && BOOST_PP_ITERATION_START_1 >= 799 +# define BOOST_PP_ITERATION_1 799 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 798 && BOOST_PP_ITERATION_START_1 >= 798 +# define BOOST_PP_ITERATION_1 798 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 797 && BOOST_PP_ITERATION_START_1 >= 797 +# define BOOST_PP_ITERATION_1 797 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 796 && BOOST_PP_ITERATION_START_1 >= 796 +# define BOOST_PP_ITERATION_1 796 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 795 && BOOST_PP_ITERATION_START_1 >= 795 +# define BOOST_PP_ITERATION_1 795 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 794 && BOOST_PP_ITERATION_START_1 >= 794 +# define BOOST_PP_ITERATION_1 794 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 793 && BOOST_PP_ITERATION_START_1 >= 793 +# define BOOST_PP_ITERATION_1 793 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 792 && BOOST_PP_ITERATION_START_1 >= 792 +# define BOOST_PP_ITERATION_1 792 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 791 && BOOST_PP_ITERATION_START_1 >= 791 +# define BOOST_PP_ITERATION_1 791 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 790 && BOOST_PP_ITERATION_START_1 >= 790 +# define BOOST_PP_ITERATION_1 790 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 789 && BOOST_PP_ITERATION_START_1 >= 789 +# define BOOST_PP_ITERATION_1 789 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 788 && BOOST_PP_ITERATION_START_1 >= 788 +# define BOOST_PP_ITERATION_1 788 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 787 && BOOST_PP_ITERATION_START_1 >= 787 +# define BOOST_PP_ITERATION_1 787 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 786 && BOOST_PP_ITERATION_START_1 >= 786 +# define BOOST_PP_ITERATION_1 786 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 785 && BOOST_PP_ITERATION_START_1 >= 785 +# define BOOST_PP_ITERATION_1 785 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 784 && BOOST_PP_ITERATION_START_1 >= 784 +# define BOOST_PP_ITERATION_1 784 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 783 && BOOST_PP_ITERATION_START_1 >= 783 +# define BOOST_PP_ITERATION_1 783 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 782 && BOOST_PP_ITERATION_START_1 >= 782 +# define BOOST_PP_ITERATION_1 782 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 781 && BOOST_PP_ITERATION_START_1 >= 781 +# define BOOST_PP_ITERATION_1 781 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 780 && BOOST_PP_ITERATION_START_1 >= 780 +# define BOOST_PP_ITERATION_1 780 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 779 && BOOST_PP_ITERATION_START_1 >= 779 +# define BOOST_PP_ITERATION_1 779 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 778 && BOOST_PP_ITERATION_START_1 >= 778 +# define BOOST_PP_ITERATION_1 778 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 777 && BOOST_PP_ITERATION_START_1 >= 777 +# define BOOST_PP_ITERATION_1 777 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 776 && BOOST_PP_ITERATION_START_1 >= 776 +# define BOOST_PP_ITERATION_1 776 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 775 && BOOST_PP_ITERATION_START_1 >= 775 +# define BOOST_PP_ITERATION_1 775 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 774 && BOOST_PP_ITERATION_START_1 >= 774 +# define BOOST_PP_ITERATION_1 774 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 773 && BOOST_PP_ITERATION_START_1 >= 773 +# define BOOST_PP_ITERATION_1 773 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 772 && BOOST_PP_ITERATION_START_1 >= 772 +# define BOOST_PP_ITERATION_1 772 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 771 && BOOST_PP_ITERATION_START_1 >= 771 +# define BOOST_PP_ITERATION_1 771 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 770 && BOOST_PP_ITERATION_START_1 >= 770 +# define BOOST_PP_ITERATION_1 770 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 769 && BOOST_PP_ITERATION_START_1 >= 769 +# define BOOST_PP_ITERATION_1 769 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 768 && BOOST_PP_ITERATION_START_1 >= 768 +# define BOOST_PP_ITERATION_1 768 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 767 && BOOST_PP_ITERATION_START_1 >= 767 +# define BOOST_PP_ITERATION_1 767 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 766 && BOOST_PP_ITERATION_START_1 >= 766 +# define BOOST_PP_ITERATION_1 766 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 765 && BOOST_PP_ITERATION_START_1 >= 765 +# define BOOST_PP_ITERATION_1 765 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 764 && BOOST_PP_ITERATION_START_1 >= 764 +# define BOOST_PP_ITERATION_1 764 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 763 && BOOST_PP_ITERATION_START_1 >= 763 +# define BOOST_PP_ITERATION_1 763 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 762 && BOOST_PP_ITERATION_START_1 >= 762 +# define BOOST_PP_ITERATION_1 762 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 761 && BOOST_PP_ITERATION_START_1 >= 761 +# define BOOST_PP_ITERATION_1 761 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 760 && BOOST_PP_ITERATION_START_1 >= 760 +# define BOOST_PP_ITERATION_1 760 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 759 && BOOST_PP_ITERATION_START_1 >= 759 +# define BOOST_PP_ITERATION_1 759 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 758 && BOOST_PP_ITERATION_START_1 >= 758 +# define BOOST_PP_ITERATION_1 758 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 757 && BOOST_PP_ITERATION_START_1 >= 757 +# define BOOST_PP_ITERATION_1 757 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 756 && BOOST_PP_ITERATION_START_1 >= 756 +# define BOOST_PP_ITERATION_1 756 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 755 && BOOST_PP_ITERATION_START_1 >= 755 +# define BOOST_PP_ITERATION_1 755 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 754 && BOOST_PP_ITERATION_START_1 >= 754 +# define BOOST_PP_ITERATION_1 754 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 753 && BOOST_PP_ITERATION_START_1 >= 753 +# define BOOST_PP_ITERATION_1 753 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 752 && BOOST_PP_ITERATION_START_1 >= 752 +# define BOOST_PP_ITERATION_1 752 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 751 && BOOST_PP_ITERATION_START_1 >= 751 +# define BOOST_PP_ITERATION_1 751 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 750 && BOOST_PP_ITERATION_START_1 >= 750 +# define BOOST_PP_ITERATION_1 750 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 749 && BOOST_PP_ITERATION_START_1 >= 749 +# define BOOST_PP_ITERATION_1 749 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 748 && BOOST_PP_ITERATION_START_1 >= 748 +# define BOOST_PP_ITERATION_1 748 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 747 && BOOST_PP_ITERATION_START_1 >= 747 +# define BOOST_PP_ITERATION_1 747 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 746 && BOOST_PP_ITERATION_START_1 >= 746 +# define BOOST_PP_ITERATION_1 746 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 745 && BOOST_PP_ITERATION_START_1 >= 745 +# define BOOST_PP_ITERATION_1 745 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 744 && BOOST_PP_ITERATION_START_1 >= 744 +# define BOOST_PP_ITERATION_1 744 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 743 && BOOST_PP_ITERATION_START_1 >= 743 +# define BOOST_PP_ITERATION_1 743 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 742 && BOOST_PP_ITERATION_START_1 >= 742 +# define BOOST_PP_ITERATION_1 742 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 741 && BOOST_PP_ITERATION_START_1 >= 741 +# define BOOST_PP_ITERATION_1 741 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 740 && BOOST_PP_ITERATION_START_1 >= 740 +# define BOOST_PP_ITERATION_1 740 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 739 && BOOST_PP_ITERATION_START_1 >= 739 +# define BOOST_PP_ITERATION_1 739 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 738 && BOOST_PP_ITERATION_START_1 >= 738 +# define BOOST_PP_ITERATION_1 738 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 737 && BOOST_PP_ITERATION_START_1 >= 737 +# define BOOST_PP_ITERATION_1 737 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 736 && BOOST_PP_ITERATION_START_1 >= 736 +# define BOOST_PP_ITERATION_1 736 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 735 && BOOST_PP_ITERATION_START_1 >= 735 +# define BOOST_PP_ITERATION_1 735 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 734 && BOOST_PP_ITERATION_START_1 >= 734 +# define BOOST_PP_ITERATION_1 734 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 733 && BOOST_PP_ITERATION_START_1 >= 733 +# define BOOST_PP_ITERATION_1 733 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 732 && BOOST_PP_ITERATION_START_1 >= 732 +# define BOOST_PP_ITERATION_1 732 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 731 && BOOST_PP_ITERATION_START_1 >= 731 +# define BOOST_PP_ITERATION_1 731 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 730 && BOOST_PP_ITERATION_START_1 >= 730 +# define BOOST_PP_ITERATION_1 730 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 729 && BOOST_PP_ITERATION_START_1 >= 729 +# define BOOST_PP_ITERATION_1 729 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 728 && BOOST_PP_ITERATION_START_1 >= 728 +# define BOOST_PP_ITERATION_1 728 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 727 && BOOST_PP_ITERATION_START_1 >= 727 +# define BOOST_PP_ITERATION_1 727 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 726 && BOOST_PP_ITERATION_START_1 >= 726 +# define BOOST_PP_ITERATION_1 726 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 725 && BOOST_PP_ITERATION_START_1 >= 725 +# define BOOST_PP_ITERATION_1 725 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 724 && BOOST_PP_ITERATION_START_1 >= 724 +# define BOOST_PP_ITERATION_1 724 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 723 && BOOST_PP_ITERATION_START_1 >= 723 +# define BOOST_PP_ITERATION_1 723 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 722 && BOOST_PP_ITERATION_START_1 >= 722 +# define BOOST_PP_ITERATION_1 722 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 721 && BOOST_PP_ITERATION_START_1 >= 721 +# define BOOST_PP_ITERATION_1 721 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 720 && BOOST_PP_ITERATION_START_1 >= 720 +# define BOOST_PP_ITERATION_1 720 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 719 && BOOST_PP_ITERATION_START_1 >= 719 +# define BOOST_PP_ITERATION_1 719 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 718 && BOOST_PP_ITERATION_START_1 >= 718 +# define BOOST_PP_ITERATION_1 718 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 717 && BOOST_PP_ITERATION_START_1 >= 717 +# define BOOST_PP_ITERATION_1 717 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 716 && BOOST_PP_ITERATION_START_1 >= 716 +# define BOOST_PP_ITERATION_1 716 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 715 && BOOST_PP_ITERATION_START_1 >= 715 +# define BOOST_PP_ITERATION_1 715 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 714 && BOOST_PP_ITERATION_START_1 >= 714 +# define BOOST_PP_ITERATION_1 714 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 713 && BOOST_PP_ITERATION_START_1 >= 713 +# define BOOST_PP_ITERATION_1 713 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 712 && BOOST_PP_ITERATION_START_1 >= 712 +# define BOOST_PP_ITERATION_1 712 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 711 && BOOST_PP_ITERATION_START_1 >= 711 +# define BOOST_PP_ITERATION_1 711 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 710 && BOOST_PP_ITERATION_START_1 >= 710 +# define BOOST_PP_ITERATION_1 710 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 709 && BOOST_PP_ITERATION_START_1 >= 709 +# define BOOST_PP_ITERATION_1 709 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 708 && BOOST_PP_ITERATION_START_1 >= 708 +# define BOOST_PP_ITERATION_1 708 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 707 && BOOST_PP_ITERATION_START_1 >= 707 +# define BOOST_PP_ITERATION_1 707 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 706 && BOOST_PP_ITERATION_START_1 >= 706 +# define BOOST_PP_ITERATION_1 706 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 705 && BOOST_PP_ITERATION_START_1 >= 705 +# define BOOST_PP_ITERATION_1 705 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 704 && BOOST_PP_ITERATION_START_1 >= 704 +# define BOOST_PP_ITERATION_1 704 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 703 && BOOST_PP_ITERATION_START_1 >= 703 +# define BOOST_PP_ITERATION_1 703 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 702 && BOOST_PP_ITERATION_START_1 >= 702 +# define BOOST_PP_ITERATION_1 702 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 701 && BOOST_PP_ITERATION_START_1 >= 701 +# define BOOST_PP_ITERATION_1 701 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 700 && BOOST_PP_ITERATION_START_1 >= 700 +# define BOOST_PP_ITERATION_1 700 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 699 && BOOST_PP_ITERATION_START_1 >= 699 +# define BOOST_PP_ITERATION_1 699 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 698 && BOOST_PP_ITERATION_START_1 >= 698 +# define BOOST_PP_ITERATION_1 698 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 697 && BOOST_PP_ITERATION_START_1 >= 697 +# define BOOST_PP_ITERATION_1 697 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 696 && BOOST_PP_ITERATION_START_1 >= 696 +# define BOOST_PP_ITERATION_1 696 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 695 && BOOST_PP_ITERATION_START_1 >= 695 +# define BOOST_PP_ITERATION_1 695 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 694 && BOOST_PP_ITERATION_START_1 >= 694 +# define BOOST_PP_ITERATION_1 694 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 693 && BOOST_PP_ITERATION_START_1 >= 693 +# define BOOST_PP_ITERATION_1 693 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 692 && BOOST_PP_ITERATION_START_1 >= 692 +# define BOOST_PP_ITERATION_1 692 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 691 && BOOST_PP_ITERATION_START_1 >= 691 +# define BOOST_PP_ITERATION_1 691 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 690 && BOOST_PP_ITERATION_START_1 >= 690 +# define BOOST_PP_ITERATION_1 690 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 689 && BOOST_PP_ITERATION_START_1 >= 689 +# define BOOST_PP_ITERATION_1 689 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 688 && BOOST_PP_ITERATION_START_1 >= 688 +# define BOOST_PP_ITERATION_1 688 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 687 && BOOST_PP_ITERATION_START_1 >= 687 +# define BOOST_PP_ITERATION_1 687 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 686 && BOOST_PP_ITERATION_START_1 >= 686 +# define BOOST_PP_ITERATION_1 686 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 685 && BOOST_PP_ITERATION_START_1 >= 685 +# define BOOST_PP_ITERATION_1 685 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 684 && BOOST_PP_ITERATION_START_1 >= 684 +# define BOOST_PP_ITERATION_1 684 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 683 && BOOST_PP_ITERATION_START_1 >= 683 +# define BOOST_PP_ITERATION_1 683 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 682 && BOOST_PP_ITERATION_START_1 >= 682 +# define BOOST_PP_ITERATION_1 682 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 681 && BOOST_PP_ITERATION_START_1 >= 681 +# define BOOST_PP_ITERATION_1 681 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 680 && BOOST_PP_ITERATION_START_1 >= 680 +# define BOOST_PP_ITERATION_1 680 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 679 && BOOST_PP_ITERATION_START_1 >= 679 +# define BOOST_PP_ITERATION_1 679 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 678 && BOOST_PP_ITERATION_START_1 >= 678 +# define BOOST_PP_ITERATION_1 678 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 677 && BOOST_PP_ITERATION_START_1 >= 677 +# define BOOST_PP_ITERATION_1 677 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 676 && BOOST_PP_ITERATION_START_1 >= 676 +# define BOOST_PP_ITERATION_1 676 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 675 && BOOST_PP_ITERATION_START_1 >= 675 +# define BOOST_PP_ITERATION_1 675 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 674 && BOOST_PP_ITERATION_START_1 >= 674 +# define BOOST_PP_ITERATION_1 674 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 673 && BOOST_PP_ITERATION_START_1 >= 673 +# define BOOST_PP_ITERATION_1 673 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 672 && BOOST_PP_ITERATION_START_1 >= 672 +# define BOOST_PP_ITERATION_1 672 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 671 && BOOST_PP_ITERATION_START_1 >= 671 +# define BOOST_PP_ITERATION_1 671 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 670 && BOOST_PP_ITERATION_START_1 >= 670 +# define BOOST_PP_ITERATION_1 670 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 669 && BOOST_PP_ITERATION_START_1 >= 669 +# define BOOST_PP_ITERATION_1 669 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 668 && BOOST_PP_ITERATION_START_1 >= 668 +# define BOOST_PP_ITERATION_1 668 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 667 && BOOST_PP_ITERATION_START_1 >= 667 +# define BOOST_PP_ITERATION_1 667 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 666 && BOOST_PP_ITERATION_START_1 >= 666 +# define BOOST_PP_ITERATION_1 666 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 665 && BOOST_PP_ITERATION_START_1 >= 665 +# define BOOST_PP_ITERATION_1 665 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 664 && BOOST_PP_ITERATION_START_1 >= 664 +# define BOOST_PP_ITERATION_1 664 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 663 && BOOST_PP_ITERATION_START_1 >= 663 +# define BOOST_PP_ITERATION_1 663 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 662 && BOOST_PP_ITERATION_START_1 >= 662 +# define BOOST_PP_ITERATION_1 662 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 661 && BOOST_PP_ITERATION_START_1 >= 661 +# define BOOST_PP_ITERATION_1 661 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 660 && BOOST_PP_ITERATION_START_1 >= 660 +# define BOOST_PP_ITERATION_1 660 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 659 && BOOST_PP_ITERATION_START_1 >= 659 +# define BOOST_PP_ITERATION_1 659 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 658 && BOOST_PP_ITERATION_START_1 >= 658 +# define BOOST_PP_ITERATION_1 658 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 657 && BOOST_PP_ITERATION_START_1 >= 657 +# define BOOST_PP_ITERATION_1 657 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 656 && BOOST_PP_ITERATION_START_1 >= 656 +# define BOOST_PP_ITERATION_1 656 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 655 && BOOST_PP_ITERATION_START_1 >= 655 +# define BOOST_PP_ITERATION_1 655 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 654 && BOOST_PP_ITERATION_START_1 >= 654 +# define BOOST_PP_ITERATION_1 654 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 653 && BOOST_PP_ITERATION_START_1 >= 653 +# define BOOST_PP_ITERATION_1 653 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 652 && BOOST_PP_ITERATION_START_1 >= 652 +# define BOOST_PP_ITERATION_1 652 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 651 && BOOST_PP_ITERATION_START_1 >= 651 +# define BOOST_PP_ITERATION_1 651 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 650 && BOOST_PP_ITERATION_START_1 >= 650 +# define BOOST_PP_ITERATION_1 650 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 649 && BOOST_PP_ITERATION_START_1 >= 649 +# define BOOST_PP_ITERATION_1 649 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 648 && BOOST_PP_ITERATION_START_1 >= 648 +# define BOOST_PP_ITERATION_1 648 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 647 && BOOST_PP_ITERATION_START_1 >= 647 +# define BOOST_PP_ITERATION_1 647 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 646 && BOOST_PP_ITERATION_START_1 >= 646 +# define BOOST_PP_ITERATION_1 646 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 645 && BOOST_PP_ITERATION_START_1 >= 645 +# define BOOST_PP_ITERATION_1 645 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 644 && BOOST_PP_ITERATION_START_1 >= 644 +# define BOOST_PP_ITERATION_1 644 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 643 && BOOST_PP_ITERATION_START_1 >= 643 +# define BOOST_PP_ITERATION_1 643 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 642 && BOOST_PP_ITERATION_START_1 >= 642 +# define BOOST_PP_ITERATION_1 642 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 641 && BOOST_PP_ITERATION_START_1 >= 641 +# define BOOST_PP_ITERATION_1 641 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 640 && BOOST_PP_ITERATION_START_1 >= 640 +# define BOOST_PP_ITERATION_1 640 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 639 && BOOST_PP_ITERATION_START_1 >= 639 +# define BOOST_PP_ITERATION_1 639 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 638 && BOOST_PP_ITERATION_START_1 >= 638 +# define BOOST_PP_ITERATION_1 638 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 637 && BOOST_PP_ITERATION_START_1 >= 637 +# define BOOST_PP_ITERATION_1 637 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 636 && BOOST_PP_ITERATION_START_1 >= 636 +# define BOOST_PP_ITERATION_1 636 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 635 && BOOST_PP_ITERATION_START_1 >= 635 +# define BOOST_PP_ITERATION_1 635 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 634 && BOOST_PP_ITERATION_START_1 >= 634 +# define BOOST_PP_ITERATION_1 634 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 633 && BOOST_PP_ITERATION_START_1 >= 633 +# define BOOST_PP_ITERATION_1 633 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 632 && BOOST_PP_ITERATION_START_1 >= 632 +# define BOOST_PP_ITERATION_1 632 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 631 && BOOST_PP_ITERATION_START_1 >= 631 +# define BOOST_PP_ITERATION_1 631 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 630 && BOOST_PP_ITERATION_START_1 >= 630 +# define BOOST_PP_ITERATION_1 630 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 629 && BOOST_PP_ITERATION_START_1 >= 629 +# define BOOST_PP_ITERATION_1 629 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 628 && BOOST_PP_ITERATION_START_1 >= 628 +# define BOOST_PP_ITERATION_1 628 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 627 && BOOST_PP_ITERATION_START_1 >= 627 +# define BOOST_PP_ITERATION_1 627 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 626 && BOOST_PP_ITERATION_START_1 >= 626 +# define BOOST_PP_ITERATION_1 626 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 625 && BOOST_PP_ITERATION_START_1 >= 625 +# define BOOST_PP_ITERATION_1 625 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 624 && BOOST_PP_ITERATION_START_1 >= 624 +# define BOOST_PP_ITERATION_1 624 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 623 && BOOST_PP_ITERATION_START_1 >= 623 +# define BOOST_PP_ITERATION_1 623 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 622 && BOOST_PP_ITERATION_START_1 >= 622 +# define BOOST_PP_ITERATION_1 622 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 621 && BOOST_PP_ITERATION_START_1 >= 621 +# define BOOST_PP_ITERATION_1 621 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 620 && BOOST_PP_ITERATION_START_1 >= 620 +# define BOOST_PP_ITERATION_1 620 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 619 && BOOST_PP_ITERATION_START_1 >= 619 +# define BOOST_PP_ITERATION_1 619 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 618 && BOOST_PP_ITERATION_START_1 >= 618 +# define BOOST_PP_ITERATION_1 618 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 617 && BOOST_PP_ITERATION_START_1 >= 617 +# define BOOST_PP_ITERATION_1 617 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 616 && BOOST_PP_ITERATION_START_1 >= 616 +# define BOOST_PP_ITERATION_1 616 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 615 && BOOST_PP_ITERATION_START_1 >= 615 +# define BOOST_PP_ITERATION_1 615 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 614 && BOOST_PP_ITERATION_START_1 >= 614 +# define BOOST_PP_ITERATION_1 614 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 613 && BOOST_PP_ITERATION_START_1 >= 613 +# define BOOST_PP_ITERATION_1 613 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 612 && BOOST_PP_ITERATION_START_1 >= 612 +# define BOOST_PP_ITERATION_1 612 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 611 && BOOST_PP_ITERATION_START_1 >= 611 +# define BOOST_PP_ITERATION_1 611 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 610 && BOOST_PP_ITERATION_START_1 >= 610 +# define BOOST_PP_ITERATION_1 610 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 609 && BOOST_PP_ITERATION_START_1 >= 609 +# define BOOST_PP_ITERATION_1 609 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 608 && BOOST_PP_ITERATION_START_1 >= 608 +# define BOOST_PP_ITERATION_1 608 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 607 && BOOST_PP_ITERATION_START_1 >= 607 +# define BOOST_PP_ITERATION_1 607 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 606 && BOOST_PP_ITERATION_START_1 >= 606 +# define BOOST_PP_ITERATION_1 606 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 605 && BOOST_PP_ITERATION_START_1 >= 605 +# define BOOST_PP_ITERATION_1 605 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 604 && BOOST_PP_ITERATION_START_1 >= 604 +# define BOOST_PP_ITERATION_1 604 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 603 && BOOST_PP_ITERATION_START_1 >= 603 +# define BOOST_PP_ITERATION_1 603 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 602 && BOOST_PP_ITERATION_START_1 >= 602 +# define BOOST_PP_ITERATION_1 602 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 601 && BOOST_PP_ITERATION_START_1 >= 601 +# define BOOST_PP_ITERATION_1 601 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 600 && BOOST_PP_ITERATION_START_1 >= 600 +# define BOOST_PP_ITERATION_1 600 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 599 && BOOST_PP_ITERATION_START_1 >= 599 +# define BOOST_PP_ITERATION_1 599 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 598 && BOOST_PP_ITERATION_START_1 >= 598 +# define BOOST_PP_ITERATION_1 598 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 597 && BOOST_PP_ITERATION_START_1 >= 597 +# define BOOST_PP_ITERATION_1 597 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 596 && BOOST_PP_ITERATION_START_1 >= 596 +# define BOOST_PP_ITERATION_1 596 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 595 && BOOST_PP_ITERATION_START_1 >= 595 +# define BOOST_PP_ITERATION_1 595 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 594 && BOOST_PP_ITERATION_START_1 >= 594 +# define BOOST_PP_ITERATION_1 594 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 593 && BOOST_PP_ITERATION_START_1 >= 593 +# define BOOST_PP_ITERATION_1 593 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 592 && BOOST_PP_ITERATION_START_1 >= 592 +# define BOOST_PP_ITERATION_1 592 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 591 && BOOST_PP_ITERATION_START_1 >= 591 +# define BOOST_PP_ITERATION_1 591 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 590 && BOOST_PP_ITERATION_START_1 >= 590 +# define BOOST_PP_ITERATION_1 590 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 589 && BOOST_PP_ITERATION_START_1 >= 589 +# define BOOST_PP_ITERATION_1 589 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 588 && BOOST_PP_ITERATION_START_1 >= 588 +# define BOOST_PP_ITERATION_1 588 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 587 && BOOST_PP_ITERATION_START_1 >= 587 +# define BOOST_PP_ITERATION_1 587 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 586 && BOOST_PP_ITERATION_START_1 >= 586 +# define BOOST_PP_ITERATION_1 586 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 585 && BOOST_PP_ITERATION_START_1 >= 585 +# define BOOST_PP_ITERATION_1 585 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 584 && BOOST_PP_ITERATION_START_1 >= 584 +# define BOOST_PP_ITERATION_1 584 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 583 && BOOST_PP_ITERATION_START_1 >= 583 +# define BOOST_PP_ITERATION_1 583 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 582 && BOOST_PP_ITERATION_START_1 >= 582 +# define BOOST_PP_ITERATION_1 582 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 581 && BOOST_PP_ITERATION_START_1 >= 581 +# define BOOST_PP_ITERATION_1 581 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 580 && BOOST_PP_ITERATION_START_1 >= 580 +# define BOOST_PP_ITERATION_1 580 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 579 && BOOST_PP_ITERATION_START_1 >= 579 +# define BOOST_PP_ITERATION_1 579 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 578 && BOOST_PP_ITERATION_START_1 >= 578 +# define BOOST_PP_ITERATION_1 578 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 577 && BOOST_PP_ITERATION_START_1 >= 577 +# define BOOST_PP_ITERATION_1 577 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 576 && BOOST_PP_ITERATION_START_1 >= 576 +# define BOOST_PP_ITERATION_1 576 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 575 && BOOST_PP_ITERATION_START_1 >= 575 +# define BOOST_PP_ITERATION_1 575 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 574 && BOOST_PP_ITERATION_START_1 >= 574 +# define BOOST_PP_ITERATION_1 574 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 573 && BOOST_PP_ITERATION_START_1 >= 573 +# define BOOST_PP_ITERATION_1 573 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 572 && BOOST_PP_ITERATION_START_1 >= 572 +# define BOOST_PP_ITERATION_1 572 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 571 && BOOST_PP_ITERATION_START_1 >= 571 +# define BOOST_PP_ITERATION_1 571 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 570 && BOOST_PP_ITERATION_START_1 >= 570 +# define BOOST_PP_ITERATION_1 570 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 569 && BOOST_PP_ITERATION_START_1 >= 569 +# define BOOST_PP_ITERATION_1 569 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 568 && BOOST_PP_ITERATION_START_1 >= 568 +# define BOOST_PP_ITERATION_1 568 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 567 && BOOST_PP_ITERATION_START_1 >= 567 +# define BOOST_PP_ITERATION_1 567 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 566 && BOOST_PP_ITERATION_START_1 >= 566 +# define BOOST_PP_ITERATION_1 566 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 565 && BOOST_PP_ITERATION_START_1 >= 565 +# define BOOST_PP_ITERATION_1 565 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 564 && BOOST_PP_ITERATION_START_1 >= 564 +# define BOOST_PP_ITERATION_1 564 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 563 && BOOST_PP_ITERATION_START_1 >= 563 +# define BOOST_PP_ITERATION_1 563 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 562 && BOOST_PP_ITERATION_START_1 >= 562 +# define BOOST_PP_ITERATION_1 562 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 561 && BOOST_PP_ITERATION_START_1 >= 561 +# define BOOST_PP_ITERATION_1 561 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 560 && BOOST_PP_ITERATION_START_1 >= 560 +# define BOOST_PP_ITERATION_1 560 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 559 && BOOST_PP_ITERATION_START_1 >= 559 +# define BOOST_PP_ITERATION_1 559 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 558 && BOOST_PP_ITERATION_START_1 >= 558 +# define BOOST_PP_ITERATION_1 558 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 557 && BOOST_PP_ITERATION_START_1 >= 557 +# define BOOST_PP_ITERATION_1 557 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 556 && BOOST_PP_ITERATION_START_1 >= 556 +# define BOOST_PP_ITERATION_1 556 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 555 && BOOST_PP_ITERATION_START_1 >= 555 +# define BOOST_PP_ITERATION_1 555 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 554 && BOOST_PP_ITERATION_START_1 >= 554 +# define BOOST_PP_ITERATION_1 554 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 553 && BOOST_PP_ITERATION_START_1 >= 553 +# define BOOST_PP_ITERATION_1 553 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 552 && BOOST_PP_ITERATION_START_1 >= 552 +# define BOOST_PP_ITERATION_1 552 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 551 && BOOST_PP_ITERATION_START_1 >= 551 +# define BOOST_PP_ITERATION_1 551 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 550 && BOOST_PP_ITERATION_START_1 >= 550 +# define BOOST_PP_ITERATION_1 550 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 549 && BOOST_PP_ITERATION_START_1 >= 549 +# define BOOST_PP_ITERATION_1 549 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 548 && BOOST_PP_ITERATION_START_1 >= 548 +# define BOOST_PP_ITERATION_1 548 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 547 && BOOST_PP_ITERATION_START_1 >= 547 +# define BOOST_PP_ITERATION_1 547 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 546 && BOOST_PP_ITERATION_START_1 >= 546 +# define BOOST_PP_ITERATION_1 546 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 545 && BOOST_PP_ITERATION_START_1 >= 545 +# define BOOST_PP_ITERATION_1 545 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 544 && BOOST_PP_ITERATION_START_1 >= 544 +# define BOOST_PP_ITERATION_1 544 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 543 && BOOST_PP_ITERATION_START_1 >= 543 +# define BOOST_PP_ITERATION_1 543 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 542 && BOOST_PP_ITERATION_START_1 >= 542 +# define BOOST_PP_ITERATION_1 542 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 541 && BOOST_PP_ITERATION_START_1 >= 541 +# define BOOST_PP_ITERATION_1 541 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 540 && BOOST_PP_ITERATION_START_1 >= 540 +# define BOOST_PP_ITERATION_1 540 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 539 && BOOST_PP_ITERATION_START_1 >= 539 +# define BOOST_PP_ITERATION_1 539 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 538 && BOOST_PP_ITERATION_START_1 >= 538 +# define BOOST_PP_ITERATION_1 538 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 537 && BOOST_PP_ITERATION_START_1 >= 537 +# define BOOST_PP_ITERATION_1 537 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 536 && BOOST_PP_ITERATION_START_1 >= 536 +# define BOOST_PP_ITERATION_1 536 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 535 && BOOST_PP_ITERATION_START_1 >= 535 +# define BOOST_PP_ITERATION_1 535 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 534 && BOOST_PP_ITERATION_START_1 >= 534 +# define BOOST_PP_ITERATION_1 534 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 533 && BOOST_PP_ITERATION_START_1 >= 533 +# define BOOST_PP_ITERATION_1 533 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 532 && BOOST_PP_ITERATION_START_1 >= 532 +# define BOOST_PP_ITERATION_1 532 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 531 && BOOST_PP_ITERATION_START_1 >= 531 +# define BOOST_PP_ITERATION_1 531 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 530 && BOOST_PP_ITERATION_START_1 >= 530 +# define BOOST_PP_ITERATION_1 530 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 529 && BOOST_PP_ITERATION_START_1 >= 529 +# define BOOST_PP_ITERATION_1 529 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 528 && BOOST_PP_ITERATION_START_1 >= 528 +# define BOOST_PP_ITERATION_1 528 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 527 && BOOST_PP_ITERATION_START_1 >= 527 +# define BOOST_PP_ITERATION_1 527 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 526 && BOOST_PP_ITERATION_START_1 >= 526 +# define BOOST_PP_ITERATION_1 526 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 525 && BOOST_PP_ITERATION_START_1 >= 525 +# define BOOST_PP_ITERATION_1 525 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 524 && BOOST_PP_ITERATION_START_1 >= 524 +# define BOOST_PP_ITERATION_1 524 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 523 && BOOST_PP_ITERATION_START_1 >= 523 +# define BOOST_PP_ITERATION_1 523 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 522 && BOOST_PP_ITERATION_START_1 >= 522 +# define BOOST_PP_ITERATION_1 522 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 521 && BOOST_PP_ITERATION_START_1 >= 521 +# define BOOST_PP_ITERATION_1 521 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 520 && BOOST_PP_ITERATION_START_1 >= 520 +# define BOOST_PP_ITERATION_1 520 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 519 && BOOST_PP_ITERATION_START_1 >= 519 +# define BOOST_PP_ITERATION_1 519 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 518 && BOOST_PP_ITERATION_START_1 >= 518 +# define BOOST_PP_ITERATION_1 518 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 517 && BOOST_PP_ITERATION_START_1 >= 517 +# define BOOST_PP_ITERATION_1 517 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 516 && BOOST_PP_ITERATION_START_1 >= 516 +# define BOOST_PP_ITERATION_1 516 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 515 && BOOST_PP_ITERATION_START_1 >= 515 +# define BOOST_PP_ITERATION_1 515 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 514 && BOOST_PP_ITERATION_START_1 >= 514 +# define BOOST_PP_ITERATION_1 514 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 513 && BOOST_PP_ITERATION_START_1 >= 513 +# define BOOST_PP_ITERATION_1 513 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse1_256.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse1_256.hpp new file mode 100644 index 000000000..558e85644 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse1_256.hpp @@ -0,0 +1,1296 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_FINISH_1 <= 256 && BOOST_PP_ITERATION_START_1 >= 256 +# define BOOST_PP_ITERATION_1 256 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 255 && BOOST_PP_ITERATION_START_1 >= 255 +# define BOOST_PP_ITERATION_1 255 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 254 && BOOST_PP_ITERATION_START_1 >= 254 +# define BOOST_PP_ITERATION_1 254 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 253 && BOOST_PP_ITERATION_START_1 >= 253 +# define BOOST_PP_ITERATION_1 253 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 252 && BOOST_PP_ITERATION_START_1 >= 252 +# define BOOST_PP_ITERATION_1 252 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 251 && BOOST_PP_ITERATION_START_1 >= 251 +# define BOOST_PP_ITERATION_1 251 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 250 && BOOST_PP_ITERATION_START_1 >= 250 +# define BOOST_PP_ITERATION_1 250 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 249 && BOOST_PP_ITERATION_START_1 >= 249 +# define BOOST_PP_ITERATION_1 249 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 248 && BOOST_PP_ITERATION_START_1 >= 248 +# define BOOST_PP_ITERATION_1 248 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 247 && BOOST_PP_ITERATION_START_1 >= 247 +# define BOOST_PP_ITERATION_1 247 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 246 && BOOST_PP_ITERATION_START_1 >= 246 +# define BOOST_PP_ITERATION_1 246 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 245 && BOOST_PP_ITERATION_START_1 >= 245 +# define BOOST_PP_ITERATION_1 245 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 244 && BOOST_PP_ITERATION_START_1 >= 244 +# define BOOST_PP_ITERATION_1 244 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 243 && BOOST_PP_ITERATION_START_1 >= 243 +# define BOOST_PP_ITERATION_1 243 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 242 && BOOST_PP_ITERATION_START_1 >= 242 +# define BOOST_PP_ITERATION_1 242 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 241 && BOOST_PP_ITERATION_START_1 >= 241 +# define BOOST_PP_ITERATION_1 241 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 240 && BOOST_PP_ITERATION_START_1 >= 240 +# define BOOST_PP_ITERATION_1 240 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 239 && BOOST_PP_ITERATION_START_1 >= 239 +# define BOOST_PP_ITERATION_1 239 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 238 && BOOST_PP_ITERATION_START_1 >= 238 +# define BOOST_PP_ITERATION_1 238 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 237 && BOOST_PP_ITERATION_START_1 >= 237 +# define BOOST_PP_ITERATION_1 237 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 236 && BOOST_PP_ITERATION_START_1 >= 236 +# define BOOST_PP_ITERATION_1 236 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 235 && BOOST_PP_ITERATION_START_1 >= 235 +# define BOOST_PP_ITERATION_1 235 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 234 && BOOST_PP_ITERATION_START_1 >= 234 +# define BOOST_PP_ITERATION_1 234 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 233 && BOOST_PP_ITERATION_START_1 >= 233 +# define BOOST_PP_ITERATION_1 233 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 232 && BOOST_PP_ITERATION_START_1 >= 232 +# define BOOST_PP_ITERATION_1 232 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 231 && BOOST_PP_ITERATION_START_1 >= 231 +# define BOOST_PP_ITERATION_1 231 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 230 && BOOST_PP_ITERATION_START_1 >= 230 +# define BOOST_PP_ITERATION_1 230 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 229 && BOOST_PP_ITERATION_START_1 >= 229 +# define BOOST_PP_ITERATION_1 229 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 228 && BOOST_PP_ITERATION_START_1 >= 228 +# define BOOST_PP_ITERATION_1 228 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 227 && BOOST_PP_ITERATION_START_1 >= 227 +# define BOOST_PP_ITERATION_1 227 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 226 && BOOST_PP_ITERATION_START_1 >= 226 +# define BOOST_PP_ITERATION_1 226 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 225 && BOOST_PP_ITERATION_START_1 >= 225 +# define BOOST_PP_ITERATION_1 225 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 224 && BOOST_PP_ITERATION_START_1 >= 224 +# define BOOST_PP_ITERATION_1 224 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 223 && BOOST_PP_ITERATION_START_1 >= 223 +# define BOOST_PP_ITERATION_1 223 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 222 && BOOST_PP_ITERATION_START_1 >= 222 +# define BOOST_PP_ITERATION_1 222 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 221 && BOOST_PP_ITERATION_START_1 >= 221 +# define BOOST_PP_ITERATION_1 221 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 220 && BOOST_PP_ITERATION_START_1 >= 220 +# define BOOST_PP_ITERATION_1 220 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 219 && BOOST_PP_ITERATION_START_1 >= 219 +# define BOOST_PP_ITERATION_1 219 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 218 && BOOST_PP_ITERATION_START_1 >= 218 +# define BOOST_PP_ITERATION_1 218 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 217 && BOOST_PP_ITERATION_START_1 >= 217 +# define BOOST_PP_ITERATION_1 217 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 216 && BOOST_PP_ITERATION_START_1 >= 216 +# define BOOST_PP_ITERATION_1 216 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 215 && BOOST_PP_ITERATION_START_1 >= 215 +# define BOOST_PP_ITERATION_1 215 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 214 && BOOST_PP_ITERATION_START_1 >= 214 +# define BOOST_PP_ITERATION_1 214 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 213 && BOOST_PP_ITERATION_START_1 >= 213 +# define BOOST_PP_ITERATION_1 213 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 212 && BOOST_PP_ITERATION_START_1 >= 212 +# define BOOST_PP_ITERATION_1 212 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 211 && BOOST_PP_ITERATION_START_1 >= 211 +# define BOOST_PP_ITERATION_1 211 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 210 && BOOST_PP_ITERATION_START_1 >= 210 +# define BOOST_PP_ITERATION_1 210 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 209 && BOOST_PP_ITERATION_START_1 >= 209 +# define BOOST_PP_ITERATION_1 209 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 208 && BOOST_PP_ITERATION_START_1 >= 208 +# define BOOST_PP_ITERATION_1 208 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 207 && BOOST_PP_ITERATION_START_1 >= 207 +# define BOOST_PP_ITERATION_1 207 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 206 && BOOST_PP_ITERATION_START_1 >= 206 +# define BOOST_PP_ITERATION_1 206 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 205 && BOOST_PP_ITERATION_START_1 >= 205 +# define BOOST_PP_ITERATION_1 205 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 204 && BOOST_PP_ITERATION_START_1 >= 204 +# define BOOST_PP_ITERATION_1 204 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 203 && BOOST_PP_ITERATION_START_1 >= 203 +# define BOOST_PP_ITERATION_1 203 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 202 && BOOST_PP_ITERATION_START_1 >= 202 +# define BOOST_PP_ITERATION_1 202 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 201 && BOOST_PP_ITERATION_START_1 >= 201 +# define BOOST_PP_ITERATION_1 201 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 200 && BOOST_PP_ITERATION_START_1 >= 200 +# define BOOST_PP_ITERATION_1 200 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 199 && BOOST_PP_ITERATION_START_1 >= 199 +# define BOOST_PP_ITERATION_1 199 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 198 && BOOST_PP_ITERATION_START_1 >= 198 +# define BOOST_PP_ITERATION_1 198 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 197 && BOOST_PP_ITERATION_START_1 >= 197 +# define BOOST_PP_ITERATION_1 197 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 196 && BOOST_PP_ITERATION_START_1 >= 196 +# define BOOST_PP_ITERATION_1 196 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 195 && BOOST_PP_ITERATION_START_1 >= 195 +# define BOOST_PP_ITERATION_1 195 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 194 && BOOST_PP_ITERATION_START_1 >= 194 +# define BOOST_PP_ITERATION_1 194 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 193 && BOOST_PP_ITERATION_START_1 >= 193 +# define BOOST_PP_ITERATION_1 193 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 192 && BOOST_PP_ITERATION_START_1 >= 192 +# define BOOST_PP_ITERATION_1 192 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 191 && BOOST_PP_ITERATION_START_1 >= 191 +# define BOOST_PP_ITERATION_1 191 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 190 && BOOST_PP_ITERATION_START_1 >= 190 +# define BOOST_PP_ITERATION_1 190 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 189 && BOOST_PP_ITERATION_START_1 >= 189 +# define BOOST_PP_ITERATION_1 189 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 188 && BOOST_PP_ITERATION_START_1 >= 188 +# define BOOST_PP_ITERATION_1 188 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 187 && BOOST_PP_ITERATION_START_1 >= 187 +# define BOOST_PP_ITERATION_1 187 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 186 && BOOST_PP_ITERATION_START_1 >= 186 +# define BOOST_PP_ITERATION_1 186 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 185 && BOOST_PP_ITERATION_START_1 >= 185 +# define BOOST_PP_ITERATION_1 185 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 184 && BOOST_PP_ITERATION_START_1 >= 184 +# define BOOST_PP_ITERATION_1 184 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 183 && BOOST_PP_ITERATION_START_1 >= 183 +# define BOOST_PP_ITERATION_1 183 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 182 && BOOST_PP_ITERATION_START_1 >= 182 +# define BOOST_PP_ITERATION_1 182 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 181 && BOOST_PP_ITERATION_START_1 >= 181 +# define BOOST_PP_ITERATION_1 181 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 180 && BOOST_PP_ITERATION_START_1 >= 180 +# define BOOST_PP_ITERATION_1 180 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 179 && BOOST_PP_ITERATION_START_1 >= 179 +# define BOOST_PP_ITERATION_1 179 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 178 && BOOST_PP_ITERATION_START_1 >= 178 +# define BOOST_PP_ITERATION_1 178 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 177 && BOOST_PP_ITERATION_START_1 >= 177 +# define BOOST_PP_ITERATION_1 177 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 176 && BOOST_PP_ITERATION_START_1 >= 176 +# define BOOST_PP_ITERATION_1 176 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 175 && BOOST_PP_ITERATION_START_1 >= 175 +# define BOOST_PP_ITERATION_1 175 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 174 && BOOST_PP_ITERATION_START_1 >= 174 +# define BOOST_PP_ITERATION_1 174 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 173 && BOOST_PP_ITERATION_START_1 >= 173 +# define BOOST_PP_ITERATION_1 173 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 172 && BOOST_PP_ITERATION_START_1 >= 172 +# define BOOST_PP_ITERATION_1 172 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 171 && BOOST_PP_ITERATION_START_1 >= 171 +# define BOOST_PP_ITERATION_1 171 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 170 && BOOST_PP_ITERATION_START_1 >= 170 +# define BOOST_PP_ITERATION_1 170 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 169 && BOOST_PP_ITERATION_START_1 >= 169 +# define BOOST_PP_ITERATION_1 169 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 168 && BOOST_PP_ITERATION_START_1 >= 168 +# define BOOST_PP_ITERATION_1 168 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 167 && BOOST_PP_ITERATION_START_1 >= 167 +# define BOOST_PP_ITERATION_1 167 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 166 && BOOST_PP_ITERATION_START_1 >= 166 +# define BOOST_PP_ITERATION_1 166 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 165 && BOOST_PP_ITERATION_START_1 >= 165 +# define BOOST_PP_ITERATION_1 165 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 164 && BOOST_PP_ITERATION_START_1 >= 164 +# define BOOST_PP_ITERATION_1 164 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 163 && BOOST_PP_ITERATION_START_1 >= 163 +# define BOOST_PP_ITERATION_1 163 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 162 && BOOST_PP_ITERATION_START_1 >= 162 +# define BOOST_PP_ITERATION_1 162 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 161 && BOOST_PP_ITERATION_START_1 >= 161 +# define BOOST_PP_ITERATION_1 161 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 160 && BOOST_PP_ITERATION_START_1 >= 160 +# define BOOST_PP_ITERATION_1 160 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 159 && BOOST_PP_ITERATION_START_1 >= 159 +# define BOOST_PP_ITERATION_1 159 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 158 && BOOST_PP_ITERATION_START_1 >= 158 +# define BOOST_PP_ITERATION_1 158 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 157 && BOOST_PP_ITERATION_START_1 >= 157 +# define BOOST_PP_ITERATION_1 157 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 156 && BOOST_PP_ITERATION_START_1 >= 156 +# define BOOST_PP_ITERATION_1 156 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 155 && BOOST_PP_ITERATION_START_1 >= 155 +# define BOOST_PP_ITERATION_1 155 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 154 && BOOST_PP_ITERATION_START_1 >= 154 +# define BOOST_PP_ITERATION_1 154 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 153 && BOOST_PP_ITERATION_START_1 >= 153 +# define BOOST_PP_ITERATION_1 153 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 152 && BOOST_PP_ITERATION_START_1 >= 152 +# define BOOST_PP_ITERATION_1 152 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 151 && BOOST_PP_ITERATION_START_1 >= 151 +# define BOOST_PP_ITERATION_1 151 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 150 && BOOST_PP_ITERATION_START_1 >= 150 +# define BOOST_PP_ITERATION_1 150 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 149 && BOOST_PP_ITERATION_START_1 >= 149 +# define BOOST_PP_ITERATION_1 149 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 148 && BOOST_PP_ITERATION_START_1 >= 148 +# define BOOST_PP_ITERATION_1 148 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 147 && BOOST_PP_ITERATION_START_1 >= 147 +# define BOOST_PP_ITERATION_1 147 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 146 && BOOST_PP_ITERATION_START_1 >= 146 +# define BOOST_PP_ITERATION_1 146 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 145 && BOOST_PP_ITERATION_START_1 >= 145 +# define BOOST_PP_ITERATION_1 145 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 144 && BOOST_PP_ITERATION_START_1 >= 144 +# define BOOST_PP_ITERATION_1 144 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 143 && BOOST_PP_ITERATION_START_1 >= 143 +# define BOOST_PP_ITERATION_1 143 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 142 && BOOST_PP_ITERATION_START_1 >= 142 +# define BOOST_PP_ITERATION_1 142 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 141 && BOOST_PP_ITERATION_START_1 >= 141 +# define BOOST_PP_ITERATION_1 141 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 140 && BOOST_PP_ITERATION_START_1 >= 140 +# define BOOST_PP_ITERATION_1 140 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 139 && BOOST_PP_ITERATION_START_1 >= 139 +# define BOOST_PP_ITERATION_1 139 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 138 && BOOST_PP_ITERATION_START_1 >= 138 +# define BOOST_PP_ITERATION_1 138 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 137 && BOOST_PP_ITERATION_START_1 >= 137 +# define BOOST_PP_ITERATION_1 137 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 136 && BOOST_PP_ITERATION_START_1 >= 136 +# define BOOST_PP_ITERATION_1 136 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 135 && BOOST_PP_ITERATION_START_1 >= 135 +# define BOOST_PP_ITERATION_1 135 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 134 && BOOST_PP_ITERATION_START_1 >= 134 +# define BOOST_PP_ITERATION_1 134 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 133 && BOOST_PP_ITERATION_START_1 >= 133 +# define BOOST_PP_ITERATION_1 133 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 132 && BOOST_PP_ITERATION_START_1 >= 132 +# define BOOST_PP_ITERATION_1 132 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 131 && BOOST_PP_ITERATION_START_1 >= 131 +# define BOOST_PP_ITERATION_1 131 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 130 && BOOST_PP_ITERATION_START_1 >= 130 +# define BOOST_PP_ITERATION_1 130 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 129 && BOOST_PP_ITERATION_START_1 >= 129 +# define BOOST_PP_ITERATION_1 129 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 128 && BOOST_PP_ITERATION_START_1 >= 128 +# define BOOST_PP_ITERATION_1 128 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 127 && BOOST_PP_ITERATION_START_1 >= 127 +# define BOOST_PP_ITERATION_1 127 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 126 && BOOST_PP_ITERATION_START_1 >= 126 +# define BOOST_PP_ITERATION_1 126 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 125 && BOOST_PP_ITERATION_START_1 >= 125 +# define BOOST_PP_ITERATION_1 125 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 124 && BOOST_PP_ITERATION_START_1 >= 124 +# define BOOST_PP_ITERATION_1 124 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 123 && BOOST_PP_ITERATION_START_1 >= 123 +# define BOOST_PP_ITERATION_1 123 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 122 && BOOST_PP_ITERATION_START_1 >= 122 +# define BOOST_PP_ITERATION_1 122 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 121 && BOOST_PP_ITERATION_START_1 >= 121 +# define BOOST_PP_ITERATION_1 121 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 120 && BOOST_PP_ITERATION_START_1 >= 120 +# define BOOST_PP_ITERATION_1 120 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 119 && BOOST_PP_ITERATION_START_1 >= 119 +# define BOOST_PP_ITERATION_1 119 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 118 && BOOST_PP_ITERATION_START_1 >= 118 +# define BOOST_PP_ITERATION_1 118 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 117 && BOOST_PP_ITERATION_START_1 >= 117 +# define BOOST_PP_ITERATION_1 117 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 116 && BOOST_PP_ITERATION_START_1 >= 116 +# define BOOST_PP_ITERATION_1 116 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 115 && BOOST_PP_ITERATION_START_1 >= 115 +# define BOOST_PP_ITERATION_1 115 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 114 && BOOST_PP_ITERATION_START_1 >= 114 +# define BOOST_PP_ITERATION_1 114 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 113 && BOOST_PP_ITERATION_START_1 >= 113 +# define BOOST_PP_ITERATION_1 113 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 112 && BOOST_PP_ITERATION_START_1 >= 112 +# define BOOST_PP_ITERATION_1 112 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 111 && BOOST_PP_ITERATION_START_1 >= 111 +# define BOOST_PP_ITERATION_1 111 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 110 && BOOST_PP_ITERATION_START_1 >= 110 +# define BOOST_PP_ITERATION_1 110 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 109 && BOOST_PP_ITERATION_START_1 >= 109 +# define BOOST_PP_ITERATION_1 109 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 108 && BOOST_PP_ITERATION_START_1 >= 108 +# define BOOST_PP_ITERATION_1 108 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 107 && BOOST_PP_ITERATION_START_1 >= 107 +# define BOOST_PP_ITERATION_1 107 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 106 && BOOST_PP_ITERATION_START_1 >= 106 +# define BOOST_PP_ITERATION_1 106 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 105 && BOOST_PP_ITERATION_START_1 >= 105 +# define BOOST_PP_ITERATION_1 105 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 104 && BOOST_PP_ITERATION_START_1 >= 104 +# define BOOST_PP_ITERATION_1 104 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 103 && BOOST_PP_ITERATION_START_1 >= 103 +# define BOOST_PP_ITERATION_1 103 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 102 && BOOST_PP_ITERATION_START_1 >= 102 +# define BOOST_PP_ITERATION_1 102 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 101 && BOOST_PP_ITERATION_START_1 >= 101 +# define BOOST_PP_ITERATION_1 101 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 100 && BOOST_PP_ITERATION_START_1 >= 100 +# define BOOST_PP_ITERATION_1 100 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 99 && BOOST_PP_ITERATION_START_1 >= 99 +# define BOOST_PP_ITERATION_1 99 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 98 && BOOST_PP_ITERATION_START_1 >= 98 +# define BOOST_PP_ITERATION_1 98 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 97 && BOOST_PP_ITERATION_START_1 >= 97 +# define BOOST_PP_ITERATION_1 97 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 96 && BOOST_PP_ITERATION_START_1 >= 96 +# define BOOST_PP_ITERATION_1 96 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 95 && BOOST_PP_ITERATION_START_1 >= 95 +# define BOOST_PP_ITERATION_1 95 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 94 && BOOST_PP_ITERATION_START_1 >= 94 +# define BOOST_PP_ITERATION_1 94 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 93 && BOOST_PP_ITERATION_START_1 >= 93 +# define BOOST_PP_ITERATION_1 93 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 92 && BOOST_PP_ITERATION_START_1 >= 92 +# define BOOST_PP_ITERATION_1 92 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 91 && BOOST_PP_ITERATION_START_1 >= 91 +# define BOOST_PP_ITERATION_1 91 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 90 && BOOST_PP_ITERATION_START_1 >= 90 +# define BOOST_PP_ITERATION_1 90 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 89 && BOOST_PP_ITERATION_START_1 >= 89 +# define BOOST_PP_ITERATION_1 89 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 88 && BOOST_PP_ITERATION_START_1 >= 88 +# define BOOST_PP_ITERATION_1 88 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 87 && BOOST_PP_ITERATION_START_1 >= 87 +# define BOOST_PP_ITERATION_1 87 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 86 && BOOST_PP_ITERATION_START_1 >= 86 +# define BOOST_PP_ITERATION_1 86 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 85 && BOOST_PP_ITERATION_START_1 >= 85 +# define BOOST_PP_ITERATION_1 85 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 84 && BOOST_PP_ITERATION_START_1 >= 84 +# define BOOST_PP_ITERATION_1 84 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 83 && BOOST_PP_ITERATION_START_1 >= 83 +# define BOOST_PP_ITERATION_1 83 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 82 && BOOST_PP_ITERATION_START_1 >= 82 +# define BOOST_PP_ITERATION_1 82 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 81 && BOOST_PP_ITERATION_START_1 >= 81 +# define BOOST_PP_ITERATION_1 81 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 80 && BOOST_PP_ITERATION_START_1 >= 80 +# define BOOST_PP_ITERATION_1 80 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 79 && BOOST_PP_ITERATION_START_1 >= 79 +# define BOOST_PP_ITERATION_1 79 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 78 && BOOST_PP_ITERATION_START_1 >= 78 +# define BOOST_PP_ITERATION_1 78 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 77 && BOOST_PP_ITERATION_START_1 >= 77 +# define BOOST_PP_ITERATION_1 77 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 76 && BOOST_PP_ITERATION_START_1 >= 76 +# define BOOST_PP_ITERATION_1 76 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 75 && BOOST_PP_ITERATION_START_1 >= 75 +# define BOOST_PP_ITERATION_1 75 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 74 && BOOST_PP_ITERATION_START_1 >= 74 +# define BOOST_PP_ITERATION_1 74 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 73 && BOOST_PP_ITERATION_START_1 >= 73 +# define BOOST_PP_ITERATION_1 73 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 72 && BOOST_PP_ITERATION_START_1 >= 72 +# define BOOST_PP_ITERATION_1 72 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 71 && BOOST_PP_ITERATION_START_1 >= 71 +# define BOOST_PP_ITERATION_1 71 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 70 && BOOST_PP_ITERATION_START_1 >= 70 +# define BOOST_PP_ITERATION_1 70 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 69 && BOOST_PP_ITERATION_START_1 >= 69 +# define BOOST_PP_ITERATION_1 69 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 68 && BOOST_PP_ITERATION_START_1 >= 68 +# define BOOST_PP_ITERATION_1 68 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 67 && BOOST_PP_ITERATION_START_1 >= 67 +# define BOOST_PP_ITERATION_1 67 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 66 && BOOST_PP_ITERATION_START_1 >= 66 +# define BOOST_PP_ITERATION_1 66 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 65 && BOOST_PP_ITERATION_START_1 >= 65 +# define BOOST_PP_ITERATION_1 65 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 64 && BOOST_PP_ITERATION_START_1 >= 64 +# define BOOST_PP_ITERATION_1 64 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 63 && BOOST_PP_ITERATION_START_1 >= 63 +# define BOOST_PP_ITERATION_1 63 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 62 && BOOST_PP_ITERATION_START_1 >= 62 +# define BOOST_PP_ITERATION_1 62 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 61 && BOOST_PP_ITERATION_START_1 >= 61 +# define BOOST_PP_ITERATION_1 61 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 60 && BOOST_PP_ITERATION_START_1 >= 60 +# define BOOST_PP_ITERATION_1 60 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 59 && BOOST_PP_ITERATION_START_1 >= 59 +# define BOOST_PP_ITERATION_1 59 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 58 && BOOST_PP_ITERATION_START_1 >= 58 +# define BOOST_PP_ITERATION_1 58 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 57 && BOOST_PP_ITERATION_START_1 >= 57 +# define BOOST_PP_ITERATION_1 57 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 56 && BOOST_PP_ITERATION_START_1 >= 56 +# define BOOST_PP_ITERATION_1 56 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 55 && BOOST_PP_ITERATION_START_1 >= 55 +# define BOOST_PP_ITERATION_1 55 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 54 && BOOST_PP_ITERATION_START_1 >= 54 +# define BOOST_PP_ITERATION_1 54 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 53 && BOOST_PP_ITERATION_START_1 >= 53 +# define BOOST_PP_ITERATION_1 53 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 52 && BOOST_PP_ITERATION_START_1 >= 52 +# define BOOST_PP_ITERATION_1 52 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 51 && BOOST_PP_ITERATION_START_1 >= 51 +# define BOOST_PP_ITERATION_1 51 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 50 && BOOST_PP_ITERATION_START_1 >= 50 +# define BOOST_PP_ITERATION_1 50 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 49 && BOOST_PP_ITERATION_START_1 >= 49 +# define BOOST_PP_ITERATION_1 49 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 48 && BOOST_PP_ITERATION_START_1 >= 48 +# define BOOST_PP_ITERATION_1 48 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 47 && BOOST_PP_ITERATION_START_1 >= 47 +# define BOOST_PP_ITERATION_1 47 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 46 && BOOST_PP_ITERATION_START_1 >= 46 +# define BOOST_PP_ITERATION_1 46 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 45 && BOOST_PP_ITERATION_START_1 >= 45 +# define BOOST_PP_ITERATION_1 45 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 44 && BOOST_PP_ITERATION_START_1 >= 44 +# define BOOST_PP_ITERATION_1 44 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 43 && BOOST_PP_ITERATION_START_1 >= 43 +# define BOOST_PP_ITERATION_1 43 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 42 && BOOST_PP_ITERATION_START_1 >= 42 +# define BOOST_PP_ITERATION_1 42 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 41 && BOOST_PP_ITERATION_START_1 >= 41 +# define BOOST_PP_ITERATION_1 41 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 40 && BOOST_PP_ITERATION_START_1 >= 40 +# define BOOST_PP_ITERATION_1 40 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 39 && BOOST_PP_ITERATION_START_1 >= 39 +# define BOOST_PP_ITERATION_1 39 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 38 && BOOST_PP_ITERATION_START_1 >= 38 +# define BOOST_PP_ITERATION_1 38 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 37 && BOOST_PP_ITERATION_START_1 >= 37 +# define BOOST_PP_ITERATION_1 37 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 36 && BOOST_PP_ITERATION_START_1 >= 36 +# define BOOST_PP_ITERATION_1 36 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 35 && BOOST_PP_ITERATION_START_1 >= 35 +# define BOOST_PP_ITERATION_1 35 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 34 && BOOST_PP_ITERATION_START_1 >= 34 +# define BOOST_PP_ITERATION_1 34 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 33 && BOOST_PP_ITERATION_START_1 >= 33 +# define BOOST_PP_ITERATION_1 33 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 32 && BOOST_PP_ITERATION_START_1 >= 32 +# define BOOST_PP_ITERATION_1 32 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 31 && BOOST_PP_ITERATION_START_1 >= 31 +# define BOOST_PP_ITERATION_1 31 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 30 && BOOST_PP_ITERATION_START_1 >= 30 +# define BOOST_PP_ITERATION_1 30 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 29 && BOOST_PP_ITERATION_START_1 >= 29 +# define BOOST_PP_ITERATION_1 29 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 28 && BOOST_PP_ITERATION_START_1 >= 28 +# define BOOST_PP_ITERATION_1 28 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 27 && BOOST_PP_ITERATION_START_1 >= 27 +# define BOOST_PP_ITERATION_1 27 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 26 && BOOST_PP_ITERATION_START_1 >= 26 +# define BOOST_PP_ITERATION_1 26 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 25 && BOOST_PP_ITERATION_START_1 >= 25 +# define BOOST_PP_ITERATION_1 25 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 24 && BOOST_PP_ITERATION_START_1 >= 24 +# define BOOST_PP_ITERATION_1 24 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 23 && BOOST_PP_ITERATION_START_1 >= 23 +# define BOOST_PP_ITERATION_1 23 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 22 && BOOST_PP_ITERATION_START_1 >= 22 +# define BOOST_PP_ITERATION_1 22 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 21 && BOOST_PP_ITERATION_START_1 >= 21 +# define BOOST_PP_ITERATION_1 21 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 20 && BOOST_PP_ITERATION_START_1 >= 20 +# define BOOST_PP_ITERATION_1 20 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 19 && BOOST_PP_ITERATION_START_1 >= 19 +# define BOOST_PP_ITERATION_1 19 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 18 && BOOST_PP_ITERATION_START_1 >= 18 +# define BOOST_PP_ITERATION_1 18 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 17 && BOOST_PP_ITERATION_START_1 >= 17 +# define BOOST_PP_ITERATION_1 17 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 16 && BOOST_PP_ITERATION_START_1 >= 16 +# define BOOST_PP_ITERATION_1 16 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 15 && BOOST_PP_ITERATION_START_1 >= 15 +# define BOOST_PP_ITERATION_1 15 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 14 && BOOST_PP_ITERATION_START_1 >= 14 +# define BOOST_PP_ITERATION_1 14 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 13 && BOOST_PP_ITERATION_START_1 >= 13 +# define BOOST_PP_ITERATION_1 13 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 12 && BOOST_PP_ITERATION_START_1 >= 12 +# define BOOST_PP_ITERATION_1 12 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 11 && BOOST_PP_ITERATION_START_1 >= 11 +# define BOOST_PP_ITERATION_1 11 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 10 && BOOST_PP_ITERATION_START_1 >= 10 +# define BOOST_PP_ITERATION_1 10 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 9 && BOOST_PP_ITERATION_START_1 >= 9 +# define BOOST_PP_ITERATION_1 9 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 8 && BOOST_PP_ITERATION_START_1 >= 8 +# define BOOST_PP_ITERATION_1 8 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 7 && BOOST_PP_ITERATION_START_1 >= 7 +# define BOOST_PP_ITERATION_1 7 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 6 && BOOST_PP_ITERATION_START_1 >= 6 +# define BOOST_PP_ITERATION_1 6 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 5 && BOOST_PP_ITERATION_START_1 >= 5 +# define BOOST_PP_ITERATION_1 5 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 4 && BOOST_PP_ITERATION_START_1 >= 4 +# define BOOST_PP_ITERATION_1 4 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 3 && BOOST_PP_ITERATION_START_1 >= 3 +# define BOOST_PP_ITERATION_1 3 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 2 && BOOST_PP_ITERATION_START_1 >= 2 +# define BOOST_PP_ITERATION_1 2 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 1 && BOOST_PP_ITERATION_START_1 >= 1 +# define BOOST_PP_ITERATION_1 1 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 0 && BOOST_PP_ITERATION_START_1 >= 0 +# define BOOST_PP_ITERATION_1 0 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse1_512.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse1_512.hpp new file mode 100644 index 000000000..1a242262a --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse1_512.hpp @@ -0,0 +1,1291 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_FINISH_1 <= 512 && BOOST_PP_ITERATION_START_1 >= 512 +# define BOOST_PP_ITERATION_1 512 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 511 && BOOST_PP_ITERATION_START_1 >= 511 +# define BOOST_PP_ITERATION_1 511 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 510 && BOOST_PP_ITERATION_START_1 >= 510 +# define BOOST_PP_ITERATION_1 510 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 509 && BOOST_PP_ITERATION_START_1 >= 509 +# define BOOST_PP_ITERATION_1 509 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 508 && BOOST_PP_ITERATION_START_1 >= 508 +# define BOOST_PP_ITERATION_1 508 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 507 && BOOST_PP_ITERATION_START_1 >= 507 +# define BOOST_PP_ITERATION_1 507 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 506 && BOOST_PP_ITERATION_START_1 >= 506 +# define BOOST_PP_ITERATION_1 506 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 505 && BOOST_PP_ITERATION_START_1 >= 505 +# define BOOST_PP_ITERATION_1 505 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 504 && BOOST_PP_ITERATION_START_1 >= 504 +# define BOOST_PP_ITERATION_1 504 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 503 && BOOST_PP_ITERATION_START_1 >= 503 +# define BOOST_PP_ITERATION_1 503 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 502 && BOOST_PP_ITERATION_START_1 >= 502 +# define BOOST_PP_ITERATION_1 502 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 501 && BOOST_PP_ITERATION_START_1 >= 501 +# define BOOST_PP_ITERATION_1 501 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 500 && BOOST_PP_ITERATION_START_1 >= 500 +# define BOOST_PP_ITERATION_1 500 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 499 && BOOST_PP_ITERATION_START_1 >= 499 +# define BOOST_PP_ITERATION_1 499 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 498 && BOOST_PP_ITERATION_START_1 >= 498 +# define BOOST_PP_ITERATION_1 498 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 497 && BOOST_PP_ITERATION_START_1 >= 497 +# define BOOST_PP_ITERATION_1 497 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 496 && BOOST_PP_ITERATION_START_1 >= 496 +# define BOOST_PP_ITERATION_1 496 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 495 && BOOST_PP_ITERATION_START_1 >= 495 +# define BOOST_PP_ITERATION_1 495 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 494 && BOOST_PP_ITERATION_START_1 >= 494 +# define BOOST_PP_ITERATION_1 494 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 493 && BOOST_PP_ITERATION_START_1 >= 493 +# define BOOST_PP_ITERATION_1 493 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 492 && BOOST_PP_ITERATION_START_1 >= 492 +# define BOOST_PP_ITERATION_1 492 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 491 && BOOST_PP_ITERATION_START_1 >= 491 +# define BOOST_PP_ITERATION_1 491 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 490 && BOOST_PP_ITERATION_START_1 >= 490 +# define BOOST_PP_ITERATION_1 490 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 489 && BOOST_PP_ITERATION_START_1 >= 489 +# define BOOST_PP_ITERATION_1 489 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 488 && BOOST_PP_ITERATION_START_1 >= 488 +# define BOOST_PP_ITERATION_1 488 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 487 && BOOST_PP_ITERATION_START_1 >= 487 +# define BOOST_PP_ITERATION_1 487 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 486 && BOOST_PP_ITERATION_START_1 >= 486 +# define BOOST_PP_ITERATION_1 486 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 485 && BOOST_PP_ITERATION_START_1 >= 485 +# define BOOST_PP_ITERATION_1 485 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 484 && BOOST_PP_ITERATION_START_1 >= 484 +# define BOOST_PP_ITERATION_1 484 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 483 && BOOST_PP_ITERATION_START_1 >= 483 +# define BOOST_PP_ITERATION_1 483 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 482 && BOOST_PP_ITERATION_START_1 >= 482 +# define BOOST_PP_ITERATION_1 482 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 481 && BOOST_PP_ITERATION_START_1 >= 481 +# define BOOST_PP_ITERATION_1 481 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 480 && BOOST_PP_ITERATION_START_1 >= 480 +# define BOOST_PP_ITERATION_1 480 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 479 && BOOST_PP_ITERATION_START_1 >= 479 +# define BOOST_PP_ITERATION_1 479 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 478 && BOOST_PP_ITERATION_START_1 >= 478 +# define BOOST_PP_ITERATION_1 478 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 477 && BOOST_PP_ITERATION_START_1 >= 477 +# define BOOST_PP_ITERATION_1 477 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 476 && BOOST_PP_ITERATION_START_1 >= 476 +# define BOOST_PP_ITERATION_1 476 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 475 && BOOST_PP_ITERATION_START_1 >= 475 +# define BOOST_PP_ITERATION_1 475 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 474 && BOOST_PP_ITERATION_START_1 >= 474 +# define BOOST_PP_ITERATION_1 474 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 473 && BOOST_PP_ITERATION_START_1 >= 473 +# define BOOST_PP_ITERATION_1 473 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 472 && BOOST_PP_ITERATION_START_1 >= 472 +# define BOOST_PP_ITERATION_1 472 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 471 && BOOST_PP_ITERATION_START_1 >= 471 +# define BOOST_PP_ITERATION_1 471 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 470 && BOOST_PP_ITERATION_START_1 >= 470 +# define BOOST_PP_ITERATION_1 470 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 469 && BOOST_PP_ITERATION_START_1 >= 469 +# define BOOST_PP_ITERATION_1 469 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 468 && BOOST_PP_ITERATION_START_1 >= 468 +# define BOOST_PP_ITERATION_1 468 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 467 && BOOST_PP_ITERATION_START_1 >= 467 +# define BOOST_PP_ITERATION_1 467 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 466 && BOOST_PP_ITERATION_START_1 >= 466 +# define BOOST_PP_ITERATION_1 466 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 465 && BOOST_PP_ITERATION_START_1 >= 465 +# define BOOST_PP_ITERATION_1 465 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 464 && BOOST_PP_ITERATION_START_1 >= 464 +# define BOOST_PP_ITERATION_1 464 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 463 && BOOST_PP_ITERATION_START_1 >= 463 +# define BOOST_PP_ITERATION_1 463 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 462 && BOOST_PP_ITERATION_START_1 >= 462 +# define BOOST_PP_ITERATION_1 462 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 461 && BOOST_PP_ITERATION_START_1 >= 461 +# define BOOST_PP_ITERATION_1 461 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 460 && BOOST_PP_ITERATION_START_1 >= 460 +# define BOOST_PP_ITERATION_1 460 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 459 && BOOST_PP_ITERATION_START_1 >= 459 +# define BOOST_PP_ITERATION_1 459 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 458 && BOOST_PP_ITERATION_START_1 >= 458 +# define BOOST_PP_ITERATION_1 458 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 457 && BOOST_PP_ITERATION_START_1 >= 457 +# define BOOST_PP_ITERATION_1 457 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 456 && BOOST_PP_ITERATION_START_1 >= 456 +# define BOOST_PP_ITERATION_1 456 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 455 && BOOST_PP_ITERATION_START_1 >= 455 +# define BOOST_PP_ITERATION_1 455 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 454 && BOOST_PP_ITERATION_START_1 >= 454 +# define BOOST_PP_ITERATION_1 454 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 453 && BOOST_PP_ITERATION_START_1 >= 453 +# define BOOST_PP_ITERATION_1 453 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 452 && BOOST_PP_ITERATION_START_1 >= 452 +# define BOOST_PP_ITERATION_1 452 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 451 && BOOST_PP_ITERATION_START_1 >= 451 +# define BOOST_PP_ITERATION_1 451 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 450 && BOOST_PP_ITERATION_START_1 >= 450 +# define BOOST_PP_ITERATION_1 450 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 449 && BOOST_PP_ITERATION_START_1 >= 449 +# define BOOST_PP_ITERATION_1 449 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 448 && BOOST_PP_ITERATION_START_1 >= 448 +# define BOOST_PP_ITERATION_1 448 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 447 && BOOST_PP_ITERATION_START_1 >= 447 +# define BOOST_PP_ITERATION_1 447 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 446 && BOOST_PP_ITERATION_START_1 >= 446 +# define BOOST_PP_ITERATION_1 446 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 445 && BOOST_PP_ITERATION_START_1 >= 445 +# define BOOST_PP_ITERATION_1 445 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 444 && BOOST_PP_ITERATION_START_1 >= 444 +# define BOOST_PP_ITERATION_1 444 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 443 && BOOST_PP_ITERATION_START_1 >= 443 +# define BOOST_PP_ITERATION_1 443 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 442 && BOOST_PP_ITERATION_START_1 >= 442 +# define BOOST_PP_ITERATION_1 442 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 441 && BOOST_PP_ITERATION_START_1 >= 441 +# define BOOST_PP_ITERATION_1 441 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 440 && BOOST_PP_ITERATION_START_1 >= 440 +# define BOOST_PP_ITERATION_1 440 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 439 && BOOST_PP_ITERATION_START_1 >= 439 +# define BOOST_PP_ITERATION_1 439 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 438 && BOOST_PP_ITERATION_START_1 >= 438 +# define BOOST_PP_ITERATION_1 438 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 437 && BOOST_PP_ITERATION_START_1 >= 437 +# define BOOST_PP_ITERATION_1 437 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 436 && BOOST_PP_ITERATION_START_1 >= 436 +# define BOOST_PP_ITERATION_1 436 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 435 && BOOST_PP_ITERATION_START_1 >= 435 +# define BOOST_PP_ITERATION_1 435 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 434 && BOOST_PP_ITERATION_START_1 >= 434 +# define BOOST_PP_ITERATION_1 434 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 433 && BOOST_PP_ITERATION_START_1 >= 433 +# define BOOST_PP_ITERATION_1 433 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 432 && BOOST_PP_ITERATION_START_1 >= 432 +# define BOOST_PP_ITERATION_1 432 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 431 && BOOST_PP_ITERATION_START_1 >= 431 +# define BOOST_PP_ITERATION_1 431 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 430 && BOOST_PP_ITERATION_START_1 >= 430 +# define BOOST_PP_ITERATION_1 430 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 429 && BOOST_PP_ITERATION_START_1 >= 429 +# define BOOST_PP_ITERATION_1 429 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 428 && BOOST_PP_ITERATION_START_1 >= 428 +# define BOOST_PP_ITERATION_1 428 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 427 && BOOST_PP_ITERATION_START_1 >= 427 +# define BOOST_PP_ITERATION_1 427 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 426 && BOOST_PP_ITERATION_START_1 >= 426 +# define BOOST_PP_ITERATION_1 426 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 425 && BOOST_PP_ITERATION_START_1 >= 425 +# define BOOST_PP_ITERATION_1 425 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 424 && BOOST_PP_ITERATION_START_1 >= 424 +# define BOOST_PP_ITERATION_1 424 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 423 && BOOST_PP_ITERATION_START_1 >= 423 +# define BOOST_PP_ITERATION_1 423 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 422 && BOOST_PP_ITERATION_START_1 >= 422 +# define BOOST_PP_ITERATION_1 422 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 421 && BOOST_PP_ITERATION_START_1 >= 421 +# define BOOST_PP_ITERATION_1 421 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 420 && BOOST_PP_ITERATION_START_1 >= 420 +# define BOOST_PP_ITERATION_1 420 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 419 && BOOST_PP_ITERATION_START_1 >= 419 +# define BOOST_PP_ITERATION_1 419 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 418 && BOOST_PP_ITERATION_START_1 >= 418 +# define BOOST_PP_ITERATION_1 418 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 417 && BOOST_PP_ITERATION_START_1 >= 417 +# define BOOST_PP_ITERATION_1 417 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 416 && BOOST_PP_ITERATION_START_1 >= 416 +# define BOOST_PP_ITERATION_1 416 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 415 && BOOST_PP_ITERATION_START_1 >= 415 +# define BOOST_PP_ITERATION_1 415 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 414 && BOOST_PP_ITERATION_START_1 >= 414 +# define BOOST_PP_ITERATION_1 414 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 413 && BOOST_PP_ITERATION_START_1 >= 413 +# define BOOST_PP_ITERATION_1 413 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 412 && BOOST_PP_ITERATION_START_1 >= 412 +# define BOOST_PP_ITERATION_1 412 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 411 && BOOST_PP_ITERATION_START_1 >= 411 +# define BOOST_PP_ITERATION_1 411 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 410 && BOOST_PP_ITERATION_START_1 >= 410 +# define BOOST_PP_ITERATION_1 410 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 409 && BOOST_PP_ITERATION_START_1 >= 409 +# define BOOST_PP_ITERATION_1 409 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 408 && BOOST_PP_ITERATION_START_1 >= 408 +# define BOOST_PP_ITERATION_1 408 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 407 && BOOST_PP_ITERATION_START_1 >= 407 +# define BOOST_PP_ITERATION_1 407 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 406 && BOOST_PP_ITERATION_START_1 >= 406 +# define BOOST_PP_ITERATION_1 406 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 405 && BOOST_PP_ITERATION_START_1 >= 405 +# define BOOST_PP_ITERATION_1 405 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 404 && BOOST_PP_ITERATION_START_1 >= 404 +# define BOOST_PP_ITERATION_1 404 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 403 && BOOST_PP_ITERATION_START_1 >= 403 +# define BOOST_PP_ITERATION_1 403 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 402 && BOOST_PP_ITERATION_START_1 >= 402 +# define BOOST_PP_ITERATION_1 402 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 401 && BOOST_PP_ITERATION_START_1 >= 401 +# define BOOST_PP_ITERATION_1 401 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 400 && BOOST_PP_ITERATION_START_1 >= 400 +# define BOOST_PP_ITERATION_1 400 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 399 && BOOST_PP_ITERATION_START_1 >= 399 +# define BOOST_PP_ITERATION_1 399 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 398 && BOOST_PP_ITERATION_START_1 >= 398 +# define BOOST_PP_ITERATION_1 398 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 397 && BOOST_PP_ITERATION_START_1 >= 397 +# define BOOST_PP_ITERATION_1 397 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 396 && BOOST_PP_ITERATION_START_1 >= 396 +# define BOOST_PP_ITERATION_1 396 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 395 && BOOST_PP_ITERATION_START_1 >= 395 +# define BOOST_PP_ITERATION_1 395 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 394 && BOOST_PP_ITERATION_START_1 >= 394 +# define BOOST_PP_ITERATION_1 394 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 393 && BOOST_PP_ITERATION_START_1 >= 393 +# define BOOST_PP_ITERATION_1 393 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 392 && BOOST_PP_ITERATION_START_1 >= 392 +# define BOOST_PP_ITERATION_1 392 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 391 && BOOST_PP_ITERATION_START_1 >= 391 +# define BOOST_PP_ITERATION_1 391 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 390 && BOOST_PP_ITERATION_START_1 >= 390 +# define BOOST_PP_ITERATION_1 390 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 389 && BOOST_PP_ITERATION_START_1 >= 389 +# define BOOST_PP_ITERATION_1 389 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 388 && BOOST_PP_ITERATION_START_1 >= 388 +# define BOOST_PP_ITERATION_1 388 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 387 && BOOST_PP_ITERATION_START_1 >= 387 +# define BOOST_PP_ITERATION_1 387 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 386 && BOOST_PP_ITERATION_START_1 >= 386 +# define BOOST_PP_ITERATION_1 386 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 385 && BOOST_PP_ITERATION_START_1 >= 385 +# define BOOST_PP_ITERATION_1 385 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 384 && BOOST_PP_ITERATION_START_1 >= 384 +# define BOOST_PP_ITERATION_1 384 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 383 && BOOST_PP_ITERATION_START_1 >= 383 +# define BOOST_PP_ITERATION_1 383 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 382 && BOOST_PP_ITERATION_START_1 >= 382 +# define BOOST_PP_ITERATION_1 382 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 381 && BOOST_PP_ITERATION_START_1 >= 381 +# define BOOST_PP_ITERATION_1 381 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 380 && BOOST_PP_ITERATION_START_1 >= 380 +# define BOOST_PP_ITERATION_1 380 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 379 && BOOST_PP_ITERATION_START_1 >= 379 +# define BOOST_PP_ITERATION_1 379 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 378 && BOOST_PP_ITERATION_START_1 >= 378 +# define BOOST_PP_ITERATION_1 378 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 377 && BOOST_PP_ITERATION_START_1 >= 377 +# define BOOST_PP_ITERATION_1 377 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 376 && BOOST_PP_ITERATION_START_1 >= 376 +# define BOOST_PP_ITERATION_1 376 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 375 && BOOST_PP_ITERATION_START_1 >= 375 +# define BOOST_PP_ITERATION_1 375 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 374 && BOOST_PP_ITERATION_START_1 >= 374 +# define BOOST_PP_ITERATION_1 374 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 373 && BOOST_PP_ITERATION_START_1 >= 373 +# define BOOST_PP_ITERATION_1 373 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 372 && BOOST_PP_ITERATION_START_1 >= 372 +# define BOOST_PP_ITERATION_1 372 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 371 && BOOST_PP_ITERATION_START_1 >= 371 +# define BOOST_PP_ITERATION_1 371 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 370 && BOOST_PP_ITERATION_START_1 >= 370 +# define BOOST_PP_ITERATION_1 370 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 369 && BOOST_PP_ITERATION_START_1 >= 369 +# define BOOST_PP_ITERATION_1 369 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 368 && BOOST_PP_ITERATION_START_1 >= 368 +# define BOOST_PP_ITERATION_1 368 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 367 && BOOST_PP_ITERATION_START_1 >= 367 +# define BOOST_PP_ITERATION_1 367 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 366 && BOOST_PP_ITERATION_START_1 >= 366 +# define BOOST_PP_ITERATION_1 366 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 365 && BOOST_PP_ITERATION_START_1 >= 365 +# define BOOST_PP_ITERATION_1 365 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 364 && BOOST_PP_ITERATION_START_1 >= 364 +# define BOOST_PP_ITERATION_1 364 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 363 && BOOST_PP_ITERATION_START_1 >= 363 +# define BOOST_PP_ITERATION_1 363 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 362 && BOOST_PP_ITERATION_START_1 >= 362 +# define BOOST_PP_ITERATION_1 362 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 361 && BOOST_PP_ITERATION_START_1 >= 361 +# define BOOST_PP_ITERATION_1 361 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 360 && BOOST_PP_ITERATION_START_1 >= 360 +# define BOOST_PP_ITERATION_1 360 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 359 && BOOST_PP_ITERATION_START_1 >= 359 +# define BOOST_PP_ITERATION_1 359 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 358 && BOOST_PP_ITERATION_START_1 >= 358 +# define BOOST_PP_ITERATION_1 358 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 357 && BOOST_PP_ITERATION_START_1 >= 357 +# define BOOST_PP_ITERATION_1 357 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 356 && BOOST_PP_ITERATION_START_1 >= 356 +# define BOOST_PP_ITERATION_1 356 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 355 && BOOST_PP_ITERATION_START_1 >= 355 +# define BOOST_PP_ITERATION_1 355 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 354 && BOOST_PP_ITERATION_START_1 >= 354 +# define BOOST_PP_ITERATION_1 354 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 353 && BOOST_PP_ITERATION_START_1 >= 353 +# define BOOST_PP_ITERATION_1 353 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 352 && BOOST_PP_ITERATION_START_1 >= 352 +# define BOOST_PP_ITERATION_1 352 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 351 && BOOST_PP_ITERATION_START_1 >= 351 +# define BOOST_PP_ITERATION_1 351 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 350 && BOOST_PP_ITERATION_START_1 >= 350 +# define BOOST_PP_ITERATION_1 350 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 349 && BOOST_PP_ITERATION_START_1 >= 349 +# define BOOST_PP_ITERATION_1 349 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 348 && BOOST_PP_ITERATION_START_1 >= 348 +# define BOOST_PP_ITERATION_1 348 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 347 && BOOST_PP_ITERATION_START_1 >= 347 +# define BOOST_PP_ITERATION_1 347 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 346 && BOOST_PP_ITERATION_START_1 >= 346 +# define BOOST_PP_ITERATION_1 346 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 345 && BOOST_PP_ITERATION_START_1 >= 345 +# define BOOST_PP_ITERATION_1 345 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 344 && BOOST_PP_ITERATION_START_1 >= 344 +# define BOOST_PP_ITERATION_1 344 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 343 && BOOST_PP_ITERATION_START_1 >= 343 +# define BOOST_PP_ITERATION_1 343 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 342 && BOOST_PP_ITERATION_START_1 >= 342 +# define BOOST_PP_ITERATION_1 342 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 341 && BOOST_PP_ITERATION_START_1 >= 341 +# define BOOST_PP_ITERATION_1 341 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 340 && BOOST_PP_ITERATION_START_1 >= 340 +# define BOOST_PP_ITERATION_1 340 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 339 && BOOST_PP_ITERATION_START_1 >= 339 +# define BOOST_PP_ITERATION_1 339 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 338 && BOOST_PP_ITERATION_START_1 >= 338 +# define BOOST_PP_ITERATION_1 338 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 337 && BOOST_PP_ITERATION_START_1 >= 337 +# define BOOST_PP_ITERATION_1 337 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 336 && BOOST_PP_ITERATION_START_1 >= 336 +# define BOOST_PP_ITERATION_1 336 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 335 && BOOST_PP_ITERATION_START_1 >= 335 +# define BOOST_PP_ITERATION_1 335 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 334 && BOOST_PP_ITERATION_START_1 >= 334 +# define BOOST_PP_ITERATION_1 334 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 333 && BOOST_PP_ITERATION_START_1 >= 333 +# define BOOST_PP_ITERATION_1 333 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 332 && BOOST_PP_ITERATION_START_1 >= 332 +# define BOOST_PP_ITERATION_1 332 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 331 && BOOST_PP_ITERATION_START_1 >= 331 +# define BOOST_PP_ITERATION_1 331 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 330 && BOOST_PP_ITERATION_START_1 >= 330 +# define BOOST_PP_ITERATION_1 330 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 329 && BOOST_PP_ITERATION_START_1 >= 329 +# define BOOST_PP_ITERATION_1 329 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 328 && BOOST_PP_ITERATION_START_1 >= 328 +# define BOOST_PP_ITERATION_1 328 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 327 && BOOST_PP_ITERATION_START_1 >= 327 +# define BOOST_PP_ITERATION_1 327 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 326 && BOOST_PP_ITERATION_START_1 >= 326 +# define BOOST_PP_ITERATION_1 326 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 325 && BOOST_PP_ITERATION_START_1 >= 325 +# define BOOST_PP_ITERATION_1 325 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 324 && BOOST_PP_ITERATION_START_1 >= 324 +# define BOOST_PP_ITERATION_1 324 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 323 && BOOST_PP_ITERATION_START_1 >= 323 +# define BOOST_PP_ITERATION_1 323 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 322 && BOOST_PP_ITERATION_START_1 >= 322 +# define BOOST_PP_ITERATION_1 322 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 321 && BOOST_PP_ITERATION_START_1 >= 321 +# define BOOST_PP_ITERATION_1 321 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 320 && BOOST_PP_ITERATION_START_1 >= 320 +# define BOOST_PP_ITERATION_1 320 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 319 && BOOST_PP_ITERATION_START_1 >= 319 +# define BOOST_PP_ITERATION_1 319 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 318 && BOOST_PP_ITERATION_START_1 >= 318 +# define BOOST_PP_ITERATION_1 318 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 317 && BOOST_PP_ITERATION_START_1 >= 317 +# define BOOST_PP_ITERATION_1 317 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 316 && BOOST_PP_ITERATION_START_1 >= 316 +# define BOOST_PP_ITERATION_1 316 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 315 && BOOST_PP_ITERATION_START_1 >= 315 +# define BOOST_PP_ITERATION_1 315 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 314 && BOOST_PP_ITERATION_START_1 >= 314 +# define BOOST_PP_ITERATION_1 314 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 313 && BOOST_PP_ITERATION_START_1 >= 313 +# define BOOST_PP_ITERATION_1 313 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 312 && BOOST_PP_ITERATION_START_1 >= 312 +# define BOOST_PP_ITERATION_1 312 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 311 && BOOST_PP_ITERATION_START_1 >= 311 +# define BOOST_PP_ITERATION_1 311 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 310 && BOOST_PP_ITERATION_START_1 >= 310 +# define BOOST_PP_ITERATION_1 310 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 309 && BOOST_PP_ITERATION_START_1 >= 309 +# define BOOST_PP_ITERATION_1 309 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 308 && BOOST_PP_ITERATION_START_1 >= 308 +# define BOOST_PP_ITERATION_1 308 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 307 && BOOST_PP_ITERATION_START_1 >= 307 +# define BOOST_PP_ITERATION_1 307 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 306 && BOOST_PP_ITERATION_START_1 >= 306 +# define BOOST_PP_ITERATION_1 306 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 305 && BOOST_PP_ITERATION_START_1 >= 305 +# define BOOST_PP_ITERATION_1 305 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 304 && BOOST_PP_ITERATION_START_1 >= 304 +# define BOOST_PP_ITERATION_1 304 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 303 && BOOST_PP_ITERATION_START_1 >= 303 +# define BOOST_PP_ITERATION_1 303 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 302 && BOOST_PP_ITERATION_START_1 >= 302 +# define BOOST_PP_ITERATION_1 302 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 301 && BOOST_PP_ITERATION_START_1 >= 301 +# define BOOST_PP_ITERATION_1 301 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 300 && BOOST_PP_ITERATION_START_1 >= 300 +# define BOOST_PP_ITERATION_1 300 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 299 && BOOST_PP_ITERATION_START_1 >= 299 +# define BOOST_PP_ITERATION_1 299 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 298 && BOOST_PP_ITERATION_START_1 >= 298 +# define BOOST_PP_ITERATION_1 298 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 297 && BOOST_PP_ITERATION_START_1 >= 297 +# define BOOST_PP_ITERATION_1 297 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 296 && BOOST_PP_ITERATION_START_1 >= 296 +# define BOOST_PP_ITERATION_1 296 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 295 && BOOST_PP_ITERATION_START_1 >= 295 +# define BOOST_PP_ITERATION_1 295 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 294 && BOOST_PP_ITERATION_START_1 >= 294 +# define BOOST_PP_ITERATION_1 294 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 293 && BOOST_PP_ITERATION_START_1 >= 293 +# define BOOST_PP_ITERATION_1 293 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 292 && BOOST_PP_ITERATION_START_1 >= 292 +# define BOOST_PP_ITERATION_1 292 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 291 && BOOST_PP_ITERATION_START_1 >= 291 +# define BOOST_PP_ITERATION_1 291 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 290 && BOOST_PP_ITERATION_START_1 >= 290 +# define BOOST_PP_ITERATION_1 290 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 289 && BOOST_PP_ITERATION_START_1 >= 289 +# define BOOST_PP_ITERATION_1 289 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 288 && BOOST_PP_ITERATION_START_1 >= 288 +# define BOOST_PP_ITERATION_1 288 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 287 && BOOST_PP_ITERATION_START_1 >= 287 +# define BOOST_PP_ITERATION_1 287 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 286 && BOOST_PP_ITERATION_START_1 >= 286 +# define BOOST_PP_ITERATION_1 286 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 285 && BOOST_PP_ITERATION_START_1 >= 285 +# define BOOST_PP_ITERATION_1 285 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 284 && BOOST_PP_ITERATION_START_1 >= 284 +# define BOOST_PP_ITERATION_1 284 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 283 && BOOST_PP_ITERATION_START_1 >= 283 +# define BOOST_PP_ITERATION_1 283 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 282 && BOOST_PP_ITERATION_START_1 >= 282 +# define BOOST_PP_ITERATION_1 282 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 281 && BOOST_PP_ITERATION_START_1 >= 281 +# define BOOST_PP_ITERATION_1 281 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 280 && BOOST_PP_ITERATION_START_1 >= 280 +# define BOOST_PP_ITERATION_1 280 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 279 && BOOST_PP_ITERATION_START_1 >= 279 +# define BOOST_PP_ITERATION_1 279 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 278 && BOOST_PP_ITERATION_START_1 >= 278 +# define BOOST_PP_ITERATION_1 278 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 277 && BOOST_PP_ITERATION_START_1 >= 277 +# define BOOST_PP_ITERATION_1 277 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 276 && BOOST_PP_ITERATION_START_1 >= 276 +# define BOOST_PP_ITERATION_1 276 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 275 && BOOST_PP_ITERATION_START_1 >= 275 +# define BOOST_PP_ITERATION_1 275 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 274 && BOOST_PP_ITERATION_START_1 >= 274 +# define BOOST_PP_ITERATION_1 274 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 273 && BOOST_PP_ITERATION_START_1 >= 273 +# define BOOST_PP_ITERATION_1 273 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 272 && BOOST_PP_ITERATION_START_1 >= 272 +# define BOOST_PP_ITERATION_1 272 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 271 && BOOST_PP_ITERATION_START_1 >= 271 +# define BOOST_PP_ITERATION_1 271 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 270 && BOOST_PP_ITERATION_START_1 >= 270 +# define BOOST_PP_ITERATION_1 270 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 269 && BOOST_PP_ITERATION_START_1 >= 269 +# define BOOST_PP_ITERATION_1 269 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 268 && BOOST_PP_ITERATION_START_1 >= 268 +# define BOOST_PP_ITERATION_1 268 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 267 && BOOST_PP_ITERATION_START_1 >= 267 +# define BOOST_PP_ITERATION_1 267 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 266 && BOOST_PP_ITERATION_START_1 >= 266 +# define BOOST_PP_ITERATION_1 266 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 265 && BOOST_PP_ITERATION_START_1 >= 265 +# define BOOST_PP_ITERATION_1 265 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 264 && BOOST_PP_ITERATION_START_1 >= 264 +# define BOOST_PP_ITERATION_1 264 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 263 && BOOST_PP_ITERATION_START_1 >= 263 +# define BOOST_PP_ITERATION_1 263 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 262 && BOOST_PP_ITERATION_START_1 >= 262 +# define BOOST_PP_ITERATION_1 262 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 261 && BOOST_PP_ITERATION_START_1 >= 261 +# define BOOST_PP_ITERATION_1 261 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 260 && BOOST_PP_ITERATION_START_1 >= 260 +# define BOOST_PP_ITERATION_1 260 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 259 && BOOST_PP_ITERATION_START_1 >= 259 +# define BOOST_PP_ITERATION_1 259 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 258 && BOOST_PP_ITERATION_START_1 >= 258 +# define BOOST_PP_ITERATION_1 258 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif +# if BOOST_PP_ITERATION_FINISH_1 <= 257 && BOOST_PP_ITERATION_START_1 >= 257 +# define BOOST_PP_ITERATION_1 257 +# include BOOST_PP_FILENAME_1 +# undef BOOST_PP_ITERATION_1 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse2_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse2_1024.hpp new file mode 100644 index 000000000..0d9239db7 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse2_1024.hpp @@ -0,0 +1,2571 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * Distributed under the Boost Software License, Version 1.0. (See +# * accompanying file LICENSE_2_0.txt or copy at +# * http://www.boost.org/LICENSE_2_0.txt) +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_FINISH_2 <= 1024 && BOOST_PP_ITERATION_START_2 >= 1024 +# define BOOST_PP_ITERATION_2 1024 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1023 && BOOST_PP_ITERATION_START_2 >= 1023 +# define BOOST_PP_ITERATION_2 1023 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1022 && BOOST_PP_ITERATION_START_2 >= 1022 +# define BOOST_PP_ITERATION_2 1022 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1021 && BOOST_PP_ITERATION_START_2 >= 1021 +# define BOOST_PP_ITERATION_2 1021 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1020 && BOOST_PP_ITERATION_START_2 >= 1020 +# define BOOST_PP_ITERATION_2 1020 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1019 && BOOST_PP_ITERATION_START_2 >= 1019 +# define BOOST_PP_ITERATION_2 1019 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1018 && BOOST_PP_ITERATION_START_2 >= 1018 +# define BOOST_PP_ITERATION_2 1018 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1017 && BOOST_PP_ITERATION_START_2 >= 1017 +# define BOOST_PP_ITERATION_2 1017 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1016 && BOOST_PP_ITERATION_START_2 >= 1016 +# define BOOST_PP_ITERATION_2 1016 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1015 && BOOST_PP_ITERATION_START_2 >= 1015 +# define BOOST_PP_ITERATION_2 1015 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1014 && BOOST_PP_ITERATION_START_2 >= 1014 +# define BOOST_PP_ITERATION_2 1014 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1013 && BOOST_PP_ITERATION_START_2 >= 1013 +# define BOOST_PP_ITERATION_2 1013 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1012 && BOOST_PP_ITERATION_START_2 >= 1012 +# define BOOST_PP_ITERATION_2 1012 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1011 && BOOST_PP_ITERATION_START_2 >= 1011 +# define BOOST_PP_ITERATION_2 1011 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1010 && BOOST_PP_ITERATION_START_2 >= 1010 +# define BOOST_PP_ITERATION_2 1010 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1009 && BOOST_PP_ITERATION_START_2 >= 1009 +# define BOOST_PP_ITERATION_2 1009 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1008 && BOOST_PP_ITERATION_START_2 >= 1008 +# define BOOST_PP_ITERATION_2 1008 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1007 && BOOST_PP_ITERATION_START_2 >= 1007 +# define BOOST_PP_ITERATION_2 1007 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1006 && BOOST_PP_ITERATION_START_2 >= 1006 +# define BOOST_PP_ITERATION_2 1006 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1005 && BOOST_PP_ITERATION_START_2 >= 1005 +# define BOOST_PP_ITERATION_2 1005 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1004 && BOOST_PP_ITERATION_START_2 >= 1004 +# define BOOST_PP_ITERATION_2 1004 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1003 && BOOST_PP_ITERATION_START_2 >= 1003 +# define BOOST_PP_ITERATION_2 1003 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1002 && BOOST_PP_ITERATION_START_2 >= 1002 +# define BOOST_PP_ITERATION_2 1002 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1001 && BOOST_PP_ITERATION_START_2 >= 1001 +# define BOOST_PP_ITERATION_2 1001 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1000 && BOOST_PP_ITERATION_START_2 >= 1000 +# define BOOST_PP_ITERATION_2 1000 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 999 && BOOST_PP_ITERATION_START_2 >= 999 +# define BOOST_PP_ITERATION_2 999 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 998 && BOOST_PP_ITERATION_START_2 >= 998 +# define BOOST_PP_ITERATION_2 998 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 997 && BOOST_PP_ITERATION_START_2 >= 997 +# define BOOST_PP_ITERATION_2 997 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 996 && BOOST_PP_ITERATION_START_2 >= 996 +# define BOOST_PP_ITERATION_2 996 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 995 && BOOST_PP_ITERATION_START_2 >= 995 +# define BOOST_PP_ITERATION_2 995 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 994 && BOOST_PP_ITERATION_START_2 >= 994 +# define BOOST_PP_ITERATION_2 994 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 993 && BOOST_PP_ITERATION_START_2 >= 993 +# define BOOST_PP_ITERATION_2 993 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 992 && BOOST_PP_ITERATION_START_2 >= 992 +# define BOOST_PP_ITERATION_2 992 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 991 && BOOST_PP_ITERATION_START_2 >= 991 +# define BOOST_PP_ITERATION_2 991 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 990 && BOOST_PP_ITERATION_START_2 >= 990 +# define BOOST_PP_ITERATION_2 990 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 989 && BOOST_PP_ITERATION_START_2 >= 989 +# define BOOST_PP_ITERATION_2 989 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 988 && BOOST_PP_ITERATION_START_2 >= 988 +# define BOOST_PP_ITERATION_2 988 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 987 && BOOST_PP_ITERATION_START_2 >= 987 +# define BOOST_PP_ITERATION_2 987 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 986 && BOOST_PP_ITERATION_START_2 >= 986 +# define BOOST_PP_ITERATION_2 986 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 985 && BOOST_PP_ITERATION_START_2 >= 985 +# define BOOST_PP_ITERATION_2 985 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 984 && BOOST_PP_ITERATION_START_2 >= 984 +# define BOOST_PP_ITERATION_2 984 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 983 && BOOST_PP_ITERATION_START_2 >= 983 +# define BOOST_PP_ITERATION_2 983 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 982 && BOOST_PP_ITERATION_START_2 >= 982 +# define BOOST_PP_ITERATION_2 982 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 981 && BOOST_PP_ITERATION_START_2 >= 981 +# define BOOST_PP_ITERATION_2 981 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 980 && BOOST_PP_ITERATION_START_2 >= 980 +# define BOOST_PP_ITERATION_2 980 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 979 && BOOST_PP_ITERATION_START_2 >= 979 +# define BOOST_PP_ITERATION_2 979 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 978 && BOOST_PP_ITERATION_START_2 >= 978 +# define BOOST_PP_ITERATION_2 978 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 977 && BOOST_PP_ITERATION_START_2 >= 977 +# define BOOST_PP_ITERATION_2 977 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 976 && BOOST_PP_ITERATION_START_2 >= 976 +# define BOOST_PP_ITERATION_2 976 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 975 && BOOST_PP_ITERATION_START_2 >= 975 +# define BOOST_PP_ITERATION_2 975 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 974 && BOOST_PP_ITERATION_START_2 >= 974 +# define BOOST_PP_ITERATION_2 974 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 973 && BOOST_PP_ITERATION_START_2 >= 973 +# define BOOST_PP_ITERATION_2 973 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 972 && BOOST_PP_ITERATION_START_2 >= 972 +# define BOOST_PP_ITERATION_2 972 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 971 && BOOST_PP_ITERATION_START_2 >= 971 +# define BOOST_PP_ITERATION_2 971 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 970 && BOOST_PP_ITERATION_START_2 >= 970 +# define BOOST_PP_ITERATION_2 970 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 969 && BOOST_PP_ITERATION_START_2 >= 969 +# define BOOST_PP_ITERATION_2 969 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 968 && BOOST_PP_ITERATION_START_2 >= 968 +# define BOOST_PP_ITERATION_2 968 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 967 && BOOST_PP_ITERATION_START_2 >= 967 +# define BOOST_PP_ITERATION_2 967 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 966 && BOOST_PP_ITERATION_START_2 >= 966 +# define BOOST_PP_ITERATION_2 966 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 965 && BOOST_PP_ITERATION_START_2 >= 965 +# define BOOST_PP_ITERATION_2 965 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 964 && BOOST_PP_ITERATION_START_2 >= 964 +# define BOOST_PP_ITERATION_2 964 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 963 && BOOST_PP_ITERATION_START_2 >= 963 +# define BOOST_PP_ITERATION_2 963 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 962 && BOOST_PP_ITERATION_START_2 >= 962 +# define BOOST_PP_ITERATION_2 962 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 961 && BOOST_PP_ITERATION_START_2 >= 961 +# define BOOST_PP_ITERATION_2 961 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 960 && BOOST_PP_ITERATION_START_2 >= 960 +# define BOOST_PP_ITERATION_2 960 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 959 && BOOST_PP_ITERATION_START_2 >= 959 +# define BOOST_PP_ITERATION_2 959 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 958 && BOOST_PP_ITERATION_START_2 >= 958 +# define BOOST_PP_ITERATION_2 958 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 957 && BOOST_PP_ITERATION_START_2 >= 957 +# define BOOST_PP_ITERATION_2 957 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 956 && BOOST_PP_ITERATION_START_2 >= 956 +# define BOOST_PP_ITERATION_2 956 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 955 && BOOST_PP_ITERATION_START_2 >= 955 +# define BOOST_PP_ITERATION_2 955 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 954 && BOOST_PP_ITERATION_START_2 >= 954 +# define BOOST_PP_ITERATION_2 954 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 953 && BOOST_PP_ITERATION_START_2 >= 953 +# define BOOST_PP_ITERATION_2 953 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 952 && BOOST_PP_ITERATION_START_2 >= 952 +# define BOOST_PP_ITERATION_2 952 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 951 && BOOST_PP_ITERATION_START_2 >= 951 +# define BOOST_PP_ITERATION_2 951 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 950 && BOOST_PP_ITERATION_START_2 >= 950 +# define BOOST_PP_ITERATION_2 950 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 949 && BOOST_PP_ITERATION_START_2 >= 949 +# define BOOST_PP_ITERATION_2 949 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 948 && BOOST_PP_ITERATION_START_2 >= 948 +# define BOOST_PP_ITERATION_2 948 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 947 && BOOST_PP_ITERATION_START_2 >= 947 +# define BOOST_PP_ITERATION_2 947 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 946 && BOOST_PP_ITERATION_START_2 >= 946 +# define BOOST_PP_ITERATION_2 946 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 945 && BOOST_PP_ITERATION_START_2 >= 945 +# define BOOST_PP_ITERATION_2 945 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 944 && BOOST_PP_ITERATION_START_2 >= 944 +# define BOOST_PP_ITERATION_2 944 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 943 && BOOST_PP_ITERATION_START_2 >= 943 +# define BOOST_PP_ITERATION_2 943 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 942 && BOOST_PP_ITERATION_START_2 >= 942 +# define BOOST_PP_ITERATION_2 942 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 941 && BOOST_PP_ITERATION_START_2 >= 941 +# define BOOST_PP_ITERATION_2 941 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 940 && BOOST_PP_ITERATION_START_2 >= 940 +# define BOOST_PP_ITERATION_2 940 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 939 && BOOST_PP_ITERATION_START_2 >= 939 +# define BOOST_PP_ITERATION_2 939 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 938 && BOOST_PP_ITERATION_START_2 >= 938 +# define BOOST_PP_ITERATION_2 938 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 937 && BOOST_PP_ITERATION_START_2 >= 937 +# define BOOST_PP_ITERATION_2 937 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 936 && BOOST_PP_ITERATION_START_2 >= 936 +# define BOOST_PP_ITERATION_2 936 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 935 && BOOST_PP_ITERATION_START_2 >= 935 +# define BOOST_PP_ITERATION_2 935 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 934 && BOOST_PP_ITERATION_START_2 >= 934 +# define BOOST_PP_ITERATION_2 934 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 933 && BOOST_PP_ITERATION_START_2 >= 933 +# define BOOST_PP_ITERATION_2 933 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 932 && BOOST_PP_ITERATION_START_2 >= 932 +# define BOOST_PP_ITERATION_2 932 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 931 && BOOST_PP_ITERATION_START_2 >= 931 +# define BOOST_PP_ITERATION_2 931 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 930 && BOOST_PP_ITERATION_START_2 >= 930 +# define BOOST_PP_ITERATION_2 930 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 929 && BOOST_PP_ITERATION_START_2 >= 929 +# define BOOST_PP_ITERATION_2 929 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 928 && BOOST_PP_ITERATION_START_2 >= 928 +# define BOOST_PP_ITERATION_2 928 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 927 && BOOST_PP_ITERATION_START_2 >= 927 +# define BOOST_PP_ITERATION_2 927 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 926 && BOOST_PP_ITERATION_START_2 >= 926 +# define BOOST_PP_ITERATION_2 926 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 925 && BOOST_PP_ITERATION_START_2 >= 925 +# define BOOST_PP_ITERATION_2 925 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 924 && BOOST_PP_ITERATION_START_2 >= 924 +# define BOOST_PP_ITERATION_2 924 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 923 && BOOST_PP_ITERATION_START_2 >= 923 +# define BOOST_PP_ITERATION_2 923 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 922 && BOOST_PP_ITERATION_START_2 >= 922 +# define BOOST_PP_ITERATION_2 922 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 921 && BOOST_PP_ITERATION_START_2 >= 921 +# define BOOST_PP_ITERATION_2 921 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 920 && BOOST_PP_ITERATION_START_2 >= 920 +# define BOOST_PP_ITERATION_2 920 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 919 && BOOST_PP_ITERATION_START_2 >= 919 +# define BOOST_PP_ITERATION_2 919 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 918 && BOOST_PP_ITERATION_START_2 >= 918 +# define BOOST_PP_ITERATION_2 918 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 917 && BOOST_PP_ITERATION_START_2 >= 917 +# define BOOST_PP_ITERATION_2 917 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 916 && BOOST_PP_ITERATION_START_2 >= 916 +# define BOOST_PP_ITERATION_2 916 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 915 && BOOST_PP_ITERATION_START_2 >= 915 +# define BOOST_PP_ITERATION_2 915 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 914 && BOOST_PP_ITERATION_START_2 >= 914 +# define BOOST_PP_ITERATION_2 914 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 913 && BOOST_PP_ITERATION_START_2 >= 913 +# define BOOST_PP_ITERATION_2 913 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 912 && BOOST_PP_ITERATION_START_2 >= 912 +# define BOOST_PP_ITERATION_2 912 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 911 && BOOST_PP_ITERATION_START_2 >= 911 +# define BOOST_PP_ITERATION_2 911 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 910 && BOOST_PP_ITERATION_START_2 >= 910 +# define BOOST_PP_ITERATION_2 910 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 909 && BOOST_PP_ITERATION_START_2 >= 909 +# define BOOST_PP_ITERATION_2 909 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 908 && BOOST_PP_ITERATION_START_2 >= 908 +# define BOOST_PP_ITERATION_2 908 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 907 && BOOST_PP_ITERATION_START_2 >= 907 +# define BOOST_PP_ITERATION_2 907 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 906 && BOOST_PP_ITERATION_START_2 >= 906 +# define BOOST_PP_ITERATION_2 906 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 905 && BOOST_PP_ITERATION_START_2 >= 905 +# define BOOST_PP_ITERATION_2 905 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 904 && BOOST_PP_ITERATION_START_2 >= 904 +# define BOOST_PP_ITERATION_2 904 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 903 && BOOST_PP_ITERATION_START_2 >= 903 +# define BOOST_PP_ITERATION_2 903 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 902 && BOOST_PP_ITERATION_START_2 >= 902 +# define BOOST_PP_ITERATION_2 902 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 901 && BOOST_PP_ITERATION_START_2 >= 901 +# define BOOST_PP_ITERATION_2 901 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 900 && BOOST_PP_ITERATION_START_2 >= 900 +# define BOOST_PP_ITERATION_2 900 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 899 && BOOST_PP_ITERATION_START_2 >= 899 +# define BOOST_PP_ITERATION_2 899 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 898 && BOOST_PP_ITERATION_START_2 >= 898 +# define BOOST_PP_ITERATION_2 898 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 897 && BOOST_PP_ITERATION_START_2 >= 897 +# define BOOST_PP_ITERATION_2 897 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 896 && BOOST_PP_ITERATION_START_2 >= 896 +# define BOOST_PP_ITERATION_2 896 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 895 && BOOST_PP_ITERATION_START_2 >= 895 +# define BOOST_PP_ITERATION_2 895 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 894 && BOOST_PP_ITERATION_START_2 >= 894 +# define BOOST_PP_ITERATION_2 894 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 893 && BOOST_PP_ITERATION_START_2 >= 893 +# define BOOST_PP_ITERATION_2 893 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 892 && BOOST_PP_ITERATION_START_2 >= 892 +# define BOOST_PP_ITERATION_2 892 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 891 && BOOST_PP_ITERATION_START_2 >= 891 +# define BOOST_PP_ITERATION_2 891 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 890 && BOOST_PP_ITERATION_START_2 >= 890 +# define BOOST_PP_ITERATION_2 890 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 889 && BOOST_PP_ITERATION_START_2 >= 889 +# define BOOST_PP_ITERATION_2 889 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 888 && BOOST_PP_ITERATION_START_2 >= 888 +# define BOOST_PP_ITERATION_2 888 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 887 && BOOST_PP_ITERATION_START_2 >= 887 +# define BOOST_PP_ITERATION_2 887 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 886 && BOOST_PP_ITERATION_START_2 >= 886 +# define BOOST_PP_ITERATION_2 886 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 885 && BOOST_PP_ITERATION_START_2 >= 885 +# define BOOST_PP_ITERATION_2 885 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 884 && BOOST_PP_ITERATION_START_2 >= 884 +# define BOOST_PP_ITERATION_2 884 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 883 && BOOST_PP_ITERATION_START_2 >= 883 +# define BOOST_PP_ITERATION_2 883 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 882 && BOOST_PP_ITERATION_START_2 >= 882 +# define BOOST_PP_ITERATION_2 882 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 881 && BOOST_PP_ITERATION_START_2 >= 881 +# define BOOST_PP_ITERATION_2 881 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 880 && BOOST_PP_ITERATION_START_2 >= 880 +# define BOOST_PP_ITERATION_2 880 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 879 && BOOST_PP_ITERATION_START_2 >= 879 +# define BOOST_PP_ITERATION_2 879 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 878 && BOOST_PP_ITERATION_START_2 >= 878 +# define BOOST_PP_ITERATION_2 878 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 877 && BOOST_PP_ITERATION_START_2 >= 877 +# define BOOST_PP_ITERATION_2 877 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 876 && BOOST_PP_ITERATION_START_2 >= 876 +# define BOOST_PP_ITERATION_2 876 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 875 && BOOST_PP_ITERATION_START_2 >= 875 +# define BOOST_PP_ITERATION_2 875 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 874 && BOOST_PP_ITERATION_START_2 >= 874 +# define BOOST_PP_ITERATION_2 874 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 873 && BOOST_PP_ITERATION_START_2 >= 873 +# define BOOST_PP_ITERATION_2 873 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 872 && BOOST_PP_ITERATION_START_2 >= 872 +# define BOOST_PP_ITERATION_2 872 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 871 && BOOST_PP_ITERATION_START_2 >= 871 +# define BOOST_PP_ITERATION_2 871 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 870 && BOOST_PP_ITERATION_START_2 >= 870 +# define BOOST_PP_ITERATION_2 870 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 869 && BOOST_PP_ITERATION_START_2 >= 869 +# define BOOST_PP_ITERATION_2 869 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 868 && BOOST_PP_ITERATION_START_2 >= 868 +# define BOOST_PP_ITERATION_2 868 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 867 && BOOST_PP_ITERATION_START_2 >= 867 +# define BOOST_PP_ITERATION_2 867 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 866 && BOOST_PP_ITERATION_START_2 >= 866 +# define BOOST_PP_ITERATION_2 866 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 865 && BOOST_PP_ITERATION_START_2 >= 865 +# define BOOST_PP_ITERATION_2 865 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 864 && BOOST_PP_ITERATION_START_2 >= 864 +# define BOOST_PP_ITERATION_2 864 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 863 && BOOST_PP_ITERATION_START_2 >= 863 +# define BOOST_PP_ITERATION_2 863 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 862 && BOOST_PP_ITERATION_START_2 >= 862 +# define BOOST_PP_ITERATION_2 862 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 861 && BOOST_PP_ITERATION_START_2 >= 861 +# define BOOST_PP_ITERATION_2 861 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 860 && BOOST_PP_ITERATION_START_2 >= 860 +# define BOOST_PP_ITERATION_2 860 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 859 && BOOST_PP_ITERATION_START_2 >= 859 +# define BOOST_PP_ITERATION_2 859 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 858 && BOOST_PP_ITERATION_START_2 >= 858 +# define BOOST_PP_ITERATION_2 858 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 857 && BOOST_PP_ITERATION_START_2 >= 857 +# define BOOST_PP_ITERATION_2 857 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 856 && BOOST_PP_ITERATION_START_2 >= 856 +# define BOOST_PP_ITERATION_2 856 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 855 && BOOST_PP_ITERATION_START_2 >= 855 +# define BOOST_PP_ITERATION_2 855 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 854 && BOOST_PP_ITERATION_START_2 >= 854 +# define BOOST_PP_ITERATION_2 854 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 853 && BOOST_PP_ITERATION_START_2 >= 853 +# define BOOST_PP_ITERATION_2 853 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 852 && BOOST_PP_ITERATION_START_2 >= 852 +# define BOOST_PP_ITERATION_2 852 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 851 && BOOST_PP_ITERATION_START_2 >= 851 +# define BOOST_PP_ITERATION_2 851 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 850 && BOOST_PP_ITERATION_START_2 >= 850 +# define BOOST_PP_ITERATION_2 850 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 849 && BOOST_PP_ITERATION_START_2 >= 849 +# define BOOST_PP_ITERATION_2 849 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 848 && BOOST_PP_ITERATION_START_2 >= 848 +# define BOOST_PP_ITERATION_2 848 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 847 && BOOST_PP_ITERATION_START_2 >= 847 +# define BOOST_PP_ITERATION_2 847 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 846 && BOOST_PP_ITERATION_START_2 >= 846 +# define BOOST_PP_ITERATION_2 846 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 845 && BOOST_PP_ITERATION_START_2 >= 845 +# define BOOST_PP_ITERATION_2 845 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 844 && BOOST_PP_ITERATION_START_2 >= 844 +# define BOOST_PP_ITERATION_2 844 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 843 && BOOST_PP_ITERATION_START_2 >= 843 +# define BOOST_PP_ITERATION_2 843 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 842 && BOOST_PP_ITERATION_START_2 >= 842 +# define BOOST_PP_ITERATION_2 842 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 841 && BOOST_PP_ITERATION_START_2 >= 841 +# define BOOST_PP_ITERATION_2 841 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 840 && BOOST_PP_ITERATION_START_2 >= 840 +# define BOOST_PP_ITERATION_2 840 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 839 && BOOST_PP_ITERATION_START_2 >= 839 +# define BOOST_PP_ITERATION_2 839 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 838 && BOOST_PP_ITERATION_START_2 >= 838 +# define BOOST_PP_ITERATION_2 838 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 837 && BOOST_PP_ITERATION_START_2 >= 837 +# define BOOST_PP_ITERATION_2 837 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 836 && BOOST_PP_ITERATION_START_2 >= 836 +# define BOOST_PP_ITERATION_2 836 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 835 && BOOST_PP_ITERATION_START_2 >= 835 +# define BOOST_PP_ITERATION_2 835 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 834 && BOOST_PP_ITERATION_START_2 >= 834 +# define BOOST_PP_ITERATION_2 834 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 833 && BOOST_PP_ITERATION_START_2 >= 833 +# define BOOST_PP_ITERATION_2 833 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 832 && BOOST_PP_ITERATION_START_2 >= 832 +# define BOOST_PP_ITERATION_2 832 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 831 && BOOST_PP_ITERATION_START_2 >= 831 +# define BOOST_PP_ITERATION_2 831 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 830 && BOOST_PP_ITERATION_START_2 >= 830 +# define BOOST_PP_ITERATION_2 830 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 829 && BOOST_PP_ITERATION_START_2 >= 829 +# define BOOST_PP_ITERATION_2 829 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 828 && BOOST_PP_ITERATION_START_2 >= 828 +# define BOOST_PP_ITERATION_2 828 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 827 && BOOST_PP_ITERATION_START_2 >= 827 +# define BOOST_PP_ITERATION_2 827 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 826 && BOOST_PP_ITERATION_START_2 >= 826 +# define BOOST_PP_ITERATION_2 826 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 825 && BOOST_PP_ITERATION_START_2 >= 825 +# define BOOST_PP_ITERATION_2 825 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 824 && BOOST_PP_ITERATION_START_2 >= 824 +# define BOOST_PP_ITERATION_2 824 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 823 && BOOST_PP_ITERATION_START_2 >= 823 +# define BOOST_PP_ITERATION_2 823 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 822 && BOOST_PP_ITERATION_START_2 >= 822 +# define BOOST_PP_ITERATION_2 822 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 821 && BOOST_PP_ITERATION_START_2 >= 821 +# define BOOST_PP_ITERATION_2 821 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 820 && BOOST_PP_ITERATION_START_2 >= 820 +# define BOOST_PP_ITERATION_2 820 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 819 && BOOST_PP_ITERATION_START_2 >= 819 +# define BOOST_PP_ITERATION_2 819 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 818 && BOOST_PP_ITERATION_START_2 >= 818 +# define BOOST_PP_ITERATION_2 818 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 817 && BOOST_PP_ITERATION_START_2 >= 817 +# define BOOST_PP_ITERATION_2 817 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 816 && BOOST_PP_ITERATION_START_2 >= 816 +# define BOOST_PP_ITERATION_2 816 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 815 && BOOST_PP_ITERATION_START_2 >= 815 +# define BOOST_PP_ITERATION_2 815 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 814 && BOOST_PP_ITERATION_START_2 >= 814 +# define BOOST_PP_ITERATION_2 814 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 813 && BOOST_PP_ITERATION_START_2 >= 813 +# define BOOST_PP_ITERATION_2 813 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 812 && BOOST_PP_ITERATION_START_2 >= 812 +# define BOOST_PP_ITERATION_2 812 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 811 && BOOST_PP_ITERATION_START_2 >= 811 +# define BOOST_PP_ITERATION_2 811 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 810 && BOOST_PP_ITERATION_START_2 >= 810 +# define BOOST_PP_ITERATION_2 810 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 809 && BOOST_PP_ITERATION_START_2 >= 809 +# define BOOST_PP_ITERATION_2 809 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 808 && BOOST_PP_ITERATION_START_2 >= 808 +# define BOOST_PP_ITERATION_2 808 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 807 && BOOST_PP_ITERATION_START_2 >= 807 +# define BOOST_PP_ITERATION_2 807 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 806 && BOOST_PP_ITERATION_START_2 >= 806 +# define BOOST_PP_ITERATION_2 806 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 805 && BOOST_PP_ITERATION_START_2 >= 805 +# define BOOST_PP_ITERATION_2 805 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 804 && BOOST_PP_ITERATION_START_2 >= 804 +# define BOOST_PP_ITERATION_2 804 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 803 && BOOST_PP_ITERATION_START_2 >= 803 +# define BOOST_PP_ITERATION_2 803 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 802 && BOOST_PP_ITERATION_START_2 >= 802 +# define BOOST_PP_ITERATION_2 802 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 801 && BOOST_PP_ITERATION_START_2 >= 801 +# define BOOST_PP_ITERATION_2 801 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 800 && BOOST_PP_ITERATION_START_2 >= 800 +# define BOOST_PP_ITERATION_2 800 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 799 && BOOST_PP_ITERATION_START_2 >= 799 +# define BOOST_PP_ITERATION_2 799 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 798 && BOOST_PP_ITERATION_START_2 >= 798 +# define BOOST_PP_ITERATION_2 798 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 797 && BOOST_PP_ITERATION_START_2 >= 797 +# define BOOST_PP_ITERATION_2 797 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 796 && BOOST_PP_ITERATION_START_2 >= 796 +# define BOOST_PP_ITERATION_2 796 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 795 && BOOST_PP_ITERATION_START_2 >= 795 +# define BOOST_PP_ITERATION_2 795 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 794 && BOOST_PP_ITERATION_START_2 >= 794 +# define BOOST_PP_ITERATION_2 794 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 793 && BOOST_PP_ITERATION_START_2 >= 793 +# define BOOST_PP_ITERATION_2 793 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 792 && BOOST_PP_ITERATION_START_2 >= 792 +# define BOOST_PP_ITERATION_2 792 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 791 && BOOST_PP_ITERATION_START_2 >= 791 +# define BOOST_PP_ITERATION_2 791 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 790 && BOOST_PP_ITERATION_START_2 >= 790 +# define BOOST_PP_ITERATION_2 790 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 789 && BOOST_PP_ITERATION_START_2 >= 789 +# define BOOST_PP_ITERATION_2 789 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 788 && BOOST_PP_ITERATION_START_2 >= 788 +# define BOOST_PP_ITERATION_2 788 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 787 && BOOST_PP_ITERATION_START_2 >= 787 +# define BOOST_PP_ITERATION_2 787 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 786 && BOOST_PP_ITERATION_START_2 >= 786 +# define BOOST_PP_ITERATION_2 786 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 785 && BOOST_PP_ITERATION_START_2 >= 785 +# define BOOST_PP_ITERATION_2 785 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 784 && BOOST_PP_ITERATION_START_2 >= 784 +# define BOOST_PP_ITERATION_2 784 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 783 && BOOST_PP_ITERATION_START_2 >= 783 +# define BOOST_PP_ITERATION_2 783 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 782 && BOOST_PP_ITERATION_START_2 >= 782 +# define BOOST_PP_ITERATION_2 782 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 781 && BOOST_PP_ITERATION_START_2 >= 781 +# define BOOST_PP_ITERATION_2 781 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 780 && BOOST_PP_ITERATION_START_2 >= 780 +# define BOOST_PP_ITERATION_2 780 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 779 && BOOST_PP_ITERATION_START_2 >= 779 +# define BOOST_PP_ITERATION_2 779 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 778 && BOOST_PP_ITERATION_START_2 >= 778 +# define BOOST_PP_ITERATION_2 778 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 777 && BOOST_PP_ITERATION_START_2 >= 777 +# define BOOST_PP_ITERATION_2 777 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 776 && BOOST_PP_ITERATION_START_2 >= 776 +# define BOOST_PP_ITERATION_2 776 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 775 && BOOST_PP_ITERATION_START_2 >= 775 +# define BOOST_PP_ITERATION_2 775 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 774 && BOOST_PP_ITERATION_START_2 >= 774 +# define BOOST_PP_ITERATION_2 774 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 773 && BOOST_PP_ITERATION_START_2 >= 773 +# define BOOST_PP_ITERATION_2 773 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 772 && BOOST_PP_ITERATION_START_2 >= 772 +# define BOOST_PP_ITERATION_2 772 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 771 && BOOST_PP_ITERATION_START_2 >= 771 +# define BOOST_PP_ITERATION_2 771 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 770 && BOOST_PP_ITERATION_START_2 >= 770 +# define BOOST_PP_ITERATION_2 770 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 769 && BOOST_PP_ITERATION_START_2 >= 769 +# define BOOST_PP_ITERATION_2 769 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 768 && BOOST_PP_ITERATION_START_2 >= 768 +# define BOOST_PP_ITERATION_2 768 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 767 && BOOST_PP_ITERATION_START_2 >= 767 +# define BOOST_PP_ITERATION_2 767 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 766 && BOOST_PP_ITERATION_START_2 >= 766 +# define BOOST_PP_ITERATION_2 766 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 765 && BOOST_PP_ITERATION_START_2 >= 765 +# define BOOST_PP_ITERATION_2 765 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 764 && BOOST_PP_ITERATION_START_2 >= 764 +# define BOOST_PP_ITERATION_2 764 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 763 && BOOST_PP_ITERATION_START_2 >= 763 +# define BOOST_PP_ITERATION_2 763 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 762 && BOOST_PP_ITERATION_START_2 >= 762 +# define BOOST_PP_ITERATION_2 762 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 761 && BOOST_PP_ITERATION_START_2 >= 761 +# define BOOST_PP_ITERATION_2 761 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 760 && BOOST_PP_ITERATION_START_2 >= 760 +# define BOOST_PP_ITERATION_2 760 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 759 && BOOST_PP_ITERATION_START_2 >= 759 +# define BOOST_PP_ITERATION_2 759 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 758 && BOOST_PP_ITERATION_START_2 >= 758 +# define BOOST_PP_ITERATION_2 758 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 757 && BOOST_PP_ITERATION_START_2 >= 757 +# define BOOST_PP_ITERATION_2 757 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 756 && BOOST_PP_ITERATION_START_2 >= 756 +# define BOOST_PP_ITERATION_2 756 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 755 && BOOST_PP_ITERATION_START_2 >= 755 +# define BOOST_PP_ITERATION_2 755 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 754 && BOOST_PP_ITERATION_START_2 >= 754 +# define BOOST_PP_ITERATION_2 754 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 753 && BOOST_PP_ITERATION_START_2 >= 753 +# define BOOST_PP_ITERATION_2 753 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 752 && BOOST_PP_ITERATION_START_2 >= 752 +# define BOOST_PP_ITERATION_2 752 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 751 && BOOST_PP_ITERATION_START_2 >= 751 +# define BOOST_PP_ITERATION_2 751 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 750 && BOOST_PP_ITERATION_START_2 >= 750 +# define BOOST_PP_ITERATION_2 750 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 749 && BOOST_PP_ITERATION_START_2 >= 749 +# define BOOST_PP_ITERATION_2 749 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 748 && BOOST_PP_ITERATION_START_2 >= 748 +# define BOOST_PP_ITERATION_2 748 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 747 && BOOST_PP_ITERATION_START_2 >= 747 +# define BOOST_PP_ITERATION_2 747 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 746 && BOOST_PP_ITERATION_START_2 >= 746 +# define BOOST_PP_ITERATION_2 746 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 745 && BOOST_PP_ITERATION_START_2 >= 745 +# define BOOST_PP_ITERATION_2 745 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 744 && BOOST_PP_ITERATION_START_2 >= 744 +# define BOOST_PP_ITERATION_2 744 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 743 && BOOST_PP_ITERATION_START_2 >= 743 +# define BOOST_PP_ITERATION_2 743 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 742 && BOOST_PP_ITERATION_START_2 >= 742 +# define BOOST_PP_ITERATION_2 742 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 741 && BOOST_PP_ITERATION_START_2 >= 741 +# define BOOST_PP_ITERATION_2 741 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 740 && BOOST_PP_ITERATION_START_2 >= 740 +# define BOOST_PP_ITERATION_2 740 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 739 && BOOST_PP_ITERATION_START_2 >= 739 +# define BOOST_PP_ITERATION_2 739 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 738 && BOOST_PP_ITERATION_START_2 >= 738 +# define BOOST_PP_ITERATION_2 738 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 737 && BOOST_PP_ITERATION_START_2 >= 737 +# define BOOST_PP_ITERATION_2 737 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 736 && BOOST_PP_ITERATION_START_2 >= 736 +# define BOOST_PP_ITERATION_2 736 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 735 && BOOST_PP_ITERATION_START_2 >= 735 +# define BOOST_PP_ITERATION_2 735 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 734 && BOOST_PP_ITERATION_START_2 >= 734 +# define BOOST_PP_ITERATION_2 734 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 733 && BOOST_PP_ITERATION_START_2 >= 733 +# define BOOST_PP_ITERATION_2 733 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 732 && BOOST_PP_ITERATION_START_2 >= 732 +# define BOOST_PP_ITERATION_2 732 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 731 && BOOST_PP_ITERATION_START_2 >= 731 +# define BOOST_PP_ITERATION_2 731 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 730 && BOOST_PP_ITERATION_START_2 >= 730 +# define BOOST_PP_ITERATION_2 730 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 729 && BOOST_PP_ITERATION_START_2 >= 729 +# define BOOST_PP_ITERATION_2 729 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 728 && BOOST_PP_ITERATION_START_2 >= 728 +# define BOOST_PP_ITERATION_2 728 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 727 && BOOST_PP_ITERATION_START_2 >= 727 +# define BOOST_PP_ITERATION_2 727 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 726 && BOOST_PP_ITERATION_START_2 >= 726 +# define BOOST_PP_ITERATION_2 726 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 725 && BOOST_PP_ITERATION_START_2 >= 725 +# define BOOST_PP_ITERATION_2 725 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 724 && BOOST_PP_ITERATION_START_2 >= 724 +# define BOOST_PP_ITERATION_2 724 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 723 && BOOST_PP_ITERATION_START_2 >= 723 +# define BOOST_PP_ITERATION_2 723 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 722 && BOOST_PP_ITERATION_START_2 >= 722 +# define BOOST_PP_ITERATION_2 722 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 721 && BOOST_PP_ITERATION_START_2 >= 721 +# define BOOST_PP_ITERATION_2 721 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 720 && BOOST_PP_ITERATION_START_2 >= 720 +# define BOOST_PP_ITERATION_2 720 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 719 && BOOST_PP_ITERATION_START_2 >= 719 +# define BOOST_PP_ITERATION_2 719 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 718 && BOOST_PP_ITERATION_START_2 >= 718 +# define BOOST_PP_ITERATION_2 718 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 717 && BOOST_PP_ITERATION_START_2 >= 717 +# define BOOST_PP_ITERATION_2 717 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 716 && BOOST_PP_ITERATION_START_2 >= 716 +# define BOOST_PP_ITERATION_2 716 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 715 && BOOST_PP_ITERATION_START_2 >= 715 +# define BOOST_PP_ITERATION_2 715 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 714 && BOOST_PP_ITERATION_START_2 >= 714 +# define BOOST_PP_ITERATION_2 714 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 713 && BOOST_PP_ITERATION_START_2 >= 713 +# define BOOST_PP_ITERATION_2 713 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 712 && BOOST_PP_ITERATION_START_2 >= 712 +# define BOOST_PP_ITERATION_2 712 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 711 && BOOST_PP_ITERATION_START_2 >= 711 +# define BOOST_PP_ITERATION_2 711 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 710 && BOOST_PP_ITERATION_START_2 >= 710 +# define BOOST_PP_ITERATION_2 710 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 709 && BOOST_PP_ITERATION_START_2 >= 709 +# define BOOST_PP_ITERATION_2 709 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 708 && BOOST_PP_ITERATION_START_2 >= 708 +# define BOOST_PP_ITERATION_2 708 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 707 && BOOST_PP_ITERATION_START_2 >= 707 +# define BOOST_PP_ITERATION_2 707 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 706 && BOOST_PP_ITERATION_START_2 >= 706 +# define BOOST_PP_ITERATION_2 706 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 705 && BOOST_PP_ITERATION_START_2 >= 705 +# define BOOST_PP_ITERATION_2 705 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 704 && BOOST_PP_ITERATION_START_2 >= 704 +# define BOOST_PP_ITERATION_2 704 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 703 && BOOST_PP_ITERATION_START_2 >= 703 +# define BOOST_PP_ITERATION_2 703 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 702 && BOOST_PP_ITERATION_START_2 >= 702 +# define BOOST_PP_ITERATION_2 702 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 701 && BOOST_PP_ITERATION_START_2 >= 701 +# define BOOST_PP_ITERATION_2 701 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 700 && BOOST_PP_ITERATION_START_2 >= 700 +# define BOOST_PP_ITERATION_2 700 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 699 && BOOST_PP_ITERATION_START_2 >= 699 +# define BOOST_PP_ITERATION_2 699 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 698 && BOOST_PP_ITERATION_START_2 >= 698 +# define BOOST_PP_ITERATION_2 698 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 697 && BOOST_PP_ITERATION_START_2 >= 697 +# define BOOST_PP_ITERATION_2 697 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 696 && BOOST_PP_ITERATION_START_2 >= 696 +# define BOOST_PP_ITERATION_2 696 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 695 && BOOST_PP_ITERATION_START_2 >= 695 +# define BOOST_PP_ITERATION_2 695 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 694 && BOOST_PP_ITERATION_START_2 >= 694 +# define BOOST_PP_ITERATION_2 694 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 693 && BOOST_PP_ITERATION_START_2 >= 693 +# define BOOST_PP_ITERATION_2 693 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 692 && BOOST_PP_ITERATION_START_2 >= 692 +# define BOOST_PP_ITERATION_2 692 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 691 && BOOST_PP_ITERATION_START_2 >= 691 +# define BOOST_PP_ITERATION_2 691 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 690 && BOOST_PP_ITERATION_START_2 >= 690 +# define BOOST_PP_ITERATION_2 690 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 689 && BOOST_PP_ITERATION_START_2 >= 689 +# define BOOST_PP_ITERATION_2 689 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 688 && BOOST_PP_ITERATION_START_2 >= 688 +# define BOOST_PP_ITERATION_2 688 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 687 && BOOST_PP_ITERATION_START_2 >= 687 +# define BOOST_PP_ITERATION_2 687 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 686 && BOOST_PP_ITERATION_START_2 >= 686 +# define BOOST_PP_ITERATION_2 686 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 685 && BOOST_PP_ITERATION_START_2 >= 685 +# define BOOST_PP_ITERATION_2 685 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 684 && BOOST_PP_ITERATION_START_2 >= 684 +# define BOOST_PP_ITERATION_2 684 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 683 && BOOST_PP_ITERATION_START_2 >= 683 +# define BOOST_PP_ITERATION_2 683 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 682 && BOOST_PP_ITERATION_START_2 >= 682 +# define BOOST_PP_ITERATION_2 682 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 681 && BOOST_PP_ITERATION_START_2 >= 681 +# define BOOST_PP_ITERATION_2 681 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 680 && BOOST_PP_ITERATION_START_2 >= 680 +# define BOOST_PP_ITERATION_2 680 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 679 && BOOST_PP_ITERATION_START_2 >= 679 +# define BOOST_PP_ITERATION_2 679 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 678 && BOOST_PP_ITERATION_START_2 >= 678 +# define BOOST_PP_ITERATION_2 678 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 677 && BOOST_PP_ITERATION_START_2 >= 677 +# define BOOST_PP_ITERATION_2 677 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 676 && BOOST_PP_ITERATION_START_2 >= 676 +# define BOOST_PP_ITERATION_2 676 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 675 && BOOST_PP_ITERATION_START_2 >= 675 +# define BOOST_PP_ITERATION_2 675 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 674 && BOOST_PP_ITERATION_START_2 >= 674 +# define BOOST_PP_ITERATION_2 674 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 673 && BOOST_PP_ITERATION_START_2 >= 673 +# define BOOST_PP_ITERATION_2 673 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 672 && BOOST_PP_ITERATION_START_2 >= 672 +# define BOOST_PP_ITERATION_2 672 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 671 && BOOST_PP_ITERATION_START_2 >= 671 +# define BOOST_PP_ITERATION_2 671 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 670 && BOOST_PP_ITERATION_START_2 >= 670 +# define BOOST_PP_ITERATION_2 670 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 669 && BOOST_PP_ITERATION_START_2 >= 669 +# define BOOST_PP_ITERATION_2 669 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 668 && BOOST_PP_ITERATION_START_2 >= 668 +# define BOOST_PP_ITERATION_2 668 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 667 && BOOST_PP_ITERATION_START_2 >= 667 +# define BOOST_PP_ITERATION_2 667 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 666 && BOOST_PP_ITERATION_START_2 >= 666 +# define BOOST_PP_ITERATION_2 666 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 665 && BOOST_PP_ITERATION_START_2 >= 665 +# define BOOST_PP_ITERATION_2 665 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 664 && BOOST_PP_ITERATION_START_2 >= 664 +# define BOOST_PP_ITERATION_2 664 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 663 && BOOST_PP_ITERATION_START_2 >= 663 +# define BOOST_PP_ITERATION_2 663 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 662 && BOOST_PP_ITERATION_START_2 >= 662 +# define BOOST_PP_ITERATION_2 662 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 661 && BOOST_PP_ITERATION_START_2 >= 661 +# define BOOST_PP_ITERATION_2 661 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 660 && BOOST_PP_ITERATION_START_2 >= 660 +# define BOOST_PP_ITERATION_2 660 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 659 && BOOST_PP_ITERATION_START_2 >= 659 +# define BOOST_PP_ITERATION_2 659 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 658 && BOOST_PP_ITERATION_START_2 >= 658 +# define BOOST_PP_ITERATION_2 658 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 657 && BOOST_PP_ITERATION_START_2 >= 657 +# define BOOST_PP_ITERATION_2 657 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 656 && BOOST_PP_ITERATION_START_2 >= 656 +# define BOOST_PP_ITERATION_2 656 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 655 && BOOST_PP_ITERATION_START_2 >= 655 +# define BOOST_PP_ITERATION_2 655 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 654 && BOOST_PP_ITERATION_START_2 >= 654 +# define BOOST_PP_ITERATION_2 654 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 653 && BOOST_PP_ITERATION_START_2 >= 653 +# define BOOST_PP_ITERATION_2 653 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 652 && BOOST_PP_ITERATION_START_2 >= 652 +# define BOOST_PP_ITERATION_2 652 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 651 && BOOST_PP_ITERATION_START_2 >= 651 +# define BOOST_PP_ITERATION_2 651 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 650 && BOOST_PP_ITERATION_START_2 >= 650 +# define BOOST_PP_ITERATION_2 650 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 649 && BOOST_PP_ITERATION_START_2 >= 649 +# define BOOST_PP_ITERATION_2 649 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 648 && BOOST_PP_ITERATION_START_2 >= 648 +# define BOOST_PP_ITERATION_2 648 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 647 && BOOST_PP_ITERATION_START_2 >= 647 +# define BOOST_PP_ITERATION_2 647 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 646 && BOOST_PP_ITERATION_START_2 >= 646 +# define BOOST_PP_ITERATION_2 646 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 645 && BOOST_PP_ITERATION_START_2 >= 645 +# define BOOST_PP_ITERATION_2 645 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 644 && BOOST_PP_ITERATION_START_2 >= 644 +# define BOOST_PP_ITERATION_2 644 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 643 && BOOST_PP_ITERATION_START_2 >= 643 +# define BOOST_PP_ITERATION_2 643 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 642 && BOOST_PP_ITERATION_START_2 >= 642 +# define BOOST_PP_ITERATION_2 642 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 641 && BOOST_PP_ITERATION_START_2 >= 641 +# define BOOST_PP_ITERATION_2 641 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 640 && BOOST_PP_ITERATION_START_2 >= 640 +# define BOOST_PP_ITERATION_2 640 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 639 && BOOST_PP_ITERATION_START_2 >= 639 +# define BOOST_PP_ITERATION_2 639 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 638 && BOOST_PP_ITERATION_START_2 >= 638 +# define BOOST_PP_ITERATION_2 638 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 637 && BOOST_PP_ITERATION_START_2 >= 637 +# define BOOST_PP_ITERATION_2 637 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 636 && BOOST_PP_ITERATION_START_2 >= 636 +# define BOOST_PP_ITERATION_2 636 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 635 && BOOST_PP_ITERATION_START_2 >= 635 +# define BOOST_PP_ITERATION_2 635 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 634 && BOOST_PP_ITERATION_START_2 >= 634 +# define BOOST_PP_ITERATION_2 634 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 633 && BOOST_PP_ITERATION_START_2 >= 633 +# define BOOST_PP_ITERATION_2 633 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 632 && BOOST_PP_ITERATION_START_2 >= 632 +# define BOOST_PP_ITERATION_2 632 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 631 && BOOST_PP_ITERATION_START_2 >= 631 +# define BOOST_PP_ITERATION_2 631 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 630 && BOOST_PP_ITERATION_START_2 >= 630 +# define BOOST_PP_ITERATION_2 630 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 629 && BOOST_PP_ITERATION_START_2 >= 629 +# define BOOST_PP_ITERATION_2 629 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 628 && BOOST_PP_ITERATION_START_2 >= 628 +# define BOOST_PP_ITERATION_2 628 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 627 && BOOST_PP_ITERATION_START_2 >= 627 +# define BOOST_PP_ITERATION_2 627 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 626 && BOOST_PP_ITERATION_START_2 >= 626 +# define BOOST_PP_ITERATION_2 626 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 625 && BOOST_PP_ITERATION_START_2 >= 625 +# define BOOST_PP_ITERATION_2 625 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 624 && BOOST_PP_ITERATION_START_2 >= 624 +# define BOOST_PP_ITERATION_2 624 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 623 && BOOST_PP_ITERATION_START_2 >= 623 +# define BOOST_PP_ITERATION_2 623 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 622 && BOOST_PP_ITERATION_START_2 >= 622 +# define BOOST_PP_ITERATION_2 622 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 621 && BOOST_PP_ITERATION_START_2 >= 621 +# define BOOST_PP_ITERATION_2 621 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 620 && BOOST_PP_ITERATION_START_2 >= 620 +# define BOOST_PP_ITERATION_2 620 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 619 && BOOST_PP_ITERATION_START_2 >= 619 +# define BOOST_PP_ITERATION_2 619 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 618 && BOOST_PP_ITERATION_START_2 >= 618 +# define BOOST_PP_ITERATION_2 618 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 617 && BOOST_PP_ITERATION_START_2 >= 617 +# define BOOST_PP_ITERATION_2 617 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 616 && BOOST_PP_ITERATION_START_2 >= 616 +# define BOOST_PP_ITERATION_2 616 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 615 && BOOST_PP_ITERATION_START_2 >= 615 +# define BOOST_PP_ITERATION_2 615 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 614 && BOOST_PP_ITERATION_START_2 >= 614 +# define BOOST_PP_ITERATION_2 614 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 613 && BOOST_PP_ITERATION_START_2 >= 613 +# define BOOST_PP_ITERATION_2 613 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 612 && BOOST_PP_ITERATION_START_2 >= 612 +# define BOOST_PP_ITERATION_2 612 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 611 && BOOST_PP_ITERATION_START_2 >= 611 +# define BOOST_PP_ITERATION_2 611 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 610 && BOOST_PP_ITERATION_START_2 >= 610 +# define BOOST_PP_ITERATION_2 610 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 609 && BOOST_PP_ITERATION_START_2 >= 609 +# define BOOST_PP_ITERATION_2 609 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 608 && BOOST_PP_ITERATION_START_2 >= 608 +# define BOOST_PP_ITERATION_2 608 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 607 && BOOST_PP_ITERATION_START_2 >= 607 +# define BOOST_PP_ITERATION_2 607 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 606 && BOOST_PP_ITERATION_START_2 >= 606 +# define BOOST_PP_ITERATION_2 606 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 605 && BOOST_PP_ITERATION_START_2 >= 605 +# define BOOST_PP_ITERATION_2 605 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 604 && BOOST_PP_ITERATION_START_2 >= 604 +# define BOOST_PP_ITERATION_2 604 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 603 && BOOST_PP_ITERATION_START_2 >= 603 +# define BOOST_PP_ITERATION_2 603 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 602 && BOOST_PP_ITERATION_START_2 >= 602 +# define BOOST_PP_ITERATION_2 602 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 601 && BOOST_PP_ITERATION_START_2 >= 601 +# define BOOST_PP_ITERATION_2 601 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 600 && BOOST_PP_ITERATION_START_2 >= 600 +# define BOOST_PP_ITERATION_2 600 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 599 && BOOST_PP_ITERATION_START_2 >= 599 +# define BOOST_PP_ITERATION_2 599 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 598 && BOOST_PP_ITERATION_START_2 >= 598 +# define BOOST_PP_ITERATION_2 598 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 597 && BOOST_PP_ITERATION_START_2 >= 597 +# define BOOST_PP_ITERATION_2 597 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 596 && BOOST_PP_ITERATION_START_2 >= 596 +# define BOOST_PP_ITERATION_2 596 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 595 && BOOST_PP_ITERATION_START_2 >= 595 +# define BOOST_PP_ITERATION_2 595 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 594 && BOOST_PP_ITERATION_START_2 >= 594 +# define BOOST_PP_ITERATION_2 594 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 593 && BOOST_PP_ITERATION_START_2 >= 593 +# define BOOST_PP_ITERATION_2 593 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 592 && BOOST_PP_ITERATION_START_2 >= 592 +# define BOOST_PP_ITERATION_2 592 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 591 && BOOST_PP_ITERATION_START_2 >= 591 +# define BOOST_PP_ITERATION_2 591 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 590 && BOOST_PP_ITERATION_START_2 >= 590 +# define BOOST_PP_ITERATION_2 590 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 589 && BOOST_PP_ITERATION_START_2 >= 589 +# define BOOST_PP_ITERATION_2 589 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 588 && BOOST_PP_ITERATION_START_2 >= 588 +# define BOOST_PP_ITERATION_2 588 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 587 && BOOST_PP_ITERATION_START_2 >= 587 +# define BOOST_PP_ITERATION_2 587 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 586 && BOOST_PP_ITERATION_START_2 >= 586 +# define BOOST_PP_ITERATION_2 586 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 585 && BOOST_PP_ITERATION_START_2 >= 585 +# define BOOST_PP_ITERATION_2 585 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 584 && BOOST_PP_ITERATION_START_2 >= 584 +# define BOOST_PP_ITERATION_2 584 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 583 && BOOST_PP_ITERATION_START_2 >= 583 +# define BOOST_PP_ITERATION_2 583 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 582 && BOOST_PP_ITERATION_START_2 >= 582 +# define BOOST_PP_ITERATION_2 582 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 581 && BOOST_PP_ITERATION_START_2 >= 581 +# define BOOST_PP_ITERATION_2 581 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 580 && BOOST_PP_ITERATION_START_2 >= 580 +# define BOOST_PP_ITERATION_2 580 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 579 && BOOST_PP_ITERATION_START_2 >= 579 +# define BOOST_PP_ITERATION_2 579 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 578 && BOOST_PP_ITERATION_START_2 >= 578 +# define BOOST_PP_ITERATION_2 578 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 577 && BOOST_PP_ITERATION_START_2 >= 577 +# define BOOST_PP_ITERATION_2 577 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 576 && BOOST_PP_ITERATION_START_2 >= 576 +# define BOOST_PP_ITERATION_2 576 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 575 && BOOST_PP_ITERATION_START_2 >= 575 +# define BOOST_PP_ITERATION_2 575 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 574 && BOOST_PP_ITERATION_START_2 >= 574 +# define BOOST_PP_ITERATION_2 574 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 573 && BOOST_PP_ITERATION_START_2 >= 573 +# define BOOST_PP_ITERATION_2 573 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 572 && BOOST_PP_ITERATION_START_2 >= 572 +# define BOOST_PP_ITERATION_2 572 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 571 && BOOST_PP_ITERATION_START_2 >= 571 +# define BOOST_PP_ITERATION_2 571 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 570 && BOOST_PP_ITERATION_START_2 >= 570 +# define BOOST_PP_ITERATION_2 570 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 569 && BOOST_PP_ITERATION_START_2 >= 569 +# define BOOST_PP_ITERATION_2 569 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 568 && BOOST_PP_ITERATION_START_2 >= 568 +# define BOOST_PP_ITERATION_2 568 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 567 && BOOST_PP_ITERATION_START_2 >= 567 +# define BOOST_PP_ITERATION_2 567 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 566 && BOOST_PP_ITERATION_START_2 >= 566 +# define BOOST_PP_ITERATION_2 566 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 565 && BOOST_PP_ITERATION_START_2 >= 565 +# define BOOST_PP_ITERATION_2 565 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 564 && BOOST_PP_ITERATION_START_2 >= 564 +# define BOOST_PP_ITERATION_2 564 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 563 && BOOST_PP_ITERATION_START_2 >= 563 +# define BOOST_PP_ITERATION_2 563 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 562 && BOOST_PP_ITERATION_START_2 >= 562 +# define BOOST_PP_ITERATION_2 562 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 561 && BOOST_PP_ITERATION_START_2 >= 561 +# define BOOST_PP_ITERATION_2 561 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 560 && BOOST_PP_ITERATION_START_2 >= 560 +# define BOOST_PP_ITERATION_2 560 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 559 && BOOST_PP_ITERATION_START_2 >= 559 +# define BOOST_PP_ITERATION_2 559 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 558 && BOOST_PP_ITERATION_START_2 >= 558 +# define BOOST_PP_ITERATION_2 558 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 557 && BOOST_PP_ITERATION_START_2 >= 557 +# define BOOST_PP_ITERATION_2 557 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 556 && BOOST_PP_ITERATION_START_2 >= 556 +# define BOOST_PP_ITERATION_2 556 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 555 && BOOST_PP_ITERATION_START_2 >= 555 +# define BOOST_PP_ITERATION_2 555 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 554 && BOOST_PP_ITERATION_START_2 >= 554 +# define BOOST_PP_ITERATION_2 554 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 553 && BOOST_PP_ITERATION_START_2 >= 553 +# define BOOST_PP_ITERATION_2 553 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 552 && BOOST_PP_ITERATION_START_2 >= 552 +# define BOOST_PP_ITERATION_2 552 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 551 && BOOST_PP_ITERATION_START_2 >= 551 +# define BOOST_PP_ITERATION_2 551 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 550 && BOOST_PP_ITERATION_START_2 >= 550 +# define BOOST_PP_ITERATION_2 550 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 549 && BOOST_PP_ITERATION_START_2 >= 549 +# define BOOST_PP_ITERATION_2 549 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 548 && BOOST_PP_ITERATION_START_2 >= 548 +# define BOOST_PP_ITERATION_2 548 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 547 && BOOST_PP_ITERATION_START_2 >= 547 +# define BOOST_PP_ITERATION_2 547 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 546 && BOOST_PP_ITERATION_START_2 >= 546 +# define BOOST_PP_ITERATION_2 546 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 545 && BOOST_PP_ITERATION_START_2 >= 545 +# define BOOST_PP_ITERATION_2 545 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 544 && BOOST_PP_ITERATION_START_2 >= 544 +# define BOOST_PP_ITERATION_2 544 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 543 && BOOST_PP_ITERATION_START_2 >= 543 +# define BOOST_PP_ITERATION_2 543 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 542 && BOOST_PP_ITERATION_START_2 >= 542 +# define BOOST_PP_ITERATION_2 542 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 541 && BOOST_PP_ITERATION_START_2 >= 541 +# define BOOST_PP_ITERATION_2 541 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 540 && BOOST_PP_ITERATION_START_2 >= 540 +# define BOOST_PP_ITERATION_2 540 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 539 && BOOST_PP_ITERATION_START_2 >= 539 +# define BOOST_PP_ITERATION_2 539 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 538 && BOOST_PP_ITERATION_START_2 >= 538 +# define BOOST_PP_ITERATION_2 538 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 537 && BOOST_PP_ITERATION_START_2 >= 537 +# define BOOST_PP_ITERATION_2 537 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 536 && BOOST_PP_ITERATION_START_2 >= 536 +# define BOOST_PP_ITERATION_2 536 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 535 && BOOST_PP_ITERATION_START_2 >= 535 +# define BOOST_PP_ITERATION_2 535 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 534 && BOOST_PP_ITERATION_START_2 >= 534 +# define BOOST_PP_ITERATION_2 534 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 533 && BOOST_PP_ITERATION_START_2 >= 533 +# define BOOST_PP_ITERATION_2 533 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 532 && BOOST_PP_ITERATION_START_2 >= 532 +# define BOOST_PP_ITERATION_2 532 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 531 && BOOST_PP_ITERATION_START_2 >= 531 +# define BOOST_PP_ITERATION_2 531 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 530 && BOOST_PP_ITERATION_START_2 >= 530 +# define BOOST_PP_ITERATION_2 530 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 529 && BOOST_PP_ITERATION_START_2 >= 529 +# define BOOST_PP_ITERATION_2 529 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 528 && BOOST_PP_ITERATION_START_2 >= 528 +# define BOOST_PP_ITERATION_2 528 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 527 && BOOST_PP_ITERATION_START_2 >= 527 +# define BOOST_PP_ITERATION_2 527 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 526 && BOOST_PP_ITERATION_START_2 >= 526 +# define BOOST_PP_ITERATION_2 526 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 525 && BOOST_PP_ITERATION_START_2 >= 525 +# define BOOST_PP_ITERATION_2 525 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 524 && BOOST_PP_ITERATION_START_2 >= 524 +# define BOOST_PP_ITERATION_2 524 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 523 && BOOST_PP_ITERATION_START_2 >= 523 +# define BOOST_PP_ITERATION_2 523 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 522 && BOOST_PP_ITERATION_START_2 >= 522 +# define BOOST_PP_ITERATION_2 522 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 521 && BOOST_PP_ITERATION_START_2 >= 521 +# define BOOST_PP_ITERATION_2 521 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 520 && BOOST_PP_ITERATION_START_2 >= 520 +# define BOOST_PP_ITERATION_2 520 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 519 && BOOST_PP_ITERATION_START_2 >= 519 +# define BOOST_PP_ITERATION_2 519 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 518 && BOOST_PP_ITERATION_START_2 >= 518 +# define BOOST_PP_ITERATION_2 518 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 517 && BOOST_PP_ITERATION_START_2 >= 517 +# define BOOST_PP_ITERATION_2 517 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 516 && BOOST_PP_ITERATION_START_2 >= 516 +# define BOOST_PP_ITERATION_2 516 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 515 && BOOST_PP_ITERATION_START_2 >= 515 +# define BOOST_PP_ITERATION_2 515 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 514 && BOOST_PP_ITERATION_START_2 >= 514 +# define BOOST_PP_ITERATION_2 514 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 513 && BOOST_PP_ITERATION_START_2 >= 513 +# define BOOST_PP_ITERATION_2 513 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse2_256.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse2_256.hpp new file mode 100644 index 000000000..c7841989b --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse2_256.hpp @@ -0,0 +1,1296 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_FINISH_2 <= 256 && BOOST_PP_ITERATION_START_2 >= 256 +# define BOOST_PP_ITERATION_2 256 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 255 && BOOST_PP_ITERATION_START_2 >= 255 +# define BOOST_PP_ITERATION_2 255 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 254 && BOOST_PP_ITERATION_START_2 >= 254 +# define BOOST_PP_ITERATION_2 254 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 253 && BOOST_PP_ITERATION_START_2 >= 253 +# define BOOST_PP_ITERATION_2 253 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 252 && BOOST_PP_ITERATION_START_2 >= 252 +# define BOOST_PP_ITERATION_2 252 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 251 && BOOST_PP_ITERATION_START_2 >= 251 +# define BOOST_PP_ITERATION_2 251 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 250 && BOOST_PP_ITERATION_START_2 >= 250 +# define BOOST_PP_ITERATION_2 250 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 249 && BOOST_PP_ITERATION_START_2 >= 249 +# define BOOST_PP_ITERATION_2 249 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 248 && BOOST_PP_ITERATION_START_2 >= 248 +# define BOOST_PP_ITERATION_2 248 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 247 && BOOST_PP_ITERATION_START_2 >= 247 +# define BOOST_PP_ITERATION_2 247 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 246 && BOOST_PP_ITERATION_START_2 >= 246 +# define BOOST_PP_ITERATION_2 246 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 245 && BOOST_PP_ITERATION_START_2 >= 245 +# define BOOST_PP_ITERATION_2 245 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 244 && BOOST_PP_ITERATION_START_2 >= 244 +# define BOOST_PP_ITERATION_2 244 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 243 && BOOST_PP_ITERATION_START_2 >= 243 +# define BOOST_PP_ITERATION_2 243 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 242 && BOOST_PP_ITERATION_START_2 >= 242 +# define BOOST_PP_ITERATION_2 242 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 241 && BOOST_PP_ITERATION_START_2 >= 241 +# define BOOST_PP_ITERATION_2 241 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 240 && BOOST_PP_ITERATION_START_2 >= 240 +# define BOOST_PP_ITERATION_2 240 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 239 && BOOST_PP_ITERATION_START_2 >= 239 +# define BOOST_PP_ITERATION_2 239 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 238 && BOOST_PP_ITERATION_START_2 >= 238 +# define BOOST_PP_ITERATION_2 238 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 237 && BOOST_PP_ITERATION_START_2 >= 237 +# define BOOST_PP_ITERATION_2 237 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 236 && BOOST_PP_ITERATION_START_2 >= 236 +# define BOOST_PP_ITERATION_2 236 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 235 && BOOST_PP_ITERATION_START_2 >= 235 +# define BOOST_PP_ITERATION_2 235 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 234 && BOOST_PP_ITERATION_START_2 >= 234 +# define BOOST_PP_ITERATION_2 234 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 233 && BOOST_PP_ITERATION_START_2 >= 233 +# define BOOST_PP_ITERATION_2 233 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 232 && BOOST_PP_ITERATION_START_2 >= 232 +# define BOOST_PP_ITERATION_2 232 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 231 && BOOST_PP_ITERATION_START_2 >= 231 +# define BOOST_PP_ITERATION_2 231 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 230 && BOOST_PP_ITERATION_START_2 >= 230 +# define BOOST_PP_ITERATION_2 230 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 229 && BOOST_PP_ITERATION_START_2 >= 229 +# define BOOST_PP_ITERATION_2 229 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 228 && BOOST_PP_ITERATION_START_2 >= 228 +# define BOOST_PP_ITERATION_2 228 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 227 && BOOST_PP_ITERATION_START_2 >= 227 +# define BOOST_PP_ITERATION_2 227 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 226 && BOOST_PP_ITERATION_START_2 >= 226 +# define BOOST_PP_ITERATION_2 226 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 225 && BOOST_PP_ITERATION_START_2 >= 225 +# define BOOST_PP_ITERATION_2 225 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 224 && BOOST_PP_ITERATION_START_2 >= 224 +# define BOOST_PP_ITERATION_2 224 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 223 && BOOST_PP_ITERATION_START_2 >= 223 +# define BOOST_PP_ITERATION_2 223 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 222 && BOOST_PP_ITERATION_START_2 >= 222 +# define BOOST_PP_ITERATION_2 222 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 221 && BOOST_PP_ITERATION_START_2 >= 221 +# define BOOST_PP_ITERATION_2 221 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 220 && BOOST_PP_ITERATION_START_2 >= 220 +# define BOOST_PP_ITERATION_2 220 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 219 && BOOST_PP_ITERATION_START_2 >= 219 +# define BOOST_PP_ITERATION_2 219 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 218 && BOOST_PP_ITERATION_START_2 >= 218 +# define BOOST_PP_ITERATION_2 218 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 217 && BOOST_PP_ITERATION_START_2 >= 217 +# define BOOST_PP_ITERATION_2 217 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 216 && BOOST_PP_ITERATION_START_2 >= 216 +# define BOOST_PP_ITERATION_2 216 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 215 && BOOST_PP_ITERATION_START_2 >= 215 +# define BOOST_PP_ITERATION_2 215 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 214 && BOOST_PP_ITERATION_START_2 >= 214 +# define BOOST_PP_ITERATION_2 214 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 213 && BOOST_PP_ITERATION_START_2 >= 213 +# define BOOST_PP_ITERATION_2 213 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 212 && BOOST_PP_ITERATION_START_2 >= 212 +# define BOOST_PP_ITERATION_2 212 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 211 && BOOST_PP_ITERATION_START_2 >= 211 +# define BOOST_PP_ITERATION_2 211 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 210 && BOOST_PP_ITERATION_START_2 >= 210 +# define BOOST_PP_ITERATION_2 210 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 209 && BOOST_PP_ITERATION_START_2 >= 209 +# define BOOST_PP_ITERATION_2 209 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 208 && BOOST_PP_ITERATION_START_2 >= 208 +# define BOOST_PP_ITERATION_2 208 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 207 && BOOST_PP_ITERATION_START_2 >= 207 +# define BOOST_PP_ITERATION_2 207 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 206 && BOOST_PP_ITERATION_START_2 >= 206 +# define BOOST_PP_ITERATION_2 206 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 205 && BOOST_PP_ITERATION_START_2 >= 205 +# define BOOST_PP_ITERATION_2 205 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 204 && BOOST_PP_ITERATION_START_2 >= 204 +# define BOOST_PP_ITERATION_2 204 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 203 && BOOST_PP_ITERATION_START_2 >= 203 +# define BOOST_PP_ITERATION_2 203 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 202 && BOOST_PP_ITERATION_START_2 >= 202 +# define BOOST_PP_ITERATION_2 202 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 201 && BOOST_PP_ITERATION_START_2 >= 201 +# define BOOST_PP_ITERATION_2 201 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 200 && BOOST_PP_ITERATION_START_2 >= 200 +# define BOOST_PP_ITERATION_2 200 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 199 && BOOST_PP_ITERATION_START_2 >= 199 +# define BOOST_PP_ITERATION_2 199 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 198 && BOOST_PP_ITERATION_START_2 >= 198 +# define BOOST_PP_ITERATION_2 198 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 197 && BOOST_PP_ITERATION_START_2 >= 197 +# define BOOST_PP_ITERATION_2 197 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 196 && BOOST_PP_ITERATION_START_2 >= 196 +# define BOOST_PP_ITERATION_2 196 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 195 && BOOST_PP_ITERATION_START_2 >= 195 +# define BOOST_PP_ITERATION_2 195 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 194 && BOOST_PP_ITERATION_START_2 >= 194 +# define BOOST_PP_ITERATION_2 194 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 193 && BOOST_PP_ITERATION_START_2 >= 193 +# define BOOST_PP_ITERATION_2 193 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 192 && BOOST_PP_ITERATION_START_2 >= 192 +# define BOOST_PP_ITERATION_2 192 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 191 && BOOST_PP_ITERATION_START_2 >= 191 +# define BOOST_PP_ITERATION_2 191 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 190 && BOOST_PP_ITERATION_START_2 >= 190 +# define BOOST_PP_ITERATION_2 190 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 189 && BOOST_PP_ITERATION_START_2 >= 189 +# define BOOST_PP_ITERATION_2 189 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 188 && BOOST_PP_ITERATION_START_2 >= 188 +# define BOOST_PP_ITERATION_2 188 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 187 && BOOST_PP_ITERATION_START_2 >= 187 +# define BOOST_PP_ITERATION_2 187 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 186 && BOOST_PP_ITERATION_START_2 >= 186 +# define BOOST_PP_ITERATION_2 186 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 185 && BOOST_PP_ITERATION_START_2 >= 185 +# define BOOST_PP_ITERATION_2 185 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 184 && BOOST_PP_ITERATION_START_2 >= 184 +# define BOOST_PP_ITERATION_2 184 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 183 && BOOST_PP_ITERATION_START_2 >= 183 +# define BOOST_PP_ITERATION_2 183 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 182 && BOOST_PP_ITERATION_START_2 >= 182 +# define BOOST_PP_ITERATION_2 182 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 181 && BOOST_PP_ITERATION_START_2 >= 181 +# define BOOST_PP_ITERATION_2 181 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 180 && BOOST_PP_ITERATION_START_2 >= 180 +# define BOOST_PP_ITERATION_2 180 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 179 && BOOST_PP_ITERATION_START_2 >= 179 +# define BOOST_PP_ITERATION_2 179 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 178 && BOOST_PP_ITERATION_START_2 >= 178 +# define BOOST_PP_ITERATION_2 178 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 177 && BOOST_PP_ITERATION_START_2 >= 177 +# define BOOST_PP_ITERATION_2 177 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 176 && BOOST_PP_ITERATION_START_2 >= 176 +# define BOOST_PP_ITERATION_2 176 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 175 && BOOST_PP_ITERATION_START_2 >= 175 +# define BOOST_PP_ITERATION_2 175 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 174 && BOOST_PP_ITERATION_START_2 >= 174 +# define BOOST_PP_ITERATION_2 174 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 173 && BOOST_PP_ITERATION_START_2 >= 173 +# define BOOST_PP_ITERATION_2 173 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 172 && BOOST_PP_ITERATION_START_2 >= 172 +# define BOOST_PP_ITERATION_2 172 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 171 && BOOST_PP_ITERATION_START_2 >= 171 +# define BOOST_PP_ITERATION_2 171 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 170 && BOOST_PP_ITERATION_START_2 >= 170 +# define BOOST_PP_ITERATION_2 170 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 169 && BOOST_PP_ITERATION_START_2 >= 169 +# define BOOST_PP_ITERATION_2 169 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 168 && BOOST_PP_ITERATION_START_2 >= 168 +# define BOOST_PP_ITERATION_2 168 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 167 && BOOST_PP_ITERATION_START_2 >= 167 +# define BOOST_PP_ITERATION_2 167 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 166 && BOOST_PP_ITERATION_START_2 >= 166 +# define BOOST_PP_ITERATION_2 166 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 165 && BOOST_PP_ITERATION_START_2 >= 165 +# define BOOST_PP_ITERATION_2 165 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 164 && BOOST_PP_ITERATION_START_2 >= 164 +# define BOOST_PP_ITERATION_2 164 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 163 && BOOST_PP_ITERATION_START_2 >= 163 +# define BOOST_PP_ITERATION_2 163 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 162 && BOOST_PP_ITERATION_START_2 >= 162 +# define BOOST_PP_ITERATION_2 162 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 161 && BOOST_PP_ITERATION_START_2 >= 161 +# define BOOST_PP_ITERATION_2 161 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 160 && BOOST_PP_ITERATION_START_2 >= 160 +# define BOOST_PP_ITERATION_2 160 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 159 && BOOST_PP_ITERATION_START_2 >= 159 +# define BOOST_PP_ITERATION_2 159 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 158 && BOOST_PP_ITERATION_START_2 >= 158 +# define BOOST_PP_ITERATION_2 158 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 157 && BOOST_PP_ITERATION_START_2 >= 157 +# define BOOST_PP_ITERATION_2 157 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 156 && BOOST_PP_ITERATION_START_2 >= 156 +# define BOOST_PP_ITERATION_2 156 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 155 && BOOST_PP_ITERATION_START_2 >= 155 +# define BOOST_PP_ITERATION_2 155 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 154 && BOOST_PP_ITERATION_START_2 >= 154 +# define BOOST_PP_ITERATION_2 154 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 153 && BOOST_PP_ITERATION_START_2 >= 153 +# define BOOST_PP_ITERATION_2 153 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 152 && BOOST_PP_ITERATION_START_2 >= 152 +# define BOOST_PP_ITERATION_2 152 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 151 && BOOST_PP_ITERATION_START_2 >= 151 +# define BOOST_PP_ITERATION_2 151 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 150 && BOOST_PP_ITERATION_START_2 >= 150 +# define BOOST_PP_ITERATION_2 150 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 149 && BOOST_PP_ITERATION_START_2 >= 149 +# define BOOST_PP_ITERATION_2 149 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 148 && BOOST_PP_ITERATION_START_2 >= 148 +# define BOOST_PP_ITERATION_2 148 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 147 && BOOST_PP_ITERATION_START_2 >= 147 +# define BOOST_PP_ITERATION_2 147 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 146 && BOOST_PP_ITERATION_START_2 >= 146 +# define BOOST_PP_ITERATION_2 146 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 145 && BOOST_PP_ITERATION_START_2 >= 145 +# define BOOST_PP_ITERATION_2 145 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 144 && BOOST_PP_ITERATION_START_2 >= 144 +# define BOOST_PP_ITERATION_2 144 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 143 && BOOST_PP_ITERATION_START_2 >= 143 +# define BOOST_PP_ITERATION_2 143 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 142 && BOOST_PP_ITERATION_START_2 >= 142 +# define BOOST_PP_ITERATION_2 142 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 141 && BOOST_PP_ITERATION_START_2 >= 141 +# define BOOST_PP_ITERATION_2 141 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 140 && BOOST_PP_ITERATION_START_2 >= 140 +# define BOOST_PP_ITERATION_2 140 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 139 && BOOST_PP_ITERATION_START_2 >= 139 +# define BOOST_PP_ITERATION_2 139 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 138 && BOOST_PP_ITERATION_START_2 >= 138 +# define BOOST_PP_ITERATION_2 138 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 137 && BOOST_PP_ITERATION_START_2 >= 137 +# define BOOST_PP_ITERATION_2 137 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 136 && BOOST_PP_ITERATION_START_2 >= 136 +# define BOOST_PP_ITERATION_2 136 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 135 && BOOST_PP_ITERATION_START_2 >= 135 +# define BOOST_PP_ITERATION_2 135 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 134 && BOOST_PP_ITERATION_START_2 >= 134 +# define BOOST_PP_ITERATION_2 134 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 133 && BOOST_PP_ITERATION_START_2 >= 133 +# define BOOST_PP_ITERATION_2 133 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 132 && BOOST_PP_ITERATION_START_2 >= 132 +# define BOOST_PP_ITERATION_2 132 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 131 && BOOST_PP_ITERATION_START_2 >= 131 +# define BOOST_PP_ITERATION_2 131 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 130 && BOOST_PP_ITERATION_START_2 >= 130 +# define BOOST_PP_ITERATION_2 130 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 129 && BOOST_PP_ITERATION_START_2 >= 129 +# define BOOST_PP_ITERATION_2 129 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 128 && BOOST_PP_ITERATION_START_2 >= 128 +# define BOOST_PP_ITERATION_2 128 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 127 && BOOST_PP_ITERATION_START_2 >= 127 +# define BOOST_PP_ITERATION_2 127 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 126 && BOOST_PP_ITERATION_START_2 >= 126 +# define BOOST_PP_ITERATION_2 126 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 125 && BOOST_PP_ITERATION_START_2 >= 125 +# define BOOST_PP_ITERATION_2 125 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 124 && BOOST_PP_ITERATION_START_2 >= 124 +# define BOOST_PP_ITERATION_2 124 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 123 && BOOST_PP_ITERATION_START_2 >= 123 +# define BOOST_PP_ITERATION_2 123 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 122 && BOOST_PP_ITERATION_START_2 >= 122 +# define BOOST_PP_ITERATION_2 122 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 121 && BOOST_PP_ITERATION_START_2 >= 121 +# define BOOST_PP_ITERATION_2 121 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 120 && BOOST_PP_ITERATION_START_2 >= 120 +# define BOOST_PP_ITERATION_2 120 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 119 && BOOST_PP_ITERATION_START_2 >= 119 +# define BOOST_PP_ITERATION_2 119 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 118 && BOOST_PP_ITERATION_START_2 >= 118 +# define BOOST_PP_ITERATION_2 118 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 117 && BOOST_PP_ITERATION_START_2 >= 117 +# define BOOST_PP_ITERATION_2 117 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 116 && BOOST_PP_ITERATION_START_2 >= 116 +# define BOOST_PP_ITERATION_2 116 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 115 && BOOST_PP_ITERATION_START_2 >= 115 +# define BOOST_PP_ITERATION_2 115 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 114 && BOOST_PP_ITERATION_START_2 >= 114 +# define BOOST_PP_ITERATION_2 114 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 113 && BOOST_PP_ITERATION_START_2 >= 113 +# define BOOST_PP_ITERATION_2 113 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 112 && BOOST_PP_ITERATION_START_2 >= 112 +# define BOOST_PP_ITERATION_2 112 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 111 && BOOST_PP_ITERATION_START_2 >= 111 +# define BOOST_PP_ITERATION_2 111 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 110 && BOOST_PP_ITERATION_START_2 >= 110 +# define BOOST_PP_ITERATION_2 110 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 109 && BOOST_PP_ITERATION_START_2 >= 109 +# define BOOST_PP_ITERATION_2 109 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 108 && BOOST_PP_ITERATION_START_2 >= 108 +# define BOOST_PP_ITERATION_2 108 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 107 && BOOST_PP_ITERATION_START_2 >= 107 +# define BOOST_PP_ITERATION_2 107 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 106 && BOOST_PP_ITERATION_START_2 >= 106 +# define BOOST_PP_ITERATION_2 106 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 105 && BOOST_PP_ITERATION_START_2 >= 105 +# define BOOST_PP_ITERATION_2 105 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 104 && BOOST_PP_ITERATION_START_2 >= 104 +# define BOOST_PP_ITERATION_2 104 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 103 && BOOST_PP_ITERATION_START_2 >= 103 +# define BOOST_PP_ITERATION_2 103 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 102 && BOOST_PP_ITERATION_START_2 >= 102 +# define BOOST_PP_ITERATION_2 102 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 101 && BOOST_PP_ITERATION_START_2 >= 101 +# define BOOST_PP_ITERATION_2 101 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 100 && BOOST_PP_ITERATION_START_2 >= 100 +# define BOOST_PP_ITERATION_2 100 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 99 && BOOST_PP_ITERATION_START_2 >= 99 +# define BOOST_PP_ITERATION_2 99 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 98 && BOOST_PP_ITERATION_START_2 >= 98 +# define BOOST_PP_ITERATION_2 98 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 97 && BOOST_PP_ITERATION_START_2 >= 97 +# define BOOST_PP_ITERATION_2 97 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 96 && BOOST_PP_ITERATION_START_2 >= 96 +# define BOOST_PP_ITERATION_2 96 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 95 && BOOST_PP_ITERATION_START_2 >= 95 +# define BOOST_PP_ITERATION_2 95 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 94 && BOOST_PP_ITERATION_START_2 >= 94 +# define BOOST_PP_ITERATION_2 94 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 93 && BOOST_PP_ITERATION_START_2 >= 93 +# define BOOST_PP_ITERATION_2 93 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 92 && BOOST_PP_ITERATION_START_2 >= 92 +# define BOOST_PP_ITERATION_2 92 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 91 && BOOST_PP_ITERATION_START_2 >= 91 +# define BOOST_PP_ITERATION_2 91 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 90 && BOOST_PP_ITERATION_START_2 >= 90 +# define BOOST_PP_ITERATION_2 90 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 89 && BOOST_PP_ITERATION_START_2 >= 89 +# define BOOST_PP_ITERATION_2 89 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 88 && BOOST_PP_ITERATION_START_2 >= 88 +# define BOOST_PP_ITERATION_2 88 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 87 && BOOST_PP_ITERATION_START_2 >= 87 +# define BOOST_PP_ITERATION_2 87 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 86 && BOOST_PP_ITERATION_START_2 >= 86 +# define BOOST_PP_ITERATION_2 86 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 85 && BOOST_PP_ITERATION_START_2 >= 85 +# define BOOST_PP_ITERATION_2 85 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 84 && BOOST_PP_ITERATION_START_2 >= 84 +# define BOOST_PP_ITERATION_2 84 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 83 && BOOST_PP_ITERATION_START_2 >= 83 +# define BOOST_PP_ITERATION_2 83 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 82 && BOOST_PP_ITERATION_START_2 >= 82 +# define BOOST_PP_ITERATION_2 82 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 81 && BOOST_PP_ITERATION_START_2 >= 81 +# define BOOST_PP_ITERATION_2 81 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 80 && BOOST_PP_ITERATION_START_2 >= 80 +# define BOOST_PP_ITERATION_2 80 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 79 && BOOST_PP_ITERATION_START_2 >= 79 +# define BOOST_PP_ITERATION_2 79 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 78 && BOOST_PP_ITERATION_START_2 >= 78 +# define BOOST_PP_ITERATION_2 78 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 77 && BOOST_PP_ITERATION_START_2 >= 77 +# define BOOST_PP_ITERATION_2 77 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 76 && BOOST_PP_ITERATION_START_2 >= 76 +# define BOOST_PP_ITERATION_2 76 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 75 && BOOST_PP_ITERATION_START_2 >= 75 +# define BOOST_PP_ITERATION_2 75 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 74 && BOOST_PP_ITERATION_START_2 >= 74 +# define BOOST_PP_ITERATION_2 74 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 73 && BOOST_PP_ITERATION_START_2 >= 73 +# define BOOST_PP_ITERATION_2 73 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 72 && BOOST_PP_ITERATION_START_2 >= 72 +# define BOOST_PP_ITERATION_2 72 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 71 && BOOST_PP_ITERATION_START_2 >= 71 +# define BOOST_PP_ITERATION_2 71 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 70 && BOOST_PP_ITERATION_START_2 >= 70 +# define BOOST_PP_ITERATION_2 70 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 69 && BOOST_PP_ITERATION_START_2 >= 69 +# define BOOST_PP_ITERATION_2 69 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 68 && BOOST_PP_ITERATION_START_2 >= 68 +# define BOOST_PP_ITERATION_2 68 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 67 && BOOST_PP_ITERATION_START_2 >= 67 +# define BOOST_PP_ITERATION_2 67 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 66 && BOOST_PP_ITERATION_START_2 >= 66 +# define BOOST_PP_ITERATION_2 66 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 65 && BOOST_PP_ITERATION_START_2 >= 65 +# define BOOST_PP_ITERATION_2 65 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 64 && BOOST_PP_ITERATION_START_2 >= 64 +# define BOOST_PP_ITERATION_2 64 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 63 && BOOST_PP_ITERATION_START_2 >= 63 +# define BOOST_PP_ITERATION_2 63 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 62 && BOOST_PP_ITERATION_START_2 >= 62 +# define BOOST_PP_ITERATION_2 62 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 61 && BOOST_PP_ITERATION_START_2 >= 61 +# define BOOST_PP_ITERATION_2 61 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 60 && BOOST_PP_ITERATION_START_2 >= 60 +# define BOOST_PP_ITERATION_2 60 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 59 && BOOST_PP_ITERATION_START_2 >= 59 +# define BOOST_PP_ITERATION_2 59 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 58 && BOOST_PP_ITERATION_START_2 >= 58 +# define BOOST_PP_ITERATION_2 58 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 57 && BOOST_PP_ITERATION_START_2 >= 57 +# define BOOST_PP_ITERATION_2 57 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 56 && BOOST_PP_ITERATION_START_2 >= 56 +# define BOOST_PP_ITERATION_2 56 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 55 && BOOST_PP_ITERATION_START_2 >= 55 +# define BOOST_PP_ITERATION_2 55 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 54 && BOOST_PP_ITERATION_START_2 >= 54 +# define BOOST_PP_ITERATION_2 54 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 53 && BOOST_PP_ITERATION_START_2 >= 53 +# define BOOST_PP_ITERATION_2 53 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 52 && BOOST_PP_ITERATION_START_2 >= 52 +# define BOOST_PP_ITERATION_2 52 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 51 && BOOST_PP_ITERATION_START_2 >= 51 +# define BOOST_PP_ITERATION_2 51 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 50 && BOOST_PP_ITERATION_START_2 >= 50 +# define BOOST_PP_ITERATION_2 50 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 49 && BOOST_PP_ITERATION_START_2 >= 49 +# define BOOST_PP_ITERATION_2 49 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 48 && BOOST_PP_ITERATION_START_2 >= 48 +# define BOOST_PP_ITERATION_2 48 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 47 && BOOST_PP_ITERATION_START_2 >= 47 +# define BOOST_PP_ITERATION_2 47 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 46 && BOOST_PP_ITERATION_START_2 >= 46 +# define BOOST_PP_ITERATION_2 46 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 45 && BOOST_PP_ITERATION_START_2 >= 45 +# define BOOST_PP_ITERATION_2 45 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 44 && BOOST_PP_ITERATION_START_2 >= 44 +# define BOOST_PP_ITERATION_2 44 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 43 && BOOST_PP_ITERATION_START_2 >= 43 +# define BOOST_PP_ITERATION_2 43 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 42 && BOOST_PP_ITERATION_START_2 >= 42 +# define BOOST_PP_ITERATION_2 42 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 41 && BOOST_PP_ITERATION_START_2 >= 41 +# define BOOST_PP_ITERATION_2 41 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 40 && BOOST_PP_ITERATION_START_2 >= 40 +# define BOOST_PP_ITERATION_2 40 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 39 && BOOST_PP_ITERATION_START_2 >= 39 +# define BOOST_PP_ITERATION_2 39 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 38 && BOOST_PP_ITERATION_START_2 >= 38 +# define BOOST_PP_ITERATION_2 38 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 37 && BOOST_PP_ITERATION_START_2 >= 37 +# define BOOST_PP_ITERATION_2 37 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 36 && BOOST_PP_ITERATION_START_2 >= 36 +# define BOOST_PP_ITERATION_2 36 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 35 && BOOST_PP_ITERATION_START_2 >= 35 +# define BOOST_PP_ITERATION_2 35 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 34 && BOOST_PP_ITERATION_START_2 >= 34 +# define BOOST_PP_ITERATION_2 34 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 33 && BOOST_PP_ITERATION_START_2 >= 33 +# define BOOST_PP_ITERATION_2 33 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 32 && BOOST_PP_ITERATION_START_2 >= 32 +# define BOOST_PP_ITERATION_2 32 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 31 && BOOST_PP_ITERATION_START_2 >= 31 +# define BOOST_PP_ITERATION_2 31 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 30 && BOOST_PP_ITERATION_START_2 >= 30 +# define BOOST_PP_ITERATION_2 30 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 29 && BOOST_PP_ITERATION_START_2 >= 29 +# define BOOST_PP_ITERATION_2 29 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 28 && BOOST_PP_ITERATION_START_2 >= 28 +# define BOOST_PP_ITERATION_2 28 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 27 && BOOST_PP_ITERATION_START_2 >= 27 +# define BOOST_PP_ITERATION_2 27 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 26 && BOOST_PP_ITERATION_START_2 >= 26 +# define BOOST_PP_ITERATION_2 26 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 25 && BOOST_PP_ITERATION_START_2 >= 25 +# define BOOST_PP_ITERATION_2 25 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 24 && BOOST_PP_ITERATION_START_2 >= 24 +# define BOOST_PP_ITERATION_2 24 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 23 && BOOST_PP_ITERATION_START_2 >= 23 +# define BOOST_PP_ITERATION_2 23 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 22 && BOOST_PP_ITERATION_START_2 >= 22 +# define BOOST_PP_ITERATION_2 22 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 21 && BOOST_PP_ITERATION_START_2 >= 21 +# define BOOST_PP_ITERATION_2 21 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 20 && BOOST_PP_ITERATION_START_2 >= 20 +# define BOOST_PP_ITERATION_2 20 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 19 && BOOST_PP_ITERATION_START_2 >= 19 +# define BOOST_PP_ITERATION_2 19 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 18 && BOOST_PP_ITERATION_START_2 >= 18 +# define BOOST_PP_ITERATION_2 18 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 17 && BOOST_PP_ITERATION_START_2 >= 17 +# define BOOST_PP_ITERATION_2 17 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 16 && BOOST_PP_ITERATION_START_2 >= 16 +# define BOOST_PP_ITERATION_2 16 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 15 && BOOST_PP_ITERATION_START_2 >= 15 +# define BOOST_PP_ITERATION_2 15 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 14 && BOOST_PP_ITERATION_START_2 >= 14 +# define BOOST_PP_ITERATION_2 14 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 13 && BOOST_PP_ITERATION_START_2 >= 13 +# define BOOST_PP_ITERATION_2 13 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 12 && BOOST_PP_ITERATION_START_2 >= 12 +# define BOOST_PP_ITERATION_2 12 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 11 && BOOST_PP_ITERATION_START_2 >= 11 +# define BOOST_PP_ITERATION_2 11 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 10 && BOOST_PP_ITERATION_START_2 >= 10 +# define BOOST_PP_ITERATION_2 10 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 9 && BOOST_PP_ITERATION_START_2 >= 9 +# define BOOST_PP_ITERATION_2 9 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 8 && BOOST_PP_ITERATION_START_2 >= 8 +# define BOOST_PP_ITERATION_2 8 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 7 && BOOST_PP_ITERATION_START_2 >= 7 +# define BOOST_PP_ITERATION_2 7 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 6 && BOOST_PP_ITERATION_START_2 >= 6 +# define BOOST_PP_ITERATION_2 6 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 5 && BOOST_PP_ITERATION_START_2 >= 5 +# define BOOST_PP_ITERATION_2 5 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 4 && BOOST_PP_ITERATION_START_2 >= 4 +# define BOOST_PP_ITERATION_2 4 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 3 && BOOST_PP_ITERATION_START_2 >= 3 +# define BOOST_PP_ITERATION_2 3 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 2 && BOOST_PP_ITERATION_START_2 >= 2 +# define BOOST_PP_ITERATION_2 2 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 1 && BOOST_PP_ITERATION_START_2 >= 1 +# define BOOST_PP_ITERATION_2 1 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 0 && BOOST_PP_ITERATION_START_2 >= 0 +# define BOOST_PP_ITERATION_2 0 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse2_512.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse2_512.hpp new file mode 100644 index 000000000..705aba6f4 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse2_512.hpp @@ -0,0 +1,1293 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_FINISH_2 <= 512 && BOOST_PP_ITERATION_START_2 >= 512 +# define BOOST_PP_ITERATION_2 512 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 511 && BOOST_PP_ITERATION_START_2 >= 511 +# define BOOST_PP_ITERATION_2 511 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 510 && BOOST_PP_ITERATION_START_2 >= 510 +# define BOOST_PP_ITERATION_2 510 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 509 && BOOST_PP_ITERATION_START_2 >= 509 +# define BOOST_PP_ITERATION_2 509 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 508 && BOOST_PP_ITERATION_START_2 >= 508 +# define BOOST_PP_ITERATION_2 508 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 507 && BOOST_PP_ITERATION_START_2 >= 507 +# define BOOST_PP_ITERATION_2 507 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 506 && BOOST_PP_ITERATION_START_2 >= 506 +# define BOOST_PP_ITERATION_2 506 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 505 && BOOST_PP_ITERATION_START_2 >= 505 +# define BOOST_PP_ITERATION_2 505 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 504 && BOOST_PP_ITERATION_START_2 >= 504 +# define BOOST_PP_ITERATION_2 504 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 503 && BOOST_PP_ITERATION_START_2 >= 503 +# define BOOST_PP_ITERATION_2 503 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 502 && BOOST_PP_ITERATION_START_2 >= 502 +# define BOOST_PP_ITERATION_2 502 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 501 && BOOST_PP_ITERATION_START_2 >= 501 +# define BOOST_PP_ITERATION_2 501 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 500 && BOOST_PP_ITERATION_START_2 >= 500 +# define BOOST_PP_ITERATION_2 500 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 499 && BOOST_PP_ITERATION_START_2 >= 499 +# define BOOST_PP_ITERATION_2 499 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 498 && BOOST_PP_ITERATION_START_2 >= 498 +# define BOOST_PP_ITERATION_2 498 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 497 && BOOST_PP_ITERATION_START_2 >= 497 +# define BOOST_PP_ITERATION_2 497 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 496 && BOOST_PP_ITERATION_START_2 >= 496 +# define BOOST_PP_ITERATION_2 496 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 495 && BOOST_PP_ITERATION_START_2 >= 495 +# define BOOST_PP_ITERATION_2 495 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 494 && BOOST_PP_ITERATION_START_2 >= 494 +# define BOOST_PP_ITERATION_2 494 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 493 && BOOST_PP_ITERATION_START_2 >= 493 +# define BOOST_PP_ITERATION_2 493 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 492 && BOOST_PP_ITERATION_START_2 >= 492 +# define BOOST_PP_ITERATION_2 492 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 491 && BOOST_PP_ITERATION_START_2 >= 491 +# define BOOST_PP_ITERATION_2 491 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 490 && BOOST_PP_ITERATION_START_2 >= 490 +# define BOOST_PP_ITERATION_2 490 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 489 && BOOST_PP_ITERATION_START_2 >= 489 +# define BOOST_PP_ITERATION_2 489 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 488 && BOOST_PP_ITERATION_START_2 >= 488 +# define BOOST_PP_ITERATION_2 488 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 487 && BOOST_PP_ITERATION_START_2 >= 487 +# define BOOST_PP_ITERATION_2 487 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 486 && BOOST_PP_ITERATION_START_2 >= 486 +# define BOOST_PP_ITERATION_2 486 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 485 && BOOST_PP_ITERATION_START_2 >= 485 +# define BOOST_PP_ITERATION_2 485 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 484 && BOOST_PP_ITERATION_START_2 >= 484 +# define BOOST_PP_ITERATION_2 484 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 483 && BOOST_PP_ITERATION_START_2 >= 483 +# define BOOST_PP_ITERATION_2 483 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 482 && BOOST_PP_ITERATION_START_2 >= 482 +# define BOOST_PP_ITERATION_2 482 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 481 && BOOST_PP_ITERATION_START_2 >= 481 +# define BOOST_PP_ITERATION_2 481 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 480 && BOOST_PP_ITERATION_START_2 >= 480 +# define BOOST_PP_ITERATION_2 480 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 479 && BOOST_PP_ITERATION_START_2 >= 479 +# define BOOST_PP_ITERATION_2 479 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 478 && BOOST_PP_ITERATION_START_2 >= 478 +# define BOOST_PP_ITERATION_2 478 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 477 && BOOST_PP_ITERATION_START_2 >= 477 +# define BOOST_PP_ITERATION_2 477 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 476 && BOOST_PP_ITERATION_START_2 >= 476 +# define BOOST_PP_ITERATION_2 476 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 475 && BOOST_PP_ITERATION_START_2 >= 475 +# define BOOST_PP_ITERATION_2 475 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 474 && BOOST_PP_ITERATION_START_2 >= 474 +# define BOOST_PP_ITERATION_2 474 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 473 && BOOST_PP_ITERATION_START_2 >= 473 +# define BOOST_PP_ITERATION_2 473 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 472 && BOOST_PP_ITERATION_START_2 >= 472 +# define BOOST_PP_ITERATION_2 472 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 471 && BOOST_PP_ITERATION_START_2 >= 471 +# define BOOST_PP_ITERATION_2 471 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 470 && BOOST_PP_ITERATION_START_2 >= 470 +# define BOOST_PP_ITERATION_2 470 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 469 && BOOST_PP_ITERATION_START_2 >= 469 +# define BOOST_PP_ITERATION_2 469 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 468 && BOOST_PP_ITERATION_START_2 >= 468 +# define BOOST_PP_ITERATION_2 468 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 467 && BOOST_PP_ITERATION_START_2 >= 467 +# define BOOST_PP_ITERATION_2 467 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 466 && BOOST_PP_ITERATION_START_2 >= 466 +# define BOOST_PP_ITERATION_2 466 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 465 && BOOST_PP_ITERATION_START_2 >= 465 +# define BOOST_PP_ITERATION_2 465 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 464 && BOOST_PP_ITERATION_START_2 >= 464 +# define BOOST_PP_ITERATION_2 464 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 463 && BOOST_PP_ITERATION_START_2 >= 463 +# define BOOST_PP_ITERATION_2 463 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 462 && BOOST_PP_ITERATION_START_2 >= 462 +# define BOOST_PP_ITERATION_2 462 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 461 && BOOST_PP_ITERATION_START_2 >= 461 +# define BOOST_PP_ITERATION_2 461 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 460 && BOOST_PP_ITERATION_START_2 >= 460 +# define BOOST_PP_ITERATION_2 460 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 459 && BOOST_PP_ITERATION_START_2 >= 459 +# define BOOST_PP_ITERATION_2 459 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 458 && BOOST_PP_ITERATION_START_2 >= 458 +# define BOOST_PP_ITERATION_2 458 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 457 && BOOST_PP_ITERATION_START_2 >= 457 +# define BOOST_PP_ITERATION_2 457 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 456 && BOOST_PP_ITERATION_START_2 >= 456 +# define BOOST_PP_ITERATION_2 456 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 455 && BOOST_PP_ITERATION_START_2 >= 455 +# define BOOST_PP_ITERATION_2 455 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 454 && BOOST_PP_ITERATION_START_2 >= 454 +# define BOOST_PP_ITERATION_2 454 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 453 && BOOST_PP_ITERATION_START_2 >= 453 +# define BOOST_PP_ITERATION_2 453 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 452 && BOOST_PP_ITERATION_START_2 >= 452 +# define BOOST_PP_ITERATION_2 452 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 451 && BOOST_PP_ITERATION_START_2 >= 451 +# define BOOST_PP_ITERATION_2 451 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 450 && BOOST_PP_ITERATION_START_2 >= 450 +# define BOOST_PP_ITERATION_2 450 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 449 && BOOST_PP_ITERATION_START_2 >= 449 +# define BOOST_PP_ITERATION_2 449 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 448 && BOOST_PP_ITERATION_START_2 >= 448 +# define BOOST_PP_ITERATION_2 448 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 447 && BOOST_PP_ITERATION_START_2 >= 447 +# define BOOST_PP_ITERATION_2 447 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 446 && BOOST_PP_ITERATION_START_2 >= 446 +# define BOOST_PP_ITERATION_2 446 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 445 && BOOST_PP_ITERATION_START_2 >= 445 +# define BOOST_PP_ITERATION_2 445 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 444 && BOOST_PP_ITERATION_START_2 >= 444 +# define BOOST_PP_ITERATION_2 444 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 443 && BOOST_PP_ITERATION_START_2 >= 443 +# define BOOST_PP_ITERATION_2 443 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 442 && BOOST_PP_ITERATION_START_2 >= 442 +# define BOOST_PP_ITERATION_2 442 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 441 && BOOST_PP_ITERATION_START_2 >= 441 +# define BOOST_PP_ITERATION_2 441 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 440 && BOOST_PP_ITERATION_START_2 >= 440 +# define BOOST_PP_ITERATION_2 440 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 439 && BOOST_PP_ITERATION_START_2 >= 439 +# define BOOST_PP_ITERATION_2 439 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 438 && BOOST_PP_ITERATION_START_2 >= 438 +# define BOOST_PP_ITERATION_2 438 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 437 && BOOST_PP_ITERATION_START_2 >= 437 +# define BOOST_PP_ITERATION_2 437 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 436 && BOOST_PP_ITERATION_START_2 >= 436 +# define BOOST_PP_ITERATION_2 436 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 435 && BOOST_PP_ITERATION_START_2 >= 435 +# define BOOST_PP_ITERATION_2 435 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 434 && BOOST_PP_ITERATION_START_2 >= 434 +# define BOOST_PP_ITERATION_2 434 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 433 && BOOST_PP_ITERATION_START_2 >= 433 +# define BOOST_PP_ITERATION_2 433 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 432 && BOOST_PP_ITERATION_START_2 >= 432 +# define BOOST_PP_ITERATION_2 432 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 431 && BOOST_PP_ITERATION_START_2 >= 431 +# define BOOST_PP_ITERATION_2 431 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 430 && BOOST_PP_ITERATION_START_2 >= 430 +# define BOOST_PP_ITERATION_2 430 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 429 && BOOST_PP_ITERATION_START_2 >= 429 +# define BOOST_PP_ITERATION_2 429 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 428 && BOOST_PP_ITERATION_START_2 >= 428 +# define BOOST_PP_ITERATION_2 428 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 427 && BOOST_PP_ITERATION_START_2 >= 427 +# define BOOST_PP_ITERATION_2 427 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 426 && BOOST_PP_ITERATION_START_2 >= 426 +# define BOOST_PP_ITERATION_2 426 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 425 && BOOST_PP_ITERATION_START_2 >= 425 +# define BOOST_PP_ITERATION_2 425 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 424 && BOOST_PP_ITERATION_START_2 >= 424 +# define BOOST_PP_ITERATION_2 424 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 423 && BOOST_PP_ITERATION_START_2 >= 423 +# define BOOST_PP_ITERATION_2 423 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 422 && BOOST_PP_ITERATION_START_2 >= 422 +# define BOOST_PP_ITERATION_2 422 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 421 && BOOST_PP_ITERATION_START_2 >= 421 +# define BOOST_PP_ITERATION_2 421 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 420 && BOOST_PP_ITERATION_START_2 >= 420 +# define BOOST_PP_ITERATION_2 420 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 419 && BOOST_PP_ITERATION_START_2 >= 419 +# define BOOST_PP_ITERATION_2 419 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 418 && BOOST_PP_ITERATION_START_2 >= 418 +# define BOOST_PP_ITERATION_2 418 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 417 && BOOST_PP_ITERATION_START_2 >= 417 +# define BOOST_PP_ITERATION_2 417 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 416 && BOOST_PP_ITERATION_START_2 >= 416 +# define BOOST_PP_ITERATION_2 416 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 415 && BOOST_PP_ITERATION_START_2 >= 415 +# define BOOST_PP_ITERATION_2 415 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 414 && BOOST_PP_ITERATION_START_2 >= 414 +# define BOOST_PP_ITERATION_2 414 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 413 && BOOST_PP_ITERATION_START_2 >= 413 +# define BOOST_PP_ITERATION_2 413 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 412 && BOOST_PP_ITERATION_START_2 >= 412 +# define BOOST_PP_ITERATION_2 412 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 411 && BOOST_PP_ITERATION_START_2 >= 411 +# define BOOST_PP_ITERATION_2 411 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 410 && BOOST_PP_ITERATION_START_2 >= 410 +# define BOOST_PP_ITERATION_2 410 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 409 && BOOST_PP_ITERATION_START_2 >= 409 +# define BOOST_PP_ITERATION_2 409 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 408 && BOOST_PP_ITERATION_START_2 >= 408 +# define BOOST_PP_ITERATION_2 408 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 407 && BOOST_PP_ITERATION_START_2 >= 407 +# define BOOST_PP_ITERATION_2 407 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 406 && BOOST_PP_ITERATION_START_2 >= 406 +# define BOOST_PP_ITERATION_2 406 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 405 && BOOST_PP_ITERATION_START_2 >= 405 +# define BOOST_PP_ITERATION_2 405 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 404 && BOOST_PP_ITERATION_START_2 >= 404 +# define BOOST_PP_ITERATION_2 404 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 403 && BOOST_PP_ITERATION_START_2 >= 403 +# define BOOST_PP_ITERATION_2 403 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 402 && BOOST_PP_ITERATION_START_2 >= 402 +# define BOOST_PP_ITERATION_2 402 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 401 && BOOST_PP_ITERATION_START_2 >= 401 +# define BOOST_PP_ITERATION_2 401 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 400 && BOOST_PP_ITERATION_START_2 >= 400 +# define BOOST_PP_ITERATION_2 400 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 399 && BOOST_PP_ITERATION_START_2 >= 399 +# define BOOST_PP_ITERATION_2 399 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 398 && BOOST_PP_ITERATION_START_2 >= 398 +# define BOOST_PP_ITERATION_2 398 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 397 && BOOST_PP_ITERATION_START_2 >= 397 +# define BOOST_PP_ITERATION_2 397 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 396 && BOOST_PP_ITERATION_START_2 >= 396 +# define BOOST_PP_ITERATION_2 396 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 395 && BOOST_PP_ITERATION_START_2 >= 395 +# define BOOST_PP_ITERATION_2 395 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 394 && BOOST_PP_ITERATION_START_2 >= 394 +# define BOOST_PP_ITERATION_2 394 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 393 && BOOST_PP_ITERATION_START_2 >= 393 +# define BOOST_PP_ITERATION_2 393 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 392 && BOOST_PP_ITERATION_START_2 >= 392 +# define BOOST_PP_ITERATION_2 392 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 391 && BOOST_PP_ITERATION_START_2 >= 391 +# define BOOST_PP_ITERATION_2 391 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 390 && BOOST_PP_ITERATION_START_2 >= 390 +# define BOOST_PP_ITERATION_2 390 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 389 && BOOST_PP_ITERATION_START_2 >= 389 +# define BOOST_PP_ITERATION_2 389 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 388 && BOOST_PP_ITERATION_START_2 >= 388 +# define BOOST_PP_ITERATION_2 388 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 387 && BOOST_PP_ITERATION_START_2 >= 387 +# define BOOST_PP_ITERATION_2 387 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 386 && BOOST_PP_ITERATION_START_2 >= 386 +# define BOOST_PP_ITERATION_2 386 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 385 && BOOST_PP_ITERATION_START_2 >= 385 +# define BOOST_PP_ITERATION_2 385 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 384 && BOOST_PP_ITERATION_START_2 >= 384 +# define BOOST_PP_ITERATION_2 384 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 383 && BOOST_PP_ITERATION_START_2 >= 383 +# define BOOST_PP_ITERATION_2 383 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 382 && BOOST_PP_ITERATION_START_2 >= 382 +# define BOOST_PP_ITERATION_2 382 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 381 && BOOST_PP_ITERATION_START_2 >= 381 +# define BOOST_PP_ITERATION_2 381 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 380 && BOOST_PP_ITERATION_START_2 >= 380 +# define BOOST_PP_ITERATION_2 380 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 379 && BOOST_PP_ITERATION_START_2 >= 379 +# define BOOST_PP_ITERATION_2 379 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 378 && BOOST_PP_ITERATION_START_2 >= 378 +# define BOOST_PP_ITERATION_2 378 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 377 && BOOST_PP_ITERATION_START_2 >= 377 +# define BOOST_PP_ITERATION_2 377 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 376 && BOOST_PP_ITERATION_START_2 >= 376 +# define BOOST_PP_ITERATION_2 376 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 375 && BOOST_PP_ITERATION_START_2 >= 375 +# define BOOST_PP_ITERATION_2 375 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 374 && BOOST_PP_ITERATION_START_2 >= 374 +# define BOOST_PP_ITERATION_2 374 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 373 && BOOST_PP_ITERATION_START_2 >= 373 +# define BOOST_PP_ITERATION_2 373 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 372 && BOOST_PP_ITERATION_START_2 >= 372 +# define BOOST_PP_ITERATION_2 372 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 371 && BOOST_PP_ITERATION_START_2 >= 371 +# define BOOST_PP_ITERATION_2 371 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 370 && BOOST_PP_ITERATION_START_2 >= 370 +# define BOOST_PP_ITERATION_2 370 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 369 && BOOST_PP_ITERATION_START_2 >= 369 +# define BOOST_PP_ITERATION_2 369 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 368 && BOOST_PP_ITERATION_START_2 >= 368 +# define BOOST_PP_ITERATION_2 368 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 367 && BOOST_PP_ITERATION_START_2 >= 367 +# define BOOST_PP_ITERATION_2 367 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 366 && BOOST_PP_ITERATION_START_2 >= 366 +# define BOOST_PP_ITERATION_2 366 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 365 && BOOST_PP_ITERATION_START_2 >= 365 +# define BOOST_PP_ITERATION_2 365 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 364 && BOOST_PP_ITERATION_START_2 >= 364 +# define BOOST_PP_ITERATION_2 364 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 363 && BOOST_PP_ITERATION_START_2 >= 363 +# define BOOST_PP_ITERATION_2 363 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 362 && BOOST_PP_ITERATION_START_2 >= 362 +# define BOOST_PP_ITERATION_2 362 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 361 && BOOST_PP_ITERATION_START_2 >= 361 +# define BOOST_PP_ITERATION_2 361 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 360 && BOOST_PP_ITERATION_START_2 >= 360 +# define BOOST_PP_ITERATION_2 360 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 359 && BOOST_PP_ITERATION_START_2 >= 359 +# define BOOST_PP_ITERATION_2 359 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 358 && BOOST_PP_ITERATION_START_2 >= 358 +# define BOOST_PP_ITERATION_2 358 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 357 && BOOST_PP_ITERATION_START_2 >= 357 +# define BOOST_PP_ITERATION_2 357 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 356 && BOOST_PP_ITERATION_START_2 >= 356 +# define BOOST_PP_ITERATION_2 356 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 355 && BOOST_PP_ITERATION_START_2 >= 355 +# define BOOST_PP_ITERATION_2 355 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 354 && BOOST_PP_ITERATION_START_2 >= 354 +# define BOOST_PP_ITERATION_2 354 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 353 && BOOST_PP_ITERATION_START_2 >= 353 +# define BOOST_PP_ITERATION_2 353 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 352 && BOOST_PP_ITERATION_START_2 >= 352 +# define BOOST_PP_ITERATION_2 352 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 351 && BOOST_PP_ITERATION_START_2 >= 351 +# define BOOST_PP_ITERATION_2 351 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 350 && BOOST_PP_ITERATION_START_2 >= 350 +# define BOOST_PP_ITERATION_2 350 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 349 && BOOST_PP_ITERATION_START_2 >= 349 +# define BOOST_PP_ITERATION_2 349 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 348 && BOOST_PP_ITERATION_START_2 >= 348 +# define BOOST_PP_ITERATION_2 348 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 347 && BOOST_PP_ITERATION_START_2 >= 347 +# define BOOST_PP_ITERATION_2 347 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 346 && BOOST_PP_ITERATION_START_2 >= 346 +# define BOOST_PP_ITERATION_2 346 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 345 && BOOST_PP_ITERATION_START_2 >= 345 +# define BOOST_PP_ITERATION_2 345 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 344 && BOOST_PP_ITERATION_START_2 >= 344 +# define BOOST_PP_ITERATION_2 344 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 343 && BOOST_PP_ITERATION_START_2 >= 343 +# define BOOST_PP_ITERATION_2 343 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 342 && BOOST_PP_ITERATION_START_2 >= 342 +# define BOOST_PP_ITERATION_2 342 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 341 && BOOST_PP_ITERATION_START_2 >= 341 +# define BOOST_PP_ITERATION_2 341 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 340 && BOOST_PP_ITERATION_START_2 >= 340 +# define BOOST_PP_ITERATION_2 340 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 339 && BOOST_PP_ITERATION_START_2 >= 339 +# define BOOST_PP_ITERATION_2 339 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 338 && BOOST_PP_ITERATION_START_2 >= 338 +# define BOOST_PP_ITERATION_2 338 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 337 && BOOST_PP_ITERATION_START_2 >= 337 +# define BOOST_PP_ITERATION_2 337 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 336 && BOOST_PP_ITERATION_START_2 >= 336 +# define BOOST_PP_ITERATION_2 336 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 335 && BOOST_PP_ITERATION_START_2 >= 335 +# define BOOST_PP_ITERATION_2 335 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 334 && BOOST_PP_ITERATION_START_2 >= 334 +# define BOOST_PP_ITERATION_2 334 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 333 && BOOST_PP_ITERATION_START_2 >= 333 +# define BOOST_PP_ITERATION_2 333 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 332 && BOOST_PP_ITERATION_START_2 >= 332 +# define BOOST_PP_ITERATION_2 332 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 331 && BOOST_PP_ITERATION_START_2 >= 331 +# define BOOST_PP_ITERATION_2 331 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 330 && BOOST_PP_ITERATION_START_2 >= 330 +# define BOOST_PP_ITERATION_2 330 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 329 && BOOST_PP_ITERATION_START_2 >= 329 +# define BOOST_PP_ITERATION_2 329 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 328 && BOOST_PP_ITERATION_START_2 >= 328 +# define BOOST_PP_ITERATION_2 328 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 327 && BOOST_PP_ITERATION_START_2 >= 327 +# define BOOST_PP_ITERATION_2 327 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 326 && BOOST_PP_ITERATION_START_2 >= 326 +# define BOOST_PP_ITERATION_2 326 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 325 && BOOST_PP_ITERATION_START_2 >= 325 +# define BOOST_PP_ITERATION_2 325 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 324 && BOOST_PP_ITERATION_START_2 >= 324 +# define BOOST_PP_ITERATION_2 324 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 323 && BOOST_PP_ITERATION_START_2 >= 323 +# define BOOST_PP_ITERATION_2 323 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 322 && BOOST_PP_ITERATION_START_2 >= 322 +# define BOOST_PP_ITERATION_2 322 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 321 && BOOST_PP_ITERATION_START_2 >= 321 +# define BOOST_PP_ITERATION_2 321 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 320 && BOOST_PP_ITERATION_START_2 >= 320 +# define BOOST_PP_ITERATION_2 320 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 319 && BOOST_PP_ITERATION_START_2 >= 319 +# define BOOST_PP_ITERATION_2 319 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 318 && BOOST_PP_ITERATION_START_2 >= 318 +# define BOOST_PP_ITERATION_2 318 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 317 && BOOST_PP_ITERATION_START_2 >= 317 +# define BOOST_PP_ITERATION_2 317 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 316 && BOOST_PP_ITERATION_START_2 >= 316 +# define BOOST_PP_ITERATION_2 316 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 315 && BOOST_PP_ITERATION_START_2 >= 315 +# define BOOST_PP_ITERATION_2 315 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 314 && BOOST_PP_ITERATION_START_2 >= 314 +# define BOOST_PP_ITERATION_2 314 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 313 && BOOST_PP_ITERATION_START_2 >= 313 +# define BOOST_PP_ITERATION_2 313 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 312 && BOOST_PP_ITERATION_START_2 >= 312 +# define BOOST_PP_ITERATION_2 312 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 311 && BOOST_PP_ITERATION_START_2 >= 311 +# define BOOST_PP_ITERATION_2 311 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 310 && BOOST_PP_ITERATION_START_2 >= 310 +# define BOOST_PP_ITERATION_2 310 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 309 && BOOST_PP_ITERATION_START_2 >= 309 +# define BOOST_PP_ITERATION_2 309 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 308 && BOOST_PP_ITERATION_START_2 >= 308 +# define BOOST_PP_ITERATION_2 308 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 307 && BOOST_PP_ITERATION_START_2 >= 307 +# define BOOST_PP_ITERATION_2 307 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 306 && BOOST_PP_ITERATION_START_2 >= 306 +# define BOOST_PP_ITERATION_2 306 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 305 && BOOST_PP_ITERATION_START_2 >= 305 +# define BOOST_PP_ITERATION_2 305 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 304 && BOOST_PP_ITERATION_START_2 >= 304 +# define BOOST_PP_ITERATION_2 304 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 303 && BOOST_PP_ITERATION_START_2 >= 303 +# define BOOST_PP_ITERATION_2 303 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 302 && BOOST_PP_ITERATION_START_2 >= 302 +# define BOOST_PP_ITERATION_2 302 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 301 && BOOST_PP_ITERATION_START_2 >= 301 +# define BOOST_PP_ITERATION_2 301 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 300 && BOOST_PP_ITERATION_START_2 >= 300 +# define BOOST_PP_ITERATION_2 300 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 299 && BOOST_PP_ITERATION_START_2 >= 299 +# define BOOST_PP_ITERATION_2 299 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 298 && BOOST_PP_ITERATION_START_2 >= 298 +# define BOOST_PP_ITERATION_2 298 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 297 && BOOST_PP_ITERATION_START_2 >= 297 +# define BOOST_PP_ITERATION_2 297 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 296 && BOOST_PP_ITERATION_START_2 >= 296 +# define BOOST_PP_ITERATION_2 296 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 295 && BOOST_PP_ITERATION_START_2 >= 295 +# define BOOST_PP_ITERATION_2 295 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 294 && BOOST_PP_ITERATION_START_2 >= 294 +# define BOOST_PP_ITERATION_2 294 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 293 && BOOST_PP_ITERATION_START_2 >= 293 +# define BOOST_PP_ITERATION_2 293 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 292 && BOOST_PP_ITERATION_START_2 >= 292 +# define BOOST_PP_ITERATION_2 292 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 291 && BOOST_PP_ITERATION_START_2 >= 291 +# define BOOST_PP_ITERATION_2 291 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 290 && BOOST_PP_ITERATION_START_2 >= 290 +# define BOOST_PP_ITERATION_2 290 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 289 && BOOST_PP_ITERATION_START_2 >= 289 +# define BOOST_PP_ITERATION_2 289 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 288 && BOOST_PP_ITERATION_START_2 >= 288 +# define BOOST_PP_ITERATION_2 288 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 287 && BOOST_PP_ITERATION_START_2 >= 287 +# define BOOST_PP_ITERATION_2 287 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 286 && BOOST_PP_ITERATION_START_2 >= 286 +# define BOOST_PP_ITERATION_2 286 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 285 && BOOST_PP_ITERATION_START_2 >= 285 +# define BOOST_PP_ITERATION_2 285 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 284 && BOOST_PP_ITERATION_START_2 >= 284 +# define BOOST_PP_ITERATION_2 284 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 283 && BOOST_PP_ITERATION_START_2 >= 283 +# define BOOST_PP_ITERATION_2 283 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 282 && BOOST_PP_ITERATION_START_2 >= 282 +# define BOOST_PP_ITERATION_2 282 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 281 && BOOST_PP_ITERATION_START_2 >= 281 +# define BOOST_PP_ITERATION_2 281 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 280 && BOOST_PP_ITERATION_START_2 >= 280 +# define BOOST_PP_ITERATION_2 280 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 279 && BOOST_PP_ITERATION_START_2 >= 279 +# define BOOST_PP_ITERATION_2 279 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 278 && BOOST_PP_ITERATION_START_2 >= 278 +# define BOOST_PP_ITERATION_2 278 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 277 && BOOST_PP_ITERATION_START_2 >= 277 +# define BOOST_PP_ITERATION_2 277 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 276 && BOOST_PP_ITERATION_START_2 >= 276 +# define BOOST_PP_ITERATION_2 276 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 275 && BOOST_PP_ITERATION_START_2 >= 275 +# define BOOST_PP_ITERATION_2 275 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 274 && BOOST_PP_ITERATION_START_2 >= 274 +# define BOOST_PP_ITERATION_2 274 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 273 && BOOST_PP_ITERATION_START_2 >= 273 +# define BOOST_PP_ITERATION_2 273 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 272 && BOOST_PP_ITERATION_START_2 >= 272 +# define BOOST_PP_ITERATION_2 272 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 271 && BOOST_PP_ITERATION_START_2 >= 271 +# define BOOST_PP_ITERATION_2 271 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 270 && BOOST_PP_ITERATION_START_2 >= 270 +# define BOOST_PP_ITERATION_2 270 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 269 && BOOST_PP_ITERATION_START_2 >= 269 +# define BOOST_PP_ITERATION_2 269 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 268 && BOOST_PP_ITERATION_START_2 >= 268 +# define BOOST_PP_ITERATION_2 268 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 267 && BOOST_PP_ITERATION_START_2 >= 267 +# define BOOST_PP_ITERATION_2 267 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 266 && BOOST_PP_ITERATION_START_2 >= 266 +# define BOOST_PP_ITERATION_2 266 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 265 && BOOST_PP_ITERATION_START_2 >= 265 +# define BOOST_PP_ITERATION_2 265 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 264 && BOOST_PP_ITERATION_START_2 >= 264 +# define BOOST_PP_ITERATION_2 264 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 263 && BOOST_PP_ITERATION_START_2 >= 263 +# define BOOST_PP_ITERATION_2 263 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 262 && BOOST_PP_ITERATION_START_2 >= 262 +# define BOOST_PP_ITERATION_2 262 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 261 && BOOST_PP_ITERATION_START_2 >= 261 +# define BOOST_PP_ITERATION_2 261 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 260 && BOOST_PP_ITERATION_START_2 >= 260 +# define BOOST_PP_ITERATION_2 260 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 259 && BOOST_PP_ITERATION_START_2 >= 259 +# define BOOST_PP_ITERATION_2 259 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 258 && BOOST_PP_ITERATION_START_2 >= 258 +# define BOOST_PP_ITERATION_2 258 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif +# if BOOST_PP_ITERATION_FINISH_2 <= 257 && BOOST_PP_ITERATION_START_2 >= 257 +# define BOOST_PP_ITERATION_2 257 +# include BOOST_PP_FILENAME_2 +# undef BOOST_PP_ITERATION_2 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse3_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse3_1024.hpp new file mode 100644 index 000000000..fb8038dde --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse3_1024.hpp @@ -0,0 +1,2571 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * Distributed under the Boost Software License, Version 1.0. (See +# * accompanying file LICENSE_3_0.txt or copy at +# * http://www.boost.org/LICENSE_3_0.txt) +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_FINISH_3 <= 1024 && BOOST_PP_ITERATION_START_3 >= 1024 +# define BOOST_PP_ITERATION_3 1024 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1023 && BOOST_PP_ITERATION_START_3 >= 1023 +# define BOOST_PP_ITERATION_3 1023 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1022 && BOOST_PP_ITERATION_START_3 >= 1022 +# define BOOST_PP_ITERATION_3 1022 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1021 && BOOST_PP_ITERATION_START_3 >= 1021 +# define BOOST_PP_ITERATION_3 1021 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1020 && BOOST_PP_ITERATION_START_3 >= 1020 +# define BOOST_PP_ITERATION_3 1020 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1019 && BOOST_PP_ITERATION_START_3 >= 1019 +# define BOOST_PP_ITERATION_3 1019 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1018 && BOOST_PP_ITERATION_START_3 >= 1018 +# define BOOST_PP_ITERATION_3 1018 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1017 && BOOST_PP_ITERATION_START_3 >= 1017 +# define BOOST_PP_ITERATION_3 1017 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1016 && BOOST_PP_ITERATION_START_3 >= 1016 +# define BOOST_PP_ITERATION_3 1016 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1015 && BOOST_PP_ITERATION_START_3 >= 1015 +# define BOOST_PP_ITERATION_3 1015 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1014 && BOOST_PP_ITERATION_START_3 >= 1014 +# define BOOST_PP_ITERATION_3 1014 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1013 && BOOST_PP_ITERATION_START_3 >= 1013 +# define BOOST_PP_ITERATION_3 1013 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1012 && BOOST_PP_ITERATION_START_3 >= 1012 +# define BOOST_PP_ITERATION_3 1012 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1011 && BOOST_PP_ITERATION_START_3 >= 1011 +# define BOOST_PP_ITERATION_3 1011 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1010 && BOOST_PP_ITERATION_START_3 >= 1010 +# define BOOST_PP_ITERATION_3 1010 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1009 && BOOST_PP_ITERATION_START_3 >= 1009 +# define BOOST_PP_ITERATION_3 1009 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1008 && BOOST_PP_ITERATION_START_3 >= 1008 +# define BOOST_PP_ITERATION_3 1008 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1007 && BOOST_PP_ITERATION_START_3 >= 1007 +# define BOOST_PP_ITERATION_3 1007 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1006 && BOOST_PP_ITERATION_START_3 >= 1006 +# define BOOST_PP_ITERATION_3 1006 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1005 && BOOST_PP_ITERATION_START_3 >= 1005 +# define BOOST_PP_ITERATION_3 1005 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1004 && BOOST_PP_ITERATION_START_3 >= 1004 +# define BOOST_PP_ITERATION_3 1004 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1003 && BOOST_PP_ITERATION_START_3 >= 1003 +# define BOOST_PP_ITERATION_3 1003 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1002 && BOOST_PP_ITERATION_START_3 >= 1002 +# define BOOST_PP_ITERATION_3 1002 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1001 && BOOST_PP_ITERATION_START_3 >= 1001 +# define BOOST_PP_ITERATION_3 1001 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1000 && BOOST_PP_ITERATION_START_3 >= 1000 +# define BOOST_PP_ITERATION_3 1000 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 999 && BOOST_PP_ITERATION_START_3 >= 999 +# define BOOST_PP_ITERATION_3 999 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 998 && BOOST_PP_ITERATION_START_3 >= 998 +# define BOOST_PP_ITERATION_3 998 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 997 && BOOST_PP_ITERATION_START_3 >= 997 +# define BOOST_PP_ITERATION_3 997 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 996 && BOOST_PP_ITERATION_START_3 >= 996 +# define BOOST_PP_ITERATION_3 996 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 995 && BOOST_PP_ITERATION_START_3 >= 995 +# define BOOST_PP_ITERATION_3 995 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 994 && BOOST_PP_ITERATION_START_3 >= 994 +# define BOOST_PP_ITERATION_3 994 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 993 && BOOST_PP_ITERATION_START_3 >= 993 +# define BOOST_PP_ITERATION_3 993 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 992 && BOOST_PP_ITERATION_START_3 >= 992 +# define BOOST_PP_ITERATION_3 992 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 991 && BOOST_PP_ITERATION_START_3 >= 991 +# define BOOST_PP_ITERATION_3 991 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 990 && BOOST_PP_ITERATION_START_3 >= 990 +# define BOOST_PP_ITERATION_3 990 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 989 && BOOST_PP_ITERATION_START_3 >= 989 +# define BOOST_PP_ITERATION_3 989 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 988 && BOOST_PP_ITERATION_START_3 >= 988 +# define BOOST_PP_ITERATION_3 988 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 987 && BOOST_PP_ITERATION_START_3 >= 987 +# define BOOST_PP_ITERATION_3 987 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 986 && BOOST_PP_ITERATION_START_3 >= 986 +# define BOOST_PP_ITERATION_3 986 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 985 && BOOST_PP_ITERATION_START_3 >= 985 +# define BOOST_PP_ITERATION_3 985 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 984 && BOOST_PP_ITERATION_START_3 >= 984 +# define BOOST_PP_ITERATION_3 984 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 983 && BOOST_PP_ITERATION_START_3 >= 983 +# define BOOST_PP_ITERATION_3 983 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 982 && BOOST_PP_ITERATION_START_3 >= 982 +# define BOOST_PP_ITERATION_3 982 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 981 && BOOST_PP_ITERATION_START_3 >= 981 +# define BOOST_PP_ITERATION_3 981 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 980 && BOOST_PP_ITERATION_START_3 >= 980 +# define BOOST_PP_ITERATION_3 980 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 979 && BOOST_PP_ITERATION_START_3 >= 979 +# define BOOST_PP_ITERATION_3 979 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 978 && BOOST_PP_ITERATION_START_3 >= 978 +# define BOOST_PP_ITERATION_3 978 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 977 && BOOST_PP_ITERATION_START_3 >= 977 +# define BOOST_PP_ITERATION_3 977 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 976 && BOOST_PP_ITERATION_START_3 >= 976 +# define BOOST_PP_ITERATION_3 976 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 975 && BOOST_PP_ITERATION_START_3 >= 975 +# define BOOST_PP_ITERATION_3 975 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 974 && BOOST_PP_ITERATION_START_3 >= 974 +# define BOOST_PP_ITERATION_3 974 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 973 && BOOST_PP_ITERATION_START_3 >= 973 +# define BOOST_PP_ITERATION_3 973 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 972 && BOOST_PP_ITERATION_START_3 >= 972 +# define BOOST_PP_ITERATION_3 972 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 971 && BOOST_PP_ITERATION_START_3 >= 971 +# define BOOST_PP_ITERATION_3 971 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 970 && BOOST_PP_ITERATION_START_3 >= 970 +# define BOOST_PP_ITERATION_3 970 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 969 && BOOST_PP_ITERATION_START_3 >= 969 +# define BOOST_PP_ITERATION_3 969 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 968 && BOOST_PP_ITERATION_START_3 >= 968 +# define BOOST_PP_ITERATION_3 968 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 967 && BOOST_PP_ITERATION_START_3 >= 967 +# define BOOST_PP_ITERATION_3 967 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 966 && BOOST_PP_ITERATION_START_3 >= 966 +# define BOOST_PP_ITERATION_3 966 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 965 && BOOST_PP_ITERATION_START_3 >= 965 +# define BOOST_PP_ITERATION_3 965 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 964 && BOOST_PP_ITERATION_START_3 >= 964 +# define BOOST_PP_ITERATION_3 964 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 963 && BOOST_PP_ITERATION_START_3 >= 963 +# define BOOST_PP_ITERATION_3 963 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 962 && BOOST_PP_ITERATION_START_3 >= 962 +# define BOOST_PP_ITERATION_3 962 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 961 && BOOST_PP_ITERATION_START_3 >= 961 +# define BOOST_PP_ITERATION_3 961 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 960 && BOOST_PP_ITERATION_START_3 >= 960 +# define BOOST_PP_ITERATION_3 960 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 959 && BOOST_PP_ITERATION_START_3 >= 959 +# define BOOST_PP_ITERATION_3 959 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 958 && BOOST_PP_ITERATION_START_3 >= 958 +# define BOOST_PP_ITERATION_3 958 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 957 && BOOST_PP_ITERATION_START_3 >= 957 +# define BOOST_PP_ITERATION_3 957 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 956 && BOOST_PP_ITERATION_START_3 >= 956 +# define BOOST_PP_ITERATION_3 956 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 955 && BOOST_PP_ITERATION_START_3 >= 955 +# define BOOST_PP_ITERATION_3 955 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 954 && BOOST_PP_ITERATION_START_3 >= 954 +# define BOOST_PP_ITERATION_3 954 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 953 && BOOST_PP_ITERATION_START_3 >= 953 +# define BOOST_PP_ITERATION_3 953 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 952 && BOOST_PP_ITERATION_START_3 >= 952 +# define BOOST_PP_ITERATION_3 952 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 951 && BOOST_PP_ITERATION_START_3 >= 951 +# define BOOST_PP_ITERATION_3 951 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 950 && BOOST_PP_ITERATION_START_3 >= 950 +# define BOOST_PP_ITERATION_3 950 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 949 && BOOST_PP_ITERATION_START_3 >= 949 +# define BOOST_PP_ITERATION_3 949 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 948 && BOOST_PP_ITERATION_START_3 >= 948 +# define BOOST_PP_ITERATION_3 948 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 947 && BOOST_PP_ITERATION_START_3 >= 947 +# define BOOST_PP_ITERATION_3 947 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 946 && BOOST_PP_ITERATION_START_3 >= 946 +# define BOOST_PP_ITERATION_3 946 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 945 && BOOST_PP_ITERATION_START_3 >= 945 +# define BOOST_PP_ITERATION_3 945 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 944 && BOOST_PP_ITERATION_START_3 >= 944 +# define BOOST_PP_ITERATION_3 944 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 943 && BOOST_PP_ITERATION_START_3 >= 943 +# define BOOST_PP_ITERATION_3 943 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 942 && BOOST_PP_ITERATION_START_3 >= 942 +# define BOOST_PP_ITERATION_3 942 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 941 && BOOST_PP_ITERATION_START_3 >= 941 +# define BOOST_PP_ITERATION_3 941 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 940 && BOOST_PP_ITERATION_START_3 >= 940 +# define BOOST_PP_ITERATION_3 940 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 939 && BOOST_PP_ITERATION_START_3 >= 939 +# define BOOST_PP_ITERATION_3 939 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 938 && BOOST_PP_ITERATION_START_3 >= 938 +# define BOOST_PP_ITERATION_3 938 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 937 && BOOST_PP_ITERATION_START_3 >= 937 +# define BOOST_PP_ITERATION_3 937 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 936 && BOOST_PP_ITERATION_START_3 >= 936 +# define BOOST_PP_ITERATION_3 936 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 935 && BOOST_PP_ITERATION_START_3 >= 935 +# define BOOST_PP_ITERATION_3 935 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 934 && BOOST_PP_ITERATION_START_3 >= 934 +# define BOOST_PP_ITERATION_3 934 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 933 && BOOST_PP_ITERATION_START_3 >= 933 +# define BOOST_PP_ITERATION_3 933 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 932 && BOOST_PP_ITERATION_START_3 >= 932 +# define BOOST_PP_ITERATION_3 932 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 931 && BOOST_PP_ITERATION_START_3 >= 931 +# define BOOST_PP_ITERATION_3 931 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 930 && BOOST_PP_ITERATION_START_3 >= 930 +# define BOOST_PP_ITERATION_3 930 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 929 && BOOST_PP_ITERATION_START_3 >= 929 +# define BOOST_PP_ITERATION_3 929 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 928 && BOOST_PP_ITERATION_START_3 >= 928 +# define BOOST_PP_ITERATION_3 928 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 927 && BOOST_PP_ITERATION_START_3 >= 927 +# define BOOST_PP_ITERATION_3 927 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 926 && BOOST_PP_ITERATION_START_3 >= 926 +# define BOOST_PP_ITERATION_3 926 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 925 && BOOST_PP_ITERATION_START_3 >= 925 +# define BOOST_PP_ITERATION_3 925 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 924 && BOOST_PP_ITERATION_START_3 >= 924 +# define BOOST_PP_ITERATION_3 924 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 923 && BOOST_PP_ITERATION_START_3 >= 923 +# define BOOST_PP_ITERATION_3 923 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 922 && BOOST_PP_ITERATION_START_3 >= 922 +# define BOOST_PP_ITERATION_3 922 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 921 && BOOST_PP_ITERATION_START_3 >= 921 +# define BOOST_PP_ITERATION_3 921 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 920 && BOOST_PP_ITERATION_START_3 >= 920 +# define BOOST_PP_ITERATION_3 920 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 919 && BOOST_PP_ITERATION_START_3 >= 919 +# define BOOST_PP_ITERATION_3 919 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 918 && BOOST_PP_ITERATION_START_3 >= 918 +# define BOOST_PP_ITERATION_3 918 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 917 && BOOST_PP_ITERATION_START_3 >= 917 +# define BOOST_PP_ITERATION_3 917 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 916 && BOOST_PP_ITERATION_START_3 >= 916 +# define BOOST_PP_ITERATION_3 916 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 915 && BOOST_PP_ITERATION_START_3 >= 915 +# define BOOST_PP_ITERATION_3 915 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 914 && BOOST_PP_ITERATION_START_3 >= 914 +# define BOOST_PP_ITERATION_3 914 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 913 && BOOST_PP_ITERATION_START_3 >= 913 +# define BOOST_PP_ITERATION_3 913 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 912 && BOOST_PP_ITERATION_START_3 >= 912 +# define BOOST_PP_ITERATION_3 912 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 911 && BOOST_PP_ITERATION_START_3 >= 911 +# define BOOST_PP_ITERATION_3 911 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 910 && BOOST_PP_ITERATION_START_3 >= 910 +# define BOOST_PP_ITERATION_3 910 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 909 && BOOST_PP_ITERATION_START_3 >= 909 +# define BOOST_PP_ITERATION_3 909 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 908 && BOOST_PP_ITERATION_START_3 >= 908 +# define BOOST_PP_ITERATION_3 908 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 907 && BOOST_PP_ITERATION_START_3 >= 907 +# define BOOST_PP_ITERATION_3 907 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 906 && BOOST_PP_ITERATION_START_3 >= 906 +# define BOOST_PP_ITERATION_3 906 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 905 && BOOST_PP_ITERATION_START_3 >= 905 +# define BOOST_PP_ITERATION_3 905 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 904 && BOOST_PP_ITERATION_START_3 >= 904 +# define BOOST_PP_ITERATION_3 904 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 903 && BOOST_PP_ITERATION_START_3 >= 903 +# define BOOST_PP_ITERATION_3 903 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 902 && BOOST_PP_ITERATION_START_3 >= 902 +# define BOOST_PP_ITERATION_3 902 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 901 && BOOST_PP_ITERATION_START_3 >= 901 +# define BOOST_PP_ITERATION_3 901 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 900 && BOOST_PP_ITERATION_START_3 >= 900 +# define BOOST_PP_ITERATION_3 900 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 899 && BOOST_PP_ITERATION_START_3 >= 899 +# define BOOST_PP_ITERATION_3 899 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 898 && BOOST_PP_ITERATION_START_3 >= 898 +# define BOOST_PP_ITERATION_3 898 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 897 && BOOST_PP_ITERATION_START_3 >= 897 +# define BOOST_PP_ITERATION_3 897 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 896 && BOOST_PP_ITERATION_START_3 >= 896 +# define BOOST_PP_ITERATION_3 896 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 895 && BOOST_PP_ITERATION_START_3 >= 895 +# define BOOST_PP_ITERATION_3 895 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 894 && BOOST_PP_ITERATION_START_3 >= 894 +# define BOOST_PP_ITERATION_3 894 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 893 && BOOST_PP_ITERATION_START_3 >= 893 +# define BOOST_PP_ITERATION_3 893 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 892 && BOOST_PP_ITERATION_START_3 >= 892 +# define BOOST_PP_ITERATION_3 892 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 891 && BOOST_PP_ITERATION_START_3 >= 891 +# define BOOST_PP_ITERATION_3 891 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 890 && BOOST_PP_ITERATION_START_3 >= 890 +# define BOOST_PP_ITERATION_3 890 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 889 && BOOST_PP_ITERATION_START_3 >= 889 +# define BOOST_PP_ITERATION_3 889 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 888 && BOOST_PP_ITERATION_START_3 >= 888 +# define BOOST_PP_ITERATION_3 888 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 887 && BOOST_PP_ITERATION_START_3 >= 887 +# define BOOST_PP_ITERATION_3 887 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 886 && BOOST_PP_ITERATION_START_3 >= 886 +# define BOOST_PP_ITERATION_3 886 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 885 && BOOST_PP_ITERATION_START_3 >= 885 +# define BOOST_PP_ITERATION_3 885 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 884 && BOOST_PP_ITERATION_START_3 >= 884 +# define BOOST_PP_ITERATION_3 884 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 883 && BOOST_PP_ITERATION_START_3 >= 883 +# define BOOST_PP_ITERATION_3 883 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 882 && BOOST_PP_ITERATION_START_3 >= 882 +# define BOOST_PP_ITERATION_3 882 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 881 && BOOST_PP_ITERATION_START_3 >= 881 +# define BOOST_PP_ITERATION_3 881 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 880 && BOOST_PP_ITERATION_START_3 >= 880 +# define BOOST_PP_ITERATION_3 880 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 879 && BOOST_PP_ITERATION_START_3 >= 879 +# define BOOST_PP_ITERATION_3 879 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 878 && BOOST_PP_ITERATION_START_3 >= 878 +# define BOOST_PP_ITERATION_3 878 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 877 && BOOST_PP_ITERATION_START_3 >= 877 +# define BOOST_PP_ITERATION_3 877 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 876 && BOOST_PP_ITERATION_START_3 >= 876 +# define BOOST_PP_ITERATION_3 876 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 875 && BOOST_PP_ITERATION_START_3 >= 875 +# define BOOST_PP_ITERATION_3 875 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 874 && BOOST_PP_ITERATION_START_3 >= 874 +# define BOOST_PP_ITERATION_3 874 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 873 && BOOST_PP_ITERATION_START_3 >= 873 +# define BOOST_PP_ITERATION_3 873 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 872 && BOOST_PP_ITERATION_START_3 >= 872 +# define BOOST_PP_ITERATION_3 872 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 871 && BOOST_PP_ITERATION_START_3 >= 871 +# define BOOST_PP_ITERATION_3 871 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 870 && BOOST_PP_ITERATION_START_3 >= 870 +# define BOOST_PP_ITERATION_3 870 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 869 && BOOST_PP_ITERATION_START_3 >= 869 +# define BOOST_PP_ITERATION_3 869 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 868 && BOOST_PP_ITERATION_START_3 >= 868 +# define BOOST_PP_ITERATION_3 868 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 867 && BOOST_PP_ITERATION_START_3 >= 867 +# define BOOST_PP_ITERATION_3 867 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 866 && BOOST_PP_ITERATION_START_3 >= 866 +# define BOOST_PP_ITERATION_3 866 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 865 && BOOST_PP_ITERATION_START_3 >= 865 +# define BOOST_PP_ITERATION_3 865 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 864 && BOOST_PP_ITERATION_START_3 >= 864 +# define BOOST_PP_ITERATION_3 864 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 863 && BOOST_PP_ITERATION_START_3 >= 863 +# define BOOST_PP_ITERATION_3 863 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 862 && BOOST_PP_ITERATION_START_3 >= 862 +# define BOOST_PP_ITERATION_3 862 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 861 && BOOST_PP_ITERATION_START_3 >= 861 +# define BOOST_PP_ITERATION_3 861 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 860 && BOOST_PP_ITERATION_START_3 >= 860 +# define BOOST_PP_ITERATION_3 860 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 859 && BOOST_PP_ITERATION_START_3 >= 859 +# define BOOST_PP_ITERATION_3 859 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 858 && BOOST_PP_ITERATION_START_3 >= 858 +# define BOOST_PP_ITERATION_3 858 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 857 && BOOST_PP_ITERATION_START_3 >= 857 +# define BOOST_PP_ITERATION_3 857 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 856 && BOOST_PP_ITERATION_START_3 >= 856 +# define BOOST_PP_ITERATION_3 856 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 855 && BOOST_PP_ITERATION_START_3 >= 855 +# define BOOST_PP_ITERATION_3 855 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 854 && BOOST_PP_ITERATION_START_3 >= 854 +# define BOOST_PP_ITERATION_3 854 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 853 && BOOST_PP_ITERATION_START_3 >= 853 +# define BOOST_PP_ITERATION_3 853 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 852 && BOOST_PP_ITERATION_START_3 >= 852 +# define BOOST_PP_ITERATION_3 852 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 851 && BOOST_PP_ITERATION_START_3 >= 851 +# define BOOST_PP_ITERATION_3 851 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 850 && BOOST_PP_ITERATION_START_3 >= 850 +# define BOOST_PP_ITERATION_3 850 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 849 && BOOST_PP_ITERATION_START_3 >= 849 +# define BOOST_PP_ITERATION_3 849 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 848 && BOOST_PP_ITERATION_START_3 >= 848 +# define BOOST_PP_ITERATION_3 848 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 847 && BOOST_PP_ITERATION_START_3 >= 847 +# define BOOST_PP_ITERATION_3 847 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 846 && BOOST_PP_ITERATION_START_3 >= 846 +# define BOOST_PP_ITERATION_3 846 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 845 && BOOST_PP_ITERATION_START_3 >= 845 +# define BOOST_PP_ITERATION_3 845 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 844 && BOOST_PP_ITERATION_START_3 >= 844 +# define BOOST_PP_ITERATION_3 844 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 843 && BOOST_PP_ITERATION_START_3 >= 843 +# define BOOST_PP_ITERATION_3 843 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 842 && BOOST_PP_ITERATION_START_3 >= 842 +# define BOOST_PP_ITERATION_3 842 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 841 && BOOST_PP_ITERATION_START_3 >= 841 +# define BOOST_PP_ITERATION_3 841 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 840 && BOOST_PP_ITERATION_START_3 >= 840 +# define BOOST_PP_ITERATION_3 840 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 839 && BOOST_PP_ITERATION_START_3 >= 839 +# define BOOST_PP_ITERATION_3 839 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 838 && BOOST_PP_ITERATION_START_3 >= 838 +# define BOOST_PP_ITERATION_3 838 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 837 && BOOST_PP_ITERATION_START_3 >= 837 +# define BOOST_PP_ITERATION_3 837 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 836 && BOOST_PP_ITERATION_START_3 >= 836 +# define BOOST_PP_ITERATION_3 836 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 835 && BOOST_PP_ITERATION_START_3 >= 835 +# define BOOST_PP_ITERATION_3 835 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 834 && BOOST_PP_ITERATION_START_3 >= 834 +# define BOOST_PP_ITERATION_3 834 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 833 && BOOST_PP_ITERATION_START_3 >= 833 +# define BOOST_PP_ITERATION_3 833 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 832 && BOOST_PP_ITERATION_START_3 >= 832 +# define BOOST_PP_ITERATION_3 832 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 831 && BOOST_PP_ITERATION_START_3 >= 831 +# define BOOST_PP_ITERATION_3 831 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 830 && BOOST_PP_ITERATION_START_3 >= 830 +# define BOOST_PP_ITERATION_3 830 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 829 && BOOST_PP_ITERATION_START_3 >= 829 +# define BOOST_PP_ITERATION_3 829 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 828 && BOOST_PP_ITERATION_START_3 >= 828 +# define BOOST_PP_ITERATION_3 828 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 827 && BOOST_PP_ITERATION_START_3 >= 827 +# define BOOST_PP_ITERATION_3 827 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 826 && BOOST_PP_ITERATION_START_3 >= 826 +# define BOOST_PP_ITERATION_3 826 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 825 && BOOST_PP_ITERATION_START_3 >= 825 +# define BOOST_PP_ITERATION_3 825 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 824 && BOOST_PP_ITERATION_START_3 >= 824 +# define BOOST_PP_ITERATION_3 824 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 823 && BOOST_PP_ITERATION_START_3 >= 823 +# define BOOST_PP_ITERATION_3 823 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 822 && BOOST_PP_ITERATION_START_3 >= 822 +# define BOOST_PP_ITERATION_3 822 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 821 && BOOST_PP_ITERATION_START_3 >= 821 +# define BOOST_PP_ITERATION_3 821 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 820 && BOOST_PP_ITERATION_START_3 >= 820 +# define BOOST_PP_ITERATION_3 820 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 819 && BOOST_PP_ITERATION_START_3 >= 819 +# define BOOST_PP_ITERATION_3 819 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 818 && BOOST_PP_ITERATION_START_3 >= 818 +# define BOOST_PP_ITERATION_3 818 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 817 && BOOST_PP_ITERATION_START_3 >= 817 +# define BOOST_PP_ITERATION_3 817 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 816 && BOOST_PP_ITERATION_START_3 >= 816 +# define BOOST_PP_ITERATION_3 816 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 815 && BOOST_PP_ITERATION_START_3 >= 815 +# define BOOST_PP_ITERATION_3 815 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 814 && BOOST_PP_ITERATION_START_3 >= 814 +# define BOOST_PP_ITERATION_3 814 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 813 && BOOST_PP_ITERATION_START_3 >= 813 +# define BOOST_PP_ITERATION_3 813 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 812 && BOOST_PP_ITERATION_START_3 >= 812 +# define BOOST_PP_ITERATION_3 812 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 811 && BOOST_PP_ITERATION_START_3 >= 811 +# define BOOST_PP_ITERATION_3 811 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 810 && BOOST_PP_ITERATION_START_3 >= 810 +# define BOOST_PP_ITERATION_3 810 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 809 && BOOST_PP_ITERATION_START_3 >= 809 +# define BOOST_PP_ITERATION_3 809 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 808 && BOOST_PP_ITERATION_START_3 >= 808 +# define BOOST_PP_ITERATION_3 808 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 807 && BOOST_PP_ITERATION_START_3 >= 807 +# define BOOST_PP_ITERATION_3 807 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 806 && BOOST_PP_ITERATION_START_3 >= 806 +# define BOOST_PP_ITERATION_3 806 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 805 && BOOST_PP_ITERATION_START_3 >= 805 +# define BOOST_PP_ITERATION_3 805 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 804 && BOOST_PP_ITERATION_START_3 >= 804 +# define BOOST_PP_ITERATION_3 804 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 803 && BOOST_PP_ITERATION_START_3 >= 803 +# define BOOST_PP_ITERATION_3 803 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 802 && BOOST_PP_ITERATION_START_3 >= 802 +# define BOOST_PP_ITERATION_3 802 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 801 && BOOST_PP_ITERATION_START_3 >= 801 +# define BOOST_PP_ITERATION_3 801 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 800 && BOOST_PP_ITERATION_START_3 >= 800 +# define BOOST_PP_ITERATION_3 800 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 799 && BOOST_PP_ITERATION_START_3 >= 799 +# define BOOST_PP_ITERATION_3 799 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 798 && BOOST_PP_ITERATION_START_3 >= 798 +# define BOOST_PP_ITERATION_3 798 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 797 && BOOST_PP_ITERATION_START_3 >= 797 +# define BOOST_PP_ITERATION_3 797 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 796 && BOOST_PP_ITERATION_START_3 >= 796 +# define BOOST_PP_ITERATION_3 796 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 795 && BOOST_PP_ITERATION_START_3 >= 795 +# define BOOST_PP_ITERATION_3 795 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 794 && BOOST_PP_ITERATION_START_3 >= 794 +# define BOOST_PP_ITERATION_3 794 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 793 && BOOST_PP_ITERATION_START_3 >= 793 +# define BOOST_PP_ITERATION_3 793 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 792 && BOOST_PP_ITERATION_START_3 >= 792 +# define BOOST_PP_ITERATION_3 792 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 791 && BOOST_PP_ITERATION_START_3 >= 791 +# define BOOST_PP_ITERATION_3 791 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 790 && BOOST_PP_ITERATION_START_3 >= 790 +# define BOOST_PP_ITERATION_3 790 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 789 && BOOST_PP_ITERATION_START_3 >= 789 +# define BOOST_PP_ITERATION_3 789 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 788 && BOOST_PP_ITERATION_START_3 >= 788 +# define BOOST_PP_ITERATION_3 788 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 787 && BOOST_PP_ITERATION_START_3 >= 787 +# define BOOST_PP_ITERATION_3 787 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 786 && BOOST_PP_ITERATION_START_3 >= 786 +# define BOOST_PP_ITERATION_3 786 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 785 && BOOST_PP_ITERATION_START_3 >= 785 +# define BOOST_PP_ITERATION_3 785 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 784 && BOOST_PP_ITERATION_START_3 >= 784 +# define BOOST_PP_ITERATION_3 784 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 783 && BOOST_PP_ITERATION_START_3 >= 783 +# define BOOST_PP_ITERATION_3 783 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 782 && BOOST_PP_ITERATION_START_3 >= 782 +# define BOOST_PP_ITERATION_3 782 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 781 && BOOST_PP_ITERATION_START_3 >= 781 +# define BOOST_PP_ITERATION_3 781 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 780 && BOOST_PP_ITERATION_START_3 >= 780 +# define BOOST_PP_ITERATION_3 780 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 779 && BOOST_PP_ITERATION_START_3 >= 779 +# define BOOST_PP_ITERATION_3 779 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 778 && BOOST_PP_ITERATION_START_3 >= 778 +# define BOOST_PP_ITERATION_3 778 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 777 && BOOST_PP_ITERATION_START_3 >= 777 +# define BOOST_PP_ITERATION_3 777 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 776 && BOOST_PP_ITERATION_START_3 >= 776 +# define BOOST_PP_ITERATION_3 776 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 775 && BOOST_PP_ITERATION_START_3 >= 775 +# define BOOST_PP_ITERATION_3 775 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 774 && BOOST_PP_ITERATION_START_3 >= 774 +# define BOOST_PP_ITERATION_3 774 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 773 && BOOST_PP_ITERATION_START_3 >= 773 +# define BOOST_PP_ITERATION_3 773 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 772 && BOOST_PP_ITERATION_START_3 >= 772 +# define BOOST_PP_ITERATION_3 772 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 771 && BOOST_PP_ITERATION_START_3 >= 771 +# define BOOST_PP_ITERATION_3 771 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 770 && BOOST_PP_ITERATION_START_3 >= 770 +# define BOOST_PP_ITERATION_3 770 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 769 && BOOST_PP_ITERATION_START_3 >= 769 +# define BOOST_PP_ITERATION_3 769 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 768 && BOOST_PP_ITERATION_START_3 >= 768 +# define BOOST_PP_ITERATION_3 768 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 767 && BOOST_PP_ITERATION_START_3 >= 767 +# define BOOST_PP_ITERATION_3 767 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 766 && BOOST_PP_ITERATION_START_3 >= 766 +# define BOOST_PP_ITERATION_3 766 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 765 && BOOST_PP_ITERATION_START_3 >= 765 +# define BOOST_PP_ITERATION_3 765 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 764 && BOOST_PP_ITERATION_START_3 >= 764 +# define BOOST_PP_ITERATION_3 764 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 763 && BOOST_PP_ITERATION_START_3 >= 763 +# define BOOST_PP_ITERATION_3 763 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 762 && BOOST_PP_ITERATION_START_3 >= 762 +# define BOOST_PP_ITERATION_3 762 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 761 && BOOST_PP_ITERATION_START_3 >= 761 +# define BOOST_PP_ITERATION_3 761 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 760 && BOOST_PP_ITERATION_START_3 >= 760 +# define BOOST_PP_ITERATION_3 760 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 759 && BOOST_PP_ITERATION_START_3 >= 759 +# define BOOST_PP_ITERATION_3 759 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 758 && BOOST_PP_ITERATION_START_3 >= 758 +# define BOOST_PP_ITERATION_3 758 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 757 && BOOST_PP_ITERATION_START_3 >= 757 +# define BOOST_PP_ITERATION_3 757 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 756 && BOOST_PP_ITERATION_START_3 >= 756 +# define BOOST_PP_ITERATION_3 756 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 755 && BOOST_PP_ITERATION_START_3 >= 755 +# define BOOST_PP_ITERATION_3 755 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 754 && BOOST_PP_ITERATION_START_3 >= 754 +# define BOOST_PP_ITERATION_3 754 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 753 && BOOST_PP_ITERATION_START_3 >= 753 +# define BOOST_PP_ITERATION_3 753 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 752 && BOOST_PP_ITERATION_START_3 >= 752 +# define BOOST_PP_ITERATION_3 752 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 751 && BOOST_PP_ITERATION_START_3 >= 751 +# define BOOST_PP_ITERATION_3 751 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 750 && BOOST_PP_ITERATION_START_3 >= 750 +# define BOOST_PP_ITERATION_3 750 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 749 && BOOST_PP_ITERATION_START_3 >= 749 +# define BOOST_PP_ITERATION_3 749 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 748 && BOOST_PP_ITERATION_START_3 >= 748 +# define BOOST_PP_ITERATION_3 748 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 747 && BOOST_PP_ITERATION_START_3 >= 747 +# define BOOST_PP_ITERATION_3 747 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 746 && BOOST_PP_ITERATION_START_3 >= 746 +# define BOOST_PP_ITERATION_3 746 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 745 && BOOST_PP_ITERATION_START_3 >= 745 +# define BOOST_PP_ITERATION_3 745 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 744 && BOOST_PP_ITERATION_START_3 >= 744 +# define BOOST_PP_ITERATION_3 744 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 743 && BOOST_PP_ITERATION_START_3 >= 743 +# define BOOST_PP_ITERATION_3 743 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 742 && BOOST_PP_ITERATION_START_3 >= 742 +# define BOOST_PP_ITERATION_3 742 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 741 && BOOST_PP_ITERATION_START_3 >= 741 +# define BOOST_PP_ITERATION_3 741 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 740 && BOOST_PP_ITERATION_START_3 >= 740 +# define BOOST_PP_ITERATION_3 740 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 739 && BOOST_PP_ITERATION_START_3 >= 739 +# define BOOST_PP_ITERATION_3 739 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 738 && BOOST_PP_ITERATION_START_3 >= 738 +# define BOOST_PP_ITERATION_3 738 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 737 && BOOST_PP_ITERATION_START_3 >= 737 +# define BOOST_PP_ITERATION_3 737 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 736 && BOOST_PP_ITERATION_START_3 >= 736 +# define BOOST_PP_ITERATION_3 736 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 735 && BOOST_PP_ITERATION_START_3 >= 735 +# define BOOST_PP_ITERATION_3 735 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 734 && BOOST_PP_ITERATION_START_3 >= 734 +# define BOOST_PP_ITERATION_3 734 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 733 && BOOST_PP_ITERATION_START_3 >= 733 +# define BOOST_PP_ITERATION_3 733 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 732 && BOOST_PP_ITERATION_START_3 >= 732 +# define BOOST_PP_ITERATION_3 732 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 731 && BOOST_PP_ITERATION_START_3 >= 731 +# define BOOST_PP_ITERATION_3 731 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 730 && BOOST_PP_ITERATION_START_3 >= 730 +# define BOOST_PP_ITERATION_3 730 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 729 && BOOST_PP_ITERATION_START_3 >= 729 +# define BOOST_PP_ITERATION_3 729 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 728 && BOOST_PP_ITERATION_START_3 >= 728 +# define BOOST_PP_ITERATION_3 728 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 727 && BOOST_PP_ITERATION_START_3 >= 727 +# define BOOST_PP_ITERATION_3 727 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 726 && BOOST_PP_ITERATION_START_3 >= 726 +# define BOOST_PP_ITERATION_3 726 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 725 && BOOST_PP_ITERATION_START_3 >= 725 +# define BOOST_PP_ITERATION_3 725 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 724 && BOOST_PP_ITERATION_START_3 >= 724 +# define BOOST_PP_ITERATION_3 724 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 723 && BOOST_PP_ITERATION_START_3 >= 723 +# define BOOST_PP_ITERATION_3 723 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 722 && BOOST_PP_ITERATION_START_3 >= 722 +# define BOOST_PP_ITERATION_3 722 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 721 && BOOST_PP_ITERATION_START_3 >= 721 +# define BOOST_PP_ITERATION_3 721 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 720 && BOOST_PP_ITERATION_START_3 >= 720 +# define BOOST_PP_ITERATION_3 720 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 719 && BOOST_PP_ITERATION_START_3 >= 719 +# define BOOST_PP_ITERATION_3 719 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 718 && BOOST_PP_ITERATION_START_3 >= 718 +# define BOOST_PP_ITERATION_3 718 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 717 && BOOST_PP_ITERATION_START_3 >= 717 +# define BOOST_PP_ITERATION_3 717 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 716 && BOOST_PP_ITERATION_START_3 >= 716 +# define BOOST_PP_ITERATION_3 716 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 715 && BOOST_PP_ITERATION_START_3 >= 715 +# define BOOST_PP_ITERATION_3 715 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 714 && BOOST_PP_ITERATION_START_3 >= 714 +# define BOOST_PP_ITERATION_3 714 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 713 && BOOST_PP_ITERATION_START_3 >= 713 +# define BOOST_PP_ITERATION_3 713 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 712 && BOOST_PP_ITERATION_START_3 >= 712 +# define BOOST_PP_ITERATION_3 712 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 711 && BOOST_PP_ITERATION_START_3 >= 711 +# define BOOST_PP_ITERATION_3 711 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 710 && BOOST_PP_ITERATION_START_3 >= 710 +# define BOOST_PP_ITERATION_3 710 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 709 && BOOST_PP_ITERATION_START_3 >= 709 +# define BOOST_PP_ITERATION_3 709 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 708 && BOOST_PP_ITERATION_START_3 >= 708 +# define BOOST_PP_ITERATION_3 708 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 707 && BOOST_PP_ITERATION_START_3 >= 707 +# define BOOST_PP_ITERATION_3 707 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 706 && BOOST_PP_ITERATION_START_3 >= 706 +# define BOOST_PP_ITERATION_3 706 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 705 && BOOST_PP_ITERATION_START_3 >= 705 +# define BOOST_PP_ITERATION_3 705 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 704 && BOOST_PP_ITERATION_START_3 >= 704 +# define BOOST_PP_ITERATION_3 704 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 703 && BOOST_PP_ITERATION_START_3 >= 703 +# define BOOST_PP_ITERATION_3 703 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 702 && BOOST_PP_ITERATION_START_3 >= 702 +# define BOOST_PP_ITERATION_3 702 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 701 && BOOST_PP_ITERATION_START_3 >= 701 +# define BOOST_PP_ITERATION_3 701 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 700 && BOOST_PP_ITERATION_START_3 >= 700 +# define BOOST_PP_ITERATION_3 700 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 699 && BOOST_PP_ITERATION_START_3 >= 699 +# define BOOST_PP_ITERATION_3 699 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 698 && BOOST_PP_ITERATION_START_3 >= 698 +# define BOOST_PP_ITERATION_3 698 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 697 && BOOST_PP_ITERATION_START_3 >= 697 +# define BOOST_PP_ITERATION_3 697 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 696 && BOOST_PP_ITERATION_START_3 >= 696 +# define BOOST_PP_ITERATION_3 696 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 695 && BOOST_PP_ITERATION_START_3 >= 695 +# define BOOST_PP_ITERATION_3 695 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 694 && BOOST_PP_ITERATION_START_3 >= 694 +# define BOOST_PP_ITERATION_3 694 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 693 && BOOST_PP_ITERATION_START_3 >= 693 +# define BOOST_PP_ITERATION_3 693 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 692 && BOOST_PP_ITERATION_START_3 >= 692 +# define BOOST_PP_ITERATION_3 692 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 691 && BOOST_PP_ITERATION_START_3 >= 691 +# define BOOST_PP_ITERATION_3 691 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 690 && BOOST_PP_ITERATION_START_3 >= 690 +# define BOOST_PP_ITERATION_3 690 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 689 && BOOST_PP_ITERATION_START_3 >= 689 +# define BOOST_PP_ITERATION_3 689 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 688 && BOOST_PP_ITERATION_START_3 >= 688 +# define BOOST_PP_ITERATION_3 688 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 687 && BOOST_PP_ITERATION_START_3 >= 687 +# define BOOST_PP_ITERATION_3 687 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 686 && BOOST_PP_ITERATION_START_3 >= 686 +# define BOOST_PP_ITERATION_3 686 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 685 && BOOST_PP_ITERATION_START_3 >= 685 +# define BOOST_PP_ITERATION_3 685 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 684 && BOOST_PP_ITERATION_START_3 >= 684 +# define BOOST_PP_ITERATION_3 684 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 683 && BOOST_PP_ITERATION_START_3 >= 683 +# define BOOST_PP_ITERATION_3 683 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 682 && BOOST_PP_ITERATION_START_3 >= 682 +# define BOOST_PP_ITERATION_3 682 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 681 && BOOST_PP_ITERATION_START_3 >= 681 +# define BOOST_PP_ITERATION_3 681 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 680 && BOOST_PP_ITERATION_START_3 >= 680 +# define BOOST_PP_ITERATION_3 680 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 679 && BOOST_PP_ITERATION_START_3 >= 679 +# define BOOST_PP_ITERATION_3 679 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 678 && BOOST_PP_ITERATION_START_3 >= 678 +# define BOOST_PP_ITERATION_3 678 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 677 && BOOST_PP_ITERATION_START_3 >= 677 +# define BOOST_PP_ITERATION_3 677 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 676 && BOOST_PP_ITERATION_START_3 >= 676 +# define BOOST_PP_ITERATION_3 676 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 675 && BOOST_PP_ITERATION_START_3 >= 675 +# define BOOST_PP_ITERATION_3 675 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 674 && BOOST_PP_ITERATION_START_3 >= 674 +# define BOOST_PP_ITERATION_3 674 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 673 && BOOST_PP_ITERATION_START_3 >= 673 +# define BOOST_PP_ITERATION_3 673 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 672 && BOOST_PP_ITERATION_START_3 >= 672 +# define BOOST_PP_ITERATION_3 672 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 671 && BOOST_PP_ITERATION_START_3 >= 671 +# define BOOST_PP_ITERATION_3 671 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 670 && BOOST_PP_ITERATION_START_3 >= 670 +# define BOOST_PP_ITERATION_3 670 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 669 && BOOST_PP_ITERATION_START_3 >= 669 +# define BOOST_PP_ITERATION_3 669 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 668 && BOOST_PP_ITERATION_START_3 >= 668 +# define BOOST_PP_ITERATION_3 668 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 667 && BOOST_PP_ITERATION_START_3 >= 667 +# define BOOST_PP_ITERATION_3 667 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 666 && BOOST_PP_ITERATION_START_3 >= 666 +# define BOOST_PP_ITERATION_3 666 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 665 && BOOST_PP_ITERATION_START_3 >= 665 +# define BOOST_PP_ITERATION_3 665 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 664 && BOOST_PP_ITERATION_START_3 >= 664 +# define BOOST_PP_ITERATION_3 664 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 663 && BOOST_PP_ITERATION_START_3 >= 663 +# define BOOST_PP_ITERATION_3 663 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 662 && BOOST_PP_ITERATION_START_3 >= 662 +# define BOOST_PP_ITERATION_3 662 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 661 && BOOST_PP_ITERATION_START_3 >= 661 +# define BOOST_PP_ITERATION_3 661 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 660 && BOOST_PP_ITERATION_START_3 >= 660 +# define BOOST_PP_ITERATION_3 660 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 659 && BOOST_PP_ITERATION_START_3 >= 659 +# define BOOST_PP_ITERATION_3 659 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 658 && BOOST_PP_ITERATION_START_3 >= 658 +# define BOOST_PP_ITERATION_3 658 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 657 && BOOST_PP_ITERATION_START_3 >= 657 +# define BOOST_PP_ITERATION_3 657 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 656 && BOOST_PP_ITERATION_START_3 >= 656 +# define BOOST_PP_ITERATION_3 656 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 655 && BOOST_PP_ITERATION_START_3 >= 655 +# define BOOST_PP_ITERATION_3 655 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 654 && BOOST_PP_ITERATION_START_3 >= 654 +# define BOOST_PP_ITERATION_3 654 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 653 && BOOST_PP_ITERATION_START_3 >= 653 +# define BOOST_PP_ITERATION_3 653 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 652 && BOOST_PP_ITERATION_START_3 >= 652 +# define BOOST_PP_ITERATION_3 652 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 651 && BOOST_PP_ITERATION_START_3 >= 651 +# define BOOST_PP_ITERATION_3 651 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 650 && BOOST_PP_ITERATION_START_3 >= 650 +# define BOOST_PP_ITERATION_3 650 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 649 && BOOST_PP_ITERATION_START_3 >= 649 +# define BOOST_PP_ITERATION_3 649 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 648 && BOOST_PP_ITERATION_START_3 >= 648 +# define BOOST_PP_ITERATION_3 648 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 647 && BOOST_PP_ITERATION_START_3 >= 647 +# define BOOST_PP_ITERATION_3 647 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 646 && BOOST_PP_ITERATION_START_3 >= 646 +# define BOOST_PP_ITERATION_3 646 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 645 && BOOST_PP_ITERATION_START_3 >= 645 +# define BOOST_PP_ITERATION_3 645 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 644 && BOOST_PP_ITERATION_START_3 >= 644 +# define BOOST_PP_ITERATION_3 644 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 643 && BOOST_PP_ITERATION_START_3 >= 643 +# define BOOST_PP_ITERATION_3 643 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 642 && BOOST_PP_ITERATION_START_3 >= 642 +# define BOOST_PP_ITERATION_3 642 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 641 && BOOST_PP_ITERATION_START_3 >= 641 +# define BOOST_PP_ITERATION_3 641 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 640 && BOOST_PP_ITERATION_START_3 >= 640 +# define BOOST_PP_ITERATION_3 640 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 639 && BOOST_PP_ITERATION_START_3 >= 639 +# define BOOST_PP_ITERATION_3 639 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 638 && BOOST_PP_ITERATION_START_3 >= 638 +# define BOOST_PP_ITERATION_3 638 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 637 && BOOST_PP_ITERATION_START_3 >= 637 +# define BOOST_PP_ITERATION_3 637 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 636 && BOOST_PP_ITERATION_START_3 >= 636 +# define BOOST_PP_ITERATION_3 636 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 635 && BOOST_PP_ITERATION_START_3 >= 635 +# define BOOST_PP_ITERATION_3 635 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 634 && BOOST_PP_ITERATION_START_3 >= 634 +# define BOOST_PP_ITERATION_3 634 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 633 && BOOST_PP_ITERATION_START_3 >= 633 +# define BOOST_PP_ITERATION_3 633 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 632 && BOOST_PP_ITERATION_START_3 >= 632 +# define BOOST_PP_ITERATION_3 632 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 631 && BOOST_PP_ITERATION_START_3 >= 631 +# define BOOST_PP_ITERATION_3 631 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 630 && BOOST_PP_ITERATION_START_3 >= 630 +# define BOOST_PP_ITERATION_3 630 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 629 && BOOST_PP_ITERATION_START_3 >= 629 +# define BOOST_PP_ITERATION_3 629 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 628 && BOOST_PP_ITERATION_START_3 >= 628 +# define BOOST_PP_ITERATION_3 628 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 627 && BOOST_PP_ITERATION_START_3 >= 627 +# define BOOST_PP_ITERATION_3 627 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 626 && BOOST_PP_ITERATION_START_3 >= 626 +# define BOOST_PP_ITERATION_3 626 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 625 && BOOST_PP_ITERATION_START_3 >= 625 +# define BOOST_PP_ITERATION_3 625 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 624 && BOOST_PP_ITERATION_START_3 >= 624 +# define BOOST_PP_ITERATION_3 624 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 623 && BOOST_PP_ITERATION_START_3 >= 623 +# define BOOST_PP_ITERATION_3 623 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 622 && BOOST_PP_ITERATION_START_3 >= 622 +# define BOOST_PP_ITERATION_3 622 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 621 && BOOST_PP_ITERATION_START_3 >= 621 +# define BOOST_PP_ITERATION_3 621 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 620 && BOOST_PP_ITERATION_START_3 >= 620 +# define BOOST_PP_ITERATION_3 620 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 619 && BOOST_PP_ITERATION_START_3 >= 619 +# define BOOST_PP_ITERATION_3 619 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 618 && BOOST_PP_ITERATION_START_3 >= 618 +# define BOOST_PP_ITERATION_3 618 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 617 && BOOST_PP_ITERATION_START_3 >= 617 +# define BOOST_PP_ITERATION_3 617 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 616 && BOOST_PP_ITERATION_START_3 >= 616 +# define BOOST_PP_ITERATION_3 616 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 615 && BOOST_PP_ITERATION_START_3 >= 615 +# define BOOST_PP_ITERATION_3 615 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 614 && BOOST_PP_ITERATION_START_3 >= 614 +# define BOOST_PP_ITERATION_3 614 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 613 && BOOST_PP_ITERATION_START_3 >= 613 +# define BOOST_PP_ITERATION_3 613 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 612 && BOOST_PP_ITERATION_START_3 >= 612 +# define BOOST_PP_ITERATION_3 612 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 611 && BOOST_PP_ITERATION_START_3 >= 611 +# define BOOST_PP_ITERATION_3 611 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 610 && BOOST_PP_ITERATION_START_3 >= 610 +# define BOOST_PP_ITERATION_3 610 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 609 && BOOST_PP_ITERATION_START_3 >= 609 +# define BOOST_PP_ITERATION_3 609 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 608 && BOOST_PP_ITERATION_START_3 >= 608 +# define BOOST_PP_ITERATION_3 608 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 607 && BOOST_PP_ITERATION_START_3 >= 607 +# define BOOST_PP_ITERATION_3 607 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 606 && BOOST_PP_ITERATION_START_3 >= 606 +# define BOOST_PP_ITERATION_3 606 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 605 && BOOST_PP_ITERATION_START_3 >= 605 +# define BOOST_PP_ITERATION_3 605 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 604 && BOOST_PP_ITERATION_START_3 >= 604 +# define BOOST_PP_ITERATION_3 604 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 603 && BOOST_PP_ITERATION_START_3 >= 603 +# define BOOST_PP_ITERATION_3 603 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 602 && BOOST_PP_ITERATION_START_3 >= 602 +# define BOOST_PP_ITERATION_3 602 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 601 && BOOST_PP_ITERATION_START_3 >= 601 +# define BOOST_PP_ITERATION_3 601 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 600 && BOOST_PP_ITERATION_START_3 >= 600 +# define BOOST_PP_ITERATION_3 600 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 599 && BOOST_PP_ITERATION_START_3 >= 599 +# define BOOST_PP_ITERATION_3 599 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 598 && BOOST_PP_ITERATION_START_3 >= 598 +# define BOOST_PP_ITERATION_3 598 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 597 && BOOST_PP_ITERATION_START_3 >= 597 +# define BOOST_PP_ITERATION_3 597 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 596 && BOOST_PP_ITERATION_START_3 >= 596 +# define BOOST_PP_ITERATION_3 596 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 595 && BOOST_PP_ITERATION_START_3 >= 595 +# define BOOST_PP_ITERATION_3 595 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 594 && BOOST_PP_ITERATION_START_3 >= 594 +# define BOOST_PP_ITERATION_3 594 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 593 && BOOST_PP_ITERATION_START_3 >= 593 +# define BOOST_PP_ITERATION_3 593 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 592 && BOOST_PP_ITERATION_START_3 >= 592 +# define BOOST_PP_ITERATION_3 592 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 591 && BOOST_PP_ITERATION_START_3 >= 591 +# define BOOST_PP_ITERATION_3 591 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 590 && BOOST_PP_ITERATION_START_3 >= 590 +# define BOOST_PP_ITERATION_3 590 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 589 && BOOST_PP_ITERATION_START_3 >= 589 +# define BOOST_PP_ITERATION_3 589 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 588 && BOOST_PP_ITERATION_START_3 >= 588 +# define BOOST_PP_ITERATION_3 588 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 587 && BOOST_PP_ITERATION_START_3 >= 587 +# define BOOST_PP_ITERATION_3 587 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 586 && BOOST_PP_ITERATION_START_3 >= 586 +# define BOOST_PP_ITERATION_3 586 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 585 && BOOST_PP_ITERATION_START_3 >= 585 +# define BOOST_PP_ITERATION_3 585 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 584 && BOOST_PP_ITERATION_START_3 >= 584 +# define BOOST_PP_ITERATION_3 584 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 583 && BOOST_PP_ITERATION_START_3 >= 583 +# define BOOST_PP_ITERATION_3 583 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 582 && BOOST_PP_ITERATION_START_3 >= 582 +# define BOOST_PP_ITERATION_3 582 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 581 && BOOST_PP_ITERATION_START_3 >= 581 +# define BOOST_PP_ITERATION_3 581 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 580 && BOOST_PP_ITERATION_START_3 >= 580 +# define BOOST_PP_ITERATION_3 580 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 579 && BOOST_PP_ITERATION_START_3 >= 579 +# define BOOST_PP_ITERATION_3 579 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 578 && BOOST_PP_ITERATION_START_3 >= 578 +# define BOOST_PP_ITERATION_3 578 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 577 && BOOST_PP_ITERATION_START_3 >= 577 +# define BOOST_PP_ITERATION_3 577 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 576 && BOOST_PP_ITERATION_START_3 >= 576 +# define BOOST_PP_ITERATION_3 576 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 575 && BOOST_PP_ITERATION_START_3 >= 575 +# define BOOST_PP_ITERATION_3 575 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 574 && BOOST_PP_ITERATION_START_3 >= 574 +# define BOOST_PP_ITERATION_3 574 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 573 && BOOST_PP_ITERATION_START_3 >= 573 +# define BOOST_PP_ITERATION_3 573 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 572 && BOOST_PP_ITERATION_START_3 >= 572 +# define BOOST_PP_ITERATION_3 572 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 571 && BOOST_PP_ITERATION_START_3 >= 571 +# define BOOST_PP_ITERATION_3 571 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 570 && BOOST_PP_ITERATION_START_3 >= 570 +# define BOOST_PP_ITERATION_3 570 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 569 && BOOST_PP_ITERATION_START_3 >= 569 +# define BOOST_PP_ITERATION_3 569 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 568 && BOOST_PP_ITERATION_START_3 >= 568 +# define BOOST_PP_ITERATION_3 568 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 567 && BOOST_PP_ITERATION_START_3 >= 567 +# define BOOST_PP_ITERATION_3 567 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 566 && BOOST_PP_ITERATION_START_3 >= 566 +# define BOOST_PP_ITERATION_3 566 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 565 && BOOST_PP_ITERATION_START_3 >= 565 +# define BOOST_PP_ITERATION_3 565 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 564 && BOOST_PP_ITERATION_START_3 >= 564 +# define BOOST_PP_ITERATION_3 564 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 563 && BOOST_PP_ITERATION_START_3 >= 563 +# define BOOST_PP_ITERATION_3 563 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 562 && BOOST_PP_ITERATION_START_3 >= 562 +# define BOOST_PP_ITERATION_3 562 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 561 && BOOST_PP_ITERATION_START_3 >= 561 +# define BOOST_PP_ITERATION_3 561 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 560 && BOOST_PP_ITERATION_START_3 >= 560 +# define BOOST_PP_ITERATION_3 560 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 559 && BOOST_PP_ITERATION_START_3 >= 559 +# define BOOST_PP_ITERATION_3 559 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 558 && BOOST_PP_ITERATION_START_3 >= 558 +# define BOOST_PP_ITERATION_3 558 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 557 && BOOST_PP_ITERATION_START_3 >= 557 +# define BOOST_PP_ITERATION_3 557 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 556 && BOOST_PP_ITERATION_START_3 >= 556 +# define BOOST_PP_ITERATION_3 556 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 555 && BOOST_PP_ITERATION_START_3 >= 555 +# define BOOST_PP_ITERATION_3 555 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 554 && BOOST_PP_ITERATION_START_3 >= 554 +# define BOOST_PP_ITERATION_3 554 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 553 && BOOST_PP_ITERATION_START_3 >= 553 +# define BOOST_PP_ITERATION_3 553 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 552 && BOOST_PP_ITERATION_START_3 >= 552 +# define BOOST_PP_ITERATION_3 552 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 551 && BOOST_PP_ITERATION_START_3 >= 551 +# define BOOST_PP_ITERATION_3 551 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 550 && BOOST_PP_ITERATION_START_3 >= 550 +# define BOOST_PP_ITERATION_3 550 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 549 && BOOST_PP_ITERATION_START_3 >= 549 +# define BOOST_PP_ITERATION_3 549 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 548 && BOOST_PP_ITERATION_START_3 >= 548 +# define BOOST_PP_ITERATION_3 548 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 547 && BOOST_PP_ITERATION_START_3 >= 547 +# define BOOST_PP_ITERATION_3 547 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 546 && BOOST_PP_ITERATION_START_3 >= 546 +# define BOOST_PP_ITERATION_3 546 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 545 && BOOST_PP_ITERATION_START_3 >= 545 +# define BOOST_PP_ITERATION_3 545 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 544 && BOOST_PP_ITERATION_START_3 >= 544 +# define BOOST_PP_ITERATION_3 544 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 543 && BOOST_PP_ITERATION_START_3 >= 543 +# define BOOST_PP_ITERATION_3 543 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 542 && BOOST_PP_ITERATION_START_3 >= 542 +# define BOOST_PP_ITERATION_3 542 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 541 && BOOST_PP_ITERATION_START_3 >= 541 +# define BOOST_PP_ITERATION_3 541 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 540 && BOOST_PP_ITERATION_START_3 >= 540 +# define BOOST_PP_ITERATION_3 540 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 539 && BOOST_PP_ITERATION_START_3 >= 539 +# define BOOST_PP_ITERATION_3 539 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 538 && BOOST_PP_ITERATION_START_3 >= 538 +# define BOOST_PP_ITERATION_3 538 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 537 && BOOST_PP_ITERATION_START_3 >= 537 +# define BOOST_PP_ITERATION_3 537 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 536 && BOOST_PP_ITERATION_START_3 >= 536 +# define BOOST_PP_ITERATION_3 536 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 535 && BOOST_PP_ITERATION_START_3 >= 535 +# define BOOST_PP_ITERATION_3 535 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 534 && BOOST_PP_ITERATION_START_3 >= 534 +# define BOOST_PP_ITERATION_3 534 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 533 && BOOST_PP_ITERATION_START_3 >= 533 +# define BOOST_PP_ITERATION_3 533 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 532 && BOOST_PP_ITERATION_START_3 >= 532 +# define BOOST_PP_ITERATION_3 532 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 531 && BOOST_PP_ITERATION_START_3 >= 531 +# define BOOST_PP_ITERATION_3 531 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 530 && BOOST_PP_ITERATION_START_3 >= 530 +# define BOOST_PP_ITERATION_3 530 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 529 && BOOST_PP_ITERATION_START_3 >= 529 +# define BOOST_PP_ITERATION_3 529 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 528 && BOOST_PP_ITERATION_START_3 >= 528 +# define BOOST_PP_ITERATION_3 528 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 527 && BOOST_PP_ITERATION_START_3 >= 527 +# define BOOST_PP_ITERATION_3 527 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 526 && BOOST_PP_ITERATION_START_3 >= 526 +# define BOOST_PP_ITERATION_3 526 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 525 && BOOST_PP_ITERATION_START_3 >= 525 +# define BOOST_PP_ITERATION_3 525 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 524 && BOOST_PP_ITERATION_START_3 >= 524 +# define BOOST_PP_ITERATION_3 524 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 523 && BOOST_PP_ITERATION_START_3 >= 523 +# define BOOST_PP_ITERATION_3 523 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 522 && BOOST_PP_ITERATION_START_3 >= 522 +# define BOOST_PP_ITERATION_3 522 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 521 && BOOST_PP_ITERATION_START_3 >= 521 +# define BOOST_PP_ITERATION_3 521 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 520 && BOOST_PP_ITERATION_START_3 >= 520 +# define BOOST_PP_ITERATION_3 520 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 519 && BOOST_PP_ITERATION_START_3 >= 519 +# define BOOST_PP_ITERATION_3 519 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 518 && BOOST_PP_ITERATION_START_3 >= 518 +# define BOOST_PP_ITERATION_3 518 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 517 && BOOST_PP_ITERATION_START_3 >= 517 +# define BOOST_PP_ITERATION_3 517 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 516 && BOOST_PP_ITERATION_START_3 >= 516 +# define BOOST_PP_ITERATION_3 516 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 515 && BOOST_PP_ITERATION_START_3 >= 515 +# define BOOST_PP_ITERATION_3 515 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 514 && BOOST_PP_ITERATION_START_3 >= 514 +# define BOOST_PP_ITERATION_3 514 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 513 && BOOST_PP_ITERATION_START_3 >= 513 +# define BOOST_PP_ITERATION_3 513 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse3_256.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse3_256.hpp new file mode 100644 index 000000000..189f77c58 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse3_256.hpp @@ -0,0 +1,1296 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_FINISH_3 <= 256 && BOOST_PP_ITERATION_START_3 >= 256 +# define BOOST_PP_ITERATION_3 256 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 255 && BOOST_PP_ITERATION_START_3 >= 255 +# define BOOST_PP_ITERATION_3 255 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 254 && BOOST_PP_ITERATION_START_3 >= 254 +# define BOOST_PP_ITERATION_3 254 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 253 && BOOST_PP_ITERATION_START_3 >= 253 +# define BOOST_PP_ITERATION_3 253 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 252 && BOOST_PP_ITERATION_START_3 >= 252 +# define BOOST_PP_ITERATION_3 252 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 251 && BOOST_PP_ITERATION_START_3 >= 251 +# define BOOST_PP_ITERATION_3 251 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 250 && BOOST_PP_ITERATION_START_3 >= 250 +# define BOOST_PP_ITERATION_3 250 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 249 && BOOST_PP_ITERATION_START_3 >= 249 +# define BOOST_PP_ITERATION_3 249 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 248 && BOOST_PP_ITERATION_START_3 >= 248 +# define BOOST_PP_ITERATION_3 248 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 247 && BOOST_PP_ITERATION_START_3 >= 247 +# define BOOST_PP_ITERATION_3 247 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 246 && BOOST_PP_ITERATION_START_3 >= 246 +# define BOOST_PP_ITERATION_3 246 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 245 && BOOST_PP_ITERATION_START_3 >= 245 +# define BOOST_PP_ITERATION_3 245 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 244 && BOOST_PP_ITERATION_START_3 >= 244 +# define BOOST_PP_ITERATION_3 244 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 243 && BOOST_PP_ITERATION_START_3 >= 243 +# define BOOST_PP_ITERATION_3 243 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 242 && BOOST_PP_ITERATION_START_3 >= 242 +# define BOOST_PP_ITERATION_3 242 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 241 && BOOST_PP_ITERATION_START_3 >= 241 +# define BOOST_PP_ITERATION_3 241 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 240 && BOOST_PP_ITERATION_START_3 >= 240 +# define BOOST_PP_ITERATION_3 240 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 239 && BOOST_PP_ITERATION_START_3 >= 239 +# define BOOST_PP_ITERATION_3 239 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 238 && BOOST_PP_ITERATION_START_3 >= 238 +# define BOOST_PP_ITERATION_3 238 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 237 && BOOST_PP_ITERATION_START_3 >= 237 +# define BOOST_PP_ITERATION_3 237 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 236 && BOOST_PP_ITERATION_START_3 >= 236 +# define BOOST_PP_ITERATION_3 236 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 235 && BOOST_PP_ITERATION_START_3 >= 235 +# define BOOST_PP_ITERATION_3 235 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 234 && BOOST_PP_ITERATION_START_3 >= 234 +# define BOOST_PP_ITERATION_3 234 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 233 && BOOST_PP_ITERATION_START_3 >= 233 +# define BOOST_PP_ITERATION_3 233 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 232 && BOOST_PP_ITERATION_START_3 >= 232 +# define BOOST_PP_ITERATION_3 232 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 231 && BOOST_PP_ITERATION_START_3 >= 231 +# define BOOST_PP_ITERATION_3 231 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 230 && BOOST_PP_ITERATION_START_3 >= 230 +# define BOOST_PP_ITERATION_3 230 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 229 && BOOST_PP_ITERATION_START_3 >= 229 +# define BOOST_PP_ITERATION_3 229 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 228 && BOOST_PP_ITERATION_START_3 >= 228 +# define BOOST_PP_ITERATION_3 228 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 227 && BOOST_PP_ITERATION_START_3 >= 227 +# define BOOST_PP_ITERATION_3 227 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 226 && BOOST_PP_ITERATION_START_3 >= 226 +# define BOOST_PP_ITERATION_3 226 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 225 && BOOST_PP_ITERATION_START_3 >= 225 +# define BOOST_PP_ITERATION_3 225 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 224 && BOOST_PP_ITERATION_START_3 >= 224 +# define BOOST_PP_ITERATION_3 224 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 223 && BOOST_PP_ITERATION_START_3 >= 223 +# define BOOST_PP_ITERATION_3 223 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 222 && BOOST_PP_ITERATION_START_3 >= 222 +# define BOOST_PP_ITERATION_3 222 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 221 && BOOST_PP_ITERATION_START_3 >= 221 +# define BOOST_PP_ITERATION_3 221 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 220 && BOOST_PP_ITERATION_START_3 >= 220 +# define BOOST_PP_ITERATION_3 220 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 219 && BOOST_PP_ITERATION_START_3 >= 219 +# define BOOST_PP_ITERATION_3 219 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 218 && BOOST_PP_ITERATION_START_3 >= 218 +# define BOOST_PP_ITERATION_3 218 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 217 && BOOST_PP_ITERATION_START_3 >= 217 +# define BOOST_PP_ITERATION_3 217 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 216 && BOOST_PP_ITERATION_START_3 >= 216 +# define BOOST_PP_ITERATION_3 216 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 215 && BOOST_PP_ITERATION_START_3 >= 215 +# define BOOST_PP_ITERATION_3 215 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 214 && BOOST_PP_ITERATION_START_3 >= 214 +# define BOOST_PP_ITERATION_3 214 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 213 && BOOST_PP_ITERATION_START_3 >= 213 +# define BOOST_PP_ITERATION_3 213 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 212 && BOOST_PP_ITERATION_START_3 >= 212 +# define BOOST_PP_ITERATION_3 212 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 211 && BOOST_PP_ITERATION_START_3 >= 211 +# define BOOST_PP_ITERATION_3 211 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 210 && BOOST_PP_ITERATION_START_3 >= 210 +# define BOOST_PP_ITERATION_3 210 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 209 && BOOST_PP_ITERATION_START_3 >= 209 +# define BOOST_PP_ITERATION_3 209 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 208 && BOOST_PP_ITERATION_START_3 >= 208 +# define BOOST_PP_ITERATION_3 208 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 207 && BOOST_PP_ITERATION_START_3 >= 207 +# define BOOST_PP_ITERATION_3 207 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 206 && BOOST_PP_ITERATION_START_3 >= 206 +# define BOOST_PP_ITERATION_3 206 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 205 && BOOST_PP_ITERATION_START_3 >= 205 +# define BOOST_PP_ITERATION_3 205 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 204 && BOOST_PP_ITERATION_START_3 >= 204 +# define BOOST_PP_ITERATION_3 204 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 203 && BOOST_PP_ITERATION_START_3 >= 203 +# define BOOST_PP_ITERATION_3 203 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 202 && BOOST_PP_ITERATION_START_3 >= 202 +# define BOOST_PP_ITERATION_3 202 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 201 && BOOST_PP_ITERATION_START_3 >= 201 +# define BOOST_PP_ITERATION_3 201 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 200 && BOOST_PP_ITERATION_START_3 >= 200 +# define BOOST_PP_ITERATION_3 200 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 199 && BOOST_PP_ITERATION_START_3 >= 199 +# define BOOST_PP_ITERATION_3 199 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 198 && BOOST_PP_ITERATION_START_3 >= 198 +# define BOOST_PP_ITERATION_3 198 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 197 && BOOST_PP_ITERATION_START_3 >= 197 +# define BOOST_PP_ITERATION_3 197 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 196 && BOOST_PP_ITERATION_START_3 >= 196 +# define BOOST_PP_ITERATION_3 196 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 195 && BOOST_PP_ITERATION_START_3 >= 195 +# define BOOST_PP_ITERATION_3 195 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 194 && BOOST_PP_ITERATION_START_3 >= 194 +# define BOOST_PP_ITERATION_3 194 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 193 && BOOST_PP_ITERATION_START_3 >= 193 +# define BOOST_PP_ITERATION_3 193 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 192 && BOOST_PP_ITERATION_START_3 >= 192 +# define BOOST_PP_ITERATION_3 192 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 191 && BOOST_PP_ITERATION_START_3 >= 191 +# define BOOST_PP_ITERATION_3 191 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 190 && BOOST_PP_ITERATION_START_3 >= 190 +# define BOOST_PP_ITERATION_3 190 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 189 && BOOST_PP_ITERATION_START_3 >= 189 +# define BOOST_PP_ITERATION_3 189 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 188 && BOOST_PP_ITERATION_START_3 >= 188 +# define BOOST_PP_ITERATION_3 188 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 187 && BOOST_PP_ITERATION_START_3 >= 187 +# define BOOST_PP_ITERATION_3 187 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 186 && BOOST_PP_ITERATION_START_3 >= 186 +# define BOOST_PP_ITERATION_3 186 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 185 && BOOST_PP_ITERATION_START_3 >= 185 +# define BOOST_PP_ITERATION_3 185 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 184 && BOOST_PP_ITERATION_START_3 >= 184 +# define BOOST_PP_ITERATION_3 184 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 183 && BOOST_PP_ITERATION_START_3 >= 183 +# define BOOST_PP_ITERATION_3 183 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 182 && BOOST_PP_ITERATION_START_3 >= 182 +# define BOOST_PP_ITERATION_3 182 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 181 && BOOST_PP_ITERATION_START_3 >= 181 +# define BOOST_PP_ITERATION_3 181 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 180 && BOOST_PP_ITERATION_START_3 >= 180 +# define BOOST_PP_ITERATION_3 180 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 179 && BOOST_PP_ITERATION_START_3 >= 179 +# define BOOST_PP_ITERATION_3 179 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 178 && BOOST_PP_ITERATION_START_3 >= 178 +# define BOOST_PP_ITERATION_3 178 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 177 && BOOST_PP_ITERATION_START_3 >= 177 +# define BOOST_PP_ITERATION_3 177 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 176 && BOOST_PP_ITERATION_START_3 >= 176 +# define BOOST_PP_ITERATION_3 176 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 175 && BOOST_PP_ITERATION_START_3 >= 175 +# define BOOST_PP_ITERATION_3 175 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 174 && BOOST_PP_ITERATION_START_3 >= 174 +# define BOOST_PP_ITERATION_3 174 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 173 && BOOST_PP_ITERATION_START_3 >= 173 +# define BOOST_PP_ITERATION_3 173 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 172 && BOOST_PP_ITERATION_START_3 >= 172 +# define BOOST_PP_ITERATION_3 172 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 171 && BOOST_PP_ITERATION_START_3 >= 171 +# define BOOST_PP_ITERATION_3 171 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 170 && BOOST_PP_ITERATION_START_3 >= 170 +# define BOOST_PP_ITERATION_3 170 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 169 && BOOST_PP_ITERATION_START_3 >= 169 +# define BOOST_PP_ITERATION_3 169 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 168 && BOOST_PP_ITERATION_START_3 >= 168 +# define BOOST_PP_ITERATION_3 168 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 167 && BOOST_PP_ITERATION_START_3 >= 167 +# define BOOST_PP_ITERATION_3 167 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 166 && BOOST_PP_ITERATION_START_3 >= 166 +# define BOOST_PP_ITERATION_3 166 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 165 && BOOST_PP_ITERATION_START_3 >= 165 +# define BOOST_PP_ITERATION_3 165 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 164 && BOOST_PP_ITERATION_START_3 >= 164 +# define BOOST_PP_ITERATION_3 164 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 163 && BOOST_PP_ITERATION_START_3 >= 163 +# define BOOST_PP_ITERATION_3 163 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 162 && BOOST_PP_ITERATION_START_3 >= 162 +# define BOOST_PP_ITERATION_3 162 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 161 && BOOST_PP_ITERATION_START_3 >= 161 +# define BOOST_PP_ITERATION_3 161 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 160 && BOOST_PP_ITERATION_START_3 >= 160 +# define BOOST_PP_ITERATION_3 160 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 159 && BOOST_PP_ITERATION_START_3 >= 159 +# define BOOST_PP_ITERATION_3 159 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 158 && BOOST_PP_ITERATION_START_3 >= 158 +# define BOOST_PP_ITERATION_3 158 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 157 && BOOST_PP_ITERATION_START_3 >= 157 +# define BOOST_PP_ITERATION_3 157 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 156 && BOOST_PP_ITERATION_START_3 >= 156 +# define BOOST_PP_ITERATION_3 156 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 155 && BOOST_PP_ITERATION_START_3 >= 155 +# define BOOST_PP_ITERATION_3 155 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 154 && BOOST_PP_ITERATION_START_3 >= 154 +# define BOOST_PP_ITERATION_3 154 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 153 && BOOST_PP_ITERATION_START_3 >= 153 +# define BOOST_PP_ITERATION_3 153 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 152 && BOOST_PP_ITERATION_START_3 >= 152 +# define BOOST_PP_ITERATION_3 152 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 151 && BOOST_PP_ITERATION_START_3 >= 151 +# define BOOST_PP_ITERATION_3 151 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 150 && BOOST_PP_ITERATION_START_3 >= 150 +# define BOOST_PP_ITERATION_3 150 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 149 && BOOST_PP_ITERATION_START_3 >= 149 +# define BOOST_PP_ITERATION_3 149 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 148 && BOOST_PP_ITERATION_START_3 >= 148 +# define BOOST_PP_ITERATION_3 148 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 147 && BOOST_PP_ITERATION_START_3 >= 147 +# define BOOST_PP_ITERATION_3 147 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 146 && BOOST_PP_ITERATION_START_3 >= 146 +# define BOOST_PP_ITERATION_3 146 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 145 && BOOST_PP_ITERATION_START_3 >= 145 +# define BOOST_PP_ITERATION_3 145 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 144 && BOOST_PP_ITERATION_START_3 >= 144 +# define BOOST_PP_ITERATION_3 144 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 143 && BOOST_PP_ITERATION_START_3 >= 143 +# define BOOST_PP_ITERATION_3 143 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 142 && BOOST_PP_ITERATION_START_3 >= 142 +# define BOOST_PP_ITERATION_3 142 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 141 && BOOST_PP_ITERATION_START_3 >= 141 +# define BOOST_PP_ITERATION_3 141 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 140 && BOOST_PP_ITERATION_START_3 >= 140 +# define BOOST_PP_ITERATION_3 140 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 139 && BOOST_PP_ITERATION_START_3 >= 139 +# define BOOST_PP_ITERATION_3 139 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 138 && BOOST_PP_ITERATION_START_3 >= 138 +# define BOOST_PP_ITERATION_3 138 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 137 && BOOST_PP_ITERATION_START_3 >= 137 +# define BOOST_PP_ITERATION_3 137 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 136 && BOOST_PP_ITERATION_START_3 >= 136 +# define BOOST_PP_ITERATION_3 136 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 135 && BOOST_PP_ITERATION_START_3 >= 135 +# define BOOST_PP_ITERATION_3 135 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 134 && BOOST_PP_ITERATION_START_3 >= 134 +# define BOOST_PP_ITERATION_3 134 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 133 && BOOST_PP_ITERATION_START_3 >= 133 +# define BOOST_PP_ITERATION_3 133 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 132 && BOOST_PP_ITERATION_START_3 >= 132 +# define BOOST_PP_ITERATION_3 132 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 131 && BOOST_PP_ITERATION_START_3 >= 131 +# define BOOST_PP_ITERATION_3 131 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 130 && BOOST_PP_ITERATION_START_3 >= 130 +# define BOOST_PP_ITERATION_3 130 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 129 && BOOST_PP_ITERATION_START_3 >= 129 +# define BOOST_PP_ITERATION_3 129 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 128 && BOOST_PP_ITERATION_START_3 >= 128 +# define BOOST_PP_ITERATION_3 128 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 127 && BOOST_PP_ITERATION_START_3 >= 127 +# define BOOST_PP_ITERATION_3 127 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 126 && BOOST_PP_ITERATION_START_3 >= 126 +# define BOOST_PP_ITERATION_3 126 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 125 && BOOST_PP_ITERATION_START_3 >= 125 +# define BOOST_PP_ITERATION_3 125 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 124 && BOOST_PP_ITERATION_START_3 >= 124 +# define BOOST_PP_ITERATION_3 124 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 123 && BOOST_PP_ITERATION_START_3 >= 123 +# define BOOST_PP_ITERATION_3 123 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 122 && BOOST_PP_ITERATION_START_3 >= 122 +# define BOOST_PP_ITERATION_3 122 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 121 && BOOST_PP_ITERATION_START_3 >= 121 +# define BOOST_PP_ITERATION_3 121 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 120 && BOOST_PP_ITERATION_START_3 >= 120 +# define BOOST_PP_ITERATION_3 120 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 119 && BOOST_PP_ITERATION_START_3 >= 119 +# define BOOST_PP_ITERATION_3 119 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 118 && BOOST_PP_ITERATION_START_3 >= 118 +# define BOOST_PP_ITERATION_3 118 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 117 && BOOST_PP_ITERATION_START_3 >= 117 +# define BOOST_PP_ITERATION_3 117 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 116 && BOOST_PP_ITERATION_START_3 >= 116 +# define BOOST_PP_ITERATION_3 116 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 115 && BOOST_PP_ITERATION_START_3 >= 115 +# define BOOST_PP_ITERATION_3 115 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 114 && BOOST_PP_ITERATION_START_3 >= 114 +# define BOOST_PP_ITERATION_3 114 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 113 && BOOST_PP_ITERATION_START_3 >= 113 +# define BOOST_PP_ITERATION_3 113 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 112 && BOOST_PP_ITERATION_START_3 >= 112 +# define BOOST_PP_ITERATION_3 112 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 111 && BOOST_PP_ITERATION_START_3 >= 111 +# define BOOST_PP_ITERATION_3 111 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 110 && BOOST_PP_ITERATION_START_3 >= 110 +# define BOOST_PP_ITERATION_3 110 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 109 && BOOST_PP_ITERATION_START_3 >= 109 +# define BOOST_PP_ITERATION_3 109 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 108 && BOOST_PP_ITERATION_START_3 >= 108 +# define BOOST_PP_ITERATION_3 108 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 107 && BOOST_PP_ITERATION_START_3 >= 107 +# define BOOST_PP_ITERATION_3 107 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 106 && BOOST_PP_ITERATION_START_3 >= 106 +# define BOOST_PP_ITERATION_3 106 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 105 && BOOST_PP_ITERATION_START_3 >= 105 +# define BOOST_PP_ITERATION_3 105 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 104 && BOOST_PP_ITERATION_START_3 >= 104 +# define BOOST_PP_ITERATION_3 104 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 103 && BOOST_PP_ITERATION_START_3 >= 103 +# define BOOST_PP_ITERATION_3 103 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 102 && BOOST_PP_ITERATION_START_3 >= 102 +# define BOOST_PP_ITERATION_3 102 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 101 && BOOST_PP_ITERATION_START_3 >= 101 +# define BOOST_PP_ITERATION_3 101 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 100 && BOOST_PP_ITERATION_START_3 >= 100 +# define BOOST_PP_ITERATION_3 100 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 99 && BOOST_PP_ITERATION_START_3 >= 99 +# define BOOST_PP_ITERATION_3 99 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 98 && BOOST_PP_ITERATION_START_3 >= 98 +# define BOOST_PP_ITERATION_3 98 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 97 && BOOST_PP_ITERATION_START_3 >= 97 +# define BOOST_PP_ITERATION_3 97 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 96 && BOOST_PP_ITERATION_START_3 >= 96 +# define BOOST_PP_ITERATION_3 96 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 95 && BOOST_PP_ITERATION_START_3 >= 95 +# define BOOST_PP_ITERATION_3 95 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 94 && BOOST_PP_ITERATION_START_3 >= 94 +# define BOOST_PP_ITERATION_3 94 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 93 && BOOST_PP_ITERATION_START_3 >= 93 +# define BOOST_PP_ITERATION_3 93 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 92 && BOOST_PP_ITERATION_START_3 >= 92 +# define BOOST_PP_ITERATION_3 92 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 91 && BOOST_PP_ITERATION_START_3 >= 91 +# define BOOST_PP_ITERATION_3 91 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 90 && BOOST_PP_ITERATION_START_3 >= 90 +# define BOOST_PP_ITERATION_3 90 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 89 && BOOST_PP_ITERATION_START_3 >= 89 +# define BOOST_PP_ITERATION_3 89 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 88 && BOOST_PP_ITERATION_START_3 >= 88 +# define BOOST_PP_ITERATION_3 88 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 87 && BOOST_PP_ITERATION_START_3 >= 87 +# define BOOST_PP_ITERATION_3 87 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 86 && BOOST_PP_ITERATION_START_3 >= 86 +# define BOOST_PP_ITERATION_3 86 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 85 && BOOST_PP_ITERATION_START_3 >= 85 +# define BOOST_PP_ITERATION_3 85 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 84 && BOOST_PP_ITERATION_START_3 >= 84 +# define BOOST_PP_ITERATION_3 84 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 83 && BOOST_PP_ITERATION_START_3 >= 83 +# define BOOST_PP_ITERATION_3 83 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 82 && BOOST_PP_ITERATION_START_3 >= 82 +# define BOOST_PP_ITERATION_3 82 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 81 && BOOST_PP_ITERATION_START_3 >= 81 +# define BOOST_PP_ITERATION_3 81 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 80 && BOOST_PP_ITERATION_START_3 >= 80 +# define BOOST_PP_ITERATION_3 80 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 79 && BOOST_PP_ITERATION_START_3 >= 79 +# define BOOST_PP_ITERATION_3 79 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 78 && BOOST_PP_ITERATION_START_3 >= 78 +# define BOOST_PP_ITERATION_3 78 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 77 && BOOST_PP_ITERATION_START_3 >= 77 +# define BOOST_PP_ITERATION_3 77 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 76 && BOOST_PP_ITERATION_START_3 >= 76 +# define BOOST_PP_ITERATION_3 76 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 75 && BOOST_PP_ITERATION_START_3 >= 75 +# define BOOST_PP_ITERATION_3 75 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 74 && BOOST_PP_ITERATION_START_3 >= 74 +# define BOOST_PP_ITERATION_3 74 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 73 && BOOST_PP_ITERATION_START_3 >= 73 +# define BOOST_PP_ITERATION_3 73 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 72 && BOOST_PP_ITERATION_START_3 >= 72 +# define BOOST_PP_ITERATION_3 72 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 71 && BOOST_PP_ITERATION_START_3 >= 71 +# define BOOST_PP_ITERATION_3 71 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 70 && BOOST_PP_ITERATION_START_3 >= 70 +# define BOOST_PP_ITERATION_3 70 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 69 && BOOST_PP_ITERATION_START_3 >= 69 +# define BOOST_PP_ITERATION_3 69 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 68 && BOOST_PP_ITERATION_START_3 >= 68 +# define BOOST_PP_ITERATION_3 68 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 67 && BOOST_PP_ITERATION_START_3 >= 67 +# define BOOST_PP_ITERATION_3 67 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 66 && BOOST_PP_ITERATION_START_3 >= 66 +# define BOOST_PP_ITERATION_3 66 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 65 && BOOST_PP_ITERATION_START_3 >= 65 +# define BOOST_PP_ITERATION_3 65 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 64 && BOOST_PP_ITERATION_START_3 >= 64 +# define BOOST_PP_ITERATION_3 64 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 63 && BOOST_PP_ITERATION_START_3 >= 63 +# define BOOST_PP_ITERATION_3 63 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 62 && BOOST_PP_ITERATION_START_3 >= 62 +# define BOOST_PP_ITERATION_3 62 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 61 && BOOST_PP_ITERATION_START_3 >= 61 +# define BOOST_PP_ITERATION_3 61 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 60 && BOOST_PP_ITERATION_START_3 >= 60 +# define BOOST_PP_ITERATION_3 60 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 59 && BOOST_PP_ITERATION_START_3 >= 59 +# define BOOST_PP_ITERATION_3 59 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 58 && BOOST_PP_ITERATION_START_3 >= 58 +# define BOOST_PP_ITERATION_3 58 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 57 && BOOST_PP_ITERATION_START_3 >= 57 +# define BOOST_PP_ITERATION_3 57 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 56 && BOOST_PP_ITERATION_START_3 >= 56 +# define BOOST_PP_ITERATION_3 56 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 55 && BOOST_PP_ITERATION_START_3 >= 55 +# define BOOST_PP_ITERATION_3 55 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 54 && BOOST_PP_ITERATION_START_3 >= 54 +# define BOOST_PP_ITERATION_3 54 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 53 && BOOST_PP_ITERATION_START_3 >= 53 +# define BOOST_PP_ITERATION_3 53 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 52 && BOOST_PP_ITERATION_START_3 >= 52 +# define BOOST_PP_ITERATION_3 52 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 51 && BOOST_PP_ITERATION_START_3 >= 51 +# define BOOST_PP_ITERATION_3 51 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 50 && BOOST_PP_ITERATION_START_3 >= 50 +# define BOOST_PP_ITERATION_3 50 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 49 && BOOST_PP_ITERATION_START_3 >= 49 +# define BOOST_PP_ITERATION_3 49 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 48 && BOOST_PP_ITERATION_START_3 >= 48 +# define BOOST_PP_ITERATION_3 48 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 47 && BOOST_PP_ITERATION_START_3 >= 47 +# define BOOST_PP_ITERATION_3 47 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 46 && BOOST_PP_ITERATION_START_3 >= 46 +# define BOOST_PP_ITERATION_3 46 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 45 && BOOST_PP_ITERATION_START_3 >= 45 +# define BOOST_PP_ITERATION_3 45 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 44 && BOOST_PP_ITERATION_START_3 >= 44 +# define BOOST_PP_ITERATION_3 44 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 43 && BOOST_PP_ITERATION_START_3 >= 43 +# define BOOST_PP_ITERATION_3 43 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 42 && BOOST_PP_ITERATION_START_3 >= 42 +# define BOOST_PP_ITERATION_3 42 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 41 && BOOST_PP_ITERATION_START_3 >= 41 +# define BOOST_PP_ITERATION_3 41 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 40 && BOOST_PP_ITERATION_START_3 >= 40 +# define BOOST_PP_ITERATION_3 40 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 39 && BOOST_PP_ITERATION_START_3 >= 39 +# define BOOST_PP_ITERATION_3 39 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 38 && BOOST_PP_ITERATION_START_3 >= 38 +# define BOOST_PP_ITERATION_3 38 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 37 && BOOST_PP_ITERATION_START_3 >= 37 +# define BOOST_PP_ITERATION_3 37 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 36 && BOOST_PP_ITERATION_START_3 >= 36 +# define BOOST_PP_ITERATION_3 36 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 35 && BOOST_PP_ITERATION_START_3 >= 35 +# define BOOST_PP_ITERATION_3 35 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 34 && BOOST_PP_ITERATION_START_3 >= 34 +# define BOOST_PP_ITERATION_3 34 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 33 && BOOST_PP_ITERATION_START_3 >= 33 +# define BOOST_PP_ITERATION_3 33 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 32 && BOOST_PP_ITERATION_START_3 >= 32 +# define BOOST_PP_ITERATION_3 32 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 31 && BOOST_PP_ITERATION_START_3 >= 31 +# define BOOST_PP_ITERATION_3 31 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 30 && BOOST_PP_ITERATION_START_3 >= 30 +# define BOOST_PP_ITERATION_3 30 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 29 && BOOST_PP_ITERATION_START_3 >= 29 +# define BOOST_PP_ITERATION_3 29 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 28 && BOOST_PP_ITERATION_START_3 >= 28 +# define BOOST_PP_ITERATION_3 28 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 27 && BOOST_PP_ITERATION_START_3 >= 27 +# define BOOST_PP_ITERATION_3 27 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 26 && BOOST_PP_ITERATION_START_3 >= 26 +# define BOOST_PP_ITERATION_3 26 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 25 && BOOST_PP_ITERATION_START_3 >= 25 +# define BOOST_PP_ITERATION_3 25 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 24 && BOOST_PP_ITERATION_START_3 >= 24 +# define BOOST_PP_ITERATION_3 24 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 23 && BOOST_PP_ITERATION_START_3 >= 23 +# define BOOST_PP_ITERATION_3 23 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 22 && BOOST_PP_ITERATION_START_3 >= 22 +# define BOOST_PP_ITERATION_3 22 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 21 && BOOST_PP_ITERATION_START_3 >= 21 +# define BOOST_PP_ITERATION_3 21 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 20 && BOOST_PP_ITERATION_START_3 >= 20 +# define BOOST_PP_ITERATION_3 20 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 19 && BOOST_PP_ITERATION_START_3 >= 19 +# define BOOST_PP_ITERATION_3 19 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 18 && BOOST_PP_ITERATION_START_3 >= 18 +# define BOOST_PP_ITERATION_3 18 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 17 && BOOST_PP_ITERATION_START_3 >= 17 +# define BOOST_PP_ITERATION_3 17 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 16 && BOOST_PP_ITERATION_START_3 >= 16 +# define BOOST_PP_ITERATION_3 16 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 15 && BOOST_PP_ITERATION_START_3 >= 15 +# define BOOST_PP_ITERATION_3 15 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 14 && BOOST_PP_ITERATION_START_3 >= 14 +# define BOOST_PP_ITERATION_3 14 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 13 && BOOST_PP_ITERATION_START_3 >= 13 +# define BOOST_PP_ITERATION_3 13 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 12 && BOOST_PP_ITERATION_START_3 >= 12 +# define BOOST_PP_ITERATION_3 12 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 11 && BOOST_PP_ITERATION_START_3 >= 11 +# define BOOST_PP_ITERATION_3 11 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 10 && BOOST_PP_ITERATION_START_3 >= 10 +# define BOOST_PP_ITERATION_3 10 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 9 && BOOST_PP_ITERATION_START_3 >= 9 +# define BOOST_PP_ITERATION_3 9 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 8 && BOOST_PP_ITERATION_START_3 >= 8 +# define BOOST_PP_ITERATION_3 8 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 7 && BOOST_PP_ITERATION_START_3 >= 7 +# define BOOST_PP_ITERATION_3 7 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 6 && BOOST_PP_ITERATION_START_3 >= 6 +# define BOOST_PP_ITERATION_3 6 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 5 && BOOST_PP_ITERATION_START_3 >= 5 +# define BOOST_PP_ITERATION_3 5 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 4 && BOOST_PP_ITERATION_START_3 >= 4 +# define BOOST_PP_ITERATION_3 4 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 3 && BOOST_PP_ITERATION_START_3 >= 3 +# define BOOST_PP_ITERATION_3 3 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 2 && BOOST_PP_ITERATION_START_3 >= 2 +# define BOOST_PP_ITERATION_3 2 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 1 && BOOST_PP_ITERATION_START_3 >= 1 +# define BOOST_PP_ITERATION_3 1 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 0 && BOOST_PP_ITERATION_START_3 >= 0 +# define BOOST_PP_ITERATION_3 0 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse3_512.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse3_512.hpp new file mode 100644 index 000000000..89b02bd19 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse3_512.hpp @@ -0,0 +1,1293 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_FINISH_3 <= 512 && BOOST_PP_ITERATION_START_3 >= 512 +# define BOOST_PP_ITERATION_3 512 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 511 && BOOST_PP_ITERATION_START_3 >= 511 +# define BOOST_PP_ITERATION_3 511 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 510 && BOOST_PP_ITERATION_START_3 >= 510 +# define BOOST_PP_ITERATION_3 510 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 509 && BOOST_PP_ITERATION_START_3 >= 509 +# define BOOST_PP_ITERATION_3 509 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 508 && BOOST_PP_ITERATION_START_3 >= 508 +# define BOOST_PP_ITERATION_3 508 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 507 && BOOST_PP_ITERATION_START_3 >= 507 +# define BOOST_PP_ITERATION_3 507 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 506 && BOOST_PP_ITERATION_START_3 >= 506 +# define BOOST_PP_ITERATION_3 506 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 505 && BOOST_PP_ITERATION_START_3 >= 505 +# define BOOST_PP_ITERATION_3 505 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 504 && BOOST_PP_ITERATION_START_3 >= 504 +# define BOOST_PP_ITERATION_3 504 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 503 && BOOST_PP_ITERATION_START_3 >= 503 +# define BOOST_PP_ITERATION_3 503 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 502 && BOOST_PP_ITERATION_START_3 >= 502 +# define BOOST_PP_ITERATION_3 502 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 501 && BOOST_PP_ITERATION_START_3 >= 501 +# define BOOST_PP_ITERATION_3 501 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 500 && BOOST_PP_ITERATION_START_3 >= 500 +# define BOOST_PP_ITERATION_3 500 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 499 && BOOST_PP_ITERATION_START_3 >= 499 +# define BOOST_PP_ITERATION_3 499 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 498 && BOOST_PP_ITERATION_START_3 >= 498 +# define BOOST_PP_ITERATION_3 498 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 497 && BOOST_PP_ITERATION_START_3 >= 497 +# define BOOST_PP_ITERATION_3 497 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 496 && BOOST_PP_ITERATION_START_3 >= 496 +# define BOOST_PP_ITERATION_3 496 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 495 && BOOST_PP_ITERATION_START_3 >= 495 +# define BOOST_PP_ITERATION_3 495 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 494 && BOOST_PP_ITERATION_START_3 >= 494 +# define BOOST_PP_ITERATION_3 494 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 493 && BOOST_PP_ITERATION_START_3 >= 493 +# define BOOST_PP_ITERATION_3 493 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 492 && BOOST_PP_ITERATION_START_3 >= 492 +# define BOOST_PP_ITERATION_3 492 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 491 && BOOST_PP_ITERATION_START_3 >= 491 +# define BOOST_PP_ITERATION_3 491 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 490 && BOOST_PP_ITERATION_START_3 >= 490 +# define BOOST_PP_ITERATION_3 490 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 489 && BOOST_PP_ITERATION_START_3 >= 489 +# define BOOST_PP_ITERATION_3 489 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 488 && BOOST_PP_ITERATION_START_3 >= 488 +# define BOOST_PP_ITERATION_3 488 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 487 && BOOST_PP_ITERATION_START_3 >= 487 +# define BOOST_PP_ITERATION_3 487 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 486 && BOOST_PP_ITERATION_START_3 >= 486 +# define BOOST_PP_ITERATION_3 486 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 485 && BOOST_PP_ITERATION_START_3 >= 485 +# define BOOST_PP_ITERATION_3 485 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 484 && BOOST_PP_ITERATION_START_3 >= 484 +# define BOOST_PP_ITERATION_3 484 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 483 && BOOST_PP_ITERATION_START_3 >= 483 +# define BOOST_PP_ITERATION_3 483 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 482 && BOOST_PP_ITERATION_START_3 >= 482 +# define BOOST_PP_ITERATION_3 482 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 481 && BOOST_PP_ITERATION_START_3 >= 481 +# define BOOST_PP_ITERATION_3 481 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 480 && BOOST_PP_ITERATION_START_3 >= 480 +# define BOOST_PP_ITERATION_3 480 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 479 && BOOST_PP_ITERATION_START_3 >= 479 +# define BOOST_PP_ITERATION_3 479 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 478 && BOOST_PP_ITERATION_START_3 >= 478 +# define BOOST_PP_ITERATION_3 478 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 477 && BOOST_PP_ITERATION_START_3 >= 477 +# define BOOST_PP_ITERATION_3 477 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 476 && BOOST_PP_ITERATION_START_3 >= 476 +# define BOOST_PP_ITERATION_3 476 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 475 && BOOST_PP_ITERATION_START_3 >= 475 +# define BOOST_PP_ITERATION_3 475 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 474 && BOOST_PP_ITERATION_START_3 >= 474 +# define BOOST_PP_ITERATION_3 474 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 473 && BOOST_PP_ITERATION_START_3 >= 473 +# define BOOST_PP_ITERATION_3 473 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 472 && BOOST_PP_ITERATION_START_3 >= 472 +# define BOOST_PP_ITERATION_3 472 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 471 && BOOST_PP_ITERATION_START_3 >= 471 +# define BOOST_PP_ITERATION_3 471 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 470 && BOOST_PP_ITERATION_START_3 >= 470 +# define BOOST_PP_ITERATION_3 470 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 469 && BOOST_PP_ITERATION_START_3 >= 469 +# define BOOST_PP_ITERATION_3 469 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 468 && BOOST_PP_ITERATION_START_3 >= 468 +# define BOOST_PP_ITERATION_3 468 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 467 && BOOST_PP_ITERATION_START_3 >= 467 +# define BOOST_PP_ITERATION_3 467 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 466 && BOOST_PP_ITERATION_START_3 >= 466 +# define BOOST_PP_ITERATION_3 466 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 465 && BOOST_PP_ITERATION_START_3 >= 465 +# define BOOST_PP_ITERATION_3 465 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 464 && BOOST_PP_ITERATION_START_3 >= 464 +# define BOOST_PP_ITERATION_3 464 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 463 && BOOST_PP_ITERATION_START_3 >= 463 +# define BOOST_PP_ITERATION_3 463 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 462 && BOOST_PP_ITERATION_START_3 >= 462 +# define BOOST_PP_ITERATION_3 462 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 461 && BOOST_PP_ITERATION_START_3 >= 461 +# define BOOST_PP_ITERATION_3 461 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 460 && BOOST_PP_ITERATION_START_3 >= 460 +# define BOOST_PP_ITERATION_3 460 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 459 && BOOST_PP_ITERATION_START_3 >= 459 +# define BOOST_PP_ITERATION_3 459 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 458 && BOOST_PP_ITERATION_START_3 >= 458 +# define BOOST_PP_ITERATION_3 458 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 457 && BOOST_PP_ITERATION_START_3 >= 457 +# define BOOST_PP_ITERATION_3 457 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 456 && BOOST_PP_ITERATION_START_3 >= 456 +# define BOOST_PP_ITERATION_3 456 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 455 && BOOST_PP_ITERATION_START_3 >= 455 +# define BOOST_PP_ITERATION_3 455 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 454 && BOOST_PP_ITERATION_START_3 >= 454 +# define BOOST_PP_ITERATION_3 454 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 453 && BOOST_PP_ITERATION_START_3 >= 453 +# define BOOST_PP_ITERATION_3 453 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 452 && BOOST_PP_ITERATION_START_3 >= 452 +# define BOOST_PP_ITERATION_3 452 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 451 && BOOST_PP_ITERATION_START_3 >= 451 +# define BOOST_PP_ITERATION_3 451 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 450 && BOOST_PP_ITERATION_START_3 >= 450 +# define BOOST_PP_ITERATION_3 450 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 449 && BOOST_PP_ITERATION_START_3 >= 449 +# define BOOST_PP_ITERATION_3 449 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 448 && BOOST_PP_ITERATION_START_3 >= 448 +# define BOOST_PP_ITERATION_3 448 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 447 && BOOST_PP_ITERATION_START_3 >= 447 +# define BOOST_PP_ITERATION_3 447 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 446 && BOOST_PP_ITERATION_START_3 >= 446 +# define BOOST_PP_ITERATION_3 446 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 445 && BOOST_PP_ITERATION_START_3 >= 445 +# define BOOST_PP_ITERATION_3 445 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 444 && BOOST_PP_ITERATION_START_3 >= 444 +# define BOOST_PP_ITERATION_3 444 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 443 && BOOST_PP_ITERATION_START_3 >= 443 +# define BOOST_PP_ITERATION_3 443 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 442 && BOOST_PP_ITERATION_START_3 >= 442 +# define BOOST_PP_ITERATION_3 442 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 441 && BOOST_PP_ITERATION_START_3 >= 441 +# define BOOST_PP_ITERATION_3 441 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 440 && BOOST_PP_ITERATION_START_3 >= 440 +# define BOOST_PP_ITERATION_3 440 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 439 && BOOST_PP_ITERATION_START_3 >= 439 +# define BOOST_PP_ITERATION_3 439 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 438 && BOOST_PP_ITERATION_START_3 >= 438 +# define BOOST_PP_ITERATION_3 438 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 437 && BOOST_PP_ITERATION_START_3 >= 437 +# define BOOST_PP_ITERATION_3 437 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 436 && BOOST_PP_ITERATION_START_3 >= 436 +# define BOOST_PP_ITERATION_3 436 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 435 && BOOST_PP_ITERATION_START_3 >= 435 +# define BOOST_PP_ITERATION_3 435 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 434 && BOOST_PP_ITERATION_START_3 >= 434 +# define BOOST_PP_ITERATION_3 434 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 433 && BOOST_PP_ITERATION_START_3 >= 433 +# define BOOST_PP_ITERATION_3 433 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 432 && BOOST_PP_ITERATION_START_3 >= 432 +# define BOOST_PP_ITERATION_3 432 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 431 && BOOST_PP_ITERATION_START_3 >= 431 +# define BOOST_PP_ITERATION_3 431 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 430 && BOOST_PP_ITERATION_START_3 >= 430 +# define BOOST_PP_ITERATION_3 430 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 429 && BOOST_PP_ITERATION_START_3 >= 429 +# define BOOST_PP_ITERATION_3 429 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 428 && BOOST_PP_ITERATION_START_3 >= 428 +# define BOOST_PP_ITERATION_3 428 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 427 && BOOST_PP_ITERATION_START_3 >= 427 +# define BOOST_PP_ITERATION_3 427 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 426 && BOOST_PP_ITERATION_START_3 >= 426 +# define BOOST_PP_ITERATION_3 426 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 425 && BOOST_PP_ITERATION_START_3 >= 425 +# define BOOST_PP_ITERATION_3 425 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 424 && BOOST_PP_ITERATION_START_3 >= 424 +# define BOOST_PP_ITERATION_3 424 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 423 && BOOST_PP_ITERATION_START_3 >= 423 +# define BOOST_PP_ITERATION_3 423 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 422 && BOOST_PP_ITERATION_START_3 >= 422 +# define BOOST_PP_ITERATION_3 422 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 421 && BOOST_PP_ITERATION_START_3 >= 421 +# define BOOST_PP_ITERATION_3 421 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 420 && BOOST_PP_ITERATION_START_3 >= 420 +# define BOOST_PP_ITERATION_3 420 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 419 && BOOST_PP_ITERATION_START_3 >= 419 +# define BOOST_PP_ITERATION_3 419 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 418 && BOOST_PP_ITERATION_START_3 >= 418 +# define BOOST_PP_ITERATION_3 418 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 417 && BOOST_PP_ITERATION_START_3 >= 417 +# define BOOST_PP_ITERATION_3 417 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 416 && BOOST_PP_ITERATION_START_3 >= 416 +# define BOOST_PP_ITERATION_3 416 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 415 && BOOST_PP_ITERATION_START_3 >= 415 +# define BOOST_PP_ITERATION_3 415 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 414 && BOOST_PP_ITERATION_START_3 >= 414 +# define BOOST_PP_ITERATION_3 414 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 413 && BOOST_PP_ITERATION_START_3 >= 413 +# define BOOST_PP_ITERATION_3 413 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 412 && BOOST_PP_ITERATION_START_3 >= 412 +# define BOOST_PP_ITERATION_3 412 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 411 && BOOST_PP_ITERATION_START_3 >= 411 +# define BOOST_PP_ITERATION_3 411 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 410 && BOOST_PP_ITERATION_START_3 >= 410 +# define BOOST_PP_ITERATION_3 410 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 409 && BOOST_PP_ITERATION_START_3 >= 409 +# define BOOST_PP_ITERATION_3 409 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 408 && BOOST_PP_ITERATION_START_3 >= 408 +# define BOOST_PP_ITERATION_3 408 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 407 && BOOST_PP_ITERATION_START_3 >= 407 +# define BOOST_PP_ITERATION_3 407 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 406 && BOOST_PP_ITERATION_START_3 >= 406 +# define BOOST_PP_ITERATION_3 406 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 405 && BOOST_PP_ITERATION_START_3 >= 405 +# define BOOST_PP_ITERATION_3 405 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 404 && BOOST_PP_ITERATION_START_3 >= 404 +# define BOOST_PP_ITERATION_3 404 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 403 && BOOST_PP_ITERATION_START_3 >= 403 +# define BOOST_PP_ITERATION_3 403 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 402 && BOOST_PP_ITERATION_START_3 >= 402 +# define BOOST_PP_ITERATION_3 402 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 401 && BOOST_PP_ITERATION_START_3 >= 401 +# define BOOST_PP_ITERATION_3 401 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 400 && BOOST_PP_ITERATION_START_3 >= 400 +# define BOOST_PP_ITERATION_3 400 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 399 && BOOST_PP_ITERATION_START_3 >= 399 +# define BOOST_PP_ITERATION_3 399 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 398 && BOOST_PP_ITERATION_START_3 >= 398 +# define BOOST_PP_ITERATION_3 398 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 397 && BOOST_PP_ITERATION_START_3 >= 397 +# define BOOST_PP_ITERATION_3 397 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 396 && BOOST_PP_ITERATION_START_3 >= 396 +# define BOOST_PP_ITERATION_3 396 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 395 && BOOST_PP_ITERATION_START_3 >= 395 +# define BOOST_PP_ITERATION_3 395 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 394 && BOOST_PP_ITERATION_START_3 >= 394 +# define BOOST_PP_ITERATION_3 394 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 393 && BOOST_PP_ITERATION_START_3 >= 393 +# define BOOST_PP_ITERATION_3 393 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 392 && BOOST_PP_ITERATION_START_3 >= 392 +# define BOOST_PP_ITERATION_3 392 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 391 && BOOST_PP_ITERATION_START_3 >= 391 +# define BOOST_PP_ITERATION_3 391 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 390 && BOOST_PP_ITERATION_START_3 >= 390 +# define BOOST_PP_ITERATION_3 390 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 389 && BOOST_PP_ITERATION_START_3 >= 389 +# define BOOST_PP_ITERATION_3 389 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 388 && BOOST_PP_ITERATION_START_3 >= 388 +# define BOOST_PP_ITERATION_3 388 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 387 && BOOST_PP_ITERATION_START_3 >= 387 +# define BOOST_PP_ITERATION_3 387 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 386 && BOOST_PP_ITERATION_START_3 >= 386 +# define BOOST_PP_ITERATION_3 386 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 385 && BOOST_PP_ITERATION_START_3 >= 385 +# define BOOST_PP_ITERATION_3 385 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 384 && BOOST_PP_ITERATION_START_3 >= 384 +# define BOOST_PP_ITERATION_3 384 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 383 && BOOST_PP_ITERATION_START_3 >= 383 +# define BOOST_PP_ITERATION_3 383 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 382 && BOOST_PP_ITERATION_START_3 >= 382 +# define BOOST_PP_ITERATION_3 382 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 381 && BOOST_PP_ITERATION_START_3 >= 381 +# define BOOST_PP_ITERATION_3 381 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 380 && BOOST_PP_ITERATION_START_3 >= 380 +# define BOOST_PP_ITERATION_3 380 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 379 && BOOST_PP_ITERATION_START_3 >= 379 +# define BOOST_PP_ITERATION_3 379 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 378 && BOOST_PP_ITERATION_START_3 >= 378 +# define BOOST_PP_ITERATION_3 378 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 377 && BOOST_PP_ITERATION_START_3 >= 377 +# define BOOST_PP_ITERATION_3 377 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 376 && BOOST_PP_ITERATION_START_3 >= 376 +# define BOOST_PP_ITERATION_3 376 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 375 && BOOST_PP_ITERATION_START_3 >= 375 +# define BOOST_PP_ITERATION_3 375 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 374 && BOOST_PP_ITERATION_START_3 >= 374 +# define BOOST_PP_ITERATION_3 374 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 373 && BOOST_PP_ITERATION_START_3 >= 373 +# define BOOST_PP_ITERATION_3 373 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 372 && BOOST_PP_ITERATION_START_3 >= 372 +# define BOOST_PP_ITERATION_3 372 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 371 && BOOST_PP_ITERATION_START_3 >= 371 +# define BOOST_PP_ITERATION_3 371 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 370 && BOOST_PP_ITERATION_START_3 >= 370 +# define BOOST_PP_ITERATION_3 370 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 369 && BOOST_PP_ITERATION_START_3 >= 369 +# define BOOST_PP_ITERATION_3 369 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 368 && BOOST_PP_ITERATION_START_3 >= 368 +# define BOOST_PP_ITERATION_3 368 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 367 && BOOST_PP_ITERATION_START_3 >= 367 +# define BOOST_PP_ITERATION_3 367 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 366 && BOOST_PP_ITERATION_START_3 >= 366 +# define BOOST_PP_ITERATION_3 366 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 365 && BOOST_PP_ITERATION_START_3 >= 365 +# define BOOST_PP_ITERATION_3 365 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 364 && BOOST_PP_ITERATION_START_3 >= 364 +# define BOOST_PP_ITERATION_3 364 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 363 && BOOST_PP_ITERATION_START_3 >= 363 +# define BOOST_PP_ITERATION_3 363 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 362 && BOOST_PP_ITERATION_START_3 >= 362 +# define BOOST_PP_ITERATION_3 362 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 361 && BOOST_PP_ITERATION_START_3 >= 361 +# define BOOST_PP_ITERATION_3 361 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 360 && BOOST_PP_ITERATION_START_3 >= 360 +# define BOOST_PP_ITERATION_3 360 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 359 && BOOST_PP_ITERATION_START_3 >= 359 +# define BOOST_PP_ITERATION_3 359 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 358 && BOOST_PP_ITERATION_START_3 >= 358 +# define BOOST_PP_ITERATION_3 358 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 357 && BOOST_PP_ITERATION_START_3 >= 357 +# define BOOST_PP_ITERATION_3 357 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 356 && BOOST_PP_ITERATION_START_3 >= 356 +# define BOOST_PP_ITERATION_3 356 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 355 && BOOST_PP_ITERATION_START_3 >= 355 +# define BOOST_PP_ITERATION_3 355 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 354 && BOOST_PP_ITERATION_START_3 >= 354 +# define BOOST_PP_ITERATION_3 354 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 353 && BOOST_PP_ITERATION_START_3 >= 353 +# define BOOST_PP_ITERATION_3 353 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 352 && BOOST_PP_ITERATION_START_3 >= 352 +# define BOOST_PP_ITERATION_3 352 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 351 && BOOST_PP_ITERATION_START_3 >= 351 +# define BOOST_PP_ITERATION_3 351 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 350 && BOOST_PP_ITERATION_START_3 >= 350 +# define BOOST_PP_ITERATION_3 350 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 349 && BOOST_PP_ITERATION_START_3 >= 349 +# define BOOST_PP_ITERATION_3 349 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 348 && BOOST_PP_ITERATION_START_3 >= 348 +# define BOOST_PP_ITERATION_3 348 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 347 && BOOST_PP_ITERATION_START_3 >= 347 +# define BOOST_PP_ITERATION_3 347 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 346 && BOOST_PP_ITERATION_START_3 >= 346 +# define BOOST_PP_ITERATION_3 346 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 345 && BOOST_PP_ITERATION_START_3 >= 345 +# define BOOST_PP_ITERATION_3 345 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 344 && BOOST_PP_ITERATION_START_3 >= 344 +# define BOOST_PP_ITERATION_3 344 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 343 && BOOST_PP_ITERATION_START_3 >= 343 +# define BOOST_PP_ITERATION_3 343 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 342 && BOOST_PP_ITERATION_START_3 >= 342 +# define BOOST_PP_ITERATION_3 342 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 341 && BOOST_PP_ITERATION_START_3 >= 341 +# define BOOST_PP_ITERATION_3 341 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 340 && BOOST_PP_ITERATION_START_3 >= 340 +# define BOOST_PP_ITERATION_3 340 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 339 && BOOST_PP_ITERATION_START_3 >= 339 +# define BOOST_PP_ITERATION_3 339 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 338 && BOOST_PP_ITERATION_START_3 >= 338 +# define BOOST_PP_ITERATION_3 338 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 337 && BOOST_PP_ITERATION_START_3 >= 337 +# define BOOST_PP_ITERATION_3 337 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 336 && BOOST_PP_ITERATION_START_3 >= 336 +# define BOOST_PP_ITERATION_3 336 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 335 && BOOST_PP_ITERATION_START_3 >= 335 +# define BOOST_PP_ITERATION_3 335 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 334 && BOOST_PP_ITERATION_START_3 >= 334 +# define BOOST_PP_ITERATION_3 334 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 333 && BOOST_PP_ITERATION_START_3 >= 333 +# define BOOST_PP_ITERATION_3 333 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 332 && BOOST_PP_ITERATION_START_3 >= 332 +# define BOOST_PP_ITERATION_3 332 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 331 && BOOST_PP_ITERATION_START_3 >= 331 +# define BOOST_PP_ITERATION_3 331 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 330 && BOOST_PP_ITERATION_START_3 >= 330 +# define BOOST_PP_ITERATION_3 330 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 329 && BOOST_PP_ITERATION_START_3 >= 329 +# define BOOST_PP_ITERATION_3 329 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 328 && BOOST_PP_ITERATION_START_3 >= 328 +# define BOOST_PP_ITERATION_3 328 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 327 && BOOST_PP_ITERATION_START_3 >= 327 +# define BOOST_PP_ITERATION_3 327 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 326 && BOOST_PP_ITERATION_START_3 >= 326 +# define BOOST_PP_ITERATION_3 326 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 325 && BOOST_PP_ITERATION_START_3 >= 325 +# define BOOST_PP_ITERATION_3 325 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 324 && BOOST_PP_ITERATION_START_3 >= 324 +# define BOOST_PP_ITERATION_3 324 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 323 && BOOST_PP_ITERATION_START_3 >= 323 +# define BOOST_PP_ITERATION_3 323 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 322 && BOOST_PP_ITERATION_START_3 >= 322 +# define BOOST_PP_ITERATION_3 322 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 321 && BOOST_PP_ITERATION_START_3 >= 321 +# define BOOST_PP_ITERATION_3 321 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 320 && BOOST_PP_ITERATION_START_3 >= 320 +# define BOOST_PP_ITERATION_3 320 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 319 && BOOST_PP_ITERATION_START_3 >= 319 +# define BOOST_PP_ITERATION_3 319 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 318 && BOOST_PP_ITERATION_START_3 >= 318 +# define BOOST_PP_ITERATION_3 318 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 317 && BOOST_PP_ITERATION_START_3 >= 317 +# define BOOST_PP_ITERATION_3 317 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 316 && BOOST_PP_ITERATION_START_3 >= 316 +# define BOOST_PP_ITERATION_3 316 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 315 && BOOST_PP_ITERATION_START_3 >= 315 +# define BOOST_PP_ITERATION_3 315 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 314 && BOOST_PP_ITERATION_START_3 >= 314 +# define BOOST_PP_ITERATION_3 314 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 313 && BOOST_PP_ITERATION_START_3 >= 313 +# define BOOST_PP_ITERATION_3 313 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 312 && BOOST_PP_ITERATION_START_3 >= 312 +# define BOOST_PP_ITERATION_3 312 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 311 && BOOST_PP_ITERATION_START_3 >= 311 +# define BOOST_PP_ITERATION_3 311 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 310 && BOOST_PP_ITERATION_START_3 >= 310 +# define BOOST_PP_ITERATION_3 310 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 309 && BOOST_PP_ITERATION_START_3 >= 309 +# define BOOST_PP_ITERATION_3 309 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 308 && BOOST_PP_ITERATION_START_3 >= 308 +# define BOOST_PP_ITERATION_3 308 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 307 && BOOST_PP_ITERATION_START_3 >= 307 +# define BOOST_PP_ITERATION_3 307 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 306 && BOOST_PP_ITERATION_START_3 >= 306 +# define BOOST_PP_ITERATION_3 306 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 305 && BOOST_PP_ITERATION_START_3 >= 305 +# define BOOST_PP_ITERATION_3 305 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 304 && BOOST_PP_ITERATION_START_3 >= 304 +# define BOOST_PP_ITERATION_3 304 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 303 && BOOST_PP_ITERATION_START_3 >= 303 +# define BOOST_PP_ITERATION_3 303 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 302 && BOOST_PP_ITERATION_START_3 >= 302 +# define BOOST_PP_ITERATION_3 302 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 301 && BOOST_PP_ITERATION_START_3 >= 301 +# define BOOST_PP_ITERATION_3 301 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 300 && BOOST_PP_ITERATION_START_3 >= 300 +# define BOOST_PP_ITERATION_3 300 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 299 && BOOST_PP_ITERATION_START_3 >= 299 +# define BOOST_PP_ITERATION_3 299 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 298 && BOOST_PP_ITERATION_START_3 >= 298 +# define BOOST_PP_ITERATION_3 298 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 297 && BOOST_PP_ITERATION_START_3 >= 297 +# define BOOST_PP_ITERATION_3 297 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 296 && BOOST_PP_ITERATION_START_3 >= 296 +# define BOOST_PP_ITERATION_3 296 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 295 && BOOST_PP_ITERATION_START_3 >= 295 +# define BOOST_PP_ITERATION_3 295 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 294 && BOOST_PP_ITERATION_START_3 >= 294 +# define BOOST_PP_ITERATION_3 294 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 293 && BOOST_PP_ITERATION_START_3 >= 293 +# define BOOST_PP_ITERATION_3 293 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 292 && BOOST_PP_ITERATION_START_3 >= 292 +# define BOOST_PP_ITERATION_3 292 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 291 && BOOST_PP_ITERATION_START_3 >= 291 +# define BOOST_PP_ITERATION_3 291 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 290 && BOOST_PP_ITERATION_START_3 >= 290 +# define BOOST_PP_ITERATION_3 290 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 289 && BOOST_PP_ITERATION_START_3 >= 289 +# define BOOST_PP_ITERATION_3 289 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 288 && BOOST_PP_ITERATION_START_3 >= 288 +# define BOOST_PP_ITERATION_3 288 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 287 && BOOST_PP_ITERATION_START_3 >= 287 +# define BOOST_PP_ITERATION_3 287 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 286 && BOOST_PP_ITERATION_START_3 >= 286 +# define BOOST_PP_ITERATION_3 286 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 285 && BOOST_PP_ITERATION_START_3 >= 285 +# define BOOST_PP_ITERATION_3 285 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 284 && BOOST_PP_ITERATION_START_3 >= 284 +# define BOOST_PP_ITERATION_3 284 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 283 && BOOST_PP_ITERATION_START_3 >= 283 +# define BOOST_PP_ITERATION_3 283 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 282 && BOOST_PP_ITERATION_START_3 >= 282 +# define BOOST_PP_ITERATION_3 282 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 281 && BOOST_PP_ITERATION_START_3 >= 281 +# define BOOST_PP_ITERATION_3 281 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 280 && BOOST_PP_ITERATION_START_3 >= 280 +# define BOOST_PP_ITERATION_3 280 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 279 && BOOST_PP_ITERATION_START_3 >= 279 +# define BOOST_PP_ITERATION_3 279 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 278 && BOOST_PP_ITERATION_START_3 >= 278 +# define BOOST_PP_ITERATION_3 278 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 277 && BOOST_PP_ITERATION_START_3 >= 277 +# define BOOST_PP_ITERATION_3 277 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 276 && BOOST_PP_ITERATION_START_3 >= 276 +# define BOOST_PP_ITERATION_3 276 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 275 && BOOST_PP_ITERATION_START_3 >= 275 +# define BOOST_PP_ITERATION_3 275 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 274 && BOOST_PP_ITERATION_START_3 >= 274 +# define BOOST_PP_ITERATION_3 274 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 273 && BOOST_PP_ITERATION_START_3 >= 273 +# define BOOST_PP_ITERATION_3 273 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 272 && BOOST_PP_ITERATION_START_3 >= 272 +# define BOOST_PP_ITERATION_3 272 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 271 && BOOST_PP_ITERATION_START_3 >= 271 +# define BOOST_PP_ITERATION_3 271 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 270 && BOOST_PP_ITERATION_START_3 >= 270 +# define BOOST_PP_ITERATION_3 270 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 269 && BOOST_PP_ITERATION_START_3 >= 269 +# define BOOST_PP_ITERATION_3 269 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 268 && BOOST_PP_ITERATION_START_3 >= 268 +# define BOOST_PP_ITERATION_3 268 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 267 && BOOST_PP_ITERATION_START_3 >= 267 +# define BOOST_PP_ITERATION_3 267 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 266 && BOOST_PP_ITERATION_START_3 >= 266 +# define BOOST_PP_ITERATION_3 266 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 265 && BOOST_PP_ITERATION_START_3 >= 265 +# define BOOST_PP_ITERATION_3 265 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 264 && BOOST_PP_ITERATION_START_3 >= 264 +# define BOOST_PP_ITERATION_3 264 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 263 && BOOST_PP_ITERATION_START_3 >= 263 +# define BOOST_PP_ITERATION_3 263 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 262 && BOOST_PP_ITERATION_START_3 >= 262 +# define BOOST_PP_ITERATION_3 262 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 261 && BOOST_PP_ITERATION_START_3 >= 261 +# define BOOST_PP_ITERATION_3 261 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 260 && BOOST_PP_ITERATION_START_3 >= 260 +# define BOOST_PP_ITERATION_3 260 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 259 && BOOST_PP_ITERATION_START_3 >= 259 +# define BOOST_PP_ITERATION_3 259 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 258 && BOOST_PP_ITERATION_START_3 >= 258 +# define BOOST_PP_ITERATION_3 258 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif +# if BOOST_PP_ITERATION_FINISH_3 <= 257 && BOOST_PP_ITERATION_START_3 >= 257 +# define BOOST_PP_ITERATION_3 257 +# include BOOST_PP_FILENAME_3 +# undef BOOST_PP_ITERATION_3 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse4_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse4_1024.hpp new file mode 100644 index 000000000..e8cf2bed2 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse4_1024.hpp @@ -0,0 +1,2571 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * Distributed under the Boost Software License, Version 1.0. (See +# * accompanying file LICENSE_4_0.txt or copy at +# * http://www.boost.org/LICENSE_4_0.txt) +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_FINISH_4 <= 1024 && BOOST_PP_ITERATION_START_4 >= 1024 +# define BOOST_PP_ITERATION_4 1024 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1023 && BOOST_PP_ITERATION_START_4 >= 1023 +# define BOOST_PP_ITERATION_4 1023 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1022 && BOOST_PP_ITERATION_START_4 >= 1022 +# define BOOST_PP_ITERATION_4 1022 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1021 && BOOST_PP_ITERATION_START_4 >= 1021 +# define BOOST_PP_ITERATION_4 1021 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1020 && BOOST_PP_ITERATION_START_4 >= 1020 +# define BOOST_PP_ITERATION_4 1020 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1019 && BOOST_PP_ITERATION_START_4 >= 1019 +# define BOOST_PP_ITERATION_4 1019 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1018 && BOOST_PP_ITERATION_START_4 >= 1018 +# define BOOST_PP_ITERATION_4 1018 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1017 && BOOST_PP_ITERATION_START_4 >= 1017 +# define BOOST_PP_ITERATION_4 1017 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1016 && BOOST_PP_ITERATION_START_4 >= 1016 +# define BOOST_PP_ITERATION_4 1016 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1015 && BOOST_PP_ITERATION_START_4 >= 1015 +# define BOOST_PP_ITERATION_4 1015 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1014 && BOOST_PP_ITERATION_START_4 >= 1014 +# define BOOST_PP_ITERATION_4 1014 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1013 && BOOST_PP_ITERATION_START_4 >= 1013 +# define BOOST_PP_ITERATION_4 1013 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1012 && BOOST_PP_ITERATION_START_4 >= 1012 +# define BOOST_PP_ITERATION_4 1012 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1011 && BOOST_PP_ITERATION_START_4 >= 1011 +# define BOOST_PP_ITERATION_4 1011 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1010 && BOOST_PP_ITERATION_START_4 >= 1010 +# define BOOST_PP_ITERATION_4 1010 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1009 && BOOST_PP_ITERATION_START_4 >= 1009 +# define BOOST_PP_ITERATION_4 1009 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1008 && BOOST_PP_ITERATION_START_4 >= 1008 +# define BOOST_PP_ITERATION_4 1008 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1007 && BOOST_PP_ITERATION_START_4 >= 1007 +# define BOOST_PP_ITERATION_4 1007 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1006 && BOOST_PP_ITERATION_START_4 >= 1006 +# define BOOST_PP_ITERATION_4 1006 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1005 && BOOST_PP_ITERATION_START_4 >= 1005 +# define BOOST_PP_ITERATION_4 1005 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1004 && BOOST_PP_ITERATION_START_4 >= 1004 +# define BOOST_PP_ITERATION_4 1004 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1003 && BOOST_PP_ITERATION_START_4 >= 1003 +# define BOOST_PP_ITERATION_4 1003 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1002 && BOOST_PP_ITERATION_START_4 >= 1002 +# define BOOST_PP_ITERATION_4 1002 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1001 && BOOST_PP_ITERATION_START_4 >= 1001 +# define BOOST_PP_ITERATION_4 1001 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1000 && BOOST_PP_ITERATION_START_4 >= 1000 +# define BOOST_PP_ITERATION_4 1000 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 999 && BOOST_PP_ITERATION_START_4 >= 999 +# define BOOST_PP_ITERATION_4 999 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 998 && BOOST_PP_ITERATION_START_4 >= 998 +# define BOOST_PP_ITERATION_4 998 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 997 && BOOST_PP_ITERATION_START_4 >= 997 +# define BOOST_PP_ITERATION_4 997 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 996 && BOOST_PP_ITERATION_START_4 >= 996 +# define BOOST_PP_ITERATION_4 996 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 995 && BOOST_PP_ITERATION_START_4 >= 995 +# define BOOST_PP_ITERATION_4 995 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 994 && BOOST_PP_ITERATION_START_4 >= 994 +# define BOOST_PP_ITERATION_4 994 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 993 && BOOST_PP_ITERATION_START_4 >= 993 +# define BOOST_PP_ITERATION_4 993 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 992 && BOOST_PP_ITERATION_START_4 >= 992 +# define BOOST_PP_ITERATION_4 992 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 991 && BOOST_PP_ITERATION_START_4 >= 991 +# define BOOST_PP_ITERATION_4 991 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 990 && BOOST_PP_ITERATION_START_4 >= 990 +# define BOOST_PP_ITERATION_4 990 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 989 && BOOST_PP_ITERATION_START_4 >= 989 +# define BOOST_PP_ITERATION_4 989 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 988 && BOOST_PP_ITERATION_START_4 >= 988 +# define BOOST_PP_ITERATION_4 988 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 987 && BOOST_PP_ITERATION_START_4 >= 987 +# define BOOST_PP_ITERATION_4 987 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 986 && BOOST_PP_ITERATION_START_4 >= 986 +# define BOOST_PP_ITERATION_4 986 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 985 && BOOST_PP_ITERATION_START_4 >= 985 +# define BOOST_PP_ITERATION_4 985 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 984 && BOOST_PP_ITERATION_START_4 >= 984 +# define BOOST_PP_ITERATION_4 984 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 983 && BOOST_PP_ITERATION_START_4 >= 983 +# define BOOST_PP_ITERATION_4 983 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 982 && BOOST_PP_ITERATION_START_4 >= 982 +# define BOOST_PP_ITERATION_4 982 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 981 && BOOST_PP_ITERATION_START_4 >= 981 +# define BOOST_PP_ITERATION_4 981 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 980 && BOOST_PP_ITERATION_START_4 >= 980 +# define BOOST_PP_ITERATION_4 980 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 979 && BOOST_PP_ITERATION_START_4 >= 979 +# define BOOST_PP_ITERATION_4 979 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 978 && BOOST_PP_ITERATION_START_4 >= 978 +# define BOOST_PP_ITERATION_4 978 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 977 && BOOST_PP_ITERATION_START_4 >= 977 +# define BOOST_PP_ITERATION_4 977 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 976 && BOOST_PP_ITERATION_START_4 >= 976 +# define BOOST_PP_ITERATION_4 976 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 975 && BOOST_PP_ITERATION_START_4 >= 975 +# define BOOST_PP_ITERATION_4 975 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 974 && BOOST_PP_ITERATION_START_4 >= 974 +# define BOOST_PP_ITERATION_4 974 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 973 && BOOST_PP_ITERATION_START_4 >= 973 +# define BOOST_PP_ITERATION_4 973 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 972 && BOOST_PP_ITERATION_START_4 >= 972 +# define BOOST_PP_ITERATION_4 972 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 971 && BOOST_PP_ITERATION_START_4 >= 971 +# define BOOST_PP_ITERATION_4 971 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 970 && BOOST_PP_ITERATION_START_4 >= 970 +# define BOOST_PP_ITERATION_4 970 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 969 && BOOST_PP_ITERATION_START_4 >= 969 +# define BOOST_PP_ITERATION_4 969 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 968 && BOOST_PP_ITERATION_START_4 >= 968 +# define BOOST_PP_ITERATION_4 968 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 967 && BOOST_PP_ITERATION_START_4 >= 967 +# define BOOST_PP_ITERATION_4 967 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 966 && BOOST_PP_ITERATION_START_4 >= 966 +# define BOOST_PP_ITERATION_4 966 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 965 && BOOST_PP_ITERATION_START_4 >= 965 +# define BOOST_PP_ITERATION_4 965 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 964 && BOOST_PP_ITERATION_START_4 >= 964 +# define BOOST_PP_ITERATION_4 964 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 963 && BOOST_PP_ITERATION_START_4 >= 963 +# define BOOST_PP_ITERATION_4 963 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 962 && BOOST_PP_ITERATION_START_4 >= 962 +# define BOOST_PP_ITERATION_4 962 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 961 && BOOST_PP_ITERATION_START_4 >= 961 +# define BOOST_PP_ITERATION_4 961 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 960 && BOOST_PP_ITERATION_START_4 >= 960 +# define BOOST_PP_ITERATION_4 960 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 959 && BOOST_PP_ITERATION_START_4 >= 959 +# define BOOST_PP_ITERATION_4 959 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 958 && BOOST_PP_ITERATION_START_4 >= 958 +# define BOOST_PP_ITERATION_4 958 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 957 && BOOST_PP_ITERATION_START_4 >= 957 +# define BOOST_PP_ITERATION_4 957 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 956 && BOOST_PP_ITERATION_START_4 >= 956 +# define BOOST_PP_ITERATION_4 956 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 955 && BOOST_PP_ITERATION_START_4 >= 955 +# define BOOST_PP_ITERATION_4 955 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 954 && BOOST_PP_ITERATION_START_4 >= 954 +# define BOOST_PP_ITERATION_4 954 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 953 && BOOST_PP_ITERATION_START_4 >= 953 +# define BOOST_PP_ITERATION_4 953 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 952 && BOOST_PP_ITERATION_START_4 >= 952 +# define BOOST_PP_ITERATION_4 952 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 951 && BOOST_PP_ITERATION_START_4 >= 951 +# define BOOST_PP_ITERATION_4 951 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 950 && BOOST_PP_ITERATION_START_4 >= 950 +# define BOOST_PP_ITERATION_4 950 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 949 && BOOST_PP_ITERATION_START_4 >= 949 +# define BOOST_PP_ITERATION_4 949 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 948 && BOOST_PP_ITERATION_START_4 >= 948 +# define BOOST_PP_ITERATION_4 948 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 947 && BOOST_PP_ITERATION_START_4 >= 947 +# define BOOST_PP_ITERATION_4 947 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 946 && BOOST_PP_ITERATION_START_4 >= 946 +# define BOOST_PP_ITERATION_4 946 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 945 && BOOST_PP_ITERATION_START_4 >= 945 +# define BOOST_PP_ITERATION_4 945 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 944 && BOOST_PP_ITERATION_START_4 >= 944 +# define BOOST_PP_ITERATION_4 944 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 943 && BOOST_PP_ITERATION_START_4 >= 943 +# define BOOST_PP_ITERATION_4 943 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 942 && BOOST_PP_ITERATION_START_4 >= 942 +# define BOOST_PP_ITERATION_4 942 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 941 && BOOST_PP_ITERATION_START_4 >= 941 +# define BOOST_PP_ITERATION_4 941 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 940 && BOOST_PP_ITERATION_START_4 >= 940 +# define BOOST_PP_ITERATION_4 940 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 939 && BOOST_PP_ITERATION_START_4 >= 939 +# define BOOST_PP_ITERATION_4 939 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 938 && BOOST_PP_ITERATION_START_4 >= 938 +# define BOOST_PP_ITERATION_4 938 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 937 && BOOST_PP_ITERATION_START_4 >= 937 +# define BOOST_PP_ITERATION_4 937 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 936 && BOOST_PP_ITERATION_START_4 >= 936 +# define BOOST_PP_ITERATION_4 936 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 935 && BOOST_PP_ITERATION_START_4 >= 935 +# define BOOST_PP_ITERATION_4 935 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 934 && BOOST_PP_ITERATION_START_4 >= 934 +# define BOOST_PP_ITERATION_4 934 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 933 && BOOST_PP_ITERATION_START_4 >= 933 +# define BOOST_PP_ITERATION_4 933 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 932 && BOOST_PP_ITERATION_START_4 >= 932 +# define BOOST_PP_ITERATION_4 932 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 931 && BOOST_PP_ITERATION_START_4 >= 931 +# define BOOST_PP_ITERATION_4 931 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 930 && BOOST_PP_ITERATION_START_4 >= 930 +# define BOOST_PP_ITERATION_4 930 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 929 && BOOST_PP_ITERATION_START_4 >= 929 +# define BOOST_PP_ITERATION_4 929 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 928 && BOOST_PP_ITERATION_START_4 >= 928 +# define BOOST_PP_ITERATION_4 928 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 927 && BOOST_PP_ITERATION_START_4 >= 927 +# define BOOST_PP_ITERATION_4 927 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 926 && BOOST_PP_ITERATION_START_4 >= 926 +# define BOOST_PP_ITERATION_4 926 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 925 && BOOST_PP_ITERATION_START_4 >= 925 +# define BOOST_PP_ITERATION_4 925 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 924 && BOOST_PP_ITERATION_START_4 >= 924 +# define BOOST_PP_ITERATION_4 924 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 923 && BOOST_PP_ITERATION_START_4 >= 923 +# define BOOST_PP_ITERATION_4 923 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 922 && BOOST_PP_ITERATION_START_4 >= 922 +# define BOOST_PP_ITERATION_4 922 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 921 && BOOST_PP_ITERATION_START_4 >= 921 +# define BOOST_PP_ITERATION_4 921 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 920 && BOOST_PP_ITERATION_START_4 >= 920 +# define BOOST_PP_ITERATION_4 920 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 919 && BOOST_PP_ITERATION_START_4 >= 919 +# define BOOST_PP_ITERATION_4 919 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 918 && BOOST_PP_ITERATION_START_4 >= 918 +# define BOOST_PP_ITERATION_4 918 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 917 && BOOST_PP_ITERATION_START_4 >= 917 +# define BOOST_PP_ITERATION_4 917 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 916 && BOOST_PP_ITERATION_START_4 >= 916 +# define BOOST_PP_ITERATION_4 916 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 915 && BOOST_PP_ITERATION_START_4 >= 915 +# define BOOST_PP_ITERATION_4 915 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 914 && BOOST_PP_ITERATION_START_4 >= 914 +# define BOOST_PP_ITERATION_4 914 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 913 && BOOST_PP_ITERATION_START_4 >= 913 +# define BOOST_PP_ITERATION_4 913 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 912 && BOOST_PP_ITERATION_START_4 >= 912 +# define BOOST_PP_ITERATION_4 912 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 911 && BOOST_PP_ITERATION_START_4 >= 911 +# define BOOST_PP_ITERATION_4 911 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 910 && BOOST_PP_ITERATION_START_4 >= 910 +# define BOOST_PP_ITERATION_4 910 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 909 && BOOST_PP_ITERATION_START_4 >= 909 +# define BOOST_PP_ITERATION_4 909 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 908 && BOOST_PP_ITERATION_START_4 >= 908 +# define BOOST_PP_ITERATION_4 908 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 907 && BOOST_PP_ITERATION_START_4 >= 907 +# define BOOST_PP_ITERATION_4 907 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 906 && BOOST_PP_ITERATION_START_4 >= 906 +# define BOOST_PP_ITERATION_4 906 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 905 && BOOST_PP_ITERATION_START_4 >= 905 +# define BOOST_PP_ITERATION_4 905 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 904 && BOOST_PP_ITERATION_START_4 >= 904 +# define BOOST_PP_ITERATION_4 904 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 903 && BOOST_PP_ITERATION_START_4 >= 903 +# define BOOST_PP_ITERATION_4 903 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 902 && BOOST_PP_ITERATION_START_4 >= 902 +# define BOOST_PP_ITERATION_4 902 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 901 && BOOST_PP_ITERATION_START_4 >= 901 +# define BOOST_PP_ITERATION_4 901 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 900 && BOOST_PP_ITERATION_START_4 >= 900 +# define BOOST_PP_ITERATION_4 900 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 899 && BOOST_PP_ITERATION_START_4 >= 899 +# define BOOST_PP_ITERATION_4 899 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 898 && BOOST_PP_ITERATION_START_4 >= 898 +# define BOOST_PP_ITERATION_4 898 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 897 && BOOST_PP_ITERATION_START_4 >= 897 +# define BOOST_PP_ITERATION_4 897 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 896 && BOOST_PP_ITERATION_START_4 >= 896 +# define BOOST_PP_ITERATION_4 896 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 895 && BOOST_PP_ITERATION_START_4 >= 895 +# define BOOST_PP_ITERATION_4 895 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 894 && BOOST_PP_ITERATION_START_4 >= 894 +# define BOOST_PP_ITERATION_4 894 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 893 && BOOST_PP_ITERATION_START_4 >= 893 +# define BOOST_PP_ITERATION_4 893 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 892 && BOOST_PP_ITERATION_START_4 >= 892 +# define BOOST_PP_ITERATION_4 892 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 891 && BOOST_PP_ITERATION_START_4 >= 891 +# define BOOST_PP_ITERATION_4 891 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 890 && BOOST_PP_ITERATION_START_4 >= 890 +# define BOOST_PP_ITERATION_4 890 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 889 && BOOST_PP_ITERATION_START_4 >= 889 +# define BOOST_PP_ITERATION_4 889 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 888 && BOOST_PP_ITERATION_START_4 >= 888 +# define BOOST_PP_ITERATION_4 888 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 887 && BOOST_PP_ITERATION_START_4 >= 887 +# define BOOST_PP_ITERATION_4 887 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 886 && BOOST_PP_ITERATION_START_4 >= 886 +# define BOOST_PP_ITERATION_4 886 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 885 && BOOST_PP_ITERATION_START_4 >= 885 +# define BOOST_PP_ITERATION_4 885 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 884 && BOOST_PP_ITERATION_START_4 >= 884 +# define BOOST_PP_ITERATION_4 884 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 883 && BOOST_PP_ITERATION_START_4 >= 883 +# define BOOST_PP_ITERATION_4 883 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 882 && BOOST_PP_ITERATION_START_4 >= 882 +# define BOOST_PP_ITERATION_4 882 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 881 && BOOST_PP_ITERATION_START_4 >= 881 +# define BOOST_PP_ITERATION_4 881 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 880 && BOOST_PP_ITERATION_START_4 >= 880 +# define BOOST_PP_ITERATION_4 880 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 879 && BOOST_PP_ITERATION_START_4 >= 879 +# define BOOST_PP_ITERATION_4 879 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 878 && BOOST_PP_ITERATION_START_4 >= 878 +# define BOOST_PP_ITERATION_4 878 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 877 && BOOST_PP_ITERATION_START_4 >= 877 +# define BOOST_PP_ITERATION_4 877 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 876 && BOOST_PP_ITERATION_START_4 >= 876 +# define BOOST_PP_ITERATION_4 876 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 875 && BOOST_PP_ITERATION_START_4 >= 875 +# define BOOST_PP_ITERATION_4 875 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 874 && BOOST_PP_ITERATION_START_4 >= 874 +# define BOOST_PP_ITERATION_4 874 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 873 && BOOST_PP_ITERATION_START_4 >= 873 +# define BOOST_PP_ITERATION_4 873 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 872 && BOOST_PP_ITERATION_START_4 >= 872 +# define BOOST_PP_ITERATION_4 872 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 871 && BOOST_PP_ITERATION_START_4 >= 871 +# define BOOST_PP_ITERATION_4 871 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 870 && BOOST_PP_ITERATION_START_4 >= 870 +# define BOOST_PP_ITERATION_4 870 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 869 && BOOST_PP_ITERATION_START_4 >= 869 +# define BOOST_PP_ITERATION_4 869 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 868 && BOOST_PP_ITERATION_START_4 >= 868 +# define BOOST_PP_ITERATION_4 868 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 867 && BOOST_PP_ITERATION_START_4 >= 867 +# define BOOST_PP_ITERATION_4 867 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 866 && BOOST_PP_ITERATION_START_4 >= 866 +# define BOOST_PP_ITERATION_4 866 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 865 && BOOST_PP_ITERATION_START_4 >= 865 +# define BOOST_PP_ITERATION_4 865 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 864 && BOOST_PP_ITERATION_START_4 >= 864 +# define BOOST_PP_ITERATION_4 864 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 863 && BOOST_PP_ITERATION_START_4 >= 863 +# define BOOST_PP_ITERATION_4 863 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 862 && BOOST_PP_ITERATION_START_4 >= 862 +# define BOOST_PP_ITERATION_4 862 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 861 && BOOST_PP_ITERATION_START_4 >= 861 +# define BOOST_PP_ITERATION_4 861 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 860 && BOOST_PP_ITERATION_START_4 >= 860 +# define BOOST_PP_ITERATION_4 860 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 859 && BOOST_PP_ITERATION_START_4 >= 859 +# define BOOST_PP_ITERATION_4 859 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 858 && BOOST_PP_ITERATION_START_4 >= 858 +# define BOOST_PP_ITERATION_4 858 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 857 && BOOST_PP_ITERATION_START_4 >= 857 +# define BOOST_PP_ITERATION_4 857 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 856 && BOOST_PP_ITERATION_START_4 >= 856 +# define BOOST_PP_ITERATION_4 856 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 855 && BOOST_PP_ITERATION_START_4 >= 855 +# define BOOST_PP_ITERATION_4 855 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 854 && BOOST_PP_ITERATION_START_4 >= 854 +# define BOOST_PP_ITERATION_4 854 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 853 && BOOST_PP_ITERATION_START_4 >= 853 +# define BOOST_PP_ITERATION_4 853 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 852 && BOOST_PP_ITERATION_START_4 >= 852 +# define BOOST_PP_ITERATION_4 852 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 851 && BOOST_PP_ITERATION_START_4 >= 851 +# define BOOST_PP_ITERATION_4 851 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 850 && BOOST_PP_ITERATION_START_4 >= 850 +# define BOOST_PP_ITERATION_4 850 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 849 && BOOST_PP_ITERATION_START_4 >= 849 +# define BOOST_PP_ITERATION_4 849 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 848 && BOOST_PP_ITERATION_START_4 >= 848 +# define BOOST_PP_ITERATION_4 848 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 847 && BOOST_PP_ITERATION_START_4 >= 847 +# define BOOST_PP_ITERATION_4 847 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 846 && BOOST_PP_ITERATION_START_4 >= 846 +# define BOOST_PP_ITERATION_4 846 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 845 && BOOST_PP_ITERATION_START_4 >= 845 +# define BOOST_PP_ITERATION_4 845 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 844 && BOOST_PP_ITERATION_START_4 >= 844 +# define BOOST_PP_ITERATION_4 844 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 843 && BOOST_PP_ITERATION_START_4 >= 843 +# define BOOST_PP_ITERATION_4 843 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 842 && BOOST_PP_ITERATION_START_4 >= 842 +# define BOOST_PP_ITERATION_4 842 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 841 && BOOST_PP_ITERATION_START_4 >= 841 +# define BOOST_PP_ITERATION_4 841 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 840 && BOOST_PP_ITERATION_START_4 >= 840 +# define BOOST_PP_ITERATION_4 840 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 839 && BOOST_PP_ITERATION_START_4 >= 839 +# define BOOST_PP_ITERATION_4 839 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 838 && BOOST_PP_ITERATION_START_4 >= 838 +# define BOOST_PP_ITERATION_4 838 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 837 && BOOST_PP_ITERATION_START_4 >= 837 +# define BOOST_PP_ITERATION_4 837 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 836 && BOOST_PP_ITERATION_START_4 >= 836 +# define BOOST_PP_ITERATION_4 836 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 835 && BOOST_PP_ITERATION_START_4 >= 835 +# define BOOST_PP_ITERATION_4 835 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 834 && BOOST_PP_ITERATION_START_4 >= 834 +# define BOOST_PP_ITERATION_4 834 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 833 && BOOST_PP_ITERATION_START_4 >= 833 +# define BOOST_PP_ITERATION_4 833 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 832 && BOOST_PP_ITERATION_START_4 >= 832 +# define BOOST_PP_ITERATION_4 832 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 831 && BOOST_PP_ITERATION_START_4 >= 831 +# define BOOST_PP_ITERATION_4 831 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 830 && BOOST_PP_ITERATION_START_4 >= 830 +# define BOOST_PP_ITERATION_4 830 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 829 && BOOST_PP_ITERATION_START_4 >= 829 +# define BOOST_PP_ITERATION_4 829 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 828 && BOOST_PP_ITERATION_START_4 >= 828 +# define BOOST_PP_ITERATION_4 828 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 827 && BOOST_PP_ITERATION_START_4 >= 827 +# define BOOST_PP_ITERATION_4 827 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 826 && BOOST_PP_ITERATION_START_4 >= 826 +# define BOOST_PP_ITERATION_4 826 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 825 && BOOST_PP_ITERATION_START_4 >= 825 +# define BOOST_PP_ITERATION_4 825 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 824 && BOOST_PP_ITERATION_START_4 >= 824 +# define BOOST_PP_ITERATION_4 824 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 823 && BOOST_PP_ITERATION_START_4 >= 823 +# define BOOST_PP_ITERATION_4 823 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 822 && BOOST_PP_ITERATION_START_4 >= 822 +# define BOOST_PP_ITERATION_4 822 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 821 && BOOST_PP_ITERATION_START_4 >= 821 +# define BOOST_PP_ITERATION_4 821 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 820 && BOOST_PP_ITERATION_START_4 >= 820 +# define BOOST_PP_ITERATION_4 820 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 819 && BOOST_PP_ITERATION_START_4 >= 819 +# define BOOST_PP_ITERATION_4 819 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 818 && BOOST_PP_ITERATION_START_4 >= 818 +# define BOOST_PP_ITERATION_4 818 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 817 && BOOST_PP_ITERATION_START_4 >= 817 +# define BOOST_PP_ITERATION_4 817 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 816 && BOOST_PP_ITERATION_START_4 >= 816 +# define BOOST_PP_ITERATION_4 816 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 815 && BOOST_PP_ITERATION_START_4 >= 815 +# define BOOST_PP_ITERATION_4 815 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 814 && BOOST_PP_ITERATION_START_4 >= 814 +# define BOOST_PP_ITERATION_4 814 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 813 && BOOST_PP_ITERATION_START_4 >= 813 +# define BOOST_PP_ITERATION_4 813 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 812 && BOOST_PP_ITERATION_START_4 >= 812 +# define BOOST_PP_ITERATION_4 812 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 811 && BOOST_PP_ITERATION_START_4 >= 811 +# define BOOST_PP_ITERATION_4 811 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 810 && BOOST_PP_ITERATION_START_4 >= 810 +# define BOOST_PP_ITERATION_4 810 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 809 && BOOST_PP_ITERATION_START_4 >= 809 +# define BOOST_PP_ITERATION_4 809 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 808 && BOOST_PP_ITERATION_START_4 >= 808 +# define BOOST_PP_ITERATION_4 808 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 807 && BOOST_PP_ITERATION_START_4 >= 807 +# define BOOST_PP_ITERATION_4 807 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 806 && BOOST_PP_ITERATION_START_4 >= 806 +# define BOOST_PP_ITERATION_4 806 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 805 && BOOST_PP_ITERATION_START_4 >= 805 +# define BOOST_PP_ITERATION_4 805 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 804 && BOOST_PP_ITERATION_START_4 >= 804 +# define BOOST_PP_ITERATION_4 804 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 803 && BOOST_PP_ITERATION_START_4 >= 803 +# define BOOST_PP_ITERATION_4 803 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 802 && BOOST_PP_ITERATION_START_4 >= 802 +# define BOOST_PP_ITERATION_4 802 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 801 && BOOST_PP_ITERATION_START_4 >= 801 +# define BOOST_PP_ITERATION_4 801 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 800 && BOOST_PP_ITERATION_START_4 >= 800 +# define BOOST_PP_ITERATION_4 800 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 799 && BOOST_PP_ITERATION_START_4 >= 799 +# define BOOST_PP_ITERATION_4 799 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 798 && BOOST_PP_ITERATION_START_4 >= 798 +# define BOOST_PP_ITERATION_4 798 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 797 && BOOST_PP_ITERATION_START_4 >= 797 +# define BOOST_PP_ITERATION_4 797 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 796 && BOOST_PP_ITERATION_START_4 >= 796 +# define BOOST_PP_ITERATION_4 796 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 795 && BOOST_PP_ITERATION_START_4 >= 795 +# define BOOST_PP_ITERATION_4 795 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 794 && BOOST_PP_ITERATION_START_4 >= 794 +# define BOOST_PP_ITERATION_4 794 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 793 && BOOST_PP_ITERATION_START_4 >= 793 +# define BOOST_PP_ITERATION_4 793 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 792 && BOOST_PP_ITERATION_START_4 >= 792 +# define BOOST_PP_ITERATION_4 792 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 791 && BOOST_PP_ITERATION_START_4 >= 791 +# define BOOST_PP_ITERATION_4 791 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 790 && BOOST_PP_ITERATION_START_4 >= 790 +# define BOOST_PP_ITERATION_4 790 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 789 && BOOST_PP_ITERATION_START_4 >= 789 +# define BOOST_PP_ITERATION_4 789 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 788 && BOOST_PP_ITERATION_START_4 >= 788 +# define BOOST_PP_ITERATION_4 788 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 787 && BOOST_PP_ITERATION_START_4 >= 787 +# define BOOST_PP_ITERATION_4 787 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 786 && BOOST_PP_ITERATION_START_4 >= 786 +# define BOOST_PP_ITERATION_4 786 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 785 && BOOST_PP_ITERATION_START_4 >= 785 +# define BOOST_PP_ITERATION_4 785 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 784 && BOOST_PP_ITERATION_START_4 >= 784 +# define BOOST_PP_ITERATION_4 784 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 783 && BOOST_PP_ITERATION_START_4 >= 783 +# define BOOST_PP_ITERATION_4 783 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 782 && BOOST_PP_ITERATION_START_4 >= 782 +# define BOOST_PP_ITERATION_4 782 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 781 && BOOST_PP_ITERATION_START_4 >= 781 +# define BOOST_PP_ITERATION_4 781 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 780 && BOOST_PP_ITERATION_START_4 >= 780 +# define BOOST_PP_ITERATION_4 780 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 779 && BOOST_PP_ITERATION_START_4 >= 779 +# define BOOST_PP_ITERATION_4 779 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 778 && BOOST_PP_ITERATION_START_4 >= 778 +# define BOOST_PP_ITERATION_4 778 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 777 && BOOST_PP_ITERATION_START_4 >= 777 +# define BOOST_PP_ITERATION_4 777 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 776 && BOOST_PP_ITERATION_START_4 >= 776 +# define BOOST_PP_ITERATION_4 776 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 775 && BOOST_PP_ITERATION_START_4 >= 775 +# define BOOST_PP_ITERATION_4 775 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 774 && BOOST_PP_ITERATION_START_4 >= 774 +# define BOOST_PP_ITERATION_4 774 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 773 && BOOST_PP_ITERATION_START_4 >= 773 +# define BOOST_PP_ITERATION_4 773 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 772 && BOOST_PP_ITERATION_START_4 >= 772 +# define BOOST_PP_ITERATION_4 772 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 771 && BOOST_PP_ITERATION_START_4 >= 771 +# define BOOST_PP_ITERATION_4 771 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 770 && BOOST_PP_ITERATION_START_4 >= 770 +# define BOOST_PP_ITERATION_4 770 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 769 && BOOST_PP_ITERATION_START_4 >= 769 +# define BOOST_PP_ITERATION_4 769 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 768 && BOOST_PP_ITERATION_START_4 >= 768 +# define BOOST_PP_ITERATION_4 768 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 767 && BOOST_PP_ITERATION_START_4 >= 767 +# define BOOST_PP_ITERATION_4 767 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 766 && BOOST_PP_ITERATION_START_4 >= 766 +# define BOOST_PP_ITERATION_4 766 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 765 && BOOST_PP_ITERATION_START_4 >= 765 +# define BOOST_PP_ITERATION_4 765 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 764 && BOOST_PP_ITERATION_START_4 >= 764 +# define BOOST_PP_ITERATION_4 764 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 763 && BOOST_PP_ITERATION_START_4 >= 763 +# define BOOST_PP_ITERATION_4 763 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 762 && BOOST_PP_ITERATION_START_4 >= 762 +# define BOOST_PP_ITERATION_4 762 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 761 && BOOST_PP_ITERATION_START_4 >= 761 +# define BOOST_PP_ITERATION_4 761 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 760 && BOOST_PP_ITERATION_START_4 >= 760 +# define BOOST_PP_ITERATION_4 760 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 759 && BOOST_PP_ITERATION_START_4 >= 759 +# define BOOST_PP_ITERATION_4 759 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 758 && BOOST_PP_ITERATION_START_4 >= 758 +# define BOOST_PP_ITERATION_4 758 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 757 && BOOST_PP_ITERATION_START_4 >= 757 +# define BOOST_PP_ITERATION_4 757 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 756 && BOOST_PP_ITERATION_START_4 >= 756 +# define BOOST_PP_ITERATION_4 756 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 755 && BOOST_PP_ITERATION_START_4 >= 755 +# define BOOST_PP_ITERATION_4 755 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 754 && BOOST_PP_ITERATION_START_4 >= 754 +# define BOOST_PP_ITERATION_4 754 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 753 && BOOST_PP_ITERATION_START_4 >= 753 +# define BOOST_PP_ITERATION_4 753 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 752 && BOOST_PP_ITERATION_START_4 >= 752 +# define BOOST_PP_ITERATION_4 752 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 751 && BOOST_PP_ITERATION_START_4 >= 751 +# define BOOST_PP_ITERATION_4 751 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 750 && BOOST_PP_ITERATION_START_4 >= 750 +# define BOOST_PP_ITERATION_4 750 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 749 && BOOST_PP_ITERATION_START_4 >= 749 +# define BOOST_PP_ITERATION_4 749 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 748 && BOOST_PP_ITERATION_START_4 >= 748 +# define BOOST_PP_ITERATION_4 748 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 747 && BOOST_PP_ITERATION_START_4 >= 747 +# define BOOST_PP_ITERATION_4 747 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 746 && BOOST_PP_ITERATION_START_4 >= 746 +# define BOOST_PP_ITERATION_4 746 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 745 && BOOST_PP_ITERATION_START_4 >= 745 +# define BOOST_PP_ITERATION_4 745 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 744 && BOOST_PP_ITERATION_START_4 >= 744 +# define BOOST_PP_ITERATION_4 744 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 743 && BOOST_PP_ITERATION_START_4 >= 743 +# define BOOST_PP_ITERATION_4 743 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 742 && BOOST_PP_ITERATION_START_4 >= 742 +# define BOOST_PP_ITERATION_4 742 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 741 && BOOST_PP_ITERATION_START_4 >= 741 +# define BOOST_PP_ITERATION_4 741 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 740 && BOOST_PP_ITERATION_START_4 >= 740 +# define BOOST_PP_ITERATION_4 740 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 739 && BOOST_PP_ITERATION_START_4 >= 739 +# define BOOST_PP_ITERATION_4 739 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 738 && BOOST_PP_ITERATION_START_4 >= 738 +# define BOOST_PP_ITERATION_4 738 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 737 && BOOST_PP_ITERATION_START_4 >= 737 +# define BOOST_PP_ITERATION_4 737 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 736 && BOOST_PP_ITERATION_START_4 >= 736 +# define BOOST_PP_ITERATION_4 736 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 735 && BOOST_PP_ITERATION_START_4 >= 735 +# define BOOST_PP_ITERATION_4 735 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 734 && BOOST_PP_ITERATION_START_4 >= 734 +# define BOOST_PP_ITERATION_4 734 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 733 && BOOST_PP_ITERATION_START_4 >= 733 +# define BOOST_PP_ITERATION_4 733 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 732 && BOOST_PP_ITERATION_START_4 >= 732 +# define BOOST_PP_ITERATION_4 732 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 731 && BOOST_PP_ITERATION_START_4 >= 731 +# define BOOST_PP_ITERATION_4 731 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 730 && BOOST_PP_ITERATION_START_4 >= 730 +# define BOOST_PP_ITERATION_4 730 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 729 && BOOST_PP_ITERATION_START_4 >= 729 +# define BOOST_PP_ITERATION_4 729 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 728 && BOOST_PP_ITERATION_START_4 >= 728 +# define BOOST_PP_ITERATION_4 728 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 727 && BOOST_PP_ITERATION_START_4 >= 727 +# define BOOST_PP_ITERATION_4 727 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 726 && BOOST_PP_ITERATION_START_4 >= 726 +# define BOOST_PP_ITERATION_4 726 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 725 && BOOST_PP_ITERATION_START_4 >= 725 +# define BOOST_PP_ITERATION_4 725 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 724 && BOOST_PP_ITERATION_START_4 >= 724 +# define BOOST_PP_ITERATION_4 724 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 723 && BOOST_PP_ITERATION_START_4 >= 723 +# define BOOST_PP_ITERATION_4 723 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 722 && BOOST_PP_ITERATION_START_4 >= 722 +# define BOOST_PP_ITERATION_4 722 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 721 && BOOST_PP_ITERATION_START_4 >= 721 +# define BOOST_PP_ITERATION_4 721 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 720 && BOOST_PP_ITERATION_START_4 >= 720 +# define BOOST_PP_ITERATION_4 720 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 719 && BOOST_PP_ITERATION_START_4 >= 719 +# define BOOST_PP_ITERATION_4 719 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 718 && BOOST_PP_ITERATION_START_4 >= 718 +# define BOOST_PP_ITERATION_4 718 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 717 && BOOST_PP_ITERATION_START_4 >= 717 +# define BOOST_PP_ITERATION_4 717 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 716 && BOOST_PP_ITERATION_START_4 >= 716 +# define BOOST_PP_ITERATION_4 716 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 715 && BOOST_PP_ITERATION_START_4 >= 715 +# define BOOST_PP_ITERATION_4 715 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 714 && BOOST_PP_ITERATION_START_4 >= 714 +# define BOOST_PP_ITERATION_4 714 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 713 && BOOST_PP_ITERATION_START_4 >= 713 +# define BOOST_PP_ITERATION_4 713 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 712 && BOOST_PP_ITERATION_START_4 >= 712 +# define BOOST_PP_ITERATION_4 712 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 711 && BOOST_PP_ITERATION_START_4 >= 711 +# define BOOST_PP_ITERATION_4 711 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 710 && BOOST_PP_ITERATION_START_4 >= 710 +# define BOOST_PP_ITERATION_4 710 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 709 && BOOST_PP_ITERATION_START_4 >= 709 +# define BOOST_PP_ITERATION_4 709 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 708 && BOOST_PP_ITERATION_START_4 >= 708 +# define BOOST_PP_ITERATION_4 708 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 707 && BOOST_PP_ITERATION_START_4 >= 707 +# define BOOST_PP_ITERATION_4 707 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 706 && BOOST_PP_ITERATION_START_4 >= 706 +# define BOOST_PP_ITERATION_4 706 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 705 && BOOST_PP_ITERATION_START_4 >= 705 +# define BOOST_PP_ITERATION_4 705 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 704 && BOOST_PP_ITERATION_START_4 >= 704 +# define BOOST_PP_ITERATION_4 704 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 703 && BOOST_PP_ITERATION_START_4 >= 703 +# define BOOST_PP_ITERATION_4 703 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 702 && BOOST_PP_ITERATION_START_4 >= 702 +# define BOOST_PP_ITERATION_4 702 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 701 && BOOST_PP_ITERATION_START_4 >= 701 +# define BOOST_PP_ITERATION_4 701 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 700 && BOOST_PP_ITERATION_START_4 >= 700 +# define BOOST_PP_ITERATION_4 700 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 699 && BOOST_PP_ITERATION_START_4 >= 699 +# define BOOST_PP_ITERATION_4 699 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 698 && BOOST_PP_ITERATION_START_4 >= 698 +# define BOOST_PP_ITERATION_4 698 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 697 && BOOST_PP_ITERATION_START_4 >= 697 +# define BOOST_PP_ITERATION_4 697 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 696 && BOOST_PP_ITERATION_START_4 >= 696 +# define BOOST_PP_ITERATION_4 696 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 695 && BOOST_PP_ITERATION_START_4 >= 695 +# define BOOST_PP_ITERATION_4 695 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 694 && BOOST_PP_ITERATION_START_4 >= 694 +# define BOOST_PP_ITERATION_4 694 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 693 && BOOST_PP_ITERATION_START_4 >= 693 +# define BOOST_PP_ITERATION_4 693 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 692 && BOOST_PP_ITERATION_START_4 >= 692 +# define BOOST_PP_ITERATION_4 692 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 691 && BOOST_PP_ITERATION_START_4 >= 691 +# define BOOST_PP_ITERATION_4 691 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 690 && BOOST_PP_ITERATION_START_4 >= 690 +# define BOOST_PP_ITERATION_4 690 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 689 && BOOST_PP_ITERATION_START_4 >= 689 +# define BOOST_PP_ITERATION_4 689 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 688 && BOOST_PP_ITERATION_START_4 >= 688 +# define BOOST_PP_ITERATION_4 688 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 687 && BOOST_PP_ITERATION_START_4 >= 687 +# define BOOST_PP_ITERATION_4 687 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 686 && BOOST_PP_ITERATION_START_4 >= 686 +# define BOOST_PP_ITERATION_4 686 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 685 && BOOST_PP_ITERATION_START_4 >= 685 +# define BOOST_PP_ITERATION_4 685 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 684 && BOOST_PP_ITERATION_START_4 >= 684 +# define BOOST_PP_ITERATION_4 684 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 683 && BOOST_PP_ITERATION_START_4 >= 683 +# define BOOST_PP_ITERATION_4 683 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 682 && BOOST_PP_ITERATION_START_4 >= 682 +# define BOOST_PP_ITERATION_4 682 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 681 && BOOST_PP_ITERATION_START_4 >= 681 +# define BOOST_PP_ITERATION_4 681 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 680 && BOOST_PP_ITERATION_START_4 >= 680 +# define BOOST_PP_ITERATION_4 680 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 679 && BOOST_PP_ITERATION_START_4 >= 679 +# define BOOST_PP_ITERATION_4 679 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 678 && BOOST_PP_ITERATION_START_4 >= 678 +# define BOOST_PP_ITERATION_4 678 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 677 && BOOST_PP_ITERATION_START_4 >= 677 +# define BOOST_PP_ITERATION_4 677 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 676 && BOOST_PP_ITERATION_START_4 >= 676 +# define BOOST_PP_ITERATION_4 676 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 675 && BOOST_PP_ITERATION_START_4 >= 675 +# define BOOST_PP_ITERATION_4 675 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 674 && BOOST_PP_ITERATION_START_4 >= 674 +# define BOOST_PP_ITERATION_4 674 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 673 && BOOST_PP_ITERATION_START_4 >= 673 +# define BOOST_PP_ITERATION_4 673 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 672 && BOOST_PP_ITERATION_START_4 >= 672 +# define BOOST_PP_ITERATION_4 672 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 671 && BOOST_PP_ITERATION_START_4 >= 671 +# define BOOST_PP_ITERATION_4 671 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 670 && BOOST_PP_ITERATION_START_4 >= 670 +# define BOOST_PP_ITERATION_4 670 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 669 && BOOST_PP_ITERATION_START_4 >= 669 +# define BOOST_PP_ITERATION_4 669 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 668 && BOOST_PP_ITERATION_START_4 >= 668 +# define BOOST_PP_ITERATION_4 668 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 667 && BOOST_PP_ITERATION_START_4 >= 667 +# define BOOST_PP_ITERATION_4 667 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 666 && BOOST_PP_ITERATION_START_4 >= 666 +# define BOOST_PP_ITERATION_4 666 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 665 && BOOST_PP_ITERATION_START_4 >= 665 +# define BOOST_PP_ITERATION_4 665 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 664 && BOOST_PP_ITERATION_START_4 >= 664 +# define BOOST_PP_ITERATION_4 664 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 663 && BOOST_PP_ITERATION_START_4 >= 663 +# define BOOST_PP_ITERATION_4 663 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 662 && BOOST_PP_ITERATION_START_4 >= 662 +# define BOOST_PP_ITERATION_4 662 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 661 && BOOST_PP_ITERATION_START_4 >= 661 +# define BOOST_PP_ITERATION_4 661 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 660 && BOOST_PP_ITERATION_START_4 >= 660 +# define BOOST_PP_ITERATION_4 660 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 659 && BOOST_PP_ITERATION_START_4 >= 659 +# define BOOST_PP_ITERATION_4 659 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 658 && BOOST_PP_ITERATION_START_4 >= 658 +# define BOOST_PP_ITERATION_4 658 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 657 && BOOST_PP_ITERATION_START_4 >= 657 +# define BOOST_PP_ITERATION_4 657 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 656 && BOOST_PP_ITERATION_START_4 >= 656 +# define BOOST_PP_ITERATION_4 656 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 655 && BOOST_PP_ITERATION_START_4 >= 655 +# define BOOST_PP_ITERATION_4 655 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 654 && BOOST_PP_ITERATION_START_4 >= 654 +# define BOOST_PP_ITERATION_4 654 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 653 && BOOST_PP_ITERATION_START_4 >= 653 +# define BOOST_PP_ITERATION_4 653 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 652 && BOOST_PP_ITERATION_START_4 >= 652 +# define BOOST_PP_ITERATION_4 652 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 651 && BOOST_PP_ITERATION_START_4 >= 651 +# define BOOST_PP_ITERATION_4 651 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 650 && BOOST_PP_ITERATION_START_4 >= 650 +# define BOOST_PP_ITERATION_4 650 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 649 && BOOST_PP_ITERATION_START_4 >= 649 +# define BOOST_PP_ITERATION_4 649 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 648 && BOOST_PP_ITERATION_START_4 >= 648 +# define BOOST_PP_ITERATION_4 648 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 647 && BOOST_PP_ITERATION_START_4 >= 647 +# define BOOST_PP_ITERATION_4 647 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 646 && BOOST_PP_ITERATION_START_4 >= 646 +# define BOOST_PP_ITERATION_4 646 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 645 && BOOST_PP_ITERATION_START_4 >= 645 +# define BOOST_PP_ITERATION_4 645 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 644 && BOOST_PP_ITERATION_START_4 >= 644 +# define BOOST_PP_ITERATION_4 644 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 643 && BOOST_PP_ITERATION_START_4 >= 643 +# define BOOST_PP_ITERATION_4 643 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 642 && BOOST_PP_ITERATION_START_4 >= 642 +# define BOOST_PP_ITERATION_4 642 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 641 && BOOST_PP_ITERATION_START_4 >= 641 +# define BOOST_PP_ITERATION_4 641 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 640 && BOOST_PP_ITERATION_START_4 >= 640 +# define BOOST_PP_ITERATION_4 640 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 639 && BOOST_PP_ITERATION_START_4 >= 639 +# define BOOST_PP_ITERATION_4 639 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 638 && BOOST_PP_ITERATION_START_4 >= 638 +# define BOOST_PP_ITERATION_4 638 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 637 && BOOST_PP_ITERATION_START_4 >= 637 +# define BOOST_PP_ITERATION_4 637 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 636 && BOOST_PP_ITERATION_START_4 >= 636 +# define BOOST_PP_ITERATION_4 636 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 635 && BOOST_PP_ITERATION_START_4 >= 635 +# define BOOST_PP_ITERATION_4 635 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 634 && BOOST_PP_ITERATION_START_4 >= 634 +# define BOOST_PP_ITERATION_4 634 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 633 && BOOST_PP_ITERATION_START_4 >= 633 +# define BOOST_PP_ITERATION_4 633 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 632 && BOOST_PP_ITERATION_START_4 >= 632 +# define BOOST_PP_ITERATION_4 632 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 631 && BOOST_PP_ITERATION_START_4 >= 631 +# define BOOST_PP_ITERATION_4 631 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 630 && BOOST_PP_ITERATION_START_4 >= 630 +# define BOOST_PP_ITERATION_4 630 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 629 && BOOST_PP_ITERATION_START_4 >= 629 +# define BOOST_PP_ITERATION_4 629 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 628 && BOOST_PP_ITERATION_START_4 >= 628 +# define BOOST_PP_ITERATION_4 628 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 627 && BOOST_PP_ITERATION_START_4 >= 627 +# define BOOST_PP_ITERATION_4 627 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 626 && BOOST_PP_ITERATION_START_4 >= 626 +# define BOOST_PP_ITERATION_4 626 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 625 && BOOST_PP_ITERATION_START_4 >= 625 +# define BOOST_PP_ITERATION_4 625 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 624 && BOOST_PP_ITERATION_START_4 >= 624 +# define BOOST_PP_ITERATION_4 624 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 623 && BOOST_PP_ITERATION_START_4 >= 623 +# define BOOST_PP_ITERATION_4 623 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 622 && BOOST_PP_ITERATION_START_4 >= 622 +# define BOOST_PP_ITERATION_4 622 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 621 && BOOST_PP_ITERATION_START_4 >= 621 +# define BOOST_PP_ITERATION_4 621 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 620 && BOOST_PP_ITERATION_START_4 >= 620 +# define BOOST_PP_ITERATION_4 620 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 619 && BOOST_PP_ITERATION_START_4 >= 619 +# define BOOST_PP_ITERATION_4 619 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 618 && BOOST_PP_ITERATION_START_4 >= 618 +# define BOOST_PP_ITERATION_4 618 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 617 && BOOST_PP_ITERATION_START_4 >= 617 +# define BOOST_PP_ITERATION_4 617 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 616 && BOOST_PP_ITERATION_START_4 >= 616 +# define BOOST_PP_ITERATION_4 616 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 615 && BOOST_PP_ITERATION_START_4 >= 615 +# define BOOST_PP_ITERATION_4 615 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 614 && BOOST_PP_ITERATION_START_4 >= 614 +# define BOOST_PP_ITERATION_4 614 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 613 && BOOST_PP_ITERATION_START_4 >= 613 +# define BOOST_PP_ITERATION_4 613 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 612 && BOOST_PP_ITERATION_START_4 >= 612 +# define BOOST_PP_ITERATION_4 612 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 611 && BOOST_PP_ITERATION_START_4 >= 611 +# define BOOST_PP_ITERATION_4 611 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 610 && BOOST_PP_ITERATION_START_4 >= 610 +# define BOOST_PP_ITERATION_4 610 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 609 && BOOST_PP_ITERATION_START_4 >= 609 +# define BOOST_PP_ITERATION_4 609 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 608 && BOOST_PP_ITERATION_START_4 >= 608 +# define BOOST_PP_ITERATION_4 608 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 607 && BOOST_PP_ITERATION_START_4 >= 607 +# define BOOST_PP_ITERATION_4 607 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 606 && BOOST_PP_ITERATION_START_4 >= 606 +# define BOOST_PP_ITERATION_4 606 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 605 && BOOST_PP_ITERATION_START_4 >= 605 +# define BOOST_PP_ITERATION_4 605 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 604 && BOOST_PP_ITERATION_START_4 >= 604 +# define BOOST_PP_ITERATION_4 604 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 603 && BOOST_PP_ITERATION_START_4 >= 603 +# define BOOST_PP_ITERATION_4 603 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 602 && BOOST_PP_ITERATION_START_4 >= 602 +# define BOOST_PP_ITERATION_4 602 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 601 && BOOST_PP_ITERATION_START_4 >= 601 +# define BOOST_PP_ITERATION_4 601 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 600 && BOOST_PP_ITERATION_START_4 >= 600 +# define BOOST_PP_ITERATION_4 600 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 599 && BOOST_PP_ITERATION_START_4 >= 599 +# define BOOST_PP_ITERATION_4 599 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 598 && BOOST_PP_ITERATION_START_4 >= 598 +# define BOOST_PP_ITERATION_4 598 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 597 && BOOST_PP_ITERATION_START_4 >= 597 +# define BOOST_PP_ITERATION_4 597 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 596 && BOOST_PP_ITERATION_START_4 >= 596 +# define BOOST_PP_ITERATION_4 596 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 595 && BOOST_PP_ITERATION_START_4 >= 595 +# define BOOST_PP_ITERATION_4 595 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 594 && BOOST_PP_ITERATION_START_4 >= 594 +# define BOOST_PP_ITERATION_4 594 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 593 && BOOST_PP_ITERATION_START_4 >= 593 +# define BOOST_PP_ITERATION_4 593 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 592 && BOOST_PP_ITERATION_START_4 >= 592 +# define BOOST_PP_ITERATION_4 592 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 591 && BOOST_PP_ITERATION_START_4 >= 591 +# define BOOST_PP_ITERATION_4 591 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 590 && BOOST_PP_ITERATION_START_4 >= 590 +# define BOOST_PP_ITERATION_4 590 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 589 && BOOST_PP_ITERATION_START_4 >= 589 +# define BOOST_PP_ITERATION_4 589 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 588 && BOOST_PP_ITERATION_START_4 >= 588 +# define BOOST_PP_ITERATION_4 588 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 587 && BOOST_PP_ITERATION_START_4 >= 587 +# define BOOST_PP_ITERATION_4 587 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 586 && BOOST_PP_ITERATION_START_4 >= 586 +# define BOOST_PP_ITERATION_4 586 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 585 && BOOST_PP_ITERATION_START_4 >= 585 +# define BOOST_PP_ITERATION_4 585 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 584 && BOOST_PP_ITERATION_START_4 >= 584 +# define BOOST_PP_ITERATION_4 584 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 583 && BOOST_PP_ITERATION_START_4 >= 583 +# define BOOST_PP_ITERATION_4 583 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 582 && BOOST_PP_ITERATION_START_4 >= 582 +# define BOOST_PP_ITERATION_4 582 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 581 && BOOST_PP_ITERATION_START_4 >= 581 +# define BOOST_PP_ITERATION_4 581 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 580 && BOOST_PP_ITERATION_START_4 >= 580 +# define BOOST_PP_ITERATION_4 580 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 579 && BOOST_PP_ITERATION_START_4 >= 579 +# define BOOST_PP_ITERATION_4 579 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 578 && BOOST_PP_ITERATION_START_4 >= 578 +# define BOOST_PP_ITERATION_4 578 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 577 && BOOST_PP_ITERATION_START_4 >= 577 +# define BOOST_PP_ITERATION_4 577 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 576 && BOOST_PP_ITERATION_START_4 >= 576 +# define BOOST_PP_ITERATION_4 576 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 575 && BOOST_PP_ITERATION_START_4 >= 575 +# define BOOST_PP_ITERATION_4 575 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 574 && BOOST_PP_ITERATION_START_4 >= 574 +# define BOOST_PP_ITERATION_4 574 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 573 && BOOST_PP_ITERATION_START_4 >= 573 +# define BOOST_PP_ITERATION_4 573 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 572 && BOOST_PP_ITERATION_START_4 >= 572 +# define BOOST_PP_ITERATION_4 572 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 571 && BOOST_PP_ITERATION_START_4 >= 571 +# define BOOST_PP_ITERATION_4 571 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 570 && BOOST_PP_ITERATION_START_4 >= 570 +# define BOOST_PP_ITERATION_4 570 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 569 && BOOST_PP_ITERATION_START_4 >= 569 +# define BOOST_PP_ITERATION_4 569 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 568 && BOOST_PP_ITERATION_START_4 >= 568 +# define BOOST_PP_ITERATION_4 568 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 567 && BOOST_PP_ITERATION_START_4 >= 567 +# define BOOST_PP_ITERATION_4 567 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 566 && BOOST_PP_ITERATION_START_4 >= 566 +# define BOOST_PP_ITERATION_4 566 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 565 && BOOST_PP_ITERATION_START_4 >= 565 +# define BOOST_PP_ITERATION_4 565 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 564 && BOOST_PP_ITERATION_START_4 >= 564 +# define BOOST_PP_ITERATION_4 564 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 563 && BOOST_PP_ITERATION_START_4 >= 563 +# define BOOST_PP_ITERATION_4 563 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 562 && BOOST_PP_ITERATION_START_4 >= 562 +# define BOOST_PP_ITERATION_4 562 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 561 && BOOST_PP_ITERATION_START_4 >= 561 +# define BOOST_PP_ITERATION_4 561 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 560 && BOOST_PP_ITERATION_START_4 >= 560 +# define BOOST_PP_ITERATION_4 560 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 559 && BOOST_PP_ITERATION_START_4 >= 559 +# define BOOST_PP_ITERATION_4 559 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 558 && BOOST_PP_ITERATION_START_4 >= 558 +# define BOOST_PP_ITERATION_4 558 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 557 && BOOST_PP_ITERATION_START_4 >= 557 +# define BOOST_PP_ITERATION_4 557 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 556 && BOOST_PP_ITERATION_START_4 >= 556 +# define BOOST_PP_ITERATION_4 556 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 555 && BOOST_PP_ITERATION_START_4 >= 555 +# define BOOST_PP_ITERATION_4 555 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 554 && BOOST_PP_ITERATION_START_4 >= 554 +# define BOOST_PP_ITERATION_4 554 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 553 && BOOST_PP_ITERATION_START_4 >= 553 +# define BOOST_PP_ITERATION_4 553 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 552 && BOOST_PP_ITERATION_START_4 >= 552 +# define BOOST_PP_ITERATION_4 552 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 551 && BOOST_PP_ITERATION_START_4 >= 551 +# define BOOST_PP_ITERATION_4 551 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 550 && BOOST_PP_ITERATION_START_4 >= 550 +# define BOOST_PP_ITERATION_4 550 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 549 && BOOST_PP_ITERATION_START_4 >= 549 +# define BOOST_PP_ITERATION_4 549 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 548 && BOOST_PP_ITERATION_START_4 >= 548 +# define BOOST_PP_ITERATION_4 548 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 547 && BOOST_PP_ITERATION_START_4 >= 547 +# define BOOST_PP_ITERATION_4 547 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 546 && BOOST_PP_ITERATION_START_4 >= 546 +# define BOOST_PP_ITERATION_4 546 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 545 && BOOST_PP_ITERATION_START_4 >= 545 +# define BOOST_PP_ITERATION_4 545 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 544 && BOOST_PP_ITERATION_START_4 >= 544 +# define BOOST_PP_ITERATION_4 544 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 543 && BOOST_PP_ITERATION_START_4 >= 543 +# define BOOST_PP_ITERATION_4 543 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 542 && BOOST_PP_ITERATION_START_4 >= 542 +# define BOOST_PP_ITERATION_4 542 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 541 && BOOST_PP_ITERATION_START_4 >= 541 +# define BOOST_PP_ITERATION_4 541 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 540 && BOOST_PP_ITERATION_START_4 >= 540 +# define BOOST_PP_ITERATION_4 540 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 539 && BOOST_PP_ITERATION_START_4 >= 539 +# define BOOST_PP_ITERATION_4 539 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 538 && BOOST_PP_ITERATION_START_4 >= 538 +# define BOOST_PP_ITERATION_4 538 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 537 && BOOST_PP_ITERATION_START_4 >= 537 +# define BOOST_PP_ITERATION_4 537 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 536 && BOOST_PP_ITERATION_START_4 >= 536 +# define BOOST_PP_ITERATION_4 536 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 535 && BOOST_PP_ITERATION_START_4 >= 535 +# define BOOST_PP_ITERATION_4 535 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 534 && BOOST_PP_ITERATION_START_4 >= 534 +# define BOOST_PP_ITERATION_4 534 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 533 && BOOST_PP_ITERATION_START_4 >= 533 +# define BOOST_PP_ITERATION_4 533 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 532 && BOOST_PP_ITERATION_START_4 >= 532 +# define BOOST_PP_ITERATION_4 532 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 531 && BOOST_PP_ITERATION_START_4 >= 531 +# define BOOST_PP_ITERATION_4 531 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 530 && BOOST_PP_ITERATION_START_4 >= 530 +# define BOOST_PP_ITERATION_4 530 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 529 && BOOST_PP_ITERATION_START_4 >= 529 +# define BOOST_PP_ITERATION_4 529 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 528 && BOOST_PP_ITERATION_START_4 >= 528 +# define BOOST_PP_ITERATION_4 528 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 527 && BOOST_PP_ITERATION_START_4 >= 527 +# define BOOST_PP_ITERATION_4 527 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 526 && BOOST_PP_ITERATION_START_4 >= 526 +# define BOOST_PP_ITERATION_4 526 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 525 && BOOST_PP_ITERATION_START_4 >= 525 +# define BOOST_PP_ITERATION_4 525 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 524 && BOOST_PP_ITERATION_START_4 >= 524 +# define BOOST_PP_ITERATION_4 524 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 523 && BOOST_PP_ITERATION_START_4 >= 523 +# define BOOST_PP_ITERATION_4 523 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 522 && BOOST_PP_ITERATION_START_4 >= 522 +# define BOOST_PP_ITERATION_4 522 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 521 && BOOST_PP_ITERATION_START_4 >= 521 +# define BOOST_PP_ITERATION_4 521 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 520 && BOOST_PP_ITERATION_START_4 >= 520 +# define BOOST_PP_ITERATION_4 520 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 519 && BOOST_PP_ITERATION_START_4 >= 519 +# define BOOST_PP_ITERATION_4 519 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 518 && BOOST_PP_ITERATION_START_4 >= 518 +# define BOOST_PP_ITERATION_4 518 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 517 && BOOST_PP_ITERATION_START_4 >= 517 +# define BOOST_PP_ITERATION_4 517 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 516 && BOOST_PP_ITERATION_START_4 >= 516 +# define BOOST_PP_ITERATION_4 516 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 515 && BOOST_PP_ITERATION_START_4 >= 515 +# define BOOST_PP_ITERATION_4 515 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 514 && BOOST_PP_ITERATION_START_4 >= 514 +# define BOOST_PP_ITERATION_4 514 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 513 && BOOST_PP_ITERATION_START_4 >= 513 +# define BOOST_PP_ITERATION_4 513 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse4_256.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse4_256.hpp new file mode 100644 index 000000000..aedceb3d8 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse4_256.hpp @@ -0,0 +1,1296 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_FINISH_4 <= 256 && BOOST_PP_ITERATION_START_4 >= 256 +# define BOOST_PP_ITERATION_4 256 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 255 && BOOST_PP_ITERATION_START_4 >= 255 +# define BOOST_PP_ITERATION_4 255 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 254 && BOOST_PP_ITERATION_START_4 >= 254 +# define BOOST_PP_ITERATION_4 254 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 253 && BOOST_PP_ITERATION_START_4 >= 253 +# define BOOST_PP_ITERATION_4 253 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 252 && BOOST_PP_ITERATION_START_4 >= 252 +# define BOOST_PP_ITERATION_4 252 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 251 && BOOST_PP_ITERATION_START_4 >= 251 +# define BOOST_PP_ITERATION_4 251 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 250 && BOOST_PP_ITERATION_START_4 >= 250 +# define BOOST_PP_ITERATION_4 250 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 249 && BOOST_PP_ITERATION_START_4 >= 249 +# define BOOST_PP_ITERATION_4 249 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 248 && BOOST_PP_ITERATION_START_4 >= 248 +# define BOOST_PP_ITERATION_4 248 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 247 && BOOST_PP_ITERATION_START_4 >= 247 +# define BOOST_PP_ITERATION_4 247 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 246 && BOOST_PP_ITERATION_START_4 >= 246 +# define BOOST_PP_ITERATION_4 246 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 245 && BOOST_PP_ITERATION_START_4 >= 245 +# define BOOST_PP_ITERATION_4 245 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 244 && BOOST_PP_ITERATION_START_4 >= 244 +# define BOOST_PP_ITERATION_4 244 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 243 && BOOST_PP_ITERATION_START_4 >= 243 +# define BOOST_PP_ITERATION_4 243 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 242 && BOOST_PP_ITERATION_START_4 >= 242 +# define BOOST_PP_ITERATION_4 242 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 241 && BOOST_PP_ITERATION_START_4 >= 241 +# define BOOST_PP_ITERATION_4 241 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 240 && BOOST_PP_ITERATION_START_4 >= 240 +# define BOOST_PP_ITERATION_4 240 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 239 && BOOST_PP_ITERATION_START_4 >= 239 +# define BOOST_PP_ITERATION_4 239 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 238 && BOOST_PP_ITERATION_START_4 >= 238 +# define BOOST_PP_ITERATION_4 238 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 237 && BOOST_PP_ITERATION_START_4 >= 237 +# define BOOST_PP_ITERATION_4 237 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 236 && BOOST_PP_ITERATION_START_4 >= 236 +# define BOOST_PP_ITERATION_4 236 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 235 && BOOST_PP_ITERATION_START_4 >= 235 +# define BOOST_PP_ITERATION_4 235 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 234 && BOOST_PP_ITERATION_START_4 >= 234 +# define BOOST_PP_ITERATION_4 234 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 233 && BOOST_PP_ITERATION_START_4 >= 233 +# define BOOST_PP_ITERATION_4 233 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 232 && BOOST_PP_ITERATION_START_4 >= 232 +# define BOOST_PP_ITERATION_4 232 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 231 && BOOST_PP_ITERATION_START_4 >= 231 +# define BOOST_PP_ITERATION_4 231 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 230 && BOOST_PP_ITERATION_START_4 >= 230 +# define BOOST_PP_ITERATION_4 230 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 229 && BOOST_PP_ITERATION_START_4 >= 229 +# define BOOST_PP_ITERATION_4 229 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 228 && BOOST_PP_ITERATION_START_4 >= 228 +# define BOOST_PP_ITERATION_4 228 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 227 && BOOST_PP_ITERATION_START_4 >= 227 +# define BOOST_PP_ITERATION_4 227 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 226 && BOOST_PP_ITERATION_START_4 >= 226 +# define BOOST_PP_ITERATION_4 226 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 225 && BOOST_PP_ITERATION_START_4 >= 225 +# define BOOST_PP_ITERATION_4 225 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 224 && BOOST_PP_ITERATION_START_4 >= 224 +# define BOOST_PP_ITERATION_4 224 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 223 && BOOST_PP_ITERATION_START_4 >= 223 +# define BOOST_PP_ITERATION_4 223 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 222 && BOOST_PP_ITERATION_START_4 >= 222 +# define BOOST_PP_ITERATION_4 222 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 221 && BOOST_PP_ITERATION_START_4 >= 221 +# define BOOST_PP_ITERATION_4 221 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 220 && BOOST_PP_ITERATION_START_4 >= 220 +# define BOOST_PP_ITERATION_4 220 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 219 && BOOST_PP_ITERATION_START_4 >= 219 +# define BOOST_PP_ITERATION_4 219 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 218 && BOOST_PP_ITERATION_START_4 >= 218 +# define BOOST_PP_ITERATION_4 218 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 217 && BOOST_PP_ITERATION_START_4 >= 217 +# define BOOST_PP_ITERATION_4 217 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 216 && BOOST_PP_ITERATION_START_4 >= 216 +# define BOOST_PP_ITERATION_4 216 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 215 && BOOST_PP_ITERATION_START_4 >= 215 +# define BOOST_PP_ITERATION_4 215 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 214 && BOOST_PP_ITERATION_START_4 >= 214 +# define BOOST_PP_ITERATION_4 214 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 213 && BOOST_PP_ITERATION_START_4 >= 213 +# define BOOST_PP_ITERATION_4 213 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 212 && BOOST_PP_ITERATION_START_4 >= 212 +# define BOOST_PP_ITERATION_4 212 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 211 && BOOST_PP_ITERATION_START_4 >= 211 +# define BOOST_PP_ITERATION_4 211 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 210 && BOOST_PP_ITERATION_START_4 >= 210 +# define BOOST_PP_ITERATION_4 210 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 209 && BOOST_PP_ITERATION_START_4 >= 209 +# define BOOST_PP_ITERATION_4 209 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 208 && BOOST_PP_ITERATION_START_4 >= 208 +# define BOOST_PP_ITERATION_4 208 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 207 && BOOST_PP_ITERATION_START_4 >= 207 +# define BOOST_PP_ITERATION_4 207 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 206 && BOOST_PP_ITERATION_START_4 >= 206 +# define BOOST_PP_ITERATION_4 206 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 205 && BOOST_PP_ITERATION_START_4 >= 205 +# define BOOST_PP_ITERATION_4 205 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 204 && BOOST_PP_ITERATION_START_4 >= 204 +# define BOOST_PP_ITERATION_4 204 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 203 && BOOST_PP_ITERATION_START_4 >= 203 +# define BOOST_PP_ITERATION_4 203 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 202 && BOOST_PP_ITERATION_START_4 >= 202 +# define BOOST_PP_ITERATION_4 202 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 201 && BOOST_PP_ITERATION_START_4 >= 201 +# define BOOST_PP_ITERATION_4 201 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 200 && BOOST_PP_ITERATION_START_4 >= 200 +# define BOOST_PP_ITERATION_4 200 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 199 && BOOST_PP_ITERATION_START_4 >= 199 +# define BOOST_PP_ITERATION_4 199 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 198 && BOOST_PP_ITERATION_START_4 >= 198 +# define BOOST_PP_ITERATION_4 198 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 197 && BOOST_PP_ITERATION_START_4 >= 197 +# define BOOST_PP_ITERATION_4 197 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 196 && BOOST_PP_ITERATION_START_4 >= 196 +# define BOOST_PP_ITERATION_4 196 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 195 && BOOST_PP_ITERATION_START_4 >= 195 +# define BOOST_PP_ITERATION_4 195 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 194 && BOOST_PP_ITERATION_START_4 >= 194 +# define BOOST_PP_ITERATION_4 194 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 193 && BOOST_PP_ITERATION_START_4 >= 193 +# define BOOST_PP_ITERATION_4 193 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 192 && BOOST_PP_ITERATION_START_4 >= 192 +# define BOOST_PP_ITERATION_4 192 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 191 && BOOST_PP_ITERATION_START_4 >= 191 +# define BOOST_PP_ITERATION_4 191 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 190 && BOOST_PP_ITERATION_START_4 >= 190 +# define BOOST_PP_ITERATION_4 190 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 189 && BOOST_PP_ITERATION_START_4 >= 189 +# define BOOST_PP_ITERATION_4 189 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 188 && BOOST_PP_ITERATION_START_4 >= 188 +# define BOOST_PP_ITERATION_4 188 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 187 && BOOST_PP_ITERATION_START_4 >= 187 +# define BOOST_PP_ITERATION_4 187 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 186 && BOOST_PP_ITERATION_START_4 >= 186 +# define BOOST_PP_ITERATION_4 186 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 185 && BOOST_PP_ITERATION_START_4 >= 185 +# define BOOST_PP_ITERATION_4 185 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 184 && BOOST_PP_ITERATION_START_4 >= 184 +# define BOOST_PP_ITERATION_4 184 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 183 && BOOST_PP_ITERATION_START_4 >= 183 +# define BOOST_PP_ITERATION_4 183 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 182 && BOOST_PP_ITERATION_START_4 >= 182 +# define BOOST_PP_ITERATION_4 182 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 181 && BOOST_PP_ITERATION_START_4 >= 181 +# define BOOST_PP_ITERATION_4 181 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 180 && BOOST_PP_ITERATION_START_4 >= 180 +# define BOOST_PP_ITERATION_4 180 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 179 && BOOST_PP_ITERATION_START_4 >= 179 +# define BOOST_PP_ITERATION_4 179 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 178 && BOOST_PP_ITERATION_START_4 >= 178 +# define BOOST_PP_ITERATION_4 178 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 177 && BOOST_PP_ITERATION_START_4 >= 177 +# define BOOST_PP_ITERATION_4 177 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 176 && BOOST_PP_ITERATION_START_4 >= 176 +# define BOOST_PP_ITERATION_4 176 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 175 && BOOST_PP_ITERATION_START_4 >= 175 +# define BOOST_PP_ITERATION_4 175 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 174 && BOOST_PP_ITERATION_START_4 >= 174 +# define BOOST_PP_ITERATION_4 174 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 173 && BOOST_PP_ITERATION_START_4 >= 173 +# define BOOST_PP_ITERATION_4 173 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 172 && BOOST_PP_ITERATION_START_4 >= 172 +# define BOOST_PP_ITERATION_4 172 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 171 && BOOST_PP_ITERATION_START_4 >= 171 +# define BOOST_PP_ITERATION_4 171 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 170 && BOOST_PP_ITERATION_START_4 >= 170 +# define BOOST_PP_ITERATION_4 170 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 169 && BOOST_PP_ITERATION_START_4 >= 169 +# define BOOST_PP_ITERATION_4 169 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 168 && BOOST_PP_ITERATION_START_4 >= 168 +# define BOOST_PP_ITERATION_4 168 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 167 && BOOST_PP_ITERATION_START_4 >= 167 +# define BOOST_PP_ITERATION_4 167 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 166 && BOOST_PP_ITERATION_START_4 >= 166 +# define BOOST_PP_ITERATION_4 166 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 165 && BOOST_PP_ITERATION_START_4 >= 165 +# define BOOST_PP_ITERATION_4 165 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 164 && BOOST_PP_ITERATION_START_4 >= 164 +# define BOOST_PP_ITERATION_4 164 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 163 && BOOST_PP_ITERATION_START_4 >= 163 +# define BOOST_PP_ITERATION_4 163 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 162 && BOOST_PP_ITERATION_START_4 >= 162 +# define BOOST_PP_ITERATION_4 162 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 161 && BOOST_PP_ITERATION_START_4 >= 161 +# define BOOST_PP_ITERATION_4 161 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 160 && BOOST_PP_ITERATION_START_4 >= 160 +# define BOOST_PP_ITERATION_4 160 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 159 && BOOST_PP_ITERATION_START_4 >= 159 +# define BOOST_PP_ITERATION_4 159 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 158 && BOOST_PP_ITERATION_START_4 >= 158 +# define BOOST_PP_ITERATION_4 158 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 157 && BOOST_PP_ITERATION_START_4 >= 157 +# define BOOST_PP_ITERATION_4 157 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 156 && BOOST_PP_ITERATION_START_4 >= 156 +# define BOOST_PP_ITERATION_4 156 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 155 && BOOST_PP_ITERATION_START_4 >= 155 +# define BOOST_PP_ITERATION_4 155 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 154 && BOOST_PP_ITERATION_START_4 >= 154 +# define BOOST_PP_ITERATION_4 154 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 153 && BOOST_PP_ITERATION_START_4 >= 153 +# define BOOST_PP_ITERATION_4 153 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 152 && BOOST_PP_ITERATION_START_4 >= 152 +# define BOOST_PP_ITERATION_4 152 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 151 && BOOST_PP_ITERATION_START_4 >= 151 +# define BOOST_PP_ITERATION_4 151 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 150 && BOOST_PP_ITERATION_START_4 >= 150 +# define BOOST_PP_ITERATION_4 150 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 149 && BOOST_PP_ITERATION_START_4 >= 149 +# define BOOST_PP_ITERATION_4 149 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 148 && BOOST_PP_ITERATION_START_4 >= 148 +# define BOOST_PP_ITERATION_4 148 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 147 && BOOST_PP_ITERATION_START_4 >= 147 +# define BOOST_PP_ITERATION_4 147 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 146 && BOOST_PP_ITERATION_START_4 >= 146 +# define BOOST_PP_ITERATION_4 146 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 145 && BOOST_PP_ITERATION_START_4 >= 145 +# define BOOST_PP_ITERATION_4 145 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 144 && BOOST_PP_ITERATION_START_4 >= 144 +# define BOOST_PP_ITERATION_4 144 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 143 && BOOST_PP_ITERATION_START_4 >= 143 +# define BOOST_PP_ITERATION_4 143 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 142 && BOOST_PP_ITERATION_START_4 >= 142 +# define BOOST_PP_ITERATION_4 142 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 141 && BOOST_PP_ITERATION_START_4 >= 141 +# define BOOST_PP_ITERATION_4 141 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 140 && BOOST_PP_ITERATION_START_4 >= 140 +# define BOOST_PP_ITERATION_4 140 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 139 && BOOST_PP_ITERATION_START_4 >= 139 +# define BOOST_PP_ITERATION_4 139 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 138 && BOOST_PP_ITERATION_START_4 >= 138 +# define BOOST_PP_ITERATION_4 138 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 137 && BOOST_PP_ITERATION_START_4 >= 137 +# define BOOST_PP_ITERATION_4 137 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 136 && BOOST_PP_ITERATION_START_4 >= 136 +# define BOOST_PP_ITERATION_4 136 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 135 && BOOST_PP_ITERATION_START_4 >= 135 +# define BOOST_PP_ITERATION_4 135 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 134 && BOOST_PP_ITERATION_START_4 >= 134 +# define BOOST_PP_ITERATION_4 134 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 133 && BOOST_PP_ITERATION_START_4 >= 133 +# define BOOST_PP_ITERATION_4 133 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 132 && BOOST_PP_ITERATION_START_4 >= 132 +# define BOOST_PP_ITERATION_4 132 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 131 && BOOST_PP_ITERATION_START_4 >= 131 +# define BOOST_PP_ITERATION_4 131 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 130 && BOOST_PP_ITERATION_START_4 >= 130 +# define BOOST_PP_ITERATION_4 130 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 129 && BOOST_PP_ITERATION_START_4 >= 129 +# define BOOST_PP_ITERATION_4 129 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 128 && BOOST_PP_ITERATION_START_4 >= 128 +# define BOOST_PP_ITERATION_4 128 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 127 && BOOST_PP_ITERATION_START_4 >= 127 +# define BOOST_PP_ITERATION_4 127 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 126 && BOOST_PP_ITERATION_START_4 >= 126 +# define BOOST_PP_ITERATION_4 126 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 125 && BOOST_PP_ITERATION_START_4 >= 125 +# define BOOST_PP_ITERATION_4 125 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 124 && BOOST_PP_ITERATION_START_4 >= 124 +# define BOOST_PP_ITERATION_4 124 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 123 && BOOST_PP_ITERATION_START_4 >= 123 +# define BOOST_PP_ITERATION_4 123 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 122 && BOOST_PP_ITERATION_START_4 >= 122 +# define BOOST_PP_ITERATION_4 122 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 121 && BOOST_PP_ITERATION_START_4 >= 121 +# define BOOST_PP_ITERATION_4 121 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 120 && BOOST_PP_ITERATION_START_4 >= 120 +# define BOOST_PP_ITERATION_4 120 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 119 && BOOST_PP_ITERATION_START_4 >= 119 +# define BOOST_PP_ITERATION_4 119 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 118 && BOOST_PP_ITERATION_START_4 >= 118 +# define BOOST_PP_ITERATION_4 118 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 117 && BOOST_PP_ITERATION_START_4 >= 117 +# define BOOST_PP_ITERATION_4 117 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 116 && BOOST_PP_ITERATION_START_4 >= 116 +# define BOOST_PP_ITERATION_4 116 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 115 && BOOST_PP_ITERATION_START_4 >= 115 +# define BOOST_PP_ITERATION_4 115 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 114 && BOOST_PP_ITERATION_START_4 >= 114 +# define BOOST_PP_ITERATION_4 114 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 113 && BOOST_PP_ITERATION_START_4 >= 113 +# define BOOST_PP_ITERATION_4 113 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 112 && BOOST_PP_ITERATION_START_4 >= 112 +# define BOOST_PP_ITERATION_4 112 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 111 && BOOST_PP_ITERATION_START_4 >= 111 +# define BOOST_PP_ITERATION_4 111 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 110 && BOOST_PP_ITERATION_START_4 >= 110 +# define BOOST_PP_ITERATION_4 110 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 109 && BOOST_PP_ITERATION_START_4 >= 109 +# define BOOST_PP_ITERATION_4 109 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 108 && BOOST_PP_ITERATION_START_4 >= 108 +# define BOOST_PP_ITERATION_4 108 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 107 && BOOST_PP_ITERATION_START_4 >= 107 +# define BOOST_PP_ITERATION_4 107 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 106 && BOOST_PP_ITERATION_START_4 >= 106 +# define BOOST_PP_ITERATION_4 106 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 105 && BOOST_PP_ITERATION_START_4 >= 105 +# define BOOST_PP_ITERATION_4 105 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 104 && BOOST_PP_ITERATION_START_4 >= 104 +# define BOOST_PP_ITERATION_4 104 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 103 && BOOST_PP_ITERATION_START_4 >= 103 +# define BOOST_PP_ITERATION_4 103 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 102 && BOOST_PP_ITERATION_START_4 >= 102 +# define BOOST_PP_ITERATION_4 102 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 101 && BOOST_PP_ITERATION_START_4 >= 101 +# define BOOST_PP_ITERATION_4 101 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 100 && BOOST_PP_ITERATION_START_4 >= 100 +# define BOOST_PP_ITERATION_4 100 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 99 && BOOST_PP_ITERATION_START_4 >= 99 +# define BOOST_PP_ITERATION_4 99 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 98 && BOOST_PP_ITERATION_START_4 >= 98 +# define BOOST_PP_ITERATION_4 98 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 97 && BOOST_PP_ITERATION_START_4 >= 97 +# define BOOST_PP_ITERATION_4 97 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 96 && BOOST_PP_ITERATION_START_4 >= 96 +# define BOOST_PP_ITERATION_4 96 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 95 && BOOST_PP_ITERATION_START_4 >= 95 +# define BOOST_PP_ITERATION_4 95 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 94 && BOOST_PP_ITERATION_START_4 >= 94 +# define BOOST_PP_ITERATION_4 94 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 93 && BOOST_PP_ITERATION_START_4 >= 93 +# define BOOST_PP_ITERATION_4 93 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 92 && BOOST_PP_ITERATION_START_4 >= 92 +# define BOOST_PP_ITERATION_4 92 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 91 && BOOST_PP_ITERATION_START_4 >= 91 +# define BOOST_PP_ITERATION_4 91 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 90 && BOOST_PP_ITERATION_START_4 >= 90 +# define BOOST_PP_ITERATION_4 90 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 89 && BOOST_PP_ITERATION_START_4 >= 89 +# define BOOST_PP_ITERATION_4 89 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 88 && BOOST_PP_ITERATION_START_4 >= 88 +# define BOOST_PP_ITERATION_4 88 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 87 && BOOST_PP_ITERATION_START_4 >= 87 +# define BOOST_PP_ITERATION_4 87 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 86 && BOOST_PP_ITERATION_START_4 >= 86 +# define BOOST_PP_ITERATION_4 86 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 85 && BOOST_PP_ITERATION_START_4 >= 85 +# define BOOST_PP_ITERATION_4 85 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 84 && BOOST_PP_ITERATION_START_4 >= 84 +# define BOOST_PP_ITERATION_4 84 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 83 && BOOST_PP_ITERATION_START_4 >= 83 +# define BOOST_PP_ITERATION_4 83 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 82 && BOOST_PP_ITERATION_START_4 >= 82 +# define BOOST_PP_ITERATION_4 82 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 81 && BOOST_PP_ITERATION_START_4 >= 81 +# define BOOST_PP_ITERATION_4 81 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 80 && BOOST_PP_ITERATION_START_4 >= 80 +# define BOOST_PP_ITERATION_4 80 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 79 && BOOST_PP_ITERATION_START_4 >= 79 +# define BOOST_PP_ITERATION_4 79 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 78 && BOOST_PP_ITERATION_START_4 >= 78 +# define BOOST_PP_ITERATION_4 78 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 77 && BOOST_PP_ITERATION_START_4 >= 77 +# define BOOST_PP_ITERATION_4 77 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 76 && BOOST_PP_ITERATION_START_4 >= 76 +# define BOOST_PP_ITERATION_4 76 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 75 && BOOST_PP_ITERATION_START_4 >= 75 +# define BOOST_PP_ITERATION_4 75 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 74 && BOOST_PP_ITERATION_START_4 >= 74 +# define BOOST_PP_ITERATION_4 74 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 73 && BOOST_PP_ITERATION_START_4 >= 73 +# define BOOST_PP_ITERATION_4 73 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 72 && BOOST_PP_ITERATION_START_4 >= 72 +# define BOOST_PP_ITERATION_4 72 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 71 && BOOST_PP_ITERATION_START_4 >= 71 +# define BOOST_PP_ITERATION_4 71 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 70 && BOOST_PP_ITERATION_START_4 >= 70 +# define BOOST_PP_ITERATION_4 70 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 69 && BOOST_PP_ITERATION_START_4 >= 69 +# define BOOST_PP_ITERATION_4 69 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 68 && BOOST_PP_ITERATION_START_4 >= 68 +# define BOOST_PP_ITERATION_4 68 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 67 && BOOST_PP_ITERATION_START_4 >= 67 +# define BOOST_PP_ITERATION_4 67 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 66 && BOOST_PP_ITERATION_START_4 >= 66 +# define BOOST_PP_ITERATION_4 66 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 65 && BOOST_PP_ITERATION_START_4 >= 65 +# define BOOST_PP_ITERATION_4 65 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 64 && BOOST_PP_ITERATION_START_4 >= 64 +# define BOOST_PP_ITERATION_4 64 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 63 && BOOST_PP_ITERATION_START_4 >= 63 +# define BOOST_PP_ITERATION_4 63 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 62 && BOOST_PP_ITERATION_START_4 >= 62 +# define BOOST_PP_ITERATION_4 62 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 61 && BOOST_PP_ITERATION_START_4 >= 61 +# define BOOST_PP_ITERATION_4 61 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 60 && BOOST_PP_ITERATION_START_4 >= 60 +# define BOOST_PP_ITERATION_4 60 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 59 && BOOST_PP_ITERATION_START_4 >= 59 +# define BOOST_PP_ITERATION_4 59 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 58 && BOOST_PP_ITERATION_START_4 >= 58 +# define BOOST_PP_ITERATION_4 58 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 57 && BOOST_PP_ITERATION_START_4 >= 57 +# define BOOST_PP_ITERATION_4 57 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 56 && BOOST_PP_ITERATION_START_4 >= 56 +# define BOOST_PP_ITERATION_4 56 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 55 && BOOST_PP_ITERATION_START_4 >= 55 +# define BOOST_PP_ITERATION_4 55 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 54 && BOOST_PP_ITERATION_START_4 >= 54 +# define BOOST_PP_ITERATION_4 54 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 53 && BOOST_PP_ITERATION_START_4 >= 53 +# define BOOST_PP_ITERATION_4 53 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 52 && BOOST_PP_ITERATION_START_4 >= 52 +# define BOOST_PP_ITERATION_4 52 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 51 && BOOST_PP_ITERATION_START_4 >= 51 +# define BOOST_PP_ITERATION_4 51 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 50 && BOOST_PP_ITERATION_START_4 >= 50 +# define BOOST_PP_ITERATION_4 50 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 49 && BOOST_PP_ITERATION_START_4 >= 49 +# define BOOST_PP_ITERATION_4 49 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 48 && BOOST_PP_ITERATION_START_4 >= 48 +# define BOOST_PP_ITERATION_4 48 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 47 && BOOST_PP_ITERATION_START_4 >= 47 +# define BOOST_PP_ITERATION_4 47 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 46 && BOOST_PP_ITERATION_START_4 >= 46 +# define BOOST_PP_ITERATION_4 46 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 45 && BOOST_PP_ITERATION_START_4 >= 45 +# define BOOST_PP_ITERATION_4 45 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 44 && BOOST_PP_ITERATION_START_4 >= 44 +# define BOOST_PP_ITERATION_4 44 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 43 && BOOST_PP_ITERATION_START_4 >= 43 +# define BOOST_PP_ITERATION_4 43 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 42 && BOOST_PP_ITERATION_START_4 >= 42 +# define BOOST_PP_ITERATION_4 42 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 41 && BOOST_PP_ITERATION_START_4 >= 41 +# define BOOST_PP_ITERATION_4 41 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 40 && BOOST_PP_ITERATION_START_4 >= 40 +# define BOOST_PP_ITERATION_4 40 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 39 && BOOST_PP_ITERATION_START_4 >= 39 +# define BOOST_PP_ITERATION_4 39 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 38 && BOOST_PP_ITERATION_START_4 >= 38 +# define BOOST_PP_ITERATION_4 38 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 37 && BOOST_PP_ITERATION_START_4 >= 37 +# define BOOST_PP_ITERATION_4 37 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 36 && BOOST_PP_ITERATION_START_4 >= 36 +# define BOOST_PP_ITERATION_4 36 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 35 && BOOST_PP_ITERATION_START_4 >= 35 +# define BOOST_PP_ITERATION_4 35 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 34 && BOOST_PP_ITERATION_START_4 >= 34 +# define BOOST_PP_ITERATION_4 34 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 33 && BOOST_PP_ITERATION_START_4 >= 33 +# define BOOST_PP_ITERATION_4 33 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 32 && BOOST_PP_ITERATION_START_4 >= 32 +# define BOOST_PP_ITERATION_4 32 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 31 && BOOST_PP_ITERATION_START_4 >= 31 +# define BOOST_PP_ITERATION_4 31 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 30 && BOOST_PP_ITERATION_START_4 >= 30 +# define BOOST_PP_ITERATION_4 30 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 29 && BOOST_PP_ITERATION_START_4 >= 29 +# define BOOST_PP_ITERATION_4 29 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 28 && BOOST_PP_ITERATION_START_4 >= 28 +# define BOOST_PP_ITERATION_4 28 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 27 && BOOST_PP_ITERATION_START_4 >= 27 +# define BOOST_PP_ITERATION_4 27 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 26 && BOOST_PP_ITERATION_START_4 >= 26 +# define BOOST_PP_ITERATION_4 26 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 25 && BOOST_PP_ITERATION_START_4 >= 25 +# define BOOST_PP_ITERATION_4 25 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 24 && BOOST_PP_ITERATION_START_4 >= 24 +# define BOOST_PP_ITERATION_4 24 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 23 && BOOST_PP_ITERATION_START_4 >= 23 +# define BOOST_PP_ITERATION_4 23 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 22 && BOOST_PP_ITERATION_START_4 >= 22 +# define BOOST_PP_ITERATION_4 22 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 21 && BOOST_PP_ITERATION_START_4 >= 21 +# define BOOST_PP_ITERATION_4 21 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 20 && BOOST_PP_ITERATION_START_4 >= 20 +# define BOOST_PP_ITERATION_4 20 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 19 && BOOST_PP_ITERATION_START_4 >= 19 +# define BOOST_PP_ITERATION_4 19 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 18 && BOOST_PP_ITERATION_START_4 >= 18 +# define BOOST_PP_ITERATION_4 18 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 17 && BOOST_PP_ITERATION_START_4 >= 17 +# define BOOST_PP_ITERATION_4 17 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 16 && BOOST_PP_ITERATION_START_4 >= 16 +# define BOOST_PP_ITERATION_4 16 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 15 && BOOST_PP_ITERATION_START_4 >= 15 +# define BOOST_PP_ITERATION_4 15 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 14 && BOOST_PP_ITERATION_START_4 >= 14 +# define BOOST_PP_ITERATION_4 14 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 13 && BOOST_PP_ITERATION_START_4 >= 13 +# define BOOST_PP_ITERATION_4 13 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 12 && BOOST_PP_ITERATION_START_4 >= 12 +# define BOOST_PP_ITERATION_4 12 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 11 && BOOST_PP_ITERATION_START_4 >= 11 +# define BOOST_PP_ITERATION_4 11 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 10 && BOOST_PP_ITERATION_START_4 >= 10 +# define BOOST_PP_ITERATION_4 10 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 9 && BOOST_PP_ITERATION_START_4 >= 9 +# define BOOST_PP_ITERATION_4 9 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 8 && BOOST_PP_ITERATION_START_4 >= 8 +# define BOOST_PP_ITERATION_4 8 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 7 && BOOST_PP_ITERATION_START_4 >= 7 +# define BOOST_PP_ITERATION_4 7 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 6 && BOOST_PP_ITERATION_START_4 >= 6 +# define BOOST_PP_ITERATION_4 6 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 5 && BOOST_PP_ITERATION_START_4 >= 5 +# define BOOST_PP_ITERATION_4 5 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 4 && BOOST_PP_ITERATION_START_4 >= 4 +# define BOOST_PP_ITERATION_4 4 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 3 && BOOST_PP_ITERATION_START_4 >= 3 +# define BOOST_PP_ITERATION_4 3 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 2 && BOOST_PP_ITERATION_START_4 >= 2 +# define BOOST_PP_ITERATION_4 2 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 1 && BOOST_PP_ITERATION_START_4 >= 1 +# define BOOST_PP_ITERATION_4 1 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 0 && BOOST_PP_ITERATION_START_4 >= 0 +# define BOOST_PP_ITERATION_4 0 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse4_512.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse4_512.hpp new file mode 100644 index 000000000..9a4114335 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse4_512.hpp @@ -0,0 +1,1293 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_FINISH_4 <= 512 && BOOST_PP_ITERATION_START_4 >= 512 +# define BOOST_PP_ITERATION_4 512 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 511 && BOOST_PP_ITERATION_START_4 >= 511 +# define BOOST_PP_ITERATION_4 511 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 510 && BOOST_PP_ITERATION_START_4 >= 510 +# define BOOST_PP_ITERATION_4 510 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 509 && BOOST_PP_ITERATION_START_4 >= 509 +# define BOOST_PP_ITERATION_4 509 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 508 && BOOST_PP_ITERATION_START_4 >= 508 +# define BOOST_PP_ITERATION_4 508 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 507 && BOOST_PP_ITERATION_START_4 >= 507 +# define BOOST_PP_ITERATION_4 507 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 506 && BOOST_PP_ITERATION_START_4 >= 506 +# define BOOST_PP_ITERATION_4 506 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 505 && BOOST_PP_ITERATION_START_4 >= 505 +# define BOOST_PP_ITERATION_4 505 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 504 && BOOST_PP_ITERATION_START_4 >= 504 +# define BOOST_PP_ITERATION_4 504 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 503 && BOOST_PP_ITERATION_START_4 >= 503 +# define BOOST_PP_ITERATION_4 503 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 502 && BOOST_PP_ITERATION_START_4 >= 502 +# define BOOST_PP_ITERATION_4 502 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 501 && BOOST_PP_ITERATION_START_4 >= 501 +# define BOOST_PP_ITERATION_4 501 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 500 && BOOST_PP_ITERATION_START_4 >= 500 +# define BOOST_PP_ITERATION_4 500 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 499 && BOOST_PP_ITERATION_START_4 >= 499 +# define BOOST_PP_ITERATION_4 499 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 498 && BOOST_PP_ITERATION_START_4 >= 498 +# define BOOST_PP_ITERATION_4 498 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 497 && BOOST_PP_ITERATION_START_4 >= 497 +# define BOOST_PP_ITERATION_4 497 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 496 && BOOST_PP_ITERATION_START_4 >= 496 +# define BOOST_PP_ITERATION_4 496 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 495 && BOOST_PP_ITERATION_START_4 >= 495 +# define BOOST_PP_ITERATION_4 495 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 494 && BOOST_PP_ITERATION_START_4 >= 494 +# define BOOST_PP_ITERATION_4 494 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 493 && BOOST_PP_ITERATION_START_4 >= 493 +# define BOOST_PP_ITERATION_4 493 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 492 && BOOST_PP_ITERATION_START_4 >= 492 +# define BOOST_PP_ITERATION_4 492 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 491 && BOOST_PP_ITERATION_START_4 >= 491 +# define BOOST_PP_ITERATION_4 491 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 490 && BOOST_PP_ITERATION_START_4 >= 490 +# define BOOST_PP_ITERATION_4 490 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 489 && BOOST_PP_ITERATION_START_4 >= 489 +# define BOOST_PP_ITERATION_4 489 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 488 && BOOST_PP_ITERATION_START_4 >= 488 +# define BOOST_PP_ITERATION_4 488 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 487 && BOOST_PP_ITERATION_START_4 >= 487 +# define BOOST_PP_ITERATION_4 487 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 486 && BOOST_PP_ITERATION_START_4 >= 486 +# define BOOST_PP_ITERATION_4 486 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 485 && BOOST_PP_ITERATION_START_4 >= 485 +# define BOOST_PP_ITERATION_4 485 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 484 && BOOST_PP_ITERATION_START_4 >= 484 +# define BOOST_PP_ITERATION_4 484 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 483 && BOOST_PP_ITERATION_START_4 >= 483 +# define BOOST_PP_ITERATION_4 483 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 482 && BOOST_PP_ITERATION_START_4 >= 482 +# define BOOST_PP_ITERATION_4 482 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 481 && BOOST_PP_ITERATION_START_4 >= 481 +# define BOOST_PP_ITERATION_4 481 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 480 && BOOST_PP_ITERATION_START_4 >= 480 +# define BOOST_PP_ITERATION_4 480 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 479 && BOOST_PP_ITERATION_START_4 >= 479 +# define BOOST_PP_ITERATION_4 479 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 478 && BOOST_PP_ITERATION_START_4 >= 478 +# define BOOST_PP_ITERATION_4 478 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 477 && BOOST_PP_ITERATION_START_4 >= 477 +# define BOOST_PP_ITERATION_4 477 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 476 && BOOST_PP_ITERATION_START_4 >= 476 +# define BOOST_PP_ITERATION_4 476 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 475 && BOOST_PP_ITERATION_START_4 >= 475 +# define BOOST_PP_ITERATION_4 475 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 474 && BOOST_PP_ITERATION_START_4 >= 474 +# define BOOST_PP_ITERATION_4 474 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 473 && BOOST_PP_ITERATION_START_4 >= 473 +# define BOOST_PP_ITERATION_4 473 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 472 && BOOST_PP_ITERATION_START_4 >= 472 +# define BOOST_PP_ITERATION_4 472 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 471 && BOOST_PP_ITERATION_START_4 >= 471 +# define BOOST_PP_ITERATION_4 471 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 470 && BOOST_PP_ITERATION_START_4 >= 470 +# define BOOST_PP_ITERATION_4 470 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 469 && BOOST_PP_ITERATION_START_4 >= 469 +# define BOOST_PP_ITERATION_4 469 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 468 && BOOST_PP_ITERATION_START_4 >= 468 +# define BOOST_PP_ITERATION_4 468 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 467 && BOOST_PP_ITERATION_START_4 >= 467 +# define BOOST_PP_ITERATION_4 467 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 466 && BOOST_PP_ITERATION_START_4 >= 466 +# define BOOST_PP_ITERATION_4 466 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 465 && BOOST_PP_ITERATION_START_4 >= 465 +# define BOOST_PP_ITERATION_4 465 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 464 && BOOST_PP_ITERATION_START_4 >= 464 +# define BOOST_PP_ITERATION_4 464 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 463 && BOOST_PP_ITERATION_START_4 >= 463 +# define BOOST_PP_ITERATION_4 463 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 462 && BOOST_PP_ITERATION_START_4 >= 462 +# define BOOST_PP_ITERATION_4 462 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 461 && BOOST_PP_ITERATION_START_4 >= 461 +# define BOOST_PP_ITERATION_4 461 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 460 && BOOST_PP_ITERATION_START_4 >= 460 +# define BOOST_PP_ITERATION_4 460 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 459 && BOOST_PP_ITERATION_START_4 >= 459 +# define BOOST_PP_ITERATION_4 459 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 458 && BOOST_PP_ITERATION_START_4 >= 458 +# define BOOST_PP_ITERATION_4 458 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 457 && BOOST_PP_ITERATION_START_4 >= 457 +# define BOOST_PP_ITERATION_4 457 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 456 && BOOST_PP_ITERATION_START_4 >= 456 +# define BOOST_PP_ITERATION_4 456 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 455 && BOOST_PP_ITERATION_START_4 >= 455 +# define BOOST_PP_ITERATION_4 455 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 454 && BOOST_PP_ITERATION_START_4 >= 454 +# define BOOST_PP_ITERATION_4 454 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 453 && BOOST_PP_ITERATION_START_4 >= 453 +# define BOOST_PP_ITERATION_4 453 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 452 && BOOST_PP_ITERATION_START_4 >= 452 +# define BOOST_PP_ITERATION_4 452 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 451 && BOOST_PP_ITERATION_START_4 >= 451 +# define BOOST_PP_ITERATION_4 451 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 450 && BOOST_PP_ITERATION_START_4 >= 450 +# define BOOST_PP_ITERATION_4 450 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 449 && BOOST_PP_ITERATION_START_4 >= 449 +# define BOOST_PP_ITERATION_4 449 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 448 && BOOST_PP_ITERATION_START_4 >= 448 +# define BOOST_PP_ITERATION_4 448 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 447 && BOOST_PP_ITERATION_START_4 >= 447 +# define BOOST_PP_ITERATION_4 447 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 446 && BOOST_PP_ITERATION_START_4 >= 446 +# define BOOST_PP_ITERATION_4 446 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 445 && BOOST_PP_ITERATION_START_4 >= 445 +# define BOOST_PP_ITERATION_4 445 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 444 && BOOST_PP_ITERATION_START_4 >= 444 +# define BOOST_PP_ITERATION_4 444 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 443 && BOOST_PP_ITERATION_START_4 >= 443 +# define BOOST_PP_ITERATION_4 443 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 442 && BOOST_PP_ITERATION_START_4 >= 442 +# define BOOST_PP_ITERATION_4 442 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 441 && BOOST_PP_ITERATION_START_4 >= 441 +# define BOOST_PP_ITERATION_4 441 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 440 && BOOST_PP_ITERATION_START_4 >= 440 +# define BOOST_PP_ITERATION_4 440 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 439 && BOOST_PP_ITERATION_START_4 >= 439 +# define BOOST_PP_ITERATION_4 439 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 438 && BOOST_PP_ITERATION_START_4 >= 438 +# define BOOST_PP_ITERATION_4 438 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 437 && BOOST_PP_ITERATION_START_4 >= 437 +# define BOOST_PP_ITERATION_4 437 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 436 && BOOST_PP_ITERATION_START_4 >= 436 +# define BOOST_PP_ITERATION_4 436 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 435 && BOOST_PP_ITERATION_START_4 >= 435 +# define BOOST_PP_ITERATION_4 435 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 434 && BOOST_PP_ITERATION_START_4 >= 434 +# define BOOST_PP_ITERATION_4 434 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 433 && BOOST_PP_ITERATION_START_4 >= 433 +# define BOOST_PP_ITERATION_4 433 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 432 && BOOST_PP_ITERATION_START_4 >= 432 +# define BOOST_PP_ITERATION_4 432 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 431 && BOOST_PP_ITERATION_START_4 >= 431 +# define BOOST_PP_ITERATION_4 431 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 430 && BOOST_PP_ITERATION_START_4 >= 430 +# define BOOST_PP_ITERATION_4 430 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 429 && BOOST_PP_ITERATION_START_4 >= 429 +# define BOOST_PP_ITERATION_4 429 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 428 && BOOST_PP_ITERATION_START_4 >= 428 +# define BOOST_PP_ITERATION_4 428 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 427 && BOOST_PP_ITERATION_START_4 >= 427 +# define BOOST_PP_ITERATION_4 427 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 426 && BOOST_PP_ITERATION_START_4 >= 426 +# define BOOST_PP_ITERATION_4 426 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 425 && BOOST_PP_ITERATION_START_4 >= 425 +# define BOOST_PP_ITERATION_4 425 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 424 && BOOST_PP_ITERATION_START_4 >= 424 +# define BOOST_PP_ITERATION_4 424 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 423 && BOOST_PP_ITERATION_START_4 >= 423 +# define BOOST_PP_ITERATION_4 423 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 422 && BOOST_PP_ITERATION_START_4 >= 422 +# define BOOST_PP_ITERATION_4 422 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 421 && BOOST_PP_ITERATION_START_4 >= 421 +# define BOOST_PP_ITERATION_4 421 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 420 && BOOST_PP_ITERATION_START_4 >= 420 +# define BOOST_PP_ITERATION_4 420 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 419 && BOOST_PP_ITERATION_START_4 >= 419 +# define BOOST_PP_ITERATION_4 419 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 418 && BOOST_PP_ITERATION_START_4 >= 418 +# define BOOST_PP_ITERATION_4 418 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 417 && BOOST_PP_ITERATION_START_4 >= 417 +# define BOOST_PP_ITERATION_4 417 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 416 && BOOST_PP_ITERATION_START_4 >= 416 +# define BOOST_PP_ITERATION_4 416 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 415 && BOOST_PP_ITERATION_START_4 >= 415 +# define BOOST_PP_ITERATION_4 415 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 414 && BOOST_PP_ITERATION_START_4 >= 414 +# define BOOST_PP_ITERATION_4 414 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 413 && BOOST_PP_ITERATION_START_4 >= 413 +# define BOOST_PP_ITERATION_4 413 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 412 && BOOST_PP_ITERATION_START_4 >= 412 +# define BOOST_PP_ITERATION_4 412 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 411 && BOOST_PP_ITERATION_START_4 >= 411 +# define BOOST_PP_ITERATION_4 411 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 410 && BOOST_PP_ITERATION_START_4 >= 410 +# define BOOST_PP_ITERATION_4 410 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 409 && BOOST_PP_ITERATION_START_4 >= 409 +# define BOOST_PP_ITERATION_4 409 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 408 && BOOST_PP_ITERATION_START_4 >= 408 +# define BOOST_PP_ITERATION_4 408 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 407 && BOOST_PP_ITERATION_START_4 >= 407 +# define BOOST_PP_ITERATION_4 407 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 406 && BOOST_PP_ITERATION_START_4 >= 406 +# define BOOST_PP_ITERATION_4 406 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 405 && BOOST_PP_ITERATION_START_4 >= 405 +# define BOOST_PP_ITERATION_4 405 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 404 && BOOST_PP_ITERATION_START_4 >= 404 +# define BOOST_PP_ITERATION_4 404 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 403 && BOOST_PP_ITERATION_START_4 >= 403 +# define BOOST_PP_ITERATION_4 403 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 402 && BOOST_PP_ITERATION_START_4 >= 402 +# define BOOST_PP_ITERATION_4 402 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 401 && BOOST_PP_ITERATION_START_4 >= 401 +# define BOOST_PP_ITERATION_4 401 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 400 && BOOST_PP_ITERATION_START_4 >= 400 +# define BOOST_PP_ITERATION_4 400 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 399 && BOOST_PP_ITERATION_START_4 >= 399 +# define BOOST_PP_ITERATION_4 399 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 398 && BOOST_PP_ITERATION_START_4 >= 398 +# define BOOST_PP_ITERATION_4 398 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 397 && BOOST_PP_ITERATION_START_4 >= 397 +# define BOOST_PP_ITERATION_4 397 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 396 && BOOST_PP_ITERATION_START_4 >= 396 +# define BOOST_PP_ITERATION_4 396 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 395 && BOOST_PP_ITERATION_START_4 >= 395 +# define BOOST_PP_ITERATION_4 395 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 394 && BOOST_PP_ITERATION_START_4 >= 394 +# define BOOST_PP_ITERATION_4 394 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 393 && BOOST_PP_ITERATION_START_4 >= 393 +# define BOOST_PP_ITERATION_4 393 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 392 && BOOST_PP_ITERATION_START_4 >= 392 +# define BOOST_PP_ITERATION_4 392 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 391 && BOOST_PP_ITERATION_START_4 >= 391 +# define BOOST_PP_ITERATION_4 391 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 390 && BOOST_PP_ITERATION_START_4 >= 390 +# define BOOST_PP_ITERATION_4 390 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 389 && BOOST_PP_ITERATION_START_4 >= 389 +# define BOOST_PP_ITERATION_4 389 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 388 && BOOST_PP_ITERATION_START_4 >= 388 +# define BOOST_PP_ITERATION_4 388 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 387 && BOOST_PP_ITERATION_START_4 >= 387 +# define BOOST_PP_ITERATION_4 387 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 386 && BOOST_PP_ITERATION_START_4 >= 386 +# define BOOST_PP_ITERATION_4 386 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 385 && BOOST_PP_ITERATION_START_4 >= 385 +# define BOOST_PP_ITERATION_4 385 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 384 && BOOST_PP_ITERATION_START_4 >= 384 +# define BOOST_PP_ITERATION_4 384 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 383 && BOOST_PP_ITERATION_START_4 >= 383 +# define BOOST_PP_ITERATION_4 383 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 382 && BOOST_PP_ITERATION_START_4 >= 382 +# define BOOST_PP_ITERATION_4 382 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 381 && BOOST_PP_ITERATION_START_4 >= 381 +# define BOOST_PP_ITERATION_4 381 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 380 && BOOST_PP_ITERATION_START_4 >= 380 +# define BOOST_PP_ITERATION_4 380 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 379 && BOOST_PP_ITERATION_START_4 >= 379 +# define BOOST_PP_ITERATION_4 379 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 378 && BOOST_PP_ITERATION_START_4 >= 378 +# define BOOST_PP_ITERATION_4 378 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 377 && BOOST_PP_ITERATION_START_4 >= 377 +# define BOOST_PP_ITERATION_4 377 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 376 && BOOST_PP_ITERATION_START_4 >= 376 +# define BOOST_PP_ITERATION_4 376 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 375 && BOOST_PP_ITERATION_START_4 >= 375 +# define BOOST_PP_ITERATION_4 375 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 374 && BOOST_PP_ITERATION_START_4 >= 374 +# define BOOST_PP_ITERATION_4 374 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 373 && BOOST_PP_ITERATION_START_4 >= 373 +# define BOOST_PP_ITERATION_4 373 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 372 && BOOST_PP_ITERATION_START_4 >= 372 +# define BOOST_PP_ITERATION_4 372 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 371 && BOOST_PP_ITERATION_START_4 >= 371 +# define BOOST_PP_ITERATION_4 371 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 370 && BOOST_PP_ITERATION_START_4 >= 370 +# define BOOST_PP_ITERATION_4 370 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 369 && BOOST_PP_ITERATION_START_4 >= 369 +# define BOOST_PP_ITERATION_4 369 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 368 && BOOST_PP_ITERATION_START_4 >= 368 +# define BOOST_PP_ITERATION_4 368 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 367 && BOOST_PP_ITERATION_START_4 >= 367 +# define BOOST_PP_ITERATION_4 367 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 366 && BOOST_PP_ITERATION_START_4 >= 366 +# define BOOST_PP_ITERATION_4 366 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 365 && BOOST_PP_ITERATION_START_4 >= 365 +# define BOOST_PP_ITERATION_4 365 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 364 && BOOST_PP_ITERATION_START_4 >= 364 +# define BOOST_PP_ITERATION_4 364 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 363 && BOOST_PP_ITERATION_START_4 >= 363 +# define BOOST_PP_ITERATION_4 363 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 362 && BOOST_PP_ITERATION_START_4 >= 362 +# define BOOST_PP_ITERATION_4 362 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 361 && BOOST_PP_ITERATION_START_4 >= 361 +# define BOOST_PP_ITERATION_4 361 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 360 && BOOST_PP_ITERATION_START_4 >= 360 +# define BOOST_PP_ITERATION_4 360 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 359 && BOOST_PP_ITERATION_START_4 >= 359 +# define BOOST_PP_ITERATION_4 359 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 358 && BOOST_PP_ITERATION_START_4 >= 358 +# define BOOST_PP_ITERATION_4 358 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 357 && BOOST_PP_ITERATION_START_4 >= 357 +# define BOOST_PP_ITERATION_4 357 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 356 && BOOST_PP_ITERATION_START_4 >= 356 +# define BOOST_PP_ITERATION_4 356 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 355 && BOOST_PP_ITERATION_START_4 >= 355 +# define BOOST_PP_ITERATION_4 355 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 354 && BOOST_PP_ITERATION_START_4 >= 354 +# define BOOST_PP_ITERATION_4 354 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 353 && BOOST_PP_ITERATION_START_4 >= 353 +# define BOOST_PP_ITERATION_4 353 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 352 && BOOST_PP_ITERATION_START_4 >= 352 +# define BOOST_PP_ITERATION_4 352 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 351 && BOOST_PP_ITERATION_START_4 >= 351 +# define BOOST_PP_ITERATION_4 351 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 350 && BOOST_PP_ITERATION_START_4 >= 350 +# define BOOST_PP_ITERATION_4 350 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 349 && BOOST_PP_ITERATION_START_4 >= 349 +# define BOOST_PP_ITERATION_4 349 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 348 && BOOST_PP_ITERATION_START_4 >= 348 +# define BOOST_PP_ITERATION_4 348 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 347 && BOOST_PP_ITERATION_START_4 >= 347 +# define BOOST_PP_ITERATION_4 347 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 346 && BOOST_PP_ITERATION_START_4 >= 346 +# define BOOST_PP_ITERATION_4 346 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 345 && BOOST_PP_ITERATION_START_4 >= 345 +# define BOOST_PP_ITERATION_4 345 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 344 && BOOST_PP_ITERATION_START_4 >= 344 +# define BOOST_PP_ITERATION_4 344 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 343 && BOOST_PP_ITERATION_START_4 >= 343 +# define BOOST_PP_ITERATION_4 343 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 342 && BOOST_PP_ITERATION_START_4 >= 342 +# define BOOST_PP_ITERATION_4 342 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 341 && BOOST_PP_ITERATION_START_4 >= 341 +# define BOOST_PP_ITERATION_4 341 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 340 && BOOST_PP_ITERATION_START_4 >= 340 +# define BOOST_PP_ITERATION_4 340 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 339 && BOOST_PP_ITERATION_START_4 >= 339 +# define BOOST_PP_ITERATION_4 339 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 338 && BOOST_PP_ITERATION_START_4 >= 338 +# define BOOST_PP_ITERATION_4 338 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 337 && BOOST_PP_ITERATION_START_4 >= 337 +# define BOOST_PP_ITERATION_4 337 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 336 && BOOST_PP_ITERATION_START_4 >= 336 +# define BOOST_PP_ITERATION_4 336 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 335 && BOOST_PP_ITERATION_START_4 >= 335 +# define BOOST_PP_ITERATION_4 335 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 334 && BOOST_PP_ITERATION_START_4 >= 334 +# define BOOST_PP_ITERATION_4 334 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 333 && BOOST_PP_ITERATION_START_4 >= 333 +# define BOOST_PP_ITERATION_4 333 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 332 && BOOST_PP_ITERATION_START_4 >= 332 +# define BOOST_PP_ITERATION_4 332 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 331 && BOOST_PP_ITERATION_START_4 >= 331 +# define BOOST_PP_ITERATION_4 331 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 330 && BOOST_PP_ITERATION_START_4 >= 330 +# define BOOST_PP_ITERATION_4 330 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 329 && BOOST_PP_ITERATION_START_4 >= 329 +# define BOOST_PP_ITERATION_4 329 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 328 && BOOST_PP_ITERATION_START_4 >= 328 +# define BOOST_PP_ITERATION_4 328 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 327 && BOOST_PP_ITERATION_START_4 >= 327 +# define BOOST_PP_ITERATION_4 327 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 326 && BOOST_PP_ITERATION_START_4 >= 326 +# define BOOST_PP_ITERATION_4 326 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 325 && BOOST_PP_ITERATION_START_4 >= 325 +# define BOOST_PP_ITERATION_4 325 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 324 && BOOST_PP_ITERATION_START_4 >= 324 +# define BOOST_PP_ITERATION_4 324 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 323 && BOOST_PP_ITERATION_START_4 >= 323 +# define BOOST_PP_ITERATION_4 323 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 322 && BOOST_PP_ITERATION_START_4 >= 322 +# define BOOST_PP_ITERATION_4 322 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 321 && BOOST_PP_ITERATION_START_4 >= 321 +# define BOOST_PP_ITERATION_4 321 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 320 && BOOST_PP_ITERATION_START_4 >= 320 +# define BOOST_PP_ITERATION_4 320 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 319 && BOOST_PP_ITERATION_START_4 >= 319 +# define BOOST_PP_ITERATION_4 319 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 318 && BOOST_PP_ITERATION_START_4 >= 318 +# define BOOST_PP_ITERATION_4 318 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 317 && BOOST_PP_ITERATION_START_4 >= 317 +# define BOOST_PP_ITERATION_4 317 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 316 && BOOST_PP_ITERATION_START_4 >= 316 +# define BOOST_PP_ITERATION_4 316 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 315 && BOOST_PP_ITERATION_START_4 >= 315 +# define BOOST_PP_ITERATION_4 315 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 314 && BOOST_PP_ITERATION_START_4 >= 314 +# define BOOST_PP_ITERATION_4 314 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 313 && BOOST_PP_ITERATION_START_4 >= 313 +# define BOOST_PP_ITERATION_4 313 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 312 && BOOST_PP_ITERATION_START_4 >= 312 +# define BOOST_PP_ITERATION_4 312 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 311 && BOOST_PP_ITERATION_START_4 >= 311 +# define BOOST_PP_ITERATION_4 311 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 310 && BOOST_PP_ITERATION_START_4 >= 310 +# define BOOST_PP_ITERATION_4 310 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 309 && BOOST_PP_ITERATION_START_4 >= 309 +# define BOOST_PP_ITERATION_4 309 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 308 && BOOST_PP_ITERATION_START_4 >= 308 +# define BOOST_PP_ITERATION_4 308 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 307 && BOOST_PP_ITERATION_START_4 >= 307 +# define BOOST_PP_ITERATION_4 307 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 306 && BOOST_PP_ITERATION_START_4 >= 306 +# define BOOST_PP_ITERATION_4 306 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 305 && BOOST_PP_ITERATION_START_4 >= 305 +# define BOOST_PP_ITERATION_4 305 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 304 && BOOST_PP_ITERATION_START_4 >= 304 +# define BOOST_PP_ITERATION_4 304 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 303 && BOOST_PP_ITERATION_START_4 >= 303 +# define BOOST_PP_ITERATION_4 303 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 302 && BOOST_PP_ITERATION_START_4 >= 302 +# define BOOST_PP_ITERATION_4 302 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 301 && BOOST_PP_ITERATION_START_4 >= 301 +# define BOOST_PP_ITERATION_4 301 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 300 && BOOST_PP_ITERATION_START_4 >= 300 +# define BOOST_PP_ITERATION_4 300 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 299 && BOOST_PP_ITERATION_START_4 >= 299 +# define BOOST_PP_ITERATION_4 299 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 298 && BOOST_PP_ITERATION_START_4 >= 298 +# define BOOST_PP_ITERATION_4 298 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 297 && BOOST_PP_ITERATION_START_4 >= 297 +# define BOOST_PP_ITERATION_4 297 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 296 && BOOST_PP_ITERATION_START_4 >= 296 +# define BOOST_PP_ITERATION_4 296 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 295 && BOOST_PP_ITERATION_START_4 >= 295 +# define BOOST_PP_ITERATION_4 295 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 294 && BOOST_PP_ITERATION_START_4 >= 294 +# define BOOST_PP_ITERATION_4 294 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 293 && BOOST_PP_ITERATION_START_4 >= 293 +# define BOOST_PP_ITERATION_4 293 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 292 && BOOST_PP_ITERATION_START_4 >= 292 +# define BOOST_PP_ITERATION_4 292 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 291 && BOOST_PP_ITERATION_START_4 >= 291 +# define BOOST_PP_ITERATION_4 291 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 290 && BOOST_PP_ITERATION_START_4 >= 290 +# define BOOST_PP_ITERATION_4 290 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 289 && BOOST_PP_ITERATION_START_4 >= 289 +# define BOOST_PP_ITERATION_4 289 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 288 && BOOST_PP_ITERATION_START_4 >= 288 +# define BOOST_PP_ITERATION_4 288 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 287 && BOOST_PP_ITERATION_START_4 >= 287 +# define BOOST_PP_ITERATION_4 287 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 286 && BOOST_PP_ITERATION_START_4 >= 286 +# define BOOST_PP_ITERATION_4 286 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 285 && BOOST_PP_ITERATION_START_4 >= 285 +# define BOOST_PP_ITERATION_4 285 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 284 && BOOST_PP_ITERATION_START_4 >= 284 +# define BOOST_PP_ITERATION_4 284 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 283 && BOOST_PP_ITERATION_START_4 >= 283 +# define BOOST_PP_ITERATION_4 283 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 282 && BOOST_PP_ITERATION_START_4 >= 282 +# define BOOST_PP_ITERATION_4 282 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 281 && BOOST_PP_ITERATION_START_4 >= 281 +# define BOOST_PP_ITERATION_4 281 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 280 && BOOST_PP_ITERATION_START_4 >= 280 +# define BOOST_PP_ITERATION_4 280 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 279 && BOOST_PP_ITERATION_START_4 >= 279 +# define BOOST_PP_ITERATION_4 279 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 278 && BOOST_PP_ITERATION_START_4 >= 278 +# define BOOST_PP_ITERATION_4 278 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 277 && BOOST_PP_ITERATION_START_4 >= 277 +# define BOOST_PP_ITERATION_4 277 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 276 && BOOST_PP_ITERATION_START_4 >= 276 +# define BOOST_PP_ITERATION_4 276 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 275 && BOOST_PP_ITERATION_START_4 >= 275 +# define BOOST_PP_ITERATION_4 275 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 274 && BOOST_PP_ITERATION_START_4 >= 274 +# define BOOST_PP_ITERATION_4 274 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 273 && BOOST_PP_ITERATION_START_4 >= 273 +# define BOOST_PP_ITERATION_4 273 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 272 && BOOST_PP_ITERATION_START_4 >= 272 +# define BOOST_PP_ITERATION_4 272 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 271 && BOOST_PP_ITERATION_START_4 >= 271 +# define BOOST_PP_ITERATION_4 271 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 270 && BOOST_PP_ITERATION_START_4 >= 270 +# define BOOST_PP_ITERATION_4 270 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 269 && BOOST_PP_ITERATION_START_4 >= 269 +# define BOOST_PP_ITERATION_4 269 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 268 && BOOST_PP_ITERATION_START_4 >= 268 +# define BOOST_PP_ITERATION_4 268 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 267 && BOOST_PP_ITERATION_START_4 >= 267 +# define BOOST_PP_ITERATION_4 267 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 266 && BOOST_PP_ITERATION_START_4 >= 266 +# define BOOST_PP_ITERATION_4 266 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 265 && BOOST_PP_ITERATION_START_4 >= 265 +# define BOOST_PP_ITERATION_4 265 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 264 && BOOST_PP_ITERATION_START_4 >= 264 +# define BOOST_PP_ITERATION_4 264 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 263 && BOOST_PP_ITERATION_START_4 >= 263 +# define BOOST_PP_ITERATION_4 263 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 262 && BOOST_PP_ITERATION_START_4 >= 262 +# define BOOST_PP_ITERATION_4 262 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 261 && BOOST_PP_ITERATION_START_4 >= 261 +# define BOOST_PP_ITERATION_4 261 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 260 && BOOST_PP_ITERATION_START_4 >= 260 +# define BOOST_PP_ITERATION_4 260 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 259 && BOOST_PP_ITERATION_START_4 >= 259 +# define BOOST_PP_ITERATION_4 259 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 258 && BOOST_PP_ITERATION_START_4 >= 258 +# define BOOST_PP_ITERATION_4 258 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif +# if BOOST_PP_ITERATION_FINISH_4 <= 257 && BOOST_PP_ITERATION_START_4 >= 257 +# define BOOST_PP_ITERATION_4 257 +# include BOOST_PP_FILENAME_4 +# undef BOOST_PP_ITERATION_4 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse5_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse5_1024.hpp new file mode 100644 index 000000000..f9e3c4647 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse5_1024.hpp @@ -0,0 +1,2571 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * Distributed under the Boost Software License, Version 1.0. (See +# * accompanying file LICENSE_5_0.txt or copy at +# * http://www.boost.org/LICENSE_5_0.txt) +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_FINISH_5 <= 1024 && BOOST_PP_ITERATION_START_5 >= 1024 +# define BOOST_PP_ITERATION_5 1024 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1023 && BOOST_PP_ITERATION_START_5 >= 1023 +# define BOOST_PP_ITERATION_5 1023 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1022 && BOOST_PP_ITERATION_START_5 >= 1022 +# define BOOST_PP_ITERATION_5 1022 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1021 && BOOST_PP_ITERATION_START_5 >= 1021 +# define BOOST_PP_ITERATION_5 1021 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1020 && BOOST_PP_ITERATION_START_5 >= 1020 +# define BOOST_PP_ITERATION_5 1020 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1019 && BOOST_PP_ITERATION_START_5 >= 1019 +# define BOOST_PP_ITERATION_5 1019 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1018 && BOOST_PP_ITERATION_START_5 >= 1018 +# define BOOST_PP_ITERATION_5 1018 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1017 && BOOST_PP_ITERATION_START_5 >= 1017 +# define BOOST_PP_ITERATION_5 1017 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1016 && BOOST_PP_ITERATION_START_5 >= 1016 +# define BOOST_PP_ITERATION_5 1016 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1015 && BOOST_PP_ITERATION_START_5 >= 1015 +# define BOOST_PP_ITERATION_5 1015 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1014 && BOOST_PP_ITERATION_START_5 >= 1014 +# define BOOST_PP_ITERATION_5 1014 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1013 && BOOST_PP_ITERATION_START_5 >= 1013 +# define BOOST_PP_ITERATION_5 1013 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1012 && BOOST_PP_ITERATION_START_5 >= 1012 +# define BOOST_PP_ITERATION_5 1012 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1011 && BOOST_PP_ITERATION_START_5 >= 1011 +# define BOOST_PP_ITERATION_5 1011 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1010 && BOOST_PP_ITERATION_START_5 >= 1010 +# define BOOST_PP_ITERATION_5 1010 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1009 && BOOST_PP_ITERATION_START_5 >= 1009 +# define BOOST_PP_ITERATION_5 1009 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1008 && BOOST_PP_ITERATION_START_5 >= 1008 +# define BOOST_PP_ITERATION_5 1008 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1007 && BOOST_PP_ITERATION_START_5 >= 1007 +# define BOOST_PP_ITERATION_5 1007 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1006 && BOOST_PP_ITERATION_START_5 >= 1006 +# define BOOST_PP_ITERATION_5 1006 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1005 && BOOST_PP_ITERATION_START_5 >= 1005 +# define BOOST_PP_ITERATION_5 1005 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1004 && BOOST_PP_ITERATION_START_5 >= 1004 +# define BOOST_PP_ITERATION_5 1004 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1003 && BOOST_PP_ITERATION_START_5 >= 1003 +# define BOOST_PP_ITERATION_5 1003 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1002 && BOOST_PP_ITERATION_START_5 >= 1002 +# define BOOST_PP_ITERATION_5 1002 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1001 && BOOST_PP_ITERATION_START_5 >= 1001 +# define BOOST_PP_ITERATION_5 1001 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1000 && BOOST_PP_ITERATION_START_5 >= 1000 +# define BOOST_PP_ITERATION_5 1000 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 999 && BOOST_PP_ITERATION_START_5 >= 999 +# define BOOST_PP_ITERATION_5 999 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 998 && BOOST_PP_ITERATION_START_5 >= 998 +# define BOOST_PP_ITERATION_5 998 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 997 && BOOST_PP_ITERATION_START_5 >= 997 +# define BOOST_PP_ITERATION_5 997 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 996 && BOOST_PP_ITERATION_START_5 >= 996 +# define BOOST_PP_ITERATION_5 996 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 995 && BOOST_PP_ITERATION_START_5 >= 995 +# define BOOST_PP_ITERATION_5 995 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 994 && BOOST_PP_ITERATION_START_5 >= 994 +# define BOOST_PP_ITERATION_5 994 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 993 && BOOST_PP_ITERATION_START_5 >= 993 +# define BOOST_PP_ITERATION_5 993 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 992 && BOOST_PP_ITERATION_START_5 >= 992 +# define BOOST_PP_ITERATION_5 992 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 991 && BOOST_PP_ITERATION_START_5 >= 991 +# define BOOST_PP_ITERATION_5 991 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 990 && BOOST_PP_ITERATION_START_5 >= 990 +# define BOOST_PP_ITERATION_5 990 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 989 && BOOST_PP_ITERATION_START_5 >= 989 +# define BOOST_PP_ITERATION_5 989 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 988 && BOOST_PP_ITERATION_START_5 >= 988 +# define BOOST_PP_ITERATION_5 988 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 987 && BOOST_PP_ITERATION_START_5 >= 987 +# define BOOST_PP_ITERATION_5 987 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 986 && BOOST_PP_ITERATION_START_5 >= 986 +# define BOOST_PP_ITERATION_5 986 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 985 && BOOST_PP_ITERATION_START_5 >= 985 +# define BOOST_PP_ITERATION_5 985 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 984 && BOOST_PP_ITERATION_START_5 >= 984 +# define BOOST_PP_ITERATION_5 984 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 983 && BOOST_PP_ITERATION_START_5 >= 983 +# define BOOST_PP_ITERATION_5 983 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 982 && BOOST_PP_ITERATION_START_5 >= 982 +# define BOOST_PP_ITERATION_5 982 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 981 && BOOST_PP_ITERATION_START_5 >= 981 +# define BOOST_PP_ITERATION_5 981 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 980 && BOOST_PP_ITERATION_START_5 >= 980 +# define BOOST_PP_ITERATION_5 980 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 979 && BOOST_PP_ITERATION_START_5 >= 979 +# define BOOST_PP_ITERATION_5 979 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 978 && BOOST_PP_ITERATION_START_5 >= 978 +# define BOOST_PP_ITERATION_5 978 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 977 && BOOST_PP_ITERATION_START_5 >= 977 +# define BOOST_PP_ITERATION_5 977 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 976 && BOOST_PP_ITERATION_START_5 >= 976 +# define BOOST_PP_ITERATION_5 976 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 975 && BOOST_PP_ITERATION_START_5 >= 975 +# define BOOST_PP_ITERATION_5 975 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 974 && BOOST_PP_ITERATION_START_5 >= 974 +# define BOOST_PP_ITERATION_5 974 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 973 && BOOST_PP_ITERATION_START_5 >= 973 +# define BOOST_PP_ITERATION_5 973 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 972 && BOOST_PP_ITERATION_START_5 >= 972 +# define BOOST_PP_ITERATION_5 972 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 971 && BOOST_PP_ITERATION_START_5 >= 971 +# define BOOST_PP_ITERATION_5 971 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 970 && BOOST_PP_ITERATION_START_5 >= 970 +# define BOOST_PP_ITERATION_5 970 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 969 && BOOST_PP_ITERATION_START_5 >= 969 +# define BOOST_PP_ITERATION_5 969 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 968 && BOOST_PP_ITERATION_START_5 >= 968 +# define BOOST_PP_ITERATION_5 968 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 967 && BOOST_PP_ITERATION_START_5 >= 967 +# define BOOST_PP_ITERATION_5 967 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 966 && BOOST_PP_ITERATION_START_5 >= 966 +# define BOOST_PP_ITERATION_5 966 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 965 && BOOST_PP_ITERATION_START_5 >= 965 +# define BOOST_PP_ITERATION_5 965 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 964 && BOOST_PP_ITERATION_START_5 >= 964 +# define BOOST_PP_ITERATION_5 964 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 963 && BOOST_PP_ITERATION_START_5 >= 963 +# define BOOST_PP_ITERATION_5 963 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 962 && BOOST_PP_ITERATION_START_5 >= 962 +# define BOOST_PP_ITERATION_5 962 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 961 && BOOST_PP_ITERATION_START_5 >= 961 +# define BOOST_PP_ITERATION_5 961 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 960 && BOOST_PP_ITERATION_START_5 >= 960 +# define BOOST_PP_ITERATION_5 960 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 959 && BOOST_PP_ITERATION_START_5 >= 959 +# define BOOST_PP_ITERATION_5 959 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 958 && BOOST_PP_ITERATION_START_5 >= 958 +# define BOOST_PP_ITERATION_5 958 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 957 && BOOST_PP_ITERATION_START_5 >= 957 +# define BOOST_PP_ITERATION_5 957 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 956 && BOOST_PP_ITERATION_START_5 >= 956 +# define BOOST_PP_ITERATION_5 956 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 955 && BOOST_PP_ITERATION_START_5 >= 955 +# define BOOST_PP_ITERATION_5 955 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 954 && BOOST_PP_ITERATION_START_5 >= 954 +# define BOOST_PP_ITERATION_5 954 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 953 && BOOST_PP_ITERATION_START_5 >= 953 +# define BOOST_PP_ITERATION_5 953 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 952 && BOOST_PP_ITERATION_START_5 >= 952 +# define BOOST_PP_ITERATION_5 952 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 951 && BOOST_PP_ITERATION_START_5 >= 951 +# define BOOST_PP_ITERATION_5 951 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 950 && BOOST_PP_ITERATION_START_5 >= 950 +# define BOOST_PP_ITERATION_5 950 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 949 && BOOST_PP_ITERATION_START_5 >= 949 +# define BOOST_PP_ITERATION_5 949 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 948 && BOOST_PP_ITERATION_START_5 >= 948 +# define BOOST_PP_ITERATION_5 948 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 947 && BOOST_PP_ITERATION_START_5 >= 947 +# define BOOST_PP_ITERATION_5 947 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 946 && BOOST_PP_ITERATION_START_5 >= 946 +# define BOOST_PP_ITERATION_5 946 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 945 && BOOST_PP_ITERATION_START_5 >= 945 +# define BOOST_PP_ITERATION_5 945 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 944 && BOOST_PP_ITERATION_START_5 >= 944 +# define BOOST_PP_ITERATION_5 944 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 943 && BOOST_PP_ITERATION_START_5 >= 943 +# define BOOST_PP_ITERATION_5 943 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 942 && BOOST_PP_ITERATION_START_5 >= 942 +# define BOOST_PP_ITERATION_5 942 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 941 && BOOST_PP_ITERATION_START_5 >= 941 +# define BOOST_PP_ITERATION_5 941 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 940 && BOOST_PP_ITERATION_START_5 >= 940 +# define BOOST_PP_ITERATION_5 940 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 939 && BOOST_PP_ITERATION_START_5 >= 939 +# define BOOST_PP_ITERATION_5 939 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 938 && BOOST_PP_ITERATION_START_5 >= 938 +# define BOOST_PP_ITERATION_5 938 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 937 && BOOST_PP_ITERATION_START_5 >= 937 +# define BOOST_PP_ITERATION_5 937 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 936 && BOOST_PP_ITERATION_START_5 >= 936 +# define BOOST_PP_ITERATION_5 936 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 935 && BOOST_PP_ITERATION_START_5 >= 935 +# define BOOST_PP_ITERATION_5 935 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 934 && BOOST_PP_ITERATION_START_5 >= 934 +# define BOOST_PP_ITERATION_5 934 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 933 && BOOST_PP_ITERATION_START_5 >= 933 +# define BOOST_PP_ITERATION_5 933 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 932 && BOOST_PP_ITERATION_START_5 >= 932 +# define BOOST_PP_ITERATION_5 932 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 931 && BOOST_PP_ITERATION_START_5 >= 931 +# define BOOST_PP_ITERATION_5 931 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 930 && BOOST_PP_ITERATION_START_5 >= 930 +# define BOOST_PP_ITERATION_5 930 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 929 && BOOST_PP_ITERATION_START_5 >= 929 +# define BOOST_PP_ITERATION_5 929 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 928 && BOOST_PP_ITERATION_START_5 >= 928 +# define BOOST_PP_ITERATION_5 928 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 927 && BOOST_PP_ITERATION_START_5 >= 927 +# define BOOST_PP_ITERATION_5 927 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 926 && BOOST_PP_ITERATION_START_5 >= 926 +# define BOOST_PP_ITERATION_5 926 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 925 && BOOST_PP_ITERATION_START_5 >= 925 +# define BOOST_PP_ITERATION_5 925 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 924 && BOOST_PP_ITERATION_START_5 >= 924 +# define BOOST_PP_ITERATION_5 924 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 923 && BOOST_PP_ITERATION_START_5 >= 923 +# define BOOST_PP_ITERATION_5 923 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 922 && BOOST_PP_ITERATION_START_5 >= 922 +# define BOOST_PP_ITERATION_5 922 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 921 && BOOST_PP_ITERATION_START_5 >= 921 +# define BOOST_PP_ITERATION_5 921 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 920 && BOOST_PP_ITERATION_START_5 >= 920 +# define BOOST_PP_ITERATION_5 920 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 919 && BOOST_PP_ITERATION_START_5 >= 919 +# define BOOST_PP_ITERATION_5 919 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 918 && BOOST_PP_ITERATION_START_5 >= 918 +# define BOOST_PP_ITERATION_5 918 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 917 && BOOST_PP_ITERATION_START_5 >= 917 +# define BOOST_PP_ITERATION_5 917 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 916 && BOOST_PP_ITERATION_START_5 >= 916 +# define BOOST_PP_ITERATION_5 916 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 915 && BOOST_PP_ITERATION_START_5 >= 915 +# define BOOST_PP_ITERATION_5 915 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 914 && BOOST_PP_ITERATION_START_5 >= 914 +# define BOOST_PP_ITERATION_5 914 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 913 && BOOST_PP_ITERATION_START_5 >= 913 +# define BOOST_PP_ITERATION_5 913 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 912 && BOOST_PP_ITERATION_START_5 >= 912 +# define BOOST_PP_ITERATION_5 912 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 911 && BOOST_PP_ITERATION_START_5 >= 911 +# define BOOST_PP_ITERATION_5 911 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 910 && BOOST_PP_ITERATION_START_5 >= 910 +# define BOOST_PP_ITERATION_5 910 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 909 && BOOST_PP_ITERATION_START_5 >= 909 +# define BOOST_PP_ITERATION_5 909 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 908 && BOOST_PP_ITERATION_START_5 >= 908 +# define BOOST_PP_ITERATION_5 908 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 907 && BOOST_PP_ITERATION_START_5 >= 907 +# define BOOST_PP_ITERATION_5 907 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 906 && BOOST_PP_ITERATION_START_5 >= 906 +# define BOOST_PP_ITERATION_5 906 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 905 && BOOST_PP_ITERATION_START_5 >= 905 +# define BOOST_PP_ITERATION_5 905 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 904 && BOOST_PP_ITERATION_START_5 >= 904 +# define BOOST_PP_ITERATION_5 904 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 903 && BOOST_PP_ITERATION_START_5 >= 903 +# define BOOST_PP_ITERATION_5 903 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 902 && BOOST_PP_ITERATION_START_5 >= 902 +# define BOOST_PP_ITERATION_5 902 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 901 && BOOST_PP_ITERATION_START_5 >= 901 +# define BOOST_PP_ITERATION_5 901 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 900 && BOOST_PP_ITERATION_START_5 >= 900 +# define BOOST_PP_ITERATION_5 900 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 899 && BOOST_PP_ITERATION_START_5 >= 899 +# define BOOST_PP_ITERATION_5 899 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 898 && BOOST_PP_ITERATION_START_5 >= 898 +# define BOOST_PP_ITERATION_5 898 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 897 && BOOST_PP_ITERATION_START_5 >= 897 +# define BOOST_PP_ITERATION_5 897 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 896 && BOOST_PP_ITERATION_START_5 >= 896 +# define BOOST_PP_ITERATION_5 896 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 895 && BOOST_PP_ITERATION_START_5 >= 895 +# define BOOST_PP_ITERATION_5 895 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 894 && BOOST_PP_ITERATION_START_5 >= 894 +# define BOOST_PP_ITERATION_5 894 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 893 && BOOST_PP_ITERATION_START_5 >= 893 +# define BOOST_PP_ITERATION_5 893 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 892 && BOOST_PP_ITERATION_START_5 >= 892 +# define BOOST_PP_ITERATION_5 892 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 891 && BOOST_PP_ITERATION_START_5 >= 891 +# define BOOST_PP_ITERATION_5 891 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 890 && BOOST_PP_ITERATION_START_5 >= 890 +# define BOOST_PP_ITERATION_5 890 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 889 && BOOST_PP_ITERATION_START_5 >= 889 +# define BOOST_PP_ITERATION_5 889 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 888 && BOOST_PP_ITERATION_START_5 >= 888 +# define BOOST_PP_ITERATION_5 888 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 887 && BOOST_PP_ITERATION_START_5 >= 887 +# define BOOST_PP_ITERATION_5 887 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 886 && BOOST_PP_ITERATION_START_5 >= 886 +# define BOOST_PP_ITERATION_5 886 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 885 && BOOST_PP_ITERATION_START_5 >= 885 +# define BOOST_PP_ITERATION_5 885 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 884 && BOOST_PP_ITERATION_START_5 >= 884 +# define BOOST_PP_ITERATION_5 884 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 883 && BOOST_PP_ITERATION_START_5 >= 883 +# define BOOST_PP_ITERATION_5 883 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 882 && BOOST_PP_ITERATION_START_5 >= 882 +# define BOOST_PP_ITERATION_5 882 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 881 && BOOST_PP_ITERATION_START_5 >= 881 +# define BOOST_PP_ITERATION_5 881 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 880 && BOOST_PP_ITERATION_START_5 >= 880 +# define BOOST_PP_ITERATION_5 880 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 879 && BOOST_PP_ITERATION_START_5 >= 879 +# define BOOST_PP_ITERATION_5 879 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 878 && BOOST_PP_ITERATION_START_5 >= 878 +# define BOOST_PP_ITERATION_5 878 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 877 && BOOST_PP_ITERATION_START_5 >= 877 +# define BOOST_PP_ITERATION_5 877 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 876 && BOOST_PP_ITERATION_START_5 >= 876 +# define BOOST_PP_ITERATION_5 876 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 875 && BOOST_PP_ITERATION_START_5 >= 875 +# define BOOST_PP_ITERATION_5 875 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 874 && BOOST_PP_ITERATION_START_5 >= 874 +# define BOOST_PP_ITERATION_5 874 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 873 && BOOST_PP_ITERATION_START_5 >= 873 +# define BOOST_PP_ITERATION_5 873 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 872 && BOOST_PP_ITERATION_START_5 >= 872 +# define BOOST_PP_ITERATION_5 872 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 871 && BOOST_PP_ITERATION_START_5 >= 871 +# define BOOST_PP_ITERATION_5 871 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 870 && BOOST_PP_ITERATION_START_5 >= 870 +# define BOOST_PP_ITERATION_5 870 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 869 && BOOST_PP_ITERATION_START_5 >= 869 +# define BOOST_PP_ITERATION_5 869 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 868 && BOOST_PP_ITERATION_START_5 >= 868 +# define BOOST_PP_ITERATION_5 868 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 867 && BOOST_PP_ITERATION_START_5 >= 867 +# define BOOST_PP_ITERATION_5 867 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 866 && BOOST_PP_ITERATION_START_5 >= 866 +# define BOOST_PP_ITERATION_5 866 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 865 && BOOST_PP_ITERATION_START_5 >= 865 +# define BOOST_PP_ITERATION_5 865 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 864 && BOOST_PP_ITERATION_START_5 >= 864 +# define BOOST_PP_ITERATION_5 864 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 863 && BOOST_PP_ITERATION_START_5 >= 863 +# define BOOST_PP_ITERATION_5 863 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 862 && BOOST_PP_ITERATION_START_5 >= 862 +# define BOOST_PP_ITERATION_5 862 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 861 && BOOST_PP_ITERATION_START_5 >= 861 +# define BOOST_PP_ITERATION_5 861 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 860 && BOOST_PP_ITERATION_START_5 >= 860 +# define BOOST_PP_ITERATION_5 860 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 859 && BOOST_PP_ITERATION_START_5 >= 859 +# define BOOST_PP_ITERATION_5 859 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 858 && BOOST_PP_ITERATION_START_5 >= 858 +# define BOOST_PP_ITERATION_5 858 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 857 && BOOST_PP_ITERATION_START_5 >= 857 +# define BOOST_PP_ITERATION_5 857 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 856 && BOOST_PP_ITERATION_START_5 >= 856 +# define BOOST_PP_ITERATION_5 856 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 855 && BOOST_PP_ITERATION_START_5 >= 855 +# define BOOST_PP_ITERATION_5 855 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 854 && BOOST_PP_ITERATION_START_5 >= 854 +# define BOOST_PP_ITERATION_5 854 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 853 && BOOST_PP_ITERATION_START_5 >= 853 +# define BOOST_PP_ITERATION_5 853 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 852 && BOOST_PP_ITERATION_START_5 >= 852 +# define BOOST_PP_ITERATION_5 852 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 851 && BOOST_PP_ITERATION_START_5 >= 851 +# define BOOST_PP_ITERATION_5 851 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 850 && BOOST_PP_ITERATION_START_5 >= 850 +# define BOOST_PP_ITERATION_5 850 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 849 && BOOST_PP_ITERATION_START_5 >= 849 +# define BOOST_PP_ITERATION_5 849 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 848 && BOOST_PP_ITERATION_START_5 >= 848 +# define BOOST_PP_ITERATION_5 848 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 847 && BOOST_PP_ITERATION_START_5 >= 847 +# define BOOST_PP_ITERATION_5 847 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 846 && BOOST_PP_ITERATION_START_5 >= 846 +# define BOOST_PP_ITERATION_5 846 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 845 && BOOST_PP_ITERATION_START_5 >= 845 +# define BOOST_PP_ITERATION_5 845 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 844 && BOOST_PP_ITERATION_START_5 >= 844 +# define BOOST_PP_ITERATION_5 844 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 843 && BOOST_PP_ITERATION_START_5 >= 843 +# define BOOST_PP_ITERATION_5 843 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 842 && BOOST_PP_ITERATION_START_5 >= 842 +# define BOOST_PP_ITERATION_5 842 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 841 && BOOST_PP_ITERATION_START_5 >= 841 +# define BOOST_PP_ITERATION_5 841 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 840 && BOOST_PP_ITERATION_START_5 >= 840 +# define BOOST_PP_ITERATION_5 840 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 839 && BOOST_PP_ITERATION_START_5 >= 839 +# define BOOST_PP_ITERATION_5 839 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 838 && BOOST_PP_ITERATION_START_5 >= 838 +# define BOOST_PP_ITERATION_5 838 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 837 && BOOST_PP_ITERATION_START_5 >= 837 +# define BOOST_PP_ITERATION_5 837 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 836 && BOOST_PP_ITERATION_START_5 >= 836 +# define BOOST_PP_ITERATION_5 836 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 835 && BOOST_PP_ITERATION_START_5 >= 835 +# define BOOST_PP_ITERATION_5 835 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 834 && BOOST_PP_ITERATION_START_5 >= 834 +# define BOOST_PP_ITERATION_5 834 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 833 && BOOST_PP_ITERATION_START_5 >= 833 +# define BOOST_PP_ITERATION_5 833 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 832 && BOOST_PP_ITERATION_START_5 >= 832 +# define BOOST_PP_ITERATION_5 832 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 831 && BOOST_PP_ITERATION_START_5 >= 831 +# define BOOST_PP_ITERATION_5 831 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 830 && BOOST_PP_ITERATION_START_5 >= 830 +# define BOOST_PP_ITERATION_5 830 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 829 && BOOST_PP_ITERATION_START_5 >= 829 +# define BOOST_PP_ITERATION_5 829 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 828 && BOOST_PP_ITERATION_START_5 >= 828 +# define BOOST_PP_ITERATION_5 828 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 827 && BOOST_PP_ITERATION_START_5 >= 827 +# define BOOST_PP_ITERATION_5 827 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 826 && BOOST_PP_ITERATION_START_5 >= 826 +# define BOOST_PP_ITERATION_5 826 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 825 && BOOST_PP_ITERATION_START_5 >= 825 +# define BOOST_PP_ITERATION_5 825 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 824 && BOOST_PP_ITERATION_START_5 >= 824 +# define BOOST_PP_ITERATION_5 824 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 823 && BOOST_PP_ITERATION_START_5 >= 823 +# define BOOST_PP_ITERATION_5 823 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 822 && BOOST_PP_ITERATION_START_5 >= 822 +# define BOOST_PP_ITERATION_5 822 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 821 && BOOST_PP_ITERATION_START_5 >= 821 +# define BOOST_PP_ITERATION_5 821 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 820 && BOOST_PP_ITERATION_START_5 >= 820 +# define BOOST_PP_ITERATION_5 820 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 819 && BOOST_PP_ITERATION_START_5 >= 819 +# define BOOST_PP_ITERATION_5 819 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 818 && BOOST_PP_ITERATION_START_5 >= 818 +# define BOOST_PP_ITERATION_5 818 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 817 && BOOST_PP_ITERATION_START_5 >= 817 +# define BOOST_PP_ITERATION_5 817 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 816 && BOOST_PP_ITERATION_START_5 >= 816 +# define BOOST_PP_ITERATION_5 816 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 815 && BOOST_PP_ITERATION_START_5 >= 815 +# define BOOST_PP_ITERATION_5 815 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 814 && BOOST_PP_ITERATION_START_5 >= 814 +# define BOOST_PP_ITERATION_5 814 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 813 && BOOST_PP_ITERATION_START_5 >= 813 +# define BOOST_PP_ITERATION_5 813 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 812 && BOOST_PP_ITERATION_START_5 >= 812 +# define BOOST_PP_ITERATION_5 812 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 811 && BOOST_PP_ITERATION_START_5 >= 811 +# define BOOST_PP_ITERATION_5 811 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 810 && BOOST_PP_ITERATION_START_5 >= 810 +# define BOOST_PP_ITERATION_5 810 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 809 && BOOST_PP_ITERATION_START_5 >= 809 +# define BOOST_PP_ITERATION_5 809 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 808 && BOOST_PP_ITERATION_START_5 >= 808 +# define BOOST_PP_ITERATION_5 808 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 807 && BOOST_PP_ITERATION_START_5 >= 807 +# define BOOST_PP_ITERATION_5 807 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 806 && BOOST_PP_ITERATION_START_5 >= 806 +# define BOOST_PP_ITERATION_5 806 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 805 && BOOST_PP_ITERATION_START_5 >= 805 +# define BOOST_PP_ITERATION_5 805 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 804 && BOOST_PP_ITERATION_START_5 >= 804 +# define BOOST_PP_ITERATION_5 804 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 803 && BOOST_PP_ITERATION_START_5 >= 803 +# define BOOST_PP_ITERATION_5 803 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 802 && BOOST_PP_ITERATION_START_5 >= 802 +# define BOOST_PP_ITERATION_5 802 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 801 && BOOST_PP_ITERATION_START_5 >= 801 +# define BOOST_PP_ITERATION_5 801 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 800 && BOOST_PP_ITERATION_START_5 >= 800 +# define BOOST_PP_ITERATION_5 800 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 799 && BOOST_PP_ITERATION_START_5 >= 799 +# define BOOST_PP_ITERATION_5 799 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 798 && BOOST_PP_ITERATION_START_5 >= 798 +# define BOOST_PP_ITERATION_5 798 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 797 && BOOST_PP_ITERATION_START_5 >= 797 +# define BOOST_PP_ITERATION_5 797 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 796 && BOOST_PP_ITERATION_START_5 >= 796 +# define BOOST_PP_ITERATION_5 796 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 795 && BOOST_PP_ITERATION_START_5 >= 795 +# define BOOST_PP_ITERATION_5 795 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 794 && BOOST_PP_ITERATION_START_5 >= 794 +# define BOOST_PP_ITERATION_5 794 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 793 && BOOST_PP_ITERATION_START_5 >= 793 +# define BOOST_PP_ITERATION_5 793 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 792 && BOOST_PP_ITERATION_START_5 >= 792 +# define BOOST_PP_ITERATION_5 792 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 791 && BOOST_PP_ITERATION_START_5 >= 791 +# define BOOST_PP_ITERATION_5 791 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 790 && BOOST_PP_ITERATION_START_5 >= 790 +# define BOOST_PP_ITERATION_5 790 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 789 && BOOST_PP_ITERATION_START_5 >= 789 +# define BOOST_PP_ITERATION_5 789 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 788 && BOOST_PP_ITERATION_START_5 >= 788 +# define BOOST_PP_ITERATION_5 788 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 787 && BOOST_PP_ITERATION_START_5 >= 787 +# define BOOST_PP_ITERATION_5 787 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 786 && BOOST_PP_ITERATION_START_5 >= 786 +# define BOOST_PP_ITERATION_5 786 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 785 && BOOST_PP_ITERATION_START_5 >= 785 +# define BOOST_PP_ITERATION_5 785 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 784 && BOOST_PP_ITERATION_START_5 >= 784 +# define BOOST_PP_ITERATION_5 784 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 783 && BOOST_PP_ITERATION_START_5 >= 783 +# define BOOST_PP_ITERATION_5 783 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 782 && BOOST_PP_ITERATION_START_5 >= 782 +# define BOOST_PP_ITERATION_5 782 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 781 && BOOST_PP_ITERATION_START_5 >= 781 +# define BOOST_PP_ITERATION_5 781 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 780 && BOOST_PP_ITERATION_START_5 >= 780 +# define BOOST_PP_ITERATION_5 780 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 779 && BOOST_PP_ITERATION_START_5 >= 779 +# define BOOST_PP_ITERATION_5 779 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 778 && BOOST_PP_ITERATION_START_5 >= 778 +# define BOOST_PP_ITERATION_5 778 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 777 && BOOST_PP_ITERATION_START_5 >= 777 +# define BOOST_PP_ITERATION_5 777 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 776 && BOOST_PP_ITERATION_START_5 >= 776 +# define BOOST_PP_ITERATION_5 776 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 775 && BOOST_PP_ITERATION_START_5 >= 775 +# define BOOST_PP_ITERATION_5 775 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 774 && BOOST_PP_ITERATION_START_5 >= 774 +# define BOOST_PP_ITERATION_5 774 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 773 && BOOST_PP_ITERATION_START_5 >= 773 +# define BOOST_PP_ITERATION_5 773 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 772 && BOOST_PP_ITERATION_START_5 >= 772 +# define BOOST_PP_ITERATION_5 772 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 771 && BOOST_PP_ITERATION_START_5 >= 771 +# define BOOST_PP_ITERATION_5 771 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 770 && BOOST_PP_ITERATION_START_5 >= 770 +# define BOOST_PP_ITERATION_5 770 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 769 && BOOST_PP_ITERATION_START_5 >= 769 +# define BOOST_PP_ITERATION_5 769 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 768 && BOOST_PP_ITERATION_START_5 >= 768 +# define BOOST_PP_ITERATION_5 768 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 767 && BOOST_PP_ITERATION_START_5 >= 767 +# define BOOST_PP_ITERATION_5 767 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 766 && BOOST_PP_ITERATION_START_5 >= 766 +# define BOOST_PP_ITERATION_5 766 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 765 && BOOST_PP_ITERATION_START_5 >= 765 +# define BOOST_PP_ITERATION_5 765 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 764 && BOOST_PP_ITERATION_START_5 >= 764 +# define BOOST_PP_ITERATION_5 764 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 763 && BOOST_PP_ITERATION_START_5 >= 763 +# define BOOST_PP_ITERATION_5 763 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 762 && BOOST_PP_ITERATION_START_5 >= 762 +# define BOOST_PP_ITERATION_5 762 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 761 && BOOST_PP_ITERATION_START_5 >= 761 +# define BOOST_PP_ITERATION_5 761 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 760 && BOOST_PP_ITERATION_START_5 >= 760 +# define BOOST_PP_ITERATION_5 760 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 759 && BOOST_PP_ITERATION_START_5 >= 759 +# define BOOST_PP_ITERATION_5 759 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 758 && BOOST_PP_ITERATION_START_5 >= 758 +# define BOOST_PP_ITERATION_5 758 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 757 && BOOST_PP_ITERATION_START_5 >= 757 +# define BOOST_PP_ITERATION_5 757 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 756 && BOOST_PP_ITERATION_START_5 >= 756 +# define BOOST_PP_ITERATION_5 756 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 755 && BOOST_PP_ITERATION_START_5 >= 755 +# define BOOST_PP_ITERATION_5 755 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 754 && BOOST_PP_ITERATION_START_5 >= 754 +# define BOOST_PP_ITERATION_5 754 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 753 && BOOST_PP_ITERATION_START_5 >= 753 +# define BOOST_PP_ITERATION_5 753 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 752 && BOOST_PP_ITERATION_START_5 >= 752 +# define BOOST_PP_ITERATION_5 752 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 751 && BOOST_PP_ITERATION_START_5 >= 751 +# define BOOST_PP_ITERATION_5 751 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 750 && BOOST_PP_ITERATION_START_5 >= 750 +# define BOOST_PP_ITERATION_5 750 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 749 && BOOST_PP_ITERATION_START_5 >= 749 +# define BOOST_PP_ITERATION_5 749 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 748 && BOOST_PP_ITERATION_START_5 >= 748 +# define BOOST_PP_ITERATION_5 748 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 747 && BOOST_PP_ITERATION_START_5 >= 747 +# define BOOST_PP_ITERATION_5 747 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 746 && BOOST_PP_ITERATION_START_5 >= 746 +# define BOOST_PP_ITERATION_5 746 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 745 && BOOST_PP_ITERATION_START_5 >= 745 +# define BOOST_PP_ITERATION_5 745 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 744 && BOOST_PP_ITERATION_START_5 >= 744 +# define BOOST_PP_ITERATION_5 744 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 743 && BOOST_PP_ITERATION_START_5 >= 743 +# define BOOST_PP_ITERATION_5 743 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 742 && BOOST_PP_ITERATION_START_5 >= 742 +# define BOOST_PP_ITERATION_5 742 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 741 && BOOST_PP_ITERATION_START_5 >= 741 +# define BOOST_PP_ITERATION_5 741 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 740 && BOOST_PP_ITERATION_START_5 >= 740 +# define BOOST_PP_ITERATION_5 740 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 739 && BOOST_PP_ITERATION_START_5 >= 739 +# define BOOST_PP_ITERATION_5 739 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 738 && BOOST_PP_ITERATION_START_5 >= 738 +# define BOOST_PP_ITERATION_5 738 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 737 && BOOST_PP_ITERATION_START_5 >= 737 +# define BOOST_PP_ITERATION_5 737 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 736 && BOOST_PP_ITERATION_START_5 >= 736 +# define BOOST_PP_ITERATION_5 736 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 735 && BOOST_PP_ITERATION_START_5 >= 735 +# define BOOST_PP_ITERATION_5 735 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 734 && BOOST_PP_ITERATION_START_5 >= 734 +# define BOOST_PP_ITERATION_5 734 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 733 && BOOST_PP_ITERATION_START_5 >= 733 +# define BOOST_PP_ITERATION_5 733 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 732 && BOOST_PP_ITERATION_START_5 >= 732 +# define BOOST_PP_ITERATION_5 732 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 731 && BOOST_PP_ITERATION_START_5 >= 731 +# define BOOST_PP_ITERATION_5 731 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 730 && BOOST_PP_ITERATION_START_5 >= 730 +# define BOOST_PP_ITERATION_5 730 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 729 && BOOST_PP_ITERATION_START_5 >= 729 +# define BOOST_PP_ITERATION_5 729 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 728 && BOOST_PP_ITERATION_START_5 >= 728 +# define BOOST_PP_ITERATION_5 728 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 727 && BOOST_PP_ITERATION_START_5 >= 727 +# define BOOST_PP_ITERATION_5 727 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 726 && BOOST_PP_ITERATION_START_5 >= 726 +# define BOOST_PP_ITERATION_5 726 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 725 && BOOST_PP_ITERATION_START_5 >= 725 +# define BOOST_PP_ITERATION_5 725 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 724 && BOOST_PP_ITERATION_START_5 >= 724 +# define BOOST_PP_ITERATION_5 724 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 723 && BOOST_PP_ITERATION_START_5 >= 723 +# define BOOST_PP_ITERATION_5 723 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 722 && BOOST_PP_ITERATION_START_5 >= 722 +# define BOOST_PP_ITERATION_5 722 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 721 && BOOST_PP_ITERATION_START_5 >= 721 +# define BOOST_PP_ITERATION_5 721 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 720 && BOOST_PP_ITERATION_START_5 >= 720 +# define BOOST_PP_ITERATION_5 720 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 719 && BOOST_PP_ITERATION_START_5 >= 719 +# define BOOST_PP_ITERATION_5 719 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 718 && BOOST_PP_ITERATION_START_5 >= 718 +# define BOOST_PP_ITERATION_5 718 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 717 && BOOST_PP_ITERATION_START_5 >= 717 +# define BOOST_PP_ITERATION_5 717 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 716 && BOOST_PP_ITERATION_START_5 >= 716 +# define BOOST_PP_ITERATION_5 716 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 715 && BOOST_PP_ITERATION_START_5 >= 715 +# define BOOST_PP_ITERATION_5 715 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 714 && BOOST_PP_ITERATION_START_5 >= 714 +# define BOOST_PP_ITERATION_5 714 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 713 && BOOST_PP_ITERATION_START_5 >= 713 +# define BOOST_PP_ITERATION_5 713 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 712 && BOOST_PP_ITERATION_START_5 >= 712 +# define BOOST_PP_ITERATION_5 712 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 711 && BOOST_PP_ITERATION_START_5 >= 711 +# define BOOST_PP_ITERATION_5 711 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 710 && BOOST_PP_ITERATION_START_5 >= 710 +# define BOOST_PP_ITERATION_5 710 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 709 && BOOST_PP_ITERATION_START_5 >= 709 +# define BOOST_PP_ITERATION_5 709 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 708 && BOOST_PP_ITERATION_START_5 >= 708 +# define BOOST_PP_ITERATION_5 708 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 707 && BOOST_PP_ITERATION_START_5 >= 707 +# define BOOST_PP_ITERATION_5 707 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 706 && BOOST_PP_ITERATION_START_5 >= 706 +# define BOOST_PP_ITERATION_5 706 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 705 && BOOST_PP_ITERATION_START_5 >= 705 +# define BOOST_PP_ITERATION_5 705 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 704 && BOOST_PP_ITERATION_START_5 >= 704 +# define BOOST_PP_ITERATION_5 704 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 703 && BOOST_PP_ITERATION_START_5 >= 703 +# define BOOST_PP_ITERATION_5 703 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 702 && BOOST_PP_ITERATION_START_5 >= 702 +# define BOOST_PP_ITERATION_5 702 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 701 && BOOST_PP_ITERATION_START_5 >= 701 +# define BOOST_PP_ITERATION_5 701 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 700 && BOOST_PP_ITERATION_START_5 >= 700 +# define BOOST_PP_ITERATION_5 700 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 699 && BOOST_PP_ITERATION_START_5 >= 699 +# define BOOST_PP_ITERATION_5 699 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 698 && BOOST_PP_ITERATION_START_5 >= 698 +# define BOOST_PP_ITERATION_5 698 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 697 && BOOST_PP_ITERATION_START_5 >= 697 +# define BOOST_PP_ITERATION_5 697 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 696 && BOOST_PP_ITERATION_START_5 >= 696 +# define BOOST_PP_ITERATION_5 696 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 695 && BOOST_PP_ITERATION_START_5 >= 695 +# define BOOST_PP_ITERATION_5 695 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 694 && BOOST_PP_ITERATION_START_5 >= 694 +# define BOOST_PP_ITERATION_5 694 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 693 && BOOST_PP_ITERATION_START_5 >= 693 +# define BOOST_PP_ITERATION_5 693 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 692 && BOOST_PP_ITERATION_START_5 >= 692 +# define BOOST_PP_ITERATION_5 692 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 691 && BOOST_PP_ITERATION_START_5 >= 691 +# define BOOST_PP_ITERATION_5 691 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 690 && BOOST_PP_ITERATION_START_5 >= 690 +# define BOOST_PP_ITERATION_5 690 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 689 && BOOST_PP_ITERATION_START_5 >= 689 +# define BOOST_PP_ITERATION_5 689 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 688 && BOOST_PP_ITERATION_START_5 >= 688 +# define BOOST_PP_ITERATION_5 688 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 687 && BOOST_PP_ITERATION_START_5 >= 687 +# define BOOST_PP_ITERATION_5 687 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 686 && BOOST_PP_ITERATION_START_5 >= 686 +# define BOOST_PP_ITERATION_5 686 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 685 && BOOST_PP_ITERATION_START_5 >= 685 +# define BOOST_PP_ITERATION_5 685 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 684 && BOOST_PP_ITERATION_START_5 >= 684 +# define BOOST_PP_ITERATION_5 684 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 683 && BOOST_PP_ITERATION_START_5 >= 683 +# define BOOST_PP_ITERATION_5 683 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 682 && BOOST_PP_ITERATION_START_5 >= 682 +# define BOOST_PP_ITERATION_5 682 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 681 && BOOST_PP_ITERATION_START_5 >= 681 +# define BOOST_PP_ITERATION_5 681 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 680 && BOOST_PP_ITERATION_START_5 >= 680 +# define BOOST_PP_ITERATION_5 680 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 679 && BOOST_PP_ITERATION_START_5 >= 679 +# define BOOST_PP_ITERATION_5 679 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 678 && BOOST_PP_ITERATION_START_5 >= 678 +# define BOOST_PP_ITERATION_5 678 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 677 && BOOST_PP_ITERATION_START_5 >= 677 +# define BOOST_PP_ITERATION_5 677 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 676 && BOOST_PP_ITERATION_START_5 >= 676 +# define BOOST_PP_ITERATION_5 676 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 675 && BOOST_PP_ITERATION_START_5 >= 675 +# define BOOST_PP_ITERATION_5 675 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 674 && BOOST_PP_ITERATION_START_5 >= 674 +# define BOOST_PP_ITERATION_5 674 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 673 && BOOST_PP_ITERATION_START_5 >= 673 +# define BOOST_PP_ITERATION_5 673 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 672 && BOOST_PP_ITERATION_START_5 >= 672 +# define BOOST_PP_ITERATION_5 672 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 671 && BOOST_PP_ITERATION_START_5 >= 671 +# define BOOST_PP_ITERATION_5 671 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 670 && BOOST_PP_ITERATION_START_5 >= 670 +# define BOOST_PP_ITERATION_5 670 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 669 && BOOST_PP_ITERATION_START_5 >= 669 +# define BOOST_PP_ITERATION_5 669 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 668 && BOOST_PP_ITERATION_START_5 >= 668 +# define BOOST_PP_ITERATION_5 668 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 667 && BOOST_PP_ITERATION_START_5 >= 667 +# define BOOST_PP_ITERATION_5 667 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 666 && BOOST_PP_ITERATION_START_5 >= 666 +# define BOOST_PP_ITERATION_5 666 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 665 && BOOST_PP_ITERATION_START_5 >= 665 +# define BOOST_PP_ITERATION_5 665 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 664 && BOOST_PP_ITERATION_START_5 >= 664 +# define BOOST_PP_ITERATION_5 664 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 663 && BOOST_PP_ITERATION_START_5 >= 663 +# define BOOST_PP_ITERATION_5 663 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 662 && BOOST_PP_ITERATION_START_5 >= 662 +# define BOOST_PP_ITERATION_5 662 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 661 && BOOST_PP_ITERATION_START_5 >= 661 +# define BOOST_PP_ITERATION_5 661 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 660 && BOOST_PP_ITERATION_START_5 >= 660 +# define BOOST_PP_ITERATION_5 660 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 659 && BOOST_PP_ITERATION_START_5 >= 659 +# define BOOST_PP_ITERATION_5 659 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 658 && BOOST_PP_ITERATION_START_5 >= 658 +# define BOOST_PP_ITERATION_5 658 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 657 && BOOST_PP_ITERATION_START_5 >= 657 +# define BOOST_PP_ITERATION_5 657 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 656 && BOOST_PP_ITERATION_START_5 >= 656 +# define BOOST_PP_ITERATION_5 656 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 655 && BOOST_PP_ITERATION_START_5 >= 655 +# define BOOST_PP_ITERATION_5 655 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 654 && BOOST_PP_ITERATION_START_5 >= 654 +# define BOOST_PP_ITERATION_5 654 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 653 && BOOST_PP_ITERATION_START_5 >= 653 +# define BOOST_PP_ITERATION_5 653 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 652 && BOOST_PP_ITERATION_START_5 >= 652 +# define BOOST_PP_ITERATION_5 652 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 651 && BOOST_PP_ITERATION_START_5 >= 651 +# define BOOST_PP_ITERATION_5 651 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 650 && BOOST_PP_ITERATION_START_5 >= 650 +# define BOOST_PP_ITERATION_5 650 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 649 && BOOST_PP_ITERATION_START_5 >= 649 +# define BOOST_PP_ITERATION_5 649 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 648 && BOOST_PP_ITERATION_START_5 >= 648 +# define BOOST_PP_ITERATION_5 648 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 647 && BOOST_PP_ITERATION_START_5 >= 647 +# define BOOST_PP_ITERATION_5 647 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 646 && BOOST_PP_ITERATION_START_5 >= 646 +# define BOOST_PP_ITERATION_5 646 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 645 && BOOST_PP_ITERATION_START_5 >= 645 +# define BOOST_PP_ITERATION_5 645 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 644 && BOOST_PP_ITERATION_START_5 >= 644 +# define BOOST_PP_ITERATION_5 644 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 643 && BOOST_PP_ITERATION_START_5 >= 643 +# define BOOST_PP_ITERATION_5 643 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 642 && BOOST_PP_ITERATION_START_5 >= 642 +# define BOOST_PP_ITERATION_5 642 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 641 && BOOST_PP_ITERATION_START_5 >= 641 +# define BOOST_PP_ITERATION_5 641 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 640 && BOOST_PP_ITERATION_START_5 >= 640 +# define BOOST_PP_ITERATION_5 640 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 639 && BOOST_PP_ITERATION_START_5 >= 639 +# define BOOST_PP_ITERATION_5 639 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 638 && BOOST_PP_ITERATION_START_5 >= 638 +# define BOOST_PP_ITERATION_5 638 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 637 && BOOST_PP_ITERATION_START_5 >= 637 +# define BOOST_PP_ITERATION_5 637 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 636 && BOOST_PP_ITERATION_START_5 >= 636 +# define BOOST_PP_ITERATION_5 636 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 635 && BOOST_PP_ITERATION_START_5 >= 635 +# define BOOST_PP_ITERATION_5 635 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 634 && BOOST_PP_ITERATION_START_5 >= 634 +# define BOOST_PP_ITERATION_5 634 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 633 && BOOST_PP_ITERATION_START_5 >= 633 +# define BOOST_PP_ITERATION_5 633 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 632 && BOOST_PP_ITERATION_START_5 >= 632 +# define BOOST_PP_ITERATION_5 632 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 631 && BOOST_PP_ITERATION_START_5 >= 631 +# define BOOST_PP_ITERATION_5 631 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 630 && BOOST_PP_ITERATION_START_5 >= 630 +# define BOOST_PP_ITERATION_5 630 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 629 && BOOST_PP_ITERATION_START_5 >= 629 +# define BOOST_PP_ITERATION_5 629 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 628 && BOOST_PP_ITERATION_START_5 >= 628 +# define BOOST_PP_ITERATION_5 628 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 627 && BOOST_PP_ITERATION_START_5 >= 627 +# define BOOST_PP_ITERATION_5 627 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 626 && BOOST_PP_ITERATION_START_5 >= 626 +# define BOOST_PP_ITERATION_5 626 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 625 && BOOST_PP_ITERATION_START_5 >= 625 +# define BOOST_PP_ITERATION_5 625 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 624 && BOOST_PP_ITERATION_START_5 >= 624 +# define BOOST_PP_ITERATION_5 624 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 623 && BOOST_PP_ITERATION_START_5 >= 623 +# define BOOST_PP_ITERATION_5 623 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 622 && BOOST_PP_ITERATION_START_5 >= 622 +# define BOOST_PP_ITERATION_5 622 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 621 && BOOST_PP_ITERATION_START_5 >= 621 +# define BOOST_PP_ITERATION_5 621 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 620 && BOOST_PP_ITERATION_START_5 >= 620 +# define BOOST_PP_ITERATION_5 620 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 619 && BOOST_PP_ITERATION_START_5 >= 619 +# define BOOST_PP_ITERATION_5 619 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 618 && BOOST_PP_ITERATION_START_5 >= 618 +# define BOOST_PP_ITERATION_5 618 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 617 && BOOST_PP_ITERATION_START_5 >= 617 +# define BOOST_PP_ITERATION_5 617 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 616 && BOOST_PP_ITERATION_START_5 >= 616 +# define BOOST_PP_ITERATION_5 616 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 615 && BOOST_PP_ITERATION_START_5 >= 615 +# define BOOST_PP_ITERATION_5 615 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 614 && BOOST_PP_ITERATION_START_5 >= 614 +# define BOOST_PP_ITERATION_5 614 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 613 && BOOST_PP_ITERATION_START_5 >= 613 +# define BOOST_PP_ITERATION_5 613 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 612 && BOOST_PP_ITERATION_START_5 >= 612 +# define BOOST_PP_ITERATION_5 612 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 611 && BOOST_PP_ITERATION_START_5 >= 611 +# define BOOST_PP_ITERATION_5 611 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 610 && BOOST_PP_ITERATION_START_5 >= 610 +# define BOOST_PP_ITERATION_5 610 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 609 && BOOST_PP_ITERATION_START_5 >= 609 +# define BOOST_PP_ITERATION_5 609 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 608 && BOOST_PP_ITERATION_START_5 >= 608 +# define BOOST_PP_ITERATION_5 608 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 607 && BOOST_PP_ITERATION_START_5 >= 607 +# define BOOST_PP_ITERATION_5 607 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 606 && BOOST_PP_ITERATION_START_5 >= 606 +# define BOOST_PP_ITERATION_5 606 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 605 && BOOST_PP_ITERATION_START_5 >= 605 +# define BOOST_PP_ITERATION_5 605 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 604 && BOOST_PP_ITERATION_START_5 >= 604 +# define BOOST_PP_ITERATION_5 604 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 603 && BOOST_PP_ITERATION_START_5 >= 603 +# define BOOST_PP_ITERATION_5 603 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 602 && BOOST_PP_ITERATION_START_5 >= 602 +# define BOOST_PP_ITERATION_5 602 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 601 && BOOST_PP_ITERATION_START_5 >= 601 +# define BOOST_PP_ITERATION_5 601 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 600 && BOOST_PP_ITERATION_START_5 >= 600 +# define BOOST_PP_ITERATION_5 600 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 599 && BOOST_PP_ITERATION_START_5 >= 599 +# define BOOST_PP_ITERATION_5 599 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 598 && BOOST_PP_ITERATION_START_5 >= 598 +# define BOOST_PP_ITERATION_5 598 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 597 && BOOST_PP_ITERATION_START_5 >= 597 +# define BOOST_PP_ITERATION_5 597 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 596 && BOOST_PP_ITERATION_START_5 >= 596 +# define BOOST_PP_ITERATION_5 596 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 595 && BOOST_PP_ITERATION_START_5 >= 595 +# define BOOST_PP_ITERATION_5 595 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 594 && BOOST_PP_ITERATION_START_5 >= 594 +# define BOOST_PP_ITERATION_5 594 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 593 && BOOST_PP_ITERATION_START_5 >= 593 +# define BOOST_PP_ITERATION_5 593 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 592 && BOOST_PP_ITERATION_START_5 >= 592 +# define BOOST_PP_ITERATION_5 592 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 591 && BOOST_PP_ITERATION_START_5 >= 591 +# define BOOST_PP_ITERATION_5 591 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 590 && BOOST_PP_ITERATION_START_5 >= 590 +# define BOOST_PP_ITERATION_5 590 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 589 && BOOST_PP_ITERATION_START_5 >= 589 +# define BOOST_PP_ITERATION_5 589 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 588 && BOOST_PP_ITERATION_START_5 >= 588 +# define BOOST_PP_ITERATION_5 588 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 587 && BOOST_PP_ITERATION_START_5 >= 587 +# define BOOST_PP_ITERATION_5 587 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 586 && BOOST_PP_ITERATION_START_5 >= 586 +# define BOOST_PP_ITERATION_5 586 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 585 && BOOST_PP_ITERATION_START_5 >= 585 +# define BOOST_PP_ITERATION_5 585 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 584 && BOOST_PP_ITERATION_START_5 >= 584 +# define BOOST_PP_ITERATION_5 584 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 583 && BOOST_PP_ITERATION_START_5 >= 583 +# define BOOST_PP_ITERATION_5 583 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 582 && BOOST_PP_ITERATION_START_5 >= 582 +# define BOOST_PP_ITERATION_5 582 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 581 && BOOST_PP_ITERATION_START_5 >= 581 +# define BOOST_PP_ITERATION_5 581 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 580 && BOOST_PP_ITERATION_START_5 >= 580 +# define BOOST_PP_ITERATION_5 580 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 579 && BOOST_PP_ITERATION_START_5 >= 579 +# define BOOST_PP_ITERATION_5 579 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 578 && BOOST_PP_ITERATION_START_5 >= 578 +# define BOOST_PP_ITERATION_5 578 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 577 && BOOST_PP_ITERATION_START_5 >= 577 +# define BOOST_PP_ITERATION_5 577 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 576 && BOOST_PP_ITERATION_START_5 >= 576 +# define BOOST_PP_ITERATION_5 576 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 575 && BOOST_PP_ITERATION_START_5 >= 575 +# define BOOST_PP_ITERATION_5 575 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 574 && BOOST_PP_ITERATION_START_5 >= 574 +# define BOOST_PP_ITERATION_5 574 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 573 && BOOST_PP_ITERATION_START_5 >= 573 +# define BOOST_PP_ITERATION_5 573 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 572 && BOOST_PP_ITERATION_START_5 >= 572 +# define BOOST_PP_ITERATION_5 572 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 571 && BOOST_PP_ITERATION_START_5 >= 571 +# define BOOST_PP_ITERATION_5 571 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 570 && BOOST_PP_ITERATION_START_5 >= 570 +# define BOOST_PP_ITERATION_5 570 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 569 && BOOST_PP_ITERATION_START_5 >= 569 +# define BOOST_PP_ITERATION_5 569 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 568 && BOOST_PP_ITERATION_START_5 >= 568 +# define BOOST_PP_ITERATION_5 568 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 567 && BOOST_PP_ITERATION_START_5 >= 567 +# define BOOST_PP_ITERATION_5 567 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 566 && BOOST_PP_ITERATION_START_5 >= 566 +# define BOOST_PP_ITERATION_5 566 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 565 && BOOST_PP_ITERATION_START_5 >= 565 +# define BOOST_PP_ITERATION_5 565 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 564 && BOOST_PP_ITERATION_START_5 >= 564 +# define BOOST_PP_ITERATION_5 564 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 563 && BOOST_PP_ITERATION_START_5 >= 563 +# define BOOST_PP_ITERATION_5 563 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 562 && BOOST_PP_ITERATION_START_5 >= 562 +# define BOOST_PP_ITERATION_5 562 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 561 && BOOST_PP_ITERATION_START_5 >= 561 +# define BOOST_PP_ITERATION_5 561 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 560 && BOOST_PP_ITERATION_START_5 >= 560 +# define BOOST_PP_ITERATION_5 560 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 559 && BOOST_PP_ITERATION_START_5 >= 559 +# define BOOST_PP_ITERATION_5 559 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 558 && BOOST_PP_ITERATION_START_5 >= 558 +# define BOOST_PP_ITERATION_5 558 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 557 && BOOST_PP_ITERATION_START_5 >= 557 +# define BOOST_PP_ITERATION_5 557 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 556 && BOOST_PP_ITERATION_START_5 >= 556 +# define BOOST_PP_ITERATION_5 556 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 555 && BOOST_PP_ITERATION_START_5 >= 555 +# define BOOST_PP_ITERATION_5 555 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 554 && BOOST_PP_ITERATION_START_5 >= 554 +# define BOOST_PP_ITERATION_5 554 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 553 && BOOST_PP_ITERATION_START_5 >= 553 +# define BOOST_PP_ITERATION_5 553 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 552 && BOOST_PP_ITERATION_START_5 >= 552 +# define BOOST_PP_ITERATION_5 552 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 551 && BOOST_PP_ITERATION_START_5 >= 551 +# define BOOST_PP_ITERATION_5 551 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 550 && BOOST_PP_ITERATION_START_5 >= 550 +# define BOOST_PP_ITERATION_5 550 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 549 && BOOST_PP_ITERATION_START_5 >= 549 +# define BOOST_PP_ITERATION_5 549 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 548 && BOOST_PP_ITERATION_START_5 >= 548 +# define BOOST_PP_ITERATION_5 548 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 547 && BOOST_PP_ITERATION_START_5 >= 547 +# define BOOST_PP_ITERATION_5 547 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 546 && BOOST_PP_ITERATION_START_5 >= 546 +# define BOOST_PP_ITERATION_5 546 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 545 && BOOST_PP_ITERATION_START_5 >= 545 +# define BOOST_PP_ITERATION_5 545 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 544 && BOOST_PP_ITERATION_START_5 >= 544 +# define BOOST_PP_ITERATION_5 544 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 543 && BOOST_PP_ITERATION_START_5 >= 543 +# define BOOST_PP_ITERATION_5 543 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 542 && BOOST_PP_ITERATION_START_5 >= 542 +# define BOOST_PP_ITERATION_5 542 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 541 && BOOST_PP_ITERATION_START_5 >= 541 +# define BOOST_PP_ITERATION_5 541 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 540 && BOOST_PP_ITERATION_START_5 >= 540 +# define BOOST_PP_ITERATION_5 540 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 539 && BOOST_PP_ITERATION_START_5 >= 539 +# define BOOST_PP_ITERATION_5 539 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 538 && BOOST_PP_ITERATION_START_5 >= 538 +# define BOOST_PP_ITERATION_5 538 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 537 && BOOST_PP_ITERATION_START_5 >= 537 +# define BOOST_PP_ITERATION_5 537 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 536 && BOOST_PP_ITERATION_START_5 >= 536 +# define BOOST_PP_ITERATION_5 536 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 535 && BOOST_PP_ITERATION_START_5 >= 535 +# define BOOST_PP_ITERATION_5 535 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 534 && BOOST_PP_ITERATION_START_5 >= 534 +# define BOOST_PP_ITERATION_5 534 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 533 && BOOST_PP_ITERATION_START_5 >= 533 +# define BOOST_PP_ITERATION_5 533 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 532 && BOOST_PP_ITERATION_START_5 >= 532 +# define BOOST_PP_ITERATION_5 532 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 531 && BOOST_PP_ITERATION_START_5 >= 531 +# define BOOST_PP_ITERATION_5 531 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 530 && BOOST_PP_ITERATION_START_5 >= 530 +# define BOOST_PP_ITERATION_5 530 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 529 && BOOST_PP_ITERATION_START_5 >= 529 +# define BOOST_PP_ITERATION_5 529 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 528 && BOOST_PP_ITERATION_START_5 >= 528 +# define BOOST_PP_ITERATION_5 528 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 527 && BOOST_PP_ITERATION_START_5 >= 527 +# define BOOST_PP_ITERATION_5 527 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 526 && BOOST_PP_ITERATION_START_5 >= 526 +# define BOOST_PP_ITERATION_5 526 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 525 && BOOST_PP_ITERATION_START_5 >= 525 +# define BOOST_PP_ITERATION_5 525 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 524 && BOOST_PP_ITERATION_START_5 >= 524 +# define BOOST_PP_ITERATION_5 524 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 523 && BOOST_PP_ITERATION_START_5 >= 523 +# define BOOST_PP_ITERATION_5 523 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 522 && BOOST_PP_ITERATION_START_5 >= 522 +# define BOOST_PP_ITERATION_5 522 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 521 && BOOST_PP_ITERATION_START_5 >= 521 +# define BOOST_PP_ITERATION_5 521 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 520 && BOOST_PP_ITERATION_START_5 >= 520 +# define BOOST_PP_ITERATION_5 520 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 519 && BOOST_PP_ITERATION_START_5 >= 519 +# define BOOST_PP_ITERATION_5 519 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 518 && BOOST_PP_ITERATION_START_5 >= 518 +# define BOOST_PP_ITERATION_5 518 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 517 && BOOST_PP_ITERATION_START_5 >= 517 +# define BOOST_PP_ITERATION_5 517 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 516 && BOOST_PP_ITERATION_START_5 >= 516 +# define BOOST_PP_ITERATION_5 516 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 515 && BOOST_PP_ITERATION_START_5 >= 515 +# define BOOST_PP_ITERATION_5 515 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 514 && BOOST_PP_ITERATION_START_5 >= 514 +# define BOOST_PP_ITERATION_5 514 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 513 && BOOST_PP_ITERATION_START_5 >= 513 +# define BOOST_PP_ITERATION_5 513 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse5_256.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse5_256.hpp new file mode 100644 index 000000000..ab99d1eaf --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse5_256.hpp @@ -0,0 +1,1296 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_ITERATION_FINISH_5 <= 256 && BOOST_PP_ITERATION_START_5 >= 256 +# define BOOST_PP_ITERATION_5 256 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 255 && BOOST_PP_ITERATION_START_5 >= 255 +# define BOOST_PP_ITERATION_5 255 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 254 && BOOST_PP_ITERATION_START_5 >= 254 +# define BOOST_PP_ITERATION_5 254 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 253 && BOOST_PP_ITERATION_START_5 >= 253 +# define BOOST_PP_ITERATION_5 253 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 252 && BOOST_PP_ITERATION_START_5 >= 252 +# define BOOST_PP_ITERATION_5 252 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 251 && BOOST_PP_ITERATION_START_5 >= 251 +# define BOOST_PP_ITERATION_5 251 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 250 && BOOST_PP_ITERATION_START_5 >= 250 +# define BOOST_PP_ITERATION_5 250 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 249 && BOOST_PP_ITERATION_START_5 >= 249 +# define BOOST_PP_ITERATION_5 249 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 248 && BOOST_PP_ITERATION_START_5 >= 248 +# define BOOST_PP_ITERATION_5 248 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 247 && BOOST_PP_ITERATION_START_5 >= 247 +# define BOOST_PP_ITERATION_5 247 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 246 && BOOST_PP_ITERATION_START_5 >= 246 +# define BOOST_PP_ITERATION_5 246 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 245 && BOOST_PP_ITERATION_START_5 >= 245 +# define BOOST_PP_ITERATION_5 245 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 244 && BOOST_PP_ITERATION_START_5 >= 244 +# define BOOST_PP_ITERATION_5 244 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 243 && BOOST_PP_ITERATION_START_5 >= 243 +# define BOOST_PP_ITERATION_5 243 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 242 && BOOST_PP_ITERATION_START_5 >= 242 +# define BOOST_PP_ITERATION_5 242 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 241 && BOOST_PP_ITERATION_START_5 >= 241 +# define BOOST_PP_ITERATION_5 241 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 240 && BOOST_PP_ITERATION_START_5 >= 240 +# define BOOST_PP_ITERATION_5 240 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 239 && BOOST_PP_ITERATION_START_5 >= 239 +# define BOOST_PP_ITERATION_5 239 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 238 && BOOST_PP_ITERATION_START_5 >= 238 +# define BOOST_PP_ITERATION_5 238 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 237 && BOOST_PP_ITERATION_START_5 >= 237 +# define BOOST_PP_ITERATION_5 237 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 236 && BOOST_PP_ITERATION_START_5 >= 236 +# define BOOST_PP_ITERATION_5 236 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 235 && BOOST_PP_ITERATION_START_5 >= 235 +# define BOOST_PP_ITERATION_5 235 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 234 && BOOST_PP_ITERATION_START_5 >= 234 +# define BOOST_PP_ITERATION_5 234 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 233 && BOOST_PP_ITERATION_START_5 >= 233 +# define BOOST_PP_ITERATION_5 233 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 232 && BOOST_PP_ITERATION_START_5 >= 232 +# define BOOST_PP_ITERATION_5 232 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 231 && BOOST_PP_ITERATION_START_5 >= 231 +# define BOOST_PP_ITERATION_5 231 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 230 && BOOST_PP_ITERATION_START_5 >= 230 +# define BOOST_PP_ITERATION_5 230 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 229 && BOOST_PP_ITERATION_START_5 >= 229 +# define BOOST_PP_ITERATION_5 229 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 228 && BOOST_PP_ITERATION_START_5 >= 228 +# define BOOST_PP_ITERATION_5 228 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 227 && BOOST_PP_ITERATION_START_5 >= 227 +# define BOOST_PP_ITERATION_5 227 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 226 && BOOST_PP_ITERATION_START_5 >= 226 +# define BOOST_PP_ITERATION_5 226 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 225 && BOOST_PP_ITERATION_START_5 >= 225 +# define BOOST_PP_ITERATION_5 225 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 224 && BOOST_PP_ITERATION_START_5 >= 224 +# define BOOST_PP_ITERATION_5 224 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 223 && BOOST_PP_ITERATION_START_5 >= 223 +# define BOOST_PP_ITERATION_5 223 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 222 && BOOST_PP_ITERATION_START_5 >= 222 +# define BOOST_PP_ITERATION_5 222 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 221 && BOOST_PP_ITERATION_START_5 >= 221 +# define BOOST_PP_ITERATION_5 221 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 220 && BOOST_PP_ITERATION_START_5 >= 220 +# define BOOST_PP_ITERATION_5 220 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 219 && BOOST_PP_ITERATION_START_5 >= 219 +# define BOOST_PP_ITERATION_5 219 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 218 && BOOST_PP_ITERATION_START_5 >= 218 +# define BOOST_PP_ITERATION_5 218 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 217 && BOOST_PP_ITERATION_START_5 >= 217 +# define BOOST_PP_ITERATION_5 217 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 216 && BOOST_PP_ITERATION_START_5 >= 216 +# define BOOST_PP_ITERATION_5 216 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 215 && BOOST_PP_ITERATION_START_5 >= 215 +# define BOOST_PP_ITERATION_5 215 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 214 && BOOST_PP_ITERATION_START_5 >= 214 +# define BOOST_PP_ITERATION_5 214 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 213 && BOOST_PP_ITERATION_START_5 >= 213 +# define BOOST_PP_ITERATION_5 213 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 212 && BOOST_PP_ITERATION_START_5 >= 212 +# define BOOST_PP_ITERATION_5 212 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 211 && BOOST_PP_ITERATION_START_5 >= 211 +# define BOOST_PP_ITERATION_5 211 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 210 && BOOST_PP_ITERATION_START_5 >= 210 +# define BOOST_PP_ITERATION_5 210 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 209 && BOOST_PP_ITERATION_START_5 >= 209 +# define BOOST_PP_ITERATION_5 209 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 208 && BOOST_PP_ITERATION_START_5 >= 208 +# define BOOST_PP_ITERATION_5 208 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 207 && BOOST_PP_ITERATION_START_5 >= 207 +# define BOOST_PP_ITERATION_5 207 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 206 && BOOST_PP_ITERATION_START_5 >= 206 +# define BOOST_PP_ITERATION_5 206 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 205 && BOOST_PP_ITERATION_START_5 >= 205 +# define BOOST_PP_ITERATION_5 205 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 204 && BOOST_PP_ITERATION_START_5 >= 204 +# define BOOST_PP_ITERATION_5 204 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 203 && BOOST_PP_ITERATION_START_5 >= 203 +# define BOOST_PP_ITERATION_5 203 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 202 && BOOST_PP_ITERATION_START_5 >= 202 +# define BOOST_PP_ITERATION_5 202 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 201 && BOOST_PP_ITERATION_START_5 >= 201 +# define BOOST_PP_ITERATION_5 201 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 200 && BOOST_PP_ITERATION_START_5 >= 200 +# define BOOST_PP_ITERATION_5 200 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 199 && BOOST_PP_ITERATION_START_5 >= 199 +# define BOOST_PP_ITERATION_5 199 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 198 && BOOST_PP_ITERATION_START_5 >= 198 +# define BOOST_PP_ITERATION_5 198 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 197 && BOOST_PP_ITERATION_START_5 >= 197 +# define BOOST_PP_ITERATION_5 197 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 196 && BOOST_PP_ITERATION_START_5 >= 196 +# define BOOST_PP_ITERATION_5 196 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 195 && BOOST_PP_ITERATION_START_5 >= 195 +# define BOOST_PP_ITERATION_5 195 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 194 && BOOST_PP_ITERATION_START_5 >= 194 +# define BOOST_PP_ITERATION_5 194 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 193 && BOOST_PP_ITERATION_START_5 >= 193 +# define BOOST_PP_ITERATION_5 193 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 192 && BOOST_PP_ITERATION_START_5 >= 192 +# define BOOST_PP_ITERATION_5 192 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 191 && BOOST_PP_ITERATION_START_5 >= 191 +# define BOOST_PP_ITERATION_5 191 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 190 && BOOST_PP_ITERATION_START_5 >= 190 +# define BOOST_PP_ITERATION_5 190 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 189 && BOOST_PP_ITERATION_START_5 >= 189 +# define BOOST_PP_ITERATION_5 189 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 188 && BOOST_PP_ITERATION_START_5 >= 188 +# define BOOST_PP_ITERATION_5 188 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 187 && BOOST_PP_ITERATION_START_5 >= 187 +# define BOOST_PP_ITERATION_5 187 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 186 && BOOST_PP_ITERATION_START_5 >= 186 +# define BOOST_PP_ITERATION_5 186 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 185 && BOOST_PP_ITERATION_START_5 >= 185 +# define BOOST_PP_ITERATION_5 185 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 184 && BOOST_PP_ITERATION_START_5 >= 184 +# define BOOST_PP_ITERATION_5 184 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 183 && BOOST_PP_ITERATION_START_5 >= 183 +# define BOOST_PP_ITERATION_5 183 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 182 && BOOST_PP_ITERATION_START_5 >= 182 +# define BOOST_PP_ITERATION_5 182 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 181 && BOOST_PP_ITERATION_START_5 >= 181 +# define BOOST_PP_ITERATION_5 181 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 180 && BOOST_PP_ITERATION_START_5 >= 180 +# define BOOST_PP_ITERATION_5 180 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 179 && BOOST_PP_ITERATION_START_5 >= 179 +# define BOOST_PP_ITERATION_5 179 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 178 && BOOST_PP_ITERATION_START_5 >= 178 +# define BOOST_PP_ITERATION_5 178 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 177 && BOOST_PP_ITERATION_START_5 >= 177 +# define BOOST_PP_ITERATION_5 177 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 176 && BOOST_PP_ITERATION_START_5 >= 176 +# define BOOST_PP_ITERATION_5 176 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 175 && BOOST_PP_ITERATION_START_5 >= 175 +# define BOOST_PP_ITERATION_5 175 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 174 && BOOST_PP_ITERATION_START_5 >= 174 +# define BOOST_PP_ITERATION_5 174 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 173 && BOOST_PP_ITERATION_START_5 >= 173 +# define BOOST_PP_ITERATION_5 173 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 172 && BOOST_PP_ITERATION_START_5 >= 172 +# define BOOST_PP_ITERATION_5 172 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 171 && BOOST_PP_ITERATION_START_5 >= 171 +# define BOOST_PP_ITERATION_5 171 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 170 && BOOST_PP_ITERATION_START_5 >= 170 +# define BOOST_PP_ITERATION_5 170 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 169 && BOOST_PP_ITERATION_START_5 >= 169 +# define BOOST_PP_ITERATION_5 169 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 168 && BOOST_PP_ITERATION_START_5 >= 168 +# define BOOST_PP_ITERATION_5 168 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 167 && BOOST_PP_ITERATION_START_5 >= 167 +# define BOOST_PP_ITERATION_5 167 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 166 && BOOST_PP_ITERATION_START_5 >= 166 +# define BOOST_PP_ITERATION_5 166 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 165 && BOOST_PP_ITERATION_START_5 >= 165 +# define BOOST_PP_ITERATION_5 165 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 164 && BOOST_PP_ITERATION_START_5 >= 164 +# define BOOST_PP_ITERATION_5 164 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 163 && BOOST_PP_ITERATION_START_5 >= 163 +# define BOOST_PP_ITERATION_5 163 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 162 && BOOST_PP_ITERATION_START_5 >= 162 +# define BOOST_PP_ITERATION_5 162 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 161 && BOOST_PP_ITERATION_START_5 >= 161 +# define BOOST_PP_ITERATION_5 161 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 160 && BOOST_PP_ITERATION_START_5 >= 160 +# define BOOST_PP_ITERATION_5 160 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 159 && BOOST_PP_ITERATION_START_5 >= 159 +# define BOOST_PP_ITERATION_5 159 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 158 && BOOST_PP_ITERATION_START_5 >= 158 +# define BOOST_PP_ITERATION_5 158 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 157 && BOOST_PP_ITERATION_START_5 >= 157 +# define BOOST_PP_ITERATION_5 157 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 156 && BOOST_PP_ITERATION_START_5 >= 156 +# define BOOST_PP_ITERATION_5 156 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 155 && BOOST_PP_ITERATION_START_5 >= 155 +# define BOOST_PP_ITERATION_5 155 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 154 && BOOST_PP_ITERATION_START_5 >= 154 +# define BOOST_PP_ITERATION_5 154 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 153 && BOOST_PP_ITERATION_START_5 >= 153 +# define BOOST_PP_ITERATION_5 153 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 152 && BOOST_PP_ITERATION_START_5 >= 152 +# define BOOST_PP_ITERATION_5 152 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 151 && BOOST_PP_ITERATION_START_5 >= 151 +# define BOOST_PP_ITERATION_5 151 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 150 && BOOST_PP_ITERATION_START_5 >= 150 +# define BOOST_PP_ITERATION_5 150 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 149 && BOOST_PP_ITERATION_START_5 >= 149 +# define BOOST_PP_ITERATION_5 149 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 148 && BOOST_PP_ITERATION_START_5 >= 148 +# define BOOST_PP_ITERATION_5 148 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 147 && BOOST_PP_ITERATION_START_5 >= 147 +# define BOOST_PP_ITERATION_5 147 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 146 && BOOST_PP_ITERATION_START_5 >= 146 +# define BOOST_PP_ITERATION_5 146 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 145 && BOOST_PP_ITERATION_START_5 >= 145 +# define BOOST_PP_ITERATION_5 145 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 144 && BOOST_PP_ITERATION_START_5 >= 144 +# define BOOST_PP_ITERATION_5 144 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 143 && BOOST_PP_ITERATION_START_5 >= 143 +# define BOOST_PP_ITERATION_5 143 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 142 && BOOST_PP_ITERATION_START_5 >= 142 +# define BOOST_PP_ITERATION_5 142 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 141 && BOOST_PP_ITERATION_START_5 >= 141 +# define BOOST_PP_ITERATION_5 141 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 140 && BOOST_PP_ITERATION_START_5 >= 140 +# define BOOST_PP_ITERATION_5 140 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 139 && BOOST_PP_ITERATION_START_5 >= 139 +# define BOOST_PP_ITERATION_5 139 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 138 && BOOST_PP_ITERATION_START_5 >= 138 +# define BOOST_PP_ITERATION_5 138 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 137 && BOOST_PP_ITERATION_START_5 >= 137 +# define BOOST_PP_ITERATION_5 137 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 136 && BOOST_PP_ITERATION_START_5 >= 136 +# define BOOST_PP_ITERATION_5 136 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 135 && BOOST_PP_ITERATION_START_5 >= 135 +# define BOOST_PP_ITERATION_5 135 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 134 && BOOST_PP_ITERATION_START_5 >= 134 +# define BOOST_PP_ITERATION_5 134 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 133 && BOOST_PP_ITERATION_START_5 >= 133 +# define BOOST_PP_ITERATION_5 133 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 132 && BOOST_PP_ITERATION_START_5 >= 132 +# define BOOST_PP_ITERATION_5 132 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 131 && BOOST_PP_ITERATION_START_5 >= 131 +# define BOOST_PP_ITERATION_5 131 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 130 && BOOST_PP_ITERATION_START_5 >= 130 +# define BOOST_PP_ITERATION_5 130 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 129 && BOOST_PP_ITERATION_START_5 >= 129 +# define BOOST_PP_ITERATION_5 129 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 128 && BOOST_PP_ITERATION_START_5 >= 128 +# define BOOST_PP_ITERATION_5 128 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 127 && BOOST_PP_ITERATION_START_5 >= 127 +# define BOOST_PP_ITERATION_5 127 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 126 && BOOST_PP_ITERATION_START_5 >= 126 +# define BOOST_PP_ITERATION_5 126 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 125 && BOOST_PP_ITERATION_START_5 >= 125 +# define BOOST_PP_ITERATION_5 125 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 124 && BOOST_PP_ITERATION_START_5 >= 124 +# define BOOST_PP_ITERATION_5 124 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 123 && BOOST_PP_ITERATION_START_5 >= 123 +# define BOOST_PP_ITERATION_5 123 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 122 && BOOST_PP_ITERATION_START_5 >= 122 +# define BOOST_PP_ITERATION_5 122 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 121 && BOOST_PP_ITERATION_START_5 >= 121 +# define BOOST_PP_ITERATION_5 121 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 120 && BOOST_PP_ITERATION_START_5 >= 120 +# define BOOST_PP_ITERATION_5 120 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 119 && BOOST_PP_ITERATION_START_5 >= 119 +# define BOOST_PP_ITERATION_5 119 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 118 && BOOST_PP_ITERATION_START_5 >= 118 +# define BOOST_PP_ITERATION_5 118 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 117 && BOOST_PP_ITERATION_START_5 >= 117 +# define BOOST_PP_ITERATION_5 117 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 116 && BOOST_PP_ITERATION_START_5 >= 116 +# define BOOST_PP_ITERATION_5 116 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 115 && BOOST_PP_ITERATION_START_5 >= 115 +# define BOOST_PP_ITERATION_5 115 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 114 && BOOST_PP_ITERATION_START_5 >= 114 +# define BOOST_PP_ITERATION_5 114 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 113 && BOOST_PP_ITERATION_START_5 >= 113 +# define BOOST_PP_ITERATION_5 113 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 112 && BOOST_PP_ITERATION_START_5 >= 112 +# define BOOST_PP_ITERATION_5 112 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 111 && BOOST_PP_ITERATION_START_5 >= 111 +# define BOOST_PP_ITERATION_5 111 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 110 && BOOST_PP_ITERATION_START_5 >= 110 +# define BOOST_PP_ITERATION_5 110 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 109 && BOOST_PP_ITERATION_START_5 >= 109 +# define BOOST_PP_ITERATION_5 109 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 108 && BOOST_PP_ITERATION_START_5 >= 108 +# define BOOST_PP_ITERATION_5 108 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 107 && BOOST_PP_ITERATION_START_5 >= 107 +# define BOOST_PP_ITERATION_5 107 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 106 && BOOST_PP_ITERATION_START_5 >= 106 +# define BOOST_PP_ITERATION_5 106 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 105 && BOOST_PP_ITERATION_START_5 >= 105 +# define BOOST_PP_ITERATION_5 105 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 104 && BOOST_PP_ITERATION_START_5 >= 104 +# define BOOST_PP_ITERATION_5 104 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 103 && BOOST_PP_ITERATION_START_5 >= 103 +# define BOOST_PP_ITERATION_5 103 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 102 && BOOST_PP_ITERATION_START_5 >= 102 +# define BOOST_PP_ITERATION_5 102 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 101 && BOOST_PP_ITERATION_START_5 >= 101 +# define BOOST_PP_ITERATION_5 101 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 100 && BOOST_PP_ITERATION_START_5 >= 100 +# define BOOST_PP_ITERATION_5 100 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 99 && BOOST_PP_ITERATION_START_5 >= 99 +# define BOOST_PP_ITERATION_5 99 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 98 && BOOST_PP_ITERATION_START_5 >= 98 +# define BOOST_PP_ITERATION_5 98 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 97 && BOOST_PP_ITERATION_START_5 >= 97 +# define BOOST_PP_ITERATION_5 97 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 96 && BOOST_PP_ITERATION_START_5 >= 96 +# define BOOST_PP_ITERATION_5 96 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 95 && BOOST_PP_ITERATION_START_5 >= 95 +# define BOOST_PP_ITERATION_5 95 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 94 && BOOST_PP_ITERATION_START_5 >= 94 +# define BOOST_PP_ITERATION_5 94 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 93 && BOOST_PP_ITERATION_START_5 >= 93 +# define BOOST_PP_ITERATION_5 93 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 92 && BOOST_PP_ITERATION_START_5 >= 92 +# define BOOST_PP_ITERATION_5 92 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 91 && BOOST_PP_ITERATION_START_5 >= 91 +# define BOOST_PP_ITERATION_5 91 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 90 && BOOST_PP_ITERATION_START_5 >= 90 +# define BOOST_PP_ITERATION_5 90 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 89 && BOOST_PP_ITERATION_START_5 >= 89 +# define BOOST_PP_ITERATION_5 89 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 88 && BOOST_PP_ITERATION_START_5 >= 88 +# define BOOST_PP_ITERATION_5 88 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 87 && BOOST_PP_ITERATION_START_5 >= 87 +# define BOOST_PP_ITERATION_5 87 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 86 && BOOST_PP_ITERATION_START_5 >= 86 +# define BOOST_PP_ITERATION_5 86 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 85 && BOOST_PP_ITERATION_START_5 >= 85 +# define BOOST_PP_ITERATION_5 85 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 84 && BOOST_PP_ITERATION_START_5 >= 84 +# define BOOST_PP_ITERATION_5 84 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 83 && BOOST_PP_ITERATION_START_5 >= 83 +# define BOOST_PP_ITERATION_5 83 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 82 && BOOST_PP_ITERATION_START_5 >= 82 +# define BOOST_PP_ITERATION_5 82 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 81 && BOOST_PP_ITERATION_START_5 >= 81 +# define BOOST_PP_ITERATION_5 81 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 80 && BOOST_PP_ITERATION_START_5 >= 80 +# define BOOST_PP_ITERATION_5 80 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 79 && BOOST_PP_ITERATION_START_5 >= 79 +# define BOOST_PP_ITERATION_5 79 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 78 && BOOST_PP_ITERATION_START_5 >= 78 +# define BOOST_PP_ITERATION_5 78 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 77 && BOOST_PP_ITERATION_START_5 >= 77 +# define BOOST_PP_ITERATION_5 77 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 76 && BOOST_PP_ITERATION_START_5 >= 76 +# define BOOST_PP_ITERATION_5 76 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 75 && BOOST_PP_ITERATION_START_5 >= 75 +# define BOOST_PP_ITERATION_5 75 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 74 && BOOST_PP_ITERATION_START_5 >= 74 +# define BOOST_PP_ITERATION_5 74 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 73 && BOOST_PP_ITERATION_START_5 >= 73 +# define BOOST_PP_ITERATION_5 73 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 72 && BOOST_PP_ITERATION_START_5 >= 72 +# define BOOST_PP_ITERATION_5 72 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 71 && BOOST_PP_ITERATION_START_5 >= 71 +# define BOOST_PP_ITERATION_5 71 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 70 && BOOST_PP_ITERATION_START_5 >= 70 +# define BOOST_PP_ITERATION_5 70 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 69 && BOOST_PP_ITERATION_START_5 >= 69 +# define BOOST_PP_ITERATION_5 69 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 68 && BOOST_PP_ITERATION_START_5 >= 68 +# define BOOST_PP_ITERATION_5 68 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 67 && BOOST_PP_ITERATION_START_5 >= 67 +# define BOOST_PP_ITERATION_5 67 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 66 && BOOST_PP_ITERATION_START_5 >= 66 +# define BOOST_PP_ITERATION_5 66 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 65 && BOOST_PP_ITERATION_START_5 >= 65 +# define BOOST_PP_ITERATION_5 65 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 64 && BOOST_PP_ITERATION_START_5 >= 64 +# define BOOST_PP_ITERATION_5 64 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 63 && BOOST_PP_ITERATION_START_5 >= 63 +# define BOOST_PP_ITERATION_5 63 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 62 && BOOST_PP_ITERATION_START_5 >= 62 +# define BOOST_PP_ITERATION_5 62 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 61 && BOOST_PP_ITERATION_START_5 >= 61 +# define BOOST_PP_ITERATION_5 61 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 60 && BOOST_PP_ITERATION_START_5 >= 60 +# define BOOST_PP_ITERATION_5 60 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 59 && BOOST_PP_ITERATION_START_5 >= 59 +# define BOOST_PP_ITERATION_5 59 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 58 && BOOST_PP_ITERATION_START_5 >= 58 +# define BOOST_PP_ITERATION_5 58 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 57 && BOOST_PP_ITERATION_START_5 >= 57 +# define BOOST_PP_ITERATION_5 57 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 56 && BOOST_PP_ITERATION_START_5 >= 56 +# define BOOST_PP_ITERATION_5 56 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 55 && BOOST_PP_ITERATION_START_5 >= 55 +# define BOOST_PP_ITERATION_5 55 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 54 && BOOST_PP_ITERATION_START_5 >= 54 +# define BOOST_PP_ITERATION_5 54 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 53 && BOOST_PP_ITERATION_START_5 >= 53 +# define BOOST_PP_ITERATION_5 53 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 52 && BOOST_PP_ITERATION_START_5 >= 52 +# define BOOST_PP_ITERATION_5 52 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 51 && BOOST_PP_ITERATION_START_5 >= 51 +# define BOOST_PP_ITERATION_5 51 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 50 && BOOST_PP_ITERATION_START_5 >= 50 +# define BOOST_PP_ITERATION_5 50 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 49 && BOOST_PP_ITERATION_START_5 >= 49 +# define BOOST_PP_ITERATION_5 49 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 48 && BOOST_PP_ITERATION_START_5 >= 48 +# define BOOST_PP_ITERATION_5 48 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 47 && BOOST_PP_ITERATION_START_5 >= 47 +# define BOOST_PP_ITERATION_5 47 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 46 && BOOST_PP_ITERATION_START_5 >= 46 +# define BOOST_PP_ITERATION_5 46 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 45 && BOOST_PP_ITERATION_START_5 >= 45 +# define BOOST_PP_ITERATION_5 45 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 44 && BOOST_PP_ITERATION_START_5 >= 44 +# define BOOST_PP_ITERATION_5 44 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 43 && BOOST_PP_ITERATION_START_5 >= 43 +# define BOOST_PP_ITERATION_5 43 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 42 && BOOST_PP_ITERATION_START_5 >= 42 +# define BOOST_PP_ITERATION_5 42 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 41 && BOOST_PP_ITERATION_START_5 >= 41 +# define BOOST_PP_ITERATION_5 41 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 40 && BOOST_PP_ITERATION_START_5 >= 40 +# define BOOST_PP_ITERATION_5 40 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 39 && BOOST_PP_ITERATION_START_5 >= 39 +# define BOOST_PP_ITERATION_5 39 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 38 && BOOST_PP_ITERATION_START_5 >= 38 +# define BOOST_PP_ITERATION_5 38 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 37 && BOOST_PP_ITERATION_START_5 >= 37 +# define BOOST_PP_ITERATION_5 37 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 36 && BOOST_PP_ITERATION_START_5 >= 36 +# define BOOST_PP_ITERATION_5 36 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 35 && BOOST_PP_ITERATION_START_5 >= 35 +# define BOOST_PP_ITERATION_5 35 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 34 && BOOST_PP_ITERATION_START_5 >= 34 +# define BOOST_PP_ITERATION_5 34 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 33 && BOOST_PP_ITERATION_START_5 >= 33 +# define BOOST_PP_ITERATION_5 33 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 32 && BOOST_PP_ITERATION_START_5 >= 32 +# define BOOST_PP_ITERATION_5 32 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 31 && BOOST_PP_ITERATION_START_5 >= 31 +# define BOOST_PP_ITERATION_5 31 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 30 && BOOST_PP_ITERATION_START_5 >= 30 +# define BOOST_PP_ITERATION_5 30 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 29 && BOOST_PP_ITERATION_START_5 >= 29 +# define BOOST_PP_ITERATION_5 29 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 28 && BOOST_PP_ITERATION_START_5 >= 28 +# define BOOST_PP_ITERATION_5 28 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 27 && BOOST_PP_ITERATION_START_5 >= 27 +# define BOOST_PP_ITERATION_5 27 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 26 && BOOST_PP_ITERATION_START_5 >= 26 +# define BOOST_PP_ITERATION_5 26 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 25 && BOOST_PP_ITERATION_START_5 >= 25 +# define BOOST_PP_ITERATION_5 25 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 24 && BOOST_PP_ITERATION_START_5 >= 24 +# define BOOST_PP_ITERATION_5 24 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 23 && BOOST_PP_ITERATION_START_5 >= 23 +# define BOOST_PP_ITERATION_5 23 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 22 && BOOST_PP_ITERATION_START_5 >= 22 +# define BOOST_PP_ITERATION_5 22 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 21 && BOOST_PP_ITERATION_START_5 >= 21 +# define BOOST_PP_ITERATION_5 21 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 20 && BOOST_PP_ITERATION_START_5 >= 20 +# define BOOST_PP_ITERATION_5 20 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 19 && BOOST_PP_ITERATION_START_5 >= 19 +# define BOOST_PP_ITERATION_5 19 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 18 && BOOST_PP_ITERATION_START_5 >= 18 +# define BOOST_PP_ITERATION_5 18 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 17 && BOOST_PP_ITERATION_START_5 >= 17 +# define BOOST_PP_ITERATION_5 17 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 16 && BOOST_PP_ITERATION_START_5 >= 16 +# define BOOST_PP_ITERATION_5 16 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 15 && BOOST_PP_ITERATION_START_5 >= 15 +# define BOOST_PP_ITERATION_5 15 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 14 && BOOST_PP_ITERATION_START_5 >= 14 +# define BOOST_PP_ITERATION_5 14 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 13 && BOOST_PP_ITERATION_START_5 >= 13 +# define BOOST_PP_ITERATION_5 13 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 12 && BOOST_PP_ITERATION_START_5 >= 12 +# define BOOST_PP_ITERATION_5 12 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 11 && BOOST_PP_ITERATION_START_5 >= 11 +# define BOOST_PP_ITERATION_5 11 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 10 && BOOST_PP_ITERATION_START_5 >= 10 +# define BOOST_PP_ITERATION_5 10 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 9 && BOOST_PP_ITERATION_START_5 >= 9 +# define BOOST_PP_ITERATION_5 9 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 8 && BOOST_PP_ITERATION_START_5 >= 8 +# define BOOST_PP_ITERATION_5 8 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 7 && BOOST_PP_ITERATION_START_5 >= 7 +# define BOOST_PP_ITERATION_5 7 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 6 && BOOST_PP_ITERATION_START_5 >= 6 +# define BOOST_PP_ITERATION_5 6 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 5 && BOOST_PP_ITERATION_START_5 >= 5 +# define BOOST_PP_ITERATION_5 5 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 4 && BOOST_PP_ITERATION_START_5 >= 4 +# define BOOST_PP_ITERATION_5 4 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 3 && BOOST_PP_ITERATION_START_5 >= 3 +# define BOOST_PP_ITERATION_5 3 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 2 && BOOST_PP_ITERATION_START_5 >= 2 +# define BOOST_PP_ITERATION_5 2 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 1 && BOOST_PP_ITERATION_START_5 >= 1 +# define BOOST_PP_ITERATION_5 1 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 0 && BOOST_PP_ITERATION_START_5 >= 0 +# define BOOST_PP_ITERATION_5 0 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse5_512.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse5_512.hpp new file mode 100644 index 000000000..aede5c68f --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/iter/limits/reverse5_512.hpp @@ -0,0 +1,1293 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_ITERATION_FINISH_5 <= 512 && BOOST_PP_ITERATION_START_5 >= 512 +# define BOOST_PP_ITERATION_5 512 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 511 && BOOST_PP_ITERATION_START_5 >= 511 +# define BOOST_PP_ITERATION_5 511 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 510 && BOOST_PP_ITERATION_START_5 >= 510 +# define BOOST_PP_ITERATION_5 510 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 509 && BOOST_PP_ITERATION_START_5 >= 509 +# define BOOST_PP_ITERATION_5 509 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 508 && BOOST_PP_ITERATION_START_5 >= 508 +# define BOOST_PP_ITERATION_5 508 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 507 && BOOST_PP_ITERATION_START_5 >= 507 +# define BOOST_PP_ITERATION_5 507 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 506 && BOOST_PP_ITERATION_START_5 >= 506 +# define BOOST_PP_ITERATION_5 506 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 505 && BOOST_PP_ITERATION_START_5 >= 505 +# define BOOST_PP_ITERATION_5 505 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 504 && BOOST_PP_ITERATION_START_5 >= 504 +# define BOOST_PP_ITERATION_5 504 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 503 && BOOST_PP_ITERATION_START_5 >= 503 +# define BOOST_PP_ITERATION_5 503 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 502 && BOOST_PP_ITERATION_START_5 >= 502 +# define BOOST_PP_ITERATION_5 502 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 501 && BOOST_PP_ITERATION_START_5 >= 501 +# define BOOST_PP_ITERATION_5 501 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 500 && BOOST_PP_ITERATION_START_5 >= 500 +# define BOOST_PP_ITERATION_5 500 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 499 && BOOST_PP_ITERATION_START_5 >= 499 +# define BOOST_PP_ITERATION_5 499 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 498 && BOOST_PP_ITERATION_START_5 >= 498 +# define BOOST_PP_ITERATION_5 498 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 497 && BOOST_PP_ITERATION_START_5 >= 497 +# define BOOST_PP_ITERATION_5 497 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 496 && BOOST_PP_ITERATION_START_5 >= 496 +# define BOOST_PP_ITERATION_5 496 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 495 && BOOST_PP_ITERATION_START_5 >= 495 +# define BOOST_PP_ITERATION_5 495 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 494 && BOOST_PP_ITERATION_START_5 >= 494 +# define BOOST_PP_ITERATION_5 494 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 493 && BOOST_PP_ITERATION_START_5 >= 493 +# define BOOST_PP_ITERATION_5 493 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 492 && BOOST_PP_ITERATION_START_5 >= 492 +# define BOOST_PP_ITERATION_5 492 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 491 && BOOST_PP_ITERATION_START_5 >= 491 +# define BOOST_PP_ITERATION_5 491 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 490 && BOOST_PP_ITERATION_START_5 >= 490 +# define BOOST_PP_ITERATION_5 490 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 489 && BOOST_PP_ITERATION_START_5 >= 489 +# define BOOST_PP_ITERATION_5 489 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 488 && BOOST_PP_ITERATION_START_5 >= 488 +# define BOOST_PP_ITERATION_5 488 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 487 && BOOST_PP_ITERATION_START_5 >= 487 +# define BOOST_PP_ITERATION_5 487 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 486 && BOOST_PP_ITERATION_START_5 >= 486 +# define BOOST_PP_ITERATION_5 486 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 485 && BOOST_PP_ITERATION_START_5 >= 485 +# define BOOST_PP_ITERATION_5 485 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 484 && BOOST_PP_ITERATION_START_5 >= 484 +# define BOOST_PP_ITERATION_5 484 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 483 && BOOST_PP_ITERATION_START_5 >= 483 +# define BOOST_PP_ITERATION_5 483 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 482 && BOOST_PP_ITERATION_START_5 >= 482 +# define BOOST_PP_ITERATION_5 482 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 481 && BOOST_PP_ITERATION_START_5 >= 481 +# define BOOST_PP_ITERATION_5 481 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 480 && BOOST_PP_ITERATION_START_5 >= 480 +# define BOOST_PP_ITERATION_5 480 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 479 && BOOST_PP_ITERATION_START_5 >= 479 +# define BOOST_PP_ITERATION_5 479 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 478 && BOOST_PP_ITERATION_START_5 >= 478 +# define BOOST_PP_ITERATION_5 478 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 477 && BOOST_PP_ITERATION_START_5 >= 477 +# define BOOST_PP_ITERATION_5 477 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 476 && BOOST_PP_ITERATION_START_5 >= 476 +# define BOOST_PP_ITERATION_5 476 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 475 && BOOST_PP_ITERATION_START_5 >= 475 +# define BOOST_PP_ITERATION_5 475 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 474 && BOOST_PP_ITERATION_START_5 >= 474 +# define BOOST_PP_ITERATION_5 474 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 473 && BOOST_PP_ITERATION_START_5 >= 473 +# define BOOST_PP_ITERATION_5 473 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 472 && BOOST_PP_ITERATION_START_5 >= 472 +# define BOOST_PP_ITERATION_5 472 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 471 && BOOST_PP_ITERATION_START_5 >= 471 +# define BOOST_PP_ITERATION_5 471 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 470 && BOOST_PP_ITERATION_START_5 >= 470 +# define BOOST_PP_ITERATION_5 470 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 469 && BOOST_PP_ITERATION_START_5 >= 469 +# define BOOST_PP_ITERATION_5 469 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 468 && BOOST_PP_ITERATION_START_5 >= 468 +# define BOOST_PP_ITERATION_5 468 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 467 && BOOST_PP_ITERATION_START_5 >= 467 +# define BOOST_PP_ITERATION_5 467 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 466 && BOOST_PP_ITERATION_START_5 >= 466 +# define BOOST_PP_ITERATION_5 466 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 465 && BOOST_PP_ITERATION_START_5 >= 465 +# define BOOST_PP_ITERATION_5 465 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 464 && BOOST_PP_ITERATION_START_5 >= 464 +# define BOOST_PP_ITERATION_5 464 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 463 && BOOST_PP_ITERATION_START_5 >= 463 +# define BOOST_PP_ITERATION_5 463 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 462 && BOOST_PP_ITERATION_START_5 >= 462 +# define BOOST_PP_ITERATION_5 462 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 461 && BOOST_PP_ITERATION_START_5 >= 461 +# define BOOST_PP_ITERATION_5 461 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 460 && BOOST_PP_ITERATION_START_5 >= 460 +# define BOOST_PP_ITERATION_5 460 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 459 && BOOST_PP_ITERATION_START_5 >= 459 +# define BOOST_PP_ITERATION_5 459 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 458 && BOOST_PP_ITERATION_START_5 >= 458 +# define BOOST_PP_ITERATION_5 458 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 457 && BOOST_PP_ITERATION_START_5 >= 457 +# define BOOST_PP_ITERATION_5 457 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 456 && BOOST_PP_ITERATION_START_5 >= 456 +# define BOOST_PP_ITERATION_5 456 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 455 && BOOST_PP_ITERATION_START_5 >= 455 +# define BOOST_PP_ITERATION_5 455 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 454 && BOOST_PP_ITERATION_START_5 >= 454 +# define BOOST_PP_ITERATION_5 454 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 453 && BOOST_PP_ITERATION_START_5 >= 453 +# define BOOST_PP_ITERATION_5 453 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 452 && BOOST_PP_ITERATION_START_5 >= 452 +# define BOOST_PP_ITERATION_5 452 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 451 && BOOST_PP_ITERATION_START_5 >= 451 +# define BOOST_PP_ITERATION_5 451 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 450 && BOOST_PP_ITERATION_START_5 >= 450 +# define BOOST_PP_ITERATION_5 450 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 449 && BOOST_PP_ITERATION_START_5 >= 449 +# define BOOST_PP_ITERATION_5 449 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 448 && BOOST_PP_ITERATION_START_5 >= 448 +# define BOOST_PP_ITERATION_5 448 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 447 && BOOST_PP_ITERATION_START_5 >= 447 +# define BOOST_PP_ITERATION_5 447 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 446 && BOOST_PP_ITERATION_START_5 >= 446 +# define BOOST_PP_ITERATION_5 446 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 445 && BOOST_PP_ITERATION_START_5 >= 445 +# define BOOST_PP_ITERATION_5 445 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 444 && BOOST_PP_ITERATION_START_5 >= 444 +# define BOOST_PP_ITERATION_5 444 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 443 && BOOST_PP_ITERATION_START_5 >= 443 +# define BOOST_PP_ITERATION_5 443 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 442 && BOOST_PP_ITERATION_START_5 >= 442 +# define BOOST_PP_ITERATION_5 442 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 441 && BOOST_PP_ITERATION_START_5 >= 441 +# define BOOST_PP_ITERATION_5 441 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 440 && BOOST_PP_ITERATION_START_5 >= 440 +# define BOOST_PP_ITERATION_5 440 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 439 && BOOST_PP_ITERATION_START_5 >= 439 +# define BOOST_PP_ITERATION_5 439 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 438 && BOOST_PP_ITERATION_START_5 >= 438 +# define BOOST_PP_ITERATION_5 438 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 437 && BOOST_PP_ITERATION_START_5 >= 437 +# define BOOST_PP_ITERATION_5 437 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 436 && BOOST_PP_ITERATION_START_5 >= 436 +# define BOOST_PP_ITERATION_5 436 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 435 && BOOST_PP_ITERATION_START_5 >= 435 +# define BOOST_PP_ITERATION_5 435 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 434 && BOOST_PP_ITERATION_START_5 >= 434 +# define BOOST_PP_ITERATION_5 434 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 433 && BOOST_PP_ITERATION_START_5 >= 433 +# define BOOST_PP_ITERATION_5 433 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 432 && BOOST_PP_ITERATION_START_5 >= 432 +# define BOOST_PP_ITERATION_5 432 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 431 && BOOST_PP_ITERATION_START_5 >= 431 +# define BOOST_PP_ITERATION_5 431 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 430 && BOOST_PP_ITERATION_START_5 >= 430 +# define BOOST_PP_ITERATION_5 430 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 429 && BOOST_PP_ITERATION_START_5 >= 429 +# define BOOST_PP_ITERATION_5 429 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 428 && BOOST_PP_ITERATION_START_5 >= 428 +# define BOOST_PP_ITERATION_5 428 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 427 && BOOST_PP_ITERATION_START_5 >= 427 +# define BOOST_PP_ITERATION_5 427 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 426 && BOOST_PP_ITERATION_START_5 >= 426 +# define BOOST_PP_ITERATION_5 426 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 425 && BOOST_PP_ITERATION_START_5 >= 425 +# define BOOST_PP_ITERATION_5 425 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 424 && BOOST_PP_ITERATION_START_5 >= 424 +# define BOOST_PP_ITERATION_5 424 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 423 && BOOST_PP_ITERATION_START_5 >= 423 +# define BOOST_PP_ITERATION_5 423 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 422 && BOOST_PP_ITERATION_START_5 >= 422 +# define BOOST_PP_ITERATION_5 422 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 421 && BOOST_PP_ITERATION_START_5 >= 421 +# define BOOST_PP_ITERATION_5 421 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 420 && BOOST_PP_ITERATION_START_5 >= 420 +# define BOOST_PP_ITERATION_5 420 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 419 && BOOST_PP_ITERATION_START_5 >= 419 +# define BOOST_PP_ITERATION_5 419 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 418 && BOOST_PP_ITERATION_START_5 >= 418 +# define BOOST_PP_ITERATION_5 418 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 417 && BOOST_PP_ITERATION_START_5 >= 417 +# define BOOST_PP_ITERATION_5 417 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 416 && BOOST_PP_ITERATION_START_5 >= 416 +# define BOOST_PP_ITERATION_5 416 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 415 && BOOST_PP_ITERATION_START_5 >= 415 +# define BOOST_PP_ITERATION_5 415 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 414 && BOOST_PP_ITERATION_START_5 >= 414 +# define BOOST_PP_ITERATION_5 414 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 413 && BOOST_PP_ITERATION_START_5 >= 413 +# define BOOST_PP_ITERATION_5 413 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 412 && BOOST_PP_ITERATION_START_5 >= 412 +# define BOOST_PP_ITERATION_5 412 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 411 && BOOST_PP_ITERATION_START_5 >= 411 +# define BOOST_PP_ITERATION_5 411 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 410 && BOOST_PP_ITERATION_START_5 >= 410 +# define BOOST_PP_ITERATION_5 410 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 409 && BOOST_PP_ITERATION_START_5 >= 409 +# define BOOST_PP_ITERATION_5 409 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 408 && BOOST_PP_ITERATION_START_5 >= 408 +# define BOOST_PP_ITERATION_5 408 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 407 && BOOST_PP_ITERATION_START_5 >= 407 +# define BOOST_PP_ITERATION_5 407 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 406 && BOOST_PP_ITERATION_START_5 >= 406 +# define BOOST_PP_ITERATION_5 406 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 405 && BOOST_PP_ITERATION_START_5 >= 405 +# define BOOST_PP_ITERATION_5 405 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 404 && BOOST_PP_ITERATION_START_5 >= 404 +# define BOOST_PP_ITERATION_5 404 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 403 && BOOST_PP_ITERATION_START_5 >= 403 +# define BOOST_PP_ITERATION_5 403 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 402 && BOOST_PP_ITERATION_START_5 >= 402 +# define BOOST_PP_ITERATION_5 402 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 401 && BOOST_PP_ITERATION_START_5 >= 401 +# define BOOST_PP_ITERATION_5 401 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 400 && BOOST_PP_ITERATION_START_5 >= 400 +# define BOOST_PP_ITERATION_5 400 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 399 && BOOST_PP_ITERATION_START_5 >= 399 +# define BOOST_PP_ITERATION_5 399 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 398 && BOOST_PP_ITERATION_START_5 >= 398 +# define BOOST_PP_ITERATION_5 398 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 397 && BOOST_PP_ITERATION_START_5 >= 397 +# define BOOST_PP_ITERATION_5 397 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 396 && BOOST_PP_ITERATION_START_5 >= 396 +# define BOOST_PP_ITERATION_5 396 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 395 && BOOST_PP_ITERATION_START_5 >= 395 +# define BOOST_PP_ITERATION_5 395 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 394 && BOOST_PP_ITERATION_START_5 >= 394 +# define BOOST_PP_ITERATION_5 394 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 393 && BOOST_PP_ITERATION_START_5 >= 393 +# define BOOST_PP_ITERATION_5 393 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 392 && BOOST_PP_ITERATION_START_5 >= 392 +# define BOOST_PP_ITERATION_5 392 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 391 && BOOST_PP_ITERATION_START_5 >= 391 +# define BOOST_PP_ITERATION_5 391 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 390 && BOOST_PP_ITERATION_START_5 >= 390 +# define BOOST_PP_ITERATION_5 390 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 389 && BOOST_PP_ITERATION_START_5 >= 389 +# define BOOST_PP_ITERATION_5 389 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 388 && BOOST_PP_ITERATION_START_5 >= 388 +# define BOOST_PP_ITERATION_5 388 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 387 && BOOST_PP_ITERATION_START_5 >= 387 +# define BOOST_PP_ITERATION_5 387 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 386 && BOOST_PP_ITERATION_START_5 >= 386 +# define BOOST_PP_ITERATION_5 386 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 385 && BOOST_PP_ITERATION_START_5 >= 385 +# define BOOST_PP_ITERATION_5 385 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 384 && BOOST_PP_ITERATION_START_5 >= 384 +# define BOOST_PP_ITERATION_5 384 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 383 && BOOST_PP_ITERATION_START_5 >= 383 +# define BOOST_PP_ITERATION_5 383 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 382 && BOOST_PP_ITERATION_START_5 >= 382 +# define BOOST_PP_ITERATION_5 382 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 381 && BOOST_PP_ITERATION_START_5 >= 381 +# define BOOST_PP_ITERATION_5 381 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 380 && BOOST_PP_ITERATION_START_5 >= 380 +# define BOOST_PP_ITERATION_5 380 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 379 && BOOST_PP_ITERATION_START_5 >= 379 +# define BOOST_PP_ITERATION_5 379 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 378 && BOOST_PP_ITERATION_START_5 >= 378 +# define BOOST_PP_ITERATION_5 378 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 377 && BOOST_PP_ITERATION_START_5 >= 377 +# define BOOST_PP_ITERATION_5 377 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 376 && BOOST_PP_ITERATION_START_5 >= 376 +# define BOOST_PP_ITERATION_5 376 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 375 && BOOST_PP_ITERATION_START_5 >= 375 +# define BOOST_PP_ITERATION_5 375 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 374 && BOOST_PP_ITERATION_START_5 >= 374 +# define BOOST_PP_ITERATION_5 374 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 373 && BOOST_PP_ITERATION_START_5 >= 373 +# define BOOST_PP_ITERATION_5 373 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 372 && BOOST_PP_ITERATION_START_5 >= 372 +# define BOOST_PP_ITERATION_5 372 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 371 && BOOST_PP_ITERATION_START_5 >= 371 +# define BOOST_PP_ITERATION_5 371 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 370 && BOOST_PP_ITERATION_START_5 >= 370 +# define BOOST_PP_ITERATION_5 370 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 369 && BOOST_PP_ITERATION_START_5 >= 369 +# define BOOST_PP_ITERATION_5 369 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 368 && BOOST_PP_ITERATION_START_5 >= 368 +# define BOOST_PP_ITERATION_5 368 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 367 && BOOST_PP_ITERATION_START_5 >= 367 +# define BOOST_PP_ITERATION_5 367 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 366 && BOOST_PP_ITERATION_START_5 >= 366 +# define BOOST_PP_ITERATION_5 366 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 365 && BOOST_PP_ITERATION_START_5 >= 365 +# define BOOST_PP_ITERATION_5 365 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 364 && BOOST_PP_ITERATION_START_5 >= 364 +# define BOOST_PP_ITERATION_5 364 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 363 && BOOST_PP_ITERATION_START_5 >= 363 +# define BOOST_PP_ITERATION_5 363 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 362 && BOOST_PP_ITERATION_START_5 >= 362 +# define BOOST_PP_ITERATION_5 362 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 361 && BOOST_PP_ITERATION_START_5 >= 361 +# define BOOST_PP_ITERATION_5 361 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 360 && BOOST_PP_ITERATION_START_5 >= 360 +# define BOOST_PP_ITERATION_5 360 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 359 && BOOST_PP_ITERATION_START_5 >= 359 +# define BOOST_PP_ITERATION_5 359 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 358 && BOOST_PP_ITERATION_START_5 >= 358 +# define BOOST_PP_ITERATION_5 358 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 357 && BOOST_PP_ITERATION_START_5 >= 357 +# define BOOST_PP_ITERATION_5 357 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 356 && BOOST_PP_ITERATION_START_5 >= 356 +# define BOOST_PP_ITERATION_5 356 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 355 && BOOST_PP_ITERATION_START_5 >= 355 +# define BOOST_PP_ITERATION_5 355 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 354 && BOOST_PP_ITERATION_START_5 >= 354 +# define BOOST_PP_ITERATION_5 354 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 353 && BOOST_PP_ITERATION_START_5 >= 353 +# define BOOST_PP_ITERATION_5 353 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 352 && BOOST_PP_ITERATION_START_5 >= 352 +# define BOOST_PP_ITERATION_5 352 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 351 && BOOST_PP_ITERATION_START_5 >= 351 +# define BOOST_PP_ITERATION_5 351 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 350 && BOOST_PP_ITERATION_START_5 >= 350 +# define BOOST_PP_ITERATION_5 350 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 349 && BOOST_PP_ITERATION_START_5 >= 349 +# define BOOST_PP_ITERATION_5 349 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 348 && BOOST_PP_ITERATION_START_5 >= 348 +# define BOOST_PP_ITERATION_5 348 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 347 && BOOST_PP_ITERATION_START_5 >= 347 +# define BOOST_PP_ITERATION_5 347 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 346 && BOOST_PP_ITERATION_START_5 >= 346 +# define BOOST_PP_ITERATION_5 346 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 345 && BOOST_PP_ITERATION_START_5 >= 345 +# define BOOST_PP_ITERATION_5 345 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 344 && BOOST_PP_ITERATION_START_5 >= 344 +# define BOOST_PP_ITERATION_5 344 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 343 && BOOST_PP_ITERATION_START_5 >= 343 +# define BOOST_PP_ITERATION_5 343 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 342 && BOOST_PP_ITERATION_START_5 >= 342 +# define BOOST_PP_ITERATION_5 342 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 341 && BOOST_PP_ITERATION_START_5 >= 341 +# define BOOST_PP_ITERATION_5 341 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 340 && BOOST_PP_ITERATION_START_5 >= 340 +# define BOOST_PP_ITERATION_5 340 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 339 && BOOST_PP_ITERATION_START_5 >= 339 +# define BOOST_PP_ITERATION_5 339 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 338 && BOOST_PP_ITERATION_START_5 >= 338 +# define BOOST_PP_ITERATION_5 338 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 337 && BOOST_PP_ITERATION_START_5 >= 337 +# define BOOST_PP_ITERATION_5 337 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 336 && BOOST_PP_ITERATION_START_5 >= 336 +# define BOOST_PP_ITERATION_5 336 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 335 && BOOST_PP_ITERATION_START_5 >= 335 +# define BOOST_PP_ITERATION_5 335 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 334 && BOOST_PP_ITERATION_START_5 >= 334 +# define BOOST_PP_ITERATION_5 334 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 333 && BOOST_PP_ITERATION_START_5 >= 333 +# define BOOST_PP_ITERATION_5 333 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 332 && BOOST_PP_ITERATION_START_5 >= 332 +# define BOOST_PP_ITERATION_5 332 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 331 && BOOST_PP_ITERATION_START_5 >= 331 +# define BOOST_PP_ITERATION_5 331 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 330 && BOOST_PP_ITERATION_START_5 >= 330 +# define BOOST_PP_ITERATION_5 330 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 329 && BOOST_PP_ITERATION_START_5 >= 329 +# define BOOST_PP_ITERATION_5 329 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 328 && BOOST_PP_ITERATION_START_5 >= 328 +# define BOOST_PP_ITERATION_5 328 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 327 && BOOST_PP_ITERATION_START_5 >= 327 +# define BOOST_PP_ITERATION_5 327 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 326 && BOOST_PP_ITERATION_START_5 >= 326 +# define BOOST_PP_ITERATION_5 326 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 325 && BOOST_PP_ITERATION_START_5 >= 325 +# define BOOST_PP_ITERATION_5 325 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 324 && BOOST_PP_ITERATION_START_5 >= 324 +# define BOOST_PP_ITERATION_5 324 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 323 && BOOST_PP_ITERATION_START_5 >= 323 +# define BOOST_PP_ITERATION_5 323 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 322 && BOOST_PP_ITERATION_START_5 >= 322 +# define BOOST_PP_ITERATION_5 322 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 321 && BOOST_PP_ITERATION_START_5 >= 321 +# define BOOST_PP_ITERATION_5 321 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 320 && BOOST_PP_ITERATION_START_5 >= 320 +# define BOOST_PP_ITERATION_5 320 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 319 && BOOST_PP_ITERATION_START_5 >= 319 +# define BOOST_PP_ITERATION_5 319 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 318 && BOOST_PP_ITERATION_START_5 >= 318 +# define BOOST_PP_ITERATION_5 318 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 317 && BOOST_PP_ITERATION_START_5 >= 317 +# define BOOST_PP_ITERATION_5 317 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 316 && BOOST_PP_ITERATION_START_5 >= 316 +# define BOOST_PP_ITERATION_5 316 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 315 && BOOST_PP_ITERATION_START_5 >= 315 +# define BOOST_PP_ITERATION_5 315 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 314 && BOOST_PP_ITERATION_START_5 >= 314 +# define BOOST_PP_ITERATION_5 314 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 313 && BOOST_PP_ITERATION_START_5 >= 313 +# define BOOST_PP_ITERATION_5 313 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 312 && BOOST_PP_ITERATION_START_5 >= 312 +# define BOOST_PP_ITERATION_5 312 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 311 && BOOST_PP_ITERATION_START_5 >= 311 +# define BOOST_PP_ITERATION_5 311 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 310 && BOOST_PP_ITERATION_START_5 >= 310 +# define BOOST_PP_ITERATION_5 310 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 309 && BOOST_PP_ITERATION_START_5 >= 309 +# define BOOST_PP_ITERATION_5 309 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 308 && BOOST_PP_ITERATION_START_5 >= 308 +# define BOOST_PP_ITERATION_5 308 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 307 && BOOST_PP_ITERATION_START_5 >= 307 +# define BOOST_PP_ITERATION_5 307 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 306 && BOOST_PP_ITERATION_START_5 >= 306 +# define BOOST_PP_ITERATION_5 306 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 305 && BOOST_PP_ITERATION_START_5 >= 305 +# define BOOST_PP_ITERATION_5 305 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 304 && BOOST_PP_ITERATION_START_5 >= 304 +# define BOOST_PP_ITERATION_5 304 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 303 && BOOST_PP_ITERATION_START_5 >= 303 +# define BOOST_PP_ITERATION_5 303 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 302 && BOOST_PP_ITERATION_START_5 >= 302 +# define BOOST_PP_ITERATION_5 302 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 301 && BOOST_PP_ITERATION_START_5 >= 301 +# define BOOST_PP_ITERATION_5 301 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 300 && BOOST_PP_ITERATION_START_5 >= 300 +# define BOOST_PP_ITERATION_5 300 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 299 && BOOST_PP_ITERATION_START_5 >= 299 +# define BOOST_PP_ITERATION_5 299 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 298 && BOOST_PP_ITERATION_START_5 >= 298 +# define BOOST_PP_ITERATION_5 298 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 297 && BOOST_PP_ITERATION_START_5 >= 297 +# define BOOST_PP_ITERATION_5 297 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 296 && BOOST_PP_ITERATION_START_5 >= 296 +# define BOOST_PP_ITERATION_5 296 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 295 && BOOST_PP_ITERATION_START_5 >= 295 +# define BOOST_PP_ITERATION_5 295 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 294 && BOOST_PP_ITERATION_START_5 >= 294 +# define BOOST_PP_ITERATION_5 294 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 293 && BOOST_PP_ITERATION_START_5 >= 293 +# define BOOST_PP_ITERATION_5 293 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 292 && BOOST_PP_ITERATION_START_5 >= 292 +# define BOOST_PP_ITERATION_5 292 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 291 && BOOST_PP_ITERATION_START_5 >= 291 +# define BOOST_PP_ITERATION_5 291 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 290 && BOOST_PP_ITERATION_START_5 >= 290 +# define BOOST_PP_ITERATION_5 290 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 289 && BOOST_PP_ITERATION_START_5 >= 289 +# define BOOST_PP_ITERATION_5 289 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 288 && BOOST_PP_ITERATION_START_5 >= 288 +# define BOOST_PP_ITERATION_5 288 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 287 && BOOST_PP_ITERATION_START_5 >= 287 +# define BOOST_PP_ITERATION_5 287 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 286 && BOOST_PP_ITERATION_START_5 >= 286 +# define BOOST_PP_ITERATION_5 286 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 285 && BOOST_PP_ITERATION_START_5 >= 285 +# define BOOST_PP_ITERATION_5 285 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 284 && BOOST_PP_ITERATION_START_5 >= 284 +# define BOOST_PP_ITERATION_5 284 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 283 && BOOST_PP_ITERATION_START_5 >= 283 +# define BOOST_PP_ITERATION_5 283 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 282 && BOOST_PP_ITERATION_START_5 >= 282 +# define BOOST_PP_ITERATION_5 282 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 281 && BOOST_PP_ITERATION_START_5 >= 281 +# define BOOST_PP_ITERATION_5 281 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 280 && BOOST_PP_ITERATION_START_5 >= 280 +# define BOOST_PP_ITERATION_5 280 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 279 && BOOST_PP_ITERATION_START_5 >= 279 +# define BOOST_PP_ITERATION_5 279 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 278 && BOOST_PP_ITERATION_START_5 >= 278 +# define BOOST_PP_ITERATION_5 278 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 277 && BOOST_PP_ITERATION_START_5 >= 277 +# define BOOST_PP_ITERATION_5 277 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 276 && BOOST_PP_ITERATION_START_5 >= 276 +# define BOOST_PP_ITERATION_5 276 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 275 && BOOST_PP_ITERATION_START_5 >= 275 +# define BOOST_PP_ITERATION_5 275 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 274 && BOOST_PP_ITERATION_START_5 >= 274 +# define BOOST_PP_ITERATION_5 274 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 273 && BOOST_PP_ITERATION_START_5 >= 273 +# define BOOST_PP_ITERATION_5 273 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 272 && BOOST_PP_ITERATION_START_5 >= 272 +# define BOOST_PP_ITERATION_5 272 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 271 && BOOST_PP_ITERATION_START_5 >= 271 +# define BOOST_PP_ITERATION_5 271 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 270 && BOOST_PP_ITERATION_START_5 >= 270 +# define BOOST_PP_ITERATION_5 270 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 269 && BOOST_PP_ITERATION_START_5 >= 269 +# define BOOST_PP_ITERATION_5 269 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 268 && BOOST_PP_ITERATION_START_5 >= 268 +# define BOOST_PP_ITERATION_5 268 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 267 && BOOST_PP_ITERATION_START_5 >= 267 +# define BOOST_PP_ITERATION_5 267 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 266 && BOOST_PP_ITERATION_START_5 >= 266 +# define BOOST_PP_ITERATION_5 266 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 265 && BOOST_PP_ITERATION_START_5 >= 265 +# define BOOST_PP_ITERATION_5 265 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 264 && BOOST_PP_ITERATION_START_5 >= 264 +# define BOOST_PP_ITERATION_5 264 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 263 && BOOST_PP_ITERATION_START_5 >= 263 +# define BOOST_PP_ITERATION_5 263 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 262 && BOOST_PP_ITERATION_START_5 >= 262 +# define BOOST_PP_ITERATION_5 262 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 261 && BOOST_PP_ITERATION_START_5 >= 261 +# define BOOST_PP_ITERATION_5 261 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 260 && BOOST_PP_ITERATION_START_5 >= 260 +# define BOOST_PP_ITERATION_5 260 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 259 && BOOST_PP_ITERATION_START_5 >= 259 +# define BOOST_PP_ITERATION_5 259 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 258 && BOOST_PP_ITERATION_START_5 >= 258 +# define BOOST_PP_ITERATION_5 258 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif +# if BOOST_PP_ITERATION_FINISH_5 <= 257 && BOOST_PP_ITERATION_START_5 >= 257 +# define BOOST_PP_ITERATION_5 257 +# include BOOST_PP_FILENAME_5 +# undef BOOST_PP_ITERATION_5 +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/reverse1.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/reverse1.hpp index 558e85644..3d3547be6 100644 --- a/src/boost/boost/preprocessor/iteration/detail/iter/reverse1.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/iter/reverse1.hpp @@ -7,8 +7,14 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_ITERATION_FINISH_1 <= 256 && BOOST_PP_ITERATION_START_1 >= 256 # define BOOST_PP_ITERATION_1 256 # include BOOST_PP_FILENAME_1 @@ -1294,3 +1300,22 @@ # include BOOST_PP_FILENAME_1 # undef BOOST_PP_ITERATION_1 # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/reverse2.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/reverse2.hpp index c7841989b..cff4c0866 100644 --- a/src/boost/boost/preprocessor/iteration/detail/iter/reverse2.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/iter/reverse2.hpp @@ -7,8 +7,14 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_ITERATION_FINISH_2 <= 256 && BOOST_PP_ITERATION_START_2 >= 256 # define BOOST_PP_ITERATION_2 256 # include BOOST_PP_FILENAME_2 @@ -1294,3 +1300,22 @@ # include BOOST_PP_FILENAME_2 # undef BOOST_PP_ITERATION_2 # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/reverse3.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/reverse3.hpp index 189f77c58..4d91adfbd 100644 --- a/src/boost/boost/preprocessor/iteration/detail/iter/reverse3.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/iter/reverse3.hpp @@ -7,8 +7,14 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_ITERATION_FINISH_3 <= 256 && BOOST_PP_ITERATION_START_3 >= 256 # define BOOST_PP_ITERATION_3 256 # include BOOST_PP_FILENAME_3 @@ -1294,3 +1300,22 @@ # include BOOST_PP_FILENAME_3 # undef BOOST_PP_ITERATION_3 # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/reverse4.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/reverse4.hpp index aedceb3d8..2cc9f361c 100644 --- a/src/boost/boost/preprocessor/iteration/detail/iter/reverse4.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/iter/reverse4.hpp @@ -7,8 +7,14 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_ITERATION_FINISH_4 <= 256 && BOOST_PP_ITERATION_START_4 >= 256 # define BOOST_PP_ITERATION_4 256 # include BOOST_PP_FILENAME_4 @@ -1294,3 +1300,22 @@ # include BOOST_PP_FILENAME_4 # undef BOOST_PP_ITERATION_4 # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/iter/reverse5.hpp b/src/boost/boost/preprocessor/iteration/detail/iter/reverse5.hpp index ab99d1eaf..f1f60b577 100644 --- a/src/boost/boost/preprocessor/iteration/detail/iter/reverse5.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/iter/reverse5.hpp @@ -7,8 +7,14 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_ITERATION_FINISH_5 <= 256 && BOOST_PP_ITERATION_START_5 >= 256 # define BOOST_PP_ITERATION_5 256 # include BOOST_PP_FILENAME_5 @@ -1294,3 +1300,22 @@ # include BOOST_PP_FILENAME_5 # undef BOOST_PP_ITERATION_5 # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/limits/local_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/limits/local_1024.hpp new file mode 100644 index 000000000..f41a7648a --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/limits/local_1024.hpp @@ -0,0 +1,1549 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_LOCAL_C(513) + BOOST_PP_LOCAL_MACRO(513) +# endif +# if BOOST_PP_LOCAL_C(514) + BOOST_PP_LOCAL_MACRO(514) +# endif +# if BOOST_PP_LOCAL_C(515) + BOOST_PP_LOCAL_MACRO(515) +# endif +# if BOOST_PP_LOCAL_C(516) + BOOST_PP_LOCAL_MACRO(516) +# endif +# if BOOST_PP_LOCAL_C(517) + BOOST_PP_LOCAL_MACRO(517) +# endif +# if BOOST_PP_LOCAL_C(518) + BOOST_PP_LOCAL_MACRO(518) +# endif +# if BOOST_PP_LOCAL_C(519) + BOOST_PP_LOCAL_MACRO(519) +# endif +# if BOOST_PP_LOCAL_C(520) + BOOST_PP_LOCAL_MACRO(520) +# endif +# if BOOST_PP_LOCAL_C(521) + BOOST_PP_LOCAL_MACRO(521) +# endif +# if BOOST_PP_LOCAL_C(522) + BOOST_PP_LOCAL_MACRO(522) +# endif +# if BOOST_PP_LOCAL_C(523) + BOOST_PP_LOCAL_MACRO(523) +# endif +# if BOOST_PP_LOCAL_C(524) + BOOST_PP_LOCAL_MACRO(524) +# endif +# if BOOST_PP_LOCAL_C(525) + BOOST_PP_LOCAL_MACRO(525) +# endif +# if BOOST_PP_LOCAL_C(526) + BOOST_PP_LOCAL_MACRO(526) +# endif +# if BOOST_PP_LOCAL_C(527) + BOOST_PP_LOCAL_MACRO(527) +# endif +# if BOOST_PP_LOCAL_C(528) + BOOST_PP_LOCAL_MACRO(528) +# endif +# if BOOST_PP_LOCAL_C(529) + BOOST_PP_LOCAL_MACRO(529) +# endif +# if BOOST_PP_LOCAL_C(530) + BOOST_PP_LOCAL_MACRO(530) +# endif +# if BOOST_PP_LOCAL_C(531) + BOOST_PP_LOCAL_MACRO(531) +# endif +# if BOOST_PP_LOCAL_C(532) + BOOST_PP_LOCAL_MACRO(532) +# endif +# if BOOST_PP_LOCAL_C(533) + BOOST_PP_LOCAL_MACRO(533) +# endif +# if BOOST_PP_LOCAL_C(534) + BOOST_PP_LOCAL_MACRO(534) +# endif +# if BOOST_PP_LOCAL_C(535) + BOOST_PP_LOCAL_MACRO(535) +# endif +# if BOOST_PP_LOCAL_C(536) + BOOST_PP_LOCAL_MACRO(536) +# endif +# if BOOST_PP_LOCAL_C(537) + BOOST_PP_LOCAL_MACRO(537) +# endif +# if BOOST_PP_LOCAL_C(538) + BOOST_PP_LOCAL_MACRO(538) +# endif +# if BOOST_PP_LOCAL_C(539) + BOOST_PP_LOCAL_MACRO(539) +# endif +# if BOOST_PP_LOCAL_C(540) + BOOST_PP_LOCAL_MACRO(540) +# endif +# if BOOST_PP_LOCAL_C(541) + BOOST_PP_LOCAL_MACRO(541) +# endif +# if BOOST_PP_LOCAL_C(542) + BOOST_PP_LOCAL_MACRO(542) +# endif +# if BOOST_PP_LOCAL_C(543) + BOOST_PP_LOCAL_MACRO(543) +# endif +# if BOOST_PP_LOCAL_C(544) + BOOST_PP_LOCAL_MACRO(544) +# endif +# if BOOST_PP_LOCAL_C(545) + BOOST_PP_LOCAL_MACRO(545) +# endif +# if BOOST_PP_LOCAL_C(546) + BOOST_PP_LOCAL_MACRO(546) +# endif +# if BOOST_PP_LOCAL_C(547) + BOOST_PP_LOCAL_MACRO(547) +# endif +# if BOOST_PP_LOCAL_C(548) + BOOST_PP_LOCAL_MACRO(548) +# endif +# if BOOST_PP_LOCAL_C(549) + BOOST_PP_LOCAL_MACRO(549) +# endif +# if BOOST_PP_LOCAL_C(550) + BOOST_PP_LOCAL_MACRO(550) +# endif +# if BOOST_PP_LOCAL_C(551) + BOOST_PP_LOCAL_MACRO(551) +# endif +# if BOOST_PP_LOCAL_C(552) + BOOST_PP_LOCAL_MACRO(552) +# endif +# if BOOST_PP_LOCAL_C(553) + BOOST_PP_LOCAL_MACRO(553) +# endif +# if BOOST_PP_LOCAL_C(554) + BOOST_PP_LOCAL_MACRO(554) +# endif +# if BOOST_PP_LOCAL_C(555) + BOOST_PP_LOCAL_MACRO(555) +# endif +# if BOOST_PP_LOCAL_C(556) + BOOST_PP_LOCAL_MACRO(556) +# endif +# if BOOST_PP_LOCAL_C(557) + BOOST_PP_LOCAL_MACRO(557) +# endif +# if BOOST_PP_LOCAL_C(558) + BOOST_PP_LOCAL_MACRO(558) +# endif +# if BOOST_PP_LOCAL_C(559) + BOOST_PP_LOCAL_MACRO(559) +# endif +# if BOOST_PP_LOCAL_C(560) + BOOST_PP_LOCAL_MACRO(560) +# endif +# if BOOST_PP_LOCAL_C(561) + BOOST_PP_LOCAL_MACRO(561) +# endif +# if BOOST_PP_LOCAL_C(562) + BOOST_PP_LOCAL_MACRO(562) +# endif +# if BOOST_PP_LOCAL_C(563) + BOOST_PP_LOCAL_MACRO(563) +# endif +# if BOOST_PP_LOCAL_C(564) + BOOST_PP_LOCAL_MACRO(564) +# endif +# if BOOST_PP_LOCAL_C(565) + BOOST_PP_LOCAL_MACRO(565) +# endif +# if BOOST_PP_LOCAL_C(566) + BOOST_PP_LOCAL_MACRO(566) +# endif +# if BOOST_PP_LOCAL_C(567) + BOOST_PP_LOCAL_MACRO(567) +# endif +# if BOOST_PP_LOCAL_C(568) + BOOST_PP_LOCAL_MACRO(568) +# endif +# if BOOST_PP_LOCAL_C(569) + BOOST_PP_LOCAL_MACRO(569) +# endif +# if BOOST_PP_LOCAL_C(570) + BOOST_PP_LOCAL_MACRO(570) +# endif +# if BOOST_PP_LOCAL_C(571) + BOOST_PP_LOCAL_MACRO(571) +# endif +# if BOOST_PP_LOCAL_C(572) + BOOST_PP_LOCAL_MACRO(572) +# endif +# if BOOST_PP_LOCAL_C(573) + BOOST_PP_LOCAL_MACRO(573) +# endif +# if BOOST_PP_LOCAL_C(574) + BOOST_PP_LOCAL_MACRO(574) +# endif +# if BOOST_PP_LOCAL_C(575) + BOOST_PP_LOCAL_MACRO(575) +# endif +# if BOOST_PP_LOCAL_C(576) + BOOST_PP_LOCAL_MACRO(576) +# endif +# if BOOST_PP_LOCAL_C(577) + BOOST_PP_LOCAL_MACRO(577) +# endif +# if BOOST_PP_LOCAL_C(578) + BOOST_PP_LOCAL_MACRO(578) +# endif +# if BOOST_PP_LOCAL_C(579) + BOOST_PP_LOCAL_MACRO(579) +# endif +# if BOOST_PP_LOCAL_C(580) + BOOST_PP_LOCAL_MACRO(580) +# endif +# if BOOST_PP_LOCAL_C(581) + BOOST_PP_LOCAL_MACRO(581) +# endif +# if BOOST_PP_LOCAL_C(582) + BOOST_PP_LOCAL_MACRO(582) +# endif +# if BOOST_PP_LOCAL_C(583) + BOOST_PP_LOCAL_MACRO(583) +# endif +# if BOOST_PP_LOCAL_C(584) + BOOST_PP_LOCAL_MACRO(584) +# endif +# if BOOST_PP_LOCAL_C(585) + BOOST_PP_LOCAL_MACRO(585) +# endif +# if BOOST_PP_LOCAL_C(586) + BOOST_PP_LOCAL_MACRO(586) +# endif +# if BOOST_PP_LOCAL_C(587) + BOOST_PP_LOCAL_MACRO(587) +# endif +# if BOOST_PP_LOCAL_C(588) + BOOST_PP_LOCAL_MACRO(588) +# endif +# if BOOST_PP_LOCAL_C(589) + BOOST_PP_LOCAL_MACRO(589) +# endif +# if BOOST_PP_LOCAL_C(590) + BOOST_PP_LOCAL_MACRO(590) +# endif +# if BOOST_PP_LOCAL_C(591) + BOOST_PP_LOCAL_MACRO(591) +# endif +# if BOOST_PP_LOCAL_C(592) + BOOST_PP_LOCAL_MACRO(592) +# endif +# if BOOST_PP_LOCAL_C(593) + BOOST_PP_LOCAL_MACRO(593) +# endif +# if BOOST_PP_LOCAL_C(594) + BOOST_PP_LOCAL_MACRO(594) +# endif +# if BOOST_PP_LOCAL_C(595) + BOOST_PP_LOCAL_MACRO(595) +# endif +# if BOOST_PP_LOCAL_C(596) + BOOST_PP_LOCAL_MACRO(596) +# endif +# if BOOST_PP_LOCAL_C(597) + BOOST_PP_LOCAL_MACRO(597) +# endif +# if BOOST_PP_LOCAL_C(598) + BOOST_PP_LOCAL_MACRO(598) +# endif +# if BOOST_PP_LOCAL_C(599) + BOOST_PP_LOCAL_MACRO(599) +# endif +# if BOOST_PP_LOCAL_C(600) + BOOST_PP_LOCAL_MACRO(600) +# endif +# if BOOST_PP_LOCAL_C(601) + BOOST_PP_LOCAL_MACRO(601) +# endif +# if BOOST_PP_LOCAL_C(602) + BOOST_PP_LOCAL_MACRO(602) +# endif +# if BOOST_PP_LOCAL_C(603) + BOOST_PP_LOCAL_MACRO(603) +# endif +# if BOOST_PP_LOCAL_C(604) + BOOST_PP_LOCAL_MACRO(604) +# endif +# if BOOST_PP_LOCAL_C(605) + BOOST_PP_LOCAL_MACRO(605) +# endif +# if BOOST_PP_LOCAL_C(606) + BOOST_PP_LOCAL_MACRO(606) +# endif +# if BOOST_PP_LOCAL_C(607) + BOOST_PP_LOCAL_MACRO(607) +# endif +# if BOOST_PP_LOCAL_C(608) + BOOST_PP_LOCAL_MACRO(608) +# endif +# if BOOST_PP_LOCAL_C(609) + BOOST_PP_LOCAL_MACRO(609) +# endif +# if BOOST_PP_LOCAL_C(610) + BOOST_PP_LOCAL_MACRO(610) +# endif +# if BOOST_PP_LOCAL_C(611) + BOOST_PP_LOCAL_MACRO(611) +# endif +# if BOOST_PP_LOCAL_C(612) + BOOST_PP_LOCAL_MACRO(612) +# endif +# if BOOST_PP_LOCAL_C(613) + BOOST_PP_LOCAL_MACRO(613) +# endif +# if BOOST_PP_LOCAL_C(614) + BOOST_PP_LOCAL_MACRO(614) +# endif +# if BOOST_PP_LOCAL_C(615) + BOOST_PP_LOCAL_MACRO(615) +# endif +# if BOOST_PP_LOCAL_C(616) + BOOST_PP_LOCAL_MACRO(616) +# endif +# if BOOST_PP_LOCAL_C(617) + BOOST_PP_LOCAL_MACRO(617) +# endif +# if BOOST_PP_LOCAL_C(618) + BOOST_PP_LOCAL_MACRO(618) +# endif +# if BOOST_PP_LOCAL_C(619) + BOOST_PP_LOCAL_MACRO(619) +# endif +# if BOOST_PP_LOCAL_C(620) + BOOST_PP_LOCAL_MACRO(620) +# endif +# if BOOST_PP_LOCAL_C(621) + BOOST_PP_LOCAL_MACRO(621) +# endif +# if BOOST_PP_LOCAL_C(622) + BOOST_PP_LOCAL_MACRO(622) +# endif +# if BOOST_PP_LOCAL_C(623) + BOOST_PP_LOCAL_MACRO(623) +# endif +# if BOOST_PP_LOCAL_C(624) + BOOST_PP_LOCAL_MACRO(624) +# endif +# if BOOST_PP_LOCAL_C(625) + BOOST_PP_LOCAL_MACRO(625) +# endif +# if BOOST_PP_LOCAL_C(626) + BOOST_PP_LOCAL_MACRO(626) +# endif +# if BOOST_PP_LOCAL_C(627) + BOOST_PP_LOCAL_MACRO(627) +# endif +# if BOOST_PP_LOCAL_C(628) + BOOST_PP_LOCAL_MACRO(628) +# endif +# if BOOST_PP_LOCAL_C(629) + BOOST_PP_LOCAL_MACRO(629) +# endif +# if BOOST_PP_LOCAL_C(630) + BOOST_PP_LOCAL_MACRO(630) +# endif +# if BOOST_PP_LOCAL_C(631) + BOOST_PP_LOCAL_MACRO(631) +# endif +# if BOOST_PP_LOCAL_C(632) + BOOST_PP_LOCAL_MACRO(632) +# endif +# if BOOST_PP_LOCAL_C(633) + BOOST_PP_LOCAL_MACRO(633) +# endif +# if BOOST_PP_LOCAL_C(634) + BOOST_PP_LOCAL_MACRO(634) +# endif +# if BOOST_PP_LOCAL_C(635) + BOOST_PP_LOCAL_MACRO(635) +# endif +# if BOOST_PP_LOCAL_C(636) + BOOST_PP_LOCAL_MACRO(636) +# endif +# if BOOST_PP_LOCAL_C(637) + BOOST_PP_LOCAL_MACRO(637) +# endif +# if BOOST_PP_LOCAL_C(638) + BOOST_PP_LOCAL_MACRO(638) +# endif +# if BOOST_PP_LOCAL_C(639) + BOOST_PP_LOCAL_MACRO(639) +# endif +# if BOOST_PP_LOCAL_C(640) + BOOST_PP_LOCAL_MACRO(640) +# endif +# if BOOST_PP_LOCAL_C(641) + BOOST_PP_LOCAL_MACRO(641) +# endif +# if BOOST_PP_LOCAL_C(642) + BOOST_PP_LOCAL_MACRO(642) +# endif +# if BOOST_PP_LOCAL_C(643) + BOOST_PP_LOCAL_MACRO(643) +# endif +# if BOOST_PP_LOCAL_C(644) + BOOST_PP_LOCAL_MACRO(644) +# endif +# if BOOST_PP_LOCAL_C(645) + BOOST_PP_LOCAL_MACRO(645) +# endif +# if BOOST_PP_LOCAL_C(646) + BOOST_PP_LOCAL_MACRO(646) +# endif +# if BOOST_PP_LOCAL_C(647) + BOOST_PP_LOCAL_MACRO(647) +# endif +# if BOOST_PP_LOCAL_C(648) + BOOST_PP_LOCAL_MACRO(648) +# endif +# if BOOST_PP_LOCAL_C(649) + BOOST_PP_LOCAL_MACRO(649) +# endif +# if BOOST_PP_LOCAL_C(650) + BOOST_PP_LOCAL_MACRO(650) +# endif +# if BOOST_PP_LOCAL_C(651) + BOOST_PP_LOCAL_MACRO(651) +# endif +# if BOOST_PP_LOCAL_C(652) + BOOST_PP_LOCAL_MACRO(652) +# endif +# if BOOST_PP_LOCAL_C(653) + BOOST_PP_LOCAL_MACRO(653) +# endif +# if BOOST_PP_LOCAL_C(654) + BOOST_PP_LOCAL_MACRO(654) +# endif +# if BOOST_PP_LOCAL_C(655) + BOOST_PP_LOCAL_MACRO(655) +# endif +# if BOOST_PP_LOCAL_C(656) + BOOST_PP_LOCAL_MACRO(656) +# endif +# if BOOST_PP_LOCAL_C(657) + BOOST_PP_LOCAL_MACRO(657) +# endif +# if BOOST_PP_LOCAL_C(658) + BOOST_PP_LOCAL_MACRO(658) +# endif +# if BOOST_PP_LOCAL_C(659) + BOOST_PP_LOCAL_MACRO(659) +# endif +# if BOOST_PP_LOCAL_C(660) + BOOST_PP_LOCAL_MACRO(660) +# endif +# if BOOST_PP_LOCAL_C(661) + BOOST_PP_LOCAL_MACRO(661) +# endif +# if BOOST_PP_LOCAL_C(662) + BOOST_PP_LOCAL_MACRO(662) +# endif +# if BOOST_PP_LOCAL_C(663) + BOOST_PP_LOCAL_MACRO(663) +# endif +# if BOOST_PP_LOCAL_C(664) + BOOST_PP_LOCAL_MACRO(664) +# endif +# if BOOST_PP_LOCAL_C(665) + BOOST_PP_LOCAL_MACRO(665) +# endif +# if BOOST_PP_LOCAL_C(666) + BOOST_PP_LOCAL_MACRO(666) +# endif +# if BOOST_PP_LOCAL_C(667) + BOOST_PP_LOCAL_MACRO(667) +# endif +# if BOOST_PP_LOCAL_C(668) + BOOST_PP_LOCAL_MACRO(668) +# endif +# if BOOST_PP_LOCAL_C(669) + BOOST_PP_LOCAL_MACRO(669) +# endif +# if BOOST_PP_LOCAL_C(670) + BOOST_PP_LOCAL_MACRO(670) +# endif +# if BOOST_PP_LOCAL_C(671) + BOOST_PP_LOCAL_MACRO(671) +# endif +# if BOOST_PP_LOCAL_C(672) + BOOST_PP_LOCAL_MACRO(672) +# endif +# if BOOST_PP_LOCAL_C(673) + BOOST_PP_LOCAL_MACRO(673) +# endif +# if BOOST_PP_LOCAL_C(674) + BOOST_PP_LOCAL_MACRO(674) +# endif +# if BOOST_PP_LOCAL_C(675) + BOOST_PP_LOCAL_MACRO(675) +# endif +# if BOOST_PP_LOCAL_C(676) + BOOST_PP_LOCAL_MACRO(676) +# endif +# if BOOST_PP_LOCAL_C(677) + BOOST_PP_LOCAL_MACRO(677) +# endif +# if BOOST_PP_LOCAL_C(678) + BOOST_PP_LOCAL_MACRO(678) +# endif +# if BOOST_PP_LOCAL_C(679) + BOOST_PP_LOCAL_MACRO(679) +# endif +# if BOOST_PP_LOCAL_C(680) + BOOST_PP_LOCAL_MACRO(680) +# endif +# if BOOST_PP_LOCAL_C(681) + BOOST_PP_LOCAL_MACRO(681) +# endif +# if BOOST_PP_LOCAL_C(682) + BOOST_PP_LOCAL_MACRO(682) +# endif +# if BOOST_PP_LOCAL_C(683) + BOOST_PP_LOCAL_MACRO(683) +# endif +# if BOOST_PP_LOCAL_C(684) + BOOST_PP_LOCAL_MACRO(684) +# endif +# if BOOST_PP_LOCAL_C(685) + BOOST_PP_LOCAL_MACRO(685) +# endif +# if BOOST_PP_LOCAL_C(686) + BOOST_PP_LOCAL_MACRO(686) +# endif +# if BOOST_PP_LOCAL_C(687) + BOOST_PP_LOCAL_MACRO(687) +# endif +# if BOOST_PP_LOCAL_C(688) + BOOST_PP_LOCAL_MACRO(688) +# endif +# if BOOST_PP_LOCAL_C(689) + BOOST_PP_LOCAL_MACRO(689) +# endif +# if BOOST_PP_LOCAL_C(690) + BOOST_PP_LOCAL_MACRO(690) +# endif +# if BOOST_PP_LOCAL_C(691) + BOOST_PP_LOCAL_MACRO(691) +# endif +# if BOOST_PP_LOCAL_C(692) + BOOST_PP_LOCAL_MACRO(692) +# endif +# if BOOST_PP_LOCAL_C(693) + BOOST_PP_LOCAL_MACRO(693) +# endif +# if BOOST_PP_LOCAL_C(694) + BOOST_PP_LOCAL_MACRO(694) +# endif +# if BOOST_PP_LOCAL_C(695) + BOOST_PP_LOCAL_MACRO(695) +# endif +# if BOOST_PP_LOCAL_C(696) + BOOST_PP_LOCAL_MACRO(696) +# endif +# if BOOST_PP_LOCAL_C(697) + BOOST_PP_LOCAL_MACRO(697) +# endif +# if BOOST_PP_LOCAL_C(698) + BOOST_PP_LOCAL_MACRO(698) +# endif +# if BOOST_PP_LOCAL_C(699) + BOOST_PP_LOCAL_MACRO(699) +# endif +# if BOOST_PP_LOCAL_C(700) + BOOST_PP_LOCAL_MACRO(700) +# endif +# if BOOST_PP_LOCAL_C(701) + BOOST_PP_LOCAL_MACRO(701) +# endif +# if BOOST_PP_LOCAL_C(702) + BOOST_PP_LOCAL_MACRO(702) +# endif +# if BOOST_PP_LOCAL_C(703) + BOOST_PP_LOCAL_MACRO(703) +# endif +# if BOOST_PP_LOCAL_C(704) + BOOST_PP_LOCAL_MACRO(704) +# endif +# if BOOST_PP_LOCAL_C(705) + BOOST_PP_LOCAL_MACRO(705) +# endif +# if BOOST_PP_LOCAL_C(706) + BOOST_PP_LOCAL_MACRO(706) +# endif +# if BOOST_PP_LOCAL_C(707) + BOOST_PP_LOCAL_MACRO(707) +# endif +# if BOOST_PP_LOCAL_C(708) + BOOST_PP_LOCAL_MACRO(708) +# endif +# if BOOST_PP_LOCAL_C(709) + BOOST_PP_LOCAL_MACRO(709) +# endif +# if BOOST_PP_LOCAL_C(710) + BOOST_PP_LOCAL_MACRO(710) +# endif +# if BOOST_PP_LOCAL_C(711) + BOOST_PP_LOCAL_MACRO(711) +# endif +# if BOOST_PP_LOCAL_C(712) + BOOST_PP_LOCAL_MACRO(712) +# endif +# if BOOST_PP_LOCAL_C(713) + BOOST_PP_LOCAL_MACRO(713) +# endif +# if BOOST_PP_LOCAL_C(714) + BOOST_PP_LOCAL_MACRO(714) +# endif +# if BOOST_PP_LOCAL_C(715) + BOOST_PP_LOCAL_MACRO(715) +# endif +# if BOOST_PP_LOCAL_C(716) + BOOST_PP_LOCAL_MACRO(716) +# endif +# if BOOST_PP_LOCAL_C(717) + BOOST_PP_LOCAL_MACRO(717) +# endif +# if BOOST_PP_LOCAL_C(718) + BOOST_PP_LOCAL_MACRO(718) +# endif +# if BOOST_PP_LOCAL_C(719) + BOOST_PP_LOCAL_MACRO(719) +# endif +# if BOOST_PP_LOCAL_C(720) + BOOST_PP_LOCAL_MACRO(720) +# endif +# if BOOST_PP_LOCAL_C(721) + BOOST_PP_LOCAL_MACRO(721) +# endif +# if BOOST_PP_LOCAL_C(722) + BOOST_PP_LOCAL_MACRO(722) +# endif +# if BOOST_PP_LOCAL_C(723) + BOOST_PP_LOCAL_MACRO(723) +# endif +# if BOOST_PP_LOCAL_C(724) + BOOST_PP_LOCAL_MACRO(724) +# endif +# if BOOST_PP_LOCAL_C(725) + BOOST_PP_LOCAL_MACRO(725) +# endif +# if BOOST_PP_LOCAL_C(726) + BOOST_PP_LOCAL_MACRO(726) +# endif +# if BOOST_PP_LOCAL_C(727) + BOOST_PP_LOCAL_MACRO(727) +# endif +# if BOOST_PP_LOCAL_C(728) + BOOST_PP_LOCAL_MACRO(728) +# endif +# if BOOST_PP_LOCAL_C(729) + BOOST_PP_LOCAL_MACRO(729) +# endif +# if BOOST_PP_LOCAL_C(730) + BOOST_PP_LOCAL_MACRO(730) +# endif +# if BOOST_PP_LOCAL_C(731) + BOOST_PP_LOCAL_MACRO(731) +# endif +# if BOOST_PP_LOCAL_C(732) + BOOST_PP_LOCAL_MACRO(732) +# endif +# if BOOST_PP_LOCAL_C(733) + BOOST_PP_LOCAL_MACRO(733) +# endif +# if BOOST_PP_LOCAL_C(734) + BOOST_PP_LOCAL_MACRO(734) +# endif +# if BOOST_PP_LOCAL_C(735) + BOOST_PP_LOCAL_MACRO(735) +# endif +# if BOOST_PP_LOCAL_C(736) + BOOST_PP_LOCAL_MACRO(736) +# endif +# if BOOST_PP_LOCAL_C(737) + BOOST_PP_LOCAL_MACRO(737) +# endif +# if BOOST_PP_LOCAL_C(738) + BOOST_PP_LOCAL_MACRO(738) +# endif +# if BOOST_PP_LOCAL_C(739) + BOOST_PP_LOCAL_MACRO(739) +# endif +# if BOOST_PP_LOCAL_C(740) + BOOST_PP_LOCAL_MACRO(740) +# endif +# if BOOST_PP_LOCAL_C(741) + BOOST_PP_LOCAL_MACRO(741) +# endif +# if BOOST_PP_LOCAL_C(742) + BOOST_PP_LOCAL_MACRO(742) +# endif +# if BOOST_PP_LOCAL_C(743) + BOOST_PP_LOCAL_MACRO(743) +# endif +# if BOOST_PP_LOCAL_C(744) + BOOST_PP_LOCAL_MACRO(744) +# endif +# if BOOST_PP_LOCAL_C(745) + BOOST_PP_LOCAL_MACRO(745) +# endif +# if BOOST_PP_LOCAL_C(746) + BOOST_PP_LOCAL_MACRO(746) +# endif +# if BOOST_PP_LOCAL_C(747) + BOOST_PP_LOCAL_MACRO(747) +# endif +# if BOOST_PP_LOCAL_C(748) + BOOST_PP_LOCAL_MACRO(748) +# endif +# if BOOST_PP_LOCAL_C(749) + BOOST_PP_LOCAL_MACRO(749) +# endif +# if BOOST_PP_LOCAL_C(750) + BOOST_PP_LOCAL_MACRO(750) +# endif +# if BOOST_PP_LOCAL_C(751) + BOOST_PP_LOCAL_MACRO(751) +# endif +# if BOOST_PP_LOCAL_C(752) + BOOST_PP_LOCAL_MACRO(752) +# endif +# if BOOST_PP_LOCAL_C(753) + BOOST_PP_LOCAL_MACRO(753) +# endif +# if BOOST_PP_LOCAL_C(754) + BOOST_PP_LOCAL_MACRO(754) +# endif +# if BOOST_PP_LOCAL_C(755) + BOOST_PP_LOCAL_MACRO(755) +# endif +# if BOOST_PP_LOCAL_C(756) + BOOST_PP_LOCAL_MACRO(756) +# endif +# if BOOST_PP_LOCAL_C(757) + BOOST_PP_LOCAL_MACRO(757) +# endif +# if BOOST_PP_LOCAL_C(758) + BOOST_PP_LOCAL_MACRO(758) +# endif +# if BOOST_PP_LOCAL_C(759) + BOOST_PP_LOCAL_MACRO(759) +# endif +# if BOOST_PP_LOCAL_C(760) + BOOST_PP_LOCAL_MACRO(760) +# endif +# if BOOST_PP_LOCAL_C(761) + BOOST_PP_LOCAL_MACRO(761) +# endif +# if BOOST_PP_LOCAL_C(762) + BOOST_PP_LOCAL_MACRO(762) +# endif +# if BOOST_PP_LOCAL_C(763) + BOOST_PP_LOCAL_MACRO(763) +# endif +# if BOOST_PP_LOCAL_C(764) + BOOST_PP_LOCAL_MACRO(764) +# endif +# if BOOST_PP_LOCAL_C(765) + BOOST_PP_LOCAL_MACRO(765) +# endif +# if BOOST_PP_LOCAL_C(766) + BOOST_PP_LOCAL_MACRO(766) +# endif +# if BOOST_PP_LOCAL_C(767) + BOOST_PP_LOCAL_MACRO(767) +# endif +# if BOOST_PP_LOCAL_C(768) + BOOST_PP_LOCAL_MACRO(768) +# endif +# if BOOST_PP_LOCAL_C(769) + BOOST_PP_LOCAL_MACRO(769) +# endif +# if BOOST_PP_LOCAL_C(770) + BOOST_PP_LOCAL_MACRO(770) +# endif +# if BOOST_PP_LOCAL_C(771) + BOOST_PP_LOCAL_MACRO(771) +# endif +# if BOOST_PP_LOCAL_C(772) + BOOST_PP_LOCAL_MACRO(772) +# endif +# if BOOST_PP_LOCAL_C(773) + BOOST_PP_LOCAL_MACRO(773) +# endif +# if BOOST_PP_LOCAL_C(774) + BOOST_PP_LOCAL_MACRO(774) +# endif +# if BOOST_PP_LOCAL_C(775) + BOOST_PP_LOCAL_MACRO(775) +# endif +# if BOOST_PP_LOCAL_C(776) + BOOST_PP_LOCAL_MACRO(776) +# endif +# if BOOST_PP_LOCAL_C(777) + BOOST_PP_LOCAL_MACRO(777) +# endif +# if BOOST_PP_LOCAL_C(778) + BOOST_PP_LOCAL_MACRO(778) +# endif +# if BOOST_PP_LOCAL_C(779) + BOOST_PP_LOCAL_MACRO(779) +# endif +# if BOOST_PP_LOCAL_C(780) + BOOST_PP_LOCAL_MACRO(780) +# endif +# if BOOST_PP_LOCAL_C(781) + BOOST_PP_LOCAL_MACRO(781) +# endif +# if BOOST_PP_LOCAL_C(782) + BOOST_PP_LOCAL_MACRO(782) +# endif +# if BOOST_PP_LOCAL_C(783) + BOOST_PP_LOCAL_MACRO(783) +# endif +# if BOOST_PP_LOCAL_C(784) + BOOST_PP_LOCAL_MACRO(784) +# endif +# if BOOST_PP_LOCAL_C(785) + BOOST_PP_LOCAL_MACRO(785) +# endif +# if BOOST_PP_LOCAL_C(786) + BOOST_PP_LOCAL_MACRO(786) +# endif +# if BOOST_PP_LOCAL_C(787) + BOOST_PP_LOCAL_MACRO(787) +# endif +# if BOOST_PP_LOCAL_C(788) + BOOST_PP_LOCAL_MACRO(788) +# endif +# if BOOST_PP_LOCAL_C(789) + BOOST_PP_LOCAL_MACRO(789) +# endif +# if BOOST_PP_LOCAL_C(790) + BOOST_PP_LOCAL_MACRO(790) +# endif +# if BOOST_PP_LOCAL_C(791) + BOOST_PP_LOCAL_MACRO(791) +# endif +# if BOOST_PP_LOCAL_C(792) + BOOST_PP_LOCAL_MACRO(792) +# endif +# if BOOST_PP_LOCAL_C(793) + BOOST_PP_LOCAL_MACRO(793) +# endif +# if BOOST_PP_LOCAL_C(794) + BOOST_PP_LOCAL_MACRO(794) +# endif +# if BOOST_PP_LOCAL_C(795) + BOOST_PP_LOCAL_MACRO(795) +# endif +# if BOOST_PP_LOCAL_C(796) + BOOST_PP_LOCAL_MACRO(796) +# endif +# if BOOST_PP_LOCAL_C(797) + BOOST_PP_LOCAL_MACRO(797) +# endif +# if BOOST_PP_LOCAL_C(798) + BOOST_PP_LOCAL_MACRO(798) +# endif +# if BOOST_PP_LOCAL_C(799) + BOOST_PP_LOCAL_MACRO(799) +# endif +# if BOOST_PP_LOCAL_C(800) + BOOST_PP_LOCAL_MACRO(800) +# endif +# if BOOST_PP_LOCAL_C(801) + BOOST_PP_LOCAL_MACRO(801) +# endif +# if BOOST_PP_LOCAL_C(802) + BOOST_PP_LOCAL_MACRO(802) +# endif +# if BOOST_PP_LOCAL_C(803) + BOOST_PP_LOCAL_MACRO(803) +# endif +# if BOOST_PP_LOCAL_C(804) + BOOST_PP_LOCAL_MACRO(804) +# endif +# if BOOST_PP_LOCAL_C(805) + BOOST_PP_LOCAL_MACRO(805) +# endif +# if BOOST_PP_LOCAL_C(806) + BOOST_PP_LOCAL_MACRO(806) +# endif +# if BOOST_PP_LOCAL_C(807) + BOOST_PP_LOCAL_MACRO(807) +# endif +# if BOOST_PP_LOCAL_C(808) + BOOST_PP_LOCAL_MACRO(808) +# endif +# if BOOST_PP_LOCAL_C(809) + BOOST_PP_LOCAL_MACRO(809) +# endif +# if BOOST_PP_LOCAL_C(810) + BOOST_PP_LOCAL_MACRO(810) +# endif +# if BOOST_PP_LOCAL_C(811) + BOOST_PP_LOCAL_MACRO(811) +# endif +# if BOOST_PP_LOCAL_C(812) + BOOST_PP_LOCAL_MACRO(812) +# endif +# if BOOST_PP_LOCAL_C(813) + BOOST_PP_LOCAL_MACRO(813) +# endif +# if BOOST_PP_LOCAL_C(814) + BOOST_PP_LOCAL_MACRO(814) +# endif +# if BOOST_PP_LOCAL_C(815) + BOOST_PP_LOCAL_MACRO(815) +# endif +# if BOOST_PP_LOCAL_C(816) + BOOST_PP_LOCAL_MACRO(816) +# endif +# if BOOST_PP_LOCAL_C(817) + BOOST_PP_LOCAL_MACRO(817) +# endif +# if BOOST_PP_LOCAL_C(818) + BOOST_PP_LOCAL_MACRO(818) +# endif +# if BOOST_PP_LOCAL_C(819) + BOOST_PP_LOCAL_MACRO(819) +# endif +# if BOOST_PP_LOCAL_C(820) + BOOST_PP_LOCAL_MACRO(820) +# endif +# if BOOST_PP_LOCAL_C(821) + BOOST_PP_LOCAL_MACRO(821) +# endif +# if BOOST_PP_LOCAL_C(822) + BOOST_PP_LOCAL_MACRO(822) +# endif +# if BOOST_PP_LOCAL_C(823) + BOOST_PP_LOCAL_MACRO(823) +# endif +# if BOOST_PP_LOCAL_C(824) + BOOST_PP_LOCAL_MACRO(824) +# endif +# if BOOST_PP_LOCAL_C(825) + BOOST_PP_LOCAL_MACRO(825) +# endif +# if BOOST_PP_LOCAL_C(826) + BOOST_PP_LOCAL_MACRO(826) +# endif +# if BOOST_PP_LOCAL_C(827) + BOOST_PP_LOCAL_MACRO(827) +# endif +# if BOOST_PP_LOCAL_C(828) + BOOST_PP_LOCAL_MACRO(828) +# endif +# if BOOST_PP_LOCAL_C(829) + BOOST_PP_LOCAL_MACRO(829) +# endif +# if BOOST_PP_LOCAL_C(830) + BOOST_PP_LOCAL_MACRO(830) +# endif +# if BOOST_PP_LOCAL_C(831) + BOOST_PP_LOCAL_MACRO(831) +# endif +# if BOOST_PP_LOCAL_C(832) + BOOST_PP_LOCAL_MACRO(832) +# endif +# if BOOST_PP_LOCAL_C(833) + BOOST_PP_LOCAL_MACRO(833) +# endif +# if BOOST_PP_LOCAL_C(834) + BOOST_PP_LOCAL_MACRO(834) +# endif +# if BOOST_PP_LOCAL_C(835) + BOOST_PP_LOCAL_MACRO(835) +# endif +# if BOOST_PP_LOCAL_C(836) + BOOST_PP_LOCAL_MACRO(836) +# endif +# if BOOST_PP_LOCAL_C(837) + BOOST_PP_LOCAL_MACRO(837) +# endif +# if BOOST_PP_LOCAL_C(838) + BOOST_PP_LOCAL_MACRO(838) +# endif +# if BOOST_PP_LOCAL_C(839) + BOOST_PP_LOCAL_MACRO(839) +# endif +# if BOOST_PP_LOCAL_C(840) + BOOST_PP_LOCAL_MACRO(840) +# endif +# if BOOST_PP_LOCAL_C(841) + BOOST_PP_LOCAL_MACRO(841) +# endif +# if BOOST_PP_LOCAL_C(842) + BOOST_PP_LOCAL_MACRO(842) +# endif +# if BOOST_PP_LOCAL_C(843) + BOOST_PP_LOCAL_MACRO(843) +# endif +# if BOOST_PP_LOCAL_C(844) + BOOST_PP_LOCAL_MACRO(844) +# endif +# if BOOST_PP_LOCAL_C(845) + BOOST_PP_LOCAL_MACRO(845) +# endif +# if BOOST_PP_LOCAL_C(846) + BOOST_PP_LOCAL_MACRO(846) +# endif +# if BOOST_PP_LOCAL_C(847) + BOOST_PP_LOCAL_MACRO(847) +# endif +# if BOOST_PP_LOCAL_C(848) + BOOST_PP_LOCAL_MACRO(848) +# endif +# if BOOST_PP_LOCAL_C(849) + BOOST_PP_LOCAL_MACRO(849) +# endif +# if BOOST_PP_LOCAL_C(850) + BOOST_PP_LOCAL_MACRO(850) +# endif +# if BOOST_PP_LOCAL_C(851) + BOOST_PP_LOCAL_MACRO(851) +# endif +# if BOOST_PP_LOCAL_C(852) + BOOST_PP_LOCAL_MACRO(852) +# endif +# if BOOST_PP_LOCAL_C(853) + BOOST_PP_LOCAL_MACRO(853) +# endif +# if BOOST_PP_LOCAL_C(854) + BOOST_PP_LOCAL_MACRO(854) +# endif +# if BOOST_PP_LOCAL_C(855) + BOOST_PP_LOCAL_MACRO(855) +# endif +# if BOOST_PP_LOCAL_C(856) + BOOST_PP_LOCAL_MACRO(856) +# endif +# if BOOST_PP_LOCAL_C(857) + BOOST_PP_LOCAL_MACRO(857) +# endif +# if BOOST_PP_LOCAL_C(858) + BOOST_PP_LOCAL_MACRO(858) +# endif +# if BOOST_PP_LOCAL_C(859) + BOOST_PP_LOCAL_MACRO(859) +# endif +# if BOOST_PP_LOCAL_C(860) + BOOST_PP_LOCAL_MACRO(860) +# endif +# if BOOST_PP_LOCAL_C(861) + BOOST_PP_LOCAL_MACRO(861) +# endif +# if BOOST_PP_LOCAL_C(862) + BOOST_PP_LOCAL_MACRO(862) +# endif +# if BOOST_PP_LOCAL_C(863) + BOOST_PP_LOCAL_MACRO(863) +# endif +# if BOOST_PP_LOCAL_C(864) + BOOST_PP_LOCAL_MACRO(864) +# endif +# if BOOST_PP_LOCAL_C(865) + BOOST_PP_LOCAL_MACRO(865) +# endif +# if BOOST_PP_LOCAL_C(866) + BOOST_PP_LOCAL_MACRO(866) +# endif +# if BOOST_PP_LOCAL_C(867) + BOOST_PP_LOCAL_MACRO(867) +# endif +# if BOOST_PP_LOCAL_C(868) + BOOST_PP_LOCAL_MACRO(868) +# endif +# if BOOST_PP_LOCAL_C(869) + BOOST_PP_LOCAL_MACRO(869) +# endif +# if BOOST_PP_LOCAL_C(870) + BOOST_PP_LOCAL_MACRO(870) +# endif +# if BOOST_PP_LOCAL_C(871) + BOOST_PP_LOCAL_MACRO(871) +# endif +# if BOOST_PP_LOCAL_C(872) + BOOST_PP_LOCAL_MACRO(872) +# endif +# if BOOST_PP_LOCAL_C(873) + BOOST_PP_LOCAL_MACRO(873) +# endif +# if BOOST_PP_LOCAL_C(874) + BOOST_PP_LOCAL_MACRO(874) +# endif +# if BOOST_PP_LOCAL_C(875) + BOOST_PP_LOCAL_MACRO(875) +# endif +# if BOOST_PP_LOCAL_C(876) + BOOST_PP_LOCAL_MACRO(876) +# endif +# if BOOST_PP_LOCAL_C(877) + BOOST_PP_LOCAL_MACRO(877) +# endif +# if BOOST_PP_LOCAL_C(878) + BOOST_PP_LOCAL_MACRO(878) +# endif +# if BOOST_PP_LOCAL_C(879) + BOOST_PP_LOCAL_MACRO(879) +# endif +# if BOOST_PP_LOCAL_C(880) + BOOST_PP_LOCAL_MACRO(880) +# endif +# if BOOST_PP_LOCAL_C(881) + BOOST_PP_LOCAL_MACRO(881) +# endif +# if BOOST_PP_LOCAL_C(882) + BOOST_PP_LOCAL_MACRO(882) +# endif +# if BOOST_PP_LOCAL_C(883) + BOOST_PP_LOCAL_MACRO(883) +# endif +# if BOOST_PP_LOCAL_C(884) + BOOST_PP_LOCAL_MACRO(884) +# endif +# if BOOST_PP_LOCAL_C(885) + BOOST_PP_LOCAL_MACRO(885) +# endif +# if BOOST_PP_LOCAL_C(886) + BOOST_PP_LOCAL_MACRO(886) +# endif +# if BOOST_PP_LOCAL_C(887) + BOOST_PP_LOCAL_MACRO(887) +# endif +# if BOOST_PP_LOCAL_C(888) + BOOST_PP_LOCAL_MACRO(888) +# endif +# if BOOST_PP_LOCAL_C(889) + BOOST_PP_LOCAL_MACRO(889) +# endif +# if BOOST_PP_LOCAL_C(890) + BOOST_PP_LOCAL_MACRO(890) +# endif +# if BOOST_PP_LOCAL_C(891) + BOOST_PP_LOCAL_MACRO(891) +# endif +# if BOOST_PP_LOCAL_C(892) + BOOST_PP_LOCAL_MACRO(892) +# endif +# if BOOST_PP_LOCAL_C(893) + BOOST_PP_LOCAL_MACRO(893) +# endif +# if BOOST_PP_LOCAL_C(894) + BOOST_PP_LOCAL_MACRO(894) +# endif +# if BOOST_PP_LOCAL_C(895) + BOOST_PP_LOCAL_MACRO(895) +# endif +# if BOOST_PP_LOCAL_C(896) + BOOST_PP_LOCAL_MACRO(896) +# endif +# if BOOST_PP_LOCAL_C(897) + BOOST_PP_LOCAL_MACRO(897) +# endif +# if BOOST_PP_LOCAL_C(898) + BOOST_PP_LOCAL_MACRO(898) +# endif +# if BOOST_PP_LOCAL_C(899) + BOOST_PP_LOCAL_MACRO(899) +# endif +# if BOOST_PP_LOCAL_C(900) + BOOST_PP_LOCAL_MACRO(900) +# endif +# if BOOST_PP_LOCAL_C(901) + BOOST_PP_LOCAL_MACRO(901) +# endif +# if BOOST_PP_LOCAL_C(902) + BOOST_PP_LOCAL_MACRO(902) +# endif +# if BOOST_PP_LOCAL_C(903) + BOOST_PP_LOCAL_MACRO(903) +# endif +# if BOOST_PP_LOCAL_C(904) + BOOST_PP_LOCAL_MACRO(904) +# endif +# if BOOST_PP_LOCAL_C(905) + BOOST_PP_LOCAL_MACRO(905) +# endif +# if BOOST_PP_LOCAL_C(906) + BOOST_PP_LOCAL_MACRO(906) +# endif +# if BOOST_PP_LOCAL_C(907) + BOOST_PP_LOCAL_MACRO(907) +# endif +# if BOOST_PP_LOCAL_C(908) + BOOST_PP_LOCAL_MACRO(908) +# endif +# if BOOST_PP_LOCAL_C(909) + BOOST_PP_LOCAL_MACRO(909) +# endif +# if BOOST_PP_LOCAL_C(910) + BOOST_PP_LOCAL_MACRO(910) +# endif +# if BOOST_PP_LOCAL_C(911) + BOOST_PP_LOCAL_MACRO(911) +# endif +# if BOOST_PP_LOCAL_C(912) + BOOST_PP_LOCAL_MACRO(912) +# endif +# if BOOST_PP_LOCAL_C(913) + BOOST_PP_LOCAL_MACRO(913) +# endif +# if BOOST_PP_LOCAL_C(914) + BOOST_PP_LOCAL_MACRO(914) +# endif +# if BOOST_PP_LOCAL_C(915) + BOOST_PP_LOCAL_MACRO(915) +# endif +# if BOOST_PP_LOCAL_C(916) + BOOST_PP_LOCAL_MACRO(916) +# endif +# if BOOST_PP_LOCAL_C(917) + BOOST_PP_LOCAL_MACRO(917) +# endif +# if BOOST_PP_LOCAL_C(918) + BOOST_PP_LOCAL_MACRO(918) +# endif +# if BOOST_PP_LOCAL_C(919) + BOOST_PP_LOCAL_MACRO(919) +# endif +# if BOOST_PP_LOCAL_C(920) + BOOST_PP_LOCAL_MACRO(920) +# endif +# if BOOST_PP_LOCAL_C(921) + BOOST_PP_LOCAL_MACRO(921) +# endif +# if BOOST_PP_LOCAL_C(922) + BOOST_PP_LOCAL_MACRO(922) +# endif +# if BOOST_PP_LOCAL_C(923) + BOOST_PP_LOCAL_MACRO(923) +# endif +# if BOOST_PP_LOCAL_C(924) + BOOST_PP_LOCAL_MACRO(924) +# endif +# if BOOST_PP_LOCAL_C(925) + BOOST_PP_LOCAL_MACRO(925) +# endif +# if BOOST_PP_LOCAL_C(926) + BOOST_PP_LOCAL_MACRO(926) +# endif +# if BOOST_PP_LOCAL_C(927) + BOOST_PP_LOCAL_MACRO(927) +# endif +# if BOOST_PP_LOCAL_C(928) + BOOST_PP_LOCAL_MACRO(928) +# endif +# if BOOST_PP_LOCAL_C(929) + BOOST_PP_LOCAL_MACRO(929) +# endif +# if BOOST_PP_LOCAL_C(930) + BOOST_PP_LOCAL_MACRO(930) +# endif +# if BOOST_PP_LOCAL_C(931) + BOOST_PP_LOCAL_MACRO(931) +# endif +# if BOOST_PP_LOCAL_C(932) + BOOST_PP_LOCAL_MACRO(932) +# endif +# if BOOST_PP_LOCAL_C(933) + BOOST_PP_LOCAL_MACRO(933) +# endif +# if BOOST_PP_LOCAL_C(934) + BOOST_PP_LOCAL_MACRO(934) +# endif +# if BOOST_PP_LOCAL_C(935) + BOOST_PP_LOCAL_MACRO(935) +# endif +# if BOOST_PP_LOCAL_C(936) + BOOST_PP_LOCAL_MACRO(936) +# endif +# if BOOST_PP_LOCAL_C(937) + BOOST_PP_LOCAL_MACRO(937) +# endif +# if BOOST_PP_LOCAL_C(938) + BOOST_PP_LOCAL_MACRO(938) +# endif +# if BOOST_PP_LOCAL_C(939) + BOOST_PP_LOCAL_MACRO(939) +# endif +# if BOOST_PP_LOCAL_C(940) + BOOST_PP_LOCAL_MACRO(940) +# endif +# if BOOST_PP_LOCAL_C(941) + BOOST_PP_LOCAL_MACRO(941) +# endif +# if BOOST_PP_LOCAL_C(942) + BOOST_PP_LOCAL_MACRO(942) +# endif +# if BOOST_PP_LOCAL_C(943) + BOOST_PP_LOCAL_MACRO(943) +# endif +# if BOOST_PP_LOCAL_C(944) + BOOST_PP_LOCAL_MACRO(944) +# endif +# if BOOST_PP_LOCAL_C(945) + BOOST_PP_LOCAL_MACRO(945) +# endif +# if BOOST_PP_LOCAL_C(946) + BOOST_PP_LOCAL_MACRO(946) +# endif +# if BOOST_PP_LOCAL_C(947) + BOOST_PP_LOCAL_MACRO(947) +# endif +# if BOOST_PP_LOCAL_C(948) + BOOST_PP_LOCAL_MACRO(948) +# endif +# if BOOST_PP_LOCAL_C(949) + BOOST_PP_LOCAL_MACRO(949) +# endif +# if BOOST_PP_LOCAL_C(950) + BOOST_PP_LOCAL_MACRO(950) +# endif +# if BOOST_PP_LOCAL_C(951) + BOOST_PP_LOCAL_MACRO(951) +# endif +# if BOOST_PP_LOCAL_C(952) + BOOST_PP_LOCAL_MACRO(952) +# endif +# if BOOST_PP_LOCAL_C(953) + BOOST_PP_LOCAL_MACRO(953) +# endif +# if BOOST_PP_LOCAL_C(954) + BOOST_PP_LOCAL_MACRO(954) +# endif +# if BOOST_PP_LOCAL_C(955) + BOOST_PP_LOCAL_MACRO(955) +# endif +# if BOOST_PP_LOCAL_C(956) + BOOST_PP_LOCAL_MACRO(956) +# endif +# if BOOST_PP_LOCAL_C(957) + BOOST_PP_LOCAL_MACRO(957) +# endif +# if BOOST_PP_LOCAL_C(958) + BOOST_PP_LOCAL_MACRO(958) +# endif +# if BOOST_PP_LOCAL_C(959) + BOOST_PP_LOCAL_MACRO(959) +# endif +# if BOOST_PP_LOCAL_C(960) + BOOST_PP_LOCAL_MACRO(960) +# endif +# if BOOST_PP_LOCAL_C(961) + BOOST_PP_LOCAL_MACRO(961) +# endif +# if BOOST_PP_LOCAL_C(962) + BOOST_PP_LOCAL_MACRO(962) +# endif +# if BOOST_PP_LOCAL_C(963) + BOOST_PP_LOCAL_MACRO(963) +# endif +# if BOOST_PP_LOCAL_C(964) + BOOST_PP_LOCAL_MACRO(964) +# endif +# if BOOST_PP_LOCAL_C(965) + BOOST_PP_LOCAL_MACRO(965) +# endif +# if BOOST_PP_LOCAL_C(966) + BOOST_PP_LOCAL_MACRO(966) +# endif +# if BOOST_PP_LOCAL_C(967) + BOOST_PP_LOCAL_MACRO(967) +# endif +# if BOOST_PP_LOCAL_C(968) + BOOST_PP_LOCAL_MACRO(968) +# endif +# if BOOST_PP_LOCAL_C(969) + BOOST_PP_LOCAL_MACRO(969) +# endif +# if BOOST_PP_LOCAL_C(970) + BOOST_PP_LOCAL_MACRO(970) +# endif +# if BOOST_PP_LOCAL_C(971) + BOOST_PP_LOCAL_MACRO(971) +# endif +# if BOOST_PP_LOCAL_C(972) + BOOST_PP_LOCAL_MACRO(972) +# endif +# if BOOST_PP_LOCAL_C(973) + BOOST_PP_LOCAL_MACRO(973) +# endif +# if BOOST_PP_LOCAL_C(974) + BOOST_PP_LOCAL_MACRO(974) +# endif +# if BOOST_PP_LOCAL_C(975) + BOOST_PP_LOCAL_MACRO(975) +# endif +# if BOOST_PP_LOCAL_C(976) + BOOST_PP_LOCAL_MACRO(976) +# endif +# if BOOST_PP_LOCAL_C(977) + BOOST_PP_LOCAL_MACRO(977) +# endif +# if BOOST_PP_LOCAL_C(978) + BOOST_PP_LOCAL_MACRO(978) +# endif +# if BOOST_PP_LOCAL_C(979) + BOOST_PP_LOCAL_MACRO(979) +# endif +# if BOOST_PP_LOCAL_C(980) + BOOST_PP_LOCAL_MACRO(980) +# endif +# if BOOST_PP_LOCAL_C(981) + BOOST_PP_LOCAL_MACRO(981) +# endif +# if BOOST_PP_LOCAL_C(982) + BOOST_PP_LOCAL_MACRO(982) +# endif +# if BOOST_PP_LOCAL_C(983) + BOOST_PP_LOCAL_MACRO(983) +# endif +# if BOOST_PP_LOCAL_C(984) + BOOST_PP_LOCAL_MACRO(984) +# endif +# if BOOST_PP_LOCAL_C(985) + BOOST_PP_LOCAL_MACRO(985) +# endif +# if BOOST_PP_LOCAL_C(986) + BOOST_PP_LOCAL_MACRO(986) +# endif +# if BOOST_PP_LOCAL_C(987) + BOOST_PP_LOCAL_MACRO(987) +# endif +# if BOOST_PP_LOCAL_C(988) + BOOST_PP_LOCAL_MACRO(988) +# endif +# if BOOST_PP_LOCAL_C(989) + BOOST_PP_LOCAL_MACRO(989) +# endif +# if BOOST_PP_LOCAL_C(990) + BOOST_PP_LOCAL_MACRO(990) +# endif +# if BOOST_PP_LOCAL_C(991) + BOOST_PP_LOCAL_MACRO(991) +# endif +# if BOOST_PP_LOCAL_C(992) + BOOST_PP_LOCAL_MACRO(992) +# endif +# if BOOST_PP_LOCAL_C(993) + BOOST_PP_LOCAL_MACRO(993) +# endif +# if BOOST_PP_LOCAL_C(994) + BOOST_PP_LOCAL_MACRO(994) +# endif +# if BOOST_PP_LOCAL_C(995) + BOOST_PP_LOCAL_MACRO(995) +# endif +# if BOOST_PP_LOCAL_C(996) + BOOST_PP_LOCAL_MACRO(996) +# endif +# if BOOST_PP_LOCAL_C(997) + BOOST_PP_LOCAL_MACRO(997) +# endif +# if BOOST_PP_LOCAL_C(998) + BOOST_PP_LOCAL_MACRO(998) +# endif +# if BOOST_PP_LOCAL_C(999) + BOOST_PP_LOCAL_MACRO(999) +# endif +# if BOOST_PP_LOCAL_C(1000) + BOOST_PP_LOCAL_MACRO(1000) +# endif +# if BOOST_PP_LOCAL_C(1001) + BOOST_PP_LOCAL_MACRO(1001) +# endif +# if BOOST_PP_LOCAL_C(1002) + BOOST_PP_LOCAL_MACRO(1002) +# endif +# if BOOST_PP_LOCAL_C(1003) + BOOST_PP_LOCAL_MACRO(1003) +# endif +# if BOOST_PP_LOCAL_C(1004) + BOOST_PP_LOCAL_MACRO(1004) +# endif +# if BOOST_PP_LOCAL_C(1005) + BOOST_PP_LOCAL_MACRO(1005) +# endif +# if BOOST_PP_LOCAL_C(1006) + BOOST_PP_LOCAL_MACRO(1006) +# endif +# if BOOST_PP_LOCAL_C(1007) + BOOST_PP_LOCAL_MACRO(1007) +# endif +# if BOOST_PP_LOCAL_C(1008) + BOOST_PP_LOCAL_MACRO(1008) +# endif +# if BOOST_PP_LOCAL_C(1009) + BOOST_PP_LOCAL_MACRO(1009) +# endif +# if BOOST_PP_LOCAL_C(1010) + BOOST_PP_LOCAL_MACRO(1010) +# endif +# if BOOST_PP_LOCAL_C(1011) + BOOST_PP_LOCAL_MACRO(1011) +# endif +# if BOOST_PP_LOCAL_C(1012) + BOOST_PP_LOCAL_MACRO(1012) +# endif +# if BOOST_PP_LOCAL_C(1013) + BOOST_PP_LOCAL_MACRO(1013) +# endif +# if BOOST_PP_LOCAL_C(1014) + BOOST_PP_LOCAL_MACRO(1014) +# endif +# if BOOST_PP_LOCAL_C(1015) + BOOST_PP_LOCAL_MACRO(1015) +# endif +# if BOOST_PP_LOCAL_C(1016) + BOOST_PP_LOCAL_MACRO(1016) +# endif +# if BOOST_PP_LOCAL_C(1017) + BOOST_PP_LOCAL_MACRO(1017) +# endif +# if BOOST_PP_LOCAL_C(1018) + BOOST_PP_LOCAL_MACRO(1018) +# endif +# if BOOST_PP_LOCAL_C(1019) + BOOST_PP_LOCAL_MACRO(1019) +# endif +# if BOOST_PP_LOCAL_C(1020) + BOOST_PP_LOCAL_MACRO(1020) +# endif +# if BOOST_PP_LOCAL_C(1021) + BOOST_PP_LOCAL_MACRO(1021) +# endif +# if BOOST_PP_LOCAL_C(1022) + BOOST_PP_LOCAL_MACRO(1022) +# endif +# if BOOST_PP_LOCAL_C(1023) + BOOST_PP_LOCAL_MACRO(1023) +# endif +# if BOOST_PP_LOCAL_C(1024) + BOOST_PP_LOCAL_MACRO(1024) +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/limits/local_256.hpp b/src/boost/boost/preprocessor/iteration/detail/limits/local_256.hpp new file mode 100644 index 000000000..4759c3598 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/limits/local_256.hpp @@ -0,0 +1,782 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_LOCAL_C(0) + BOOST_PP_LOCAL_MACRO(0) +# endif +# if BOOST_PP_LOCAL_C(1) + BOOST_PP_LOCAL_MACRO(1) +# endif +# if BOOST_PP_LOCAL_C(2) + BOOST_PP_LOCAL_MACRO(2) +# endif +# if BOOST_PP_LOCAL_C(3) + BOOST_PP_LOCAL_MACRO(3) +# endif +# if BOOST_PP_LOCAL_C(4) + BOOST_PP_LOCAL_MACRO(4) +# endif +# if BOOST_PP_LOCAL_C(5) + BOOST_PP_LOCAL_MACRO(5) +# endif +# if BOOST_PP_LOCAL_C(6) + BOOST_PP_LOCAL_MACRO(6) +# endif +# if BOOST_PP_LOCAL_C(7) + BOOST_PP_LOCAL_MACRO(7) +# endif +# if BOOST_PP_LOCAL_C(8) + BOOST_PP_LOCAL_MACRO(8) +# endif +# if BOOST_PP_LOCAL_C(9) + BOOST_PP_LOCAL_MACRO(9) +# endif +# if BOOST_PP_LOCAL_C(10) + BOOST_PP_LOCAL_MACRO(10) +# endif +# if BOOST_PP_LOCAL_C(11) + BOOST_PP_LOCAL_MACRO(11) +# endif +# if BOOST_PP_LOCAL_C(12) + BOOST_PP_LOCAL_MACRO(12) +# endif +# if BOOST_PP_LOCAL_C(13) + BOOST_PP_LOCAL_MACRO(13) +# endif +# if BOOST_PP_LOCAL_C(14) + BOOST_PP_LOCAL_MACRO(14) +# endif +# if BOOST_PP_LOCAL_C(15) + BOOST_PP_LOCAL_MACRO(15) +# endif +# if BOOST_PP_LOCAL_C(16) + BOOST_PP_LOCAL_MACRO(16) +# endif +# if BOOST_PP_LOCAL_C(17) + BOOST_PP_LOCAL_MACRO(17) +# endif +# if BOOST_PP_LOCAL_C(18) + BOOST_PP_LOCAL_MACRO(18) +# endif +# if BOOST_PP_LOCAL_C(19) + BOOST_PP_LOCAL_MACRO(19) +# endif +# if BOOST_PP_LOCAL_C(20) + BOOST_PP_LOCAL_MACRO(20) +# endif +# if BOOST_PP_LOCAL_C(21) + BOOST_PP_LOCAL_MACRO(21) +# endif +# if BOOST_PP_LOCAL_C(22) + BOOST_PP_LOCAL_MACRO(22) +# endif +# if BOOST_PP_LOCAL_C(23) + BOOST_PP_LOCAL_MACRO(23) +# endif +# if BOOST_PP_LOCAL_C(24) + BOOST_PP_LOCAL_MACRO(24) +# endif +# if BOOST_PP_LOCAL_C(25) + BOOST_PP_LOCAL_MACRO(25) +# endif +# if BOOST_PP_LOCAL_C(26) + BOOST_PP_LOCAL_MACRO(26) +# endif +# if BOOST_PP_LOCAL_C(27) + BOOST_PP_LOCAL_MACRO(27) +# endif +# if BOOST_PP_LOCAL_C(28) + BOOST_PP_LOCAL_MACRO(28) +# endif +# if BOOST_PP_LOCAL_C(29) + BOOST_PP_LOCAL_MACRO(29) +# endif +# if BOOST_PP_LOCAL_C(30) + BOOST_PP_LOCAL_MACRO(30) +# endif +# if BOOST_PP_LOCAL_C(31) + BOOST_PP_LOCAL_MACRO(31) +# endif +# if BOOST_PP_LOCAL_C(32) + BOOST_PP_LOCAL_MACRO(32) +# endif +# if BOOST_PP_LOCAL_C(33) + BOOST_PP_LOCAL_MACRO(33) +# endif +# if BOOST_PP_LOCAL_C(34) + BOOST_PP_LOCAL_MACRO(34) +# endif +# if BOOST_PP_LOCAL_C(35) + BOOST_PP_LOCAL_MACRO(35) +# endif +# if BOOST_PP_LOCAL_C(36) + BOOST_PP_LOCAL_MACRO(36) +# endif +# if BOOST_PP_LOCAL_C(37) + BOOST_PP_LOCAL_MACRO(37) +# endif +# if BOOST_PP_LOCAL_C(38) + BOOST_PP_LOCAL_MACRO(38) +# endif +# if BOOST_PP_LOCAL_C(39) + BOOST_PP_LOCAL_MACRO(39) +# endif +# if BOOST_PP_LOCAL_C(40) + BOOST_PP_LOCAL_MACRO(40) +# endif +# if BOOST_PP_LOCAL_C(41) + BOOST_PP_LOCAL_MACRO(41) +# endif +# if BOOST_PP_LOCAL_C(42) + BOOST_PP_LOCAL_MACRO(42) +# endif +# if BOOST_PP_LOCAL_C(43) + BOOST_PP_LOCAL_MACRO(43) +# endif +# if BOOST_PP_LOCAL_C(44) + BOOST_PP_LOCAL_MACRO(44) +# endif +# if BOOST_PP_LOCAL_C(45) + BOOST_PP_LOCAL_MACRO(45) +# endif +# if BOOST_PP_LOCAL_C(46) + BOOST_PP_LOCAL_MACRO(46) +# endif +# if BOOST_PP_LOCAL_C(47) + BOOST_PP_LOCAL_MACRO(47) +# endif +# if BOOST_PP_LOCAL_C(48) + BOOST_PP_LOCAL_MACRO(48) +# endif +# if BOOST_PP_LOCAL_C(49) + BOOST_PP_LOCAL_MACRO(49) +# endif +# if BOOST_PP_LOCAL_C(50) + BOOST_PP_LOCAL_MACRO(50) +# endif +# if BOOST_PP_LOCAL_C(51) + BOOST_PP_LOCAL_MACRO(51) +# endif +# if BOOST_PP_LOCAL_C(52) + BOOST_PP_LOCAL_MACRO(52) +# endif +# if BOOST_PP_LOCAL_C(53) + BOOST_PP_LOCAL_MACRO(53) +# endif +# if BOOST_PP_LOCAL_C(54) + BOOST_PP_LOCAL_MACRO(54) +# endif +# if BOOST_PP_LOCAL_C(55) + BOOST_PP_LOCAL_MACRO(55) +# endif +# if BOOST_PP_LOCAL_C(56) + BOOST_PP_LOCAL_MACRO(56) +# endif +# if BOOST_PP_LOCAL_C(57) + BOOST_PP_LOCAL_MACRO(57) +# endif +# if BOOST_PP_LOCAL_C(58) + BOOST_PP_LOCAL_MACRO(58) +# endif +# if BOOST_PP_LOCAL_C(59) + BOOST_PP_LOCAL_MACRO(59) +# endif +# if BOOST_PP_LOCAL_C(60) + BOOST_PP_LOCAL_MACRO(60) +# endif +# if BOOST_PP_LOCAL_C(61) + BOOST_PP_LOCAL_MACRO(61) +# endif +# if BOOST_PP_LOCAL_C(62) + BOOST_PP_LOCAL_MACRO(62) +# endif +# if BOOST_PP_LOCAL_C(63) + BOOST_PP_LOCAL_MACRO(63) +# endif +# if BOOST_PP_LOCAL_C(64) + BOOST_PP_LOCAL_MACRO(64) +# endif +# if BOOST_PP_LOCAL_C(65) + BOOST_PP_LOCAL_MACRO(65) +# endif +# if BOOST_PP_LOCAL_C(66) + BOOST_PP_LOCAL_MACRO(66) +# endif +# if BOOST_PP_LOCAL_C(67) + BOOST_PP_LOCAL_MACRO(67) +# endif +# if BOOST_PP_LOCAL_C(68) + BOOST_PP_LOCAL_MACRO(68) +# endif +# if BOOST_PP_LOCAL_C(69) + BOOST_PP_LOCAL_MACRO(69) +# endif +# if BOOST_PP_LOCAL_C(70) + BOOST_PP_LOCAL_MACRO(70) +# endif +# if BOOST_PP_LOCAL_C(71) + BOOST_PP_LOCAL_MACRO(71) +# endif +# if BOOST_PP_LOCAL_C(72) + BOOST_PP_LOCAL_MACRO(72) +# endif +# if BOOST_PP_LOCAL_C(73) + BOOST_PP_LOCAL_MACRO(73) +# endif +# if BOOST_PP_LOCAL_C(74) + BOOST_PP_LOCAL_MACRO(74) +# endif +# if BOOST_PP_LOCAL_C(75) + BOOST_PP_LOCAL_MACRO(75) +# endif +# if BOOST_PP_LOCAL_C(76) + BOOST_PP_LOCAL_MACRO(76) +# endif +# if BOOST_PP_LOCAL_C(77) + BOOST_PP_LOCAL_MACRO(77) +# endif +# if BOOST_PP_LOCAL_C(78) + BOOST_PP_LOCAL_MACRO(78) +# endif +# if BOOST_PP_LOCAL_C(79) + BOOST_PP_LOCAL_MACRO(79) +# endif +# if BOOST_PP_LOCAL_C(80) + BOOST_PP_LOCAL_MACRO(80) +# endif +# if BOOST_PP_LOCAL_C(81) + BOOST_PP_LOCAL_MACRO(81) +# endif +# if BOOST_PP_LOCAL_C(82) + BOOST_PP_LOCAL_MACRO(82) +# endif +# if BOOST_PP_LOCAL_C(83) + BOOST_PP_LOCAL_MACRO(83) +# endif +# if BOOST_PP_LOCAL_C(84) + BOOST_PP_LOCAL_MACRO(84) +# endif +# if BOOST_PP_LOCAL_C(85) + BOOST_PP_LOCAL_MACRO(85) +# endif +# if BOOST_PP_LOCAL_C(86) + BOOST_PP_LOCAL_MACRO(86) +# endif +# if BOOST_PP_LOCAL_C(87) + BOOST_PP_LOCAL_MACRO(87) +# endif +# if BOOST_PP_LOCAL_C(88) + BOOST_PP_LOCAL_MACRO(88) +# endif +# if BOOST_PP_LOCAL_C(89) + BOOST_PP_LOCAL_MACRO(89) +# endif +# if BOOST_PP_LOCAL_C(90) + BOOST_PP_LOCAL_MACRO(90) +# endif +# if BOOST_PP_LOCAL_C(91) + BOOST_PP_LOCAL_MACRO(91) +# endif +# if BOOST_PP_LOCAL_C(92) + BOOST_PP_LOCAL_MACRO(92) +# endif +# if BOOST_PP_LOCAL_C(93) + BOOST_PP_LOCAL_MACRO(93) +# endif +# if BOOST_PP_LOCAL_C(94) + BOOST_PP_LOCAL_MACRO(94) +# endif +# if BOOST_PP_LOCAL_C(95) + BOOST_PP_LOCAL_MACRO(95) +# endif +# if BOOST_PP_LOCAL_C(96) + BOOST_PP_LOCAL_MACRO(96) +# endif +# if BOOST_PP_LOCAL_C(97) + BOOST_PP_LOCAL_MACRO(97) +# endif +# if BOOST_PP_LOCAL_C(98) + BOOST_PP_LOCAL_MACRO(98) +# endif +# if BOOST_PP_LOCAL_C(99) + BOOST_PP_LOCAL_MACRO(99) +# endif +# if BOOST_PP_LOCAL_C(100) + BOOST_PP_LOCAL_MACRO(100) +# endif +# if BOOST_PP_LOCAL_C(101) + BOOST_PP_LOCAL_MACRO(101) +# endif +# if BOOST_PP_LOCAL_C(102) + BOOST_PP_LOCAL_MACRO(102) +# endif +# if BOOST_PP_LOCAL_C(103) + BOOST_PP_LOCAL_MACRO(103) +# endif +# if BOOST_PP_LOCAL_C(104) + BOOST_PP_LOCAL_MACRO(104) +# endif +# if BOOST_PP_LOCAL_C(105) + BOOST_PP_LOCAL_MACRO(105) +# endif +# if BOOST_PP_LOCAL_C(106) + BOOST_PP_LOCAL_MACRO(106) +# endif +# if BOOST_PP_LOCAL_C(107) + BOOST_PP_LOCAL_MACRO(107) +# endif +# if BOOST_PP_LOCAL_C(108) + BOOST_PP_LOCAL_MACRO(108) +# endif +# if BOOST_PP_LOCAL_C(109) + BOOST_PP_LOCAL_MACRO(109) +# endif +# if BOOST_PP_LOCAL_C(110) + BOOST_PP_LOCAL_MACRO(110) +# endif +# if BOOST_PP_LOCAL_C(111) + BOOST_PP_LOCAL_MACRO(111) +# endif +# if BOOST_PP_LOCAL_C(112) + BOOST_PP_LOCAL_MACRO(112) +# endif +# if BOOST_PP_LOCAL_C(113) + BOOST_PP_LOCAL_MACRO(113) +# endif +# if BOOST_PP_LOCAL_C(114) + BOOST_PP_LOCAL_MACRO(114) +# endif +# if BOOST_PP_LOCAL_C(115) + BOOST_PP_LOCAL_MACRO(115) +# endif +# if BOOST_PP_LOCAL_C(116) + BOOST_PP_LOCAL_MACRO(116) +# endif +# if BOOST_PP_LOCAL_C(117) + BOOST_PP_LOCAL_MACRO(117) +# endif +# if BOOST_PP_LOCAL_C(118) + BOOST_PP_LOCAL_MACRO(118) +# endif +# if BOOST_PP_LOCAL_C(119) + BOOST_PP_LOCAL_MACRO(119) +# endif +# if BOOST_PP_LOCAL_C(120) + BOOST_PP_LOCAL_MACRO(120) +# endif +# if BOOST_PP_LOCAL_C(121) + BOOST_PP_LOCAL_MACRO(121) +# endif +# if BOOST_PP_LOCAL_C(122) + BOOST_PP_LOCAL_MACRO(122) +# endif +# if BOOST_PP_LOCAL_C(123) + BOOST_PP_LOCAL_MACRO(123) +# endif +# if BOOST_PP_LOCAL_C(124) + BOOST_PP_LOCAL_MACRO(124) +# endif +# if BOOST_PP_LOCAL_C(125) + BOOST_PP_LOCAL_MACRO(125) +# endif +# if BOOST_PP_LOCAL_C(126) + BOOST_PP_LOCAL_MACRO(126) +# endif +# if BOOST_PP_LOCAL_C(127) + BOOST_PP_LOCAL_MACRO(127) +# endif +# if BOOST_PP_LOCAL_C(128) + BOOST_PP_LOCAL_MACRO(128) +# endif +# if BOOST_PP_LOCAL_C(129) + BOOST_PP_LOCAL_MACRO(129) +# endif +# if BOOST_PP_LOCAL_C(130) + BOOST_PP_LOCAL_MACRO(130) +# endif +# if BOOST_PP_LOCAL_C(131) + BOOST_PP_LOCAL_MACRO(131) +# endif +# if BOOST_PP_LOCAL_C(132) + BOOST_PP_LOCAL_MACRO(132) +# endif +# if BOOST_PP_LOCAL_C(133) + BOOST_PP_LOCAL_MACRO(133) +# endif +# if BOOST_PP_LOCAL_C(134) + BOOST_PP_LOCAL_MACRO(134) +# endif +# if BOOST_PP_LOCAL_C(135) + BOOST_PP_LOCAL_MACRO(135) +# endif +# if BOOST_PP_LOCAL_C(136) + BOOST_PP_LOCAL_MACRO(136) +# endif +# if BOOST_PP_LOCAL_C(137) + BOOST_PP_LOCAL_MACRO(137) +# endif +# if BOOST_PP_LOCAL_C(138) + BOOST_PP_LOCAL_MACRO(138) +# endif +# if BOOST_PP_LOCAL_C(139) + BOOST_PP_LOCAL_MACRO(139) +# endif +# if BOOST_PP_LOCAL_C(140) + BOOST_PP_LOCAL_MACRO(140) +# endif +# if BOOST_PP_LOCAL_C(141) + BOOST_PP_LOCAL_MACRO(141) +# endif +# if BOOST_PP_LOCAL_C(142) + BOOST_PP_LOCAL_MACRO(142) +# endif +# if BOOST_PP_LOCAL_C(143) + BOOST_PP_LOCAL_MACRO(143) +# endif +# if BOOST_PP_LOCAL_C(144) + BOOST_PP_LOCAL_MACRO(144) +# endif +# if BOOST_PP_LOCAL_C(145) + BOOST_PP_LOCAL_MACRO(145) +# endif +# if BOOST_PP_LOCAL_C(146) + BOOST_PP_LOCAL_MACRO(146) +# endif +# if BOOST_PP_LOCAL_C(147) + BOOST_PP_LOCAL_MACRO(147) +# endif +# if BOOST_PP_LOCAL_C(148) + BOOST_PP_LOCAL_MACRO(148) +# endif +# if BOOST_PP_LOCAL_C(149) + BOOST_PP_LOCAL_MACRO(149) +# endif +# if BOOST_PP_LOCAL_C(150) + BOOST_PP_LOCAL_MACRO(150) +# endif +# if BOOST_PP_LOCAL_C(151) + BOOST_PP_LOCAL_MACRO(151) +# endif +# if BOOST_PP_LOCAL_C(152) + BOOST_PP_LOCAL_MACRO(152) +# endif +# if BOOST_PP_LOCAL_C(153) + BOOST_PP_LOCAL_MACRO(153) +# endif +# if BOOST_PP_LOCAL_C(154) + BOOST_PP_LOCAL_MACRO(154) +# endif +# if BOOST_PP_LOCAL_C(155) + BOOST_PP_LOCAL_MACRO(155) +# endif +# if BOOST_PP_LOCAL_C(156) + BOOST_PP_LOCAL_MACRO(156) +# endif +# if BOOST_PP_LOCAL_C(157) + BOOST_PP_LOCAL_MACRO(157) +# endif +# if BOOST_PP_LOCAL_C(158) + BOOST_PP_LOCAL_MACRO(158) +# endif +# if BOOST_PP_LOCAL_C(159) + BOOST_PP_LOCAL_MACRO(159) +# endif +# if BOOST_PP_LOCAL_C(160) + BOOST_PP_LOCAL_MACRO(160) +# endif +# if BOOST_PP_LOCAL_C(161) + BOOST_PP_LOCAL_MACRO(161) +# endif +# if BOOST_PP_LOCAL_C(162) + BOOST_PP_LOCAL_MACRO(162) +# endif +# if BOOST_PP_LOCAL_C(163) + BOOST_PP_LOCAL_MACRO(163) +# endif +# if BOOST_PP_LOCAL_C(164) + BOOST_PP_LOCAL_MACRO(164) +# endif +# if BOOST_PP_LOCAL_C(165) + BOOST_PP_LOCAL_MACRO(165) +# endif +# if BOOST_PP_LOCAL_C(166) + BOOST_PP_LOCAL_MACRO(166) +# endif +# if BOOST_PP_LOCAL_C(167) + BOOST_PP_LOCAL_MACRO(167) +# endif +# if BOOST_PP_LOCAL_C(168) + BOOST_PP_LOCAL_MACRO(168) +# endif +# if BOOST_PP_LOCAL_C(169) + BOOST_PP_LOCAL_MACRO(169) +# endif +# if BOOST_PP_LOCAL_C(170) + BOOST_PP_LOCAL_MACRO(170) +# endif +# if BOOST_PP_LOCAL_C(171) + BOOST_PP_LOCAL_MACRO(171) +# endif +# if BOOST_PP_LOCAL_C(172) + BOOST_PP_LOCAL_MACRO(172) +# endif +# if BOOST_PP_LOCAL_C(173) + BOOST_PP_LOCAL_MACRO(173) +# endif +# if BOOST_PP_LOCAL_C(174) + BOOST_PP_LOCAL_MACRO(174) +# endif +# if BOOST_PP_LOCAL_C(175) + BOOST_PP_LOCAL_MACRO(175) +# endif +# if BOOST_PP_LOCAL_C(176) + BOOST_PP_LOCAL_MACRO(176) +# endif +# if BOOST_PP_LOCAL_C(177) + BOOST_PP_LOCAL_MACRO(177) +# endif +# if BOOST_PP_LOCAL_C(178) + BOOST_PP_LOCAL_MACRO(178) +# endif +# if BOOST_PP_LOCAL_C(179) + BOOST_PP_LOCAL_MACRO(179) +# endif +# if BOOST_PP_LOCAL_C(180) + BOOST_PP_LOCAL_MACRO(180) +# endif +# if BOOST_PP_LOCAL_C(181) + BOOST_PP_LOCAL_MACRO(181) +# endif +# if BOOST_PP_LOCAL_C(182) + BOOST_PP_LOCAL_MACRO(182) +# endif +# if BOOST_PP_LOCAL_C(183) + BOOST_PP_LOCAL_MACRO(183) +# endif +# if BOOST_PP_LOCAL_C(184) + BOOST_PP_LOCAL_MACRO(184) +# endif +# if BOOST_PP_LOCAL_C(185) + BOOST_PP_LOCAL_MACRO(185) +# endif +# if BOOST_PP_LOCAL_C(186) + BOOST_PP_LOCAL_MACRO(186) +# endif +# if BOOST_PP_LOCAL_C(187) + BOOST_PP_LOCAL_MACRO(187) +# endif +# if BOOST_PP_LOCAL_C(188) + BOOST_PP_LOCAL_MACRO(188) +# endif +# if BOOST_PP_LOCAL_C(189) + BOOST_PP_LOCAL_MACRO(189) +# endif +# if BOOST_PP_LOCAL_C(190) + BOOST_PP_LOCAL_MACRO(190) +# endif +# if BOOST_PP_LOCAL_C(191) + BOOST_PP_LOCAL_MACRO(191) +# endif +# if BOOST_PP_LOCAL_C(192) + BOOST_PP_LOCAL_MACRO(192) +# endif +# if BOOST_PP_LOCAL_C(193) + BOOST_PP_LOCAL_MACRO(193) +# endif +# if BOOST_PP_LOCAL_C(194) + BOOST_PP_LOCAL_MACRO(194) +# endif +# if BOOST_PP_LOCAL_C(195) + BOOST_PP_LOCAL_MACRO(195) +# endif +# if BOOST_PP_LOCAL_C(196) + BOOST_PP_LOCAL_MACRO(196) +# endif +# if BOOST_PP_LOCAL_C(197) + BOOST_PP_LOCAL_MACRO(197) +# endif +# if BOOST_PP_LOCAL_C(198) + BOOST_PP_LOCAL_MACRO(198) +# endif +# if BOOST_PP_LOCAL_C(199) + BOOST_PP_LOCAL_MACRO(199) +# endif +# if BOOST_PP_LOCAL_C(200) + BOOST_PP_LOCAL_MACRO(200) +# endif +# if BOOST_PP_LOCAL_C(201) + BOOST_PP_LOCAL_MACRO(201) +# endif +# if BOOST_PP_LOCAL_C(202) + BOOST_PP_LOCAL_MACRO(202) +# endif +# if BOOST_PP_LOCAL_C(203) + BOOST_PP_LOCAL_MACRO(203) +# endif +# if BOOST_PP_LOCAL_C(204) + BOOST_PP_LOCAL_MACRO(204) +# endif +# if BOOST_PP_LOCAL_C(205) + BOOST_PP_LOCAL_MACRO(205) +# endif +# if BOOST_PP_LOCAL_C(206) + BOOST_PP_LOCAL_MACRO(206) +# endif +# if BOOST_PP_LOCAL_C(207) + BOOST_PP_LOCAL_MACRO(207) +# endif +# if BOOST_PP_LOCAL_C(208) + BOOST_PP_LOCAL_MACRO(208) +# endif +# if BOOST_PP_LOCAL_C(209) + BOOST_PP_LOCAL_MACRO(209) +# endif +# if BOOST_PP_LOCAL_C(210) + BOOST_PP_LOCAL_MACRO(210) +# endif +# if BOOST_PP_LOCAL_C(211) + BOOST_PP_LOCAL_MACRO(211) +# endif +# if BOOST_PP_LOCAL_C(212) + BOOST_PP_LOCAL_MACRO(212) +# endif +# if BOOST_PP_LOCAL_C(213) + BOOST_PP_LOCAL_MACRO(213) +# endif +# if BOOST_PP_LOCAL_C(214) + BOOST_PP_LOCAL_MACRO(214) +# endif +# if BOOST_PP_LOCAL_C(215) + BOOST_PP_LOCAL_MACRO(215) +# endif +# if BOOST_PP_LOCAL_C(216) + BOOST_PP_LOCAL_MACRO(216) +# endif +# if BOOST_PP_LOCAL_C(217) + BOOST_PP_LOCAL_MACRO(217) +# endif +# if BOOST_PP_LOCAL_C(218) + BOOST_PP_LOCAL_MACRO(218) +# endif +# if BOOST_PP_LOCAL_C(219) + BOOST_PP_LOCAL_MACRO(219) +# endif +# if BOOST_PP_LOCAL_C(220) + BOOST_PP_LOCAL_MACRO(220) +# endif +# if BOOST_PP_LOCAL_C(221) + BOOST_PP_LOCAL_MACRO(221) +# endif +# if BOOST_PP_LOCAL_C(222) + BOOST_PP_LOCAL_MACRO(222) +# endif +# if BOOST_PP_LOCAL_C(223) + BOOST_PP_LOCAL_MACRO(223) +# endif +# if BOOST_PP_LOCAL_C(224) + BOOST_PP_LOCAL_MACRO(224) +# endif +# if BOOST_PP_LOCAL_C(225) + BOOST_PP_LOCAL_MACRO(225) +# endif +# if BOOST_PP_LOCAL_C(226) + BOOST_PP_LOCAL_MACRO(226) +# endif +# if BOOST_PP_LOCAL_C(227) + BOOST_PP_LOCAL_MACRO(227) +# endif +# if BOOST_PP_LOCAL_C(228) + BOOST_PP_LOCAL_MACRO(228) +# endif +# if BOOST_PP_LOCAL_C(229) + BOOST_PP_LOCAL_MACRO(229) +# endif +# if BOOST_PP_LOCAL_C(230) + BOOST_PP_LOCAL_MACRO(230) +# endif +# if BOOST_PP_LOCAL_C(231) + BOOST_PP_LOCAL_MACRO(231) +# endif +# if BOOST_PP_LOCAL_C(232) + BOOST_PP_LOCAL_MACRO(232) +# endif +# if BOOST_PP_LOCAL_C(233) + BOOST_PP_LOCAL_MACRO(233) +# endif +# if BOOST_PP_LOCAL_C(234) + BOOST_PP_LOCAL_MACRO(234) +# endif +# if BOOST_PP_LOCAL_C(235) + BOOST_PP_LOCAL_MACRO(235) +# endif +# if BOOST_PP_LOCAL_C(236) + BOOST_PP_LOCAL_MACRO(236) +# endif +# if BOOST_PP_LOCAL_C(237) + BOOST_PP_LOCAL_MACRO(237) +# endif +# if BOOST_PP_LOCAL_C(238) + BOOST_PP_LOCAL_MACRO(238) +# endif +# if BOOST_PP_LOCAL_C(239) + BOOST_PP_LOCAL_MACRO(239) +# endif +# if BOOST_PP_LOCAL_C(240) + BOOST_PP_LOCAL_MACRO(240) +# endif +# if BOOST_PP_LOCAL_C(241) + BOOST_PP_LOCAL_MACRO(241) +# endif +# if BOOST_PP_LOCAL_C(242) + BOOST_PP_LOCAL_MACRO(242) +# endif +# if BOOST_PP_LOCAL_C(243) + BOOST_PP_LOCAL_MACRO(243) +# endif +# if BOOST_PP_LOCAL_C(244) + BOOST_PP_LOCAL_MACRO(244) +# endif +# if BOOST_PP_LOCAL_C(245) + BOOST_PP_LOCAL_MACRO(245) +# endif +# if BOOST_PP_LOCAL_C(246) + BOOST_PP_LOCAL_MACRO(246) +# endif +# if BOOST_PP_LOCAL_C(247) + BOOST_PP_LOCAL_MACRO(247) +# endif +# if BOOST_PP_LOCAL_C(248) + BOOST_PP_LOCAL_MACRO(248) +# endif +# if BOOST_PP_LOCAL_C(249) + BOOST_PP_LOCAL_MACRO(249) +# endif +# if BOOST_PP_LOCAL_C(250) + BOOST_PP_LOCAL_MACRO(250) +# endif +# if BOOST_PP_LOCAL_C(251) + BOOST_PP_LOCAL_MACRO(251) +# endif +# if BOOST_PP_LOCAL_C(252) + BOOST_PP_LOCAL_MACRO(252) +# endif +# if BOOST_PP_LOCAL_C(253) + BOOST_PP_LOCAL_MACRO(253) +# endif +# if BOOST_PP_LOCAL_C(254) + BOOST_PP_LOCAL_MACRO(254) +# endif +# if BOOST_PP_LOCAL_C(255) + BOOST_PP_LOCAL_MACRO(255) +# endif +# if BOOST_PP_LOCAL_C(256) + BOOST_PP_LOCAL_MACRO(256) +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/limits/local_512.hpp b/src/boost/boost/preprocessor/iteration/detail/limits/local_512.hpp new file mode 100644 index 000000000..c4ef4f1e3 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/limits/local_512.hpp @@ -0,0 +1,781 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_LOCAL_C(257) + BOOST_PP_LOCAL_MACRO(257) +# endif +# if BOOST_PP_LOCAL_C(258) + BOOST_PP_LOCAL_MACRO(258) +# endif +# if BOOST_PP_LOCAL_C(259) + BOOST_PP_LOCAL_MACRO(259) +# endif +# if BOOST_PP_LOCAL_C(260) + BOOST_PP_LOCAL_MACRO(260) +# endif +# if BOOST_PP_LOCAL_C(261) + BOOST_PP_LOCAL_MACRO(261) +# endif +# if BOOST_PP_LOCAL_C(262) + BOOST_PP_LOCAL_MACRO(262) +# endif +# if BOOST_PP_LOCAL_C(263) + BOOST_PP_LOCAL_MACRO(263) +# endif +# if BOOST_PP_LOCAL_C(264) + BOOST_PP_LOCAL_MACRO(264) +# endif +# if BOOST_PP_LOCAL_C(265) + BOOST_PP_LOCAL_MACRO(265) +# endif +# if BOOST_PP_LOCAL_C(266) + BOOST_PP_LOCAL_MACRO(266) +# endif +# if BOOST_PP_LOCAL_C(267) + BOOST_PP_LOCAL_MACRO(267) +# endif +# if BOOST_PP_LOCAL_C(268) + BOOST_PP_LOCAL_MACRO(268) +# endif +# if BOOST_PP_LOCAL_C(269) + BOOST_PP_LOCAL_MACRO(269) +# endif +# if BOOST_PP_LOCAL_C(270) + BOOST_PP_LOCAL_MACRO(270) +# endif +# if BOOST_PP_LOCAL_C(271) + BOOST_PP_LOCAL_MACRO(271) +# endif +# if BOOST_PP_LOCAL_C(272) + BOOST_PP_LOCAL_MACRO(272) +# endif +# if BOOST_PP_LOCAL_C(273) + BOOST_PP_LOCAL_MACRO(273) +# endif +# if BOOST_PP_LOCAL_C(274) + BOOST_PP_LOCAL_MACRO(274) +# endif +# if BOOST_PP_LOCAL_C(275) + BOOST_PP_LOCAL_MACRO(275) +# endif +# if BOOST_PP_LOCAL_C(276) + BOOST_PP_LOCAL_MACRO(276) +# endif +# if BOOST_PP_LOCAL_C(277) + BOOST_PP_LOCAL_MACRO(277) +# endif +# if BOOST_PP_LOCAL_C(278) + BOOST_PP_LOCAL_MACRO(278) +# endif +# if BOOST_PP_LOCAL_C(279) + BOOST_PP_LOCAL_MACRO(279) +# endif +# if BOOST_PP_LOCAL_C(280) + BOOST_PP_LOCAL_MACRO(280) +# endif +# if BOOST_PP_LOCAL_C(281) + BOOST_PP_LOCAL_MACRO(281) +# endif +# if BOOST_PP_LOCAL_C(282) + BOOST_PP_LOCAL_MACRO(282) +# endif +# if BOOST_PP_LOCAL_C(283) + BOOST_PP_LOCAL_MACRO(283) +# endif +# if BOOST_PP_LOCAL_C(284) + BOOST_PP_LOCAL_MACRO(284) +# endif +# if BOOST_PP_LOCAL_C(285) + BOOST_PP_LOCAL_MACRO(285) +# endif +# if BOOST_PP_LOCAL_C(286) + BOOST_PP_LOCAL_MACRO(286) +# endif +# if BOOST_PP_LOCAL_C(287) + BOOST_PP_LOCAL_MACRO(287) +# endif +# if BOOST_PP_LOCAL_C(288) + BOOST_PP_LOCAL_MACRO(288) +# endif +# if BOOST_PP_LOCAL_C(289) + BOOST_PP_LOCAL_MACRO(289) +# endif +# if BOOST_PP_LOCAL_C(290) + BOOST_PP_LOCAL_MACRO(290) +# endif +# if BOOST_PP_LOCAL_C(291) + BOOST_PP_LOCAL_MACRO(291) +# endif +# if BOOST_PP_LOCAL_C(292) + BOOST_PP_LOCAL_MACRO(292) +# endif +# if BOOST_PP_LOCAL_C(293) + BOOST_PP_LOCAL_MACRO(293) +# endif +# if BOOST_PP_LOCAL_C(294) + BOOST_PP_LOCAL_MACRO(294) +# endif +# if BOOST_PP_LOCAL_C(295) + BOOST_PP_LOCAL_MACRO(295) +# endif +# if BOOST_PP_LOCAL_C(296) + BOOST_PP_LOCAL_MACRO(296) +# endif +# if BOOST_PP_LOCAL_C(297) + BOOST_PP_LOCAL_MACRO(297) +# endif +# if BOOST_PP_LOCAL_C(298) + BOOST_PP_LOCAL_MACRO(298) +# endif +# if BOOST_PP_LOCAL_C(299) + BOOST_PP_LOCAL_MACRO(299) +# endif +# if BOOST_PP_LOCAL_C(300) + BOOST_PP_LOCAL_MACRO(300) +# endif +# if BOOST_PP_LOCAL_C(301) + BOOST_PP_LOCAL_MACRO(301) +# endif +# if BOOST_PP_LOCAL_C(302) + BOOST_PP_LOCAL_MACRO(302) +# endif +# if BOOST_PP_LOCAL_C(303) + BOOST_PP_LOCAL_MACRO(303) +# endif +# if BOOST_PP_LOCAL_C(304) + BOOST_PP_LOCAL_MACRO(304) +# endif +# if BOOST_PP_LOCAL_C(305) + BOOST_PP_LOCAL_MACRO(305) +# endif +# if BOOST_PP_LOCAL_C(306) + BOOST_PP_LOCAL_MACRO(306) +# endif +# if BOOST_PP_LOCAL_C(307) + BOOST_PP_LOCAL_MACRO(307) +# endif +# if BOOST_PP_LOCAL_C(308) + BOOST_PP_LOCAL_MACRO(308) +# endif +# if BOOST_PP_LOCAL_C(309) + BOOST_PP_LOCAL_MACRO(309) +# endif +# if BOOST_PP_LOCAL_C(310) + BOOST_PP_LOCAL_MACRO(310) +# endif +# if BOOST_PP_LOCAL_C(311) + BOOST_PP_LOCAL_MACRO(311) +# endif +# if BOOST_PP_LOCAL_C(312) + BOOST_PP_LOCAL_MACRO(312) +# endif +# if BOOST_PP_LOCAL_C(313) + BOOST_PP_LOCAL_MACRO(313) +# endif +# if BOOST_PP_LOCAL_C(314) + BOOST_PP_LOCAL_MACRO(314) +# endif +# if BOOST_PP_LOCAL_C(315) + BOOST_PP_LOCAL_MACRO(315) +# endif +# if BOOST_PP_LOCAL_C(316) + BOOST_PP_LOCAL_MACRO(316) +# endif +# if BOOST_PP_LOCAL_C(317) + BOOST_PP_LOCAL_MACRO(317) +# endif +# if BOOST_PP_LOCAL_C(318) + BOOST_PP_LOCAL_MACRO(318) +# endif +# if BOOST_PP_LOCAL_C(319) + BOOST_PP_LOCAL_MACRO(319) +# endif +# if BOOST_PP_LOCAL_C(320) + BOOST_PP_LOCAL_MACRO(320) +# endif +# if BOOST_PP_LOCAL_C(321) + BOOST_PP_LOCAL_MACRO(321) +# endif +# if BOOST_PP_LOCAL_C(322) + BOOST_PP_LOCAL_MACRO(322) +# endif +# if BOOST_PP_LOCAL_C(323) + BOOST_PP_LOCAL_MACRO(323) +# endif +# if BOOST_PP_LOCAL_C(324) + BOOST_PP_LOCAL_MACRO(324) +# endif +# if BOOST_PP_LOCAL_C(325) + BOOST_PP_LOCAL_MACRO(325) +# endif +# if BOOST_PP_LOCAL_C(326) + BOOST_PP_LOCAL_MACRO(326) +# endif +# if BOOST_PP_LOCAL_C(327) + BOOST_PP_LOCAL_MACRO(327) +# endif +# if BOOST_PP_LOCAL_C(328) + BOOST_PP_LOCAL_MACRO(328) +# endif +# if BOOST_PP_LOCAL_C(329) + BOOST_PP_LOCAL_MACRO(329) +# endif +# if BOOST_PP_LOCAL_C(330) + BOOST_PP_LOCAL_MACRO(330) +# endif +# if BOOST_PP_LOCAL_C(331) + BOOST_PP_LOCAL_MACRO(331) +# endif +# if BOOST_PP_LOCAL_C(332) + BOOST_PP_LOCAL_MACRO(332) +# endif +# if BOOST_PP_LOCAL_C(333) + BOOST_PP_LOCAL_MACRO(333) +# endif +# if BOOST_PP_LOCAL_C(334) + BOOST_PP_LOCAL_MACRO(334) +# endif +# if BOOST_PP_LOCAL_C(335) + BOOST_PP_LOCAL_MACRO(335) +# endif +# if BOOST_PP_LOCAL_C(336) + BOOST_PP_LOCAL_MACRO(336) +# endif +# if BOOST_PP_LOCAL_C(337) + BOOST_PP_LOCAL_MACRO(337) +# endif +# if BOOST_PP_LOCAL_C(338) + BOOST_PP_LOCAL_MACRO(338) +# endif +# if BOOST_PP_LOCAL_C(339) + BOOST_PP_LOCAL_MACRO(339) +# endif +# if BOOST_PP_LOCAL_C(340) + BOOST_PP_LOCAL_MACRO(340) +# endif +# if BOOST_PP_LOCAL_C(341) + BOOST_PP_LOCAL_MACRO(341) +# endif +# if BOOST_PP_LOCAL_C(342) + BOOST_PP_LOCAL_MACRO(342) +# endif +# if BOOST_PP_LOCAL_C(343) + BOOST_PP_LOCAL_MACRO(343) +# endif +# if BOOST_PP_LOCAL_C(344) + BOOST_PP_LOCAL_MACRO(344) +# endif +# if BOOST_PP_LOCAL_C(345) + BOOST_PP_LOCAL_MACRO(345) +# endif +# if BOOST_PP_LOCAL_C(346) + BOOST_PP_LOCAL_MACRO(346) +# endif +# if BOOST_PP_LOCAL_C(347) + BOOST_PP_LOCAL_MACRO(347) +# endif +# if BOOST_PP_LOCAL_C(348) + BOOST_PP_LOCAL_MACRO(348) +# endif +# if BOOST_PP_LOCAL_C(349) + BOOST_PP_LOCAL_MACRO(349) +# endif +# if BOOST_PP_LOCAL_C(350) + BOOST_PP_LOCAL_MACRO(350) +# endif +# if BOOST_PP_LOCAL_C(351) + BOOST_PP_LOCAL_MACRO(351) +# endif +# if BOOST_PP_LOCAL_C(352) + BOOST_PP_LOCAL_MACRO(352) +# endif +# if BOOST_PP_LOCAL_C(353) + BOOST_PP_LOCAL_MACRO(353) +# endif +# if BOOST_PP_LOCAL_C(354) + BOOST_PP_LOCAL_MACRO(354) +# endif +# if BOOST_PP_LOCAL_C(355) + BOOST_PP_LOCAL_MACRO(355) +# endif +# if BOOST_PP_LOCAL_C(356) + BOOST_PP_LOCAL_MACRO(356) +# endif +# if BOOST_PP_LOCAL_C(357) + BOOST_PP_LOCAL_MACRO(357) +# endif +# if BOOST_PP_LOCAL_C(358) + BOOST_PP_LOCAL_MACRO(358) +# endif +# if BOOST_PP_LOCAL_C(359) + BOOST_PP_LOCAL_MACRO(359) +# endif +# if BOOST_PP_LOCAL_C(360) + BOOST_PP_LOCAL_MACRO(360) +# endif +# if BOOST_PP_LOCAL_C(361) + BOOST_PP_LOCAL_MACRO(361) +# endif +# if BOOST_PP_LOCAL_C(362) + BOOST_PP_LOCAL_MACRO(362) +# endif +# if BOOST_PP_LOCAL_C(363) + BOOST_PP_LOCAL_MACRO(363) +# endif +# if BOOST_PP_LOCAL_C(364) + BOOST_PP_LOCAL_MACRO(364) +# endif +# if BOOST_PP_LOCAL_C(365) + BOOST_PP_LOCAL_MACRO(365) +# endif +# if BOOST_PP_LOCAL_C(366) + BOOST_PP_LOCAL_MACRO(366) +# endif +# if BOOST_PP_LOCAL_C(367) + BOOST_PP_LOCAL_MACRO(367) +# endif +# if BOOST_PP_LOCAL_C(368) + BOOST_PP_LOCAL_MACRO(368) +# endif +# if BOOST_PP_LOCAL_C(369) + BOOST_PP_LOCAL_MACRO(369) +# endif +# if BOOST_PP_LOCAL_C(370) + BOOST_PP_LOCAL_MACRO(370) +# endif +# if BOOST_PP_LOCAL_C(371) + BOOST_PP_LOCAL_MACRO(371) +# endif +# if BOOST_PP_LOCAL_C(372) + BOOST_PP_LOCAL_MACRO(372) +# endif +# if BOOST_PP_LOCAL_C(373) + BOOST_PP_LOCAL_MACRO(373) +# endif +# if BOOST_PP_LOCAL_C(374) + BOOST_PP_LOCAL_MACRO(374) +# endif +# if BOOST_PP_LOCAL_C(375) + BOOST_PP_LOCAL_MACRO(375) +# endif +# if BOOST_PP_LOCAL_C(376) + BOOST_PP_LOCAL_MACRO(376) +# endif +# if BOOST_PP_LOCAL_C(377) + BOOST_PP_LOCAL_MACRO(377) +# endif +# if BOOST_PP_LOCAL_C(378) + BOOST_PP_LOCAL_MACRO(378) +# endif +# if BOOST_PP_LOCAL_C(379) + BOOST_PP_LOCAL_MACRO(379) +# endif +# if BOOST_PP_LOCAL_C(380) + BOOST_PP_LOCAL_MACRO(380) +# endif +# if BOOST_PP_LOCAL_C(381) + BOOST_PP_LOCAL_MACRO(381) +# endif +# if BOOST_PP_LOCAL_C(382) + BOOST_PP_LOCAL_MACRO(382) +# endif +# if BOOST_PP_LOCAL_C(383) + BOOST_PP_LOCAL_MACRO(383) +# endif +# if BOOST_PP_LOCAL_C(384) + BOOST_PP_LOCAL_MACRO(384) +# endif +# if BOOST_PP_LOCAL_C(385) + BOOST_PP_LOCAL_MACRO(385) +# endif +# if BOOST_PP_LOCAL_C(386) + BOOST_PP_LOCAL_MACRO(386) +# endif +# if BOOST_PP_LOCAL_C(387) + BOOST_PP_LOCAL_MACRO(387) +# endif +# if BOOST_PP_LOCAL_C(388) + BOOST_PP_LOCAL_MACRO(388) +# endif +# if BOOST_PP_LOCAL_C(389) + BOOST_PP_LOCAL_MACRO(389) +# endif +# if BOOST_PP_LOCAL_C(390) + BOOST_PP_LOCAL_MACRO(390) +# endif +# if BOOST_PP_LOCAL_C(391) + BOOST_PP_LOCAL_MACRO(391) +# endif +# if BOOST_PP_LOCAL_C(392) + BOOST_PP_LOCAL_MACRO(392) +# endif +# if BOOST_PP_LOCAL_C(393) + BOOST_PP_LOCAL_MACRO(393) +# endif +# if BOOST_PP_LOCAL_C(394) + BOOST_PP_LOCAL_MACRO(394) +# endif +# if BOOST_PP_LOCAL_C(395) + BOOST_PP_LOCAL_MACRO(395) +# endif +# if BOOST_PP_LOCAL_C(396) + BOOST_PP_LOCAL_MACRO(396) +# endif +# if BOOST_PP_LOCAL_C(397) + BOOST_PP_LOCAL_MACRO(397) +# endif +# if BOOST_PP_LOCAL_C(398) + BOOST_PP_LOCAL_MACRO(398) +# endif +# if BOOST_PP_LOCAL_C(399) + BOOST_PP_LOCAL_MACRO(399) +# endif +# if BOOST_PP_LOCAL_C(400) + BOOST_PP_LOCAL_MACRO(400) +# endif +# if BOOST_PP_LOCAL_C(401) + BOOST_PP_LOCAL_MACRO(401) +# endif +# if BOOST_PP_LOCAL_C(402) + BOOST_PP_LOCAL_MACRO(402) +# endif +# if BOOST_PP_LOCAL_C(403) + BOOST_PP_LOCAL_MACRO(403) +# endif +# if BOOST_PP_LOCAL_C(404) + BOOST_PP_LOCAL_MACRO(404) +# endif +# if BOOST_PP_LOCAL_C(405) + BOOST_PP_LOCAL_MACRO(405) +# endif +# if BOOST_PP_LOCAL_C(406) + BOOST_PP_LOCAL_MACRO(406) +# endif +# if BOOST_PP_LOCAL_C(407) + BOOST_PP_LOCAL_MACRO(407) +# endif +# if BOOST_PP_LOCAL_C(408) + BOOST_PP_LOCAL_MACRO(408) +# endif +# if BOOST_PP_LOCAL_C(409) + BOOST_PP_LOCAL_MACRO(409) +# endif +# if BOOST_PP_LOCAL_C(410) + BOOST_PP_LOCAL_MACRO(410) +# endif +# if BOOST_PP_LOCAL_C(411) + BOOST_PP_LOCAL_MACRO(411) +# endif +# if BOOST_PP_LOCAL_C(412) + BOOST_PP_LOCAL_MACRO(412) +# endif +# if BOOST_PP_LOCAL_C(413) + BOOST_PP_LOCAL_MACRO(413) +# endif +# if BOOST_PP_LOCAL_C(414) + BOOST_PP_LOCAL_MACRO(414) +# endif +# if BOOST_PP_LOCAL_C(415) + BOOST_PP_LOCAL_MACRO(415) +# endif +# if BOOST_PP_LOCAL_C(416) + BOOST_PP_LOCAL_MACRO(416) +# endif +# if BOOST_PP_LOCAL_C(417) + BOOST_PP_LOCAL_MACRO(417) +# endif +# if BOOST_PP_LOCAL_C(418) + BOOST_PP_LOCAL_MACRO(418) +# endif +# if BOOST_PP_LOCAL_C(419) + BOOST_PP_LOCAL_MACRO(419) +# endif +# if BOOST_PP_LOCAL_C(420) + BOOST_PP_LOCAL_MACRO(420) +# endif +# if BOOST_PP_LOCAL_C(421) + BOOST_PP_LOCAL_MACRO(421) +# endif +# if BOOST_PP_LOCAL_C(422) + BOOST_PP_LOCAL_MACRO(422) +# endif +# if BOOST_PP_LOCAL_C(423) + BOOST_PP_LOCAL_MACRO(423) +# endif +# if BOOST_PP_LOCAL_C(424) + BOOST_PP_LOCAL_MACRO(424) +# endif +# if BOOST_PP_LOCAL_C(425) + BOOST_PP_LOCAL_MACRO(425) +# endif +# if BOOST_PP_LOCAL_C(426) + BOOST_PP_LOCAL_MACRO(426) +# endif +# if BOOST_PP_LOCAL_C(427) + BOOST_PP_LOCAL_MACRO(427) +# endif +# if BOOST_PP_LOCAL_C(428) + BOOST_PP_LOCAL_MACRO(428) +# endif +# if BOOST_PP_LOCAL_C(429) + BOOST_PP_LOCAL_MACRO(429) +# endif +# if BOOST_PP_LOCAL_C(430) + BOOST_PP_LOCAL_MACRO(430) +# endif +# if BOOST_PP_LOCAL_C(431) + BOOST_PP_LOCAL_MACRO(431) +# endif +# if BOOST_PP_LOCAL_C(432) + BOOST_PP_LOCAL_MACRO(432) +# endif +# if BOOST_PP_LOCAL_C(433) + BOOST_PP_LOCAL_MACRO(433) +# endif +# if BOOST_PP_LOCAL_C(434) + BOOST_PP_LOCAL_MACRO(434) +# endif +# if BOOST_PP_LOCAL_C(435) + BOOST_PP_LOCAL_MACRO(435) +# endif +# if BOOST_PP_LOCAL_C(436) + BOOST_PP_LOCAL_MACRO(436) +# endif +# if BOOST_PP_LOCAL_C(437) + BOOST_PP_LOCAL_MACRO(437) +# endif +# if BOOST_PP_LOCAL_C(438) + BOOST_PP_LOCAL_MACRO(438) +# endif +# if BOOST_PP_LOCAL_C(439) + BOOST_PP_LOCAL_MACRO(439) +# endif +# if BOOST_PP_LOCAL_C(440) + BOOST_PP_LOCAL_MACRO(440) +# endif +# if BOOST_PP_LOCAL_C(441) + BOOST_PP_LOCAL_MACRO(441) +# endif +# if BOOST_PP_LOCAL_C(442) + BOOST_PP_LOCAL_MACRO(442) +# endif +# if BOOST_PP_LOCAL_C(443) + BOOST_PP_LOCAL_MACRO(443) +# endif +# if BOOST_PP_LOCAL_C(444) + BOOST_PP_LOCAL_MACRO(444) +# endif +# if BOOST_PP_LOCAL_C(445) + BOOST_PP_LOCAL_MACRO(445) +# endif +# if BOOST_PP_LOCAL_C(446) + BOOST_PP_LOCAL_MACRO(446) +# endif +# if BOOST_PP_LOCAL_C(447) + BOOST_PP_LOCAL_MACRO(447) +# endif +# if BOOST_PP_LOCAL_C(448) + BOOST_PP_LOCAL_MACRO(448) +# endif +# if BOOST_PP_LOCAL_C(449) + BOOST_PP_LOCAL_MACRO(449) +# endif +# if BOOST_PP_LOCAL_C(450) + BOOST_PP_LOCAL_MACRO(450) +# endif +# if BOOST_PP_LOCAL_C(451) + BOOST_PP_LOCAL_MACRO(451) +# endif +# if BOOST_PP_LOCAL_C(452) + BOOST_PP_LOCAL_MACRO(452) +# endif +# if BOOST_PP_LOCAL_C(453) + BOOST_PP_LOCAL_MACRO(453) +# endif +# if BOOST_PP_LOCAL_C(454) + BOOST_PP_LOCAL_MACRO(454) +# endif +# if BOOST_PP_LOCAL_C(455) + BOOST_PP_LOCAL_MACRO(455) +# endif +# if BOOST_PP_LOCAL_C(456) + BOOST_PP_LOCAL_MACRO(456) +# endif +# if BOOST_PP_LOCAL_C(457) + BOOST_PP_LOCAL_MACRO(457) +# endif +# if BOOST_PP_LOCAL_C(458) + BOOST_PP_LOCAL_MACRO(458) +# endif +# if BOOST_PP_LOCAL_C(459) + BOOST_PP_LOCAL_MACRO(459) +# endif +# if BOOST_PP_LOCAL_C(460) + BOOST_PP_LOCAL_MACRO(460) +# endif +# if BOOST_PP_LOCAL_C(461) + BOOST_PP_LOCAL_MACRO(461) +# endif +# if BOOST_PP_LOCAL_C(462) + BOOST_PP_LOCAL_MACRO(462) +# endif +# if BOOST_PP_LOCAL_C(463) + BOOST_PP_LOCAL_MACRO(463) +# endif +# if BOOST_PP_LOCAL_C(464) + BOOST_PP_LOCAL_MACRO(464) +# endif +# if BOOST_PP_LOCAL_C(465) + BOOST_PP_LOCAL_MACRO(465) +# endif +# if BOOST_PP_LOCAL_C(466) + BOOST_PP_LOCAL_MACRO(466) +# endif +# if BOOST_PP_LOCAL_C(467) + BOOST_PP_LOCAL_MACRO(467) +# endif +# if BOOST_PP_LOCAL_C(468) + BOOST_PP_LOCAL_MACRO(468) +# endif +# if BOOST_PP_LOCAL_C(469) + BOOST_PP_LOCAL_MACRO(469) +# endif +# if BOOST_PP_LOCAL_C(470) + BOOST_PP_LOCAL_MACRO(470) +# endif +# if BOOST_PP_LOCAL_C(471) + BOOST_PP_LOCAL_MACRO(471) +# endif +# if BOOST_PP_LOCAL_C(472) + BOOST_PP_LOCAL_MACRO(472) +# endif +# if BOOST_PP_LOCAL_C(473) + BOOST_PP_LOCAL_MACRO(473) +# endif +# if BOOST_PP_LOCAL_C(474) + BOOST_PP_LOCAL_MACRO(474) +# endif +# if BOOST_PP_LOCAL_C(475) + BOOST_PP_LOCAL_MACRO(475) +# endif +# if BOOST_PP_LOCAL_C(476) + BOOST_PP_LOCAL_MACRO(476) +# endif +# if BOOST_PP_LOCAL_C(477) + BOOST_PP_LOCAL_MACRO(477) +# endif +# if BOOST_PP_LOCAL_C(478) + BOOST_PP_LOCAL_MACRO(478) +# endif +# if BOOST_PP_LOCAL_C(479) + BOOST_PP_LOCAL_MACRO(479) +# endif +# if BOOST_PP_LOCAL_C(480) + BOOST_PP_LOCAL_MACRO(480) +# endif +# if BOOST_PP_LOCAL_C(481) + BOOST_PP_LOCAL_MACRO(481) +# endif +# if BOOST_PP_LOCAL_C(482) + BOOST_PP_LOCAL_MACRO(482) +# endif +# if BOOST_PP_LOCAL_C(483) + BOOST_PP_LOCAL_MACRO(483) +# endif +# if BOOST_PP_LOCAL_C(484) + BOOST_PP_LOCAL_MACRO(484) +# endif +# if BOOST_PP_LOCAL_C(485) + BOOST_PP_LOCAL_MACRO(485) +# endif +# if BOOST_PP_LOCAL_C(486) + BOOST_PP_LOCAL_MACRO(486) +# endif +# if BOOST_PP_LOCAL_C(487) + BOOST_PP_LOCAL_MACRO(487) +# endif +# if BOOST_PP_LOCAL_C(488) + BOOST_PP_LOCAL_MACRO(488) +# endif +# if BOOST_PP_LOCAL_C(489) + BOOST_PP_LOCAL_MACRO(489) +# endif +# if BOOST_PP_LOCAL_C(490) + BOOST_PP_LOCAL_MACRO(490) +# endif +# if BOOST_PP_LOCAL_C(491) + BOOST_PP_LOCAL_MACRO(491) +# endif +# if BOOST_PP_LOCAL_C(492) + BOOST_PP_LOCAL_MACRO(492) +# endif +# if BOOST_PP_LOCAL_C(493) + BOOST_PP_LOCAL_MACRO(493) +# endif +# if BOOST_PP_LOCAL_C(494) + BOOST_PP_LOCAL_MACRO(494) +# endif +# if BOOST_PP_LOCAL_C(495) + BOOST_PP_LOCAL_MACRO(495) +# endif +# if BOOST_PP_LOCAL_C(496) + BOOST_PP_LOCAL_MACRO(496) +# endif +# if BOOST_PP_LOCAL_C(497) + BOOST_PP_LOCAL_MACRO(497) +# endif +# if BOOST_PP_LOCAL_C(498) + BOOST_PP_LOCAL_MACRO(498) +# endif +# if BOOST_PP_LOCAL_C(499) + BOOST_PP_LOCAL_MACRO(499) +# endif +# if BOOST_PP_LOCAL_C(500) + BOOST_PP_LOCAL_MACRO(500) +# endif +# if BOOST_PP_LOCAL_C(501) + BOOST_PP_LOCAL_MACRO(501) +# endif +# if BOOST_PP_LOCAL_C(502) + BOOST_PP_LOCAL_MACRO(502) +# endif +# if BOOST_PP_LOCAL_C(503) + BOOST_PP_LOCAL_MACRO(503) +# endif +# if BOOST_PP_LOCAL_C(504) + BOOST_PP_LOCAL_MACRO(504) +# endif +# if BOOST_PP_LOCAL_C(505) + BOOST_PP_LOCAL_MACRO(505) +# endif +# if BOOST_PP_LOCAL_C(506) + BOOST_PP_LOCAL_MACRO(506) +# endif +# if BOOST_PP_LOCAL_C(507) + BOOST_PP_LOCAL_MACRO(507) +# endif +# if BOOST_PP_LOCAL_C(508) + BOOST_PP_LOCAL_MACRO(508) +# endif +# if BOOST_PP_LOCAL_C(509) + BOOST_PP_LOCAL_MACRO(509) +# endif +# if BOOST_PP_LOCAL_C(510) + BOOST_PP_LOCAL_MACRO(510) +# endif +# if BOOST_PP_LOCAL_C(511) + BOOST_PP_LOCAL_MACRO(511) +# endif +# if BOOST_PP_LOCAL_C(512) + BOOST_PP_LOCAL_MACRO(512) +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/limits/rlocal_1024.hpp b/src/boost/boost/preprocessor/iteration/detail/limits/rlocal_1024.hpp new file mode 100644 index 000000000..1aaa02892 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/limits/rlocal_1024.hpp @@ -0,0 +1,1549 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_LOCAL_R(1024) + BOOST_PP_LOCAL_MACRO(1024) +# endif +# if BOOST_PP_LOCAL_R(1023) + BOOST_PP_LOCAL_MACRO(1023) +# endif +# if BOOST_PP_LOCAL_R(1022) + BOOST_PP_LOCAL_MACRO(1022) +# endif +# if BOOST_PP_LOCAL_R(1021) + BOOST_PP_LOCAL_MACRO(1021) +# endif +# if BOOST_PP_LOCAL_R(1020) + BOOST_PP_LOCAL_MACRO(1020) +# endif +# if BOOST_PP_LOCAL_R(1019) + BOOST_PP_LOCAL_MACRO(1019) +# endif +# if BOOST_PP_LOCAL_R(1018) + BOOST_PP_LOCAL_MACRO(1018) +# endif +# if BOOST_PP_LOCAL_R(1017) + BOOST_PP_LOCAL_MACRO(1017) +# endif +# if BOOST_PP_LOCAL_R(1016) + BOOST_PP_LOCAL_MACRO(1016) +# endif +# if BOOST_PP_LOCAL_R(1015) + BOOST_PP_LOCAL_MACRO(1015) +# endif +# if BOOST_PP_LOCAL_R(1014) + BOOST_PP_LOCAL_MACRO(1014) +# endif +# if BOOST_PP_LOCAL_R(1013) + BOOST_PP_LOCAL_MACRO(1013) +# endif +# if BOOST_PP_LOCAL_R(1012) + BOOST_PP_LOCAL_MACRO(1012) +# endif +# if BOOST_PP_LOCAL_R(1011) + BOOST_PP_LOCAL_MACRO(1011) +# endif +# if BOOST_PP_LOCAL_R(1010) + BOOST_PP_LOCAL_MACRO(1010) +# endif +# if BOOST_PP_LOCAL_R(1009) + BOOST_PP_LOCAL_MACRO(1009) +# endif +# if BOOST_PP_LOCAL_R(1008) + BOOST_PP_LOCAL_MACRO(1008) +# endif +# if BOOST_PP_LOCAL_R(1007) + BOOST_PP_LOCAL_MACRO(1007) +# endif +# if BOOST_PP_LOCAL_R(1006) + BOOST_PP_LOCAL_MACRO(1006) +# endif +# if BOOST_PP_LOCAL_R(1005) + BOOST_PP_LOCAL_MACRO(1005) +# endif +# if BOOST_PP_LOCAL_R(1004) + BOOST_PP_LOCAL_MACRO(1004) +# endif +# if BOOST_PP_LOCAL_R(1003) + BOOST_PP_LOCAL_MACRO(1003) +# endif +# if BOOST_PP_LOCAL_R(1002) + BOOST_PP_LOCAL_MACRO(1002) +# endif +# if BOOST_PP_LOCAL_R(1001) + BOOST_PP_LOCAL_MACRO(1001) +# endif +# if BOOST_PP_LOCAL_R(1000) + BOOST_PP_LOCAL_MACRO(1000) +# endif +# if BOOST_PP_LOCAL_R(999) + BOOST_PP_LOCAL_MACRO(999) +# endif +# if BOOST_PP_LOCAL_R(998) + BOOST_PP_LOCAL_MACRO(998) +# endif +# if BOOST_PP_LOCAL_R(997) + BOOST_PP_LOCAL_MACRO(997) +# endif +# if BOOST_PP_LOCAL_R(996) + BOOST_PP_LOCAL_MACRO(996) +# endif +# if BOOST_PP_LOCAL_R(995) + BOOST_PP_LOCAL_MACRO(995) +# endif +# if BOOST_PP_LOCAL_R(994) + BOOST_PP_LOCAL_MACRO(994) +# endif +# if BOOST_PP_LOCAL_R(993) + BOOST_PP_LOCAL_MACRO(993) +# endif +# if BOOST_PP_LOCAL_R(992) + BOOST_PP_LOCAL_MACRO(992) +# endif +# if BOOST_PP_LOCAL_R(991) + BOOST_PP_LOCAL_MACRO(991) +# endif +# if BOOST_PP_LOCAL_R(990) + BOOST_PP_LOCAL_MACRO(990) +# endif +# if BOOST_PP_LOCAL_R(989) + BOOST_PP_LOCAL_MACRO(989) +# endif +# if BOOST_PP_LOCAL_R(988) + BOOST_PP_LOCAL_MACRO(988) +# endif +# if BOOST_PP_LOCAL_R(987) + BOOST_PP_LOCAL_MACRO(987) +# endif +# if BOOST_PP_LOCAL_R(986) + BOOST_PP_LOCAL_MACRO(986) +# endif +# if BOOST_PP_LOCAL_R(985) + BOOST_PP_LOCAL_MACRO(985) +# endif +# if BOOST_PP_LOCAL_R(984) + BOOST_PP_LOCAL_MACRO(984) +# endif +# if BOOST_PP_LOCAL_R(983) + BOOST_PP_LOCAL_MACRO(983) +# endif +# if BOOST_PP_LOCAL_R(982) + BOOST_PP_LOCAL_MACRO(982) +# endif +# if BOOST_PP_LOCAL_R(981) + BOOST_PP_LOCAL_MACRO(981) +# endif +# if BOOST_PP_LOCAL_R(980) + BOOST_PP_LOCAL_MACRO(980) +# endif +# if BOOST_PP_LOCAL_R(979) + BOOST_PP_LOCAL_MACRO(979) +# endif +# if BOOST_PP_LOCAL_R(978) + BOOST_PP_LOCAL_MACRO(978) +# endif +# if BOOST_PP_LOCAL_R(977) + BOOST_PP_LOCAL_MACRO(977) +# endif +# if BOOST_PP_LOCAL_R(976) + BOOST_PP_LOCAL_MACRO(976) +# endif +# if BOOST_PP_LOCAL_R(975) + BOOST_PP_LOCAL_MACRO(975) +# endif +# if BOOST_PP_LOCAL_R(974) + BOOST_PP_LOCAL_MACRO(974) +# endif +# if BOOST_PP_LOCAL_R(973) + BOOST_PP_LOCAL_MACRO(973) +# endif +# if BOOST_PP_LOCAL_R(972) + BOOST_PP_LOCAL_MACRO(972) +# endif +# if BOOST_PP_LOCAL_R(971) + BOOST_PP_LOCAL_MACRO(971) +# endif +# if BOOST_PP_LOCAL_R(970) + BOOST_PP_LOCAL_MACRO(970) +# endif +# if BOOST_PP_LOCAL_R(969) + BOOST_PP_LOCAL_MACRO(969) +# endif +# if BOOST_PP_LOCAL_R(968) + BOOST_PP_LOCAL_MACRO(968) +# endif +# if BOOST_PP_LOCAL_R(967) + BOOST_PP_LOCAL_MACRO(967) +# endif +# if BOOST_PP_LOCAL_R(966) + BOOST_PP_LOCAL_MACRO(966) +# endif +# if BOOST_PP_LOCAL_R(965) + BOOST_PP_LOCAL_MACRO(965) +# endif +# if BOOST_PP_LOCAL_R(964) + BOOST_PP_LOCAL_MACRO(964) +# endif +# if BOOST_PP_LOCAL_R(963) + BOOST_PP_LOCAL_MACRO(963) +# endif +# if BOOST_PP_LOCAL_R(962) + BOOST_PP_LOCAL_MACRO(962) +# endif +# if BOOST_PP_LOCAL_R(961) + BOOST_PP_LOCAL_MACRO(961) +# endif +# if BOOST_PP_LOCAL_R(960) + BOOST_PP_LOCAL_MACRO(960) +# endif +# if BOOST_PP_LOCAL_R(959) + BOOST_PP_LOCAL_MACRO(959) +# endif +# if BOOST_PP_LOCAL_R(958) + BOOST_PP_LOCAL_MACRO(958) +# endif +# if BOOST_PP_LOCAL_R(957) + BOOST_PP_LOCAL_MACRO(957) +# endif +# if BOOST_PP_LOCAL_R(956) + BOOST_PP_LOCAL_MACRO(956) +# endif +# if BOOST_PP_LOCAL_R(955) + BOOST_PP_LOCAL_MACRO(955) +# endif +# if BOOST_PP_LOCAL_R(954) + BOOST_PP_LOCAL_MACRO(954) +# endif +# if BOOST_PP_LOCAL_R(953) + BOOST_PP_LOCAL_MACRO(953) +# endif +# if BOOST_PP_LOCAL_R(952) + BOOST_PP_LOCAL_MACRO(952) +# endif +# if BOOST_PP_LOCAL_R(951) + BOOST_PP_LOCAL_MACRO(951) +# endif +# if BOOST_PP_LOCAL_R(950) + BOOST_PP_LOCAL_MACRO(950) +# endif +# if BOOST_PP_LOCAL_R(949) + BOOST_PP_LOCAL_MACRO(949) +# endif +# if BOOST_PP_LOCAL_R(948) + BOOST_PP_LOCAL_MACRO(948) +# endif +# if BOOST_PP_LOCAL_R(947) + BOOST_PP_LOCAL_MACRO(947) +# endif +# if BOOST_PP_LOCAL_R(946) + BOOST_PP_LOCAL_MACRO(946) +# endif +# if BOOST_PP_LOCAL_R(945) + BOOST_PP_LOCAL_MACRO(945) +# endif +# if BOOST_PP_LOCAL_R(944) + BOOST_PP_LOCAL_MACRO(944) +# endif +# if BOOST_PP_LOCAL_R(943) + BOOST_PP_LOCAL_MACRO(943) +# endif +# if BOOST_PP_LOCAL_R(942) + BOOST_PP_LOCAL_MACRO(942) +# endif +# if BOOST_PP_LOCAL_R(941) + BOOST_PP_LOCAL_MACRO(941) +# endif +# if BOOST_PP_LOCAL_R(940) + BOOST_PP_LOCAL_MACRO(940) +# endif +# if BOOST_PP_LOCAL_R(939) + BOOST_PP_LOCAL_MACRO(939) +# endif +# if BOOST_PP_LOCAL_R(938) + BOOST_PP_LOCAL_MACRO(938) +# endif +# if BOOST_PP_LOCAL_R(937) + BOOST_PP_LOCAL_MACRO(937) +# endif +# if BOOST_PP_LOCAL_R(936) + BOOST_PP_LOCAL_MACRO(936) +# endif +# if BOOST_PP_LOCAL_R(935) + BOOST_PP_LOCAL_MACRO(935) +# endif +# if BOOST_PP_LOCAL_R(934) + BOOST_PP_LOCAL_MACRO(934) +# endif +# if BOOST_PP_LOCAL_R(933) + BOOST_PP_LOCAL_MACRO(933) +# endif +# if BOOST_PP_LOCAL_R(932) + BOOST_PP_LOCAL_MACRO(932) +# endif +# if BOOST_PP_LOCAL_R(931) + BOOST_PP_LOCAL_MACRO(931) +# endif +# if BOOST_PP_LOCAL_R(930) + BOOST_PP_LOCAL_MACRO(930) +# endif +# if BOOST_PP_LOCAL_R(929) + BOOST_PP_LOCAL_MACRO(929) +# endif +# if BOOST_PP_LOCAL_R(928) + BOOST_PP_LOCAL_MACRO(928) +# endif +# if BOOST_PP_LOCAL_R(927) + BOOST_PP_LOCAL_MACRO(927) +# endif +# if BOOST_PP_LOCAL_R(926) + BOOST_PP_LOCAL_MACRO(926) +# endif +# if BOOST_PP_LOCAL_R(925) + BOOST_PP_LOCAL_MACRO(925) +# endif +# if BOOST_PP_LOCAL_R(924) + BOOST_PP_LOCAL_MACRO(924) +# endif +# if BOOST_PP_LOCAL_R(923) + BOOST_PP_LOCAL_MACRO(923) +# endif +# if BOOST_PP_LOCAL_R(922) + BOOST_PP_LOCAL_MACRO(922) +# endif +# if BOOST_PP_LOCAL_R(921) + BOOST_PP_LOCAL_MACRO(921) +# endif +# if BOOST_PP_LOCAL_R(920) + BOOST_PP_LOCAL_MACRO(920) +# endif +# if BOOST_PP_LOCAL_R(919) + BOOST_PP_LOCAL_MACRO(919) +# endif +# if BOOST_PP_LOCAL_R(918) + BOOST_PP_LOCAL_MACRO(918) +# endif +# if BOOST_PP_LOCAL_R(917) + BOOST_PP_LOCAL_MACRO(917) +# endif +# if BOOST_PP_LOCAL_R(916) + BOOST_PP_LOCAL_MACRO(916) +# endif +# if BOOST_PP_LOCAL_R(915) + BOOST_PP_LOCAL_MACRO(915) +# endif +# if BOOST_PP_LOCAL_R(914) + BOOST_PP_LOCAL_MACRO(914) +# endif +# if BOOST_PP_LOCAL_R(913) + BOOST_PP_LOCAL_MACRO(913) +# endif +# if BOOST_PP_LOCAL_R(912) + BOOST_PP_LOCAL_MACRO(912) +# endif +# if BOOST_PP_LOCAL_R(911) + BOOST_PP_LOCAL_MACRO(911) +# endif +# if BOOST_PP_LOCAL_R(910) + BOOST_PP_LOCAL_MACRO(910) +# endif +# if BOOST_PP_LOCAL_R(909) + BOOST_PP_LOCAL_MACRO(909) +# endif +# if BOOST_PP_LOCAL_R(908) + BOOST_PP_LOCAL_MACRO(908) +# endif +# if BOOST_PP_LOCAL_R(907) + BOOST_PP_LOCAL_MACRO(907) +# endif +# if BOOST_PP_LOCAL_R(906) + BOOST_PP_LOCAL_MACRO(906) +# endif +# if BOOST_PP_LOCAL_R(905) + BOOST_PP_LOCAL_MACRO(905) +# endif +# if BOOST_PP_LOCAL_R(904) + BOOST_PP_LOCAL_MACRO(904) +# endif +# if BOOST_PP_LOCAL_R(903) + BOOST_PP_LOCAL_MACRO(903) +# endif +# if BOOST_PP_LOCAL_R(902) + BOOST_PP_LOCAL_MACRO(902) +# endif +# if BOOST_PP_LOCAL_R(901) + BOOST_PP_LOCAL_MACRO(901) +# endif +# if BOOST_PP_LOCAL_R(900) + BOOST_PP_LOCAL_MACRO(900) +# endif +# if BOOST_PP_LOCAL_R(899) + BOOST_PP_LOCAL_MACRO(899) +# endif +# if BOOST_PP_LOCAL_R(898) + BOOST_PP_LOCAL_MACRO(898) +# endif +# if BOOST_PP_LOCAL_R(897) + BOOST_PP_LOCAL_MACRO(897) +# endif +# if BOOST_PP_LOCAL_R(896) + BOOST_PP_LOCAL_MACRO(896) +# endif +# if BOOST_PP_LOCAL_R(895) + BOOST_PP_LOCAL_MACRO(895) +# endif +# if BOOST_PP_LOCAL_R(894) + BOOST_PP_LOCAL_MACRO(894) +# endif +# if BOOST_PP_LOCAL_R(893) + BOOST_PP_LOCAL_MACRO(893) +# endif +# if BOOST_PP_LOCAL_R(892) + BOOST_PP_LOCAL_MACRO(892) +# endif +# if BOOST_PP_LOCAL_R(891) + BOOST_PP_LOCAL_MACRO(891) +# endif +# if BOOST_PP_LOCAL_R(890) + BOOST_PP_LOCAL_MACRO(890) +# endif +# if BOOST_PP_LOCAL_R(889) + BOOST_PP_LOCAL_MACRO(889) +# endif +# if BOOST_PP_LOCAL_R(888) + BOOST_PP_LOCAL_MACRO(888) +# endif +# if BOOST_PP_LOCAL_R(887) + BOOST_PP_LOCAL_MACRO(887) +# endif +# if BOOST_PP_LOCAL_R(886) + BOOST_PP_LOCAL_MACRO(886) +# endif +# if BOOST_PP_LOCAL_R(885) + BOOST_PP_LOCAL_MACRO(885) +# endif +# if BOOST_PP_LOCAL_R(884) + BOOST_PP_LOCAL_MACRO(884) +# endif +# if BOOST_PP_LOCAL_R(883) + BOOST_PP_LOCAL_MACRO(883) +# endif +# if BOOST_PP_LOCAL_R(882) + BOOST_PP_LOCAL_MACRO(882) +# endif +# if BOOST_PP_LOCAL_R(881) + BOOST_PP_LOCAL_MACRO(881) +# endif +# if BOOST_PP_LOCAL_R(880) + BOOST_PP_LOCAL_MACRO(880) +# endif +# if BOOST_PP_LOCAL_R(879) + BOOST_PP_LOCAL_MACRO(879) +# endif +# if BOOST_PP_LOCAL_R(878) + BOOST_PP_LOCAL_MACRO(878) +# endif +# if BOOST_PP_LOCAL_R(877) + BOOST_PP_LOCAL_MACRO(877) +# endif +# if BOOST_PP_LOCAL_R(876) + BOOST_PP_LOCAL_MACRO(876) +# endif +# if BOOST_PP_LOCAL_R(875) + BOOST_PP_LOCAL_MACRO(875) +# endif +# if BOOST_PP_LOCAL_R(874) + BOOST_PP_LOCAL_MACRO(874) +# endif +# if BOOST_PP_LOCAL_R(873) + BOOST_PP_LOCAL_MACRO(873) +# endif +# if BOOST_PP_LOCAL_R(872) + BOOST_PP_LOCAL_MACRO(872) +# endif +# if BOOST_PP_LOCAL_R(871) + BOOST_PP_LOCAL_MACRO(871) +# endif +# if BOOST_PP_LOCAL_R(870) + BOOST_PP_LOCAL_MACRO(870) +# endif +# if BOOST_PP_LOCAL_R(869) + BOOST_PP_LOCAL_MACRO(869) +# endif +# if BOOST_PP_LOCAL_R(868) + BOOST_PP_LOCAL_MACRO(868) +# endif +# if BOOST_PP_LOCAL_R(867) + BOOST_PP_LOCAL_MACRO(867) +# endif +# if BOOST_PP_LOCAL_R(866) + BOOST_PP_LOCAL_MACRO(866) +# endif +# if BOOST_PP_LOCAL_R(865) + BOOST_PP_LOCAL_MACRO(865) +# endif +# if BOOST_PP_LOCAL_R(864) + BOOST_PP_LOCAL_MACRO(864) +# endif +# if BOOST_PP_LOCAL_R(863) + BOOST_PP_LOCAL_MACRO(863) +# endif +# if BOOST_PP_LOCAL_R(862) + BOOST_PP_LOCAL_MACRO(862) +# endif +# if BOOST_PP_LOCAL_R(861) + BOOST_PP_LOCAL_MACRO(861) +# endif +# if BOOST_PP_LOCAL_R(860) + BOOST_PP_LOCAL_MACRO(860) +# endif +# if BOOST_PP_LOCAL_R(859) + BOOST_PP_LOCAL_MACRO(859) +# endif +# if BOOST_PP_LOCAL_R(858) + BOOST_PP_LOCAL_MACRO(858) +# endif +# if BOOST_PP_LOCAL_R(857) + BOOST_PP_LOCAL_MACRO(857) +# endif +# if BOOST_PP_LOCAL_R(856) + BOOST_PP_LOCAL_MACRO(856) +# endif +# if BOOST_PP_LOCAL_R(855) + BOOST_PP_LOCAL_MACRO(855) +# endif +# if BOOST_PP_LOCAL_R(854) + BOOST_PP_LOCAL_MACRO(854) +# endif +# if BOOST_PP_LOCAL_R(853) + BOOST_PP_LOCAL_MACRO(853) +# endif +# if BOOST_PP_LOCAL_R(852) + BOOST_PP_LOCAL_MACRO(852) +# endif +# if BOOST_PP_LOCAL_R(851) + BOOST_PP_LOCAL_MACRO(851) +# endif +# if BOOST_PP_LOCAL_R(850) + BOOST_PP_LOCAL_MACRO(850) +# endif +# if BOOST_PP_LOCAL_R(849) + BOOST_PP_LOCAL_MACRO(849) +# endif +# if BOOST_PP_LOCAL_R(848) + BOOST_PP_LOCAL_MACRO(848) +# endif +# if BOOST_PP_LOCAL_R(847) + BOOST_PP_LOCAL_MACRO(847) +# endif +# if BOOST_PP_LOCAL_R(846) + BOOST_PP_LOCAL_MACRO(846) +# endif +# if BOOST_PP_LOCAL_R(845) + BOOST_PP_LOCAL_MACRO(845) +# endif +# if BOOST_PP_LOCAL_R(844) + BOOST_PP_LOCAL_MACRO(844) +# endif +# if BOOST_PP_LOCAL_R(843) + BOOST_PP_LOCAL_MACRO(843) +# endif +# if BOOST_PP_LOCAL_R(842) + BOOST_PP_LOCAL_MACRO(842) +# endif +# if BOOST_PP_LOCAL_R(841) + BOOST_PP_LOCAL_MACRO(841) +# endif +# if BOOST_PP_LOCAL_R(840) + BOOST_PP_LOCAL_MACRO(840) +# endif +# if BOOST_PP_LOCAL_R(839) + BOOST_PP_LOCAL_MACRO(839) +# endif +# if BOOST_PP_LOCAL_R(838) + BOOST_PP_LOCAL_MACRO(838) +# endif +# if BOOST_PP_LOCAL_R(837) + BOOST_PP_LOCAL_MACRO(837) +# endif +# if BOOST_PP_LOCAL_R(836) + BOOST_PP_LOCAL_MACRO(836) +# endif +# if BOOST_PP_LOCAL_R(835) + BOOST_PP_LOCAL_MACRO(835) +# endif +# if BOOST_PP_LOCAL_R(834) + BOOST_PP_LOCAL_MACRO(834) +# endif +# if BOOST_PP_LOCAL_R(833) + BOOST_PP_LOCAL_MACRO(833) +# endif +# if BOOST_PP_LOCAL_R(832) + BOOST_PP_LOCAL_MACRO(832) +# endif +# if BOOST_PP_LOCAL_R(831) + BOOST_PP_LOCAL_MACRO(831) +# endif +# if BOOST_PP_LOCAL_R(830) + BOOST_PP_LOCAL_MACRO(830) +# endif +# if BOOST_PP_LOCAL_R(829) + BOOST_PP_LOCAL_MACRO(829) +# endif +# if BOOST_PP_LOCAL_R(828) + BOOST_PP_LOCAL_MACRO(828) +# endif +# if BOOST_PP_LOCAL_R(827) + BOOST_PP_LOCAL_MACRO(827) +# endif +# if BOOST_PP_LOCAL_R(826) + BOOST_PP_LOCAL_MACRO(826) +# endif +# if BOOST_PP_LOCAL_R(825) + BOOST_PP_LOCAL_MACRO(825) +# endif +# if BOOST_PP_LOCAL_R(824) + BOOST_PP_LOCAL_MACRO(824) +# endif +# if BOOST_PP_LOCAL_R(823) + BOOST_PP_LOCAL_MACRO(823) +# endif +# if BOOST_PP_LOCAL_R(822) + BOOST_PP_LOCAL_MACRO(822) +# endif +# if BOOST_PP_LOCAL_R(821) + BOOST_PP_LOCAL_MACRO(821) +# endif +# if BOOST_PP_LOCAL_R(820) + BOOST_PP_LOCAL_MACRO(820) +# endif +# if BOOST_PP_LOCAL_R(819) + BOOST_PP_LOCAL_MACRO(819) +# endif +# if BOOST_PP_LOCAL_R(818) + BOOST_PP_LOCAL_MACRO(818) +# endif +# if BOOST_PP_LOCAL_R(817) + BOOST_PP_LOCAL_MACRO(817) +# endif +# if BOOST_PP_LOCAL_R(816) + BOOST_PP_LOCAL_MACRO(816) +# endif +# if BOOST_PP_LOCAL_R(815) + BOOST_PP_LOCAL_MACRO(815) +# endif +# if BOOST_PP_LOCAL_R(814) + BOOST_PP_LOCAL_MACRO(814) +# endif +# if BOOST_PP_LOCAL_R(813) + BOOST_PP_LOCAL_MACRO(813) +# endif +# if BOOST_PP_LOCAL_R(812) + BOOST_PP_LOCAL_MACRO(812) +# endif +# if BOOST_PP_LOCAL_R(811) + BOOST_PP_LOCAL_MACRO(811) +# endif +# if BOOST_PP_LOCAL_R(810) + BOOST_PP_LOCAL_MACRO(810) +# endif +# if BOOST_PP_LOCAL_R(809) + BOOST_PP_LOCAL_MACRO(809) +# endif +# if BOOST_PP_LOCAL_R(808) + BOOST_PP_LOCAL_MACRO(808) +# endif +# if BOOST_PP_LOCAL_R(807) + BOOST_PP_LOCAL_MACRO(807) +# endif +# if BOOST_PP_LOCAL_R(806) + BOOST_PP_LOCAL_MACRO(806) +# endif +# if BOOST_PP_LOCAL_R(805) + BOOST_PP_LOCAL_MACRO(805) +# endif +# if BOOST_PP_LOCAL_R(804) + BOOST_PP_LOCAL_MACRO(804) +# endif +# if BOOST_PP_LOCAL_R(803) + BOOST_PP_LOCAL_MACRO(803) +# endif +# if BOOST_PP_LOCAL_R(802) + BOOST_PP_LOCAL_MACRO(802) +# endif +# if BOOST_PP_LOCAL_R(801) + BOOST_PP_LOCAL_MACRO(801) +# endif +# if BOOST_PP_LOCAL_R(800) + BOOST_PP_LOCAL_MACRO(800) +# endif +# if BOOST_PP_LOCAL_R(799) + BOOST_PP_LOCAL_MACRO(799) +# endif +# if BOOST_PP_LOCAL_R(798) + BOOST_PP_LOCAL_MACRO(798) +# endif +# if BOOST_PP_LOCAL_R(797) + BOOST_PP_LOCAL_MACRO(797) +# endif +# if BOOST_PP_LOCAL_R(796) + BOOST_PP_LOCAL_MACRO(796) +# endif +# if BOOST_PP_LOCAL_R(795) + BOOST_PP_LOCAL_MACRO(795) +# endif +# if BOOST_PP_LOCAL_R(794) + BOOST_PP_LOCAL_MACRO(794) +# endif +# if BOOST_PP_LOCAL_R(793) + BOOST_PP_LOCAL_MACRO(793) +# endif +# if BOOST_PP_LOCAL_R(792) + BOOST_PP_LOCAL_MACRO(792) +# endif +# if BOOST_PP_LOCAL_R(791) + BOOST_PP_LOCAL_MACRO(791) +# endif +# if BOOST_PP_LOCAL_R(790) + BOOST_PP_LOCAL_MACRO(790) +# endif +# if BOOST_PP_LOCAL_R(789) + BOOST_PP_LOCAL_MACRO(789) +# endif +# if BOOST_PP_LOCAL_R(788) + BOOST_PP_LOCAL_MACRO(788) +# endif +# if BOOST_PP_LOCAL_R(787) + BOOST_PP_LOCAL_MACRO(787) +# endif +# if BOOST_PP_LOCAL_R(786) + BOOST_PP_LOCAL_MACRO(786) +# endif +# if BOOST_PP_LOCAL_R(785) + BOOST_PP_LOCAL_MACRO(785) +# endif +# if BOOST_PP_LOCAL_R(784) + BOOST_PP_LOCAL_MACRO(784) +# endif +# if BOOST_PP_LOCAL_R(783) + BOOST_PP_LOCAL_MACRO(783) +# endif +# if BOOST_PP_LOCAL_R(782) + BOOST_PP_LOCAL_MACRO(782) +# endif +# if BOOST_PP_LOCAL_R(781) + BOOST_PP_LOCAL_MACRO(781) +# endif +# if BOOST_PP_LOCAL_R(780) + BOOST_PP_LOCAL_MACRO(780) +# endif +# if BOOST_PP_LOCAL_R(779) + BOOST_PP_LOCAL_MACRO(779) +# endif +# if BOOST_PP_LOCAL_R(778) + BOOST_PP_LOCAL_MACRO(778) +# endif +# if BOOST_PP_LOCAL_R(777) + BOOST_PP_LOCAL_MACRO(777) +# endif +# if BOOST_PP_LOCAL_R(776) + BOOST_PP_LOCAL_MACRO(776) +# endif +# if BOOST_PP_LOCAL_R(775) + BOOST_PP_LOCAL_MACRO(775) +# endif +# if BOOST_PP_LOCAL_R(774) + BOOST_PP_LOCAL_MACRO(774) +# endif +# if BOOST_PP_LOCAL_R(773) + BOOST_PP_LOCAL_MACRO(773) +# endif +# if BOOST_PP_LOCAL_R(772) + BOOST_PP_LOCAL_MACRO(772) +# endif +# if BOOST_PP_LOCAL_R(771) + BOOST_PP_LOCAL_MACRO(771) +# endif +# if BOOST_PP_LOCAL_R(770) + BOOST_PP_LOCAL_MACRO(770) +# endif +# if BOOST_PP_LOCAL_R(769) + BOOST_PP_LOCAL_MACRO(769) +# endif +# if BOOST_PP_LOCAL_R(768) + BOOST_PP_LOCAL_MACRO(768) +# endif +# if BOOST_PP_LOCAL_R(767) + BOOST_PP_LOCAL_MACRO(767) +# endif +# if BOOST_PP_LOCAL_R(766) + BOOST_PP_LOCAL_MACRO(766) +# endif +# if BOOST_PP_LOCAL_R(765) + BOOST_PP_LOCAL_MACRO(765) +# endif +# if BOOST_PP_LOCAL_R(764) + BOOST_PP_LOCAL_MACRO(764) +# endif +# if BOOST_PP_LOCAL_R(763) + BOOST_PP_LOCAL_MACRO(763) +# endif +# if BOOST_PP_LOCAL_R(762) + BOOST_PP_LOCAL_MACRO(762) +# endif +# if BOOST_PP_LOCAL_R(761) + BOOST_PP_LOCAL_MACRO(761) +# endif +# if BOOST_PP_LOCAL_R(760) + BOOST_PP_LOCAL_MACRO(760) +# endif +# if BOOST_PP_LOCAL_R(759) + BOOST_PP_LOCAL_MACRO(759) +# endif +# if BOOST_PP_LOCAL_R(758) + BOOST_PP_LOCAL_MACRO(758) +# endif +# if BOOST_PP_LOCAL_R(757) + BOOST_PP_LOCAL_MACRO(757) +# endif +# if BOOST_PP_LOCAL_R(756) + BOOST_PP_LOCAL_MACRO(756) +# endif +# if BOOST_PP_LOCAL_R(755) + BOOST_PP_LOCAL_MACRO(755) +# endif +# if BOOST_PP_LOCAL_R(754) + BOOST_PP_LOCAL_MACRO(754) +# endif +# if BOOST_PP_LOCAL_R(753) + BOOST_PP_LOCAL_MACRO(753) +# endif +# if BOOST_PP_LOCAL_R(752) + BOOST_PP_LOCAL_MACRO(752) +# endif +# if BOOST_PP_LOCAL_R(751) + BOOST_PP_LOCAL_MACRO(751) +# endif +# if BOOST_PP_LOCAL_R(750) + BOOST_PP_LOCAL_MACRO(750) +# endif +# if BOOST_PP_LOCAL_R(749) + BOOST_PP_LOCAL_MACRO(749) +# endif +# if BOOST_PP_LOCAL_R(748) + BOOST_PP_LOCAL_MACRO(748) +# endif +# if BOOST_PP_LOCAL_R(747) + BOOST_PP_LOCAL_MACRO(747) +# endif +# if BOOST_PP_LOCAL_R(746) + BOOST_PP_LOCAL_MACRO(746) +# endif +# if BOOST_PP_LOCAL_R(745) + BOOST_PP_LOCAL_MACRO(745) +# endif +# if BOOST_PP_LOCAL_R(744) + BOOST_PP_LOCAL_MACRO(744) +# endif +# if BOOST_PP_LOCAL_R(743) + BOOST_PP_LOCAL_MACRO(743) +# endif +# if BOOST_PP_LOCAL_R(742) + BOOST_PP_LOCAL_MACRO(742) +# endif +# if BOOST_PP_LOCAL_R(741) + BOOST_PP_LOCAL_MACRO(741) +# endif +# if BOOST_PP_LOCAL_R(740) + BOOST_PP_LOCAL_MACRO(740) +# endif +# if BOOST_PP_LOCAL_R(739) + BOOST_PP_LOCAL_MACRO(739) +# endif +# if BOOST_PP_LOCAL_R(738) + BOOST_PP_LOCAL_MACRO(738) +# endif +# if BOOST_PP_LOCAL_R(737) + BOOST_PP_LOCAL_MACRO(737) +# endif +# if BOOST_PP_LOCAL_R(736) + BOOST_PP_LOCAL_MACRO(736) +# endif +# if BOOST_PP_LOCAL_R(735) + BOOST_PP_LOCAL_MACRO(735) +# endif +# if BOOST_PP_LOCAL_R(734) + BOOST_PP_LOCAL_MACRO(734) +# endif +# if BOOST_PP_LOCAL_R(733) + BOOST_PP_LOCAL_MACRO(733) +# endif +# if BOOST_PP_LOCAL_R(732) + BOOST_PP_LOCAL_MACRO(732) +# endif +# if BOOST_PP_LOCAL_R(731) + BOOST_PP_LOCAL_MACRO(731) +# endif +# if BOOST_PP_LOCAL_R(730) + BOOST_PP_LOCAL_MACRO(730) +# endif +# if BOOST_PP_LOCAL_R(729) + BOOST_PP_LOCAL_MACRO(729) +# endif +# if BOOST_PP_LOCAL_R(728) + BOOST_PP_LOCAL_MACRO(728) +# endif +# if BOOST_PP_LOCAL_R(727) + BOOST_PP_LOCAL_MACRO(727) +# endif +# if BOOST_PP_LOCAL_R(726) + BOOST_PP_LOCAL_MACRO(726) +# endif +# if BOOST_PP_LOCAL_R(725) + BOOST_PP_LOCAL_MACRO(725) +# endif +# if BOOST_PP_LOCAL_R(724) + BOOST_PP_LOCAL_MACRO(724) +# endif +# if BOOST_PP_LOCAL_R(723) + BOOST_PP_LOCAL_MACRO(723) +# endif +# if BOOST_PP_LOCAL_R(722) + BOOST_PP_LOCAL_MACRO(722) +# endif +# if BOOST_PP_LOCAL_R(721) + BOOST_PP_LOCAL_MACRO(721) +# endif +# if BOOST_PP_LOCAL_R(720) + BOOST_PP_LOCAL_MACRO(720) +# endif +# if BOOST_PP_LOCAL_R(719) + BOOST_PP_LOCAL_MACRO(719) +# endif +# if BOOST_PP_LOCAL_R(718) + BOOST_PP_LOCAL_MACRO(718) +# endif +# if BOOST_PP_LOCAL_R(717) + BOOST_PP_LOCAL_MACRO(717) +# endif +# if BOOST_PP_LOCAL_R(716) + BOOST_PP_LOCAL_MACRO(716) +# endif +# if BOOST_PP_LOCAL_R(715) + BOOST_PP_LOCAL_MACRO(715) +# endif +# if BOOST_PP_LOCAL_R(714) + BOOST_PP_LOCAL_MACRO(714) +# endif +# if BOOST_PP_LOCAL_R(713) + BOOST_PP_LOCAL_MACRO(713) +# endif +# if BOOST_PP_LOCAL_R(712) + BOOST_PP_LOCAL_MACRO(712) +# endif +# if BOOST_PP_LOCAL_R(711) + BOOST_PP_LOCAL_MACRO(711) +# endif +# if BOOST_PP_LOCAL_R(710) + BOOST_PP_LOCAL_MACRO(710) +# endif +# if BOOST_PP_LOCAL_R(709) + BOOST_PP_LOCAL_MACRO(709) +# endif +# if BOOST_PP_LOCAL_R(708) + BOOST_PP_LOCAL_MACRO(708) +# endif +# if BOOST_PP_LOCAL_R(707) + BOOST_PP_LOCAL_MACRO(707) +# endif +# if BOOST_PP_LOCAL_R(706) + BOOST_PP_LOCAL_MACRO(706) +# endif +# if BOOST_PP_LOCAL_R(705) + BOOST_PP_LOCAL_MACRO(705) +# endif +# if BOOST_PP_LOCAL_R(704) + BOOST_PP_LOCAL_MACRO(704) +# endif +# if BOOST_PP_LOCAL_R(703) + BOOST_PP_LOCAL_MACRO(703) +# endif +# if BOOST_PP_LOCAL_R(702) + BOOST_PP_LOCAL_MACRO(702) +# endif +# if BOOST_PP_LOCAL_R(701) + BOOST_PP_LOCAL_MACRO(701) +# endif +# if BOOST_PP_LOCAL_R(700) + BOOST_PP_LOCAL_MACRO(700) +# endif +# if BOOST_PP_LOCAL_R(699) + BOOST_PP_LOCAL_MACRO(699) +# endif +# if BOOST_PP_LOCAL_R(698) + BOOST_PP_LOCAL_MACRO(698) +# endif +# if BOOST_PP_LOCAL_R(697) + BOOST_PP_LOCAL_MACRO(697) +# endif +# if BOOST_PP_LOCAL_R(696) + BOOST_PP_LOCAL_MACRO(696) +# endif +# if BOOST_PP_LOCAL_R(695) + BOOST_PP_LOCAL_MACRO(695) +# endif +# if BOOST_PP_LOCAL_R(694) + BOOST_PP_LOCAL_MACRO(694) +# endif +# if BOOST_PP_LOCAL_R(693) + BOOST_PP_LOCAL_MACRO(693) +# endif +# if BOOST_PP_LOCAL_R(692) + BOOST_PP_LOCAL_MACRO(692) +# endif +# if BOOST_PP_LOCAL_R(691) + BOOST_PP_LOCAL_MACRO(691) +# endif +# if BOOST_PP_LOCAL_R(690) + BOOST_PP_LOCAL_MACRO(690) +# endif +# if BOOST_PP_LOCAL_R(689) + BOOST_PP_LOCAL_MACRO(689) +# endif +# if BOOST_PP_LOCAL_R(688) + BOOST_PP_LOCAL_MACRO(688) +# endif +# if BOOST_PP_LOCAL_R(687) + BOOST_PP_LOCAL_MACRO(687) +# endif +# if BOOST_PP_LOCAL_R(686) + BOOST_PP_LOCAL_MACRO(686) +# endif +# if BOOST_PP_LOCAL_R(685) + BOOST_PP_LOCAL_MACRO(685) +# endif +# if BOOST_PP_LOCAL_R(684) + BOOST_PP_LOCAL_MACRO(684) +# endif +# if BOOST_PP_LOCAL_R(683) + BOOST_PP_LOCAL_MACRO(683) +# endif +# if BOOST_PP_LOCAL_R(682) + BOOST_PP_LOCAL_MACRO(682) +# endif +# if BOOST_PP_LOCAL_R(681) + BOOST_PP_LOCAL_MACRO(681) +# endif +# if BOOST_PP_LOCAL_R(680) + BOOST_PP_LOCAL_MACRO(680) +# endif +# if BOOST_PP_LOCAL_R(679) + BOOST_PP_LOCAL_MACRO(679) +# endif +# if BOOST_PP_LOCAL_R(678) + BOOST_PP_LOCAL_MACRO(678) +# endif +# if BOOST_PP_LOCAL_R(677) + BOOST_PP_LOCAL_MACRO(677) +# endif +# if BOOST_PP_LOCAL_R(676) + BOOST_PP_LOCAL_MACRO(676) +# endif +# if BOOST_PP_LOCAL_R(675) + BOOST_PP_LOCAL_MACRO(675) +# endif +# if BOOST_PP_LOCAL_R(674) + BOOST_PP_LOCAL_MACRO(674) +# endif +# if BOOST_PP_LOCAL_R(673) + BOOST_PP_LOCAL_MACRO(673) +# endif +# if BOOST_PP_LOCAL_R(672) + BOOST_PP_LOCAL_MACRO(672) +# endif +# if BOOST_PP_LOCAL_R(671) + BOOST_PP_LOCAL_MACRO(671) +# endif +# if BOOST_PP_LOCAL_R(670) + BOOST_PP_LOCAL_MACRO(670) +# endif +# if BOOST_PP_LOCAL_R(669) + BOOST_PP_LOCAL_MACRO(669) +# endif +# if BOOST_PP_LOCAL_R(668) + BOOST_PP_LOCAL_MACRO(668) +# endif +# if BOOST_PP_LOCAL_R(667) + BOOST_PP_LOCAL_MACRO(667) +# endif +# if BOOST_PP_LOCAL_R(666) + BOOST_PP_LOCAL_MACRO(666) +# endif +# if BOOST_PP_LOCAL_R(665) + BOOST_PP_LOCAL_MACRO(665) +# endif +# if BOOST_PP_LOCAL_R(664) + BOOST_PP_LOCAL_MACRO(664) +# endif +# if BOOST_PP_LOCAL_R(663) + BOOST_PP_LOCAL_MACRO(663) +# endif +# if BOOST_PP_LOCAL_R(662) + BOOST_PP_LOCAL_MACRO(662) +# endif +# if BOOST_PP_LOCAL_R(661) + BOOST_PP_LOCAL_MACRO(661) +# endif +# if BOOST_PP_LOCAL_R(660) + BOOST_PP_LOCAL_MACRO(660) +# endif +# if BOOST_PP_LOCAL_R(659) + BOOST_PP_LOCAL_MACRO(659) +# endif +# if BOOST_PP_LOCAL_R(658) + BOOST_PP_LOCAL_MACRO(658) +# endif +# if BOOST_PP_LOCAL_R(657) + BOOST_PP_LOCAL_MACRO(657) +# endif +# if BOOST_PP_LOCAL_R(656) + BOOST_PP_LOCAL_MACRO(656) +# endif +# if BOOST_PP_LOCAL_R(655) + BOOST_PP_LOCAL_MACRO(655) +# endif +# if BOOST_PP_LOCAL_R(654) + BOOST_PP_LOCAL_MACRO(654) +# endif +# if BOOST_PP_LOCAL_R(653) + BOOST_PP_LOCAL_MACRO(653) +# endif +# if BOOST_PP_LOCAL_R(652) + BOOST_PP_LOCAL_MACRO(652) +# endif +# if BOOST_PP_LOCAL_R(651) + BOOST_PP_LOCAL_MACRO(651) +# endif +# if BOOST_PP_LOCAL_R(650) + BOOST_PP_LOCAL_MACRO(650) +# endif +# if BOOST_PP_LOCAL_R(649) + BOOST_PP_LOCAL_MACRO(649) +# endif +# if BOOST_PP_LOCAL_R(648) + BOOST_PP_LOCAL_MACRO(648) +# endif +# if BOOST_PP_LOCAL_R(647) + BOOST_PP_LOCAL_MACRO(647) +# endif +# if BOOST_PP_LOCAL_R(646) + BOOST_PP_LOCAL_MACRO(646) +# endif +# if BOOST_PP_LOCAL_R(645) + BOOST_PP_LOCAL_MACRO(645) +# endif +# if BOOST_PP_LOCAL_R(644) + BOOST_PP_LOCAL_MACRO(644) +# endif +# if BOOST_PP_LOCAL_R(643) + BOOST_PP_LOCAL_MACRO(643) +# endif +# if BOOST_PP_LOCAL_R(642) + BOOST_PP_LOCAL_MACRO(642) +# endif +# if BOOST_PP_LOCAL_R(641) + BOOST_PP_LOCAL_MACRO(641) +# endif +# if BOOST_PP_LOCAL_R(640) + BOOST_PP_LOCAL_MACRO(640) +# endif +# if BOOST_PP_LOCAL_R(639) + BOOST_PP_LOCAL_MACRO(639) +# endif +# if BOOST_PP_LOCAL_R(638) + BOOST_PP_LOCAL_MACRO(638) +# endif +# if BOOST_PP_LOCAL_R(637) + BOOST_PP_LOCAL_MACRO(637) +# endif +# if BOOST_PP_LOCAL_R(636) + BOOST_PP_LOCAL_MACRO(636) +# endif +# if BOOST_PP_LOCAL_R(635) + BOOST_PP_LOCAL_MACRO(635) +# endif +# if BOOST_PP_LOCAL_R(634) + BOOST_PP_LOCAL_MACRO(634) +# endif +# if BOOST_PP_LOCAL_R(633) + BOOST_PP_LOCAL_MACRO(633) +# endif +# if BOOST_PP_LOCAL_R(632) + BOOST_PP_LOCAL_MACRO(632) +# endif +# if BOOST_PP_LOCAL_R(631) + BOOST_PP_LOCAL_MACRO(631) +# endif +# if BOOST_PP_LOCAL_R(630) + BOOST_PP_LOCAL_MACRO(630) +# endif +# if BOOST_PP_LOCAL_R(629) + BOOST_PP_LOCAL_MACRO(629) +# endif +# if BOOST_PP_LOCAL_R(628) + BOOST_PP_LOCAL_MACRO(628) +# endif +# if BOOST_PP_LOCAL_R(627) + BOOST_PP_LOCAL_MACRO(627) +# endif +# if BOOST_PP_LOCAL_R(626) + BOOST_PP_LOCAL_MACRO(626) +# endif +# if BOOST_PP_LOCAL_R(625) + BOOST_PP_LOCAL_MACRO(625) +# endif +# if BOOST_PP_LOCAL_R(624) + BOOST_PP_LOCAL_MACRO(624) +# endif +# if BOOST_PP_LOCAL_R(623) + BOOST_PP_LOCAL_MACRO(623) +# endif +# if BOOST_PP_LOCAL_R(622) + BOOST_PP_LOCAL_MACRO(622) +# endif +# if BOOST_PP_LOCAL_R(621) + BOOST_PP_LOCAL_MACRO(621) +# endif +# if BOOST_PP_LOCAL_R(620) + BOOST_PP_LOCAL_MACRO(620) +# endif +# if BOOST_PP_LOCAL_R(619) + BOOST_PP_LOCAL_MACRO(619) +# endif +# if BOOST_PP_LOCAL_R(618) + BOOST_PP_LOCAL_MACRO(618) +# endif +# if BOOST_PP_LOCAL_R(617) + BOOST_PP_LOCAL_MACRO(617) +# endif +# if BOOST_PP_LOCAL_R(616) + BOOST_PP_LOCAL_MACRO(616) +# endif +# if BOOST_PP_LOCAL_R(615) + BOOST_PP_LOCAL_MACRO(615) +# endif +# if BOOST_PP_LOCAL_R(614) + BOOST_PP_LOCAL_MACRO(614) +# endif +# if BOOST_PP_LOCAL_R(613) + BOOST_PP_LOCAL_MACRO(613) +# endif +# if BOOST_PP_LOCAL_R(612) + BOOST_PP_LOCAL_MACRO(612) +# endif +# if BOOST_PP_LOCAL_R(611) + BOOST_PP_LOCAL_MACRO(611) +# endif +# if BOOST_PP_LOCAL_R(610) + BOOST_PP_LOCAL_MACRO(610) +# endif +# if BOOST_PP_LOCAL_R(609) + BOOST_PP_LOCAL_MACRO(609) +# endif +# if BOOST_PP_LOCAL_R(608) + BOOST_PP_LOCAL_MACRO(608) +# endif +# if BOOST_PP_LOCAL_R(607) + BOOST_PP_LOCAL_MACRO(607) +# endif +# if BOOST_PP_LOCAL_R(606) + BOOST_PP_LOCAL_MACRO(606) +# endif +# if BOOST_PP_LOCAL_R(605) + BOOST_PP_LOCAL_MACRO(605) +# endif +# if BOOST_PP_LOCAL_R(604) + BOOST_PP_LOCAL_MACRO(604) +# endif +# if BOOST_PP_LOCAL_R(603) + BOOST_PP_LOCAL_MACRO(603) +# endif +# if BOOST_PP_LOCAL_R(602) + BOOST_PP_LOCAL_MACRO(602) +# endif +# if BOOST_PP_LOCAL_R(601) + BOOST_PP_LOCAL_MACRO(601) +# endif +# if BOOST_PP_LOCAL_R(600) + BOOST_PP_LOCAL_MACRO(600) +# endif +# if BOOST_PP_LOCAL_R(599) + BOOST_PP_LOCAL_MACRO(599) +# endif +# if BOOST_PP_LOCAL_R(598) + BOOST_PP_LOCAL_MACRO(598) +# endif +# if BOOST_PP_LOCAL_R(597) + BOOST_PP_LOCAL_MACRO(597) +# endif +# if BOOST_PP_LOCAL_R(596) + BOOST_PP_LOCAL_MACRO(596) +# endif +# if BOOST_PP_LOCAL_R(595) + BOOST_PP_LOCAL_MACRO(595) +# endif +# if BOOST_PP_LOCAL_R(594) + BOOST_PP_LOCAL_MACRO(594) +# endif +# if BOOST_PP_LOCAL_R(593) + BOOST_PP_LOCAL_MACRO(593) +# endif +# if BOOST_PP_LOCAL_R(592) + BOOST_PP_LOCAL_MACRO(592) +# endif +# if BOOST_PP_LOCAL_R(591) + BOOST_PP_LOCAL_MACRO(591) +# endif +# if BOOST_PP_LOCAL_R(590) + BOOST_PP_LOCAL_MACRO(590) +# endif +# if BOOST_PP_LOCAL_R(589) + BOOST_PP_LOCAL_MACRO(589) +# endif +# if BOOST_PP_LOCAL_R(588) + BOOST_PP_LOCAL_MACRO(588) +# endif +# if BOOST_PP_LOCAL_R(587) + BOOST_PP_LOCAL_MACRO(587) +# endif +# if BOOST_PP_LOCAL_R(586) + BOOST_PP_LOCAL_MACRO(586) +# endif +# if BOOST_PP_LOCAL_R(585) + BOOST_PP_LOCAL_MACRO(585) +# endif +# if BOOST_PP_LOCAL_R(584) + BOOST_PP_LOCAL_MACRO(584) +# endif +# if BOOST_PP_LOCAL_R(583) + BOOST_PP_LOCAL_MACRO(583) +# endif +# if BOOST_PP_LOCAL_R(582) + BOOST_PP_LOCAL_MACRO(582) +# endif +# if BOOST_PP_LOCAL_R(581) + BOOST_PP_LOCAL_MACRO(581) +# endif +# if BOOST_PP_LOCAL_R(580) + BOOST_PP_LOCAL_MACRO(580) +# endif +# if BOOST_PP_LOCAL_R(579) + BOOST_PP_LOCAL_MACRO(579) +# endif +# if BOOST_PP_LOCAL_R(578) + BOOST_PP_LOCAL_MACRO(578) +# endif +# if BOOST_PP_LOCAL_R(577) + BOOST_PP_LOCAL_MACRO(577) +# endif +# if BOOST_PP_LOCAL_R(576) + BOOST_PP_LOCAL_MACRO(576) +# endif +# if BOOST_PP_LOCAL_R(575) + BOOST_PP_LOCAL_MACRO(575) +# endif +# if BOOST_PP_LOCAL_R(574) + BOOST_PP_LOCAL_MACRO(574) +# endif +# if BOOST_PP_LOCAL_R(573) + BOOST_PP_LOCAL_MACRO(573) +# endif +# if BOOST_PP_LOCAL_R(572) + BOOST_PP_LOCAL_MACRO(572) +# endif +# if BOOST_PP_LOCAL_R(571) + BOOST_PP_LOCAL_MACRO(571) +# endif +# if BOOST_PP_LOCAL_R(570) + BOOST_PP_LOCAL_MACRO(570) +# endif +# if BOOST_PP_LOCAL_R(569) + BOOST_PP_LOCAL_MACRO(569) +# endif +# if BOOST_PP_LOCAL_R(568) + BOOST_PP_LOCAL_MACRO(568) +# endif +# if BOOST_PP_LOCAL_R(567) + BOOST_PP_LOCAL_MACRO(567) +# endif +# if BOOST_PP_LOCAL_R(566) + BOOST_PP_LOCAL_MACRO(566) +# endif +# if BOOST_PP_LOCAL_R(565) + BOOST_PP_LOCAL_MACRO(565) +# endif +# if BOOST_PP_LOCAL_R(564) + BOOST_PP_LOCAL_MACRO(564) +# endif +# if BOOST_PP_LOCAL_R(563) + BOOST_PP_LOCAL_MACRO(563) +# endif +# if BOOST_PP_LOCAL_R(562) + BOOST_PP_LOCAL_MACRO(562) +# endif +# if BOOST_PP_LOCAL_R(561) + BOOST_PP_LOCAL_MACRO(561) +# endif +# if BOOST_PP_LOCAL_R(560) + BOOST_PP_LOCAL_MACRO(560) +# endif +# if BOOST_PP_LOCAL_R(559) + BOOST_PP_LOCAL_MACRO(559) +# endif +# if BOOST_PP_LOCAL_R(558) + BOOST_PP_LOCAL_MACRO(558) +# endif +# if BOOST_PP_LOCAL_R(557) + BOOST_PP_LOCAL_MACRO(557) +# endif +# if BOOST_PP_LOCAL_R(556) + BOOST_PP_LOCAL_MACRO(556) +# endif +# if BOOST_PP_LOCAL_R(555) + BOOST_PP_LOCAL_MACRO(555) +# endif +# if BOOST_PP_LOCAL_R(554) + BOOST_PP_LOCAL_MACRO(554) +# endif +# if BOOST_PP_LOCAL_R(553) + BOOST_PP_LOCAL_MACRO(553) +# endif +# if BOOST_PP_LOCAL_R(552) + BOOST_PP_LOCAL_MACRO(552) +# endif +# if BOOST_PP_LOCAL_R(551) + BOOST_PP_LOCAL_MACRO(551) +# endif +# if BOOST_PP_LOCAL_R(550) + BOOST_PP_LOCAL_MACRO(550) +# endif +# if BOOST_PP_LOCAL_R(549) + BOOST_PP_LOCAL_MACRO(549) +# endif +# if BOOST_PP_LOCAL_R(548) + BOOST_PP_LOCAL_MACRO(548) +# endif +# if BOOST_PP_LOCAL_R(547) + BOOST_PP_LOCAL_MACRO(547) +# endif +# if BOOST_PP_LOCAL_R(546) + BOOST_PP_LOCAL_MACRO(546) +# endif +# if BOOST_PP_LOCAL_R(545) + BOOST_PP_LOCAL_MACRO(545) +# endif +# if BOOST_PP_LOCAL_R(544) + BOOST_PP_LOCAL_MACRO(544) +# endif +# if BOOST_PP_LOCAL_R(543) + BOOST_PP_LOCAL_MACRO(543) +# endif +# if BOOST_PP_LOCAL_R(542) + BOOST_PP_LOCAL_MACRO(542) +# endif +# if BOOST_PP_LOCAL_R(541) + BOOST_PP_LOCAL_MACRO(541) +# endif +# if BOOST_PP_LOCAL_R(540) + BOOST_PP_LOCAL_MACRO(540) +# endif +# if BOOST_PP_LOCAL_R(539) + BOOST_PP_LOCAL_MACRO(539) +# endif +# if BOOST_PP_LOCAL_R(538) + BOOST_PP_LOCAL_MACRO(538) +# endif +# if BOOST_PP_LOCAL_R(537) + BOOST_PP_LOCAL_MACRO(537) +# endif +# if BOOST_PP_LOCAL_R(536) + BOOST_PP_LOCAL_MACRO(536) +# endif +# if BOOST_PP_LOCAL_R(535) + BOOST_PP_LOCAL_MACRO(535) +# endif +# if BOOST_PP_LOCAL_R(534) + BOOST_PP_LOCAL_MACRO(534) +# endif +# if BOOST_PP_LOCAL_R(533) + BOOST_PP_LOCAL_MACRO(533) +# endif +# if BOOST_PP_LOCAL_R(532) + BOOST_PP_LOCAL_MACRO(532) +# endif +# if BOOST_PP_LOCAL_R(531) + BOOST_PP_LOCAL_MACRO(531) +# endif +# if BOOST_PP_LOCAL_R(530) + BOOST_PP_LOCAL_MACRO(530) +# endif +# if BOOST_PP_LOCAL_R(529) + BOOST_PP_LOCAL_MACRO(529) +# endif +# if BOOST_PP_LOCAL_R(528) + BOOST_PP_LOCAL_MACRO(528) +# endif +# if BOOST_PP_LOCAL_R(527) + BOOST_PP_LOCAL_MACRO(527) +# endif +# if BOOST_PP_LOCAL_R(526) + BOOST_PP_LOCAL_MACRO(526) +# endif +# if BOOST_PP_LOCAL_R(525) + BOOST_PP_LOCAL_MACRO(525) +# endif +# if BOOST_PP_LOCAL_R(524) + BOOST_PP_LOCAL_MACRO(524) +# endif +# if BOOST_PP_LOCAL_R(523) + BOOST_PP_LOCAL_MACRO(523) +# endif +# if BOOST_PP_LOCAL_R(522) + BOOST_PP_LOCAL_MACRO(522) +# endif +# if BOOST_PP_LOCAL_R(521) + BOOST_PP_LOCAL_MACRO(521) +# endif +# if BOOST_PP_LOCAL_R(520) + BOOST_PP_LOCAL_MACRO(520) +# endif +# if BOOST_PP_LOCAL_R(519) + BOOST_PP_LOCAL_MACRO(519) +# endif +# if BOOST_PP_LOCAL_R(518) + BOOST_PP_LOCAL_MACRO(518) +# endif +# if BOOST_PP_LOCAL_R(517) + BOOST_PP_LOCAL_MACRO(517) +# endif +# if BOOST_PP_LOCAL_R(516) + BOOST_PP_LOCAL_MACRO(516) +# endif +# if BOOST_PP_LOCAL_R(515) + BOOST_PP_LOCAL_MACRO(515) +# endif +# if BOOST_PP_LOCAL_R(514) + BOOST_PP_LOCAL_MACRO(514) +# endif +# if BOOST_PP_LOCAL_R(513) + BOOST_PP_LOCAL_MACRO(513) +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/limits/rlocal_256.hpp b/src/boost/boost/preprocessor/iteration/detail/limits/rlocal_256.hpp new file mode 100644 index 000000000..3b3fcaeb0 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/limits/rlocal_256.hpp @@ -0,0 +1,782 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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. */ +# +# if BOOST_PP_LOCAL_R(256) + BOOST_PP_LOCAL_MACRO(256) +# endif +# if BOOST_PP_LOCAL_R(255) + BOOST_PP_LOCAL_MACRO(255) +# endif +# if BOOST_PP_LOCAL_R(254) + BOOST_PP_LOCAL_MACRO(254) +# endif +# if BOOST_PP_LOCAL_R(253) + BOOST_PP_LOCAL_MACRO(253) +# endif +# if BOOST_PP_LOCAL_R(252) + BOOST_PP_LOCAL_MACRO(252) +# endif +# if BOOST_PP_LOCAL_R(251) + BOOST_PP_LOCAL_MACRO(251) +# endif +# if BOOST_PP_LOCAL_R(250) + BOOST_PP_LOCAL_MACRO(250) +# endif +# if BOOST_PP_LOCAL_R(249) + BOOST_PP_LOCAL_MACRO(249) +# endif +# if BOOST_PP_LOCAL_R(248) + BOOST_PP_LOCAL_MACRO(248) +# endif +# if BOOST_PP_LOCAL_R(247) + BOOST_PP_LOCAL_MACRO(247) +# endif +# if BOOST_PP_LOCAL_R(246) + BOOST_PP_LOCAL_MACRO(246) +# endif +# if BOOST_PP_LOCAL_R(245) + BOOST_PP_LOCAL_MACRO(245) +# endif +# if BOOST_PP_LOCAL_R(244) + BOOST_PP_LOCAL_MACRO(244) +# endif +# if BOOST_PP_LOCAL_R(243) + BOOST_PP_LOCAL_MACRO(243) +# endif +# if BOOST_PP_LOCAL_R(242) + BOOST_PP_LOCAL_MACRO(242) +# endif +# if BOOST_PP_LOCAL_R(241) + BOOST_PP_LOCAL_MACRO(241) +# endif +# if BOOST_PP_LOCAL_R(240) + BOOST_PP_LOCAL_MACRO(240) +# endif +# if BOOST_PP_LOCAL_R(239) + BOOST_PP_LOCAL_MACRO(239) +# endif +# if BOOST_PP_LOCAL_R(238) + BOOST_PP_LOCAL_MACRO(238) +# endif +# if BOOST_PP_LOCAL_R(237) + BOOST_PP_LOCAL_MACRO(237) +# endif +# if BOOST_PP_LOCAL_R(236) + BOOST_PP_LOCAL_MACRO(236) +# endif +# if BOOST_PP_LOCAL_R(235) + BOOST_PP_LOCAL_MACRO(235) +# endif +# if BOOST_PP_LOCAL_R(234) + BOOST_PP_LOCAL_MACRO(234) +# endif +# if BOOST_PP_LOCAL_R(233) + BOOST_PP_LOCAL_MACRO(233) +# endif +# if BOOST_PP_LOCAL_R(232) + BOOST_PP_LOCAL_MACRO(232) +# endif +# if BOOST_PP_LOCAL_R(231) + BOOST_PP_LOCAL_MACRO(231) +# endif +# if BOOST_PP_LOCAL_R(230) + BOOST_PP_LOCAL_MACRO(230) +# endif +# if BOOST_PP_LOCAL_R(229) + BOOST_PP_LOCAL_MACRO(229) +# endif +# if BOOST_PP_LOCAL_R(228) + BOOST_PP_LOCAL_MACRO(228) +# endif +# if BOOST_PP_LOCAL_R(227) + BOOST_PP_LOCAL_MACRO(227) +# endif +# if BOOST_PP_LOCAL_R(226) + BOOST_PP_LOCAL_MACRO(226) +# endif +# if BOOST_PP_LOCAL_R(225) + BOOST_PP_LOCAL_MACRO(225) +# endif +# if BOOST_PP_LOCAL_R(224) + BOOST_PP_LOCAL_MACRO(224) +# endif +# if BOOST_PP_LOCAL_R(223) + BOOST_PP_LOCAL_MACRO(223) +# endif +# if BOOST_PP_LOCAL_R(222) + BOOST_PP_LOCAL_MACRO(222) +# endif +# if BOOST_PP_LOCAL_R(221) + BOOST_PP_LOCAL_MACRO(221) +# endif +# if BOOST_PP_LOCAL_R(220) + BOOST_PP_LOCAL_MACRO(220) +# endif +# if BOOST_PP_LOCAL_R(219) + BOOST_PP_LOCAL_MACRO(219) +# endif +# if BOOST_PP_LOCAL_R(218) + BOOST_PP_LOCAL_MACRO(218) +# endif +# if BOOST_PP_LOCAL_R(217) + BOOST_PP_LOCAL_MACRO(217) +# endif +# if BOOST_PP_LOCAL_R(216) + BOOST_PP_LOCAL_MACRO(216) +# endif +# if BOOST_PP_LOCAL_R(215) + BOOST_PP_LOCAL_MACRO(215) +# endif +# if BOOST_PP_LOCAL_R(214) + BOOST_PP_LOCAL_MACRO(214) +# endif +# if BOOST_PP_LOCAL_R(213) + BOOST_PP_LOCAL_MACRO(213) +# endif +# if BOOST_PP_LOCAL_R(212) + BOOST_PP_LOCAL_MACRO(212) +# endif +# if BOOST_PP_LOCAL_R(211) + BOOST_PP_LOCAL_MACRO(211) +# endif +# if BOOST_PP_LOCAL_R(210) + BOOST_PP_LOCAL_MACRO(210) +# endif +# if BOOST_PP_LOCAL_R(209) + BOOST_PP_LOCAL_MACRO(209) +# endif +# if BOOST_PP_LOCAL_R(208) + BOOST_PP_LOCAL_MACRO(208) +# endif +# if BOOST_PP_LOCAL_R(207) + BOOST_PP_LOCAL_MACRO(207) +# endif +# if BOOST_PP_LOCAL_R(206) + BOOST_PP_LOCAL_MACRO(206) +# endif +# if BOOST_PP_LOCAL_R(205) + BOOST_PP_LOCAL_MACRO(205) +# endif +# if BOOST_PP_LOCAL_R(204) + BOOST_PP_LOCAL_MACRO(204) +# endif +# if BOOST_PP_LOCAL_R(203) + BOOST_PP_LOCAL_MACRO(203) +# endif +# if BOOST_PP_LOCAL_R(202) + BOOST_PP_LOCAL_MACRO(202) +# endif +# if BOOST_PP_LOCAL_R(201) + BOOST_PP_LOCAL_MACRO(201) +# endif +# if BOOST_PP_LOCAL_R(200) + BOOST_PP_LOCAL_MACRO(200) +# endif +# if BOOST_PP_LOCAL_R(199) + BOOST_PP_LOCAL_MACRO(199) +# endif +# if BOOST_PP_LOCAL_R(198) + BOOST_PP_LOCAL_MACRO(198) +# endif +# if BOOST_PP_LOCAL_R(197) + BOOST_PP_LOCAL_MACRO(197) +# endif +# if BOOST_PP_LOCAL_R(196) + BOOST_PP_LOCAL_MACRO(196) +# endif +# if BOOST_PP_LOCAL_R(195) + BOOST_PP_LOCAL_MACRO(195) +# endif +# if BOOST_PP_LOCAL_R(194) + BOOST_PP_LOCAL_MACRO(194) +# endif +# if BOOST_PP_LOCAL_R(193) + BOOST_PP_LOCAL_MACRO(193) +# endif +# if BOOST_PP_LOCAL_R(192) + BOOST_PP_LOCAL_MACRO(192) +# endif +# if BOOST_PP_LOCAL_R(191) + BOOST_PP_LOCAL_MACRO(191) +# endif +# if BOOST_PP_LOCAL_R(190) + BOOST_PP_LOCAL_MACRO(190) +# endif +# if BOOST_PP_LOCAL_R(189) + BOOST_PP_LOCAL_MACRO(189) +# endif +# if BOOST_PP_LOCAL_R(188) + BOOST_PP_LOCAL_MACRO(188) +# endif +# if BOOST_PP_LOCAL_R(187) + BOOST_PP_LOCAL_MACRO(187) +# endif +# if BOOST_PP_LOCAL_R(186) + BOOST_PP_LOCAL_MACRO(186) +# endif +# if BOOST_PP_LOCAL_R(185) + BOOST_PP_LOCAL_MACRO(185) +# endif +# if BOOST_PP_LOCAL_R(184) + BOOST_PP_LOCAL_MACRO(184) +# endif +# if BOOST_PP_LOCAL_R(183) + BOOST_PP_LOCAL_MACRO(183) +# endif +# if BOOST_PP_LOCAL_R(182) + BOOST_PP_LOCAL_MACRO(182) +# endif +# if BOOST_PP_LOCAL_R(181) + BOOST_PP_LOCAL_MACRO(181) +# endif +# if BOOST_PP_LOCAL_R(180) + BOOST_PP_LOCAL_MACRO(180) +# endif +# if BOOST_PP_LOCAL_R(179) + BOOST_PP_LOCAL_MACRO(179) +# endif +# if BOOST_PP_LOCAL_R(178) + BOOST_PP_LOCAL_MACRO(178) +# endif +# if BOOST_PP_LOCAL_R(177) + BOOST_PP_LOCAL_MACRO(177) +# endif +# if BOOST_PP_LOCAL_R(176) + BOOST_PP_LOCAL_MACRO(176) +# endif +# if BOOST_PP_LOCAL_R(175) + BOOST_PP_LOCAL_MACRO(175) +# endif +# if BOOST_PP_LOCAL_R(174) + BOOST_PP_LOCAL_MACRO(174) +# endif +# if BOOST_PP_LOCAL_R(173) + BOOST_PP_LOCAL_MACRO(173) +# endif +# if BOOST_PP_LOCAL_R(172) + BOOST_PP_LOCAL_MACRO(172) +# endif +# if BOOST_PP_LOCAL_R(171) + BOOST_PP_LOCAL_MACRO(171) +# endif +# if BOOST_PP_LOCAL_R(170) + BOOST_PP_LOCAL_MACRO(170) +# endif +# if BOOST_PP_LOCAL_R(169) + BOOST_PP_LOCAL_MACRO(169) +# endif +# if BOOST_PP_LOCAL_R(168) + BOOST_PP_LOCAL_MACRO(168) +# endif +# if BOOST_PP_LOCAL_R(167) + BOOST_PP_LOCAL_MACRO(167) +# endif +# if BOOST_PP_LOCAL_R(166) + BOOST_PP_LOCAL_MACRO(166) +# endif +# if BOOST_PP_LOCAL_R(165) + BOOST_PP_LOCAL_MACRO(165) +# endif +# if BOOST_PP_LOCAL_R(164) + BOOST_PP_LOCAL_MACRO(164) +# endif +# if BOOST_PP_LOCAL_R(163) + BOOST_PP_LOCAL_MACRO(163) +# endif +# if BOOST_PP_LOCAL_R(162) + BOOST_PP_LOCAL_MACRO(162) +# endif +# if BOOST_PP_LOCAL_R(161) + BOOST_PP_LOCAL_MACRO(161) +# endif +# if BOOST_PP_LOCAL_R(160) + BOOST_PP_LOCAL_MACRO(160) +# endif +# if BOOST_PP_LOCAL_R(159) + BOOST_PP_LOCAL_MACRO(159) +# endif +# if BOOST_PP_LOCAL_R(158) + BOOST_PP_LOCAL_MACRO(158) +# endif +# if BOOST_PP_LOCAL_R(157) + BOOST_PP_LOCAL_MACRO(157) +# endif +# if BOOST_PP_LOCAL_R(156) + BOOST_PP_LOCAL_MACRO(156) +# endif +# if BOOST_PP_LOCAL_R(155) + BOOST_PP_LOCAL_MACRO(155) +# endif +# if BOOST_PP_LOCAL_R(154) + BOOST_PP_LOCAL_MACRO(154) +# endif +# if BOOST_PP_LOCAL_R(153) + BOOST_PP_LOCAL_MACRO(153) +# endif +# if BOOST_PP_LOCAL_R(152) + BOOST_PP_LOCAL_MACRO(152) +# endif +# if BOOST_PP_LOCAL_R(151) + BOOST_PP_LOCAL_MACRO(151) +# endif +# if BOOST_PP_LOCAL_R(150) + BOOST_PP_LOCAL_MACRO(150) +# endif +# if BOOST_PP_LOCAL_R(149) + BOOST_PP_LOCAL_MACRO(149) +# endif +# if BOOST_PP_LOCAL_R(148) + BOOST_PP_LOCAL_MACRO(148) +# endif +# if BOOST_PP_LOCAL_R(147) + BOOST_PP_LOCAL_MACRO(147) +# endif +# if BOOST_PP_LOCAL_R(146) + BOOST_PP_LOCAL_MACRO(146) +# endif +# if BOOST_PP_LOCAL_R(145) + BOOST_PP_LOCAL_MACRO(145) +# endif +# if BOOST_PP_LOCAL_R(144) + BOOST_PP_LOCAL_MACRO(144) +# endif +# if BOOST_PP_LOCAL_R(143) + BOOST_PP_LOCAL_MACRO(143) +# endif +# if BOOST_PP_LOCAL_R(142) + BOOST_PP_LOCAL_MACRO(142) +# endif +# if BOOST_PP_LOCAL_R(141) + BOOST_PP_LOCAL_MACRO(141) +# endif +# if BOOST_PP_LOCAL_R(140) + BOOST_PP_LOCAL_MACRO(140) +# endif +# if BOOST_PP_LOCAL_R(139) + BOOST_PP_LOCAL_MACRO(139) +# endif +# if BOOST_PP_LOCAL_R(138) + BOOST_PP_LOCAL_MACRO(138) +# endif +# if BOOST_PP_LOCAL_R(137) + BOOST_PP_LOCAL_MACRO(137) +# endif +# if BOOST_PP_LOCAL_R(136) + BOOST_PP_LOCAL_MACRO(136) +# endif +# if BOOST_PP_LOCAL_R(135) + BOOST_PP_LOCAL_MACRO(135) +# endif +# if BOOST_PP_LOCAL_R(134) + BOOST_PP_LOCAL_MACRO(134) +# endif +# if BOOST_PP_LOCAL_R(133) + BOOST_PP_LOCAL_MACRO(133) +# endif +# if BOOST_PP_LOCAL_R(132) + BOOST_PP_LOCAL_MACRO(132) +# endif +# if BOOST_PP_LOCAL_R(131) + BOOST_PP_LOCAL_MACRO(131) +# endif +# if BOOST_PP_LOCAL_R(130) + BOOST_PP_LOCAL_MACRO(130) +# endif +# if BOOST_PP_LOCAL_R(129) + BOOST_PP_LOCAL_MACRO(129) +# endif +# if BOOST_PP_LOCAL_R(128) + BOOST_PP_LOCAL_MACRO(128) +# endif +# if BOOST_PP_LOCAL_R(127) + BOOST_PP_LOCAL_MACRO(127) +# endif +# if BOOST_PP_LOCAL_R(126) + BOOST_PP_LOCAL_MACRO(126) +# endif +# if BOOST_PP_LOCAL_R(125) + BOOST_PP_LOCAL_MACRO(125) +# endif +# if BOOST_PP_LOCAL_R(124) + BOOST_PP_LOCAL_MACRO(124) +# endif +# if BOOST_PP_LOCAL_R(123) + BOOST_PP_LOCAL_MACRO(123) +# endif +# if BOOST_PP_LOCAL_R(122) + BOOST_PP_LOCAL_MACRO(122) +# endif +# if BOOST_PP_LOCAL_R(121) + BOOST_PP_LOCAL_MACRO(121) +# endif +# if BOOST_PP_LOCAL_R(120) + BOOST_PP_LOCAL_MACRO(120) +# endif +# if BOOST_PP_LOCAL_R(119) + BOOST_PP_LOCAL_MACRO(119) +# endif +# if BOOST_PP_LOCAL_R(118) + BOOST_PP_LOCAL_MACRO(118) +# endif +# if BOOST_PP_LOCAL_R(117) + BOOST_PP_LOCAL_MACRO(117) +# endif +# if BOOST_PP_LOCAL_R(116) + BOOST_PP_LOCAL_MACRO(116) +# endif +# if BOOST_PP_LOCAL_R(115) + BOOST_PP_LOCAL_MACRO(115) +# endif +# if BOOST_PP_LOCAL_R(114) + BOOST_PP_LOCAL_MACRO(114) +# endif +# if BOOST_PP_LOCAL_R(113) + BOOST_PP_LOCAL_MACRO(113) +# endif +# if BOOST_PP_LOCAL_R(112) + BOOST_PP_LOCAL_MACRO(112) +# endif +# if BOOST_PP_LOCAL_R(111) + BOOST_PP_LOCAL_MACRO(111) +# endif +# if BOOST_PP_LOCAL_R(110) + BOOST_PP_LOCAL_MACRO(110) +# endif +# if BOOST_PP_LOCAL_R(109) + BOOST_PP_LOCAL_MACRO(109) +# endif +# if BOOST_PP_LOCAL_R(108) + BOOST_PP_LOCAL_MACRO(108) +# endif +# if BOOST_PP_LOCAL_R(107) + BOOST_PP_LOCAL_MACRO(107) +# endif +# if BOOST_PP_LOCAL_R(106) + BOOST_PP_LOCAL_MACRO(106) +# endif +# if BOOST_PP_LOCAL_R(105) + BOOST_PP_LOCAL_MACRO(105) +# endif +# if BOOST_PP_LOCAL_R(104) + BOOST_PP_LOCAL_MACRO(104) +# endif +# if BOOST_PP_LOCAL_R(103) + BOOST_PP_LOCAL_MACRO(103) +# endif +# if BOOST_PP_LOCAL_R(102) + BOOST_PP_LOCAL_MACRO(102) +# endif +# if BOOST_PP_LOCAL_R(101) + BOOST_PP_LOCAL_MACRO(101) +# endif +# if BOOST_PP_LOCAL_R(100) + BOOST_PP_LOCAL_MACRO(100) +# endif +# if BOOST_PP_LOCAL_R(99) + BOOST_PP_LOCAL_MACRO(99) +# endif +# if BOOST_PP_LOCAL_R(98) + BOOST_PP_LOCAL_MACRO(98) +# endif +# if BOOST_PP_LOCAL_R(97) + BOOST_PP_LOCAL_MACRO(97) +# endif +# if BOOST_PP_LOCAL_R(96) + BOOST_PP_LOCAL_MACRO(96) +# endif +# if BOOST_PP_LOCAL_R(95) + BOOST_PP_LOCAL_MACRO(95) +# endif +# if BOOST_PP_LOCAL_R(94) + BOOST_PP_LOCAL_MACRO(94) +# endif +# if BOOST_PP_LOCAL_R(93) + BOOST_PP_LOCAL_MACRO(93) +# endif +# if BOOST_PP_LOCAL_R(92) + BOOST_PP_LOCAL_MACRO(92) +# endif +# if BOOST_PP_LOCAL_R(91) + BOOST_PP_LOCAL_MACRO(91) +# endif +# if BOOST_PP_LOCAL_R(90) + BOOST_PP_LOCAL_MACRO(90) +# endif +# if BOOST_PP_LOCAL_R(89) + BOOST_PP_LOCAL_MACRO(89) +# endif +# if BOOST_PP_LOCAL_R(88) + BOOST_PP_LOCAL_MACRO(88) +# endif +# if BOOST_PP_LOCAL_R(87) + BOOST_PP_LOCAL_MACRO(87) +# endif +# if BOOST_PP_LOCAL_R(86) + BOOST_PP_LOCAL_MACRO(86) +# endif +# if BOOST_PP_LOCAL_R(85) + BOOST_PP_LOCAL_MACRO(85) +# endif +# if BOOST_PP_LOCAL_R(84) + BOOST_PP_LOCAL_MACRO(84) +# endif +# if BOOST_PP_LOCAL_R(83) + BOOST_PP_LOCAL_MACRO(83) +# endif +# if BOOST_PP_LOCAL_R(82) + BOOST_PP_LOCAL_MACRO(82) +# endif +# if BOOST_PP_LOCAL_R(81) + BOOST_PP_LOCAL_MACRO(81) +# endif +# if BOOST_PP_LOCAL_R(80) + BOOST_PP_LOCAL_MACRO(80) +# endif +# if BOOST_PP_LOCAL_R(79) + BOOST_PP_LOCAL_MACRO(79) +# endif +# if BOOST_PP_LOCAL_R(78) + BOOST_PP_LOCAL_MACRO(78) +# endif +# if BOOST_PP_LOCAL_R(77) + BOOST_PP_LOCAL_MACRO(77) +# endif +# if BOOST_PP_LOCAL_R(76) + BOOST_PP_LOCAL_MACRO(76) +# endif +# if BOOST_PP_LOCAL_R(75) + BOOST_PP_LOCAL_MACRO(75) +# endif +# if BOOST_PP_LOCAL_R(74) + BOOST_PP_LOCAL_MACRO(74) +# endif +# if BOOST_PP_LOCAL_R(73) + BOOST_PP_LOCAL_MACRO(73) +# endif +# if BOOST_PP_LOCAL_R(72) + BOOST_PP_LOCAL_MACRO(72) +# endif +# if BOOST_PP_LOCAL_R(71) + BOOST_PP_LOCAL_MACRO(71) +# endif +# if BOOST_PP_LOCAL_R(70) + BOOST_PP_LOCAL_MACRO(70) +# endif +# if BOOST_PP_LOCAL_R(69) + BOOST_PP_LOCAL_MACRO(69) +# endif +# if BOOST_PP_LOCAL_R(68) + BOOST_PP_LOCAL_MACRO(68) +# endif +# if BOOST_PP_LOCAL_R(67) + BOOST_PP_LOCAL_MACRO(67) +# endif +# if BOOST_PP_LOCAL_R(66) + BOOST_PP_LOCAL_MACRO(66) +# endif +# if BOOST_PP_LOCAL_R(65) + BOOST_PP_LOCAL_MACRO(65) +# endif +# if BOOST_PP_LOCAL_R(64) + BOOST_PP_LOCAL_MACRO(64) +# endif +# if BOOST_PP_LOCAL_R(63) + BOOST_PP_LOCAL_MACRO(63) +# endif +# if BOOST_PP_LOCAL_R(62) + BOOST_PP_LOCAL_MACRO(62) +# endif +# if BOOST_PP_LOCAL_R(61) + BOOST_PP_LOCAL_MACRO(61) +# endif +# if BOOST_PP_LOCAL_R(60) + BOOST_PP_LOCAL_MACRO(60) +# endif +# if BOOST_PP_LOCAL_R(59) + BOOST_PP_LOCAL_MACRO(59) +# endif +# if BOOST_PP_LOCAL_R(58) + BOOST_PP_LOCAL_MACRO(58) +# endif +# if BOOST_PP_LOCAL_R(57) + BOOST_PP_LOCAL_MACRO(57) +# endif +# if BOOST_PP_LOCAL_R(56) + BOOST_PP_LOCAL_MACRO(56) +# endif +# if BOOST_PP_LOCAL_R(55) + BOOST_PP_LOCAL_MACRO(55) +# endif +# if BOOST_PP_LOCAL_R(54) + BOOST_PP_LOCAL_MACRO(54) +# endif +# if BOOST_PP_LOCAL_R(53) + BOOST_PP_LOCAL_MACRO(53) +# endif +# if BOOST_PP_LOCAL_R(52) + BOOST_PP_LOCAL_MACRO(52) +# endif +# if BOOST_PP_LOCAL_R(51) + BOOST_PP_LOCAL_MACRO(51) +# endif +# if BOOST_PP_LOCAL_R(50) + BOOST_PP_LOCAL_MACRO(50) +# endif +# if BOOST_PP_LOCAL_R(49) + BOOST_PP_LOCAL_MACRO(49) +# endif +# if BOOST_PP_LOCAL_R(48) + BOOST_PP_LOCAL_MACRO(48) +# endif +# if BOOST_PP_LOCAL_R(47) + BOOST_PP_LOCAL_MACRO(47) +# endif +# if BOOST_PP_LOCAL_R(46) + BOOST_PP_LOCAL_MACRO(46) +# endif +# if BOOST_PP_LOCAL_R(45) + BOOST_PP_LOCAL_MACRO(45) +# endif +# if BOOST_PP_LOCAL_R(44) + BOOST_PP_LOCAL_MACRO(44) +# endif +# if BOOST_PP_LOCAL_R(43) + BOOST_PP_LOCAL_MACRO(43) +# endif +# if BOOST_PP_LOCAL_R(42) + BOOST_PP_LOCAL_MACRO(42) +# endif +# if BOOST_PP_LOCAL_R(41) + BOOST_PP_LOCAL_MACRO(41) +# endif +# if BOOST_PP_LOCAL_R(40) + BOOST_PP_LOCAL_MACRO(40) +# endif +# if BOOST_PP_LOCAL_R(39) + BOOST_PP_LOCAL_MACRO(39) +# endif +# if BOOST_PP_LOCAL_R(38) + BOOST_PP_LOCAL_MACRO(38) +# endif +# if BOOST_PP_LOCAL_R(37) + BOOST_PP_LOCAL_MACRO(37) +# endif +# if BOOST_PP_LOCAL_R(36) + BOOST_PP_LOCAL_MACRO(36) +# endif +# if BOOST_PP_LOCAL_R(35) + BOOST_PP_LOCAL_MACRO(35) +# endif +# if BOOST_PP_LOCAL_R(34) + BOOST_PP_LOCAL_MACRO(34) +# endif +# if BOOST_PP_LOCAL_R(33) + BOOST_PP_LOCAL_MACRO(33) +# endif +# if BOOST_PP_LOCAL_R(32) + BOOST_PP_LOCAL_MACRO(32) +# endif +# if BOOST_PP_LOCAL_R(31) + BOOST_PP_LOCAL_MACRO(31) +# endif +# if BOOST_PP_LOCAL_R(30) + BOOST_PP_LOCAL_MACRO(30) +# endif +# if BOOST_PP_LOCAL_R(29) + BOOST_PP_LOCAL_MACRO(29) +# endif +# if BOOST_PP_LOCAL_R(28) + BOOST_PP_LOCAL_MACRO(28) +# endif +# if BOOST_PP_LOCAL_R(27) + BOOST_PP_LOCAL_MACRO(27) +# endif +# if BOOST_PP_LOCAL_R(26) + BOOST_PP_LOCAL_MACRO(26) +# endif +# if BOOST_PP_LOCAL_R(25) + BOOST_PP_LOCAL_MACRO(25) +# endif +# if BOOST_PP_LOCAL_R(24) + BOOST_PP_LOCAL_MACRO(24) +# endif +# if BOOST_PP_LOCAL_R(23) + BOOST_PP_LOCAL_MACRO(23) +# endif +# if BOOST_PP_LOCAL_R(22) + BOOST_PP_LOCAL_MACRO(22) +# endif +# if BOOST_PP_LOCAL_R(21) + BOOST_PP_LOCAL_MACRO(21) +# endif +# if BOOST_PP_LOCAL_R(20) + BOOST_PP_LOCAL_MACRO(20) +# endif +# if BOOST_PP_LOCAL_R(19) + BOOST_PP_LOCAL_MACRO(19) +# endif +# if BOOST_PP_LOCAL_R(18) + BOOST_PP_LOCAL_MACRO(18) +# endif +# if BOOST_PP_LOCAL_R(17) + BOOST_PP_LOCAL_MACRO(17) +# endif +# if BOOST_PP_LOCAL_R(16) + BOOST_PP_LOCAL_MACRO(16) +# endif +# if BOOST_PP_LOCAL_R(15) + BOOST_PP_LOCAL_MACRO(15) +# endif +# if BOOST_PP_LOCAL_R(14) + BOOST_PP_LOCAL_MACRO(14) +# endif +# if BOOST_PP_LOCAL_R(13) + BOOST_PP_LOCAL_MACRO(13) +# endif +# if BOOST_PP_LOCAL_R(12) + BOOST_PP_LOCAL_MACRO(12) +# endif +# if BOOST_PP_LOCAL_R(11) + BOOST_PP_LOCAL_MACRO(11) +# endif +# if BOOST_PP_LOCAL_R(10) + BOOST_PP_LOCAL_MACRO(10) +# endif +# if BOOST_PP_LOCAL_R(9) + BOOST_PP_LOCAL_MACRO(9) +# endif +# if BOOST_PP_LOCAL_R(8) + BOOST_PP_LOCAL_MACRO(8) +# endif +# if BOOST_PP_LOCAL_R(7) + BOOST_PP_LOCAL_MACRO(7) +# endif +# if BOOST_PP_LOCAL_R(6) + BOOST_PP_LOCAL_MACRO(6) +# endif +# if BOOST_PP_LOCAL_R(5) + BOOST_PP_LOCAL_MACRO(5) +# endif +# if BOOST_PP_LOCAL_R(4) + BOOST_PP_LOCAL_MACRO(4) +# endif +# if BOOST_PP_LOCAL_R(3) + BOOST_PP_LOCAL_MACRO(3) +# endif +# if BOOST_PP_LOCAL_R(2) + BOOST_PP_LOCAL_MACRO(2) +# endif +# if BOOST_PP_LOCAL_R(1) + BOOST_PP_LOCAL_MACRO(1) +# endif +# if BOOST_PP_LOCAL_R(0) + BOOST_PP_LOCAL_MACRO(0) +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/limits/rlocal_512.hpp b/src/boost/boost/preprocessor/iteration/detail/limits/rlocal_512.hpp new file mode 100644 index 000000000..0e7b96c03 --- /dev/null +++ b/src/boost/boost/preprocessor/iteration/detail/limits/rlocal_512.hpp @@ -0,0 +1,781 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# if BOOST_PP_LOCAL_R(512) + BOOST_PP_LOCAL_MACRO(512) +# endif +# if BOOST_PP_LOCAL_R(511) + BOOST_PP_LOCAL_MACRO(511) +# endif +# if BOOST_PP_LOCAL_R(510) + BOOST_PP_LOCAL_MACRO(510) +# endif +# if BOOST_PP_LOCAL_R(509) + BOOST_PP_LOCAL_MACRO(509) +# endif +# if BOOST_PP_LOCAL_R(508) + BOOST_PP_LOCAL_MACRO(508) +# endif +# if BOOST_PP_LOCAL_R(507) + BOOST_PP_LOCAL_MACRO(507) +# endif +# if BOOST_PP_LOCAL_R(506) + BOOST_PP_LOCAL_MACRO(506) +# endif +# if BOOST_PP_LOCAL_R(505) + BOOST_PP_LOCAL_MACRO(505) +# endif +# if BOOST_PP_LOCAL_R(504) + BOOST_PP_LOCAL_MACRO(504) +# endif +# if BOOST_PP_LOCAL_R(503) + BOOST_PP_LOCAL_MACRO(503) +# endif +# if BOOST_PP_LOCAL_R(502) + BOOST_PP_LOCAL_MACRO(502) +# endif +# if BOOST_PP_LOCAL_R(501) + BOOST_PP_LOCAL_MACRO(501) +# endif +# if BOOST_PP_LOCAL_R(500) + BOOST_PP_LOCAL_MACRO(500) +# endif +# if BOOST_PP_LOCAL_R(499) + BOOST_PP_LOCAL_MACRO(499) +# endif +# if BOOST_PP_LOCAL_R(498) + BOOST_PP_LOCAL_MACRO(498) +# endif +# if BOOST_PP_LOCAL_R(497) + BOOST_PP_LOCAL_MACRO(497) +# endif +# if BOOST_PP_LOCAL_R(496) + BOOST_PP_LOCAL_MACRO(496) +# endif +# if BOOST_PP_LOCAL_R(495) + BOOST_PP_LOCAL_MACRO(495) +# endif +# if BOOST_PP_LOCAL_R(494) + BOOST_PP_LOCAL_MACRO(494) +# endif +# if BOOST_PP_LOCAL_R(493) + BOOST_PP_LOCAL_MACRO(493) +# endif +# if BOOST_PP_LOCAL_R(492) + BOOST_PP_LOCAL_MACRO(492) +# endif +# if BOOST_PP_LOCAL_R(491) + BOOST_PP_LOCAL_MACRO(491) +# endif +# if BOOST_PP_LOCAL_R(490) + BOOST_PP_LOCAL_MACRO(490) +# endif +# if BOOST_PP_LOCAL_R(489) + BOOST_PP_LOCAL_MACRO(489) +# endif +# if BOOST_PP_LOCAL_R(488) + BOOST_PP_LOCAL_MACRO(488) +# endif +# if BOOST_PP_LOCAL_R(487) + BOOST_PP_LOCAL_MACRO(487) +# endif +# if BOOST_PP_LOCAL_R(486) + BOOST_PP_LOCAL_MACRO(486) +# endif +# if BOOST_PP_LOCAL_R(485) + BOOST_PP_LOCAL_MACRO(485) +# endif +# if BOOST_PP_LOCAL_R(484) + BOOST_PP_LOCAL_MACRO(484) +# endif +# if BOOST_PP_LOCAL_R(483) + BOOST_PP_LOCAL_MACRO(483) +# endif +# if BOOST_PP_LOCAL_R(482) + BOOST_PP_LOCAL_MACRO(482) +# endif +# if BOOST_PP_LOCAL_R(481) + BOOST_PP_LOCAL_MACRO(481) +# endif +# if BOOST_PP_LOCAL_R(480) + BOOST_PP_LOCAL_MACRO(480) +# endif +# if BOOST_PP_LOCAL_R(479) + BOOST_PP_LOCAL_MACRO(479) +# endif +# if BOOST_PP_LOCAL_R(478) + BOOST_PP_LOCAL_MACRO(478) +# endif +# if BOOST_PP_LOCAL_R(477) + BOOST_PP_LOCAL_MACRO(477) +# endif +# if BOOST_PP_LOCAL_R(476) + BOOST_PP_LOCAL_MACRO(476) +# endif +# if BOOST_PP_LOCAL_R(475) + BOOST_PP_LOCAL_MACRO(475) +# endif +# if BOOST_PP_LOCAL_R(474) + BOOST_PP_LOCAL_MACRO(474) +# endif +# if BOOST_PP_LOCAL_R(473) + BOOST_PP_LOCAL_MACRO(473) +# endif +# if BOOST_PP_LOCAL_R(472) + BOOST_PP_LOCAL_MACRO(472) +# endif +# if BOOST_PP_LOCAL_R(471) + BOOST_PP_LOCAL_MACRO(471) +# endif +# if BOOST_PP_LOCAL_R(470) + BOOST_PP_LOCAL_MACRO(470) +# endif +# if BOOST_PP_LOCAL_R(469) + BOOST_PP_LOCAL_MACRO(469) +# endif +# if BOOST_PP_LOCAL_R(468) + BOOST_PP_LOCAL_MACRO(468) +# endif +# if BOOST_PP_LOCAL_R(467) + BOOST_PP_LOCAL_MACRO(467) +# endif +# if BOOST_PP_LOCAL_R(466) + BOOST_PP_LOCAL_MACRO(466) +# endif +# if BOOST_PP_LOCAL_R(465) + BOOST_PP_LOCAL_MACRO(465) +# endif +# if BOOST_PP_LOCAL_R(464) + BOOST_PP_LOCAL_MACRO(464) +# endif +# if BOOST_PP_LOCAL_R(463) + BOOST_PP_LOCAL_MACRO(463) +# endif +# if BOOST_PP_LOCAL_R(462) + BOOST_PP_LOCAL_MACRO(462) +# endif +# if BOOST_PP_LOCAL_R(461) + BOOST_PP_LOCAL_MACRO(461) +# endif +# if BOOST_PP_LOCAL_R(460) + BOOST_PP_LOCAL_MACRO(460) +# endif +# if BOOST_PP_LOCAL_R(459) + BOOST_PP_LOCAL_MACRO(459) +# endif +# if BOOST_PP_LOCAL_R(458) + BOOST_PP_LOCAL_MACRO(458) +# endif +# if BOOST_PP_LOCAL_R(457) + BOOST_PP_LOCAL_MACRO(457) +# endif +# if BOOST_PP_LOCAL_R(456) + BOOST_PP_LOCAL_MACRO(456) +# endif +# if BOOST_PP_LOCAL_R(455) + BOOST_PP_LOCAL_MACRO(455) +# endif +# if BOOST_PP_LOCAL_R(454) + BOOST_PP_LOCAL_MACRO(454) +# endif +# if BOOST_PP_LOCAL_R(453) + BOOST_PP_LOCAL_MACRO(453) +# endif +# if BOOST_PP_LOCAL_R(452) + BOOST_PP_LOCAL_MACRO(452) +# endif +# if BOOST_PP_LOCAL_R(451) + BOOST_PP_LOCAL_MACRO(451) +# endif +# if BOOST_PP_LOCAL_R(450) + BOOST_PP_LOCAL_MACRO(450) +# endif +# if BOOST_PP_LOCAL_R(449) + BOOST_PP_LOCAL_MACRO(449) +# endif +# if BOOST_PP_LOCAL_R(448) + BOOST_PP_LOCAL_MACRO(448) +# endif +# if BOOST_PP_LOCAL_R(447) + BOOST_PP_LOCAL_MACRO(447) +# endif +# if BOOST_PP_LOCAL_R(446) + BOOST_PP_LOCAL_MACRO(446) +# endif +# if BOOST_PP_LOCAL_R(445) + BOOST_PP_LOCAL_MACRO(445) +# endif +# if BOOST_PP_LOCAL_R(444) + BOOST_PP_LOCAL_MACRO(444) +# endif +# if BOOST_PP_LOCAL_R(443) + BOOST_PP_LOCAL_MACRO(443) +# endif +# if BOOST_PP_LOCAL_R(442) + BOOST_PP_LOCAL_MACRO(442) +# endif +# if BOOST_PP_LOCAL_R(441) + BOOST_PP_LOCAL_MACRO(441) +# endif +# if BOOST_PP_LOCAL_R(440) + BOOST_PP_LOCAL_MACRO(440) +# endif +# if BOOST_PP_LOCAL_R(439) + BOOST_PP_LOCAL_MACRO(439) +# endif +# if BOOST_PP_LOCAL_R(438) + BOOST_PP_LOCAL_MACRO(438) +# endif +# if BOOST_PP_LOCAL_R(437) + BOOST_PP_LOCAL_MACRO(437) +# endif +# if BOOST_PP_LOCAL_R(436) + BOOST_PP_LOCAL_MACRO(436) +# endif +# if BOOST_PP_LOCAL_R(435) + BOOST_PP_LOCAL_MACRO(435) +# endif +# if BOOST_PP_LOCAL_R(434) + BOOST_PP_LOCAL_MACRO(434) +# endif +# if BOOST_PP_LOCAL_R(433) + BOOST_PP_LOCAL_MACRO(433) +# endif +# if BOOST_PP_LOCAL_R(432) + BOOST_PP_LOCAL_MACRO(432) +# endif +# if BOOST_PP_LOCAL_R(431) + BOOST_PP_LOCAL_MACRO(431) +# endif +# if BOOST_PP_LOCAL_R(430) + BOOST_PP_LOCAL_MACRO(430) +# endif +# if BOOST_PP_LOCAL_R(429) + BOOST_PP_LOCAL_MACRO(429) +# endif +# if BOOST_PP_LOCAL_R(428) + BOOST_PP_LOCAL_MACRO(428) +# endif +# if BOOST_PP_LOCAL_R(427) + BOOST_PP_LOCAL_MACRO(427) +# endif +# if BOOST_PP_LOCAL_R(426) + BOOST_PP_LOCAL_MACRO(426) +# endif +# if BOOST_PP_LOCAL_R(425) + BOOST_PP_LOCAL_MACRO(425) +# endif +# if BOOST_PP_LOCAL_R(424) + BOOST_PP_LOCAL_MACRO(424) +# endif +# if BOOST_PP_LOCAL_R(423) + BOOST_PP_LOCAL_MACRO(423) +# endif +# if BOOST_PP_LOCAL_R(422) + BOOST_PP_LOCAL_MACRO(422) +# endif +# if BOOST_PP_LOCAL_R(421) + BOOST_PP_LOCAL_MACRO(421) +# endif +# if BOOST_PP_LOCAL_R(420) + BOOST_PP_LOCAL_MACRO(420) +# endif +# if BOOST_PP_LOCAL_R(419) + BOOST_PP_LOCAL_MACRO(419) +# endif +# if BOOST_PP_LOCAL_R(418) + BOOST_PP_LOCAL_MACRO(418) +# endif +# if BOOST_PP_LOCAL_R(417) + BOOST_PP_LOCAL_MACRO(417) +# endif +# if BOOST_PP_LOCAL_R(416) + BOOST_PP_LOCAL_MACRO(416) +# endif +# if BOOST_PP_LOCAL_R(415) + BOOST_PP_LOCAL_MACRO(415) +# endif +# if BOOST_PP_LOCAL_R(414) + BOOST_PP_LOCAL_MACRO(414) +# endif +# if BOOST_PP_LOCAL_R(413) + BOOST_PP_LOCAL_MACRO(413) +# endif +# if BOOST_PP_LOCAL_R(412) + BOOST_PP_LOCAL_MACRO(412) +# endif +# if BOOST_PP_LOCAL_R(411) + BOOST_PP_LOCAL_MACRO(411) +# endif +# if BOOST_PP_LOCAL_R(410) + BOOST_PP_LOCAL_MACRO(410) +# endif +# if BOOST_PP_LOCAL_R(409) + BOOST_PP_LOCAL_MACRO(409) +# endif +# if BOOST_PP_LOCAL_R(408) + BOOST_PP_LOCAL_MACRO(408) +# endif +# if BOOST_PP_LOCAL_R(407) + BOOST_PP_LOCAL_MACRO(407) +# endif +# if BOOST_PP_LOCAL_R(406) + BOOST_PP_LOCAL_MACRO(406) +# endif +# if BOOST_PP_LOCAL_R(405) + BOOST_PP_LOCAL_MACRO(405) +# endif +# if BOOST_PP_LOCAL_R(404) + BOOST_PP_LOCAL_MACRO(404) +# endif +# if BOOST_PP_LOCAL_R(403) + BOOST_PP_LOCAL_MACRO(403) +# endif +# if BOOST_PP_LOCAL_R(402) + BOOST_PP_LOCAL_MACRO(402) +# endif +# if BOOST_PP_LOCAL_R(401) + BOOST_PP_LOCAL_MACRO(401) +# endif +# if BOOST_PP_LOCAL_R(400) + BOOST_PP_LOCAL_MACRO(400) +# endif +# if BOOST_PP_LOCAL_R(399) + BOOST_PP_LOCAL_MACRO(399) +# endif +# if BOOST_PP_LOCAL_R(398) + BOOST_PP_LOCAL_MACRO(398) +# endif +# if BOOST_PP_LOCAL_R(397) + BOOST_PP_LOCAL_MACRO(397) +# endif +# if BOOST_PP_LOCAL_R(396) + BOOST_PP_LOCAL_MACRO(396) +# endif +# if BOOST_PP_LOCAL_R(395) + BOOST_PP_LOCAL_MACRO(395) +# endif +# if BOOST_PP_LOCAL_R(394) + BOOST_PP_LOCAL_MACRO(394) +# endif +# if BOOST_PP_LOCAL_R(393) + BOOST_PP_LOCAL_MACRO(393) +# endif +# if BOOST_PP_LOCAL_R(392) + BOOST_PP_LOCAL_MACRO(392) +# endif +# if BOOST_PP_LOCAL_R(391) + BOOST_PP_LOCAL_MACRO(391) +# endif +# if BOOST_PP_LOCAL_R(390) + BOOST_PP_LOCAL_MACRO(390) +# endif +# if BOOST_PP_LOCAL_R(389) + BOOST_PP_LOCAL_MACRO(389) +# endif +# if BOOST_PP_LOCAL_R(388) + BOOST_PP_LOCAL_MACRO(388) +# endif +# if BOOST_PP_LOCAL_R(387) + BOOST_PP_LOCAL_MACRO(387) +# endif +# if BOOST_PP_LOCAL_R(386) + BOOST_PP_LOCAL_MACRO(386) +# endif +# if BOOST_PP_LOCAL_R(385) + BOOST_PP_LOCAL_MACRO(385) +# endif +# if BOOST_PP_LOCAL_R(384) + BOOST_PP_LOCAL_MACRO(384) +# endif +# if BOOST_PP_LOCAL_R(383) + BOOST_PP_LOCAL_MACRO(383) +# endif +# if BOOST_PP_LOCAL_R(382) + BOOST_PP_LOCAL_MACRO(382) +# endif +# if BOOST_PP_LOCAL_R(381) + BOOST_PP_LOCAL_MACRO(381) +# endif +# if BOOST_PP_LOCAL_R(380) + BOOST_PP_LOCAL_MACRO(380) +# endif +# if BOOST_PP_LOCAL_R(379) + BOOST_PP_LOCAL_MACRO(379) +# endif +# if BOOST_PP_LOCAL_R(378) + BOOST_PP_LOCAL_MACRO(378) +# endif +# if BOOST_PP_LOCAL_R(377) + BOOST_PP_LOCAL_MACRO(377) +# endif +# if BOOST_PP_LOCAL_R(376) + BOOST_PP_LOCAL_MACRO(376) +# endif +# if BOOST_PP_LOCAL_R(375) + BOOST_PP_LOCAL_MACRO(375) +# endif +# if BOOST_PP_LOCAL_R(374) + BOOST_PP_LOCAL_MACRO(374) +# endif +# if BOOST_PP_LOCAL_R(373) + BOOST_PP_LOCAL_MACRO(373) +# endif +# if BOOST_PP_LOCAL_R(372) + BOOST_PP_LOCAL_MACRO(372) +# endif +# if BOOST_PP_LOCAL_R(371) + BOOST_PP_LOCAL_MACRO(371) +# endif +# if BOOST_PP_LOCAL_R(370) + BOOST_PP_LOCAL_MACRO(370) +# endif +# if BOOST_PP_LOCAL_R(369) + BOOST_PP_LOCAL_MACRO(369) +# endif +# if BOOST_PP_LOCAL_R(368) + BOOST_PP_LOCAL_MACRO(368) +# endif +# if BOOST_PP_LOCAL_R(367) + BOOST_PP_LOCAL_MACRO(367) +# endif +# if BOOST_PP_LOCAL_R(366) + BOOST_PP_LOCAL_MACRO(366) +# endif +# if BOOST_PP_LOCAL_R(365) + BOOST_PP_LOCAL_MACRO(365) +# endif +# if BOOST_PP_LOCAL_R(364) + BOOST_PP_LOCAL_MACRO(364) +# endif +# if BOOST_PP_LOCAL_R(363) + BOOST_PP_LOCAL_MACRO(363) +# endif +# if BOOST_PP_LOCAL_R(362) + BOOST_PP_LOCAL_MACRO(362) +# endif +# if BOOST_PP_LOCAL_R(361) + BOOST_PP_LOCAL_MACRO(361) +# endif +# if BOOST_PP_LOCAL_R(360) + BOOST_PP_LOCAL_MACRO(360) +# endif +# if BOOST_PP_LOCAL_R(359) + BOOST_PP_LOCAL_MACRO(359) +# endif +# if BOOST_PP_LOCAL_R(358) + BOOST_PP_LOCAL_MACRO(358) +# endif +# if BOOST_PP_LOCAL_R(357) + BOOST_PP_LOCAL_MACRO(357) +# endif +# if BOOST_PP_LOCAL_R(356) + BOOST_PP_LOCAL_MACRO(356) +# endif +# if BOOST_PP_LOCAL_R(355) + BOOST_PP_LOCAL_MACRO(355) +# endif +# if BOOST_PP_LOCAL_R(354) + BOOST_PP_LOCAL_MACRO(354) +# endif +# if BOOST_PP_LOCAL_R(353) + BOOST_PP_LOCAL_MACRO(353) +# endif +# if BOOST_PP_LOCAL_R(352) + BOOST_PP_LOCAL_MACRO(352) +# endif +# if BOOST_PP_LOCAL_R(351) + BOOST_PP_LOCAL_MACRO(351) +# endif +# if BOOST_PP_LOCAL_R(350) + BOOST_PP_LOCAL_MACRO(350) +# endif +# if BOOST_PP_LOCAL_R(349) + BOOST_PP_LOCAL_MACRO(349) +# endif +# if BOOST_PP_LOCAL_R(348) + BOOST_PP_LOCAL_MACRO(348) +# endif +# if BOOST_PP_LOCAL_R(347) + BOOST_PP_LOCAL_MACRO(347) +# endif +# if BOOST_PP_LOCAL_R(346) + BOOST_PP_LOCAL_MACRO(346) +# endif +# if BOOST_PP_LOCAL_R(345) + BOOST_PP_LOCAL_MACRO(345) +# endif +# if BOOST_PP_LOCAL_R(344) + BOOST_PP_LOCAL_MACRO(344) +# endif +# if BOOST_PP_LOCAL_R(343) + BOOST_PP_LOCAL_MACRO(343) +# endif +# if BOOST_PP_LOCAL_R(342) + BOOST_PP_LOCAL_MACRO(342) +# endif +# if BOOST_PP_LOCAL_R(341) + BOOST_PP_LOCAL_MACRO(341) +# endif +# if BOOST_PP_LOCAL_R(340) + BOOST_PP_LOCAL_MACRO(340) +# endif +# if BOOST_PP_LOCAL_R(339) + BOOST_PP_LOCAL_MACRO(339) +# endif +# if BOOST_PP_LOCAL_R(338) + BOOST_PP_LOCAL_MACRO(338) +# endif +# if BOOST_PP_LOCAL_R(337) + BOOST_PP_LOCAL_MACRO(337) +# endif +# if BOOST_PP_LOCAL_R(336) + BOOST_PP_LOCAL_MACRO(336) +# endif +# if BOOST_PP_LOCAL_R(335) + BOOST_PP_LOCAL_MACRO(335) +# endif +# if BOOST_PP_LOCAL_R(334) + BOOST_PP_LOCAL_MACRO(334) +# endif +# if BOOST_PP_LOCAL_R(333) + BOOST_PP_LOCAL_MACRO(333) +# endif +# if BOOST_PP_LOCAL_R(332) + BOOST_PP_LOCAL_MACRO(332) +# endif +# if BOOST_PP_LOCAL_R(331) + BOOST_PP_LOCAL_MACRO(331) +# endif +# if BOOST_PP_LOCAL_R(330) + BOOST_PP_LOCAL_MACRO(330) +# endif +# if BOOST_PP_LOCAL_R(329) + BOOST_PP_LOCAL_MACRO(329) +# endif +# if BOOST_PP_LOCAL_R(328) + BOOST_PP_LOCAL_MACRO(328) +# endif +# if BOOST_PP_LOCAL_R(327) + BOOST_PP_LOCAL_MACRO(327) +# endif +# if BOOST_PP_LOCAL_R(326) + BOOST_PP_LOCAL_MACRO(326) +# endif +# if BOOST_PP_LOCAL_R(325) + BOOST_PP_LOCAL_MACRO(325) +# endif +# if BOOST_PP_LOCAL_R(324) + BOOST_PP_LOCAL_MACRO(324) +# endif +# if BOOST_PP_LOCAL_R(323) + BOOST_PP_LOCAL_MACRO(323) +# endif +# if BOOST_PP_LOCAL_R(322) + BOOST_PP_LOCAL_MACRO(322) +# endif +# if BOOST_PP_LOCAL_R(321) + BOOST_PP_LOCAL_MACRO(321) +# endif +# if BOOST_PP_LOCAL_R(320) + BOOST_PP_LOCAL_MACRO(320) +# endif +# if BOOST_PP_LOCAL_R(319) + BOOST_PP_LOCAL_MACRO(319) +# endif +# if BOOST_PP_LOCAL_R(318) + BOOST_PP_LOCAL_MACRO(318) +# endif +# if BOOST_PP_LOCAL_R(317) + BOOST_PP_LOCAL_MACRO(317) +# endif +# if BOOST_PP_LOCAL_R(316) + BOOST_PP_LOCAL_MACRO(316) +# endif +# if BOOST_PP_LOCAL_R(315) + BOOST_PP_LOCAL_MACRO(315) +# endif +# if BOOST_PP_LOCAL_R(314) + BOOST_PP_LOCAL_MACRO(314) +# endif +# if BOOST_PP_LOCAL_R(313) + BOOST_PP_LOCAL_MACRO(313) +# endif +# if BOOST_PP_LOCAL_R(312) + BOOST_PP_LOCAL_MACRO(312) +# endif +# if BOOST_PP_LOCAL_R(311) + BOOST_PP_LOCAL_MACRO(311) +# endif +# if BOOST_PP_LOCAL_R(310) + BOOST_PP_LOCAL_MACRO(310) +# endif +# if BOOST_PP_LOCAL_R(309) + BOOST_PP_LOCAL_MACRO(309) +# endif +# if BOOST_PP_LOCAL_R(308) + BOOST_PP_LOCAL_MACRO(308) +# endif +# if BOOST_PP_LOCAL_R(307) + BOOST_PP_LOCAL_MACRO(307) +# endif +# if BOOST_PP_LOCAL_R(306) + BOOST_PP_LOCAL_MACRO(306) +# endif +# if BOOST_PP_LOCAL_R(305) + BOOST_PP_LOCAL_MACRO(305) +# endif +# if BOOST_PP_LOCAL_R(304) + BOOST_PP_LOCAL_MACRO(304) +# endif +# if BOOST_PP_LOCAL_R(303) + BOOST_PP_LOCAL_MACRO(303) +# endif +# if BOOST_PP_LOCAL_R(302) + BOOST_PP_LOCAL_MACRO(302) +# endif +# if BOOST_PP_LOCAL_R(301) + BOOST_PP_LOCAL_MACRO(301) +# endif +# if BOOST_PP_LOCAL_R(300) + BOOST_PP_LOCAL_MACRO(300) +# endif +# if BOOST_PP_LOCAL_R(299) + BOOST_PP_LOCAL_MACRO(299) +# endif +# if BOOST_PP_LOCAL_R(298) + BOOST_PP_LOCAL_MACRO(298) +# endif +# if BOOST_PP_LOCAL_R(297) + BOOST_PP_LOCAL_MACRO(297) +# endif +# if BOOST_PP_LOCAL_R(296) + BOOST_PP_LOCAL_MACRO(296) +# endif +# if BOOST_PP_LOCAL_R(295) + BOOST_PP_LOCAL_MACRO(295) +# endif +# if BOOST_PP_LOCAL_R(294) + BOOST_PP_LOCAL_MACRO(294) +# endif +# if BOOST_PP_LOCAL_R(293) + BOOST_PP_LOCAL_MACRO(293) +# endif +# if BOOST_PP_LOCAL_R(292) + BOOST_PP_LOCAL_MACRO(292) +# endif +# if BOOST_PP_LOCAL_R(291) + BOOST_PP_LOCAL_MACRO(291) +# endif +# if BOOST_PP_LOCAL_R(290) + BOOST_PP_LOCAL_MACRO(290) +# endif +# if BOOST_PP_LOCAL_R(289) + BOOST_PP_LOCAL_MACRO(289) +# endif +# if BOOST_PP_LOCAL_R(288) + BOOST_PP_LOCAL_MACRO(288) +# endif +# if BOOST_PP_LOCAL_R(287) + BOOST_PP_LOCAL_MACRO(287) +# endif +# if BOOST_PP_LOCAL_R(286) + BOOST_PP_LOCAL_MACRO(286) +# endif +# if BOOST_PP_LOCAL_R(285) + BOOST_PP_LOCAL_MACRO(285) +# endif +# if BOOST_PP_LOCAL_R(284) + BOOST_PP_LOCAL_MACRO(284) +# endif +# if BOOST_PP_LOCAL_R(283) + BOOST_PP_LOCAL_MACRO(283) +# endif +# if BOOST_PP_LOCAL_R(282) + BOOST_PP_LOCAL_MACRO(282) +# endif +# if BOOST_PP_LOCAL_R(281) + BOOST_PP_LOCAL_MACRO(281) +# endif +# if BOOST_PP_LOCAL_R(280) + BOOST_PP_LOCAL_MACRO(280) +# endif +# if BOOST_PP_LOCAL_R(279) + BOOST_PP_LOCAL_MACRO(279) +# endif +# if BOOST_PP_LOCAL_R(278) + BOOST_PP_LOCAL_MACRO(278) +# endif +# if BOOST_PP_LOCAL_R(277) + BOOST_PP_LOCAL_MACRO(277) +# endif +# if BOOST_PP_LOCAL_R(276) + BOOST_PP_LOCAL_MACRO(276) +# endif +# if BOOST_PP_LOCAL_R(275) + BOOST_PP_LOCAL_MACRO(275) +# endif +# if BOOST_PP_LOCAL_R(274) + BOOST_PP_LOCAL_MACRO(274) +# endif +# if BOOST_PP_LOCAL_R(273) + BOOST_PP_LOCAL_MACRO(273) +# endif +# if BOOST_PP_LOCAL_R(272) + BOOST_PP_LOCAL_MACRO(272) +# endif +# if BOOST_PP_LOCAL_R(271) + BOOST_PP_LOCAL_MACRO(271) +# endif +# if BOOST_PP_LOCAL_R(270) + BOOST_PP_LOCAL_MACRO(270) +# endif +# if BOOST_PP_LOCAL_R(269) + BOOST_PP_LOCAL_MACRO(269) +# endif +# if BOOST_PP_LOCAL_R(268) + BOOST_PP_LOCAL_MACRO(268) +# endif +# if BOOST_PP_LOCAL_R(267) + BOOST_PP_LOCAL_MACRO(267) +# endif +# if BOOST_PP_LOCAL_R(266) + BOOST_PP_LOCAL_MACRO(266) +# endif +# if BOOST_PP_LOCAL_R(265) + BOOST_PP_LOCAL_MACRO(265) +# endif +# if BOOST_PP_LOCAL_R(264) + BOOST_PP_LOCAL_MACRO(264) +# endif +# if BOOST_PP_LOCAL_R(263) + BOOST_PP_LOCAL_MACRO(263) +# endif +# if BOOST_PP_LOCAL_R(262) + BOOST_PP_LOCAL_MACRO(262) +# endif +# if BOOST_PP_LOCAL_R(261) + BOOST_PP_LOCAL_MACRO(261) +# endif +# if BOOST_PP_LOCAL_R(260) + BOOST_PP_LOCAL_MACRO(260) +# endif +# if BOOST_PP_LOCAL_R(259) + BOOST_PP_LOCAL_MACRO(259) +# endif +# if BOOST_PP_LOCAL_R(258) + BOOST_PP_LOCAL_MACRO(258) +# endif +# if BOOST_PP_LOCAL_R(257) + BOOST_PP_LOCAL_MACRO(257) +# endif diff --git a/src/boost/boost/preprocessor/iteration/detail/local.hpp b/src/boost/boost/preprocessor/iteration/detail/local.hpp index 126ff1df7..7357f8c26 100644 --- a/src/boost/boost/preprocessor/iteration/detail/local.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/local.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # if !defined(BOOST_PP_LOCAL_LIMITS) @@ -30,6 +32,11 @@ # if (BOOST_PP_LOCAL_S) > (BOOST_PP_LOCAL_F) # include # else +# +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_LOCAL_C(0) BOOST_PP_LOCAL_MACRO(0) # endif @@ -802,6 +809,26 @@ # if BOOST_PP_LOCAL_C(256) BOOST_PP_LOCAL_MACRO(256) # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif +# # endif # # undef BOOST_PP_LOCAL_LIMITS diff --git a/src/boost/boost/preprocessor/iteration/detail/rlocal.hpp b/src/boost/boost/preprocessor/iteration/detail/rlocal.hpp index 3b3fcaeb0..10ee113f5 100644 --- a/src/boost/boost/preprocessor/iteration/detail/rlocal.hpp +++ b/src/boost/boost/preprocessor/iteration/detail/rlocal.hpp @@ -7,8 +7,14 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # if BOOST_PP_LOCAL_R(256) BOOST_PP_LOCAL_MACRO(256) # endif @@ -780,3 +786,22 @@ # if BOOST_PP_LOCAL_R(0) BOOST_PP_LOCAL_MACRO(0) # endif +# +# else +# +# include +# +# if BOOST_PP_LIMIT_ITERATION == 256 +# include +# elif BOOST_PP_LIMIT_ITERATION == 512 +# include +# include +# elif BOOST_PP_LIMIT_ITERATION == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_ITERATION limit +# endif +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/dmc/fold_left.hpp b/src/boost/boost/preprocessor/list/detail/dmc/fold_left.hpp index bf1d2e06b..e545e11b5 100644 --- a/src/boost/boost/preprocessor/list/detail/dmc/fold_left.hpp +++ b/src/boost/boost/preprocessor/list/detail/dmc/fold_left.hpp @@ -8,11 +8,12 @@ # */ # # /* Revised by Paul Mensonides (2002) */ +# /* Revised by Edward Diener (2020) */ # # /* See http://www.boost.org for most recent version. */ # -# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP -# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP +# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_DMC_FOLD_LEFT_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_DMC_FOLD_LEFT_HPP # # include # include diff --git a/src/boost/boost/preprocessor/list/detail/edg/fold_left.hpp b/src/boost/boost/preprocessor/list/detail/edg/fold_left.hpp index 0130e85cc..80fba5fc0 100644 --- a/src/boost/boost/preprocessor/list/detail/edg/fold_left.hpp +++ b/src/boost/boost/preprocessor/list/detail/edg/fold_left.hpp @@ -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_LIST_DETAIL_EDG_FOLD_LEFT_HPP # define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # include @@ -533,4 +538,27 @@ # define BOOST_PP_LIST_FOLD_LEFT_255_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_256_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # +# else +# +# include +# include +# include +# include +# include +# +# if BOOST_PP_LIMIT_WHILE == 256 +# include +# elif BOOST_PP_LIMIT_WHILE == 512 +# include +# include +# elif BOOST_PP_LIMIT_WHILE == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/list/detail/edg/fold_right.hpp b/src/boost/boost/preprocessor/list/detail/edg/fold_right.hpp index 431abd2b7..434328b42 100644 --- a/src/boost/boost/preprocessor/list/detail/edg/fold_right.hpp +++ b/src/boost/boost/preprocessor/list/detail/edg/fold_right.hpp @@ -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_LIST_DETAIL_EDG_FOLD_RIGHT_HPP # define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # include @@ -791,4 +796,28 @@ # define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) 0 # define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) 0 # +# else +# +# include +# include +# include +# include +# +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_NIL 1 +# +# if BOOST_PP_LIMIT_WHILE == 256 +# include +# elif BOOST_PP_LIMIT_WHILE == 512 +# include +# include +# elif BOOST_PP_LIMIT_WHILE == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/list/detail/edg/limits/fold_left_1024.hpp b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_left_1024.hpp new file mode 100644 index 000000000..1e0865644 --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_left_1024.hpp @@ -0,0 +1,1044 @@ +# /* 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_LIST_DETAIL_EDG_FOLD_LEFT_1024_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_1024_HPP +# +# define BOOST_PP_LIST_FOLD_LEFT_513(o, s, l) BOOST_PP_LIST_FOLD_LEFT_513_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_514(o, s, l) BOOST_PP_LIST_FOLD_LEFT_514_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_515(o, s, l) BOOST_PP_LIST_FOLD_LEFT_515_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_516(o, s, l) BOOST_PP_LIST_FOLD_LEFT_516_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_517(o, s, l) BOOST_PP_LIST_FOLD_LEFT_517_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_518(o, s, l) BOOST_PP_LIST_FOLD_LEFT_518_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_519(o, s, l) BOOST_PP_LIST_FOLD_LEFT_519_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_520(o, s, l) BOOST_PP_LIST_FOLD_LEFT_520_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_521(o, s, l) BOOST_PP_LIST_FOLD_LEFT_521_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_522(o, s, l) BOOST_PP_LIST_FOLD_LEFT_522_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_523(o, s, l) BOOST_PP_LIST_FOLD_LEFT_523_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_524(o, s, l) BOOST_PP_LIST_FOLD_LEFT_524_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_525(o, s, l) BOOST_PP_LIST_FOLD_LEFT_525_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_526(o, s, l) BOOST_PP_LIST_FOLD_LEFT_526_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_527(o, s, l) BOOST_PP_LIST_FOLD_LEFT_527_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_528(o, s, l) BOOST_PP_LIST_FOLD_LEFT_528_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_529(o, s, l) BOOST_PP_LIST_FOLD_LEFT_529_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_530(o, s, l) BOOST_PP_LIST_FOLD_LEFT_530_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_531(o, s, l) BOOST_PP_LIST_FOLD_LEFT_531_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_532(o, s, l) BOOST_PP_LIST_FOLD_LEFT_532_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_533(o, s, l) BOOST_PP_LIST_FOLD_LEFT_533_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_534(o, s, l) BOOST_PP_LIST_FOLD_LEFT_534_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_535(o, s, l) BOOST_PP_LIST_FOLD_LEFT_535_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_536(o, s, l) BOOST_PP_LIST_FOLD_LEFT_536_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_537(o, s, l) BOOST_PP_LIST_FOLD_LEFT_537_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_538(o, s, l) BOOST_PP_LIST_FOLD_LEFT_538_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_539(o, s, l) BOOST_PP_LIST_FOLD_LEFT_539_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_540(o, s, l) BOOST_PP_LIST_FOLD_LEFT_540_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_541(o, s, l) BOOST_PP_LIST_FOLD_LEFT_541_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_542(o, s, l) BOOST_PP_LIST_FOLD_LEFT_542_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_543(o, s, l) BOOST_PP_LIST_FOLD_LEFT_543_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_544(o, s, l) BOOST_PP_LIST_FOLD_LEFT_544_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_545(o, s, l) BOOST_PP_LIST_FOLD_LEFT_545_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_546(o, s, l) BOOST_PP_LIST_FOLD_LEFT_546_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_547(o, s, l) BOOST_PP_LIST_FOLD_LEFT_547_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_548(o, s, l) BOOST_PP_LIST_FOLD_LEFT_548_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_549(o, s, l) BOOST_PP_LIST_FOLD_LEFT_549_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_550(o, s, l) BOOST_PP_LIST_FOLD_LEFT_550_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_551(o, s, l) BOOST_PP_LIST_FOLD_LEFT_551_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_552(o, s, l) BOOST_PP_LIST_FOLD_LEFT_552_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_553(o, s, l) BOOST_PP_LIST_FOLD_LEFT_553_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_554(o, s, l) BOOST_PP_LIST_FOLD_LEFT_554_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_555(o, s, l) BOOST_PP_LIST_FOLD_LEFT_555_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_556(o, s, l) BOOST_PP_LIST_FOLD_LEFT_556_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_557(o, s, l) BOOST_PP_LIST_FOLD_LEFT_557_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_558(o, s, l) BOOST_PP_LIST_FOLD_LEFT_558_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_559(o, s, l) BOOST_PP_LIST_FOLD_LEFT_559_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_560(o, s, l) BOOST_PP_LIST_FOLD_LEFT_560_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_561(o, s, l) BOOST_PP_LIST_FOLD_LEFT_561_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_562(o, s, l) BOOST_PP_LIST_FOLD_LEFT_562_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_563(o, s, l) BOOST_PP_LIST_FOLD_LEFT_563_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_564(o, s, l) BOOST_PP_LIST_FOLD_LEFT_564_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_565(o, s, l) BOOST_PP_LIST_FOLD_LEFT_565_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_566(o, s, l) BOOST_PP_LIST_FOLD_LEFT_566_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_567(o, s, l) BOOST_PP_LIST_FOLD_LEFT_567_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_568(o, s, l) BOOST_PP_LIST_FOLD_LEFT_568_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_569(o, s, l) BOOST_PP_LIST_FOLD_LEFT_569_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_570(o, s, l) BOOST_PP_LIST_FOLD_LEFT_570_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_571(o, s, l) BOOST_PP_LIST_FOLD_LEFT_571_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_572(o, s, l) BOOST_PP_LIST_FOLD_LEFT_572_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_573(o, s, l) BOOST_PP_LIST_FOLD_LEFT_573_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_574(o, s, l) BOOST_PP_LIST_FOLD_LEFT_574_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_575(o, s, l) BOOST_PP_LIST_FOLD_LEFT_575_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_576(o, s, l) BOOST_PP_LIST_FOLD_LEFT_576_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_577(o, s, l) BOOST_PP_LIST_FOLD_LEFT_577_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_578(o, s, l) BOOST_PP_LIST_FOLD_LEFT_578_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_579(o, s, l) BOOST_PP_LIST_FOLD_LEFT_579_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_580(o, s, l) BOOST_PP_LIST_FOLD_LEFT_580_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_581(o, s, l) BOOST_PP_LIST_FOLD_LEFT_581_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_582(o, s, l) BOOST_PP_LIST_FOLD_LEFT_582_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_583(o, s, l) BOOST_PP_LIST_FOLD_LEFT_583_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_584(o, s, l) BOOST_PP_LIST_FOLD_LEFT_584_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_585(o, s, l) BOOST_PP_LIST_FOLD_LEFT_585_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_586(o, s, l) BOOST_PP_LIST_FOLD_LEFT_586_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_587(o, s, l) BOOST_PP_LIST_FOLD_LEFT_587_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_588(o, s, l) BOOST_PP_LIST_FOLD_LEFT_588_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_589(o, s, l) BOOST_PP_LIST_FOLD_LEFT_589_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_590(o, s, l) BOOST_PP_LIST_FOLD_LEFT_590_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_591(o, s, l) BOOST_PP_LIST_FOLD_LEFT_591_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_592(o, s, l) BOOST_PP_LIST_FOLD_LEFT_592_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_593(o, s, l) BOOST_PP_LIST_FOLD_LEFT_593_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_594(o, s, l) BOOST_PP_LIST_FOLD_LEFT_594_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_595(o, s, l) BOOST_PP_LIST_FOLD_LEFT_595_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_596(o, s, l) BOOST_PP_LIST_FOLD_LEFT_596_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_597(o, s, l) BOOST_PP_LIST_FOLD_LEFT_597_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_598(o, s, l) BOOST_PP_LIST_FOLD_LEFT_598_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_599(o, s, l) BOOST_PP_LIST_FOLD_LEFT_599_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_600(o, s, l) BOOST_PP_LIST_FOLD_LEFT_600_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_601(o, s, l) BOOST_PP_LIST_FOLD_LEFT_601_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_602(o, s, l) BOOST_PP_LIST_FOLD_LEFT_602_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_603(o, s, l) BOOST_PP_LIST_FOLD_LEFT_603_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_604(o, s, l) BOOST_PP_LIST_FOLD_LEFT_604_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_605(o, s, l) BOOST_PP_LIST_FOLD_LEFT_605_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_606(o, s, l) BOOST_PP_LIST_FOLD_LEFT_606_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_607(o, s, l) BOOST_PP_LIST_FOLD_LEFT_607_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_608(o, s, l) BOOST_PP_LIST_FOLD_LEFT_608_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_609(o, s, l) BOOST_PP_LIST_FOLD_LEFT_609_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_610(o, s, l) BOOST_PP_LIST_FOLD_LEFT_610_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_611(o, s, l) BOOST_PP_LIST_FOLD_LEFT_611_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_612(o, s, l) BOOST_PP_LIST_FOLD_LEFT_612_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_613(o, s, l) BOOST_PP_LIST_FOLD_LEFT_613_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_614(o, s, l) BOOST_PP_LIST_FOLD_LEFT_614_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_615(o, s, l) BOOST_PP_LIST_FOLD_LEFT_615_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_616(o, s, l) BOOST_PP_LIST_FOLD_LEFT_616_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_617(o, s, l) BOOST_PP_LIST_FOLD_LEFT_617_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_618(o, s, l) BOOST_PP_LIST_FOLD_LEFT_618_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_619(o, s, l) BOOST_PP_LIST_FOLD_LEFT_619_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_620(o, s, l) BOOST_PP_LIST_FOLD_LEFT_620_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_621(o, s, l) BOOST_PP_LIST_FOLD_LEFT_621_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_622(o, s, l) BOOST_PP_LIST_FOLD_LEFT_622_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_623(o, s, l) BOOST_PP_LIST_FOLD_LEFT_623_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_624(o, s, l) BOOST_PP_LIST_FOLD_LEFT_624_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_625(o, s, l) BOOST_PP_LIST_FOLD_LEFT_625_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_626(o, s, l) BOOST_PP_LIST_FOLD_LEFT_626_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_627(o, s, l) BOOST_PP_LIST_FOLD_LEFT_627_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_628(o, s, l) BOOST_PP_LIST_FOLD_LEFT_628_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_629(o, s, l) BOOST_PP_LIST_FOLD_LEFT_629_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_630(o, s, l) BOOST_PP_LIST_FOLD_LEFT_630_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_631(o, s, l) BOOST_PP_LIST_FOLD_LEFT_631_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_632(o, s, l) BOOST_PP_LIST_FOLD_LEFT_632_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_633(o, s, l) BOOST_PP_LIST_FOLD_LEFT_633_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_634(o, s, l) BOOST_PP_LIST_FOLD_LEFT_634_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_635(o, s, l) BOOST_PP_LIST_FOLD_LEFT_635_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_636(o, s, l) BOOST_PP_LIST_FOLD_LEFT_636_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_637(o, s, l) BOOST_PP_LIST_FOLD_LEFT_637_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_638(o, s, l) BOOST_PP_LIST_FOLD_LEFT_638_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_639(o, s, l) BOOST_PP_LIST_FOLD_LEFT_639_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_640(o, s, l) BOOST_PP_LIST_FOLD_LEFT_640_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_641(o, s, l) BOOST_PP_LIST_FOLD_LEFT_641_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_642(o, s, l) BOOST_PP_LIST_FOLD_LEFT_642_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_643(o, s, l) BOOST_PP_LIST_FOLD_LEFT_643_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_644(o, s, l) BOOST_PP_LIST_FOLD_LEFT_644_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_645(o, s, l) BOOST_PP_LIST_FOLD_LEFT_645_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_646(o, s, l) BOOST_PP_LIST_FOLD_LEFT_646_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_647(o, s, l) BOOST_PP_LIST_FOLD_LEFT_647_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_648(o, s, l) BOOST_PP_LIST_FOLD_LEFT_648_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_649(o, s, l) BOOST_PP_LIST_FOLD_LEFT_649_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_650(o, s, l) BOOST_PP_LIST_FOLD_LEFT_650_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_651(o, s, l) BOOST_PP_LIST_FOLD_LEFT_651_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_652(o, s, l) BOOST_PP_LIST_FOLD_LEFT_652_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_653(o, s, l) BOOST_PP_LIST_FOLD_LEFT_653_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_654(o, s, l) BOOST_PP_LIST_FOLD_LEFT_654_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_655(o, s, l) BOOST_PP_LIST_FOLD_LEFT_655_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_656(o, s, l) BOOST_PP_LIST_FOLD_LEFT_656_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_657(o, s, l) BOOST_PP_LIST_FOLD_LEFT_657_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_658(o, s, l) BOOST_PP_LIST_FOLD_LEFT_658_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_659(o, s, l) BOOST_PP_LIST_FOLD_LEFT_659_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_660(o, s, l) BOOST_PP_LIST_FOLD_LEFT_660_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_661(o, s, l) BOOST_PP_LIST_FOLD_LEFT_661_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_662(o, s, l) BOOST_PP_LIST_FOLD_LEFT_662_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_663(o, s, l) BOOST_PP_LIST_FOLD_LEFT_663_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_664(o, s, l) BOOST_PP_LIST_FOLD_LEFT_664_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_665(o, s, l) BOOST_PP_LIST_FOLD_LEFT_665_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_666(o, s, l) BOOST_PP_LIST_FOLD_LEFT_666_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_667(o, s, l) BOOST_PP_LIST_FOLD_LEFT_667_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_668(o, s, l) BOOST_PP_LIST_FOLD_LEFT_668_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_669(o, s, l) BOOST_PP_LIST_FOLD_LEFT_669_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_670(o, s, l) BOOST_PP_LIST_FOLD_LEFT_670_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_671(o, s, l) BOOST_PP_LIST_FOLD_LEFT_671_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_672(o, s, l) BOOST_PP_LIST_FOLD_LEFT_672_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_673(o, s, l) BOOST_PP_LIST_FOLD_LEFT_673_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_674(o, s, l) BOOST_PP_LIST_FOLD_LEFT_674_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_675(o, s, l) BOOST_PP_LIST_FOLD_LEFT_675_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_676(o, s, l) BOOST_PP_LIST_FOLD_LEFT_676_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_677(o, s, l) BOOST_PP_LIST_FOLD_LEFT_677_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_678(o, s, l) BOOST_PP_LIST_FOLD_LEFT_678_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_679(o, s, l) BOOST_PP_LIST_FOLD_LEFT_679_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_680(o, s, l) BOOST_PP_LIST_FOLD_LEFT_680_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_681(o, s, l) BOOST_PP_LIST_FOLD_LEFT_681_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_682(o, s, l) BOOST_PP_LIST_FOLD_LEFT_682_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_683(o, s, l) BOOST_PP_LIST_FOLD_LEFT_683_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_684(o, s, l) BOOST_PP_LIST_FOLD_LEFT_684_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_685(o, s, l) BOOST_PP_LIST_FOLD_LEFT_685_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_686(o, s, l) BOOST_PP_LIST_FOLD_LEFT_686_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_687(o, s, l) BOOST_PP_LIST_FOLD_LEFT_687_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_688(o, s, l) BOOST_PP_LIST_FOLD_LEFT_688_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_689(o, s, l) BOOST_PP_LIST_FOLD_LEFT_689_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_690(o, s, l) BOOST_PP_LIST_FOLD_LEFT_690_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_691(o, s, l) BOOST_PP_LIST_FOLD_LEFT_691_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_692(o, s, l) BOOST_PP_LIST_FOLD_LEFT_692_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_693(o, s, l) BOOST_PP_LIST_FOLD_LEFT_693_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_694(o, s, l) BOOST_PP_LIST_FOLD_LEFT_694_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_695(o, s, l) BOOST_PP_LIST_FOLD_LEFT_695_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_696(o, s, l) BOOST_PP_LIST_FOLD_LEFT_696_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_697(o, s, l) BOOST_PP_LIST_FOLD_LEFT_697_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_698(o, s, l) BOOST_PP_LIST_FOLD_LEFT_698_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_699(o, s, l) BOOST_PP_LIST_FOLD_LEFT_699_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_700(o, s, l) BOOST_PP_LIST_FOLD_LEFT_700_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_701(o, s, l) BOOST_PP_LIST_FOLD_LEFT_701_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_702(o, s, l) BOOST_PP_LIST_FOLD_LEFT_702_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_703(o, s, l) BOOST_PP_LIST_FOLD_LEFT_703_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_704(o, s, l) BOOST_PP_LIST_FOLD_LEFT_704_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_705(o, s, l) BOOST_PP_LIST_FOLD_LEFT_705_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_706(o, s, l) BOOST_PP_LIST_FOLD_LEFT_706_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_707(o, s, l) BOOST_PP_LIST_FOLD_LEFT_707_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_708(o, s, l) BOOST_PP_LIST_FOLD_LEFT_708_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_709(o, s, l) BOOST_PP_LIST_FOLD_LEFT_709_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_710(o, s, l) BOOST_PP_LIST_FOLD_LEFT_710_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_711(o, s, l) BOOST_PP_LIST_FOLD_LEFT_711_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_712(o, s, l) BOOST_PP_LIST_FOLD_LEFT_712_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_713(o, s, l) BOOST_PP_LIST_FOLD_LEFT_713_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_714(o, s, l) BOOST_PP_LIST_FOLD_LEFT_714_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_715(o, s, l) BOOST_PP_LIST_FOLD_LEFT_715_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_716(o, s, l) BOOST_PP_LIST_FOLD_LEFT_716_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_717(o, s, l) BOOST_PP_LIST_FOLD_LEFT_717_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_718(o, s, l) BOOST_PP_LIST_FOLD_LEFT_718_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_719(o, s, l) BOOST_PP_LIST_FOLD_LEFT_719_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_720(o, s, l) BOOST_PP_LIST_FOLD_LEFT_720_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_721(o, s, l) BOOST_PP_LIST_FOLD_LEFT_721_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_722(o, s, l) BOOST_PP_LIST_FOLD_LEFT_722_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_723(o, s, l) BOOST_PP_LIST_FOLD_LEFT_723_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_724(o, s, l) BOOST_PP_LIST_FOLD_LEFT_724_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_725(o, s, l) BOOST_PP_LIST_FOLD_LEFT_725_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_726(o, s, l) BOOST_PP_LIST_FOLD_LEFT_726_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_727(o, s, l) BOOST_PP_LIST_FOLD_LEFT_727_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_728(o, s, l) BOOST_PP_LIST_FOLD_LEFT_728_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_729(o, s, l) BOOST_PP_LIST_FOLD_LEFT_729_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_730(o, s, l) BOOST_PP_LIST_FOLD_LEFT_730_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_731(o, s, l) BOOST_PP_LIST_FOLD_LEFT_731_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_732(o, s, l) BOOST_PP_LIST_FOLD_LEFT_732_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_733(o, s, l) BOOST_PP_LIST_FOLD_LEFT_733_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_734(o, s, l) BOOST_PP_LIST_FOLD_LEFT_734_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_735(o, s, l) BOOST_PP_LIST_FOLD_LEFT_735_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_736(o, s, l) BOOST_PP_LIST_FOLD_LEFT_736_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_737(o, s, l) BOOST_PP_LIST_FOLD_LEFT_737_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_738(o, s, l) BOOST_PP_LIST_FOLD_LEFT_738_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_739(o, s, l) BOOST_PP_LIST_FOLD_LEFT_739_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_740(o, s, l) BOOST_PP_LIST_FOLD_LEFT_740_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_741(o, s, l) BOOST_PP_LIST_FOLD_LEFT_741_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_742(o, s, l) BOOST_PP_LIST_FOLD_LEFT_742_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_743(o, s, l) BOOST_PP_LIST_FOLD_LEFT_743_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_744(o, s, l) BOOST_PP_LIST_FOLD_LEFT_744_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_745(o, s, l) BOOST_PP_LIST_FOLD_LEFT_745_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_746(o, s, l) BOOST_PP_LIST_FOLD_LEFT_746_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_747(o, s, l) BOOST_PP_LIST_FOLD_LEFT_747_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_748(o, s, l) BOOST_PP_LIST_FOLD_LEFT_748_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_749(o, s, l) BOOST_PP_LIST_FOLD_LEFT_749_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_750(o, s, l) BOOST_PP_LIST_FOLD_LEFT_750_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_751(o, s, l) BOOST_PP_LIST_FOLD_LEFT_751_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_752(o, s, l) BOOST_PP_LIST_FOLD_LEFT_752_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_753(o, s, l) BOOST_PP_LIST_FOLD_LEFT_753_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_754(o, s, l) BOOST_PP_LIST_FOLD_LEFT_754_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_755(o, s, l) BOOST_PP_LIST_FOLD_LEFT_755_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_756(o, s, l) BOOST_PP_LIST_FOLD_LEFT_756_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_757(o, s, l) BOOST_PP_LIST_FOLD_LEFT_757_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_758(o, s, l) BOOST_PP_LIST_FOLD_LEFT_758_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_759(o, s, l) BOOST_PP_LIST_FOLD_LEFT_759_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_760(o, s, l) BOOST_PP_LIST_FOLD_LEFT_760_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_761(o, s, l) BOOST_PP_LIST_FOLD_LEFT_761_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_762(o, s, l) BOOST_PP_LIST_FOLD_LEFT_762_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_763(o, s, l) BOOST_PP_LIST_FOLD_LEFT_763_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_764(o, s, l) BOOST_PP_LIST_FOLD_LEFT_764_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_765(o, s, l) BOOST_PP_LIST_FOLD_LEFT_765_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_766(o, s, l) BOOST_PP_LIST_FOLD_LEFT_766_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_767(o, s, l) BOOST_PP_LIST_FOLD_LEFT_767_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_768(o, s, l) BOOST_PP_LIST_FOLD_LEFT_768_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_769(o, s, l) BOOST_PP_LIST_FOLD_LEFT_769_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_770(o, s, l) BOOST_PP_LIST_FOLD_LEFT_770_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_771(o, s, l) BOOST_PP_LIST_FOLD_LEFT_771_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_772(o, s, l) BOOST_PP_LIST_FOLD_LEFT_772_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_773(o, s, l) BOOST_PP_LIST_FOLD_LEFT_773_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_774(o, s, l) BOOST_PP_LIST_FOLD_LEFT_774_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_775(o, s, l) BOOST_PP_LIST_FOLD_LEFT_775_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_776(o, s, l) BOOST_PP_LIST_FOLD_LEFT_776_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_777(o, s, l) BOOST_PP_LIST_FOLD_LEFT_777_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_778(o, s, l) BOOST_PP_LIST_FOLD_LEFT_778_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_779(o, s, l) BOOST_PP_LIST_FOLD_LEFT_779_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_780(o, s, l) BOOST_PP_LIST_FOLD_LEFT_780_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_781(o, s, l) BOOST_PP_LIST_FOLD_LEFT_781_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_782(o, s, l) BOOST_PP_LIST_FOLD_LEFT_782_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_783(o, s, l) BOOST_PP_LIST_FOLD_LEFT_783_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_784(o, s, l) BOOST_PP_LIST_FOLD_LEFT_784_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_785(o, s, l) BOOST_PP_LIST_FOLD_LEFT_785_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_786(o, s, l) BOOST_PP_LIST_FOLD_LEFT_786_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_787(o, s, l) BOOST_PP_LIST_FOLD_LEFT_787_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_788(o, s, l) BOOST_PP_LIST_FOLD_LEFT_788_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_789(o, s, l) BOOST_PP_LIST_FOLD_LEFT_789_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_790(o, s, l) BOOST_PP_LIST_FOLD_LEFT_790_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_791(o, s, l) BOOST_PP_LIST_FOLD_LEFT_791_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_792(o, s, l) BOOST_PP_LIST_FOLD_LEFT_792_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_793(o, s, l) BOOST_PP_LIST_FOLD_LEFT_793_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_794(o, s, l) BOOST_PP_LIST_FOLD_LEFT_794_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_795(o, s, l) BOOST_PP_LIST_FOLD_LEFT_795_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_796(o, s, l) BOOST_PP_LIST_FOLD_LEFT_796_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_797(o, s, l) BOOST_PP_LIST_FOLD_LEFT_797_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_798(o, s, l) BOOST_PP_LIST_FOLD_LEFT_798_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_799(o, s, l) BOOST_PP_LIST_FOLD_LEFT_799_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_800(o, s, l) BOOST_PP_LIST_FOLD_LEFT_800_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_801(o, s, l) BOOST_PP_LIST_FOLD_LEFT_801_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_802(o, s, l) BOOST_PP_LIST_FOLD_LEFT_802_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_803(o, s, l) BOOST_PP_LIST_FOLD_LEFT_803_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_804(o, s, l) BOOST_PP_LIST_FOLD_LEFT_804_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_805(o, s, l) BOOST_PP_LIST_FOLD_LEFT_805_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_806(o, s, l) BOOST_PP_LIST_FOLD_LEFT_806_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_807(o, s, l) BOOST_PP_LIST_FOLD_LEFT_807_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_808(o, s, l) BOOST_PP_LIST_FOLD_LEFT_808_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_809(o, s, l) BOOST_PP_LIST_FOLD_LEFT_809_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_810(o, s, l) BOOST_PP_LIST_FOLD_LEFT_810_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_811(o, s, l) BOOST_PP_LIST_FOLD_LEFT_811_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_812(o, s, l) BOOST_PP_LIST_FOLD_LEFT_812_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_813(o, s, l) BOOST_PP_LIST_FOLD_LEFT_813_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_814(o, s, l) BOOST_PP_LIST_FOLD_LEFT_814_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_815(o, s, l) BOOST_PP_LIST_FOLD_LEFT_815_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_816(o, s, l) BOOST_PP_LIST_FOLD_LEFT_816_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_817(o, s, l) BOOST_PP_LIST_FOLD_LEFT_817_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_818(o, s, l) BOOST_PP_LIST_FOLD_LEFT_818_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_819(o, s, l) BOOST_PP_LIST_FOLD_LEFT_819_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_820(o, s, l) BOOST_PP_LIST_FOLD_LEFT_820_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_821(o, s, l) BOOST_PP_LIST_FOLD_LEFT_821_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_822(o, s, l) BOOST_PP_LIST_FOLD_LEFT_822_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_823(o, s, l) BOOST_PP_LIST_FOLD_LEFT_823_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_824(o, s, l) BOOST_PP_LIST_FOLD_LEFT_824_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_825(o, s, l) BOOST_PP_LIST_FOLD_LEFT_825_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_826(o, s, l) BOOST_PP_LIST_FOLD_LEFT_826_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_827(o, s, l) BOOST_PP_LIST_FOLD_LEFT_827_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_828(o, s, l) BOOST_PP_LIST_FOLD_LEFT_828_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_829(o, s, l) BOOST_PP_LIST_FOLD_LEFT_829_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_830(o, s, l) BOOST_PP_LIST_FOLD_LEFT_830_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_831(o, s, l) BOOST_PP_LIST_FOLD_LEFT_831_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_832(o, s, l) BOOST_PP_LIST_FOLD_LEFT_832_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_833(o, s, l) BOOST_PP_LIST_FOLD_LEFT_833_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_834(o, s, l) BOOST_PP_LIST_FOLD_LEFT_834_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_835(o, s, l) BOOST_PP_LIST_FOLD_LEFT_835_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_836(o, s, l) BOOST_PP_LIST_FOLD_LEFT_836_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_837(o, s, l) BOOST_PP_LIST_FOLD_LEFT_837_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_838(o, s, l) BOOST_PP_LIST_FOLD_LEFT_838_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_839(o, s, l) BOOST_PP_LIST_FOLD_LEFT_839_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_840(o, s, l) BOOST_PP_LIST_FOLD_LEFT_840_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_841(o, s, l) BOOST_PP_LIST_FOLD_LEFT_841_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_842(o, s, l) BOOST_PP_LIST_FOLD_LEFT_842_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_843(o, s, l) BOOST_PP_LIST_FOLD_LEFT_843_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_844(o, s, l) BOOST_PP_LIST_FOLD_LEFT_844_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_845(o, s, l) BOOST_PP_LIST_FOLD_LEFT_845_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_846(o, s, l) BOOST_PP_LIST_FOLD_LEFT_846_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_847(o, s, l) BOOST_PP_LIST_FOLD_LEFT_847_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_848(o, s, l) BOOST_PP_LIST_FOLD_LEFT_848_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_849(o, s, l) BOOST_PP_LIST_FOLD_LEFT_849_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_850(o, s, l) BOOST_PP_LIST_FOLD_LEFT_850_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_851(o, s, l) BOOST_PP_LIST_FOLD_LEFT_851_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_852(o, s, l) BOOST_PP_LIST_FOLD_LEFT_852_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_853(o, s, l) BOOST_PP_LIST_FOLD_LEFT_853_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_854(o, s, l) BOOST_PP_LIST_FOLD_LEFT_854_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_855(o, s, l) BOOST_PP_LIST_FOLD_LEFT_855_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_856(o, s, l) BOOST_PP_LIST_FOLD_LEFT_856_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_857(o, s, l) BOOST_PP_LIST_FOLD_LEFT_857_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_858(o, s, l) BOOST_PP_LIST_FOLD_LEFT_858_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_859(o, s, l) BOOST_PP_LIST_FOLD_LEFT_859_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_860(o, s, l) BOOST_PP_LIST_FOLD_LEFT_860_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_861(o, s, l) BOOST_PP_LIST_FOLD_LEFT_861_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_862(o, s, l) BOOST_PP_LIST_FOLD_LEFT_862_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_863(o, s, l) BOOST_PP_LIST_FOLD_LEFT_863_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_864(o, s, l) BOOST_PP_LIST_FOLD_LEFT_864_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_865(o, s, l) BOOST_PP_LIST_FOLD_LEFT_865_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_866(o, s, l) BOOST_PP_LIST_FOLD_LEFT_866_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_867(o, s, l) BOOST_PP_LIST_FOLD_LEFT_867_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_868(o, s, l) BOOST_PP_LIST_FOLD_LEFT_868_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_869(o, s, l) BOOST_PP_LIST_FOLD_LEFT_869_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_870(o, s, l) BOOST_PP_LIST_FOLD_LEFT_870_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_871(o, s, l) BOOST_PP_LIST_FOLD_LEFT_871_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_872(o, s, l) BOOST_PP_LIST_FOLD_LEFT_872_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_873(o, s, l) BOOST_PP_LIST_FOLD_LEFT_873_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_874(o, s, l) BOOST_PP_LIST_FOLD_LEFT_874_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_875(o, s, l) BOOST_PP_LIST_FOLD_LEFT_875_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_876(o, s, l) BOOST_PP_LIST_FOLD_LEFT_876_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_877(o, s, l) BOOST_PP_LIST_FOLD_LEFT_877_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_878(o, s, l) BOOST_PP_LIST_FOLD_LEFT_878_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_879(o, s, l) BOOST_PP_LIST_FOLD_LEFT_879_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_880(o, s, l) BOOST_PP_LIST_FOLD_LEFT_880_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_881(o, s, l) BOOST_PP_LIST_FOLD_LEFT_881_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_882(o, s, l) BOOST_PP_LIST_FOLD_LEFT_882_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_883(o, s, l) BOOST_PP_LIST_FOLD_LEFT_883_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_884(o, s, l) BOOST_PP_LIST_FOLD_LEFT_884_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_885(o, s, l) BOOST_PP_LIST_FOLD_LEFT_885_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_886(o, s, l) BOOST_PP_LIST_FOLD_LEFT_886_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_887(o, s, l) BOOST_PP_LIST_FOLD_LEFT_887_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_888(o, s, l) BOOST_PP_LIST_FOLD_LEFT_888_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_889(o, s, l) BOOST_PP_LIST_FOLD_LEFT_889_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_890(o, s, l) BOOST_PP_LIST_FOLD_LEFT_890_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_891(o, s, l) BOOST_PP_LIST_FOLD_LEFT_891_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_892(o, s, l) BOOST_PP_LIST_FOLD_LEFT_892_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_893(o, s, l) BOOST_PP_LIST_FOLD_LEFT_893_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_894(o, s, l) BOOST_PP_LIST_FOLD_LEFT_894_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_895(o, s, l) BOOST_PP_LIST_FOLD_LEFT_895_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_896(o, s, l) BOOST_PP_LIST_FOLD_LEFT_896_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_897(o, s, l) BOOST_PP_LIST_FOLD_LEFT_897_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_898(o, s, l) BOOST_PP_LIST_FOLD_LEFT_898_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_899(o, s, l) BOOST_PP_LIST_FOLD_LEFT_899_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_900(o, s, l) BOOST_PP_LIST_FOLD_LEFT_900_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_901(o, s, l) BOOST_PP_LIST_FOLD_LEFT_901_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_902(o, s, l) BOOST_PP_LIST_FOLD_LEFT_902_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_903(o, s, l) BOOST_PP_LIST_FOLD_LEFT_903_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_904(o, s, l) BOOST_PP_LIST_FOLD_LEFT_904_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_905(o, s, l) BOOST_PP_LIST_FOLD_LEFT_905_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_906(o, s, l) BOOST_PP_LIST_FOLD_LEFT_906_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_907(o, s, l) BOOST_PP_LIST_FOLD_LEFT_907_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_908(o, s, l) BOOST_PP_LIST_FOLD_LEFT_908_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_909(o, s, l) BOOST_PP_LIST_FOLD_LEFT_909_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_910(o, s, l) BOOST_PP_LIST_FOLD_LEFT_910_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_911(o, s, l) BOOST_PP_LIST_FOLD_LEFT_911_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_912(o, s, l) BOOST_PP_LIST_FOLD_LEFT_912_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_913(o, s, l) BOOST_PP_LIST_FOLD_LEFT_913_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_914(o, s, l) BOOST_PP_LIST_FOLD_LEFT_914_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_915(o, s, l) BOOST_PP_LIST_FOLD_LEFT_915_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_916(o, s, l) BOOST_PP_LIST_FOLD_LEFT_916_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_917(o, s, l) BOOST_PP_LIST_FOLD_LEFT_917_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_918(o, s, l) BOOST_PP_LIST_FOLD_LEFT_918_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_919(o, s, l) BOOST_PP_LIST_FOLD_LEFT_919_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_920(o, s, l) BOOST_PP_LIST_FOLD_LEFT_920_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_921(o, s, l) BOOST_PP_LIST_FOLD_LEFT_921_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_922(o, s, l) BOOST_PP_LIST_FOLD_LEFT_922_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_923(o, s, l) BOOST_PP_LIST_FOLD_LEFT_923_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_924(o, s, l) BOOST_PP_LIST_FOLD_LEFT_924_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_925(o, s, l) BOOST_PP_LIST_FOLD_LEFT_925_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_926(o, s, l) BOOST_PP_LIST_FOLD_LEFT_926_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_927(o, s, l) BOOST_PP_LIST_FOLD_LEFT_927_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_928(o, s, l) BOOST_PP_LIST_FOLD_LEFT_928_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_929(o, s, l) BOOST_PP_LIST_FOLD_LEFT_929_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_930(o, s, l) BOOST_PP_LIST_FOLD_LEFT_930_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_931(o, s, l) BOOST_PP_LIST_FOLD_LEFT_931_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_932(o, s, l) BOOST_PP_LIST_FOLD_LEFT_932_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_933(o, s, l) BOOST_PP_LIST_FOLD_LEFT_933_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_934(o, s, l) BOOST_PP_LIST_FOLD_LEFT_934_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_935(o, s, l) BOOST_PP_LIST_FOLD_LEFT_935_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_936(o, s, l) BOOST_PP_LIST_FOLD_LEFT_936_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_937(o, s, l) BOOST_PP_LIST_FOLD_LEFT_937_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_938(o, s, l) BOOST_PP_LIST_FOLD_LEFT_938_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_939(o, s, l) BOOST_PP_LIST_FOLD_LEFT_939_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_940(o, s, l) BOOST_PP_LIST_FOLD_LEFT_940_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_941(o, s, l) BOOST_PP_LIST_FOLD_LEFT_941_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_942(o, s, l) BOOST_PP_LIST_FOLD_LEFT_942_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_943(o, s, l) BOOST_PP_LIST_FOLD_LEFT_943_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_944(o, s, l) BOOST_PP_LIST_FOLD_LEFT_944_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_945(o, s, l) BOOST_PP_LIST_FOLD_LEFT_945_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_946(o, s, l) BOOST_PP_LIST_FOLD_LEFT_946_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_947(o, s, l) BOOST_PP_LIST_FOLD_LEFT_947_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_948(o, s, l) BOOST_PP_LIST_FOLD_LEFT_948_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_949(o, s, l) BOOST_PP_LIST_FOLD_LEFT_949_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_950(o, s, l) BOOST_PP_LIST_FOLD_LEFT_950_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_951(o, s, l) BOOST_PP_LIST_FOLD_LEFT_951_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_952(o, s, l) BOOST_PP_LIST_FOLD_LEFT_952_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_953(o, s, l) BOOST_PP_LIST_FOLD_LEFT_953_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_954(o, s, l) BOOST_PP_LIST_FOLD_LEFT_954_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_955(o, s, l) BOOST_PP_LIST_FOLD_LEFT_955_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_956(o, s, l) BOOST_PP_LIST_FOLD_LEFT_956_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_957(o, s, l) BOOST_PP_LIST_FOLD_LEFT_957_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_958(o, s, l) BOOST_PP_LIST_FOLD_LEFT_958_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_959(o, s, l) BOOST_PP_LIST_FOLD_LEFT_959_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_960(o, s, l) BOOST_PP_LIST_FOLD_LEFT_960_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_961(o, s, l) BOOST_PP_LIST_FOLD_LEFT_961_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_962(o, s, l) BOOST_PP_LIST_FOLD_LEFT_962_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_963(o, s, l) BOOST_PP_LIST_FOLD_LEFT_963_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_964(o, s, l) BOOST_PP_LIST_FOLD_LEFT_964_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_965(o, s, l) BOOST_PP_LIST_FOLD_LEFT_965_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_966(o, s, l) BOOST_PP_LIST_FOLD_LEFT_966_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_967(o, s, l) BOOST_PP_LIST_FOLD_LEFT_967_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_968(o, s, l) BOOST_PP_LIST_FOLD_LEFT_968_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_969(o, s, l) BOOST_PP_LIST_FOLD_LEFT_969_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_970(o, s, l) BOOST_PP_LIST_FOLD_LEFT_970_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_971(o, s, l) BOOST_PP_LIST_FOLD_LEFT_971_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_972(o, s, l) BOOST_PP_LIST_FOLD_LEFT_972_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_973(o, s, l) BOOST_PP_LIST_FOLD_LEFT_973_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_974(o, s, l) BOOST_PP_LIST_FOLD_LEFT_974_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_975(o, s, l) BOOST_PP_LIST_FOLD_LEFT_975_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_976(o, s, l) BOOST_PP_LIST_FOLD_LEFT_976_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_977(o, s, l) BOOST_PP_LIST_FOLD_LEFT_977_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_978(o, s, l) BOOST_PP_LIST_FOLD_LEFT_978_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_979(o, s, l) BOOST_PP_LIST_FOLD_LEFT_979_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_980(o, s, l) BOOST_PP_LIST_FOLD_LEFT_980_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_981(o, s, l) BOOST_PP_LIST_FOLD_LEFT_981_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_982(o, s, l) BOOST_PP_LIST_FOLD_LEFT_982_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_983(o, s, l) BOOST_PP_LIST_FOLD_LEFT_983_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_984(o, s, l) BOOST_PP_LIST_FOLD_LEFT_984_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_985(o, s, l) BOOST_PP_LIST_FOLD_LEFT_985_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_986(o, s, l) BOOST_PP_LIST_FOLD_LEFT_986_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_987(o, s, l) BOOST_PP_LIST_FOLD_LEFT_987_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_988(o, s, l) BOOST_PP_LIST_FOLD_LEFT_988_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_989(o, s, l) BOOST_PP_LIST_FOLD_LEFT_989_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_990(o, s, l) BOOST_PP_LIST_FOLD_LEFT_990_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_991(o, s, l) BOOST_PP_LIST_FOLD_LEFT_991_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_992(o, s, l) BOOST_PP_LIST_FOLD_LEFT_992_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_993(o, s, l) BOOST_PP_LIST_FOLD_LEFT_993_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_994(o, s, l) BOOST_PP_LIST_FOLD_LEFT_994_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_995(o, s, l) BOOST_PP_LIST_FOLD_LEFT_995_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_996(o, s, l) BOOST_PP_LIST_FOLD_LEFT_996_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_997(o, s, l) BOOST_PP_LIST_FOLD_LEFT_997_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_998(o, s, l) BOOST_PP_LIST_FOLD_LEFT_998_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_999(o, s, l) BOOST_PP_LIST_FOLD_LEFT_999_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1000(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1000_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1001(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1001_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1002(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1002_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1003(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1003_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1004(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1004_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1005(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1005_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1006(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1006_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1007(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1007_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1008(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1008_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1009(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1009_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1010(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1010_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1011(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1011_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1012(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1012_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1013(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1013_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1014(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1014_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1015(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1015_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1016(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1016_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1017(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1017_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1018(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1018_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1019(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1019_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1020(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1020_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1021(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1021_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1022(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1022_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1023(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1023_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1024(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1024_D(o, s, l) +# +# define BOOST_PP_LIST_FOLD_LEFT_513_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_514, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(514, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_514_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_515, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(515, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_515_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_516, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(516, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_516_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_517, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(517, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_517_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_518, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(518, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_518_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_519, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(519, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_519_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_520, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(520, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_520_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_521, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(521, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_521_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_522, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(522, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_522_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_523, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(523, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_523_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_524, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(524, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_524_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_525, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(525, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_525_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_526, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(526, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_526_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_527, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(527, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_527_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_528, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(528, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_528_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_529, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(529, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_529_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_530, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(530, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_530_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_531, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(531, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_531_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_532, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(532, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_532_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_533, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(533, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_533_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_534, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(534, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_534_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_535, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(535, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_535_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_536, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(536, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_536_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_537, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(537, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_537_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_538, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(538, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_538_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_539, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(539, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_539_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_540, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(540, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_540_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_541, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(541, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_541_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_542, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(542, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_542_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_543, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(543, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_543_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_544, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(544, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_544_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_545, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(545, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_545_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_546, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(546, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_546_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_547, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(547, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_547_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_548, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(548, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_548_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_549, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(549, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_549_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_550, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(550, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_550_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_551, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(551, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_551_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_552, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(552, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_552_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_553, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(553, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_553_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_554, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(554, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_554_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_555, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(555, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_555_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_556, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(556, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_556_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_557, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(557, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_557_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_558, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(558, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_558_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_559, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(559, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_559_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_560, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(560, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_560_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_561, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(561, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_561_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_562, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(562, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_562_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_563, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(563, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_563_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_564, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(564, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_564_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_565, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(565, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_565_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_566, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(566, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_566_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_567, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(567, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_567_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_568, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(568, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_568_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_569, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(569, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_569_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_570, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(570, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_570_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_571, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(571, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_571_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_572, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(572, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_572_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_573, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(573, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_573_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_574, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(574, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_574_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_575, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(575, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_575_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_576, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(576, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_576_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_577, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(577, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_577_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_578, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(578, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_578_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_579, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(579, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_579_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_580, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(580, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_580_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_581, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(581, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_581_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_582, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(582, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_582_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_583, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(583, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_583_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_584, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(584, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_584_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_585, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(585, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_585_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_586, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(586, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_586_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_587, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(587, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_587_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_588, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(588, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_588_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_589, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(589, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_589_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_590, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(590, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_590_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_591, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(591, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_591_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_592, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(592, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_592_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_593, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(593, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_593_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_594, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(594, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_594_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_595, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(595, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_595_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_596, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(596, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_596_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_597, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(597, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_597_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_598, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(598, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_598_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_599, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(599, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_599_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_600, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(600, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_600_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_601, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(601, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_601_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_602, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(602, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_602_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_603, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(603, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_603_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_604, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(604, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_604_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_605, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(605, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_605_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_606, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(606, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_606_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_607, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(607, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_607_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_608, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(608, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_608_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_609, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(609, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_609_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_610, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(610, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_610_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_611, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(611, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_611_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_612, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(612, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_612_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_613, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(613, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_613_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_614, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(614, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_614_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_615, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(615, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_615_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_616, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(616, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_616_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_617, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(617, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_617_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_618, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(618, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_618_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_619, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(619, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_619_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_620, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(620, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_620_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_621, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(621, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_621_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_622, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(622, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_622_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_623, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(623, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_623_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_624, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(624, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_624_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_625, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(625, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_625_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_626, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(626, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_626_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_627, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(627, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_627_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_628, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(628, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_628_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_629, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(629, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_629_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_630, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(630, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_630_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_631, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(631, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_631_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_632, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(632, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_632_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_633, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(633, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_633_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_634, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(634, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_634_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_635, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(635, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_635_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_636, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(636, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_636_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_637, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(637, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_637_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_638, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(638, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_638_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_639, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(639, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_639_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_640, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(640, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_640_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_641, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(641, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_641_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_642, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(642, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_642_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_643, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(643, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_643_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_644, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(644, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_644_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_645, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(645, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_645_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_646, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(646, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_646_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_647, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(647, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_647_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_648, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(648, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_648_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_649, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(649, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_649_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_650, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(650, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_650_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_651, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(651, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_651_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_652, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(652, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_652_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_653, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(653, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_653_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_654, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(654, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_654_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_655, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(655, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_655_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_656, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(656, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_656_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_657, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(657, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_657_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_658, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(658, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_658_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_659, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(659, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_659_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_660, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(660, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_660_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_661, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(661, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_661_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_662, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(662, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_662_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_663, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(663, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_663_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_664, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(664, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_664_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_665, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(665, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_665_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_666, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(666, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_666_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_667, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(667, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_667_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_668, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(668, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_668_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_669, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(669, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_669_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_670, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(670, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_670_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_671, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(671, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_671_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_672, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(672, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_672_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_673, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(673, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_673_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_674, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(674, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_674_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_675, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(675, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_675_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_676, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(676, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_676_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_677, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(677, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_677_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_678, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(678, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_678_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_679, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(679, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_679_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_680, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(680, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_680_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_681, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(681, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_681_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_682, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(682, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_682_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_683, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(683, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_683_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_684, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(684, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_684_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_685, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(685, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_685_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_686, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(686, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_686_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_687, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(687, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_687_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_688, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(688, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_688_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_689, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(689, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_689_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_690, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(690, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_690_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_691, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(691, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_691_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_692, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(692, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_692_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_693, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(693, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_693_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_694, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(694, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_694_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_695, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(695, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_695_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_696, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(696, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_696_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_697, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(697, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_697_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_698, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(698, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_698_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_699, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(699, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_699_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_700, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(700, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_700_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_701, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(701, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_701_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_702, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(702, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_702_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_703, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(703, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_703_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_704, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(704, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_704_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_705, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(705, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_705_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_706, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(706, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_706_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_707, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(707, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_707_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_708, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(708, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_708_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_709, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(709, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_709_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_710, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(710, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_710_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_711, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(711, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_711_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_712, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(712, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_712_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_713, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(713, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_713_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_714, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(714, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_714_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_715, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(715, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_715_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_716, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(716, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_716_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_717, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(717, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_717_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_718, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(718, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_718_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_719, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(719, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_719_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_720, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(720, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_720_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_721, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(721, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_721_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_722, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(722, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_722_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_723, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(723, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_723_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_724, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(724, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_724_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_725, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(725, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_725_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_726, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(726, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_726_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_727, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(727, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_727_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_728, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(728, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_728_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_729, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(729, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_729_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_730, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(730, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_730_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_731, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(731, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_731_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_732, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(732, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_732_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_733, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(733, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_733_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_734, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(734, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_734_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_735, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(735, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_735_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_736, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(736, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_736_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_737, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(737, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_737_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_738, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(738, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_738_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_739, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(739, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_739_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_740, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(740, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_740_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_741, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(741, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_741_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_742, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(742, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_742_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_743, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(743, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_743_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_744, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(744, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_744_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_745, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(745, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_745_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_746, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(746, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_746_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_747, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(747, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_747_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_748, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(748, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_748_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_749, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(749, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_749_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_750, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(750, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_750_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_751, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(751, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_751_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_752, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(752, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_752_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_753, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(753, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_753_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_754, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(754, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_754_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_755, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(755, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_755_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_756, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(756, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_756_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_757, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(757, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_757_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_758, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(758, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_758_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_759, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(759, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_759_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_760, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(760, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_760_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_761, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(761, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_761_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_762, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(762, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_762_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_763, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(763, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_763_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_764, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(764, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_764_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_765, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(765, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_765_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_766, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(766, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_766_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_767, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(767, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_767_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_768, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(768, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_768_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_769, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(769, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_769_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_770, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(770, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_770_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_771, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(771, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_771_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_772, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(772, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_772_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_773, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(773, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_773_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_774, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(774, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_774_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_775, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(775, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_775_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_776, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(776, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_776_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_777, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(777, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_777_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_778, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(778, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_778_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_779, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(779, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_779_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_780, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(780, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_780_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_781, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(781, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_781_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_782, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(782, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_782_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_783, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(783, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_783_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_784, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(784, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_784_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_785, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(785, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_785_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_786, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(786, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_786_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_787, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(787, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_787_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_788, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(788, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_788_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_789, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(789, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_789_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_790, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(790, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_790_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_791, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(791, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_791_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_792, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(792, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_792_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_793, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(793, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_793_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_794, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(794, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_794_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_795, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(795, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_795_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_796, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(796, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_796_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_797, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(797, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_797_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_798, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(798, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_798_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_799, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(799, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_799_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_800, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(800, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_800_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_801, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(801, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_801_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_802, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(802, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_802_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_803, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(803, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_803_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_804, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(804, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_804_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_805, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(805, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_805_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_806, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(806, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_806_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_807, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(807, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_807_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_808, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(808, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_808_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_809, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(809, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_809_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_810, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(810, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_810_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_811, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(811, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_811_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_812, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(812, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_812_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_813, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(813, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_813_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_814, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(814, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_814_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_815, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(815, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_815_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_816, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(816, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_816_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_817, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(817, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_817_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_818, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(818, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_818_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_819, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(819, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_819_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_820, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(820, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_820_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_821, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(821, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_821_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_822, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(822, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_822_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_823, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(823, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_823_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_824, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(824, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_824_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_825, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(825, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_825_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_826, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(826, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_826_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_827, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(827, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_827_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_828, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(828, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_828_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_829, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(829, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_829_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_830, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(830, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_830_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_831, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(831, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_831_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_832, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(832, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_832_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_833, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(833, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_833_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_834, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(834, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_834_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_835, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(835, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_835_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_836, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(836, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_836_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_837, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(837, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_837_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_838, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(838, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_838_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_839, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(839, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_839_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_840, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(840, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_840_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_841, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(841, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_841_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_842, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(842, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_842_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_843, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(843, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_843_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_844, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(844, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_844_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_845, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(845, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_845_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_846, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(846, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_846_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_847, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(847, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_847_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_848, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(848, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_848_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_849, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(849, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_849_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_850, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(850, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_850_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_851, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(851, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_851_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_852, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(852, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_852_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_853, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(853, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_853_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_854, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(854, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_854_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_855, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(855, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_855_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_856, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(856, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_856_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_857, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(857, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_857_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_858, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(858, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_858_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_859, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(859, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_859_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_860, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(860, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_860_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_861, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(861, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_861_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_862, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(862, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_862_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_863, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(863, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_863_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_864, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(864, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_864_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_865, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(865, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_865_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_866, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(866, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_866_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_867, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(867, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_867_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_868, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(868, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_868_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_869, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(869, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_869_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_870, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(870, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_870_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_871, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(871, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_871_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_872, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(872, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_872_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_873, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(873, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_873_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_874, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(874, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_874_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_875, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(875, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_875_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_876, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(876, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_876_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_877, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(877, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_877_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_878, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(878, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_878_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_879, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(879, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_879_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_880, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(880, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_880_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_881, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(881, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_881_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_882, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(882, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_882_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_883, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(883, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_883_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_884, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(884, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_884_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_885, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(885, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_885_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_886, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(886, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_886_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_887, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(887, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_887_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_888, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(888, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_888_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_889, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(889, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_889_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_890, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(890, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_890_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_891, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(891, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_891_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_892, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(892, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_892_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_893, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(893, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_893_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_894, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(894, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_894_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_895, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(895, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_895_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_896, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(896, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_896_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_897, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(897, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_897_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_898, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(898, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_898_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_899, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(899, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_899_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_900, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(900, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_900_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_901, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(901, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_901_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_902, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(902, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_902_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_903, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(903, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_903_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_904, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(904, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_904_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_905, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(905, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_905_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_906, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(906, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_906_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_907, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(907, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_907_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_908, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(908, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_908_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_909, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(909, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_909_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_910, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(910, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_910_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_911, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(911, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_911_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_912, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(912, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_912_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_913, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(913, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_913_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_914, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(914, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_914_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_915, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(915, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_915_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_916, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(916, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_916_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_917, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(917, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_917_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_918, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(918, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_918_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_919, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(919, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_919_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_920, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(920, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_920_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_921, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(921, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_921_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_922, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(922, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_922_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_923, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(923, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_923_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_924, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(924, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_924_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_925, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(925, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_925_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_926, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(926, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_926_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_927, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(927, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_927_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_928, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(928, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_928_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_929, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(929, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_929_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_930, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(930, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_930_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_931, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(931, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_931_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_932, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(932, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_932_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_933, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(933, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_933_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_934, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(934, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_934_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_935, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(935, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_935_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_936, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(936, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_936_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_937, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(937, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_937_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_938, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(938, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_938_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_939, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(939, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_939_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_940, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(940, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_940_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_941, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(941, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_941_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_942, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(942, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_942_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_943, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(943, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_943_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_944, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(944, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_944_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_945, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(945, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_945_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_946, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(946, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_946_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_947, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(947, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_947_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_948, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(948, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_948_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_949, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(949, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_949_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_950, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(950, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_950_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_951, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(951, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_951_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_952, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(952, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_952_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_953, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(953, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_953_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_954, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(954, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_954_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_955, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(955, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_955_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_956, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(956, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_956_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_957, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(957, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_957_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_958, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(958, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_958_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_959, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(959, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_959_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_960, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(960, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_960_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_961, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(961, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_961_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_962, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(962, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_962_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_963, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(963, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_963_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_964, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(964, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_964_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_965, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(965, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_965_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_966, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(966, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_966_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_967, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(967, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_967_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_968, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(968, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_968_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_969, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(969, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_969_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_970, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(970, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_970_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_971, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(971, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_971_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_972, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(972, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_972_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_973, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(973, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_973_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_974, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(974, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_974_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_975, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(975, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_975_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_976, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(976, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_976_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_977, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(977, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_977_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_978, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(978, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_978_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_979, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(979, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_979_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_980, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(980, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_980_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_981, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(981, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_981_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_982, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(982, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_982_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_983, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(983, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_983_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_984, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(984, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_984_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_985, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(985, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_985_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_986, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(986, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_986_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_987, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(987, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_987_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_988, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(988, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_988_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_989, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(989, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_989_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_990, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(990, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_990_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_991, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(991, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_991_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_992, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(992, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_992_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_993, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(993, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_993_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_994, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(994, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_994_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_995, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(995, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_995_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_996, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(996, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_996_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_997, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(997, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_997_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_998, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(998, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_998_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_999, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(999, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_999_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1000, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1000, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1000_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1001, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1001, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1001_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1002, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1002, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1002_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1003, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1003, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1003_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1004, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1004, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1004_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1005, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1005, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1005_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1006, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1006, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1006_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1007, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1007, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1007_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1008, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1008, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1008_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1009, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1009, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1009_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1010, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1010, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1010_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1011, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1011, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1011_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1012, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1012, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1012_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1013, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1013, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1013_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1014, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1014, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1014_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1015, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1015, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1015_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1016, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1016, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1016_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1017, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1017, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1017_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1018, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1018, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1018_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1019, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1019, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1019_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1020, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1020, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1020_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1021, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1021, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1021_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1022, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1022, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1022_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1023, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1023, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1023_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1024, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1024, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1024_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1025, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1025, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/edg/limits/fold_left_256.hpp b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_left_256.hpp new file mode 100644 index 000000000..5dc7cb16b --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_left_256.hpp @@ -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_LIST_DETAIL_EDG_FOLD_LEFT_256_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_256_HPP +# +# define BOOST_PP_LIST_FOLD_LEFT_0(o, s, l) BOOST_PP_LIST_FOLD_LEFT_0_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_LIST_FOLD_LEFT_2_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_LIST_FOLD_LEFT_3_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_LIST_FOLD_LEFT_4_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_LIST_FOLD_LEFT_5_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_LIST_FOLD_LEFT_6_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_LIST_FOLD_LEFT_7_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_LIST_FOLD_LEFT_8_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_LIST_FOLD_LEFT_9_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_LIST_FOLD_LEFT_10_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_LIST_FOLD_LEFT_11_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_LIST_FOLD_LEFT_12_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_LIST_FOLD_LEFT_13_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_LIST_FOLD_LEFT_14_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_LIST_FOLD_LEFT_15_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_LIST_FOLD_LEFT_16_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_LIST_FOLD_LEFT_17_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_LIST_FOLD_LEFT_18_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_LIST_FOLD_LEFT_19_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_LIST_FOLD_LEFT_20_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_LIST_FOLD_LEFT_21_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_LIST_FOLD_LEFT_22_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_LIST_FOLD_LEFT_23_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_LIST_FOLD_LEFT_24_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_LIST_FOLD_LEFT_25_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_LIST_FOLD_LEFT_26_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_LIST_FOLD_LEFT_27_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_LIST_FOLD_LEFT_28_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_LIST_FOLD_LEFT_29_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_LIST_FOLD_LEFT_30_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_LIST_FOLD_LEFT_31_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_LIST_FOLD_LEFT_32_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_LIST_FOLD_LEFT_33_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_LIST_FOLD_LEFT_34_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_LIST_FOLD_LEFT_35_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_LIST_FOLD_LEFT_36_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_LIST_FOLD_LEFT_37_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_LIST_FOLD_LEFT_38_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_LIST_FOLD_LEFT_39_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_LIST_FOLD_LEFT_40_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_LIST_FOLD_LEFT_41_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_LIST_FOLD_LEFT_42_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_LIST_FOLD_LEFT_43_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_LIST_FOLD_LEFT_44_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_LIST_FOLD_LEFT_45_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_LIST_FOLD_LEFT_46_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_LIST_FOLD_LEFT_47_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_LIST_FOLD_LEFT_48_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_LIST_FOLD_LEFT_49_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_LIST_FOLD_LEFT_50_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_LIST_FOLD_LEFT_51_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_LIST_FOLD_LEFT_52_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_LIST_FOLD_LEFT_53_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_LIST_FOLD_LEFT_54_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_LIST_FOLD_LEFT_55_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_LIST_FOLD_LEFT_56_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_LIST_FOLD_LEFT_57_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_LIST_FOLD_LEFT_58_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_LIST_FOLD_LEFT_59_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_LIST_FOLD_LEFT_60_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_LIST_FOLD_LEFT_61_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_LIST_FOLD_LEFT_62_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_LIST_FOLD_LEFT_63_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_LIST_FOLD_LEFT_64_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_LIST_FOLD_LEFT_65_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_LIST_FOLD_LEFT_66_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_LIST_FOLD_LEFT_67_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_LIST_FOLD_LEFT_68_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_LIST_FOLD_LEFT_69_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_LIST_FOLD_LEFT_70_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_LIST_FOLD_LEFT_71_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_LIST_FOLD_LEFT_72_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_LIST_FOLD_LEFT_73_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_LIST_FOLD_LEFT_74_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_LIST_FOLD_LEFT_75_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_LIST_FOLD_LEFT_76_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_LIST_FOLD_LEFT_77_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_LIST_FOLD_LEFT_78_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_LIST_FOLD_LEFT_79_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_LIST_FOLD_LEFT_80_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_LIST_FOLD_LEFT_81_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_LIST_FOLD_LEFT_82_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_LIST_FOLD_LEFT_83_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_LIST_FOLD_LEFT_84_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_LIST_FOLD_LEFT_85_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_LIST_FOLD_LEFT_86_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_LIST_FOLD_LEFT_87_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_LIST_FOLD_LEFT_88_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_LIST_FOLD_LEFT_89_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_LIST_FOLD_LEFT_90_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_LIST_FOLD_LEFT_91_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_LIST_FOLD_LEFT_92_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_LIST_FOLD_LEFT_93_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_LIST_FOLD_LEFT_94_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_LIST_FOLD_LEFT_95_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_LIST_FOLD_LEFT_96_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_LIST_FOLD_LEFT_97_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_LIST_FOLD_LEFT_98_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_LIST_FOLD_LEFT_99_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_LIST_FOLD_LEFT_100_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_LIST_FOLD_LEFT_101_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_LIST_FOLD_LEFT_102_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_LIST_FOLD_LEFT_103_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_LIST_FOLD_LEFT_104_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_LIST_FOLD_LEFT_105_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_LIST_FOLD_LEFT_106_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_LIST_FOLD_LEFT_107_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_LIST_FOLD_LEFT_108_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_LIST_FOLD_LEFT_109_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_LIST_FOLD_LEFT_110_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_LIST_FOLD_LEFT_111_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_LIST_FOLD_LEFT_112_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_LIST_FOLD_LEFT_113_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_LIST_FOLD_LEFT_114_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_LIST_FOLD_LEFT_115_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_LIST_FOLD_LEFT_116_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_LIST_FOLD_LEFT_117_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_LIST_FOLD_LEFT_118_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_LIST_FOLD_LEFT_119_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_LIST_FOLD_LEFT_120_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_LIST_FOLD_LEFT_121_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_LIST_FOLD_LEFT_122_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_LIST_FOLD_LEFT_123_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_LIST_FOLD_LEFT_124_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_LIST_FOLD_LEFT_125_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_LIST_FOLD_LEFT_126_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_LIST_FOLD_LEFT_127_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_LIST_FOLD_LEFT_128_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_LIST_FOLD_LEFT_129_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_LIST_FOLD_LEFT_130_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_LIST_FOLD_LEFT_131_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_LIST_FOLD_LEFT_132_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_LIST_FOLD_LEFT_133_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_LIST_FOLD_LEFT_134_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_LIST_FOLD_LEFT_135_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_LIST_FOLD_LEFT_136_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_LIST_FOLD_LEFT_137_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_LIST_FOLD_LEFT_138_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_LIST_FOLD_LEFT_139_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_LIST_FOLD_LEFT_140_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_LIST_FOLD_LEFT_141_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_LIST_FOLD_LEFT_142_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_LIST_FOLD_LEFT_143_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_LIST_FOLD_LEFT_144_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_LIST_FOLD_LEFT_145_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_LIST_FOLD_LEFT_146_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_LIST_FOLD_LEFT_147_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_LIST_FOLD_LEFT_148_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_LIST_FOLD_LEFT_149_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_LIST_FOLD_LEFT_150_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_LIST_FOLD_LEFT_151_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_LIST_FOLD_LEFT_152_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_LIST_FOLD_LEFT_153_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_LIST_FOLD_LEFT_154_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_LIST_FOLD_LEFT_155_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_LIST_FOLD_LEFT_156_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_LIST_FOLD_LEFT_157_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_LIST_FOLD_LEFT_158_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_LIST_FOLD_LEFT_159_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_LIST_FOLD_LEFT_160_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_LIST_FOLD_LEFT_161_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_LIST_FOLD_LEFT_162_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_LIST_FOLD_LEFT_163_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_LIST_FOLD_LEFT_164_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_LIST_FOLD_LEFT_165_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_LIST_FOLD_LEFT_166_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_LIST_FOLD_LEFT_167_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_LIST_FOLD_LEFT_168_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_LIST_FOLD_LEFT_169_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_LIST_FOLD_LEFT_170_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_LIST_FOLD_LEFT_171_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_LIST_FOLD_LEFT_172_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_LIST_FOLD_LEFT_173_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_LIST_FOLD_LEFT_174_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_LIST_FOLD_LEFT_175_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_LIST_FOLD_LEFT_176_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_LIST_FOLD_LEFT_177_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_LIST_FOLD_LEFT_178_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_LIST_FOLD_LEFT_179_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_LIST_FOLD_LEFT_180_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_LIST_FOLD_LEFT_181_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_LIST_FOLD_LEFT_182_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_LIST_FOLD_LEFT_183_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_LIST_FOLD_LEFT_184_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_LIST_FOLD_LEFT_185_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_LIST_FOLD_LEFT_186_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_LIST_FOLD_LEFT_187_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_LIST_FOLD_LEFT_188_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_LIST_FOLD_LEFT_189_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_LIST_FOLD_LEFT_190_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_LIST_FOLD_LEFT_191_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_LIST_FOLD_LEFT_192_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_LIST_FOLD_LEFT_193_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_LIST_FOLD_LEFT_194_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_LIST_FOLD_LEFT_195_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_LIST_FOLD_LEFT_196_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_LIST_FOLD_LEFT_197_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_LIST_FOLD_LEFT_198_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_LIST_FOLD_LEFT_199_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_LIST_FOLD_LEFT_200_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_LIST_FOLD_LEFT_201_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_LIST_FOLD_LEFT_202_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_LIST_FOLD_LEFT_203_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_LIST_FOLD_LEFT_204_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_LIST_FOLD_LEFT_205_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_LIST_FOLD_LEFT_206_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_LIST_FOLD_LEFT_207_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_LIST_FOLD_LEFT_208_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_LIST_FOLD_LEFT_209_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_LIST_FOLD_LEFT_210_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_LIST_FOLD_LEFT_211_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_LIST_FOLD_LEFT_212_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_LIST_FOLD_LEFT_213_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_LIST_FOLD_LEFT_214_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_LIST_FOLD_LEFT_215_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_LIST_FOLD_LEFT_216_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_LIST_FOLD_LEFT_217_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_LIST_FOLD_LEFT_218_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_LIST_FOLD_LEFT_219_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_LIST_FOLD_LEFT_220_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_LIST_FOLD_LEFT_221_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_LIST_FOLD_LEFT_222_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_LIST_FOLD_LEFT_223_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_LIST_FOLD_LEFT_224_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_LIST_FOLD_LEFT_225_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_LIST_FOLD_LEFT_226_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_LIST_FOLD_LEFT_227_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_LIST_FOLD_LEFT_228_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_LIST_FOLD_LEFT_229_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_LIST_FOLD_LEFT_230_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_LIST_FOLD_LEFT_231_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_LIST_FOLD_LEFT_232_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_LIST_FOLD_LEFT_233_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_LIST_FOLD_LEFT_234_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_LIST_FOLD_LEFT_235_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_LIST_FOLD_LEFT_236_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_LIST_FOLD_LEFT_237_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_LIST_FOLD_LEFT_238_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_LIST_FOLD_LEFT_239_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_LIST_FOLD_LEFT_240_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_LIST_FOLD_LEFT_241_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_LIST_FOLD_LEFT_242_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_LIST_FOLD_LEFT_243_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_LIST_FOLD_LEFT_244_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_LIST_FOLD_LEFT_245_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_LIST_FOLD_LEFT_246_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_LIST_FOLD_LEFT_247_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_LIST_FOLD_LEFT_248_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_LIST_FOLD_LEFT_249_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_LIST_FOLD_LEFT_250_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_LIST_FOLD_LEFT_251_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_LIST_FOLD_LEFT_252_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_LIST_FOLD_LEFT_253_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_LIST_FOLD_LEFT_254_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_LIST_FOLD_LEFT_255_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_LIST_FOLD_LEFT_256_D(o, s, l) +# +# define BOOST_PP_LIST_FOLD_LEFT_0_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_2_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_3_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_4_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_5_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_6_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_7_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_8_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_9_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_10_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_11_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_12_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_13_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_14_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_15_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_16_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_17_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_18_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_19_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_20_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_21_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_22_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_23_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_24_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_25_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_26_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_27_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_28_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_29_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_30_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_31_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_32_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_33_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_34_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_35_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_36_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_37_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_38_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_39_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_40_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_41_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_42_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_43_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_44_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_45_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_46_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_47_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_48_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_49_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_50_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_51_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_52_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_53_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_54_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_55_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_56_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_57_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_58_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_59_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_60_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_61_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_62_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_63_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_64_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_65_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_66_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_67_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_68_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_69_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_70_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_71_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_72_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_73_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_74_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_75_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_76_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_77_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_78_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_79_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_80_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_81_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_82_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_83_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_84_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_85_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_86_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_87_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_88_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_89_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_90_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_91_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_92_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_93_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_94_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_95_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_96_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_97_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_98_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_99_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_100_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_101_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_102_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_103_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_104_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_105_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_106_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_107_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_108_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_109_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_110_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_111_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_112_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_113_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_114_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_115_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_116_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_117_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_118_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_119_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_120_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_121_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_122_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_123_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_124_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_125_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_126_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_127_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_128_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_129_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_130_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_131_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_132_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_133_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_134_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_135_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_136_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_137_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_138_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_139_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_140_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_141_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_142_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_143_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_144_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_145_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_146_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_147_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_148_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_149_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_150_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_151_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_152_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_153_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_154_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_155_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_156_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_157_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_158_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_159_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_160_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_161_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_162_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_163_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_164_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_165_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_166_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_167_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_168_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_169_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_170_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_171_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_172_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_173_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_174_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_175_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_176_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_177_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_178_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_179_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_180_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_181_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_182_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_183_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_184_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_185_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_186_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_187_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_188_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_189_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_190_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_191_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_192_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_193_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_194_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_195_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_196_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_197_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_198_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_199_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_200_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_201_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_202_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_203_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_204_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_205_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_206_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_207_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_208_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_209_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_210_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_211_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_212_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_213_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_214_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_215_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_216_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_217_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_218_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_219_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_220_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_221_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_222_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_223_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_224_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_225_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_226_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_227_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_228_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_229_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_230_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_231_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_232_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_233_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_234_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_235_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_236_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_237_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_238_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_239_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_240_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_241_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_242_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_243_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_244_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_245_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_246_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_247_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_248_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_249_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_250_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_251_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_252_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_253_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_254_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_255_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_256_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/edg/limits/fold_left_512.hpp b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_left_512.hpp new file mode 100644 index 000000000..62465f379 --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_left_512.hpp @@ -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_LIST_DETAIL_EDG_FOLD_LEFT_512_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_512_HPP +# +# define BOOST_PP_LIST_FOLD_LEFT_257(o, s, l) BOOST_PP_LIST_FOLD_LEFT_257_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_258(o, s, l) BOOST_PP_LIST_FOLD_LEFT_258_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_259(o, s, l) BOOST_PP_LIST_FOLD_LEFT_259_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_260(o, s, l) BOOST_PP_LIST_FOLD_LEFT_260_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_261(o, s, l) BOOST_PP_LIST_FOLD_LEFT_261_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_262(o, s, l) BOOST_PP_LIST_FOLD_LEFT_262_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_263(o, s, l) BOOST_PP_LIST_FOLD_LEFT_263_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_264(o, s, l) BOOST_PP_LIST_FOLD_LEFT_264_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_265(o, s, l) BOOST_PP_LIST_FOLD_LEFT_265_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_266(o, s, l) BOOST_PP_LIST_FOLD_LEFT_266_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_267(o, s, l) BOOST_PP_LIST_FOLD_LEFT_267_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_268(o, s, l) BOOST_PP_LIST_FOLD_LEFT_268_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_269(o, s, l) BOOST_PP_LIST_FOLD_LEFT_269_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_270(o, s, l) BOOST_PP_LIST_FOLD_LEFT_270_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_271(o, s, l) BOOST_PP_LIST_FOLD_LEFT_271_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_272(o, s, l) BOOST_PP_LIST_FOLD_LEFT_272_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_273(o, s, l) BOOST_PP_LIST_FOLD_LEFT_273_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_274(o, s, l) BOOST_PP_LIST_FOLD_LEFT_274_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_275(o, s, l) BOOST_PP_LIST_FOLD_LEFT_275_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_276(o, s, l) BOOST_PP_LIST_FOLD_LEFT_276_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_277(o, s, l) BOOST_PP_LIST_FOLD_LEFT_277_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_278(o, s, l) BOOST_PP_LIST_FOLD_LEFT_278_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_279(o, s, l) BOOST_PP_LIST_FOLD_LEFT_279_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_280(o, s, l) BOOST_PP_LIST_FOLD_LEFT_280_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_281(o, s, l) BOOST_PP_LIST_FOLD_LEFT_281_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_282(o, s, l) BOOST_PP_LIST_FOLD_LEFT_282_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_283(o, s, l) BOOST_PP_LIST_FOLD_LEFT_283_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_284(o, s, l) BOOST_PP_LIST_FOLD_LEFT_284_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_285(o, s, l) BOOST_PP_LIST_FOLD_LEFT_285_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_286(o, s, l) BOOST_PP_LIST_FOLD_LEFT_286_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_287(o, s, l) BOOST_PP_LIST_FOLD_LEFT_287_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_288(o, s, l) BOOST_PP_LIST_FOLD_LEFT_288_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_289(o, s, l) BOOST_PP_LIST_FOLD_LEFT_289_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_290(o, s, l) BOOST_PP_LIST_FOLD_LEFT_290_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_291(o, s, l) BOOST_PP_LIST_FOLD_LEFT_291_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_292(o, s, l) BOOST_PP_LIST_FOLD_LEFT_292_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_293(o, s, l) BOOST_PP_LIST_FOLD_LEFT_293_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_294(o, s, l) BOOST_PP_LIST_FOLD_LEFT_294_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_295(o, s, l) BOOST_PP_LIST_FOLD_LEFT_295_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_296(o, s, l) BOOST_PP_LIST_FOLD_LEFT_296_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_297(o, s, l) BOOST_PP_LIST_FOLD_LEFT_297_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_298(o, s, l) BOOST_PP_LIST_FOLD_LEFT_298_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_299(o, s, l) BOOST_PP_LIST_FOLD_LEFT_299_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_300(o, s, l) BOOST_PP_LIST_FOLD_LEFT_300_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_301(o, s, l) BOOST_PP_LIST_FOLD_LEFT_301_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_302(o, s, l) BOOST_PP_LIST_FOLD_LEFT_302_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_303(o, s, l) BOOST_PP_LIST_FOLD_LEFT_303_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_304(o, s, l) BOOST_PP_LIST_FOLD_LEFT_304_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_305(o, s, l) BOOST_PP_LIST_FOLD_LEFT_305_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_306(o, s, l) BOOST_PP_LIST_FOLD_LEFT_306_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_307(o, s, l) BOOST_PP_LIST_FOLD_LEFT_307_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_308(o, s, l) BOOST_PP_LIST_FOLD_LEFT_308_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_309(o, s, l) BOOST_PP_LIST_FOLD_LEFT_309_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_310(o, s, l) BOOST_PP_LIST_FOLD_LEFT_310_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_311(o, s, l) BOOST_PP_LIST_FOLD_LEFT_311_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_312(o, s, l) BOOST_PP_LIST_FOLD_LEFT_312_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_313(o, s, l) BOOST_PP_LIST_FOLD_LEFT_313_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_314(o, s, l) BOOST_PP_LIST_FOLD_LEFT_314_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_315(o, s, l) BOOST_PP_LIST_FOLD_LEFT_315_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_316(o, s, l) BOOST_PP_LIST_FOLD_LEFT_316_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_317(o, s, l) BOOST_PP_LIST_FOLD_LEFT_317_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_318(o, s, l) BOOST_PP_LIST_FOLD_LEFT_318_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_319(o, s, l) BOOST_PP_LIST_FOLD_LEFT_319_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_320(o, s, l) BOOST_PP_LIST_FOLD_LEFT_320_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_321(o, s, l) BOOST_PP_LIST_FOLD_LEFT_321_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_322(o, s, l) BOOST_PP_LIST_FOLD_LEFT_322_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_323(o, s, l) BOOST_PP_LIST_FOLD_LEFT_323_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_324(o, s, l) BOOST_PP_LIST_FOLD_LEFT_324_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_325(o, s, l) BOOST_PP_LIST_FOLD_LEFT_325_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_326(o, s, l) BOOST_PP_LIST_FOLD_LEFT_326_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_327(o, s, l) BOOST_PP_LIST_FOLD_LEFT_327_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_328(o, s, l) BOOST_PP_LIST_FOLD_LEFT_328_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_329(o, s, l) BOOST_PP_LIST_FOLD_LEFT_329_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_330(o, s, l) BOOST_PP_LIST_FOLD_LEFT_330_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_331(o, s, l) BOOST_PP_LIST_FOLD_LEFT_331_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_332(o, s, l) BOOST_PP_LIST_FOLD_LEFT_332_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_333(o, s, l) BOOST_PP_LIST_FOLD_LEFT_333_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_334(o, s, l) BOOST_PP_LIST_FOLD_LEFT_334_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_335(o, s, l) BOOST_PP_LIST_FOLD_LEFT_335_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_336(o, s, l) BOOST_PP_LIST_FOLD_LEFT_336_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_337(o, s, l) BOOST_PP_LIST_FOLD_LEFT_337_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_338(o, s, l) BOOST_PP_LIST_FOLD_LEFT_338_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_339(o, s, l) BOOST_PP_LIST_FOLD_LEFT_339_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_340(o, s, l) BOOST_PP_LIST_FOLD_LEFT_340_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_341(o, s, l) BOOST_PP_LIST_FOLD_LEFT_341_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_342(o, s, l) BOOST_PP_LIST_FOLD_LEFT_342_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_343(o, s, l) BOOST_PP_LIST_FOLD_LEFT_343_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_344(o, s, l) BOOST_PP_LIST_FOLD_LEFT_344_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_345(o, s, l) BOOST_PP_LIST_FOLD_LEFT_345_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_346(o, s, l) BOOST_PP_LIST_FOLD_LEFT_346_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_347(o, s, l) BOOST_PP_LIST_FOLD_LEFT_347_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_348(o, s, l) BOOST_PP_LIST_FOLD_LEFT_348_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_349(o, s, l) BOOST_PP_LIST_FOLD_LEFT_349_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_350(o, s, l) BOOST_PP_LIST_FOLD_LEFT_350_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_351(o, s, l) BOOST_PP_LIST_FOLD_LEFT_351_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_352(o, s, l) BOOST_PP_LIST_FOLD_LEFT_352_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_353(o, s, l) BOOST_PP_LIST_FOLD_LEFT_353_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_354(o, s, l) BOOST_PP_LIST_FOLD_LEFT_354_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_355(o, s, l) BOOST_PP_LIST_FOLD_LEFT_355_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_356(o, s, l) BOOST_PP_LIST_FOLD_LEFT_356_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_357(o, s, l) BOOST_PP_LIST_FOLD_LEFT_357_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_358(o, s, l) BOOST_PP_LIST_FOLD_LEFT_358_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_359(o, s, l) BOOST_PP_LIST_FOLD_LEFT_359_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_360(o, s, l) BOOST_PP_LIST_FOLD_LEFT_360_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_361(o, s, l) BOOST_PP_LIST_FOLD_LEFT_361_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_362(o, s, l) BOOST_PP_LIST_FOLD_LEFT_362_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_363(o, s, l) BOOST_PP_LIST_FOLD_LEFT_363_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_364(o, s, l) BOOST_PP_LIST_FOLD_LEFT_364_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_365(o, s, l) BOOST_PP_LIST_FOLD_LEFT_365_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_366(o, s, l) BOOST_PP_LIST_FOLD_LEFT_366_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_367(o, s, l) BOOST_PP_LIST_FOLD_LEFT_367_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_368(o, s, l) BOOST_PP_LIST_FOLD_LEFT_368_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_369(o, s, l) BOOST_PP_LIST_FOLD_LEFT_369_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_370(o, s, l) BOOST_PP_LIST_FOLD_LEFT_370_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_371(o, s, l) BOOST_PP_LIST_FOLD_LEFT_371_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_372(o, s, l) BOOST_PP_LIST_FOLD_LEFT_372_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_373(o, s, l) BOOST_PP_LIST_FOLD_LEFT_373_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_374(o, s, l) BOOST_PP_LIST_FOLD_LEFT_374_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_375(o, s, l) BOOST_PP_LIST_FOLD_LEFT_375_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_376(o, s, l) BOOST_PP_LIST_FOLD_LEFT_376_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_377(o, s, l) BOOST_PP_LIST_FOLD_LEFT_377_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_378(o, s, l) BOOST_PP_LIST_FOLD_LEFT_378_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_379(o, s, l) BOOST_PP_LIST_FOLD_LEFT_379_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_380(o, s, l) BOOST_PP_LIST_FOLD_LEFT_380_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_381(o, s, l) BOOST_PP_LIST_FOLD_LEFT_381_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_382(o, s, l) BOOST_PP_LIST_FOLD_LEFT_382_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_383(o, s, l) BOOST_PP_LIST_FOLD_LEFT_383_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_384(o, s, l) BOOST_PP_LIST_FOLD_LEFT_384_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_385(o, s, l) BOOST_PP_LIST_FOLD_LEFT_385_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_386(o, s, l) BOOST_PP_LIST_FOLD_LEFT_386_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_387(o, s, l) BOOST_PP_LIST_FOLD_LEFT_387_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_388(o, s, l) BOOST_PP_LIST_FOLD_LEFT_388_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_389(o, s, l) BOOST_PP_LIST_FOLD_LEFT_389_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_390(o, s, l) BOOST_PP_LIST_FOLD_LEFT_390_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_391(o, s, l) BOOST_PP_LIST_FOLD_LEFT_391_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_392(o, s, l) BOOST_PP_LIST_FOLD_LEFT_392_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_393(o, s, l) BOOST_PP_LIST_FOLD_LEFT_393_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_394(o, s, l) BOOST_PP_LIST_FOLD_LEFT_394_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_395(o, s, l) BOOST_PP_LIST_FOLD_LEFT_395_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_396(o, s, l) BOOST_PP_LIST_FOLD_LEFT_396_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_397(o, s, l) BOOST_PP_LIST_FOLD_LEFT_397_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_398(o, s, l) BOOST_PP_LIST_FOLD_LEFT_398_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_399(o, s, l) BOOST_PP_LIST_FOLD_LEFT_399_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_400(o, s, l) BOOST_PP_LIST_FOLD_LEFT_400_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_401(o, s, l) BOOST_PP_LIST_FOLD_LEFT_401_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_402(o, s, l) BOOST_PP_LIST_FOLD_LEFT_402_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_403(o, s, l) BOOST_PP_LIST_FOLD_LEFT_403_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_404(o, s, l) BOOST_PP_LIST_FOLD_LEFT_404_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_405(o, s, l) BOOST_PP_LIST_FOLD_LEFT_405_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_406(o, s, l) BOOST_PP_LIST_FOLD_LEFT_406_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_407(o, s, l) BOOST_PP_LIST_FOLD_LEFT_407_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_408(o, s, l) BOOST_PP_LIST_FOLD_LEFT_408_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_409(o, s, l) BOOST_PP_LIST_FOLD_LEFT_409_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_410(o, s, l) BOOST_PP_LIST_FOLD_LEFT_410_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_411(o, s, l) BOOST_PP_LIST_FOLD_LEFT_411_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_412(o, s, l) BOOST_PP_LIST_FOLD_LEFT_412_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_413(o, s, l) BOOST_PP_LIST_FOLD_LEFT_413_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_414(o, s, l) BOOST_PP_LIST_FOLD_LEFT_414_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_415(o, s, l) BOOST_PP_LIST_FOLD_LEFT_415_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_416(o, s, l) BOOST_PP_LIST_FOLD_LEFT_416_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_417(o, s, l) BOOST_PP_LIST_FOLD_LEFT_417_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_418(o, s, l) BOOST_PP_LIST_FOLD_LEFT_418_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_419(o, s, l) BOOST_PP_LIST_FOLD_LEFT_419_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_420(o, s, l) BOOST_PP_LIST_FOLD_LEFT_420_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_421(o, s, l) BOOST_PP_LIST_FOLD_LEFT_421_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_422(o, s, l) BOOST_PP_LIST_FOLD_LEFT_422_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_423(o, s, l) BOOST_PP_LIST_FOLD_LEFT_423_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_424(o, s, l) BOOST_PP_LIST_FOLD_LEFT_424_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_425(o, s, l) BOOST_PP_LIST_FOLD_LEFT_425_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_426(o, s, l) BOOST_PP_LIST_FOLD_LEFT_426_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_427(o, s, l) BOOST_PP_LIST_FOLD_LEFT_427_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_428(o, s, l) BOOST_PP_LIST_FOLD_LEFT_428_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_429(o, s, l) BOOST_PP_LIST_FOLD_LEFT_429_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_430(o, s, l) BOOST_PP_LIST_FOLD_LEFT_430_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_431(o, s, l) BOOST_PP_LIST_FOLD_LEFT_431_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_432(o, s, l) BOOST_PP_LIST_FOLD_LEFT_432_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_433(o, s, l) BOOST_PP_LIST_FOLD_LEFT_433_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_434(o, s, l) BOOST_PP_LIST_FOLD_LEFT_434_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_435(o, s, l) BOOST_PP_LIST_FOLD_LEFT_435_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_436(o, s, l) BOOST_PP_LIST_FOLD_LEFT_436_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_437(o, s, l) BOOST_PP_LIST_FOLD_LEFT_437_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_438(o, s, l) BOOST_PP_LIST_FOLD_LEFT_438_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_439(o, s, l) BOOST_PP_LIST_FOLD_LEFT_439_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_440(o, s, l) BOOST_PP_LIST_FOLD_LEFT_440_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_441(o, s, l) BOOST_PP_LIST_FOLD_LEFT_441_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_442(o, s, l) BOOST_PP_LIST_FOLD_LEFT_442_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_443(o, s, l) BOOST_PP_LIST_FOLD_LEFT_443_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_444(o, s, l) BOOST_PP_LIST_FOLD_LEFT_444_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_445(o, s, l) BOOST_PP_LIST_FOLD_LEFT_445_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_446(o, s, l) BOOST_PP_LIST_FOLD_LEFT_446_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_447(o, s, l) BOOST_PP_LIST_FOLD_LEFT_447_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_448(o, s, l) BOOST_PP_LIST_FOLD_LEFT_448_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_449(o, s, l) BOOST_PP_LIST_FOLD_LEFT_449_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_450(o, s, l) BOOST_PP_LIST_FOLD_LEFT_450_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_451(o, s, l) BOOST_PP_LIST_FOLD_LEFT_451_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_452(o, s, l) BOOST_PP_LIST_FOLD_LEFT_452_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_453(o, s, l) BOOST_PP_LIST_FOLD_LEFT_453_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_454(o, s, l) BOOST_PP_LIST_FOLD_LEFT_454_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_455(o, s, l) BOOST_PP_LIST_FOLD_LEFT_455_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_456(o, s, l) BOOST_PP_LIST_FOLD_LEFT_456_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_457(o, s, l) BOOST_PP_LIST_FOLD_LEFT_457_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_458(o, s, l) BOOST_PP_LIST_FOLD_LEFT_458_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_459(o, s, l) BOOST_PP_LIST_FOLD_LEFT_459_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_460(o, s, l) BOOST_PP_LIST_FOLD_LEFT_460_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_461(o, s, l) BOOST_PP_LIST_FOLD_LEFT_461_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_462(o, s, l) BOOST_PP_LIST_FOLD_LEFT_462_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_463(o, s, l) BOOST_PP_LIST_FOLD_LEFT_463_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_464(o, s, l) BOOST_PP_LIST_FOLD_LEFT_464_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_465(o, s, l) BOOST_PP_LIST_FOLD_LEFT_465_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_466(o, s, l) BOOST_PP_LIST_FOLD_LEFT_466_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_467(o, s, l) BOOST_PP_LIST_FOLD_LEFT_467_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_468(o, s, l) BOOST_PP_LIST_FOLD_LEFT_468_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_469(o, s, l) BOOST_PP_LIST_FOLD_LEFT_469_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_470(o, s, l) BOOST_PP_LIST_FOLD_LEFT_470_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_471(o, s, l) BOOST_PP_LIST_FOLD_LEFT_471_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_472(o, s, l) BOOST_PP_LIST_FOLD_LEFT_472_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_473(o, s, l) BOOST_PP_LIST_FOLD_LEFT_473_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_474(o, s, l) BOOST_PP_LIST_FOLD_LEFT_474_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_475(o, s, l) BOOST_PP_LIST_FOLD_LEFT_475_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_476(o, s, l) BOOST_PP_LIST_FOLD_LEFT_476_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_477(o, s, l) BOOST_PP_LIST_FOLD_LEFT_477_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_478(o, s, l) BOOST_PP_LIST_FOLD_LEFT_478_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_479(o, s, l) BOOST_PP_LIST_FOLD_LEFT_479_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_480(o, s, l) BOOST_PP_LIST_FOLD_LEFT_480_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_481(o, s, l) BOOST_PP_LIST_FOLD_LEFT_481_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_482(o, s, l) BOOST_PP_LIST_FOLD_LEFT_482_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_483(o, s, l) BOOST_PP_LIST_FOLD_LEFT_483_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_484(o, s, l) BOOST_PP_LIST_FOLD_LEFT_484_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_485(o, s, l) BOOST_PP_LIST_FOLD_LEFT_485_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_486(o, s, l) BOOST_PP_LIST_FOLD_LEFT_486_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_487(o, s, l) BOOST_PP_LIST_FOLD_LEFT_487_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_488(o, s, l) BOOST_PP_LIST_FOLD_LEFT_488_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_489(o, s, l) BOOST_PP_LIST_FOLD_LEFT_489_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_490(o, s, l) BOOST_PP_LIST_FOLD_LEFT_490_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_491(o, s, l) BOOST_PP_LIST_FOLD_LEFT_491_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_492(o, s, l) BOOST_PP_LIST_FOLD_LEFT_492_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_493(o, s, l) BOOST_PP_LIST_FOLD_LEFT_493_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_494(o, s, l) BOOST_PP_LIST_FOLD_LEFT_494_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_495(o, s, l) BOOST_PP_LIST_FOLD_LEFT_495_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_496(o, s, l) BOOST_PP_LIST_FOLD_LEFT_496_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_497(o, s, l) BOOST_PP_LIST_FOLD_LEFT_497_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_498(o, s, l) BOOST_PP_LIST_FOLD_LEFT_498_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_499(o, s, l) BOOST_PP_LIST_FOLD_LEFT_499_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_500(o, s, l) BOOST_PP_LIST_FOLD_LEFT_500_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_501(o, s, l) BOOST_PP_LIST_FOLD_LEFT_501_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_502(o, s, l) BOOST_PP_LIST_FOLD_LEFT_502_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_503(o, s, l) BOOST_PP_LIST_FOLD_LEFT_503_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_504(o, s, l) BOOST_PP_LIST_FOLD_LEFT_504_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_505(o, s, l) BOOST_PP_LIST_FOLD_LEFT_505_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_506(o, s, l) BOOST_PP_LIST_FOLD_LEFT_506_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_507(o, s, l) BOOST_PP_LIST_FOLD_LEFT_507_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_508(o, s, l) BOOST_PP_LIST_FOLD_LEFT_508_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_509(o, s, l) BOOST_PP_LIST_FOLD_LEFT_509_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_510(o, s, l) BOOST_PP_LIST_FOLD_LEFT_510_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_511(o, s, l) BOOST_PP_LIST_FOLD_LEFT_511_D(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_512(o, s, l) BOOST_PP_LIST_FOLD_LEFT_512_D(o, s, l) +# +# define BOOST_PP_LIST_FOLD_LEFT_257_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_258, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(258, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_258_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_259, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(259, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_259_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_260, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(260, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_260_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_261, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(261, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_261_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_262, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(262, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_262_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_263, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(263, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_263_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_264, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(264, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_264_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_265, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(265, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_265_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_266, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(266, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_266_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_267, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(267, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_267_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_268, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(268, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_268_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_269, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(269, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_269_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_270, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(270, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_270_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_271, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(271, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_271_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_272, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(272, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_272_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_273, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(273, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_273_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_274, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(274, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_274_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_275, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(275, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_275_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_276, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(276, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_276_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_277, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(277, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_277_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_278, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(278, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_278_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_279, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(279, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_279_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_280, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(280, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_280_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_281, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(281, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_281_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_282, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(282, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_282_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_283, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(283, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_283_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_284, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(284, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_284_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_285, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(285, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_285_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_286, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(286, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_286_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_287, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(287, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_287_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_288, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(288, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_288_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_289, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(289, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_289_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_290, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(290, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_290_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_291, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(291, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_291_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_292, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(292, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_292_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_293, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(293, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_293_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_294, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(294, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_294_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_295, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(295, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_295_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_296, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(296, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_296_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_297, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(297, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_297_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_298, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(298, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_298_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_299, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(299, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_299_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_300, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(300, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_300_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_301, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(301, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_301_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_302, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(302, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_302_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_303, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(303, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_303_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_304, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(304, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_304_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_305, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(305, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_305_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_306, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(306, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_306_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_307, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(307, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_307_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_308, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(308, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_308_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_309, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(309, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_309_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_310, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(310, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_310_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_311, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(311, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_311_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_312, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(312, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_312_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_313, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(313, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_313_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_314, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(314, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_314_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_315, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(315, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_315_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_316, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(316, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_316_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_317, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(317, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_317_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_318, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(318, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_318_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_319, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(319, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_319_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_320, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(320, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_320_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_321, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(321, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_321_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_322, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(322, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_322_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_323, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(323, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_323_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_324, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(324, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_324_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_325, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(325, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_325_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_326, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(326, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_326_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_327, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(327, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_327_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_328, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(328, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_328_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_329, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(329, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_329_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_330, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(330, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_330_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_331, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(331, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_331_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_332, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(332, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_332_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_333, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(333, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_333_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_334, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(334, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_334_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_335, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(335, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_335_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_336, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(336, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_336_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_337, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(337, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_337_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_338, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(338, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_338_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_339, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(339, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_339_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_340, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(340, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_340_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_341, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(341, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_341_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_342, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(342, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_342_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_343, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(343, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_343_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_344, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(344, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_344_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_345, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(345, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_345_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_346, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(346, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_346_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_347, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(347, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_347_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_348, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(348, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_348_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_349, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(349, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_349_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_350, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(350, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_350_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_351, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(351, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_351_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_352, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(352, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_352_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_353, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(353, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_353_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_354, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(354, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_354_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_355, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(355, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_355_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_356, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(356, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_356_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_357, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(357, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_357_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_358, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(358, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_358_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_359, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(359, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_359_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_360, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(360, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_360_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_361, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(361, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_361_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_362, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(362, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_362_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_363, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(363, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_363_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_364, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(364, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_364_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_365, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(365, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_365_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_366, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(366, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_366_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_367, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(367, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_367_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_368, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(368, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_368_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_369, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(369, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_369_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_370, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(370, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_370_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_371, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(371, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_371_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_372, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(372, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_372_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_373, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(373, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_373_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_374, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(374, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_374_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_375, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(375, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_375_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_376, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(376, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_376_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_377, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(377, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_377_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_378, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(378, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_378_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_379, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(379, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_379_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_380, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(380, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_380_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_381, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(381, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_381_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_382, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(382, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_382_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_383, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(383, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_383_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_384, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(384, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_384_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_385, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(385, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_385_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_386, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(386, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_386_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_387, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(387, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_387_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_388, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(388, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_388_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_389, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(389, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_389_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_390, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(390, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_390_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_391, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(391, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_391_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_392, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(392, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_392_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_393, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(393, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_393_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_394, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(394, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_394_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_395, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(395, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_395_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_396, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(396, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_396_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_397, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(397, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_397_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_398, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(398, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_398_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_399, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(399, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_399_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_400, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(400, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_400_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_401, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(401, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_401_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_402, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(402, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_402_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_403, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(403, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_403_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_404, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(404, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_404_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_405, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(405, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_405_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_406, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(406, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_406_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_407, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(407, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_407_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_408, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(408, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_408_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_409, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(409, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_409_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_410, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(410, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_410_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_411, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(411, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_411_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_412, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(412, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_412_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_413, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(413, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_413_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_414, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(414, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_414_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_415, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(415, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_415_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_416, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(416, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_416_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_417, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(417, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_417_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_418, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(418, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_418_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_419, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(419, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_419_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_420, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(420, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_420_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_421, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(421, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_421_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_422, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(422, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_422_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_423, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(423, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_423_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_424, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(424, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_424_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_425, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(425, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_425_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_426, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(426, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_426_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_427, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(427, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_427_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_428, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(428, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_428_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_429, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(429, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_429_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_430, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(430, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_430_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_431, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(431, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_431_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_432, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(432, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_432_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_433, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(433, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_433_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_434, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(434, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_434_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_435, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(435, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_435_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_436, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(436, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_436_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_437, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(437, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_437_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_438, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(438, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_438_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_439, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(439, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_439_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_440, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(440, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_440_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_441, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(441, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_441_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_442, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(442, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_442_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_443, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(443, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_443_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_444, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(444, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_444_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_445, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(445, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_445_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_446, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(446, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_446_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_447, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(447, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_447_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_448, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(448, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_448_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_449, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(449, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_449_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_450, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(450, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_450_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_451, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(451, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_451_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_452, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(452, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_452_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_453, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(453, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_453_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_454, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(454, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_454_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_455, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(455, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_455_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_456, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(456, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_456_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_457, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(457, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_457_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_458, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(458, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_458_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_459, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(459, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_459_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_460, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(460, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_460_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_461, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(461, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_461_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_462, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(462, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_462_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_463, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(463, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_463_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_464, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(464, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_464_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_465, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(465, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_465_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_466, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(466, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_466_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_467, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(467, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_467_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_468, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(468, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_468_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_469, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(469, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_469_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_470, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(470, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_470_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_471, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(471, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_471_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_472, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(472, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_472_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_473, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(473, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_473_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_474, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(474, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_474_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_475, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(475, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_475_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_476, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(476, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_476_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_477, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(477, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_477_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_478, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(478, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_478_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_479, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(479, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_479_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_480, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(480, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_480_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_481, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(481, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_481_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_482, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(482, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_482_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_483, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(483, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_483_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_484, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(484, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_484_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_485, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(485, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_485_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_486, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(486, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_486_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_487, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(487, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_487_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_488, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(488, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_488_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_489, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(489, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_489_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_490, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(490, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_490_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_491, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(491, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_491_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_492, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(492, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_492_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_493, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(493, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_493_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_494, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(494, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_494_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_495, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(495, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_495_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_496, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(496, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_496_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_497, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(497, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_497_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_498, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(498, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_498_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_499, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(499, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_499_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_500, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(500, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_500_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_501, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(501, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_501_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_502, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(502, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_502_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_503, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(503, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_503_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_504, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(504, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_504_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_505, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(505, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_505_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_506, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(506, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_506_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_507, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(507, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_507_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_508, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(508, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_508_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_509, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(509, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_509_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_510, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(510, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_510_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_511, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(511, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_511_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_512, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(512, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_512_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_513, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(513, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/edg/limits/fold_right_1024.hpp b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_right_1024.hpp new file mode 100644 index 000000000..fb87d550a --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_right_1024.hpp @@ -0,0 +1,1557 @@ +# /* 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_LIST_DETAIL_EDG_FOLD_RIGHT_1024_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_1024_HPP +# +# define BOOST_PP_LIST_FOLD_RIGHT_513(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_513_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_514(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_514_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_515(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_515_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_516(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_516_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_517(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_517_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_518(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_518_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_519(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_519_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_520(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_520_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_521(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_521_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_522(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_522_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_523(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_523_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_524(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_524_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_525(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_525_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_526(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_526_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_527(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_527_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_528(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_528_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_529(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_529_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_530(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_530_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_531(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_531_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_532(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_532_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_533(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_533_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_534(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_534_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_535(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_535_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_536(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_536_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_537(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_537_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_538(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_538_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_539(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_539_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_540(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_540_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_541(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_541_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_542(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_542_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_543(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_543_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_544(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_544_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_545(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_545_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_546(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_546_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_547(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_547_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_548(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_548_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_549(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_549_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_550(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_550_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_551(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_551_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_552(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_552_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_553(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_553_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_554(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_554_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_555(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_555_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_556(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_556_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_557(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_557_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_558(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_558_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_559(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_559_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_560(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_560_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_561(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_561_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_562(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_562_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_563(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_563_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_564(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_564_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_565(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_565_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_566(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_566_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_567(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_567_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_568(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_568_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_569(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_569_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_570(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_570_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_571(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_571_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_572(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_572_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_573(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_573_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_574(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_574_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_575(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_575_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_576(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_576_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_577(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_577_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_578(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_578_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_579(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_579_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_580(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_580_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_581(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_581_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_582(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_582_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_583(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_583_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_584(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_584_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_585(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_585_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_586(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_586_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_587(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_587_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_588(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_588_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_589(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_589_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_590(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_590_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_591(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_591_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_592(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_592_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_593(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_593_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_594(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_594_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_595(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_595_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_596(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_596_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_597(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_597_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_598(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_598_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_599(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_599_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_600(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_600_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_601(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_601_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_602(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_602_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_603(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_603_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_604(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_604_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_605(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_605_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_606(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_606_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_607(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_607_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_608(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_608_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_609(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_609_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_610(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_610_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_611(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_611_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_612(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_612_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_613(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_613_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_614(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_614_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_615(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_615_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_616(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_616_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_617(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_617_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_618(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_618_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_619(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_619_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_620(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_620_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_621(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_621_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_622(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_622_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_623(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_623_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_624(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_624_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_625(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_625_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_626(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_626_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_627(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_627_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_628(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_628_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_629(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_629_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_630(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_630_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_631(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_631_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_632(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_632_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_633(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_633_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_634(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_634_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_635(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_635_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_636(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_636_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_637(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_637_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_638(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_638_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_639(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_639_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_640(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_640_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_641(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_641_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_642(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_642_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_643(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_643_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_644(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_644_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_645(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_645_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_646(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_646_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_647(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_647_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_648(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_648_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_649(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_649_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_650(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_650_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_651(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_651_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_652(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_652_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_653(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_653_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_654(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_654_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_655(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_655_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_656(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_656_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_657(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_657_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_658(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_658_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_659(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_659_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_660(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_660_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_661(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_661_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_662(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_662_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_663(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_663_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_664(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_664_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_665(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_665_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_666(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_666_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_667(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_667_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_668(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_668_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_669(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_669_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_670(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_670_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_671(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_671_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_672(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_672_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_673(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_673_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_674(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_674_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_675(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_675_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_676(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_676_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_677(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_677_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_678(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_678_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_679(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_679_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_680(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_680_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_681(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_681_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_682(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_682_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_683(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_683_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_684(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_684_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_685(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_685_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_686(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_686_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_687(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_687_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_688(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_688_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_689(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_689_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_690(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_690_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_691(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_691_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_692(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_692_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_693(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_693_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_694(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_694_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_695(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_695_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_696(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_696_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_697(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_697_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_698(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_698_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_699(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_699_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_700(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_700_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_701(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_701_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_702(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_702_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_703(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_703_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_704(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_704_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_705(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_705_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_706(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_706_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_707(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_707_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_708(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_708_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_709(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_709_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_710(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_710_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_711(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_711_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_712(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_712_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_713(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_713_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_714(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_714_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_715(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_715_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_716(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_716_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_717(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_717_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_718(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_718_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_719(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_719_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_720(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_720_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_721(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_721_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_722(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_722_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_723(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_723_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_724(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_724_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_725(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_725_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_726(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_726_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_727(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_727_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_728(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_728_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_729(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_729_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_730(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_730_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_731(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_731_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_732(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_732_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_733(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_733_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_734(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_734_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_735(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_735_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_736(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_736_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_737(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_737_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_738(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_738_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_739(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_739_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_740(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_740_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_741(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_741_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_742(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_742_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_743(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_743_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_744(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_744_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_745(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_745_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_746(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_746_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_747(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_747_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_748(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_748_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_749(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_749_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_750(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_750_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_751(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_751_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_752(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_752_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_753(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_753_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_754(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_754_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_755(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_755_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_756(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_756_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_757(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_757_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_758(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_758_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_759(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_759_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_760(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_760_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_761(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_761_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_762(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_762_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_763(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_763_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_764(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_764_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_765(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_765_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_766(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_766_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_767(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_767_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_768(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_768_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_769(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_769_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_770(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_770_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_771(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_771_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_772(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_772_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_773(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_773_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_774(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_774_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_775(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_775_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_776(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_776_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_777(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_777_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_778(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_778_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_779(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_779_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_780(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_780_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_781(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_781_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_782(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_782_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_783(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_783_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_784(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_784_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_785(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_785_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_786(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_786_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_787(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_787_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_788(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_788_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_789(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_789_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_790(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_790_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_791(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_791_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_792(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_792_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_793(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_793_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_794(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_794_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_795(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_795_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_796(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_796_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_797(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_797_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_798(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_798_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_799(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_799_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_800(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_800_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_801(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_801_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_802(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_802_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_803(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_803_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_804(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_804_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_805(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_805_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_806(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_806_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_807(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_807_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_808(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_808_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_809(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_809_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_810(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_810_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_811(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_811_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_812(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_812_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_813(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_813_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_814(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_814_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_815(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_815_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_816(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_816_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_817(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_817_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_818(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_818_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_819(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_819_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_820(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_820_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_821(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_821_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_822(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_822_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_823(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_823_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_824(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_824_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_825(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_825_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_826(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_826_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_827(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_827_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_828(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_828_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_829(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_829_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_830(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_830_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_831(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_831_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_832(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_832_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_833(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_833_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_834(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_834_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_835(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_835_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_836(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_836_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_837(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_837_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_838(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_838_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_839(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_839_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_840(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_840_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_841(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_841_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_842(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_842_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_843(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_843_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_844(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_844_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_845(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_845_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_846(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_846_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_847(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_847_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_848(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_848_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_849(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_849_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_850(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_850_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_851(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_851_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_852(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_852_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_853(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_853_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_854(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_854_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_855(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_855_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_856(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_856_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_857(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_857_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_858(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_858_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_859(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_859_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_860(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_860_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_861(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_861_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_862(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_862_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_863(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_863_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_864(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_864_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_865(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_865_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_866(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_866_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_867(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_867_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_868(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_868_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_869(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_869_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_870(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_870_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_871(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_871_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_872(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_872_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_873(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_873_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_874(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_874_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_875(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_875_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_876(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_876_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_877(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_877_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_878(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_878_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_879(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_879_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_880(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_880_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_881(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_881_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_882(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_882_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_883(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_883_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_884(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_884_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_885(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_885_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_886(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_886_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_887(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_887_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_888(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_888_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_889(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_889_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_890(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_890_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_891(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_891_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_892(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_892_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_893(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_893_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_894(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_894_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_895(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_895_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_896(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_896_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_897(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_897_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_898(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_898_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_899(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_899_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_900(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_900_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_901(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_901_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_902(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_902_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_903(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_903_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_904(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_904_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_905(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_905_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_906(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_906_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_907(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_907_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_908(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_908_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_909(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_909_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_910(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_910_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_911(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_911_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_912(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_912_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_913(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_913_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_914(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_914_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_915(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_915_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_916(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_916_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_917(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_917_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_918(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_918_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_919(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_919_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_920(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_920_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_921(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_921_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_922(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_922_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_923(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_923_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_924(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_924_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_925(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_925_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_926(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_926_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_927(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_927_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_928(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_928_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_929(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_929_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_930(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_930_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_931(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_931_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_932(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_932_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_933(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_933_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_934(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_934_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_935(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_935_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_936(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_936_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_937(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_937_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_938(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_938_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_939(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_939_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_940(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_940_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_941(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_941_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_942(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_942_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_943(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_943_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_944(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_944_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_945(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_945_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_946(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_946_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_947(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_947_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_948(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_948_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_949(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_949_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_950(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_950_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_951(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_951_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_952(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_952_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_953(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_953_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_954(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_954_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_955(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_955_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_956(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_956_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_957(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_957_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_958(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_958_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_959(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_959_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_960(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_960_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_961(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_961_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_962(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_962_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_963(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_963_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_964(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_964_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_965(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_965_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_966(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_966_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_967(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_967_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_968(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_968_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_969(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_969_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_970(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_970_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_971(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_971_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_972(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_972_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_973(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_973_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_974(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_974_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_975(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_975_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_976(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_976_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_977(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_977_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_978(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_978_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_979(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_979_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_980(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_980_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_981(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_981_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_982(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_982_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_983(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_983_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_984(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_984_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_985(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_985_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_986(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_986_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_987(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_987_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_988(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_988_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_989(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_989_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_990(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_990_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_991(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_991_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_992(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_992_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_993(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_993_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_994(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_994_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_995(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_995_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_996(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_996_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_997(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_997_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_998(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_998_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_999(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_999_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1000(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1000_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1001(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1001_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1002(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1002_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1003(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1003_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1004(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1004_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1005(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1005_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1006(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1006_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1007(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1007_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1008(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1008_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1009(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1009_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1010(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1010_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1011(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1011_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1012(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1012_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1013(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1013_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1014(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1014_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1015(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1015_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1016(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1016_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1017(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1017_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1018(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1018_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1019(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1019_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1020(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1020_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1021(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1021_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1022(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1022_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1023(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1023_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1024(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1024_D(o, s, l) +# +# define BOOST_PP_LIST_FOLD_RIGHT_513_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(514, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_514, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_514_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(515, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_515, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_515_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(516, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_516, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_516_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(517, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_517, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_517_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(518, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_518, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_518_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(519, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_519, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_519_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(520, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_520, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_520_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(521, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_521, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_521_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(522, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_522, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_522_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(523, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_523, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_523_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(524, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_524, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_524_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(525, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_525, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_525_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(526, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_526, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_526_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(527, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_527, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_527_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(528, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_528, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_528_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(529, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_529, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_529_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(530, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_530, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_530_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(531, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_531, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_531_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(532, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_532, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_532_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(533, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_533, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_533_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(534, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_534, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_534_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(535, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_535, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_535_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(536, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_536, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_536_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(537, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_537, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_537_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(538, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_538, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_538_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(539, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_539, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_539_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(540, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_540, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_540_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(541, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_541, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_541_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(542, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_542, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_542_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(543, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_543, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_543_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(544, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_544, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_544_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(545, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_545, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_545_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(546, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_546, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_546_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(547, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_547, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_547_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(548, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_548, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_548_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(549, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_549, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_549_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(550, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_550, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_550_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(551, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_551, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_551_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(552, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_552, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_552_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(553, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_553, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_553_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(554, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_554, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_554_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(555, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_555, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_555_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(556, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_556, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_556_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(557, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_557, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_557_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(558, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_558, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_558_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(559, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_559, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_559_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(560, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_560, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_560_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(561, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_561, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_561_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(562, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_562, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_562_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(563, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_563, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_563_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(564, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_564, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_564_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(565, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_565, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_565_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(566, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_566, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_566_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(567, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_567, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_567_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(568, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_568, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_568_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(569, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_569, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_569_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(570, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_570, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_570_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(571, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_571, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_571_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(572, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_572, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_572_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(573, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_573, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_573_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(574, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_574, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_574_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(575, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_575, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_575_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(576, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_576, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_576_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(577, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_577, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_577_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(578, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_578, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_578_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(579, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_579, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_579_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(580, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_580, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_580_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(581, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_581, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_581_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(582, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_582, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_582_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(583, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_583, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_583_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(584, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_584, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_584_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(585, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_585, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_585_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(586, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_586, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_586_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(587, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_587, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_587_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(588, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_588, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_588_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(589, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_589, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_589_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(590, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_590, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_590_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(591, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_591, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_591_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(592, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_592, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_592_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(593, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_593, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_593_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(594, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_594, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_594_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(595, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_595, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_595_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(596, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_596, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_596_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(597, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_597, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_597_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(598, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_598, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_598_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(599, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_599, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_599_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(600, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_600, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_600_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(601, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_601, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_601_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(602, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_602, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_602_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(603, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_603, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_603_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(604, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_604, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_604_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(605, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_605, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_605_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(606, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_606, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_606_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(607, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_607, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_607_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(608, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_608, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_608_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(609, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_609, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_609_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(610, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_610, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_610_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(611, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_611, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_611_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(612, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_612, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_612_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(613, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_613, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_613_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(614, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_614, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_614_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(615, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_615, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_615_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(616, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_616, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_616_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(617, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_617, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_617_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(618, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_618, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_618_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(619, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_619, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_619_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(620, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_620, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_620_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(621, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_621, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_621_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(622, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_622, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_622_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(623, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_623, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_623_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(624, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_624, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_624_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(625, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_625, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_625_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(626, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_626, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_626_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(627, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_627, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_627_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(628, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_628, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_628_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(629, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_629, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_629_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(630, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_630, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_630_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(631, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_631, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_631_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(632, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_632, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_632_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(633, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_633, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_633_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(634, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_634, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_634_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(635, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_635, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_635_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(636, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_636, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_636_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(637, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_637, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_637_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(638, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_638, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_638_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(639, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_639, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_639_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(640, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_640, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_640_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(641, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_641, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_641_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(642, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_642, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_642_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(643, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_643, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_643_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(644, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_644, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_644_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(645, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_645, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_645_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(646, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_646, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_646_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(647, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_647, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_647_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(648, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_648, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_648_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(649, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_649, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_649_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(650, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_650, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_650_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(651, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_651, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_651_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(652, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_652, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_652_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(653, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_653, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_653_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(654, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_654, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_654_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(655, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_655, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_655_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(656, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_656, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_656_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(657, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_657, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_657_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(658, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_658, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_658_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(659, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_659, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_659_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(660, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_660, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_660_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(661, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_661, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_661_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(662, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_662, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_662_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(663, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_663, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_663_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(664, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_664, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_664_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(665, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_665, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_665_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(666, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_666, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_666_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(667, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_667, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_667_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(668, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_668, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_668_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(669, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_669, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_669_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(670, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_670, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_670_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(671, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_671, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_671_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(672, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_672, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_672_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(673, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_673, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_673_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(674, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_674, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_674_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(675, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_675, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_675_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(676, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_676, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_676_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(677, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_677, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_677_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(678, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_678, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_678_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(679, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_679, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_679_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(680, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_680, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_680_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(681, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_681, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_681_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(682, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_682, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_682_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(683, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_683, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_683_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(684, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_684, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_684_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(685, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_685, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_685_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(686, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_686, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_686_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(687, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_687, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_687_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(688, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_688, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_688_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(689, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_689, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_689_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(690, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_690, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_690_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(691, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_691, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_691_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(692, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_692, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_692_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(693, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_693, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_693_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(694, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_694, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_694_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(695, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_695, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_695_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(696, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_696, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_696_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(697, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_697, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_697_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(698, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_698, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_698_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(699, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_699, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_699_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(700, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_700, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_700_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(701, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_701, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_701_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(702, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_702, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_702_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(703, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_703, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_703_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(704, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_704, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_704_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(705, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_705, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_705_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(706, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_706, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_706_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(707, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_707, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_707_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(708, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_708, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_708_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(709, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_709, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_709_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(710, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_710, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_710_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(711, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_711, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_711_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(712, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_712, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_712_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(713, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_713, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_713_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(714, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_714, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_714_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(715, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_715, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_715_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(716, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_716, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_716_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(717, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_717, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_717_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(718, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_718, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_718_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(719, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_719, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_719_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(720, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_720, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_720_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(721, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_721, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_721_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(722, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_722, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_722_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(723, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_723, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_723_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(724, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_724, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_724_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(725, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_725, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_725_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(726, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_726, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_726_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(727, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_727, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_727_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(728, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_728, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_728_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(729, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_729, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_729_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(730, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_730, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_730_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(731, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_731, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_731_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(732, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_732, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_732_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(733, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_733, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_733_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(734, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_734, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_734_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(735, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_735, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_735_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(736, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_736, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_736_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(737, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_737, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_737_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(738, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_738, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_738_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(739, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_739, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_739_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(740, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_740, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_740_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(741, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_741, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_741_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(742, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_742, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_742_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(743, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_743, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_743_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(744, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_744, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_744_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(745, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_745, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_745_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(746, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_746, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_746_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(747, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_747, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_747_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(748, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_748, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_748_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(749, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_749, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_749_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(750, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_750, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_750_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(751, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_751, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_751_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(752, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_752, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_752_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(753, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_753, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_753_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(754, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_754, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_754_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(755, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_755, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_755_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(756, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_756, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_756_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(757, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_757, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_757_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(758, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_758, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_758_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(759, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_759, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_759_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(760, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_760, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_760_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(761, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_761, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_761_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(762, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_762, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_762_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(763, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_763, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_763_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(764, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_764, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_764_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(765, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_765, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_765_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(766, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_766, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_766_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(767, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_767, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_767_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(768, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_768, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_768_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(769, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_769, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_769_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(770, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_770, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_770_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(771, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_771, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_771_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(772, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_772, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_772_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(773, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_773, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_773_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(774, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_774, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_774_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(775, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_775, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_775_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(776, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_776, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_776_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(777, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_777, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_777_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(778, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_778, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_778_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(779, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_779, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_779_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(780, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_780, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_780_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(781, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_781, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_781_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(782, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_782, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_782_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(783, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_783, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_783_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(784, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_784, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_784_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(785, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_785, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_785_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(786, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_786, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_786_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(787, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_787, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_787_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(788, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_788, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_788_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(789, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_789, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_789_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(790, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_790, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_790_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(791, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_791, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_791_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(792, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_792, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_792_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(793, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_793, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_793_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(794, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_794, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_794_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(795, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_795, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_795_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(796, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_796, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_796_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(797, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_797, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_797_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(798, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_798, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_798_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(799, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_799, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_799_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(800, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_800, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_800_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(801, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_801, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_801_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(802, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_802, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_802_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(803, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_803, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_803_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(804, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_804, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_804_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(805, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_805, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_805_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(806, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_806, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_806_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(807, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_807, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_807_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(808, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_808, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_808_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(809, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_809, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_809_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(810, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_810, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_810_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(811, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_811, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_811_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(812, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_812, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_812_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(813, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_813, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_813_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(814, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_814, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_814_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(815, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_815, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_815_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(816, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_816, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_816_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(817, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_817, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_817_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(818, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_818, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_818_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(819, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_819, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_819_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(820, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_820, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_820_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(821, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_821, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_821_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(822, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_822, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_822_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(823, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_823, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_823_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(824, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_824, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_824_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(825, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_825, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_825_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(826, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_826, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_826_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(827, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_827, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_827_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(828, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_828, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_828_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(829, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_829, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_829_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(830, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_830, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_830_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(831, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_831, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_831_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(832, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_832, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_832_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(833, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_833, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_833_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(834, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_834, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_834_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(835, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_835, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_835_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(836, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_836, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_836_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(837, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_837, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_837_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(838, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_838, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_838_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(839, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_839, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_839_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(840, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_840, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_840_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(841, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_841, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_841_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(842, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_842, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_842_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(843, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_843, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_843_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(844, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_844, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_844_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(845, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_845, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_845_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(846, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_846, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_846_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(847, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_847, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_847_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(848, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_848, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_848_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(849, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_849, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_849_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(850, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_850, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_850_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(851, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_851, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_851_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(852, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_852, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_852_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(853, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_853, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_853_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(854, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_854, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_854_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(855, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_855, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_855_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(856, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_856, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_856_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(857, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_857, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_857_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(858, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_858, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_858_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(859, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_859, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_859_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(860, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_860, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_860_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(861, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_861, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_861_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(862, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_862, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_862_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(863, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_863, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_863_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(864, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_864, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_864_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(865, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_865, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_865_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(866, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_866, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_866_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(867, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_867, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_867_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(868, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_868, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_868_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(869, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_869, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_869_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(870, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_870, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_870_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(871, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_871, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_871_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(872, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_872, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_872_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(873, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_873, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_873_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(874, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_874, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_874_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(875, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_875, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_875_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(876, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_876, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_876_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(877, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_877, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_877_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(878, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_878, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_878_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(879, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_879, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_879_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(880, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_880, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_880_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(881, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_881, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_881_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(882, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_882, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_882_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(883, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_883, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_883_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(884, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_884, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_884_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(885, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_885, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_885_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(886, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_886, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_886_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(887, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_887, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_887_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(888, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_888, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_888_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(889, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_889, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_889_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(890, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_890, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_890_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(891, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_891, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_891_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(892, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_892, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_892_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(893, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_893, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_893_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(894, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_894, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_894_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(895, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_895, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_895_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(896, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_896, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_896_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(897, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_897, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_897_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(898, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_898, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_898_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(899, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_899, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_899_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(900, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_900, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_900_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(901, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_901, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_901_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(902, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_902, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_902_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(903, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_903, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_903_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(904, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_904, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_904_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(905, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_905, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_905_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(906, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_906, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_906_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(907, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_907, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_907_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(908, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_908, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_908_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(909, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_909, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_909_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(910, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_910, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_910_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(911, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_911, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_911_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(912, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_912, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_912_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(913, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_913, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_913_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(914, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_914, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_914_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(915, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_915, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_915_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(916, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_916, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_916_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(917, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_917, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_917_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(918, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_918, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_918_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(919, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_919, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_919_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(920, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_920, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_920_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(921, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_921, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_921_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(922, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_922, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_922_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(923, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_923, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_923_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(924, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_924, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_924_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(925, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_925, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_925_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(926, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_926, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_926_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(927, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_927, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_927_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(928, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_928, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_928_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(929, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_929, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_929_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(930, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_930, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_930_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(931, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_931, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_931_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(932, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_932, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_932_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(933, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_933, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_933_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(934, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_934, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_934_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(935, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_935, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_935_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(936, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_936, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_936_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(937, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_937, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_937_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(938, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_938, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_938_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(939, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_939, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_939_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(940, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_940, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_940_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(941, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_941, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_941_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(942, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_942, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_942_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(943, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_943, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_943_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(944, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_944, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_944_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(945, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_945, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_945_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(946, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_946, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_946_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(947, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_947, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_947_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(948, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_948, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_948_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(949, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_949, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_949_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(950, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_950, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_950_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(951, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_951, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_951_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(952, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_952, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_952_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(953, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_953, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_953_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(954, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_954, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_954_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(955, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_955, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_955_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(956, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_956, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_956_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(957, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_957, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_957_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(958, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_958, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_958_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(959, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_959, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_959_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(960, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_960, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_960_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(961, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_961, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_961_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(962, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_962, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_962_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(963, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_963, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_963_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(964, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_964, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_964_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(965, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_965, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_965_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(966, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_966, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_966_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(967, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_967, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_967_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(968, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_968, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_968_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(969, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_969, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_969_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(970, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_970, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_970_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(971, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_971, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_971_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(972, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_972, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_972_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(973, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_973, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_973_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(974, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_974, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_974_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(975, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_975, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_975_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(976, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_976, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_976_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(977, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_977, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_977_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(978, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_978, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_978_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(979, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_979, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_979_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(980, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_980, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_980_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(981, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_981, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_981_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(982, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_982, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_982_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(983, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_983, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_983_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(984, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_984, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_984_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(985, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_985, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_985_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(986, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_986, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_986_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(987, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_987, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_987_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(988, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_988, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_988_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(989, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_989, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_989_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(990, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_990, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_990_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(991, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_991, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_991_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(992, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_992, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_992_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(993, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_993, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_993_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(994, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_994, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_994_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(995, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_995, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_995_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(996, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_996, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_996_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(997, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_997, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_997_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(998, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_998, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_998_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(999, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_999, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_999_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1000, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1000, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1000_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1001, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1001, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1001_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1002, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1002, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1002_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1003, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1003, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1003_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1004, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1004, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1004_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1005, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1005, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1005_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1006, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1006, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1006_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1007, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1007, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1007_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1008, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1008, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1008_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1009, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1009, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1009_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1010, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1010, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1010_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1011, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1011, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1011_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1012, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1012, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1012_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1013, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1013, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1013_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1014, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1014, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1014_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1015, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1015, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1015_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1016, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1016, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1016_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1017, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1017, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1017_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1018, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1018, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1018_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1019, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1019, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1019_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1020, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1020, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1020_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1021, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1021, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1021_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1022, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1022, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1022_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1023, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1023, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1023_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1024, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1024, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1024_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(1025, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1025, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_513(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_514(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_515(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_516(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_517(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_518(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_519(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_520(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_521(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_522(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_523(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_524(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_525(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_526(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_527(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_528(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_529(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_530(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_531(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_532(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_533(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_534(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_535(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_536(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_537(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_538(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_539(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_540(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_541(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_542(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_543(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_544(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_545(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_546(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_547(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_548(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_549(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_550(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_551(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_552(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_553(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_554(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_555(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_556(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_557(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_558(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_559(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_560(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_561(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_562(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_563(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_564(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_565(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_566(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_567(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_568(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_569(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_570(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_571(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_572(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_573(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_574(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_575(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_576(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_577(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_578(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_579(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_580(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_581(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_582(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_583(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_584(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_585(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_586(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_587(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_588(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_589(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_590(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_591(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_592(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_593(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_594(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_595(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_596(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_597(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_598(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_599(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_600(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_601(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_602(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_603(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_604(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_605(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_606(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_607(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_608(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_609(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_610(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_611(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_612(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_613(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_614(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_615(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_616(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_617(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_618(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_619(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_620(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_621(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_622(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_623(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_624(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_625(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_626(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_627(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_628(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_629(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_630(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_631(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_632(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_633(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_634(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_635(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_636(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_637(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_638(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_639(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_640(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_641(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_642(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_643(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_644(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_645(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_646(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_647(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_648(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_649(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_650(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_651(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_652(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_653(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_654(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_655(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_656(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_657(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_658(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_659(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_660(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_661(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_662(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_663(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_664(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_665(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_666(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_667(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_668(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_669(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_670(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_671(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_672(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_673(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_674(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_675(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_676(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_677(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_678(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_679(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_680(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_681(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_682(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_683(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_684(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_685(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_686(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_687(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_688(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_689(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_690(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_691(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_692(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_693(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_694(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_695(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_696(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_697(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_698(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_699(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_700(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_701(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_702(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_703(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_704(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_705(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_706(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_707(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_708(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_709(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_710(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_711(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_712(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_713(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_714(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_715(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_716(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_717(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_718(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_719(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_720(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_721(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_722(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_723(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_724(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_725(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_726(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_727(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_728(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_729(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_730(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_731(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_732(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_733(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_734(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_735(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_736(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_737(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_738(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_739(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_740(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_741(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_742(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_743(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_744(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_745(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_746(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_747(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_748(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_749(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_750(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_751(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_752(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_753(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_754(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_755(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_756(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_757(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_758(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_759(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_760(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_761(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_762(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_763(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_764(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_765(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_766(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_767(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_768(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_769(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_770(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_771(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_772(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_773(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_774(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_775(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_776(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_777(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_778(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_779(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_780(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_781(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_782(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_783(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_784(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_785(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_786(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_787(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_788(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_789(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_790(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_791(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_792(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_793(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_794(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_795(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_796(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_797(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_798(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_799(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_800(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_801(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_802(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_803(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_804(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_805(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_806(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_807(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_808(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_809(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_810(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_811(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_812(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_813(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_814(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_815(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_816(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_817(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_818(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_819(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_820(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_821(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_822(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_823(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_824(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_825(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_826(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_827(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_828(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_829(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_830(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_831(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_832(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_833(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_834(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_835(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_836(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_837(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_838(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_839(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_840(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_841(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_842(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_843(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_844(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_845(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_846(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_847(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_848(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_849(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_850(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_851(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_852(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_853(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_854(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_855(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_856(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_857(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_858(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_859(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_860(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_861(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_862(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_863(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_864(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_865(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_866(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_867(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_868(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_869(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_870(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_871(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_872(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_873(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_874(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_875(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_876(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_877(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_878(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_879(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_880(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_881(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_882(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_883(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_884(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_885(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_886(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_887(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_888(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_889(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_890(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_891(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_892(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_893(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_894(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_895(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_896(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_897(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_898(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_899(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_900(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_901(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_902(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_903(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_904(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_905(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_906(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_907(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_908(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_909(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_910(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_911(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_912(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_913(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_914(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_915(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_916(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_917(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_918(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_919(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_920(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_921(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_922(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_923(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_924(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_925(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_926(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_927(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_928(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_929(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_930(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_931(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_932(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_933(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_934(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_935(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_936(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_937(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_938(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_939(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_940(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_941(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_942(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_943(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_944(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_945(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_946(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_947(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_948(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_949(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_950(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_951(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_952(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_953(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_954(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_955(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_956(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_957(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_958(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_959(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_960(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_961(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_962(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_963(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_964(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_965(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_966(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_967(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_968(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_969(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_970(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_971(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_972(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_973(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_974(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_975(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_976(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_977(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_978(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_979(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_980(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_981(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_982(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_983(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_984(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_985(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_986(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_987(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_988(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_989(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_990(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_991(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_992(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_993(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_994(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_995(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_996(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_997(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_998(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_999(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1000(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1001(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1002(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1003(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1004(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1005(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1006(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1007(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1008(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1009(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1010(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1011(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1012(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1013(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1014(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1015(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1016(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1017(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1018(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1019(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1020(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1021(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1022(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1023(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1024(o, s, l) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/edg/limits/fold_right_256.hpp b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_right_256.hpp new file mode 100644 index 000000000..982aa0a47 --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_right_256.hpp @@ -0,0 +1,791 @@ +# /* 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_LIST_DETAIL_EDG_FOLD_RIGHT_256_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_256_HPP +# +# define BOOST_PP_LIST_FOLD_RIGHT_0(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_0_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_2_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_3_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_4_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_5_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_6_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_7_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_8_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_9_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_10_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_11_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_12_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_13_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_14_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_15_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_16_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_17_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_18_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_19_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_20_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_21_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_22_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_23_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_24_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_25_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_26_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_27_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_28_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_29_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_30_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_31_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_32_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_33_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_34_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_35_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_36_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_37_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_38_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_39_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_40_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_41_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_42_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_43_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_44_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_45_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_46_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_47_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_48_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_49_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_50_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_51_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_52_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_53_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_54_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_55_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_56_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_57_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_58_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_59_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_60_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_61_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_62_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_63_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_64_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_65_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_66_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_67_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_68_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_69_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_70_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_71_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_72_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_73_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_74_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_75_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_76_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_77_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_78_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_79_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_80_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_81_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_82_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_83_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_84_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_85_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_86_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_87_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_88_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_89_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_90_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_91_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_92_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_93_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_94_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_95_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_96_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_97_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_98_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_99_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_100_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_101_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_102_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_103_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_104_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_105_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_106_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_107_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_108_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_109_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_110_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_111_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_112_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_113_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_114_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_115_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_116_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_117_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_118_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_119_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_120_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_121_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_122_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_123_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_124_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_125_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_126_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_127_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_128_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_129_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_130_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_131_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_132_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_133_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_134_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_135_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_136_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_137_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_138_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_139_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_140_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_141_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_142_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_143_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_144_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_145_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_146_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_147_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_148_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_149_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_150_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_151_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_152_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_153_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_154_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_155_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_156_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_157_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_158_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_159_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_160_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_161_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_162_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_163_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_164_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_165_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_166_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_167_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_168_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_169_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_170_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_171_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_172_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_173_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_174_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_175_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_176_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_177_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_178_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_179_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_180_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_181_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_182_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_183_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_184_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_185_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_186_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_187_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_188_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_189_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_190_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_191_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_192_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_193_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_194_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_195_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_196_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_197_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_198_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_199_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_200_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_201_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_202_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_203_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_204_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_205_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_206_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_207_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_208_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_209_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_210_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_211_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_212_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_213_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_214_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_215_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_216_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_217_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_218_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_219_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_220_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_221_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_222_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_223_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_224_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_225_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_226_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_227_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_228_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_229_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_230_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_231_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_232_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_233_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_234_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_235_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_236_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_237_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_238_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_239_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_240_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_241_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_242_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_243_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_244_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_245_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_246_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_247_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_248_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_249_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_250_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_251_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_252_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_253_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_254_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_255_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_256_D(o, s, l) +# +# define BOOST_PP_LIST_FOLD_RIGHT_0_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(2, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(2, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_2, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_2_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(3, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_3, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_3_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(4, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_4, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_4_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(5, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_5, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_5_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(6, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_6, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_6_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(7, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_7, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_7_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(8, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_8, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_8_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(9, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_9, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_9_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(10, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_10, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_10_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(11, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_11, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_11_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(12, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_12, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_12_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(13, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_13, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_13_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(14, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_14, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_14_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(15, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_15, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_15_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(16, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_16, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_16_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(17, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_17, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_17_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(18, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_18, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_18_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(19, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_19, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_19_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(20, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_20, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_20_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(21, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_21, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_21_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(22, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_22, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_22_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(23, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_23, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_23_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(24, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_24, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_24_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(25, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_25, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_25_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(26, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_26, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_26_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(27, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_27, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_27_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(28, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_28, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_28_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(29, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_29, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_29_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(30, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_30, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_30_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(31, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_31, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_31_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(32, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_32, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_32_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(33, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_33, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_33_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(34, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_34, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_34_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(35, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_35, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_35_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(36, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_36, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_36_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(37, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_37, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_37_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(38, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_38, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_38_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(39, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_39, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_39_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(40, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_40, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_40_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(41, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_41, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_41_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(42, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_42, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_42_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(43, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_43, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_43_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(44, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_44, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_44_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(45, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_45, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_45_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(46, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_46, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_46_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(47, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_47, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_47_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(48, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_48, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_48_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(49, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_49, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_49_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(50, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_50, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_50_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(51, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_51, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_51_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(52, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_52, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_52_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(53, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_53, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_53_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(54, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_54, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_54_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(55, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_55, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_55_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(56, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_56, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_56_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(57, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_57, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_57_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(58, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_58, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_58_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(59, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_59, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_59_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(60, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_60, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_60_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(61, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_61, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_61_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(62, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_62, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_62_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(63, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_63, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_63_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(64, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_64, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_64_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(65, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_65, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_65_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(66, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_66, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_66_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(67, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_67, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_67_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(68, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_68, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_68_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(69, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_69, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_69_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(70, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_70, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_70_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(71, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_71, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_71_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(72, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_72, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_72_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(73, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_73, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_73_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(74, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_74, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_74_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(75, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_75, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_75_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(76, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_76, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_76_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(77, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_77, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_77_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(78, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_78, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_78_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(79, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_79, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_79_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(80, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_80, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_80_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(81, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_81, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_81_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(82, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_82, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_82_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(83, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_83, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_83_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(84, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_84, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_84_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(85, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_85, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_85_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(86, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_86, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_86_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(87, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_87, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_87_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(88, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_88, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_88_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(89, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_89, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_89_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(90, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_90, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_90_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(91, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_91, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_91_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(92, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_92, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_92_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(93, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_93, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_93_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(94, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_94, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_94_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(95, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_95, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_95_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(96, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_96, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_96_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(97, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_97, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_97_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(98, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_98, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_98_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(99, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_99, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_99_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(100, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_100, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_100_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(101, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_101, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_101_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(102, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_102, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_102_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(103, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_103, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_103_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(104, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_104, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_104_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(105, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_105, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_105_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(106, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_106, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_106_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(107, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_107, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_107_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(108, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_108, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_108_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(109, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_109, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_109_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(110, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_110, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_110_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(111, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_111, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_111_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(112, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_112, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_112_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(113, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_113, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_113_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(114, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_114, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_114_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(115, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_115, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_115_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(116, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_116, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_116_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(117, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_117, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_117_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(118, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_118, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_118_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(119, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_119, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_119_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(120, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_120, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_120_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(121, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_121, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_121_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(122, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_122, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_122_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(123, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_123, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_123_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(124, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_124, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_124_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(125, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_125, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_125_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(126, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_126, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_126_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(127, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_127, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_127_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(128, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_128, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_128_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(129, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_129, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_129_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(130, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_130, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_130_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(131, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_131, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_131_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(132, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_132, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_132_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(133, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_133, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_133_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(134, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_134, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_134_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(135, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_135, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_135_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(136, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_136, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_136_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(137, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_137, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_137_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(138, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_138, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_138_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(139, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_139, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_139_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(140, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_140, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_140_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(141, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_141, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_141_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(142, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_142, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_142_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(143, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_143, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_143_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(144, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_144, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_144_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(145, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_145, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_145_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(146, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_146, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_146_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(147, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_147, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_147_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(148, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_148, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_148_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(149, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_149, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_149_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(150, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_150, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_150_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(151, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_151, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_151_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(152, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_152, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_152_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(153, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_153, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_153_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(154, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_154, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_154_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(155, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_155, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_155_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(156, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_156, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_156_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(157, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_157, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_157_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(158, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_158, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_158_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(159, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_159, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_159_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(160, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_160, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_160_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(161, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_161, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_161_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(162, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_162, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_162_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(163, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_163, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_163_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(164, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_164, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_164_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(165, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_165, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_165_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(166, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_166, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_166_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(167, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_167, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_167_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(168, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_168, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_168_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(169, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_169, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_169_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(170, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_170, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_170_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(171, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_171, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_171_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(172, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_172, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_172_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(173, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_173, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_173_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(174, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_174, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_174_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(175, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_175, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_175_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(176, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_176, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_176_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(177, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_177, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_177_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(178, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_178, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_178_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(179, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_179, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_179_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(180, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_180, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_180_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(181, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_181, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_181_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(182, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_182, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_182_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(183, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_183, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_183_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(184, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_184, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_184_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(185, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_185, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_185_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(186, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_186, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_186_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(187, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_187, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_187_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(188, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_188, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_188_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(189, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_189, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_189_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(190, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_190, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_190_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(191, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_191, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_191_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(192, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_192, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_192_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(193, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_193, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_193_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(194, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_194, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_194_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(195, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_195, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_195_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(196, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_196, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_196_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(197, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_197, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_197_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(198, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_198, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_198_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(199, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_199, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_199_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(200, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_200, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_200_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(201, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_201, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_201_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(202, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_202, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_202_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(203, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_203, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_203_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(204, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_204, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_204_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(205, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_205, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_205_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(206, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_206, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_206_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(207, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_207, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_207_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(208, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_208, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_208_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(209, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_209, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_209_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(210, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_210, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_210_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(211, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_211, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_211_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(212, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_212, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_212_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(213, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_213, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_213_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(214, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_214, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_214_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(215, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_215, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_215_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(216, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_216, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_216_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(217, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_217, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_217_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(218, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_218, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_218_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(219, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_219, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_219_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(220, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_220, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_220_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(221, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_221, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_221_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(222, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_222, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_222_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(223, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_223, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_223_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(224, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_224, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_224_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(225, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_225, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_225_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(226, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_226, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_226_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(227, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_227, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_227_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(228, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_228, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_228_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(229, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_229, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_229_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(230, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_230, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_230_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(231, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_231, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_231_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(232, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_232, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_232_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(233, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_233, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_233_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(234, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_234, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_234_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(235, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_235, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_235_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(236, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_236, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_236_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(237, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_237, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_237_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(238, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_238, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_238_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(239, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_239, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_239_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(240, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_240, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_240_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(241, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_241, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_241_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(242, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_242, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_242_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(243, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_243, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_243_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(244, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_244, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_244_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(245, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_245, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_245_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(246, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_246, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_246_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(247, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_247, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_247_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(248, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_248, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_248_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(249, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_249, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_249_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(250, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_250, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_250_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(251, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_251, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_251_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(252, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_252, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_252_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(253, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_253, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_253_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(254, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_254, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_254_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(255, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_255, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_255_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(256, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_256, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_256_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(257, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_257, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_0(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/edg/limits/fold_right_512.hpp b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_right_512.hpp new file mode 100644 index 000000000..9da8f7b95 --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/edg/limits/fold_right_512.hpp @@ -0,0 +1,789 @@ +# /* 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_LIST_DETAIL_EDG_FOLD_RIGHT_512_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_512_HPP +# +# define BOOST_PP_LIST_FOLD_RIGHT_257(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_257_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_258(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_258_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_259(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_259_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_260(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_260_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_261(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_261_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_262(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_262_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_263(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_263_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_264(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_264_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_265(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_265_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_266(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_266_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_267(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_267_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_268(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_268_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_269(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_269_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_270(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_270_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_271(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_271_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_272(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_272_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_273(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_273_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_274(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_274_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_275(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_275_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_276(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_276_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_277(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_277_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_278(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_278_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_279(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_279_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_280(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_280_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_281(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_281_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_282(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_282_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_283(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_283_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_284(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_284_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_285(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_285_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_286(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_286_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_287(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_287_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_288(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_288_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_289(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_289_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_290(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_290_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_291(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_291_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_292(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_292_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_293(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_293_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_294(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_294_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_295(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_295_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_296(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_296_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_297(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_297_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_298(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_298_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_299(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_299_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_300(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_300_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_301(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_301_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_302(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_302_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_303(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_303_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_304(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_304_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_305(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_305_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_306(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_306_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_307(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_307_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_308(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_308_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_309(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_309_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_310(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_310_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_311(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_311_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_312(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_312_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_313(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_313_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_314(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_314_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_315(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_315_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_316(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_316_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_317(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_317_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_318(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_318_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_319(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_319_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_320(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_320_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_321(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_321_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_322(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_322_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_323(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_323_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_324(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_324_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_325(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_325_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_326(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_326_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_327(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_327_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_328(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_328_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_329(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_329_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_330(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_330_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_331(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_331_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_332(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_332_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_333(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_333_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_334(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_334_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_335(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_335_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_336(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_336_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_337(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_337_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_338(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_338_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_339(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_339_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_340(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_340_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_341(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_341_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_342(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_342_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_343(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_343_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_344(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_344_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_345(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_345_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_346(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_346_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_347(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_347_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_348(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_348_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_349(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_349_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_350(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_350_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_351(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_351_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_352(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_352_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_353(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_353_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_354(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_354_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_355(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_355_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_356(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_356_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_357(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_357_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_358(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_358_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_359(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_359_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_360(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_360_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_361(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_361_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_362(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_362_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_363(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_363_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_364(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_364_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_365(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_365_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_366(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_366_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_367(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_367_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_368(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_368_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_369(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_369_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_370(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_370_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_371(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_371_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_372(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_372_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_373(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_373_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_374(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_374_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_375(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_375_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_376(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_376_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_377(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_377_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_378(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_378_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_379(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_379_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_380(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_380_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_381(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_381_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_382(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_382_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_383(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_383_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_384(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_384_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_385(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_385_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_386(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_386_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_387(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_387_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_388(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_388_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_389(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_389_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_390(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_390_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_391(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_391_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_392(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_392_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_393(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_393_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_394(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_394_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_395(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_395_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_396(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_396_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_397(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_397_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_398(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_398_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_399(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_399_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_400(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_400_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_401(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_401_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_402(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_402_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_403(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_403_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_404(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_404_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_405(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_405_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_406(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_406_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_407(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_407_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_408(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_408_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_409(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_409_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_410(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_410_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_411(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_411_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_412(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_412_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_413(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_413_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_414(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_414_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_415(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_415_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_416(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_416_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_417(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_417_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_418(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_418_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_419(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_419_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_420(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_420_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_421(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_421_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_422(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_422_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_423(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_423_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_424(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_424_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_425(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_425_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_426(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_426_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_427(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_427_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_428(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_428_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_429(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_429_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_430(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_430_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_431(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_431_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_432(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_432_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_433(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_433_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_434(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_434_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_435(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_435_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_436(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_436_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_437(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_437_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_438(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_438_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_439(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_439_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_440(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_440_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_441(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_441_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_442(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_442_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_443(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_443_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_444(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_444_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_445(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_445_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_446(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_446_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_447(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_447_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_448(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_448_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_449(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_449_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_450(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_450_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_451(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_451_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_452(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_452_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_453(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_453_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_454(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_454_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_455(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_455_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_456(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_456_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_457(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_457_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_458(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_458_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_459(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_459_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_460(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_460_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_461(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_461_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_462(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_462_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_463(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_463_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_464(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_464_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_465(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_465_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_466(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_466_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_467(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_467_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_468(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_468_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_469(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_469_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_470(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_470_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_471(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_471_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_472(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_472_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_473(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_473_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_474(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_474_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_475(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_475_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_476(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_476_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_477(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_477_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_478(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_478_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_479(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_479_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_480(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_480_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_481(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_481_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_482(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_482_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_483(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_483_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_484(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_484_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_485(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_485_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_486(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_486_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_487(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_487_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_488(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_488_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_489(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_489_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_490(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_490_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_491(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_491_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_492(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_492_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_493(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_493_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_494(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_494_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_495(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_495_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_496(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_496_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_497(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_497_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_498(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_498_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_499(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_499_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_500(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_500_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_501(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_501_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_502(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_502_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_503(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_503_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_504(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_504_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_505(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_505_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_506(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_506_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_507(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_507_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_508(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_508_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_509(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_509_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_510(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_510_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_511(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_511_D(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_512(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_512_D(o, s, l) +# +# define BOOST_PP_LIST_FOLD_RIGHT_257_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(258, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_258, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_258_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(259, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_259, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_259_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(260, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_260, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_260_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(261, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_261, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_261_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(262, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_262, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_262_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(263, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_263, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_263_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(264, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_264, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_264_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(265, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_265, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_265_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(266, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_266, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_266_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(267, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_267, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_267_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(268, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_268, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_268_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(269, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_269, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_269_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(270, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_270, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_270_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(271, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_271, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_271_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(272, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_272, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_272_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(273, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_273, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_273_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(274, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_274, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_274_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(275, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_275, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_275_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(276, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_276, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_276_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(277, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_277, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_277_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(278, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_278, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_278_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(279, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_279, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_279_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(280, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_280, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_280_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(281, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_281, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_281_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(282, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_282, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_282_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(283, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_283, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_283_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(284, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_284, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_284_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(285, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_285, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_285_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(286, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_286, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_286_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(287, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_287, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_287_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(288, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_288, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_288_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(289, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_289, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_289_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(290, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_290, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_290_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(291, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_291, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_291_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(292, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_292, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_292_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(293, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_293, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_293_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(294, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_294, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_294_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(295, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_295, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_295_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(296, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_296, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_296_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(297, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_297, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_297_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(298, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_298, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_298_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(299, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_299, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_299_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(300, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_300, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_300_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(301, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_301, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_301_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(302, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_302, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_302_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(303, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_303, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_303_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(304, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_304, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_304_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(305, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_305, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_305_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(306, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_306, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_306_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(307, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_307, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_307_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(308, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_308, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_308_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(309, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_309, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_309_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(310, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_310, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_310_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(311, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_311, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_311_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(312, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_312, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_312_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(313, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_313, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_313_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(314, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_314, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_314_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(315, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_315, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_315_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(316, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_316, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_316_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(317, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_317, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_317_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(318, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_318, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_318_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(319, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_319, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_319_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(320, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_320, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_320_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(321, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_321, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_321_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(322, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_322, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_322_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(323, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_323, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_323_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(324, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_324, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_324_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(325, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_325, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_325_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(326, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_326, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_326_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(327, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_327, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_327_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(328, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_328, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_328_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(329, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_329, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_329_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(330, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_330, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_330_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(331, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_331, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_331_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(332, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_332, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_332_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(333, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_333, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_333_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(334, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_334, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_334_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(335, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_335, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_335_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(336, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_336, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_336_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(337, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_337, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_337_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(338, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_338, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_338_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(339, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_339, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_339_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(340, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_340, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_340_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(341, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_341, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_341_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(342, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_342, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_342_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(343, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_343, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_343_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(344, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_344, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_344_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(345, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_345, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_345_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(346, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_346, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_346_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(347, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_347, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_347_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(348, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_348, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_348_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(349, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_349, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_349_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(350, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_350, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_350_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(351, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_351, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_351_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(352, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_352, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_352_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(353, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_353, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_353_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(354, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_354, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_354_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(355, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_355, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_355_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(356, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_356, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_356_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(357, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_357, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_357_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(358, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_358, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_358_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(359, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_359, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_359_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(360, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_360, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_360_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(361, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_361, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_361_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(362, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_362, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_362_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(363, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_363, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_363_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(364, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_364, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_364_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(365, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_365, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_365_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(366, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_366, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_366_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(367, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_367, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_367_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(368, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_368, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_368_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(369, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_369, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_369_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(370, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_370, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_370_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(371, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_371, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_371_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(372, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_372, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_372_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(373, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_373, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_373_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(374, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_374, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_374_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(375, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_375, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_375_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(376, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_376, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_376_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(377, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_377, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_377_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(378, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_378, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_378_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(379, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_379, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_379_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(380, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_380, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_380_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(381, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_381, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_381_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(382, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_382, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_382_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(383, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_383, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_383_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(384, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_384, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_384_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(385, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_385, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_385_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(386, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_386, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_386_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(387, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_387, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_387_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(388, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_388, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_388_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(389, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_389, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_389_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(390, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_390, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_390_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(391, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_391, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_391_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(392, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_392, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_392_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(393, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_393, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_393_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(394, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_394, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_394_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(395, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_395, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_395_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(396, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_396, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_396_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(397, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_397, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_397_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(398, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_398, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_398_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(399, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_399, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_399_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(400, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_400, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_400_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(401, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_401, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_401_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(402, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_402, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_402_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(403, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_403, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_403_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(404, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_404, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_404_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(405, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_405, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_405_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(406, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_406, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_406_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(407, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_407, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_407_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(408, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_408, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_408_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(409, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_409, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_409_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(410, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_410, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_410_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(411, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_411, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_411_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(412, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_412, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_412_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(413, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_413, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_413_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(414, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_414, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_414_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(415, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_415, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_415_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(416, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_416, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_416_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(417, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_417, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_417_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(418, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_418, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_418_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(419, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_419, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_419_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(420, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_420, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_420_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(421, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_421, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_421_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(422, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_422, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_422_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(423, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_423, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_423_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(424, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_424, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_424_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(425, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_425, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_425_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(426, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_426, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_426_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(427, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_427, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_427_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(428, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_428, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_428_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(429, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_429, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_429_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(430, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_430, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_430_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(431, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_431, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_431_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(432, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_432, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_432_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(433, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_433, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_433_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(434, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_434, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_434_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(435, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_435, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_435_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(436, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_436, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_436_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(437, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_437, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_437_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(438, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_438, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_438_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(439, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_439, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_439_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(440, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_440, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_440_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(441, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_441, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_441_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(442, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_442, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_442_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(443, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_443, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_443_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(444, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_444, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_444_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(445, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_445, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_445_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(446, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_446, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_446_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(447, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_447, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_447_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(448, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_448, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_448_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(449, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_449, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_449_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(450, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_450, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_450_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(451, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_451, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_451_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(452, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_452, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_452_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(453, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_453, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_453_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(454, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_454, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_454_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(455, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_455, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_455_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(456, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_456, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_456_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(457, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_457, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_457_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(458, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_458, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_458_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(459, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_459, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_459_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(460, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_460, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_460_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(461, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_461, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_461_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(462, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_462, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_462_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(463, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_463, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_463_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(464, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_464, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_464_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(465, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_465, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_465_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(466, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_466, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_466_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(467, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_467, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_467_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(468, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_468, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_468_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(469, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_469, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_469_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(470, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_470, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_470_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(471, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_471, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_471_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(472, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_472, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_472_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(473, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_473, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_473_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(474, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_474, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_474_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(475, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_475, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_475_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(476, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_476, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_476_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(477, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_477, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_477_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(478, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_478, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_478_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(479, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_479, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_479_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(480, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_480, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_480_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(481, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_481, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_481_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(482, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_482, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_482_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(483, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_483, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_483_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(484, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_484, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_484_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(485, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_485, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_485_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(486, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_486, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_486_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(487, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_487, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_487_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(488, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_488, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_488_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(489, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_489, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_489_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(490, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_490, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_490_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(491, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_491, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_491_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(492, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_492, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_492_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(493, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_493, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_493_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(494, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_494, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_494_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(495, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_495, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_495_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(496, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_496, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_496_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(497, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_497, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_497_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(498, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_498, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_498_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(499, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_499, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_499_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(500, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_500, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_500_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(501, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_501, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_501_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(502, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_502, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_502_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(503, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_503, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_503_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(504, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_504, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_504_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(505, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_505, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_505_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(506, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_506, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_506_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(507, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_507, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_507_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(508, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_508, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_508_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(509, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_509, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_509_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(510, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_510, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_510_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(511, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_511, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_511_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(512, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_512, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# define BOOST_PP_LIST_FOLD_RIGHT_512_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(513, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_513, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l)) +# +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_257(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_258(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_259(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_260(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_261(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_262(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_263(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_264(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_265(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_266(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_267(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_268(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_269(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_270(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_271(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_272(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_273(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_274(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_275(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_276(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_277(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_278(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_279(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_280(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_281(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_282(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_283(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_284(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_285(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_286(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_287(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_288(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_289(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_290(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_291(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_292(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_293(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_294(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_295(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_296(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_297(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_298(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_299(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_300(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_301(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_302(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_303(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_304(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_305(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_306(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_307(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_308(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_309(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_310(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_311(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_312(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_313(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_314(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_315(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_316(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_317(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_318(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_319(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_320(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_321(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_322(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_323(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_324(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_325(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_326(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_327(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_328(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_329(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_330(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_331(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_332(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_333(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_334(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_335(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_336(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_337(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_338(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_339(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_340(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_341(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_342(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_343(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_344(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_345(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_346(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_347(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_348(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_349(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_350(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_351(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_352(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_353(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_354(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_355(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_356(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_357(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_358(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_359(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_360(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_361(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_362(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_363(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_364(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_365(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_366(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_367(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_368(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_369(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_370(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_371(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_372(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_373(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_374(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_375(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_376(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_377(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_378(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_379(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_380(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_381(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_382(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_383(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_384(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_385(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_386(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_387(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_388(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_389(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_390(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_391(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_392(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_393(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_394(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_395(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_396(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_397(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_398(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_399(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_400(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_401(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_402(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_403(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_404(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_405(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_406(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_407(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_408(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_409(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_410(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_411(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_412(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_413(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_414(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_415(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_416(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_417(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_418(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_419(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_420(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_421(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_422(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_423(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_424(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_425(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_426(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_427(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_428(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_429(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_430(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_431(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_432(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_433(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_434(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_435(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_436(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_437(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_438(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_439(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_440(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_441(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_442(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_443(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_444(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_445(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_446(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_447(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_448(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_449(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_450(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_451(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_452(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_453(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_454(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_455(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_456(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_457(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_458(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_459(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_460(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_461(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_462(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_463(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_464(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_465(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_466(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_467(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_468(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_469(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_470(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_471(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_472(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_473(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_474(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_475(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_476(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_477(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_478(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_479(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_480(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_481(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_482(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_483(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_484(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_485(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_486(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_487(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_488(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_489(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_490(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_491(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_492(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_493(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_494(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_495(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_496(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_497(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_498(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_499(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_500(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_501(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_502(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_503(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_504(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_505(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_506(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_507(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_508(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_509(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_510(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_511(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_512(o, s, l) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/fold_left.hpp b/src/boost/boost/preprocessor/list/detail/fold_left.hpp index ed4f62229..4967d0bdb 100644 --- a/src/boost/boost/preprocessor/list/detail/fold_left.hpp +++ b/src/boost/boost/preprocessor/list/detail/fold_left.hpp @@ -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_LIST_DETAIL_FOLD_LEFT_HPP # define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # include @@ -276,4 +281,27 @@ # define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) # +# else +# +# include +# include +# include +# include +# include +# +# if BOOST_PP_LIMIT_WHILE == 256 +# include +# elif BOOST_PP_LIMIT_WHILE == 512 +# include +# include +# elif BOOST_PP_LIMIT_WHILE == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/list/detail/fold_right.hpp b/src/boost/boost/preprocessor/list/detail/fold_right.hpp index feca39b24..3b027697b 100644 --- a/src/boost/boost/preprocessor/list/detail/fold_right.hpp +++ b/src/boost/boost/preprocessor/list/detail/fold_right.hpp @@ -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_LIST_DETAIL_FOLD_RIGHT_HPP # define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # @@ -274,4 +279,25 @@ # define BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) BOOST_PP_LIST_FOLD_LEFT_255(o, s, BOOST_PP_LIST_REVERSE_D(255, l)) # define BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) BOOST_PP_LIST_FOLD_LEFT_256(o, s, BOOST_PP_LIST_REVERSE_D(256, l)) # +# else +# +# include +# include +# include +# +# if BOOST_PP_LIMIT_WHILE == 256 +# include +# elif BOOST_PP_LIMIT_WHILE == 512 +# include +# include +# elif BOOST_PP_LIMIT_WHILE == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/list/detail/limits/fold_left_1024.hpp b/src/boost/boost/preprocessor/list/detail/limits/fold_left_1024.hpp new file mode 100644 index 000000000..0067a39ba --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/limits/fold_left_1024.hpp @@ -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_LIST_DETAIL_FOLD_LEFT_1024_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_1024_HPP +# +# define BOOST_PP_LIST_FOLD_LEFT_513(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_514, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(514, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_514(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_515, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(515, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_515(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_516, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(516, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_516(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_517, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(517, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_517(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_518, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(518, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_518(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_519, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(519, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_519(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_520, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(520, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_520(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_521, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(521, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_521(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_522, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(522, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_522(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_523, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(523, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_523(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_524, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(524, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_524(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_525, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(525, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_525(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_526, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(526, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_526(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_527, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(527, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_527(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_528, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(528, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_528(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_529, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(529, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_529(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_530, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(530, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_530(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_531, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(531, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_531(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_532, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(532, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_532(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_533, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(533, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_533(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_534, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(534, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_534(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_535, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(535, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_535(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_536, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(536, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_536(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_537, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(537, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_537(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_538, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(538, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_538(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_539, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(539, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_539(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_540, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(540, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_540(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_541, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(541, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_541(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_542, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(542, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_542(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_543, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(543, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_543(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_544, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(544, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_544(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_545, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(545, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_545(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_546, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(546, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_546(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_547, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(547, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_547(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_548, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(548, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_548(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_549, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(549, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_549(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_550, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(550, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_550(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_551, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(551, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_551(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_552, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(552, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_552(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_553, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(553, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_553(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_554, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(554, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_554(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_555, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(555, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_555(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_556, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(556, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_556(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_557, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(557, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_557(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_558, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(558, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_558(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_559, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(559, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_559(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_560, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(560, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_560(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_561, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(561, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_561(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_562, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(562, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_562(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_563, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(563, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_563(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_564, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(564, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_564(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_565, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(565, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_565(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_566, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(566, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_566(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_567, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(567, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_567(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_568, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(568, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_568(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_569, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(569, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_569(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_570, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(570, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_570(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_571, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(571, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_571(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_572, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(572, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_572(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_573, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(573, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_573(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_574, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(574, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_574(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_575, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(575, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_575(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_576, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(576, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_576(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_577, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(577, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_577(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_578, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(578, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_578(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_579, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(579, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_579(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_580, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(580, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_580(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_581, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(581, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_581(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_582, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(582, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_582(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_583, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(583, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_583(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_584, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(584, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_584(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_585, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(585, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_585(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_586, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(586, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_586(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_587, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(587, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_587(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_588, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(588, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_588(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_589, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(589, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_589(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_590, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(590, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_590(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_591, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(591, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_591(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_592, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(592, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_592(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_593, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(593, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_593(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_594, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(594, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_594(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_595, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(595, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_595(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_596, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(596, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_596(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_597, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(597, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_597(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_598, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(598, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_598(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_599, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(599, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_599(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_600, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(600, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_600(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_601, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(601, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_601(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_602, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(602, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_602(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_603, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(603, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_603(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_604, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(604, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_604(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_605, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(605, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_605(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_606, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(606, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_606(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_607, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(607, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_607(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_608, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(608, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_608(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_609, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(609, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_609(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_610, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(610, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_610(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_611, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(611, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_611(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_612, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(612, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_612(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_613, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(613, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_613(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_614, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(614, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_614(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_615, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(615, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_615(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_616, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(616, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_616(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_617, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(617, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_617(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_618, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(618, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_618(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_619, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(619, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_619(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_620, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(620, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_620(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_621, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(621, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_621(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_622, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(622, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_622(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_623, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(623, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_623(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_624, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(624, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_624(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_625, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(625, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_625(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_626, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(626, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_626(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_627, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(627, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_627(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_628, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(628, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_628(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_629, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(629, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_629(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_630, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(630, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_630(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_631, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(631, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_631(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_632, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(632, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_632(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_633, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(633, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_633(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_634, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(634, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_634(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_635, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(635, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_635(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_636, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(636, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_636(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_637, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(637, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_637(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_638, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(638, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_638(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_639, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(639, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_639(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_640, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(640, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_640(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_641, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(641, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_641(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_642, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(642, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_642(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_643, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(643, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_643(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_644, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(644, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_644(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_645, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(645, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_645(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_646, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(646, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_646(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_647, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(647, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_647(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_648, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(648, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_648(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_649, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(649, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_649(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_650, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(650, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_650(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_651, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(651, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_651(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_652, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(652, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_652(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_653, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(653, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_653(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_654, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(654, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_654(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_655, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(655, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_655(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_656, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(656, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_656(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_657, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(657, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_657(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_658, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(658, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_658(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_659, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(659, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_659(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_660, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(660, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_660(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_661, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(661, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_661(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_662, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(662, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_662(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_663, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(663, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_663(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_664, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(664, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_664(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_665, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(665, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_665(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_666, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(666, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_666(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_667, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(667, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_667(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_668, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(668, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_668(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_669, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(669, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_669(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_670, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(670, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_670(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_671, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(671, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_671(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_672, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(672, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_672(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_673, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(673, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_673(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_674, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(674, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_674(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_675, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(675, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_675(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_676, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(676, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_676(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_677, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(677, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_677(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_678, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(678, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_678(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_679, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(679, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_679(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_680, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(680, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_680(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_681, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(681, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_681(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_682, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(682, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_682(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_683, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(683, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_683(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_684, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(684, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_684(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_685, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(685, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_685(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_686, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(686, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_686(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_687, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(687, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_687(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_688, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(688, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_688(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_689, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(689, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_689(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_690, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(690, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_690(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_691, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(691, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_691(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_692, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(692, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_692(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_693, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(693, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_693(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_694, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(694, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_694(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_695, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(695, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_695(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_696, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(696, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_696(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_697, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(697, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_697(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_698, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(698, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_698(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_699, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(699, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_699(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_700, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(700, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_700(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_701, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(701, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_701(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_702, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(702, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_702(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_703, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(703, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_703(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_704, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(704, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_704(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_705, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(705, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_705(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_706, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(706, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_706(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_707, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(707, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_707(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_708, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(708, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_708(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_709, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(709, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_709(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_710, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(710, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_710(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_711, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(711, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_711(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_712, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(712, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_712(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_713, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(713, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_713(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_714, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(714, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_714(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_715, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(715, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_715(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_716, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(716, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_716(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_717, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(717, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_717(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_718, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(718, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_718(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_719, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(719, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_719(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_720, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(720, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_720(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_721, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(721, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_721(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_722, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(722, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_722(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_723, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(723, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_723(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_724, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(724, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_724(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_725, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(725, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_725(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_726, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(726, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_726(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_727, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(727, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_727(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_728, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(728, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_728(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_729, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(729, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_729(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_730, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(730, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_730(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_731, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(731, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_731(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_732, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(732, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_732(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_733, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(733, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_733(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_734, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(734, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_734(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_735, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(735, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_735(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_736, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(736, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_736(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_737, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(737, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_737(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_738, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(738, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_738(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_739, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(739, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_739(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_740, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(740, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_740(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_741, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(741, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_741(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_742, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(742, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_742(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_743, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(743, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_743(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_744, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(744, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_744(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_745, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(745, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_745(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_746, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(746, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_746(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_747, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(747, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_747(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_748, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(748, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_748(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_749, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(749, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_749(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_750, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(750, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_750(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_751, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(751, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_751(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_752, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(752, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_752(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_753, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(753, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_753(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_754, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(754, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_754(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_755, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(755, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_755(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_756, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(756, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_756(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_757, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(757, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_757(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_758, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(758, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_758(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_759, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(759, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_759(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_760, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(760, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_760(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_761, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(761, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_761(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_762, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(762, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_762(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_763, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(763, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_763(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_764, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(764, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_764(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_765, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(765, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_765(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_766, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(766, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_766(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_767, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(767, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_767(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_768, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(768, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_768(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_769, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(769, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_769(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_770, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(770, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_770(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_771, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(771, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_771(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_772, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(772, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_772(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_773, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(773, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_773(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_774, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(774, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_774(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_775, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(775, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_775(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_776, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(776, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_776(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_777, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(777, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_777(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_778, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(778, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_778(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_779, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(779, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_779(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_780, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(780, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_780(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_781, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(781, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_781(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_782, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(782, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_782(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_783, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(783, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_783(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_784, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(784, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_784(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_785, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(785, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_785(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_786, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(786, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_786(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_787, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(787, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_787(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_788, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(788, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_788(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_789, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(789, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_789(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_790, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(790, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_790(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_791, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(791, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_791(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_792, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(792, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_792(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_793, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(793, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_793(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_794, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(794, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_794(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_795, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(795, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_795(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_796, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(796, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_796(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_797, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(797, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_797(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_798, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(798, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_798(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_799, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(799, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_799(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_800, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(800, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_800(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_801, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(801, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_801(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_802, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(802, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_802(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_803, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(803, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_803(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_804, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(804, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_804(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_805, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(805, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_805(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_806, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(806, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_806(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_807, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(807, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_807(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_808, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(808, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_808(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_809, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(809, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_809(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_810, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(810, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_810(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_811, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(811, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_811(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_812, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(812, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_812(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_813, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(813, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_813(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_814, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(814, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_814(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_815, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(815, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_815(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_816, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(816, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_816(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_817, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(817, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_817(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_818, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(818, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_818(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_819, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(819, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_819(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_820, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(820, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_820(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_821, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(821, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_821(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_822, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(822, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_822(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_823, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(823, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_823(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_824, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(824, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_824(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_825, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(825, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_825(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_826, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(826, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_826(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_827, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(827, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_827(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_828, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(828, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_828(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_829, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(829, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_829(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_830, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(830, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_830(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_831, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(831, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_831(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_832, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(832, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_832(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_833, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(833, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_833(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_834, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(834, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_834(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_835, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(835, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_835(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_836, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(836, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_836(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_837, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(837, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_837(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_838, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(838, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_838(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_839, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(839, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_839(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_840, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(840, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_840(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_841, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(841, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_841(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_842, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(842, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_842(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_843, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(843, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_843(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_844, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(844, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_844(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_845, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(845, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_845(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_846, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(846, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_846(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_847, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(847, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_847(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_848, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(848, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_848(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_849, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(849, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_849(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_850, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(850, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_850(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_851, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(851, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_851(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_852, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(852, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_852(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_853, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(853, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_853(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_854, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(854, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_854(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_855, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(855, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_855(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_856, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(856, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_856(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_857, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(857, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_857(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_858, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(858, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_858(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_859, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(859, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_859(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_860, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(860, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_860(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_861, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(861, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_861(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_862, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(862, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_862(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_863, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(863, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_863(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_864, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(864, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_864(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_865, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(865, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_865(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_866, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(866, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_866(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_867, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(867, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_867(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_868, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(868, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_868(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_869, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(869, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_869(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_870, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(870, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_870(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_871, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(871, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_871(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_872, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(872, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_872(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_873, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(873, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_873(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_874, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(874, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_874(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_875, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(875, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_875(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_876, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(876, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_876(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_877, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(877, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_877(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_878, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(878, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_878(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_879, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(879, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_879(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_880, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(880, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_880(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_881, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(881, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_881(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_882, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(882, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_882(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_883, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(883, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_883(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_884, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(884, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_884(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_885, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(885, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_885(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_886, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(886, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_886(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_887, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(887, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_887(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_888, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(888, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_888(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_889, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(889, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_889(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_890, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(890, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_890(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_891, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(891, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_891(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_892, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(892, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_892(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_893, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(893, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_893(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_894, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(894, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_894(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_895, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(895, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_895(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_896, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(896, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_896(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_897, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(897, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_897(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_898, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(898, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_898(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_899, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(899, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_899(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_900, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(900, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_900(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_901, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(901, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_901(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_902, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(902, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_902(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_903, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(903, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_903(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_904, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(904, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_904(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_905, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(905, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_905(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_906, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(906, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_906(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_907, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(907, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_907(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_908, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(908, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_908(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_909, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(909, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_909(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_910, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(910, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_910(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_911, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(911, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_911(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_912, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(912, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_912(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_913, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(913, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_913(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_914, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(914, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_914(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_915, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(915, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_915(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_916, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(916, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_916(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_917, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(917, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_917(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_918, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(918, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_918(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_919, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(919, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_919(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_920, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(920, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_920(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_921, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(921, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_921(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_922, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(922, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_922(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_923, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(923, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_923(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_924, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(924, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_924(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_925, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(925, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_925(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_926, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(926, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_926(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_927, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(927, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_927(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_928, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(928, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_928(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_929, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(929, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_929(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_930, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(930, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_930(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_931, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(931, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_931(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_932, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(932, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_932(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_933, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(933, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_933(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_934, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(934, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_934(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_935, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(935, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_935(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_936, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(936, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_936(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_937, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(937, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_937(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_938, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(938, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_938(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_939, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(939, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_939(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_940, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(940, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_940(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_941, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(941, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_941(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_942, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(942, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_942(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_943, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(943, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_943(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_944, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(944, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_944(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_945, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(945, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_945(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_946, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(946, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_946(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_947, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(947, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_947(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_948, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(948, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_948(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_949, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(949, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_949(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_950, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(950, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_950(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_951, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(951, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_951(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_952, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(952, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_952(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_953, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(953, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_953(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_954, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(954, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_954(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_955, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(955, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_955(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_956, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(956, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_956(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_957, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(957, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_957(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_958, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(958, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_958(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_959, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(959, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_959(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_960, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(960, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_960(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_961, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(961, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_961(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_962, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(962, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_962(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_963, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(963, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_963(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_964, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(964, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_964(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_965, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(965, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_965(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_966, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(966, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_966(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_967, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(967, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_967(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_968, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(968, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_968(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_969, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(969, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_969(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_970, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(970, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_970(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_971, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(971, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_971(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_972, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(972, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_972(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_973, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(973, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_973(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_974, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(974, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_974(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_975, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(975, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_975(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_976, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(976, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_976(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_977, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(977, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_977(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_978, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(978, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_978(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_979, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(979, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_979(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_980, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(980, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_980(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_981, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(981, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_981(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_982, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(982, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_982(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_983, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(983, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_983(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_984, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(984, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_984(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_985, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(985, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_985(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_986, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(986, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_986(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_987, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(987, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_987(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_988, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(988, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_988(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_989, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(989, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_989(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_990, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(990, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_990(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_991, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(991, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_991(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_992, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(992, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_992(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_993, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(993, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_993(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_994, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(994, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_994(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_995, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(995, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_995(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_996, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(996, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_996(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_997, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(997, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_997(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_998, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(998, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_998(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_999, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(999, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_999(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1000, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1000, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1000(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1001, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1001, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1001(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1002, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1002, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1002(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1003, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1003, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1003(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1004, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1004, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1004(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1005, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1005, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1005(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1006, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1006, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1006(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1007, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1007, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1007(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1008, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1008, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1008(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1009, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1009, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1009(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1010, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1010, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1010(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1011, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1011, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1011(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1012, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1012, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1012(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1013, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1013, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1013(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1014, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1014, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1014(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1015, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1015, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1015(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1016, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1016, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1016(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1017, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1017, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1017(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1018, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1018, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1018(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1019, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1019, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1019(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1020, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1020, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1020(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1021, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1021, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1021(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1022, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1022, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1022(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1023, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1023, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1023(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1024, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1024, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1024(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1025, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1025, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/limits/fold_left_256.hpp b/src/boost/boost/preprocessor/list/detail/limits/fold_left_256.hpp new file mode 100644 index 000000000..9d71c977e --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/limits/fold_left_256.hpp @@ -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_LIST_DETAIL_FOLD_LEFT_256_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_256_HPP +# +# define BOOST_PP_LIST_FOLD_LEFT_0(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_1, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(1, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/limits/fold_left_512.hpp b/src/boost/boost/preprocessor/list/detail/limits/fold_left_512.hpp new file mode 100644 index 000000000..cdbc29987 --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/limits/fold_left_512.hpp @@ -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) */ +# /* Revised by Edward Diener (2020) */ +# +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_512_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_512_HPP +# +# define BOOST_PP_LIST_FOLD_LEFT_257(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_258, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(258, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_258(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_259, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(259, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_259(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_260, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(260, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_260(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_261, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(261, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_261(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_262, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(262, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_262(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_263, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(263, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_263(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_264, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(264, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_264(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_265, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(265, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_265(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_266, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(266, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_266(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_267, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(267, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_267(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_268, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(268, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_268(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_269, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(269, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_269(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_270, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(270, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_270(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_271, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(271, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_271(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_272, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(272, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_272(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_273, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(273, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_273(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_274, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(274, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_274(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_275, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(275, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_275(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_276, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(276, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_276(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_277, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(277, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_277(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_278, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(278, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_278(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_279, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(279, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_279(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_280, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(280, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_280(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_281, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(281, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_281(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_282, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(282, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_282(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_283, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(283, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_283(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_284, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(284, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_284(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_285, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(285, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_285(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_286, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(286, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_286(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_287, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(287, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_287(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_288, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(288, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_288(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_289, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(289, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_289(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_290, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(290, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_290(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_291, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(291, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_291(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_292, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(292, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_292(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_293, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(293, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_293(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_294, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(294, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_294(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_295, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(295, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_295(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_296, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(296, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_296(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_297, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(297, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_297(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_298, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(298, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_298(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_299, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(299, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_299(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_300, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(300, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_300(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_301, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(301, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_301(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_302, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(302, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_302(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_303, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(303, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_303(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_304, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(304, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_304(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_305, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(305, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_305(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_306, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(306, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_306(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_307, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(307, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_307(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_308, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(308, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_308(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_309, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(309, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_309(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_310, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(310, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_310(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_311, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(311, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_311(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_312, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(312, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_312(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_313, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(313, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_313(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_314, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(314, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_314(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_315, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(315, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_315(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_316, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(316, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_316(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_317, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(317, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_317(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_318, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(318, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_318(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_319, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(319, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_319(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_320, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(320, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_320(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_321, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(321, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_321(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_322, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(322, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_322(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_323, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(323, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_323(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_324, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(324, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_324(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_325, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(325, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_325(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_326, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(326, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_326(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_327, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(327, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_327(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_328, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(328, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_328(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_329, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(329, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_329(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_330, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(330, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_330(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_331, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(331, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_331(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_332, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(332, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_332(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_333, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(333, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_333(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_334, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(334, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_334(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_335, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(335, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_335(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_336, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(336, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_336(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_337, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(337, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_337(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_338, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(338, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_338(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_339, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(339, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_339(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_340, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(340, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_340(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_341, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(341, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_341(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_342, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(342, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_342(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_343, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(343, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_343(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_344, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(344, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_344(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_345, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(345, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_345(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_346, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(346, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_346(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_347, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(347, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_347(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_348, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(348, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_348(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_349, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(349, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_349(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_350, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(350, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_350(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_351, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(351, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_351(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_352, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(352, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_352(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_353, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(353, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_353(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_354, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(354, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_354(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_355, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(355, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_355(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_356, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(356, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_356(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_357, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(357, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_357(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_358, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(358, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_358(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_359, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(359, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_359(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_360, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(360, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_360(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_361, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(361, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_361(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_362, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(362, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_362(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_363, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(363, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_363(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_364, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(364, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_364(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_365, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(365, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_365(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_366, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(366, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_366(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_367, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(367, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_367(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_368, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(368, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_368(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_369, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(369, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_369(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_370, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(370, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_370(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_371, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(371, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_371(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_372, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(372, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_372(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_373, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(373, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_373(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_374, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(374, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_374(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_375, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(375, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_375(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_376, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(376, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_376(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_377, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(377, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_377(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_378, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(378, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_378(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_379, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(379, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_379(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_380, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(380, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_380(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_381, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(381, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_381(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_382, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(382, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_382(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_383, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(383, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_383(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_384, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(384, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_384(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_385, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(385, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_385(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_386, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(386, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_386(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_387, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(387, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_387(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_388, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(388, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_388(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_389, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(389, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_389(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_390, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(390, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_390(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_391, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(391, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_391(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_392, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(392, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_392(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_393, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(393, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_393(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_394, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(394, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_394(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_395, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(395, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_395(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_396, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(396, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_396(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_397, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(397, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_397(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_398, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(398, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_398(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_399, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(399, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_399(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_400, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(400, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_400(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_401, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(401, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_401(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_402, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(402, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_402(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_403, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(403, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_403(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_404, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(404, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_404(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_405, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(405, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_405(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_406, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(406, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_406(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_407, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(407, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_407(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_408, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(408, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_408(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_409, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(409, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_409(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_410, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(410, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_410(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_411, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(411, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_411(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_412, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(412, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_412(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_413, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(413, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_413(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_414, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(414, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_414(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_415, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(415, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_415(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_416, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(416, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_416(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_417, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(417, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_417(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_418, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(418, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_418(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_419, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(419, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_419(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_420, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(420, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_420(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_421, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(421, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_421(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_422, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(422, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_422(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_423, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(423, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_423(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_424, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(424, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_424(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_425, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(425, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_425(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_426, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(426, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_426(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_427, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(427, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_427(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_428, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(428, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_428(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_429, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(429, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_429(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_430, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(430, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_430(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_431, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(431, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_431(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_432, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(432, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_432(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_433, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(433, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_433(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_434, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(434, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_434(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_435, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(435, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_435(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_436, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(436, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_436(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_437, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(437, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_437(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_438, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(438, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_438(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_439, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(439, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_439(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_440, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(440, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_440(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_441, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(441, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_441(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_442, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(442, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_442(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_443, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(443, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_443(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_444, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(444, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_444(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_445, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(445, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_445(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_446, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(446, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_446(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_447, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(447, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_447(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_448, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(448, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_448(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_449, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(449, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_449(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_450, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(450, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_450(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_451, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(451, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_451(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_452, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(452, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_452(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_453, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(453, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_453(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_454, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(454, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_454(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_455, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(455, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_455(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_456, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(456, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_456(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_457, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(457, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_457(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_458, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(458, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_458(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_459, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(459, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_459(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_460, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(460, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_460(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_461, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(461, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_461(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_462, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(462, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_462(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_463, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(463, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_463(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_464, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(464, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_464(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_465, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(465, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_465(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_466, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(466, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_466(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_467, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(467, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_467(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_468, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(468, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_468(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_469, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(469, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_469(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_470, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(470, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_470(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_471, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(471, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_471(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_472, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(472, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_472(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_473, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(473, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_473(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_474, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(474, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_474(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_475, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(475, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_475(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_476, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(476, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_476(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_477, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(477, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_477(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_478, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(478, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_478(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_479, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(479, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_479(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_480, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(480, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_480(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_481, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(481, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_481(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_482, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(482, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_482(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_483, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(483, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_483(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_484, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(484, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_484(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_485, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(485, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_485(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_486, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(486, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_486(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_487, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(487, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_487(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_488, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(488, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_488(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_489, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(489, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_489(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_490, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(490, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_490(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_491, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(491, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_491(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_492, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(492, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_492(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_493, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(493, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_493(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_494, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(494, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_494(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_495, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(495, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_495(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_496, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(496, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_496(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_497, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(497, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_497(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_498, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(498, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_498(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_499, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(499, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_499(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_500, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(500, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_500(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_501, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(501, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_501(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_502, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(502, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_502(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_503, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(503, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_503(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_504, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(504, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_504(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_505, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(505, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_505(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_506, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(506, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_506(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_507, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(507, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_507(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_508, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(508, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_508(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_509, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(509, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_509(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_510, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(510, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_510(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_511, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(511, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_511(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_512, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(512, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# define BOOST_PP_LIST_FOLD_LEFT_512(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_513, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(513, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l)) +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/limits/fold_right_1024.hpp b/src/boost/boost/preprocessor/list/detail/limits/fold_right_1024.hpp new file mode 100644 index 000000000..dcad87dbd --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/limits/fold_right_1024.hpp @@ -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_LIST_DETAIL_FOLD_RIGHT_1024_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_1024_HPP +# +# define BOOST_PP_LIST_FOLD_RIGHT_513(o, s, l) BOOST_PP_LIST_FOLD_LEFT_513(o, s, BOOST_PP_LIST_REVERSE_D(513, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_514(o, s, l) BOOST_PP_LIST_FOLD_LEFT_514(o, s, BOOST_PP_LIST_REVERSE_D(514, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_515(o, s, l) BOOST_PP_LIST_FOLD_LEFT_515(o, s, BOOST_PP_LIST_REVERSE_D(515, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_516(o, s, l) BOOST_PP_LIST_FOLD_LEFT_516(o, s, BOOST_PP_LIST_REVERSE_D(516, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_517(o, s, l) BOOST_PP_LIST_FOLD_LEFT_517(o, s, BOOST_PP_LIST_REVERSE_D(517, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_518(o, s, l) BOOST_PP_LIST_FOLD_LEFT_518(o, s, BOOST_PP_LIST_REVERSE_D(518, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_519(o, s, l) BOOST_PP_LIST_FOLD_LEFT_519(o, s, BOOST_PP_LIST_REVERSE_D(519, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_520(o, s, l) BOOST_PP_LIST_FOLD_LEFT_520(o, s, BOOST_PP_LIST_REVERSE_D(520, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_521(o, s, l) BOOST_PP_LIST_FOLD_LEFT_521(o, s, BOOST_PP_LIST_REVERSE_D(521, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_522(o, s, l) BOOST_PP_LIST_FOLD_LEFT_522(o, s, BOOST_PP_LIST_REVERSE_D(522, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_523(o, s, l) BOOST_PP_LIST_FOLD_LEFT_523(o, s, BOOST_PP_LIST_REVERSE_D(523, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_524(o, s, l) BOOST_PP_LIST_FOLD_LEFT_524(o, s, BOOST_PP_LIST_REVERSE_D(524, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_525(o, s, l) BOOST_PP_LIST_FOLD_LEFT_525(o, s, BOOST_PP_LIST_REVERSE_D(525, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_526(o, s, l) BOOST_PP_LIST_FOLD_LEFT_526(o, s, BOOST_PP_LIST_REVERSE_D(526, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_527(o, s, l) BOOST_PP_LIST_FOLD_LEFT_527(o, s, BOOST_PP_LIST_REVERSE_D(527, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_528(o, s, l) BOOST_PP_LIST_FOLD_LEFT_528(o, s, BOOST_PP_LIST_REVERSE_D(528, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_529(o, s, l) BOOST_PP_LIST_FOLD_LEFT_529(o, s, BOOST_PP_LIST_REVERSE_D(529, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_530(o, s, l) BOOST_PP_LIST_FOLD_LEFT_530(o, s, BOOST_PP_LIST_REVERSE_D(530, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_531(o, s, l) BOOST_PP_LIST_FOLD_LEFT_531(o, s, BOOST_PP_LIST_REVERSE_D(531, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_532(o, s, l) BOOST_PP_LIST_FOLD_LEFT_532(o, s, BOOST_PP_LIST_REVERSE_D(532, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_533(o, s, l) BOOST_PP_LIST_FOLD_LEFT_533(o, s, BOOST_PP_LIST_REVERSE_D(533, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_534(o, s, l) BOOST_PP_LIST_FOLD_LEFT_534(o, s, BOOST_PP_LIST_REVERSE_D(534, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_535(o, s, l) BOOST_PP_LIST_FOLD_LEFT_535(o, s, BOOST_PP_LIST_REVERSE_D(535, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_536(o, s, l) BOOST_PP_LIST_FOLD_LEFT_536(o, s, BOOST_PP_LIST_REVERSE_D(536, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_537(o, s, l) BOOST_PP_LIST_FOLD_LEFT_537(o, s, BOOST_PP_LIST_REVERSE_D(537, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_538(o, s, l) BOOST_PP_LIST_FOLD_LEFT_538(o, s, BOOST_PP_LIST_REVERSE_D(538, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_539(o, s, l) BOOST_PP_LIST_FOLD_LEFT_539(o, s, BOOST_PP_LIST_REVERSE_D(539, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_540(o, s, l) BOOST_PP_LIST_FOLD_LEFT_540(o, s, BOOST_PP_LIST_REVERSE_D(540, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_541(o, s, l) BOOST_PP_LIST_FOLD_LEFT_541(o, s, BOOST_PP_LIST_REVERSE_D(541, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_542(o, s, l) BOOST_PP_LIST_FOLD_LEFT_542(o, s, BOOST_PP_LIST_REVERSE_D(542, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_543(o, s, l) BOOST_PP_LIST_FOLD_LEFT_543(o, s, BOOST_PP_LIST_REVERSE_D(543, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_544(o, s, l) BOOST_PP_LIST_FOLD_LEFT_544(o, s, BOOST_PP_LIST_REVERSE_D(544, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_545(o, s, l) BOOST_PP_LIST_FOLD_LEFT_545(o, s, BOOST_PP_LIST_REVERSE_D(545, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_546(o, s, l) BOOST_PP_LIST_FOLD_LEFT_546(o, s, BOOST_PP_LIST_REVERSE_D(546, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_547(o, s, l) BOOST_PP_LIST_FOLD_LEFT_547(o, s, BOOST_PP_LIST_REVERSE_D(547, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_548(o, s, l) BOOST_PP_LIST_FOLD_LEFT_548(o, s, BOOST_PP_LIST_REVERSE_D(548, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_549(o, s, l) BOOST_PP_LIST_FOLD_LEFT_549(o, s, BOOST_PP_LIST_REVERSE_D(549, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_550(o, s, l) BOOST_PP_LIST_FOLD_LEFT_550(o, s, BOOST_PP_LIST_REVERSE_D(550, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_551(o, s, l) BOOST_PP_LIST_FOLD_LEFT_551(o, s, BOOST_PP_LIST_REVERSE_D(551, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_552(o, s, l) BOOST_PP_LIST_FOLD_LEFT_552(o, s, BOOST_PP_LIST_REVERSE_D(552, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_553(o, s, l) BOOST_PP_LIST_FOLD_LEFT_553(o, s, BOOST_PP_LIST_REVERSE_D(553, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_554(o, s, l) BOOST_PP_LIST_FOLD_LEFT_554(o, s, BOOST_PP_LIST_REVERSE_D(554, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_555(o, s, l) BOOST_PP_LIST_FOLD_LEFT_555(o, s, BOOST_PP_LIST_REVERSE_D(555, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_556(o, s, l) BOOST_PP_LIST_FOLD_LEFT_556(o, s, BOOST_PP_LIST_REVERSE_D(556, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_557(o, s, l) BOOST_PP_LIST_FOLD_LEFT_557(o, s, BOOST_PP_LIST_REVERSE_D(557, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_558(o, s, l) BOOST_PP_LIST_FOLD_LEFT_558(o, s, BOOST_PP_LIST_REVERSE_D(558, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_559(o, s, l) BOOST_PP_LIST_FOLD_LEFT_559(o, s, BOOST_PP_LIST_REVERSE_D(559, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_560(o, s, l) BOOST_PP_LIST_FOLD_LEFT_560(o, s, BOOST_PP_LIST_REVERSE_D(560, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_561(o, s, l) BOOST_PP_LIST_FOLD_LEFT_561(o, s, BOOST_PP_LIST_REVERSE_D(561, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_562(o, s, l) BOOST_PP_LIST_FOLD_LEFT_562(o, s, BOOST_PP_LIST_REVERSE_D(562, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_563(o, s, l) BOOST_PP_LIST_FOLD_LEFT_563(o, s, BOOST_PP_LIST_REVERSE_D(563, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_564(o, s, l) BOOST_PP_LIST_FOLD_LEFT_564(o, s, BOOST_PP_LIST_REVERSE_D(564, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_565(o, s, l) BOOST_PP_LIST_FOLD_LEFT_565(o, s, BOOST_PP_LIST_REVERSE_D(565, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_566(o, s, l) BOOST_PP_LIST_FOLD_LEFT_566(o, s, BOOST_PP_LIST_REVERSE_D(566, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_567(o, s, l) BOOST_PP_LIST_FOLD_LEFT_567(o, s, BOOST_PP_LIST_REVERSE_D(567, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_568(o, s, l) BOOST_PP_LIST_FOLD_LEFT_568(o, s, BOOST_PP_LIST_REVERSE_D(568, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_569(o, s, l) BOOST_PP_LIST_FOLD_LEFT_569(o, s, BOOST_PP_LIST_REVERSE_D(569, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_570(o, s, l) BOOST_PP_LIST_FOLD_LEFT_570(o, s, BOOST_PP_LIST_REVERSE_D(570, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_571(o, s, l) BOOST_PP_LIST_FOLD_LEFT_571(o, s, BOOST_PP_LIST_REVERSE_D(571, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_572(o, s, l) BOOST_PP_LIST_FOLD_LEFT_572(o, s, BOOST_PP_LIST_REVERSE_D(572, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_573(o, s, l) BOOST_PP_LIST_FOLD_LEFT_573(o, s, BOOST_PP_LIST_REVERSE_D(573, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_574(o, s, l) BOOST_PP_LIST_FOLD_LEFT_574(o, s, BOOST_PP_LIST_REVERSE_D(574, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_575(o, s, l) BOOST_PP_LIST_FOLD_LEFT_575(o, s, BOOST_PP_LIST_REVERSE_D(575, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_576(o, s, l) BOOST_PP_LIST_FOLD_LEFT_576(o, s, BOOST_PP_LIST_REVERSE_D(576, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_577(o, s, l) BOOST_PP_LIST_FOLD_LEFT_577(o, s, BOOST_PP_LIST_REVERSE_D(577, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_578(o, s, l) BOOST_PP_LIST_FOLD_LEFT_578(o, s, BOOST_PP_LIST_REVERSE_D(578, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_579(o, s, l) BOOST_PP_LIST_FOLD_LEFT_579(o, s, BOOST_PP_LIST_REVERSE_D(579, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_580(o, s, l) BOOST_PP_LIST_FOLD_LEFT_580(o, s, BOOST_PP_LIST_REVERSE_D(580, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_581(o, s, l) BOOST_PP_LIST_FOLD_LEFT_581(o, s, BOOST_PP_LIST_REVERSE_D(581, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_582(o, s, l) BOOST_PP_LIST_FOLD_LEFT_582(o, s, BOOST_PP_LIST_REVERSE_D(582, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_583(o, s, l) BOOST_PP_LIST_FOLD_LEFT_583(o, s, BOOST_PP_LIST_REVERSE_D(583, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_584(o, s, l) BOOST_PP_LIST_FOLD_LEFT_584(o, s, BOOST_PP_LIST_REVERSE_D(584, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_585(o, s, l) BOOST_PP_LIST_FOLD_LEFT_585(o, s, BOOST_PP_LIST_REVERSE_D(585, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_586(o, s, l) BOOST_PP_LIST_FOLD_LEFT_586(o, s, BOOST_PP_LIST_REVERSE_D(586, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_587(o, s, l) BOOST_PP_LIST_FOLD_LEFT_587(o, s, BOOST_PP_LIST_REVERSE_D(587, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_588(o, s, l) BOOST_PP_LIST_FOLD_LEFT_588(o, s, BOOST_PP_LIST_REVERSE_D(588, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_589(o, s, l) BOOST_PP_LIST_FOLD_LEFT_589(o, s, BOOST_PP_LIST_REVERSE_D(589, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_590(o, s, l) BOOST_PP_LIST_FOLD_LEFT_590(o, s, BOOST_PP_LIST_REVERSE_D(590, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_591(o, s, l) BOOST_PP_LIST_FOLD_LEFT_591(o, s, BOOST_PP_LIST_REVERSE_D(591, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_592(o, s, l) BOOST_PP_LIST_FOLD_LEFT_592(o, s, BOOST_PP_LIST_REVERSE_D(592, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_593(o, s, l) BOOST_PP_LIST_FOLD_LEFT_593(o, s, BOOST_PP_LIST_REVERSE_D(593, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_594(o, s, l) BOOST_PP_LIST_FOLD_LEFT_594(o, s, BOOST_PP_LIST_REVERSE_D(594, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_595(o, s, l) BOOST_PP_LIST_FOLD_LEFT_595(o, s, BOOST_PP_LIST_REVERSE_D(595, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_596(o, s, l) BOOST_PP_LIST_FOLD_LEFT_596(o, s, BOOST_PP_LIST_REVERSE_D(596, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_597(o, s, l) BOOST_PP_LIST_FOLD_LEFT_597(o, s, BOOST_PP_LIST_REVERSE_D(597, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_598(o, s, l) BOOST_PP_LIST_FOLD_LEFT_598(o, s, BOOST_PP_LIST_REVERSE_D(598, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_599(o, s, l) BOOST_PP_LIST_FOLD_LEFT_599(o, s, BOOST_PP_LIST_REVERSE_D(599, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_600(o, s, l) BOOST_PP_LIST_FOLD_LEFT_600(o, s, BOOST_PP_LIST_REVERSE_D(600, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_601(o, s, l) BOOST_PP_LIST_FOLD_LEFT_601(o, s, BOOST_PP_LIST_REVERSE_D(601, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_602(o, s, l) BOOST_PP_LIST_FOLD_LEFT_602(o, s, BOOST_PP_LIST_REVERSE_D(602, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_603(o, s, l) BOOST_PP_LIST_FOLD_LEFT_603(o, s, BOOST_PP_LIST_REVERSE_D(603, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_604(o, s, l) BOOST_PP_LIST_FOLD_LEFT_604(o, s, BOOST_PP_LIST_REVERSE_D(604, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_605(o, s, l) BOOST_PP_LIST_FOLD_LEFT_605(o, s, BOOST_PP_LIST_REVERSE_D(605, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_606(o, s, l) BOOST_PP_LIST_FOLD_LEFT_606(o, s, BOOST_PP_LIST_REVERSE_D(606, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_607(o, s, l) BOOST_PP_LIST_FOLD_LEFT_607(o, s, BOOST_PP_LIST_REVERSE_D(607, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_608(o, s, l) BOOST_PP_LIST_FOLD_LEFT_608(o, s, BOOST_PP_LIST_REVERSE_D(608, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_609(o, s, l) BOOST_PP_LIST_FOLD_LEFT_609(o, s, BOOST_PP_LIST_REVERSE_D(609, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_610(o, s, l) BOOST_PP_LIST_FOLD_LEFT_610(o, s, BOOST_PP_LIST_REVERSE_D(610, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_611(o, s, l) BOOST_PP_LIST_FOLD_LEFT_611(o, s, BOOST_PP_LIST_REVERSE_D(611, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_612(o, s, l) BOOST_PP_LIST_FOLD_LEFT_612(o, s, BOOST_PP_LIST_REVERSE_D(612, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_613(o, s, l) BOOST_PP_LIST_FOLD_LEFT_613(o, s, BOOST_PP_LIST_REVERSE_D(613, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_614(o, s, l) BOOST_PP_LIST_FOLD_LEFT_614(o, s, BOOST_PP_LIST_REVERSE_D(614, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_615(o, s, l) BOOST_PP_LIST_FOLD_LEFT_615(o, s, BOOST_PP_LIST_REVERSE_D(615, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_616(o, s, l) BOOST_PP_LIST_FOLD_LEFT_616(o, s, BOOST_PP_LIST_REVERSE_D(616, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_617(o, s, l) BOOST_PP_LIST_FOLD_LEFT_617(o, s, BOOST_PP_LIST_REVERSE_D(617, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_618(o, s, l) BOOST_PP_LIST_FOLD_LEFT_618(o, s, BOOST_PP_LIST_REVERSE_D(618, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_619(o, s, l) BOOST_PP_LIST_FOLD_LEFT_619(o, s, BOOST_PP_LIST_REVERSE_D(619, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_620(o, s, l) BOOST_PP_LIST_FOLD_LEFT_620(o, s, BOOST_PP_LIST_REVERSE_D(620, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_621(o, s, l) BOOST_PP_LIST_FOLD_LEFT_621(o, s, BOOST_PP_LIST_REVERSE_D(621, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_622(o, s, l) BOOST_PP_LIST_FOLD_LEFT_622(o, s, BOOST_PP_LIST_REVERSE_D(622, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_623(o, s, l) BOOST_PP_LIST_FOLD_LEFT_623(o, s, BOOST_PP_LIST_REVERSE_D(623, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_624(o, s, l) BOOST_PP_LIST_FOLD_LEFT_624(o, s, BOOST_PP_LIST_REVERSE_D(624, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_625(o, s, l) BOOST_PP_LIST_FOLD_LEFT_625(o, s, BOOST_PP_LIST_REVERSE_D(625, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_626(o, s, l) BOOST_PP_LIST_FOLD_LEFT_626(o, s, BOOST_PP_LIST_REVERSE_D(626, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_627(o, s, l) BOOST_PP_LIST_FOLD_LEFT_627(o, s, BOOST_PP_LIST_REVERSE_D(627, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_628(o, s, l) BOOST_PP_LIST_FOLD_LEFT_628(o, s, BOOST_PP_LIST_REVERSE_D(628, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_629(o, s, l) BOOST_PP_LIST_FOLD_LEFT_629(o, s, BOOST_PP_LIST_REVERSE_D(629, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_630(o, s, l) BOOST_PP_LIST_FOLD_LEFT_630(o, s, BOOST_PP_LIST_REVERSE_D(630, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_631(o, s, l) BOOST_PP_LIST_FOLD_LEFT_631(o, s, BOOST_PP_LIST_REVERSE_D(631, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_632(o, s, l) BOOST_PP_LIST_FOLD_LEFT_632(o, s, BOOST_PP_LIST_REVERSE_D(632, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_633(o, s, l) BOOST_PP_LIST_FOLD_LEFT_633(o, s, BOOST_PP_LIST_REVERSE_D(633, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_634(o, s, l) BOOST_PP_LIST_FOLD_LEFT_634(o, s, BOOST_PP_LIST_REVERSE_D(634, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_635(o, s, l) BOOST_PP_LIST_FOLD_LEFT_635(o, s, BOOST_PP_LIST_REVERSE_D(635, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_636(o, s, l) BOOST_PP_LIST_FOLD_LEFT_636(o, s, BOOST_PP_LIST_REVERSE_D(636, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_637(o, s, l) BOOST_PP_LIST_FOLD_LEFT_637(o, s, BOOST_PP_LIST_REVERSE_D(637, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_638(o, s, l) BOOST_PP_LIST_FOLD_LEFT_638(o, s, BOOST_PP_LIST_REVERSE_D(638, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_639(o, s, l) BOOST_PP_LIST_FOLD_LEFT_639(o, s, BOOST_PP_LIST_REVERSE_D(639, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_640(o, s, l) BOOST_PP_LIST_FOLD_LEFT_640(o, s, BOOST_PP_LIST_REVERSE_D(640, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_641(o, s, l) BOOST_PP_LIST_FOLD_LEFT_641(o, s, BOOST_PP_LIST_REVERSE_D(641, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_642(o, s, l) BOOST_PP_LIST_FOLD_LEFT_642(o, s, BOOST_PP_LIST_REVERSE_D(642, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_643(o, s, l) BOOST_PP_LIST_FOLD_LEFT_643(o, s, BOOST_PP_LIST_REVERSE_D(643, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_644(o, s, l) BOOST_PP_LIST_FOLD_LEFT_644(o, s, BOOST_PP_LIST_REVERSE_D(644, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_645(o, s, l) BOOST_PP_LIST_FOLD_LEFT_645(o, s, BOOST_PP_LIST_REVERSE_D(645, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_646(o, s, l) BOOST_PP_LIST_FOLD_LEFT_646(o, s, BOOST_PP_LIST_REVERSE_D(646, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_647(o, s, l) BOOST_PP_LIST_FOLD_LEFT_647(o, s, BOOST_PP_LIST_REVERSE_D(647, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_648(o, s, l) BOOST_PP_LIST_FOLD_LEFT_648(o, s, BOOST_PP_LIST_REVERSE_D(648, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_649(o, s, l) BOOST_PP_LIST_FOLD_LEFT_649(o, s, BOOST_PP_LIST_REVERSE_D(649, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_650(o, s, l) BOOST_PP_LIST_FOLD_LEFT_650(o, s, BOOST_PP_LIST_REVERSE_D(650, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_651(o, s, l) BOOST_PP_LIST_FOLD_LEFT_651(o, s, BOOST_PP_LIST_REVERSE_D(651, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_652(o, s, l) BOOST_PP_LIST_FOLD_LEFT_652(o, s, BOOST_PP_LIST_REVERSE_D(652, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_653(o, s, l) BOOST_PP_LIST_FOLD_LEFT_653(o, s, BOOST_PP_LIST_REVERSE_D(653, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_654(o, s, l) BOOST_PP_LIST_FOLD_LEFT_654(o, s, BOOST_PP_LIST_REVERSE_D(654, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_655(o, s, l) BOOST_PP_LIST_FOLD_LEFT_655(o, s, BOOST_PP_LIST_REVERSE_D(655, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_656(o, s, l) BOOST_PP_LIST_FOLD_LEFT_656(o, s, BOOST_PP_LIST_REVERSE_D(656, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_657(o, s, l) BOOST_PP_LIST_FOLD_LEFT_657(o, s, BOOST_PP_LIST_REVERSE_D(657, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_658(o, s, l) BOOST_PP_LIST_FOLD_LEFT_658(o, s, BOOST_PP_LIST_REVERSE_D(658, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_659(o, s, l) BOOST_PP_LIST_FOLD_LEFT_659(o, s, BOOST_PP_LIST_REVERSE_D(659, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_660(o, s, l) BOOST_PP_LIST_FOLD_LEFT_660(o, s, BOOST_PP_LIST_REVERSE_D(660, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_661(o, s, l) BOOST_PP_LIST_FOLD_LEFT_661(o, s, BOOST_PP_LIST_REVERSE_D(661, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_662(o, s, l) BOOST_PP_LIST_FOLD_LEFT_662(o, s, BOOST_PP_LIST_REVERSE_D(662, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_663(o, s, l) BOOST_PP_LIST_FOLD_LEFT_663(o, s, BOOST_PP_LIST_REVERSE_D(663, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_664(o, s, l) BOOST_PP_LIST_FOLD_LEFT_664(o, s, BOOST_PP_LIST_REVERSE_D(664, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_665(o, s, l) BOOST_PP_LIST_FOLD_LEFT_665(o, s, BOOST_PP_LIST_REVERSE_D(665, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_666(o, s, l) BOOST_PP_LIST_FOLD_LEFT_666(o, s, BOOST_PP_LIST_REVERSE_D(666, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_667(o, s, l) BOOST_PP_LIST_FOLD_LEFT_667(o, s, BOOST_PP_LIST_REVERSE_D(667, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_668(o, s, l) BOOST_PP_LIST_FOLD_LEFT_668(o, s, BOOST_PP_LIST_REVERSE_D(668, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_669(o, s, l) BOOST_PP_LIST_FOLD_LEFT_669(o, s, BOOST_PP_LIST_REVERSE_D(669, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_670(o, s, l) BOOST_PP_LIST_FOLD_LEFT_670(o, s, BOOST_PP_LIST_REVERSE_D(670, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_671(o, s, l) BOOST_PP_LIST_FOLD_LEFT_671(o, s, BOOST_PP_LIST_REVERSE_D(671, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_672(o, s, l) BOOST_PP_LIST_FOLD_LEFT_672(o, s, BOOST_PP_LIST_REVERSE_D(672, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_673(o, s, l) BOOST_PP_LIST_FOLD_LEFT_673(o, s, BOOST_PP_LIST_REVERSE_D(673, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_674(o, s, l) BOOST_PP_LIST_FOLD_LEFT_674(o, s, BOOST_PP_LIST_REVERSE_D(674, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_675(o, s, l) BOOST_PP_LIST_FOLD_LEFT_675(o, s, BOOST_PP_LIST_REVERSE_D(675, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_676(o, s, l) BOOST_PP_LIST_FOLD_LEFT_676(o, s, BOOST_PP_LIST_REVERSE_D(676, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_677(o, s, l) BOOST_PP_LIST_FOLD_LEFT_677(o, s, BOOST_PP_LIST_REVERSE_D(677, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_678(o, s, l) BOOST_PP_LIST_FOLD_LEFT_678(o, s, BOOST_PP_LIST_REVERSE_D(678, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_679(o, s, l) BOOST_PP_LIST_FOLD_LEFT_679(o, s, BOOST_PP_LIST_REVERSE_D(679, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_680(o, s, l) BOOST_PP_LIST_FOLD_LEFT_680(o, s, BOOST_PP_LIST_REVERSE_D(680, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_681(o, s, l) BOOST_PP_LIST_FOLD_LEFT_681(o, s, BOOST_PP_LIST_REVERSE_D(681, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_682(o, s, l) BOOST_PP_LIST_FOLD_LEFT_682(o, s, BOOST_PP_LIST_REVERSE_D(682, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_683(o, s, l) BOOST_PP_LIST_FOLD_LEFT_683(o, s, BOOST_PP_LIST_REVERSE_D(683, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_684(o, s, l) BOOST_PP_LIST_FOLD_LEFT_684(o, s, BOOST_PP_LIST_REVERSE_D(684, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_685(o, s, l) BOOST_PP_LIST_FOLD_LEFT_685(o, s, BOOST_PP_LIST_REVERSE_D(685, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_686(o, s, l) BOOST_PP_LIST_FOLD_LEFT_686(o, s, BOOST_PP_LIST_REVERSE_D(686, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_687(o, s, l) BOOST_PP_LIST_FOLD_LEFT_687(o, s, BOOST_PP_LIST_REVERSE_D(687, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_688(o, s, l) BOOST_PP_LIST_FOLD_LEFT_688(o, s, BOOST_PP_LIST_REVERSE_D(688, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_689(o, s, l) BOOST_PP_LIST_FOLD_LEFT_689(o, s, BOOST_PP_LIST_REVERSE_D(689, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_690(o, s, l) BOOST_PP_LIST_FOLD_LEFT_690(o, s, BOOST_PP_LIST_REVERSE_D(690, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_691(o, s, l) BOOST_PP_LIST_FOLD_LEFT_691(o, s, BOOST_PP_LIST_REVERSE_D(691, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_692(o, s, l) BOOST_PP_LIST_FOLD_LEFT_692(o, s, BOOST_PP_LIST_REVERSE_D(692, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_693(o, s, l) BOOST_PP_LIST_FOLD_LEFT_693(o, s, BOOST_PP_LIST_REVERSE_D(693, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_694(o, s, l) BOOST_PP_LIST_FOLD_LEFT_694(o, s, BOOST_PP_LIST_REVERSE_D(694, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_695(o, s, l) BOOST_PP_LIST_FOLD_LEFT_695(o, s, BOOST_PP_LIST_REVERSE_D(695, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_696(o, s, l) BOOST_PP_LIST_FOLD_LEFT_696(o, s, BOOST_PP_LIST_REVERSE_D(696, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_697(o, s, l) BOOST_PP_LIST_FOLD_LEFT_697(o, s, BOOST_PP_LIST_REVERSE_D(697, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_698(o, s, l) BOOST_PP_LIST_FOLD_LEFT_698(o, s, BOOST_PP_LIST_REVERSE_D(698, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_699(o, s, l) BOOST_PP_LIST_FOLD_LEFT_699(o, s, BOOST_PP_LIST_REVERSE_D(699, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_700(o, s, l) BOOST_PP_LIST_FOLD_LEFT_700(o, s, BOOST_PP_LIST_REVERSE_D(700, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_701(o, s, l) BOOST_PP_LIST_FOLD_LEFT_701(o, s, BOOST_PP_LIST_REVERSE_D(701, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_702(o, s, l) BOOST_PP_LIST_FOLD_LEFT_702(o, s, BOOST_PP_LIST_REVERSE_D(702, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_703(o, s, l) BOOST_PP_LIST_FOLD_LEFT_703(o, s, BOOST_PP_LIST_REVERSE_D(703, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_704(o, s, l) BOOST_PP_LIST_FOLD_LEFT_704(o, s, BOOST_PP_LIST_REVERSE_D(704, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_705(o, s, l) BOOST_PP_LIST_FOLD_LEFT_705(o, s, BOOST_PP_LIST_REVERSE_D(705, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_706(o, s, l) BOOST_PP_LIST_FOLD_LEFT_706(o, s, BOOST_PP_LIST_REVERSE_D(706, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_707(o, s, l) BOOST_PP_LIST_FOLD_LEFT_707(o, s, BOOST_PP_LIST_REVERSE_D(707, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_708(o, s, l) BOOST_PP_LIST_FOLD_LEFT_708(o, s, BOOST_PP_LIST_REVERSE_D(708, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_709(o, s, l) BOOST_PP_LIST_FOLD_LEFT_709(o, s, BOOST_PP_LIST_REVERSE_D(709, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_710(o, s, l) BOOST_PP_LIST_FOLD_LEFT_710(o, s, BOOST_PP_LIST_REVERSE_D(710, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_711(o, s, l) BOOST_PP_LIST_FOLD_LEFT_711(o, s, BOOST_PP_LIST_REVERSE_D(711, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_712(o, s, l) BOOST_PP_LIST_FOLD_LEFT_712(o, s, BOOST_PP_LIST_REVERSE_D(712, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_713(o, s, l) BOOST_PP_LIST_FOLD_LEFT_713(o, s, BOOST_PP_LIST_REVERSE_D(713, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_714(o, s, l) BOOST_PP_LIST_FOLD_LEFT_714(o, s, BOOST_PP_LIST_REVERSE_D(714, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_715(o, s, l) BOOST_PP_LIST_FOLD_LEFT_715(o, s, BOOST_PP_LIST_REVERSE_D(715, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_716(o, s, l) BOOST_PP_LIST_FOLD_LEFT_716(o, s, BOOST_PP_LIST_REVERSE_D(716, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_717(o, s, l) BOOST_PP_LIST_FOLD_LEFT_717(o, s, BOOST_PP_LIST_REVERSE_D(717, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_718(o, s, l) BOOST_PP_LIST_FOLD_LEFT_718(o, s, BOOST_PP_LIST_REVERSE_D(718, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_719(o, s, l) BOOST_PP_LIST_FOLD_LEFT_719(o, s, BOOST_PP_LIST_REVERSE_D(719, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_720(o, s, l) BOOST_PP_LIST_FOLD_LEFT_720(o, s, BOOST_PP_LIST_REVERSE_D(720, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_721(o, s, l) BOOST_PP_LIST_FOLD_LEFT_721(o, s, BOOST_PP_LIST_REVERSE_D(721, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_722(o, s, l) BOOST_PP_LIST_FOLD_LEFT_722(o, s, BOOST_PP_LIST_REVERSE_D(722, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_723(o, s, l) BOOST_PP_LIST_FOLD_LEFT_723(o, s, BOOST_PP_LIST_REVERSE_D(723, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_724(o, s, l) BOOST_PP_LIST_FOLD_LEFT_724(o, s, BOOST_PP_LIST_REVERSE_D(724, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_725(o, s, l) BOOST_PP_LIST_FOLD_LEFT_725(o, s, BOOST_PP_LIST_REVERSE_D(725, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_726(o, s, l) BOOST_PP_LIST_FOLD_LEFT_726(o, s, BOOST_PP_LIST_REVERSE_D(726, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_727(o, s, l) BOOST_PP_LIST_FOLD_LEFT_727(o, s, BOOST_PP_LIST_REVERSE_D(727, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_728(o, s, l) BOOST_PP_LIST_FOLD_LEFT_728(o, s, BOOST_PP_LIST_REVERSE_D(728, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_729(o, s, l) BOOST_PP_LIST_FOLD_LEFT_729(o, s, BOOST_PP_LIST_REVERSE_D(729, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_730(o, s, l) BOOST_PP_LIST_FOLD_LEFT_730(o, s, BOOST_PP_LIST_REVERSE_D(730, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_731(o, s, l) BOOST_PP_LIST_FOLD_LEFT_731(o, s, BOOST_PP_LIST_REVERSE_D(731, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_732(o, s, l) BOOST_PP_LIST_FOLD_LEFT_732(o, s, BOOST_PP_LIST_REVERSE_D(732, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_733(o, s, l) BOOST_PP_LIST_FOLD_LEFT_733(o, s, BOOST_PP_LIST_REVERSE_D(733, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_734(o, s, l) BOOST_PP_LIST_FOLD_LEFT_734(o, s, BOOST_PP_LIST_REVERSE_D(734, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_735(o, s, l) BOOST_PP_LIST_FOLD_LEFT_735(o, s, BOOST_PP_LIST_REVERSE_D(735, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_736(o, s, l) BOOST_PP_LIST_FOLD_LEFT_736(o, s, BOOST_PP_LIST_REVERSE_D(736, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_737(o, s, l) BOOST_PP_LIST_FOLD_LEFT_737(o, s, BOOST_PP_LIST_REVERSE_D(737, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_738(o, s, l) BOOST_PP_LIST_FOLD_LEFT_738(o, s, BOOST_PP_LIST_REVERSE_D(738, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_739(o, s, l) BOOST_PP_LIST_FOLD_LEFT_739(o, s, BOOST_PP_LIST_REVERSE_D(739, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_740(o, s, l) BOOST_PP_LIST_FOLD_LEFT_740(o, s, BOOST_PP_LIST_REVERSE_D(740, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_741(o, s, l) BOOST_PP_LIST_FOLD_LEFT_741(o, s, BOOST_PP_LIST_REVERSE_D(741, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_742(o, s, l) BOOST_PP_LIST_FOLD_LEFT_742(o, s, BOOST_PP_LIST_REVERSE_D(742, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_743(o, s, l) BOOST_PP_LIST_FOLD_LEFT_743(o, s, BOOST_PP_LIST_REVERSE_D(743, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_744(o, s, l) BOOST_PP_LIST_FOLD_LEFT_744(o, s, BOOST_PP_LIST_REVERSE_D(744, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_745(o, s, l) BOOST_PP_LIST_FOLD_LEFT_745(o, s, BOOST_PP_LIST_REVERSE_D(745, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_746(o, s, l) BOOST_PP_LIST_FOLD_LEFT_746(o, s, BOOST_PP_LIST_REVERSE_D(746, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_747(o, s, l) BOOST_PP_LIST_FOLD_LEFT_747(o, s, BOOST_PP_LIST_REVERSE_D(747, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_748(o, s, l) BOOST_PP_LIST_FOLD_LEFT_748(o, s, BOOST_PP_LIST_REVERSE_D(748, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_749(o, s, l) BOOST_PP_LIST_FOLD_LEFT_749(o, s, BOOST_PP_LIST_REVERSE_D(749, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_750(o, s, l) BOOST_PP_LIST_FOLD_LEFT_750(o, s, BOOST_PP_LIST_REVERSE_D(750, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_751(o, s, l) BOOST_PP_LIST_FOLD_LEFT_751(o, s, BOOST_PP_LIST_REVERSE_D(751, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_752(o, s, l) BOOST_PP_LIST_FOLD_LEFT_752(o, s, BOOST_PP_LIST_REVERSE_D(752, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_753(o, s, l) BOOST_PP_LIST_FOLD_LEFT_753(o, s, BOOST_PP_LIST_REVERSE_D(753, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_754(o, s, l) BOOST_PP_LIST_FOLD_LEFT_754(o, s, BOOST_PP_LIST_REVERSE_D(754, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_755(o, s, l) BOOST_PP_LIST_FOLD_LEFT_755(o, s, BOOST_PP_LIST_REVERSE_D(755, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_756(o, s, l) BOOST_PP_LIST_FOLD_LEFT_756(o, s, BOOST_PP_LIST_REVERSE_D(756, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_757(o, s, l) BOOST_PP_LIST_FOLD_LEFT_757(o, s, BOOST_PP_LIST_REVERSE_D(757, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_758(o, s, l) BOOST_PP_LIST_FOLD_LEFT_758(o, s, BOOST_PP_LIST_REVERSE_D(758, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_759(o, s, l) BOOST_PP_LIST_FOLD_LEFT_759(o, s, BOOST_PP_LIST_REVERSE_D(759, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_760(o, s, l) BOOST_PP_LIST_FOLD_LEFT_760(o, s, BOOST_PP_LIST_REVERSE_D(760, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_761(o, s, l) BOOST_PP_LIST_FOLD_LEFT_761(o, s, BOOST_PP_LIST_REVERSE_D(761, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_762(o, s, l) BOOST_PP_LIST_FOLD_LEFT_762(o, s, BOOST_PP_LIST_REVERSE_D(762, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_763(o, s, l) BOOST_PP_LIST_FOLD_LEFT_763(o, s, BOOST_PP_LIST_REVERSE_D(763, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_764(o, s, l) BOOST_PP_LIST_FOLD_LEFT_764(o, s, BOOST_PP_LIST_REVERSE_D(764, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_765(o, s, l) BOOST_PP_LIST_FOLD_LEFT_765(o, s, BOOST_PP_LIST_REVERSE_D(765, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_766(o, s, l) BOOST_PP_LIST_FOLD_LEFT_766(o, s, BOOST_PP_LIST_REVERSE_D(766, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_767(o, s, l) BOOST_PP_LIST_FOLD_LEFT_767(o, s, BOOST_PP_LIST_REVERSE_D(767, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_768(o, s, l) BOOST_PP_LIST_FOLD_LEFT_768(o, s, BOOST_PP_LIST_REVERSE_D(768, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_769(o, s, l) BOOST_PP_LIST_FOLD_LEFT_769(o, s, BOOST_PP_LIST_REVERSE_D(769, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_770(o, s, l) BOOST_PP_LIST_FOLD_LEFT_770(o, s, BOOST_PP_LIST_REVERSE_D(770, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_771(o, s, l) BOOST_PP_LIST_FOLD_LEFT_771(o, s, BOOST_PP_LIST_REVERSE_D(771, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_772(o, s, l) BOOST_PP_LIST_FOLD_LEFT_772(o, s, BOOST_PP_LIST_REVERSE_D(772, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_773(o, s, l) BOOST_PP_LIST_FOLD_LEFT_773(o, s, BOOST_PP_LIST_REVERSE_D(773, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_774(o, s, l) BOOST_PP_LIST_FOLD_LEFT_774(o, s, BOOST_PP_LIST_REVERSE_D(774, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_775(o, s, l) BOOST_PP_LIST_FOLD_LEFT_775(o, s, BOOST_PP_LIST_REVERSE_D(775, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_776(o, s, l) BOOST_PP_LIST_FOLD_LEFT_776(o, s, BOOST_PP_LIST_REVERSE_D(776, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_777(o, s, l) BOOST_PP_LIST_FOLD_LEFT_777(o, s, BOOST_PP_LIST_REVERSE_D(777, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_778(o, s, l) BOOST_PP_LIST_FOLD_LEFT_778(o, s, BOOST_PP_LIST_REVERSE_D(778, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_779(o, s, l) BOOST_PP_LIST_FOLD_LEFT_779(o, s, BOOST_PP_LIST_REVERSE_D(779, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_780(o, s, l) BOOST_PP_LIST_FOLD_LEFT_780(o, s, BOOST_PP_LIST_REVERSE_D(780, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_781(o, s, l) BOOST_PP_LIST_FOLD_LEFT_781(o, s, BOOST_PP_LIST_REVERSE_D(781, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_782(o, s, l) BOOST_PP_LIST_FOLD_LEFT_782(o, s, BOOST_PP_LIST_REVERSE_D(782, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_783(o, s, l) BOOST_PP_LIST_FOLD_LEFT_783(o, s, BOOST_PP_LIST_REVERSE_D(783, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_784(o, s, l) BOOST_PP_LIST_FOLD_LEFT_784(o, s, BOOST_PP_LIST_REVERSE_D(784, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_785(o, s, l) BOOST_PP_LIST_FOLD_LEFT_785(o, s, BOOST_PP_LIST_REVERSE_D(785, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_786(o, s, l) BOOST_PP_LIST_FOLD_LEFT_786(o, s, BOOST_PP_LIST_REVERSE_D(786, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_787(o, s, l) BOOST_PP_LIST_FOLD_LEFT_787(o, s, BOOST_PP_LIST_REVERSE_D(787, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_788(o, s, l) BOOST_PP_LIST_FOLD_LEFT_788(o, s, BOOST_PP_LIST_REVERSE_D(788, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_789(o, s, l) BOOST_PP_LIST_FOLD_LEFT_789(o, s, BOOST_PP_LIST_REVERSE_D(789, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_790(o, s, l) BOOST_PP_LIST_FOLD_LEFT_790(o, s, BOOST_PP_LIST_REVERSE_D(790, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_791(o, s, l) BOOST_PP_LIST_FOLD_LEFT_791(o, s, BOOST_PP_LIST_REVERSE_D(791, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_792(o, s, l) BOOST_PP_LIST_FOLD_LEFT_792(o, s, BOOST_PP_LIST_REVERSE_D(792, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_793(o, s, l) BOOST_PP_LIST_FOLD_LEFT_793(o, s, BOOST_PP_LIST_REVERSE_D(793, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_794(o, s, l) BOOST_PP_LIST_FOLD_LEFT_794(o, s, BOOST_PP_LIST_REVERSE_D(794, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_795(o, s, l) BOOST_PP_LIST_FOLD_LEFT_795(o, s, BOOST_PP_LIST_REVERSE_D(795, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_796(o, s, l) BOOST_PP_LIST_FOLD_LEFT_796(o, s, BOOST_PP_LIST_REVERSE_D(796, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_797(o, s, l) BOOST_PP_LIST_FOLD_LEFT_797(o, s, BOOST_PP_LIST_REVERSE_D(797, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_798(o, s, l) BOOST_PP_LIST_FOLD_LEFT_798(o, s, BOOST_PP_LIST_REVERSE_D(798, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_799(o, s, l) BOOST_PP_LIST_FOLD_LEFT_799(o, s, BOOST_PP_LIST_REVERSE_D(799, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_800(o, s, l) BOOST_PP_LIST_FOLD_LEFT_800(o, s, BOOST_PP_LIST_REVERSE_D(800, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_801(o, s, l) BOOST_PP_LIST_FOLD_LEFT_801(o, s, BOOST_PP_LIST_REVERSE_D(801, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_802(o, s, l) BOOST_PP_LIST_FOLD_LEFT_802(o, s, BOOST_PP_LIST_REVERSE_D(802, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_803(o, s, l) BOOST_PP_LIST_FOLD_LEFT_803(o, s, BOOST_PP_LIST_REVERSE_D(803, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_804(o, s, l) BOOST_PP_LIST_FOLD_LEFT_804(o, s, BOOST_PP_LIST_REVERSE_D(804, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_805(o, s, l) BOOST_PP_LIST_FOLD_LEFT_805(o, s, BOOST_PP_LIST_REVERSE_D(805, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_806(o, s, l) BOOST_PP_LIST_FOLD_LEFT_806(o, s, BOOST_PP_LIST_REVERSE_D(806, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_807(o, s, l) BOOST_PP_LIST_FOLD_LEFT_807(o, s, BOOST_PP_LIST_REVERSE_D(807, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_808(o, s, l) BOOST_PP_LIST_FOLD_LEFT_808(o, s, BOOST_PP_LIST_REVERSE_D(808, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_809(o, s, l) BOOST_PP_LIST_FOLD_LEFT_809(o, s, BOOST_PP_LIST_REVERSE_D(809, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_810(o, s, l) BOOST_PP_LIST_FOLD_LEFT_810(o, s, BOOST_PP_LIST_REVERSE_D(810, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_811(o, s, l) BOOST_PP_LIST_FOLD_LEFT_811(o, s, BOOST_PP_LIST_REVERSE_D(811, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_812(o, s, l) BOOST_PP_LIST_FOLD_LEFT_812(o, s, BOOST_PP_LIST_REVERSE_D(812, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_813(o, s, l) BOOST_PP_LIST_FOLD_LEFT_813(o, s, BOOST_PP_LIST_REVERSE_D(813, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_814(o, s, l) BOOST_PP_LIST_FOLD_LEFT_814(o, s, BOOST_PP_LIST_REVERSE_D(814, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_815(o, s, l) BOOST_PP_LIST_FOLD_LEFT_815(o, s, BOOST_PP_LIST_REVERSE_D(815, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_816(o, s, l) BOOST_PP_LIST_FOLD_LEFT_816(o, s, BOOST_PP_LIST_REVERSE_D(816, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_817(o, s, l) BOOST_PP_LIST_FOLD_LEFT_817(o, s, BOOST_PP_LIST_REVERSE_D(817, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_818(o, s, l) BOOST_PP_LIST_FOLD_LEFT_818(o, s, BOOST_PP_LIST_REVERSE_D(818, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_819(o, s, l) BOOST_PP_LIST_FOLD_LEFT_819(o, s, BOOST_PP_LIST_REVERSE_D(819, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_820(o, s, l) BOOST_PP_LIST_FOLD_LEFT_820(o, s, BOOST_PP_LIST_REVERSE_D(820, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_821(o, s, l) BOOST_PP_LIST_FOLD_LEFT_821(o, s, BOOST_PP_LIST_REVERSE_D(821, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_822(o, s, l) BOOST_PP_LIST_FOLD_LEFT_822(o, s, BOOST_PP_LIST_REVERSE_D(822, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_823(o, s, l) BOOST_PP_LIST_FOLD_LEFT_823(o, s, BOOST_PP_LIST_REVERSE_D(823, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_824(o, s, l) BOOST_PP_LIST_FOLD_LEFT_824(o, s, BOOST_PP_LIST_REVERSE_D(824, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_825(o, s, l) BOOST_PP_LIST_FOLD_LEFT_825(o, s, BOOST_PP_LIST_REVERSE_D(825, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_826(o, s, l) BOOST_PP_LIST_FOLD_LEFT_826(o, s, BOOST_PP_LIST_REVERSE_D(826, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_827(o, s, l) BOOST_PP_LIST_FOLD_LEFT_827(o, s, BOOST_PP_LIST_REVERSE_D(827, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_828(o, s, l) BOOST_PP_LIST_FOLD_LEFT_828(o, s, BOOST_PP_LIST_REVERSE_D(828, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_829(o, s, l) BOOST_PP_LIST_FOLD_LEFT_829(o, s, BOOST_PP_LIST_REVERSE_D(829, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_830(o, s, l) BOOST_PP_LIST_FOLD_LEFT_830(o, s, BOOST_PP_LIST_REVERSE_D(830, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_831(o, s, l) BOOST_PP_LIST_FOLD_LEFT_831(o, s, BOOST_PP_LIST_REVERSE_D(831, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_832(o, s, l) BOOST_PP_LIST_FOLD_LEFT_832(o, s, BOOST_PP_LIST_REVERSE_D(832, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_833(o, s, l) BOOST_PP_LIST_FOLD_LEFT_833(o, s, BOOST_PP_LIST_REVERSE_D(833, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_834(o, s, l) BOOST_PP_LIST_FOLD_LEFT_834(o, s, BOOST_PP_LIST_REVERSE_D(834, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_835(o, s, l) BOOST_PP_LIST_FOLD_LEFT_835(o, s, BOOST_PP_LIST_REVERSE_D(835, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_836(o, s, l) BOOST_PP_LIST_FOLD_LEFT_836(o, s, BOOST_PP_LIST_REVERSE_D(836, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_837(o, s, l) BOOST_PP_LIST_FOLD_LEFT_837(o, s, BOOST_PP_LIST_REVERSE_D(837, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_838(o, s, l) BOOST_PP_LIST_FOLD_LEFT_838(o, s, BOOST_PP_LIST_REVERSE_D(838, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_839(o, s, l) BOOST_PP_LIST_FOLD_LEFT_839(o, s, BOOST_PP_LIST_REVERSE_D(839, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_840(o, s, l) BOOST_PP_LIST_FOLD_LEFT_840(o, s, BOOST_PP_LIST_REVERSE_D(840, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_841(o, s, l) BOOST_PP_LIST_FOLD_LEFT_841(o, s, BOOST_PP_LIST_REVERSE_D(841, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_842(o, s, l) BOOST_PP_LIST_FOLD_LEFT_842(o, s, BOOST_PP_LIST_REVERSE_D(842, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_843(o, s, l) BOOST_PP_LIST_FOLD_LEFT_843(o, s, BOOST_PP_LIST_REVERSE_D(843, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_844(o, s, l) BOOST_PP_LIST_FOLD_LEFT_844(o, s, BOOST_PP_LIST_REVERSE_D(844, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_845(o, s, l) BOOST_PP_LIST_FOLD_LEFT_845(o, s, BOOST_PP_LIST_REVERSE_D(845, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_846(o, s, l) BOOST_PP_LIST_FOLD_LEFT_846(o, s, BOOST_PP_LIST_REVERSE_D(846, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_847(o, s, l) BOOST_PP_LIST_FOLD_LEFT_847(o, s, BOOST_PP_LIST_REVERSE_D(847, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_848(o, s, l) BOOST_PP_LIST_FOLD_LEFT_848(o, s, BOOST_PP_LIST_REVERSE_D(848, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_849(o, s, l) BOOST_PP_LIST_FOLD_LEFT_849(o, s, BOOST_PP_LIST_REVERSE_D(849, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_850(o, s, l) BOOST_PP_LIST_FOLD_LEFT_850(o, s, BOOST_PP_LIST_REVERSE_D(850, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_851(o, s, l) BOOST_PP_LIST_FOLD_LEFT_851(o, s, BOOST_PP_LIST_REVERSE_D(851, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_852(o, s, l) BOOST_PP_LIST_FOLD_LEFT_852(o, s, BOOST_PP_LIST_REVERSE_D(852, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_853(o, s, l) BOOST_PP_LIST_FOLD_LEFT_853(o, s, BOOST_PP_LIST_REVERSE_D(853, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_854(o, s, l) BOOST_PP_LIST_FOLD_LEFT_854(o, s, BOOST_PP_LIST_REVERSE_D(854, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_855(o, s, l) BOOST_PP_LIST_FOLD_LEFT_855(o, s, BOOST_PP_LIST_REVERSE_D(855, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_856(o, s, l) BOOST_PP_LIST_FOLD_LEFT_856(o, s, BOOST_PP_LIST_REVERSE_D(856, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_857(o, s, l) BOOST_PP_LIST_FOLD_LEFT_857(o, s, BOOST_PP_LIST_REVERSE_D(857, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_858(o, s, l) BOOST_PP_LIST_FOLD_LEFT_858(o, s, BOOST_PP_LIST_REVERSE_D(858, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_859(o, s, l) BOOST_PP_LIST_FOLD_LEFT_859(o, s, BOOST_PP_LIST_REVERSE_D(859, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_860(o, s, l) BOOST_PP_LIST_FOLD_LEFT_860(o, s, BOOST_PP_LIST_REVERSE_D(860, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_861(o, s, l) BOOST_PP_LIST_FOLD_LEFT_861(o, s, BOOST_PP_LIST_REVERSE_D(861, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_862(o, s, l) BOOST_PP_LIST_FOLD_LEFT_862(o, s, BOOST_PP_LIST_REVERSE_D(862, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_863(o, s, l) BOOST_PP_LIST_FOLD_LEFT_863(o, s, BOOST_PP_LIST_REVERSE_D(863, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_864(o, s, l) BOOST_PP_LIST_FOLD_LEFT_864(o, s, BOOST_PP_LIST_REVERSE_D(864, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_865(o, s, l) BOOST_PP_LIST_FOLD_LEFT_865(o, s, BOOST_PP_LIST_REVERSE_D(865, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_866(o, s, l) BOOST_PP_LIST_FOLD_LEFT_866(o, s, BOOST_PP_LIST_REVERSE_D(866, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_867(o, s, l) BOOST_PP_LIST_FOLD_LEFT_867(o, s, BOOST_PP_LIST_REVERSE_D(867, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_868(o, s, l) BOOST_PP_LIST_FOLD_LEFT_868(o, s, BOOST_PP_LIST_REVERSE_D(868, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_869(o, s, l) BOOST_PP_LIST_FOLD_LEFT_869(o, s, BOOST_PP_LIST_REVERSE_D(869, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_870(o, s, l) BOOST_PP_LIST_FOLD_LEFT_870(o, s, BOOST_PP_LIST_REVERSE_D(870, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_871(o, s, l) BOOST_PP_LIST_FOLD_LEFT_871(o, s, BOOST_PP_LIST_REVERSE_D(871, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_872(o, s, l) BOOST_PP_LIST_FOLD_LEFT_872(o, s, BOOST_PP_LIST_REVERSE_D(872, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_873(o, s, l) BOOST_PP_LIST_FOLD_LEFT_873(o, s, BOOST_PP_LIST_REVERSE_D(873, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_874(o, s, l) BOOST_PP_LIST_FOLD_LEFT_874(o, s, BOOST_PP_LIST_REVERSE_D(874, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_875(o, s, l) BOOST_PP_LIST_FOLD_LEFT_875(o, s, BOOST_PP_LIST_REVERSE_D(875, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_876(o, s, l) BOOST_PP_LIST_FOLD_LEFT_876(o, s, BOOST_PP_LIST_REVERSE_D(876, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_877(o, s, l) BOOST_PP_LIST_FOLD_LEFT_877(o, s, BOOST_PP_LIST_REVERSE_D(877, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_878(o, s, l) BOOST_PP_LIST_FOLD_LEFT_878(o, s, BOOST_PP_LIST_REVERSE_D(878, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_879(o, s, l) BOOST_PP_LIST_FOLD_LEFT_879(o, s, BOOST_PP_LIST_REVERSE_D(879, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_880(o, s, l) BOOST_PP_LIST_FOLD_LEFT_880(o, s, BOOST_PP_LIST_REVERSE_D(880, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_881(o, s, l) BOOST_PP_LIST_FOLD_LEFT_881(o, s, BOOST_PP_LIST_REVERSE_D(881, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_882(o, s, l) BOOST_PP_LIST_FOLD_LEFT_882(o, s, BOOST_PP_LIST_REVERSE_D(882, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_883(o, s, l) BOOST_PP_LIST_FOLD_LEFT_883(o, s, BOOST_PP_LIST_REVERSE_D(883, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_884(o, s, l) BOOST_PP_LIST_FOLD_LEFT_884(o, s, BOOST_PP_LIST_REVERSE_D(884, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_885(o, s, l) BOOST_PP_LIST_FOLD_LEFT_885(o, s, BOOST_PP_LIST_REVERSE_D(885, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_886(o, s, l) BOOST_PP_LIST_FOLD_LEFT_886(o, s, BOOST_PP_LIST_REVERSE_D(886, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_887(o, s, l) BOOST_PP_LIST_FOLD_LEFT_887(o, s, BOOST_PP_LIST_REVERSE_D(887, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_888(o, s, l) BOOST_PP_LIST_FOLD_LEFT_888(o, s, BOOST_PP_LIST_REVERSE_D(888, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_889(o, s, l) BOOST_PP_LIST_FOLD_LEFT_889(o, s, BOOST_PP_LIST_REVERSE_D(889, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_890(o, s, l) BOOST_PP_LIST_FOLD_LEFT_890(o, s, BOOST_PP_LIST_REVERSE_D(890, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_891(o, s, l) BOOST_PP_LIST_FOLD_LEFT_891(o, s, BOOST_PP_LIST_REVERSE_D(891, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_892(o, s, l) BOOST_PP_LIST_FOLD_LEFT_892(o, s, BOOST_PP_LIST_REVERSE_D(892, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_893(o, s, l) BOOST_PP_LIST_FOLD_LEFT_893(o, s, BOOST_PP_LIST_REVERSE_D(893, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_894(o, s, l) BOOST_PP_LIST_FOLD_LEFT_894(o, s, BOOST_PP_LIST_REVERSE_D(894, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_895(o, s, l) BOOST_PP_LIST_FOLD_LEFT_895(o, s, BOOST_PP_LIST_REVERSE_D(895, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_896(o, s, l) BOOST_PP_LIST_FOLD_LEFT_896(o, s, BOOST_PP_LIST_REVERSE_D(896, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_897(o, s, l) BOOST_PP_LIST_FOLD_LEFT_897(o, s, BOOST_PP_LIST_REVERSE_D(897, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_898(o, s, l) BOOST_PP_LIST_FOLD_LEFT_898(o, s, BOOST_PP_LIST_REVERSE_D(898, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_899(o, s, l) BOOST_PP_LIST_FOLD_LEFT_899(o, s, BOOST_PP_LIST_REVERSE_D(899, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_900(o, s, l) BOOST_PP_LIST_FOLD_LEFT_900(o, s, BOOST_PP_LIST_REVERSE_D(900, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_901(o, s, l) BOOST_PP_LIST_FOLD_LEFT_901(o, s, BOOST_PP_LIST_REVERSE_D(901, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_902(o, s, l) BOOST_PP_LIST_FOLD_LEFT_902(o, s, BOOST_PP_LIST_REVERSE_D(902, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_903(o, s, l) BOOST_PP_LIST_FOLD_LEFT_903(o, s, BOOST_PP_LIST_REVERSE_D(903, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_904(o, s, l) BOOST_PP_LIST_FOLD_LEFT_904(o, s, BOOST_PP_LIST_REVERSE_D(904, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_905(o, s, l) BOOST_PP_LIST_FOLD_LEFT_905(o, s, BOOST_PP_LIST_REVERSE_D(905, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_906(o, s, l) BOOST_PP_LIST_FOLD_LEFT_906(o, s, BOOST_PP_LIST_REVERSE_D(906, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_907(o, s, l) BOOST_PP_LIST_FOLD_LEFT_907(o, s, BOOST_PP_LIST_REVERSE_D(907, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_908(o, s, l) BOOST_PP_LIST_FOLD_LEFT_908(o, s, BOOST_PP_LIST_REVERSE_D(908, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_909(o, s, l) BOOST_PP_LIST_FOLD_LEFT_909(o, s, BOOST_PP_LIST_REVERSE_D(909, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_910(o, s, l) BOOST_PP_LIST_FOLD_LEFT_910(o, s, BOOST_PP_LIST_REVERSE_D(910, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_911(o, s, l) BOOST_PP_LIST_FOLD_LEFT_911(o, s, BOOST_PP_LIST_REVERSE_D(911, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_912(o, s, l) BOOST_PP_LIST_FOLD_LEFT_912(o, s, BOOST_PP_LIST_REVERSE_D(912, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_913(o, s, l) BOOST_PP_LIST_FOLD_LEFT_913(o, s, BOOST_PP_LIST_REVERSE_D(913, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_914(o, s, l) BOOST_PP_LIST_FOLD_LEFT_914(o, s, BOOST_PP_LIST_REVERSE_D(914, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_915(o, s, l) BOOST_PP_LIST_FOLD_LEFT_915(o, s, BOOST_PP_LIST_REVERSE_D(915, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_916(o, s, l) BOOST_PP_LIST_FOLD_LEFT_916(o, s, BOOST_PP_LIST_REVERSE_D(916, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_917(o, s, l) BOOST_PP_LIST_FOLD_LEFT_917(o, s, BOOST_PP_LIST_REVERSE_D(917, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_918(o, s, l) BOOST_PP_LIST_FOLD_LEFT_918(o, s, BOOST_PP_LIST_REVERSE_D(918, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_919(o, s, l) BOOST_PP_LIST_FOLD_LEFT_919(o, s, BOOST_PP_LIST_REVERSE_D(919, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_920(o, s, l) BOOST_PP_LIST_FOLD_LEFT_920(o, s, BOOST_PP_LIST_REVERSE_D(920, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_921(o, s, l) BOOST_PP_LIST_FOLD_LEFT_921(o, s, BOOST_PP_LIST_REVERSE_D(921, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_922(o, s, l) BOOST_PP_LIST_FOLD_LEFT_922(o, s, BOOST_PP_LIST_REVERSE_D(922, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_923(o, s, l) BOOST_PP_LIST_FOLD_LEFT_923(o, s, BOOST_PP_LIST_REVERSE_D(923, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_924(o, s, l) BOOST_PP_LIST_FOLD_LEFT_924(o, s, BOOST_PP_LIST_REVERSE_D(924, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_925(o, s, l) BOOST_PP_LIST_FOLD_LEFT_925(o, s, BOOST_PP_LIST_REVERSE_D(925, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_926(o, s, l) BOOST_PP_LIST_FOLD_LEFT_926(o, s, BOOST_PP_LIST_REVERSE_D(926, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_927(o, s, l) BOOST_PP_LIST_FOLD_LEFT_927(o, s, BOOST_PP_LIST_REVERSE_D(927, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_928(o, s, l) BOOST_PP_LIST_FOLD_LEFT_928(o, s, BOOST_PP_LIST_REVERSE_D(928, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_929(o, s, l) BOOST_PP_LIST_FOLD_LEFT_929(o, s, BOOST_PP_LIST_REVERSE_D(929, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_930(o, s, l) BOOST_PP_LIST_FOLD_LEFT_930(o, s, BOOST_PP_LIST_REVERSE_D(930, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_931(o, s, l) BOOST_PP_LIST_FOLD_LEFT_931(o, s, BOOST_PP_LIST_REVERSE_D(931, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_932(o, s, l) BOOST_PP_LIST_FOLD_LEFT_932(o, s, BOOST_PP_LIST_REVERSE_D(932, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_933(o, s, l) BOOST_PP_LIST_FOLD_LEFT_933(o, s, BOOST_PP_LIST_REVERSE_D(933, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_934(o, s, l) BOOST_PP_LIST_FOLD_LEFT_934(o, s, BOOST_PP_LIST_REVERSE_D(934, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_935(o, s, l) BOOST_PP_LIST_FOLD_LEFT_935(o, s, BOOST_PP_LIST_REVERSE_D(935, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_936(o, s, l) BOOST_PP_LIST_FOLD_LEFT_936(o, s, BOOST_PP_LIST_REVERSE_D(936, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_937(o, s, l) BOOST_PP_LIST_FOLD_LEFT_937(o, s, BOOST_PP_LIST_REVERSE_D(937, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_938(o, s, l) BOOST_PP_LIST_FOLD_LEFT_938(o, s, BOOST_PP_LIST_REVERSE_D(938, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_939(o, s, l) BOOST_PP_LIST_FOLD_LEFT_939(o, s, BOOST_PP_LIST_REVERSE_D(939, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_940(o, s, l) BOOST_PP_LIST_FOLD_LEFT_940(o, s, BOOST_PP_LIST_REVERSE_D(940, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_941(o, s, l) BOOST_PP_LIST_FOLD_LEFT_941(o, s, BOOST_PP_LIST_REVERSE_D(941, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_942(o, s, l) BOOST_PP_LIST_FOLD_LEFT_942(o, s, BOOST_PP_LIST_REVERSE_D(942, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_943(o, s, l) BOOST_PP_LIST_FOLD_LEFT_943(o, s, BOOST_PP_LIST_REVERSE_D(943, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_944(o, s, l) BOOST_PP_LIST_FOLD_LEFT_944(o, s, BOOST_PP_LIST_REVERSE_D(944, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_945(o, s, l) BOOST_PP_LIST_FOLD_LEFT_945(o, s, BOOST_PP_LIST_REVERSE_D(945, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_946(o, s, l) BOOST_PP_LIST_FOLD_LEFT_946(o, s, BOOST_PP_LIST_REVERSE_D(946, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_947(o, s, l) BOOST_PP_LIST_FOLD_LEFT_947(o, s, BOOST_PP_LIST_REVERSE_D(947, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_948(o, s, l) BOOST_PP_LIST_FOLD_LEFT_948(o, s, BOOST_PP_LIST_REVERSE_D(948, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_949(o, s, l) BOOST_PP_LIST_FOLD_LEFT_949(o, s, BOOST_PP_LIST_REVERSE_D(949, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_950(o, s, l) BOOST_PP_LIST_FOLD_LEFT_950(o, s, BOOST_PP_LIST_REVERSE_D(950, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_951(o, s, l) BOOST_PP_LIST_FOLD_LEFT_951(o, s, BOOST_PP_LIST_REVERSE_D(951, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_952(o, s, l) BOOST_PP_LIST_FOLD_LEFT_952(o, s, BOOST_PP_LIST_REVERSE_D(952, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_953(o, s, l) BOOST_PP_LIST_FOLD_LEFT_953(o, s, BOOST_PP_LIST_REVERSE_D(953, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_954(o, s, l) BOOST_PP_LIST_FOLD_LEFT_954(o, s, BOOST_PP_LIST_REVERSE_D(954, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_955(o, s, l) BOOST_PP_LIST_FOLD_LEFT_955(o, s, BOOST_PP_LIST_REVERSE_D(955, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_956(o, s, l) BOOST_PP_LIST_FOLD_LEFT_956(o, s, BOOST_PP_LIST_REVERSE_D(956, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_957(o, s, l) BOOST_PP_LIST_FOLD_LEFT_957(o, s, BOOST_PP_LIST_REVERSE_D(957, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_958(o, s, l) BOOST_PP_LIST_FOLD_LEFT_958(o, s, BOOST_PP_LIST_REVERSE_D(958, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_959(o, s, l) BOOST_PP_LIST_FOLD_LEFT_959(o, s, BOOST_PP_LIST_REVERSE_D(959, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_960(o, s, l) BOOST_PP_LIST_FOLD_LEFT_960(o, s, BOOST_PP_LIST_REVERSE_D(960, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_961(o, s, l) BOOST_PP_LIST_FOLD_LEFT_961(o, s, BOOST_PP_LIST_REVERSE_D(961, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_962(o, s, l) BOOST_PP_LIST_FOLD_LEFT_962(o, s, BOOST_PP_LIST_REVERSE_D(962, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_963(o, s, l) BOOST_PP_LIST_FOLD_LEFT_963(o, s, BOOST_PP_LIST_REVERSE_D(963, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_964(o, s, l) BOOST_PP_LIST_FOLD_LEFT_964(o, s, BOOST_PP_LIST_REVERSE_D(964, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_965(o, s, l) BOOST_PP_LIST_FOLD_LEFT_965(o, s, BOOST_PP_LIST_REVERSE_D(965, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_966(o, s, l) BOOST_PP_LIST_FOLD_LEFT_966(o, s, BOOST_PP_LIST_REVERSE_D(966, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_967(o, s, l) BOOST_PP_LIST_FOLD_LEFT_967(o, s, BOOST_PP_LIST_REVERSE_D(967, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_968(o, s, l) BOOST_PP_LIST_FOLD_LEFT_968(o, s, BOOST_PP_LIST_REVERSE_D(968, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_969(o, s, l) BOOST_PP_LIST_FOLD_LEFT_969(o, s, BOOST_PP_LIST_REVERSE_D(969, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_970(o, s, l) BOOST_PP_LIST_FOLD_LEFT_970(o, s, BOOST_PP_LIST_REVERSE_D(970, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_971(o, s, l) BOOST_PP_LIST_FOLD_LEFT_971(o, s, BOOST_PP_LIST_REVERSE_D(971, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_972(o, s, l) BOOST_PP_LIST_FOLD_LEFT_972(o, s, BOOST_PP_LIST_REVERSE_D(972, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_973(o, s, l) BOOST_PP_LIST_FOLD_LEFT_973(o, s, BOOST_PP_LIST_REVERSE_D(973, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_974(o, s, l) BOOST_PP_LIST_FOLD_LEFT_974(o, s, BOOST_PP_LIST_REVERSE_D(974, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_975(o, s, l) BOOST_PP_LIST_FOLD_LEFT_975(o, s, BOOST_PP_LIST_REVERSE_D(975, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_976(o, s, l) BOOST_PP_LIST_FOLD_LEFT_976(o, s, BOOST_PP_LIST_REVERSE_D(976, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_977(o, s, l) BOOST_PP_LIST_FOLD_LEFT_977(o, s, BOOST_PP_LIST_REVERSE_D(977, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_978(o, s, l) BOOST_PP_LIST_FOLD_LEFT_978(o, s, BOOST_PP_LIST_REVERSE_D(978, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_979(o, s, l) BOOST_PP_LIST_FOLD_LEFT_979(o, s, BOOST_PP_LIST_REVERSE_D(979, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_980(o, s, l) BOOST_PP_LIST_FOLD_LEFT_980(o, s, BOOST_PP_LIST_REVERSE_D(980, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_981(o, s, l) BOOST_PP_LIST_FOLD_LEFT_981(o, s, BOOST_PP_LIST_REVERSE_D(981, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_982(o, s, l) BOOST_PP_LIST_FOLD_LEFT_982(o, s, BOOST_PP_LIST_REVERSE_D(982, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_983(o, s, l) BOOST_PP_LIST_FOLD_LEFT_983(o, s, BOOST_PP_LIST_REVERSE_D(983, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_984(o, s, l) BOOST_PP_LIST_FOLD_LEFT_984(o, s, BOOST_PP_LIST_REVERSE_D(984, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_985(o, s, l) BOOST_PP_LIST_FOLD_LEFT_985(o, s, BOOST_PP_LIST_REVERSE_D(985, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_986(o, s, l) BOOST_PP_LIST_FOLD_LEFT_986(o, s, BOOST_PP_LIST_REVERSE_D(986, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_987(o, s, l) BOOST_PP_LIST_FOLD_LEFT_987(o, s, BOOST_PP_LIST_REVERSE_D(987, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_988(o, s, l) BOOST_PP_LIST_FOLD_LEFT_988(o, s, BOOST_PP_LIST_REVERSE_D(988, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_989(o, s, l) BOOST_PP_LIST_FOLD_LEFT_989(o, s, BOOST_PP_LIST_REVERSE_D(989, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_990(o, s, l) BOOST_PP_LIST_FOLD_LEFT_990(o, s, BOOST_PP_LIST_REVERSE_D(990, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_991(o, s, l) BOOST_PP_LIST_FOLD_LEFT_991(o, s, BOOST_PP_LIST_REVERSE_D(991, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_992(o, s, l) BOOST_PP_LIST_FOLD_LEFT_992(o, s, BOOST_PP_LIST_REVERSE_D(992, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_993(o, s, l) BOOST_PP_LIST_FOLD_LEFT_993(o, s, BOOST_PP_LIST_REVERSE_D(993, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_994(o, s, l) BOOST_PP_LIST_FOLD_LEFT_994(o, s, BOOST_PP_LIST_REVERSE_D(994, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_995(o, s, l) BOOST_PP_LIST_FOLD_LEFT_995(o, s, BOOST_PP_LIST_REVERSE_D(995, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_996(o, s, l) BOOST_PP_LIST_FOLD_LEFT_996(o, s, BOOST_PP_LIST_REVERSE_D(996, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_997(o, s, l) BOOST_PP_LIST_FOLD_LEFT_997(o, s, BOOST_PP_LIST_REVERSE_D(997, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_998(o, s, l) BOOST_PP_LIST_FOLD_LEFT_998(o, s, BOOST_PP_LIST_REVERSE_D(998, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_999(o, s, l) BOOST_PP_LIST_FOLD_LEFT_999(o, s, BOOST_PP_LIST_REVERSE_D(999, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1000(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1000(o, s, BOOST_PP_LIST_REVERSE_D(1000, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1001(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1001(o, s, BOOST_PP_LIST_REVERSE_D(1001, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1002(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1002(o, s, BOOST_PP_LIST_REVERSE_D(1002, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1003(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1003(o, s, BOOST_PP_LIST_REVERSE_D(1003, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1004(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1004(o, s, BOOST_PP_LIST_REVERSE_D(1004, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1005(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1005(o, s, BOOST_PP_LIST_REVERSE_D(1005, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1006(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1006(o, s, BOOST_PP_LIST_REVERSE_D(1006, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1007(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1007(o, s, BOOST_PP_LIST_REVERSE_D(1007, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1008(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1008(o, s, BOOST_PP_LIST_REVERSE_D(1008, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1009(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1009(o, s, BOOST_PP_LIST_REVERSE_D(1009, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1010(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1010(o, s, BOOST_PP_LIST_REVERSE_D(1010, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1011(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1011(o, s, BOOST_PP_LIST_REVERSE_D(1011, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1012(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1012(o, s, BOOST_PP_LIST_REVERSE_D(1012, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1013(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1013(o, s, BOOST_PP_LIST_REVERSE_D(1013, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1014(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1014(o, s, BOOST_PP_LIST_REVERSE_D(1014, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1015(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1015(o, s, BOOST_PP_LIST_REVERSE_D(1015, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1016(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1016(o, s, BOOST_PP_LIST_REVERSE_D(1016, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1017(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1017(o, s, BOOST_PP_LIST_REVERSE_D(1017, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1018(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1018(o, s, BOOST_PP_LIST_REVERSE_D(1018, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1019(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1019(o, s, BOOST_PP_LIST_REVERSE_D(1019, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1020(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1020(o, s, BOOST_PP_LIST_REVERSE_D(1020, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1021(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1021(o, s, BOOST_PP_LIST_REVERSE_D(1021, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1022(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1022(o, s, BOOST_PP_LIST_REVERSE_D(1022, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1023(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1023(o, s, BOOST_PP_LIST_REVERSE_D(1023, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1024(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1024(o, s, BOOST_PP_LIST_REVERSE_D(1024, l)) +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/limits/fold_right_256.hpp b/src/boost/boost/preprocessor/list/detail/limits/fold_right_256.hpp new file mode 100644 index 000000000..8792bf085 --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/limits/fold_right_256.hpp @@ -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_LIST_DETAIL_FOLD_RIGHT_256_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_256_HPP +# +# define BOOST_PP_LIST_FOLD_RIGHT_0(o, s, l) BOOST_PP_LIST_FOLD_LEFT_0(o, s, BOOST_PP_LIST_REVERSE_D(1, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1(o, s, BOOST_PP_LIST_REVERSE_D(1, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) BOOST_PP_LIST_FOLD_LEFT_2(o, s, BOOST_PP_LIST_REVERSE_D(2, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) BOOST_PP_LIST_FOLD_LEFT_3(o, s, BOOST_PP_LIST_REVERSE_D(3, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) BOOST_PP_LIST_FOLD_LEFT_4(o, s, BOOST_PP_LIST_REVERSE_D(4, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) BOOST_PP_LIST_FOLD_LEFT_5(o, s, BOOST_PP_LIST_REVERSE_D(5, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) BOOST_PP_LIST_FOLD_LEFT_6(o, s, BOOST_PP_LIST_REVERSE_D(6, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) BOOST_PP_LIST_FOLD_LEFT_7(o, s, BOOST_PP_LIST_REVERSE_D(7, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) BOOST_PP_LIST_FOLD_LEFT_8(o, s, BOOST_PP_LIST_REVERSE_D(8, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) BOOST_PP_LIST_FOLD_LEFT_9(o, s, BOOST_PP_LIST_REVERSE_D(9, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) BOOST_PP_LIST_FOLD_LEFT_10(o, s, BOOST_PP_LIST_REVERSE_D(10, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) BOOST_PP_LIST_FOLD_LEFT_11(o, s, BOOST_PP_LIST_REVERSE_D(11, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) BOOST_PP_LIST_FOLD_LEFT_12(o, s, BOOST_PP_LIST_REVERSE_D(12, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) BOOST_PP_LIST_FOLD_LEFT_13(o, s, BOOST_PP_LIST_REVERSE_D(13, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) BOOST_PP_LIST_FOLD_LEFT_14(o, s, BOOST_PP_LIST_REVERSE_D(14, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) BOOST_PP_LIST_FOLD_LEFT_15(o, s, BOOST_PP_LIST_REVERSE_D(15, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) BOOST_PP_LIST_FOLD_LEFT_16(o, s, BOOST_PP_LIST_REVERSE_D(16, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) BOOST_PP_LIST_FOLD_LEFT_17(o, s, BOOST_PP_LIST_REVERSE_D(17, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) BOOST_PP_LIST_FOLD_LEFT_18(o, s, BOOST_PP_LIST_REVERSE_D(18, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) BOOST_PP_LIST_FOLD_LEFT_19(o, s, BOOST_PP_LIST_REVERSE_D(19, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) BOOST_PP_LIST_FOLD_LEFT_20(o, s, BOOST_PP_LIST_REVERSE_D(20, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) BOOST_PP_LIST_FOLD_LEFT_21(o, s, BOOST_PP_LIST_REVERSE_D(21, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) BOOST_PP_LIST_FOLD_LEFT_22(o, s, BOOST_PP_LIST_REVERSE_D(22, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) BOOST_PP_LIST_FOLD_LEFT_23(o, s, BOOST_PP_LIST_REVERSE_D(23, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) BOOST_PP_LIST_FOLD_LEFT_24(o, s, BOOST_PP_LIST_REVERSE_D(24, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) BOOST_PP_LIST_FOLD_LEFT_25(o, s, BOOST_PP_LIST_REVERSE_D(25, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) BOOST_PP_LIST_FOLD_LEFT_26(o, s, BOOST_PP_LIST_REVERSE_D(26, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) BOOST_PP_LIST_FOLD_LEFT_27(o, s, BOOST_PP_LIST_REVERSE_D(27, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) BOOST_PP_LIST_FOLD_LEFT_28(o, s, BOOST_PP_LIST_REVERSE_D(28, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) BOOST_PP_LIST_FOLD_LEFT_29(o, s, BOOST_PP_LIST_REVERSE_D(29, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) BOOST_PP_LIST_FOLD_LEFT_30(o, s, BOOST_PP_LIST_REVERSE_D(30, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) BOOST_PP_LIST_FOLD_LEFT_31(o, s, BOOST_PP_LIST_REVERSE_D(31, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) BOOST_PP_LIST_FOLD_LEFT_32(o, s, BOOST_PP_LIST_REVERSE_D(32, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) BOOST_PP_LIST_FOLD_LEFT_33(o, s, BOOST_PP_LIST_REVERSE_D(33, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) BOOST_PP_LIST_FOLD_LEFT_34(o, s, BOOST_PP_LIST_REVERSE_D(34, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) BOOST_PP_LIST_FOLD_LEFT_35(o, s, BOOST_PP_LIST_REVERSE_D(35, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) BOOST_PP_LIST_FOLD_LEFT_36(o, s, BOOST_PP_LIST_REVERSE_D(36, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) BOOST_PP_LIST_FOLD_LEFT_37(o, s, BOOST_PP_LIST_REVERSE_D(37, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) BOOST_PP_LIST_FOLD_LEFT_38(o, s, BOOST_PP_LIST_REVERSE_D(38, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) BOOST_PP_LIST_FOLD_LEFT_39(o, s, BOOST_PP_LIST_REVERSE_D(39, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) BOOST_PP_LIST_FOLD_LEFT_40(o, s, BOOST_PP_LIST_REVERSE_D(40, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) BOOST_PP_LIST_FOLD_LEFT_41(o, s, BOOST_PP_LIST_REVERSE_D(41, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) BOOST_PP_LIST_FOLD_LEFT_42(o, s, BOOST_PP_LIST_REVERSE_D(42, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) BOOST_PP_LIST_FOLD_LEFT_43(o, s, BOOST_PP_LIST_REVERSE_D(43, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) BOOST_PP_LIST_FOLD_LEFT_44(o, s, BOOST_PP_LIST_REVERSE_D(44, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) BOOST_PP_LIST_FOLD_LEFT_45(o, s, BOOST_PP_LIST_REVERSE_D(45, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) BOOST_PP_LIST_FOLD_LEFT_46(o, s, BOOST_PP_LIST_REVERSE_D(46, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) BOOST_PP_LIST_FOLD_LEFT_47(o, s, BOOST_PP_LIST_REVERSE_D(47, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) BOOST_PP_LIST_FOLD_LEFT_48(o, s, BOOST_PP_LIST_REVERSE_D(48, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) BOOST_PP_LIST_FOLD_LEFT_49(o, s, BOOST_PP_LIST_REVERSE_D(49, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) BOOST_PP_LIST_FOLD_LEFT_50(o, s, BOOST_PP_LIST_REVERSE_D(50, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) BOOST_PP_LIST_FOLD_LEFT_51(o, s, BOOST_PP_LIST_REVERSE_D(51, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) BOOST_PP_LIST_FOLD_LEFT_52(o, s, BOOST_PP_LIST_REVERSE_D(52, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) BOOST_PP_LIST_FOLD_LEFT_53(o, s, BOOST_PP_LIST_REVERSE_D(53, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) BOOST_PP_LIST_FOLD_LEFT_54(o, s, BOOST_PP_LIST_REVERSE_D(54, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) BOOST_PP_LIST_FOLD_LEFT_55(o, s, BOOST_PP_LIST_REVERSE_D(55, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) BOOST_PP_LIST_FOLD_LEFT_56(o, s, BOOST_PP_LIST_REVERSE_D(56, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) BOOST_PP_LIST_FOLD_LEFT_57(o, s, BOOST_PP_LIST_REVERSE_D(57, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) BOOST_PP_LIST_FOLD_LEFT_58(o, s, BOOST_PP_LIST_REVERSE_D(58, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) BOOST_PP_LIST_FOLD_LEFT_59(o, s, BOOST_PP_LIST_REVERSE_D(59, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) BOOST_PP_LIST_FOLD_LEFT_60(o, s, BOOST_PP_LIST_REVERSE_D(60, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) BOOST_PP_LIST_FOLD_LEFT_61(o, s, BOOST_PP_LIST_REVERSE_D(61, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) BOOST_PP_LIST_FOLD_LEFT_62(o, s, BOOST_PP_LIST_REVERSE_D(62, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) BOOST_PP_LIST_FOLD_LEFT_63(o, s, BOOST_PP_LIST_REVERSE_D(63, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) BOOST_PP_LIST_FOLD_LEFT_64(o, s, BOOST_PP_LIST_REVERSE_D(64, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) BOOST_PP_LIST_FOLD_LEFT_65(o, s, BOOST_PP_LIST_REVERSE_D(65, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) BOOST_PP_LIST_FOLD_LEFT_66(o, s, BOOST_PP_LIST_REVERSE_D(66, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) BOOST_PP_LIST_FOLD_LEFT_67(o, s, BOOST_PP_LIST_REVERSE_D(67, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) BOOST_PP_LIST_FOLD_LEFT_68(o, s, BOOST_PP_LIST_REVERSE_D(68, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) BOOST_PP_LIST_FOLD_LEFT_69(o, s, BOOST_PP_LIST_REVERSE_D(69, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) BOOST_PP_LIST_FOLD_LEFT_70(o, s, BOOST_PP_LIST_REVERSE_D(70, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) BOOST_PP_LIST_FOLD_LEFT_71(o, s, BOOST_PP_LIST_REVERSE_D(71, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) BOOST_PP_LIST_FOLD_LEFT_72(o, s, BOOST_PP_LIST_REVERSE_D(72, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) BOOST_PP_LIST_FOLD_LEFT_73(o, s, BOOST_PP_LIST_REVERSE_D(73, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) BOOST_PP_LIST_FOLD_LEFT_74(o, s, BOOST_PP_LIST_REVERSE_D(74, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) BOOST_PP_LIST_FOLD_LEFT_75(o, s, BOOST_PP_LIST_REVERSE_D(75, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) BOOST_PP_LIST_FOLD_LEFT_76(o, s, BOOST_PP_LIST_REVERSE_D(76, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) BOOST_PP_LIST_FOLD_LEFT_77(o, s, BOOST_PP_LIST_REVERSE_D(77, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) BOOST_PP_LIST_FOLD_LEFT_78(o, s, BOOST_PP_LIST_REVERSE_D(78, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) BOOST_PP_LIST_FOLD_LEFT_79(o, s, BOOST_PP_LIST_REVERSE_D(79, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) BOOST_PP_LIST_FOLD_LEFT_80(o, s, BOOST_PP_LIST_REVERSE_D(80, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) BOOST_PP_LIST_FOLD_LEFT_81(o, s, BOOST_PP_LIST_REVERSE_D(81, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) BOOST_PP_LIST_FOLD_LEFT_82(o, s, BOOST_PP_LIST_REVERSE_D(82, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) BOOST_PP_LIST_FOLD_LEFT_83(o, s, BOOST_PP_LIST_REVERSE_D(83, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) BOOST_PP_LIST_FOLD_LEFT_84(o, s, BOOST_PP_LIST_REVERSE_D(84, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) BOOST_PP_LIST_FOLD_LEFT_85(o, s, BOOST_PP_LIST_REVERSE_D(85, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) BOOST_PP_LIST_FOLD_LEFT_86(o, s, BOOST_PP_LIST_REVERSE_D(86, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) BOOST_PP_LIST_FOLD_LEFT_87(o, s, BOOST_PP_LIST_REVERSE_D(87, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) BOOST_PP_LIST_FOLD_LEFT_88(o, s, BOOST_PP_LIST_REVERSE_D(88, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) BOOST_PP_LIST_FOLD_LEFT_89(o, s, BOOST_PP_LIST_REVERSE_D(89, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) BOOST_PP_LIST_FOLD_LEFT_90(o, s, BOOST_PP_LIST_REVERSE_D(90, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) BOOST_PP_LIST_FOLD_LEFT_91(o, s, BOOST_PP_LIST_REVERSE_D(91, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) BOOST_PP_LIST_FOLD_LEFT_92(o, s, BOOST_PP_LIST_REVERSE_D(92, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) BOOST_PP_LIST_FOLD_LEFT_93(o, s, BOOST_PP_LIST_REVERSE_D(93, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) BOOST_PP_LIST_FOLD_LEFT_94(o, s, BOOST_PP_LIST_REVERSE_D(94, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) BOOST_PP_LIST_FOLD_LEFT_95(o, s, BOOST_PP_LIST_REVERSE_D(95, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) BOOST_PP_LIST_FOLD_LEFT_96(o, s, BOOST_PP_LIST_REVERSE_D(96, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) BOOST_PP_LIST_FOLD_LEFT_97(o, s, BOOST_PP_LIST_REVERSE_D(97, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) BOOST_PP_LIST_FOLD_LEFT_98(o, s, BOOST_PP_LIST_REVERSE_D(98, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) BOOST_PP_LIST_FOLD_LEFT_99(o, s, BOOST_PP_LIST_REVERSE_D(99, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) BOOST_PP_LIST_FOLD_LEFT_100(o, s, BOOST_PP_LIST_REVERSE_D(100, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) BOOST_PP_LIST_FOLD_LEFT_101(o, s, BOOST_PP_LIST_REVERSE_D(101, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) BOOST_PP_LIST_FOLD_LEFT_102(o, s, BOOST_PP_LIST_REVERSE_D(102, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) BOOST_PP_LIST_FOLD_LEFT_103(o, s, BOOST_PP_LIST_REVERSE_D(103, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) BOOST_PP_LIST_FOLD_LEFT_104(o, s, BOOST_PP_LIST_REVERSE_D(104, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) BOOST_PP_LIST_FOLD_LEFT_105(o, s, BOOST_PP_LIST_REVERSE_D(105, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) BOOST_PP_LIST_FOLD_LEFT_106(o, s, BOOST_PP_LIST_REVERSE_D(106, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) BOOST_PP_LIST_FOLD_LEFT_107(o, s, BOOST_PP_LIST_REVERSE_D(107, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) BOOST_PP_LIST_FOLD_LEFT_108(o, s, BOOST_PP_LIST_REVERSE_D(108, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) BOOST_PP_LIST_FOLD_LEFT_109(o, s, BOOST_PP_LIST_REVERSE_D(109, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) BOOST_PP_LIST_FOLD_LEFT_110(o, s, BOOST_PP_LIST_REVERSE_D(110, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) BOOST_PP_LIST_FOLD_LEFT_111(o, s, BOOST_PP_LIST_REVERSE_D(111, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) BOOST_PP_LIST_FOLD_LEFT_112(o, s, BOOST_PP_LIST_REVERSE_D(112, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) BOOST_PP_LIST_FOLD_LEFT_113(o, s, BOOST_PP_LIST_REVERSE_D(113, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) BOOST_PP_LIST_FOLD_LEFT_114(o, s, BOOST_PP_LIST_REVERSE_D(114, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) BOOST_PP_LIST_FOLD_LEFT_115(o, s, BOOST_PP_LIST_REVERSE_D(115, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) BOOST_PP_LIST_FOLD_LEFT_116(o, s, BOOST_PP_LIST_REVERSE_D(116, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) BOOST_PP_LIST_FOLD_LEFT_117(o, s, BOOST_PP_LIST_REVERSE_D(117, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) BOOST_PP_LIST_FOLD_LEFT_118(o, s, BOOST_PP_LIST_REVERSE_D(118, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) BOOST_PP_LIST_FOLD_LEFT_119(o, s, BOOST_PP_LIST_REVERSE_D(119, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) BOOST_PP_LIST_FOLD_LEFT_120(o, s, BOOST_PP_LIST_REVERSE_D(120, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) BOOST_PP_LIST_FOLD_LEFT_121(o, s, BOOST_PP_LIST_REVERSE_D(121, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) BOOST_PP_LIST_FOLD_LEFT_122(o, s, BOOST_PP_LIST_REVERSE_D(122, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) BOOST_PP_LIST_FOLD_LEFT_123(o, s, BOOST_PP_LIST_REVERSE_D(123, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) BOOST_PP_LIST_FOLD_LEFT_124(o, s, BOOST_PP_LIST_REVERSE_D(124, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) BOOST_PP_LIST_FOLD_LEFT_125(o, s, BOOST_PP_LIST_REVERSE_D(125, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) BOOST_PP_LIST_FOLD_LEFT_126(o, s, BOOST_PP_LIST_REVERSE_D(126, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) BOOST_PP_LIST_FOLD_LEFT_127(o, s, BOOST_PP_LIST_REVERSE_D(127, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) BOOST_PP_LIST_FOLD_LEFT_128(o, s, BOOST_PP_LIST_REVERSE_D(128, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) BOOST_PP_LIST_FOLD_LEFT_129(o, s, BOOST_PP_LIST_REVERSE_D(129, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) BOOST_PP_LIST_FOLD_LEFT_130(o, s, BOOST_PP_LIST_REVERSE_D(130, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) BOOST_PP_LIST_FOLD_LEFT_131(o, s, BOOST_PP_LIST_REVERSE_D(131, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) BOOST_PP_LIST_FOLD_LEFT_132(o, s, BOOST_PP_LIST_REVERSE_D(132, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) BOOST_PP_LIST_FOLD_LEFT_133(o, s, BOOST_PP_LIST_REVERSE_D(133, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) BOOST_PP_LIST_FOLD_LEFT_134(o, s, BOOST_PP_LIST_REVERSE_D(134, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) BOOST_PP_LIST_FOLD_LEFT_135(o, s, BOOST_PP_LIST_REVERSE_D(135, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) BOOST_PP_LIST_FOLD_LEFT_136(o, s, BOOST_PP_LIST_REVERSE_D(136, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) BOOST_PP_LIST_FOLD_LEFT_137(o, s, BOOST_PP_LIST_REVERSE_D(137, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) BOOST_PP_LIST_FOLD_LEFT_138(o, s, BOOST_PP_LIST_REVERSE_D(138, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) BOOST_PP_LIST_FOLD_LEFT_139(o, s, BOOST_PP_LIST_REVERSE_D(139, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) BOOST_PP_LIST_FOLD_LEFT_140(o, s, BOOST_PP_LIST_REVERSE_D(140, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) BOOST_PP_LIST_FOLD_LEFT_141(o, s, BOOST_PP_LIST_REVERSE_D(141, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) BOOST_PP_LIST_FOLD_LEFT_142(o, s, BOOST_PP_LIST_REVERSE_D(142, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) BOOST_PP_LIST_FOLD_LEFT_143(o, s, BOOST_PP_LIST_REVERSE_D(143, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) BOOST_PP_LIST_FOLD_LEFT_144(o, s, BOOST_PP_LIST_REVERSE_D(144, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) BOOST_PP_LIST_FOLD_LEFT_145(o, s, BOOST_PP_LIST_REVERSE_D(145, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) BOOST_PP_LIST_FOLD_LEFT_146(o, s, BOOST_PP_LIST_REVERSE_D(146, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) BOOST_PP_LIST_FOLD_LEFT_147(o, s, BOOST_PP_LIST_REVERSE_D(147, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) BOOST_PP_LIST_FOLD_LEFT_148(o, s, BOOST_PP_LIST_REVERSE_D(148, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) BOOST_PP_LIST_FOLD_LEFT_149(o, s, BOOST_PP_LIST_REVERSE_D(149, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) BOOST_PP_LIST_FOLD_LEFT_150(o, s, BOOST_PP_LIST_REVERSE_D(150, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) BOOST_PP_LIST_FOLD_LEFT_151(o, s, BOOST_PP_LIST_REVERSE_D(151, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) BOOST_PP_LIST_FOLD_LEFT_152(o, s, BOOST_PP_LIST_REVERSE_D(152, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) BOOST_PP_LIST_FOLD_LEFT_153(o, s, BOOST_PP_LIST_REVERSE_D(153, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) BOOST_PP_LIST_FOLD_LEFT_154(o, s, BOOST_PP_LIST_REVERSE_D(154, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) BOOST_PP_LIST_FOLD_LEFT_155(o, s, BOOST_PP_LIST_REVERSE_D(155, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) BOOST_PP_LIST_FOLD_LEFT_156(o, s, BOOST_PP_LIST_REVERSE_D(156, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) BOOST_PP_LIST_FOLD_LEFT_157(o, s, BOOST_PP_LIST_REVERSE_D(157, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) BOOST_PP_LIST_FOLD_LEFT_158(o, s, BOOST_PP_LIST_REVERSE_D(158, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) BOOST_PP_LIST_FOLD_LEFT_159(o, s, BOOST_PP_LIST_REVERSE_D(159, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) BOOST_PP_LIST_FOLD_LEFT_160(o, s, BOOST_PP_LIST_REVERSE_D(160, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) BOOST_PP_LIST_FOLD_LEFT_161(o, s, BOOST_PP_LIST_REVERSE_D(161, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) BOOST_PP_LIST_FOLD_LEFT_162(o, s, BOOST_PP_LIST_REVERSE_D(162, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) BOOST_PP_LIST_FOLD_LEFT_163(o, s, BOOST_PP_LIST_REVERSE_D(163, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) BOOST_PP_LIST_FOLD_LEFT_164(o, s, BOOST_PP_LIST_REVERSE_D(164, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) BOOST_PP_LIST_FOLD_LEFT_165(o, s, BOOST_PP_LIST_REVERSE_D(165, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) BOOST_PP_LIST_FOLD_LEFT_166(o, s, BOOST_PP_LIST_REVERSE_D(166, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) BOOST_PP_LIST_FOLD_LEFT_167(o, s, BOOST_PP_LIST_REVERSE_D(167, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) BOOST_PP_LIST_FOLD_LEFT_168(o, s, BOOST_PP_LIST_REVERSE_D(168, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) BOOST_PP_LIST_FOLD_LEFT_169(o, s, BOOST_PP_LIST_REVERSE_D(169, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) BOOST_PP_LIST_FOLD_LEFT_170(o, s, BOOST_PP_LIST_REVERSE_D(170, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) BOOST_PP_LIST_FOLD_LEFT_171(o, s, BOOST_PP_LIST_REVERSE_D(171, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) BOOST_PP_LIST_FOLD_LEFT_172(o, s, BOOST_PP_LIST_REVERSE_D(172, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) BOOST_PP_LIST_FOLD_LEFT_173(o, s, BOOST_PP_LIST_REVERSE_D(173, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) BOOST_PP_LIST_FOLD_LEFT_174(o, s, BOOST_PP_LIST_REVERSE_D(174, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) BOOST_PP_LIST_FOLD_LEFT_175(o, s, BOOST_PP_LIST_REVERSE_D(175, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) BOOST_PP_LIST_FOLD_LEFT_176(o, s, BOOST_PP_LIST_REVERSE_D(176, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) BOOST_PP_LIST_FOLD_LEFT_177(o, s, BOOST_PP_LIST_REVERSE_D(177, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) BOOST_PP_LIST_FOLD_LEFT_178(o, s, BOOST_PP_LIST_REVERSE_D(178, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) BOOST_PP_LIST_FOLD_LEFT_179(o, s, BOOST_PP_LIST_REVERSE_D(179, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) BOOST_PP_LIST_FOLD_LEFT_180(o, s, BOOST_PP_LIST_REVERSE_D(180, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) BOOST_PP_LIST_FOLD_LEFT_181(o, s, BOOST_PP_LIST_REVERSE_D(181, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) BOOST_PP_LIST_FOLD_LEFT_182(o, s, BOOST_PP_LIST_REVERSE_D(182, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) BOOST_PP_LIST_FOLD_LEFT_183(o, s, BOOST_PP_LIST_REVERSE_D(183, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) BOOST_PP_LIST_FOLD_LEFT_184(o, s, BOOST_PP_LIST_REVERSE_D(184, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) BOOST_PP_LIST_FOLD_LEFT_185(o, s, BOOST_PP_LIST_REVERSE_D(185, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) BOOST_PP_LIST_FOLD_LEFT_186(o, s, BOOST_PP_LIST_REVERSE_D(186, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) BOOST_PP_LIST_FOLD_LEFT_187(o, s, BOOST_PP_LIST_REVERSE_D(187, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) BOOST_PP_LIST_FOLD_LEFT_188(o, s, BOOST_PP_LIST_REVERSE_D(188, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) BOOST_PP_LIST_FOLD_LEFT_189(o, s, BOOST_PP_LIST_REVERSE_D(189, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) BOOST_PP_LIST_FOLD_LEFT_190(o, s, BOOST_PP_LIST_REVERSE_D(190, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) BOOST_PP_LIST_FOLD_LEFT_191(o, s, BOOST_PP_LIST_REVERSE_D(191, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) BOOST_PP_LIST_FOLD_LEFT_192(o, s, BOOST_PP_LIST_REVERSE_D(192, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) BOOST_PP_LIST_FOLD_LEFT_193(o, s, BOOST_PP_LIST_REVERSE_D(193, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) BOOST_PP_LIST_FOLD_LEFT_194(o, s, BOOST_PP_LIST_REVERSE_D(194, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) BOOST_PP_LIST_FOLD_LEFT_195(o, s, BOOST_PP_LIST_REVERSE_D(195, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) BOOST_PP_LIST_FOLD_LEFT_196(o, s, BOOST_PP_LIST_REVERSE_D(196, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) BOOST_PP_LIST_FOLD_LEFT_197(o, s, BOOST_PP_LIST_REVERSE_D(197, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) BOOST_PP_LIST_FOLD_LEFT_198(o, s, BOOST_PP_LIST_REVERSE_D(198, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) BOOST_PP_LIST_FOLD_LEFT_199(o, s, BOOST_PP_LIST_REVERSE_D(199, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) BOOST_PP_LIST_FOLD_LEFT_200(o, s, BOOST_PP_LIST_REVERSE_D(200, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) BOOST_PP_LIST_FOLD_LEFT_201(o, s, BOOST_PP_LIST_REVERSE_D(201, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) BOOST_PP_LIST_FOLD_LEFT_202(o, s, BOOST_PP_LIST_REVERSE_D(202, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) BOOST_PP_LIST_FOLD_LEFT_203(o, s, BOOST_PP_LIST_REVERSE_D(203, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) BOOST_PP_LIST_FOLD_LEFT_204(o, s, BOOST_PP_LIST_REVERSE_D(204, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) BOOST_PP_LIST_FOLD_LEFT_205(o, s, BOOST_PP_LIST_REVERSE_D(205, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) BOOST_PP_LIST_FOLD_LEFT_206(o, s, BOOST_PP_LIST_REVERSE_D(206, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) BOOST_PP_LIST_FOLD_LEFT_207(o, s, BOOST_PP_LIST_REVERSE_D(207, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) BOOST_PP_LIST_FOLD_LEFT_208(o, s, BOOST_PP_LIST_REVERSE_D(208, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) BOOST_PP_LIST_FOLD_LEFT_209(o, s, BOOST_PP_LIST_REVERSE_D(209, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) BOOST_PP_LIST_FOLD_LEFT_210(o, s, BOOST_PP_LIST_REVERSE_D(210, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) BOOST_PP_LIST_FOLD_LEFT_211(o, s, BOOST_PP_LIST_REVERSE_D(211, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) BOOST_PP_LIST_FOLD_LEFT_212(o, s, BOOST_PP_LIST_REVERSE_D(212, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) BOOST_PP_LIST_FOLD_LEFT_213(o, s, BOOST_PP_LIST_REVERSE_D(213, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) BOOST_PP_LIST_FOLD_LEFT_214(o, s, BOOST_PP_LIST_REVERSE_D(214, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) BOOST_PP_LIST_FOLD_LEFT_215(o, s, BOOST_PP_LIST_REVERSE_D(215, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) BOOST_PP_LIST_FOLD_LEFT_216(o, s, BOOST_PP_LIST_REVERSE_D(216, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) BOOST_PP_LIST_FOLD_LEFT_217(o, s, BOOST_PP_LIST_REVERSE_D(217, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) BOOST_PP_LIST_FOLD_LEFT_218(o, s, BOOST_PP_LIST_REVERSE_D(218, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) BOOST_PP_LIST_FOLD_LEFT_219(o, s, BOOST_PP_LIST_REVERSE_D(219, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) BOOST_PP_LIST_FOLD_LEFT_220(o, s, BOOST_PP_LIST_REVERSE_D(220, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) BOOST_PP_LIST_FOLD_LEFT_221(o, s, BOOST_PP_LIST_REVERSE_D(221, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) BOOST_PP_LIST_FOLD_LEFT_222(o, s, BOOST_PP_LIST_REVERSE_D(222, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) BOOST_PP_LIST_FOLD_LEFT_223(o, s, BOOST_PP_LIST_REVERSE_D(223, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) BOOST_PP_LIST_FOLD_LEFT_224(o, s, BOOST_PP_LIST_REVERSE_D(224, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) BOOST_PP_LIST_FOLD_LEFT_225(o, s, BOOST_PP_LIST_REVERSE_D(225, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) BOOST_PP_LIST_FOLD_LEFT_226(o, s, BOOST_PP_LIST_REVERSE_D(226, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) BOOST_PP_LIST_FOLD_LEFT_227(o, s, BOOST_PP_LIST_REVERSE_D(227, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) BOOST_PP_LIST_FOLD_LEFT_228(o, s, BOOST_PP_LIST_REVERSE_D(228, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) BOOST_PP_LIST_FOLD_LEFT_229(o, s, BOOST_PP_LIST_REVERSE_D(229, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) BOOST_PP_LIST_FOLD_LEFT_230(o, s, BOOST_PP_LIST_REVERSE_D(230, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) BOOST_PP_LIST_FOLD_LEFT_231(o, s, BOOST_PP_LIST_REVERSE_D(231, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) BOOST_PP_LIST_FOLD_LEFT_232(o, s, BOOST_PP_LIST_REVERSE_D(232, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) BOOST_PP_LIST_FOLD_LEFT_233(o, s, BOOST_PP_LIST_REVERSE_D(233, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) BOOST_PP_LIST_FOLD_LEFT_234(o, s, BOOST_PP_LIST_REVERSE_D(234, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) BOOST_PP_LIST_FOLD_LEFT_235(o, s, BOOST_PP_LIST_REVERSE_D(235, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) BOOST_PP_LIST_FOLD_LEFT_236(o, s, BOOST_PP_LIST_REVERSE_D(236, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) BOOST_PP_LIST_FOLD_LEFT_237(o, s, BOOST_PP_LIST_REVERSE_D(237, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) BOOST_PP_LIST_FOLD_LEFT_238(o, s, BOOST_PP_LIST_REVERSE_D(238, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) BOOST_PP_LIST_FOLD_LEFT_239(o, s, BOOST_PP_LIST_REVERSE_D(239, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) BOOST_PP_LIST_FOLD_LEFT_240(o, s, BOOST_PP_LIST_REVERSE_D(240, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) BOOST_PP_LIST_FOLD_LEFT_241(o, s, BOOST_PP_LIST_REVERSE_D(241, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) BOOST_PP_LIST_FOLD_LEFT_242(o, s, BOOST_PP_LIST_REVERSE_D(242, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) BOOST_PP_LIST_FOLD_LEFT_243(o, s, BOOST_PP_LIST_REVERSE_D(243, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) BOOST_PP_LIST_FOLD_LEFT_244(o, s, BOOST_PP_LIST_REVERSE_D(244, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) BOOST_PP_LIST_FOLD_LEFT_245(o, s, BOOST_PP_LIST_REVERSE_D(245, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) BOOST_PP_LIST_FOLD_LEFT_246(o, s, BOOST_PP_LIST_REVERSE_D(246, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) BOOST_PP_LIST_FOLD_LEFT_247(o, s, BOOST_PP_LIST_REVERSE_D(247, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) BOOST_PP_LIST_FOLD_LEFT_248(o, s, BOOST_PP_LIST_REVERSE_D(248, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) BOOST_PP_LIST_FOLD_LEFT_249(o, s, BOOST_PP_LIST_REVERSE_D(249, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) BOOST_PP_LIST_FOLD_LEFT_250(o, s, BOOST_PP_LIST_REVERSE_D(250, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) BOOST_PP_LIST_FOLD_LEFT_251(o, s, BOOST_PP_LIST_REVERSE_D(251, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) BOOST_PP_LIST_FOLD_LEFT_252(o, s, BOOST_PP_LIST_REVERSE_D(252, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) BOOST_PP_LIST_FOLD_LEFT_253(o, s, BOOST_PP_LIST_REVERSE_D(253, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) BOOST_PP_LIST_FOLD_LEFT_254(o, s, BOOST_PP_LIST_REVERSE_D(254, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) BOOST_PP_LIST_FOLD_LEFT_255(o, s, BOOST_PP_LIST_REVERSE_D(255, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) BOOST_PP_LIST_FOLD_LEFT_256(o, s, BOOST_PP_LIST_REVERSE_D(256, l)) +# +# endif diff --git a/src/boost/boost/preprocessor/list/detail/limits/fold_right_512.hpp b/src/boost/boost/preprocessor/list/detail/limits/fold_right_512.hpp new file mode 100644 index 000000000..219a0eeb9 --- /dev/null +++ b/src/boost/boost/preprocessor/list/detail/limits/fold_right_512.hpp @@ -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) */ +# /* Revised by Edward Diener (2020) */ +# +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_512_HPP +# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_512_HPP +# +# define BOOST_PP_LIST_FOLD_RIGHT_257(o, s, l) BOOST_PP_LIST_FOLD_LEFT_257(o, s, BOOST_PP_LIST_REVERSE_D(257, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_258(o, s, l) BOOST_PP_LIST_FOLD_LEFT_258(o, s, BOOST_PP_LIST_REVERSE_D(258, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_259(o, s, l) BOOST_PP_LIST_FOLD_LEFT_259(o, s, BOOST_PP_LIST_REVERSE_D(259, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_260(o, s, l) BOOST_PP_LIST_FOLD_LEFT_260(o, s, BOOST_PP_LIST_REVERSE_D(260, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_261(o, s, l) BOOST_PP_LIST_FOLD_LEFT_261(o, s, BOOST_PP_LIST_REVERSE_D(261, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_262(o, s, l) BOOST_PP_LIST_FOLD_LEFT_262(o, s, BOOST_PP_LIST_REVERSE_D(262, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_263(o, s, l) BOOST_PP_LIST_FOLD_LEFT_263(o, s, BOOST_PP_LIST_REVERSE_D(263, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_264(o, s, l) BOOST_PP_LIST_FOLD_LEFT_264(o, s, BOOST_PP_LIST_REVERSE_D(264, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_265(o, s, l) BOOST_PP_LIST_FOLD_LEFT_265(o, s, BOOST_PP_LIST_REVERSE_D(265, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_266(o, s, l) BOOST_PP_LIST_FOLD_LEFT_266(o, s, BOOST_PP_LIST_REVERSE_D(266, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_267(o, s, l) BOOST_PP_LIST_FOLD_LEFT_267(o, s, BOOST_PP_LIST_REVERSE_D(267, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_268(o, s, l) BOOST_PP_LIST_FOLD_LEFT_268(o, s, BOOST_PP_LIST_REVERSE_D(268, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_269(o, s, l) BOOST_PP_LIST_FOLD_LEFT_269(o, s, BOOST_PP_LIST_REVERSE_D(269, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_270(o, s, l) BOOST_PP_LIST_FOLD_LEFT_270(o, s, BOOST_PP_LIST_REVERSE_D(270, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_271(o, s, l) BOOST_PP_LIST_FOLD_LEFT_271(o, s, BOOST_PP_LIST_REVERSE_D(271, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_272(o, s, l) BOOST_PP_LIST_FOLD_LEFT_272(o, s, BOOST_PP_LIST_REVERSE_D(272, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_273(o, s, l) BOOST_PP_LIST_FOLD_LEFT_273(o, s, BOOST_PP_LIST_REVERSE_D(273, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_274(o, s, l) BOOST_PP_LIST_FOLD_LEFT_274(o, s, BOOST_PP_LIST_REVERSE_D(274, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_275(o, s, l) BOOST_PP_LIST_FOLD_LEFT_275(o, s, BOOST_PP_LIST_REVERSE_D(275, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_276(o, s, l) BOOST_PP_LIST_FOLD_LEFT_276(o, s, BOOST_PP_LIST_REVERSE_D(276, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_277(o, s, l) BOOST_PP_LIST_FOLD_LEFT_277(o, s, BOOST_PP_LIST_REVERSE_D(277, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_278(o, s, l) BOOST_PP_LIST_FOLD_LEFT_278(o, s, BOOST_PP_LIST_REVERSE_D(278, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_279(o, s, l) BOOST_PP_LIST_FOLD_LEFT_279(o, s, BOOST_PP_LIST_REVERSE_D(279, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_280(o, s, l) BOOST_PP_LIST_FOLD_LEFT_280(o, s, BOOST_PP_LIST_REVERSE_D(280, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_281(o, s, l) BOOST_PP_LIST_FOLD_LEFT_281(o, s, BOOST_PP_LIST_REVERSE_D(281, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_282(o, s, l) BOOST_PP_LIST_FOLD_LEFT_282(o, s, BOOST_PP_LIST_REVERSE_D(282, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_283(o, s, l) BOOST_PP_LIST_FOLD_LEFT_283(o, s, BOOST_PP_LIST_REVERSE_D(283, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_284(o, s, l) BOOST_PP_LIST_FOLD_LEFT_284(o, s, BOOST_PP_LIST_REVERSE_D(284, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_285(o, s, l) BOOST_PP_LIST_FOLD_LEFT_285(o, s, BOOST_PP_LIST_REVERSE_D(285, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_286(o, s, l) BOOST_PP_LIST_FOLD_LEFT_286(o, s, BOOST_PP_LIST_REVERSE_D(286, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_287(o, s, l) BOOST_PP_LIST_FOLD_LEFT_287(o, s, BOOST_PP_LIST_REVERSE_D(287, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_288(o, s, l) BOOST_PP_LIST_FOLD_LEFT_288(o, s, BOOST_PP_LIST_REVERSE_D(288, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_289(o, s, l) BOOST_PP_LIST_FOLD_LEFT_289(o, s, BOOST_PP_LIST_REVERSE_D(289, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_290(o, s, l) BOOST_PP_LIST_FOLD_LEFT_290(o, s, BOOST_PP_LIST_REVERSE_D(290, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_291(o, s, l) BOOST_PP_LIST_FOLD_LEFT_291(o, s, BOOST_PP_LIST_REVERSE_D(291, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_292(o, s, l) BOOST_PP_LIST_FOLD_LEFT_292(o, s, BOOST_PP_LIST_REVERSE_D(292, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_293(o, s, l) BOOST_PP_LIST_FOLD_LEFT_293(o, s, BOOST_PP_LIST_REVERSE_D(293, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_294(o, s, l) BOOST_PP_LIST_FOLD_LEFT_294(o, s, BOOST_PP_LIST_REVERSE_D(294, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_295(o, s, l) BOOST_PP_LIST_FOLD_LEFT_295(o, s, BOOST_PP_LIST_REVERSE_D(295, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_296(o, s, l) BOOST_PP_LIST_FOLD_LEFT_296(o, s, BOOST_PP_LIST_REVERSE_D(296, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_297(o, s, l) BOOST_PP_LIST_FOLD_LEFT_297(o, s, BOOST_PP_LIST_REVERSE_D(297, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_298(o, s, l) BOOST_PP_LIST_FOLD_LEFT_298(o, s, BOOST_PP_LIST_REVERSE_D(298, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_299(o, s, l) BOOST_PP_LIST_FOLD_LEFT_299(o, s, BOOST_PP_LIST_REVERSE_D(299, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_300(o, s, l) BOOST_PP_LIST_FOLD_LEFT_300(o, s, BOOST_PP_LIST_REVERSE_D(300, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_301(o, s, l) BOOST_PP_LIST_FOLD_LEFT_301(o, s, BOOST_PP_LIST_REVERSE_D(301, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_302(o, s, l) BOOST_PP_LIST_FOLD_LEFT_302(o, s, BOOST_PP_LIST_REVERSE_D(302, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_303(o, s, l) BOOST_PP_LIST_FOLD_LEFT_303(o, s, BOOST_PP_LIST_REVERSE_D(303, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_304(o, s, l) BOOST_PP_LIST_FOLD_LEFT_304(o, s, BOOST_PP_LIST_REVERSE_D(304, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_305(o, s, l) BOOST_PP_LIST_FOLD_LEFT_305(o, s, BOOST_PP_LIST_REVERSE_D(305, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_306(o, s, l) BOOST_PP_LIST_FOLD_LEFT_306(o, s, BOOST_PP_LIST_REVERSE_D(306, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_307(o, s, l) BOOST_PP_LIST_FOLD_LEFT_307(o, s, BOOST_PP_LIST_REVERSE_D(307, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_308(o, s, l) BOOST_PP_LIST_FOLD_LEFT_308(o, s, BOOST_PP_LIST_REVERSE_D(308, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_309(o, s, l) BOOST_PP_LIST_FOLD_LEFT_309(o, s, BOOST_PP_LIST_REVERSE_D(309, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_310(o, s, l) BOOST_PP_LIST_FOLD_LEFT_310(o, s, BOOST_PP_LIST_REVERSE_D(310, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_311(o, s, l) BOOST_PP_LIST_FOLD_LEFT_311(o, s, BOOST_PP_LIST_REVERSE_D(311, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_312(o, s, l) BOOST_PP_LIST_FOLD_LEFT_312(o, s, BOOST_PP_LIST_REVERSE_D(312, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_313(o, s, l) BOOST_PP_LIST_FOLD_LEFT_313(o, s, BOOST_PP_LIST_REVERSE_D(313, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_314(o, s, l) BOOST_PP_LIST_FOLD_LEFT_314(o, s, BOOST_PP_LIST_REVERSE_D(314, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_315(o, s, l) BOOST_PP_LIST_FOLD_LEFT_315(o, s, BOOST_PP_LIST_REVERSE_D(315, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_316(o, s, l) BOOST_PP_LIST_FOLD_LEFT_316(o, s, BOOST_PP_LIST_REVERSE_D(316, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_317(o, s, l) BOOST_PP_LIST_FOLD_LEFT_317(o, s, BOOST_PP_LIST_REVERSE_D(317, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_318(o, s, l) BOOST_PP_LIST_FOLD_LEFT_318(o, s, BOOST_PP_LIST_REVERSE_D(318, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_319(o, s, l) BOOST_PP_LIST_FOLD_LEFT_319(o, s, BOOST_PP_LIST_REVERSE_D(319, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_320(o, s, l) BOOST_PP_LIST_FOLD_LEFT_320(o, s, BOOST_PP_LIST_REVERSE_D(320, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_321(o, s, l) BOOST_PP_LIST_FOLD_LEFT_321(o, s, BOOST_PP_LIST_REVERSE_D(321, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_322(o, s, l) BOOST_PP_LIST_FOLD_LEFT_322(o, s, BOOST_PP_LIST_REVERSE_D(322, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_323(o, s, l) BOOST_PP_LIST_FOLD_LEFT_323(o, s, BOOST_PP_LIST_REVERSE_D(323, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_324(o, s, l) BOOST_PP_LIST_FOLD_LEFT_324(o, s, BOOST_PP_LIST_REVERSE_D(324, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_325(o, s, l) BOOST_PP_LIST_FOLD_LEFT_325(o, s, BOOST_PP_LIST_REVERSE_D(325, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_326(o, s, l) BOOST_PP_LIST_FOLD_LEFT_326(o, s, BOOST_PP_LIST_REVERSE_D(326, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_327(o, s, l) BOOST_PP_LIST_FOLD_LEFT_327(o, s, BOOST_PP_LIST_REVERSE_D(327, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_328(o, s, l) BOOST_PP_LIST_FOLD_LEFT_328(o, s, BOOST_PP_LIST_REVERSE_D(328, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_329(o, s, l) BOOST_PP_LIST_FOLD_LEFT_329(o, s, BOOST_PP_LIST_REVERSE_D(329, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_330(o, s, l) BOOST_PP_LIST_FOLD_LEFT_330(o, s, BOOST_PP_LIST_REVERSE_D(330, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_331(o, s, l) BOOST_PP_LIST_FOLD_LEFT_331(o, s, BOOST_PP_LIST_REVERSE_D(331, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_332(o, s, l) BOOST_PP_LIST_FOLD_LEFT_332(o, s, BOOST_PP_LIST_REVERSE_D(332, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_333(o, s, l) BOOST_PP_LIST_FOLD_LEFT_333(o, s, BOOST_PP_LIST_REVERSE_D(333, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_334(o, s, l) BOOST_PP_LIST_FOLD_LEFT_334(o, s, BOOST_PP_LIST_REVERSE_D(334, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_335(o, s, l) BOOST_PP_LIST_FOLD_LEFT_335(o, s, BOOST_PP_LIST_REVERSE_D(335, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_336(o, s, l) BOOST_PP_LIST_FOLD_LEFT_336(o, s, BOOST_PP_LIST_REVERSE_D(336, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_337(o, s, l) BOOST_PP_LIST_FOLD_LEFT_337(o, s, BOOST_PP_LIST_REVERSE_D(337, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_338(o, s, l) BOOST_PP_LIST_FOLD_LEFT_338(o, s, BOOST_PP_LIST_REVERSE_D(338, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_339(o, s, l) BOOST_PP_LIST_FOLD_LEFT_339(o, s, BOOST_PP_LIST_REVERSE_D(339, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_340(o, s, l) BOOST_PP_LIST_FOLD_LEFT_340(o, s, BOOST_PP_LIST_REVERSE_D(340, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_341(o, s, l) BOOST_PP_LIST_FOLD_LEFT_341(o, s, BOOST_PP_LIST_REVERSE_D(341, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_342(o, s, l) BOOST_PP_LIST_FOLD_LEFT_342(o, s, BOOST_PP_LIST_REVERSE_D(342, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_343(o, s, l) BOOST_PP_LIST_FOLD_LEFT_343(o, s, BOOST_PP_LIST_REVERSE_D(343, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_344(o, s, l) BOOST_PP_LIST_FOLD_LEFT_344(o, s, BOOST_PP_LIST_REVERSE_D(344, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_345(o, s, l) BOOST_PP_LIST_FOLD_LEFT_345(o, s, BOOST_PP_LIST_REVERSE_D(345, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_346(o, s, l) BOOST_PP_LIST_FOLD_LEFT_346(o, s, BOOST_PP_LIST_REVERSE_D(346, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_347(o, s, l) BOOST_PP_LIST_FOLD_LEFT_347(o, s, BOOST_PP_LIST_REVERSE_D(347, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_348(o, s, l) BOOST_PP_LIST_FOLD_LEFT_348(o, s, BOOST_PP_LIST_REVERSE_D(348, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_349(o, s, l) BOOST_PP_LIST_FOLD_LEFT_349(o, s, BOOST_PP_LIST_REVERSE_D(349, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_350(o, s, l) BOOST_PP_LIST_FOLD_LEFT_350(o, s, BOOST_PP_LIST_REVERSE_D(350, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_351(o, s, l) BOOST_PP_LIST_FOLD_LEFT_351(o, s, BOOST_PP_LIST_REVERSE_D(351, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_352(o, s, l) BOOST_PP_LIST_FOLD_LEFT_352(o, s, BOOST_PP_LIST_REVERSE_D(352, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_353(o, s, l) BOOST_PP_LIST_FOLD_LEFT_353(o, s, BOOST_PP_LIST_REVERSE_D(353, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_354(o, s, l) BOOST_PP_LIST_FOLD_LEFT_354(o, s, BOOST_PP_LIST_REVERSE_D(354, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_355(o, s, l) BOOST_PP_LIST_FOLD_LEFT_355(o, s, BOOST_PP_LIST_REVERSE_D(355, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_356(o, s, l) BOOST_PP_LIST_FOLD_LEFT_356(o, s, BOOST_PP_LIST_REVERSE_D(356, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_357(o, s, l) BOOST_PP_LIST_FOLD_LEFT_357(o, s, BOOST_PP_LIST_REVERSE_D(357, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_358(o, s, l) BOOST_PP_LIST_FOLD_LEFT_358(o, s, BOOST_PP_LIST_REVERSE_D(358, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_359(o, s, l) BOOST_PP_LIST_FOLD_LEFT_359(o, s, BOOST_PP_LIST_REVERSE_D(359, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_360(o, s, l) BOOST_PP_LIST_FOLD_LEFT_360(o, s, BOOST_PP_LIST_REVERSE_D(360, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_361(o, s, l) BOOST_PP_LIST_FOLD_LEFT_361(o, s, BOOST_PP_LIST_REVERSE_D(361, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_362(o, s, l) BOOST_PP_LIST_FOLD_LEFT_362(o, s, BOOST_PP_LIST_REVERSE_D(362, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_363(o, s, l) BOOST_PP_LIST_FOLD_LEFT_363(o, s, BOOST_PP_LIST_REVERSE_D(363, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_364(o, s, l) BOOST_PP_LIST_FOLD_LEFT_364(o, s, BOOST_PP_LIST_REVERSE_D(364, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_365(o, s, l) BOOST_PP_LIST_FOLD_LEFT_365(o, s, BOOST_PP_LIST_REVERSE_D(365, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_366(o, s, l) BOOST_PP_LIST_FOLD_LEFT_366(o, s, BOOST_PP_LIST_REVERSE_D(366, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_367(o, s, l) BOOST_PP_LIST_FOLD_LEFT_367(o, s, BOOST_PP_LIST_REVERSE_D(367, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_368(o, s, l) BOOST_PP_LIST_FOLD_LEFT_368(o, s, BOOST_PP_LIST_REVERSE_D(368, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_369(o, s, l) BOOST_PP_LIST_FOLD_LEFT_369(o, s, BOOST_PP_LIST_REVERSE_D(369, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_370(o, s, l) BOOST_PP_LIST_FOLD_LEFT_370(o, s, BOOST_PP_LIST_REVERSE_D(370, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_371(o, s, l) BOOST_PP_LIST_FOLD_LEFT_371(o, s, BOOST_PP_LIST_REVERSE_D(371, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_372(o, s, l) BOOST_PP_LIST_FOLD_LEFT_372(o, s, BOOST_PP_LIST_REVERSE_D(372, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_373(o, s, l) BOOST_PP_LIST_FOLD_LEFT_373(o, s, BOOST_PP_LIST_REVERSE_D(373, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_374(o, s, l) BOOST_PP_LIST_FOLD_LEFT_374(o, s, BOOST_PP_LIST_REVERSE_D(374, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_375(o, s, l) BOOST_PP_LIST_FOLD_LEFT_375(o, s, BOOST_PP_LIST_REVERSE_D(375, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_376(o, s, l) BOOST_PP_LIST_FOLD_LEFT_376(o, s, BOOST_PP_LIST_REVERSE_D(376, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_377(o, s, l) BOOST_PP_LIST_FOLD_LEFT_377(o, s, BOOST_PP_LIST_REVERSE_D(377, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_378(o, s, l) BOOST_PP_LIST_FOLD_LEFT_378(o, s, BOOST_PP_LIST_REVERSE_D(378, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_379(o, s, l) BOOST_PP_LIST_FOLD_LEFT_379(o, s, BOOST_PP_LIST_REVERSE_D(379, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_380(o, s, l) BOOST_PP_LIST_FOLD_LEFT_380(o, s, BOOST_PP_LIST_REVERSE_D(380, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_381(o, s, l) BOOST_PP_LIST_FOLD_LEFT_381(o, s, BOOST_PP_LIST_REVERSE_D(381, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_382(o, s, l) BOOST_PP_LIST_FOLD_LEFT_382(o, s, BOOST_PP_LIST_REVERSE_D(382, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_383(o, s, l) BOOST_PP_LIST_FOLD_LEFT_383(o, s, BOOST_PP_LIST_REVERSE_D(383, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_384(o, s, l) BOOST_PP_LIST_FOLD_LEFT_384(o, s, BOOST_PP_LIST_REVERSE_D(384, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_385(o, s, l) BOOST_PP_LIST_FOLD_LEFT_385(o, s, BOOST_PP_LIST_REVERSE_D(385, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_386(o, s, l) BOOST_PP_LIST_FOLD_LEFT_386(o, s, BOOST_PP_LIST_REVERSE_D(386, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_387(o, s, l) BOOST_PP_LIST_FOLD_LEFT_387(o, s, BOOST_PP_LIST_REVERSE_D(387, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_388(o, s, l) BOOST_PP_LIST_FOLD_LEFT_388(o, s, BOOST_PP_LIST_REVERSE_D(388, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_389(o, s, l) BOOST_PP_LIST_FOLD_LEFT_389(o, s, BOOST_PP_LIST_REVERSE_D(389, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_390(o, s, l) BOOST_PP_LIST_FOLD_LEFT_390(o, s, BOOST_PP_LIST_REVERSE_D(390, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_391(o, s, l) BOOST_PP_LIST_FOLD_LEFT_391(o, s, BOOST_PP_LIST_REVERSE_D(391, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_392(o, s, l) BOOST_PP_LIST_FOLD_LEFT_392(o, s, BOOST_PP_LIST_REVERSE_D(392, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_393(o, s, l) BOOST_PP_LIST_FOLD_LEFT_393(o, s, BOOST_PP_LIST_REVERSE_D(393, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_394(o, s, l) BOOST_PP_LIST_FOLD_LEFT_394(o, s, BOOST_PP_LIST_REVERSE_D(394, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_395(o, s, l) BOOST_PP_LIST_FOLD_LEFT_395(o, s, BOOST_PP_LIST_REVERSE_D(395, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_396(o, s, l) BOOST_PP_LIST_FOLD_LEFT_396(o, s, BOOST_PP_LIST_REVERSE_D(396, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_397(o, s, l) BOOST_PP_LIST_FOLD_LEFT_397(o, s, BOOST_PP_LIST_REVERSE_D(397, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_398(o, s, l) BOOST_PP_LIST_FOLD_LEFT_398(o, s, BOOST_PP_LIST_REVERSE_D(398, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_399(o, s, l) BOOST_PP_LIST_FOLD_LEFT_399(o, s, BOOST_PP_LIST_REVERSE_D(399, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_400(o, s, l) BOOST_PP_LIST_FOLD_LEFT_400(o, s, BOOST_PP_LIST_REVERSE_D(400, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_401(o, s, l) BOOST_PP_LIST_FOLD_LEFT_401(o, s, BOOST_PP_LIST_REVERSE_D(401, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_402(o, s, l) BOOST_PP_LIST_FOLD_LEFT_402(o, s, BOOST_PP_LIST_REVERSE_D(402, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_403(o, s, l) BOOST_PP_LIST_FOLD_LEFT_403(o, s, BOOST_PP_LIST_REVERSE_D(403, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_404(o, s, l) BOOST_PP_LIST_FOLD_LEFT_404(o, s, BOOST_PP_LIST_REVERSE_D(404, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_405(o, s, l) BOOST_PP_LIST_FOLD_LEFT_405(o, s, BOOST_PP_LIST_REVERSE_D(405, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_406(o, s, l) BOOST_PP_LIST_FOLD_LEFT_406(o, s, BOOST_PP_LIST_REVERSE_D(406, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_407(o, s, l) BOOST_PP_LIST_FOLD_LEFT_407(o, s, BOOST_PP_LIST_REVERSE_D(407, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_408(o, s, l) BOOST_PP_LIST_FOLD_LEFT_408(o, s, BOOST_PP_LIST_REVERSE_D(408, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_409(o, s, l) BOOST_PP_LIST_FOLD_LEFT_409(o, s, BOOST_PP_LIST_REVERSE_D(409, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_410(o, s, l) BOOST_PP_LIST_FOLD_LEFT_410(o, s, BOOST_PP_LIST_REVERSE_D(410, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_411(o, s, l) BOOST_PP_LIST_FOLD_LEFT_411(o, s, BOOST_PP_LIST_REVERSE_D(411, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_412(o, s, l) BOOST_PP_LIST_FOLD_LEFT_412(o, s, BOOST_PP_LIST_REVERSE_D(412, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_413(o, s, l) BOOST_PP_LIST_FOLD_LEFT_413(o, s, BOOST_PP_LIST_REVERSE_D(413, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_414(o, s, l) BOOST_PP_LIST_FOLD_LEFT_414(o, s, BOOST_PP_LIST_REVERSE_D(414, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_415(o, s, l) BOOST_PP_LIST_FOLD_LEFT_415(o, s, BOOST_PP_LIST_REVERSE_D(415, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_416(o, s, l) BOOST_PP_LIST_FOLD_LEFT_416(o, s, BOOST_PP_LIST_REVERSE_D(416, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_417(o, s, l) BOOST_PP_LIST_FOLD_LEFT_417(o, s, BOOST_PP_LIST_REVERSE_D(417, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_418(o, s, l) BOOST_PP_LIST_FOLD_LEFT_418(o, s, BOOST_PP_LIST_REVERSE_D(418, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_419(o, s, l) BOOST_PP_LIST_FOLD_LEFT_419(o, s, BOOST_PP_LIST_REVERSE_D(419, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_420(o, s, l) BOOST_PP_LIST_FOLD_LEFT_420(o, s, BOOST_PP_LIST_REVERSE_D(420, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_421(o, s, l) BOOST_PP_LIST_FOLD_LEFT_421(o, s, BOOST_PP_LIST_REVERSE_D(421, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_422(o, s, l) BOOST_PP_LIST_FOLD_LEFT_422(o, s, BOOST_PP_LIST_REVERSE_D(422, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_423(o, s, l) BOOST_PP_LIST_FOLD_LEFT_423(o, s, BOOST_PP_LIST_REVERSE_D(423, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_424(o, s, l) BOOST_PP_LIST_FOLD_LEFT_424(o, s, BOOST_PP_LIST_REVERSE_D(424, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_425(o, s, l) BOOST_PP_LIST_FOLD_LEFT_425(o, s, BOOST_PP_LIST_REVERSE_D(425, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_426(o, s, l) BOOST_PP_LIST_FOLD_LEFT_426(o, s, BOOST_PP_LIST_REVERSE_D(426, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_427(o, s, l) BOOST_PP_LIST_FOLD_LEFT_427(o, s, BOOST_PP_LIST_REVERSE_D(427, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_428(o, s, l) BOOST_PP_LIST_FOLD_LEFT_428(o, s, BOOST_PP_LIST_REVERSE_D(428, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_429(o, s, l) BOOST_PP_LIST_FOLD_LEFT_429(o, s, BOOST_PP_LIST_REVERSE_D(429, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_430(o, s, l) BOOST_PP_LIST_FOLD_LEFT_430(o, s, BOOST_PP_LIST_REVERSE_D(430, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_431(o, s, l) BOOST_PP_LIST_FOLD_LEFT_431(o, s, BOOST_PP_LIST_REVERSE_D(431, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_432(o, s, l) BOOST_PP_LIST_FOLD_LEFT_432(o, s, BOOST_PP_LIST_REVERSE_D(432, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_433(o, s, l) BOOST_PP_LIST_FOLD_LEFT_433(o, s, BOOST_PP_LIST_REVERSE_D(433, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_434(o, s, l) BOOST_PP_LIST_FOLD_LEFT_434(o, s, BOOST_PP_LIST_REVERSE_D(434, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_435(o, s, l) BOOST_PP_LIST_FOLD_LEFT_435(o, s, BOOST_PP_LIST_REVERSE_D(435, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_436(o, s, l) BOOST_PP_LIST_FOLD_LEFT_436(o, s, BOOST_PP_LIST_REVERSE_D(436, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_437(o, s, l) BOOST_PP_LIST_FOLD_LEFT_437(o, s, BOOST_PP_LIST_REVERSE_D(437, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_438(o, s, l) BOOST_PP_LIST_FOLD_LEFT_438(o, s, BOOST_PP_LIST_REVERSE_D(438, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_439(o, s, l) BOOST_PP_LIST_FOLD_LEFT_439(o, s, BOOST_PP_LIST_REVERSE_D(439, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_440(o, s, l) BOOST_PP_LIST_FOLD_LEFT_440(o, s, BOOST_PP_LIST_REVERSE_D(440, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_441(o, s, l) BOOST_PP_LIST_FOLD_LEFT_441(o, s, BOOST_PP_LIST_REVERSE_D(441, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_442(o, s, l) BOOST_PP_LIST_FOLD_LEFT_442(o, s, BOOST_PP_LIST_REVERSE_D(442, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_443(o, s, l) BOOST_PP_LIST_FOLD_LEFT_443(o, s, BOOST_PP_LIST_REVERSE_D(443, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_444(o, s, l) BOOST_PP_LIST_FOLD_LEFT_444(o, s, BOOST_PP_LIST_REVERSE_D(444, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_445(o, s, l) BOOST_PP_LIST_FOLD_LEFT_445(o, s, BOOST_PP_LIST_REVERSE_D(445, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_446(o, s, l) BOOST_PP_LIST_FOLD_LEFT_446(o, s, BOOST_PP_LIST_REVERSE_D(446, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_447(o, s, l) BOOST_PP_LIST_FOLD_LEFT_447(o, s, BOOST_PP_LIST_REVERSE_D(447, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_448(o, s, l) BOOST_PP_LIST_FOLD_LEFT_448(o, s, BOOST_PP_LIST_REVERSE_D(448, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_449(o, s, l) BOOST_PP_LIST_FOLD_LEFT_449(o, s, BOOST_PP_LIST_REVERSE_D(449, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_450(o, s, l) BOOST_PP_LIST_FOLD_LEFT_450(o, s, BOOST_PP_LIST_REVERSE_D(450, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_451(o, s, l) BOOST_PP_LIST_FOLD_LEFT_451(o, s, BOOST_PP_LIST_REVERSE_D(451, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_452(o, s, l) BOOST_PP_LIST_FOLD_LEFT_452(o, s, BOOST_PP_LIST_REVERSE_D(452, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_453(o, s, l) BOOST_PP_LIST_FOLD_LEFT_453(o, s, BOOST_PP_LIST_REVERSE_D(453, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_454(o, s, l) BOOST_PP_LIST_FOLD_LEFT_454(o, s, BOOST_PP_LIST_REVERSE_D(454, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_455(o, s, l) BOOST_PP_LIST_FOLD_LEFT_455(o, s, BOOST_PP_LIST_REVERSE_D(455, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_456(o, s, l) BOOST_PP_LIST_FOLD_LEFT_456(o, s, BOOST_PP_LIST_REVERSE_D(456, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_457(o, s, l) BOOST_PP_LIST_FOLD_LEFT_457(o, s, BOOST_PP_LIST_REVERSE_D(457, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_458(o, s, l) BOOST_PP_LIST_FOLD_LEFT_458(o, s, BOOST_PP_LIST_REVERSE_D(458, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_459(o, s, l) BOOST_PP_LIST_FOLD_LEFT_459(o, s, BOOST_PP_LIST_REVERSE_D(459, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_460(o, s, l) BOOST_PP_LIST_FOLD_LEFT_460(o, s, BOOST_PP_LIST_REVERSE_D(460, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_461(o, s, l) BOOST_PP_LIST_FOLD_LEFT_461(o, s, BOOST_PP_LIST_REVERSE_D(461, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_462(o, s, l) BOOST_PP_LIST_FOLD_LEFT_462(o, s, BOOST_PP_LIST_REVERSE_D(462, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_463(o, s, l) BOOST_PP_LIST_FOLD_LEFT_463(o, s, BOOST_PP_LIST_REVERSE_D(463, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_464(o, s, l) BOOST_PP_LIST_FOLD_LEFT_464(o, s, BOOST_PP_LIST_REVERSE_D(464, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_465(o, s, l) BOOST_PP_LIST_FOLD_LEFT_465(o, s, BOOST_PP_LIST_REVERSE_D(465, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_466(o, s, l) BOOST_PP_LIST_FOLD_LEFT_466(o, s, BOOST_PP_LIST_REVERSE_D(466, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_467(o, s, l) BOOST_PP_LIST_FOLD_LEFT_467(o, s, BOOST_PP_LIST_REVERSE_D(467, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_468(o, s, l) BOOST_PP_LIST_FOLD_LEFT_468(o, s, BOOST_PP_LIST_REVERSE_D(468, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_469(o, s, l) BOOST_PP_LIST_FOLD_LEFT_469(o, s, BOOST_PP_LIST_REVERSE_D(469, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_470(o, s, l) BOOST_PP_LIST_FOLD_LEFT_470(o, s, BOOST_PP_LIST_REVERSE_D(470, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_471(o, s, l) BOOST_PP_LIST_FOLD_LEFT_471(o, s, BOOST_PP_LIST_REVERSE_D(471, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_472(o, s, l) BOOST_PP_LIST_FOLD_LEFT_472(o, s, BOOST_PP_LIST_REVERSE_D(472, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_473(o, s, l) BOOST_PP_LIST_FOLD_LEFT_473(o, s, BOOST_PP_LIST_REVERSE_D(473, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_474(o, s, l) BOOST_PP_LIST_FOLD_LEFT_474(o, s, BOOST_PP_LIST_REVERSE_D(474, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_475(o, s, l) BOOST_PP_LIST_FOLD_LEFT_475(o, s, BOOST_PP_LIST_REVERSE_D(475, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_476(o, s, l) BOOST_PP_LIST_FOLD_LEFT_476(o, s, BOOST_PP_LIST_REVERSE_D(476, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_477(o, s, l) BOOST_PP_LIST_FOLD_LEFT_477(o, s, BOOST_PP_LIST_REVERSE_D(477, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_478(o, s, l) BOOST_PP_LIST_FOLD_LEFT_478(o, s, BOOST_PP_LIST_REVERSE_D(478, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_479(o, s, l) BOOST_PP_LIST_FOLD_LEFT_479(o, s, BOOST_PP_LIST_REVERSE_D(479, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_480(o, s, l) BOOST_PP_LIST_FOLD_LEFT_480(o, s, BOOST_PP_LIST_REVERSE_D(480, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_481(o, s, l) BOOST_PP_LIST_FOLD_LEFT_481(o, s, BOOST_PP_LIST_REVERSE_D(481, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_482(o, s, l) BOOST_PP_LIST_FOLD_LEFT_482(o, s, BOOST_PP_LIST_REVERSE_D(482, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_483(o, s, l) BOOST_PP_LIST_FOLD_LEFT_483(o, s, BOOST_PP_LIST_REVERSE_D(483, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_484(o, s, l) BOOST_PP_LIST_FOLD_LEFT_484(o, s, BOOST_PP_LIST_REVERSE_D(484, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_485(o, s, l) BOOST_PP_LIST_FOLD_LEFT_485(o, s, BOOST_PP_LIST_REVERSE_D(485, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_486(o, s, l) BOOST_PP_LIST_FOLD_LEFT_486(o, s, BOOST_PP_LIST_REVERSE_D(486, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_487(o, s, l) BOOST_PP_LIST_FOLD_LEFT_487(o, s, BOOST_PP_LIST_REVERSE_D(487, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_488(o, s, l) BOOST_PP_LIST_FOLD_LEFT_488(o, s, BOOST_PP_LIST_REVERSE_D(488, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_489(o, s, l) BOOST_PP_LIST_FOLD_LEFT_489(o, s, BOOST_PP_LIST_REVERSE_D(489, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_490(o, s, l) BOOST_PP_LIST_FOLD_LEFT_490(o, s, BOOST_PP_LIST_REVERSE_D(490, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_491(o, s, l) BOOST_PP_LIST_FOLD_LEFT_491(o, s, BOOST_PP_LIST_REVERSE_D(491, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_492(o, s, l) BOOST_PP_LIST_FOLD_LEFT_492(o, s, BOOST_PP_LIST_REVERSE_D(492, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_493(o, s, l) BOOST_PP_LIST_FOLD_LEFT_493(o, s, BOOST_PP_LIST_REVERSE_D(493, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_494(o, s, l) BOOST_PP_LIST_FOLD_LEFT_494(o, s, BOOST_PP_LIST_REVERSE_D(494, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_495(o, s, l) BOOST_PP_LIST_FOLD_LEFT_495(o, s, BOOST_PP_LIST_REVERSE_D(495, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_496(o, s, l) BOOST_PP_LIST_FOLD_LEFT_496(o, s, BOOST_PP_LIST_REVERSE_D(496, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_497(o, s, l) BOOST_PP_LIST_FOLD_LEFT_497(o, s, BOOST_PP_LIST_REVERSE_D(497, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_498(o, s, l) BOOST_PP_LIST_FOLD_LEFT_498(o, s, BOOST_PP_LIST_REVERSE_D(498, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_499(o, s, l) BOOST_PP_LIST_FOLD_LEFT_499(o, s, BOOST_PP_LIST_REVERSE_D(499, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_500(o, s, l) BOOST_PP_LIST_FOLD_LEFT_500(o, s, BOOST_PP_LIST_REVERSE_D(500, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_501(o, s, l) BOOST_PP_LIST_FOLD_LEFT_501(o, s, BOOST_PP_LIST_REVERSE_D(501, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_502(o, s, l) BOOST_PP_LIST_FOLD_LEFT_502(o, s, BOOST_PP_LIST_REVERSE_D(502, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_503(o, s, l) BOOST_PP_LIST_FOLD_LEFT_503(o, s, BOOST_PP_LIST_REVERSE_D(503, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_504(o, s, l) BOOST_PP_LIST_FOLD_LEFT_504(o, s, BOOST_PP_LIST_REVERSE_D(504, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_505(o, s, l) BOOST_PP_LIST_FOLD_LEFT_505(o, s, BOOST_PP_LIST_REVERSE_D(505, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_506(o, s, l) BOOST_PP_LIST_FOLD_LEFT_506(o, s, BOOST_PP_LIST_REVERSE_D(506, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_507(o, s, l) BOOST_PP_LIST_FOLD_LEFT_507(o, s, BOOST_PP_LIST_REVERSE_D(507, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_508(o, s, l) BOOST_PP_LIST_FOLD_LEFT_508(o, s, BOOST_PP_LIST_REVERSE_D(508, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_509(o, s, l) BOOST_PP_LIST_FOLD_LEFT_509(o, s, BOOST_PP_LIST_REVERSE_D(509, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_510(o, s, l) BOOST_PP_LIST_FOLD_LEFT_510(o, s, BOOST_PP_LIST_REVERSE_D(510, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_511(o, s, l) BOOST_PP_LIST_FOLD_LEFT_511(o, s, BOOST_PP_LIST_REVERSE_D(511, l)) +# define BOOST_PP_LIST_FOLD_RIGHT_512(o, s, l) BOOST_PP_LIST_FOLD_LEFT_512(o, s, BOOST_PP_LIST_REVERSE_D(512, l)) +# +# endif diff --git a/src/boost/boost/preprocessor/list/fold_left.hpp b/src/boost/boost/preprocessor/list/fold_left.hpp index bd945c014..e1acd0907 100644 --- a/src/boost/boost/preprocessor/list/fold_left.hpp +++ b/src/boost/boost/preprocessor/list/fold_left.hpp @@ -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_LIST_FOLD_LEFT_HPP # define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # include @@ -300,4 +305,59 @@ # define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) 0 # define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) 0 # +# else +# +# include +# include +# include +# include +# include +# include +# +# /* BOOST_PP_LIST_FOLD_LEFT */ +# +# if 0 +# define BOOST_PP_LIST_FOLD_LEFT(op, state, list) +# endif +# +# if BOOST_PP_LIMIT_WHILE == 256 +# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))) +# define BOOST_PP_LIST_FOLD_LEFT_257(o, s, l) BOOST_PP_ERROR(0x0004) +# elif BOOST_PP_LIMIT_WHILE == 512 +# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512))) +# define BOOST_PP_LIST_FOLD_LEFT_513(o, s, l) BOOST_PP_ERROR(0x0004) +# elif BOOST_PP_LIMIT_WHILE == 1024 +# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 1024))) +# define BOOST_PP_LIST_FOLD_LEFT_1025(o, s, l) BOOST_PP_ERROR(0x0004) +# else +# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit +# endif +# +# define BOOST_PP_LIST_FOLD_LEFT_D(d, o, s, l) BOOST_PP_LIST_FOLD_LEFT_ ## d(o, s, l) +# define BOOST_PP_LIST_FOLD_LEFT_2ND BOOST_PP_LIST_FOLD_LEFT +# define BOOST_PP_LIST_FOLD_LEFT_2ND_D BOOST_PP_LIST_FOLD_LEFT_D +# +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() +# include +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC() +# include +# else +# include +# endif +# +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_NIL 1 +# +# if BOOST_PP_LIMIT_WHILE == 256 +# include +# elif BOOST_PP_LIMIT_WHILE == 512 +# include +# include +# elif BOOST_PP_LIMIT_WHILE == 1024 +# include +# include +# include +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/list/fold_right.hpp b/src/boost/boost/preprocessor/list/fold_right.hpp index 19a63e6e5..35dfdf861 100644 --- a/src/boost/boost/preprocessor/list/fold_right.hpp +++ b/src/boost/boost/preprocessor/list/fold_right.hpp @@ -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_LIST_FOLD_RIGHT_HPP # define BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # include @@ -37,4 +42,43 @@ # include # endif # +# else +# +# include +# include +# include +# include +# include +# +# if 0 +# define BOOST_PP_LIST_FOLD_RIGHT(op, state, list) +# endif +# +# include +# +# if BOOST_PP_LIMIT_WHILE == 256 +# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))) +# define BOOST_PP_LIST_FOLD_RIGHT_257(o, s, l) BOOST_PP_ERROR(0x0004) +# elif BOOST_PP_LIMIT_WHILE == 512 +# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512))) +# define BOOST_PP_LIST_FOLD_RIGHT_513(o, s, l) BOOST_PP_ERROR(0x0004) +# elif BOOST_PP_LIMIT_WHILE == 1024 +# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 1024))) +# define BOOST_PP_LIST_FOLD_RIGHT_1025(o, s, l) BOOST_PP_ERROR(0x0004) +# else +# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit +# endif +# +# define BOOST_PP_LIST_FOLD_RIGHT_D(d, o, s, l) BOOST_PP_LIST_FOLD_RIGHT_ ## d(o, s, l) +# define BOOST_PP_LIST_FOLD_RIGHT_2ND BOOST_PP_LIST_FOLD_RIGHT +# define BOOST_PP_LIST_FOLD_RIGHT_2ND_D BOOST_PP_LIST_FOLD_RIGHT_D +# +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() +# include +# else +# include +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/list/limits/fold_left_1024.hpp b/src/boost/boost/preprocessor/list/limits/fold_left_1024.hpp new file mode 100644 index 000000000..4a733f167 --- /dev/null +++ b/src/boost/boost/preprocessor/list/limits/fold_left_1024.hpp @@ -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_LIST_FOLD_LEFT_1024_HPP +# define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_1024_HPP +# +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_513(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_514(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_515(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_516(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_517(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_518(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_519(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_520(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_521(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_522(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_523(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_524(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_525(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_526(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_527(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_528(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_529(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_530(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_531(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_532(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_533(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_534(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_535(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_536(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_537(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_538(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_539(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_540(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_541(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_542(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_543(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_544(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_545(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_546(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_547(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_548(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_549(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_550(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_551(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_552(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_553(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_554(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_555(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_556(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_557(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_558(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_559(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_560(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_561(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_562(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_563(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_564(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_565(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_566(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_567(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_568(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_569(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_570(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_571(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_572(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_573(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_574(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_575(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_576(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_577(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_578(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_579(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_580(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_581(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_582(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_583(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_584(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_585(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_586(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_587(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_588(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_589(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_590(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_591(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_592(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_593(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_594(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_595(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_596(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_597(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_598(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_599(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_600(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_601(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_602(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_603(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_604(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_605(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_606(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_607(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_608(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_609(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_610(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_611(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_612(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_613(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_614(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_615(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_616(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_617(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_618(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_619(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_620(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_621(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_622(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_623(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_624(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_625(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_626(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_627(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_628(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_629(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_630(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_631(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_632(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_633(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_634(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_635(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_636(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_637(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_638(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_639(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_640(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_641(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_642(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_643(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_644(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_645(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_646(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_647(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_648(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_649(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_650(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_651(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_652(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_653(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_654(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_655(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_656(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_657(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_658(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_659(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_660(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_661(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_662(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_663(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_664(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_665(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_666(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_667(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_668(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_669(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_670(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_671(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_672(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_673(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_674(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_675(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_676(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_677(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_678(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_679(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_680(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_681(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_682(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_683(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_684(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_685(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_686(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_687(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_688(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_689(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_690(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_691(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_692(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_693(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_694(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_695(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_696(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_697(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_698(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_699(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_700(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_701(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_702(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_703(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_704(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_705(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_706(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_707(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_708(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_709(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_710(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_711(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_712(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_713(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_714(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_715(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_716(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_717(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_718(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_719(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_720(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_721(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_722(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_723(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_724(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_725(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_726(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_727(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_728(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_729(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_730(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_731(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_732(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_733(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_734(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_735(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_736(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_737(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_738(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_739(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_740(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_741(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_742(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_743(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_744(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_745(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_746(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_747(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_748(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_749(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_750(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_751(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_752(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_753(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_754(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_755(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_756(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_757(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_758(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_759(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_760(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_761(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_762(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_763(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_764(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_765(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_766(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_767(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_768(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_769(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_770(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_771(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_772(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_773(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_774(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_775(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_776(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_777(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_778(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_779(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_780(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_781(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_782(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_783(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_784(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_785(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_786(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_787(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_788(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_789(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_790(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_791(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_792(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_793(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_794(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_795(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_796(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_797(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_798(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_799(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_800(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_801(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_802(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_803(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_804(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_805(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_806(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_807(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_808(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_809(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_810(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_811(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_812(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_813(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_814(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_815(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_816(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_817(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_818(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_819(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_820(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_821(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_822(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_823(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_824(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_825(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_826(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_827(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_828(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_829(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_830(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_831(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_832(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_833(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_834(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_835(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_836(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_837(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_838(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_839(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_840(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_841(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_842(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_843(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_844(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_845(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_846(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_847(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_848(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_849(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_850(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_851(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_852(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_853(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_854(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_855(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_856(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_857(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_858(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_859(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_860(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_861(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_862(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_863(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_864(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_865(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_866(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_867(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_868(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_869(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_870(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_871(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_872(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_873(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_874(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_875(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_876(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_877(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_878(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_879(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_880(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_881(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_882(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_883(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_884(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_885(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_886(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_887(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_888(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_889(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_890(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_891(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_892(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_893(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_894(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_895(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_896(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_897(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_898(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_899(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_900(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_901(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_902(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_903(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_904(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_905(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_906(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_907(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_908(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_909(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_910(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_911(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_912(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_913(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_914(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_915(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_916(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_917(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_918(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_919(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_920(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_921(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_922(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_923(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_924(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_925(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_926(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_927(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_928(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_929(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_930(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_931(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_932(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_933(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_934(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_935(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_936(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_937(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_938(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_939(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_940(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_941(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_942(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_943(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_944(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_945(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_946(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_947(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_948(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_949(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_950(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_951(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_952(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_953(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_954(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_955(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_956(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_957(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_958(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_959(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_960(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_961(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_962(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_963(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_964(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_965(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_966(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_967(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_968(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_969(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_970(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_971(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_972(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_973(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_974(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_975(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_976(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_977(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_978(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_979(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_980(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_981(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_982(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_983(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_984(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_985(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_986(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_987(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_988(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_989(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_990(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_991(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_992(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_993(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_994(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_995(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_996(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_997(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_998(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_999(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1000(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1001(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1002(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1003(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1004(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1005(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1006(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1007(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1008(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1009(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1010(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1011(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1012(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1013(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1014(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1015(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1016(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1017(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1018(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1019(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1020(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1021(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1022(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1023(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1024(o, s, l) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/list/limits/fold_left_256.hpp b/src/boost/boost/preprocessor/list/limits/fold_left_256.hpp new file mode 100644 index 000000000..4ca9a72d4 --- /dev/null +++ b/src/boost/boost/preprocessor/list/limits/fold_left_256.hpp @@ -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_LIST_FOLD_LEFT_256_HPP +# define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_256_HPP +# +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_0(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/list/limits/fold_left_512.hpp b/src/boost/boost/preprocessor/list/limits/fold_left_512.hpp new file mode 100644 index 000000000..4f2a8b294 --- /dev/null +++ b/src/boost/boost/preprocessor/list/limits/fold_left_512.hpp @@ -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_LIST_FOLD_LEFT_512_HPP +# define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_512_HPP +# +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_257(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_258(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_259(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_260(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_261(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_262(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_263(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_264(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_265(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_266(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_267(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_268(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_269(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_270(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_271(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_272(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_273(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_274(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_275(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_276(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_277(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_278(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_279(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_280(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_281(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_282(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_283(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_284(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_285(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_286(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_287(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_288(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_289(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_290(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_291(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_292(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_293(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_294(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_295(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_296(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_297(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_298(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_299(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_300(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_301(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_302(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_303(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_304(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_305(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_306(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_307(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_308(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_309(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_310(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_311(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_312(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_313(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_314(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_315(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_316(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_317(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_318(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_319(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_320(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_321(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_322(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_323(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_324(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_325(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_326(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_327(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_328(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_329(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_330(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_331(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_332(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_333(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_334(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_335(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_336(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_337(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_338(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_339(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_340(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_341(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_342(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_343(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_344(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_345(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_346(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_347(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_348(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_349(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_350(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_351(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_352(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_353(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_354(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_355(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_356(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_357(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_358(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_359(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_360(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_361(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_362(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_363(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_364(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_365(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_366(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_367(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_368(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_369(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_370(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_371(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_372(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_373(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_374(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_375(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_376(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_377(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_378(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_379(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_380(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_381(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_382(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_383(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_384(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_385(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_386(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_387(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_388(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_389(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_390(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_391(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_392(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_393(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_394(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_395(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_396(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_397(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_398(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_399(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_400(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_401(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_402(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_403(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_404(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_405(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_406(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_407(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_408(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_409(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_410(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_411(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_412(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_413(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_414(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_415(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_416(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_417(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_418(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_419(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_420(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_421(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_422(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_423(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_424(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_425(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_426(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_427(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_428(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_429(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_430(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_431(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_432(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_433(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_434(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_435(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_436(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_437(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_438(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_439(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_440(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_441(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_442(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_443(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_444(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_445(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_446(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_447(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_448(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_449(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_450(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_451(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_452(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_453(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_454(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_455(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_456(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_457(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_458(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_459(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_460(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_461(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_462(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_463(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_464(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_465(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_466(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_467(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_468(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_469(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_470(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_471(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_472(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_473(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_474(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_475(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_476(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_477(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_478(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_479(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_480(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_481(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_482(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_483(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_484(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_485(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_486(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_487(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_488(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_489(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_490(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_491(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_492(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_493(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_494(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_495(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_496(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_497(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_498(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_499(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_500(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_501(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_502(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_503(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_504(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_505(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_506(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_507(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_508(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_509(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_510(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_511(o, s, l) 0 +# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_512(o, s, l) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/list/reverse.hpp b/src/boost/boost/preprocessor/list/reverse.hpp index 88e6d85bc..1c06fb2cd 100644 --- a/src/boost/boost/preprocessor/list/reverse.hpp +++ b/src/boost/boost/preprocessor/list/reverse.hpp @@ -15,6 +15,9 @@ # define BOOST_PREPROCESSOR_LIST_REVERSE_HPP # # include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # # /* BOOST_PP_LIST_REVERSE */ @@ -37,4 +40,36 @@ # define BOOST_PP_LIST_REVERSE_D_I(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list) # endif # +# else +# +# include +# include +# include +# include +# +# /* BOOST_PP_LIST_REVERSE */ +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() +# define BOOST_PP_LIST_REVERSE(list) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(list),BOOST_PP_LIST_REVERSE_CONS,BOOST_PP_IDENTITY_N(BOOST_PP_NIL,1))(list) +# else +# define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_REVERSE_I(list) +# define BOOST_PP_LIST_REVERSE_I(list) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(list),BOOST_PP_LIST_REVERSE_CONS,BOOST_PP_IDENTITY_N(BOOST_PP_NIL,1))(list) +# endif +# +# define BOOST_PP_LIST_REVERSE_O(d, s, x) (x, s) +# +# /* BOOST_PP_LIST_REVERSE_D */ +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() +# define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(list),BOOST_PP_LIST_REVERSE_CONS_D,BOOST_PP_IDENTITY_N(BOOST_PP_NIL,2))(d,list) +# else +# define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_REVERSE_D_I(d, list) +# define BOOST_PP_LIST_REVERSE_D_I(d, list) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(list),BOOST_PP_LIST_REVERSE_CONS_D,BOOST_PP_IDENTITY_N(BOOST_PP_NIL,2))(d,list) +# endif +# +# define BOOST_PP_LIST_REVERSE_CONS(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, (BOOST_PP_LIST_FIRST(list),BOOST_PP_NIL), BOOST_PP_LIST_REST(list)) +# define BOOST_PP_LIST_REVERSE_CONS_D(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, (BOOST_PP_LIST_FIRST(list),BOOST_PP_NIL), BOOST_PP_LIST_REST(list)) +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/logical/bitor.hpp b/src/boost/boost/preprocessor/logical/bitor.hpp new file mode 100644 index 000000000..806e3c71e --- /dev/null +++ b/src/boost/boost/preprocessor/logical/bitor.hpp @@ -0,0 +1,38 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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_LOGICAL_BITOR_HPP +# define BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP +# +# include +# +# /* BOOST_PP_BITOR */ +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() +# define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_I(x, y) +# else +# define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_OO((x, y)) +# define BOOST_PP_BITOR_OO(par) BOOST_PP_BITOR_I ## par +# endif +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() +# define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ ## x ## y +# else +# define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ID(BOOST_PP_BITOR_ ## x ## y) +# define BOOST_PP_BITOR_ID(id) id +# endif +# +# define BOOST_PP_BITOR_00 0 +# define BOOST_PP_BITOR_01 1 +# define BOOST_PP_BITOR_10 1 +# define BOOST_PP_BITOR_11 1 +# +# endif diff --git a/src/boost/boost/preprocessor/logical/bool.hpp b/src/boost/boost/preprocessor/logical/bool.hpp index 5c60ad7cc..7d5df0249 100644 --- a/src/boost/boost/preprocessor/logical/bool.hpp +++ b/src/boost/boost/preprocessor/logical/bool.hpp @@ -8,6 +8,7 @@ # */ # # /* Revised by Paul Mensonides (2002) */ +# /* Revised by Edward Diener (2020) */ # # /* See http://www.boost.org for most recent version. */ # @@ -27,6 +28,8 @@ # # define BOOST_PP_BOOL_I(x) BOOST_PP_BOOL_ ## x # +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # define BOOST_PP_BOOL_0 0 # define BOOST_PP_BOOL_1 1 # define BOOST_PP_BOOL_2 1 @@ -285,4 +288,23 @@ # define BOOST_PP_BOOL_255 1 # define BOOST_PP_BOOL_256 1 # +# else +# +# include +# +# if BOOST_PP_LIMIT_MAG == 256 +# include +# elif BOOST_PP_LIMIT_MAG == 512 +# include +# include +# elif BOOST_PP_LIMIT_MAG == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_MAG limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/logical/limits/bool_1024.hpp b/src/boost/boost/preprocessor/logical/limits/bool_1024.hpp new file mode 100644 index 000000000..42e3e918b --- /dev/null +++ b/src/boost/boost/preprocessor/logical/limits/bool_1024.hpp @@ -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_LOGICAL_BOOL_1024_HPP +# define BOOST_PREPROCESSOR_LOGICAL_BOOL_1024_HPP +# +# define BOOST_PP_BOOL_513 1 +# define BOOST_PP_BOOL_514 1 +# define BOOST_PP_BOOL_515 1 +# define BOOST_PP_BOOL_516 1 +# define BOOST_PP_BOOL_517 1 +# define BOOST_PP_BOOL_518 1 +# define BOOST_PP_BOOL_519 1 +# define BOOST_PP_BOOL_520 1 +# define BOOST_PP_BOOL_521 1 +# define BOOST_PP_BOOL_522 1 +# define BOOST_PP_BOOL_523 1 +# define BOOST_PP_BOOL_524 1 +# define BOOST_PP_BOOL_525 1 +# define BOOST_PP_BOOL_526 1 +# define BOOST_PP_BOOL_527 1 +# define BOOST_PP_BOOL_528 1 +# define BOOST_PP_BOOL_529 1 +# define BOOST_PP_BOOL_530 1 +# define BOOST_PP_BOOL_531 1 +# define BOOST_PP_BOOL_532 1 +# define BOOST_PP_BOOL_533 1 +# define BOOST_PP_BOOL_534 1 +# define BOOST_PP_BOOL_535 1 +# define BOOST_PP_BOOL_536 1 +# define BOOST_PP_BOOL_537 1 +# define BOOST_PP_BOOL_538 1 +# define BOOST_PP_BOOL_539 1 +# define BOOST_PP_BOOL_540 1 +# define BOOST_PP_BOOL_541 1 +# define BOOST_PP_BOOL_542 1 +# define BOOST_PP_BOOL_543 1 +# define BOOST_PP_BOOL_544 1 +# define BOOST_PP_BOOL_545 1 +# define BOOST_PP_BOOL_546 1 +# define BOOST_PP_BOOL_547 1 +# define BOOST_PP_BOOL_548 1 +# define BOOST_PP_BOOL_549 1 +# define BOOST_PP_BOOL_550 1 +# define BOOST_PP_BOOL_551 1 +# define BOOST_PP_BOOL_552 1 +# define BOOST_PP_BOOL_553 1 +# define BOOST_PP_BOOL_554 1 +# define BOOST_PP_BOOL_555 1 +# define BOOST_PP_BOOL_556 1 +# define BOOST_PP_BOOL_557 1 +# define BOOST_PP_BOOL_558 1 +# define BOOST_PP_BOOL_559 1 +# define BOOST_PP_BOOL_560 1 +# define BOOST_PP_BOOL_561 1 +# define BOOST_PP_BOOL_562 1 +# define BOOST_PP_BOOL_563 1 +# define BOOST_PP_BOOL_564 1 +# define BOOST_PP_BOOL_565 1 +# define BOOST_PP_BOOL_566 1 +# define BOOST_PP_BOOL_567 1 +# define BOOST_PP_BOOL_568 1 +# define BOOST_PP_BOOL_569 1 +# define BOOST_PP_BOOL_570 1 +# define BOOST_PP_BOOL_571 1 +# define BOOST_PP_BOOL_572 1 +# define BOOST_PP_BOOL_573 1 +# define BOOST_PP_BOOL_574 1 +# define BOOST_PP_BOOL_575 1 +# define BOOST_PP_BOOL_576 1 +# define BOOST_PP_BOOL_577 1 +# define BOOST_PP_BOOL_578 1 +# define BOOST_PP_BOOL_579 1 +# define BOOST_PP_BOOL_580 1 +# define BOOST_PP_BOOL_581 1 +# define BOOST_PP_BOOL_582 1 +# define BOOST_PP_BOOL_583 1 +# define BOOST_PP_BOOL_584 1 +# define BOOST_PP_BOOL_585 1 +# define BOOST_PP_BOOL_586 1 +# define BOOST_PP_BOOL_587 1 +# define BOOST_PP_BOOL_588 1 +# define BOOST_PP_BOOL_589 1 +# define BOOST_PP_BOOL_590 1 +# define BOOST_PP_BOOL_591 1 +# define BOOST_PP_BOOL_592 1 +# define BOOST_PP_BOOL_593 1 +# define BOOST_PP_BOOL_594 1 +# define BOOST_PP_BOOL_595 1 +# define BOOST_PP_BOOL_596 1 +# define BOOST_PP_BOOL_597 1 +# define BOOST_PP_BOOL_598 1 +# define BOOST_PP_BOOL_599 1 +# define BOOST_PP_BOOL_600 1 +# define BOOST_PP_BOOL_601 1 +# define BOOST_PP_BOOL_602 1 +# define BOOST_PP_BOOL_603 1 +# define BOOST_PP_BOOL_604 1 +# define BOOST_PP_BOOL_605 1 +# define BOOST_PP_BOOL_606 1 +# define BOOST_PP_BOOL_607 1 +# define BOOST_PP_BOOL_608 1 +# define BOOST_PP_BOOL_609 1 +# define BOOST_PP_BOOL_610 1 +# define BOOST_PP_BOOL_611 1 +# define BOOST_PP_BOOL_612 1 +# define BOOST_PP_BOOL_613 1 +# define BOOST_PP_BOOL_614 1 +# define BOOST_PP_BOOL_615 1 +# define BOOST_PP_BOOL_616 1 +# define BOOST_PP_BOOL_617 1 +# define BOOST_PP_BOOL_618 1 +# define BOOST_PP_BOOL_619 1 +# define BOOST_PP_BOOL_620 1 +# define BOOST_PP_BOOL_621 1 +# define BOOST_PP_BOOL_622 1 +# define BOOST_PP_BOOL_623 1 +# define BOOST_PP_BOOL_624 1 +# define BOOST_PP_BOOL_625 1 +# define BOOST_PP_BOOL_626 1 +# define BOOST_PP_BOOL_627 1 +# define BOOST_PP_BOOL_628 1 +# define BOOST_PP_BOOL_629 1 +# define BOOST_PP_BOOL_630 1 +# define BOOST_PP_BOOL_631 1 +# define BOOST_PP_BOOL_632 1 +# define BOOST_PP_BOOL_633 1 +# define BOOST_PP_BOOL_634 1 +# define BOOST_PP_BOOL_635 1 +# define BOOST_PP_BOOL_636 1 +# define BOOST_PP_BOOL_637 1 +# define BOOST_PP_BOOL_638 1 +# define BOOST_PP_BOOL_639 1 +# define BOOST_PP_BOOL_640 1 +# define BOOST_PP_BOOL_641 1 +# define BOOST_PP_BOOL_642 1 +# define BOOST_PP_BOOL_643 1 +# define BOOST_PP_BOOL_644 1 +# define BOOST_PP_BOOL_645 1 +# define BOOST_PP_BOOL_646 1 +# define BOOST_PP_BOOL_647 1 +# define BOOST_PP_BOOL_648 1 +# define BOOST_PP_BOOL_649 1 +# define BOOST_PP_BOOL_650 1 +# define BOOST_PP_BOOL_651 1 +# define BOOST_PP_BOOL_652 1 +# define BOOST_PP_BOOL_653 1 +# define BOOST_PP_BOOL_654 1 +# define BOOST_PP_BOOL_655 1 +# define BOOST_PP_BOOL_656 1 +# define BOOST_PP_BOOL_657 1 +# define BOOST_PP_BOOL_658 1 +# define BOOST_PP_BOOL_659 1 +# define BOOST_PP_BOOL_660 1 +# define BOOST_PP_BOOL_661 1 +# define BOOST_PP_BOOL_662 1 +# define BOOST_PP_BOOL_663 1 +# define BOOST_PP_BOOL_664 1 +# define BOOST_PP_BOOL_665 1 +# define BOOST_PP_BOOL_666 1 +# define BOOST_PP_BOOL_667 1 +# define BOOST_PP_BOOL_668 1 +# define BOOST_PP_BOOL_669 1 +# define BOOST_PP_BOOL_670 1 +# define BOOST_PP_BOOL_671 1 +# define BOOST_PP_BOOL_672 1 +# define BOOST_PP_BOOL_673 1 +# define BOOST_PP_BOOL_674 1 +# define BOOST_PP_BOOL_675 1 +# define BOOST_PP_BOOL_676 1 +# define BOOST_PP_BOOL_677 1 +# define BOOST_PP_BOOL_678 1 +# define BOOST_PP_BOOL_679 1 +# define BOOST_PP_BOOL_680 1 +# define BOOST_PP_BOOL_681 1 +# define BOOST_PP_BOOL_682 1 +# define BOOST_PP_BOOL_683 1 +# define BOOST_PP_BOOL_684 1 +# define BOOST_PP_BOOL_685 1 +# define BOOST_PP_BOOL_686 1 +# define BOOST_PP_BOOL_687 1 +# define BOOST_PP_BOOL_688 1 +# define BOOST_PP_BOOL_689 1 +# define BOOST_PP_BOOL_690 1 +# define BOOST_PP_BOOL_691 1 +# define BOOST_PP_BOOL_692 1 +# define BOOST_PP_BOOL_693 1 +# define BOOST_PP_BOOL_694 1 +# define BOOST_PP_BOOL_695 1 +# define BOOST_PP_BOOL_696 1 +# define BOOST_PP_BOOL_697 1 +# define BOOST_PP_BOOL_698 1 +# define BOOST_PP_BOOL_699 1 +# define BOOST_PP_BOOL_700 1 +# define BOOST_PP_BOOL_701 1 +# define BOOST_PP_BOOL_702 1 +# define BOOST_PP_BOOL_703 1 +# define BOOST_PP_BOOL_704 1 +# define BOOST_PP_BOOL_705 1 +# define BOOST_PP_BOOL_706 1 +# define BOOST_PP_BOOL_707 1 +# define BOOST_PP_BOOL_708 1 +# define BOOST_PP_BOOL_709 1 +# define BOOST_PP_BOOL_710 1 +# define BOOST_PP_BOOL_711 1 +# define BOOST_PP_BOOL_712 1 +# define BOOST_PP_BOOL_713 1 +# define BOOST_PP_BOOL_714 1 +# define BOOST_PP_BOOL_715 1 +# define BOOST_PP_BOOL_716 1 +# define BOOST_PP_BOOL_717 1 +# define BOOST_PP_BOOL_718 1 +# define BOOST_PP_BOOL_719 1 +# define BOOST_PP_BOOL_720 1 +# define BOOST_PP_BOOL_721 1 +# define BOOST_PP_BOOL_722 1 +# define BOOST_PP_BOOL_723 1 +# define BOOST_PP_BOOL_724 1 +# define BOOST_PP_BOOL_725 1 +# define BOOST_PP_BOOL_726 1 +# define BOOST_PP_BOOL_727 1 +# define BOOST_PP_BOOL_728 1 +# define BOOST_PP_BOOL_729 1 +# define BOOST_PP_BOOL_730 1 +# define BOOST_PP_BOOL_731 1 +# define BOOST_PP_BOOL_732 1 +# define BOOST_PP_BOOL_733 1 +# define BOOST_PP_BOOL_734 1 +# define BOOST_PP_BOOL_735 1 +# define BOOST_PP_BOOL_736 1 +# define BOOST_PP_BOOL_737 1 +# define BOOST_PP_BOOL_738 1 +# define BOOST_PP_BOOL_739 1 +# define BOOST_PP_BOOL_740 1 +# define BOOST_PP_BOOL_741 1 +# define BOOST_PP_BOOL_742 1 +# define BOOST_PP_BOOL_743 1 +# define BOOST_PP_BOOL_744 1 +# define BOOST_PP_BOOL_745 1 +# define BOOST_PP_BOOL_746 1 +# define BOOST_PP_BOOL_747 1 +# define BOOST_PP_BOOL_748 1 +# define BOOST_PP_BOOL_749 1 +# define BOOST_PP_BOOL_750 1 +# define BOOST_PP_BOOL_751 1 +# define BOOST_PP_BOOL_752 1 +# define BOOST_PP_BOOL_753 1 +# define BOOST_PP_BOOL_754 1 +# define BOOST_PP_BOOL_755 1 +# define BOOST_PP_BOOL_756 1 +# define BOOST_PP_BOOL_757 1 +# define BOOST_PP_BOOL_758 1 +# define BOOST_PP_BOOL_759 1 +# define BOOST_PP_BOOL_760 1 +# define BOOST_PP_BOOL_761 1 +# define BOOST_PP_BOOL_762 1 +# define BOOST_PP_BOOL_763 1 +# define BOOST_PP_BOOL_764 1 +# define BOOST_PP_BOOL_765 1 +# define BOOST_PP_BOOL_766 1 +# define BOOST_PP_BOOL_767 1 +# define BOOST_PP_BOOL_768 1 +# define BOOST_PP_BOOL_769 1 +# define BOOST_PP_BOOL_770 1 +# define BOOST_PP_BOOL_771 1 +# define BOOST_PP_BOOL_772 1 +# define BOOST_PP_BOOL_773 1 +# define BOOST_PP_BOOL_774 1 +# define BOOST_PP_BOOL_775 1 +# define BOOST_PP_BOOL_776 1 +# define BOOST_PP_BOOL_777 1 +# define BOOST_PP_BOOL_778 1 +# define BOOST_PP_BOOL_779 1 +# define BOOST_PP_BOOL_780 1 +# define BOOST_PP_BOOL_781 1 +# define BOOST_PP_BOOL_782 1 +# define BOOST_PP_BOOL_783 1 +# define BOOST_PP_BOOL_784 1 +# define BOOST_PP_BOOL_785 1 +# define BOOST_PP_BOOL_786 1 +# define BOOST_PP_BOOL_787 1 +# define BOOST_PP_BOOL_788 1 +# define BOOST_PP_BOOL_789 1 +# define BOOST_PP_BOOL_790 1 +# define BOOST_PP_BOOL_791 1 +# define BOOST_PP_BOOL_792 1 +# define BOOST_PP_BOOL_793 1 +# define BOOST_PP_BOOL_794 1 +# define BOOST_PP_BOOL_795 1 +# define BOOST_PP_BOOL_796 1 +# define BOOST_PP_BOOL_797 1 +# define BOOST_PP_BOOL_798 1 +# define BOOST_PP_BOOL_799 1 +# define BOOST_PP_BOOL_800 1 +# define BOOST_PP_BOOL_801 1 +# define BOOST_PP_BOOL_802 1 +# define BOOST_PP_BOOL_803 1 +# define BOOST_PP_BOOL_804 1 +# define BOOST_PP_BOOL_805 1 +# define BOOST_PP_BOOL_806 1 +# define BOOST_PP_BOOL_807 1 +# define BOOST_PP_BOOL_808 1 +# define BOOST_PP_BOOL_809 1 +# define BOOST_PP_BOOL_810 1 +# define BOOST_PP_BOOL_811 1 +# define BOOST_PP_BOOL_812 1 +# define BOOST_PP_BOOL_813 1 +# define BOOST_PP_BOOL_814 1 +# define BOOST_PP_BOOL_815 1 +# define BOOST_PP_BOOL_816 1 +# define BOOST_PP_BOOL_817 1 +# define BOOST_PP_BOOL_818 1 +# define BOOST_PP_BOOL_819 1 +# define BOOST_PP_BOOL_820 1 +# define BOOST_PP_BOOL_821 1 +# define BOOST_PP_BOOL_822 1 +# define BOOST_PP_BOOL_823 1 +# define BOOST_PP_BOOL_824 1 +# define BOOST_PP_BOOL_825 1 +# define BOOST_PP_BOOL_826 1 +# define BOOST_PP_BOOL_827 1 +# define BOOST_PP_BOOL_828 1 +# define BOOST_PP_BOOL_829 1 +# define BOOST_PP_BOOL_830 1 +# define BOOST_PP_BOOL_831 1 +# define BOOST_PP_BOOL_832 1 +# define BOOST_PP_BOOL_833 1 +# define BOOST_PP_BOOL_834 1 +# define BOOST_PP_BOOL_835 1 +# define BOOST_PP_BOOL_836 1 +# define BOOST_PP_BOOL_837 1 +# define BOOST_PP_BOOL_838 1 +# define BOOST_PP_BOOL_839 1 +# define BOOST_PP_BOOL_840 1 +# define BOOST_PP_BOOL_841 1 +# define BOOST_PP_BOOL_842 1 +# define BOOST_PP_BOOL_843 1 +# define BOOST_PP_BOOL_844 1 +# define BOOST_PP_BOOL_845 1 +# define BOOST_PP_BOOL_846 1 +# define BOOST_PP_BOOL_847 1 +# define BOOST_PP_BOOL_848 1 +# define BOOST_PP_BOOL_849 1 +# define BOOST_PP_BOOL_850 1 +# define BOOST_PP_BOOL_851 1 +# define BOOST_PP_BOOL_852 1 +# define BOOST_PP_BOOL_853 1 +# define BOOST_PP_BOOL_854 1 +# define BOOST_PP_BOOL_855 1 +# define BOOST_PP_BOOL_856 1 +# define BOOST_PP_BOOL_857 1 +# define BOOST_PP_BOOL_858 1 +# define BOOST_PP_BOOL_859 1 +# define BOOST_PP_BOOL_860 1 +# define BOOST_PP_BOOL_861 1 +# define BOOST_PP_BOOL_862 1 +# define BOOST_PP_BOOL_863 1 +# define BOOST_PP_BOOL_864 1 +# define BOOST_PP_BOOL_865 1 +# define BOOST_PP_BOOL_866 1 +# define BOOST_PP_BOOL_867 1 +# define BOOST_PP_BOOL_868 1 +# define BOOST_PP_BOOL_869 1 +# define BOOST_PP_BOOL_870 1 +# define BOOST_PP_BOOL_871 1 +# define BOOST_PP_BOOL_872 1 +# define BOOST_PP_BOOL_873 1 +# define BOOST_PP_BOOL_874 1 +# define BOOST_PP_BOOL_875 1 +# define BOOST_PP_BOOL_876 1 +# define BOOST_PP_BOOL_877 1 +# define BOOST_PP_BOOL_878 1 +# define BOOST_PP_BOOL_879 1 +# define BOOST_PP_BOOL_880 1 +# define BOOST_PP_BOOL_881 1 +# define BOOST_PP_BOOL_882 1 +# define BOOST_PP_BOOL_883 1 +# define BOOST_PP_BOOL_884 1 +# define BOOST_PP_BOOL_885 1 +# define BOOST_PP_BOOL_886 1 +# define BOOST_PP_BOOL_887 1 +# define BOOST_PP_BOOL_888 1 +# define BOOST_PP_BOOL_889 1 +# define BOOST_PP_BOOL_890 1 +# define BOOST_PP_BOOL_891 1 +# define BOOST_PP_BOOL_892 1 +# define BOOST_PP_BOOL_893 1 +# define BOOST_PP_BOOL_894 1 +# define BOOST_PP_BOOL_895 1 +# define BOOST_PP_BOOL_896 1 +# define BOOST_PP_BOOL_897 1 +# define BOOST_PP_BOOL_898 1 +# define BOOST_PP_BOOL_899 1 +# define BOOST_PP_BOOL_900 1 +# define BOOST_PP_BOOL_901 1 +# define BOOST_PP_BOOL_902 1 +# define BOOST_PP_BOOL_903 1 +# define BOOST_PP_BOOL_904 1 +# define BOOST_PP_BOOL_905 1 +# define BOOST_PP_BOOL_906 1 +# define BOOST_PP_BOOL_907 1 +# define BOOST_PP_BOOL_908 1 +# define BOOST_PP_BOOL_909 1 +# define BOOST_PP_BOOL_910 1 +# define BOOST_PP_BOOL_911 1 +# define BOOST_PP_BOOL_912 1 +# define BOOST_PP_BOOL_913 1 +# define BOOST_PP_BOOL_914 1 +# define BOOST_PP_BOOL_915 1 +# define BOOST_PP_BOOL_916 1 +# define BOOST_PP_BOOL_917 1 +# define BOOST_PP_BOOL_918 1 +# define BOOST_PP_BOOL_919 1 +# define BOOST_PP_BOOL_920 1 +# define BOOST_PP_BOOL_921 1 +# define BOOST_PP_BOOL_922 1 +# define BOOST_PP_BOOL_923 1 +# define BOOST_PP_BOOL_924 1 +# define BOOST_PP_BOOL_925 1 +# define BOOST_PP_BOOL_926 1 +# define BOOST_PP_BOOL_927 1 +# define BOOST_PP_BOOL_928 1 +# define BOOST_PP_BOOL_929 1 +# define BOOST_PP_BOOL_930 1 +# define BOOST_PP_BOOL_931 1 +# define BOOST_PP_BOOL_932 1 +# define BOOST_PP_BOOL_933 1 +# define BOOST_PP_BOOL_934 1 +# define BOOST_PP_BOOL_935 1 +# define BOOST_PP_BOOL_936 1 +# define BOOST_PP_BOOL_937 1 +# define BOOST_PP_BOOL_938 1 +# define BOOST_PP_BOOL_939 1 +# define BOOST_PP_BOOL_940 1 +# define BOOST_PP_BOOL_941 1 +# define BOOST_PP_BOOL_942 1 +# define BOOST_PP_BOOL_943 1 +# define BOOST_PP_BOOL_944 1 +# define BOOST_PP_BOOL_945 1 +# define BOOST_PP_BOOL_946 1 +# define BOOST_PP_BOOL_947 1 +# define BOOST_PP_BOOL_948 1 +# define BOOST_PP_BOOL_949 1 +# define BOOST_PP_BOOL_950 1 +# define BOOST_PP_BOOL_951 1 +# define BOOST_PP_BOOL_952 1 +# define BOOST_PP_BOOL_953 1 +# define BOOST_PP_BOOL_954 1 +# define BOOST_PP_BOOL_955 1 +# define BOOST_PP_BOOL_956 1 +# define BOOST_PP_BOOL_957 1 +# define BOOST_PP_BOOL_958 1 +# define BOOST_PP_BOOL_959 1 +# define BOOST_PP_BOOL_960 1 +# define BOOST_PP_BOOL_961 1 +# define BOOST_PP_BOOL_962 1 +# define BOOST_PP_BOOL_963 1 +# define BOOST_PP_BOOL_964 1 +# define BOOST_PP_BOOL_965 1 +# define BOOST_PP_BOOL_966 1 +# define BOOST_PP_BOOL_967 1 +# define BOOST_PP_BOOL_968 1 +# define BOOST_PP_BOOL_969 1 +# define BOOST_PP_BOOL_970 1 +# define BOOST_PP_BOOL_971 1 +# define BOOST_PP_BOOL_972 1 +# define BOOST_PP_BOOL_973 1 +# define BOOST_PP_BOOL_974 1 +# define BOOST_PP_BOOL_975 1 +# define BOOST_PP_BOOL_976 1 +# define BOOST_PP_BOOL_977 1 +# define BOOST_PP_BOOL_978 1 +# define BOOST_PP_BOOL_979 1 +# define BOOST_PP_BOOL_980 1 +# define BOOST_PP_BOOL_981 1 +# define BOOST_PP_BOOL_982 1 +# define BOOST_PP_BOOL_983 1 +# define BOOST_PP_BOOL_984 1 +# define BOOST_PP_BOOL_985 1 +# define BOOST_PP_BOOL_986 1 +# define BOOST_PP_BOOL_987 1 +# define BOOST_PP_BOOL_988 1 +# define BOOST_PP_BOOL_989 1 +# define BOOST_PP_BOOL_990 1 +# define BOOST_PP_BOOL_991 1 +# define BOOST_PP_BOOL_992 1 +# define BOOST_PP_BOOL_993 1 +# define BOOST_PP_BOOL_994 1 +# define BOOST_PP_BOOL_995 1 +# define BOOST_PP_BOOL_996 1 +# define BOOST_PP_BOOL_997 1 +# define BOOST_PP_BOOL_998 1 +# define BOOST_PP_BOOL_999 1 +# define BOOST_PP_BOOL_1000 1 +# define BOOST_PP_BOOL_1001 1 +# define BOOST_PP_BOOL_1002 1 +# define BOOST_PP_BOOL_1003 1 +# define BOOST_PP_BOOL_1004 1 +# define BOOST_PP_BOOL_1005 1 +# define BOOST_PP_BOOL_1006 1 +# define BOOST_PP_BOOL_1007 1 +# define BOOST_PP_BOOL_1008 1 +# define BOOST_PP_BOOL_1009 1 +# define BOOST_PP_BOOL_1010 1 +# define BOOST_PP_BOOL_1011 1 +# define BOOST_PP_BOOL_1012 1 +# define BOOST_PP_BOOL_1013 1 +# define BOOST_PP_BOOL_1014 1 +# define BOOST_PP_BOOL_1015 1 +# define BOOST_PP_BOOL_1016 1 +# define BOOST_PP_BOOL_1017 1 +# define BOOST_PP_BOOL_1018 1 +# define BOOST_PP_BOOL_1019 1 +# define BOOST_PP_BOOL_1020 1 +# define BOOST_PP_BOOL_1021 1 +# define BOOST_PP_BOOL_1022 1 +# define BOOST_PP_BOOL_1023 1 +# define BOOST_PP_BOOL_1024 1 +# +# endif diff --git a/src/boost/boost/preprocessor/logical/limits/bool_256.hpp b/src/boost/boost/preprocessor/logical/limits/bool_256.hpp new file mode 100644 index 000000000..dd2f30a5a --- /dev/null +++ b/src/boost/boost/preprocessor/logical/limits/bool_256.hpp @@ -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_LOGICAL_BOOL_256_HPP +# define BOOST_PREPROCESSOR_LOGICAL_BOOL_256_HPP +# +# define BOOST_PP_BOOL_0 0 +# define BOOST_PP_BOOL_1 1 +# define BOOST_PP_BOOL_2 1 +# define BOOST_PP_BOOL_3 1 +# define BOOST_PP_BOOL_4 1 +# define BOOST_PP_BOOL_5 1 +# define BOOST_PP_BOOL_6 1 +# define BOOST_PP_BOOL_7 1 +# define BOOST_PP_BOOL_8 1 +# define BOOST_PP_BOOL_9 1 +# define BOOST_PP_BOOL_10 1 +# define BOOST_PP_BOOL_11 1 +# define BOOST_PP_BOOL_12 1 +# define BOOST_PP_BOOL_13 1 +# define BOOST_PP_BOOL_14 1 +# define BOOST_PP_BOOL_15 1 +# define BOOST_PP_BOOL_16 1 +# define BOOST_PP_BOOL_17 1 +# define BOOST_PP_BOOL_18 1 +# define BOOST_PP_BOOL_19 1 +# define BOOST_PP_BOOL_20 1 +# define BOOST_PP_BOOL_21 1 +# define BOOST_PP_BOOL_22 1 +# define BOOST_PP_BOOL_23 1 +# define BOOST_PP_BOOL_24 1 +# define BOOST_PP_BOOL_25 1 +# define BOOST_PP_BOOL_26 1 +# define BOOST_PP_BOOL_27 1 +# define BOOST_PP_BOOL_28 1 +# define BOOST_PP_BOOL_29 1 +# define BOOST_PP_BOOL_30 1 +# define BOOST_PP_BOOL_31 1 +# define BOOST_PP_BOOL_32 1 +# define BOOST_PP_BOOL_33 1 +# define BOOST_PP_BOOL_34 1 +# define BOOST_PP_BOOL_35 1 +# define BOOST_PP_BOOL_36 1 +# define BOOST_PP_BOOL_37 1 +# define BOOST_PP_BOOL_38 1 +# define BOOST_PP_BOOL_39 1 +# define BOOST_PP_BOOL_40 1 +# define BOOST_PP_BOOL_41 1 +# define BOOST_PP_BOOL_42 1 +# define BOOST_PP_BOOL_43 1 +# define BOOST_PP_BOOL_44 1 +# define BOOST_PP_BOOL_45 1 +# define BOOST_PP_BOOL_46 1 +# define BOOST_PP_BOOL_47 1 +# define BOOST_PP_BOOL_48 1 +# define BOOST_PP_BOOL_49 1 +# define BOOST_PP_BOOL_50 1 +# define BOOST_PP_BOOL_51 1 +# define BOOST_PP_BOOL_52 1 +# define BOOST_PP_BOOL_53 1 +# define BOOST_PP_BOOL_54 1 +# define BOOST_PP_BOOL_55 1 +# define BOOST_PP_BOOL_56 1 +# define BOOST_PP_BOOL_57 1 +# define BOOST_PP_BOOL_58 1 +# define BOOST_PP_BOOL_59 1 +# define BOOST_PP_BOOL_60 1 +# define BOOST_PP_BOOL_61 1 +# define BOOST_PP_BOOL_62 1 +# define BOOST_PP_BOOL_63 1 +# define BOOST_PP_BOOL_64 1 +# define BOOST_PP_BOOL_65 1 +# define BOOST_PP_BOOL_66 1 +# define BOOST_PP_BOOL_67 1 +# define BOOST_PP_BOOL_68 1 +# define BOOST_PP_BOOL_69 1 +# define BOOST_PP_BOOL_70 1 +# define BOOST_PP_BOOL_71 1 +# define BOOST_PP_BOOL_72 1 +# define BOOST_PP_BOOL_73 1 +# define BOOST_PP_BOOL_74 1 +# define BOOST_PP_BOOL_75 1 +# define BOOST_PP_BOOL_76 1 +# define BOOST_PP_BOOL_77 1 +# define BOOST_PP_BOOL_78 1 +# define BOOST_PP_BOOL_79 1 +# define BOOST_PP_BOOL_80 1 +# define BOOST_PP_BOOL_81 1 +# define BOOST_PP_BOOL_82 1 +# define BOOST_PP_BOOL_83 1 +# define BOOST_PP_BOOL_84 1 +# define BOOST_PP_BOOL_85 1 +# define BOOST_PP_BOOL_86 1 +# define BOOST_PP_BOOL_87 1 +# define BOOST_PP_BOOL_88 1 +# define BOOST_PP_BOOL_89 1 +# define BOOST_PP_BOOL_90 1 +# define BOOST_PP_BOOL_91 1 +# define BOOST_PP_BOOL_92 1 +# define BOOST_PP_BOOL_93 1 +# define BOOST_PP_BOOL_94 1 +# define BOOST_PP_BOOL_95 1 +# define BOOST_PP_BOOL_96 1 +# define BOOST_PP_BOOL_97 1 +# define BOOST_PP_BOOL_98 1 +# define BOOST_PP_BOOL_99 1 +# define BOOST_PP_BOOL_100 1 +# define BOOST_PP_BOOL_101 1 +# define BOOST_PP_BOOL_102 1 +# define BOOST_PP_BOOL_103 1 +# define BOOST_PP_BOOL_104 1 +# define BOOST_PP_BOOL_105 1 +# define BOOST_PP_BOOL_106 1 +# define BOOST_PP_BOOL_107 1 +# define BOOST_PP_BOOL_108 1 +# define BOOST_PP_BOOL_109 1 +# define BOOST_PP_BOOL_110 1 +# define BOOST_PP_BOOL_111 1 +# define BOOST_PP_BOOL_112 1 +# define BOOST_PP_BOOL_113 1 +# define BOOST_PP_BOOL_114 1 +# define BOOST_PP_BOOL_115 1 +# define BOOST_PP_BOOL_116 1 +# define BOOST_PP_BOOL_117 1 +# define BOOST_PP_BOOL_118 1 +# define BOOST_PP_BOOL_119 1 +# define BOOST_PP_BOOL_120 1 +# define BOOST_PP_BOOL_121 1 +# define BOOST_PP_BOOL_122 1 +# define BOOST_PP_BOOL_123 1 +# define BOOST_PP_BOOL_124 1 +# define BOOST_PP_BOOL_125 1 +# define BOOST_PP_BOOL_126 1 +# define BOOST_PP_BOOL_127 1 +# define BOOST_PP_BOOL_128 1 +# define BOOST_PP_BOOL_129 1 +# define BOOST_PP_BOOL_130 1 +# define BOOST_PP_BOOL_131 1 +# define BOOST_PP_BOOL_132 1 +# define BOOST_PP_BOOL_133 1 +# define BOOST_PP_BOOL_134 1 +# define BOOST_PP_BOOL_135 1 +# define BOOST_PP_BOOL_136 1 +# define BOOST_PP_BOOL_137 1 +# define BOOST_PP_BOOL_138 1 +# define BOOST_PP_BOOL_139 1 +# define BOOST_PP_BOOL_140 1 +# define BOOST_PP_BOOL_141 1 +# define BOOST_PP_BOOL_142 1 +# define BOOST_PP_BOOL_143 1 +# define BOOST_PP_BOOL_144 1 +# define BOOST_PP_BOOL_145 1 +# define BOOST_PP_BOOL_146 1 +# define BOOST_PP_BOOL_147 1 +# define BOOST_PP_BOOL_148 1 +# define BOOST_PP_BOOL_149 1 +# define BOOST_PP_BOOL_150 1 +# define BOOST_PP_BOOL_151 1 +# define BOOST_PP_BOOL_152 1 +# define BOOST_PP_BOOL_153 1 +# define BOOST_PP_BOOL_154 1 +# define BOOST_PP_BOOL_155 1 +# define BOOST_PP_BOOL_156 1 +# define BOOST_PP_BOOL_157 1 +# define BOOST_PP_BOOL_158 1 +# define BOOST_PP_BOOL_159 1 +# define BOOST_PP_BOOL_160 1 +# define BOOST_PP_BOOL_161 1 +# define BOOST_PP_BOOL_162 1 +# define BOOST_PP_BOOL_163 1 +# define BOOST_PP_BOOL_164 1 +# define BOOST_PP_BOOL_165 1 +# define BOOST_PP_BOOL_166 1 +# define BOOST_PP_BOOL_167 1 +# define BOOST_PP_BOOL_168 1 +# define BOOST_PP_BOOL_169 1 +# define BOOST_PP_BOOL_170 1 +# define BOOST_PP_BOOL_171 1 +# define BOOST_PP_BOOL_172 1 +# define BOOST_PP_BOOL_173 1 +# define BOOST_PP_BOOL_174 1 +# define BOOST_PP_BOOL_175 1 +# define BOOST_PP_BOOL_176 1 +# define BOOST_PP_BOOL_177 1 +# define BOOST_PP_BOOL_178 1 +# define BOOST_PP_BOOL_179 1 +# define BOOST_PP_BOOL_180 1 +# define BOOST_PP_BOOL_181 1 +# define BOOST_PP_BOOL_182 1 +# define BOOST_PP_BOOL_183 1 +# define BOOST_PP_BOOL_184 1 +# define BOOST_PP_BOOL_185 1 +# define BOOST_PP_BOOL_186 1 +# define BOOST_PP_BOOL_187 1 +# define BOOST_PP_BOOL_188 1 +# define BOOST_PP_BOOL_189 1 +# define BOOST_PP_BOOL_190 1 +# define BOOST_PP_BOOL_191 1 +# define BOOST_PP_BOOL_192 1 +# define BOOST_PP_BOOL_193 1 +# define BOOST_PP_BOOL_194 1 +# define BOOST_PP_BOOL_195 1 +# define BOOST_PP_BOOL_196 1 +# define BOOST_PP_BOOL_197 1 +# define BOOST_PP_BOOL_198 1 +# define BOOST_PP_BOOL_199 1 +# define BOOST_PP_BOOL_200 1 +# define BOOST_PP_BOOL_201 1 +# define BOOST_PP_BOOL_202 1 +# define BOOST_PP_BOOL_203 1 +# define BOOST_PP_BOOL_204 1 +# define BOOST_PP_BOOL_205 1 +# define BOOST_PP_BOOL_206 1 +# define BOOST_PP_BOOL_207 1 +# define BOOST_PP_BOOL_208 1 +# define BOOST_PP_BOOL_209 1 +# define BOOST_PP_BOOL_210 1 +# define BOOST_PP_BOOL_211 1 +# define BOOST_PP_BOOL_212 1 +# define BOOST_PP_BOOL_213 1 +# define BOOST_PP_BOOL_214 1 +# define BOOST_PP_BOOL_215 1 +# define BOOST_PP_BOOL_216 1 +# define BOOST_PP_BOOL_217 1 +# define BOOST_PP_BOOL_218 1 +# define BOOST_PP_BOOL_219 1 +# define BOOST_PP_BOOL_220 1 +# define BOOST_PP_BOOL_221 1 +# define BOOST_PP_BOOL_222 1 +# define BOOST_PP_BOOL_223 1 +# define BOOST_PP_BOOL_224 1 +# define BOOST_PP_BOOL_225 1 +# define BOOST_PP_BOOL_226 1 +# define BOOST_PP_BOOL_227 1 +# define BOOST_PP_BOOL_228 1 +# define BOOST_PP_BOOL_229 1 +# define BOOST_PP_BOOL_230 1 +# define BOOST_PP_BOOL_231 1 +# define BOOST_PP_BOOL_232 1 +# define BOOST_PP_BOOL_233 1 +# define BOOST_PP_BOOL_234 1 +# define BOOST_PP_BOOL_235 1 +# define BOOST_PP_BOOL_236 1 +# define BOOST_PP_BOOL_237 1 +# define BOOST_PP_BOOL_238 1 +# define BOOST_PP_BOOL_239 1 +# define BOOST_PP_BOOL_240 1 +# define BOOST_PP_BOOL_241 1 +# define BOOST_PP_BOOL_242 1 +# define BOOST_PP_BOOL_243 1 +# define BOOST_PP_BOOL_244 1 +# define BOOST_PP_BOOL_245 1 +# define BOOST_PP_BOOL_246 1 +# define BOOST_PP_BOOL_247 1 +# define BOOST_PP_BOOL_248 1 +# define BOOST_PP_BOOL_249 1 +# define BOOST_PP_BOOL_250 1 +# define BOOST_PP_BOOL_251 1 +# define BOOST_PP_BOOL_252 1 +# define BOOST_PP_BOOL_253 1 +# define BOOST_PP_BOOL_254 1 +# define BOOST_PP_BOOL_255 1 +# define BOOST_PP_BOOL_256 1 +# +# endif diff --git a/src/boost/boost/preprocessor/logical/limits/bool_512.hpp b/src/boost/boost/preprocessor/logical/limits/bool_512.hpp new file mode 100644 index 000000000..97f7232ef --- /dev/null +++ b/src/boost/boost/preprocessor/logical/limits/bool_512.hpp @@ -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_LOGICAL_BOOL_512_HPP +# define BOOST_PREPROCESSOR_LOGICAL_BOOL_512_HPP +# +# define BOOST_PP_BOOL_257 1 +# define BOOST_PP_BOOL_258 1 +# define BOOST_PP_BOOL_259 1 +# define BOOST_PP_BOOL_260 1 +# define BOOST_PP_BOOL_261 1 +# define BOOST_PP_BOOL_262 1 +# define BOOST_PP_BOOL_263 1 +# define BOOST_PP_BOOL_264 1 +# define BOOST_PP_BOOL_265 1 +# define BOOST_PP_BOOL_266 1 +# define BOOST_PP_BOOL_267 1 +# define BOOST_PP_BOOL_268 1 +# define BOOST_PP_BOOL_269 1 +# define BOOST_PP_BOOL_270 1 +# define BOOST_PP_BOOL_271 1 +# define BOOST_PP_BOOL_272 1 +# define BOOST_PP_BOOL_273 1 +# define BOOST_PP_BOOL_274 1 +# define BOOST_PP_BOOL_275 1 +# define BOOST_PP_BOOL_276 1 +# define BOOST_PP_BOOL_277 1 +# define BOOST_PP_BOOL_278 1 +# define BOOST_PP_BOOL_279 1 +# define BOOST_PP_BOOL_280 1 +# define BOOST_PP_BOOL_281 1 +# define BOOST_PP_BOOL_282 1 +# define BOOST_PP_BOOL_283 1 +# define BOOST_PP_BOOL_284 1 +# define BOOST_PP_BOOL_285 1 +# define BOOST_PP_BOOL_286 1 +# define BOOST_PP_BOOL_287 1 +# define BOOST_PP_BOOL_288 1 +# define BOOST_PP_BOOL_289 1 +# define BOOST_PP_BOOL_290 1 +# define BOOST_PP_BOOL_291 1 +# define BOOST_PP_BOOL_292 1 +# define BOOST_PP_BOOL_293 1 +# define BOOST_PP_BOOL_294 1 +# define BOOST_PP_BOOL_295 1 +# define BOOST_PP_BOOL_296 1 +# define BOOST_PP_BOOL_297 1 +# define BOOST_PP_BOOL_298 1 +# define BOOST_PP_BOOL_299 1 +# define BOOST_PP_BOOL_300 1 +# define BOOST_PP_BOOL_301 1 +# define BOOST_PP_BOOL_302 1 +# define BOOST_PP_BOOL_303 1 +# define BOOST_PP_BOOL_304 1 +# define BOOST_PP_BOOL_305 1 +# define BOOST_PP_BOOL_306 1 +# define BOOST_PP_BOOL_307 1 +# define BOOST_PP_BOOL_308 1 +# define BOOST_PP_BOOL_309 1 +# define BOOST_PP_BOOL_310 1 +# define BOOST_PP_BOOL_311 1 +# define BOOST_PP_BOOL_312 1 +# define BOOST_PP_BOOL_313 1 +# define BOOST_PP_BOOL_314 1 +# define BOOST_PP_BOOL_315 1 +# define BOOST_PP_BOOL_316 1 +# define BOOST_PP_BOOL_317 1 +# define BOOST_PP_BOOL_318 1 +# define BOOST_PP_BOOL_319 1 +# define BOOST_PP_BOOL_320 1 +# define BOOST_PP_BOOL_321 1 +# define BOOST_PP_BOOL_322 1 +# define BOOST_PP_BOOL_323 1 +# define BOOST_PP_BOOL_324 1 +# define BOOST_PP_BOOL_325 1 +# define BOOST_PP_BOOL_326 1 +# define BOOST_PP_BOOL_327 1 +# define BOOST_PP_BOOL_328 1 +# define BOOST_PP_BOOL_329 1 +# define BOOST_PP_BOOL_330 1 +# define BOOST_PP_BOOL_331 1 +# define BOOST_PP_BOOL_332 1 +# define BOOST_PP_BOOL_333 1 +# define BOOST_PP_BOOL_334 1 +# define BOOST_PP_BOOL_335 1 +# define BOOST_PP_BOOL_336 1 +# define BOOST_PP_BOOL_337 1 +# define BOOST_PP_BOOL_338 1 +# define BOOST_PP_BOOL_339 1 +# define BOOST_PP_BOOL_340 1 +# define BOOST_PP_BOOL_341 1 +# define BOOST_PP_BOOL_342 1 +# define BOOST_PP_BOOL_343 1 +# define BOOST_PP_BOOL_344 1 +# define BOOST_PP_BOOL_345 1 +# define BOOST_PP_BOOL_346 1 +# define BOOST_PP_BOOL_347 1 +# define BOOST_PP_BOOL_348 1 +# define BOOST_PP_BOOL_349 1 +# define BOOST_PP_BOOL_350 1 +# define BOOST_PP_BOOL_351 1 +# define BOOST_PP_BOOL_352 1 +# define BOOST_PP_BOOL_353 1 +# define BOOST_PP_BOOL_354 1 +# define BOOST_PP_BOOL_355 1 +# define BOOST_PP_BOOL_356 1 +# define BOOST_PP_BOOL_357 1 +# define BOOST_PP_BOOL_358 1 +# define BOOST_PP_BOOL_359 1 +# define BOOST_PP_BOOL_360 1 +# define BOOST_PP_BOOL_361 1 +# define BOOST_PP_BOOL_362 1 +# define BOOST_PP_BOOL_363 1 +# define BOOST_PP_BOOL_364 1 +# define BOOST_PP_BOOL_365 1 +# define BOOST_PP_BOOL_366 1 +# define BOOST_PP_BOOL_367 1 +# define BOOST_PP_BOOL_368 1 +# define BOOST_PP_BOOL_369 1 +# define BOOST_PP_BOOL_370 1 +# define BOOST_PP_BOOL_371 1 +# define BOOST_PP_BOOL_372 1 +# define BOOST_PP_BOOL_373 1 +# define BOOST_PP_BOOL_374 1 +# define BOOST_PP_BOOL_375 1 +# define BOOST_PP_BOOL_376 1 +# define BOOST_PP_BOOL_377 1 +# define BOOST_PP_BOOL_378 1 +# define BOOST_PP_BOOL_379 1 +# define BOOST_PP_BOOL_380 1 +# define BOOST_PP_BOOL_381 1 +# define BOOST_PP_BOOL_382 1 +# define BOOST_PP_BOOL_383 1 +# define BOOST_PP_BOOL_384 1 +# define BOOST_PP_BOOL_385 1 +# define BOOST_PP_BOOL_386 1 +# define BOOST_PP_BOOL_387 1 +# define BOOST_PP_BOOL_388 1 +# define BOOST_PP_BOOL_389 1 +# define BOOST_PP_BOOL_390 1 +# define BOOST_PP_BOOL_391 1 +# define BOOST_PP_BOOL_392 1 +# define BOOST_PP_BOOL_393 1 +# define BOOST_PP_BOOL_394 1 +# define BOOST_PP_BOOL_395 1 +# define BOOST_PP_BOOL_396 1 +# define BOOST_PP_BOOL_397 1 +# define BOOST_PP_BOOL_398 1 +# define BOOST_PP_BOOL_399 1 +# define BOOST_PP_BOOL_400 1 +# define BOOST_PP_BOOL_401 1 +# define BOOST_PP_BOOL_402 1 +# define BOOST_PP_BOOL_403 1 +# define BOOST_PP_BOOL_404 1 +# define BOOST_PP_BOOL_405 1 +# define BOOST_PP_BOOL_406 1 +# define BOOST_PP_BOOL_407 1 +# define BOOST_PP_BOOL_408 1 +# define BOOST_PP_BOOL_409 1 +# define BOOST_PP_BOOL_410 1 +# define BOOST_PP_BOOL_411 1 +# define BOOST_PP_BOOL_412 1 +# define BOOST_PP_BOOL_413 1 +# define BOOST_PP_BOOL_414 1 +# define BOOST_PP_BOOL_415 1 +# define BOOST_PP_BOOL_416 1 +# define BOOST_PP_BOOL_417 1 +# define BOOST_PP_BOOL_418 1 +# define BOOST_PP_BOOL_419 1 +# define BOOST_PP_BOOL_420 1 +# define BOOST_PP_BOOL_421 1 +# define BOOST_PP_BOOL_422 1 +# define BOOST_PP_BOOL_423 1 +# define BOOST_PP_BOOL_424 1 +# define BOOST_PP_BOOL_425 1 +# define BOOST_PP_BOOL_426 1 +# define BOOST_PP_BOOL_427 1 +# define BOOST_PP_BOOL_428 1 +# define BOOST_PP_BOOL_429 1 +# define BOOST_PP_BOOL_430 1 +# define BOOST_PP_BOOL_431 1 +# define BOOST_PP_BOOL_432 1 +# define BOOST_PP_BOOL_433 1 +# define BOOST_PP_BOOL_434 1 +# define BOOST_PP_BOOL_435 1 +# define BOOST_PP_BOOL_436 1 +# define BOOST_PP_BOOL_437 1 +# define BOOST_PP_BOOL_438 1 +# define BOOST_PP_BOOL_439 1 +# define BOOST_PP_BOOL_440 1 +# define BOOST_PP_BOOL_441 1 +# define BOOST_PP_BOOL_442 1 +# define BOOST_PP_BOOL_443 1 +# define BOOST_PP_BOOL_444 1 +# define BOOST_PP_BOOL_445 1 +# define BOOST_PP_BOOL_446 1 +# define BOOST_PP_BOOL_447 1 +# define BOOST_PP_BOOL_448 1 +# define BOOST_PP_BOOL_449 1 +# define BOOST_PP_BOOL_450 1 +# define BOOST_PP_BOOL_451 1 +# define BOOST_PP_BOOL_452 1 +# define BOOST_PP_BOOL_453 1 +# define BOOST_PP_BOOL_454 1 +# define BOOST_PP_BOOL_455 1 +# define BOOST_PP_BOOL_456 1 +# define BOOST_PP_BOOL_457 1 +# define BOOST_PP_BOOL_458 1 +# define BOOST_PP_BOOL_459 1 +# define BOOST_PP_BOOL_460 1 +# define BOOST_PP_BOOL_461 1 +# define BOOST_PP_BOOL_462 1 +# define BOOST_PP_BOOL_463 1 +# define BOOST_PP_BOOL_464 1 +# define BOOST_PP_BOOL_465 1 +# define BOOST_PP_BOOL_466 1 +# define BOOST_PP_BOOL_467 1 +# define BOOST_PP_BOOL_468 1 +# define BOOST_PP_BOOL_469 1 +# define BOOST_PP_BOOL_470 1 +# define BOOST_PP_BOOL_471 1 +# define BOOST_PP_BOOL_472 1 +# define BOOST_PP_BOOL_473 1 +# define BOOST_PP_BOOL_474 1 +# define BOOST_PP_BOOL_475 1 +# define BOOST_PP_BOOL_476 1 +# define BOOST_PP_BOOL_477 1 +# define BOOST_PP_BOOL_478 1 +# define BOOST_PP_BOOL_479 1 +# define BOOST_PP_BOOL_480 1 +# define BOOST_PP_BOOL_481 1 +# define BOOST_PP_BOOL_482 1 +# define BOOST_PP_BOOL_483 1 +# define BOOST_PP_BOOL_484 1 +# define BOOST_PP_BOOL_485 1 +# define BOOST_PP_BOOL_486 1 +# define BOOST_PP_BOOL_487 1 +# define BOOST_PP_BOOL_488 1 +# define BOOST_PP_BOOL_489 1 +# define BOOST_PP_BOOL_490 1 +# define BOOST_PP_BOOL_491 1 +# define BOOST_PP_BOOL_492 1 +# define BOOST_PP_BOOL_493 1 +# define BOOST_PP_BOOL_494 1 +# define BOOST_PP_BOOL_495 1 +# define BOOST_PP_BOOL_496 1 +# define BOOST_PP_BOOL_497 1 +# define BOOST_PP_BOOL_498 1 +# define BOOST_PP_BOOL_499 1 +# define BOOST_PP_BOOL_500 1 +# define BOOST_PP_BOOL_501 1 +# define BOOST_PP_BOOL_502 1 +# define BOOST_PP_BOOL_503 1 +# define BOOST_PP_BOOL_504 1 +# define BOOST_PP_BOOL_505 1 +# define BOOST_PP_BOOL_506 1 +# define BOOST_PP_BOOL_507 1 +# define BOOST_PP_BOOL_508 1 +# define BOOST_PP_BOOL_509 1 +# define BOOST_PP_BOOL_510 1 +# define BOOST_PP_BOOL_511 1 +# define BOOST_PP_BOOL_512 1 +# +# endif diff --git a/src/boost/boost/preprocessor/punctuation/is_begin_parens.hpp b/src/boost/boost/preprocessor/punctuation/is_begin_parens.hpp index 8aecc69f3..bac13162c 100644 --- a/src/boost/boost/preprocessor/punctuation/is_begin_parens.hpp +++ b/src/boost/boost/preprocessor/punctuation/is_begin_parens.hpp @@ -12,10 +12,7 @@ # ifndef BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP # define BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP -# include - -#if BOOST_PP_VARIADICS - +#include #include #if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 @@ -47,5 +44,4 @@ /**/ #endif /* BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 */ -#endif /* BOOST_PP_VARIADICS */ #endif /* BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP */ diff --git a/src/boost/boost/preprocessor/repetition/detail/dmc/for.hpp b/src/boost/boost/preprocessor/repetition/detail/dmc/for.hpp index 70e506e25..ed7dd7de6 100644 --- a/src/boost/boost/preprocessor/repetition/detail/dmc/for.hpp +++ b/src/boost/boost/preprocessor/repetition/detail/dmc/for.hpp @@ -8,11 +8,12 @@ # */ # # /* Revised by Paul Mensonides (2002) */ +# /* Revised by Edward Diener (2020) */ # # /* See http://www.boost.org for most recent version. */ # -# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP -# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP +# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_DMC_FOR_HPP +# define BOOST_PREPROCESSOR_REPETITION_DETAIL_DMC_FOR_HPP # # include # include diff --git a/src/boost/boost/preprocessor/repetition/detail/edg/for.hpp b/src/boost/boost/preprocessor/repetition/detail/edg/for.hpp index ed7364c09..e402bbd65 100644 --- a/src/boost/boost/preprocessor/repetition/detail/edg/for.hpp +++ b/src/boost/boost/preprocessor/repetition/detail/edg/for.hpp @@ -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_REPETITION_DETAIL_EDG_FOR_HPP # define BOOST_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # @@ -531,4 +536,25 @@ # define BOOST_PP_FOR_255_I(s, p, o, m) BOOST_PP_IF(p(256, s), m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IF(p(256, s), BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(o(256, s), p, o, m) # define BOOST_PP_FOR_256_I(s, p, o, m) BOOST_PP_IF(p(257, s), m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IF(p(257, s), BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(o(257, s), p, o, m) # +# else +# +# include +# include +# include +# +# if BOOST_PP_LIMIT_FOR == 256 +# include +# elif BOOST_PP_LIMIT_FOR == 512 +# include +# include +# elif BOOST_PP_LIMIT_FOR == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_FOR limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/repetition/detail/edg/limits/for_1024.hpp b/src/boost/boost/preprocessor/repetition/detail/edg/limits/for_1024.hpp new file mode 100644 index 000000000..9c6cd94b0 --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/detail/edg/limits/for_1024.hpp @@ -0,0 +1,1044 @@ +# /* 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_REPETITION_DETAIL_EDG_FOR_1024_HPP +# define BOOST_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_1024_HPP +# +# define BOOST_PP_FOR_513(s, p, o, m) BOOST_PP_FOR_513_I(s, p, o, m) +# define BOOST_PP_FOR_514(s, p, o, m) BOOST_PP_FOR_514_I(s, p, o, m) +# define BOOST_PP_FOR_515(s, p, o, m) BOOST_PP_FOR_515_I(s, p, o, m) +# define BOOST_PP_FOR_516(s, p, o, m) BOOST_PP_FOR_516_I(s, p, o, m) +# define BOOST_PP_FOR_517(s, p, o, m) BOOST_PP_FOR_517_I(s, p, o, m) +# define BOOST_PP_FOR_518(s, p, o, m) BOOST_PP_FOR_518_I(s, p, o, m) +# define BOOST_PP_FOR_519(s, p, o, m) BOOST_PP_FOR_519_I(s, p, o, m) +# define BOOST_PP_FOR_520(s, p, o, m) BOOST_PP_FOR_520_I(s, p, o, m) +# define BOOST_PP_FOR_521(s, p, o, m) BOOST_PP_FOR_521_I(s, p, o, m) +# define BOOST_PP_FOR_522(s, p, o, m) BOOST_PP_FOR_522_I(s, p, o, m) +# define BOOST_PP_FOR_523(s, p, o, m) BOOST_PP_FOR_523_I(s, p, o, m) +# define BOOST_PP_FOR_524(s, p, o, m) BOOST_PP_FOR_524_I(s, p, o, m) +# define BOOST_PP_FOR_525(s, p, o, m) BOOST_PP_FOR_525_I(s, p, o, m) +# define BOOST_PP_FOR_526(s, p, o, m) BOOST_PP_FOR_526_I(s, p, o, m) +# define BOOST_PP_FOR_527(s, p, o, m) BOOST_PP_FOR_527_I(s, p, o, m) +# define BOOST_PP_FOR_528(s, p, o, m) BOOST_PP_FOR_528_I(s, p, o, m) +# define BOOST_PP_FOR_529(s, p, o, m) BOOST_PP_FOR_529_I(s, p, o, m) +# define BOOST_PP_FOR_530(s, p, o, m) BOOST_PP_FOR_530_I(s, p, o, m) +# define BOOST_PP_FOR_531(s, p, o, m) BOOST_PP_FOR_531_I(s, p, o, m) +# define BOOST_PP_FOR_532(s, p, o, m) BOOST_PP_FOR_532_I(s, p, o, m) +# define BOOST_PP_FOR_533(s, p, o, m) BOOST_PP_FOR_533_I(s, p, o, m) +# define BOOST_PP_FOR_534(s, p, o, m) BOOST_PP_FOR_534_I(s, p, o, m) +# define BOOST_PP_FOR_535(s, p, o, m) BOOST_PP_FOR_535_I(s, p, o, m) +# define BOOST_PP_FOR_536(s, p, o, m) BOOST_PP_FOR_536_I(s, p, o, m) +# define BOOST_PP_FOR_537(s, p, o, m) BOOST_PP_FOR_537_I(s, p, o, m) +# define BOOST_PP_FOR_538(s, p, o, m) BOOST_PP_FOR_538_I(s, p, o, m) +# define BOOST_PP_FOR_539(s, p, o, m) BOOST_PP_FOR_539_I(s, p, o, m) +# define BOOST_PP_FOR_540(s, p, o, m) BOOST_PP_FOR_540_I(s, p, o, m) +# define BOOST_PP_FOR_541(s, p, o, m) BOOST_PP_FOR_541_I(s, p, o, m) +# define BOOST_PP_FOR_542(s, p, o, m) BOOST_PP_FOR_542_I(s, p, o, m) +# define BOOST_PP_FOR_543(s, p, o, m) BOOST_PP_FOR_543_I(s, p, o, m) +# define BOOST_PP_FOR_544(s, p, o, m) BOOST_PP_FOR_544_I(s, p, o, m) +# define BOOST_PP_FOR_545(s, p, o, m) BOOST_PP_FOR_545_I(s, p, o, m) +# define BOOST_PP_FOR_546(s, p, o, m) BOOST_PP_FOR_546_I(s, p, o, m) +# define BOOST_PP_FOR_547(s, p, o, m) BOOST_PP_FOR_547_I(s, p, o, m) +# define BOOST_PP_FOR_548(s, p, o, m) BOOST_PP_FOR_548_I(s, p, o, m) +# define BOOST_PP_FOR_549(s, p, o, m) BOOST_PP_FOR_549_I(s, p, o, m) +# define BOOST_PP_FOR_550(s, p, o, m) BOOST_PP_FOR_550_I(s, p, o, m) +# define BOOST_PP_FOR_551(s, p, o, m) BOOST_PP_FOR_551_I(s, p, o, m) +# define BOOST_PP_FOR_552(s, p, o, m) BOOST_PP_FOR_552_I(s, p, o, m) +# define BOOST_PP_FOR_553(s, p, o, m) BOOST_PP_FOR_553_I(s, p, o, m) +# define BOOST_PP_FOR_554(s, p, o, m) BOOST_PP_FOR_554_I(s, p, o, m) +# define BOOST_PP_FOR_555(s, p, o, m) BOOST_PP_FOR_555_I(s, p, o, m) +# define BOOST_PP_FOR_556(s, p, o, m) BOOST_PP_FOR_556_I(s, p, o, m) +# define BOOST_PP_FOR_557(s, p, o, m) BOOST_PP_FOR_557_I(s, p, o, m) +# define BOOST_PP_FOR_558(s, p, o, m) BOOST_PP_FOR_558_I(s, p, o, m) +# define BOOST_PP_FOR_559(s, p, o, m) BOOST_PP_FOR_559_I(s, p, o, m) +# define BOOST_PP_FOR_560(s, p, o, m) BOOST_PP_FOR_560_I(s, p, o, m) +# define BOOST_PP_FOR_561(s, p, o, m) BOOST_PP_FOR_561_I(s, p, o, m) +# define BOOST_PP_FOR_562(s, p, o, m) BOOST_PP_FOR_562_I(s, p, o, m) +# define BOOST_PP_FOR_563(s, p, o, m) BOOST_PP_FOR_563_I(s, p, o, m) +# define BOOST_PP_FOR_564(s, p, o, m) BOOST_PP_FOR_564_I(s, p, o, m) +# define BOOST_PP_FOR_565(s, p, o, m) BOOST_PP_FOR_565_I(s, p, o, m) +# define BOOST_PP_FOR_566(s, p, o, m) BOOST_PP_FOR_566_I(s, p, o, m) +# define BOOST_PP_FOR_567(s, p, o, m) BOOST_PP_FOR_567_I(s, p, o, m) +# define BOOST_PP_FOR_568(s, p, o, m) BOOST_PP_FOR_568_I(s, p, o, m) +# define BOOST_PP_FOR_569(s, p, o, m) BOOST_PP_FOR_569_I(s, p, o, m) +# define BOOST_PP_FOR_570(s, p, o, m) BOOST_PP_FOR_570_I(s, p, o, m) +# define BOOST_PP_FOR_571(s, p, o, m) BOOST_PP_FOR_571_I(s, p, o, m) +# define BOOST_PP_FOR_572(s, p, o, m) BOOST_PP_FOR_572_I(s, p, o, m) +# define BOOST_PP_FOR_573(s, p, o, m) BOOST_PP_FOR_573_I(s, p, o, m) +# define BOOST_PP_FOR_574(s, p, o, m) BOOST_PP_FOR_574_I(s, p, o, m) +# define BOOST_PP_FOR_575(s, p, o, m) BOOST_PP_FOR_575_I(s, p, o, m) +# define BOOST_PP_FOR_576(s, p, o, m) BOOST_PP_FOR_576_I(s, p, o, m) +# define BOOST_PP_FOR_577(s, p, o, m) BOOST_PP_FOR_577_I(s, p, o, m) +# define BOOST_PP_FOR_578(s, p, o, m) BOOST_PP_FOR_578_I(s, p, o, m) +# define BOOST_PP_FOR_579(s, p, o, m) BOOST_PP_FOR_579_I(s, p, o, m) +# define BOOST_PP_FOR_580(s, p, o, m) BOOST_PP_FOR_580_I(s, p, o, m) +# define BOOST_PP_FOR_581(s, p, o, m) BOOST_PP_FOR_581_I(s, p, o, m) +# define BOOST_PP_FOR_582(s, p, o, m) BOOST_PP_FOR_582_I(s, p, o, m) +# define BOOST_PP_FOR_583(s, p, o, m) BOOST_PP_FOR_583_I(s, p, o, m) +# define BOOST_PP_FOR_584(s, p, o, m) BOOST_PP_FOR_584_I(s, p, o, m) +# define BOOST_PP_FOR_585(s, p, o, m) BOOST_PP_FOR_585_I(s, p, o, m) +# define BOOST_PP_FOR_586(s, p, o, m) BOOST_PP_FOR_586_I(s, p, o, m) +# define BOOST_PP_FOR_587(s, p, o, m) BOOST_PP_FOR_587_I(s, p, o, m) +# define BOOST_PP_FOR_588(s, p, o, m) BOOST_PP_FOR_588_I(s, p, o, m) +# define BOOST_PP_FOR_589(s, p, o, m) BOOST_PP_FOR_589_I(s, p, o, m) +# define BOOST_PP_FOR_590(s, p, o, m) BOOST_PP_FOR_590_I(s, p, o, m) +# define BOOST_PP_FOR_591(s, p, o, m) BOOST_PP_FOR_591_I(s, p, o, m) +# define BOOST_PP_FOR_592(s, p, o, m) BOOST_PP_FOR_592_I(s, p, o, m) +# define BOOST_PP_FOR_593(s, p, o, m) BOOST_PP_FOR_593_I(s, p, o, m) +# define BOOST_PP_FOR_594(s, p, o, m) BOOST_PP_FOR_594_I(s, p, o, m) +# define BOOST_PP_FOR_595(s, p, o, m) BOOST_PP_FOR_595_I(s, p, o, m) +# define BOOST_PP_FOR_596(s, p, o, m) BOOST_PP_FOR_596_I(s, p, o, m) +# define BOOST_PP_FOR_597(s, p, o, m) BOOST_PP_FOR_597_I(s, p, o, m) +# define BOOST_PP_FOR_598(s, p, o, m) BOOST_PP_FOR_598_I(s, p, o, m) +# define BOOST_PP_FOR_599(s, p, o, m) BOOST_PP_FOR_599_I(s, p, o, m) +# define BOOST_PP_FOR_600(s, p, o, m) BOOST_PP_FOR_600_I(s, p, o, m) +# define BOOST_PP_FOR_601(s, p, o, m) BOOST_PP_FOR_601_I(s, p, o, m) +# define BOOST_PP_FOR_602(s, p, o, m) BOOST_PP_FOR_602_I(s, p, o, m) +# define BOOST_PP_FOR_603(s, p, o, m) BOOST_PP_FOR_603_I(s, p, o, m) +# define BOOST_PP_FOR_604(s, p, o, m) BOOST_PP_FOR_604_I(s, p, o, m) +# define BOOST_PP_FOR_605(s, p, o, m) BOOST_PP_FOR_605_I(s, p, o, m) +# define BOOST_PP_FOR_606(s, p, o, m) BOOST_PP_FOR_606_I(s, p, o, m) +# define BOOST_PP_FOR_607(s, p, o, m) BOOST_PP_FOR_607_I(s, p, o, m) +# define BOOST_PP_FOR_608(s, p, o, m) BOOST_PP_FOR_608_I(s, p, o, m) +# define BOOST_PP_FOR_609(s, p, o, m) BOOST_PP_FOR_609_I(s, p, o, m) +# define BOOST_PP_FOR_610(s, p, o, m) BOOST_PP_FOR_610_I(s, p, o, m) +# define BOOST_PP_FOR_611(s, p, o, m) BOOST_PP_FOR_611_I(s, p, o, m) +# define BOOST_PP_FOR_612(s, p, o, m) BOOST_PP_FOR_612_I(s, p, o, m) +# define BOOST_PP_FOR_613(s, p, o, m) BOOST_PP_FOR_613_I(s, p, o, m) +# define BOOST_PP_FOR_614(s, p, o, m) BOOST_PP_FOR_614_I(s, p, o, m) +# define BOOST_PP_FOR_615(s, p, o, m) BOOST_PP_FOR_615_I(s, p, o, m) +# define BOOST_PP_FOR_616(s, p, o, m) BOOST_PP_FOR_616_I(s, p, o, m) +# define BOOST_PP_FOR_617(s, p, o, m) BOOST_PP_FOR_617_I(s, p, o, m) +# define BOOST_PP_FOR_618(s, p, o, m) BOOST_PP_FOR_618_I(s, p, o, m) +# define BOOST_PP_FOR_619(s, p, o, m) BOOST_PP_FOR_619_I(s, p, o, m) +# define BOOST_PP_FOR_620(s, p, o, m) BOOST_PP_FOR_620_I(s, p, o, m) +# define BOOST_PP_FOR_621(s, p, o, m) BOOST_PP_FOR_621_I(s, p, o, m) +# define BOOST_PP_FOR_622(s, p, o, m) BOOST_PP_FOR_622_I(s, p, o, m) +# define BOOST_PP_FOR_623(s, p, o, m) BOOST_PP_FOR_623_I(s, p, o, m) +# define BOOST_PP_FOR_624(s, p, o, m) BOOST_PP_FOR_624_I(s, p, o, m) +# define BOOST_PP_FOR_625(s, p, o, m) BOOST_PP_FOR_625_I(s, p, o, m) +# define BOOST_PP_FOR_626(s, p, o, m) BOOST_PP_FOR_626_I(s, p, o, m) +# define BOOST_PP_FOR_627(s, p, o, m) BOOST_PP_FOR_627_I(s, p, o, m) +# define BOOST_PP_FOR_628(s, p, o, m) BOOST_PP_FOR_628_I(s, p, o, m) +# define BOOST_PP_FOR_629(s, p, o, m) BOOST_PP_FOR_629_I(s, p, o, m) +# define BOOST_PP_FOR_630(s, p, o, m) BOOST_PP_FOR_630_I(s, p, o, m) +# define BOOST_PP_FOR_631(s, p, o, m) BOOST_PP_FOR_631_I(s, p, o, m) +# define BOOST_PP_FOR_632(s, p, o, m) BOOST_PP_FOR_632_I(s, p, o, m) +# define BOOST_PP_FOR_633(s, p, o, m) BOOST_PP_FOR_633_I(s, p, o, m) +# define BOOST_PP_FOR_634(s, p, o, m) BOOST_PP_FOR_634_I(s, p, o, m) +# define BOOST_PP_FOR_635(s, p, o, m) BOOST_PP_FOR_635_I(s, p, o, m) +# define BOOST_PP_FOR_636(s, p, o, m) BOOST_PP_FOR_636_I(s, p, o, m) +# define BOOST_PP_FOR_637(s, p, o, m) BOOST_PP_FOR_637_I(s, p, o, m) +# define BOOST_PP_FOR_638(s, p, o, m) BOOST_PP_FOR_638_I(s, p, o, m) +# define BOOST_PP_FOR_639(s, p, o, m) BOOST_PP_FOR_639_I(s, p, o, m) +# define BOOST_PP_FOR_640(s, p, o, m) BOOST_PP_FOR_640_I(s, p, o, m) +# define BOOST_PP_FOR_641(s, p, o, m) BOOST_PP_FOR_641_I(s, p, o, m) +# define BOOST_PP_FOR_642(s, p, o, m) BOOST_PP_FOR_642_I(s, p, o, m) +# define BOOST_PP_FOR_643(s, p, o, m) BOOST_PP_FOR_643_I(s, p, o, m) +# define BOOST_PP_FOR_644(s, p, o, m) BOOST_PP_FOR_644_I(s, p, o, m) +# define BOOST_PP_FOR_645(s, p, o, m) BOOST_PP_FOR_645_I(s, p, o, m) +# define BOOST_PP_FOR_646(s, p, o, m) BOOST_PP_FOR_646_I(s, p, o, m) +# define BOOST_PP_FOR_647(s, p, o, m) BOOST_PP_FOR_647_I(s, p, o, m) +# define BOOST_PP_FOR_648(s, p, o, m) BOOST_PP_FOR_648_I(s, p, o, m) +# define BOOST_PP_FOR_649(s, p, o, m) BOOST_PP_FOR_649_I(s, p, o, m) +# define BOOST_PP_FOR_650(s, p, o, m) BOOST_PP_FOR_650_I(s, p, o, m) +# define BOOST_PP_FOR_651(s, p, o, m) BOOST_PP_FOR_651_I(s, p, o, m) +# define BOOST_PP_FOR_652(s, p, o, m) BOOST_PP_FOR_652_I(s, p, o, m) +# define BOOST_PP_FOR_653(s, p, o, m) BOOST_PP_FOR_653_I(s, p, o, m) +# define BOOST_PP_FOR_654(s, p, o, m) BOOST_PP_FOR_654_I(s, p, o, m) +# define BOOST_PP_FOR_655(s, p, o, m) BOOST_PP_FOR_655_I(s, p, o, m) +# define BOOST_PP_FOR_656(s, p, o, m) BOOST_PP_FOR_656_I(s, p, o, m) +# define BOOST_PP_FOR_657(s, p, o, m) BOOST_PP_FOR_657_I(s, p, o, m) +# define BOOST_PP_FOR_658(s, p, o, m) BOOST_PP_FOR_658_I(s, p, o, m) +# define BOOST_PP_FOR_659(s, p, o, m) BOOST_PP_FOR_659_I(s, p, o, m) +# define BOOST_PP_FOR_660(s, p, o, m) BOOST_PP_FOR_660_I(s, p, o, m) +# define BOOST_PP_FOR_661(s, p, o, m) BOOST_PP_FOR_661_I(s, p, o, m) +# define BOOST_PP_FOR_662(s, p, o, m) BOOST_PP_FOR_662_I(s, p, o, m) +# define BOOST_PP_FOR_663(s, p, o, m) BOOST_PP_FOR_663_I(s, p, o, m) +# define BOOST_PP_FOR_664(s, p, o, m) BOOST_PP_FOR_664_I(s, p, o, m) +# define BOOST_PP_FOR_665(s, p, o, m) BOOST_PP_FOR_665_I(s, p, o, m) +# define BOOST_PP_FOR_666(s, p, o, m) BOOST_PP_FOR_666_I(s, p, o, m) +# define BOOST_PP_FOR_667(s, p, o, m) BOOST_PP_FOR_667_I(s, p, o, m) +# define BOOST_PP_FOR_668(s, p, o, m) BOOST_PP_FOR_668_I(s, p, o, m) +# define BOOST_PP_FOR_669(s, p, o, m) BOOST_PP_FOR_669_I(s, p, o, m) +# define BOOST_PP_FOR_670(s, p, o, m) BOOST_PP_FOR_670_I(s, p, o, m) +# define BOOST_PP_FOR_671(s, p, o, m) BOOST_PP_FOR_671_I(s, p, o, m) +# define BOOST_PP_FOR_672(s, p, o, m) BOOST_PP_FOR_672_I(s, p, o, m) +# define BOOST_PP_FOR_673(s, p, o, m) BOOST_PP_FOR_673_I(s, p, o, m) +# define BOOST_PP_FOR_674(s, p, o, m) BOOST_PP_FOR_674_I(s, p, o, m) +# define BOOST_PP_FOR_675(s, p, o, m) BOOST_PP_FOR_675_I(s, p, o, m) +# define BOOST_PP_FOR_676(s, p, o, m) BOOST_PP_FOR_676_I(s, p, o, m) +# define BOOST_PP_FOR_677(s, p, o, m) BOOST_PP_FOR_677_I(s, p, o, m) +# define BOOST_PP_FOR_678(s, p, o, m) BOOST_PP_FOR_678_I(s, p, o, m) +# define BOOST_PP_FOR_679(s, p, o, m) BOOST_PP_FOR_679_I(s, p, o, m) +# define BOOST_PP_FOR_680(s, p, o, m) BOOST_PP_FOR_680_I(s, p, o, m) +# define BOOST_PP_FOR_681(s, p, o, m) BOOST_PP_FOR_681_I(s, p, o, m) +# define BOOST_PP_FOR_682(s, p, o, m) BOOST_PP_FOR_682_I(s, p, o, m) +# define BOOST_PP_FOR_683(s, p, o, m) BOOST_PP_FOR_683_I(s, p, o, m) +# define BOOST_PP_FOR_684(s, p, o, m) BOOST_PP_FOR_684_I(s, p, o, m) +# define BOOST_PP_FOR_685(s, p, o, m) BOOST_PP_FOR_685_I(s, p, o, m) +# define BOOST_PP_FOR_686(s, p, o, m) BOOST_PP_FOR_686_I(s, p, o, m) +# define BOOST_PP_FOR_687(s, p, o, m) BOOST_PP_FOR_687_I(s, p, o, m) +# define BOOST_PP_FOR_688(s, p, o, m) BOOST_PP_FOR_688_I(s, p, o, m) +# define BOOST_PP_FOR_689(s, p, o, m) BOOST_PP_FOR_689_I(s, p, o, m) +# define BOOST_PP_FOR_690(s, p, o, m) BOOST_PP_FOR_690_I(s, p, o, m) +# define BOOST_PP_FOR_691(s, p, o, m) BOOST_PP_FOR_691_I(s, p, o, m) +# define BOOST_PP_FOR_692(s, p, o, m) BOOST_PP_FOR_692_I(s, p, o, m) +# define BOOST_PP_FOR_693(s, p, o, m) BOOST_PP_FOR_693_I(s, p, o, m) +# define BOOST_PP_FOR_694(s, p, o, m) BOOST_PP_FOR_694_I(s, p, o, m) +# define BOOST_PP_FOR_695(s, p, o, m) BOOST_PP_FOR_695_I(s, p, o, m) +# define BOOST_PP_FOR_696(s, p, o, m) BOOST_PP_FOR_696_I(s, p, o, m) +# define BOOST_PP_FOR_697(s, p, o, m) BOOST_PP_FOR_697_I(s, p, o, m) +# define BOOST_PP_FOR_698(s, p, o, m) BOOST_PP_FOR_698_I(s, p, o, m) +# define BOOST_PP_FOR_699(s, p, o, m) BOOST_PP_FOR_699_I(s, p, o, m) +# define BOOST_PP_FOR_700(s, p, o, m) BOOST_PP_FOR_700_I(s, p, o, m) +# define BOOST_PP_FOR_701(s, p, o, m) BOOST_PP_FOR_701_I(s, p, o, m) +# define BOOST_PP_FOR_702(s, p, o, m) BOOST_PP_FOR_702_I(s, p, o, m) +# define BOOST_PP_FOR_703(s, p, o, m) BOOST_PP_FOR_703_I(s, p, o, m) +# define BOOST_PP_FOR_704(s, p, o, m) BOOST_PP_FOR_704_I(s, p, o, m) +# define BOOST_PP_FOR_705(s, p, o, m) BOOST_PP_FOR_705_I(s, p, o, m) +# define BOOST_PP_FOR_706(s, p, o, m) BOOST_PP_FOR_706_I(s, p, o, m) +# define BOOST_PP_FOR_707(s, p, o, m) BOOST_PP_FOR_707_I(s, p, o, m) +# define BOOST_PP_FOR_708(s, p, o, m) BOOST_PP_FOR_708_I(s, p, o, m) +# define BOOST_PP_FOR_709(s, p, o, m) BOOST_PP_FOR_709_I(s, p, o, m) +# define BOOST_PP_FOR_710(s, p, o, m) BOOST_PP_FOR_710_I(s, p, o, m) +# define BOOST_PP_FOR_711(s, p, o, m) BOOST_PP_FOR_711_I(s, p, o, m) +# define BOOST_PP_FOR_712(s, p, o, m) BOOST_PP_FOR_712_I(s, p, o, m) +# define BOOST_PP_FOR_713(s, p, o, m) BOOST_PP_FOR_713_I(s, p, o, m) +# define BOOST_PP_FOR_714(s, p, o, m) BOOST_PP_FOR_714_I(s, p, o, m) +# define BOOST_PP_FOR_715(s, p, o, m) BOOST_PP_FOR_715_I(s, p, o, m) +# define BOOST_PP_FOR_716(s, p, o, m) BOOST_PP_FOR_716_I(s, p, o, m) +# define BOOST_PP_FOR_717(s, p, o, m) BOOST_PP_FOR_717_I(s, p, o, m) +# define BOOST_PP_FOR_718(s, p, o, m) BOOST_PP_FOR_718_I(s, p, o, m) +# define BOOST_PP_FOR_719(s, p, o, m) BOOST_PP_FOR_719_I(s, p, o, m) +# define BOOST_PP_FOR_720(s, p, o, m) BOOST_PP_FOR_720_I(s, p, o, m) +# define BOOST_PP_FOR_721(s, p, o, m) BOOST_PP_FOR_721_I(s, p, o, m) +# define BOOST_PP_FOR_722(s, p, o, m) BOOST_PP_FOR_722_I(s, p, o, m) +# define BOOST_PP_FOR_723(s, p, o, m) BOOST_PP_FOR_723_I(s, p, o, m) +# define BOOST_PP_FOR_724(s, p, o, m) BOOST_PP_FOR_724_I(s, p, o, m) +# define BOOST_PP_FOR_725(s, p, o, m) BOOST_PP_FOR_725_I(s, p, o, m) +# define BOOST_PP_FOR_726(s, p, o, m) BOOST_PP_FOR_726_I(s, p, o, m) +# define BOOST_PP_FOR_727(s, p, o, m) BOOST_PP_FOR_727_I(s, p, o, m) +# define BOOST_PP_FOR_728(s, p, o, m) BOOST_PP_FOR_728_I(s, p, o, m) +# define BOOST_PP_FOR_729(s, p, o, m) BOOST_PP_FOR_729_I(s, p, o, m) +# define BOOST_PP_FOR_730(s, p, o, m) BOOST_PP_FOR_730_I(s, p, o, m) +# define BOOST_PP_FOR_731(s, p, o, m) BOOST_PP_FOR_731_I(s, p, o, m) +# define BOOST_PP_FOR_732(s, p, o, m) BOOST_PP_FOR_732_I(s, p, o, m) +# define BOOST_PP_FOR_733(s, p, o, m) BOOST_PP_FOR_733_I(s, p, o, m) +# define BOOST_PP_FOR_734(s, p, o, m) BOOST_PP_FOR_734_I(s, p, o, m) +# define BOOST_PP_FOR_735(s, p, o, m) BOOST_PP_FOR_735_I(s, p, o, m) +# define BOOST_PP_FOR_736(s, p, o, m) BOOST_PP_FOR_736_I(s, p, o, m) +# define BOOST_PP_FOR_737(s, p, o, m) BOOST_PP_FOR_737_I(s, p, o, m) +# define BOOST_PP_FOR_738(s, p, o, m) BOOST_PP_FOR_738_I(s, p, o, m) +# define BOOST_PP_FOR_739(s, p, o, m) BOOST_PP_FOR_739_I(s, p, o, m) +# define BOOST_PP_FOR_740(s, p, o, m) BOOST_PP_FOR_740_I(s, p, o, m) +# define BOOST_PP_FOR_741(s, p, o, m) BOOST_PP_FOR_741_I(s, p, o, m) +# define BOOST_PP_FOR_742(s, p, o, m) BOOST_PP_FOR_742_I(s, p, o, m) +# define BOOST_PP_FOR_743(s, p, o, m) BOOST_PP_FOR_743_I(s, p, o, m) +# define BOOST_PP_FOR_744(s, p, o, m) BOOST_PP_FOR_744_I(s, p, o, m) +# define BOOST_PP_FOR_745(s, p, o, m) BOOST_PP_FOR_745_I(s, p, o, m) +# define BOOST_PP_FOR_746(s, p, o, m) BOOST_PP_FOR_746_I(s, p, o, m) +# define BOOST_PP_FOR_747(s, p, o, m) BOOST_PP_FOR_747_I(s, p, o, m) +# define BOOST_PP_FOR_748(s, p, o, m) BOOST_PP_FOR_748_I(s, p, o, m) +# define BOOST_PP_FOR_749(s, p, o, m) BOOST_PP_FOR_749_I(s, p, o, m) +# define BOOST_PP_FOR_750(s, p, o, m) BOOST_PP_FOR_750_I(s, p, o, m) +# define BOOST_PP_FOR_751(s, p, o, m) BOOST_PP_FOR_751_I(s, p, o, m) +# define BOOST_PP_FOR_752(s, p, o, m) BOOST_PP_FOR_752_I(s, p, o, m) +# define BOOST_PP_FOR_753(s, p, o, m) BOOST_PP_FOR_753_I(s, p, o, m) +# define BOOST_PP_FOR_754(s, p, o, m) BOOST_PP_FOR_754_I(s, p, o, m) +# define BOOST_PP_FOR_755(s, p, o, m) BOOST_PP_FOR_755_I(s, p, o, m) +# define BOOST_PP_FOR_756(s, p, o, m) BOOST_PP_FOR_756_I(s, p, o, m) +# define BOOST_PP_FOR_757(s, p, o, m) BOOST_PP_FOR_757_I(s, p, o, m) +# define BOOST_PP_FOR_758(s, p, o, m) BOOST_PP_FOR_758_I(s, p, o, m) +# define BOOST_PP_FOR_759(s, p, o, m) BOOST_PP_FOR_759_I(s, p, o, m) +# define BOOST_PP_FOR_760(s, p, o, m) BOOST_PP_FOR_760_I(s, p, o, m) +# define BOOST_PP_FOR_761(s, p, o, m) BOOST_PP_FOR_761_I(s, p, o, m) +# define BOOST_PP_FOR_762(s, p, o, m) BOOST_PP_FOR_762_I(s, p, o, m) +# define BOOST_PP_FOR_763(s, p, o, m) BOOST_PP_FOR_763_I(s, p, o, m) +# define BOOST_PP_FOR_764(s, p, o, m) BOOST_PP_FOR_764_I(s, p, o, m) +# define BOOST_PP_FOR_765(s, p, o, m) BOOST_PP_FOR_765_I(s, p, o, m) +# define BOOST_PP_FOR_766(s, p, o, m) BOOST_PP_FOR_766_I(s, p, o, m) +# define BOOST_PP_FOR_767(s, p, o, m) BOOST_PP_FOR_767_I(s, p, o, m) +# define BOOST_PP_FOR_768(s, p, o, m) BOOST_PP_FOR_768_I(s, p, o, m) +# define BOOST_PP_FOR_769(s, p, o, m) BOOST_PP_FOR_769_I(s, p, o, m) +# define BOOST_PP_FOR_770(s, p, o, m) BOOST_PP_FOR_770_I(s, p, o, m) +# define BOOST_PP_FOR_771(s, p, o, m) BOOST_PP_FOR_771_I(s, p, o, m) +# define BOOST_PP_FOR_772(s, p, o, m) BOOST_PP_FOR_772_I(s, p, o, m) +# define BOOST_PP_FOR_773(s, p, o, m) BOOST_PP_FOR_773_I(s, p, o, m) +# define BOOST_PP_FOR_774(s, p, o, m) BOOST_PP_FOR_774_I(s, p, o, m) +# define BOOST_PP_FOR_775(s, p, o, m) BOOST_PP_FOR_775_I(s, p, o, m) +# define BOOST_PP_FOR_776(s, p, o, m) BOOST_PP_FOR_776_I(s, p, o, m) +# define BOOST_PP_FOR_777(s, p, o, m) BOOST_PP_FOR_777_I(s, p, o, m) +# define BOOST_PP_FOR_778(s, p, o, m) BOOST_PP_FOR_778_I(s, p, o, m) +# define BOOST_PP_FOR_779(s, p, o, m) BOOST_PP_FOR_779_I(s, p, o, m) +# define BOOST_PP_FOR_780(s, p, o, m) BOOST_PP_FOR_780_I(s, p, o, m) +# define BOOST_PP_FOR_781(s, p, o, m) BOOST_PP_FOR_781_I(s, p, o, m) +# define BOOST_PP_FOR_782(s, p, o, m) BOOST_PP_FOR_782_I(s, p, o, m) +# define BOOST_PP_FOR_783(s, p, o, m) BOOST_PP_FOR_783_I(s, p, o, m) +# define BOOST_PP_FOR_784(s, p, o, m) BOOST_PP_FOR_784_I(s, p, o, m) +# define BOOST_PP_FOR_785(s, p, o, m) BOOST_PP_FOR_785_I(s, p, o, m) +# define BOOST_PP_FOR_786(s, p, o, m) BOOST_PP_FOR_786_I(s, p, o, m) +# define BOOST_PP_FOR_787(s, p, o, m) BOOST_PP_FOR_787_I(s, p, o, m) +# define BOOST_PP_FOR_788(s, p, o, m) BOOST_PP_FOR_788_I(s, p, o, m) +# define BOOST_PP_FOR_789(s, p, o, m) BOOST_PP_FOR_789_I(s, p, o, m) +# define BOOST_PP_FOR_790(s, p, o, m) BOOST_PP_FOR_790_I(s, p, o, m) +# define BOOST_PP_FOR_791(s, p, o, m) BOOST_PP_FOR_791_I(s, p, o, m) +# define BOOST_PP_FOR_792(s, p, o, m) BOOST_PP_FOR_792_I(s, p, o, m) +# define BOOST_PP_FOR_793(s, p, o, m) BOOST_PP_FOR_793_I(s, p, o, m) +# define BOOST_PP_FOR_794(s, p, o, m) BOOST_PP_FOR_794_I(s, p, o, m) +# define BOOST_PP_FOR_795(s, p, o, m) BOOST_PP_FOR_795_I(s, p, o, m) +# define BOOST_PP_FOR_796(s, p, o, m) BOOST_PP_FOR_796_I(s, p, o, m) +# define BOOST_PP_FOR_797(s, p, o, m) BOOST_PP_FOR_797_I(s, p, o, m) +# define BOOST_PP_FOR_798(s, p, o, m) BOOST_PP_FOR_798_I(s, p, o, m) +# define BOOST_PP_FOR_799(s, p, o, m) BOOST_PP_FOR_799_I(s, p, o, m) +# define BOOST_PP_FOR_800(s, p, o, m) BOOST_PP_FOR_800_I(s, p, o, m) +# define BOOST_PP_FOR_801(s, p, o, m) BOOST_PP_FOR_801_I(s, p, o, m) +# define BOOST_PP_FOR_802(s, p, o, m) BOOST_PP_FOR_802_I(s, p, o, m) +# define BOOST_PP_FOR_803(s, p, o, m) BOOST_PP_FOR_803_I(s, p, o, m) +# define BOOST_PP_FOR_804(s, p, o, m) BOOST_PP_FOR_804_I(s, p, o, m) +# define BOOST_PP_FOR_805(s, p, o, m) BOOST_PP_FOR_805_I(s, p, o, m) +# define BOOST_PP_FOR_806(s, p, o, m) BOOST_PP_FOR_806_I(s, p, o, m) +# define BOOST_PP_FOR_807(s, p, o, m) BOOST_PP_FOR_807_I(s, p, o, m) +# define BOOST_PP_FOR_808(s, p, o, m) BOOST_PP_FOR_808_I(s, p, o, m) +# define BOOST_PP_FOR_809(s, p, o, m) BOOST_PP_FOR_809_I(s, p, o, m) +# define BOOST_PP_FOR_810(s, p, o, m) BOOST_PP_FOR_810_I(s, p, o, m) +# define BOOST_PP_FOR_811(s, p, o, m) BOOST_PP_FOR_811_I(s, p, o, m) +# define BOOST_PP_FOR_812(s, p, o, m) BOOST_PP_FOR_812_I(s, p, o, m) +# define BOOST_PP_FOR_813(s, p, o, m) BOOST_PP_FOR_813_I(s, p, o, m) +# define BOOST_PP_FOR_814(s, p, o, m) BOOST_PP_FOR_814_I(s, p, o, m) +# define BOOST_PP_FOR_815(s, p, o, m) BOOST_PP_FOR_815_I(s, p, o, m) +# define BOOST_PP_FOR_816(s, p, o, m) BOOST_PP_FOR_816_I(s, p, o, m) +# define BOOST_PP_FOR_817(s, p, o, m) BOOST_PP_FOR_817_I(s, p, o, m) +# define BOOST_PP_FOR_818(s, p, o, m) BOOST_PP_FOR_818_I(s, p, o, m) +# define BOOST_PP_FOR_819(s, p, o, m) BOOST_PP_FOR_819_I(s, p, o, m) +# define BOOST_PP_FOR_820(s, p, o, m) BOOST_PP_FOR_820_I(s, p, o, m) +# define BOOST_PP_FOR_821(s, p, o, m) BOOST_PP_FOR_821_I(s, p, o, m) +# define BOOST_PP_FOR_822(s, p, o, m) BOOST_PP_FOR_822_I(s, p, o, m) +# define BOOST_PP_FOR_823(s, p, o, m) BOOST_PP_FOR_823_I(s, p, o, m) +# define BOOST_PP_FOR_824(s, p, o, m) BOOST_PP_FOR_824_I(s, p, o, m) +# define BOOST_PP_FOR_825(s, p, o, m) BOOST_PP_FOR_825_I(s, p, o, m) +# define BOOST_PP_FOR_826(s, p, o, m) BOOST_PP_FOR_826_I(s, p, o, m) +# define BOOST_PP_FOR_827(s, p, o, m) BOOST_PP_FOR_827_I(s, p, o, m) +# define BOOST_PP_FOR_828(s, p, o, m) BOOST_PP_FOR_828_I(s, p, o, m) +# define BOOST_PP_FOR_829(s, p, o, m) BOOST_PP_FOR_829_I(s, p, o, m) +# define BOOST_PP_FOR_830(s, p, o, m) BOOST_PP_FOR_830_I(s, p, o, m) +# define BOOST_PP_FOR_831(s, p, o, m) BOOST_PP_FOR_831_I(s, p, o, m) +# define BOOST_PP_FOR_832(s, p, o, m) BOOST_PP_FOR_832_I(s, p, o, m) +# define BOOST_PP_FOR_833(s, p, o, m) BOOST_PP_FOR_833_I(s, p, o, m) +# define BOOST_PP_FOR_834(s, p, o, m) BOOST_PP_FOR_834_I(s, p, o, m) +# define BOOST_PP_FOR_835(s, p, o, m) BOOST_PP_FOR_835_I(s, p, o, m) +# define BOOST_PP_FOR_836(s, p, o, m) BOOST_PP_FOR_836_I(s, p, o, m) +# define BOOST_PP_FOR_837(s, p, o, m) BOOST_PP_FOR_837_I(s, p, o, m) +# define BOOST_PP_FOR_838(s, p, o, m) BOOST_PP_FOR_838_I(s, p, o, m) +# define BOOST_PP_FOR_839(s, p, o, m) BOOST_PP_FOR_839_I(s, p, o, m) +# define BOOST_PP_FOR_840(s, p, o, m) BOOST_PP_FOR_840_I(s, p, o, m) +# define BOOST_PP_FOR_841(s, p, o, m) BOOST_PP_FOR_841_I(s, p, o, m) +# define BOOST_PP_FOR_842(s, p, o, m) BOOST_PP_FOR_842_I(s, p, o, m) +# define BOOST_PP_FOR_843(s, p, o, m) BOOST_PP_FOR_843_I(s, p, o, m) +# define BOOST_PP_FOR_844(s, p, o, m) BOOST_PP_FOR_844_I(s, p, o, m) +# define BOOST_PP_FOR_845(s, p, o, m) BOOST_PP_FOR_845_I(s, p, o, m) +# define BOOST_PP_FOR_846(s, p, o, m) BOOST_PP_FOR_846_I(s, p, o, m) +# define BOOST_PP_FOR_847(s, p, o, m) BOOST_PP_FOR_847_I(s, p, o, m) +# define BOOST_PP_FOR_848(s, p, o, m) BOOST_PP_FOR_848_I(s, p, o, m) +# define BOOST_PP_FOR_849(s, p, o, m) BOOST_PP_FOR_849_I(s, p, o, m) +# define BOOST_PP_FOR_850(s, p, o, m) BOOST_PP_FOR_850_I(s, p, o, m) +# define BOOST_PP_FOR_851(s, p, o, m) BOOST_PP_FOR_851_I(s, p, o, m) +# define BOOST_PP_FOR_852(s, p, o, m) BOOST_PP_FOR_852_I(s, p, o, m) +# define BOOST_PP_FOR_853(s, p, o, m) BOOST_PP_FOR_853_I(s, p, o, m) +# define BOOST_PP_FOR_854(s, p, o, m) BOOST_PP_FOR_854_I(s, p, o, m) +# define BOOST_PP_FOR_855(s, p, o, m) BOOST_PP_FOR_855_I(s, p, o, m) +# define BOOST_PP_FOR_856(s, p, o, m) BOOST_PP_FOR_856_I(s, p, o, m) +# define BOOST_PP_FOR_857(s, p, o, m) BOOST_PP_FOR_857_I(s, p, o, m) +# define BOOST_PP_FOR_858(s, p, o, m) BOOST_PP_FOR_858_I(s, p, o, m) +# define BOOST_PP_FOR_859(s, p, o, m) BOOST_PP_FOR_859_I(s, p, o, m) +# define BOOST_PP_FOR_860(s, p, o, m) BOOST_PP_FOR_860_I(s, p, o, m) +# define BOOST_PP_FOR_861(s, p, o, m) BOOST_PP_FOR_861_I(s, p, o, m) +# define BOOST_PP_FOR_862(s, p, o, m) BOOST_PP_FOR_862_I(s, p, o, m) +# define BOOST_PP_FOR_863(s, p, o, m) BOOST_PP_FOR_863_I(s, p, o, m) +# define BOOST_PP_FOR_864(s, p, o, m) BOOST_PP_FOR_864_I(s, p, o, m) +# define BOOST_PP_FOR_865(s, p, o, m) BOOST_PP_FOR_865_I(s, p, o, m) +# define BOOST_PP_FOR_866(s, p, o, m) BOOST_PP_FOR_866_I(s, p, o, m) +# define BOOST_PP_FOR_867(s, p, o, m) BOOST_PP_FOR_867_I(s, p, o, m) +# define BOOST_PP_FOR_868(s, p, o, m) BOOST_PP_FOR_868_I(s, p, o, m) +# define BOOST_PP_FOR_869(s, p, o, m) BOOST_PP_FOR_869_I(s, p, o, m) +# define BOOST_PP_FOR_870(s, p, o, m) BOOST_PP_FOR_870_I(s, p, o, m) +# define BOOST_PP_FOR_871(s, p, o, m) BOOST_PP_FOR_871_I(s, p, o, m) +# define BOOST_PP_FOR_872(s, p, o, m) BOOST_PP_FOR_872_I(s, p, o, m) +# define BOOST_PP_FOR_873(s, p, o, m) BOOST_PP_FOR_873_I(s, p, o, m) +# define BOOST_PP_FOR_874(s, p, o, m) BOOST_PP_FOR_874_I(s, p, o, m) +# define BOOST_PP_FOR_875(s, p, o, m) BOOST_PP_FOR_875_I(s, p, o, m) +# define BOOST_PP_FOR_876(s, p, o, m) BOOST_PP_FOR_876_I(s, p, o, m) +# define BOOST_PP_FOR_877(s, p, o, m) BOOST_PP_FOR_877_I(s, p, o, m) +# define BOOST_PP_FOR_878(s, p, o, m) BOOST_PP_FOR_878_I(s, p, o, m) +# define BOOST_PP_FOR_879(s, p, o, m) BOOST_PP_FOR_879_I(s, p, o, m) +# define BOOST_PP_FOR_880(s, p, o, m) BOOST_PP_FOR_880_I(s, p, o, m) +# define BOOST_PP_FOR_881(s, p, o, m) BOOST_PP_FOR_881_I(s, p, o, m) +# define BOOST_PP_FOR_882(s, p, o, m) BOOST_PP_FOR_882_I(s, p, o, m) +# define BOOST_PP_FOR_883(s, p, o, m) BOOST_PP_FOR_883_I(s, p, o, m) +# define BOOST_PP_FOR_884(s, p, o, m) BOOST_PP_FOR_884_I(s, p, o, m) +# define BOOST_PP_FOR_885(s, p, o, m) BOOST_PP_FOR_885_I(s, p, o, m) +# define BOOST_PP_FOR_886(s, p, o, m) BOOST_PP_FOR_886_I(s, p, o, m) +# define BOOST_PP_FOR_887(s, p, o, m) BOOST_PP_FOR_887_I(s, p, o, m) +# define BOOST_PP_FOR_888(s, p, o, m) BOOST_PP_FOR_888_I(s, p, o, m) +# define BOOST_PP_FOR_889(s, p, o, m) BOOST_PP_FOR_889_I(s, p, o, m) +# define BOOST_PP_FOR_890(s, p, o, m) BOOST_PP_FOR_890_I(s, p, o, m) +# define BOOST_PP_FOR_891(s, p, o, m) BOOST_PP_FOR_891_I(s, p, o, m) +# define BOOST_PP_FOR_892(s, p, o, m) BOOST_PP_FOR_892_I(s, p, o, m) +# define BOOST_PP_FOR_893(s, p, o, m) BOOST_PP_FOR_893_I(s, p, o, m) +# define BOOST_PP_FOR_894(s, p, o, m) BOOST_PP_FOR_894_I(s, p, o, m) +# define BOOST_PP_FOR_895(s, p, o, m) BOOST_PP_FOR_895_I(s, p, o, m) +# define BOOST_PP_FOR_896(s, p, o, m) BOOST_PP_FOR_896_I(s, p, o, m) +# define BOOST_PP_FOR_897(s, p, o, m) BOOST_PP_FOR_897_I(s, p, o, m) +# define BOOST_PP_FOR_898(s, p, o, m) BOOST_PP_FOR_898_I(s, p, o, m) +# define BOOST_PP_FOR_899(s, p, o, m) BOOST_PP_FOR_899_I(s, p, o, m) +# define BOOST_PP_FOR_900(s, p, o, m) BOOST_PP_FOR_900_I(s, p, o, m) +# define BOOST_PP_FOR_901(s, p, o, m) BOOST_PP_FOR_901_I(s, p, o, m) +# define BOOST_PP_FOR_902(s, p, o, m) BOOST_PP_FOR_902_I(s, p, o, m) +# define BOOST_PP_FOR_903(s, p, o, m) BOOST_PP_FOR_903_I(s, p, o, m) +# define BOOST_PP_FOR_904(s, p, o, m) BOOST_PP_FOR_904_I(s, p, o, m) +# define BOOST_PP_FOR_905(s, p, o, m) BOOST_PP_FOR_905_I(s, p, o, m) +# define BOOST_PP_FOR_906(s, p, o, m) BOOST_PP_FOR_906_I(s, p, o, m) +# define BOOST_PP_FOR_907(s, p, o, m) BOOST_PP_FOR_907_I(s, p, o, m) +# define BOOST_PP_FOR_908(s, p, o, m) BOOST_PP_FOR_908_I(s, p, o, m) +# define BOOST_PP_FOR_909(s, p, o, m) BOOST_PP_FOR_909_I(s, p, o, m) +# define BOOST_PP_FOR_910(s, p, o, m) BOOST_PP_FOR_910_I(s, p, o, m) +# define BOOST_PP_FOR_911(s, p, o, m) BOOST_PP_FOR_911_I(s, p, o, m) +# define BOOST_PP_FOR_912(s, p, o, m) BOOST_PP_FOR_912_I(s, p, o, m) +# define BOOST_PP_FOR_913(s, p, o, m) BOOST_PP_FOR_913_I(s, p, o, m) +# define BOOST_PP_FOR_914(s, p, o, m) BOOST_PP_FOR_914_I(s, p, o, m) +# define BOOST_PP_FOR_915(s, p, o, m) BOOST_PP_FOR_915_I(s, p, o, m) +# define BOOST_PP_FOR_916(s, p, o, m) BOOST_PP_FOR_916_I(s, p, o, m) +# define BOOST_PP_FOR_917(s, p, o, m) BOOST_PP_FOR_917_I(s, p, o, m) +# define BOOST_PP_FOR_918(s, p, o, m) BOOST_PP_FOR_918_I(s, p, o, m) +# define BOOST_PP_FOR_919(s, p, o, m) BOOST_PP_FOR_919_I(s, p, o, m) +# define BOOST_PP_FOR_920(s, p, o, m) BOOST_PP_FOR_920_I(s, p, o, m) +# define BOOST_PP_FOR_921(s, p, o, m) BOOST_PP_FOR_921_I(s, p, o, m) +# define BOOST_PP_FOR_922(s, p, o, m) BOOST_PP_FOR_922_I(s, p, o, m) +# define BOOST_PP_FOR_923(s, p, o, m) BOOST_PP_FOR_923_I(s, p, o, m) +# define BOOST_PP_FOR_924(s, p, o, m) BOOST_PP_FOR_924_I(s, p, o, m) +# define BOOST_PP_FOR_925(s, p, o, m) BOOST_PP_FOR_925_I(s, p, o, m) +# define BOOST_PP_FOR_926(s, p, o, m) BOOST_PP_FOR_926_I(s, p, o, m) +# define BOOST_PP_FOR_927(s, p, o, m) BOOST_PP_FOR_927_I(s, p, o, m) +# define BOOST_PP_FOR_928(s, p, o, m) BOOST_PP_FOR_928_I(s, p, o, m) +# define BOOST_PP_FOR_929(s, p, o, m) BOOST_PP_FOR_929_I(s, p, o, m) +# define BOOST_PP_FOR_930(s, p, o, m) BOOST_PP_FOR_930_I(s, p, o, m) +# define BOOST_PP_FOR_931(s, p, o, m) BOOST_PP_FOR_931_I(s, p, o, m) +# define BOOST_PP_FOR_932(s, p, o, m) BOOST_PP_FOR_932_I(s, p, o, m) +# define BOOST_PP_FOR_933(s, p, o, m) BOOST_PP_FOR_933_I(s, p, o, m) +# define BOOST_PP_FOR_934(s, p, o, m) BOOST_PP_FOR_934_I(s, p, o, m) +# define BOOST_PP_FOR_935(s, p, o, m) BOOST_PP_FOR_935_I(s, p, o, m) +# define BOOST_PP_FOR_936(s, p, o, m) BOOST_PP_FOR_936_I(s, p, o, m) +# define BOOST_PP_FOR_937(s, p, o, m) BOOST_PP_FOR_937_I(s, p, o, m) +# define BOOST_PP_FOR_938(s, p, o, m) BOOST_PP_FOR_938_I(s, p, o, m) +# define BOOST_PP_FOR_939(s, p, o, m) BOOST_PP_FOR_939_I(s, p, o, m) +# define BOOST_PP_FOR_940(s, p, o, m) BOOST_PP_FOR_940_I(s, p, o, m) +# define BOOST_PP_FOR_941(s, p, o, m) BOOST_PP_FOR_941_I(s, p, o, m) +# define BOOST_PP_FOR_942(s, p, o, m) BOOST_PP_FOR_942_I(s, p, o, m) +# define BOOST_PP_FOR_943(s, p, o, m) BOOST_PP_FOR_943_I(s, p, o, m) +# define BOOST_PP_FOR_944(s, p, o, m) BOOST_PP_FOR_944_I(s, p, o, m) +# define BOOST_PP_FOR_945(s, p, o, m) BOOST_PP_FOR_945_I(s, p, o, m) +# define BOOST_PP_FOR_946(s, p, o, m) BOOST_PP_FOR_946_I(s, p, o, m) +# define BOOST_PP_FOR_947(s, p, o, m) BOOST_PP_FOR_947_I(s, p, o, m) +# define BOOST_PP_FOR_948(s, p, o, m) BOOST_PP_FOR_948_I(s, p, o, m) +# define BOOST_PP_FOR_949(s, p, o, m) BOOST_PP_FOR_949_I(s, p, o, m) +# define BOOST_PP_FOR_950(s, p, o, m) BOOST_PP_FOR_950_I(s, p, o, m) +# define BOOST_PP_FOR_951(s, p, o, m) BOOST_PP_FOR_951_I(s, p, o, m) +# define BOOST_PP_FOR_952(s, p, o, m) BOOST_PP_FOR_952_I(s, p, o, m) +# define BOOST_PP_FOR_953(s, p, o, m) BOOST_PP_FOR_953_I(s, p, o, m) +# define BOOST_PP_FOR_954(s, p, o, m) BOOST_PP_FOR_954_I(s, p, o, m) +# define BOOST_PP_FOR_955(s, p, o, m) BOOST_PP_FOR_955_I(s, p, o, m) +# define BOOST_PP_FOR_956(s, p, o, m) BOOST_PP_FOR_956_I(s, p, o, m) +# define BOOST_PP_FOR_957(s, p, o, m) BOOST_PP_FOR_957_I(s, p, o, m) +# define BOOST_PP_FOR_958(s, p, o, m) BOOST_PP_FOR_958_I(s, p, o, m) +# define BOOST_PP_FOR_959(s, p, o, m) BOOST_PP_FOR_959_I(s, p, o, m) +# define BOOST_PP_FOR_960(s, p, o, m) BOOST_PP_FOR_960_I(s, p, o, m) +# define BOOST_PP_FOR_961(s, p, o, m) BOOST_PP_FOR_961_I(s, p, o, m) +# define BOOST_PP_FOR_962(s, p, o, m) BOOST_PP_FOR_962_I(s, p, o, m) +# define BOOST_PP_FOR_963(s, p, o, m) BOOST_PP_FOR_963_I(s, p, o, m) +# define BOOST_PP_FOR_964(s, p, o, m) BOOST_PP_FOR_964_I(s, p, o, m) +# define BOOST_PP_FOR_965(s, p, o, m) BOOST_PP_FOR_965_I(s, p, o, m) +# define BOOST_PP_FOR_966(s, p, o, m) BOOST_PP_FOR_966_I(s, p, o, m) +# define BOOST_PP_FOR_967(s, p, o, m) BOOST_PP_FOR_967_I(s, p, o, m) +# define BOOST_PP_FOR_968(s, p, o, m) BOOST_PP_FOR_968_I(s, p, o, m) +# define BOOST_PP_FOR_969(s, p, o, m) BOOST_PP_FOR_969_I(s, p, o, m) +# define BOOST_PP_FOR_970(s, p, o, m) BOOST_PP_FOR_970_I(s, p, o, m) +# define BOOST_PP_FOR_971(s, p, o, m) BOOST_PP_FOR_971_I(s, p, o, m) +# define BOOST_PP_FOR_972(s, p, o, m) BOOST_PP_FOR_972_I(s, p, o, m) +# define BOOST_PP_FOR_973(s, p, o, m) BOOST_PP_FOR_973_I(s, p, o, m) +# define BOOST_PP_FOR_974(s, p, o, m) BOOST_PP_FOR_974_I(s, p, o, m) +# define BOOST_PP_FOR_975(s, p, o, m) BOOST_PP_FOR_975_I(s, p, o, m) +# define BOOST_PP_FOR_976(s, p, o, m) BOOST_PP_FOR_976_I(s, p, o, m) +# define BOOST_PP_FOR_977(s, p, o, m) BOOST_PP_FOR_977_I(s, p, o, m) +# define BOOST_PP_FOR_978(s, p, o, m) BOOST_PP_FOR_978_I(s, p, o, m) +# define BOOST_PP_FOR_979(s, p, o, m) BOOST_PP_FOR_979_I(s, p, o, m) +# define BOOST_PP_FOR_980(s, p, o, m) BOOST_PP_FOR_980_I(s, p, o, m) +# define BOOST_PP_FOR_981(s, p, o, m) BOOST_PP_FOR_981_I(s, p, o, m) +# define BOOST_PP_FOR_982(s, p, o, m) BOOST_PP_FOR_982_I(s, p, o, m) +# define BOOST_PP_FOR_983(s, p, o, m) BOOST_PP_FOR_983_I(s, p, o, m) +# define BOOST_PP_FOR_984(s, p, o, m) BOOST_PP_FOR_984_I(s, p, o, m) +# define BOOST_PP_FOR_985(s, p, o, m) BOOST_PP_FOR_985_I(s, p, o, m) +# define BOOST_PP_FOR_986(s, p, o, m) BOOST_PP_FOR_986_I(s, p, o, m) +# define BOOST_PP_FOR_987(s, p, o, m) BOOST_PP_FOR_987_I(s, p, o, m) +# define BOOST_PP_FOR_988(s, p, o, m) BOOST_PP_FOR_988_I(s, p, o, m) +# define BOOST_PP_FOR_989(s, p, o, m) BOOST_PP_FOR_989_I(s, p, o, m) +# define BOOST_PP_FOR_990(s, p, o, m) BOOST_PP_FOR_990_I(s, p, o, m) +# define BOOST_PP_FOR_991(s, p, o, m) BOOST_PP_FOR_991_I(s, p, o, m) +# define BOOST_PP_FOR_992(s, p, o, m) BOOST_PP_FOR_992_I(s, p, o, m) +# define BOOST_PP_FOR_993(s, p, o, m) BOOST_PP_FOR_993_I(s, p, o, m) +# define BOOST_PP_FOR_994(s, p, o, m) BOOST_PP_FOR_994_I(s, p, o, m) +# define BOOST_PP_FOR_995(s, p, o, m) BOOST_PP_FOR_995_I(s, p, o, m) +# define BOOST_PP_FOR_996(s, p, o, m) BOOST_PP_FOR_996_I(s, p, o, m) +# define BOOST_PP_FOR_997(s, p, o, m) BOOST_PP_FOR_997_I(s, p, o, m) +# define BOOST_PP_FOR_998(s, p, o, m) BOOST_PP_FOR_998_I(s, p, o, m) +# define BOOST_PP_FOR_999(s, p, o, m) BOOST_PP_FOR_999_I(s, p, o, m) +# define BOOST_PP_FOR_1000(s, p, o, m) BOOST_PP_FOR_1000_I(s, p, o, m) +# define BOOST_PP_FOR_1001(s, p, o, m) BOOST_PP_FOR_1001_I(s, p, o, m) +# define BOOST_PP_FOR_1002(s, p, o, m) BOOST_PP_FOR_1002_I(s, p, o, m) +# define BOOST_PP_FOR_1003(s, p, o, m) BOOST_PP_FOR_1003_I(s, p, o, m) +# define BOOST_PP_FOR_1004(s, p, o, m) BOOST_PP_FOR_1004_I(s, p, o, m) +# define BOOST_PP_FOR_1005(s, p, o, m) BOOST_PP_FOR_1005_I(s, p, o, m) +# define BOOST_PP_FOR_1006(s, p, o, m) BOOST_PP_FOR_1006_I(s, p, o, m) +# define BOOST_PP_FOR_1007(s, p, o, m) BOOST_PP_FOR_1007_I(s, p, o, m) +# define BOOST_PP_FOR_1008(s, p, o, m) BOOST_PP_FOR_1008_I(s, p, o, m) +# define BOOST_PP_FOR_1009(s, p, o, m) BOOST_PP_FOR_1009_I(s, p, o, m) +# define BOOST_PP_FOR_1010(s, p, o, m) BOOST_PP_FOR_1010_I(s, p, o, m) +# define BOOST_PP_FOR_1011(s, p, o, m) BOOST_PP_FOR_1011_I(s, p, o, m) +# define BOOST_PP_FOR_1012(s, p, o, m) BOOST_PP_FOR_1012_I(s, p, o, m) +# define BOOST_PP_FOR_1013(s, p, o, m) BOOST_PP_FOR_1013_I(s, p, o, m) +# define BOOST_PP_FOR_1014(s, p, o, m) BOOST_PP_FOR_1014_I(s, p, o, m) +# define BOOST_PP_FOR_1015(s, p, o, m) BOOST_PP_FOR_1015_I(s, p, o, m) +# define BOOST_PP_FOR_1016(s, p, o, m) BOOST_PP_FOR_1016_I(s, p, o, m) +# define BOOST_PP_FOR_1017(s, p, o, m) BOOST_PP_FOR_1017_I(s, p, o, m) +# define BOOST_PP_FOR_1018(s, p, o, m) BOOST_PP_FOR_1018_I(s, p, o, m) +# define BOOST_PP_FOR_1019(s, p, o, m) BOOST_PP_FOR_1019_I(s, p, o, m) +# define BOOST_PP_FOR_1020(s, p, o, m) BOOST_PP_FOR_1020_I(s, p, o, m) +# define BOOST_PP_FOR_1021(s, p, o, m) BOOST_PP_FOR_1021_I(s, p, o, m) +# define BOOST_PP_FOR_1022(s, p, o, m) BOOST_PP_FOR_1022_I(s, p, o, m) +# define BOOST_PP_FOR_1023(s, p, o, m) BOOST_PP_FOR_1023_I(s, p, o, m) +# define BOOST_PP_FOR_1024(s, p, o, m) BOOST_PP_FOR_1024_I(s, p, o, m) +# +# define BOOST_PP_FOR_513_I(s, p, o, m) BOOST_PP_IF(p(514, s), m, BOOST_PP_TUPLE_EAT_2)(514, s) BOOST_PP_IF(p(514, s), BOOST_PP_FOR_514, BOOST_PP_TUPLE_EAT_4)(o(514, s), p, o, m) +# define BOOST_PP_FOR_514_I(s, p, o, m) BOOST_PP_IF(p(515, s), m, BOOST_PP_TUPLE_EAT_2)(515, s) BOOST_PP_IF(p(515, s), BOOST_PP_FOR_515, BOOST_PP_TUPLE_EAT_4)(o(515, s), p, o, m) +# define BOOST_PP_FOR_515_I(s, p, o, m) BOOST_PP_IF(p(516, s), m, BOOST_PP_TUPLE_EAT_2)(516, s) BOOST_PP_IF(p(516, s), BOOST_PP_FOR_516, BOOST_PP_TUPLE_EAT_4)(o(516, s), p, o, m) +# define BOOST_PP_FOR_516_I(s, p, o, m) BOOST_PP_IF(p(517, s), m, BOOST_PP_TUPLE_EAT_2)(517, s) BOOST_PP_IF(p(517, s), BOOST_PP_FOR_517, BOOST_PP_TUPLE_EAT_4)(o(517, s), p, o, m) +# define BOOST_PP_FOR_517_I(s, p, o, m) BOOST_PP_IF(p(518, s), m, BOOST_PP_TUPLE_EAT_2)(518, s) BOOST_PP_IF(p(518, s), BOOST_PP_FOR_518, BOOST_PP_TUPLE_EAT_4)(o(518, s), p, o, m) +# define BOOST_PP_FOR_518_I(s, p, o, m) BOOST_PP_IF(p(519, s), m, BOOST_PP_TUPLE_EAT_2)(519, s) BOOST_PP_IF(p(519, s), BOOST_PP_FOR_519, BOOST_PP_TUPLE_EAT_4)(o(519, s), p, o, m) +# define BOOST_PP_FOR_519_I(s, p, o, m) BOOST_PP_IF(p(520, s), m, BOOST_PP_TUPLE_EAT_2)(520, s) BOOST_PP_IF(p(520, s), BOOST_PP_FOR_520, BOOST_PP_TUPLE_EAT_4)(o(520, s), p, o, m) +# define BOOST_PP_FOR_520_I(s, p, o, m) BOOST_PP_IF(p(521, s), m, BOOST_PP_TUPLE_EAT_2)(521, s) BOOST_PP_IF(p(521, s), BOOST_PP_FOR_521, BOOST_PP_TUPLE_EAT_4)(o(521, s), p, o, m) +# define BOOST_PP_FOR_521_I(s, p, o, m) BOOST_PP_IF(p(522, s), m, BOOST_PP_TUPLE_EAT_2)(522, s) BOOST_PP_IF(p(522, s), BOOST_PP_FOR_522, BOOST_PP_TUPLE_EAT_4)(o(522, s), p, o, m) +# define BOOST_PP_FOR_522_I(s, p, o, m) BOOST_PP_IF(p(523, s), m, BOOST_PP_TUPLE_EAT_2)(523, s) BOOST_PP_IF(p(523, s), BOOST_PP_FOR_523, BOOST_PP_TUPLE_EAT_4)(o(523, s), p, o, m) +# define BOOST_PP_FOR_523_I(s, p, o, m) BOOST_PP_IF(p(524, s), m, BOOST_PP_TUPLE_EAT_2)(524, s) BOOST_PP_IF(p(524, s), BOOST_PP_FOR_524, BOOST_PP_TUPLE_EAT_4)(o(524, s), p, o, m) +# define BOOST_PP_FOR_524_I(s, p, o, m) BOOST_PP_IF(p(525, s), m, BOOST_PP_TUPLE_EAT_2)(525, s) BOOST_PP_IF(p(525, s), BOOST_PP_FOR_525, BOOST_PP_TUPLE_EAT_4)(o(525, s), p, o, m) +# define BOOST_PP_FOR_525_I(s, p, o, m) BOOST_PP_IF(p(526, s), m, BOOST_PP_TUPLE_EAT_2)(526, s) BOOST_PP_IF(p(526, s), BOOST_PP_FOR_526, BOOST_PP_TUPLE_EAT_4)(o(526, s), p, o, m) +# define BOOST_PP_FOR_526_I(s, p, o, m) BOOST_PP_IF(p(527, s), m, BOOST_PP_TUPLE_EAT_2)(527, s) BOOST_PP_IF(p(527, s), BOOST_PP_FOR_527, BOOST_PP_TUPLE_EAT_4)(o(527, s), p, o, m) +# define BOOST_PP_FOR_527_I(s, p, o, m) BOOST_PP_IF(p(528, s), m, BOOST_PP_TUPLE_EAT_2)(528, s) BOOST_PP_IF(p(528, s), BOOST_PP_FOR_528, BOOST_PP_TUPLE_EAT_4)(o(528, s), p, o, m) +# define BOOST_PP_FOR_528_I(s, p, o, m) BOOST_PP_IF(p(529, s), m, BOOST_PP_TUPLE_EAT_2)(529, s) BOOST_PP_IF(p(529, s), BOOST_PP_FOR_529, BOOST_PP_TUPLE_EAT_4)(o(529, s), p, o, m) +# define BOOST_PP_FOR_529_I(s, p, o, m) BOOST_PP_IF(p(530, s), m, BOOST_PP_TUPLE_EAT_2)(530, s) BOOST_PP_IF(p(530, s), BOOST_PP_FOR_530, BOOST_PP_TUPLE_EAT_4)(o(530, s), p, o, m) +# define BOOST_PP_FOR_530_I(s, p, o, m) BOOST_PP_IF(p(531, s), m, BOOST_PP_TUPLE_EAT_2)(531, s) BOOST_PP_IF(p(531, s), BOOST_PP_FOR_531, BOOST_PP_TUPLE_EAT_4)(o(531, s), p, o, m) +# define BOOST_PP_FOR_531_I(s, p, o, m) BOOST_PP_IF(p(532, s), m, BOOST_PP_TUPLE_EAT_2)(532, s) BOOST_PP_IF(p(532, s), BOOST_PP_FOR_532, BOOST_PP_TUPLE_EAT_4)(o(532, s), p, o, m) +# define BOOST_PP_FOR_532_I(s, p, o, m) BOOST_PP_IF(p(533, s), m, BOOST_PP_TUPLE_EAT_2)(533, s) BOOST_PP_IF(p(533, s), BOOST_PP_FOR_533, BOOST_PP_TUPLE_EAT_4)(o(533, s), p, o, m) +# define BOOST_PP_FOR_533_I(s, p, o, m) BOOST_PP_IF(p(534, s), m, BOOST_PP_TUPLE_EAT_2)(534, s) BOOST_PP_IF(p(534, s), BOOST_PP_FOR_534, BOOST_PP_TUPLE_EAT_4)(o(534, s), p, o, m) +# define BOOST_PP_FOR_534_I(s, p, o, m) BOOST_PP_IF(p(535, s), m, BOOST_PP_TUPLE_EAT_2)(535, s) BOOST_PP_IF(p(535, s), BOOST_PP_FOR_535, BOOST_PP_TUPLE_EAT_4)(o(535, s), p, o, m) +# define BOOST_PP_FOR_535_I(s, p, o, m) BOOST_PP_IF(p(536, s), m, BOOST_PP_TUPLE_EAT_2)(536, s) BOOST_PP_IF(p(536, s), BOOST_PP_FOR_536, BOOST_PP_TUPLE_EAT_4)(o(536, s), p, o, m) +# define BOOST_PP_FOR_536_I(s, p, o, m) BOOST_PP_IF(p(537, s), m, BOOST_PP_TUPLE_EAT_2)(537, s) BOOST_PP_IF(p(537, s), BOOST_PP_FOR_537, BOOST_PP_TUPLE_EAT_4)(o(537, s), p, o, m) +# define BOOST_PP_FOR_537_I(s, p, o, m) BOOST_PP_IF(p(538, s), m, BOOST_PP_TUPLE_EAT_2)(538, s) BOOST_PP_IF(p(538, s), BOOST_PP_FOR_538, BOOST_PP_TUPLE_EAT_4)(o(538, s), p, o, m) +# define BOOST_PP_FOR_538_I(s, p, o, m) BOOST_PP_IF(p(539, s), m, BOOST_PP_TUPLE_EAT_2)(539, s) BOOST_PP_IF(p(539, s), BOOST_PP_FOR_539, BOOST_PP_TUPLE_EAT_4)(o(539, s), p, o, m) +# define BOOST_PP_FOR_539_I(s, p, o, m) BOOST_PP_IF(p(540, s), m, BOOST_PP_TUPLE_EAT_2)(540, s) BOOST_PP_IF(p(540, s), BOOST_PP_FOR_540, BOOST_PP_TUPLE_EAT_4)(o(540, s), p, o, m) +# define BOOST_PP_FOR_540_I(s, p, o, m) BOOST_PP_IF(p(541, s), m, BOOST_PP_TUPLE_EAT_2)(541, s) BOOST_PP_IF(p(541, s), BOOST_PP_FOR_541, BOOST_PP_TUPLE_EAT_4)(o(541, s), p, o, m) +# define BOOST_PP_FOR_541_I(s, p, o, m) BOOST_PP_IF(p(542, s), m, BOOST_PP_TUPLE_EAT_2)(542, s) BOOST_PP_IF(p(542, s), BOOST_PP_FOR_542, BOOST_PP_TUPLE_EAT_4)(o(542, s), p, o, m) +# define BOOST_PP_FOR_542_I(s, p, o, m) BOOST_PP_IF(p(543, s), m, BOOST_PP_TUPLE_EAT_2)(543, s) BOOST_PP_IF(p(543, s), BOOST_PP_FOR_543, BOOST_PP_TUPLE_EAT_4)(o(543, s), p, o, m) +# define BOOST_PP_FOR_543_I(s, p, o, m) BOOST_PP_IF(p(544, s), m, BOOST_PP_TUPLE_EAT_2)(544, s) BOOST_PP_IF(p(544, s), BOOST_PP_FOR_544, BOOST_PP_TUPLE_EAT_4)(o(544, s), p, o, m) +# define BOOST_PP_FOR_544_I(s, p, o, m) BOOST_PP_IF(p(545, s), m, BOOST_PP_TUPLE_EAT_2)(545, s) BOOST_PP_IF(p(545, s), BOOST_PP_FOR_545, BOOST_PP_TUPLE_EAT_4)(o(545, s), p, o, m) +# define BOOST_PP_FOR_545_I(s, p, o, m) BOOST_PP_IF(p(546, s), m, BOOST_PP_TUPLE_EAT_2)(546, s) BOOST_PP_IF(p(546, s), BOOST_PP_FOR_546, BOOST_PP_TUPLE_EAT_4)(o(546, s), p, o, m) +# define BOOST_PP_FOR_546_I(s, p, o, m) BOOST_PP_IF(p(547, s), m, BOOST_PP_TUPLE_EAT_2)(547, s) BOOST_PP_IF(p(547, s), BOOST_PP_FOR_547, BOOST_PP_TUPLE_EAT_4)(o(547, s), p, o, m) +# define BOOST_PP_FOR_547_I(s, p, o, m) BOOST_PP_IF(p(548, s), m, BOOST_PP_TUPLE_EAT_2)(548, s) BOOST_PP_IF(p(548, s), BOOST_PP_FOR_548, BOOST_PP_TUPLE_EAT_4)(o(548, s), p, o, m) +# define BOOST_PP_FOR_548_I(s, p, o, m) BOOST_PP_IF(p(549, s), m, BOOST_PP_TUPLE_EAT_2)(549, s) BOOST_PP_IF(p(549, s), BOOST_PP_FOR_549, BOOST_PP_TUPLE_EAT_4)(o(549, s), p, o, m) +# define BOOST_PP_FOR_549_I(s, p, o, m) BOOST_PP_IF(p(550, s), m, BOOST_PP_TUPLE_EAT_2)(550, s) BOOST_PP_IF(p(550, s), BOOST_PP_FOR_550, BOOST_PP_TUPLE_EAT_4)(o(550, s), p, o, m) +# define BOOST_PP_FOR_550_I(s, p, o, m) BOOST_PP_IF(p(551, s), m, BOOST_PP_TUPLE_EAT_2)(551, s) BOOST_PP_IF(p(551, s), BOOST_PP_FOR_551, BOOST_PP_TUPLE_EAT_4)(o(551, s), p, o, m) +# define BOOST_PP_FOR_551_I(s, p, o, m) BOOST_PP_IF(p(552, s), m, BOOST_PP_TUPLE_EAT_2)(552, s) BOOST_PP_IF(p(552, s), BOOST_PP_FOR_552, BOOST_PP_TUPLE_EAT_4)(o(552, s), p, o, m) +# define BOOST_PP_FOR_552_I(s, p, o, m) BOOST_PP_IF(p(553, s), m, BOOST_PP_TUPLE_EAT_2)(553, s) BOOST_PP_IF(p(553, s), BOOST_PP_FOR_553, BOOST_PP_TUPLE_EAT_4)(o(553, s), p, o, m) +# define BOOST_PP_FOR_553_I(s, p, o, m) BOOST_PP_IF(p(554, s), m, BOOST_PP_TUPLE_EAT_2)(554, s) BOOST_PP_IF(p(554, s), BOOST_PP_FOR_554, BOOST_PP_TUPLE_EAT_4)(o(554, s), p, o, m) +# define BOOST_PP_FOR_554_I(s, p, o, m) BOOST_PP_IF(p(555, s), m, BOOST_PP_TUPLE_EAT_2)(555, s) BOOST_PP_IF(p(555, s), BOOST_PP_FOR_555, BOOST_PP_TUPLE_EAT_4)(o(555, s), p, o, m) +# define BOOST_PP_FOR_555_I(s, p, o, m) BOOST_PP_IF(p(556, s), m, BOOST_PP_TUPLE_EAT_2)(556, s) BOOST_PP_IF(p(556, s), BOOST_PP_FOR_556, BOOST_PP_TUPLE_EAT_4)(o(556, s), p, o, m) +# define BOOST_PP_FOR_556_I(s, p, o, m) BOOST_PP_IF(p(557, s), m, BOOST_PP_TUPLE_EAT_2)(557, s) BOOST_PP_IF(p(557, s), BOOST_PP_FOR_557, BOOST_PP_TUPLE_EAT_4)(o(557, s), p, o, m) +# define BOOST_PP_FOR_557_I(s, p, o, m) BOOST_PP_IF(p(558, s), m, BOOST_PP_TUPLE_EAT_2)(558, s) BOOST_PP_IF(p(558, s), BOOST_PP_FOR_558, BOOST_PP_TUPLE_EAT_4)(o(558, s), p, o, m) +# define BOOST_PP_FOR_558_I(s, p, o, m) BOOST_PP_IF(p(559, s), m, BOOST_PP_TUPLE_EAT_2)(559, s) BOOST_PP_IF(p(559, s), BOOST_PP_FOR_559, BOOST_PP_TUPLE_EAT_4)(o(559, s), p, o, m) +# define BOOST_PP_FOR_559_I(s, p, o, m) BOOST_PP_IF(p(560, s), m, BOOST_PP_TUPLE_EAT_2)(560, s) BOOST_PP_IF(p(560, s), BOOST_PP_FOR_560, BOOST_PP_TUPLE_EAT_4)(o(560, s), p, o, m) +# define BOOST_PP_FOR_560_I(s, p, o, m) BOOST_PP_IF(p(561, s), m, BOOST_PP_TUPLE_EAT_2)(561, s) BOOST_PP_IF(p(561, s), BOOST_PP_FOR_561, BOOST_PP_TUPLE_EAT_4)(o(561, s), p, o, m) +# define BOOST_PP_FOR_561_I(s, p, o, m) BOOST_PP_IF(p(562, s), m, BOOST_PP_TUPLE_EAT_2)(562, s) BOOST_PP_IF(p(562, s), BOOST_PP_FOR_562, BOOST_PP_TUPLE_EAT_4)(o(562, s), p, o, m) +# define BOOST_PP_FOR_562_I(s, p, o, m) BOOST_PP_IF(p(563, s), m, BOOST_PP_TUPLE_EAT_2)(563, s) BOOST_PP_IF(p(563, s), BOOST_PP_FOR_563, BOOST_PP_TUPLE_EAT_4)(o(563, s), p, o, m) +# define BOOST_PP_FOR_563_I(s, p, o, m) BOOST_PP_IF(p(564, s), m, BOOST_PP_TUPLE_EAT_2)(564, s) BOOST_PP_IF(p(564, s), BOOST_PP_FOR_564, BOOST_PP_TUPLE_EAT_4)(o(564, s), p, o, m) +# define BOOST_PP_FOR_564_I(s, p, o, m) BOOST_PP_IF(p(565, s), m, BOOST_PP_TUPLE_EAT_2)(565, s) BOOST_PP_IF(p(565, s), BOOST_PP_FOR_565, BOOST_PP_TUPLE_EAT_4)(o(565, s), p, o, m) +# define BOOST_PP_FOR_565_I(s, p, o, m) BOOST_PP_IF(p(566, s), m, BOOST_PP_TUPLE_EAT_2)(566, s) BOOST_PP_IF(p(566, s), BOOST_PP_FOR_566, BOOST_PP_TUPLE_EAT_4)(o(566, s), p, o, m) +# define BOOST_PP_FOR_566_I(s, p, o, m) BOOST_PP_IF(p(567, s), m, BOOST_PP_TUPLE_EAT_2)(567, s) BOOST_PP_IF(p(567, s), BOOST_PP_FOR_567, BOOST_PP_TUPLE_EAT_4)(o(567, s), p, o, m) +# define BOOST_PP_FOR_567_I(s, p, o, m) BOOST_PP_IF(p(568, s), m, BOOST_PP_TUPLE_EAT_2)(568, s) BOOST_PP_IF(p(568, s), BOOST_PP_FOR_568, BOOST_PP_TUPLE_EAT_4)(o(568, s), p, o, m) +# define BOOST_PP_FOR_568_I(s, p, o, m) BOOST_PP_IF(p(569, s), m, BOOST_PP_TUPLE_EAT_2)(569, s) BOOST_PP_IF(p(569, s), BOOST_PP_FOR_569, BOOST_PP_TUPLE_EAT_4)(o(569, s), p, o, m) +# define BOOST_PP_FOR_569_I(s, p, o, m) BOOST_PP_IF(p(570, s), m, BOOST_PP_TUPLE_EAT_2)(570, s) BOOST_PP_IF(p(570, s), BOOST_PP_FOR_570, BOOST_PP_TUPLE_EAT_4)(o(570, s), p, o, m) +# define BOOST_PP_FOR_570_I(s, p, o, m) BOOST_PP_IF(p(571, s), m, BOOST_PP_TUPLE_EAT_2)(571, s) BOOST_PP_IF(p(571, s), BOOST_PP_FOR_571, BOOST_PP_TUPLE_EAT_4)(o(571, s), p, o, m) +# define BOOST_PP_FOR_571_I(s, p, o, m) BOOST_PP_IF(p(572, s), m, BOOST_PP_TUPLE_EAT_2)(572, s) BOOST_PP_IF(p(572, s), BOOST_PP_FOR_572, BOOST_PP_TUPLE_EAT_4)(o(572, s), p, o, m) +# define BOOST_PP_FOR_572_I(s, p, o, m) BOOST_PP_IF(p(573, s), m, BOOST_PP_TUPLE_EAT_2)(573, s) BOOST_PP_IF(p(573, s), BOOST_PP_FOR_573, BOOST_PP_TUPLE_EAT_4)(o(573, s), p, o, m) +# define BOOST_PP_FOR_573_I(s, p, o, m) BOOST_PP_IF(p(574, s), m, BOOST_PP_TUPLE_EAT_2)(574, s) BOOST_PP_IF(p(574, s), BOOST_PP_FOR_574, BOOST_PP_TUPLE_EAT_4)(o(574, s), p, o, m) +# define BOOST_PP_FOR_574_I(s, p, o, m) BOOST_PP_IF(p(575, s), m, BOOST_PP_TUPLE_EAT_2)(575, s) BOOST_PP_IF(p(575, s), BOOST_PP_FOR_575, BOOST_PP_TUPLE_EAT_4)(o(575, s), p, o, m) +# define BOOST_PP_FOR_575_I(s, p, o, m) BOOST_PP_IF(p(576, s), m, BOOST_PP_TUPLE_EAT_2)(576, s) BOOST_PP_IF(p(576, s), BOOST_PP_FOR_576, BOOST_PP_TUPLE_EAT_4)(o(576, s), p, o, m) +# define BOOST_PP_FOR_576_I(s, p, o, m) BOOST_PP_IF(p(577, s), m, BOOST_PP_TUPLE_EAT_2)(577, s) BOOST_PP_IF(p(577, s), BOOST_PP_FOR_577, BOOST_PP_TUPLE_EAT_4)(o(577, s), p, o, m) +# define BOOST_PP_FOR_577_I(s, p, o, m) BOOST_PP_IF(p(578, s), m, BOOST_PP_TUPLE_EAT_2)(578, s) BOOST_PP_IF(p(578, s), BOOST_PP_FOR_578, BOOST_PP_TUPLE_EAT_4)(o(578, s), p, o, m) +# define BOOST_PP_FOR_578_I(s, p, o, m) BOOST_PP_IF(p(579, s), m, BOOST_PP_TUPLE_EAT_2)(579, s) BOOST_PP_IF(p(579, s), BOOST_PP_FOR_579, BOOST_PP_TUPLE_EAT_4)(o(579, s), p, o, m) +# define BOOST_PP_FOR_579_I(s, p, o, m) BOOST_PP_IF(p(580, s), m, BOOST_PP_TUPLE_EAT_2)(580, s) BOOST_PP_IF(p(580, s), BOOST_PP_FOR_580, BOOST_PP_TUPLE_EAT_4)(o(580, s), p, o, m) +# define BOOST_PP_FOR_580_I(s, p, o, m) BOOST_PP_IF(p(581, s), m, BOOST_PP_TUPLE_EAT_2)(581, s) BOOST_PP_IF(p(581, s), BOOST_PP_FOR_581, BOOST_PP_TUPLE_EAT_4)(o(581, s), p, o, m) +# define BOOST_PP_FOR_581_I(s, p, o, m) BOOST_PP_IF(p(582, s), m, BOOST_PP_TUPLE_EAT_2)(582, s) BOOST_PP_IF(p(582, s), BOOST_PP_FOR_582, BOOST_PP_TUPLE_EAT_4)(o(582, s), p, o, m) +# define BOOST_PP_FOR_582_I(s, p, o, m) BOOST_PP_IF(p(583, s), m, BOOST_PP_TUPLE_EAT_2)(583, s) BOOST_PP_IF(p(583, s), BOOST_PP_FOR_583, BOOST_PP_TUPLE_EAT_4)(o(583, s), p, o, m) +# define BOOST_PP_FOR_583_I(s, p, o, m) BOOST_PP_IF(p(584, s), m, BOOST_PP_TUPLE_EAT_2)(584, s) BOOST_PP_IF(p(584, s), BOOST_PP_FOR_584, BOOST_PP_TUPLE_EAT_4)(o(584, s), p, o, m) +# define BOOST_PP_FOR_584_I(s, p, o, m) BOOST_PP_IF(p(585, s), m, BOOST_PP_TUPLE_EAT_2)(585, s) BOOST_PP_IF(p(585, s), BOOST_PP_FOR_585, BOOST_PP_TUPLE_EAT_4)(o(585, s), p, o, m) +# define BOOST_PP_FOR_585_I(s, p, o, m) BOOST_PP_IF(p(586, s), m, BOOST_PP_TUPLE_EAT_2)(586, s) BOOST_PP_IF(p(586, s), BOOST_PP_FOR_586, BOOST_PP_TUPLE_EAT_4)(o(586, s), p, o, m) +# define BOOST_PP_FOR_586_I(s, p, o, m) BOOST_PP_IF(p(587, s), m, BOOST_PP_TUPLE_EAT_2)(587, s) BOOST_PP_IF(p(587, s), BOOST_PP_FOR_587, BOOST_PP_TUPLE_EAT_4)(o(587, s), p, o, m) +# define BOOST_PP_FOR_587_I(s, p, o, m) BOOST_PP_IF(p(588, s), m, BOOST_PP_TUPLE_EAT_2)(588, s) BOOST_PP_IF(p(588, s), BOOST_PP_FOR_588, BOOST_PP_TUPLE_EAT_4)(o(588, s), p, o, m) +# define BOOST_PP_FOR_588_I(s, p, o, m) BOOST_PP_IF(p(589, s), m, BOOST_PP_TUPLE_EAT_2)(589, s) BOOST_PP_IF(p(589, s), BOOST_PP_FOR_589, BOOST_PP_TUPLE_EAT_4)(o(589, s), p, o, m) +# define BOOST_PP_FOR_589_I(s, p, o, m) BOOST_PP_IF(p(590, s), m, BOOST_PP_TUPLE_EAT_2)(590, s) BOOST_PP_IF(p(590, s), BOOST_PP_FOR_590, BOOST_PP_TUPLE_EAT_4)(o(590, s), p, o, m) +# define BOOST_PP_FOR_590_I(s, p, o, m) BOOST_PP_IF(p(591, s), m, BOOST_PP_TUPLE_EAT_2)(591, s) BOOST_PP_IF(p(591, s), BOOST_PP_FOR_591, BOOST_PP_TUPLE_EAT_4)(o(591, s), p, o, m) +# define BOOST_PP_FOR_591_I(s, p, o, m) BOOST_PP_IF(p(592, s), m, BOOST_PP_TUPLE_EAT_2)(592, s) BOOST_PP_IF(p(592, s), BOOST_PP_FOR_592, BOOST_PP_TUPLE_EAT_4)(o(592, s), p, o, m) +# define BOOST_PP_FOR_592_I(s, p, o, m) BOOST_PP_IF(p(593, s), m, BOOST_PP_TUPLE_EAT_2)(593, s) BOOST_PP_IF(p(593, s), BOOST_PP_FOR_593, BOOST_PP_TUPLE_EAT_4)(o(593, s), p, o, m) +# define BOOST_PP_FOR_593_I(s, p, o, m) BOOST_PP_IF(p(594, s), m, BOOST_PP_TUPLE_EAT_2)(594, s) BOOST_PP_IF(p(594, s), BOOST_PP_FOR_594, BOOST_PP_TUPLE_EAT_4)(o(594, s), p, o, m) +# define BOOST_PP_FOR_594_I(s, p, o, m) BOOST_PP_IF(p(595, s), m, BOOST_PP_TUPLE_EAT_2)(595, s) BOOST_PP_IF(p(595, s), BOOST_PP_FOR_595, BOOST_PP_TUPLE_EAT_4)(o(595, s), p, o, m) +# define BOOST_PP_FOR_595_I(s, p, o, m) BOOST_PP_IF(p(596, s), m, BOOST_PP_TUPLE_EAT_2)(596, s) BOOST_PP_IF(p(596, s), BOOST_PP_FOR_596, BOOST_PP_TUPLE_EAT_4)(o(596, s), p, o, m) +# define BOOST_PP_FOR_596_I(s, p, o, m) BOOST_PP_IF(p(597, s), m, BOOST_PP_TUPLE_EAT_2)(597, s) BOOST_PP_IF(p(597, s), BOOST_PP_FOR_597, BOOST_PP_TUPLE_EAT_4)(o(597, s), p, o, m) +# define BOOST_PP_FOR_597_I(s, p, o, m) BOOST_PP_IF(p(598, s), m, BOOST_PP_TUPLE_EAT_2)(598, s) BOOST_PP_IF(p(598, s), BOOST_PP_FOR_598, BOOST_PP_TUPLE_EAT_4)(o(598, s), p, o, m) +# define BOOST_PP_FOR_598_I(s, p, o, m) BOOST_PP_IF(p(599, s), m, BOOST_PP_TUPLE_EAT_2)(599, s) BOOST_PP_IF(p(599, s), BOOST_PP_FOR_599, BOOST_PP_TUPLE_EAT_4)(o(599, s), p, o, m) +# define BOOST_PP_FOR_599_I(s, p, o, m) BOOST_PP_IF(p(600, s), m, BOOST_PP_TUPLE_EAT_2)(600, s) BOOST_PP_IF(p(600, s), BOOST_PP_FOR_600, BOOST_PP_TUPLE_EAT_4)(o(600, s), p, o, m) +# define BOOST_PP_FOR_600_I(s, p, o, m) BOOST_PP_IF(p(601, s), m, BOOST_PP_TUPLE_EAT_2)(601, s) BOOST_PP_IF(p(601, s), BOOST_PP_FOR_601, BOOST_PP_TUPLE_EAT_4)(o(601, s), p, o, m) +# define BOOST_PP_FOR_601_I(s, p, o, m) BOOST_PP_IF(p(602, s), m, BOOST_PP_TUPLE_EAT_2)(602, s) BOOST_PP_IF(p(602, s), BOOST_PP_FOR_602, BOOST_PP_TUPLE_EAT_4)(o(602, s), p, o, m) +# define BOOST_PP_FOR_602_I(s, p, o, m) BOOST_PP_IF(p(603, s), m, BOOST_PP_TUPLE_EAT_2)(603, s) BOOST_PP_IF(p(603, s), BOOST_PP_FOR_603, BOOST_PP_TUPLE_EAT_4)(o(603, s), p, o, m) +# define BOOST_PP_FOR_603_I(s, p, o, m) BOOST_PP_IF(p(604, s), m, BOOST_PP_TUPLE_EAT_2)(604, s) BOOST_PP_IF(p(604, s), BOOST_PP_FOR_604, BOOST_PP_TUPLE_EAT_4)(o(604, s), p, o, m) +# define BOOST_PP_FOR_604_I(s, p, o, m) BOOST_PP_IF(p(605, s), m, BOOST_PP_TUPLE_EAT_2)(605, s) BOOST_PP_IF(p(605, s), BOOST_PP_FOR_605, BOOST_PP_TUPLE_EAT_4)(o(605, s), p, o, m) +# define BOOST_PP_FOR_605_I(s, p, o, m) BOOST_PP_IF(p(606, s), m, BOOST_PP_TUPLE_EAT_2)(606, s) BOOST_PP_IF(p(606, s), BOOST_PP_FOR_606, BOOST_PP_TUPLE_EAT_4)(o(606, s), p, o, m) +# define BOOST_PP_FOR_606_I(s, p, o, m) BOOST_PP_IF(p(607, s), m, BOOST_PP_TUPLE_EAT_2)(607, s) BOOST_PP_IF(p(607, s), BOOST_PP_FOR_607, BOOST_PP_TUPLE_EAT_4)(o(607, s), p, o, m) +# define BOOST_PP_FOR_607_I(s, p, o, m) BOOST_PP_IF(p(608, s), m, BOOST_PP_TUPLE_EAT_2)(608, s) BOOST_PP_IF(p(608, s), BOOST_PP_FOR_608, BOOST_PP_TUPLE_EAT_4)(o(608, s), p, o, m) +# define BOOST_PP_FOR_608_I(s, p, o, m) BOOST_PP_IF(p(609, s), m, BOOST_PP_TUPLE_EAT_2)(609, s) BOOST_PP_IF(p(609, s), BOOST_PP_FOR_609, BOOST_PP_TUPLE_EAT_4)(o(609, s), p, o, m) +# define BOOST_PP_FOR_609_I(s, p, o, m) BOOST_PP_IF(p(610, s), m, BOOST_PP_TUPLE_EAT_2)(610, s) BOOST_PP_IF(p(610, s), BOOST_PP_FOR_610, BOOST_PP_TUPLE_EAT_4)(o(610, s), p, o, m) +# define BOOST_PP_FOR_610_I(s, p, o, m) BOOST_PP_IF(p(611, s), m, BOOST_PP_TUPLE_EAT_2)(611, s) BOOST_PP_IF(p(611, s), BOOST_PP_FOR_611, BOOST_PP_TUPLE_EAT_4)(o(611, s), p, o, m) +# define BOOST_PP_FOR_611_I(s, p, o, m) BOOST_PP_IF(p(612, s), m, BOOST_PP_TUPLE_EAT_2)(612, s) BOOST_PP_IF(p(612, s), BOOST_PP_FOR_612, BOOST_PP_TUPLE_EAT_4)(o(612, s), p, o, m) +# define BOOST_PP_FOR_612_I(s, p, o, m) BOOST_PP_IF(p(613, s), m, BOOST_PP_TUPLE_EAT_2)(613, s) BOOST_PP_IF(p(613, s), BOOST_PP_FOR_613, BOOST_PP_TUPLE_EAT_4)(o(613, s), p, o, m) +# define BOOST_PP_FOR_613_I(s, p, o, m) BOOST_PP_IF(p(614, s), m, BOOST_PP_TUPLE_EAT_2)(614, s) BOOST_PP_IF(p(614, s), BOOST_PP_FOR_614, BOOST_PP_TUPLE_EAT_4)(o(614, s), p, o, m) +# define BOOST_PP_FOR_614_I(s, p, o, m) BOOST_PP_IF(p(615, s), m, BOOST_PP_TUPLE_EAT_2)(615, s) BOOST_PP_IF(p(615, s), BOOST_PP_FOR_615, BOOST_PP_TUPLE_EAT_4)(o(615, s), p, o, m) +# define BOOST_PP_FOR_615_I(s, p, o, m) BOOST_PP_IF(p(616, s), m, BOOST_PP_TUPLE_EAT_2)(616, s) BOOST_PP_IF(p(616, s), BOOST_PP_FOR_616, BOOST_PP_TUPLE_EAT_4)(o(616, s), p, o, m) +# define BOOST_PP_FOR_616_I(s, p, o, m) BOOST_PP_IF(p(617, s), m, BOOST_PP_TUPLE_EAT_2)(617, s) BOOST_PP_IF(p(617, s), BOOST_PP_FOR_617, BOOST_PP_TUPLE_EAT_4)(o(617, s), p, o, m) +# define BOOST_PP_FOR_617_I(s, p, o, m) BOOST_PP_IF(p(618, s), m, BOOST_PP_TUPLE_EAT_2)(618, s) BOOST_PP_IF(p(618, s), BOOST_PP_FOR_618, BOOST_PP_TUPLE_EAT_4)(o(618, s), p, o, m) +# define BOOST_PP_FOR_618_I(s, p, o, m) BOOST_PP_IF(p(619, s), m, BOOST_PP_TUPLE_EAT_2)(619, s) BOOST_PP_IF(p(619, s), BOOST_PP_FOR_619, BOOST_PP_TUPLE_EAT_4)(o(619, s), p, o, m) +# define BOOST_PP_FOR_619_I(s, p, o, m) BOOST_PP_IF(p(620, s), m, BOOST_PP_TUPLE_EAT_2)(620, s) BOOST_PP_IF(p(620, s), BOOST_PP_FOR_620, BOOST_PP_TUPLE_EAT_4)(o(620, s), p, o, m) +# define BOOST_PP_FOR_620_I(s, p, o, m) BOOST_PP_IF(p(621, s), m, BOOST_PP_TUPLE_EAT_2)(621, s) BOOST_PP_IF(p(621, s), BOOST_PP_FOR_621, BOOST_PP_TUPLE_EAT_4)(o(621, s), p, o, m) +# define BOOST_PP_FOR_621_I(s, p, o, m) BOOST_PP_IF(p(622, s), m, BOOST_PP_TUPLE_EAT_2)(622, s) BOOST_PP_IF(p(622, s), BOOST_PP_FOR_622, BOOST_PP_TUPLE_EAT_4)(o(622, s), p, o, m) +# define BOOST_PP_FOR_622_I(s, p, o, m) BOOST_PP_IF(p(623, s), m, BOOST_PP_TUPLE_EAT_2)(623, s) BOOST_PP_IF(p(623, s), BOOST_PP_FOR_623, BOOST_PP_TUPLE_EAT_4)(o(623, s), p, o, m) +# define BOOST_PP_FOR_623_I(s, p, o, m) BOOST_PP_IF(p(624, s), m, BOOST_PP_TUPLE_EAT_2)(624, s) BOOST_PP_IF(p(624, s), BOOST_PP_FOR_624, BOOST_PP_TUPLE_EAT_4)(o(624, s), p, o, m) +# define BOOST_PP_FOR_624_I(s, p, o, m) BOOST_PP_IF(p(625, s), m, BOOST_PP_TUPLE_EAT_2)(625, s) BOOST_PP_IF(p(625, s), BOOST_PP_FOR_625, BOOST_PP_TUPLE_EAT_4)(o(625, s), p, o, m) +# define BOOST_PP_FOR_625_I(s, p, o, m) BOOST_PP_IF(p(626, s), m, BOOST_PP_TUPLE_EAT_2)(626, s) BOOST_PP_IF(p(626, s), BOOST_PP_FOR_626, BOOST_PP_TUPLE_EAT_4)(o(626, s), p, o, m) +# define BOOST_PP_FOR_626_I(s, p, o, m) BOOST_PP_IF(p(627, s), m, BOOST_PP_TUPLE_EAT_2)(627, s) BOOST_PP_IF(p(627, s), BOOST_PP_FOR_627, BOOST_PP_TUPLE_EAT_4)(o(627, s), p, o, m) +# define BOOST_PP_FOR_627_I(s, p, o, m) BOOST_PP_IF(p(628, s), m, BOOST_PP_TUPLE_EAT_2)(628, s) BOOST_PP_IF(p(628, s), BOOST_PP_FOR_628, BOOST_PP_TUPLE_EAT_4)(o(628, s), p, o, m) +# define BOOST_PP_FOR_628_I(s, p, o, m) BOOST_PP_IF(p(629, s), m, BOOST_PP_TUPLE_EAT_2)(629, s) BOOST_PP_IF(p(629, s), BOOST_PP_FOR_629, BOOST_PP_TUPLE_EAT_4)(o(629, s), p, o, m) +# define BOOST_PP_FOR_629_I(s, p, o, m) BOOST_PP_IF(p(630, s), m, BOOST_PP_TUPLE_EAT_2)(630, s) BOOST_PP_IF(p(630, s), BOOST_PP_FOR_630, BOOST_PP_TUPLE_EAT_4)(o(630, s), p, o, m) +# define BOOST_PP_FOR_630_I(s, p, o, m) BOOST_PP_IF(p(631, s), m, BOOST_PP_TUPLE_EAT_2)(631, s) BOOST_PP_IF(p(631, s), BOOST_PP_FOR_631, BOOST_PP_TUPLE_EAT_4)(o(631, s), p, o, m) +# define BOOST_PP_FOR_631_I(s, p, o, m) BOOST_PP_IF(p(632, s), m, BOOST_PP_TUPLE_EAT_2)(632, s) BOOST_PP_IF(p(632, s), BOOST_PP_FOR_632, BOOST_PP_TUPLE_EAT_4)(o(632, s), p, o, m) +# define BOOST_PP_FOR_632_I(s, p, o, m) BOOST_PP_IF(p(633, s), m, BOOST_PP_TUPLE_EAT_2)(633, s) BOOST_PP_IF(p(633, s), BOOST_PP_FOR_633, BOOST_PP_TUPLE_EAT_4)(o(633, s), p, o, m) +# define BOOST_PP_FOR_633_I(s, p, o, m) BOOST_PP_IF(p(634, s), m, BOOST_PP_TUPLE_EAT_2)(634, s) BOOST_PP_IF(p(634, s), BOOST_PP_FOR_634, BOOST_PP_TUPLE_EAT_4)(o(634, s), p, o, m) +# define BOOST_PP_FOR_634_I(s, p, o, m) BOOST_PP_IF(p(635, s), m, BOOST_PP_TUPLE_EAT_2)(635, s) BOOST_PP_IF(p(635, s), BOOST_PP_FOR_635, BOOST_PP_TUPLE_EAT_4)(o(635, s), p, o, m) +# define BOOST_PP_FOR_635_I(s, p, o, m) BOOST_PP_IF(p(636, s), m, BOOST_PP_TUPLE_EAT_2)(636, s) BOOST_PP_IF(p(636, s), BOOST_PP_FOR_636, BOOST_PP_TUPLE_EAT_4)(o(636, s), p, o, m) +# define BOOST_PP_FOR_636_I(s, p, o, m) BOOST_PP_IF(p(637, s), m, BOOST_PP_TUPLE_EAT_2)(637, s) BOOST_PP_IF(p(637, s), BOOST_PP_FOR_637, BOOST_PP_TUPLE_EAT_4)(o(637, s), p, o, m) +# define BOOST_PP_FOR_637_I(s, p, o, m) BOOST_PP_IF(p(638, s), m, BOOST_PP_TUPLE_EAT_2)(638, s) BOOST_PP_IF(p(638, s), BOOST_PP_FOR_638, BOOST_PP_TUPLE_EAT_4)(o(638, s), p, o, m) +# define BOOST_PP_FOR_638_I(s, p, o, m) BOOST_PP_IF(p(639, s), m, BOOST_PP_TUPLE_EAT_2)(639, s) BOOST_PP_IF(p(639, s), BOOST_PP_FOR_639, BOOST_PP_TUPLE_EAT_4)(o(639, s), p, o, m) +# define BOOST_PP_FOR_639_I(s, p, o, m) BOOST_PP_IF(p(640, s), m, BOOST_PP_TUPLE_EAT_2)(640, s) BOOST_PP_IF(p(640, s), BOOST_PP_FOR_640, BOOST_PP_TUPLE_EAT_4)(o(640, s), p, o, m) +# define BOOST_PP_FOR_640_I(s, p, o, m) BOOST_PP_IF(p(641, s), m, BOOST_PP_TUPLE_EAT_2)(641, s) BOOST_PP_IF(p(641, s), BOOST_PP_FOR_641, BOOST_PP_TUPLE_EAT_4)(o(641, s), p, o, m) +# define BOOST_PP_FOR_641_I(s, p, o, m) BOOST_PP_IF(p(642, s), m, BOOST_PP_TUPLE_EAT_2)(642, s) BOOST_PP_IF(p(642, s), BOOST_PP_FOR_642, BOOST_PP_TUPLE_EAT_4)(o(642, s), p, o, m) +# define BOOST_PP_FOR_642_I(s, p, o, m) BOOST_PP_IF(p(643, s), m, BOOST_PP_TUPLE_EAT_2)(643, s) BOOST_PP_IF(p(643, s), BOOST_PP_FOR_643, BOOST_PP_TUPLE_EAT_4)(o(643, s), p, o, m) +# define BOOST_PP_FOR_643_I(s, p, o, m) BOOST_PP_IF(p(644, s), m, BOOST_PP_TUPLE_EAT_2)(644, s) BOOST_PP_IF(p(644, s), BOOST_PP_FOR_644, BOOST_PP_TUPLE_EAT_4)(o(644, s), p, o, m) +# define BOOST_PP_FOR_644_I(s, p, o, m) BOOST_PP_IF(p(645, s), m, BOOST_PP_TUPLE_EAT_2)(645, s) BOOST_PP_IF(p(645, s), BOOST_PP_FOR_645, BOOST_PP_TUPLE_EAT_4)(o(645, s), p, o, m) +# define BOOST_PP_FOR_645_I(s, p, o, m) BOOST_PP_IF(p(646, s), m, BOOST_PP_TUPLE_EAT_2)(646, s) BOOST_PP_IF(p(646, s), BOOST_PP_FOR_646, BOOST_PP_TUPLE_EAT_4)(o(646, s), p, o, m) +# define BOOST_PP_FOR_646_I(s, p, o, m) BOOST_PP_IF(p(647, s), m, BOOST_PP_TUPLE_EAT_2)(647, s) BOOST_PP_IF(p(647, s), BOOST_PP_FOR_647, BOOST_PP_TUPLE_EAT_4)(o(647, s), p, o, m) +# define BOOST_PP_FOR_647_I(s, p, o, m) BOOST_PP_IF(p(648, s), m, BOOST_PP_TUPLE_EAT_2)(648, s) BOOST_PP_IF(p(648, s), BOOST_PP_FOR_648, BOOST_PP_TUPLE_EAT_4)(o(648, s), p, o, m) +# define BOOST_PP_FOR_648_I(s, p, o, m) BOOST_PP_IF(p(649, s), m, BOOST_PP_TUPLE_EAT_2)(649, s) BOOST_PP_IF(p(649, s), BOOST_PP_FOR_649, BOOST_PP_TUPLE_EAT_4)(o(649, s), p, o, m) +# define BOOST_PP_FOR_649_I(s, p, o, m) BOOST_PP_IF(p(650, s), m, BOOST_PP_TUPLE_EAT_2)(650, s) BOOST_PP_IF(p(650, s), BOOST_PP_FOR_650, BOOST_PP_TUPLE_EAT_4)(o(650, s), p, o, m) +# define BOOST_PP_FOR_650_I(s, p, o, m) BOOST_PP_IF(p(651, s), m, BOOST_PP_TUPLE_EAT_2)(651, s) BOOST_PP_IF(p(651, s), BOOST_PP_FOR_651, BOOST_PP_TUPLE_EAT_4)(o(651, s), p, o, m) +# define BOOST_PP_FOR_651_I(s, p, o, m) BOOST_PP_IF(p(652, s), m, BOOST_PP_TUPLE_EAT_2)(652, s) BOOST_PP_IF(p(652, s), BOOST_PP_FOR_652, BOOST_PP_TUPLE_EAT_4)(o(652, s), p, o, m) +# define BOOST_PP_FOR_652_I(s, p, o, m) BOOST_PP_IF(p(653, s), m, BOOST_PP_TUPLE_EAT_2)(653, s) BOOST_PP_IF(p(653, s), BOOST_PP_FOR_653, BOOST_PP_TUPLE_EAT_4)(o(653, s), p, o, m) +# define BOOST_PP_FOR_653_I(s, p, o, m) BOOST_PP_IF(p(654, s), m, BOOST_PP_TUPLE_EAT_2)(654, s) BOOST_PP_IF(p(654, s), BOOST_PP_FOR_654, BOOST_PP_TUPLE_EAT_4)(o(654, s), p, o, m) +# define BOOST_PP_FOR_654_I(s, p, o, m) BOOST_PP_IF(p(655, s), m, BOOST_PP_TUPLE_EAT_2)(655, s) BOOST_PP_IF(p(655, s), BOOST_PP_FOR_655, BOOST_PP_TUPLE_EAT_4)(o(655, s), p, o, m) +# define BOOST_PP_FOR_655_I(s, p, o, m) BOOST_PP_IF(p(656, s), m, BOOST_PP_TUPLE_EAT_2)(656, s) BOOST_PP_IF(p(656, s), BOOST_PP_FOR_656, BOOST_PP_TUPLE_EAT_4)(o(656, s), p, o, m) +# define BOOST_PP_FOR_656_I(s, p, o, m) BOOST_PP_IF(p(657, s), m, BOOST_PP_TUPLE_EAT_2)(657, s) BOOST_PP_IF(p(657, s), BOOST_PP_FOR_657, BOOST_PP_TUPLE_EAT_4)(o(657, s), p, o, m) +# define BOOST_PP_FOR_657_I(s, p, o, m) BOOST_PP_IF(p(658, s), m, BOOST_PP_TUPLE_EAT_2)(658, s) BOOST_PP_IF(p(658, s), BOOST_PP_FOR_658, BOOST_PP_TUPLE_EAT_4)(o(658, s), p, o, m) +# define BOOST_PP_FOR_658_I(s, p, o, m) BOOST_PP_IF(p(659, s), m, BOOST_PP_TUPLE_EAT_2)(659, s) BOOST_PP_IF(p(659, s), BOOST_PP_FOR_659, BOOST_PP_TUPLE_EAT_4)(o(659, s), p, o, m) +# define BOOST_PP_FOR_659_I(s, p, o, m) BOOST_PP_IF(p(660, s), m, BOOST_PP_TUPLE_EAT_2)(660, s) BOOST_PP_IF(p(660, s), BOOST_PP_FOR_660, BOOST_PP_TUPLE_EAT_4)(o(660, s), p, o, m) +# define BOOST_PP_FOR_660_I(s, p, o, m) BOOST_PP_IF(p(661, s), m, BOOST_PP_TUPLE_EAT_2)(661, s) BOOST_PP_IF(p(661, s), BOOST_PP_FOR_661, BOOST_PP_TUPLE_EAT_4)(o(661, s), p, o, m) +# define BOOST_PP_FOR_661_I(s, p, o, m) BOOST_PP_IF(p(662, s), m, BOOST_PP_TUPLE_EAT_2)(662, s) BOOST_PP_IF(p(662, s), BOOST_PP_FOR_662, BOOST_PP_TUPLE_EAT_4)(o(662, s), p, o, m) +# define BOOST_PP_FOR_662_I(s, p, o, m) BOOST_PP_IF(p(663, s), m, BOOST_PP_TUPLE_EAT_2)(663, s) BOOST_PP_IF(p(663, s), BOOST_PP_FOR_663, BOOST_PP_TUPLE_EAT_4)(o(663, s), p, o, m) +# define BOOST_PP_FOR_663_I(s, p, o, m) BOOST_PP_IF(p(664, s), m, BOOST_PP_TUPLE_EAT_2)(664, s) BOOST_PP_IF(p(664, s), BOOST_PP_FOR_664, BOOST_PP_TUPLE_EAT_4)(o(664, s), p, o, m) +# define BOOST_PP_FOR_664_I(s, p, o, m) BOOST_PP_IF(p(665, s), m, BOOST_PP_TUPLE_EAT_2)(665, s) BOOST_PP_IF(p(665, s), BOOST_PP_FOR_665, BOOST_PP_TUPLE_EAT_4)(o(665, s), p, o, m) +# define BOOST_PP_FOR_665_I(s, p, o, m) BOOST_PP_IF(p(666, s), m, BOOST_PP_TUPLE_EAT_2)(666, s) BOOST_PP_IF(p(666, s), BOOST_PP_FOR_666, BOOST_PP_TUPLE_EAT_4)(o(666, s), p, o, m) +# define BOOST_PP_FOR_666_I(s, p, o, m) BOOST_PP_IF(p(667, s), m, BOOST_PP_TUPLE_EAT_2)(667, s) BOOST_PP_IF(p(667, s), BOOST_PP_FOR_667, BOOST_PP_TUPLE_EAT_4)(o(667, s), p, o, m) +# define BOOST_PP_FOR_667_I(s, p, o, m) BOOST_PP_IF(p(668, s), m, BOOST_PP_TUPLE_EAT_2)(668, s) BOOST_PP_IF(p(668, s), BOOST_PP_FOR_668, BOOST_PP_TUPLE_EAT_4)(o(668, s), p, o, m) +# define BOOST_PP_FOR_668_I(s, p, o, m) BOOST_PP_IF(p(669, s), m, BOOST_PP_TUPLE_EAT_2)(669, s) BOOST_PP_IF(p(669, s), BOOST_PP_FOR_669, BOOST_PP_TUPLE_EAT_4)(o(669, s), p, o, m) +# define BOOST_PP_FOR_669_I(s, p, o, m) BOOST_PP_IF(p(670, s), m, BOOST_PP_TUPLE_EAT_2)(670, s) BOOST_PP_IF(p(670, s), BOOST_PP_FOR_670, BOOST_PP_TUPLE_EAT_4)(o(670, s), p, o, m) +# define BOOST_PP_FOR_670_I(s, p, o, m) BOOST_PP_IF(p(671, s), m, BOOST_PP_TUPLE_EAT_2)(671, s) BOOST_PP_IF(p(671, s), BOOST_PP_FOR_671, BOOST_PP_TUPLE_EAT_4)(o(671, s), p, o, m) +# define BOOST_PP_FOR_671_I(s, p, o, m) BOOST_PP_IF(p(672, s), m, BOOST_PP_TUPLE_EAT_2)(672, s) BOOST_PP_IF(p(672, s), BOOST_PP_FOR_672, BOOST_PP_TUPLE_EAT_4)(o(672, s), p, o, m) +# define BOOST_PP_FOR_672_I(s, p, o, m) BOOST_PP_IF(p(673, s), m, BOOST_PP_TUPLE_EAT_2)(673, s) BOOST_PP_IF(p(673, s), BOOST_PP_FOR_673, BOOST_PP_TUPLE_EAT_4)(o(673, s), p, o, m) +# define BOOST_PP_FOR_673_I(s, p, o, m) BOOST_PP_IF(p(674, s), m, BOOST_PP_TUPLE_EAT_2)(674, s) BOOST_PP_IF(p(674, s), BOOST_PP_FOR_674, BOOST_PP_TUPLE_EAT_4)(o(674, s), p, o, m) +# define BOOST_PP_FOR_674_I(s, p, o, m) BOOST_PP_IF(p(675, s), m, BOOST_PP_TUPLE_EAT_2)(675, s) BOOST_PP_IF(p(675, s), BOOST_PP_FOR_675, BOOST_PP_TUPLE_EAT_4)(o(675, s), p, o, m) +# define BOOST_PP_FOR_675_I(s, p, o, m) BOOST_PP_IF(p(676, s), m, BOOST_PP_TUPLE_EAT_2)(676, s) BOOST_PP_IF(p(676, s), BOOST_PP_FOR_676, BOOST_PP_TUPLE_EAT_4)(o(676, s), p, o, m) +# define BOOST_PP_FOR_676_I(s, p, o, m) BOOST_PP_IF(p(677, s), m, BOOST_PP_TUPLE_EAT_2)(677, s) BOOST_PP_IF(p(677, s), BOOST_PP_FOR_677, BOOST_PP_TUPLE_EAT_4)(o(677, s), p, o, m) +# define BOOST_PP_FOR_677_I(s, p, o, m) BOOST_PP_IF(p(678, s), m, BOOST_PP_TUPLE_EAT_2)(678, s) BOOST_PP_IF(p(678, s), BOOST_PP_FOR_678, BOOST_PP_TUPLE_EAT_4)(o(678, s), p, o, m) +# define BOOST_PP_FOR_678_I(s, p, o, m) BOOST_PP_IF(p(679, s), m, BOOST_PP_TUPLE_EAT_2)(679, s) BOOST_PP_IF(p(679, s), BOOST_PP_FOR_679, BOOST_PP_TUPLE_EAT_4)(o(679, s), p, o, m) +# define BOOST_PP_FOR_679_I(s, p, o, m) BOOST_PP_IF(p(680, s), m, BOOST_PP_TUPLE_EAT_2)(680, s) BOOST_PP_IF(p(680, s), BOOST_PP_FOR_680, BOOST_PP_TUPLE_EAT_4)(o(680, s), p, o, m) +# define BOOST_PP_FOR_680_I(s, p, o, m) BOOST_PP_IF(p(681, s), m, BOOST_PP_TUPLE_EAT_2)(681, s) BOOST_PP_IF(p(681, s), BOOST_PP_FOR_681, BOOST_PP_TUPLE_EAT_4)(o(681, s), p, o, m) +# define BOOST_PP_FOR_681_I(s, p, o, m) BOOST_PP_IF(p(682, s), m, BOOST_PP_TUPLE_EAT_2)(682, s) BOOST_PP_IF(p(682, s), BOOST_PP_FOR_682, BOOST_PP_TUPLE_EAT_4)(o(682, s), p, o, m) +# define BOOST_PP_FOR_682_I(s, p, o, m) BOOST_PP_IF(p(683, s), m, BOOST_PP_TUPLE_EAT_2)(683, s) BOOST_PP_IF(p(683, s), BOOST_PP_FOR_683, BOOST_PP_TUPLE_EAT_4)(o(683, s), p, o, m) +# define BOOST_PP_FOR_683_I(s, p, o, m) BOOST_PP_IF(p(684, s), m, BOOST_PP_TUPLE_EAT_2)(684, s) BOOST_PP_IF(p(684, s), BOOST_PP_FOR_684, BOOST_PP_TUPLE_EAT_4)(o(684, s), p, o, m) +# define BOOST_PP_FOR_684_I(s, p, o, m) BOOST_PP_IF(p(685, s), m, BOOST_PP_TUPLE_EAT_2)(685, s) BOOST_PP_IF(p(685, s), BOOST_PP_FOR_685, BOOST_PP_TUPLE_EAT_4)(o(685, s), p, o, m) +# define BOOST_PP_FOR_685_I(s, p, o, m) BOOST_PP_IF(p(686, s), m, BOOST_PP_TUPLE_EAT_2)(686, s) BOOST_PP_IF(p(686, s), BOOST_PP_FOR_686, BOOST_PP_TUPLE_EAT_4)(o(686, s), p, o, m) +# define BOOST_PP_FOR_686_I(s, p, o, m) BOOST_PP_IF(p(687, s), m, BOOST_PP_TUPLE_EAT_2)(687, s) BOOST_PP_IF(p(687, s), BOOST_PP_FOR_687, BOOST_PP_TUPLE_EAT_4)(o(687, s), p, o, m) +# define BOOST_PP_FOR_687_I(s, p, o, m) BOOST_PP_IF(p(688, s), m, BOOST_PP_TUPLE_EAT_2)(688, s) BOOST_PP_IF(p(688, s), BOOST_PP_FOR_688, BOOST_PP_TUPLE_EAT_4)(o(688, s), p, o, m) +# define BOOST_PP_FOR_688_I(s, p, o, m) BOOST_PP_IF(p(689, s), m, BOOST_PP_TUPLE_EAT_2)(689, s) BOOST_PP_IF(p(689, s), BOOST_PP_FOR_689, BOOST_PP_TUPLE_EAT_4)(o(689, s), p, o, m) +# define BOOST_PP_FOR_689_I(s, p, o, m) BOOST_PP_IF(p(690, s), m, BOOST_PP_TUPLE_EAT_2)(690, s) BOOST_PP_IF(p(690, s), BOOST_PP_FOR_690, BOOST_PP_TUPLE_EAT_4)(o(690, s), p, o, m) +# define BOOST_PP_FOR_690_I(s, p, o, m) BOOST_PP_IF(p(691, s), m, BOOST_PP_TUPLE_EAT_2)(691, s) BOOST_PP_IF(p(691, s), BOOST_PP_FOR_691, BOOST_PP_TUPLE_EAT_4)(o(691, s), p, o, m) +# define BOOST_PP_FOR_691_I(s, p, o, m) BOOST_PP_IF(p(692, s), m, BOOST_PP_TUPLE_EAT_2)(692, s) BOOST_PP_IF(p(692, s), BOOST_PP_FOR_692, BOOST_PP_TUPLE_EAT_4)(o(692, s), p, o, m) +# define BOOST_PP_FOR_692_I(s, p, o, m) BOOST_PP_IF(p(693, s), m, BOOST_PP_TUPLE_EAT_2)(693, s) BOOST_PP_IF(p(693, s), BOOST_PP_FOR_693, BOOST_PP_TUPLE_EAT_4)(o(693, s), p, o, m) +# define BOOST_PP_FOR_693_I(s, p, o, m) BOOST_PP_IF(p(694, s), m, BOOST_PP_TUPLE_EAT_2)(694, s) BOOST_PP_IF(p(694, s), BOOST_PP_FOR_694, BOOST_PP_TUPLE_EAT_4)(o(694, s), p, o, m) +# define BOOST_PP_FOR_694_I(s, p, o, m) BOOST_PP_IF(p(695, s), m, BOOST_PP_TUPLE_EAT_2)(695, s) BOOST_PP_IF(p(695, s), BOOST_PP_FOR_695, BOOST_PP_TUPLE_EAT_4)(o(695, s), p, o, m) +# define BOOST_PP_FOR_695_I(s, p, o, m) BOOST_PP_IF(p(696, s), m, BOOST_PP_TUPLE_EAT_2)(696, s) BOOST_PP_IF(p(696, s), BOOST_PP_FOR_696, BOOST_PP_TUPLE_EAT_4)(o(696, s), p, o, m) +# define BOOST_PP_FOR_696_I(s, p, o, m) BOOST_PP_IF(p(697, s), m, BOOST_PP_TUPLE_EAT_2)(697, s) BOOST_PP_IF(p(697, s), BOOST_PP_FOR_697, BOOST_PP_TUPLE_EAT_4)(o(697, s), p, o, m) +# define BOOST_PP_FOR_697_I(s, p, o, m) BOOST_PP_IF(p(698, s), m, BOOST_PP_TUPLE_EAT_2)(698, s) BOOST_PP_IF(p(698, s), BOOST_PP_FOR_698, BOOST_PP_TUPLE_EAT_4)(o(698, s), p, o, m) +# define BOOST_PP_FOR_698_I(s, p, o, m) BOOST_PP_IF(p(699, s), m, BOOST_PP_TUPLE_EAT_2)(699, s) BOOST_PP_IF(p(699, s), BOOST_PP_FOR_699, BOOST_PP_TUPLE_EAT_4)(o(699, s), p, o, m) +# define BOOST_PP_FOR_699_I(s, p, o, m) BOOST_PP_IF(p(700, s), m, BOOST_PP_TUPLE_EAT_2)(700, s) BOOST_PP_IF(p(700, s), BOOST_PP_FOR_700, BOOST_PP_TUPLE_EAT_4)(o(700, s), p, o, m) +# define BOOST_PP_FOR_700_I(s, p, o, m) BOOST_PP_IF(p(701, s), m, BOOST_PP_TUPLE_EAT_2)(701, s) BOOST_PP_IF(p(701, s), BOOST_PP_FOR_701, BOOST_PP_TUPLE_EAT_4)(o(701, s), p, o, m) +# define BOOST_PP_FOR_701_I(s, p, o, m) BOOST_PP_IF(p(702, s), m, BOOST_PP_TUPLE_EAT_2)(702, s) BOOST_PP_IF(p(702, s), BOOST_PP_FOR_702, BOOST_PP_TUPLE_EAT_4)(o(702, s), p, o, m) +# define BOOST_PP_FOR_702_I(s, p, o, m) BOOST_PP_IF(p(703, s), m, BOOST_PP_TUPLE_EAT_2)(703, s) BOOST_PP_IF(p(703, s), BOOST_PP_FOR_703, BOOST_PP_TUPLE_EAT_4)(o(703, s), p, o, m) +# define BOOST_PP_FOR_703_I(s, p, o, m) BOOST_PP_IF(p(704, s), m, BOOST_PP_TUPLE_EAT_2)(704, s) BOOST_PP_IF(p(704, s), BOOST_PP_FOR_704, BOOST_PP_TUPLE_EAT_4)(o(704, s), p, o, m) +# define BOOST_PP_FOR_704_I(s, p, o, m) BOOST_PP_IF(p(705, s), m, BOOST_PP_TUPLE_EAT_2)(705, s) BOOST_PP_IF(p(705, s), BOOST_PP_FOR_705, BOOST_PP_TUPLE_EAT_4)(o(705, s), p, o, m) +# define BOOST_PP_FOR_705_I(s, p, o, m) BOOST_PP_IF(p(706, s), m, BOOST_PP_TUPLE_EAT_2)(706, s) BOOST_PP_IF(p(706, s), BOOST_PP_FOR_706, BOOST_PP_TUPLE_EAT_4)(o(706, s), p, o, m) +# define BOOST_PP_FOR_706_I(s, p, o, m) BOOST_PP_IF(p(707, s), m, BOOST_PP_TUPLE_EAT_2)(707, s) BOOST_PP_IF(p(707, s), BOOST_PP_FOR_707, BOOST_PP_TUPLE_EAT_4)(o(707, s), p, o, m) +# define BOOST_PP_FOR_707_I(s, p, o, m) BOOST_PP_IF(p(708, s), m, BOOST_PP_TUPLE_EAT_2)(708, s) BOOST_PP_IF(p(708, s), BOOST_PP_FOR_708, BOOST_PP_TUPLE_EAT_4)(o(708, s), p, o, m) +# define BOOST_PP_FOR_708_I(s, p, o, m) BOOST_PP_IF(p(709, s), m, BOOST_PP_TUPLE_EAT_2)(709, s) BOOST_PP_IF(p(709, s), BOOST_PP_FOR_709, BOOST_PP_TUPLE_EAT_4)(o(709, s), p, o, m) +# define BOOST_PP_FOR_709_I(s, p, o, m) BOOST_PP_IF(p(710, s), m, BOOST_PP_TUPLE_EAT_2)(710, s) BOOST_PP_IF(p(710, s), BOOST_PP_FOR_710, BOOST_PP_TUPLE_EAT_4)(o(710, s), p, o, m) +# define BOOST_PP_FOR_710_I(s, p, o, m) BOOST_PP_IF(p(711, s), m, BOOST_PP_TUPLE_EAT_2)(711, s) BOOST_PP_IF(p(711, s), BOOST_PP_FOR_711, BOOST_PP_TUPLE_EAT_4)(o(711, s), p, o, m) +# define BOOST_PP_FOR_711_I(s, p, o, m) BOOST_PP_IF(p(712, s), m, BOOST_PP_TUPLE_EAT_2)(712, s) BOOST_PP_IF(p(712, s), BOOST_PP_FOR_712, BOOST_PP_TUPLE_EAT_4)(o(712, s), p, o, m) +# define BOOST_PP_FOR_712_I(s, p, o, m) BOOST_PP_IF(p(713, s), m, BOOST_PP_TUPLE_EAT_2)(713, s) BOOST_PP_IF(p(713, s), BOOST_PP_FOR_713, BOOST_PP_TUPLE_EAT_4)(o(713, s), p, o, m) +# define BOOST_PP_FOR_713_I(s, p, o, m) BOOST_PP_IF(p(714, s), m, BOOST_PP_TUPLE_EAT_2)(714, s) BOOST_PP_IF(p(714, s), BOOST_PP_FOR_714, BOOST_PP_TUPLE_EAT_4)(o(714, s), p, o, m) +# define BOOST_PP_FOR_714_I(s, p, o, m) BOOST_PP_IF(p(715, s), m, BOOST_PP_TUPLE_EAT_2)(715, s) BOOST_PP_IF(p(715, s), BOOST_PP_FOR_715, BOOST_PP_TUPLE_EAT_4)(o(715, s), p, o, m) +# define BOOST_PP_FOR_715_I(s, p, o, m) BOOST_PP_IF(p(716, s), m, BOOST_PP_TUPLE_EAT_2)(716, s) BOOST_PP_IF(p(716, s), BOOST_PP_FOR_716, BOOST_PP_TUPLE_EAT_4)(o(716, s), p, o, m) +# define BOOST_PP_FOR_716_I(s, p, o, m) BOOST_PP_IF(p(717, s), m, BOOST_PP_TUPLE_EAT_2)(717, s) BOOST_PP_IF(p(717, s), BOOST_PP_FOR_717, BOOST_PP_TUPLE_EAT_4)(o(717, s), p, o, m) +# define BOOST_PP_FOR_717_I(s, p, o, m) BOOST_PP_IF(p(718, s), m, BOOST_PP_TUPLE_EAT_2)(718, s) BOOST_PP_IF(p(718, s), BOOST_PP_FOR_718, BOOST_PP_TUPLE_EAT_4)(o(718, s), p, o, m) +# define BOOST_PP_FOR_718_I(s, p, o, m) BOOST_PP_IF(p(719, s), m, BOOST_PP_TUPLE_EAT_2)(719, s) BOOST_PP_IF(p(719, s), BOOST_PP_FOR_719, BOOST_PP_TUPLE_EAT_4)(o(719, s), p, o, m) +# define BOOST_PP_FOR_719_I(s, p, o, m) BOOST_PP_IF(p(720, s), m, BOOST_PP_TUPLE_EAT_2)(720, s) BOOST_PP_IF(p(720, s), BOOST_PP_FOR_720, BOOST_PP_TUPLE_EAT_4)(o(720, s), p, o, m) +# define BOOST_PP_FOR_720_I(s, p, o, m) BOOST_PP_IF(p(721, s), m, BOOST_PP_TUPLE_EAT_2)(721, s) BOOST_PP_IF(p(721, s), BOOST_PP_FOR_721, BOOST_PP_TUPLE_EAT_4)(o(721, s), p, o, m) +# define BOOST_PP_FOR_721_I(s, p, o, m) BOOST_PP_IF(p(722, s), m, BOOST_PP_TUPLE_EAT_2)(722, s) BOOST_PP_IF(p(722, s), BOOST_PP_FOR_722, BOOST_PP_TUPLE_EAT_4)(o(722, s), p, o, m) +# define BOOST_PP_FOR_722_I(s, p, o, m) BOOST_PP_IF(p(723, s), m, BOOST_PP_TUPLE_EAT_2)(723, s) BOOST_PP_IF(p(723, s), BOOST_PP_FOR_723, BOOST_PP_TUPLE_EAT_4)(o(723, s), p, o, m) +# define BOOST_PP_FOR_723_I(s, p, o, m) BOOST_PP_IF(p(724, s), m, BOOST_PP_TUPLE_EAT_2)(724, s) BOOST_PP_IF(p(724, s), BOOST_PP_FOR_724, BOOST_PP_TUPLE_EAT_4)(o(724, s), p, o, m) +# define BOOST_PP_FOR_724_I(s, p, o, m) BOOST_PP_IF(p(725, s), m, BOOST_PP_TUPLE_EAT_2)(725, s) BOOST_PP_IF(p(725, s), BOOST_PP_FOR_725, BOOST_PP_TUPLE_EAT_4)(o(725, s), p, o, m) +# define BOOST_PP_FOR_725_I(s, p, o, m) BOOST_PP_IF(p(726, s), m, BOOST_PP_TUPLE_EAT_2)(726, s) BOOST_PP_IF(p(726, s), BOOST_PP_FOR_726, BOOST_PP_TUPLE_EAT_4)(o(726, s), p, o, m) +# define BOOST_PP_FOR_726_I(s, p, o, m) BOOST_PP_IF(p(727, s), m, BOOST_PP_TUPLE_EAT_2)(727, s) BOOST_PP_IF(p(727, s), BOOST_PP_FOR_727, BOOST_PP_TUPLE_EAT_4)(o(727, s), p, o, m) +# define BOOST_PP_FOR_727_I(s, p, o, m) BOOST_PP_IF(p(728, s), m, BOOST_PP_TUPLE_EAT_2)(728, s) BOOST_PP_IF(p(728, s), BOOST_PP_FOR_728, BOOST_PP_TUPLE_EAT_4)(o(728, s), p, o, m) +# define BOOST_PP_FOR_728_I(s, p, o, m) BOOST_PP_IF(p(729, s), m, BOOST_PP_TUPLE_EAT_2)(729, s) BOOST_PP_IF(p(729, s), BOOST_PP_FOR_729, BOOST_PP_TUPLE_EAT_4)(o(729, s), p, o, m) +# define BOOST_PP_FOR_729_I(s, p, o, m) BOOST_PP_IF(p(730, s), m, BOOST_PP_TUPLE_EAT_2)(730, s) BOOST_PP_IF(p(730, s), BOOST_PP_FOR_730, BOOST_PP_TUPLE_EAT_4)(o(730, s), p, o, m) +# define BOOST_PP_FOR_730_I(s, p, o, m) BOOST_PP_IF(p(731, s), m, BOOST_PP_TUPLE_EAT_2)(731, s) BOOST_PP_IF(p(731, s), BOOST_PP_FOR_731, BOOST_PP_TUPLE_EAT_4)(o(731, s), p, o, m) +# define BOOST_PP_FOR_731_I(s, p, o, m) BOOST_PP_IF(p(732, s), m, BOOST_PP_TUPLE_EAT_2)(732, s) BOOST_PP_IF(p(732, s), BOOST_PP_FOR_732, BOOST_PP_TUPLE_EAT_4)(o(732, s), p, o, m) +# define BOOST_PP_FOR_732_I(s, p, o, m) BOOST_PP_IF(p(733, s), m, BOOST_PP_TUPLE_EAT_2)(733, s) BOOST_PP_IF(p(733, s), BOOST_PP_FOR_733, BOOST_PP_TUPLE_EAT_4)(o(733, s), p, o, m) +# define BOOST_PP_FOR_733_I(s, p, o, m) BOOST_PP_IF(p(734, s), m, BOOST_PP_TUPLE_EAT_2)(734, s) BOOST_PP_IF(p(734, s), BOOST_PP_FOR_734, BOOST_PP_TUPLE_EAT_4)(o(734, s), p, o, m) +# define BOOST_PP_FOR_734_I(s, p, o, m) BOOST_PP_IF(p(735, s), m, BOOST_PP_TUPLE_EAT_2)(735, s) BOOST_PP_IF(p(735, s), BOOST_PP_FOR_735, BOOST_PP_TUPLE_EAT_4)(o(735, s), p, o, m) +# define BOOST_PP_FOR_735_I(s, p, o, m) BOOST_PP_IF(p(736, s), m, BOOST_PP_TUPLE_EAT_2)(736, s) BOOST_PP_IF(p(736, s), BOOST_PP_FOR_736, BOOST_PP_TUPLE_EAT_4)(o(736, s), p, o, m) +# define BOOST_PP_FOR_736_I(s, p, o, m) BOOST_PP_IF(p(737, s), m, BOOST_PP_TUPLE_EAT_2)(737, s) BOOST_PP_IF(p(737, s), BOOST_PP_FOR_737, BOOST_PP_TUPLE_EAT_4)(o(737, s), p, o, m) +# define BOOST_PP_FOR_737_I(s, p, o, m) BOOST_PP_IF(p(738, s), m, BOOST_PP_TUPLE_EAT_2)(738, s) BOOST_PP_IF(p(738, s), BOOST_PP_FOR_738, BOOST_PP_TUPLE_EAT_4)(o(738, s), p, o, m) +# define BOOST_PP_FOR_738_I(s, p, o, m) BOOST_PP_IF(p(739, s), m, BOOST_PP_TUPLE_EAT_2)(739, s) BOOST_PP_IF(p(739, s), BOOST_PP_FOR_739, BOOST_PP_TUPLE_EAT_4)(o(739, s), p, o, m) +# define BOOST_PP_FOR_739_I(s, p, o, m) BOOST_PP_IF(p(740, s), m, BOOST_PP_TUPLE_EAT_2)(740, s) BOOST_PP_IF(p(740, s), BOOST_PP_FOR_740, BOOST_PP_TUPLE_EAT_4)(o(740, s), p, o, m) +# define BOOST_PP_FOR_740_I(s, p, o, m) BOOST_PP_IF(p(741, s), m, BOOST_PP_TUPLE_EAT_2)(741, s) BOOST_PP_IF(p(741, s), BOOST_PP_FOR_741, BOOST_PP_TUPLE_EAT_4)(o(741, s), p, o, m) +# define BOOST_PP_FOR_741_I(s, p, o, m) BOOST_PP_IF(p(742, s), m, BOOST_PP_TUPLE_EAT_2)(742, s) BOOST_PP_IF(p(742, s), BOOST_PP_FOR_742, BOOST_PP_TUPLE_EAT_4)(o(742, s), p, o, m) +# define BOOST_PP_FOR_742_I(s, p, o, m) BOOST_PP_IF(p(743, s), m, BOOST_PP_TUPLE_EAT_2)(743, s) BOOST_PP_IF(p(743, s), BOOST_PP_FOR_743, BOOST_PP_TUPLE_EAT_4)(o(743, s), p, o, m) +# define BOOST_PP_FOR_743_I(s, p, o, m) BOOST_PP_IF(p(744, s), m, BOOST_PP_TUPLE_EAT_2)(744, s) BOOST_PP_IF(p(744, s), BOOST_PP_FOR_744, BOOST_PP_TUPLE_EAT_4)(o(744, s), p, o, m) +# define BOOST_PP_FOR_744_I(s, p, o, m) BOOST_PP_IF(p(745, s), m, BOOST_PP_TUPLE_EAT_2)(745, s) BOOST_PP_IF(p(745, s), BOOST_PP_FOR_745, BOOST_PP_TUPLE_EAT_4)(o(745, s), p, o, m) +# define BOOST_PP_FOR_745_I(s, p, o, m) BOOST_PP_IF(p(746, s), m, BOOST_PP_TUPLE_EAT_2)(746, s) BOOST_PP_IF(p(746, s), BOOST_PP_FOR_746, BOOST_PP_TUPLE_EAT_4)(o(746, s), p, o, m) +# define BOOST_PP_FOR_746_I(s, p, o, m) BOOST_PP_IF(p(747, s), m, BOOST_PP_TUPLE_EAT_2)(747, s) BOOST_PP_IF(p(747, s), BOOST_PP_FOR_747, BOOST_PP_TUPLE_EAT_4)(o(747, s), p, o, m) +# define BOOST_PP_FOR_747_I(s, p, o, m) BOOST_PP_IF(p(748, s), m, BOOST_PP_TUPLE_EAT_2)(748, s) BOOST_PP_IF(p(748, s), BOOST_PP_FOR_748, BOOST_PP_TUPLE_EAT_4)(o(748, s), p, o, m) +# define BOOST_PP_FOR_748_I(s, p, o, m) BOOST_PP_IF(p(749, s), m, BOOST_PP_TUPLE_EAT_2)(749, s) BOOST_PP_IF(p(749, s), BOOST_PP_FOR_749, BOOST_PP_TUPLE_EAT_4)(o(749, s), p, o, m) +# define BOOST_PP_FOR_749_I(s, p, o, m) BOOST_PP_IF(p(750, s), m, BOOST_PP_TUPLE_EAT_2)(750, s) BOOST_PP_IF(p(750, s), BOOST_PP_FOR_750, BOOST_PP_TUPLE_EAT_4)(o(750, s), p, o, m) +# define BOOST_PP_FOR_750_I(s, p, o, m) BOOST_PP_IF(p(751, s), m, BOOST_PP_TUPLE_EAT_2)(751, s) BOOST_PP_IF(p(751, s), BOOST_PP_FOR_751, BOOST_PP_TUPLE_EAT_4)(o(751, s), p, o, m) +# define BOOST_PP_FOR_751_I(s, p, o, m) BOOST_PP_IF(p(752, s), m, BOOST_PP_TUPLE_EAT_2)(752, s) BOOST_PP_IF(p(752, s), BOOST_PP_FOR_752, BOOST_PP_TUPLE_EAT_4)(o(752, s), p, o, m) +# define BOOST_PP_FOR_752_I(s, p, o, m) BOOST_PP_IF(p(753, s), m, BOOST_PP_TUPLE_EAT_2)(753, s) BOOST_PP_IF(p(753, s), BOOST_PP_FOR_753, BOOST_PP_TUPLE_EAT_4)(o(753, s), p, o, m) +# define BOOST_PP_FOR_753_I(s, p, o, m) BOOST_PP_IF(p(754, s), m, BOOST_PP_TUPLE_EAT_2)(754, s) BOOST_PP_IF(p(754, s), BOOST_PP_FOR_754, BOOST_PP_TUPLE_EAT_4)(o(754, s), p, o, m) +# define BOOST_PP_FOR_754_I(s, p, o, m) BOOST_PP_IF(p(755, s), m, BOOST_PP_TUPLE_EAT_2)(755, s) BOOST_PP_IF(p(755, s), BOOST_PP_FOR_755, BOOST_PP_TUPLE_EAT_4)(o(755, s), p, o, m) +# define BOOST_PP_FOR_755_I(s, p, o, m) BOOST_PP_IF(p(756, s), m, BOOST_PP_TUPLE_EAT_2)(756, s) BOOST_PP_IF(p(756, s), BOOST_PP_FOR_756, BOOST_PP_TUPLE_EAT_4)(o(756, s), p, o, m) +# define BOOST_PP_FOR_756_I(s, p, o, m) BOOST_PP_IF(p(757, s), m, BOOST_PP_TUPLE_EAT_2)(757, s) BOOST_PP_IF(p(757, s), BOOST_PP_FOR_757, BOOST_PP_TUPLE_EAT_4)(o(757, s), p, o, m) +# define BOOST_PP_FOR_757_I(s, p, o, m) BOOST_PP_IF(p(758, s), m, BOOST_PP_TUPLE_EAT_2)(758, s) BOOST_PP_IF(p(758, s), BOOST_PP_FOR_758, BOOST_PP_TUPLE_EAT_4)(o(758, s), p, o, m) +# define BOOST_PP_FOR_758_I(s, p, o, m) BOOST_PP_IF(p(759, s), m, BOOST_PP_TUPLE_EAT_2)(759, s) BOOST_PP_IF(p(759, s), BOOST_PP_FOR_759, BOOST_PP_TUPLE_EAT_4)(o(759, s), p, o, m) +# define BOOST_PP_FOR_759_I(s, p, o, m) BOOST_PP_IF(p(760, s), m, BOOST_PP_TUPLE_EAT_2)(760, s) BOOST_PP_IF(p(760, s), BOOST_PP_FOR_760, BOOST_PP_TUPLE_EAT_4)(o(760, s), p, o, m) +# define BOOST_PP_FOR_760_I(s, p, o, m) BOOST_PP_IF(p(761, s), m, BOOST_PP_TUPLE_EAT_2)(761, s) BOOST_PP_IF(p(761, s), BOOST_PP_FOR_761, BOOST_PP_TUPLE_EAT_4)(o(761, s), p, o, m) +# define BOOST_PP_FOR_761_I(s, p, o, m) BOOST_PP_IF(p(762, s), m, BOOST_PP_TUPLE_EAT_2)(762, s) BOOST_PP_IF(p(762, s), BOOST_PP_FOR_762, BOOST_PP_TUPLE_EAT_4)(o(762, s), p, o, m) +# define BOOST_PP_FOR_762_I(s, p, o, m) BOOST_PP_IF(p(763, s), m, BOOST_PP_TUPLE_EAT_2)(763, s) BOOST_PP_IF(p(763, s), BOOST_PP_FOR_763, BOOST_PP_TUPLE_EAT_4)(o(763, s), p, o, m) +# define BOOST_PP_FOR_763_I(s, p, o, m) BOOST_PP_IF(p(764, s), m, BOOST_PP_TUPLE_EAT_2)(764, s) BOOST_PP_IF(p(764, s), BOOST_PP_FOR_764, BOOST_PP_TUPLE_EAT_4)(o(764, s), p, o, m) +# define BOOST_PP_FOR_764_I(s, p, o, m) BOOST_PP_IF(p(765, s), m, BOOST_PP_TUPLE_EAT_2)(765, s) BOOST_PP_IF(p(765, s), BOOST_PP_FOR_765, BOOST_PP_TUPLE_EAT_4)(o(765, s), p, o, m) +# define BOOST_PP_FOR_765_I(s, p, o, m) BOOST_PP_IF(p(766, s), m, BOOST_PP_TUPLE_EAT_2)(766, s) BOOST_PP_IF(p(766, s), BOOST_PP_FOR_766, BOOST_PP_TUPLE_EAT_4)(o(766, s), p, o, m) +# define BOOST_PP_FOR_766_I(s, p, o, m) BOOST_PP_IF(p(767, s), m, BOOST_PP_TUPLE_EAT_2)(767, s) BOOST_PP_IF(p(767, s), BOOST_PP_FOR_767, BOOST_PP_TUPLE_EAT_4)(o(767, s), p, o, m) +# define BOOST_PP_FOR_767_I(s, p, o, m) BOOST_PP_IF(p(768, s), m, BOOST_PP_TUPLE_EAT_2)(768, s) BOOST_PP_IF(p(768, s), BOOST_PP_FOR_768, BOOST_PP_TUPLE_EAT_4)(o(768, s), p, o, m) +# define BOOST_PP_FOR_768_I(s, p, o, m) BOOST_PP_IF(p(769, s), m, BOOST_PP_TUPLE_EAT_2)(769, s) BOOST_PP_IF(p(769, s), BOOST_PP_FOR_769, BOOST_PP_TUPLE_EAT_4)(o(769, s), p, o, m) +# define BOOST_PP_FOR_769_I(s, p, o, m) BOOST_PP_IF(p(770, s), m, BOOST_PP_TUPLE_EAT_2)(770, s) BOOST_PP_IF(p(770, s), BOOST_PP_FOR_770, BOOST_PP_TUPLE_EAT_4)(o(770, s), p, o, m) +# define BOOST_PP_FOR_770_I(s, p, o, m) BOOST_PP_IF(p(771, s), m, BOOST_PP_TUPLE_EAT_2)(771, s) BOOST_PP_IF(p(771, s), BOOST_PP_FOR_771, BOOST_PP_TUPLE_EAT_4)(o(771, s), p, o, m) +# define BOOST_PP_FOR_771_I(s, p, o, m) BOOST_PP_IF(p(772, s), m, BOOST_PP_TUPLE_EAT_2)(772, s) BOOST_PP_IF(p(772, s), BOOST_PP_FOR_772, BOOST_PP_TUPLE_EAT_4)(o(772, s), p, o, m) +# define BOOST_PP_FOR_772_I(s, p, o, m) BOOST_PP_IF(p(773, s), m, BOOST_PP_TUPLE_EAT_2)(773, s) BOOST_PP_IF(p(773, s), BOOST_PP_FOR_773, BOOST_PP_TUPLE_EAT_4)(o(773, s), p, o, m) +# define BOOST_PP_FOR_773_I(s, p, o, m) BOOST_PP_IF(p(774, s), m, BOOST_PP_TUPLE_EAT_2)(774, s) BOOST_PP_IF(p(774, s), BOOST_PP_FOR_774, BOOST_PP_TUPLE_EAT_4)(o(774, s), p, o, m) +# define BOOST_PP_FOR_774_I(s, p, o, m) BOOST_PP_IF(p(775, s), m, BOOST_PP_TUPLE_EAT_2)(775, s) BOOST_PP_IF(p(775, s), BOOST_PP_FOR_775, BOOST_PP_TUPLE_EAT_4)(o(775, s), p, o, m) +# define BOOST_PP_FOR_775_I(s, p, o, m) BOOST_PP_IF(p(776, s), m, BOOST_PP_TUPLE_EAT_2)(776, s) BOOST_PP_IF(p(776, s), BOOST_PP_FOR_776, BOOST_PP_TUPLE_EAT_4)(o(776, s), p, o, m) +# define BOOST_PP_FOR_776_I(s, p, o, m) BOOST_PP_IF(p(777, s), m, BOOST_PP_TUPLE_EAT_2)(777, s) BOOST_PP_IF(p(777, s), BOOST_PP_FOR_777, BOOST_PP_TUPLE_EAT_4)(o(777, s), p, o, m) +# define BOOST_PP_FOR_777_I(s, p, o, m) BOOST_PP_IF(p(778, s), m, BOOST_PP_TUPLE_EAT_2)(778, s) BOOST_PP_IF(p(778, s), BOOST_PP_FOR_778, BOOST_PP_TUPLE_EAT_4)(o(778, s), p, o, m) +# define BOOST_PP_FOR_778_I(s, p, o, m) BOOST_PP_IF(p(779, s), m, BOOST_PP_TUPLE_EAT_2)(779, s) BOOST_PP_IF(p(779, s), BOOST_PP_FOR_779, BOOST_PP_TUPLE_EAT_4)(o(779, s), p, o, m) +# define BOOST_PP_FOR_779_I(s, p, o, m) BOOST_PP_IF(p(780, s), m, BOOST_PP_TUPLE_EAT_2)(780, s) BOOST_PP_IF(p(780, s), BOOST_PP_FOR_780, BOOST_PP_TUPLE_EAT_4)(o(780, s), p, o, m) +# define BOOST_PP_FOR_780_I(s, p, o, m) BOOST_PP_IF(p(781, s), m, BOOST_PP_TUPLE_EAT_2)(781, s) BOOST_PP_IF(p(781, s), BOOST_PP_FOR_781, BOOST_PP_TUPLE_EAT_4)(o(781, s), p, o, m) +# define BOOST_PP_FOR_781_I(s, p, o, m) BOOST_PP_IF(p(782, s), m, BOOST_PP_TUPLE_EAT_2)(782, s) BOOST_PP_IF(p(782, s), BOOST_PP_FOR_782, BOOST_PP_TUPLE_EAT_4)(o(782, s), p, o, m) +# define BOOST_PP_FOR_782_I(s, p, o, m) BOOST_PP_IF(p(783, s), m, BOOST_PP_TUPLE_EAT_2)(783, s) BOOST_PP_IF(p(783, s), BOOST_PP_FOR_783, BOOST_PP_TUPLE_EAT_4)(o(783, s), p, o, m) +# define BOOST_PP_FOR_783_I(s, p, o, m) BOOST_PP_IF(p(784, s), m, BOOST_PP_TUPLE_EAT_2)(784, s) BOOST_PP_IF(p(784, s), BOOST_PP_FOR_784, BOOST_PP_TUPLE_EAT_4)(o(784, s), p, o, m) +# define BOOST_PP_FOR_784_I(s, p, o, m) BOOST_PP_IF(p(785, s), m, BOOST_PP_TUPLE_EAT_2)(785, s) BOOST_PP_IF(p(785, s), BOOST_PP_FOR_785, BOOST_PP_TUPLE_EAT_4)(o(785, s), p, o, m) +# define BOOST_PP_FOR_785_I(s, p, o, m) BOOST_PP_IF(p(786, s), m, BOOST_PP_TUPLE_EAT_2)(786, s) BOOST_PP_IF(p(786, s), BOOST_PP_FOR_786, BOOST_PP_TUPLE_EAT_4)(o(786, s), p, o, m) +# define BOOST_PP_FOR_786_I(s, p, o, m) BOOST_PP_IF(p(787, s), m, BOOST_PP_TUPLE_EAT_2)(787, s) BOOST_PP_IF(p(787, s), BOOST_PP_FOR_787, BOOST_PP_TUPLE_EAT_4)(o(787, s), p, o, m) +# define BOOST_PP_FOR_787_I(s, p, o, m) BOOST_PP_IF(p(788, s), m, BOOST_PP_TUPLE_EAT_2)(788, s) BOOST_PP_IF(p(788, s), BOOST_PP_FOR_788, BOOST_PP_TUPLE_EAT_4)(o(788, s), p, o, m) +# define BOOST_PP_FOR_788_I(s, p, o, m) BOOST_PP_IF(p(789, s), m, BOOST_PP_TUPLE_EAT_2)(789, s) BOOST_PP_IF(p(789, s), BOOST_PP_FOR_789, BOOST_PP_TUPLE_EAT_4)(o(789, s), p, o, m) +# define BOOST_PP_FOR_789_I(s, p, o, m) BOOST_PP_IF(p(790, s), m, BOOST_PP_TUPLE_EAT_2)(790, s) BOOST_PP_IF(p(790, s), BOOST_PP_FOR_790, BOOST_PP_TUPLE_EAT_4)(o(790, s), p, o, m) +# define BOOST_PP_FOR_790_I(s, p, o, m) BOOST_PP_IF(p(791, s), m, BOOST_PP_TUPLE_EAT_2)(791, s) BOOST_PP_IF(p(791, s), BOOST_PP_FOR_791, BOOST_PP_TUPLE_EAT_4)(o(791, s), p, o, m) +# define BOOST_PP_FOR_791_I(s, p, o, m) BOOST_PP_IF(p(792, s), m, BOOST_PP_TUPLE_EAT_2)(792, s) BOOST_PP_IF(p(792, s), BOOST_PP_FOR_792, BOOST_PP_TUPLE_EAT_4)(o(792, s), p, o, m) +# define BOOST_PP_FOR_792_I(s, p, o, m) BOOST_PP_IF(p(793, s), m, BOOST_PP_TUPLE_EAT_2)(793, s) BOOST_PP_IF(p(793, s), BOOST_PP_FOR_793, BOOST_PP_TUPLE_EAT_4)(o(793, s), p, o, m) +# define BOOST_PP_FOR_793_I(s, p, o, m) BOOST_PP_IF(p(794, s), m, BOOST_PP_TUPLE_EAT_2)(794, s) BOOST_PP_IF(p(794, s), BOOST_PP_FOR_794, BOOST_PP_TUPLE_EAT_4)(o(794, s), p, o, m) +# define BOOST_PP_FOR_794_I(s, p, o, m) BOOST_PP_IF(p(795, s), m, BOOST_PP_TUPLE_EAT_2)(795, s) BOOST_PP_IF(p(795, s), BOOST_PP_FOR_795, BOOST_PP_TUPLE_EAT_4)(o(795, s), p, o, m) +# define BOOST_PP_FOR_795_I(s, p, o, m) BOOST_PP_IF(p(796, s), m, BOOST_PP_TUPLE_EAT_2)(796, s) BOOST_PP_IF(p(796, s), BOOST_PP_FOR_796, BOOST_PP_TUPLE_EAT_4)(o(796, s), p, o, m) +# define BOOST_PP_FOR_796_I(s, p, o, m) BOOST_PP_IF(p(797, s), m, BOOST_PP_TUPLE_EAT_2)(797, s) BOOST_PP_IF(p(797, s), BOOST_PP_FOR_797, BOOST_PP_TUPLE_EAT_4)(o(797, s), p, o, m) +# define BOOST_PP_FOR_797_I(s, p, o, m) BOOST_PP_IF(p(798, s), m, BOOST_PP_TUPLE_EAT_2)(798, s) BOOST_PP_IF(p(798, s), BOOST_PP_FOR_798, BOOST_PP_TUPLE_EAT_4)(o(798, s), p, o, m) +# define BOOST_PP_FOR_798_I(s, p, o, m) BOOST_PP_IF(p(799, s), m, BOOST_PP_TUPLE_EAT_2)(799, s) BOOST_PP_IF(p(799, s), BOOST_PP_FOR_799, BOOST_PP_TUPLE_EAT_4)(o(799, s), p, o, m) +# define BOOST_PP_FOR_799_I(s, p, o, m) BOOST_PP_IF(p(800, s), m, BOOST_PP_TUPLE_EAT_2)(800, s) BOOST_PP_IF(p(800, s), BOOST_PP_FOR_800, BOOST_PP_TUPLE_EAT_4)(o(800, s), p, o, m) +# define BOOST_PP_FOR_800_I(s, p, o, m) BOOST_PP_IF(p(801, s), m, BOOST_PP_TUPLE_EAT_2)(801, s) BOOST_PP_IF(p(801, s), BOOST_PP_FOR_801, BOOST_PP_TUPLE_EAT_4)(o(801, s), p, o, m) +# define BOOST_PP_FOR_801_I(s, p, o, m) BOOST_PP_IF(p(802, s), m, BOOST_PP_TUPLE_EAT_2)(802, s) BOOST_PP_IF(p(802, s), BOOST_PP_FOR_802, BOOST_PP_TUPLE_EAT_4)(o(802, s), p, o, m) +# define BOOST_PP_FOR_802_I(s, p, o, m) BOOST_PP_IF(p(803, s), m, BOOST_PP_TUPLE_EAT_2)(803, s) BOOST_PP_IF(p(803, s), BOOST_PP_FOR_803, BOOST_PP_TUPLE_EAT_4)(o(803, s), p, o, m) +# define BOOST_PP_FOR_803_I(s, p, o, m) BOOST_PP_IF(p(804, s), m, BOOST_PP_TUPLE_EAT_2)(804, s) BOOST_PP_IF(p(804, s), BOOST_PP_FOR_804, BOOST_PP_TUPLE_EAT_4)(o(804, s), p, o, m) +# define BOOST_PP_FOR_804_I(s, p, o, m) BOOST_PP_IF(p(805, s), m, BOOST_PP_TUPLE_EAT_2)(805, s) BOOST_PP_IF(p(805, s), BOOST_PP_FOR_805, BOOST_PP_TUPLE_EAT_4)(o(805, s), p, o, m) +# define BOOST_PP_FOR_805_I(s, p, o, m) BOOST_PP_IF(p(806, s), m, BOOST_PP_TUPLE_EAT_2)(806, s) BOOST_PP_IF(p(806, s), BOOST_PP_FOR_806, BOOST_PP_TUPLE_EAT_4)(o(806, s), p, o, m) +# define BOOST_PP_FOR_806_I(s, p, o, m) BOOST_PP_IF(p(807, s), m, BOOST_PP_TUPLE_EAT_2)(807, s) BOOST_PP_IF(p(807, s), BOOST_PP_FOR_807, BOOST_PP_TUPLE_EAT_4)(o(807, s), p, o, m) +# define BOOST_PP_FOR_807_I(s, p, o, m) BOOST_PP_IF(p(808, s), m, BOOST_PP_TUPLE_EAT_2)(808, s) BOOST_PP_IF(p(808, s), BOOST_PP_FOR_808, BOOST_PP_TUPLE_EAT_4)(o(808, s), p, o, m) +# define BOOST_PP_FOR_808_I(s, p, o, m) BOOST_PP_IF(p(809, s), m, BOOST_PP_TUPLE_EAT_2)(809, s) BOOST_PP_IF(p(809, s), BOOST_PP_FOR_809, BOOST_PP_TUPLE_EAT_4)(o(809, s), p, o, m) +# define BOOST_PP_FOR_809_I(s, p, o, m) BOOST_PP_IF(p(810, s), m, BOOST_PP_TUPLE_EAT_2)(810, s) BOOST_PP_IF(p(810, s), BOOST_PP_FOR_810, BOOST_PP_TUPLE_EAT_4)(o(810, s), p, o, m) +# define BOOST_PP_FOR_810_I(s, p, o, m) BOOST_PP_IF(p(811, s), m, BOOST_PP_TUPLE_EAT_2)(811, s) BOOST_PP_IF(p(811, s), BOOST_PP_FOR_811, BOOST_PP_TUPLE_EAT_4)(o(811, s), p, o, m) +# define BOOST_PP_FOR_811_I(s, p, o, m) BOOST_PP_IF(p(812, s), m, BOOST_PP_TUPLE_EAT_2)(812, s) BOOST_PP_IF(p(812, s), BOOST_PP_FOR_812, BOOST_PP_TUPLE_EAT_4)(o(812, s), p, o, m) +# define BOOST_PP_FOR_812_I(s, p, o, m) BOOST_PP_IF(p(813, s), m, BOOST_PP_TUPLE_EAT_2)(813, s) BOOST_PP_IF(p(813, s), BOOST_PP_FOR_813, BOOST_PP_TUPLE_EAT_4)(o(813, s), p, o, m) +# define BOOST_PP_FOR_813_I(s, p, o, m) BOOST_PP_IF(p(814, s), m, BOOST_PP_TUPLE_EAT_2)(814, s) BOOST_PP_IF(p(814, s), BOOST_PP_FOR_814, BOOST_PP_TUPLE_EAT_4)(o(814, s), p, o, m) +# define BOOST_PP_FOR_814_I(s, p, o, m) BOOST_PP_IF(p(815, s), m, BOOST_PP_TUPLE_EAT_2)(815, s) BOOST_PP_IF(p(815, s), BOOST_PP_FOR_815, BOOST_PP_TUPLE_EAT_4)(o(815, s), p, o, m) +# define BOOST_PP_FOR_815_I(s, p, o, m) BOOST_PP_IF(p(816, s), m, BOOST_PP_TUPLE_EAT_2)(816, s) BOOST_PP_IF(p(816, s), BOOST_PP_FOR_816, BOOST_PP_TUPLE_EAT_4)(o(816, s), p, o, m) +# define BOOST_PP_FOR_816_I(s, p, o, m) BOOST_PP_IF(p(817, s), m, BOOST_PP_TUPLE_EAT_2)(817, s) BOOST_PP_IF(p(817, s), BOOST_PP_FOR_817, BOOST_PP_TUPLE_EAT_4)(o(817, s), p, o, m) +# define BOOST_PP_FOR_817_I(s, p, o, m) BOOST_PP_IF(p(818, s), m, BOOST_PP_TUPLE_EAT_2)(818, s) BOOST_PP_IF(p(818, s), BOOST_PP_FOR_818, BOOST_PP_TUPLE_EAT_4)(o(818, s), p, o, m) +# define BOOST_PP_FOR_818_I(s, p, o, m) BOOST_PP_IF(p(819, s), m, BOOST_PP_TUPLE_EAT_2)(819, s) BOOST_PP_IF(p(819, s), BOOST_PP_FOR_819, BOOST_PP_TUPLE_EAT_4)(o(819, s), p, o, m) +# define BOOST_PP_FOR_819_I(s, p, o, m) BOOST_PP_IF(p(820, s), m, BOOST_PP_TUPLE_EAT_2)(820, s) BOOST_PP_IF(p(820, s), BOOST_PP_FOR_820, BOOST_PP_TUPLE_EAT_4)(o(820, s), p, o, m) +# define BOOST_PP_FOR_820_I(s, p, o, m) BOOST_PP_IF(p(821, s), m, BOOST_PP_TUPLE_EAT_2)(821, s) BOOST_PP_IF(p(821, s), BOOST_PP_FOR_821, BOOST_PP_TUPLE_EAT_4)(o(821, s), p, o, m) +# define BOOST_PP_FOR_821_I(s, p, o, m) BOOST_PP_IF(p(822, s), m, BOOST_PP_TUPLE_EAT_2)(822, s) BOOST_PP_IF(p(822, s), BOOST_PP_FOR_822, BOOST_PP_TUPLE_EAT_4)(o(822, s), p, o, m) +# define BOOST_PP_FOR_822_I(s, p, o, m) BOOST_PP_IF(p(823, s), m, BOOST_PP_TUPLE_EAT_2)(823, s) BOOST_PP_IF(p(823, s), BOOST_PP_FOR_823, BOOST_PP_TUPLE_EAT_4)(o(823, s), p, o, m) +# define BOOST_PP_FOR_823_I(s, p, o, m) BOOST_PP_IF(p(824, s), m, BOOST_PP_TUPLE_EAT_2)(824, s) BOOST_PP_IF(p(824, s), BOOST_PP_FOR_824, BOOST_PP_TUPLE_EAT_4)(o(824, s), p, o, m) +# define BOOST_PP_FOR_824_I(s, p, o, m) BOOST_PP_IF(p(825, s), m, BOOST_PP_TUPLE_EAT_2)(825, s) BOOST_PP_IF(p(825, s), BOOST_PP_FOR_825, BOOST_PP_TUPLE_EAT_4)(o(825, s), p, o, m) +# define BOOST_PP_FOR_825_I(s, p, o, m) BOOST_PP_IF(p(826, s), m, BOOST_PP_TUPLE_EAT_2)(826, s) BOOST_PP_IF(p(826, s), BOOST_PP_FOR_826, BOOST_PP_TUPLE_EAT_4)(o(826, s), p, o, m) +# define BOOST_PP_FOR_826_I(s, p, o, m) BOOST_PP_IF(p(827, s), m, BOOST_PP_TUPLE_EAT_2)(827, s) BOOST_PP_IF(p(827, s), BOOST_PP_FOR_827, BOOST_PP_TUPLE_EAT_4)(o(827, s), p, o, m) +# define BOOST_PP_FOR_827_I(s, p, o, m) BOOST_PP_IF(p(828, s), m, BOOST_PP_TUPLE_EAT_2)(828, s) BOOST_PP_IF(p(828, s), BOOST_PP_FOR_828, BOOST_PP_TUPLE_EAT_4)(o(828, s), p, o, m) +# define BOOST_PP_FOR_828_I(s, p, o, m) BOOST_PP_IF(p(829, s), m, BOOST_PP_TUPLE_EAT_2)(829, s) BOOST_PP_IF(p(829, s), BOOST_PP_FOR_829, BOOST_PP_TUPLE_EAT_4)(o(829, s), p, o, m) +# define BOOST_PP_FOR_829_I(s, p, o, m) BOOST_PP_IF(p(830, s), m, BOOST_PP_TUPLE_EAT_2)(830, s) BOOST_PP_IF(p(830, s), BOOST_PP_FOR_830, BOOST_PP_TUPLE_EAT_4)(o(830, s), p, o, m) +# define BOOST_PP_FOR_830_I(s, p, o, m) BOOST_PP_IF(p(831, s), m, BOOST_PP_TUPLE_EAT_2)(831, s) BOOST_PP_IF(p(831, s), BOOST_PP_FOR_831, BOOST_PP_TUPLE_EAT_4)(o(831, s), p, o, m) +# define BOOST_PP_FOR_831_I(s, p, o, m) BOOST_PP_IF(p(832, s), m, BOOST_PP_TUPLE_EAT_2)(832, s) BOOST_PP_IF(p(832, s), BOOST_PP_FOR_832, BOOST_PP_TUPLE_EAT_4)(o(832, s), p, o, m) +# define BOOST_PP_FOR_832_I(s, p, o, m) BOOST_PP_IF(p(833, s), m, BOOST_PP_TUPLE_EAT_2)(833, s) BOOST_PP_IF(p(833, s), BOOST_PP_FOR_833, BOOST_PP_TUPLE_EAT_4)(o(833, s), p, o, m) +# define BOOST_PP_FOR_833_I(s, p, o, m) BOOST_PP_IF(p(834, s), m, BOOST_PP_TUPLE_EAT_2)(834, s) BOOST_PP_IF(p(834, s), BOOST_PP_FOR_834, BOOST_PP_TUPLE_EAT_4)(o(834, s), p, o, m) +# define BOOST_PP_FOR_834_I(s, p, o, m) BOOST_PP_IF(p(835, s), m, BOOST_PP_TUPLE_EAT_2)(835, s) BOOST_PP_IF(p(835, s), BOOST_PP_FOR_835, BOOST_PP_TUPLE_EAT_4)(o(835, s), p, o, m) +# define BOOST_PP_FOR_835_I(s, p, o, m) BOOST_PP_IF(p(836, s), m, BOOST_PP_TUPLE_EAT_2)(836, s) BOOST_PP_IF(p(836, s), BOOST_PP_FOR_836, BOOST_PP_TUPLE_EAT_4)(o(836, s), p, o, m) +# define BOOST_PP_FOR_836_I(s, p, o, m) BOOST_PP_IF(p(837, s), m, BOOST_PP_TUPLE_EAT_2)(837, s) BOOST_PP_IF(p(837, s), BOOST_PP_FOR_837, BOOST_PP_TUPLE_EAT_4)(o(837, s), p, o, m) +# define BOOST_PP_FOR_837_I(s, p, o, m) BOOST_PP_IF(p(838, s), m, BOOST_PP_TUPLE_EAT_2)(838, s) BOOST_PP_IF(p(838, s), BOOST_PP_FOR_838, BOOST_PP_TUPLE_EAT_4)(o(838, s), p, o, m) +# define BOOST_PP_FOR_838_I(s, p, o, m) BOOST_PP_IF(p(839, s), m, BOOST_PP_TUPLE_EAT_2)(839, s) BOOST_PP_IF(p(839, s), BOOST_PP_FOR_839, BOOST_PP_TUPLE_EAT_4)(o(839, s), p, o, m) +# define BOOST_PP_FOR_839_I(s, p, o, m) BOOST_PP_IF(p(840, s), m, BOOST_PP_TUPLE_EAT_2)(840, s) BOOST_PP_IF(p(840, s), BOOST_PP_FOR_840, BOOST_PP_TUPLE_EAT_4)(o(840, s), p, o, m) +# define BOOST_PP_FOR_840_I(s, p, o, m) BOOST_PP_IF(p(841, s), m, BOOST_PP_TUPLE_EAT_2)(841, s) BOOST_PP_IF(p(841, s), BOOST_PP_FOR_841, BOOST_PP_TUPLE_EAT_4)(o(841, s), p, o, m) +# define BOOST_PP_FOR_841_I(s, p, o, m) BOOST_PP_IF(p(842, s), m, BOOST_PP_TUPLE_EAT_2)(842, s) BOOST_PP_IF(p(842, s), BOOST_PP_FOR_842, BOOST_PP_TUPLE_EAT_4)(o(842, s), p, o, m) +# define BOOST_PP_FOR_842_I(s, p, o, m) BOOST_PP_IF(p(843, s), m, BOOST_PP_TUPLE_EAT_2)(843, s) BOOST_PP_IF(p(843, s), BOOST_PP_FOR_843, BOOST_PP_TUPLE_EAT_4)(o(843, s), p, o, m) +# define BOOST_PP_FOR_843_I(s, p, o, m) BOOST_PP_IF(p(844, s), m, BOOST_PP_TUPLE_EAT_2)(844, s) BOOST_PP_IF(p(844, s), BOOST_PP_FOR_844, BOOST_PP_TUPLE_EAT_4)(o(844, s), p, o, m) +# define BOOST_PP_FOR_844_I(s, p, o, m) BOOST_PP_IF(p(845, s), m, BOOST_PP_TUPLE_EAT_2)(845, s) BOOST_PP_IF(p(845, s), BOOST_PP_FOR_845, BOOST_PP_TUPLE_EAT_4)(o(845, s), p, o, m) +# define BOOST_PP_FOR_845_I(s, p, o, m) BOOST_PP_IF(p(846, s), m, BOOST_PP_TUPLE_EAT_2)(846, s) BOOST_PP_IF(p(846, s), BOOST_PP_FOR_846, BOOST_PP_TUPLE_EAT_4)(o(846, s), p, o, m) +# define BOOST_PP_FOR_846_I(s, p, o, m) BOOST_PP_IF(p(847, s), m, BOOST_PP_TUPLE_EAT_2)(847, s) BOOST_PP_IF(p(847, s), BOOST_PP_FOR_847, BOOST_PP_TUPLE_EAT_4)(o(847, s), p, o, m) +# define BOOST_PP_FOR_847_I(s, p, o, m) BOOST_PP_IF(p(848, s), m, BOOST_PP_TUPLE_EAT_2)(848, s) BOOST_PP_IF(p(848, s), BOOST_PP_FOR_848, BOOST_PP_TUPLE_EAT_4)(o(848, s), p, o, m) +# define BOOST_PP_FOR_848_I(s, p, o, m) BOOST_PP_IF(p(849, s), m, BOOST_PP_TUPLE_EAT_2)(849, s) BOOST_PP_IF(p(849, s), BOOST_PP_FOR_849, BOOST_PP_TUPLE_EAT_4)(o(849, s), p, o, m) +# define BOOST_PP_FOR_849_I(s, p, o, m) BOOST_PP_IF(p(850, s), m, BOOST_PP_TUPLE_EAT_2)(850, s) BOOST_PP_IF(p(850, s), BOOST_PP_FOR_850, BOOST_PP_TUPLE_EAT_4)(o(850, s), p, o, m) +# define BOOST_PP_FOR_850_I(s, p, o, m) BOOST_PP_IF(p(851, s), m, BOOST_PP_TUPLE_EAT_2)(851, s) BOOST_PP_IF(p(851, s), BOOST_PP_FOR_851, BOOST_PP_TUPLE_EAT_4)(o(851, s), p, o, m) +# define BOOST_PP_FOR_851_I(s, p, o, m) BOOST_PP_IF(p(852, s), m, BOOST_PP_TUPLE_EAT_2)(852, s) BOOST_PP_IF(p(852, s), BOOST_PP_FOR_852, BOOST_PP_TUPLE_EAT_4)(o(852, s), p, o, m) +# define BOOST_PP_FOR_852_I(s, p, o, m) BOOST_PP_IF(p(853, s), m, BOOST_PP_TUPLE_EAT_2)(853, s) BOOST_PP_IF(p(853, s), BOOST_PP_FOR_853, BOOST_PP_TUPLE_EAT_4)(o(853, s), p, o, m) +# define BOOST_PP_FOR_853_I(s, p, o, m) BOOST_PP_IF(p(854, s), m, BOOST_PP_TUPLE_EAT_2)(854, s) BOOST_PP_IF(p(854, s), BOOST_PP_FOR_854, BOOST_PP_TUPLE_EAT_4)(o(854, s), p, o, m) +# define BOOST_PP_FOR_854_I(s, p, o, m) BOOST_PP_IF(p(855, s), m, BOOST_PP_TUPLE_EAT_2)(855, s) BOOST_PP_IF(p(855, s), BOOST_PP_FOR_855, BOOST_PP_TUPLE_EAT_4)(o(855, s), p, o, m) +# define BOOST_PP_FOR_855_I(s, p, o, m) BOOST_PP_IF(p(856, s), m, BOOST_PP_TUPLE_EAT_2)(856, s) BOOST_PP_IF(p(856, s), BOOST_PP_FOR_856, BOOST_PP_TUPLE_EAT_4)(o(856, s), p, o, m) +# define BOOST_PP_FOR_856_I(s, p, o, m) BOOST_PP_IF(p(857, s), m, BOOST_PP_TUPLE_EAT_2)(857, s) BOOST_PP_IF(p(857, s), BOOST_PP_FOR_857, BOOST_PP_TUPLE_EAT_4)(o(857, s), p, o, m) +# define BOOST_PP_FOR_857_I(s, p, o, m) BOOST_PP_IF(p(858, s), m, BOOST_PP_TUPLE_EAT_2)(858, s) BOOST_PP_IF(p(858, s), BOOST_PP_FOR_858, BOOST_PP_TUPLE_EAT_4)(o(858, s), p, o, m) +# define BOOST_PP_FOR_858_I(s, p, o, m) BOOST_PP_IF(p(859, s), m, BOOST_PP_TUPLE_EAT_2)(859, s) BOOST_PP_IF(p(859, s), BOOST_PP_FOR_859, BOOST_PP_TUPLE_EAT_4)(o(859, s), p, o, m) +# define BOOST_PP_FOR_859_I(s, p, o, m) BOOST_PP_IF(p(860, s), m, BOOST_PP_TUPLE_EAT_2)(860, s) BOOST_PP_IF(p(860, s), BOOST_PP_FOR_860, BOOST_PP_TUPLE_EAT_4)(o(860, s), p, o, m) +# define BOOST_PP_FOR_860_I(s, p, o, m) BOOST_PP_IF(p(861, s), m, BOOST_PP_TUPLE_EAT_2)(861, s) BOOST_PP_IF(p(861, s), BOOST_PP_FOR_861, BOOST_PP_TUPLE_EAT_4)(o(861, s), p, o, m) +# define BOOST_PP_FOR_861_I(s, p, o, m) BOOST_PP_IF(p(862, s), m, BOOST_PP_TUPLE_EAT_2)(862, s) BOOST_PP_IF(p(862, s), BOOST_PP_FOR_862, BOOST_PP_TUPLE_EAT_4)(o(862, s), p, o, m) +# define BOOST_PP_FOR_862_I(s, p, o, m) BOOST_PP_IF(p(863, s), m, BOOST_PP_TUPLE_EAT_2)(863, s) BOOST_PP_IF(p(863, s), BOOST_PP_FOR_863, BOOST_PP_TUPLE_EAT_4)(o(863, s), p, o, m) +# define BOOST_PP_FOR_863_I(s, p, o, m) BOOST_PP_IF(p(864, s), m, BOOST_PP_TUPLE_EAT_2)(864, s) BOOST_PP_IF(p(864, s), BOOST_PP_FOR_864, BOOST_PP_TUPLE_EAT_4)(o(864, s), p, o, m) +# define BOOST_PP_FOR_864_I(s, p, o, m) BOOST_PP_IF(p(865, s), m, BOOST_PP_TUPLE_EAT_2)(865, s) BOOST_PP_IF(p(865, s), BOOST_PP_FOR_865, BOOST_PP_TUPLE_EAT_4)(o(865, s), p, o, m) +# define BOOST_PP_FOR_865_I(s, p, o, m) BOOST_PP_IF(p(866, s), m, BOOST_PP_TUPLE_EAT_2)(866, s) BOOST_PP_IF(p(866, s), BOOST_PP_FOR_866, BOOST_PP_TUPLE_EAT_4)(o(866, s), p, o, m) +# define BOOST_PP_FOR_866_I(s, p, o, m) BOOST_PP_IF(p(867, s), m, BOOST_PP_TUPLE_EAT_2)(867, s) BOOST_PP_IF(p(867, s), BOOST_PP_FOR_867, BOOST_PP_TUPLE_EAT_4)(o(867, s), p, o, m) +# define BOOST_PP_FOR_867_I(s, p, o, m) BOOST_PP_IF(p(868, s), m, BOOST_PP_TUPLE_EAT_2)(868, s) BOOST_PP_IF(p(868, s), BOOST_PP_FOR_868, BOOST_PP_TUPLE_EAT_4)(o(868, s), p, o, m) +# define BOOST_PP_FOR_868_I(s, p, o, m) BOOST_PP_IF(p(869, s), m, BOOST_PP_TUPLE_EAT_2)(869, s) BOOST_PP_IF(p(869, s), BOOST_PP_FOR_869, BOOST_PP_TUPLE_EAT_4)(o(869, s), p, o, m) +# define BOOST_PP_FOR_869_I(s, p, o, m) BOOST_PP_IF(p(870, s), m, BOOST_PP_TUPLE_EAT_2)(870, s) BOOST_PP_IF(p(870, s), BOOST_PP_FOR_870, BOOST_PP_TUPLE_EAT_4)(o(870, s), p, o, m) +# define BOOST_PP_FOR_870_I(s, p, o, m) BOOST_PP_IF(p(871, s), m, BOOST_PP_TUPLE_EAT_2)(871, s) BOOST_PP_IF(p(871, s), BOOST_PP_FOR_871, BOOST_PP_TUPLE_EAT_4)(o(871, s), p, o, m) +# define BOOST_PP_FOR_871_I(s, p, o, m) BOOST_PP_IF(p(872, s), m, BOOST_PP_TUPLE_EAT_2)(872, s) BOOST_PP_IF(p(872, s), BOOST_PP_FOR_872, BOOST_PP_TUPLE_EAT_4)(o(872, s), p, o, m) +# define BOOST_PP_FOR_872_I(s, p, o, m) BOOST_PP_IF(p(873, s), m, BOOST_PP_TUPLE_EAT_2)(873, s) BOOST_PP_IF(p(873, s), BOOST_PP_FOR_873, BOOST_PP_TUPLE_EAT_4)(o(873, s), p, o, m) +# define BOOST_PP_FOR_873_I(s, p, o, m) BOOST_PP_IF(p(874, s), m, BOOST_PP_TUPLE_EAT_2)(874, s) BOOST_PP_IF(p(874, s), BOOST_PP_FOR_874, BOOST_PP_TUPLE_EAT_4)(o(874, s), p, o, m) +# define BOOST_PP_FOR_874_I(s, p, o, m) BOOST_PP_IF(p(875, s), m, BOOST_PP_TUPLE_EAT_2)(875, s) BOOST_PP_IF(p(875, s), BOOST_PP_FOR_875, BOOST_PP_TUPLE_EAT_4)(o(875, s), p, o, m) +# define BOOST_PP_FOR_875_I(s, p, o, m) BOOST_PP_IF(p(876, s), m, BOOST_PP_TUPLE_EAT_2)(876, s) BOOST_PP_IF(p(876, s), BOOST_PP_FOR_876, BOOST_PP_TUPLE_EAT_4)(o(876, s), p, o, m) +# define BOOST_PP_FOR_876_I(s, p, o, m) BOOST_PP_IF(p(877, s), m, BOOST_PP_TUPLE_EAT_2)(877, s) BOOST_PP_IF(p(877, s), BOOST_PP_FOR_877, BOOST_PP_TUPLE_EAT_4)(o(877, s), p, o, m) +# define BOOST_PP_FOR_877_I(s, p, o, m) BOOST_PP_IF(p(878, s), m, BOOST_PP_TUPLE_EAT_2)(878, s) BOOST_PP_IF(p(878, s), BOOST_PP_FOR_878, BOOST_PP_TUPLE_EAT_4)(o(878, s), p, o, m) +# define BOOST_PP_FOR_878_I(s, p, o, m) BOOST_PP_IF(p(879, s), m, BOOST_PP_TUPLE_EAT_2)(879, s) BOOST_PP_IF(p(879, s), BOOST_PP_FOR_879, BOOST_PP_TUPLE_EAT_4)(o(879, s), p, o, m) +# define BOOST_PP_FOR_879_I(s, p, o, m) BOOST_PP_IF(p(880, s), m, BOOST_PP_TUPLE_EAT_2)(880, s) BOOST_PP_IF(p(880, s), BOOST_PP_FOR_880, BOOST_PP_TUPLE_EAT_4)(o(880, s), p, o, m) +# define BOOST_PP_FOR_880_I(s, p, o, m) BOOST_PP_IF(p(881, s), m, BOOST_PP_TUPLE_EAT_2)(881, s) BOOST_PP_IF(p(881, s), BOOST_PP_FOR_881, BOOST_PP_TUPLE_EAT_4)(o(881, s), p, o, m) +# define BOOST_PP_FOR_881_I(s, p, o, m) BOOST_PP_IF(p(882, s), m, BOOST_PP_TUPLE_EAT_2)(882, s) BOOST_PP_IF(p(882, s), BOOST_PP_FOR_882, BOOST_PP_TUPLE_EAT_4)(o(882, s), p, o, m) +# define BOOST_PP_FOR_882_I(s, p, o, m) BOOST_PP_IF(p(883, s), m, BOOST_PP_TUPLE_EAT_2)(883, s) BOOST_PP_IF(p(883, s), BOOST_PP_FOR_883, BOOST_PP_TUPLE_EAT_4)(o(883, s), p, o, m) +# define BOOST_PP_FOR_883_I(s, p, o, m) BOOST_PP_IF(p(884, s), m, BOOST_PP_TUPLE_EAT_2)(884, s) BOOST_PP_IF(p(884, s), BOOST_PP_FOR_884, BOOST_PP_TUPLE_EAT_4)(o(884, s), p, o, m) +# define BOOST_PP_FOR_884_I(s, p, o, m) BOOST_PP_IF(p(885, s), m, BOOST_PP_TUPLE_EAT_2)(885, s) BOOST_PP_IF(p(885, s), BOOST_PP_FOR_885, BOOST_PP_TUPLE_EAT_4)(o(885, s), p, o, m) +# define BOOST_PP_FOR_885_I(s, p, o, m) BOOST_PP_IF(p(886, s), m, BOOST_PP_TUPLE_EAT_2)(886, s) BOOST_PP_IF(p(886, s), BOOST_PP_FOR_886, BOOST_PP_TUPLE_EAT_4)(o(886, s), p, o, m) +# define BOOST_PP_FOR_886_I(s, p, o, m) BOOST_PP_IF(p(887, s), m, BOOST_PP_TUPLE_EAT_2)(887, s) BOOST_PP_IF(p(887, s), BOOST_PP_FOR_887, BOOST_PP_TUPLE_EAT_4)(o(887, s), p, o, m) +# define BOOST_PP_FOR_887_I(s, p, o, m) BOOST_PP_IF(p(888, s), m, BOOST_PP_TUPLE_EAT_2)(888, s) BOOST_PP_IF(p(888, s), BOOST_PP_FOR_888, BOOST_PP_TUPLE_EAT_4)(o(888, s), p, o, m) +# define BOOST_PP_FOR_888_I(s, p, o, m) BOOST_PP_IF(p(889, s), m, BOOST_PP_TUPLE_EAT_2)(889, s) BOOST_PP_IF(p(889, s), BOOST_PP_FOR_889, BOOST_PP_TUPLE_EAT_4)(o(889, s), p, o, m) +# define BOOST_PP_FOR_889_I(s, p, o, m) BOOST_PP_IF(p(890, s), m, BOOST_PP_TUPLE_EAT_2)(890, s) BOOST_PP_IF(p(890, s), BOOST_PP_FOR_890, BOOST_PP_TUPLE_EAT_4)(o(890, s), p, o, m) +# define BOOST_PP_FOR_890_I(s, p, o, m) BOOST_PP_IF(p(891, s), m, BOOST_PP_TUPLE_EAT_2)(891, s) BOOST_PP_IF(p(891, s), BOOST_PP_FOR_891, BOOST_PP_TUPLE_EAT_4)(o(891, s), p, o, m) +# define BOOST_PP_FOR_891_I(s, p, o, m) BOOST_PP_IF(p(892, s), m, BOOST_PP_TUPLE_EAT_2)(892, s) BOOST_PP_IF(p(892, s), BOOST_PP_FOR_892, BOOST_PP_TUPLE_EAT_4)(o(892, s), p, o, m) +# define BOOST_PP_FOR_892_I(s, p, o, m) BOOST_PP_IF(p(893, s), m, BOOST_PP_TUPLE_EAT_2)(893, s) BOOST_PP_IF(p(893, s), BOOST_PP_FOR_893, BOOST_PP_TUPLE_EAT_4)(o(893, s), p, o, m) +# define BOOST_PP_FOR_893_I(s, p, o, m) BOOST_PP_IF(p(894, s), m, BOOST_PP_TUPLE_EAT_2)(894, s) BOOST_PP_IF(p(894, s), BOOST_PP_FOR_894, BOOST_PP_TUPLE_EAT_4)(o(894, s), p, o, m) +# define BOOST_PP_FOR_894_I(s, p, o, m) BOOST_PP_IF(p(895, s), m, BOOST_PP_TUPLE_EAT_2)(895, s) BOOST_PP_IF(p(895, s), BOOST_PP_FOR_895, BOOST_PP_TUPLE_EAT_4)(o(895, s), p, o, m) +# define BOOST_PP_FOR_895_I(s, p, o, m) BOOST_PP_IF(p(896, s), m, BOOST_PP_TUPLE_EAT_2)(896, s) BOOST_PP_IF(p(896, s), BOOST_PP_FOR_896, BOOST_PP_TUPLE_EAT_4)(o(896, s), p, o, m) +# define BOOST_PP_FOR_896_I(s, p, o, m) BOOST_PP_IF(p(897, s), m, BOOST_PP_TUPLE_EAT_2)(897, s) BOOST_PP_IF(p(897, s), BOOST_PP_FOR_897, BOOST_PP_TUPLE_EAT_4)(o(897, s), p, o, m) +# define BOOST_PP_FOR_897_I(s, p, o, m) BOOST_PP_IF(p(898, s), m, BOOST_PP_TUPLE_EAT_2)(898, s) BOOST_PP_IF(p(898, s), BOOST_PP_FOR_898, BOOST_PP_TUPLE_EAT_4)(o(898, s), p, o, m) +# define BOOST_PP_FOR_898_I(s, p, o, m) BOOST_PP_IF(p(899, s), m, BOOST_PP_TUPLE_EAT_2)(899, s) BOOST_PP_IF(p(899, s), BOOST_PP_FOR_899, BOOST_PP_TUPLE_EAT_4)(o(899, s), p, o, m) +# define BOOST_PP_FOR_899_I(s, p, o, m) BOOST_PP_IF(p(900, s), m, BOOST_PP_TUPLE_EAT_2)(900, s) BOOST_PP_IF(p(900, s), BOOST_PP_FOR_900, BOOST_PP_TUPLE_EAT_4)(o(900, s), p, o, m) +# define BOOST_PP_FOR_900_I(s, p, o, m) BOOST_PP_IF(p(901, s), m, BOOST_PP_TUPLE_EAT_2)(901, s) BOOST_PP_IF(p(901, s), BOOST_PP_FOR_901, BOOST_PP_TUPLE_EAT_4)(o(901, s), p, o, m) +# define BOOST_PP_FOR_901_I(s, p, o, m) BOOST_PP_IF(p(902, s), m, BOOST_PP_TUPLE_EAT_2)(902, s) BOOST_PP_IF(p(902, s), BOOST_PP_FOR_902, BOOST_PP_TUPLE_EAT_4)(o(902, s), p, o, m) +# define BOOST_PP_FOR_902_I(s, p, o, m) BOOST_PP_IF(p(903, s), m, BOOST_PP_TUPLE_EAT_2)(903, s) BOOST_PP_IF(p(903, s), BOOST_PP_FOR_903, BOOST_PP_TUPLE_EAT_4)(o(903, s), p, o, m) +# define BOOST_PP_FOR_903_I(s, p, o, m) BOOST_PP_IF(p(904, s), m, BOOST_PP_TUPLE_EAT_2)(904, s) BOOST_PP_IF(p(904, s), BOOST_PP_FOR_904, BOOST_PP_TUPLE_EAT_4)(o(904, s), p, o, m) +# define BOOST_PP_FOR_904_I(s, p, o, m) BOOST_PP_IF(p(905, s), m, BOOST_PP_TUPLE_EAT_2)(905, s) BOOST_PP_IF(p(905, s), BOOST_PP_FOR_905, BOOST_PP_TUPLE_EAT_4)(o(905, s), p, o, m) +# define BOOST_PP_FOR_905_I(s, p, o, m) BOOST_PP_IF(p(906, s), m, BOOST_PP_TUPLE_EAT_2)(906, s) BOOST_PP_IF(p(906, s), BOOST_PP_FOR_906, BOOST_PP_TUPLE_EAT_4)(o(906, s), p, o, m) +# define BOOST_PP_FOR_906_I(s, p, o, m) BOOST_PP_IF(p(907, s), m, BOOST_PP_TUPLE_EAT_2)(907, s) BOOST_PP_IF(p(907, s), BOOST_PP_FOR_907, BOOST_PP_TUPLE_EAT_4)(o(907, s), p, o, m) +# define BOOST_PP_FOR_907_I(s, p, o, m) BOOST_PP_IF(p(908, s), m, BOOST_PP_TUPLE_EAT_2)(908, s) BOOST_PP_IF(p(908, s), BOOST_PP_FOR_908, BOOST_PP_TUPLE_EAT_4)(o(908, s), p, o, m) +# define BOOST_PP_FOR_908_I(s, p, o, m) BOOST_PP_IF(p(909, s), m, BOOST_PP_TUPLE_EAT_2)(909, s) BOOST_PP_IF(p(909, s), BOOST_PP_FOR_909, BOOST_PP_TUPLE_EAT_4)(o(909, s), p, o, m) +# define BOOST_PP_FOR_909_I(s, p, o, m) BOOST_PP_IF(p(910, s), m, BOOST_PP_TUPLE_EAT_2)(910, s) BOOST_PP_IF(p(910, s), BOOST_PP_FOR_910, BOOST_PP_TUPLE_EAT_4)(o(910, s), p, o, m) +# define BOOST_PP_FOR_910_I(s, p, o, m) BOOST_PP_IF(p(911, s), m, BOOST_PP_TUPLE_EAT_2)(911, s) BOOST_PP_IF(p(911, s), BOOST_PP_FOR_911, BOOST_PP_TUPLE_EAT_4)(o(911, s), p, o, m) +# define BOOST_PP_FOR_911_I(s, p, o, m) BOOST_PP_IF(p(912, s), m, BOOST_PP_TUPLE_EAT_2)(912, s) BOOST_PP_IF(p(912, s), BOOST_PP_FOR_912, BOOST_PP_TUPLE_EAT_4)(o(912, s), p, o, m) +# define BOOST_PP_FOR_912_I(s, p, o, m) BOOST_PP_IF(p(913, s), m, BOOST_PP_TUPLE_EAT_2)(913, s) BOOST_PP_IF(p(913, s), BOOST_PP_FOR_913, BOOST_PP_TUPLE_EAT_4)(o(913, s), p, o, m) +# define BOOST_PP_FOR_913_I(s, p, o, m) BOOST_PP_IF(p(914, s), m, BOOST_PP_TUPLE_EAT_2)(914, s) BOOST_PP_IF(p(914, s), BOOST_PP_FOR_914, BOOST_PP_TUPLE_EAT_4)(o(914, s), p, o, m) +# define BOOST_PP_FOR_914_I(s, p, o, m) BOOST_PP_IF(p(915, s), m, BOOST_PP_TUPLE_EAT_2)(915, s) BOOST_PP_IF(p(915, s), BOOST_PP_FOR_915, BOOST_PP_TUPLE_EAT_4)(o(915, s), p, o, m) +# define BOOST_PP_FOR_915_I(s, p, o, m) BOOST_PP_IF(p(916, s), m, BOOST_PP_TUPLE_EAT_2)(916, s) BOOST_PP_IF(p(916, s), BOOST_PP_FOR_916, BOOST_PP_TUPLE_EAT_4)(o(916, s), p, o, m) +# define BOOST_PP_FOR_916_I(s, p, o, m) BOOST_PP_IF(p(917, s), m, BOOST_PP_TUPLE_EAT_2)(917, s) BOOST_PP_IF(p(917, s), BOOST_PP_FOR_917, BOOST_PP_TUPLE_EAT_4)(o(917, s), p, o, m) +# define BOOST_PP_FOR_917_I(s, p, o, m) BOOST_PP_IF(p(918, s), m, BOOST_PP_TUPLE_EAT_2)(918, s) BOOST_PP_IF(p(918, s), BOOST_PP_FOR_918, BOOST_PP_TUPLE_EAT_4)(o(918, s), p, o, m) +# define BOOST_PP_FOR_918_I(s, p, o, m) BOOST_PP_IF(p(919, s), m, BOOST_PP_TUPLE_EAT_2)(919, s) BOOST_PP_IF(p(919, s), BOOST_PP_FOR_919, BOOST_PP_TUPLE_EAT_4)(o(919, s), p, o, m) +# define BOOST_PP_FOR_919_I(s, p, o, m) BOOST_PP_IF(p(920, s), m, BOOST_PP_TUPLE_EAT_2)(920, s) BOOST_PP_IF(p(920, s), BOOST_PP_FOR_920, BOOST_PP_TUPLE_EAT_4)(o(920, s), p, o, m) +# define BOOST_PP_FOR_920_I(s, p, o, m) BOOST_PP_IF(p(921, s), m, BOOST_PP_TUPLE_EAT_2)(921, s) BOOST_PP_IF(p(921, s), BOOST_PP_FOR_921, BOOST_PP_TUPLE_EAT_4)(o(921, s), p, o, m) +# define BOOST_PP_FOR_921_I(s, p, o, m) BOOST_PP_IF(p(922, s), m, BOOST_PP_TUPLE_EAT_2)(922, s) BOOST_PP_IF(p(922, s), BOOST_PP_FOR_922, BOOST_PP_TUPLE_EAT_4)(o(922, s), p, o, m) +# define BOOST_PP_FOR_922_I(s, p, o, m) BOOST_PP_IF(p(923, s), m, BOOST_PP_TUPLE_EAT_2)(923, s) BOOST_PP_IF(p(923, s), BOOST_PP_FOR_923, BOOST_PP_TUPLE_EAT_4)(o(923, s), p, o, m) +# define BOOST_PP_FOR_923_I(s, p, o, m) BOOST_PP_IF(p(924, s), m, BOOST_PP_TUPLE_EAT_2)(924, s) BOOST_PP_IF(p(924, s), BOOST_PP_FOR_924, BOOST_PP_TUPLE_EAT_4)(o(924, s), p, o, m) +# define BOOST_PP_FOR_924_I(s, p, o, m) BOOST_PP_IF(p(925, s), m, BOOST_PP_TUPLE_EAT_2)(925, s) BOOST_PP_IF(p(925, s), BOOST_PP_FOR_925, BOOST_PP_TUPLE_EAT_4)(o(925, s), p, o, m) +# define BOOST_PP_FOR_925_I(s, p, o, m) BOOST_PP_IF(p(926, s), m, BOOST_PP_TUPLE_EAT_2)(926, s) BOOST_PP_IF(p(926, s), BOOST_PP_FOR_926, BOOST_PP_TUPLE_EAT_4)(o(926, s), p, o, m) +# define BOOST_PP_FOR_926_I(s, p, o, m) BOOST_PP_IF(p(927, s), m, BOOST_PP_TUPLE_EAT_2)(927, s) BOOST_PP_IF(p(927, s), BOOST_PP_FOR_927, BOOST_PP_TUPLE_EAT_4)(o(927, s), p, o, m) +# define BOOST_PP_FOR_927_I(s, p, o, m) BOOST_PP_IF(p(928, s), m, BOOST_PP_TUPLE_EAT_2)(928, s) BOOST_PP_IF(p(928, s), BOOST_PP_FOR_928, BOOST_PP_TUPLE_EAT_4)(o(928, s), p, o, m) +# define BOOST_PP_FOR_928_I(s, p, o, m) BOOST_PP_IF(p(929, s), m, BOOST_PP_TUPLE_EAT_2)(929, s) BOOST_PP_IF(p(929, s), BOOST_PP_FOR_929, BOOST_PP_TUPLE_EAT_4)(o(929, s), p, o, m) +# define BOOST_PP_FOR_929_I(s, p, o, m) BOOST_PP_IF(p(930, s), m, BOOST_PP_TUPLE_EAT_2)(930, s) BOOST_PP_IF(p(930, s), BOOST_PP_FOR_930, BOOST_PP_TUPLE_EAT_4)(o(930, s), p, o, m) +# define BOOST_PP_FOR_930_I(s, p, o, m) BOOST_PP_IF(p(931, s), m, BOOST_PP_TUPLE_EAT_2)(931, s) BOOST_PP_IF(p(931, s), BOOST_PP_FOR_931, BOOST_PP_TUPLE_EAT_4)(o(931, s), p, o, m) +# define BOOST_PP_FOR_931_I(s, p, o, m) BOOST_PP_IF(p(932, s), m, BOOST_PP_TUPLE_EAT_2)(932, s) BOOST_PP_IF(p(932, s), BOOST_PP_FOR_932, BOOST_PP_TUPLE_EAT_4)(o(932, s), p, o, m) +# define BOOST_PP_FOR_932_I(s, p, o, m) BOOST_PP_IF(p(933, s), m, BOOST_PP_TUPLE_EAT_2)(933, s) BOOST_PP_IF(p(933, s), BOOST_PP_FOR_933, BOOST_PP_TUPLE_EAT_4)(o(933, s), p, o, m) +# define BOOST_PP_FOR_933_I(s, p, o, m) BOOST_PP_IF(p(934, s), m, BOOST_PP_TUPLE_EAT_2)(934, s) BOOST_PP_IF(p(934, s), BOOST_PP_FOR_934, BOOST_PP_TUPLE_EAT_4)(o(934, s), p, o, m) +# define BOOST_PP_FOR_934_I(s, p, o, m) BOOST_PP_IF(p(935, s), m, BOOST_PP_TUPLE_EAT_2)(935, s) BOOST_PP_IF(p(935, s), BOOST_PP_FOR_935, BOOST_PP_TUPLE_EAT_4)(o(935, s), p, o, m) +# define BOOST_PP_FOR_935_I(s, p, o, m) BOOST_PP_IF(p(936, s), m, BOOST_PP_TUPLE_EAT_2)(936, s) BOOST_PP_IF(p(936, s), BOOST_PP_FOR_936, BOOST_PP_TUPLE_EAT_4)(o(936, s), p, o, m) +# define BOOST_PP_FOR_936_I(s, p, o, m) BOOST_PP_IF(p(937, s), m, BOOST_PP_TUPLE_EAT_2)(937, s) BOOST_PP_IF(p(937, s), BOOST_PP_FOR_937, BOOST_PP_TUPLE_EAT_4)(o(937, s), p, o, m) +# define BOOST_PP_FOR_937_I(s, p, o, m) BOOST_PP_IF(p(938, s), m, BOOST_PP_TUPLE_EAT_2)(938, s) BOOST_PP_IF(p(938, s), BOOST_PP_FOR_938, BOOST_PP_TUPLE_EAT_4)(o(938, s), p, o, m) +# define BOOST_PP_FOR_938_I(s, p, o, m) BOOST_PP_IF(p(939, s), m, BOOST_PP_TUPLE_EAT_2)(939, s) BOOST_PP_IF(p(939, s), BOOST_PP_FOR_939, BOOST_PP_TUPLE_EAT_4)(o(939, s), p, o, m) +# define BOOST_PP_FOR_939_I(s, p, o, m) BOOST_PP_IF(p(940, s), m, BOOST_PP_TUPLE_EAT_2)(940, s) BOOST_PP_IF(p(940, s), BOOST_PP_FOR_940, BOOST_PP_TUPLE_EAT_4)(o(940, s), p, o, m) +# define BOOST_PP_FOR_940_I(s, p, o, m) BOOST_PP_IF(p(941, s), m, BOOST_PP_TUPLE_EAT_2)(941, s) BOOST_PP_IF(p(941, s), BOOST_PP_FOR_941, BOOST_PP_TUPLE_EAT_4)(o(941, s), p, o, m) +# define BOOST_PP_FOR_941_I(s, p, o, m) BOOST_PP_IF(p(942, s), m, BOOST_PP_TUPLE_EAT_2)(942, s) BOOST_PP_IF(p(942, s), BOOST_PP_FOR_942, BOOST_PP_TUPLE_EAT_4)(o(942, s), p, o, m) +# define BOOST_PP_FOR_942_I(s, p, o, m) BOOST_PP_IF(p(943, s), m, BOOST_PP_TUPLE_EAT_2)(943, s) BOOST_PP_IF(p(943, s), BOOST_PP_FOR_943, BOOST_PP_TUPLE_EAT_4)(o(943, s), p, o, m) +# define BOOST_PP_FOR_943_I(s, p, o, m) BOOST_PP_IF(p(944, s), m, BOOST_PP_TUPLE_EAT_2)(944, s) BOOST_PP_IF(p(944, s), BOOST_PP_FOR_944, BOOST_PP_TUPLE_EAT_4)(o(944, s), p, o, m) +# define BOOST_PP_FOR_944_I(s, p, o, m) BOOST_PP_IF(p(945, s), m, BOOST_PP_TUPLE_EAT_2)(945, s) BOOST_PP_IF(p(945, s), BOOST_PP_FOR_945, BOOST_PP_TUPLE_EAT_4)(o(945, s), p, o, m) +# define BOOST_PP_FOR_945_I(s, p, o, m) BOOST_PP_IF(p(946, s), m, BOOST_PP_TUPLE_EAT_2)(946, s) BOOST_PP_IF(p(946, s), BOOST_PP_FOR_946, BOOST_PP_TUPLE_EAT_4)(o(946, s), p, o, m) +# define BOOST_PP_FOR_946_I(s, p, o, m) BOOST_PP_IF(p(947, s), m, BOOST_PP_TUPLE_EAT_2)(947, s) BOOST_PP_IF(p(947, s), BOOST_PP_FOR_947, BOOST_PP_TUPLE_EAT_4)(o(947, s), p, o, m) +# define BOOST_PP_FOR_947_I(s, p, o, m) BOOST_PP_IF(p(948, s), m, BOOST_PP_TUPLE_EAT_2)(948, s) BOOST_PP_IF(p(948, s), BOOST_PP_FOR_948, BOOST_PP_TUPLE_EAT_4)(o(948, s), p, o, m) +# define BOOST_PP_FOR_948_I(s, p, o, m) BOOST_PP_IF(p(949, s), m, BOOST_PP_TUPLE_EAT_2)(949, s) BOOST_PP_IF(p(949, s), BOOST_PP_FOR_949, BOOST_PP_TUPLE_EAT_4)(o(949, s), p, o, m) +# define BOOST_PP_FOR_949_I(s, p, o, m) BOOST_PP_IF(p(950, s), m, BOOST_PP_TUPLE_EAT_2)(950, s) BOOST_PP_IF(p(950, s), BOOST_PP_FOR_950, BOOST_PP_TUPLE_EAT_4)(o(950, s), p, o, m) +# define BOOST_PP_FOR_950_I(s, p, o, m) BOOST_PP_IF(p(951, s), m, BOOST_PP_TUPLE_EAT_2)(951, s) BOOST_PP_IF(p(951, s), BOOST_PP_FOR_951, BOOST_PP_TUPLE_EAT_4)(o(951, s), p, o, m) +# define BOOST_PP_FOR_951_I(s, p, o, m) BOOST_PP_IF(p(952, s), m, BOOST_PP_TUPLE_EAT_2)(952, s) BOOST_PP_IF(p(952, s), BOOST_PP_FOR_952, BOOST_PP_TUPLE_EAT_4)(o(952, s), p, o, m) +# define BOOST_PP_FOR_952_I(s, p, o, m) BOOST_PP_IF(p(953, s), m, BOOST_PP_TUPLE_EAT_2)(953, s) BOOST_PP_IF(p(953, s), BOOST_PP_FOR_953, BOOST_PP_TUPLE_EAT_4)(o(953, s), p, o, m) +# define BOOST_PP_FOR_953_I(s, p, o, m) BOOST_PP_IF(p(954, s), m, BOOST_PP_TUPLE_EAT_2)(954, s) BOOST_PP_IF(p(954, s), BOOST_PP_FOR_954, BOOST_PP_TUPLE_EAT_4)(o(954, s), p, o, m) +# define BOOST_PP_FOR_954_I(s, p, o, m) BOOST_PP_IF(p(955, s), m, BOOST_PP_TUPLE_EAT_2)(955, s) BOOST_PP_IF(p(955, s), BOOST_PP_FOR_955, BOOST_PP_TUPLE_EAT_4)(o(955, s), p, o, m) +# define BOOST_PP_FOR_955_I(s, p, o, m) BOOST_PP_IF(p(956, s), m, BOOST_PP_TUPLE_EAT_2)(956, s) BOOST_PP_IF(p(956, s), BOOST_PP_FOR_956, BOOST_PP_TUPLE_EAT_4)(o(956, s), p, o, m) +# define BOOST_PP_FOR_956_I(s, p, o, m) BOOST_PP_IF(p(957, s), m, BOOST_PP_TUPLE_EAT_2)(957, s) BOOST_PP_IF(p(957, s), BOOST_PP_FOR_957, BOOST_PP_TUPLE_EAT_4)(o(957, s), p, o, m) +# define BOOST_PP_FOR_957_I(s, p, o, m) BOOST_PP_IF(p(958, s), m, BOOST_PP_TUPLE_EAT_2)(958, s) BOOST_PP_IF(p(958, s), BOOST_PP_FOR_958, BOOST_PP_TUPLE_EAT_4)(o(958, s), p, o, m) +# define BOOST_PP_FOR_958_I(s, p, o, m) BOOST_PP_IF(p(959, s), m, BOOST_PP_TUPLE_EAT_2)(959, s) BOOST_PP_IF(p(959, s), BOOST_PP_FOR_959, BOOST_PP_TUPLE_EAT_4)(o(959, s), p, o, m) +# define BOOST_PP_FOR_959_I(s, p, o, m) BOOST_PP_IF(p(960, s), m, BOOST_PP_TUPLE_EAT_2)(960, s) BOOST_PP_IF(p(960, s), BOOST_PP_FOR_960, BOOST_PP_TUPLE_EAT_4)(o(960, s), p, o, m) +# define BOOST_PP_FOR_960_I(s, p, o, m) BOOST_PP_IF(p(961, s), m, BOOST_PP_TUPLE_EAT_2)(961, s) BOOST_PP_IF(p(961, s), BOOST_PP_FOR_961, BOOST_PP_TUPLE_EAT_4)(o(961, s), p, o, m) +# define BOOST_PP_FOR_961_I(s, p, o, m) BOOST_PP_IF(p(962, s), m, BOOST_PP_TUPLE_EAT_2)(962, s) BOOST_PP_IF(p(962, s), BOOST_PP_FOR_962, BOOST_PP_TUPLE_EAT_4)(o(962, s), p, o, m) +# define BOOST_PP_FOR_962_I(s, p, o, m) BOOST_PP_IF(p(963, s), m, BOOST_PP_TUPLE_EAT_2)(963, s) BOOST_PP_IF(p(963, s), BOOST_PP_FOR_963, BOOST_PP_TUPLE_EAT_4)(o(963, s), p, o, m) +# define BOOST_PP_FOR_963_I(s, p, o, m) BOOST_PP_IF(p(964, s), m, BOOST_PP_TUPLE_EAT_2)(964, s) BOOST_PP_IF(p(964, s), BOOST_PP_FOR_964, BOOST_PP_TUPLE_EAT_4)(o(964, s), p, o, m) +# define BOOST_PP_FOR_964_I(s, p, o, m) BOOST_PP_IF(p(965, s), m, BOOST_PP_TUPLE_EAT_2)(965, s) BOOST_PP_IF(p(965, s), BOOST_PP_FOR_965, BOOST_PP_TUPLE_EAT_4)(o(965, s), p, o, m) +# define BOOST_PP_FOR_965_I(s, p, o, m) BOOST_PP_IF(p(966, s), m, BOOST_PP_TUPLE_EAT_2)(966, s) BOOST_PP_IF(p(966, s), BOOST_PP_FOR_966, BOOST_PP_TUPLE_EAT_4)(o(966, s), p, o, m) +# define BOOST_PP_FOR_966_I(s, p, o, m) BOOST_PP_IF(p(967, s), m, BOOST_PP_TUPLE_EAT_2)(967, s) BOOST_PP_IF(p(967, s), BOOST_PP_FOR_967, BOOST_PP_TUPLE_EAT_4)(o(967, s), p, o, m) +# define BOOST_PP_FOR_967_I(s, p, o, m) BOOST_PP_IF(p(968, s), m, BOOST_PP_TUPLE_EAT_2)(968, s) BOOST_PP_IF(p(968, s), BOOST_PP_FOR_968, BOOST_PP_TUPLE_EAT_4)(o(968, s), p, o, m) +# define BOOST_PP_FOR_968_I(s, p, o, m) BOOST_PP_IF(p(969, s), m, BOOST_PP_TUPLE_EAT_2)(969, s) BOOST_PP_IF(p(969, s), BOOST_PP_FOR_969, BOOST_PP_TUPLE_EAT_4)(o(969, s), p, o, m) +# define BOOST_PP_FOR_969_I(s, p, o, m) BOOST_PP_IF(p(970, s), m, BOOST_PP_TUPLE_EAT_2)(970, s) BOOST_PP_IF(p(970, s), BOOST_PP_FOR_970, BOOST_PP_TUPLE_EAT_4)(o(970, s), p, o, m) +# define BOOST_PP_FOR_970_I(s, p, o, m) BOOST_PP_IF(p(971, s), m, BOOST_PP_TUPLE_EAT_2)(971, s) BOOST_PP_IF(p(971, s), BOOST_PP_FOR_971, BOOST_PP_TUPLE_EAT_4)(o(971, s), p, o, m) +# define BOOST_PP_FOR_971_I(s, p, o, m) BOOST_PP_IF(p(972, s), m, BOOST_PP_TUPLE_EAT_2)(972, s) BOOST_PP_IF(p(972, s), BOOST_PP_FOR_972, BOOST_PP_TUPLE_EAT_4)(o(972, s), p, o, m) +# define BOOST_PP_FOR_972_I(s, p, o, m) BOOST_PP_IF(p(973, s), m, BOOST_PP_TUPLE_EAT_2)(973, s) BOOST_PP_IF(p(973, s), BOOST_PP_FOR_973, BOOST_PP_TUPLE_EAT_4)(o(973, s), p, o, m) +# define BOOST_PP_FOR_973_I(s, p, o, m) BOOST_PP_IF(p(974, s), m, BOOST_PP_TUPLE_EAT_2)(974, s) BOOST_PP_IF(p(974, s), BOOST_PP_FOR_974, BOOST_PP_TUPLE_EAT_4)(o(974, s), p, o, m) +# define BOOST_PP_FOR_974_I(s, p, o, m) BOOST_PP_IF(p(975, s), m, BOOST_PP_TUPLE_EAT_2)(975, s) BOOST_PP_IF(p(975, s), BOOST_PP_FOR_975, BOOST_PP_TUPLE_EAT_4)(o(975, s), p, o, m) +# define BOOST_PP_FOR_975_I(s, p, o, m) BOOST_PP_IF(p(976, s), m, BOOST_PP_TUPLE_EAT_2)(976, s) BOOST_PP_IF(p(976, s), BOOST_PP_FOR_976, BOOST_PP_TUPLE_EAT_4)(o(976, s), p, o, m) +# define BOOST_PP_FOR_976_I(s, p, o, m) BOOST_PP_IF(p(977, s), m, BOOST_PP_TUPLE_EAT_2)(977, s) BOOST_PP_IF(p(977, s), BOOST_PP_FOR_977, BOOST_PP_TUPLE_EAT_4)(o(977, s), p, o, m) +# define BOOST_PP_FOR_977_I(s, p, o, m) BOOST_PP_IF(p(978, s), m, BOOST_PP_TUPLE_EAT_2)(978, s) BOOST_PP_IF(p(978, s), BOOST_PP_FOR_978, BOOST_PP_TUPLE_EAT_4)(o(978, s), p, o, m) +# define BOOST_PP_FOR_978_I(s, p, o, m) BOOST_PP_IF(p(979, s), m, BOOST_PP_TUPLE_EAT_2)(979, s) BOOST_PP_IF(p(979, s), BOOST_PP_FOR_979, BOOST_PP_TUPLE_EAT_4)(o(979, s), p, o, m) +# define BOOST_PP_FOR_979_I(s, p, o, m) BOOST_PP_IF(p(980, s), m, BOOST_PP_TUPLE_EAT_2)(980, s) BOOST_PP_IF(p(980, s), BOOST_PP_FOR_980, BOOST_PP_TUPLE_EAT_4)(o(980, s), p, o, m) +# define BOOST_PP_FOR_980_I(s, p, o, m) BOOST_PP_IF(p(981, s), m, BOOST_PP_TUPLE_EAT_2)(981, s) BOOST_PP_IF(p(981, s), BOOST_PP_FOR_981, BOOST_PP_TUPLE_EAT_4)(o(981, s), p, o, m) +# define BOOST_PP_FOR_981_I(s, p, o, m) BOOST_PP_IF(p(982, s), m, BOOST_PP_TUPLE_EAT_2)(982, s) BOOST_PP_IF(p(982, s), BOOST_PP_FOR_982, BOOST_PP_TUPLE_EAT_4)(o(982, s), p, o, m) +# define BOOST_PP_FOR_982_I(s, p, o, m) BOOST_PP_IF(p(983, s), m, BOOST_PP_TUPLE_EAT_2)(983, s) BOOST_PP_IF(p(983, s), BOOST_PP_FOR_983, BOOST_PP_TUPLE_EAT_4)(o(983, s), p, o, m) +# define BOOST_PP_FOR_983_I(s, p, o, m) BOOST_PP_IF(p(984, s), m, BOOST_PP_TUPLE_EAT_2)(984, s) BOOST_PP_IF(p(984, s), BOOST_PP_FOR_984, BOOST_PP_TUPLE_EAT_4)(o(984, s), p, o, m) +# define BOOST_PP_FOR_984_I(s, p, o, m) BOOST_PP_IF(p(985, s), m, BOOST_PP_TUPLE_EAT_2)(985, s) BOOST_PP_IF(p(985, s), BOOST_PP_FOR_985, BOOST_PP_TUPLE_EAT_4)(o(985, s), p, o, m) +# define BOOST_PP_FOR_985_I(s, p, o, m) BOOST_PP_IF(p(986, s), m, BOOST_PP_TUPLE_EAT_2)(986, s) BOOST_PP_IF(p(986, s), BOOST_PP_FOR_986, BOOST_PP_TUPLE_EAT_4)(o(986, s), p, o, m) +# define BOOST_PP_FOR_986_I(s, p, o, m) BOOST_PP_IF(p(987, s), m, BOOST_PP_TUPLE_EAT_2)(987, s) BOOST_PP_IF(p(987, s), BOOST_PP_FOR_987, BOOST_PP_TUPLE_EAT_4)(o(987, s), p, o, m) +# define BOOST_PP_FOR_987_I(s, p, o, m) BOOST_PP_IF(p(988, s), m, BOOST_PP_TUPLE_EAT_2)(988, s) BOOST_PP_IF(p(988, s), BOOST_PP_FOR_988, BOOST_PP_TUPLE_EAT_4)(o(988, s), p, o, m) +# define BOOST_PP_FOR_988_I(s, p, o, m) BOOST_PP_IF(p(989, s), m, BOOST_PP_TUPLE_EAT_2)(989, s) BOOST_PP_IF(p(989, s), BOOST_PP_FOR_989, BOOST_PP_TUPLE_EAT_4)(o(989, s), p, o, m) +# define BOOST_PP_FOR_989_I(s, p, o, m) BOOST_PP_IF(p(990, s), m, BOOST_PP_TUPLE_EAT_2)(990, s) BOOST_PP_IF(p(990, s), BOOST_PP_FOR_990, BOOST_PP_TUPLE_EAT_4)(o(990, s), p, o, m) +# define BOOST_PP_FOR_990_I(s, p, o, m) BOOST_PP_IF(p(991, s), m, BOOST_PP_TUPLE_EAT_2)(991, s) BOOST_PP_IF(p(991, s), BOOST_PP_FOR_991, BOOST_PP_TUPLE_EAT_4)(o(991, s), p, o, m) +# define BOOST_PP_FOR_991_I(s, p, o, m) BOOST_PP_IF(p(992, s), m, BOOST_PP_TUPLE_EAT_2)(992, s) BOOST_PP_IF(p(992, s), BOOST_PP_FOR_992, BOOST_PP_TUPLE_EAT_4)(o(992, s), p, o, m) +# define BOOST_PP_FOR_992_I(s, p, o, m) BOOST_PP_IF(p(993, s), m, BOOST_PP_TUPLE_EAT_2)(993, s) BOOST_PP_IF(p(993, s), BOOST_PP_FOR_993, BOOST_PP_TUPLE_EAT_4)(o(993, s), p, o, m) +# define BOOST_PP_FOR_993_I(s, p, o, m) BOOST_PP_IF(p(994, s), m, BOOST_PP_TUPLE_EAT_2)(994, s) BOOST_PP_IF(p(994, s), BOOST_PP_FOR_994, BOOST_PP_TUPLE_EAT_4)(o(994, s), p, o, m) +# define BOOST_PP_FOR_994_I(s, p, o, m) BOOST_PP_IF(p(995, s), m, BOOST_PP_TUPLE_EAT_2)(995, s) BOOST_PP_IF(p(995, s), BOOST_PP_FOR_995, BOOST_PP_TUPLE_EAT_4)(o(995, s), p, o, m) +# define BOOST_PP_FOR_995_I(s, p, o, m) BOOST_PP_IF(p(996, s), m, BOOST_PP_TUPLE_EAT_2)(996, s) BOOST_PP_IF(p(996, s), BOOST_PP_FOR_996, BOOST_PP_TUPLE_EAT_4)(o(996, s), p, o, m) +# define BOOST_PP_FOR_996_I(s, p, o, m) BOOST_PP_IF(p(997, s), m, BOOST_PP_TUPLE_EAT_2)(997, s) BOOST_PP_IF(p(997, s), BOOST_PP_FOR_997, BOOST_PP_TUPLE_EAT_4)(o(997, s), p, o, m) +# define BOOST_PP_FOR_997_I(s, p, o, m) BOOST_PP_IF(p(998, s), m, BOOST_PP_TUPLE_EAT_2)(998, s) BOOST_PP_IF(p(998, s), BOOST_PP_FOR_998, BOOST_PP_TUPLE_EAT_4)(o(998, s), p, o, m) +# define BOOST_PP_FOR_998_I(s, p, o, m) BOOST_PP_IF(p(999, s), m, BOOST_PP_TUPLE_EAT_2)(999, s) BOOST_PP_IF(p(999, s), BOOST_PP_FOR_999, BOOST_PP_TUPLE_EAT_4)(o(999, s), p, o, m) +# define BOOST_PP_FOR_999_I(s, p, o, m) BOOST_PP_IF(p(1000, s), m, BOOST_PP_TUPLE_EAT_2)(1000, s) BOOST_PP_IF(p(1000, s), BOOST_PP_FOR_1000, BOOST_PP_TUPLE_EAT_4)(o(1000, s), p, o, m) +# define BOOST_PP_FOR_1000_I(s, p, o, m) BOOST_PP_IF(p(1001, s), m, BOOST_PP_TUPLE_EAT_2)(1001, s) BOOST_PP_IF(p(1001, s), BOOST_PP_FOR_1001, BOOST_PP_TUPLE_EAT_4)(o(1001, s), p, o, m) +# define BOOST_PP_FOR_1001_I(s, p, o, m) BOOST_PP_IF(p(1002, s), m, BOOST_PP_TUPLE_EAT_2)(1002, s) BOOST_PP_IF(p(1002, s), BOOST_PP_FOR_1002, BOOST_PP_TUPLE_EAT_4)(o(1002, s), p, o, m) +# define BOOST_PP_FOR_1002_I(s, p, o, m) BOOST_PP_IF(p(1003, s), m, BOOST_PP_TUPLE_EAT_2)(1003, s) BOOST_PP_IF(p(1003, s), BOOST_PP_FOR_1003, BOOST_PP_TUPLE_EAT_4)(o(1003, s), p, o, m) +# define BOOST_PP_FOR_1003_I(s, p, o, m) BOOST_PP_IF(p(1004, s), m, BOOST_PP_TUPLE_EAT_2)(1004, s) BOOST_PP_IF(p(1004, s), BOOST_PP_FOR_1004, BOOST_PP_TUPLE_EAT_4)(o(1004, s), p, o, m) +# define BOOST_PP_FOR_1004_I(s, p, o, m) BOOST_PP_IF(p(1005, s), m, BOOST_PP_TUPLE_EAT_2)(1005, s) BOOST_PP_IF(p(1005, s), BOOST_PP_FOR_1005, BOOST_PP_TUPLE_EAT_4)(o(1005, s), p, o, m) +# define BOOST_PP_FOR_1005_I(s, p, o, m) BOOST_PP_IF(p(1006, s), m, BOOST_PP_TUPLE_EAT_2)(1006, s) BOOST_PP_IF(p(1006, s), BOOST_PP_FOR_1006, BOOST_PP_TUPLE_EAT_4)(o(1006, s), p, o, m) +# define BOOST_PP_FOR_1006_I(s, p, o, m) BOOST_PP_IF(p(1007, s), m, BOOST_PP_TUPLE_EAT_2)(1007, s) BOOST_PP_IF(p(1007, s), BOOST_PP_FOR_1007, BOOST_PP_TUPLE_EAT_4)(o(1007, s), p, o, m) +# define BOOST_PP_FOR_1007_I(s, p, o, m) BOOST_PP_IF(p(1008, s), m, BOOST_PP_TUPLE_EAT_2)(1008, s) BOOST_PP_IF(p(1008, s), BOOST_PP_FOR_1008, BOOST_PP_TUPLE_EAT_4)(o(1008, s), p, o, m) +# define BOOST_PP_FOR_1008_I(s, p, o, m) BOOST_PP_IF(p(1009, s), m, BOOST_PP_TUPLE_EAT_2)(1009, s) BOOST_PP_IF(p(1009, s), BOOST_PP_FOR_1009, BOOST_PP_TUPLE_EAT_4)(o(1009, s), p, o, m) +# define BOOST_PP_FOR_1009_I(s, p, o, m) BOOST_PP_IF(p(1010, s), m, BOOST_PP_TUPLE_EAT_2)(1010, s) BOOST_PP_IF(p(1010, s), BOOST_PP_FOR_1010, BOOST_PP_TUPLE_EAT_4)(o(1010, s), p, o, m) +# define BOOST_PP_FOR_1010_I(s, p, o, m) BOOST_PP_IF(p(1011, s), m, BOOST_PP_TUPLE_EAT_2)(1011, s) BOOST_PP_IF(p(1011, s), BOOST_PP_FOR_1011, BOOST_PP_TUPLE_EAT_4)(o(1011, s), p, o, m) +# define BOOST_PP_FOR_1011_I(s, p, o, m) BOOST_PP_IF(p(1012, s), m, BOOST_PP_TUPLE_EAT_2)(1012, s) BOOST_PP_IF(p(1012, s), BOOST_PP_FOR_1012, BOOST_PP_TUPLE_EAT_4)(o(1012, s), p, o, m) +# define BOOST_PP_FOR_1012_I(s, p, o, m) BOOST_PP_IF(p(1013, s), m, BOOST_PP_TUPLE_EAT_2)(1013, s) BOOST_PP_IF(p(1013, s), BOOST_PP_FOR_1013, BOOST_PP_TUPLE_EAT_4)(o(1013, s), p, o, m) +# define BOOST_PP_FOR_1013_I(s, p, o, m) BOOST_PP_IF(p(1014, s), m, BOOST_PP_TUPLE_EAT_2)(1014, s) BOOST_PP_IF(p(1014, s), BOOST_PP_FOR_1014, BOOST_PP_TUPLE_EAT_4)(o(1014, s), p, o, m) +# define BOOST_PP_FOR_1014_I(s, p, o, m) BOOST_PP_IF(p(1015, s), m, BOOST_PP_TUPLE_EAT_2)(1015, s) BOOST_PP_IF(p(1015, s), BOOST_PP_FOR_1015, BOOST_PP_TUPLE_EAT_4)(o(1015, s), p, o, m) +# define BOOST_PP_FOR_1015_I(s, p, o, m) BOOST_PP_IF(p(1016, s), m, BOOST_PP_TUPLE_EAT_2)(1016, s) BOOST_PP_IF(p(1016, s), BOOST_PP_FOR_1016, BOOST_PP_TUPLE_EAT_4)(o(1016, s), p, o, m) +# define BOOST_PP_FOR_1016_I(s, p, o, m) BOOST_PP_IF(p(1017, s), m, BOOST_PP_TUPLE_EAT_2)(1017, s) BOOST_PP_IF(p(1017, s), BOOST_PP_FOR_1017, BOOST_PP_TUPLE_EAT_4)(o(1017, s), p, o, m) +# define BOOST_PP_FOR_1017_I(s, p, o, m) BOOST_PP_IF(p(1018, s), m, BOOST_PP_TUPLE_EAT_2)(1018, s) BOOST_PP_IF(p(1018, s), BOOST_PP_FOR_1018, BOOST_PP_TUPLE_EAT_4)(o(1018, s), p, o, m) +# define BOOST_PP_FOR_1018_I(s, p, o, m) BOOST_PP_IF(p(1019, s), m, BOOST_PP_TUPLE_EAT_2)(1019, s) BOOST_PP_IF(p(1019, s), BOOST_PP_FOR_1019, BOOST_PP_TUPLE_EAT_4)(o(1019, s), p, o, m) +# define BOOST_PP_FOR_1019_I(s, p, o, m) BOOST_PP_IF(p(1020, s), m, BOOST_PP_TUPLE_EAT_2)(1020, s) BOOST_PP_IF(p(1020, s), BOOST_PP_FOR_1020, BOOST_PP_TUPLE_EAT_4)(o(1020, s), p, o, m) +# define BOOST_PP_FOR_1020_I(s, p, o, m) BOOST_PP_IF(p(1021, s), m, BOOST_PP_TUPLE_EAT_2)(1021, s) BOOST_PP_IF(p(1021, s), BOOST_PP_FOR_1021, BOOST_PP_TUPLE_EAT_4)(o(1021, s), p, o, m) +# define BOOST_PP_FOR_1021_I(s, p, o, m) BOOST_PP_IF(p(1022, s), m, BOOST_PP_TUPLE_EAT_2)(1022, s) BOOST_PP_IF(p(1022, s), BOOST_PP_FOR_1022, BOOST_PP_TUPLE_EAT_4)(o(1022, s), p, o, m) +# define BOOST_PP_FOR_1022_I(s, p, o, m) BOOST_PP_IF(p(1023, s), m, BOOST_PP_TUPLE_EAT_2)(1023, s) BOOST_PP_IF(p(1023, s), BOOST_PP_FOR_1023, BOOST_PP_TUPLE_EAT_4)(o(1023, s), p, o, m) +# define BOOST_PP_FOR_1023_I(s, p, o, m) BOOST_PP_IF(p(1024, s), m, BOOST_PP_TUPLE_EAT_2)(1024, s) BOOST_PP_IF(p(1024, s), BOOST_PP_FOR_1024, BOOST_PP_TUPLE_EAT_4)(o(1024, s), p, o, m) +# define BOOST_PP_FOR_1024_I(s, p, o, m) BOOST_PP_IF(p(1025, s), m, BOOST_PP_TUPLE_EAT_2)(1025, s) BOOST_PP_IF(p(1025, s), BOOST_PP_FOR_1025, BOOST_PP_TUPLE_EAT_4)(o(1025, s), p, o, m) +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/detail/edg/limits/for_256.hpp b/src/boost/boost/preprocessor/repetition/detail/edg/limits/for_256.hpp new file mode 100644 index 000000000..441237b02 --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/detail/edg/limits/for_256.hpp @@ -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_REPETITION_DETAIL_EDG_FOR_256_HPP +# define BOOST_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_256_HPP +# +# define BOOST_PP_FOR_0(s, p, o, m) BOOST_PP_FOR_0_I(s, p, o, m) +# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_I(s, p, o, m) +# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_I(s, p, o, m) +# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_I(s, p, o, m) +# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_I(s, p, o, m) +# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_I(s, p, o, m) +# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_I(s, p, o, m) +# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_I(s, p, o, m) +# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_I(s, p, o, m) +# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_I(s, p, o, m) +# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_I(s, p, o, m) +# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_I(s, p, o, m) +# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_I(s, p, o, m) +# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_I(s, p, o, m) +# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_I(s, p, o, m) +# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_I(s, p, o, m) +# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_I(s, p, o, m) +# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_I(s, p, o, m) +# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_I(s, p, o, m) +# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_I(s, p, o, m) +# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_I(s, p, o, m) +# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_I(s, p, o, m) +# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_I(s, p, o, m) +# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_I(s, p, o, m) +# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_I(s, p, o, m) +# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_I(s, p, o, m) +# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_I(s, p, o, m) +# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_I(s, p, o, m) +# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_I(s, p, o, m) +# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_I(s, p, o, m) +# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_I(s, p, o, m) +# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_I(s, p, o, m) +# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_I(s, p, o, m) +# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_I(s, p, o, m) +# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_I(s, p, o, m) +# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_I(s, p, o, m) +# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_I(s, p, o, m) +# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_I(s, p, o, m) +# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_I(s, p, o, m) +# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_I(s, p, o, m) +# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_I(s, p, o, m) +# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_I(s, p, o, m) +# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_I(s, p, o, m) +# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_I(s, p, o, m) +# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_I(s, p, o, m) +# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_I(s, p, o, m) +# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_I(s, p, o, m) +# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_I(s, p, o, m) +# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_I(s, p, o, m) +# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_I(s, p, o, m) +# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_I(s, p, o, m) +# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_I(s, p, o, m) +# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_I(s, p, o, m) +# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_I(s, p, o, m) +# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_I(s, p, o, m) +# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_I(s, p, o, m) +# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_I(s, p, o, m) +# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_I(s, p, o, m) +# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_I(s, p, o, m) +# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_I(s, p, o, m) +# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_I(s, p, o, m) +# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_I(s, p, o, m) +# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_I(s, p, o, m) +# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_I(s, p, o, m) +# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_I(s, p, o, m) +# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_I(s, p, o, m) +# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_I(s, p, o, m) +# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_I(s, p, o, m) +# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_I(s, p, o, m) +# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_I(s, p, o, m) +# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_I(s, p, o, m) +# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_I(s, p, o, m) +# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_I(s, p, o, m) +# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_I(s, p, o, m) +# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_I(s, p, o, m) +# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_I(s, p, o, m) +# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_I(s, p, o, m) +# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_I(s, p, o, m) +# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_I(s, p, o, m) +# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_I(s, p, o, m) +# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_I(s, p, o, m) +# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_I(s, p, o, m) +# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_I(s, p, o, m) +# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_I(s, p, o, m) +# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_I(s, p, o, m) +# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_I(s, p, o, m) +# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_I(s, p, o, m) +# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_I(s, p, o, m) +# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_I(s, p, o, m) +# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_I(s, p, o, m) +# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_I(s, p, o, m) +# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_I(s, p, o, m) +# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_I(s, p, o, m) +# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_I(s, p, o, m) +# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_I(s, p, o, m) +# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_I(s, p, o, m) +# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_I(s, p, o, m) +# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_I(s, p, o, m) +# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_I(s, p, o, m) +# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_I(s, p, o, m) +# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_I(s, p, o, m) +# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_I(s, p, o, m) +# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_I(s, p, o, m) +# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_I(s, p, o, m) +# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_I(s, p, o, m) +# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_I(s, p, o, m) +# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_I(s, p, o, m) +# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_I(s, p, o, m) +# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_I(s, p, o, m) +# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_I(s, p, o, m) +# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_I(s, p, o, m) +# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_I(s, p, o, m) +# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_I(s, p, o, m) +# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_I(s, p, o, m) +# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_I(s, p, o, m) +# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_I(s, p, o, m) +# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_I(s, p, o, m) +# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_I(s, p, o, m) +# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_I(s, p, o, m) +# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_I(s, p, o, m) +# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_I(s, p, o, m) +# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_I(s, p, o, m) +# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_I(s, p, o, m) +# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_I(s, p, o, m) +# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_I(s, p, o, m) +# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_I(s, p, o, m) +# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_I(s, p, o, m) +# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_I(s, p, o, m) +# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_I(s, p, o, m) +# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_I(s, p, o, m) +# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_I(s, p, o, m) +# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_I(s, p, o, m) +# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_I(s, p, o, m) +# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_I(s, p, o, m) +# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_I(s, p, o, m) +# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_I(s, p, o, m) +# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_I(s, p, o, m) +# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_I(s, p, o, m) +# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_I(s, p, o, m) +# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_I(s, p, o, m) +# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_I(s, p, o, m) +# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_I(s, p, o, m) +# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_I(s, p, o, m) +# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_I(s, p, o, m) +# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_I(s, p, o, m) +# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_I(s, p, o, m) +# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_I(s, p, o, m) +# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_I(s, p, o, m) +# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_I(s, p, o, m) +# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_I(s, p, o, m) +# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_I(s, p, o, m) +# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_I(s, p, o, m) +# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_I(s, p, o, m) +# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_I(s, p, o, m) +# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_I(s, p, o, m) +# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_I(s, p, o, m) +# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_I(s, p, o, m) +# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_I(s, p, o, m) +# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_I(s, p, o, m) +# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_I(s, p, o, m) +# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_I(s, p, o, m) +# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_I(s, p, o, m) +# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_I(s, p, o, m) +# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_I(s, p, o, m) +# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_I(s, p, o, m) +# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_I(s, p, o, m) +# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_I(s, p, o, m) +# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_I(s, p, o, m) +# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_I(s, p, o, m) +# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_I(s, p, o, m) +# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_I(s, p, o, m) +# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_I(s, p, o, m) +# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_I(s, p, o, m) +# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_I(s, p, o, m) +# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_I(s, p, o, m) +# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_I(s, p, o, m) +# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_I(s, p, o, m) +# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_I(s, p, o, m) +# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_I(s, p, o, m) +# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_I(s, p, o, m) +# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_I(s, p, o, m) +# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_I(s, p, o, m) +# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_I(s, p, o, m) +# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_I(s, p, o, m) +# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_I(s, p, o, m) +# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_I(s, p, o, m) +# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_I(s, p, o, m) +# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_I(s, p, o, m) +# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_I(s, p, o, m) +# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_I(s, p, o, m) +# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_I(s, p, o, m) +# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_I(s, p, o, m) +# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_I(s, p, o, m) +# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_I(s, p, o, m) +# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_I(s, p, o, m) +# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_I(s, p, o, m) +# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_I(s, p, o, m) +# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_I(s, p, o, m) +# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_I(s, p, o, m) +# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_I(s, p, o, m) +# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_I(s, p, o, m) +# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_I(s, p, o, m) +# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_I(s, p, o, m) +# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_I(s, p, o, m) +# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_I(s, p, o, m) +# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_I(s, p, o, m) +# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_I(s, p, o, m) +# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_I(s, p, o, m) +# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_I(s, p, o, m) +# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_I(s, p, o, m) +# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_I(s, p, o, m) +# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_I(s, p, o, m) +# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_I(s, p, o, m) +# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_I(s, p, o, m) +# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_I(s, p, o, m) +# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_I(s, p, o, m) +# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_I(s, p, o, m) +# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_I(s, p, o, m) +# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_I(s, p, o, m) +# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_I(s, p, o, m) +# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_I(s, p, o, m) +# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_I(s, p, o, m) +# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_I(s, p, o, m) +# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_I(s, p, o, m) +# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_I(s, p, o, m) +# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_I(s, p, o, m) +# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_I(s, p, o, m) +# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_I(s, p, o, m) +# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_I(s, p, o, m) +# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_I(s, p, o, m) +# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_I(s, p, o, m) +# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_I(s, p, o, m) +# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_I(s, p, o, m) +# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_I(s, p, o, m) +# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_I(s, p, o, m) +# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_I(s, p, o, m) +# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_I(s, p, o, m) +# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_I(s, p, o, m) +# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_I(s, p, o, m) +# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_I(s, p, o, m) +# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_I(s, p, o, m) +# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_I(s, p, o, m) +# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_I(s, p, o, m) +# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_I(s, p, o, m) +# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_I(s, p, o, m) +# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_I(s, p, o, m) +# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_I(s, p, o, m) +# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_I(s, p, o, m) +# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_I(s, p, o, m) +# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_I(s, p, o, m) +# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_I(s, p, o, m) +# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_I(s, p, o, m) +# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_I(s, p, o, m) +# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_I(s, p, o, m) +# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_I(s, p, o, m) +# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_I(s, p, o, m) +# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_I(s, p, o, m) +# +# define BOOST_PP_FOR_0_I(s, p, o, m) BOOST_PP_IF(p(1, s), m, BOOST_PP_TUPLE_EAT_2)(1, s) BOOST_PP_IF(p(1, s), BOOST_PP_FOR_1, BOOST_PP_TUPLE_EAT_4)(o(1, s), p, o, m) +# define BOOST_PP_FOR_1_I(s, p, o, m) BOOST_PP_IF(p(2, s), m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IF(p(2, s), BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(o(2, s), p, o, m) +# define BOOST_PP_FOR_2_I(s, p, o, m) BOOST_PP_IF(p(3, s), m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IF(p(3, s), BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(o(3, s), p, o, m) +# define BOOST_PP_FOR_3_I(s, p, o, m) BOOST_PP_IF(p(4, s), m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IF(p(4, s), BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(o(4, s), p, o, m) +# define BOOST_PP_FOR_4_I(s, p, o, m) BOOST_PP_IF(p(5, s), m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IF(p(5, s), BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(o(5, s), p, o, m) +# define BOOST_PP_FOR_5_I(s, p, o, m) BOOST_PP_IF(p(6, s), m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IF(p(6, s), BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(o(6, s), p, o, m) +# define BOOST_PP_FOR_6_I(s, p, o, m) BOOST_PP_IF(p(7, s), m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IF(p(7, s), BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(o(7, s), p, o, m) +# define BOOST_PP_FOR_7_I(s, p, o, m) BOOST_PP_IF(p(8, s), m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IF(p(8, s), BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(o(8, s), p, o, m) +# define BOOST_PP_FOR_8_I(s, p, o, m) BOOST_PP_IF(p(9, s), m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IF(p(9, s), BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(o(9, s), p, o, m) +# define BOOST_PP_FOR_9_I(s, p, o, m) BOOST_PP_IF(p(10, s), m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IF(p(10, s), BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(o(10, s), p, o, m) +# define BOOST_PP_FOR_10_I(s, p, o, m) BOOST_PP_IF(p(11, s), m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IF(p(11, s), BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(o(11, s), p, o, m) +# define BOOST_PP_FOR_11_I(s, p, o, m) BOOST_PP_IF(p(12, s), m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IF(p(12, s), BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(o(12, s), p, o, m) +# define BOOST_PP_FOR_12_I(s, p, o, m) BOOST_PP_IF(p(13, s), m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IF(p(13, s), BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(o(13, s), p, o, m) +# define BOOST_PP_FOR_13_I(s, p, o, m) BOOST_PP_IF(p(14, s), m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IF(p(14, s), BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(o(14, s), p, o, m) +# define BOOST_PP_FOR_14_I(s, p, o, m) BOOST_PP_IF(p(15, s), m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IF(p(15, s), BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(o(15, s), p, o, m) +# define BOOST_PP_FOR_15_I(s, p, o, m) BOOST_PP_IF(p(16, s), m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IF(p(16, s), BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(o(16, s), p, o, m) +# define BOOST_PP_FOR_16_I(s, p, o, m) BOOST_PP_IF(p(17, s), m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IF(p(17, s), BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(o(17, s), p, o, m) +# define BOOST_PP_FOR_17_I(s, p, o, m) BOOST_PP_IF(p(18, s), m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IF(p(18, s), BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(o(18, s), p, o, m) +# define BOOST_PP_FOR_18_I(s, p, o, m) BOOST_PP_IF(p(19, s), m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IF(p(19, s), BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(o(19, s), p, o, m) +# define BOOST_PP_FOR_19_I(s, p, o, m) BOOST_PP_IF(p(20, s), m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IF(p(20, s), BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(o(20, s), p, o, m) +# define BOOST_PP_FOR_20_I(s, p, o, m) BOOST_PP_IF(p(21, s), m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IF(p(21, s), BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(o(21, s), p, o, m) +# define BOOST_PP_FOR_21_I(s, p, o, m) BOOST_PP_IF(p(22, s), m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IF(p(22, s), BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(o(22, s), p, o, m) +# define BOOST_PP_FOR_22_I(s, p, o, m) BOOST_PP_IF(p(23, s), m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IF(p(23, s), BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(o(23, s), p, o, m) +# define BOOST_PP_FOR_23_I(s, p, o, m) BOOST_PP_IF(p(24, s), m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IF(p(24, s), BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(o(24, s), p, o, m) +# define BOOST_PP_FOR_24_I(s, p, o, m) BOOST_PP_IF(p(25, s), m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IF(p(25, s), BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(o(25, s), p, o, m) +# define BOOST_PP_FOR_25_I(s, p, o, m) BOOST_PP_IF(p(26, s), m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IF(p(26, s), BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(o(26, s), p, o, m) +# define BOOST_PP_FOR_26_I(s, p, o, m) BOOST_PP_IF(p(27, s), m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IF(p(27, s), BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(o(27, s), p, o, m) +# define BOOST_PP_FOR_27_I(s, p, o, m) BOOST_PP_IF(p(28, s), m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IF(p(28, s), BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(o(28, s), p, o, m) +# define BOOST_PP_FOR_28_I(s, p, o, m) BOOST_PP_IF(p(29, s), m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IF(p(29, s), BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(o(29, s), p, o, m) +# define BOOST_PP_FOR_29_I(s, p, o, m) BOOST_PP_IF(p(30, s), m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IF(p(30, s), BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(o(30, s), p, o, m) +# define BOOST_PP_FOR_30_I(s, p, o, m) BOOST_PP_IF(p(31, s), m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IF(p(31, s), BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(o(31, s), p, o, m) +# define BOOST_PP_FOR_31_I(s, p, o, m) BOOST_PP_IF(p(32, s), m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IF(p(32, s), BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(o(32, s), p, o, m) +# define BOOST_PP_FOR_32_I(s, p, o, m) BOOST_PP_IF(p(33, s), m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IF(p(33, s), BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(o(33, s), p, o, m) +# define BOOST_PP_FOR_33_I(s, p, o, m) BOOST_PP_IF(p(34, s), m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IF(p(34, s), BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(o(34, s), p, o, m) +# define BOOST_PP_FOR_34_I(s, p, o, m) BOOST_PP_IF(p(35, s), m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IF(p(35, s), BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(o(35, s), p, o, m) +# define BOOST_PP_FOR_35_I(s, p, o, m) BOOST_PP_IF(p(36, s), m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IF(p(36, s), BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(o(36, s), p, o, m) +# define BOOST_PP_FOR_36_I(s, p, o, m) BOOST_PP_IF(p(37, s), m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IF(p(37, s), BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(o(37, s), p, o, m) +# define BOOST_PP_FOR_37_I(s, p, o, m) BOOST_PP_IF(p(38, s), m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IF(p(38, s), BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(o(38, s), p, o, m) +# define BOOST_PP_FOR_38_I(s, p, o, m) BOOST_PP_IF(p(39, s), m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IF(p(39, s), BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(o(39, s), p, o, m) +# define BOOST_PP_FOR_39_I(s, p, o, m) BOOST_PP_IF(p(40, s), m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IF(p(40, s), BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(o(40, s), p, o, m) +# define BOOST_PP_FOR_40_I(s, p, o, m) BOOST_PP_IF(p(41, s), m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IF(p(41, s), BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(o(41, s), p, o, m) +# define BOOST_PP_FOR_41_I(s, p, o, m) BOOST_PP_IF(p(42, s), m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IF(p(42, s), BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(o(42, s), p, o, m) +# define BOOST_PP_FOR_42_I(s, p, o, m) BOOST_PP_IF(p(43, s), m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IF(p(43, s), BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(o(43, s), p, o, m) +# define BOOST_PP_FOR_43_I(s, p, o, m) BOOST_PP_IF(p(44, s), m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IF(p(44, s), BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(o(44, s), p, o, m) +# define BOOST_PP_FOR_44_I(s, p, o, m) BOOST_PP_IF(p(45, s), m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IF(p(45, s), BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(o(45, s), p, o, m) +# define BOOST_PP_FOR_45_I(s, p, o, m) BOOST_PP_IF(p(46, s), m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IF(p(46, s), BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(o(46, s), p, o, m) +# define BOOST_PP_FOR_46_I(s, p, o, m) BOOST_PP_IF(p(47, s), m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IF(p(47, s), BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(o(47, s), p, o, m) +# define BOOST_PP_FOR_47_I(s, p, o, m) BOOST_PP_IF(p(48, s), m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IF(p(48, s), BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(o(48, s), p, o, m) +# define BOOST_PP_FOR_48_I(s, p, o, m) BOOST_PP_IF(p(49, s), m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IF(p(49, s), BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(o(49, s), p, o, m) +# define BOOST_PP_FOR_49_I(s, p, o, m) BOOST_PP_IF(p(50, s), m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IF(p(50, s), BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(o(50, s), p, o, m) +# define BOOST_PP_FOR_50_I(s, p, o, m) BOOST_PP_IF(p(51, s), m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IF(p(51, s), BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(o(51, s), p, o, m) +# define BOOST_PP_FOR_51_I(s, p, o, m) BOOST_PP_IF(p(52, s), m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IF(p(52, s), BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(o(52, s), p, o, m) +# define BOOST_PP_FOR_52_I(s, p, o, m) BOOST_PP_IF(p(53, s), m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IF(p(53, s), BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(o(53, s), p, o, m) +# define BOOST_PP_FOR_53_I(s, p, o, m) BOOST_PP_IF(p(54, s), m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IF(p(54, s), BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(o(54, s), p, o, m) +# define BOOST_PP_FOR_54_I(s, p, o, m) BOOST_PP_IF(p(55, s), m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IF(p(55, s), BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(o(55, s), p, o, m) +# define BOOST_PP_FOR_55_I(s, p, o, m) BOOST_PP_IF(p(56, s), m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IF(p(56, s), BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(o(56, s), p, o, m) +# define BOOST_PP_FOR_56_I(s, p, o, m) BOOST_PP_IF(p(57, s), m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IF(p(57, s), BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(o(57, s), p, o, m) +# define BOOST_PP_FOR_57_I(s, p, o, m) BOOST_PP_IF(p(58, s), m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IF(p(58, s), BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(o(58, s), p, o, m) +# define BOOST_PP_FOR_58_I(s, p, o, m) BOOST_PP_IF(p(59, s), m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IF(p(59, s), BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(o(59, s), p, o, m) +# define BOOST_PP_FOR_59_I(s, p, o, m) BOOST_PP_IF(p(60, s), m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IF(p(60, s), BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(o(60, s), p, o, m) +# define BOOST_PP_FOR_60_I(s, p, o, m) BOOST_PP_IF(p(61, s), m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IF(p(61, s), BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(o(61, s), p, o, m) +# define BOOST_PP_FOR_61_I(s, p, o, m) BOOST_PP_IF(p(62, s), m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IF(p(62, s), BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(o(62, s), p, o, m) +# define BOOST_PP_FOR_62_I(s, p, o, m) BOOST_PP_IF(p(63, s), m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IF(p(63, s), BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(o(63, s), p, o, m) +# define BOOST_PP_FOR_63_I(s, p, o, m) BOOST_PP_IF(p(64, s), m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IF(p(64, s), BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(o(64, s), p, o, m) +# define BOOST_PP_FOR_64_I(s, p, o, m) BOOST_PP_IF(p(65, s), m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IF(p(65, s), BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(o(65, s), p, o, m) +# define BOOST_PP_FOR_65_I(s, p, o, m) BOOST_PP_IF(p(66, s), m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IF(p(66, s), BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(o(66, s), p, o, m) +# define BOOST_PP_FOR_66_I(s, p, o, m) BOOST_PP_IF(p(67, s), m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IF(p(67, s), BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(o(67, s), p, o, m) +# define BOOST_PP_FOR_67_I(s, p, o, m) BOOST_PP_IF(p(68, s), m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IF(p(68, s), BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(o(68, s), p, o, m) +# define BOOST_PP_FOR_68_I(s, p, o, m) BOOST_PP_IF(p(69, s), m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IF(p(69, s), BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(o(69, s), p, o, m) +# define BOOST_PP_FOR_69_I(s, p, o, m) BOOST_PP_IF(p(70, s), m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IF(p(70, s), BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(o(70, s), p, o, m) +# define BOOST_PP_FOR_70_I(s, p, o, m) BOOST_PP_IF(p(71, s), m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IF(p(71, s), BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(o(71, s), p, o, m) +# define BOOST_PP_FOR_71_I(s, p, o, m) BOOST_PP_IF(p(72, s), m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IF(p(72, s), BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(o(72, s), p, o, m) +# define BOOST_PP_FOR_72_I(s, p, o, m) BOOST_PP_IF(p(73, s), m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IF(p(73, s), BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(o(73, s), p, o, m) +# define BOOST_PP_FOR_73_I(s, p, o, m) BOOST_PP_IF(p(74, s), m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IF(p(74, s), BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(o(74, s), p, o, m) +# define BOOST_PP_FOR_74_I(s, p, o, m) BOOST_PP_IF(p(75, s), m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IF(p(75, s), BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(o(75, s), p, o, m) +# define BOOST_PP_FOR_75_I(s, p, o, m) BOOST_PP_IF(p(76, s), m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IF(p(76, s), BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(o(76, s), p, o, m) +# define BOOST_PP_FOR_76_I(s, p, o, m) BOOST_PP_IF(p(77, s), m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IF(p(77, s), BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(o(77, s), p, o, m) +# define BOOST_PP_FOR_77_I(s, p, o, m) BOOST_PP_IF(p(78, s), m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IF(p(78, s), BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(o(78, s), p, o, m) +# define BOOST_PP_FOR_78_I(s, p, o, m) BOOST_PP_IF(p(79, s), m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IF(p(79, s), BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(o(79, s), p, o, m) +# define BOOST_PP_FOR_79_I(s, p, o, m) BOOST_PP_IF(p(80, s), m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IF(p(80, s), BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(o(80, s), p, o, m) +# define BOOST_PP_FOR_80_I(s, p, o, m) BOOST_PP_IF(p(81, s), m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IF(p(81, s), BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(o(81, s), p, o, m) +# define BOOST_PP_FOR_81_I(s, p, o, m) BOOST_PP_IF(p(82, s), m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IF(p(82, s), BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(o(82, s), p, o, m) +# define BOOST_PP_FOR_82_I(s, p, o, m) BOOST_PP_IF(p(83, s), m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IF(p(83, s), BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(o(83, s), p, o, m) +# define BOOST_PP_FOR_83_I(s, p, o, m) BOOST_PP_IF(p(84, s), m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IF(p(84, s), BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(o(84, s), p, o, m) +# define BOOST_PP_FOR_84_I(s, p, o, m) BOOST_PP_IF(p(85, s), m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IF(p(85, s), BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(o(85, s), p, o, m) +# define BOOST_PP_FOR_85_I(s, p, o, m) BOOST_PP_IF(p(86, s), m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IF(p(86, s), BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(o(86, s), p, o, m) +# define BOOST_PP_FOR_86_I(s, p, o, m) BOOST_PP_IF(p(87, s), m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IF(p(87, s), BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(o(87, s), p, o, m) +# define BOOST_PP_FOR_87_I(s, p, o, m) BOOST_PP_IF(p(88, s), m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IF(p(88, s), BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(o(88, s), p, o, m) +# define BOOST_PP_FOR_88_I(s, p, o, m) BOOST_PP_IF(p(89, s), m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IF(p(89, s), BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(o(89, s), p, o, m) +# define BOOST_PP_FOR_89_I(s, p, o, m) BOOST_PP_IF(p(90, s), m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IF(p(90, s), BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(o(90, s), p, o, m) +# define BOOST_PP_FOR_90_I(s, p, o, m) BOOST_PP_IF(p(91, s), m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IF(p(91, s), BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(o(91, s), p, o, m) +# define BOOST_PP_FOR_91_I(s, p, o, m) BOOST_PP_IF(p(92, s), m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IF(p(92, s), BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(o(92, s), p, o, m) +# define BOOST_PP_FOR_92_I(s, p, o, m) BOOST_PP_IF(p(93, s), m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IF(p(93, s), BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(o(93, s), p, o, m) +# define BOOST_PP_FOR_93_I(s, p, o, m) BOOST_PP_IF(p(94, s), m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IF(p(94, s), BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(o(94, s), p, o, m) +# define BOOST_PP_FOR_94_I(s, p, o, m) BOOST_PP_IF(p(95, s), m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IF(p(95, s), BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(o(95, s), p, o, m) +# define BOOST_PP_FOR_95_I(s, p, o, m) BOOST_PP_IF(p(96, s), m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IF(p(96, s), BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(o(96, s), p, o, m) +# define BOOST_PP_FOR_96_I(s, p, o, m) BOOST_PP_IF(p(97, s), m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IF(p(97, s), BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(o(97, s), p, o, m) +# define BOOST_PP_FOR_97_I(s, p, o, m) BOOST_PP_IF(p(98, s), m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IF(p(98, s), BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(o(98, s), p, o, m) +# define BOOST_PP_FOR_98_I(s, p, o, m) BOOST_PP_IF(p(99, s), m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IF(p(99, s), BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(o(99, s), p, o, m) +# define BOOST_PP_FOR_99_I(s, p, o, m) BOOST_PP_IF(p(100, s), m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IF(p(100, s), BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(o(100, s), p, o, m) +# define BOOST_PP_FOR_100_I(s, p, o, m) BOOST_PP_IF(p(101, s), m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IF(p(101, s), BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(o(101, s), p, o, m) +# define BOOST_PP_FOR_101_I(s, p, o, m) BOOST_PP_IF(p(102, s), m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IF(p(102, s), BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(o(102, s), p, o, m) +# define BOOST_PP_FOR_102_I(s, p, o, m) BOOST_PP_IF(p(103, s), m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IF(p(103, s), BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(o(103, s), p, o, m) +# define BOOST_PP_FOR_103_I(s, p, o, m) BOOST_PP_IF(p(104, s), m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IF(p(104, s), BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(o(104, s), p, o, m) +# define BOOST_PP_FOR_104_I(s, p, o, m) BOOST_PP_IF(p(105, s), m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IF(p(105, s), BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(o(105, s), p, o, m) +# define BOOST_PP_FOR_105_I(s, p, o, m) BOOST_PP_IF(p(106, s), m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IF(p(106, s), BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(o(106, s), p, o, m) +# define BOOST_PP_FOR_106_I(s, p, o, m) BOOST_PP_IF(p(107, s), m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IF(p(107, s), BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(o(107, s), p, o, m) +# define BOOST_PP_FOR_107_I(s, p, o, m) BOOST_PP_IF(p(108, s), m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IF(p(108, s), BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(o(108, s), p, o, m) +# define BOOST_PP_FOR_108_I(s, p, o, m) BOOST_PP_IF(p(109, s), m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IF(p(109, s), BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(o(109, s), p, o, m) +# define BOOST_PP_FOR_109_I(s, p, o, m) BOOST_PP_IF(p(110, s), m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IF(p(110, s), BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(o(110, s), p, o, m) +# define BOOST_PP_FOR_110_I(s, p, o, m) BOOST_PP_IF(p(111, s), m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IF(p(111, s), BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(o(111, s), p, o, m) +# define BOOST_PP_FOR_111_I(s, p, o, m) BOOST_PP_IF(p(112, s), m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IF(p(112, s), BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(o(112, s), p, o, m) +# define BOOST_PP_FOR_112_I(s, p, o, m) BOOST_PP_IF(p(113, s), m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IF(p(113, s), BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(o(113, s), p, o, m) +# define BOOST_PP_FOR_113_I(s, p, o, m) BOOST_PP_IF(p(114, s), m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IF(p(114, s), BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(o(114, s), p, o, m) +# define BOOST_PP_FOR_114_I(s, p, o, m) BOOST_PP_IF(p(115, s), m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IF(p(115, s), BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(o(115, s), p, o, m) +# define BOOST_PP_FOR_115_I(s, p, o, m) BOOST_PP_IF(p(116, s), m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IF(p(116, s), BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(o(116, s), p, o, m) +# define BOOST_PP_FOR_116_I(s, p, o, m) BOOST_PP_IF(p(117, s), m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IF(p(117, s), BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(o(117, s), p, o, m) +# define BOOST_PP_FOR_117_I(s, p, o, m) BOOST_PP_IF(p(118, s), m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IF(p(118, s), BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(o(118, s), p, o, m) +# define BOOST_PP_FOR_118_I(s, p, o, m) BOOST_PP_IF(p(119, s), m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IF(p(119, s), BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(o(119, s), p, o, m) +# define BOOST_PP_FOR_119_I(s, p, o, m) BOOST_PP_IF(p(120, s), m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IF(p(120, s), BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(o(120, s), p, o, m) +# define BOOST_PP_FOR_120_I(s, p, o, m) BOOST_PP_IF(p(121, s), m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IF(p(121, s), BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(o(121, s), p, o, m) +# define BOOST_PP_FOR_121_I(s, p, o, m) BOOST_PP_IF(p(122, s), m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IF(p(122, s), BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(o(122, s), p, o, m) +# define BOOST_PP_FOR_122_I(s, p, o, m) BOOST_PP_IF(p(123, s), m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IF(p(123, s), BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(o(123, s), p, o, m) +# define BOOST_PP_FOR_123_I(s, p, o, m) BOOST_PP_IF(p(124, s), m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IF(p(124, s), BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(o(124, s), p, o, m) +# define BOOST_PP_FOR_124_I(s, p, o, m) BOOST_PP_IF(p(125, s), m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IF(p(125, s), BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(o(125, s), p, o, m) +# define BOOST_PP_FOR_125_I(s, p, o, m) BOOST_PP_IF(p(126, s), m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IF(p(126, s), BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(o(126, s), p, o, m) +# define BOOST_PP_FOR_126_I(s, p, o, m) BOOST_PP_IF(p(127, s), m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IF(p(127, s), BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(o(127, s), p, o, m) +# define BOOST_PP_FOR_127_I(s, p, o, m) BOOST_PP_IF(p(128, s), m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IF(p(128, s), BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(o(128, s), p, o, m) +# define BOOST_PP_FOR_128_I(s, p, o, m) BOOST_PP_IF(p(129, s), m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IF(p(129, s), BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(o(129, s), p, o, m) +# define BOOST_PP_FOR_129_I(s, p, o, m) BOOST_PP_IF(p(130, s), m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IF(p(130, s), BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(o(130, s), p, o, m) +# define BOOST_PP_FOR_130_I(s, p, o, m) BOOST_PP_IF(p(131, s), m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IF(p(131, s), BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(o(131, s), p, o, m) +# define BOOST_PP_FOR_131_I(s, p, o, m) BOOST_PP_IF(p(132, s), m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IF(p(132, s), BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(o(132, s), p, o, m) +# define BOOST_PP_FOR_132_I(s, p, o, m) BOOST_PP_IF(p(133, s), m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IF(p(133, s), BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(o(133, s), p, o, m) +# define BOOST_PP_FOR_133_I(s, p, o, m) BOOST_PP_IF(p(134, s), m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IF(p(134, s), BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(o(134, s), p, o, m) +# define BOOST_PP_FOR_134_I(s, p, o, m) BOOST_PP_IF(p(135, s), m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IF(p(135, s), BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(o(135, s), p, o, m) +# define BOOST_PP_FOR_135_I(s, p, o, m) BOOST_PP_IF(p(136, s), m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IF(p(136, s), BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(o(136, s), p, o, m) +# define BOOST_PP_FOR_136_I(s, p, o, m) BOOST_PP_IF(p(137, s), m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IF(p(137, s), BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(o(137, s), p, o, m) +# define BOOST_PP_FOR_137_I(s, p, o, m) BOOST_PP_IF(p(138, s), m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IF(p(138, s), BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(o(138, s), p, o, m) +# define BOOST_PP_FOR_138_I(s, p, o, m) BOOST_PP_IF(p(139, s), m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IF(p(139, s), BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(o(139, s), p, o, m) +# define BOOST_PP_FOR_139_I(s, p, o, m) BOOST_PP_IF(p(140, s), m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IF(p(140, s), BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(o(140, s), p, o, m) +# define BOOST_PP_FOR_140_I(s, p, o, m) BOOST_PP_IF(p(141, s), m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IF(p(141, s), BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(o(141, s), p, o, m) +# define BOOST_PP_FOR_141_I(s, p, o, m) BOOST_PP_IF(p(142, s), m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IF(p(142, s), BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(o(142, s), p, o, m) +# define BOOST_PP_FOR_142_I(s, p, o, m) BOOST_PP_IF(p(143, s), m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IF(p(143, s), BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(o(143, s), p, o, m) +# define BOOST_PP_FOR_143_I(s, p, o, m) BOOST_PP_IF(p(144, s), m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IF(p(144, s), BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(o(144, s), p, o, m) +# define BOOST_PP_FOR_144_I(s, p, o, m) BOOST_PP_IF(p(145, s), m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IF(p(145, s), BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(o(145, s), p, o, m) +# define BOOST_PP_FOR_145_I(s, p, o, m) BOOST_PP_IF(p(146, s), m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IF(p(146, s), BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(o(146, s), p, o, m) +# define BOOST_PP_FOR_146_I(s, p, o, m) BOOST_PP_IF(p(147, s), m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IF(p(147, s), BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(o(147, s), p, o, m) +# define BOOST_PP_FOR_147_I(s, p, o, m) BOOST_PP_IF(p(148, s), m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IF(p(148, s), BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(o(148, s), p, o, m) +# define BOOST_PP_FOR_148_I(s, p, o, m) BOOST_PP_IF(p(149, s), m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IF(p(149, s), BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(o(149, s), p, o, m) +# define BOOST_PP_FOR_149_I(s, p, o, m) BOOST_PP_IF(p(150, s), m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IF(p(150, s), BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(o(150, s), p, o, m) +# define BOOST_PP_FOR_150_I(s, p, o, m) BOOST_PP_IF(p(151, s), m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IF(p(151, s), BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(o(151, s), p, o, m) +# define BOOST_PP_FOR_151_I(s, p, o, m) BOOST_PP_IF(p(152, s), m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IF(p(152, s), BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(o(152, s), p, o, m) +# define BOOST_PP_FOR_152_I(s, p, o, m) BOOST_PP_IF(p(153, s), m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IF(p(153, s), BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(o(153, s), p, o, m) +# define BOOST_PP_FOR_153_I(s, p, o, m) BOOST_PP_IF(p(154, s), m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IF(p(154, s), BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(o(154, s), p, o, m) +# define BOOST_PP_FOR_154_I(s, p, o, m) BOOST_PP_IF(p(155, s), m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IF(p(155, s), BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(o(155, s), p, o, m) +# define BOOST_PP_FOR_155_I(s, p, o, m) BOOST_PP_IF(p(156, s), m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IF(p(156, s), BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(o(156, s), p, o, m) +# define BOOST_PP_FOR_156_I(s, p, o, m) BOOST_PP_IF(p(157, s), m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IF(p(157, s), BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(o(157, s), p, o, m) +# define BOOST_PP_FOR_157_I(s, p, o, m) BOOST_PP_IF(p(158, s), m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IF(p(158, s), BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(o(158, s), p, o, m) +# define BOOST_PP_FOR_158_I(s, p, o, m) BOOST_PP_IF(p(159, s), m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IF(p(159, s), BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(o(159, s), p, o, m) +# define BOOST_PP_FOR_159_I(s, p, o, m) BOOST_PP_IF(p(160, s), m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IF(p(160, s), BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(o(160, s), p, o, m) +# define BOOST_PP_FOR_160_I(s, p, o, m) BOOST_PP_IF(p(161, s), m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IF(p(161, s), BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(o(161, s), p, o, m) +# define BOOST_PP_FOR_161_I(s, p, o, m) BOOST_PP_IF(p(162, s), m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IF(p(162, s), BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(o(162, s), p, o, m) +# define BOOST_PP_FOR_162_I(s, p, o, m) BOOST_PP_IF(p(163, s), m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IF(p(163, s), BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(o(163, s), p, o, m) +# define BOOST_PP_FOR_163_I(s, p, o, m) BOOST_PP_IF(p(164, s), m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IF(p(164, s), BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(o(164, s), p, o, m) +# define BOOST_PP_FOR_164_I(s, p, o, m) BOOST_PP_IF(p(165, s), m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IF(p(165, s), BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(o(165, s), p, o, m) +# define BOOST_PP_FOR_165_I(s, p, o, m) BOOST_PP_IF(p(166, s), m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IF(p(166, s), BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(o(166, s), p, o, m) +# define BOOST_PP_FOR_166_I(s, p, o, m) BOOST_PP_IF(p(167, s), m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IF(p(167, s), BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(o(167, s), p, o, m) +# define BOOST_PP_FOR_167_I(s, p, o, m) BOOST_PP_IF(p(168, s), m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IF(p(168, s), BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(o(168, s), p, o, m) +# define BOOST_PP_FOR_168_I(s, p, o, m) BOOST_PP_IF(p(169, s), m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IF(p(169, s), BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(o(169, s), p, o, m) +# define BOOST_PP_FOR_169_I(s, p, o, m) BOOST_PP_IF(p(170, s), m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IF(p(170, s), BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(o(170, s), p, o, m) +# define BOOST_PP_FOR_170_I(s, p, o, m) BOOST_PP_IF(p(171, s), m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IF(p(171, s), BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(o(171, s), p, o, m) +# define BOOST_PP_FOR_171_I(s, p, o, m) BOOST_PP_IF(p(172, s), m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IF(p(172, s), BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(o(172, s), p, o, m) +# define BOOST_PP_FOR_172_I(s, p, o, m) BOOST_PP_IF(p(173, s), m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IF(p(173, s), BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(o(173, s), p, o, m) +# define BOOST_PP_FOR_173_I(s, p, o, m) BOOST_PP_IF(p(174, s), m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IF(p(174, s), BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(o(174, s), p, o, m) +# define BOOST_PP_FOR_174_I(s, p, o, m) BOOST_PP_IF(p(175, s), m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IF(p(175, s), BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(o(175, s), p, o, m) +# define BOOST_PP_FOR_175_I(s, p, o, m) BOOST_PP_IF(p(176, s), m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IF(p(176, s), BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(o(176, s), p, o, m) +# define BOOST_PP_FOR_176_I(s, p, o, m) BOOST_PP_IF(p(177, s), m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IF(p(177, s), BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(o(177, s), p, o, m) +# define BOOST_PP_FOR_177_I(s, p, o, m) BOOST_PP_IF(p(178, s), m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IF(p(178, s), BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(o(178, s), p, o, m) +# define BOOST_PP_FOR_178_I(s, p, o, m) BOOST_PP_IF(p(179, s), m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IF(p(179, s), BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(o(179, s), p, o, m) +# define BOOST_PP_FOR_179_I(s, p, o, m) BOOST_PP_IF(p(180, s), m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IF(p(180, s), BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(o(180, s), p, o, m) +# define BOOST_PP_FOR_180_I(s, p, o, m) BOOST_PP_IF(p(181, s), m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IF(p(181, s), BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(o(181, s), p, o, m) +# define BOOST_PP_FOR_181_I(s, p, o, m) BOOST_PP_IF(p(182, s), m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IF(p(182, s), BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(o(182, s), p, o, m) +# define BOOST_PP_FOR_182_I(s, p, o, m) BOOST_PP_IF(p(183, s), m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IF(p(183, s), BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(o(183, s), p, o, m) +# define BOOST_PP_FOR_183_I(s, p, o, m) BOOST_PP_IF(p(184, s), m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IF(p(184, s), BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(o(184, s), p, o, m) +# define BOOST_PP_FOR_184_I(s, p, o, m) BOOST_PP_IF(p(185, s), m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IF(p(185, s), BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(o(185, s), p, o, m) +# define BOOST_PP_FOR_185_I(s, p, o, m) BOOST_PP_IF(p(186, s), m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IF(p(186, s), BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(o(186, s), p, o, m) +# define BOOST_PP_FOR_186_I(s, p, o, m) BOOST_PP_IF(p(187, s), m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IF(p(187, s), BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(o(187, s), p, o, m) +# define BOOST_PP_FOR_187_I(s, p, o, m) BOOST_PP_IF(p(188, s), m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IF(p(188, s), BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(o(188, s), p, o, m) +# define BOOST_PP_FOR_188_I(s, p, o, m) BOOST_PP_IF(p(189, s), m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IF(p(189, s), BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(o(189, s), p, o, m) +# define BOOST_PP_FOR_189_I(s, p, o, m) BOOST_PP_IF(p(190, s), m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IF(p(190, s), BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(o(190, s), p, o, m) +# define BOOST_PP_FOR_190_I(s, p, o, m) BOOST_PP_IF(p(191, s), m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IF(p(191, s), BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(o(191, s), p, o, m) +# define BOOST_PP_FOR_191_I(s, p, o, m) BOOST_PP_IF(p(192, s), m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IF(p(192, s), BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(o(192, s), p, o, m) +# define BOOST_PP_FOR_192_I(s, p, o, m) BOOST_PP_IF(p(193, s), m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IF(p(193, s), BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(o(193, s), p, o, m) +# define BOOST_PP_FOR_193_I(s, p, o, m) BOOST_PP_IF(p(194, s), m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IF(p(194, s), BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(o(194, s), p, o, m) +# define BOOST_PP_FOR_194_I(s, p, o, m) BOOST_PP_IF(p(195, s), m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IF(p(195, s), BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(o(195, s), p, o, m) +# define BOOST_PP_FOR_195_I(s, p, o, m) BOOST_PP_IF(p(196, s), m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IF(p(196, s), BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(o(196, s), p, o, m) +# define BOOST_PP_FOR_196_I(s, p, o, m) BOOST_PP_IF(p(197, s), m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IF(p(197, s), BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(o(197, s), p, o, m) +# define BOOST_PP_FOR_197_I(s, p, o, m) BOOST_PP_IF(p(198, s), m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IF(p(198, s), BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(o(198, s), p, o, m) +# define BOOST_PP_FOR_198_I(s, p, o, m) BOOST_PP_IF(p(199, s), m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IF(p(199, s), BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(o(199, s), p, o, m) +# define BOOST_PP_FOR_199_I(s, p, o, m) BOOST_PP_IF(p(200, s), m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IF(p(200, s), BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(o(200, s), p, o, m) +# define BOOST_PP_FOR_200_I(s, p, o, m) BOOST_PP_IF(p(201, s), m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IF(p(201, s), BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(o(201, s), p, o, m) +# define BOOST_PP_FOR_201_I(s, p, o, m) BOOST_PP_IF(p(202, s), m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IF(p(202, s), BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(o(202, s), p, o, m) +# define BOOST_PP_FOR_202_I(s, p, o, m) BOOST_PP_IF(p(203, s), m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IF(p(203, s), BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(o(203, s), p, o, m) +# define BOOST_PP_FOR_203_I(s, p, o, m) BOOST_PP_IF(p(204, s), m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IF(p(204, s), BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(o(204, s), p, o, m) +# define BOOST_PP_FOR_204_I(s, p, o, m) BOOST_PP_IF(p(205, s), m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IF(p(205, s), BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(o(205, s), p, o, m) +# define BOOST_PP_FOR_205_I(s, p, o, m) BOOST_PP_IF(p(206, s), m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IF(p(206, s), BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(o(206, s), p, o, m) +# define BOOST_PP_FOR_206_I(s, p, o, m) BOOST_PP_IF(p(207, s), m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IF(p(207, s), BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(o(207, s), p, o, m) +# define BOOST_PP_FOR_207_I(s, p, o, m) BOOST_PP_IF(p(208, s), m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IF(p(208, s), BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(o(208, s), p, o, m) +# define BOOST_PP_FOR_208_I(s, p, o, m) BOOST_PP_IF(p(209, s), m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IF(p(209, s), BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(o(209, s), p, o, m) +# define BOOST_PP_FOR_209_I(s, p, o, m) BOOST_PP_IF(p(210, s), m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IF(p(210, s), BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(o(210, s), p, o, m) +# define BOOST_PP_FOR_210_I(s, p, o, m) BOOST_PP_IF(p(211, s), m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IF(p(211, s), BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(o(211, s), p, o, m) +# define BOOST_PP_FOR_211_I(s, p, o, m) BOOST_PP_IF(p(212, s), m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IF(p(212, s), BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(o(212, s), p, o, m) +# define BOOST_PP_FOR_212_I(s, p, o, m) BOOST_PP_IF(p(213, s), m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IF(p(213, s), BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(o(213, s), p, o, m) +# define BOOST_PP_FOR_213_I(s, p, o, m) BOOST_PP_IF(p(214, s), m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IF(p(214, s), BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(o(214, s), p, o, m) +# define BOOST_PP_FOR_214_I(s, p, o, m) BOOST_PP_IF(p(215, s), m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IF(p(215, s), BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(o(215, s), p, o, m) +# define BOOST_PP_FOR_215_I(s, p, o, m) BOOST_PP_IF(p(216, s), m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IF(p(216, s), BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(o(216, s), p, o, m) +# define BOOST_PP_FOR_216_I(s, p, o, m) BOOST_PP_IF(p(217, s), m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IF(p(217, s), BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(o(217, s), p, o, m) +# define BOOST_PP_FOR_217_I(s, p, o, m) BOOST_PP_IF(p(218, s), m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IF(p(218, s), BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(o(218, s), p, o, m) +# define BOOST_PP_FOR_218_I(s, p, o, m) BOOST_PP_IF(p(219, s), m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IF(p(219, s), BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(o(219, s), p, o, m) +# define BOOST_PP_FOR_219_I(s, p, o, m) BOOST_PP_IF(p(220, s), m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IF(p(220, s), BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(o(220, s), p, o, m) +# define BOOST_PP_FOR_220_I(s, p, o, m) BOOST_PP_IF(p(221, s), m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IF(p(221, s), BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(o(221, s), p, o, m) +# define BOOST_PP_FOR_221_I(s, p, o, m) BOOST_PP_IF(p(222, s), m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IF(p(222, s), BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(o(222, s), p, o, m) +# define BOOST_PP_FOR_222_I(s, p, o, m) BOOST_PP_IF(p(223, s), m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IF(p(223, s), BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(o(223, s), p, o, m) +# define BOOST_PP_FOR_223_I(s, p, o, m) BOOST_PP_IF(p(224, s), m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IF(p(224, s), BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(o(224, s), p, o, m) +# define BOOST_PP_FOR_224_I(s, p, o, m) BOOST_PP_IF(p(225, s), m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IF(p(225, s), BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(o(225, s), p, o, m) +# define BOOST_PP_FOR_225_I(s, p, o, m) BOOST_PP_IF(p(226, s), m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IF(p(226, s), BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(o(226, s), p, o, m) +# define BOOST_PP_FOR_226_I(s, p, o, m) BOOST_PP_IF(p(227, s), m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IF(p(227, s), BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(o(227, s), p, o, m) +# define BOOST_PP_FOR_227_I(s, p, o, m) BOOST_PP_IF(p(228, s), m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IF(p(228, s), BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(o(228, s), p, o, m) +# define BOOST_PP_FOR_228_I(s, p, o, m) BOOST_PP_IF(p(229, s), m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IF(p(229, s), BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(o(229, s), p, o, m) +# define BOOST_PP_FOR_229_I(s, p, o, m) BOOST_PP_IF(p(230, s), m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IF(p(230, s), BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(o(230, s), p, o, m) +# define BOOST_PP_FOR_230_I(s, p, o, m) BOOST_PP_IF(p(231, s), m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IF(p(231, s), BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(o(231, s), p, o, m) +# define BOOST_PP_FOR_231_I(s, p, o, m) BOOST_PP_IF(p(232, s), m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IF(p(232, s), BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(o(232, s), p, o, m) +# define BOOST_PP_FOR_232_I(s, p, o, m) BOOST_PP_IF(p(233, s), m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IF(p(233, s), BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(o(233, s), p, o, m) +# define BOOST_PP_FOR_233_I(s, p, o, m) BOOST_PP_IF(p(234, s), m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IF(p(234, s), BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(o(234, s), p, o, m) +# define BOOST_PP_FOR_234_I(s, p, o, m) BOOST_PP_IF(p(235, s), m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IF(p(235, s), BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(o(235, s), p, o, m) +# define BOOST_PP_FOR_235_I(s, p, o, m) BOOST_PP_IF(p(236, s), m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IF(p(236, s), BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(o(236, s), p, o, m) +# define BOOST_PP_FOR_236_I(s, p, o, m) BOOST_PP_IF(p(237, s), m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IF(p(237, s), BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(o(237, s), p, o, m) +# define BOOST_PP_FOR_237_I(s, p, o, m) BOOST_PP_IF(p(238, s), m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IF(p(238, s), BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(o(238, s), p, o, m) +# define BOOST_PP_FOR_238_I(s, p, o, m) BOOST_PP_IF(p(239, s), m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IF(p(239, s), BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(o(239, s), p, o, m) +# define BOOST_PP_FOR_239_I(s, p, o, m) BOOST_PP_IF(p(240, s), m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IF(p(240, s), BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(o(240, s), p, o, m) +# define BOOST_PP_FOR_240_I(s, p, o, m) BOOST_PP_IF(p(241, s), m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IF(p(241, s), BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(o(241, s), p, o, m) +# define BOOST_PP_FOR_241_I(s, p, o, m) BOOST_PP_IF(p(242, s), m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IF(p(242, s), BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(o(242, s), p, o, m) +# define BOOST_PP_FOR_242_I(s, p, o, m) BOOST_PP_IF(p(243, s), m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IF(p(243, s), BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(o(243, s), p, o, m) +# define BOOST_PP_FOR_243_I(s, p, o, m) BOOST_PP_IF(p(244, s), m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IF(p(244, s), BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(o(244, s), p, o, m) +# define BOOST_PP_FOR_244_I(s, p, o, m) BOOST_PP_IF(p(245, s), m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IF(p(245, s), BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(o(245, s), p, o, m) +# define BOOST_PP_FOR_245_I(s, p, o, m) BOOST_PP_IF(p(246, s), m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IF(p(246, s), BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(o(246, s), p, o, m) +# define BOOST_PP_FOR_246_I(s, p, o, m) BOOST_PP_IF(p(247, s), m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IF(p(247, s), BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(o(247, s), p, o, m) +# define BOOST_PP_FOR_247_I(s, p, o, m) BOOST_PP_IF(p(248, s), m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IF(p(248, s), BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(o(248, s), p, o, m) +# define BOOST_PP_FOR_248_I(s, p, o, m) BOOST_PP_IF(p(249, s), m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IF(p(249, s), BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(o(249, s), p, o, m) +# define BOOST_PP_FOR_249_I(s, p, o, m) BOOST_PP_IF(p(250, s), m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IF(p(250, s), BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(o(250, s), p, o, m) +# define BOOST_PP_FOR_250_I(s, p, o, m) BOOST_PP_IF(p(251, s), m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IF(p(251, s), BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(o(251, s), p, o, m) +# define BOOST_PP_FOR_251_I(s, p, o, m) BOOST_PP_IF(p(252, s), m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IF(p(252, s), BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(o(252, s), p, o, m) +# define BOOST_PP_FOR_252_I(s, p, o, m) BOOST_PP_IF(p(253, s), m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IF(p(253, s), BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(o(253, s), p, o, m) +# define BOOST_PP_FOR_253_I(s, p, o, m) BOOST_PP_IF(p(254, s), m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IF(p(254, s), BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(o(254, s), p, o, m) +# define BOOST_PP_FOR_254_I(s, p, o, m) BOOST_PP_IF(p(255, s), m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IF(p(255, s), BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(o(255, s), p, o, m) +# define BOOST_PP_FOR_255_I(s, p, o, m) BOOST_PP_IF(p(256, s), m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IF(p(256, s), BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(o(256, s), p, o, m) +# define BOOST_PP_FOR_256_I(s, p, o, m) BOOST_PP_IF(p(257, s), m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IF(p(257, s), BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(o(257, s), p, o, m) +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/detail/edg/limits/for_512.hpp b/src/boost/boost/preprocessor/repetition/detail/edg/limits/for_512.hpp new file mode 100644 index 000000000..b72c9890e --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/detail/edg/limits/for_512.hpp @@ -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_REPETITION_DETAIL_EDG_FOR_512_HPP +# define BOOST_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_512_HPP +# +# define BOOST_PP_FOR_257(s, p, o, m) BOOST_PP_FOR_257_I(s, p, o, m) +# define BOOST_PP_FOR_258(s, p, o, m) BOOST_PP_FOR_258_I(s, p, o, m) +# define BOOST_PP_FOR_259(s, p, o, m) BOOST_PP_FOR_259_I(s, p, o, m) +# define BOOST_PP_FOR_260(s, p, o, m) BOOST_PP_FOR_260_I(s, p, o, m) +# define BOOST_PP_FOR_261(s, p, o, m) BOOST_PP_FOR_261_I(s, p, o, m) +# define BOOST_PP_FOR_262(s, p, o, m) BOOST_PP_FOR_262_I(s, p, o, m) +# define BOOST_PP_FOR_263(s, p, o, m) BOOST_PP_FOR_263_I(s, p, o, m) +# define BOOST_PP_FOR_264(s, p, o, m) BOOST_PP_FOR_264_I(s, p, o, m) +# define BOOST_PP_FOR_265(s, p, o, m) BOOST_PP_FOR_265_I(s, p, o, m) +# define BOOST_PP_FOR_266(s, p, o, m) BOOST_PP_FOR_266_I(s, p, o, m) +# define BOOST_PP_FOR_267(s, p, o, m) BOOST_PP_FOR_267_I(s, p, o, m) +# define BOOST_PP_FOR_268(s, p, o, m) BOOST_PP_FOR_268_I(s, p, o, m) +# define BOOST_PP_FOR_269(s, p, o, m) BOOST_PP_FOR_269_I(s, p, o, m) +# define BOOST_PP_FOR_270(s, p, o, m) BOOST_PP_FOR_270_I(s, p, o, m) +# define BOOST_PP_FOR_271(s, p, o, m) BOOST_PP_FOR_271_I(s, p, o, m) +# define BOOST_PP_FOR_272(s, p, o, m) BOOST_PP_FOR_272_I(s, p, o, m) +# define BOOST_PP_FOR_273(s, p, o, m) BOOST_PP_FOR_273_I(s, p, o, m) +# define BOOST_PP_FOR_274(s, p, o, m) BOOST_PP_FOR_274_I(s, p, o, m) +# define BOOST_PP_FOR_275(s, p, o, m) BOOST_PP_FOR_275_I(s, p, o, m) +# define BOOST_PP_FOR_276(s, p, o, m) BOOST_PP_FOR_276_I(s, p, o, m) +# define BOOST_PP_FOR_277(s, p, o, m) BOOST_PP_FOR_277_I(s, p, o, m) +# define BOOST_PP_FOR_278(s, p, o, m) BOOST_PP_FOR_278_I(s, p, o, m) +# define BOOST_PP_FOR_279(s, p, o, m) BOOST_PP_FOR_279_I(s, p, o, m) +# define BOOST_PP_FOR_280(s, p, o, m) BOOST_PP_FOR_280_I(s, p, o, m) +# define BOOST_PP_FOR_281(s, p, o, m) BOOST_PP_FOR_281_I(s, p, o, m) +# define BOOST_PP_FOR_282(s, p, o, m) BOOST_PP_FOR_282_I(s, p, o, m) +# define BOOST_PP_FOR_283(s, p, o, m) BOOST_PP_FOR_283_I(s, p, o, m) +# define BOOST_PP_FOR_284(s, p, o, m) BOOST_PP_FOR_284_I(s, p, o, m) +# define BOOST_PP_FOR_285(s, p, o, m) BOOST_PP_FOR_285_I(s, p, o, m) +# define BOOST_PP_FOR_286(s, p, o, m) BOOST_PP_FOR_286_I(s, p, o, m) +# define BOOST_PP_FOR_287(s, p, o, m) BOOST_PP_FOR_287_I(s, p, o, m) +# define BOOST_PP_FOR_288(s, p, o, m) BOOST_PP_FOR_288_I(s, p, o, m) +# define BOOST_PP_FOR_289(s, p, o, m) BOOST_PP_FOR_289_I(s, p, o, m) +# define BOOST_PP_FOR_290(s, p, o, m) BOOST_PP_FOR_290_I(s, p, o, m) +# define BOOST_PP_FOR_291(s, p, o, m) BOOST_PP_FOR_291_I(s, p, o, m) +# define BOOST_PP_FOR_292(s, p, o, m) BOOST_PP_FOR_292_I(s, p, o, m) +# define BOOST_PP_FOR_293(s, p, o, m) BOOST_PP_FOR_293_I(s, p, o, m) +# define BOOST_PP_FOR_294(s, p, o, m) BOOST_PP_FOR_294_I(s, p, o, m) +# define BOOST_PP_FOR_295(s, p, o, m) BOOST_PP_FOR_295_I(s, p, o, m) +# define BOOST_PP_FOR_296(s, p, o, m) BOOST_PP_FOR_296_I(s, p, o, m) +# define BOOST_PP_FOR_297(s, p, o, m) BOOST_PP_FOR_297_I(s, p, o, m) +# define BOOST_PP_FOR_298(s, p, o, m) BOOST_PP_FOR_298_I(s, p, o, m) +# define BOOST_PP_FOR_299(s, p, o, m) BOOST_PP_FOR_299_I(s, p, o, m) +# define BOOST_PP_FOR_300(s, p, o, m) BOOST_PP_FOR_300_I(s, p, o, m) +# define BOOST_PP_FOR_301(s, p, o, m) BOOST_PP_FOR_301_I(s, p, o, m) +# define BOOST_PP_FOR_302(s, p, o, m) BOOST_PP_FOR_302_I(s, p, o, m) +# define BOOST_PP_FOR_303(s, p, o, m) BOOST_PP_FOR_303_I(s, p, o, m) +# define BOOST_PP_FOR_304(s, p, o, m) BOOST_PP_FOR_304_I(s, p, o, m) +# define BOOST_PP_FOR_305(s, p, o, m) BOOST_PP_FOR_305_I(s, p, o, m) +# define BOOST_PP_FOR_306(s, p, o, m) BOOST_PP_FOR_306_I(s, p, o, m) +# define BOOST_PP_FOR_307(s, p, o, m) BOOST_PP_FOR_307_I(s, p, o, m) +# define BOOST_PP_FOR_308(s, p, o, m) BOOST_PP_FOR_308_I(s, p, o, m) +# define BOOST_PP_FOR_309(s, p, o, m) BOOST_PP_FOR_309_I(s, p, o, m) +# define BOOST_PP_FOR_310(s, p, o, m) BOOST_PP_FOR_310_I(s, p, o, m) +# define BOOST_PP_FOR_311(s, p, o, m) BOOST_PP_FOR_311_I(s, p, o, m) +# define BOOST_PP_FOR_312(s, p, o, m) BOOST_PP_FOR_312_I(s, p, o, m) +# define BOOST_PP_FOR_313(s, p, o, m) BOOST_PP_FOR_313_I(s, p, o, m) +# define BOOST_PP_FOR_314(s, p, o, m) BOOST_PP_FOR_314_I(s, p, o, m) +# define BOOST_PP_FOR_315(s, p, o, m) BOOST_PP_FOR_315_I(s, p, o, m) +# define BOOST_PP_FOR_316(s, p, o, m) BOOST_PP_FOR_316_I(s, p, o, m) +# define BOOST_PP_FOR_317(s, p, o, m) BOOST_PP_FOR_317_I(s, p, o, m) +# define BOOST_PP_FOR_318(s, p, o, m) BOOST_PP_FOR_318_I(s, p, o, m) +# define BOOST_PP_FOR_319(s, p, o, m) BOOST_PP_FOR_319_I(s, p, o, m) +# define BOOST_PP_FOR_320(s, p, o, m) BOOST_PP_FOR_320_I(s, p, o, m) +# define BOOST_PP_FOR_321(s, p, o, m) BOOST_PP_FOR_321_I(s, p, o, m) +# define BOOST_PP_FOR_322(s, p, o, m) BOOST_PP_FOR_322_I(s, p, o, m) +# define BOOST_PP_FOR_323(s, p, o, m) BOOST_PP_FOR_323_I(s, p, o, m) +# define BOOST_PP_FOR_324(s, p, o, m) BOOST_PP_FOR_324_I(s, p, o, m) +# define BOOST_PP_FOR_325(s, p, o, m) BOOST_PP_FOR_325_I(s, p, o, m) +# define BOOST_PP_FOR_326(s, p, o, m) BOOST_PP_FOR_326_I(s, p, o, m) +# define BOOST_PP_FOR_327(s, p, o, m) BOOST_PP_FOR_327_I(s, p, o, m) +# define BOOST_PP_FOR_328(s, p, o, m) BOOST_PP_FOR_328_I(s, p, o, m) +# define BOOST_PP_FOR_329(s, p, o, m) BOOST_PP_FOR_329_I(s, p, o, m) +# define BOOST_PP_FOR_330(s, p, o, m) BOOST_PP_FOR_330_I(s, p, o, m) +# define BOOST_PP_FOR_331(s, p, o, m) BOOST_PP_FOR_331_I(s, p, o, m) +# define BOOST_PP_FOR_332(s, p, o, m) BOOST_PP_FOR_332_I(s, p, o, m) +# define BOOST_PP_FOR_333(s, p, o, m) BOOST_PP_FOR_333_I(s, p, o, m) +# define BOOST_PP_FOR_334(s, p, o, m) BOOST_PP_FOR_334_I(s, p, o, m) +# define BOOST_PP_FOR_335(s, p, o, m) BOOST_PP_FOR_335_I(s, p, o, m) +# define BOOST_PP_FOR_336(s, p, o, m) BOOST_PP_FOR_336_I(s, p, o, m) +# define BOOST_PP_FOR_337(s, p, o, m) BOOST_PP_FOR_337_I(s, p, o, m) +# define BOOST_PP_FOR_338(s, p, o, m) BOOST_PP_FOR_338_I(s, p, o, m) +# define BOOST_PP_FOR_339(s, p, o, m) BOOST_PP_FOR_339_I(s, p, o, m) +# define BOOST_PP_FOR_340(s, p, o, m) BOOST_PP_FOR_340_I(s, p, o, m) +# define BOOST_PP_FOR_341(s, p, o, m) BOOST_PP_FOR_341_I(s, p, o, m) +# define BOOST_PP_FOR_342(s, p, o, m) BOOST_PP_FOR_342_I(s, p, o, m) +# define BOOST_PP_FOR_343(s, p, o, m) BOOST_PP_FOR_343_I(s, p, o, m) +# define BOOST_PP_FOR_344(s, p, o, m) BOOST_PP_FOR_344_I(s, p, o, m) +# define BOOST_PP_FOR_345(s, p, o, m) BOOST_PP_FOR_345_I(s, p, o, m) +# define BOOST_PP_FOR_346(s, p, o, m) BOOST_PP_FOR_346_I(s, p, o, m) +# define BOOST_PP_FOR_347(s, p, o, m) BOOST_PP_FOR_347_I(s, p, o, m) +# define BOOST_PP_FOR_348(s, p, o, m) BOOST_PP_FOR_348_I(s, p, o, m) +# define BOOST_PP_FOR_349(s, p, o, m) BOOST_PP_FOR_349_I(s, p, o, m) +# define BOOST_PP_FOR_350(s, p, o, m) BOOST_PP_FOR_350_I(s, p, o, m) +# define BOOST_PP_FOR_351(s, p, o, m) BOOST_PP_FOR_351_I(s, p, o, m) +# define BOOST_PP_FOR_352(s, p, o, m) BOOST_PP_FOR_352_I(s, p, o, m) +# define BOOST_PP_FOR_353(s, p, o, m) BOOST_PP_FOR_353_I(s, p, o, m) +# define BOOST_PP_FOR_354(s, p, o, m) BOOST_PP_FOR_354_I(s, p, o, m) +# define BOOST_PP_FOR_355(s, p, o, m) BOOST_PP_FOR_355_I(s, p, o, m) +# define BOOST_PP_FOR_356(s, p, o, m) BOOST_PP_FOR_356_I(s, p, o, m) +# define BOOST_PP_FOR_357(s, p, o, m) BOOST_PP_FOR_357_I(s, p, o, m) +# define BOOST_PP_FOR_358(s, p, o, m) BOOST_PP_FOR_358_I(s, p, o, m) +# define BOOST_PP_FOR_359(s, p, o, m) BOOST_PP_FOR_359_I(s, p, o, m) +# define BOOST_PP_FOR_360(s, p, o, m) BOOST_PP_FOR_360_I(s, p, o, m) +# define BOOST_PP_FOR_361(s, p, o, m) BOOST_PP_FOR_361_I(s, p, o, m) +# define BOOST_PP_FOR_362(s, p, o, m) BOOST_PP_FOR_362_I(s, p, o, m) +# define BOOST_PP_FOR_363(s, p, o, m) BOOST_PP_FOR_363_I(s, p, o, m) +# define BOOST_PP_FOR_364(s, p, o, m) BOOST_PP_FOR_364_I(s, p, o, m) +# define BOOST_PP_FOR_365(s, p, o, m) BOOST_PP_FOR_365_I(s, p, o, m) +# define BOOST_PP_FOR_366(s, p, o, m) BOOST_PP_FOR_366_I(s, p, o, m) +# define BOOST_PP_FOR_367(s, p, o, m) BOOST_PP_FOR_367_I(s, p, o, m) +# define BOOST_PP_FOR_368(s, p, o, m) BOOST_PP_FOR_368_I(s, p, o, m) +# define BOOST_PP_FOR_369(s, p, o, m) BOOST_PP_FOR_369_I(s, p, o, m) +# define BOOST_PP_FOR_370(s, p, o, m) BOOST_PP_FOR_370_I(s, p, o, m) +# define BOOST_PP_FOR_371(s, p, o, m) BOOST_PP_FOR_371_I(s, p, o, m) +# define BOOST_PP_FOR_372(s, p, o, m) BOOST_PP_FOR_372_I(s, p, o, m) +# define BOOST_PP_FOR_373(s, p, o, m) BOOST_PP_FOR_373_I(s, p, o, m) +# define BOOST_PP_FOR_374(s, p, o, m) BOOST_PP_FOR_374_I(s, p, o, m) +# define BOOST_PP_FOR_375(s, p, o, m) BOOST_PP_FOR_375_I(s, p, o, m) +# define BOOST_PP_FOR_376(s, p, o, m) BOOST_PP_FOR_376_I(s, p, o, m) +# define BOOST_PP_FOR_377(s, p, o, m) BOOST_PP_FOR_377_I(s, p, o, m) +# define BOOST_PP_FOR_378(s, p, o, m) BOOST_PP_FOR_378_I(s, p, o, m) +# define BOOST_PP_FOR_379(s, p, o, m) BOOST_PP_FOR_379_I(s, p, o, m) +# define BOOST_PP_FOR_380(s, p, o, m) BOOST_PP_FOR_380_I(s, p, o, m) +# define BOOST_PP_FOR_381(s, p, o, m) BOOST_PP_FOR_381_I(s, p, o, m) +# define BOOST_PP_FOR_382(s, p, o, m) BOOST_PP_FOR_382_I(s, p, o, m) +# define BOOST_PP_FOR_383(s, p, o, m) BOOST_PP_FOR_383_I(s, p, o, m) +# define BOOST_PP_FOR_384(s, p, o, m) BOOST_PP_FOR_384_I(s, p, o, m) +# define BOOST_PP_FOR_385(s, p, o, m) BOOST_PP_FOR_385_I(s, p, o, m) +# define BOOST_PP_FOR_386(s, p, o, m) BOOST_PP_FOR_386_I(s, p, o, m) +# define BOOST_PP_FOR_387(s, p, o, m) BOOST_PP_FOR_387_I(s, p, o, m) +# define BOOST_PP_FOR_388(s, p, o, m) BOOST_PP_FOR_388_I(s, p, o, m) +# define BOOST_PP_FOR_389(s, p, o, m) BOOST_PP_FOR_389_I(s, p, o, m) +# define BOOST_PP_FOR_390(s, p, o, m) BOOST_PP_FOR_390_I(s, p, o, m) +# define BOOST_PP_FOR_391(s, p, o, m) BOOST_PP_FOR_391_I(s, p, o, m) +# define BOOST_PP_FOR_392(s, p, o, m) BOOST_PP_FOR_392_I(s, p, o, m) +# define BOOST_PP_FOR_393(s, p, o, m) BOOST_PP_FOR_393_I(s, p, o, m) +# define BOOST_PP_FOR_394(s, p, o, m) BOOST_PP_FOR_394_I(s, p, o, m) +# define BOOST_PP_FOR_395(s, p, o, m) BOOST_PP_FOR_395_I(s, p, o, m) +# define BOOST_PP_FOR_396(s, p, o, m) BOOST_PP_FOR_396_I(s, p, o, m) +# define BOOST_PP_FOR_397(s, p, o, m) BOOST_PP_FOR_397_I(s, p, o, m) +# define BOOST_PP_FOR_398(s, p, o, m) BOOST_PP_FOR_398_I(s, p, o, m) +# define BOOST_PP_FOR_399(s, p, o, m) BOOST_PP_FOR_399_I(s, p, o, m) +# define BOOST_PP_FOR_400(s, p, o, m) BOOST_PP_FOR_400_I(s, p, o, m) +# define BOOST_PP_FOR_401(s, p, o, m) BOOST_PP_FOR_401_I(s, p, o, m) +# define BOOST_PP_FOR_402(s, p, o, m) BOOST_PP_FOR_402_I(s, p, o, m) +# define BOOST_PP_FOR_403(s, p, o, m) BOOST_PP_FOR_403_I(s, p, o, m) +# define BOOST_PP_FOR_404(s, p, o, m) BOOST_PP_FOR_404_I(s, p, o, m) +# define BOOST_PP_FOR_405(s, p, o, m) BOOST_PP_FOR_405_I(s, p, o, m) +# define BOOST_PP_FOR_406(s, p, o, m) BOOST_PP_FOR_406_I(s, p, o, m) +# define BOOST_PP_FOR_407(s, p, o, m) BOOST_PP_FOR_407_I(s, p, o, m) +# define BOOST_PP_FOR_408(s, p, o, m) BOOST_PP_FOR_408_I(s, p, o, m) +# define BOOST_PP_FOR_409(s, p, o, m) BOOST_PP_FOR_409_I(s, p, o, m) +# define BOOST_PP_FOR_410(s, p, o, m) BOOST_PP_FOR_410_I(s, p, o, m) +# define BOOST_PP_FOR_411(s, p, o, m) BOOST_PP_FOR_411_I(s, p, o, m) +# define BOOST_PP_FOR_412(s, p, o, m) BOOST_PP_FOR_412_I(s, p, o, m) +# define BOOST_PP_FOR_413(s, p, o, m) BOOST_PP_FOR_413_I(s, p, o, m) +# define BOOST_PP_FOR_414(s, p, o, m) BOOST_PP_FOR_414_I(s, p, o, m) +# define BOOST_PP_FOR_415(s, p, o, m) BOOST_PP_FOR_415_I(s, p, o, m) +# define BOOST_PP_FOR_416(s, p, o, m) BOOST_PP_FOR_416_I(s, p, o, m) +# define BOOST_PP_FOR_417(s, p, o, m) BOOST_PP_FOR_417_I(s, p, o, m) +# define BOOST_PP_FOR_418(s, p, o, m) BOOST_PP_FOR_418_I(s, p, o, m) +# define BOOST_PP_FOR_419(s, p, o, m) BOOST_PP_FOR_419_I(s, p, o, m) +# define BOOST_PP_FOR_420(s, p, o, m) BOOST_PP_FOR_420_I(s, p, o, m) +# define BOOST_PP_FOR_421(s, p, o, m) BOOST_PP_FOR_421_I(s, p, o, m) +# define BOOST_PP_FOR_422(s, p, o, m) BOOST_PP_FOR_422_I(s, p, o, m) +# define BOOST_PP_FOR_423(s, p, o, m) BOOST_PP_FOR_423_I(s, p, o, m) +# define BOOST_PP_FOR_424(s, p, o, m) BOOST_PP_FOR_424_I(s, p, o, m) +# define BOOST_PP_FOR_425(s, p, o, m) BOOST_PP_FOR_425_I(s, p, o, m) +# define BOOST_PP_FOR_426(s, p, o, m) BOOST_PP_FOR_426_I(s, p, o, m) +# define BOOST_PP_FOR_427(s, p, o, m) BOOST_PP_FOR_427_I(s, p, o, m) +# define BOOST_PP_FOR_428(s, p, o, m) BOOST_PP_FOR_428_I(s, p, o, m) +# define BOOST_PP_FOR_429(s, p, o, m) BOOST_PP_FOR_429_I(s, p, o, m) +# define BOOST_PP_FOR_430(s, p, o, m) BOOST_PP_FOR_430_I(s, p, o, m) +# define BOOST_PP_FOR_431(s, p, o, m) BOOST_PP_FOR_431_I(s, p, o, m) +# define BOOST_PP_FOR_432(s, p, o, m) BOOST_PP_FOR_432_I(s, p, o, m) +# define BOOST_PP_FOR_433(s, p, o, m) BOOST_PP_FOR_433_I(s, p, o, m) +# define BOOST_PP_FOR_434(s, p, o, m) BOOST_PP_FOR_434_I(s, p, o, m) +# define BOOST_PP_FOR_435(s, p, o, m) BOOST_PP_FOR_435_I(s, p, o, m) +# define BOOST_PP_FOR_436(s, p, o, m) BOOST_PP_FOR_436_I(s, p, o, m) +# define BOOST_PP_FOR_437(s, p, o, m) BOOST_PP_FOR_437_I(s, p, o, m) +# define BOOST_PP_FOR_438(s, p, o, m) BOOST_PP_FOR_438_I(s, p, o, m) +# define BOOST_PP_FOR_439(s, p, o, m) BOOST_PP_FOR_439_I(s, p, o, m) +# define BOOST_PP_FOR_440(s, p, o, m) BOOST_PP_FOR_440_I(s, p, o, m) +# define BOOST_PP_FOR_441(s, p, o, m) BOOST_PP_FOR_441_I(s, p, o, m) +# define BOOST_PP_FOR_442(s, p, o, m) BOOST_PP_FOR_442_I(s, p, o, m) +# define BOOST_PP_FOR_443(s, p, o, m) BOOST_PP_FOR_443_I(s, p, o, m) +# define BOOST_PP_FOR_444(s, p, o, m) BOOST_PP_FOR_444_I(s, p, o, m) +# define BOOST_PP_FOR_445(s, p, o, m) BOOST_PP_FOR_445_I(s, p, o, m) +# define BOOST_PP_FOR_446(s, p, o, m) BOOST_PP_FOR_446_I(s, p, o, m) +# define BOOST_PP_FOR_447(s, p, o, m) BOOST_PP_FOR_447_I(s, p, o, m) +# define BOOST_PP_FOR_448(s, p, o, m) BOOST_PP_FOR_448_I(s, p, o, m) +# define BOOST_PP_FOR_449(s, p, o, m) BOOST_PP_FOR_449_I(s, p, o, m) +# define BOOST_PP_FOR_450(s, p, o, m) BOOST_PP_FOR_450_I(s, p, o, m) +# define BOOST_PP_FOR_451(s, p, o, m) BOOST_PP_FOR_451_I(s, p, o, m) +# define BOOST_PP_FOR_452(s, p, o, m) BOOST_PP_FOR_452_I(s, p, o, m) +# define BOOST_PP_FOR_453(s, p, o, m) BOOST_PP_FOR_453_I(s, p, o, m) +# define BOOST_PP_FOR_454(s, p, o, m) BOOST_PP_FOR_454_I(s, p, o, m) +# define BOOST_PP_FOR_455(s, p, o, m) BOOST_PP_FOR_455_I(s, p, o, m) +# define BOOST_PP_FOR_456(s, p, o, m) BOOST_PP_FOR_456_I(s, p, o, m) +# define BOOST_PP_FOR_457(s, p, o, m) BOOST_PP_FOR_457_I(s, p, o, m) +# define BOOST_PP_FOR_458(s, p, o, m) BOOST_PP_FOR_458_I(s, p, o, m) +# define BOOST_PP_FOR_459(s, p, o, m) BOOST_PP_FOR_459_I(s, p, o, m) +# define BOOST_PP_FOR_460(s, p, o, m) BOOST_PP_FOR_460_I(s, p, o, m) +# define BOOST_PP_FOR_461(s, p, o, m) BOOST_PP_FOR_461_I(s, p, o, m) +# define BOOST_PP_FOR_462(s, p, o, m) BOOST_PP_FOR_462_I(s, p, o, m) +# define BOOST_PP_FOR_463(s, p, o, m) BOOST_PP_FOR_463_I(s, p, o, m) +# define BOOST_PP_FOR_464(s, p, o, m) BOOST_PP_FOR_464_I(s, p, o, m) +# define BOOST_PP_FOR_465(s, p, o, m) BOOST_PP_FOR_465_I(s, p, o, m) +# define BOOST_PP_FOR_466(s, p, o, m) BOOST_PP_FOR_466_I(s, p, o, m) +# define BOOST_PP_FOR_467(s, p, o, m) BOOST_PP_FOR_467_I(s, p, o, m) +# define BOOST_PP_FOR_468(s, p, o, m) BOOST_PP_FOR_468_I(s, p, o, m) +# define BOOST_PP_FOR_469(s, p, o, m) BOOST_PP_FOR_469_I(s, p, o, m) +# define BOOST_PP_FOR_470(s, p, o, m) BOOST_PP_FOR_470_I(s, p, o, m) +# define BOOST_PP_FOR_471(s, p, o, m) BOOST_PP_FOR_471_I(s, p, o, m) +# define BOOST_PP_FOR_472(s, p, o, m) BOOST_PP_FOR_472_I(s, p, o, m) +# define BOOST_PP_FOR_473(s, p, o, m) BOOST_PP_FOR_473_I(s, p, o, m) +# define BOOST_PP_FOR_474(s, p, o, m) BOOST_PP_FOR_474_I(s, p, o, m) +# define BOOST_PP_FOR_475(s, p, o, m) BOOST_PP_FOR_475_I(s, p, o, m) +# define BOOST_PP_FOR_476(s, p, o, m) BOOST_PP_FOR_476_I(s, p, o, m) +# define BOOST_PP_FOR_477(s, p, o, m) BOOST_PP_FOR_477_I(s, p, o, m) +# define BOOST_PP_FOR_478(s, p, o, m) BOOST_PP_FOR_478_I(s, p, o, m) +# define BOOST_PP_FOR_479(s, p, o, m) BOOST_PP_FOR_479_I(s, p, o, m) +# define BOOST_PP_FOR_480(s, p, o, m) BOOST_PP_FOR_480_I(s, p, o, m) +# define BOOST_PP_FOR_481(s, p, o, m) BOOST_PP_FOR_481_I(s, p, o, m) +# define BOOST_PP_FOR_482(s, p, o, m) BOOST_PP_FOR_482_I(s, p, o, m) +# define BOOST_PP_FOR_483(s, p, o, m) BOOST_PP_FOR_483_I(s, p, o, m) +# define BOOST_PP_FOR_484(s, p, o, m) BOOST_PP_FOR_484_I(s, p, o, m) +# define BOOST_PP_FOR_485(s, p, o, m) BOOST_PP_FOR_485_I(s, p, o, m) +# define BOOST_PP_FOR_486(s, p, o, m) BOOST_PP_FOR_486_I(s, p, o, m) +# define BOOST_PP_FOR_487(s, p, o, m) BOOST_PP_FOR_487_I(s, p, o, m) +# define BOOST_PP_FOR_488(s, p, o, m) BOOST_PP_FOR_488_I(s, p, o, m) +# define BOOST_PP_FOR_489(s, p, o, m) BOOST_PP_FOR_489_I(s, p, o, m) +# define BOOST_PP_FOR_490(s, p, o, m) BOOST_PP_FOR_490_I(s, p, o, m) +# define BOOST_PP_FOR_491(s, p, o, m) BOOST_PP_FOR_491_I(s, p, o, m) +# define BOOST_PP_FOR_492(s, p, o, m) BOOST_PP_FOR_492_I(s, p, o, m) +# define BOOST_PP_FOR_493(s, p, o, m) BOOST_PP_FOR_493_I(s, p, o, m) +# define BOOST_PP_FOR_494(s, p, o, m) BOOST_PP_FOR_494_I(s, p, o, m) +# define BOOST_PP_FOR_495(s, p, o, m) BOOST_PP_FOR_495_I(s, p, o, m) +# define BOOST_PP_FOR_496(s, p, o, m) BOOST_PP_FOR_496_I(s, p, o, m) +# define BOOST_PP_FOR_497(s, p, o, m) BOOST_PP_FOR_497_I(s, p, o, m) +# define BOOST_PP_FOR_498(s, p, o, m) BOOST_PP_FOR_498_I(s, p, o, m) +# define BOOST_PP_FOR_499(s, p, o, m) BOOST_PP_FOR_499_I(s, p, o, m) +# define BOOST_PP_FOR_500(s, p, o, m) BOOST_PP_FOR_500_I(s, p, o, m) +# define BOOST_PP_FOR_501(s, p, o, m) BOOST_PP_FOR_501_I(s, p, o, m) +# define BOOST_PP_FOR_502(s, p, o, m) BOOST_PP_FOR_502_I(s, p, o, m) +# define BOOST_PP_FOR_503(s, p, o, m) BOOST_PP_FOR_503_I(s, p, o, m) +# define BOOST_PP_FOR_504(s, p, o, m) BOOST_PP_FOR_504_I(s, p, o, m) +# define BOOST_PP_FOR_505(s, p, o, m) BOOST_PP_FOR_505_I(s, p, o, m) +# define BOOST_PP_FOR_506(s, p, o, m) BOOST_PP_FOR_506_I(s, p, o, m) +# define BOOST_PP_FOR_507(s, p, o, m) BOOST_PP_FOR_507_I(s, p, o, m) +# define BOOST_PP_FOR_508(s, p, o, m) BOOST_PP_FOR_508_I(s, p, o, m) +# define BOOST_PP_FOR_509(s, p, o, m) BOOST_PP_FOR_509_I(s, p, o, m) +# define BOOST_PP_FOR_510(s, p, o, m) BOOST_PP_FOR_510_I(s, p, o, m) +# define BOOST_PP_FOR_511(s, p, o, m) BOOST_PP_FOR_511_I(s, p, o, m) +# define BOOST_PP_FOR_512(s, p, o, m) BOOST_PP_FOR_512_I(s, p, o, m) +# +# define BOOST_PP_FOR_257_I(s, p, o, m) BOOST_PP_IF(p(258, s), m, BOOST_PP_TUPLE_EAT_2)(258, s) BOOST_PP_IF(p(258, s), BOOST_PP_FOR_258, BOOST_PP_TUPLE_EAT_4)(o(258, s), p, o, m) +# define BOOST_PP_FOR_258_I(s, p, o, m) BOOST_PP_IF(p(259, s), m, BOOST_PP_TUPLE_EAT_2)(259, s) BOOST_PP_IF(p(259, s), BOOST_PP_FOR_259, BOOST_PP_TUPLE_EAT_4)(o(259, s), p, o, m) +# define BOOST_PP_FOR_259_I(s, p, o, m) BOOST_PP_IF(p(260, s), m, BOOST_PP_TUPLE_EAT_2)(260, s) BOOST_PP_IF(p(260, s), BOOST_PP_FOR_260, BOOST_PP_TUPLE_EAT_4)(o(260, s), p, o, m) +# define BOOST_PP_FOR_260_I(s, p, o, m) BOOST_PP_IF(p(261, s), m, BOOST_PP_TUPLE_EAT_2)(261, s) BOOST_PP_IF(p(261, s), BOOST_PP_FOR_261, BOOST_PP_TUPLE_EAT_4)(o(261, s), p, o, m) +# define BOOST_PP_FOR_261_I(s, p, o, m) BOOST_PP_IF(p(262, s), m, BOOST_PP_TUPLE_EAT_2)(262, s) BOOST_PP_IF(p(262, s), BOOST_PP_FOR_262, BOOST_PP_TUPLE_EAT_4)(o(262, s), p, o, m) +# define BOOST_PP_FOR_262_I(s, p, o, m) BOOST_PP_IF(p(263, s), m, BOOST_PP_TUPLE_EAT_2)(263, s) BOOST_PP_IF(p(263, s), BOOST_PP_FOR_263, BOOST_PP_TUPLE_EAT_4)(o(263, s), p, o, m) +# define BOOST_PP_FOR_263_I(s, p, o, m) BOOST_PP_IF(p(264, s), m, BOOST_PP_TUPLE_EAT_2)(264, s) BOOST_PP_IF(p(264, s), BOOST_PP_FOR_264, BOOST_PP_TUPLE_EAT_4)(o(264, s), p, o, m) +# define BOOST_PP_FOR_264_I(s, p, o, m) BOOST_PP_IF(p(265, s), m, BOOST_PP_TUPLE_EAT_2)(265, s) BOOST_PP_IF(p(265, s), BOOST_PP_FOR_265, BOOST_PP_TUPLE_EAT_4)(o(265, s), p, o, m) +# define BOOST_PP_FOR_265_I(s, p, o, m) BOOST_PP_IF(p(266, s), m, BOOST_PP_TUPLE_EAT_2)(266, s) BOOST_PP_IF(p(266, s), BOOST_PP_FOR_266, BOOST_PP_TUPLE_EAT_4)(o(266, s), p, o, m) +# define BOOST_PP_FOR_266_I(s, p, o, m) BOOST_PP_IF(p(267, s), m, BOOST_PP_TUPLE_EAT_2)(267, s) BOOST_PP_IF(p(267, s), BOOST_PP_FOR_267, BOOST_PP_TUPLE_EAT_4)(o(267, s), p, o, m) +# define BOOST_PP_FOR_267_I(s, p, o, m) BOOST_PP_IF(p(268, s), m, BOOST_PP_TUPLE_EAT_2)(268, s) BOOST_PP_IF(p(268, s), BOOST_PP_FOR_268, BOOST_PP_TUPLE_EAT_4)(o(268, s), p, o, m) +# define BOOST_PP_FOR_268_I(s, p, o, m) BOOST_PP_IF(p(269, s), m, BOOST_PP_TUPLE_EAT_2)(269, s) BOOST_PP_IF(p(269, s), BOOST_PP_FOR_269, BOOST_PP_TUPLE_EAT_4)(o(269, s), p, o, m) +# define BOOST_PP_FOR_269_I(s, p, o, m) BOOST_PP_IF(p(270, s), m, BOOST_PP_TUPLE_EAT_2)(270, s) BOOST_PP_IF(p(270, s), BOOST_PP_FOR_270, BOOST_PP_TUPLE_EAT_4)(o(270, s), p, o, m) +# define BOOST_PP_FOR_270_I(s, p, o, m) BOOST_PP_IF(p(271, s), m, BOOST_PP_TUPLE_EAT_2)(271, s) BOOST_PP_IF(p(271, s), BOOST_PP_FOR_271, BOOST_PP_TUPLE_EAT_4)(o(271, s), p, o, m) +# define BOOST_PP_FOR_271_I(s, p, o, m) BOOST_PP_IF(p(272, s), m, BOOST_PP_TUPLE_EAT_2)(272, s) BOOST_PP_IF(p(272, s), BOOST_PP_FOR_272, BOOST_PP_TUPLE_EAT_4)(o(272, s), p, o, m) +# define BOOST_PP_FOR_272_I(s, p, o, m) BOOST_PP_IF(p(273, s), m, BOOST_PP_TUPLE_EAT_2)(273, s) BOOST_PP_IF(p(273, s), BOOST_PP_FOR_273, BOOST_PP_TUPLE_EAT_4)(o(273, s), p, o, m) +# define BOOST_PP_FOR_273_I(s, p, o, m) BOOST_PP_IF(p(274, s), m, BOOST_PP_TUPLE_EAT_2)(274, s) BOOST_PP_IF(p(274, s), BOOST_PP_FOR_274, BOOST_PP_TUPLE_EAT_4)(o(274, s), p, o, m) +# define BOOST_PP_FOR_274_I(s, p, o, m) BOOST_PP_IF(p(275, s), m, BOOST_PP_TUPLE_EAT_2)(275, s) BOOST_PP_IF(p(275, s), BOOST_PP_FOR_275, BOOST_PP_TUPLE_EAT_4)(o(275, s), p, o, m) +# define BOOST_PP_FOR_275_I(s, p, o, m) BOOST_PP_IF(p(276, s), m, BOOST_PP_TUPLE_EAT_2)(276, s) BOOST_PP_IF(p(276, s), BOOST_PP_FOR_276, BOOST_PP_TUPLE_EAT_4)(o(276, s), p, o, m) +# define BOOST_PP_FOR_276_I(s, p, o, m) BOOST_PP_IF(p(277, s), m, BOOST_PP_TUPLE_EAT_2)(277, s) BOOST_PP_IF(p(277, s), BOOST_PP_FOR_277, BOOST_PP_TUPLE_EAT_4)(o(277, s), p, o, m) +# define BOOST_PP_FOR_277_I(s, p, o, m) BOOST_PP_IF(p(278, s), m, BOOST_PP_TUPLE_EAT_2)(278, s) BOOST_PP_IF(p(278, s), BOOST_PP_FOR_278, BOOST_PP_TUPLE_EAT_4)(o(278, s), p, o, m) +# define BOOST_PP_FOR_278_I(s, p, o, m) BOOST_PP_IF(p(279, s), m, BOOST_PP_TUPLE_EAT_2)(279, s) BOOST_PP_IF(p(279, s), BOOST_PP_FOR_279, BOOST_PP_TUPLE_EAT_4)(o(279, s), p, o, m) +# define BOOST_PP_FOR_279_I(s, p, o, m) BOOST_PP_IF(p(280, s), m, BOOST_PP_TUPLE_EAT_2)(280, s) BOOST_PP_IF(p(280, s), BOOST_PP_FOR_280, BOOST_PP_TUPLE_EAT_4)(o(280, s), p, o, m) +# define BOOST_PP_FOR_280_I(s, p, o, m) BOOST_PP_IF(p(281, s), m, BOOST_PP_TUPLE_EAT_2)(281, s) BOOST_PP_IF(p(281, s), BOOST_PP_FOR_281, BOOST_PP_TUPLE_EAT_4)(o(281, s), p, o, m) +# define BOOST_PP_FOR_281_I(s, p, o, m) BOOST_PP_IF(p(282, s), m, BOOST_PP_TUPLE_EAT_2)(282, s) BOOST_PP_IF(p(282, s), BOOST_PP_FOR_282, BOOST_PP_TUPLE_EAT_4)(o(282, s), p, o, m) +# define BOOST_PP_FOR_282_I(s, p, o, m) BOOST_PP_IF(p(283, s), m, BOOST_PP_TUPLE_EAT_2)(283, s) BOOST_PP_IF(p(283, s), BOOST_PP_FOR_283, BOOST_PP_TUPLE_EAT_4)(o(283, s), p, o, m) +# define BOOST_PP_FOR_283_I(s, p, o, m) BOOST_PP_IF(p(284, s), m, BOOST_PP_TUPLE_EAT_2)(284, s) BOOST_PP_IF(p(284, s), BOOST_PP_FOR_284, BOOST_PP_TUPLE_EAT_4)(o(284, s), p, o, m) +# define BOOST_PP_FOR_284_I(s, p, o, m) BOOST_PP_IF(p(285, s), m, BOOST_PP_TUPLE_EAT_2)(285, s) BOOST_PP_IF(p(285, s), BOOST_PP_FOR_285, BOOST_PP_TUPLE_EAT_4)(o(285, s), p, o, m) +# define BOOST_PP_FOR_285_I(s, p, o, m) BOOST_PP_IF(p(286, s), m, BOOST_PP_TUPLE_EAT_2)(286, s) BOOST_PP_IF(p(286, s), BOOST_PP_FOR_286, BOOST_PP_TUPLE_EAT_4)(o(286, s), p, o, m) +# define BOOST_PP_FOR_286_I(s, p, o, m) BOOST_PP_IF(p(287, s), m, BOOST_PP_TUPLE_EAT_2)(287, s) BOOST_PP_IF(p(287, s), BOOST_PP_FOR_287, BOOST_PP_TUPLE_EAT_4)(o(287, s), p, o, m) +# define BOOST_PP_FOR_287_I(s, p, o, m) BOOST_PP_IF(p(288, s), m, BOOST_PP_TUPLE_EAT_2)(288, s) BOOST_PP_IF(p(288, s), BOOST_PP_FOR_288, BOOST_PP_TUPLE_EAT_4)(o(288, s), p, o, m) +# define BOOST_PP_FOR_288_I(s, p, o, m) BOOST_PP_IF(p(289, s), m, BOOST_PP_TUPLE_EAT_2)(289, s) BOOST_PP_IF(p(289, s), BOOST_PP_FOR_289, BOOST_PP_TUPLE_EAT_4)(o(289, s), p, o, m) +# define BOOST_PP_FOR_289_I(s, p, o, m) BOOST_PP_IF(p(290, s), m, BOOST_PP_TUPLE_EAT_2)(290, s) BOOST_PP_IF(p(290, s), BOOST_PP_FOR_290, BOOST_PP_TUPLE_EAT_4)(o(290, s), p, o, m) +# define BOOST_PP_FOR_290_I(s, p, o, m) BOOST_PP_IF(p(291, s), m, BOOST_PP_TUPLE_EAT_2)(291, s) BOOST_PP_IF(p(291, s), BOOST_PP_FOR_291, BOOST_PP_TUPLE_EAT_4)(o(291, s), p, o, m) +# define BOOST_PP_FOR_291_I(s, p, o, m) BOOST_PP_IF(p(292, s), m, BOOST_PP_TUPLE_EAT_2)(292, s) BOOST_PP_IF(p(292, s), BOOST_PP_FOR_292, BOOST_PP_TUPLE_EAT_4)(o(292, s), p, o, m) +# define BOOST_PP_FOR_292_I(s, p, o, m) BOOST_PP_IF(p(293, s), m, BOOST_PP_TUPLE_EAT_2)(293, s) BOOST_PP_IF(p(293, s), BOOST_PP_FOR_293, BOOST_PP_TUPLE_EAT_4)(o(293, s), p, o, m) +# define BOOST_PP_FOR_293_I(s, p, o, m) BOOST_PP_IF(p(294, s), m, BOOST_PP_TUPLE_EAT_2)(294, s) BOOST_PP_IF(p(294, s), BOOST_PP_FOR_294, BOOST_PP_TUPLE_EAT_4)(o(294, s), p, o, m) +# define BOOST_PP_FOR_294_I(s, p, o, m) BOOST_PP_IF(p(295, s), m, BOOST_PP_TUPLE_EAT_2)(295, s) BOOST_PP_IF(p(295, s), BOOST_PP_FOR_295, BOOST_PP_TUPLE_EAT_4)(o(295, s), p, o, m) +# define BOOST_PP_FOR_295_I(s, p, o, m) BOOST_PP_IF(p(296, s), m, BOOST_PP_TUPLE_EAT_2)(296, s) BOOST_PP_IF(p(296, s), BOOST_PP_FOR_296, BOOST_PP_TUPLE_EAT_4)(o(296, s), p, o, m) +# define BOOST_PP_FOR_296_I(s, p, o, m) BOOST_PP_IF(p(297, s), m, BOOST_PP_TUPLE_EAT_2)(297, s) BOOST_PP_IF(p(297, s), BOOST_PP_FOR_297, BOOST_PP_TUPLE_EAT_4)(o(297, s), p, o, m) +# define BOOST_PP_FOR_297_I(s, p, o, m) BOOST_PP_IF(p(298, s), m, BOOST_PP_TUPLE_EAT_2)(298, s) BOOST_PP_IF(p(298, s), BOOST_PP_FOR_298, BOOST_PP_TUPLE_EAT_4)(o(298, s), p, o, m) +# define BOOST_PP_FOR_298_I(s, p, o, m) BOOST_PP_IF(p(299, s), m, BOOST_PP_TUPLE_EAT_2)(299, s) BOOST_PP_IF(p(299, s), BOOST_PP_FOR_299, BOOST_PP_TUPLE_EAT_4)(o(299, s), p, o, m) +# define BOOST_PP_FOR_299_I(s, p, o, m) BOOST_PP_IF(p(300, s), m, BOOST_PP_TUPLE_EAT_2)(300, s) BOOST_PP_IF(p(300, s), BOOST_PP_FOR_300, BOOST_PP_TUPLE_EAT_4)(o(300, s), p, o, m) +# define BOOST_PP_FOR_300_I(s, p, o, m) BOOST_PP_IF(p(301, s), m, BOOST_PP_TUPLE_EAT_2)(301, s) BOOST_PP_IF(p(301, s), BOOST_PP_FOR_301, BOOST_PP_TUPLE_EAT_4)(o(301, s), p, o, m) +# define BOOST_PP_FOR_301_I(s, p, o, m) BOOST_PP_IF(p(302, s), m, BOOST_PP_TUPLE_EAT_2)(302, s) BOOST_PP_IF(p(302, s), BOOST_PP_FOR_302, BOOST_PP_TUPLE_EAT_4)(o(302, s), p, o, m) +# define BOOST_PP_FOR_302_I(s, p, o, m) BOOST_PP_IF(p(303, s), m, BOOST_PP_TUPLE_EAT_2)(303, s) BOOST_PP_IF(p(303, s), BOOST_PP_FOR_303, BOOST_PP_TUPLE_EAT_4)(o(303, s), p, o, m) +# define BOOST_PP_FOR_303_I(s, p, o, m) BOOST_PP_IF(p(304, s), m, BOOST_PP_TUPLE_EAT_2)(304, s) BOOST_PP_IF(p(304, s), BOOST_PP_FOR_304, BOOST_PP_TUPLE_EAT_4)(o(304, s), p, o, m) +# define BOOST_PP_FOR_304_I(s, p, o, m) BOOST_PP_IF(p(305, s), m, BOOST_PP_TUPLE_EAT_2)(305, s) BOOST_PP_IF(p(305, s), BOOST_PP_FOR_305, BOOST_PP_TUPLE_EAT_4)(o(305, s), p, o, m) +# define BOOST_PP_FOR_305_I(s, p, o, m) BOOST_PP_IF(p(306, s), m, BOOST_PP_TUPLE_EAT_2)(306, s) BOOST_PP_IF(p(306, s), BOOST_PP_FOR_306, BOOST_PP_TUPLE_EAT_4)(o(306, s), p, o, m) +# define BOOST_PP_FOR_306_I(s, p, o, m) BOOST_PP_IF(p(307, s), m, BOOST_PP_TUPLE_EAT_2)(307, s) BOOST_PP_IF(p(307, s), BOOST_PP_FOR_307, BOOST_PP_TUPLE_EAT_4)(o(307, s), p, o, m) +# define BOOST_PP_FOR_307_I(s, p, o, m) BOOST_PP_IF(p(308, s), m, BOOST_PP_TUPLE_EAT_2)(308, s) BOOST_PP_IF(p(308, s), BOOST_PP_FOR_308, BOOST_PP_TUPLE_EAT_4)(o(308, s), p, o, m) +# define BOOST_PP_FOR_308_I(s, p, o, m) BOOST_PP_IF(p(309, s), m, BOOST_PP_TUPLE_EAT_2)(309, s) BOOST_PP_IF(p(309, s), BOOST_PP_FOR_309, BOOST_PP_TUPLE_EAT_4)(o(309, s), p, o, m) +# define BOOST_PP_FOR_309_I(s, p, o, m) BOOST_PP_IF(p(310, s), m, BOOST_PP_TUPLE_EAT_2)(310, s) BOOST_PP_IF(p(310, s), BOOST_PP_FOR_310, BOOST_PP_TUPLE_EAT_4)(o(310, s), p, o, m) +# define BOOST_PP_FOR_310_I(s, p, o, m) BOOST_PP_IF(p(311, s), m, BOOST_PP_TUPLE_EAT_2)(311, s) BOOST_PP_IF(p(311, s), BOOST_PP_FOR_311, BOOST_PP_TUPLE_EAT_4)(o(311, s), p, o, m) +# define BOOST_PP_FOR_311_I(s, p, o, m) BOOST_PP_IF(p(312, s), m, BOOST_PP_TUPLE_EAT_2)(312, s) BOOST_PP_IF(p(312, s), BOOST_PP_FOR_312, BOOST_PP_TUPLE_EAT_4)(o(312, s), p, o, m) +# define BOOST_PP_FOR_312_I(s, p, o, m) BOOST_PP_IF(p(313, s), m, BOOST_PP_TUPLE_EAT_2)(313, s) BOOST_PP_IF(p(313, s), BOOST_PP_FOR_313, BOOST_PP_TUPLE_EAT_4)(o(313, s), p, o, m) +# define BOOST_PP_FOR_313_I(s, p, o, m) BOOST_PP_IF(p(314, s), m, BOOST_PP_TUPLE_EAT_2)(314, s) BOOST_PP_IF(p(314, s), BOOST_PP_FOR_314, BOOST_PP_TUPLE_EAT_4)(o(314, s), p, o, m) +# define BOOST_PP_FOR_314_I(s, p, o, m) BOOST_PP_IF(p(315, s), m, BOOST_PP_TUPLE_EAT_2)(315, s) BOOST_PP_IF(p(315, s), BOOST_PP_FOR_315, BOOST_PP_TUPLE_EAT_4)(o(315, s), p, o, m) +# define BOOST_PP_FOR_315_I(s, p, o, m) BOOST_PP_IF(p(316, s), m, BOOST_PP_TUPLE_EAT_2)(316, s) BOOST_PP_IF(p(316, s), BOOST_PP_FOR_316, BOOST_PP_TUPLE_EAT_4)(o(316, s), p, o, m) +# define BOOST_PP_FOR_316_I(s, p, o, m) BOOST_PP_IF(p(317, s), m, BOOST_PP_TUPLE_EAT_2)(317, s) BOOST_PP_IF(p(317, s), BOOST_PP_FOR_317, BOOST_PP_TUPLE_EAT_4)(o(317, s), p, o, m) +# define BOOST_PP_FOR_317_I(s, p, o, m) BOOST_PP_IF(p(318, s), m, BOOST_PP_TUPLE_EAT_2)(318, s) BOOST_PP_IF(p(318, s), BOOST_PP_FOR_318, BOOST_PP_TUPLE_EAT_4)(o(318, s), p, o, m) +# define BOOST_PP_FOR_318_I(s, p, o, m) BOOST_PP_IF(p(319, s), m, BOOST_PP_TUPLE_EAT_2)(319, s) BOOST_PP_IF(p(319, s), BOOST_PP_FOR_319, BOOST_PP_TUPLE_EAT_4)(o(319, s), p, o, m) +# define BOOST_PP_FOR_319_I(s, p, o, m) BOOST_PP_IF(p(320, s), m, BOOST_PP_TUPLE_EAT_2)(320, s) BOOST_PP_IF(p(320, s), BOOST_PP_FOR_320, BOOST_PP_TUPLE_EAT_4)(o(320, s), p, o, m) +# define BOOST_PP_FOR_320_I(s, p, o, m) BOOST_PP_IF(p(321, s), m, BOOST_PP_TUPLE_EAT_2)(321, s) BOOST_PP_IF(p(321, s), BOOST_PP_FOR_321, BOOST_PP_TUPLE_EAT_4)(o(321, s), p, o, m) +# define BOOST_PP_FOR_321_I(s, p, o, m) BOOST_PP_IF(p(322, s), m, BOOST_PP_TUPLE_EAT_2)(322, s) BOOST_PP_IF(p(322, s), BOOST_PP_FOR_322, BOOST_PP_TUPLE_EAT_4)(o(322, s), p, o, m) +# define BOOST_PP_FOR_322_I(s, p, o, m) BOOST_PP_IF(p(323, s), m, BOOST_PP_TUPLE_EAT_2)(323, s) BOOST_PP_IF(p(323, s), BOOST_PP_FOR_323, BOOST_PP_TUPLE_EAT_4)(o(323, s), p, o, m) +# define BOOST_PP_FOR_323_I(s, p, o, m) BOOST_PP_IF(p(324, s), m, BOOST_PP_TUPLE_EAT_2)(324, s) BOOST_PP_IF(p(324, s), BOOST_PP_FOR_324, BOOST_PP_TUPLE_EAT_4)(o(324, s), p, o, m) +# define BOOST_PP_FOR_324_I(s, p, o, m) BOOST_PP_IF(p(325, s), m, BOOST_PP_TUPLE_EAT_2)(325, s) BOOST_PP_IF(p(325, s), BOOST_PP_FOR_325, BOOST_PP_TUPLE_EAT_4)(o(325, s), p, o, m) +# define BOOST_PP_FOR_325_I(s, p, o, m) BOOST_PP_IF(p(326, s), m, BOOST_PP_TUPLE_EAT_2)(326, s) BOOST_PP_IF(p(326, s), BOOST_PP_FOR_326, BOOST_PP_TUPLE_EAT_4)(o(326, s), p, o, m) +# define BOOST_PP_FOR_326_I(s, p, o, m) BOOST_PP_IF(p(327, s), m, BOOST_PP_TUPLE_EAT_2)(327, s) BOOST_PP_IF(p(327, s), BOOST_PP_FOR_327, BOOST_PP_TUPLE_EAT_4)(o(327, s), p, o, m) +# define BOOST_PP_FOR_327_I(s, p, o, m) BOOST_PP_IF(p(328, s), m, BOOST_PP_TUPLE_EAT_2)(328, s) BOOST_PP_IF(p(328, s), BOOST_PP_FOR_328, BOOST_PP_TUPLE_EAT_4)(o(328, s), p, o, m) +# define BOOST_PP_FOR_328_I(s, p, o, m) BOOST_PP_IF(p(329, s), m, BOOST_PP_TUPLE_EAT_2)(329, s) BOOST_PP_IF(p(329, s), BOOST_PP_FOR_329, BOOST_PP_TUPLE_EAT_4)(o(329, s), p, o, m) +# define BOOST_PP_FOR_329_I(s, p, o, m) BOOST_PP_IF(p(330, s), m, BOOST_PP_TUPLE_EAT_2)(330, s) BOOST_PP_IF(p(330, s), BOOST_PP_FOR_330, BOOST_PP_TUPLE_EAT_4)(o(330, s), p, o, m) +# define BOOST_PP_FOR_330_I(s, p, o, m) BOOST_PP_IF(p(331, s), m, BOOST_PP_TUPLE_EAT_2)(331, s) BOOST_PP_IF(p(331, s), BOOST_PP_FOR_331, BOOST_PP_TUPLE_EAT_4)(o(331, s), p, o, m) +# define BOOST_PP_FOR_331_I(s, p, o, m) BOOST_PP_IF(p(332, s), m, BOOST_PP_TUPLE_EAT_2)(332, s) BOOST_PP_IF(p(332, s), BOOST_PP_FOR_332, BOOST_PP_TUPLE_EAT_4)(o(332, s), p, o, m) +# define BOOST_PP_FOR_332_I(s, p, o, m) BOOST_PP_IF(p(333, s), m, BOOST_PP_TUPLE_EAT_2)(333, s) BOOST_PP_IF(p(333, s), BOOST_PP_FOR_333, BOOST_PP_TUPLE_EAT_4)(o(333, s), p, o, m) +# define BOOST_PP_FOR_333_I(s, p, o, m) BOOST_PP_IF(p(334, s), m, BOOST_PP_TUPLE_EAT_2)(334, s) BOOST_PP_IF(p(334, s), BOOST_PP_FOR_334, BOOST_PP_TUPLE_EAT_4)(o(334, s), p, o, m) +# define BOOST_PP_FOR_334_I(s, p, o, m) BOOST_PP_IF(p(335, s), m, BOOST_PP_TUPLE_EAT_2)(335, s) BOOST_PP_IF(p(335, s), BOOST_PP_FOR_335, BOOST_PP_TUPLE_EAT_4)(o(335, s), p, o, m) +# define BOOST_PP_FOR_335_I(s, p, o, m) BOOST_PP_IF(p(336, s), m, BOOST_PP_TUPLE_EAT_2)(336, s) BOOST_PP_IF(p(336, s), BOOST_PP_FOR_336, BOOST_PP_TUPLE_EAT_4)(o(336, s), p, o, m) +# define BOOST_PP_FOR_336_I(s, p, o, m) BOOST_PP_IF(p(337, s), m, BOOST_PP_TUPLE_EAT_2)(337, s) BOOST_PP_IF(p(337, s), BOOST_PP_FOR_337, BOOST_PP_TUPLE_EAT_4)(o(337, s), p, o, m) +# define BOOST_PP_FOR_337_I(s, p, o, m) BOOST_PP_IF(p(338, s), m, BOOST_PP_TUPLE_EAT_2)(338, s) BOOST_PP_IF(p(338, s), BOOST_PP_FOR_338, BOOST_PP_TUPLE_EAT_4)(o(338, s), p, o, m) +# define BOOST_PP_FOR_338_I(s, p, o, m) BOOST_PP_IF(p(339, s), m, BOOST_PP_TUPLE_EAT_2)(339, s) BOOST_PP_IF(p(339, s), BOOST_PP_FOR_339, BOOST_PP_TUPLE_EAT_4)(o(339, s), p, o, m) +# define BOOST_PP_FOR_339_I(s, p, o, m) BOOST_PP_IF(p(340, s), m, BOOST_PP_TUPLE_EAT_2)(340, s) BOOST_PP_IF(p(340, s), BOOST_PP_FOR_340, BOOST_PP_TUPLE_EAT_4)(o(340, s), p, o, m) +# define BOOST_PP_FOR_340_I(s, p, o, m) BOOST_PP_IF(p(341, s), m, BOOST_PP_TUPLE_EAT_2)(341, s) BOOST_PP_IF(p(341, s), BOOST_PP_FOR_341, BOOST_PP_TUPLE_EAT_4)(o(341, s), p, o, m) +# define BOOST_PP_FOR_341_I(s, p, o, m) BOOST_PP_IF(p(342, s), m, BOOST_PP_TUPLE_EAT_2)(342, s) BOOST_PP_IF(p(342, s), BOOST_PP_FOR_342, BOOST_PP_TUPLE_EAT_4)(o(342, s), p, o, m) +# define BOOST_PP_FOR_342_I(s, p, o, m) BOOST_PP_IF(p(343, s), m, BOOST_PP_TUPLE_EAT_2)(343, s) BOOST_PP_IF(p(343, s), BOOST_PP_FOR_343, BOOST_PP_TUPLE_EAT_4)(o(343, s), p, o, m) +# define BOOST_PP_FOR_343_I(s, p, o, m) BOOST_PP_IF(p(344, s), m, BOOST_PP_TUPLE_EAT_2)(344, s) BOOST_PP_IF(p(344, s), BOOST_PP_FOR_344, BOOST_PP_TUPLE_EAT_4)(o(344, s), p, o, m) +# define BOOST_PP_FOR_344_I(s, p, o, m) BOOST_PP_IF(p(345, s), m, BOOST_PP_TUPLE_EAT_2)(345, s) BOOST_PP_IF(p(345, s), BOOST_PP_FOR_345, BOOST_PP_TUPLE_EAT_4)(o(345, s), p, o, m) +# define BOOST_PP_FOR_345_I(s, p, o, m) BOOST_PP_IF(p(346, s), m, BOOST_PP_TUPLE_EAT_2)(346, s) BOOST_PP_IF(p(346, s), BOOST_PP_FOR_346, BOOST_PP_TUPLE_EAT_4)(o(346, s), p, o, m) +# define BOOST_PP_FOR_346_I(s, p, o, m) BOOST_PP_IF(p(347, s), m, BOOST_PP_TUPLE_EAT_2)(347, s) BOOST_PP_IF(p(347, s), BOOST_PP_FOR_347, BOOST_PP_TUPLE_EAT_4)(o(347, s), p, o, m) +# define BOOST_PP_FOR_347_I(s, p, o, m) BOOST_PP_IF(p(348, s), m, BOOST_PP_TUPLE_EAT_2)(348, s) BOOST_PP_IF(p(348, s), BOOST_PP_FOR_348, BOOST_PP_TUPLE_EAT_4)(o(348, s), p, o, m) +# define BOOST_PP_FOR_348_I(s, p, o, m) BOOST_PP_IF(p(349, s), m, BOOST_PP_TUPLE_EAT_2)(349, s) BOOST_PP_IF(p(349, s), BOOST_PP_FOR_349, BOOST_PP_TUPLE_EAT_4)(o(349, s), p, o, m) +# define BOOST_PP_FOR_349_I(s, p, o, m) BOOST_PP_IF(p(350, s), m, BOOST_PP_TUPLE_EAT_2)(350, s) BOOST_PP_IF(p(350, s), BOOST_PP_FOR_350, BOOST_PP_TUPLE_EAT_4)(o(350, s), p, o, m) +# define BOOST_PP_FOR_350_I(s, p, o, m) BOOST_PP_IF(p(351, s), m, BOOST_PP_TUPLE_EAT_2)(351, s) BOOST_PP_IF(p(351, s), BOOST_PP_FOR_351, BOOST_PP_TUPLE_EAT_4)(o(351, s), p, o, m) +# define BOOST_PP_FOR_351_I(s, p, o, m) BOOST_PP_IF(p(352, s), m, BOOST_PP_TUPLE_EAT_2)(352, s) BOOST_PP_IF(p(352, s), BOOST_PP_FOR_352, BOOST_PP_TUPLE_EAT_4)(o(352, s), p, o, m) +# define BOOST_PP_FOR_352_I(s, p, o, m) BOOST_PP_IF(p(353, s), m, BOOST_PP_TUPLE_EAT_2)(353, s) BOOST_PP_IF(p(353, s), BOOST_PP_FOR_353, BOOST_PP_TUPLE_EAT_4)(o(353, s), p, o, m) +# define BOOST_PP_FOR_353_I(s, p, o, m) BOOST_PP_IF(p(354, s), m, BOOST_PP_TUPLE_EAT_2)(354, s) BOOST_PP_IF(p(354, s), BOOST_PP_FOR_354, BOOST_PP_TUPLE_EAT_4)(o(354, s), p, o, m) +# define BOOST_PP_FOR_354_I(s, p, o, m) BOOST_PP_IF(p(355, s), m, BOOST_PP_TUPLE_EAT_2)(355, s) BOOST_PP_IF(p(355, s), BOOST_PP_FOR_355, BOOST_PP_TUPLE_EAT_4)(o(355, s), p, o, m) +# define BOOST_PP_FOR_355_I(s, p, o, m) BOOST_PP_IF(p(356, s), m, BOOST_PP_TUPLE_EAT_2)(356, s) BOOST_PP_IF(p(356, s), BOOST_PP_FOR_356, BOOST_PP_TUPLE_EAT_4)(o(356, s), p, o, m) +# define BOOST_PP_FOR_356_I(s, p, o, m) BOOST_PP_IF(p(357, s), m, BOOST_PP_TUPLE_EAT_2)(357, s) BOOST_PP_IF(p(357, s), BOOST_PP_FOR_357, BOOST_PP_TUPLE_EAT_4)(o(357, s), p, o, m) +# define BOOST_PP_FOR_357_I(s, p, o, m) BOOST_PP_IF(p(358, s), m, BOOST_PP_TUPLE_EAT_2)(358, s) BOOST_PP_IF(p(358, s), BOOST_PP_FOR_358, BOOST_PP_TUPLE_EAT_4)(o(358, s), p, o, m) +# define BOOST_PP_FOR_358_I(s, p, o, m) BOOST_PP_IF(p(359, s), m, BOOST_PP_TUPLE_EAT_2)(359, s) BOOST_PP_IF(p(359, s), BOOST_PP_FOR_359, BOOST_PP_TUPLE_EAT_4)(o(359, s), p, o, m) +# define BOOST_PP_FOR_359_I(s, p, o, m) BOOST_PP_IF(p(360, s), m, BOOST_PP_TUPLE_EAT_2)(360, s) BOOST_PP_IF(p(360, s), BOOST_PP_FOR_360, BOOST_PP_TUPLE_EAT_4)(o(360, s), p, o, m) +# define BOOST_PP_FOR_360_I(s, p, o, m) BOOST_PP_IF(p(361, s), m, BOOST_PP_TUPLE_EAT_2)(361, s) BOOST_PP_IF(p(361, s), BOOST_PP_FOR_361, BOOST_PP_TUPLE_EAT_4)(o(361, s), p, o, m) +# define BOOST_PP_FOR_361_I(s, p, o, m) BOOST_PP_IF(p(362, s), m, BOOST_PP_TUPLE_EAT_2)(362, s) BOOST_PP_IF(p(362, s), BOOST_PP_FOR_362, BOOST_PP_TUPLE_EAT_4)(o(362, s), p, o, m) +# define BOOST_PP_FOR_362_I(s, p, o, m) BOOST_PP_IF(p(363, s), m, BOOST_PP_TUPLE_EAT_2)(363, s) BOOST_PP_IF(p(363, s), BOOST_PP_FOR_363, BOOST_PP_TUPLE_EAT_4)(o(363, s), p, o, m) +# define BOOST_PP_FOR_363_I(s, p, o, m) BOOST_PP_IF(p(364, s), m, BOOST_PP_TUPLE_EAT_2)(364, s) BOOST_PP_IF(p(364, s), BOOST_PP_FOR_364, BOOST_PP_TUPLE_EAT_4)(o(364, s), p, o, m) +# define BOOST_PP_FOR_364_I(s, p, o, m) BOOST_PP_IF(p(365, s), m, BOOST_PP_TUPLE_EAT_2)(365, s) BOOST_PP_IF(p(365, s), BOOST_PP_FOR_365, BOOST_PP_TUPLE_EAT_4)(o(365, s), p, o, m) +# define BOOST_PP_FOR_365_I(s, p, o, m) BOOST_PP_IF(p(366, s), m, BOOST_PP_TUPLE_EAT_2)(366, s) BOOST_PP_IF(p(366, s), BOOST_PP_FOR_366, BOOST_PP_TUPLE_EAT_4)(o(366, s), p, o, m) +# define BOOST_PP_FOR_366_I(s, p, o, m) BOOST_PP_IF(p(367, s), m, BOOST_PP_TUPLE_EAT_2)(367, s) BOOST_PP_IF(p(367, s), BOOST_PP_FOR_367, BOOST_PP_TUPLE_EAT_4)(o(367, s), p, o, m) +# define BOOST_PP_FOR_367_I(s, p, o, m) BOOST_PP_IF(p(368, s), m, BOOST_PP_TUPLE_EAT_2)(368, s) BOOST_PP_IF(p(368, s), BOOST_PP_FOR_368, BOOST_PP_TUPLE_EAT_4)(o(368, s), p, o, m) +# define BOOST_PP_FOR_368_I(s, p, o, m) BOOST_PP_IF(p(369, s), m, BOOST_PP_TUPLE_EAT_2)(369, s) BOOST_PP_IF(p(369, s), BOOST_PP_FOR_369, BOOST_PP_TUPLE_EAT_4)(o(369, s), p, o, m) +# define BOOST_PP_FOR_369_I(s, p, o, m) BOOST_PP_IF(p(370, s), m, BOOST_PP_TUPLE_EAT_2)(370, s) BOOST_PP_IF(p(370, s), BOOST_PP_FOR_370, BOOST_PP_TUPLE_EAT_4)(o(370, s), p, o, m) +# define BOOST_PP_FOR_370_I(s, p, o, m) BOOST_PP_IF(p(371, s), m, BOOST_PP_TUPLE_EAT_2)(371, s) BOOST_PP_IF(p(371, s), BOOST_PP_FOR_371, BOOST_PP_TUPLE_EAT_4)(o(371, s), p, o, m) +# define BOOST_PP_FOR_371_I(s, p, o, m) BOOST_PP_IF(p(372, s), m, BOOST_PP_TUPLE_EAT_2)(372, s) BOOST_PP_IF(p(372, s), BOOST_PP_FOR_372, BOOST_PP_TUPLE_EAT_4)(o(372, s), p, o, m) +# define BOOST_PP_FOR_372_I(s, p, o, m) BOOST_PP_IF(p(373, s), m, BOOST_PP_TUPLE_EAT_2)(373, s) BOOST_PP_IF(p(373, s), BOOST_PP_FOR_373, BOOST_PP_TUPLE_EAT_4)(o(373, s), p, o, m) +# define BOOST_PP_FOR_373_I(s, p, o, m) BOOST_PP_IF(p(374, s), m, BOOST_PP_TUPLE_EAT_2)(374, s) BOOST_PP_IF(p(374, s), BOOST_PP_FOR_374, BOOST_PP_TUPLE_EAT_4)(o(374, s), p, o, m) +# define BOOST_PP_FOR_374_I(s, p, o, m) BOOST_PP_IF(p(375, s), m, BOOST_PP_TUPLE_EAT_2)(375, s) BOOST_PP_IF(p(375, s), BOOST_PP_FOR_375, BOOST_PP_TUPLE_EAT_4)(o(375, s), p, o, m) +# define BOOST_PP_FOR_375_I(s, p, o, m) BOOST_PP_IF(p(376, s), m, BOOST_PP_TUPLE_EAT_2)(376, s) BOOST_PP_IF(p(376, s), BOOST_PP_FOR_376, BOOST_PP_TUPLE_EAT_4)(o(376, s), p, o, m) +# define BOOST_PP_FOR_376_I(s, p, o, m) BOOST_PP_IF(p(377, s), m, BOOST_PP_TUPLE_EAT_2)(377, s) BOOST_PP_IF(p(377, s), BOOST_PP_FOR_377, BOOST_PP_TUPLE_EAT_4)(o(377, s), p, o, m) +# define BOOST_PP_FOR_377_I(s, p, o, m) BOOST_PP_IF(p(378, s), m, BOOST_PP_TUPLE_EAT_2)(378, s) BOOST_PP_IF(p(378, s), BOOST_PP_FOR_378, BOOST_PP_TUPLE_EAT_4)(o(378, s), p, o, m) +# define BOOST_PP_FOR_378_I(s, p, o, m) BOOST_PP_IF(p(379, s), m, BOOST_PP_TUPLE_EAT_2)(379, s) BOOST_PP_IF(p(379, s), BOOST_PP_FOR_379, BOOST_PP_TUPLE_EAT_4)(o(379, s), p, o, m) +# define BOOST_PP_FOR_379_I(s, p, o, m) BOOST_PP_IF(p(380, s), m, BOOST_PP_TUPLE_EAT_2)(380, s) BOOST_PP_IF(p(380, s), BOOST_PP_FOR_380, BOOST_PP_TUPLE_EAT_4)(o(380, s), p, o, m) +# define BOOST_PP_FOR_380_I(s, p, o, m) BOOST_PP_IF(p(381, s), m, BOOST_PP_TUPLE_EAT_2)(381, s) BOOST_PP_IF(p(381, s), BOOST_PP_FOR_381, BOOST_PP_TUPLE_EAT_4)(o(381, s), p, o, m) +# define BOOST_PP_FOR_381_I(s, p, o, m) BOOST_PP_IF(p(382, s), m, BOOST_PP_TUPLE_EAT_2)(382, s) BOOST_PP_IF(p(382, s), BOOST_PP_FOR_382, BOOST_PP_TUPLE_EAT_4)(o(382, s), p, o, m) +# define BOOST_PP_FOR_382_I(s, p, o, m) BOOST_PP_IF(p(383, s), m, BOOST_PP_TUPLE_EAT_2)(383, s) BOOST_PP_IF(p(383, s), BOOST_PP_FOR_383, BOOST_PP_TUPLE_EAT_4)(o(383, s), p, o, m) +# define BOOST_PP_FOR_383_I(s, p, o, m) BOOST_PP_IF(p(384, s), m, BOOST_PP_TUPLE_EAT_2)(384, s) BOOST_PP_IF(p(384, s), BOOST_PP_FOR_384, BOOST_PP_TUPLE_EAT_4)(o(384, s), p, o, m) +# define BOOST_PP_FOR_384_I(s, p, o, m) BOOST_PP_IF(p(385, s), m, BOOST_PP_TUPLE_EAT_2)(385, s) BOOST_PP_IF(p(385, s), BOOST_PP_FOR_385, BOOST_PP_TUPLE_EAT_4)(o(385, s), p, o, m) +# define BOOST_PP_FOR_385_I(s, p, o, m) BOOST_PP_IF(p(386, s), m, BOOST_PP_TUPLE_EAT_2)(386, s) BOOST_PP_IF(p(386, s), BOOST_PP_FOR_386, BOOST_PP_TUPLE_EAT_4)(o(386, s), p, o, m) +# define BOOST_PP_FOR_386_I(s, p, o, m) BOOST_PP_IF(p(387, s), m, BOOST_PP_TUPLE_EAT_2)(387, s) BOOST_PP_IF(p(387, s), BOOST_PP_FOR_387, BOOST_PP_TUPLE_EAT_4)(o(387, s), p, o, m) +# define BOOST_PP_FOR_387_I(s, p, o, m) BOOST_PP_IF(p(388, s), m, BOOST_PP_TUPLE_EAT_2)(388, s) BOOST_PP_IF(p(388, s), BOOST_PP_FOR_388, BOOST_PP_TUPLE_EAT_4)(o(388, s), p, o, m) +# define BOOST_PP_FOR_388_I(s, p, o, m) BOOST_PP_IF(p(389, s), m, BOOST_PP_TUPLE_EAT_2)(389, s) BOOST_PP_IF(p(389, s), BOOST_PP_FOR_389, BOOST_PP_TUPLE_EAT_4)(o(389, s), p, o, m) +# define BOOST_PP_FOR_389_I(s, p, o, m) BOOST_PP_IF(p(390, s), m, BOOST_PP_TUPLE_EAT_2)(390, s) BOOST_PP_IF(p(390, s), BOOST_PP_FOR_390, BOOST_PP_TUPLE_EAT_4)(o(390, s), p, o, m) +# define BOOST_PP_FOR_390_I(s, p, o, m) BOOST_PP_IF(p(391, s), m, BOOST_PP_TUPLE_EAT_2)(391, s) BOOST_PP_IF(p(391, s), BOOST_PP_FOR_391, BOOST_PP_TUPLE_EAT_4)(o(391, s), p, o, m) +# define BOOST_PP_FOR_391_I(s, p, o, m) BOOST_PP_IF(p(392, s), m, BOOST_PP_TUPLE_EAT_2)(392, s) BOOST_PP_IF(p(392, s), BOOST_PP_FOR_392, BOOST_PP_TUPLE_EAT_4)(o(392, s), p, o, m) +# define BOOST_PP_FOR_392_I(s, p, o, m) BOOST_PP_IF(p(393, s), m, BOOST_PP_TUPLE_EAT_2)(393, s) BOOST_PP_IF(p(393, s), BOOST_PP_FOR_393, BOOST_PP_TUPLE_EAT_4)(o(393, s), p, o, m) +# define BOOST_PP_FOR_393_I(s, p, o, m) BOOST_PP_IF(p(394, s), m, BOOST_PP_TUPLE_EAT_2)(394, s) BOOST_PP_IF(p(394, s), BOOST_PP_FOR_394, BOOST_PP_TUPLE_EAT_4)(o(394, s), p, o, m) +# define BOOST_PP_FOR_394_I(s, p, o, m) BOOST_PP_IF(p(395, s), m, BOOST_PP_TUPLE_EAT_2)(395, s) BOOST_PP_IF(p(395, s), BOOST_PP_FOR_395, BOOST_PP_TUPLE_EAT_4)(o(395, s), p, o, m) +# define BOOST_PP_FOR_395_I(s, p, o, m) BOOST_PP_IF(p(396, s), m, BOOST_PP_TUPLE_EAT_2)(396, s) BOOST_PP_IF(p(396, s), BOOST_PP_FOR_396, BOOST_PP_TUPLE_EAT_4)(o(396, s), p, o, m) +# define BOOST_PP_FOR_396_I(s, p, o, m) BOOST_PP_IF(p(397, s), m, BOOST_PP_TUPLE_EAT_2)(397, s) BOOST_PP_IF(p(397, s), BOOST_PP_FOR_397, BOOST_PP_TUPLE_EAT_4)(o(397, s), p, o, m) +# define BOOST_PP_FOR_397_I(s, p, o, m) BOOST_PP_IF(p(398, s), m, BOOST_PP_TUPLE_EAT_2)(398, s) BOOST_PP_IF(p(398, s), BOOST_PP_FOR_398, BOOST_PP_TUPLE_EAT_4)(o(398, s), p, o, m) +# define BOOST_PP_FOR_398_I(s, p, o, m) BOOST_PP_IF(p(399, s), m, BOOST_PP_TUPLE_EAT_2)(399, s) BOOST_PP_IF(p(399, s), BOOST_PP_FOR_399, BOOST_PP_TUPLE_EAT_4)(o(399, s), p, o, m) +# define BOOST_PP_FOR_399_I(s, p, o, m) BOOST_PP_IF(p(400, s), m, BOOST_PP_TUPLE_EAT_2)(400, s) BOOST_PP_IF(p(400, s), BOOST_PP_FOR_400, BOOST_PP_TUPLE_EAT_4)(o(400, s), p, o, m) +# define BOOST_PP_FOR_400_I(s, p, o, m) BOOST_PP_IF(p(401, s), m, BOOST_PP_TUPLE_EAT_2)(401, s) BOOST_PP_IF(p(401, s), BOOST_PP_FOR_401, BOOST_PP_TUPLE_EAT_4)(o(401, s), p, o, m) +# define BOOST_PP_FOR_401_I(s, p, o, m) BOOST_PP_IF(p(402, s), m, BOOST_PP_TUPLE_EAT_2)(402, s) BOOST_PP_IF(p(402, s), BOOST_PP_FOR_402, BOOST_PP_TUPLE_EAT_4)(o(402, s), p, o, m) +# define BOOST_PP_FOR_402_I(s, p, o, m) BOOST_PP_IF(p(403, s), m, BOOST_PP_TUPLE_EAT_2)(403, s) BOOST_PP_IF(p(403, s), BOOST_PP_FOR_403, BOOST_PP_TUPLE_EAT_4)(o(403, s), p, o, m) +# define BOOST_PP_FOR_403_I(s, p, o, m) BOOST_PP_IF(p(404, s), m, BOOST_PP_TUPLE_EAT_2)(404, s) BOOST_PP_IF(p(404, s), BOOST_PP_FOR_404, BOOST_PP_TUPLE_EAT_4)(o(404, s), p, o, m) +# define BOOST_PP_FOR_404_I(s, p, o, m) BOOST_PP_IF(p(405, s), m, BOOST_PP_TUPLE_EAT_2)(405, s) BOOST_PP_IF(p(405, s), BOOST_PP_FOR_405, BOOST_PP_TUPLE_EAT_4)(o(405, s), p, o, m) +# define BOOST_PP_FOR_405_I(s, p, o, m) BOOST_PP_IF(p(406, s), m, BOOST_PP_TUPLE_EAT_2)(406, s) BOOST_PP_IF(p(406, s), BOOST_PP_FOR_406, BOOST_PP_TUPLE_EAT_4)(o(406, s), p, o, m) +# define BOOST_PP_FOR_406_I(s, p, o, m) BOOST_PP_IF(p(407, s), m, BOOST_PP_TUPLE_EAT_2)(407, s) BOOST_PP_IF(p(407, s), BOOST_PP_FOR_407, BOOST_PP_TUPLE_EAT_4)(o(407, s), p, o, m) +# define BOOST_PP_FOR_407_I(s, p, o, m) BOOST_PP_IF(p(408, s), m, BOOST_PP_TUPLE_EAT_2)(408, s) BOOST_PP_IF(p(408, s), BOOST_PP_FOR_408, BOOST_PP_TUPLE_EAT_4)(o(408, s), p, o, m) +# define BOOST_PP_FOR_408_I(s, p, o, m) BOOST_PP_IF(p(409, s), m, BOOST_PP_TUPLE_EAT_2)(409, s) BOOST_PP_IF(p(409, s), BOOST_PP_FOR_409, BOOST_PP_TUPLE_EAT_4)(o(409, s), p, o, m) +# define BOOST_PP_FOR_409_I(s, p, o, m) BOOST_PP_IF(p(410, s), m, BOOST_PP_TUPLE_EAT_2)(410, s) BOOST_PP_IF(p(410, s), BOOST_PP_FOR_410, BOOST_PP_TUPLE_EAT_4)(o(410, s), p, o, m) +# define BOOST_PP_FOR_410_I(s, p, o, m) BOOST_PP_IF(p(411, s), m, BOOST_PP_TUPLE_EAT_2)(411, s) BOOST_PP_IF(p(411, s), BOOST_PP_FOR_411, BOOST_PP_TUPLE_EAT_4)(o(411, s), p, o, m) +# define BOOST_PP_FOR_411_I(s, p, o, m) BOOST_PP_IF(p(412, s), m, BOOST_PP_TUPLE_EAT_2)(412, s) BOOST_PP_IF(p(412, s), BOOST_PP_FOR_412, BOOST_PP_TUPLE_EAT_4)(o(412, s), p, o, m) +# define BOOST_PP_FOR_412_I(s, p, o, m) BOOST_PP_IF(p(413, s), m, BOOST_PP_TUPLE_EAT_2)(413, s) BOOST_PP_IF(p(413, s), BOOST_PP_FOR_413, BOOST_PP_TUPLE_EAT_4)(o(413, s), p, o, m) +# define BOOST_PP_FOR_413_I(s, p, o, m) BOOST_PP_IF(p(414, s), m, BOOST_PP_TUPLE_EAT_2)(414, s) BOOST_PP_IF(p(414, s), BOOST_PP_FOR_414, BOOST_PP_TUPLE_EAT_4)(o(414, s), p, o, m) +# define BOOST_PP_FOR_414_I(s, p, o, m) BOOST_PP_IF(p(415, s), m, BOOST_PP_TUPLE_EAT_2)(415, s) BOOST_PP_IF(p(415, s), BOOST_PP_FOR_415, BOOST_PP_TUPLE_EAT_4)(o(415, s), p, o, m) +# define BOOST_PP_FOR_415_I(s, p, o, m) BOOST_PP_IF(p(416, s), m, BOOST_PP_TUPLE_EAT_2)(416, s) BOOST_PP_IF(p(416, s), BOOST_PP_FOR_416, BOOST_PP_TUPLE_EAT_4)(o(416, s), p, o, m) +# define BOOST_PP_FOR_416_I(s, p, o, m) BOOST_PP_IF(p(417, s), m, BOOST_PP_TUPLE_EAT_2)(417, s) BOOST_PP_IF(p(417, s), BOOST_PP_FOR_417, BOOST_PP_TUPLE_EAT_4)(o(417, s), p, o, m) +# define BOOST_PP_FOR_417_I(s, p, o, m) BOOST_PP_IF(p(418, s), m, BOOST_PP_TUPLE_EAT_2)(418, s) BOOST_PP_IF(p(418, s), BOOST_PP_FOR_418, BOOST_PP_TUPLE_EAT_4)(o(418, s), p, o, m) +# define BOOST_PP_FOR_418_I(s, p, o, m) BOOST_PP_IF(p(419, s), m, BOOST_PP_TUPLE_EAT_2)(419, s) BOOST_PP_IF(p(419, s), BOOST_PP_FOR_419, BOOST_PP_TUPLE_EAT_4)(o(419, s), p, o, m) +# define BOOST_PP_FOR_419_I(s, p, o, m) BOOST_PP_IF(p(420, s), m, BOOST_PP_TUPLE_EAT_2)(420, s) BOOST_PP_IF(p(420, s), BOOST_PP_FOR_420, BOOST_PP_TUPLE_EAT_4)(o(420, s), p, o, m) +# define BOOST_PP_FOR_420_I(s, p, o, m) BOOST_PP_IF(p(421, s), m, BOOST_PP_TUPLE_EAT_2)(421, s) BOOST_PP_IF(p(421, s), BOOST_PP_FOR_421, BOOST_PP_TUPLE_EAT_4)(o(421, s), p, o, m) +# define BOOST_PP_FOR_421_I(s, p, o, m) BOOST_PP_IF(p(422, s), m, BOOST_PP_TUPLE_EAT_2)(422, s) BOOST_PP_IF(p(422, s), BOOST_PP_FOR_422, BOOST_PP_TUPLE_EAT_4)(o(422, s), p, o, m) +# define BOOST_PP_FOR_422_I(s, p, o, m) BOOST_PP_IF(p(423, s), m, BOOST_PP_TUPLE_EAT_2)(423, s) BOOST_PP_IF(p(423, s), BOOST_PP_FOR_423, BOOST_PP_TUPLE_EAT_4)(o(423, s), p, o, m) +# define BOOST_PP_FOR_423_I(s, p, o, m) BOOST_PP_IF(p(424, s), m, BOOST_PP_TUPLE_EAT_2)(424, s) BOOST_PP_IF(p(424, s), BOOST_PP_FOR_424, BOOST_PP_TUPLE_EAT_4)(o(424, s), p, o, m) +# define BOOST_PP_FOR_424_I(s, p, o, m) BOOST_PP_IF(p(425, s), m, BOOST_PP_TUPLE_EAT_2)(425, s) BOOST_PP_IF(p(425, s), BOOST_PP_FOR_425, BOOST_PP_TUPLE_EAT_4)(o(425, s), p, o, m) +# define BOOST_PP_FOR_425_I(s, p, o, m) BOOST_PP_IF(p(426, s), m, BOOST_PP_TUPLE_EAT_2)(426, s) BOOST_PP_IF(p(426, s), BOOST_PP_FOR_426, BOOST_PP_TUPLE_EAT_4)(o(426, s), p, o, m) +# define BOOST_PP_FOR_426_I(s, p, o, m) BOOST_PP_IF(p(427, s), m, BOOST_PP_TUPLE_EAT_2)(427, s) BOOST_PP_IF(p(427, s), BOOST_PP_FOR_427, BOOST_PP_TUPLE_EAT_4)(o(427, s), p, o, m) +# define BOOST_PP_FOR_427_I(s, p, o, m) BOOST_PP_IF(p(428, s), m, BOOST_PP_TUPLE_EAT_2)(428, s) BOOST_PP_IF(p(428, s), BOOST_PP_FOR_428, BOOST_PP_TUPLE_EAT_4)(o(428, s), p, o, m) +# define BOOST_PP_FOR_428_I(s, p, o, m) BOOST_PP_IF(p(429, s), m, BOOST_PP_TUPLE_EAT_2)(429, s) BOOST_PP_IF(p(429, s), BOOST_PP_FOR_429, BOOST_PP_TUPLE_EAT_4)(o(429, s), p, o, m) +# define BOOST_PP_FOR_429_I(s, p, o, m) BOOST_PP_IF(p(430, s), m, BOOST_PP_TUPLE_EAT_2)(430, s) BOOST_PP_IF(p(430, s), BOOST_PP_FOR_430, BOOST_PP_TUPLE_EAT_4)(o(430, s), p, o, m) +# define BOOST_PP_FOR_430_I(s, p, o, m) BOOST_PP_IF(p(431, s), m, BOOST_PP_TUPLE_EAT_2)(431, s) BOOST_PP_IF(p(431, s), BOOST_PP_FOR_431, BOOST_PP_TUPLE_EAT_4)(o(431, s), p, o, m) +# define BOOST_PP_FOR_431_I(s, p, o, m) BOOST_PP_IF(p(432, s), m, BOOST_PP_TUPLE_EAT_2)(432, s) BOOST_PP_IF(p(432, s), BOOST_PP_FOR_432, BOOST_PP_TUPLE_EAT_4)(o(432, s), p, o, m) +# define BOOST_PP_FOR_432_I(s, p, o, m) BOOST_PP_IF(p(433, s), m, BOOST_PP_TUPLE_EAT_2)(433, s) BOOST_PP_IF(p(433, s), BOOST_PP_FOR_433, BOOST_PP_TUPLE_EAT_4)(o(433, s), p, o, m) +# define BOOST_PP_FOR_433_I(s, p, o, m) BOOST_PP_IF(p(434, s), m, BOOST_PP_TUPLE_EAT_2)(434, s) BOOST_PP_IF(p(434, s), BOOST_PP_FOR_434, BOOST_PP_TUPLE_EAT_4)(o(434, s), p, o, m) +# define BOOST_PP_FOR_434_I(s, p, o, m) BOOST_PP_IF(p(435, s), m, BOOST_PP_TUPLE_EAT_2)(435, s) BOOST_PP_IF(p(435, s), BOOST_PP_FOR_435, BOOST_PP_TUPLE_EAT_4)(o(435, s), p, o, m) +# define BOOST_PP_FOR_435_I(s, p, o, m) BOOST_PP_IF(p(436, s), m, BOOST_PP_TUPLE_EAT_2)(436, s) BOOST_PP_IF(p(436, s), BOOST_PP_FOR_436, BOOST_PP_TUPLE_EAT_4)(o(436, s), p, o, m) +# define BOOST_PP_FOR_436_I(s, p, o, m) BOOST_PP_IF(p(437, s), m, BOOST_PP_TUPLE_EAT_2)(437, s) BOOST_PP_IF(p(437, s), BOOST_PP_FOR_437, BOOST_PP_TUPLE_EAT_4)(o(437, s), p, o, m) +# define BOOST_PP_FOR_437_I(s, p, o, m) BOOST_PP_IF(p(438, s), m, BOOST_PP_TUPLE_EAT_2)(438, s) BOOST_PP_IF(p(438, s), BOOST_PP_FOR_438, BOOST_PP_TUPLE_EAT_4)(o(438, s), p, o, m) +# define BOOST_PP_FOR_438_I(s, p, o, m) BOOST_PP_IF(p(439, s), m, BOOST_PP_TUPLE_EAT_2)(439, s) BOOST_PP_IF(p(439, s), BOOST_PP_FOR_439, BOOST_PP_TUPLE_EAT_4)(o(439, s), p, o, m) +# define BOOST_PP_FOR_439_I(s, p, o, m) BOOST_PP_IF(p(440, s), m, BOOST_PP_TUPLE_EAT_2)(440, s) BOOST_PP_IF(p(440, s), BOOST_PP_FOR_440, BOOST_PP_TUPLE_EAT_4)(o(440, s), p, o, m) +# define BOOST_PP_FOR_440_I(s, p, o, m) BOOST_PP_IF(p(441, s), m, BOOST_PP_TUPLE_EAT_2)(441, s) BOOST_PP_IF(p(441, s), BOOST_PP_FOR_441, BOOST_PP_TUPLE_EAT_4)(o(441, s), p, o, m) +# define BOOST_PP_FOR_441_I(s, p, o, m) BOOST_PP_IF(p(442, s), m, BOOST_PP_TUPLE_EAT_2)(442, s) BOOST_PP_IF(p(442, s), BOOST_PP_FOR_442, BOOST_PP_TUPLE_EAT_4)(o(442, s), p, o, m) +# define BOOST_PP_FOR_442_I(s, p, o, m) BOOST_PP_IF(p(443, s), m, BOOST_PP_TUPLE_EAT_2)(443, s) BOOST_PP_IF(p(443, s), BOOST_PP_FOR_443, BOOST_PP_TUPLE_EAT_4)(o(443, s), p, o, m) +# define BOOST_PP_FOR_443_I(s, p, o, m) BOOST_PP_IF(p(444, s), m, BOOST_PP_TUPLE_EAT_2)(444, s) BOOST_PP_IF(p(444, s), BOOST_PP_FOR_444, BOOST_PP_TUPLE_EAT_4)(o(444, s), p, o, m) +# define BOOST_PP_FOR_444_I(s, p, o, m) BOOST_PP_IF(p(445, s), m, BOOST_PP_TUPLE_EAT_2)(445, s) BOOST_PP_IF(p(445, s), BOOST_PP_FOR_445, BOOST_PP_TUPLE_EAT_4)(o(445, s), p, o, m) +# define BOOST_PP_FOR_445_I(s, p, o, m) BOOST_PP_IF(p(446, s), m, BOOST_PP_TUPLE_EAT_2)(446, s) BOOST_PP_IF(p(446, s), BOOST_PP_FOR_446, BOOST_PP_TUPLE_EAT_4)(o(446, s), p, o, m) +# define BOOST_PP_FOR_446_I(s, p, o, m) BOOST_PP_IF(p(447, s), m, BOOST_PP_TUPLE_EAT_2)(447, s) BOOST_PP_IF(p(447, s), BOOST_PP_FOR_447, BOOST_PP_TUPLE_EAT_4)(o(447, s), p, o, m) +# define BOOST_PP_FOR_447_I(s, p, o, m) BOOST_PP_IF(p(448, s), m, BOOST_PP_TUPLE_EAT_2)(448, s) BOOST_PP_IF(p(448, s), BOOST_PP_FOR_448, BOOST_PP_TUPLE_EAT_4)(o(448, s), p, o, m) +# define BOOST_PP_FOR_448_I(s, p, o, m) BOOST_PP_IF(p(449, s), m, BOOST_PP_TUPLE_EAT_2)(449, s) BOOST_PP_IF(p(449, s), BOOST_PP_FOR_449, BOOST_PP_TUPLE_EAT_4)(o(449, s), p, o, m) +# define BOOST_PP_FOR_449_I(s, p, o, m) BOOST_PP_IF(p(450, s), m, BOOST_PP_TUPLE_EAT_2)(450, s) BOOST_PP_IF(p(450, s), BOOST_PP_FOR_450, BOOST_PP_TUPLE_EAT_4)(o(450, s), p, o, m) +# define BOOST_PP_FOR_450_I(s, p, o, m) BOOST_PP_IF(p(451, s), m, BOOST_PP_TUPLE_EAT_2)(451, s) BOOST_PP_IF(p(451, s), BOOST_PP_FOR_451, BOOST_PP_TUPLE_EAT_4)(o(451, s), p, o, m) +# define BOOST_PP_FOR_451_I(s, p, o, m) BOOST_PP_IF(p(452, s), m, BOOST_PP_TUPLE_EAT_2)(452, s) BOOST_PP_IF(p(452, s), BOOST_PP_FOR_452, BOOST_PP_TUPLE_EAT_4)(o(452, s), p, o, m) +# define BOOST_PP_FOR_452_I(s, p, o, m) BOOST_PP_IF(p(453, s), m, BOOST_PP_TUPLE_EAT_2)(453, s) BOOST_PP_IF(p(453, s), BOOST_PP_FOR_453, BOOST_PP_TUPLE_EAT_4)(o(453, s), p, o, m) +# define BOOST_PP_FOR_453_I(s, p, o, m) BOOST_PP_IF(p(454, s), m, BOOST_PP_TUPLE_EAT_2)(454, s) BOOST_PP_IF(p(454, s), BOOST_PP_FOR_454, BOOST_PP_TUPLE_EAT_4)(o(454, s), p, o, m) +# define BOOST_PP_FOR_454_I(s, p, o, m) BOOST_PP_IF(p(455, s), m, BOOST_PP_TUPLE_EAT_2)(455, s) BOOST_PP_IF(p(455, s), BOOST_PP_FOR_455, BOOST_PP_TUPLE_EAT_4)(o(455, s), p, o, m) +# define BOOST_PP_FOR_455_I(s, p, o, m) BOOST_PP_IF(p(456, s), m, BOOST_PP_TUPLE_EAT_2)(456, s) BOOST_PP_IF(p(456, s), BOOST_PP_FOR_456, BOOST_PP_TUPLE_EAT_4)(o(456, s), p, o, m) +# define BOOST_PP_FOR_456_I(s, p, o, m) BOOST_PP_IF(p(457, s), m, BOOST_PP_TUPLE_EAT_2)(457, s) BOOST_PP_IF(p(457, s), BOOST_PP_FOR_457, BOOST_PP_TUPLE_EAT_4)(o(457, s), p, o, m) +# define BOOST_PP_FOR_457_I(s, p, o, m) BOOST_PP_IF(p(458, s), m, BOOST_PP_TUPLE_EAT_2)(458, s) BOOST_PP_IF(p(458, s), BOOST_PP_FOR_458, BOOST_PP_TUPLE_EAT_4)(o(458, s), p, o, m) +# define BOOST_PP_FOR_458_I(s, p, o, m) BOOST_PP_IF(p(459, s), m, BOOST_PP_TUPLE_EAT_2)(459, s) BOOST_PP_IF(p(459, s), BOOST_PP_FOR_459, BOOST_PP_TUPLE_EAT_4)(o(459, s), p, o, m) +# define BOOST_PP_FOR_459_I(s, p, o, m) BOOST_PP_IF(p(460, s), m, BOOST_PP_TUPLE_EAT_2)(460, s) BOOST_PP_IF(p(460, s), BOOST_PP_FOR_460, BOOST_PP_TUPLE_EAT_4)(o(460, s), p, o, m) +# define BOOST_PP_FOR_460_I(s, p, o, m) BOOST_PP_IF(p(461, s), m, BOOST_PP_TUPLE_EAT_2)(461, s) BOOST_PP_IF(p(461, s), BOOST_PP_FOR_461, BOOST_PP_TUPLE_EAT_4)(o(461, s), p, o, m) +# define BOOST_PP_FOR_461_I(s, p, o, m) BOOST_PP_IF(p(462, s), m, BOOST_PP_TUPLE_EAT_2)(462, s) BOOST_PP_IF(p(462, s), BOOST_PP_FOR_462, BOOST_PP_TUPLE_EAT_4)(o(462, s), p, o, m) +# define BOOST_PP_FOR_462_I(s, p, o, m) BOOST_PP_IF(p(463, s), m, BOOST_PP_TUPLE_EAT_2)(463, s) BOOST_PP_IF(p(463, s), BOOST_PP_FOR_463, BOOST_PP_TUPLE_EAT_4)(o(463, s), p, o, m) +# define BOOST_PP_FOR_463_I(s, p, o, m) BOOST_PP_IF(p(464, s), m, BOOST_PP_TUPLE_EAT_2)(464, s) BOOST_PP_IF(p(464, s), BOOST_PP_FOR_464, BOOST_PP_TUPLE_EAT_4)(o(464, s), p, o, m) +# define BOOST_PP_FOR_464_I(s, p, o, m) BOOST_PP_IF(p(465, s), m, BOOST_PP_TUPLE_EAT_2)(465, s) BOOST_PP_IF(p(465, s), BOOST_PP_FOR_465, BOOST_PP_TUPLE_EAT_4)(o(465, s), p, o, m) +# define BOOST_PP_FOR_465_I(s, p, o, m) BOOST_PP_IF(p(466, s), m, BOOST_PP_TUPLE_EAT_2)(466, s) BOOST_PP_IF(p(466, s), BOOST_PP_FOR_466, BOOST_PP_TUPLE_EAT_4)(o(466, s), p, o, m) +# define BOOST_PP_FOR_466_I(s, p, o, m) BOOST_PP_IF(p(467, s), m, BOOST_PP_TUPLE_EAT_2)(467, s) BOOST_PP_IF(p(467, s), BOOST_PP_FOR_467, BOOST_PP_TUPLE_EAT_4)(o(467, s), p, o, m) +# define BOOST_PP_FOR_467_I(s, p, o, m) BOOST_PP_IF(p(468, s), m, BOOST_PP_TUPLE_EAT_2)(468, s) BOOST_PP_IF(p(468, s), BOOST_PP_FOR_468, BOOST_PP_TUPLE_EAT_4)(o(468, s), p, o, m) +# define BOOST_PP_FOR_468_I(s, p, o, m) BOOST_PP_IF(p(469, s), m, BOOST_PP_TUPLE_EAT_2)(469, s) BOOST_PP_IF(p(469, s), BOOST_PP_FOR_469, BOOST_PP_TUPLE_EAT_4)(o(469, s), p, o, m) +# define BOOST_PP_FOR_469_I(s, p, o, m) BOOST_PP_IF(p(470, s), m, BOOST_PP_TUPLE_EAT_2)(470, s) BOOST_PP_IF(p(470, s), BOOST_PP_FOR_470, BOOST_PP_TUPLE_EAT_4)(o(470, s), p, o, m) +# define BOOST_PP_FOR_470_I(s, p, o, m) BOOST_PP_IF(p(471, s), m, BOOST_PP_TUPLE_EAT_2)(471, s) BOOST_PP_IF(p(471, s), BOOST_PP_FOR_471, BOOST_PP_TUPLE_EAT_4)(o(471, s), p, o, m) +# define BOOST_PP_FOR_471_I(s, p, o, m) BOOST_PP_IF(p(472, s), m, BOOST_PP_TUPLE_EAT_2)(472, s) BOOST_PP_IF(p(472, s), BOOST_PP_FOR_472, BOOST_PP_TUPLE_EAT_4)(o(472, s), p, o, m) +# define BOOST_PP_FOR_472_I(s, p, o, m) BOOST_PP_IF(p(473, s), m, BOOST_PP_TUPLE_EAT_2)(473, s) BOOST_PP_IF(p(473, s), BOOST_PP_FOR_473, BOOST_PP_TUPLE_EAT_4)(o(473, s), p, o, m) +# define BOOST_PP_FOR_473_I(s, p, o, m) BOOST_PP_IF(p(474, s), m, BOOST_PP_TUPLE_EAT_2)(474, s) BOOST_PP_IF(p(474, s), BOOST_PP_FOR_474, BOOST_PP_TUPLE_EAT_4)(o(474, s), p, o, m) +# define BOOST_PP_FOR_474_I(s, p, o, m) BOOST_PP_IF(p(475, s), m, BOOST_PP_TUPLE_EAT_2)(475, s) BOOST_PP_IF(p(475, s), BOOST_PP_FOR_475, BOOST_PP_TUPLE_EAT_4)(o(475, s), p, o, m) +# define BOOST_PP_FOR_475_I(s, p, o, m) BOOST_PP_IF(p(476, s), m, BOOST_PP_TUPLE_EAT_2)(476, s) BOOST_PP_IF(p(476, s), BOOST_PP_FOR_476, BOOST_PP_TUPLE_EAT_4)(o(476, s), p, o, m) +# define BOOST_PP_FOR_476_I(s, p, o, m) BOOST_PP_IF(p(477, s), m, BOOST_PP_TUPLE_EAT_2)(477, s) BOOST_PP_IF(p(477, s), BOOST_PP_FOR_477, BOOST_PP_TUPLE_EAT_4)(o(477, s), p, o, m) +# define BOOST_PP_FOR_477_I(s, p, o, m) BOOST_PP_IF(p(478, s), m, BOOST_PP_TUPLE_EAT_2)(478, s) BOOST_PP_IF(p(478, s), BOOST_PP_FOR_478, BOOST_PP_TUPLE_EAT_4)(o(478, s), p, o, m) +# define BOOST_PP_FOR_478_I(s, p, o, m) BOOST_PP_IF(p(479, s), m, BOOST_PP_TUPLE_EAT_2)(479, s) BOOST_PP_IF(p(479, s), BOOST_PP_FOR_479, BOOST_PP_TUPLE_EAT_4)(o(479, s), p, o, m) +# define BOOST_PP_FOR_479_I(s, p, o, m) BOOST_PP_IF(p(480, s), m, BOOST_PP_TUPLE_EAT_2)(480, s) BOOST_PP_IF(p(480, s), BOOST_PP_FOR_480, BOOST_PP_TUPLE_EAT_4)(o(480, s), p, o, m) +# define BOOST_PP_FOR_480_I(s, p, o, m) BOOST_PP_IF(p(481, s), m, BOOST_PP_TUPLE_EAT_2)(481, s) BOOST_PP_IF(p(481, s), BOOST_PP_FOR_481, BOOST_PP_TUPLE_EAT_4)(o(481, s), p, o, m) +# define BOOST_PP_FOR_481_I(s, p, o, m) BOOST_PP_IF(p(482, s), m, BOOST_PP_TUPLE_EAT_2)(482, s) BOOST_PP_IF(p(482, s), BOOST_PP_FOR_482, BOOST_PP_TUPLE_EAT_4)(o(482, s), p, o, m) +# define BOOST_PP_FOR_482_I(s, p, o, m) BOOST_PP_IF(p(483, s), m, BOOST_PP_TUPLE_EAT_2)(483, s) BOOST_PP_IF(p(483, s), BOOST_PP_FOR_483, BOOST_PP_TUPLE_EAT_4)(o(483, s), p, o, m) +# define BOOST_PP_FOR_483_I(s, p, o, m) BOOST_PP_IF(p(484, s), m, BOOST_PP_TUPLE_EAT_2)(484, s) BOOST_PP_IF(p(484, s), BOOST_PP_FOR_484, BOOST_PP_TUPLE_EAT_4)(o(484, s), p, o, m) +# define BOOST_PP_FOR_484_I(s, p, o, m) BOOST_PP_IF(p(485, s), m, BOOST_PP_TUPLE_EAT_2)(485, s) BOOST_PP_IF(p(485, s), BOOST_PP_FOR_485, BOOST_PP_TUPLE_EAT_4)(o(485, s), p, o, m) +# define BOOST_PP_FOR_485_I(s, p, o, m) BOOST_PP_IF(p(486, s), m, BOOST_PP_TUPLE_EAT_2)(486, s) BOOST_PP_IF(p(486, s), BOOST_PP_FOR_486, BOOST_PP_TUPLE_EAT_4)(o(486, s), p, o, m) +# define BOOST_PP_FOR_486_I(s, p, o, m) BOOST_PP_IF(p(487, s), m, BOOST_PP_TUPLE_EAT_2)(487, s) BOOST_PP_IF(p(487, s), BOOST_PP_FOR_487, BOOST_PP_TUPLE_EAT_4)(o(487, s), p, o, m) +# define BOOST_PP_FOR_487_I(s, p, o, m) BOOST_PP_IF(p(488, s), m, BOOST_PP_TUPLE_EAT_2)(488, s) BOOST_PP_IF(p(488, s), BOOST_PP_FOR_488, BOOST_PP_TUPLE_EAT_4)(o(488, s), p, o, m) +# define BOOST_PP_FOR_488_I(s, p, o, m) BOOST_PP_IF(p(489, s), m, BOOST_PP_TUPLE_EAT_2)(489, s) BOOST_PP_IF(p(489, s), BOOST_PP_FOR_489, BOOST_PP_TUPLE_EAT_4)(o(489, s), p, o, m) +# define BOOST_PP_FOR_489_I(s, p, o, m) BOOST_PP_IF(p(490, s), m, BOOST_PP_TUPLE_EAT_2)(490, s) BOOST_PP_IF(p(490, s), BOOST_PP_FOR_490, BOOST_PP_TUPLE_EAT_4)(o(490, s), p, o, m) +# define BOOST_PP_FOR_490_I(s, p, o, m) BOOST_PP_IF(p(491, s), m, BOOST_PP_TUPLE_EAT_2)(491, s) BOOST_PP_IF(p(491, s), BOOST_PP_FOR_491, BOOST_PP_TUPLE_EAT_4)(o(491, s), p, o, m) +# define BOOST_PP_FOR_491_I(s, p, o, m) BOOST_PP_IF(p(492, s), m, BOOST_PP_TUPLE_EAT_2)(492, s) BOOST_PP_IF(p(492, s), BOOST_PP_FOR_492, BOOST_PP_TUPLE_EAT_4)(o(492, s), p, o, m) +# define BOOST_PP_FOR_492_I(s, p, o, m) BOOST_PP_IF(p(493, s), m, BOOST_PP_TUPLE_EAT_2)(493, s) BOOST_PP_IF(p(493, s), BOOST_PP_FOR_493, BOOST_PP_TUPLE_EAT_4)(o(493, s), p, o, m) +# define BOOST_PP_FOR_493_I(s, p, o, m) BOOST_PP_IF(p(494, s), m, BOOST_PP_TUPLE_EAT_2)(494, s) BOOST_PP_IF(p(494, s), BOOST_PP_FOR_494, BOOST_PP_TUPLE_EAT_4)(o(494, s), p, o, m) +# define BOOST_PP_FOR_494_I(s, p, o, m) BOOST_PP_IF(p(495, s), m, BOOST_PP_TUPLE_EAT_2)(495, s) BOOST_PP_IF(p(495, s), BOOST_PP_FOR_495, BOOST_PP_TUPLE_EAT_4)(o(495, s), p, o, m) +# define BOOST_PP_FOR_495_I(s, p, o, m) BOOST_PP_IF(p(496, s), m, BOOST_PP_TUPLE_EAT_2)(496, s) BOOST_PP_IF(p(496, s), BOOST_PP_FOR_496, BOOST_PP_TUPLE_EAT_4)(o(496, s), p, o, m) +# define BOOST_PP_FOR_496_I(s, p, o, m) BOOST_PP_IF(p(497, s), m, BOOST_PP_TUPLE_EAT_2)(497, s) BOOST_PP_IF(p(497, s), BOOST_PP_FOR_497, BOOST_PP_TUPLE_EAT_4)(o(497, s), p, o, m) +# define BOOST_PP_FOR_497_I(s, p, o, m) BOOST_PP_IF(p(498, s), m, BOOST_PP_TUPLE_EAT_2)(498, s) BOOST_PP_IF(p(498, s), BOOST_PP_FOR_498, BOOST_PP_TUPLE_EAT_4)(o(498, s), p, o, m) +# define BOOST_PP_FOR_498_I(s, p, o, m) BOOST_PP_IF(p(499, s), m, BOOST_PP_TUPLE_EAT_2)(499, s) BOOST_PP_IF(p(499, s), BOOST_PP_FOR_499, BOOST_PP_TUPLE_EAT_4)(o(499, s), p, o, m) +# define BOOST_PP_FOR_499_I(s, p, o, m) BOOST_PP_IF(p(500, s), m, BOOST_PP_TUPLE_EAT_2)(500, s) BOOST_PP_IF(p(500, s), BOOST_PP_FOR_500, BOOST_PP_TUPLE_EAT_4)(o(500, s), p, o, m) +# define BOOST_PP_FOR_500_I(s, p, o, m) BOOST_PP_IF(p(501, s), m, BOOST_PP_TUPLE_EAT_2)(501, s) BOOST_PP_IF(p(501, s), BOOST_PP_FOR_501, BOOST_PP_TUPLE_EAT_4)(o(501, s), p, o, m) +# define BOOST_PP_FOR_501_I(s, p, o, m) BOOST_PP_IF(p(502, s), m, BOOST_PP_TUPLE_EAT_2)(502, s) BOOST_PP_IF(p(502, s), BOOST_PP_FOR_502, BOOST_PP_TUPLE_EAT_4)(o(502, s), p, o, m) +# define BOOST_PP_FOR_502_I(s, p, o, m) BOOST_PP_IF(p(503, s), m, BOOST_PP_TUPLE_EAT_2)(503, s) BOOST_PP_IF(p(503, s), BOOST_PP_FOR_503, BOOST_PP_TUPLE_EAT_4)(o(503, s), p, o, m) +# define BOOST_PP_FOR_503_I(s, p, o, m) BOOST_PP_IF(p(504, s), m, BOOST_PP_TUPLE_EAT_2)(504, s) BOOST_PP_IF(p(504, s), BOOST_PP_FOR_504, BOOST_PP_TUPLE_EAT_4)(o(504, s), p, o, m) +# define BOOST_PP_FOR_504_I(s, p, o, m) BOOST_PP_IF(p(505, s), m, BOOST_PP_TUPLE_EAT_2)(505, s) BOOST_PP_IF(p(505, s), BOOST_PP_FOR_505, BOOST_PP_TUPLE_EAT_4)(o(505, s), p, o, m) +# define BOOST_PP_FOR_505_I(s, p, o, m) BOOST_PP_IF(p(506, s), m, BOOST_PP_TUPLE_EAT_2)(506, s) BOOST_PP_IF(p(506, s), BOOST_PP_FOR_506, BOOST_PP_TUPLE_EAT_4)(o(506, s), p, o, m) +# define BOOST_PP_FOR_506_I(s, p, o, m) BOOST_PP_IF(p(507, s), m, BOOST_PP_TUPLE_EAT_2)(507, s) BOOST_PP_IF(p(507, s), BOOST_PP_FOR_507, BOOST_PP_TUPLE_EAT_4)(o(507, s), p, o, m) +# define BOOST_PP_FOR_507_I(s, p, o, m) BOOST_PP_IF(p(508, s), m, BOOST_PP_TUPLE_EAT_2)(508, s) BOOST_PP_IF(p(508, s), BOOST_PP_FOR_508, BOOST_PP_TUPLE_EAT_4)(o(508, s), p, o, m) +# define BOOST_PP_FOR_508_I(s, p, o, m) BOOST_PP_IF(p(509, s), m, BOOST_PP_TUPLE_EAT_2)(509, s) BOOST_PP_IF(p(509, s), BOOST_PP_FOR_509, BOOST_PP_TUPLE_EAT_4)(o(509, s), p, o, m) +# define BOOST_PP_FOR_509_I(s, p, o, m) BOOST_PP_IF(p(510, s), m, BOOST_PP_TUPLE_EAT_2)(510, s) BOOST_PP_IF(p(510, s), BOOST_PP_FOR_510, BOOST_PP_TUPLE_EAT_4)(o(510, s), p, o, m) +# define BOOST_PP_FOR_510_I(s, p, o, m) BOOST_PP_IF(p(511, s), m, BOOST_PP_TUPLE_EAT_2)(511, s) BOOST_PP_IF(p(511, s), BOOST_PP_FOR_511, BOOST_PP_TUPLE_EAT_4)(o(511, s), p, o, m) +# define BOOST_PP_FOR_511_I(s, p, o, m) BOOST_PP_IF(p(512, s), m, BOOST_PP_TUPLE_EAT_2)(512, s) BOOST_PP_IF(p(512, s), BOOST_PP_FOR_512, BOOST_PP_TUPLE_EAT_4)(o(512, s), p, o, m) +# define BOOST_PP_FOR_512_I(s, p, o, m) BOOST_PP_IF(p(513, s), m, BOOST_PP_TUPLE_EAT_2)(513, s) BOOST_PP_IF(p(513, s), BOOST_PP_FOR_513, BOOST_PP_TUPLE_EAT_4)(o(513, s), p, o, m) +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/detail/for.hpp b/src/boost/boost/preprocessor/repetition/detail/for.hpp index 0fd0d58f4..e02274a6c 100644 --- a/src/boost/boost/preprocessor/repetition/detail/for.hpp +++ b/src/boost/boost/preprocessor/repetition/detail/for.hpp @@ -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_REPETITION_DETAIL_FOR_HPP # define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # include @@ -533,4 +538,27 @@ # define BOOST_PP_FOR_255_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IIF(c, BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(256, s), p, o, m) # define BOOST_PP_FOR_256_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IIF(c, BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(257, s), p, o, m) # +# else +# +# include +# include +# include +# include +# include +# +# if BOOST_PP_LIMIT_FOR == 256 +# include +# elif BOOST_PP_LIMIT_FOR == 512 +# include +# include +# elif BOOST_PP_LIMIT_FOR == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_FOR limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/repetition/detail/limits/for_1024.hpp b/src/boost/boost/preprocessor/repetition/detail/limits/for_1024.hpp new file mode 100644 index 000000000..794647a88 --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/detail/limits/for_1024.hpp @@ -0,0 +1,1044 @@ +# /* 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_REPETITION_DETAIL_FOR_1024_HPP +# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_1024_HPP +# +# define BOOST_PP_FOR_513(s, p, o, m) BOOST_PP_FOR_513_C(BOOST_PP_BOOL(p(514, s)), s, p, o, m) +# define BOOST_PP_FOR_514(s, p, o, m) BOOST_PP_FOR_514_C(BOOST_PP_BOOL(p(515, s)), s, p, o, m) +# define BOOST_PP_FOR_515(s, p, o, m) BOOST_PP_FOR_515_C(BOOST_PP_BOOL(p(516, s)), s, p, o, m) +# define BOOST_PP_FOR_516(s, p, o, m) BOOST_PP_FOR_516_C(BOOST_PP_BOOL(p(517, s)), s, p, o, m) +# define BOOST_PP_FOR_517(s, p, o, m) BOOST_PP_FOR_517_C(BOOST_PP_BOOL(p(518, s)), s, p, o, m) +# define BOOST_PP_FOR_518(s, p, o, m) BOOST_PP_FOR_518_C(BOOST_PP_BOOL(p(519, s)), s, p, o, m) +# define BOOST_PP_FOR_519(s, p, o, m) BOOST_PP_FOR_519_C(BOOST_PP_BOOL(p(520, s)), s, p, o, m) +# define BOOST_PP_FOR_520(s, p, o, m) BOOST_PP_FOR_520_C(BOOST_PP_BOOL(p(521, s)), s, p, o, m) +# define BOOST_PP_FOR_521(s, p, o, m) BOOST_PP_FOR_521_C(BOOST_PP_BOOL(p(522, s)), s, p, o, m) +# define BOOST_PP_FOR_522(s, p, o, m) BOOST_PP_FOR_522_C(BOOST_PP_BOOL(p(523, s)), s, p, o, m) +# define BOOST_PP_FOR_523(s, p, o, m) BOOST_PP_FOR_523_C(BOOST_PP_BOOL(p(524, s)), s, p, o, m) +# define BOOST_PP_FOR_524(s, p, o, m) BOOST_PP_FOR_524_C(BOOST_PP_BOOL(p(525, s)), s, p, o, m) +# define BOOST_PP_FOR_525(s, p, o, m) BOOST_PP_FOR_525_C(BOOST_PP_BOOL(p(526, s)), s, p, o, m) +# define BOOST_PP_FOR_526(s, p, o, m) BOOST_PP_FOR_526_C(BOOST_PP_BOOL(p(527, s)), s, p, o, m) +# define BOOST_PP_FOR_527(s, p, o, m) BOOST_PP_FOR_527_C(BOOST_PP_BOOL(p(528, s)), s, p, o, m) +# define BOOST_PP_FOR_528(s, p, o, m) BOOST_PP_FOR_528_C(BOOST_PP_BOOL(p(529, s)), s, p, o, m) +# define BOOST_PP_FOR_529(s, p, o, m) BOOST_PP_FOR_529_C(BOOST_PP_BOOL(p(530, s)), s, p, o, m) +# define BOOST_PP_FOR_530(s, p, o, m) BOOST_PP_FOR_530_C(BOOST_PP_BOOL(p(531, s)), s, p, o, m) +# define BOOST_PP_FOR_531(s, p, o, m) BOOST_PP_FOR_531_C(BOOST_PP_BOOL(p(532, s)), s, p, o, m) +# define BOOST_PP_FOR_532(s, p, o, m) BOOST_PP_FOR_532_C(BOOST_PP_BOOL(p(533, s)), s, p, o, m) +# define BOOST_PP_FOR_533(s, p, o, m) BOOST_PP_FOR_533_C(BOOST_PP_BOOL(p(534, s)), s, p, o, m) +# define BOOST_PP_FOR_534(s, p, o, m) BOOST_PP_FOR_534_C(BOOST_PP_BOOL(p(535, s)), s, p, o, m) +# define BOOST_PP_FOR_535(s, p, o, m) BOOST_PP_FOR_535_C(BOOST_PP_BOOL(p(536, s)), s, p, o, m) +# define BOOST_PP_FOR_536(s, p, o, m) BOOST_PP_FOR_536_C(BOOST_PP_BOOL(p(537, s)), s, p, o, m) +# define BOOST_PP_FOR_537(s, p, o, m) BOOST_PP_FOR_537_C(BOOST_PP_BOOL(p(538, s)), s, p, o, m) +# define BOOST_PP_FOR_538(s, p, o, m) BOOST_PP_FOR_538_C(BOOST_PP_BOOL(p(539, s)), s, p, o, m) +# define BOOST_PP_FOR_539(s, p, o, m) BOOST_PP_FOR_539_C(BOOST_PP_BOOL(p(540, s)), s, p, o, m) +# define BOOST_PP_FOR_540(s, p, o, m) BOOST_PP_FOR_540_C(BOOST_PP_BOOL(p(541, s)), s, p, o, m) +# define BOOST_PP_FOR_541(s, p, o, m) BOOST_PP_FOR_541_C(BOOST_PP_BOOL(p(542, s)), s, p, o, m) +# define BOOST_PP_FOR_542(s, p, o, m) BOOST_PP_FOR_542_C(BOOST_PP_BOOL(p(543, s)), s, p, o, m) +# define BOOST_PP_FOR_543(s, p, o, m) BOOST_PP_FOR_543_C(BOOST_PP_BOOL(p(544, s)), s, p, o, m) +# define BOOST_PP_FOR_544(s, p, o, m) BOOST_PP_FOR_544_C(BOOST_PP_BOOL(p(545, s)), s, p, o, m) +# define BOOST_PP_FOR_545(s, p, o, m) BOOST_PP_FOR_545_C(BOOST_PP_BOOL(p(546, s)), s, p, o, m) +# define BOOST_PP_FOR_546(s, p, o, m) BOOST_PP_FOR_546_C(BOOST_PP_BOOL(p(547, s)), s, p, o, m) +# define BOOST_PP_FOR_547(s, p, o, m) BOOST_PP_FOR_547_C(BOOST_PP_BOOL(p(548, s)), s, p, o, m) +# define BOOST_PP_FOR_548(s, p, o, m) BOOST_PP_FOR_548_C(BOOST_PP_BOOL(p(549, s)), s, p, o, m) +# define BOOST_PP_FOR_549(s, p, o, m) BOOST_PP_FOR_549_C(BOOST_PP_BOOL(p(550, s)), s, p, o, m) +# define BOOST_PP_FOR_550(s, p, o, m) BOOST_PP_FOR_550_C(BOOST_PP_BOOL(p(551, s)), s, p, o, m) +# define BOOST_PP_FOR_551(s, p, o, m) BOOST_PP_FOR_551_C(BOOST_PP_BOOL(p(552, s)), s, p, o, m) +# define BOOST_PP_FOR_552(s, p, o, m) BOOST_PP_FOR_552_C(BOOST_PP_BOOL(p(553, s)), s, p, o, m) +# define BOOST_PP_FOR_553(s, p, o, m) BOOST_PP_FOR_553_C(BOOST_PP_BOOL(p(554, s)), s, p, o, m) +# define BOOST_PP_FOR_554(s, p, o, m) BOOST_PP_FOR_554_C(BOOST_PP_BOOL(p(555, s)), s, p, o, m) +# define BOOST_PP_FOR_555(s, p, o, m) BOOST_PP_FOR_555_C(BOOST_PP_BOOL(p(556, s)), s, p, o, m) +# define BOOST_PP_FOR_556(s, p, o, m) BOOST_PP_FOR_556_C(BOOST_PP_BOOL(p(557, s)), s, p, o, m) +# define BOOST_PP_FOR_557(s, p, o, m) BOOST_PP_FOR_557_C(BOOST_PP_BOOL(p(558, s)), s, p, o, m) +# define BOOST_PP_FOR_558(s, p, o, m) BOOST_PP_FOR_558_C(BOOST_PP_BOOL(p(559, s)), s, p, o, m) +# define BOOST_PP_FOR_559(s, p, o, m) BOOST_PP_FOR_559_C(BOOST_PP_BOOL(p(560, s)), s, p, o, m) +# define BOOST_PP_FOR_560(s, p, o, m) BOOST_PP_FOR_560_C(BOOST_PP_BOOL(p(561, s)), s, p, o, m) +# define BOOST_PP_FOR_561(s, p, o, m) BOOST_PP_FOR_561_C(BOOST_PP_BOOL(p(562, s)), s, p, o, m) +# define BOOST_PP_FOR_562(s, p, o, m) BOOST_PP_FOR_562_C(BOOST_PP_BOOL(p(563, s)), s, p, o, m) +# define BOOST_PP_FOR_563(s, p, o, m) BOOST_PP_FOR_563_C(BOOST_PP_BOOL(p(564, s)), s, p, o, m) +# define BOOST_PP_FOR_564(s, p, o, m) BOOST_PP_FOR_564_C(BOOST_PP_BOOL(p(565, s)), s, p, o, m) +# define BOOST_PP_FOR_565(s, p, o, m) BOOST_PP_FOR_565_C(BOOST_PP_BOOL(p(566, s)), s, p, o, m) +# define BOOST_PP_FOR_566(s, p, o, m) BOOST_PP_FOR_566_C(BOOST_PP_BOOL(p(567, s)), s, p, o, m) +# define BOOST_PP_FOR_567(s, p, o, m) BOOST_PP_FOR_567_C(BOOST_PP_BOOL(p(568, s)), s, p, o, m) +# define BOOST_PP_FOR_568(s, p, o, m) BOOST_PP_FOR_568_C(BOOST_PP_BOOL(p(569, s)), s, p, o, m) +# define BOOST_PP_FOR_569(s, p, o, m) BOOST_PP_FOR_569_C(BOOST_PP_BOOL(p(570, s)), s, p, o, m) +# define BOOST_PP_FOR_570(s, p, o, m) BOOST_PP_FOR_570_C(BOOST_PP_BOOL(p(571, s)), s, p, o, m) +# define BOOST_PP_FOR_571(s, p, o, m) BOOST_PP_FOR_571_C(BOOST_PP_BOOL(p(572, s)), s, p, o, m) +# define BOOST_PP_FOR_572(s, p, o, m) BOOST_PP_FOR_572_C(BOOST_PP_BOOL(p(573, s)), s, p, o, m) +# define BOOST_PP_FOR_573(s, p, o, m) BOOST_PP_FOR_573_C(BOOST_PP_BOOL(p(574, s)), s, p, o, m) +# define BOOST_PP_FOR_574(s, p, o, m) BOOST_PP_FOR_574_C(BOOST_PP_BOOL(p(575, s)), s, p, o, m) +# define BOOST_PP_FOR_575(s, p, o, m) BOOST_PP_FOR_575_C(BOOST_PP_BOOL(p(576, s)), s, p, o, m) +# define BOOST_PP_FOR_576(s, p, o, m) BOOST_PP_FOR_576_C(BOOST_PP_BOOL(p(577, s)), s, p, o, m) +# define BOOST_PP_FOR_577(s, p, o, m) BOOST_PP_FOR_577_C(BOOST_PP_BOOL(p(578, s)), s, p, o, m) +# define BOOST_PP_FOR_578(s, p, o, m) BOOST_PP_FOR_578_C(BOOST_PP_BOOL(p(579, s)), s, p, o, m) +# define BOOST_PP_FOR_579(s, p, o, m) BOOST_PP_FOR_579_C(BOOST_PP_BOOL(p(580, s)), s, p, o, m) +# define BOOST_PP_FOR_580(s, p, o, m) BOOST_PP_FOR_580_C(BOOST_PP_BOOL(p(581, s)), s, p, o, m) +# define BOOST_PP_FOR_581(s, p, o, m) BOOST_PP_FOR_581_C(BOOST_PP_BOOL(p(582, s)), s, p, o, m) +# define BOOST_PP_FOR_582(s, p, o, m) BOOST_PP_FOR_582_C(BOOST_PP_BOOL(p(583, s)), s, p, o, m) +# define BOOST_PP_FOR_583(s, p, o, m) BOOST_PP_FOR_583_C(BOOST_PP_BOOL(p(584, s)), s, p, o, m) +# define BOOST_PP_FOR_584(s, p, o, m) BOOST_PP_FOR_584_C(BOOST_PP_BOOL(p(585, s)), s, p, o, m) +# define BOOST_PP_FOR_585(s, p, o, m) BOOST_PP_FOR_585_C(BOOST_PP_BOOL(p(586, s)), s, p, o, m) +# define BOOST_PP_FOR_586(s, p, o, m) BOOST_PP_FOR_586_C(BOOST_PP_BOOL(p(587, s)), s, p, o, m) +# define BOOST_PP_FOR_587(s, p, o, m) BOOST_PP_FOR_587_C(BOOST_PP_BOOL(p(588, s)), s, p, o, m) +# define BOOST_PP_FOR_588(s, p, o, m) BOOST_PP_FOR_588_C(BOOST_PP_BOOL(p(589, s)), s, p, o, m) +# define BOOST_PP_FOR_589(s, p, o, m) BOOST_PP_FOR_589_C(BOOST_PP_BOOL(p(590, s)), s, p, o, m) +# define BOOST_PP_FOR_590(s, p, o, m) BOOST_PP_FOR_590_C(BOOST_PP_BOOL(p(591, s)), s, p, o, m) +# define BOOST_PP_FOR_591(s, p, o, m) BOOST_PP_FOR_591_C(BOOST_PP_BOOL(p(592, s)), s, p, o, m) +# define BOOST_PP_FOR_592(s, p, o, m) BOOST_PP_FOR_592_C(BOOST_PP_BOOL(p(593, s)), s, p, o, m) +# define BOOST_PP_FOR_593(s, p, o, m) BOOST_PP_FOR_593_C(BOOST_PP_BOOL(p(594, s)), s, p, o, m) +# define BOOST_PP_FOR_594(s, p, o, m) BOOST_PP_FOR_594_C(BOOST_PP_BOOL(p(595, s)), s, p, o, m) +# define BOOST_PP_FOR_595(s, p, o, m) BOOST_PP_FOR_595_C(BOOST_PP_BOOL(p(596, s)), s, p, o, m) +# define BOOST_PP_FOR_596(s, p, o, m) BOOST_PP_FOR_596_C(BOOST_PP_BOOL(p(597, s)), s, p, o, m) +# define BOOST_PP_FOR_597(s, p, o, m) BOOST_PP_FOR_597_C(BOOST_PP_BOOL(p(598, s)), s, p, o, m) +# define BOOST_PP_FOR_598(s, p, o, m) BOOST_PP_FOR_598_C(BOOST_PP_BOOL(p(599, s)), s, p, o, m) +# define BOOST_PP_FOR_599(s, p, o, m) BOOST_PP_FOR_599_C(BOOST_PP_BOOL(p(600, s)), s, p, o, m) +# define BOOST_PP_FOR_600(s, p, o, m) BOOST_PP_FOR_600_C(BOOST_PP_BOOL(p(601, s)), s, p, o, m) +# define BOOST_PP_FOR_601(s, p, o, m) BOOST_PP_FOR_601_C(BOOST_PP_BOOL(p(602, s)), s, p, o, m) +# define BOOST_PP_FOR_602(s, p, o, m) BOOST_PP_FOR_602_C(BOOST_PP_BOOL(p(603, s)), s, p, o, m) +# define BOOST_PP_FOR_603(s, p, o, m) BOOST_PP_FOR_603_C(BOOST_PP_BOOL(p(604, s)), s, p, o, m) +# define BOOST_PP_FOR_604(s, p, o, m) BOOST_PP_FOR_604_C(BOOST_PP_BOOL(p(605, s)), s, p, o, m) +# define BOOST_PP_FOR_605(s, p, o, m) BOOST_PP_FOR_605_C(BOOST_PP_BOOL(p(606, s)), s, p, o, m) +# define BOOST_PP_FOR_606(s, p, o, m) BOOST_PP_FOR_606_C(BOOST_PP_BOOL(p(607, s)), s, p, o, m) +# define BOOST_PP_FOR_607(s, p, o, m) BOOST_PP_FOR_607_C(BOOST_PP_BOOL(p(608, s)), s, p, o, m) +# define BOOST_PP_FOR_608(s, p, o, m) BOOST_PP_FOR_608_C(BOOST_PP_BOOL(p(609, s)), s, p, o, m) +# define BOOST_PP_FOR_609(s, p, o, m) BOOST_PP_FOR_609_C(BOOST_PP_BOOL(p(610, s)), s, p, o, m) +# define BOOST_PP_FOR_610(s, p, o, m) BOOST_PP_FOR_610_C(BOOST_PP_BOOL(p(611, s)), s, p, o, m) +# define BOOST_PP_FOR_611(s, p, o, m) BOOST_PP_FOR_611_C(BOOST_PP_BOOL(p(612, s)), s, p, o, m) +# define BOOST_PP_FOR_612(s, p, o, m) BOOST_PP_FOR_612_C(BOOST_PP_BOOL(p(613, s)), s, p, o, m) +# define BOOST_PP_FOR_613(s, p, o, m) BOOST_PP_FOR_613_C(BOOST_PP_BOOL(p(614, s)), s, p, o, m) +# define BOOST_PP_FOR_614(s, p, o, m) BOOST_PP_FOR_614_C(BOOST_PP_BOOL(p(615, s)), s, p, o, m) +# define BOOST_PP_FOR_615(s, p, o, m) BOOST_PP_FOR_615_C(BOOST_PP_BOOL(p(616, s)), s, p, o, m) +# define BOOST_PP_FOR_616(s, p, o, m) BOOST_PP_FOR_616_C(BOOST_PP_BOOL(p(617, s)), s, p, o, m) +# define BOOST_PP_FOR_617(s, p, o, m) BOOST_PP_FOR_617_C(BOOST_PP_BOOL(p(618, s)), s, p, o, m) +# define BOOST_PP_FOR_618(s, p, o, m) BOOST_PP_FOR_618_C(BOOST_PP_BOOL(p(619, s)), s, p, o, m) +# define BOOST_PP_FOR_619(s, p, o, m) BOOST_PP_FOR_619_C(BOOST_PP_BOOL(p(620, s)), s, p, o, m) +# define BOOST_PP_FOR_620(s, p, o, m) BOOST_PP_FOR_620_C(BOOST_PP_BOOL(p(621, s)), s, p, o, m) +# define BOOST_PP_FOR_621(s, p, o, m) BOOST_PP_FOR_621_C(BOOST_PP_BOOL(p(622, s)), s, p, o, m) +# define BOOST_PP_FOR_622(s, p, o, m) BOOST_PP_FOR_622_C(BOOST_PP_BOOL(p(623, s)), s, p, o, m) +# define BOOST_PP_FOR_623(s, p, o, m) BOOST_PP_FOR_623_C(BOOST_PP_BOOL(p(624, s)), s, p, o, m) +# define BOOST_PP_FOR_624(s, p, o, m) BOOST_PP_FOR_624_C(BOOST_PP_BOOL(p(625, s)), s, p, o, m) +# define BOOST_PP_FOR_625(s, p, o, m) BOOST_PP_FOR_625_C(BOOST_PP_BOOL(p(626, s)), s, p, o, m) +# define BOOST_PP_FOR_626(s, p, o, m) BOOST_PP_FOR_626_C(BOOST_PP_BOOL(p(627, s)), s, p, o, m) +# define BOOST_PP_FOR_627(s, p, o, m) BOOST_PP_FOR_627_C(BOOST_PP_BOOL(p(628, s)), s, p, o, m) +# define BOOST_PP_FOR_628(s, p, o, m) BOOST_PP_FOR_628_C(BOOST_PP_BOOL(p(629, s)), s, p, o, m) +# define BOOST_PP_FOR_629(s, p, o, m) BOOST_PP_FOR_629_C(BOOST_PP_BOOL(p(630, s)), s, p, o, m) +# define BOOST_PP_FOR_630(s, p, o, m) BOOST_PP_FOR_630_C(BOOST_PP_BOOL(p(631, s)), s, p, o, m) +# define BOOST_PP_FOR_631(s, p, o, m) BOOST_PP_FOR_631_C(BOOST_PP_BOOL(p(632, s)), s, p, o, m) +# define BOOST_PP_FOR_632(s, p, o, m) BOOST_PP_FOR_632_C(BOOST_PP_BOOL(p(633, s)), s, p, o, m) +# define BOOST_PP_FOR_633(s, p, o, m) BOOST_PP_FOR_633_C(BOOST_PP_BOOL(p(634, s)), s, p, o, m) +# define BOOST_PP_FOR_634(s, p, o, m) BOOST_PP_FOR_634_C(BOOST_PP_BOOL(p(635, s)), s, p, o, m) +# define BOOST_PP_FOR_635(s, p, o, m) BOOST_PP_FOR_635_C(BOOST_PP_BOOL(p(636, s)), s, p, o, m) +# define BOOST_PP_FOR_636(s, p, o, m) BOOST_PP_FOR_636_C(BOOST_PP_BOOL(p(637, s)), s, p, o, m) +# define BOOST_PP_FOR_637(s, p, o, m) BOOST_PP_FOR_637_C(BOOST_PP_BOOL(p(638, s)), s, p, o, m) +# define BOOST_PP_FOR_638(s, p, o, m) BOOST_PP_FOR_638_C(BOOST_PP_BOOL(p(639, s)), s, p, o, m) +# define BOOST_PP_FOR_639(s, p, o, m) BOOST_PP_FOR_639_C(BOOST_PP_BOOL(p(640, s)), s, p, o, m) +# define BOOST_PP_FOR_640(s, p, o, m) BOOST_PP_FOR_640_C(BOOST_PP_BOOL(p(641, s)), s, p, o, m) +# define BOOST_PP_FOR_641(s, p, o, m) BOOST_PP_FOR_641_C(BOOST_PP_BOOL(p(642, s)), s, p, o, m) +# define BOOST_PP_FOR_642(s, p, o, m) BOOST_PP_FOR_642_C(BOOST_PP_BOOL(p(643, s)), s, p, o, m) +# define BOOST_PP_FOR_643(s, p, o, m) BOOST_PP_FOR_643_C(BOOST_PP_BOOL(p(644, s)), s, p, o, m) +# define BOOST_PP_FOR_644(s, p, o, m) BOOST_PP_FOR_644_C(BOOST_PP_BOOL(p(645, s)), s, p, o, m) +# define BOOST_PP_FOR_645(s, p, o, m) BOOST_PP_FOR_645_C(BOOST_PP_BOOL(p(646, s)), s, p, o, m) +# define BOOST_PP_FOR_646(s, p, o, m) BOOST_PP_FOR_646_C(BOOST_PP_BOOL(p(647, s)), s, p, o, m) +# define BOOST_PP_FOR_647(s, p, o, m) BOOST_PP_FOR_647_C(BOOST_PP_BOOL(p(648, s)), s, p, o, m) +# define BOOST_PP_FOR_648(s, p, o, m) BOOST_PP_FOR_648_C(BOOST_PP_BOOL(p(649, s)), s, p, o, m) +# define BOOST_PP_FOR_649(s, p, o, m) BOOST_PP_FOR_649_C(BOOST_PP_BOOL(p(650, s)), s, p, o, m) +# define BOOST_PP_FOR_650(s, p, o, m) BOOST_PP_FOR_650_C(BOOST_PP_BOOL(p(651, s)), s, p, o, m) +# define BOOST_PP_FOR_651(s, p, o, m) BOOST_PP_FOR_651_C(BOOST_PP_BOOL(p(652, s)), s, p, o, m) +# define BOOST_PP_FOR_652(s, p, o, m) BOOST_PP_FOR_652_C(BOOST_PP_BOOL(p(653, s)), s, p, o, m) +# define BOOST_PP_FOR_653(s, p, o, m) BOOST_PP_FOR_653_C(BOOST_PP_BOOL(p(654, s)), s, p, o, m) +# define BOOST_PP_FOR_654(s, p, o, m) BOOST_PP_FOR_654_C(BOOST_PP_BOOL(p(655, s)), s, p, o, m) +# define BOOST_PP_FOR_655(s, p, o, m) BOOST_PP_FOR_655_C(BOOST_PP_BOOL(p(656, s)), s, p, o, m) +# define BOOST_PP_FOR_656(s, p, o, m) BOOST_PP_FOR_656_C(BOOST_PP_BOOL(p(657, s)), s, p, o, m) +# define BOOST_PP_FOR_657(s, p, o, m) BOOST_PP_FOR_657_C(BOOST_PP_BOOL(p(658, s)), s, p, o, m) +# define BOOST_PP_FOR_658(s, p, o, m) BOOST_PP_FOR_658_C(BOOST_PP_BOOL(p(659, s)), s, p, o, m) +# define BOOST_PP_FOR_659(s, p, o, m) BOOST_PP_FOR_659_C(BOOST_PP_BOOL(p(660, s)), s, p, o, m) +# define BOOST_PP_FOR_660(s, p, o, m) BOOST_PP_FOR_660_C(BOOST_PP_BOOL(p(661, s)), s, p, o, m) +# define BOOST_PP_FOR_661(s, p, o, m) BOOST_PP_FOR_661_C(BOOST_PP_BOOL(p(662, s)), s, p, o, m) +# define BOOST_PP_FOR_662(s, p, o, m) BOOST_PP_FOR_662_C(BOOST_PP_BOOL(p(663, s)), s, p, o, m) +# define BOOST_PP_FOR_663(s, p, o, m) BOOST_PP_FOR_663_C(BOOST_PP_BOOL(p(664, s)), s, p, o, m) +# define BOOST_PP_FOR_664(s, p, o, m) BOOST_PP_FOR_664_C(BOOST_PP_BOOL(p(665, s)), s, p, o, m) +# define BOOST_PP_FOR_665(s, p, o, m) BOOST_PP_FOR_665_C(BOOST_PP_BOOL(p(666, s)), s, p, o, m) +# define BOOST_PP_FOR_666(s, p, o, m) BOOST_PP_FOR_666_C(BOOST_PP_BOOL(p(667, s)), s, p, o, m) +# define BOOST_PP_FOR_667(s, p, o, m) BOOST_PP_FOR_667_C(BOOST_PP_BOOL(p(668, s)), s, p, o, m) +# define BOOST_PP_FOR_668(s, p, o, m) BOOST_PP_FOR_668_C(BOOST_PP_BOOL(p(669, s)), s, p, o, m) +# define BOOST_PP_FOR_669(s, p, o, m) BOOST_PP_FOR_669_C(BOOST_PP_BOOL(p(670, s)), s, p, o, m) +# define BOOST_PP_FOR_670(s, p, o, m) BOOST_PP_FOR_670_C(BOOST_PP_BOOL(p(671, s)), s, p, o, m) +# define BOOST_PP_FOR_671(s, p, o, m) BOOST_PP_FOR_671_C(BOOST_PP_BOOL(p(672, s)), s, p, o, m) +# define BOOST_PP_FOR_672(s, p, o, m) BOOST_PP_FOR_672_C(BOOST_PP_BOOL(p(673, s)), s, p, o, m) +# define BOOST_PP_FOR_673(s, p, o, m) BOOST_PP_FOR_673_C(BOOST_PP_BOOL(p(674, s)), s, p, o, m) +# define BOOST_PP_FOR_674(s, p, o, m) BOOST_PP_FOR_674_C(BOOST_PP_BOOL(p(675, s)), s, p, o, m) +# define BOOST_PP_FOR_675(s, p, o, m) BOOST_PP_FOR_675_C(BOOST_PP_BOOL(p(676, s)), s, p, o, m) +# define BOOST_PP_FOR_676(s, p, o, m) BOOST_PP_FOR_676_C(BOOST_PP_BOOL(p(677, s)), s, p, o, m) +# define BOOST_PP_FOR_677(s, p, o, m) BOOST_PP_FOR_677_C(BOOST_PP_BOOL(p(678, s)), s, p, o, m) +# define BOOST_PP_FOR_678(s, p, o, m) BOOST_PP_FOR_678_C(BOOST_PP_BOOL(p(679, s)), s, p, o, m) +# define BOOST_PP_FOR_679(s, p, o, m) BOOST_PP_FOR_679_C(BOOST_PP_BOOL(p(680, s)), s, p, o, m) +# define BOOST_PP_FOR_680(s, p, o, m) BOOST_PP_FOR_680_C(BOOST_PP_BOOL(p(681, s)), s, p, o, m) +# define BOOST_PP_FOR_681(s, p, o, m) BOOST_PP_FOR_681_C(BOOST_PP_BOOL(p(682, s)), s, p, o, m) +# define BOOST_PP_FOR_682(s, p, o, m) BOOST_PP_FOR_682_C(BOOST_PP_BOOL(p(683, s)), s, p, o, m) +# define BOOST_PP_FOR_683(s, p, o, m) BOOST_PP_FOR_683_C(BOOST_PP_BOOL(p(684, s)), s, p, o, m) +# define BOOST_PP_FOR_684(s, p, o, m) BOOST_PP_FOR_684_C(BOOST_PP_BOOL(p(685, s)), s, p, o, m) +# define BOOST_PP_FOR_685(s, p, o, m) BOOST_PP_FOR_685_C(BOOST_PP_BOOL(p(686, s)), s, p, o, m) +# define BOOST_PP_FOR_686(s, p, o, m) BOOST_PP_FOR_686_C(BOOST_PP_BOOL(p(687, s)), s, p, o, m) +# define BOOST_PP_FOR_687(s, p, o, m) BOOST_PP_FOR_687_C(BOOST_PP_BOOL(p(688, s)), s, p, o, m) +# define BOOST_PP_FOR_688(s, p, o, m) BOOST_PP_FOR_688_C(BOOST_PP_BOOL(p(689, s)), s, p, o, m) +# define BOOST_PP_FOR_689(s, p, o, m) BOOST_PP_FOR_689_C(BOOST_PP_BOOL(p(690, s)), s, p, o, m) +# define BOOST_PP_FOR_690(s, p, o, m) BOOST_PP_FOR_690_C(BOOST_PP_BOOL(p(691, s)), s, p, o, m) +# define BOOST_PP_FOR_691(s, p, o, m) BOOST_PP_FOR_691_C(BOOST_PP_BOOL(p(692, s)), s, p, o, m) +# define BOOST_PP_FOR_692(s, p, o, m) BOOST_PP_FOR_692_C(BOOST_PP_BOOL(p(693, s)), s, p, o, m) +# define BOOST_PP_FOR_693(s, p, o, m) BOOST_PP_FOR_693_C(BOOST_PP_BOOL(p(694, s)), s, p, o, m) +# define BOOST_PP_FOR_694(s, p, o, m) BOOST_PP_FOR_694_C(BOOST_PP_BOOL(p(695, s)), s, p, o, m) +# define BOOST_PP_FOR_695(s, p, o, m) BOOST_PP_FOR_695_C(BOOST_PP_BOOL(p(696, s)), s, p, o, m) +# define BOOST_PP_FOR_696(s, p, o, m) BOOST_PP_FOR_696_C(BOOST_PP_BOOL(p(697, s)), s, p, o, m) +# define BOOST_PP_FOR_697(s, p, o, m) BOOST_PP_FOR_697_C(BOOST_PP_BOOL(p(698, s)), s, p, o, m) +# define BOOST_PP_FOR_698(s, p, o, m) BOOST_PP_FOR_698_C(BOOST_PP_BOOL(p(699, s)), s, p, o, m) +# define BOOST_PP_FOR_699(s, p, o, m) BOOST_PP_FOR_699_C(BOOST_PP_BOOL(p(700, s)), s, p, o, m) +# define BOOST_PP_FOR_700(s, p, o, m) BOOST_PP_FOR_700_C(BOOST_PP_BOOL(p(701, s)), s, p, o, m) +# define BOOST_PP_FOR_701(s, p, o, m) BOOST_PP_FOR_701_C(BOOST_PP_BOOL(p(702, s)), s, p, o, m) +# define BOOST_PP_FOR_702(s, p, o, m) BOOST_PP_FOR_702_C(BOOST_PP_BOOL(p(703, s)), s, p, o, m) +# define BOOST_PP_FOR_703(s, p, o, m) BOOST_PP_FOR_703_C(BOOST_PP_BOOL(p(704, s)), s, p, o, m) +# define BOOST_PP_FOR_704(s, p, o, m) BOOST_PP_FOR_704_C(BOOST_PP_BOOL(p(705, s)), s, p, o, m) +# define BOOST_PP_FOR_705(s, p, o, m) BOOST_PP_FOR_705_C(BOOST_PP_BOOL(p(706, s)), s, p, o, m) +# define BOOST_PP_FOR_706(s, p, o, m) BOOST_PP_FOR_706_C(BOOST_PP_BOOL(p(707, s)), s, p, o, m) +# define BOOST_PP_FOR_707(s, p, o, m) BOOST_PP_FOR_707_C(BOOST_PP_BOOL(p(708, s)), s, p, o, m) +# define BOOST_PP_FOR_708(s, p, o, m) BOOST_PP_FOR_708_C(BOOST_PP_BOOL(p(709, s)), s, p, o, m) +# define BOOST_PP_FOR_709(s, p, o, m) BOOST_PP_FOR_709_C(BOOST_PP_BOOL(p(710, s)), s, p, o, m) +# define BOOST_PP_FOR_710(s, p, o, m) BOOST_PP_FOR_710_C(BOOST_PP_BOOL(p(711, s)), s, p, o, m) +# define BOOST_PP_FOR_711(s, p, o, m) BOOST_PP_FOR_711_C(BOOST_PP_BOOL(p(712, s)), s, p, o, m) +# define BOOST_PP_FOR_712(s, p, o, m) BOOST_PP_FOR_712_C(BOOST_PP_BOOL(p(713, s)), s, p, o, m) +# define BOOST_PP_FOR_713(s, p, o, m) BOOST_PP_FOR_713_C(BOOST_PP_BOOL(p(714, s)), s, p, o, m) +# define BOOST_PP_FOR_714(s, p, o, m) BOOST_PP_FOR_714_C(BOOST_PP_BOOL(p(715, s)), s, p, o, m) +# define BOOST_PP_FOR_715(s, p, o, m) BOOST_PP_FOR_715_C(BOOST_PP_BOOL(p(716, s)), s, p, o, m) +# define BOOST_PP_FOR_716(s, p, o, m) BOOST_PP_FOR_716_C(BOOST_PP_BOOL(p(717, s)), s, p, o, m) +# define BOOST_PP_FOR_717(s, p, o, m) BOOST_PP_FOR_717_C(BOOST_PP_BOOL(p(718, s)), s, p, o, m) +# define BOOST_PP_FOR_718(s, p, o, m) BOOST_PP_FOR_718_C(BOOST_PP_BOOL(p(719, s)), s, p, o, m) +# define BOOST_PP_FOR_719(s, p, o, m) BOOST_PP_FOR_719_C(BOOST_PP_BOOL(p(720, s)), s, p, o, m) +# define BOOST_PP_FOR_720(s, p, o, m) BOOST_PP_FOR_720_C(BOOST_PP_BOOL(p(721, s)), s, p, o, m) +# define BOOST_PP_FOR_721(s, p, o, m) BOOST_PP_FOR_721_C(BOOST_PP_BOOL(p(722, s)), s, p, o, m) +# define BOOST_PP_FOR_722(s, p, o, m) BOOST_PP_FOR_722_C(BOOST_PP_BOOL(p(723, s)), s, p, o, m) +# define BOOST_PP_FOR_723(s, p, o, m) BOOST_PP_FOR_723_C(BOOST_PP_BOOL(p(724, s)), s, p, o, m) +# define BOOST_PP_FOR_724(s, p, o, m) BOOST_PP_FOR_724_C(BOOST_PP_BOOL(p(725, s)), s, p, o, m) +# define BOOST_PP_FOR_725(s, p, o, m) BOOST_PP_FOR_725_C(BOOST_PP_BOOL(p(726, s)), s, p, o, m) +# define BOOST_PP_FOR_726(s, p, o, m) BOOST_PP_FOR_726_C(BOOST_PP_BOOL(p(727, s)), s, p, o, m) +# define BOOST_PP_FOR_727(s, p, o, m) BOOST_PP_FOR_727_C(BOOST_PP_BOOL(p(728, s)), s, p, o, m) +# define BOOST_PP_FOR_728(s, p, o, m) BOOST_PP_FOR_728_C(BOOST_PP_BOOL(p(729, s)), s, p, o, m) +# define BOOST_PP_FOR_729(s, p, o, m) BOOST_PP_FOR_729_C(BOOST_PP_BOOL(p(730, s)), s, p, o, m) +# define BOOST_PP_FOR_730(s, p, o, m) BOOST_PP_FOR_730_C(BOOST_PP_BOOL(p(731, s)), s, p, o, m) +# define BOOST_PP_FOR_731(s, p, o, m) BOOST_PP_FOR_731_C(BOOST_PP_BOOL(p(732, s)), s, p, o, m) +# define BOOST_PP_FOR_732(s, p, o, m) BOOST_PP_FOR_732_C(BOOST_PP_BOOL(p(733, s)), s, p, o, m) +# define BOOST_PP_FOR_733(s, p, o, m) BOOST_PP_FOR_733_C(BOOST_PP_BOOL(p(734, s)), s, p, o, m) +# define BOOST_PP_FOR_734(s, p, o, m) BOOST_PP_FOR_734_C(BOOST_PP_BOOL(p(735, s)), s, p, o, m) +# define BOOST_PP_FOR_735(s, p, o, m) BOOST_PP_FOR_735_C(BOOST_PP_BOOL(p(736, s)), s, p, o, m) +# define BOOST_PP_FOR_736(s, p, o, m) BOOST_PP_FOR_736_C(BOOST_PP_BOOL(p(737, s)), s, p, o, m) +# define BOOST_PP_FOR_737(s, p, o, m) BOOST_PP_FOR_737_C(BOOST_PP_BOOL(p(738, s)), s, p, o, m) +# define BOOST_PP_FOR_738(s, p, o, m) BOOST_PP_FOR_738_C(BOOST_PP_BOOL(p(739, s)), s, p, o, m) +# define BOOST_PP_FOR_739(s, p, o, m) BOOST_PP_FOR_739_C(BOOST_PP_BOOL(p(740, s)), s, p, o, m) +# define BOOST_PP_FOR_740(s, p, o, m) BOOST_PP_FOR_740_C(BOOST_PP_BOOL(p(741, s)), s, p, o, m) +# define BOOST_PP_FOR_741(s, p, o, m) BOOST_PP_FOR_741_C(BOOST_PP_BOOL(p(742, s)), s, p, o, m) +# define BOOST_PP_FOR_742(s, p, o, m) BOOST_PP_FOR_742_C(BOOST_PP_BOOL(p(743, s)), s, p, o, m) +# define BOOST_PP_FOR_743(s, p, o, m) BOOST_PP_FOR_743_C(BOOST_PP_BOOL(p(744, s)), s, p, o, m) +# define BOOST_PP_FOR_744(s, p, o, m) BOOST_PP_FOR_744_C(BOOST_PP_BOOL(p(745, s)), s, p, o, m) +# define BOOST_PP_FOR_745(s, p, o, m) BOOST_PP_FOR_745_C(BOOST_PP_BOOL(p(746, s)), s, p, o, m) +# define BOOST_PP_FOR_746(s, p, o, m) BOOST_PP_FOR_746_C(BOOST_PP_BOOL(p(747, s)), s, p, o, m) +# define BOOST_PP_FOR_747(s, p, o, m) BOOST_PP_FOR_747_C(BOOST_PP_BOOL(p(748, s)), s, p, o, m) +# define BOOST_PP_FOR_748(s, p, o, m) BOOST_PP_FOR_748_C(BOOST_PP_BOOL(p(749, s)), s, p, o, m) +# define BOOST_PP_FOR_749(s, p, o, m) BOOST_PP_FOR_749_C(BOOST_PP_BOOL(p(750, s)), s, p, o, m) +# define BOOST_PP_FOR_750(s, p, o, m) BOOST_PP_FOR_750_C(BOOST_PP_BOOL(p(751, s)), s, p, o, m) +# define BOOST_PP_FOR_751(s, p, o, m) BOOST_PP_FOR_751_C(BOOST_PP_BOOL(p(752, s)), s, p, o, m) +# define BOOST_PP_FOR_752(s, p, o, m) BOOST_PP_FOR_752_C(BOOST_PP_BOOL(p(753, s)), s, p, o, m) +# define BOOST_PP_FOR_753(s, p, o, m) BOOST_PP_FOR_753_C(BOOST_PP_BOOL(p(754, s)), s, p, o, m) +# define BOOST_PP_FOR_754(s, p, o, m) BOOST_PP_FOR_754_C(BOOST_PP_BOOL(p(755, s)), s, p, o, m) +# define BOOST_PP_FOR_755(s, p, o, m) BOOST_PP_FOR_755_C(BOOST_PP_BOOL(p(756, s)), s, p, o, m) +# define BOOST_PP_FOR_756(s, p, o, m) BOOST_PP_FOR_756_C(BOOST_PP_BOOL(p(757, s)), s, p, o, m) +# define BOOST_PP_FOR_757(s, p, o, m) BOOST_PP_FOR_757_C(BOOST_PP_BOOL(p(758, s)), s, p, o, m) +# define BOOST_PP_FOR_758(s, p, o, m) BOOST_PP_FOR_758_C(BOOST_PP_BOOL(p(759, s)), s, p, o, m) +# define BOOST_PP_FOR_759(s, p, o, m) BOOST_PP_FOR_759_C(BOOST_PP_BOOL(p(760, s)), s, p, o, m) +# define BOOST_PP_FOR_760(s, p, o, m) BOOST_PP_FOR_760_C(BOOST_PP_BOOL(p(761, s)), s, p, o, m) +# define BOOST_PP_FOR_761(s, p, o, m) BOOST_PP_FOR_761_C(BOOST_PP_BOOL(p(762, s)), s, p, o, m) +# define BOOST_PP_FOR_762(s, p, o, m) BOOST_PP_FOR_762_C(BOOST_PP_BOOL(p(763, s)), s, p, o, m) +# define BOOST_PP_FOR_763(s, p, o, m) BOOST_PP_FOR_763_C(BOOST_PP_BOOL(p(764, s)), s, p, o, m) +# define BOOST_PP_FOR_764(s, p, o, m) BOOST_PP_FOR_764_C(BOOST_PP_BOOL(p(765, s)), s, p, o, m) +# define BOOST_PP_FOR_765(s, p, o, m) BOOST_PP_FOR_765_C(BOOST_PP_BOOL(p(766, s)), s, p, o, m) +# define BOOST_PP_FOR_766(s, p, o, m) BOOST_PP_FOR_766_C(BOOST_PP_BOOL(p(767, s)), s, p, o, m) +# define BOOST_PP_FOR_767(s, p, o, m) BOOST_PP_FOR_767_C(BOOST_PP_BOOL(p(768, s)), s, p, o, m) +# define BOOST_PP_FOR_768(s, p, o, m) BOOST_PP_FOR_768_C(BOOST_PP_BOOL(p(769, s)), s, p, o, m) +# define BOOST_PP_FOR_769(s, p, o, m) BOOST_PP_FOR_769_C(BOOST_PP_BOOL(p(770, s)), s, p, o, m) +# define BOOST_PP_FOR_770(s, p, o, m) BOOST_PP_FOR_770_C(BOOST_PP_BOOL(p(771, s)), s, p, o, m) +# define BOOST_PP_FOR_771(s, p, o, m) BOOST_PP_FOR_771_C(BOOST_PP_BOOL(p(772, s)), s, p, o, m) +# define BOOST_PP_FOR_772(s, p, o, m) BOOST_PP_FOR_772_C(BOOST_PP_BOOL(p(773, s)), s, p, o, m) +# define BOOST_PP_FOR_773(s, p, o, m) BOOST_PP_FOR_773_C(BOOST_PP_BOOL(p(774, s)), s, p, o, m) +# define BOOST_PP_FOR_774(s, p, o, m) BOOST_PP_FOR_774_C(BOOST_PP_BOOL(p(775, s)), s, p, o, m) +# define BOOST_PP_FOR_775(s, p, o, m) BOOST_PP_FOR_775_C(BOOST_PP_BOOL(p(776, s)), s, p, o, m) +# define BOOST_PP_FOR_776(s, p, o, m) BOOST_PP_FOR_776_C(BOOST_PP_BOOL(p(777, s)), s, p, o, m) +# define BOOST_PP_FOR_777(s, p, o, m) BOOST_PP_FOR_777_C(BOOST_PP_BOOL(p(778, s)), s, p, o, m) +# define BOOST_PP_FOR_778(s, p, o, m) BOOST_PP_FOR_778_C(BOOST_PP_BOOL(p(779, s)), s, p, o, m) +# define BOOST_PP_FOR_779(s, p, o, m) BOOST_PP_FOR_779_C(BOOST_PP_BOOL(p(780, s)), s, p, o, m) +# define BOOST_PP_FOR_780(s, p, o, m) BOOST_PP_FOR_780_C(BOOST_PP_BOOL(p(781, s)), s, p, o, m) +# define BOOST_PP_FOR_781(s, p, o, m) BOOST_PP_FOR_781_C(BOOST_PP_BOOL(p(782, s)), s, p, o, m) +# define BOOST_PP_FOR_782(s, p, o, m) BOOST_PP_FOR_782_C(BOOST_PP_BOOL(p(783, s)), s, p, o, m) +# define BOOST_PP_FOR_783(s, p, o, m) BOOST_PP_FOR_783_C(BOOST_PP_BOOL(p(784, s)), s, p, o, m) +# define BOOST_PP_FOR_784(s, p, o, m) BOOST_PP_FOR_784_C(BOOST_PP_BOOL(p(785, s)), s, p, o, m) +# define BOOST_PP_FOR_785(s, p, o, m) BOOST_PP_FOR_785_C(BOOST_PP_BOOL(p(786, s)), s, p, o, m) +# define BOOST_PP_FOR_786(s, p, o, m) BOOST_PP_FOR_786_C(BOOST_PP_BOOL(p(787, s)), s, p, o, m) +# define BOOST_PP_FOR_787(s, p, o, m) BOOST_PP_FOR_787_C(BOOST_PP_BOOL(p(788, s)), s, p, o, m) +# define BOOST_PP_FOR_788(s, p, o, m) BOOST_PP_FOR_788_C(BOOST_PP_BOOL(p(789, s)), s, p, o, m) +# define BOOST_PP_FOR_789(s, p, o, m) BOOST_PP_FOR_789_C(BOOST_PP_BOOL(p(790, s)), s, p, o, m) +# define BOOST_PP_FOR_790(s, p, o, m) BOOST_PP_FOR_790_C(BOOST_PP_BOOL(p(791, s)), s, p, o, m) +# define BOOST_PP_FOR_791(s, p, o, m) BOOST_PP_FOR_791_C(BOOST_PP_BOOL(p(792, s)), s, p, o, m) +# define BOOST_PP_FOR_792(s, p, o, m) BOOST_PP_FOR_792_C(BOOST_PP_BOOL(p(793, s)), s, p, o, m) +# define BOOST_PP_FOR_793(s, p, o, m) BOOST_PP_FOR_793_C(BOOST_PP_BOOL(p(794, s)), s, p, o, m) +# define BOOST_PP_FOR_794(s, p, o, m) BOOST_PP_FOR_794_C(BOOST_PP_BOOL(p(795, s)), s, p, o, m) +# define BOOST_PP_FOR_795(s, p, o, m) BOOST_PP_FOR_795_C(BOOST_PP_BOOL(p(796, s)), s, p, o, m) +# define BOOST_PP_FOR_796(s, p, o, m) BOOST_PP_FOR_796_C(BOOST_PP_BOOL(p(797, s)), s, p, o, m) +# define BOOST_PP_FOR_797(s, p, o, m) BOOST_PP_FOR_797_C(BOOST_PP_BOOL(p(798, s)), s, p, o, m) +# define BOOST_PP_FOR_798(s, p, o, m) BOOST_PP_FOR_798_C(BOOST_PP_BOOL(p(799, s)), s, p, o, m) +# define BOOST_PP_FOR_799(s, p, o, m) BOOST_PP_FOR_799_C(BOOST_PP_BOOL(p(800, s)), s, p, o, m) +# define BOOST_PP_FOR_800(s, p, o, m) BOOST_PP_FOR_800_C(BOOST_PP_BOOL(p(801, s)), s, p, o, m) +# define BOOST_PP_FOR_801(s, p, o, m) BOOST_PP_FOR_801_C(BOOST_PP_BOOL(p(802, s)), s, p, o, m) +# define BOOST_PP_FOR_802(s, p, o, m) BOOST_PP_FOR_802_C(BOOST_PP_BOOL(p(803, s)), s, p, o, m) +# define BOOST_PP_FOR_803(s, p, o, m) BOOST_PP_FOR_803_C(BOOST_PP_BOOL(p(804, s)), s, p, o, m) +# define BOOST_PP_FOR_804(s, p, o, m) BOOST_PP_FOR_804_C(BOOST_PP_BOOL(p(805, s)), s, p, o, m) +# define BOOST_PP_FOR_805(s, p, o, m) BOOST_PP_FOR_805_C(BOOST_PP_BOOL(p(806, s)), s, p, o, m) +# define BOOST_PP_FOR_806(s, p, o, m) BOOST_PP_FOR_806_C(BOOST_PP_BOOL(p(807, s)), s, p, o, m) +# define BOOST_PP_FOR_807(s, p, o, m) BOOST_PP_FOR_807_C(BOOST_PP_BOOL(p(808, s)), s, p, o, m) +# define BOOST_PP_FOR_808(s, p, o, m) BOOST_PP_FOR_808_C(BOOST_PP_BOOL(p(809, s)), s, p, o, m) +# define BOOST_PP_FOR_809(s, p, o, m) BOOST_PP_FOR_809_C(BOOST_PP_BOOL(p(810, s)), s, p, o, m) +# define BOOST_PP_FOR_810(s, p, o, m) BOOST_PP_FOR_810_C(BOOST_PP_BOOL(p(811, s)), s, p, o, m) +# define BOOST_PP_FOR_811(s, p, o, m) BOOST_PP_FOR_811_C(BOOST_PP_BOOL(p(812, s)), s, p, o, m) +# define BOOST_PP_FOR_812(s, p, o, m) BOOST_PP_FOR_812_C(BOOST_PP_BOOL(p(813, s)), s, p, o, m) +# define BOOST_PP_FOR_813(s, p, o, m) BOOST_PP_FOR_813_C(BOOST_PP_BOOL(p(814, s)), s, p, o, m) +# define BOOST_PP_FOR_814(s, p, o, m) BOOST_PP_FOR_814_C(BOOST_PP_BOOL(p(815, s)), s, p, o, m) +# define BOOST_PP_FOR_815(s, p, o, m) BOOST_PP_FOR_815_C(BOOST_PP_BOOL(p(816, s)), s, p, o, m) +# define BOOST_PP_FOR_816(s, p, o, m) BOOST_PP_FOR_816_C(BOOST_PP_BOOL(p(817, s)), s, p, o, m) +# define BOOST_PP_FOR_817(s, p, o, m) BOOST_PP_FOR_817_C(BOOST_PP_BOOL(p(818, s)), s, p, o, m) +# define BOOST_PP_FOR_818(s, p, o, m) BOOST_PP_FOR_818_C(BOOST_PP_BOOL(p(819, s)), s, p, o, m) +# define BOOST_PP_FOR_819(s, p, o, m) BOOST_PP_FOR_819_C(BOOST_PP_BOOL(p(820, s)), s, p, o, m) +# define BOOST_PP_FOR_820(s, p, o, m) BOOST_PP_FOR_820_C(BOOST_PP_BOOL(p(821, s)), s, p, o, m) +# define BOOST_PP_FOR_821(s, p, o, m) BOOST_PP_FOR_821_C(BOOST_PP_BOOL(p(822, s)), s, p, o, m) +# define BOOST_PP_FOR_822(s, p, o, m) BOOST_PP_FOR_822_C(BOOST_PP_BOOL(p(823, s)), s, p, o, m) +# define BOOST_PP_FOR_823(s, p, o, m) BOOST_PP_FOR_823_C(BOOST_PP_BOOL(p(824, s)), s, p, o, m) +# define BOOST_PP_FOR_824(s, p, o, m) BOOST_PP_FOR_824_C(BOOST_PP_BOOL(p(825, s)), s, p, o, m) +# define BOOST_PP_FOR_825(s, p, o, m) BOOST_PP_FOR_825_C(BOOST_PP_BOOL(p(826, s)), s, p, o, m) +# define BOOST_PP_FOR_826(s, p, o, m) BOOST_PP_FOR_826_C(BOOST_PP_BOOL(p(827, s)), s, p, o, m) +# define BOOST_PP_FOR_827(s, p, o, m) BOOST_PP_FOR_827_C(BOOST_PP_BOOL(p(828, s)), s, p, o, m) +# define BOOST_PP_FOR_828(s, p, o, m) BOOST_PP_FOR_828_C(BOOST_PP_BOOL(p(829, s)), s, p, o, m) +# define BOOST_PP_FOR_829(s, p, o, m) BOOST_PP_FOR_829_C(BOOST_PP_BOOL(p(830, s)), s, p, o, m) +# define BOOST_PP_FOR_830(s, p, o, m) BOOST_PP_FOR_830_C(BOOST_PP_BOOL(p(831, s)), s, p, o, m) +# define BOOST_PP_FOR_831(s, p, o, m) BOOST_PP_FOR_831_C(BOOST_PP_BOOL(p(832, s)), s, p, o, m) +# define BOOST_PP_FOR_832(s, p, o, m) BOOST_PP_FOR_832_C(BOOST_PP_BOOL(p(833, s)), s, p, o, m) +# define BOOST_PP_FOR_833(s, p, o, m) BOOST_PP_FOR_833_C(BOOST_PP_BOOL(p(834, s)), s, p, o, m) +# define BOOST_PP_FOR_834(s, p, o, m) BOOST_PP_FOR_834_C(BOOST_PP_BOOL(p(835, s)), s, p, o, m) +# define BOOST_PP_FOR_835(s, p, o, m) BOOST_PP_FOR_835_C(BOOST_PP_BOOL(p(836, s)), s, p, o, m) +# define BOOST_PP_FOR_836(s, p, o, m) BOOST_PP_FOR_836_C(BOOST_PP_BOOL(p(837, s)), s, p, o, m) +# define BOOST_PP_FOR_837(s, p, o, m) BOOST_PP_FOR_837_C(BOOST_PP_BOOL(p(838, s)), s, p, o, m) +# define BOOST_PP_FOR_838(s, p, o, m) BOOST_PP_FOR_838_C(BOOST_PP_BOOL(p(839, s)), s, p, o, m) +# define BOOST_PP_FOR_839(s, p, o, m) BOOST_PP_FOR_839_C(BOOST_PP_BOOL(p(840, s)), s, p, o, m) +# define BOOST_PP_FOR_840(s, p, o, m) BOOST_PP_FOR_840_C(BOOST_PP_BOOL(p(841, s)), s, p, o, m) +# define BOOST_PP_FOR_841(s, p, o, m) BOOST_PP_FOR_841_C(BOOST_PP_BOOL(p(842, s)), s, p, o, m) +# define BOOST_PP_FOR_842(s, p, o, m) BOOST_PP_FOR_842_C(BOOST_PP_BOOL(p(843, s)), s, p, o, m) +# define BOOST_PP_FOR_843(s, p, o, m) BOOST_PP_FOR_843_C(BOOST_PP_BOOL(p(844, s)), s, p, o, m) +# define BOOST_PP_FOR_844(s, p, o, m) BOOST_PP_FOR_844_C(BOOST_PP_BOOL(p(845, s)), s, p, o, m) +# define BOOST_PP_FOR_845(s, p, o, m) BOOST_PP_FOR_845_C(BOOST_PP_BOOL(p(846, s)), s, p, o, m) +# define BOOST_PP_FOR_846(s, p, o, m) BOOST_PP_FOR_846_C(BOOST_PP_BOOL(p(847, s)), s, p, o, m) +# define BOOST_PP_FOR_847(s, p, o, m) BOOST_PP_FOR_847_C(BOOST_PP_BOOL(p(848, s)), s, p, o, m) +# define BOOST_PP_FOR_848(s, p, o, m) BOOST_PP_FOR_848_C(BOOST_PP_BOOL(p(849, s)), s, p, o, m) +# define BOOST_PP_FOR_849(s, p, o, m) BOOST_PP_FOR_849_C(BOOST_PP_BOOL(p(850, s)), s, p, o, m) +# define BOOST_PP_FOR_850(s, p, o, m) BOOST_PP_FOR_850_C(BOOST_PP_BOOL(p(851, s)), s, p, o, m) +# define BOOST_PP_FOR_851(s, p, o, m) BOOST_PP_FOR_851_C(BOOST_PP_BOOL(p(852, s)), s, p, o, m) +# define BOOST_PP_FOR_852(s, p, o, m) BOOST_PP_FOR_852_C(BOOST_PP_BOOL(p(853, s)), s, p, o, m) +# define BOOST_PP_FOR_853(s, p, o, m) BOOST_PP_FOR_853_C(BOOST_PP_BOOL(p(854, s)), s, p, o, m) +# define BOOST_PP_FOR_854(s, p, o, m) BOOST_PP_FOR_854_C(BOOST_PP_BOOL(p(855, s)), s, p, o, m) +# define BOOST_PP_FOR_855(s, p, o, m) BOOST_PP_FOR_855_C(BOOST_PP_BOOL(p(856, s)), s, p, o, m) +# define BOOST_PP_FOR_856(s, p, o, m) BOOST_PP_FOR_856_C(BOOST_PP_BOOL(p(857, s)), s, p, o, m) +# define BOOST_PP_FOR_857(s, p, o, m) BOOST_PP_FOR_857_C(BOOST_PP_BOOL(p(858, s)), s, p, o, m) +# define BOOST_PP_FOR_858(s, p, o, m) BOOST_PP_FOR_858_C(BOOST_PP_BOOL(p(859, s)), s, p, o, m) +# define BOOST_PP_FOR_859(s, p, o, m) BOOST_PP_FOR_859_C(BOOST_PP_BOOL(p(860, s)), s, p, o, m) +# define BOOST_PP_FOR_860(s, p, o, m) BOOST_PP_FOR_860_C(BOOST_PP_BOOL(p(861, s)), s, p, o, m) +# define BOOST_PP_FOR_861(s, p, o, m) BOOST_PP_FOR_861_C(BOOST_PP_BOOL(p(862, s)), s, p, o, m) +# define BOOST_PP_FOR_862(s, p, o, m) BOOST_PP_FOR_862_C(BOOST_PP_BOOL(p(863, s)), s, p, o, m) +# define BOOST_PP_FOR_863(s, p, o, m) BOOST_PP_FOR_863_C(BOOST_PP_BOOL(p(864, s)), s, p, o, m) +# define BOOST_PP_FOR_864(s, p, o, m) BOOST_PP_FOR_864_C(BOOST_PP_BOOL(p(865, s)), s, p, o, m) +# define BOOST_PP_FOR_865(s, p, o, m) BOOST_PP_FOR_865_C(BOOST_PP_BOOL(p(866, s)), s, p, o, m) +# define BOOST_PP_FOR_866(s, p, o, m) BOOST_PP_FOR_866_C(BOOST_PP_BOOL(p(867, s)), s, p, o, m) +# define BOOST_PP_FOR_867(s, p, o, m) BOOST_PP_FOR_867_C(BOOST_PP_BOOL(p(868, s)), s, p, o, m) +# define BOOST_PP_FOR_868(s, p, o, m) BOOST_PP_FOR_868_C(BOOST_PP_BOOL(p(869, s)), s, p, o, m) +# define BOOST_PP_FOR_869(s, p, o, m) BOOST_PP_FOR_869_C(BOOST_PP_BOOL(p(870, s)), s, p, o, m) +# define BOOST_PP_FOR_870(s, p, o, m) BOOST_PP_FOR_870_C(BOOST_PP_BOOL(p(871, s)), s, p, o, m) +# define BOOST_PP_FOR_871(s, p, o, m) BOOST_PP_FOR_871_C(BOOST_PP_BOOL(p(872, s)), s, p, o, m) +# define BOOST_PP_FOR_872(s, p, o, m) BOOST_PP_FOR_872_C(BOOST_PP_BOOL(p(873, s)), s, p, o, m) +# define BOOST_PP_FOR_873(s, p, o, m) BOOST_PP_FOR_873_C(BOOST_PP_BOOL(p(874, s)), s, p, o, m) +# define BOOST_PP_FOR_874(s, p, o, m) BOOST_PP_FOR_874_C(BOOST_PP_BOOL(p(875, s)), s, p, o, m) +# define BOOST_PP_FOR_875(s, p, o, m) BOOST_PP_FOR_875_C(BOOST_PP_BOOL(p(876, s)), s, p, o, m) +# define BOOST_PP_FOR_876(s, p, o, m) BOOST_PP_FOR_876_C(BOOST_PP_BOOL(p(877, s)), s, p, o, m) +# define BOOST_PP_FOR_877(s, p, o, m) BOOST_PP_FOR_877_C(BOOST_PP_BOOL(p(878, s)), s, p, o, m) +# define BOOST_PP_FOR_878(s, p, o, m) BOOST_PP_FOR_878_C(BOOST_PP_BOOL(p(879, s)), s, p, o, m) +# define BOOST_PP_FOR_879(s, p, o, m) BOOST_PP_FOR_879_C(BOOST_PP_BOOL(p(880, s)), s, p, o, m) +# define BOOST_PP_FOR_880(s, p, o, m) BOOST_PP_FOR_880_C(BOOST_PP_BOOL(p(881, s)), s, p, o, m) +# define BOOST_PP_FOR_881(s, p, o, m) BOOST_PP_FOR_881_C(BOOST_PP_BOOL(p(882, s)), s, p, o, m) +# define BOOST_PP_FOR_882(s, p, o, m) BOOST_PP_FOR_882_C(BOOST_PP_BOOL(p(883, s)), s, p, o, m) +# define BOOST_PP_FOR_883(s, p, o, m) BOOST_PP_FOR_883_C(BOOST_PP_BOOL(p(884, s)), s, p, o, m) +# define BOOST_PP_FOR_884(s, p, o, m) BOOST_PP_FOR_884_C(BOOST_PP_BOOL(p(885, s)), s, p, o, m) +# define BOOST_PP_FOR_885(s, p, o, m) BOOST_PP_FOR_885_C(BOOST_PP_BOOL(p(886, s)), s, p, o, m) +# define BOOST_PP_FOR_886(s, p, o, m) BOOST_PP_FOR_886_C(BOOST_PP_BOOL(p(887, s)), s, p, o, m) +# define BOOST_PP_FOR_887(s, p, o, m) BOOST_PP_FOR_887_C(BOOST_PP_BOOL(p(888, s)), s, p, o, m) +# define BOOST_PP_FOR_888(s, p, o, m) BOOST_PP_FOR_888_C(BOOST_PP_BOOL(p(889, s)), s, p, o, m) +# define BOOST_PP_FOR_889(s, p, o, m) BOOST_PP_FOR_889_C(BOOST_PP_BOOL(p(890, s)), s, p, o, m) +# define BOOST_PP_FOR_890(s, p, o, m) BOOST_PP_FOR_890_C(BOOST_PP_BOOL(p(891, s)), s, p, o, m) +# define BOOST_PP_FOR_891(s, p, o, m) BOOST_PP_FOR_891_C(BOOST_PP_BOOL(p(892, s)), s, p, o, m) +# define BOOST_PP_FOR_892(s, p, o, m) BOOST_PP_FOR_892_C(BOOST_PP_BOOL(p(893, s)), s, p, o, m) +# define BOOST_PP_FOR_893(s, p, o, m) BOOST_PP_FOR_893_C(BOOST_PP_BOOL(p(894, s)), s, p, o, m) +# define BOOST_PP_FOR_894(s, p, o, m) BOOST_PP_FOR_894_C(BOOST_PP_BOOL(p(895, s)), s, p, o, m) +# define BOOST_PP_FOR_895(s, p, o, m) BOOST_PP_FOR_895_C(BOOST_PP_BOOL(p(896, s)), s, p, o, m) +# define BOOST_PP_FOR_896(s, p, o, m) BOOST_PP_FOR_896_C(BOOST_PP_BOOL(p(897, s)), s, p, o, m) +# define BOOST_PP_FOR_897(s, p, o, m) BOOST_PP_FOR_897_C(BOOST_PP_BOOL(p(898, s)), s, p, o, m) +# define BOOST_PP_FOR_898(s, p, o, m) BOOST_PP_FOR_898_C(BOOST_PP_BOOL(p(899, s)), s, p, o, m) +# define BOOST_PP_FOR_899(s, p, o, m) BOOST_PP_FOR_899_C(BOOST_PP_BOOL(p(900, s)), s, p, o, m) +# define BOOST_PP_FOR_900(s, p, o, m) BOOST_PP_FOR_900_C(BOOST_PP_BOOL(p(901, s)), s, p, o, m) +# define BOOST_PP_FOR_901(s, p, o, m) BOOST_PP_FOR_901_C(BOOST_PP_BOOL(p(902, s)), s, p, o, m) +# define BOOST_PP_FOR_902(s, p, o, m) BOOST_PP_FOR_902_C(BOOST_PP_BOOL(p(903, s)), s, p, o, m) +# define BOOST_PP_FOR_903(s, p, o, m) BOOST_PP_FOR_903_C(BOOST_PP_BOOL(p(904, s)), s, p, o, m) +# define BOOST_PP_FOR_904(s, p, o, m) BOOST_PP_FOR_904_C(BOOST_PP_BOOL(p(905, s)), s, p, o, m) +# define BOOST_PP_FOR_905(s, p, o, m) BOOST_PP_FOR_905_C(BOOST_PP_BOOL(p(906, s)), s, p, o, m) +# define BOOST_PP_FOR_906(s, p, o, m) BOOST_PP_FOR_906_C(BOOST_PP_BOOL(p(907, s)), s, p, o, m) +# define BOOST_PP_FOR_907(s, p, o, m) BOOST_PP_FOR_907_C(BOOST_PP_BOOL(p(908, s)), s, p, o, m) +# define BOOST_PP_FOR_908(s, p, o, m) BOOST_PP_FOR_908_C(BOOST_PP_BOOL(p(909, s)), s, p, o, m) +# define BOOST_PP_FOR_909(s, p, o, m) BOOST_PP_FOR_909_C(BOOST_PP_BOOL(p(910, s)), s, p, o, m) +# define BOOST_PP_FOR_910(s, p, o, m) BOOST_PP_FOR_910_C(BOOST_PP_BOOL(p(911, s)), s, p, o, m) +# define BOOST_PP_FOR_911(s, p, o, m) BOOST_PP_FOR_911_C(BOOST_PP_BOOL(p(912, s)), s, p, o, m) +# define BOOST_PP_FOR_912(s, p, o, m) BOOST_PP_FOR_912_C(BOOST_PP_BOOL(p(913, s)), s, p, o, m) +# define BOOST_PP_FOR_913(s, p, o, m) BOOST_PP_FOR_913_C(BOOST_PP_BOOL(p(914, s)), s, p, o, m) +# define BOOST_PP_FOR_914(s, p, o, m) BOOST_PP_FOR_914_C(BOOST_PP_BOOL(p(915, s)), s, p, o, m) +# define BOOST_PP_FOR_915(s, p, o, m) BOOST_PP_FOR_915_C(BOOST_PP_BOOL(p(916, s)), s, p, o, m) +# define BOOST_PP_FOR_916(s, p, o, m) BOOST_PP_FOR_916_C(BOOST_PP_BOOL(p(917, s)), s, p, o, m) +# define BOOST_PP_FOR_917(s, p, o, m) BOOST_PP_FOR_917_C(BOOST_PP_BOOL(p(918, s)), s, p, o, m) +# define BOOST_PP_FOR_918(s, p, o, m) BOOST_PP_FOR_918_C(BOOST_PP_BOOL(p(919, s)), s, p, o, m) +# define BOOST_PP_FOR_919(s, p, o, m) BOOST_PP_FOR_919_C(BOOST_PP_BOOL(p(920, s)), s, p, o, m) +# define BOOST_PP_FOR_920(s, p, o, m) BOOST_PP_FOR_920_C(BOOST_PP_BOOL(p(921, s)), s, p, o, m) +# define BOOST_PP_FOR_921(s, p, o, m) BOOST_PP_FOR_921_C(BOOST_PP_BOOL(p(922, s)), s, p, o, m) +# define BOOST_PP_FOR_922(s, p, o, m) BOOST_PP_FOR_922_C(BOOST_PP_BOOL(p(923, s)), s, p, o, m) +# define BOOST_PP_FOR_923(s, p, o, m) BOOST_PP_FOR_923_C(BOOST_PP_BOOL(p(924, s)), s, p, o, m) +# define BOOST_PP_FOR_924(s, p, o, m) BOOST_PP_FOR_924_C(BOOST_PP_BOOL(p(925, s)), s, p, o, m) +# define BOOST_PP_FOR_925(s, p, o, m) BOOST_PP_FOR_925_C(BOOST_PP_BOOL(p(926, s)), s, p, o, m) +# define BOOST_PP_FOR_926(s, p, o, m) BOOST_PP_FOR_926_C(BOOST_PP_BOOL(p(927, s)), s, p, o, m) +# define BOOST_PP_FOR_927(s, p, o, m) BOOST_PP_FOR_927_C(BOOST_PP_BOOL(p(928, s)), s, p, o, m) +# define BOOST_PP_FOR_928(s, p, o, m) BOOST_PP_FOR_928_C(BOOST_PP_BOOL(p(929, s)), s, p, o, m) +# define BOOST_PP_FOR_929(s, p, o, m) BOOST_PP_FOR_929_C(BOOST_PP_BOOL(p(930, s)), s, p, o, m) +# define BOOST_PP_FOR_930(s, p, o, m) BOOST_PP_FOR_930_C(BOOST_PP_BOOL(p(931, s)), s, p, o, m) +# define BOOST_PP_FOR_931(s, p, o, m) BOOST_PP_FOR_931_C(BOOST_PP_BOOL(p(932, s)), s, p, o, m) +# define BOOST_PP_FOR_932(s, p, o, m) BOOST_PP_FOR_932_C(BOOST_PP_BOOL(p(933, s)), s, p, o, m) +# define BOOST_PP_FOR_933(s, p, o, m) BOOST_PP_FOR_933_C(BOOST_PP_BOOL(p(934, s)), s, p, o, m) +# define BOOST_PP_FOR_934(s, p, o, m) BOOST_PP_FOR_934_C(BOOST_PP_BOOL(p(935, s)), s, p, o, m) +# define BOOST_PP_FOR_935(s, p, o, m) BOOST_PP_FOR_935_C(BOOST_PP_BOOL(p(936, s)), s, p, o, m) +# define BOOST_PP_FOR_936(s, p, o, m) BOOST_PP_FOR_936_C(BOOST_PP_BOOL(p(937, s)), s, p, o, m) +# define BOOST_PP_FOR_937(s, p, o, m) BOOST_PP_FOR_937_C(BOOST_PP_BOOL(p(938, s)), s, p, o, m) +# define BOOST_PP_FOR_938(s, p, o, m) BOOST_PP_FOR_938_C(BOOST_PP_BOOL(p(939, s)), s, p, o, m) +# define BOOST_PP_FOR_939(s, p, o, m) BOOST_PP_FOR_939_C(BOOST_PP_BOOL(p(940, s)), s, p, o, m) +# define BOOST_PP_FOR_940(s, p, o, m) BOOST_PP_FOR_940_C(BOOST_PP_BOOL(p(941, s)), s, p, o, m) +# define BOOST_PP_FOR_941(s, p, o, m) BOOST_PP_FOR_941_C(BOOST_PP_BOOL(p(942, s)), s, p, o, m) +# define BOOST_PP_FOR_942(s, p, o, m) BOOST_PP_FOR_942_C(BOOST_PP_BOOL(p(943, s)), s, p, o, m) +# define BOOST_PP_FOR_943(s, p, o, m) BOOST_PP_FOR_943_C(BOOST_PP_BOOL(p(944, s)), s, p, o, m) +# define BOOST_PP_FOR_944(s, p, o, m) BOOST_PP_FOR_944_C(BOOST_PP_BOOL(p(945, s)), s, p, o, m) +# define BOOST_PP_FOR_945(s, p, o, m) BOOST_PP_FOR_945_C(BOOST_PP_BOOL(p(946, s)), s, p, o, m) +# define BOOST_PP_FOR_946(s, p, o, m) BOOST_PP_FOR_946_C(BOOST_PP_BOOL(p(947, s)), s, p, o, m) +# define BOOST_PP_FOR_947(s, p, o, m) BOOST_PP_FOR_947_C(BOOST_PP_BOOL(p(948, s)), s, p, o, m) +# define BOOST_PP_FOR_948(s, p, o, m) BOOST_PP_FOR_948_C(BOOST_PP_BOOL(p(949, s)), s, p, o, m) +# define BOOST_PP_FOR_949(s, p, o, m) BOOST_PP_FOR_949_C(BOOST_PP_BOOL(p(950, s)), s, p, o, m) +# define BOOST_PP_FOR_950(s, p, o, m) BOOST_PP_FOR_950_C(BOOST_PP_BOOL(p(951, s)), s, p, o, m) +# define BOOST_PP_FOR_951(s, p, o, m) BOOST_PP_FOR_951_C(BOOST_PP_BOOL(p(952, s)), s, p, o, m) +# define BOOST_PP_FOR_952(s, p, o, m) BOOST_PP_FOR_952_C(BOOST_PP_BOOL(p(953, s)), s, p, o, m) +# define BOOST_PP_FOR_953(s, p, o, m) BOOST_PP_FOR_953_C(BOOST_PP_BOOL(p(954, s)), s, p, o, m) +# define BOOST_PP_FOR_954(s, p, o, m) BOOST_PP_FOR_954_C(BOOST_PP_BOOL(p(955, s)), s, p, o, m) +# define BOOST_PP_FOR_955(s, p, o, m) BOOST_PP_FOR_955_C(BOOST_PP_BOOL(p(956, s)), s, p, o, m) +# define BOOST_PP_FOR_956(s, p, o, m) BOOST_PP_FOR_956_C(BOOST_PP_BOOL(p(957, s)), s, p, o, m) +# define BOOST_PP_FOR_957(s, p, o, m) BOOST_PP_FOR_957_C(BOOST_PP_BOOL(p(958, s)), s, p, o, m) +# define BOOST_PP_FOR_958(s, p, o, m) BOOST_PP_FOR_958_C(BOOST_PP_BOOL(p(959, s)), s, p, o, m) +# define BOOST_PP_FOR_959(s, p, o, m) BOOST_PP_FOR_959_C(BOOST_PP_BOOL(p(960, s)), s, p, o, m) +# define BOOST_PP_FOR_960(s, p, o, m) BOOST_PP_FOR_960_C(BOOST_PP_BOOL(p(961, s)), s, p, o, m) +# define BOOST_PP_FOR_961(s, p, o, m) BOOST_PP_FOR_961_C(BOOST_PP_BOOL(p(962, s)), s, p, o, m) +# define BOOST_PP_FOR_962(s, p, o, m) BOOST_PP_FOR_962_C(BOOST_PP_BOOL(p(963, s)), s, p, o, m) +# define BOOST_PP_FOR_963(s, p, o, m) BOOST_PP_FOR_963_C(BOOST_PP_BOOL(p(964, s)), s, p, o, m) +# define BOOST_PP_FOR_964(s, p, o, m) BOOST_PP_FOR_964_C(BOOST_PP_BOOL(p(965, s)), s, p, o, m) +# define BOOST_PP_FOR_965(s, p, o, m) BOOST_PP_FOR_965_C(BOOST_PP_BOOL(p(966, s)), s, p, o, m) +# define BOOST_PP_FOR_966(s, p, o, m) BOOST_PP_FOR_966_C(BOOST_PP_BOOL(p(967, s)), s, p, o, m) +# define BOOST_PP_FOR_967(s, p, o, m) BOOST_PP_FOR_967_C(BOOST_PP_BOOL(p(968, s)), s, p, o, m) +# define BOOST_PP_FOR_968(s, p, o, m) BOOST_PP_FOR_968_C(BOOST_PP_BOOL(p(969, s)), s, p, o, m) +# define BOOST_PP_FOR_969(s, p, o, m) BOOST_PP_FOR_969_C(BOOST_PP_BOOL(p(970, s)), s, p, o, m) +# define BOOST_PP_FOR_970(s, p, o, m) BOOST_PP_FOR_970_C(BOOST_PP_BOOL(p(971, s)), s, p, o, m) +# define BOOST_PP_FOR_971(s, p, o, m) BOOST_PP_FOR_971_C(BOOST_PP_BOOL(p(972, s)), s, p, o, m) +# define BOOST_PP_FOR_972(s, p, o, m) BOOST_PP_FOR_972_C(BOOST_PP_BOOL(p(973, s)), s, p, o, m) +# define BOOST_PP_FOR_973(s, p, o, m) BOOST_PP_FOR_973_C(BOOST_PP_BOOL(p(974, s)), s, p, o, m) +# define BOOST_PP_FOR_974(s, p, o, m) BOOST_PP_FOR_974_C(BOOST_PP_BOOL(p(975, s)), s, p, o, m) +# define BOOST_PP_FOR_975(s, p, o, m) BOOST_PP_FOR_975_C(BOOST_PP_BOOL(p(976, s)), s, p, o, m) +# define BOOST_PP_FOR_976(s, p, o, m) BOOST_PP_FOR_976_C(BOOST_PP_BOOL(p(977, s)), s, p, o, m) +# define BOOST_PP_FOR_977(s, p, o, m) BOOST_PP_FOR_977_C(BOOST_PP_BOOL(p(978, s)), s, p, o, m) +# define BOOST_PP_FOR_978(s, p, o, m) BOOST_PP_FOR_978_C(BOOST_PP_BOOL(p(979, s)), s, p, o, m) +# define BOOST_PP_FOR_979(s, p, o, m) BOOST_PP_FOR_979_C(BOOST_PP_BOOL(p(980, s)), s, p, o, m) +# define BOOST_PP_FOR_980(s, p, o, m) BOOST_PP_FOR_980_C(BOOST_PP_BOOL(p(981, s)), s, p, o, m) +# define BOOST_PP_FOR_981(s, p, o, m) BOOST_PP_FOR_981_C(BOOST_PP_BOOL(p(982, s)), s, p, o, m) +# define BOOST_PP_FOR_982(s, p, o, m) BOOST_PP_FOR_982_C(BOOST_PP_BOOL(p(983, s)), s, p, o, m) +# define BOOST_PP_FOR_983(s, p, o, m) BOOST_PP_FOR_983_C(BOOST_PP_BOOL(p(984, s)), s, p, o, m) +# define BOOST_PP_FOR_984(s, p, o, m) BOOST_PP_FOR_984_C(BOOST_PP_BOOL(p(985, s)), s, p, o, m) +# define BOOST_PP_FOR_985(s, p, o, m) BOOST_PP_FOR_985_C(BOOST_PP_BOOL(p(986, s)), s, p, o, m) +# define BOOST_PP_FOR_986(s, p, o, m) BOOST_PP_FOR_986_C(BOOST_PP_BOOL(p(987, s)), s, p, o, m) +# define BOOST_PP_FOR_987(s, p, o, m) BOOST_PP_FOR_987_C(BOOST_PP_BOOL(p(988, s)), s, p, o, m) +# define BOOST_PP_FOR_988(s, p, o, m) BOOST_PP_FOR_988_C(BOOST_PP_BOOL(p(989, s)), s, p, o, m) +# define BOOST_PP_FOR_989(s, p, o, m) BOOST_PP_FOR_989_C(BOOST_PP_BOOL(p(990, s)), s, p, o, m) +# define BOOST_PP_FOR_990(s, p, o, m) BOOST_PP_FOR_990_C(BOOST_PP_BOOL(p(991, s)), s, p, o, m) +# define BOOST_PP_FOR_991(s, p, o, m) BOOST_PP_FOR_991_C(BOOST_PP_BOOL(p(992, s)), s, p, o, m) +# define BOOST_PP_FOR_992(s, p, o, m) BOOST_PP_FOR_992_C(BOOST_PP_BOOL(p(993, s)), s, p, o, m) +# define BOOST_PP_FOR_993(s, p, o, m) BOOST_PP_FOR_993_C(BOOST_PP_BOOL(p(994, s)), s, p, o, m) +# define BOOST_PP_FOR_994(s, p, o, m) BOOST_PP_FOR_994_C(BOOST_PP_BOOL(p(995, s)), s, p, o, m) +# define BOOST_PP_FOR_995(s, p, o, m) BOOST_PP_FOR_995_C(BOOST_PP_BOOL(p(996, s)), s, p, o, m) +# define BOOST_PP_FOR_996(s, p, o, m) BOOST_PP_FOR_996_C(BOOST_PP_BOOL(p(997, s)), s, p, o, m) +# define BOOST_PP_FOR_997(s, p, o, m) BOOST_PP_FOR_997_C(BOOST_PP_BOOL(p(998, s)), s, p, o, m) +# define BOOST_PP_FOR_998(s, p, o, m) BOOST_PP_FOR_998_C(BOOST_PP_BOOL(p(999, s)), s, p, o, m) +# define BOOST_PP_FOR_999(s, p, o, m) BOOST_PP_FOR_999_C(BOOST_PP_BOOL(p(1000, s)), s, p, o, m) +# define BOOST_PP_FOR_1000(s, p, o, m) BOOST_PP_FOR_1000_C(BOOST_PP_BOOL(p(1001, s)), s, p, o, m) +# define BOOST_PP_FOR_1001(s, p, o, m) BOOST_PP_FOR_1001_C(BOOST_PP_BOOL(p(1002, s)), s, p, o, m) +# define BOOST_PP_FOR_1002(s, p, o, m) BOOST_PP_FOR_1002_C(BOOST_PP_BOOL(p(1003, s)), s, p, o, m) +# define BOOST_PP_FOR_1003(s, p, o, m) BOOST_PP_FOR_1003_C(BOOST_PP_BOOL(p(1004, s)), s, p, o, m) +# define BOOST_PP_FOR_1004(s, p, o, m) BOOST_PP_FOR_1004_C(BOOST_PP_BOOL(p(1005, s)), s, p, o, m) +# define BOOST_PP_FOR_1005(s, p, o, m) BOOST_PP_FOR_1005_C(BOOST_PP_BOOL(p(1006, s)), s, p, o, m) +# define BOOST_PP_FOR_1006(s, p, o, m) BOOST_PP_FOR_1006_C(BOOST_PP_BOOL(p(1007, s)), s, p, o, m) +# define BOOST_PP_FOR_1007(s, p, o, m) BOOST_PP_FOR_1007_C(BOOST_PP_BOOL(p(1008, s)), s, p, o, m) +# define BOOST_PP_FOR_1008(s, p, o, m) BOOST_PP_FOR_1008_C(BOOST_PP_BOOL(p(1009, s)), s, p, o, m) +# define BOOST_PP_FOR_1009(s, p, o, m) BOOST_PP_FOR_1009_C(BOOST_PP_BOOL(p(1010, s)), s, p, o, m) +# define BOOST_PP_FOR_1010(s, p, o, m) BOOST_PP_FOR_1010_C(BOOST_PP_BOOL(p(1011, s)), s, p, o, m) +# define BOOST_PP_FOR_1011(s, p, o, m) BOOST_PP_FOR_1011_C(BOOST_PP_BOOL(p(1012, s)), s, p, o, m) +# define BOOST_PP_FOR_1012(s, p, o, m) BOOST_PP_FOR_1012_C(BOOST_PP_BOOL(p(1013, s)), s, p, o, m) +# define BOOST_PP_FOR_1013(s, p, o, m) BOOST_PP_FOR_1013_C(BOOST_PP_BOOL(p(1014, s)), s, p, o, m) +# define BOOST_PP_FOR_1014(s, p, o, m) BOOST_PP_FOR_1014_C(BOOST_PP_BOOL(p(1015, s)), s, p, o, m) +# define BOOST_PP_FOR_1015(s, p, o, m) BOOST_PP_FOR_1015_C(BOOST_PP_BOOL(p(1016, s)), s, p, o, m) +# define BOOST_PP_FOR_1016(s, p, o, m) BOOST_PP_FOR_1016_C(BOOST_PP_BOOL(p(1017, s)), s, p, o, m) +# define BOOST_PP_FOR_1017(s, p, o, m) BOOST_PP_FOR_1017_C(BOOST_PP_BOOL(p(1018, s)), s, p, o, m) +# define BOOST_PP_FOR_1018(s, p, o, m) BOOST_PP_FOR_1018_C(BOOST_PP_BOOL(p(1019, s)), s, p, o, m) +# define BOOST_PP_FOR_1019(s, p, o, m) BOOST_PP_FOR_1019_C(BOOST_PP_BOOL(p(1020, s)), s, p, o, m) +# define BOOST_PP_FOR_1020(s, p, o, m) BOOST_PP_FOR_1020_C(BOOST_PP_BOOL(p(1021, s)), s, p, o, m) +# define BOOST_PP_FOR_1021(s, p, o, m) BOOST_PP_FOR_1021_C(BOOST_PP_BOOL(p(1022, s)), s, p, o, m) +# define BOOST_PP_FOR_1022(s, p, o, m) BOOST_PP_FOR_1022_C(BOOST_PP_BOOL(p(1023, s)), s, p, o, m) +# define BOOST_PP_FOR_1023(s, p, o, m) BOOST_PP_FOR_1023_C(BOOST_PP_BOOL(p(1024, s)), s, p, o, m) +# define BOOST_PP_FOR_1024(s, p, o, m) BOOST_PP_FOR_1024_C(BOOST_PP_BOOL(p(1025, s)), s, p, o, m) +# +# define BOOST_PP_FOR_513_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(514, s) BOOST_PP_IIF(c, BOOST_PP_FOR_514, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(514, s), p, o, m) +# define BOOST_PP_FOR_514_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(515, s) BOOST_PP_IIF(c, BOOST_PP_FOR_515, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(515, s), p, o, m) +# define BOOST_PP_FOR_515_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(516, s) BOOST_PP_IIF(c, BOOST_PP_FOR_516, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(516, s), p, o, m) +# define BOOST_PP_FOR_516_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(517, s) BOOST_PP_IIF(c, BOOST_PP_FOR_517, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(517, s), p, o, m) +# define BOOST_PP_FOR_517_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(518, s) BOOST_PP_IIF(c, BOOST_PP_FOR_518, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(518, s), p, o, m) +# define BOOST_PP_FOR_518_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(519, s) BOOST_PP_IIF(c, BOOST_PP_FOR_519, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(519, s), p, o, m) +# define BOOST_PP_FOR_519_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(520, s) BOOST_PP_IIF(c, BOOST_PP_FOR_520, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(520, s), p, o, m) +# define BOOST_PP_FOR_520_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(521, s) BOOST_PP_IIF(c, BOOST_PP_FOR_521, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(521, s), p, o, m) +# define BOOST_PP_FOR_521_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(522, s) BOOST_PP_IIF(c, BOOST_PP_FOR_522, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(522, s), p, o, m) +# define BOOST_PP_FOR_522_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(523, s) BOOST_PP_IIF(c, BOOST_PP_FOR_523, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(523, s), p, o, m) +# define BOOST_PP_FOR_523_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(524, s) BOOST_PP_IIF(c, BOOST_PP_FOR_524, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(524, s), p, o, m) +# define BOOST_PP_FOR_524_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(525, s) BOOST_PP_IIF(c, BOOST_PP_FOR_525, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(525, s), p, o, m) +# define BOOST_PP_FOR_525_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(526, s) BOOST_PP_IIF(c, BOOST_PP_FOR_526, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(526, s), p, o, m) +# define BOOST_PP_FOR_526_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(527, s) BOOST_PP_IIF(c, BOOST_PP_FOR_527, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(527, s), p, o, m) +# define BOOST_PP_FOR_527_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(528, s) BOOST_PP_IIF(c, BOOST_PP_FOR_528, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(528, s), p, o, m) +# define BOOST_PP_FOR_528_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(529, s) BOOST_PP_IIF(c, BOOST_PP_FOR_529, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(529, s), p, o, m) +# define BOOST_PP_FOR_529_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(530, s) BOOST_PP_IIF(c, BOOST_PP_FOR_530, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(530, s), p, o, m) +# define BOOST_PP_FOR_530_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(531, s) BOOST_PP_IIF(c, BOOST_PP_FOR_531, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(531, s), p, o, m) +# define BOOST_PP_FOR_531_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(532, s) BOOST_PP_IIF(c, BOOST_PP_FOR_532, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(532, s), p, o, m) +# define BOOST_PP_FOR_532_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(533, s) BOOST_PP_IIF(c, BOOST_PP_FOR_533, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(533, s), p, o, m) +# define BOOST_PP_FOR_533_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(534, s) BOOST_PP_IIF(c, BOOST_PP_FOR_534, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(534, s), p, o, m) +# define BOOST_PP_FOR_534_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(535, s) BOOST_PP_IIF(c, BOOST_PP_FOR_535, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(535, s), p, o, m) +# define BOOST_PP_FOR_535_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(536, s) BOOST_PP_IIF(c, BOOST_PP_FOR_536, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(536, s), p, o, m) +# define BOOST_PP_FOR_536_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(537, s) BOOST_PP_IIF(c, BOOST_PP_FOR_537, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(537, s), p, o, m) +# define BOOST_PP_FOR_537_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(538, s) BOOST_PP_IIF(c, BOOST_PP_FOR_538, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(538, s), p, o, m) +# define BOOST_PP_FOR_538_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(539, s) BOOST_PP_IIF(c, BOOST_PP_FOR_539, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(539, s), p, o, m) +# define BOOST_PP_FOR_539_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(540, s) BOOST_PP_IIF(c, BOOST_PP_FOR_540, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(540, s), p, o, m) +# define BOOST_PP_FOR_540_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(541, s) BOOST_PP_IIF(c, BOOST_PP_FOR_541, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(541, s), p, o, m) +# define BOOST_PP_FOR_541_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(542, s) BOOST_PP_IIF(c, BOOST_PP_FOR_542, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(542, s), p, o, m) +# define BOOST_PP_FOR_542_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(543, s) BOOST_PP_IIF(c, BOOST_PP_FOR_543, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(543, s), p, o, m) +# define BOOST_PP_FOR_543_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(544, s) BOOST_PP_IIF(c, BOOST_PP_FOR_544, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(544, s), p, o, m) +# define BOOST_PP_FOR_544_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(545, s) BOOST_PP_IIF(c, BOOST_PP_FOR_545, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(545, s), p, o, m) +# define BOOST_PP_FOR_545_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(546, s) BOOST_PP_IIF(c, BOOST_PP_FOR_546, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(546, s), p, o, m) +# define BOOST_PP_FOR_546_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(547, s) BOOST_PP_IIF(c, BOOST_PP_FOR_547, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(547, s), p, o, m) +# define BOOST_PP_FOR_547_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(548, s) BOOST_PP_IIF(c, BOOST_PP_FOR_548, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(548, s), p, o, m) +# define BOOST_PP_FOR_548_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(549, s) BOOST_PP_IIF(c, BOOST_PP_FOR_549, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(549, s), p, o, m) +# define BOOST_PP_FOR_549_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(550, s) BOOST_PP_IIF(c, BOOST_PP_FOR_550, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(550, s), p, o, m) +# define BOOST_PP_FOR_550_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(551, s) BOOST_PP_IIF(c, BOOST_PP_FOR_551, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(551, s), p, o, m) +# define BOOST_PP_FOR_551_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(552, s) BOOST_PP_IIF(c, BOOST_PP_FOR_552, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(552, s), p, o, m) +# define BOOST_PP_FOR_552_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(553, s) BOOST_PP_IIF(c, BOOST_PP_FOR_553, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(553, s), p, o, m) +# define BOOST_PP_FOR_553_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(554, s) BOOST_PP_IIF(c, BOOST_PP_FOR_554, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(554, s), p, o, m) +# define BOOST_PP_FOR_554_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(555, s) BOOST_PP_IIF(c, BOOST_PP_FOR_555, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(555, s), p, o, m) +# define BOOST_PP_FOR_555_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(556, s) BOOST_PP_IIF(c, BOOST_PP_FOR_556, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(556, s), p, o, m) +# define BOOST_PP_FOR_556_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(557, s) BOOST_PP_IIF(c, BOOST_PP_FOR_557, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(557, s), p, o, m) +# define BOOST_PP_FOR_557_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(558, s) BOOST_PP_IIF(c, BOOST_PP_FOR_558, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(558, s), p, o, m) +# define BOOST_PP_FOR_558_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(559, s) BOOST_PP_IIF(c, BOOST_PP_FOR_559, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(559, s), p, o, m) +# define BOOST_PP_FOR_559_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(560, s) BOOST_PP_IIF(c, BOOST_PP_FOR_560, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(560, s), p, o, m) +# define BOOST_PP_FOR_560_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(561, s) BOOST_PP_IIF(c, BOOST_PP_FOR_561, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(561, s), p, o, m) +# define BOOST_PP_FOR_561_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(562, s) BOOST_PP_IIF(c, BOOST_PP_FOR_562, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(562, s), p, o, m) +# define BOOST_PP_FOR_562_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(563, s) BOOST_PP_IIF(c, BOOST_PP_FOR_563, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(563, s), p, o, m) +# define BOOST_PP_FOR_563_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(564, s) BOOST_PP_IIF(c, BOOST_PP_FOR_564, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(564, s), p, o, m) +# define BOOST_PP_FOR_564_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(565, s) BOOST_PP_IIF(c, BOOST_PP_FOR_565, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(565, s), p, o, m) +# define BOOST_PP_FOR_565_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(566, s) BOOST_PP_IIF(c, BOOST_PP_FOR_566, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(566, s), p, o, m) +# define BOOST_PP_FOR_566_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(567, s) BOOST_PP_IIF(c, BOOST_PP_FOR_567, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(567, s), p, o, m) +# define BOOST_PP_FOR_567_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(568, s) BOOST_PP_IIF(c, BOOST_PP_FOR_568, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(568, s), p, o, m) +# define BOOST_PP_FOR_568_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(569, s) BOOST_PP_IIF(c, BOOST_PP_FOR_569, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(569, s), p, o, m) +# define BOOST_PP_FOR_569_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(570, s) BOOST_PP_IIF(c, BOOST_PP_FOR_570, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(570, s), p, o, m) +# define BOOST_PP_FOR_570_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(571, s) BOOST_PP_IIF(c, BOOST_PP_FOR_571, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(571, s), p, o, m) +# define BOOST_PP_FOR_571_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(572, s) BOOST_PP_IIF(c, BOOST_PP_FOR_572, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(572, s), p, o, m) +# define BOOST_PP_FOR_572_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(573, s) BOOST_PP_IIF(c, BOOST_PP_FOR_573, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(573, s), p, o, m) +# define BOOST_PP_FOR_573_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(574, s) BOOST_PP_IIF(c, BOOST_PP_FOR_574, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(574, s), p, o, m) +# define BOOST_PP_FOR_574_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(575, s) BOOST_PP_IIF(c, BOOST_PP_FOR_575, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(575, s), p, o, m) +# define BOOST_PP_FOR_575_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(576, s) BOOST_PP_IIF(c, BOOST_PP_FOR_576, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(576, s), p, o, m) +# define BOOST_PP_FOR_576_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(577, s) BOOST_PP_IIF(c, BOOST_PP_FOR_577, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(577, s), p, o, m) +# define BOOST_PP_FOR_577_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(578, s) BOOST_PP_IIF(c, BOOST_PP_FOR_578, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(578, s), p, o, m) +# define BOOST_PP_FOR_578_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(579, s) BOOST_PP_IIF(c, BOOST_PP_FOR_579, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(579, s), p, o, m) +# define BOOST_PP_FOR_579_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(580, s) BOOST_PP_IIF(c, BOOST_PP_FOR_580, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(580, s), p, o, m) +# define BOOST_PP_FOR_580_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(581, s) BOOST_PP_IIF(c, BOOST_PP_FOR_581, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(581, s), p, o, m) +# define BOOST_PP_FOR_581_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(582, s) BOOST_PP_IIF(c, BOOST_PP_FOR_582, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(582, s), p, o, m) +# define BOOST_PP_FOR_582_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(583, s) BOOST_PP_IIF(c, BOOST_PP_FOR_583, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(583, s), p, o, m) +# define BOOST_PP_FOR_583_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(584, s) BOOST_PP_IIF(c, BOOST_PP_FOR_584, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(584, s), p, o, m) +# define BOOST_PP_FOR_584_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(585, s) BOOST_PP_IIF(c, BOOST_PP_FOR_585, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(585, s), p, o, m) +# define BOOST_PP_FOR_585_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(586, s) BOOST_PP_IIF(c, BOOST_PP_FOR_586, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(586, s), p, o, m) +# define BOOST_PP_FOR_586_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(587, s) BOOST_PP_IIF(c, BOOST_PP_FOR_587, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(587, s), p, o, m) +# define BOOST_PP_FOR_587_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(588, s) BOOST_PP_IIF(c, BOOST_PP_FOR_588, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(588, s), p, o, m) +# define BOOST_PP_FOR_588_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(589, s) BOOST_PP_IIF(c, BOOST_PP_FOR_589, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(589, s), p, o, m) +# define BOOST_PP_FOR_589_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(590, s) BOOST_PP_IIF(c, BOOST_PP_FOR_590, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(590, s), p, o, m) +# define BOOST_PP_FOR_590_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(591, s) BOOST_PP_IIF(c, BOOST_PP_FOR_591, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(591, s), p, o, m) +# define BOOST_PP_FOR_591_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(592, s) BOOST_PP_IIF(c, BOOST_PP_FOR_592, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(592, s), p, o, m) +# define BOOST_PP_FOR_592_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(593, s) BOOST_PP_IIF(c, BOOST_PP_FOR_593, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(593, s), p, o, m) +# define BOOST_PP_FOR_593_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(594, s) BOOST_PP_IIF(c, BOOST_PP_FOR_594, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(594, s), p, o, m) +# define BOOST_PP_FOR_594_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(595, s) BOOST_PP_IIF(c, BOOST_PP_FOR_595, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(595, s), p, o, m) +# define BOOST_PP_FOR_595_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(596, s) BOOST_PP_IIF(c, BOOST_PP_FOR_596, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(596, s), p, o, m) +# define BOOST_PP_FOR_596_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(597, s) BOOST_PP_IIF(c, BOOST_PP_FOR_597, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(597, s), p, o, m) +# define BOOST_PP_FOR_597_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(598, s) BOOST_PP_IIF(c, BOOST_PP_FOR_598, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(598, s), p, o, m) +# define BOOST_PP_FOR_598_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(599, s) BOOST_PP_IIF(c, BOOST_PP_FOR_599, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(599, s), p, o, m) +# define BOOST_PP_FOR_599_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(600, s) BOOST_PP_IIF(c, BOOST_PP_FOR_600, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(600, s), p, o, m) +# define BOOST_PP_FOR_600_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(601, s) BOOST_PP_IIF(c, BOOST_PP_FOR_601, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(601, s), p, o, m) +# define BOOST_PP_FOR_601_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(602, s) BOOST_PP_IIF(c, BOOST_PP_FOR_602, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(602, s), p, o, m) +# define BOOST_PP_FOR_602_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(603, s) BOOST_PP_IIF(c, BOOST_PP_FOR_603, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(603, s), p, o, m) +# define BOOST_PP_FOR_603_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(604, s) BOOST_PP_IIF(c, BOOST_PP_FOR_604, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(604, s), p, o, m) +# define BOOST_PP_FOR_604_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(605, s) BOOST_PP_IIF(c, BOOST_PP_FOR_605, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(605, s), p, o, m) +# define BOOST_PP_FOR_605_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(606, s) BOOST_PP_IIF(c, BOOST_PP_FOR_606, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(606, s), p, o, m) +# define BOOST_PP_FOR_606_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(607, s) BOOST_PP_IIF(c, BOOST_PP_FOR_607, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(607, s), p, o, m) +# define BOOST_PP_FOR_607_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(608, s) BOOST_PP_IIF(c, BOOST_PP_FOR_608, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(608, s), p, o, m) +# define BOOST_PP_FOR_608_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(609, s) BOOST_PP_IIF(c, BOOST_PP_FOR_609, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(609, s), p, o, m) +# define BOOST_PP_FOR_609_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(610, s) BOOST_PP_IIF(c, BOOST_PP_FOR_610, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(610, s), p, o, m) +# define BOOST_PP_FOR_610_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(611, s) BOOST_PP_IIF(c, BOOST_PP_FOR_611, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(611, s), p, o, m) +# define BOOST_PP_FOR_611_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(612, s) BOOST_PP_IIF(c, BOOST_PP_FOR_612, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(612, s), p, o, m) +# define BOOST_PP_FOR_612_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(613, s) BOOST_PP_IIF(c, BOOST_PP_FOR_613, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(613, s), p, o, m) +# define BOOST_PP_FOR_613_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(614, s) BOOST_PP_IIF(c, BOOST_PP_FOR_614, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(614, s), p, o, m) +# define BOOST_PP_FOR_614_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(615, s) BOOST_PP_IIF(c, BOOST_PP_FOR_615, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(615, s), p, o, m) +# define BOOST_PP_FOR_615_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(616, s) BOOST_PP_IIF(c, BOOST_PP_FOR_616, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(616, s), p, o, m) +# define BOOST_PP_FOR_616_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(617, s) BOOST_PP_IIF(c, BOOST_PP_FOR_617, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(617, s), p, o, m) +# define BOOST_PP_FOR_617_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(618, s) BOOST_PP_IIF(c, BOOST_PP_FOR_618, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(618, s), p, o, m) +# define BOOST_PP_FOR_618_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(619, s) BOOST_PP_IIF(c, BOOST_PP_FOR_619, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(619, s), p, o, m) +# define BOOST_PP_FOR_619_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(620, s) BOOST_PP_IIF(c, BOOST_PP_FOR_620, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(620, s), p, o, m) +# define BOOST_PP_FOR_620_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(621, s) BOOST_PP_IIF(c, BOOST_PP_FOR_621, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(621, s), p, o, m) +# define BOOST_PP_FOR_621_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(622, s) BOOST_PP_IIF(c, BOOST_PP_FOR_622, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(622, s), p, o, m) +# define BOOST_PP_FOR_622_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(623, s) BOOST_PP_IIF(c, BOOST_PP_FOR_623, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(623, s), p, o, m) +# define BOOST_PP_FOR_623_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(624, s) BOOST_PP_IIF(c, BOOST_PP_FOR_624, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(624, s), p, o, m) +# define BOOST_PP_FOR_624_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(625, s) BOOST_PP_IIF(c, BOOST_PP_FOR_625, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(625, s), p, o, m) +# define BOOST_PP_FOR_625_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(626, s) BOOST_PP_IIF(c, BOOST_PP_FOR_626, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(626, s), p, o, m) +# define BOOST_PP_FOR_626_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(627, s) BOOST_PP_IIF(c, BOOST_PP_FOR_627, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(627, s), p, o, m) +# define BOOST_PP_FOR_627_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(628, s) BOOST_PP_IIF(c, BOOST_PP_FOR_628, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(628, s), p, o, m) +# define BOOST_PP_FOR_628_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(629, s) BOOST_PP_IIF(c, BOOST_PP_FOR_629, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(629, s), p, o, m) +# define BOOST_PP_FOR_629_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(630, s) BOOST_PP_IIF(c, BOOST_PP_FOR_630, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(630, s), p, o, m) +# define BOOST_PP_FOR_630_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(631, s) BOOST_PP_IIF(c, BOOST_PP_FOR_631, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(631, s), p, o, m) +# define BOOST_PP_FOR_631_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(632, s) BOOST_PP_IIF(c, BOOST_PP_FOR_632, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(632, s), p, o, m) +# define BOOST_PP_FOR_632_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(633, s) BOOST_PP_IIF(c, BOOST_PP_FOR_633, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(633, s), p, o, m) +# define BOOST_PP_FOR_633_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(634, s) BOOST_PP_IIF(c, BOOST_PP_FOR_634, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(634, s), p, o, m) +# define BOOST_PP_FOR_634_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(635, s) BOOST_PP_IIF(c, BOOST_PP_FOR_635, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(635, s), p, o, m) +# define BOOST_PP_FOR_635_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(636, s) BOOST_PP_IIF(c, BOOST_PP_FOR_636, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(636, s), p, o, m) +# define BOOST_PP_FOR_636_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(637, s) BOOST_PP_IIF(c, BOOST_PP_FOR_637, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(637, s), p, o, m) +# define BOOST_PP_FOR_637_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(638, s) BOOST_PP_IIF(c, BOOST_PP_FOR_638, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(638, s), p, o, m) +# define BOOST_PP_FOR_638_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(639, s) BOOST_PP_IIF(c, BOOST_PP_FOR_639, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(639, s), p, o, m) +# define BOOST_PP_FOR_639_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(640, s) BOOST_PP_IIF(c, BOOST_PP_FOR_640, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(640, s), p, o, m) +# define BOOST_PP_FOR_640_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(641, s) BOOST_PP_IIF(c, BOOST_PP_FOR_641, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(641, s), p, o, m) +# define BOOST_PP_FOR_641_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(642, s) BOOST_PP_IIF(c, BOOST_PP_FOR_642, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(642, s), p, o, m) +# define BOOST_PP_FOR_642_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(643, s) BOOST_PP_IIF(c, BOOST_PP_FOR_643, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(643, s), p, o, m) +# define BOOST_PP_FOR_643_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(644, s) BOOST_PP_IIF(c, BOOST_PP_FOR_644, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(644, s), p, o, m) +# define BOOST_PP_FOR_644_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(645, s) BOOST_PP_IIF(c, BOOST_PP_FOR_645, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(645, s), p, o, m) +# define BOOST_PP_FOR_645_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(646, s) BOOST_PP_IIF(c, BOOST_PP_FOR_646, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(646, s), p, o, m) +# define BOOST_PP_FOR_646_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(647, s) BOOST_PP_IIF(c, BOOST_PP_FOR_647, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(647, s), p, o, m) +# define BOOST_PP_FOR_647_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(648, s) BOOST_PP_IIF(c, BOOST_PP_FOR_648, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(648, s), p, o, m) +# define BOOST_PP_FOR_648_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(649, s) BOOST_PP_IIF(c, BOOST_PP_FOR_649, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(649, s), p, o, m) +# define BOOST_PP_FOR_649_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(650, s) BOOST_PP_IIF(c, BOOST_PP_FOR_650, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(650, s), p, o, m) +# define BOOST_PP_FOR_650_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(651, s) BOOST_PP_IIF(c, BOOST_PP_FOR_651, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(651, s), p, o, m) +# define BOOST_PP_FOR_651_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(652, s) BOOST_PP_IIF(c, BOOST_PP_FOR_652, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(652, s), p, o, m) +# define BOOST_PP_FOR_652_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(653, s) BOOST_PP_IIF(c, BOOST_PP_FOR_653, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(653, s), p, o, m) +# define BOOST_PP_FOR_653_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(654, s) BOOST_PP_IIF(c, BOOST_PP_FOR_654, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(654, s), p, o, m) +# define BOOST_PP_FOR_654_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(655, s) BOOST_PP_IIF(c, BOOST_PP_FOR_655, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(655, s), p, o, m) +# define BOOST_PP_FOR_655_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(656, s) BOOST_PP_IIF(c, BOOST_PP_FOR_656, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(656, s), p, o, m) +# define BOOST_PP_FOR_656_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(657, s) BOOST_PP_IIF(c, BOOST_PP_FOR_657, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(657, s), p, o, m) +# define BOOST_PP_FOR_657_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(658, s) BOOST_PP_IIF(c, BOOST_PP_FOR_658, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(658, s), p, o, m) +# define BOOST_PP_FOR_658_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(659, s) BOOST_PP_IIF(c, BOOST_PP_FOR_659, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(659, s), p, o, m) +# define BOOST_PP_FOR_659_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(660, s) BOOST_PP_IIF(c, BOOST_PP_FOR_660, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(660, s), p, o, m) +# define BOOST_PP_FOR_660_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(661, s) BOOST_PP_IIF(c, BOOST_PP_FOR_661, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(661, s), p, o, m) +# define BOOST_PP_FOR_661_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(662, s) BOOST_PP_IIF(c, BOOST_PP_FOR_662, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(662, s), p, o, m) +# define BOOST_PP_FOR_662_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(663, s) BOOST_PP_IIF(c, BOOST_PP_FOR_663, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(663, s), p, o, m) +# define BOOST_PP_FOR_663_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(664, s) BOOST_PP_IIF(c, BOOST_PP_FOR_664, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(664, s), p, o, m) +# define BOOST_PP_FOR_664_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(665, s) BOOST_PP_IIF(c, BOOST_PP_FOR_665, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(665, s), p, o, m) +# define BOOST_PP_FOR_665_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(666, s) BOOST_PP_IIF(c, BOOST_PP_FOR_666, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(666, s), p, o, m) +# define BOOST_PP_FOR_666_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(667, s) BOOST_PP_IIF(c, BOOST_PP_FOR_667, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(667, s), p, o, m) +# define BOOST_PP_FOR_667_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(668, s) BOOST_PP_IIF(c, BOOST_PP_FOR_668, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(668, s), p, o, m) +# define BOOST_PP_FOR_668_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(669, s) BOOST_PP_IIF(c, BOOST_PP_FOR_669, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(669, s), p, o, m) +# define BOOST_PP_FOR_669_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(670, s) BOOST_PP_IIF(c, BOOST_PP_FOR_670, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(670, s), p, o, m) +# define BOOST_PP_FOR_670_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(671, s) BOOST_PP_IIF(c, BOOST_PP_FOR_671, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(671, s), p, o, m) +# define BOOST_PP_FOR_671_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(672, s) BOOST_PP_IIF(c, BOOST_PP_FOR_672, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(672, s), p, o, m) +# define BOOST_PP_FOR_672_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(673, s) BOOST_PP_IIF(c, BOOST_PP_FOR_673, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(673, s), p, o, m) +# define BOOST_PP_FOR_673_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(674, s) BOOST_PP_IIF(c, BOOST_PP_FOR_674, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(674, s), p, o, m) +# define BOOST_PP_FOR_674_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(675, s) BOOST_PP_IIF(c, BOOST_PP_FOR_675, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(675, s), p, o, m) +# define BOOST_PP_FOR_675_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(676, s) BOOST_PP_IIF(c, BOOST_PP_FOR_676, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(676, s), p, o, m) +# define BOOST_PP_FOR_676_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(677, s) BOOST_PP_IIF(c, BOOST_PP_FOR_677, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(677, s), p, o, m) +# define BOOST_PP_FOR_677_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(678, s) BOOST_PP_IIF(c, BOOST_PP_FOR_678, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(678, s), p, o, m) +# define BOOST_PP_FOR_678_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(679, s) BOOST_PP_IIF(c, BOOST_PP_FOR_679, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(679, s), p, o, m) +# define BOOST_PP_FOR_679_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(680, s) BOOST_PP_IIF(c, BOOST_PP_FOR_680, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(680, s), p, o, m) +# define BOOST_PP_FOR_680_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(681, s) BOOST_PP_IIF(c, BOOST_PP_FOR_681, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(681, s), p, o, m) +# define BOOST_PP_FOR_681_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(682, s) BOOST_PP_IIF(c, BOOST_PP_FOR_682, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(682, s), p, o, m) +# define BOOST_PP_FOR_682_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(683, s) BOOST_PP_IIF(c, BOOST_PP_FOR_683, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(683, s), p, o, m) +# define BOOST_PP_FOR_683_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(684, s) BOOST_PP_IIF(c, BOOST_PP_FOR_684, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(684, s), p, o, m) +# define BOOST_PP_FOR_684_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(685, s) BOOST_PP_IIF(c, BOOST_PP_FOR_685, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(685, s), p, o, m) +# define BOOST_PP_FOR_685_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(686, s) BOOST_PP_IIF(c, BOOST_PP_FOR_686, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(686, s), p, o, m) +# define BOOST_PP_FOR_686_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(687, s) BOOST_PP_IIF(c, BOOST_PP_FOR_687, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(687, s), p, o, m) +# define BOOST_PP_FOR_687_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(688, s) BOOST_PP_IIF(c, BOOST_PP_FOR_688, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(688, s), p, o, m) +# define BOOST_PP_FOR_688_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(689, s) BOOST_PP_IIF(c, BOOST_PP_FOR_689, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(689, s), p, o, m) +# define BOOST_PP_FOR_689_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(690, s) BOOST_PP_IIF(c, BOOST_PP_FOR_690, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(690, s), p, o, m) +# define BOOST_PP_FOR_690_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(691, s) BOOST_PP_IIF(c, BOOST_PP_FOR_691, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(691, s), p, o, m) +# define BOOST_PP_FOR_691_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(692, s) BOOST_PP_IIF(c, BOOST_PP_FOR_692, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(692, s), p, o, m) +# define BOOST_PP_FOR_692_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(693, s) BOOST_PP_IIF(c, BOOST_PP_FOR_693, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(693, s), p, o, m) +# define BOOST_PP_FOR_693_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(694, s) BOOST_PP_IIF(c, BOOST_PP_FOR_694, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(694, s), p, o, m) +# define BOOST_PP_FOR_694_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(695, s) BOOST_PP_IIF(c, BOOST_PP_FOR_695, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(695, s), p, o, m) +# define BOOST_PP_FOR_695_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(696, s) BOOST_PP_IIF(c, BOOST_PP_FOR_696, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(696, s), p, o, m) +# define BOOST_PP_FOR_696_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(697, s) BOOST_PP_IIF(c, BOOST_PP_FOR_697, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(697, s), p, o, m) +# define BOOST_PP_FOR_697_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(698, s) BOOST_PP_IIF(c, BOOST_PP_FOR_698, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(698, s), p, o, m) +# define BOOST_PP_FOR_698_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(699, s) BOOST_PP_IIF(c, BOOST_PP_FOR_699, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(699, s), p, o, m) +# define BOOST_PP_FOR_699_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(700, s) BOOST_PP_IIF(c, BOOST_PP_FOR_700, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(700, s), p, o, m) +# define BOOST_PP_FOR_700_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(701, s) BOOST_PP_IIF(c, BOOST_PP_FOR_701, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(701, s), p, o, m) +# define BOOST_PP_FOR_701_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(702, s) BOOST_PP_IIF(c, BOOST_PP_FOR_702, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(702, s), p, o, m) +# define BOOST_PP_FOR_702_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(703, s) BOOST_PP_IIF(c, BOOST_PP_FOR_703, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(703, s), p, o, m) +# define BOOST_PP_FOR_703_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(704, s) BOOST_PP_IIF(c, BOOST_PP_FOR_704, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(704, s), p, o, m) +# define BOOST_PP_FOR_704_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(705, s) BOOST_PP_IIF(c, BOOST_PP_FOR_705, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(705, s), p, o, m) +# define BOOST_PP_FOR_705_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(706, s) BOOST_PP_IIF(c, BOOST_PP_FOR_706, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(706, s), p, o, m) +# define BOOST_PP_FOR_706_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(707, s) BOOST_PP_IIF(c, BOOST_PP_FOR_707, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(707, s), p, o, m) +# define BOOST_PP_FOR_707_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(708, s) BOOST_PP_IIF(c, BOOST_PP_FOR_708, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(708, s), p, o, m) +# define BOOST_PP_FOR_708_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(709, s) BOOST_PP_IIF(c, BOOST_PP_FOR_709, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(709, s), p, o, m) +# define BOOST_PP_FOR_709_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(710, s) BOOST_PP_IIF(c, BOOST_PP_FOR_710, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(710, s), p, o, m) +# define BOOST_PP_FOR_710_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(711, s) BOOST_PP_IIF(c, BOOST_PP_FOR_711, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(711, s), p, o, m) +# define BOOST_PP_FOR_711_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(712, s) BOOST_PP_IIF(c, BOOST_PP_FOR_712, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(712, s), p, o, m) +# define BOOST_PP_FOR_712_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(713, s) BOOST_PP_IIF(c, BOOST_PP_FOR_713, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(713, s), p, o, m) +# define BOOST_PP_FOR_713_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(714, s) BOOST_PP_IIF(c, BOOST_PP_FOR_714, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(714, s), p, o, m) +# define BOOST_PP_FOR_714_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(715, s) BOOST_PP_IIF(c, BOOST_PP_FOR_715, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(715, s), p, o, m) +# define BOOST_PP_FOR_715_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(716, s) BOOST_PP_IIF(c, BOOST_PP_FOR_716, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(716, s), p, o, m) +# define BOOST_PP_FOR_716_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(717, s) BOOST_PP_IIF(c, BOOST_PP_FOR_717, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(717, s), p, o, m) +# define BOOST_PP_FOR_717_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(718, s) BOOST_PP_IIF(c, BOOST_PP_FOR_718, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(718, s), p, o, m) +# define BOOST_PP_FOR_718_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(719, s) BOOST_PP_IIF(c, BOOST_PP_FOR_719, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(719, s), p, o, m) +# define BOOST_PP_FOR_719_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(720, s) BOOST_PP_IIF(c, BOOST_PP_FOR_720, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(720, s), p, o, m) +# define BOOST_PP_FOR_720_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(721, s) BOOST_PP_IIF(c, BOOST_PP_FOR_721, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(721, s), p, o, m) +# define BOOST_PP_FOR_721_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(722, s) BOOST_PP_IIF(c, BOOST_PP_FOR_722, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(722, s), p, o, m) +# define BOOST_PP_FOR_722_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(723, s) BOOST_PP_IIF(c, BOOST_PP_FOR_723, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(723, s), p, o, m) +# define BOOST_PP_FOR_723_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(724, s) BOOST_PP_IIF(c, BOOST_PP_FOR_724, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(724, s), p, o, m) +# define BOOST_PP_FOR_724_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(725, s) BOOST_PP_IIF(c, BOOST_PP_FOR_725, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(725, s), p, o, m) +# define BOOST_PP_FOR_725_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(726, s) BOOST_PP_IIF(c, BOOST_PP_FOR_726, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(726, s), p, o, m) +# define BOOST_PP_FOR_726_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(727, s) BOOST_PP_IIF(c, BOOST_PP_FOR_727, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(727, s), p, o, m) +# define BOOST_PP_FOR_727_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(728, s) BOOST_PP_IIF(c, BOOST_PP_FOR_728, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(728, s), p, o, m) +# define BOOST_PP_FOR_728_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(729, s) BOOST_PP_IIF(c, BOOST_PP_FOR_729, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(729, s), p, o, m) +# define BOOST_PP_FOR_729_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(730, s) BOOST_PP_IIF(c, BOOST_PP_FOR_730, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(730, s), p, o, m) +# define BOOST_PP_FOR_730_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(731, s) BOOST_PP_IIF(c, BOOST_PP_FOR_731, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(731, s), p, o, m) +# define BOOST_PP_FOR_731_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(732, s) BOOST_PP_IIF(c, BOOST_PP_FOR_732, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(732, s), p, o, m) +# define BOOST_PP_FOR_732_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(733, s) BOOST_PP_IIF(c, BOOST_PP_FOR_733, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(733, s), p, o, m) +# define BOOST_PP_FOR_733_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(734, s) BOOST_PP_IIF(c, BOOST_PP_FOR_734, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(734, s), p, o, m) +# define BOOST_PP_FOR_734_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(735, s) BOOST_PP_IIF(c, BOOST_PP_FOR_735, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(735, s), p, o, m) +# define BOOST_PP_FOR_735_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(736, s) BOOST_PP_IIF(c, BOOST_PP_FOR_736, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(736, s), p, o, m) +# define BOOST_PP_FOR_736_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(737, s) BOOST_PP_IIF(c, BOOST_PP_FOR_737, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(737, s), p, o, m) +# define BOOST_PP_FOR_737_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(738, s) BOOST_PP_IIF(c, BOOST_PP_FOR_738, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(738, s), p, o, m) +# define BOOST_PP_FOR_738_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(739, s) BOOST_PP_IIF(c, BOOST_PP_FOR_739, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(739, s), p, o, m) +# define BOOST_PP_FOR_739_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(740, s) BOOST_PP_IIF(c, BOOST_PP_FOR_740, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(740, s), p, o, m) +# define BOOST_PP_FOR_740_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(741, s) BOOST_PP_IIF(c, BOOST_PP_FOR_741, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(741, s), p, o, m) +# define BOOST_PP_FOR_741_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(742, s) BOOST_PP_IIF(c, BOOST_PP_FOR_742, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(742, s), p, o, m) +# define BOOST_PP_FOR_742_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(743, s) BOOST_PP_IIF(c, BOOST_PP_FOR_743, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(743, s), p, o, m) +# define BOOST_PP_FOR_743_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(744, s) BOOST_PP_IIF(c, BOOST_PP_FOR_744, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(744, s), p, o, m) +# define BOOST_PP_FOR_744_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(745, s) BOOST_PP_IIF(c, BOOST_PP_FOR_745, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(745, s), p, o, m) +# define BOOST_PP_FOR_745_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(746, s) BOOST_PP_IIF(c, BOOST_PP_FOR_746, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(746, s), p, o, m) +# define BOOST_PP_FOR_746_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(747, s) BOOST_PP_IIF(c, BOOST_PP_FOR_747, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(747, s), p, o, m) +# define BOOST_PP_FOR_747_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(748, s) BOOST_PP_IIF(c, BOOST_PP_FOR_748, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(748, s), p, o, m) +# define BOOST_PP_FOR_748_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(749, s) BOOST_PP_IIF(c, BOOST_PP_FOR_749, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(749, s), p, o, m) +# define BOOST_PP_FOR_749_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(750, s) BOOST_PP_IIF(c, BOOST_PP_FOR_750, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(750, s), p, o, m) +# define BOOST_PP_FOR_750_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(751, s) BOOST_PP_IIF(c, BOOST_PP_FOR_751, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(751, s), p, o, m) +# define BOOST_PP_FOR_751_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(752, s) BOOST_PP_IIF(c, BOOST_PP_FOR_752, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(752, s), p, o, m) +# define BOOST_PP_FOR_752_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(753, s) BOOST_PP_IIF(c, BOOST_PP_FOR_753, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(753, s), p, o, m) +# define BOOST_PP_FOR_753_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(754, s) BOOST_PP_IIF(c, BOOST_PP_FOR_754, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(754, s), p, o, m) +# define BOOST_PP_FOR_754_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(755, s) BOOST_PP_IIF(c, BOOST_PP_FOR_755, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(755, s), p, o, m) +# define BOOST_PP_FOR_755_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(756, s) BOOST_PP_IIF(c, BOOST_PP_FOR_756, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(756, s), p, o, m) +# define BOOST_PP_FOR_756_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(757, s) BOOST_PP_IIF(c, BOOST_PP_FOR_757, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(757, s), p, o, m) +# define BOOST_PP_FOR_757_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(758, s) BOOST_PP_IIF(c, BOOST_PP_FOR_758, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(758, s), p, o, m) +# define BOOST_PP_FOR_758_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(759, s) BOOST_PP_IIF(c, BOOST_PP_FOR_759, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(759, s), p, o, m) +# define BOOST_PP_FOR_759_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(760, s) BOOST_PP_IIF(c, BOOST_PP_FOR_760, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(760, s), p, o, m) +# define BOOST_PP_FOR_760_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(761, s) BOOST_PP_IIF(c, BOOST_PP_FOR_761, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(761, s), p, o, m) +# define BOOST_PP_FOR_761_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(762, s) BOOST_PP_IIF(c, BOOST_PP_FOR_762, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(762, s), p, o, m) +# define BOOST_PP_FOR_762_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(763, s) BOOST_PP_IIF(c, BOOST_PP_FOR_763, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(763, s), p, o, m) +# define BOOST_PP_FOR_763_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(764, s) BOOST_PP_IIF(c, BOOST_PP_FOR_764, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(764, s), p, o, m) +# define BOOST_PP_FOR_764_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(765, s) BOOST_PP_IIF(c, BOOST_PP_FOR_765, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(765, s), p, o, m) +# define BOOST_PP_FOR_765_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(766, s) BOOST_PP_IIF(c, BOOST_PP_FOR_766, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(766, s), p, o, m) +# define BOOST_PP_FOR_766_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(767, s) BOOST_PP_IIF(c, BOOST_PP_FOR_767, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(767, s), p, o, m) +# define BOOST_PP_FOR_767_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(768, s) BOOST_PP_IIF(c, BOOST_PP_FOR_768, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(768, s), p, o, m) +# define BOOST_PP_FOR_768_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(769, s) BOOST_PP_IIF(c, BOOST_PP_FOR_769, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(769, s), p, o, m) +# define BOOST_PP_FOR_769_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(770, s) BOOST_PP_IIF(c, BOOST_PP_FOR_770, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(770, s), p, o, m) +# define BOOST_PP_FOR_770_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(771, s) BOOST_PP_IIF(c, BOOST_PP_FOR_771, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(771, s), p, o, m) +# define BOOST_PP_FOR_771_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(772, s) BOOST_PP_IIF(c, BOOST_PP_FOR_772, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(772, s), p, o, m) +# define BOOST_PP_FOR_772_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(773, s) BOOST_PP_IIF(c, BOOST_PP_FOR_773, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(773, s), p, o, m) +# define BOOST_PP_FOR_773_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(774, s) BOOST_PP_IIF(c, BOOST_PP_FOR_774, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(774, s), p, o, m) +# define BOOST_PP_FOR_774_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(775, s) BOOST_PP_IIF(c, BOOST_PP_FOR_775, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(775, s), p, o, m) +# define BOOST_PP_FOR_775_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(776, s) BOOST_PP_IIF(c, BOOST_PP_FOR_776, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(776, s), p, o, m) +# define BOOST_PP_FOR_776_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(777, s) BOOST_PP_IIF(c, BOOST_PP_FOR_777, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(777, s), p, o, m) +# define BOOST_PP_FOR_777_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(778, s) BOOST_PP_IIF(c, BOOST_PP_FOR_778, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(778, s), p, o, m) +# define BOOST_PP_FOR_778_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(779, s) BOOST_PP_IIF(c, BOOST_PP_FOR_779, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(779, s), p, o, m) +# define BOOST_PP_FOR_779_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(780, s) BOOST_PP_IIF(c, BOOST_PP_FOR_780, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(780, s), p, o, m) +# define BOOST_PP_FOR_780_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(781, s) BOOST_PP_IIF(c, BOOST_PP_FOR_781, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(781, s), p, o, m) +# define BOOST_PP_FOR_781_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(782, s) BOOST_PP_IIF(c, BOOST_PP_FOR_782, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(782, s), p, o, m) +# define BOOST_PP_FOR_782_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(783, s) BOOST_PP_IIF(c, BOOST_PP_FOR_783, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(783, s), p, o, m) +# define BOOST_PP_FOR_783_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(784, s) BOOST_PP_IIF(c, BOOST_PP_FOR_784, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(784, s), p, o, m) +# define BOOST_PP_FOR_784_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(785, s) BOOST_PP_IIF(c, BOOST_PP_FOR_785, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(785, s), p, o, m) +# define BOOST_PP_FOR_785_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(786, s) BOOST_PP_IIF(c, BOOST_PP_FOR_786, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(786, s), p, o, m) +# define BOOST_PP_FOR_786_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(787, s) BOOST_PP_IIF(c, BOOST_PP_FOR_787, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(787, s), p, o, m) +# define BOOST_PP_FOR_787_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(788, s) BOOST_PP_IIF(c, BOOST_PP_FOR_788, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(788, s), p, o, m) +# define BOOST_PP_FOR_788_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(789, s) BOOST_PP_IIF(c, BOOST_PP_FOR_789, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(789, s), p, o, m) +# define BOOST_PP_FOR_789_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(790, s) BOOST_PP_IIF(c, BOOST_PP_FOR_790, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(790, s), p, o, m) +# define BOOST_PP_FOR_790_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(791, s) BOOST_PP_IIF(c, BOOST_PP_FOR_791, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(791, s), p, o, m) +# define BOOST_PP_FOR_791_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(792, s) BOOST_PP_IIF(c, BOOST_PP_FOR_792, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(792, s), p, o, m) +# define BOOST_PP_FOR_792_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(793, s) BOOST_PP_IIF(c, BOOST_PP_FOR_793, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(793, s), p, o, m) +# define BOOST_PP_FOR_793_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(794, s) BOOST_PP_IIF(c, BOOST_PP_FOR_794, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(794, s), p, o, m) +# define BOOST_PP_FOR_794_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(795, s) BOOST_PP_IIF(c, BOOST_PP_FOR_795, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(795, s), p, o, m) +# define BOOST_PP_FOR_795_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(796, s) BOOST_PP_IIF(c, BOOST_PP_FOR_796, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(796, s), p, o, m) +# define BOOST_PP_FOR_796_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(797, s) BOOST_PP_IIF(c, BOOST_PP_FOR_797, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(797, s), p, o, m) +# define BOOST_PP_FOR_797_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(798, s) BOOST_PP_IIF(c, BOOST_PP_FOR_798, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(798, s), p, o, m) +# define BOOST_PP_FOR_798_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(799, s) BOOST_PP_IIF(c, BOOST_PP_FOR_799, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(799, s), p, o, m) +# define BOOST_PP_FOR_799_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(800, s) BOOST_PP_IIF(c, BOOST_PP_FOR_800, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(800, s), p, o, m) +# define BOOST_PP_FOR_800_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(801, s) BOOST_PP_IIF(c, BOOST_PP_FOR_801, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(801, s), p, o, m) +# define BOOST_PP_FOR_801_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(802, s) BOOST_PP_IIF(c, BOOST_PP_FOR_802, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(802, s), p, o, m) +# define BOOST_PP_FOR_802_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(803, s) BOOST_PP_IIF(c, BOOST_PP_FOR_803, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(803, s), p, o, m) +# define BOOST_PP_FOR_803_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(804, s) BOOST_PP_IIF(c, BOOST_PP_FOR_804, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(804, s), p, o, m) +# define BOOST_PP_FOR_804_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(805, s) BOOST_PP_IIF(c, BOOST_PP_FOR_805, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(805, s), p, o, m) +# define BOOST_PP_FOR_805_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(806, s) BOOST_PP_IIF(c, BOOST_PP_FOR_806, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(806, s), p, o, m) +# define BOOST_PP_FOR_806_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(807, s) BOOST_PP_IIF(c, BOOST_PP_FOR_807, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(807, s), p, o, m) +# define BOOST_PP_FOR_807_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(808, s) BOOST_PP_IIF(c, BOOST_PP_FOR_808, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(808, s), p, o, m) +# define BOOST_PP_FOR_808_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(809, s) BOOST_PP_IIF(c, BOOST_PP_FOR_809, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(809, s), p, o, m) +# define BOOST_PP_FOR_809_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(810, s) BOOST_PP_IIF(c, BOOST_PP_FOR_810, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(810, s), p, o, m) +# define BOOST_PP_FOR_810_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(811, s) BOOST_PP_IIF(c, BOOST_PP_FOR_811, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(811, s), p, o, m) +# define BOOST_PP_FOR_811_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(812, s) BOOST_PP_IIF(c, BOOST_PP_FOR_812, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(812, s), p, o, m) +# define BOOST_PP_FOR_812_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(813, s) BOOST_PP_IIF(c, BOOST_PP_FOR_813, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(813, s), p, o, m) +# define BOOST_PP_FOR_813_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(814, s) BOOST_PP_IIF(c, BOOST_PP_FOR_814, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(814, s), p, o, m) +# define BOOST_PP_FOR_814_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(815, s) BOOST_PP_IIF(c, BOOST_PP_FOR_815, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(815, s), p, o, m) +# define BOOST_PP_FOR_815_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(816, s) BOOST_PP_IIF(c, BOOST_PP_FOR_816, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(816, s), p, o, m) +# define BOOST_PP_FOR_816_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(817, s) BOOST_PP_IIF(c, BOOST_PP_FOR_817, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(817, s), p, o, m) +# define BOOST_PP_FOR_817_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(818, s) BOOST_PP_IIF(c, BOOST_PP_FOR_818, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(818, s), p, o, m) +# define BOOST_PP_FOR_818_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(819, s) BOOST_PP_IIF(c, BOOST_PP_FOR_819, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(819, s), p, o, m) +# define BOOST_PP_FOR_819_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(820, s) BOOST_PP_IIF(c, BOOST_PP_FOR_820, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(820, s), p, o, m) +# define BOOST_PP_FOR_820_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(821, s) BOOST_PP_IIF(c, BOOST_PP_FOR_821, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(821, s), p, o, m) +# define BOOST_PP_FOR_821_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(822, s) BOOST_PP_IIF(c, BOOST_PP_FOR_822, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(822, s), p, o, m) +# define BOOST_PP_FOR_822_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(823, s) BOOST_PP_IIF(c, BOOST_PP_FOR_823, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(823, s), p, o, m) +# define BOOST_PP_FOR_823_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(824, s) BOOST_PP_IIF(c, BOOST_PP_FOR_824, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(824, s), p, o, m) +# define BOOST_PP_FOR_824_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(825, s) BOOST_PP_IIF(c, BOOST_PP_FOR_825, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(825, s), p, o, m) +# define BOOST_PP_FOR_825_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(826, s) BOOST_PP_IIF(c, BOOST_PP_FOR_826, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(826, s), p, o, m) +# define BOOST_PP_FOR_826_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(827, s) BOOST_PP_IIF(c, BOOST_PP_FOR_827, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(827, s), p, o, m) +# define BOOST_PP_FOR_827_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(828, s) BOOST_PP_IIF(c, BOOST_PP_FOR_828, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(828, s), p, o, m) +# define BOOST_PP_FOR_828_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(829, s) BOOST_PP_IIF(c, BOOST_PP_FOR_829, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(829, s), p, o, m) +# define BOOST_PP_FOR_829_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(830, s) BOOST_PP_IIF(c, BOOST_PP_FOR_830, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(830, s), p, o, m) +# define BOOST_PP_FOR_830_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(831, s) BOOST_PP_IIF(c, BOOST_PP_FOR_831, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(831, s), p, o, m) +# define BOOST_PP_FOR_831_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(832, s) BOOST_PP_IIF(c, BOOST_PP_FOR_832, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(832, s), p, o, m) +# define BOOST_PP_FOR_832_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(833, s) BOOST_PP_IIF(c, BOOST_PP_FOR_833, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(833, s), p, o, m) +# define BOOST_PP_FOR_833_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(834, s) BOOST_PP_IIF(c, BOOST_PP_FOR_834, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(834, s), p, o, m) +# define BOOST_PP_FOR_834_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(835, s) BOOST_PP_IIF(c, BOOST_PP_FOR_835, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(835, s), p, o, m) +# define BOOST_PP_FOR_835_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(836, s) BOOST_PP_IIF(c, BOOST_PP_FOR_836, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(836, s), p, o, m) +# define BOOST_PP_FOR_836_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(837, s) BOOST_PP_IIF(c, BOOST_PP_FOR_837, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(837, s), p, o, m) +# define BOOST_PP_FOR_837_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(838, s) BOOST_PP_IIF(c, BOOST_PP_FOR_838, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(838, s), p, o, m) +# define BOOST_PP_FOR_838_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(839, s) BOOST_PP_IIF(c, BOOST_PP_FOR_839, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(839, s), p, o, m) +# define BOOST_PP_FOR_839_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(840, s) BOOST_PP_IIF(c, BOOST_PP_FOR_840, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(840, s), p, o, m) +# define BOOST_PP_FOR_840_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(841, s) BOOST_PP_IIF(c, BOOST_PP_FOR_841, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(841, s), p, o, m) +# define BOOST_PP_FOR_841_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(842, s) BOOST_PP_IIF(c, BOOST_PP_FOR_842, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(842, s), p, o, m) +# define BOOST_PP_FOR_842_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(843, s) BOOST_PP_IIF(c, BOOST_PP_FOR_843, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(843, s), p, o, m) +# define BOOST_PP_FOR_843_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(844, s) BOOST_PP_IIF(c, BOOST_PP_FOR_844, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(844, s), p, o, m) +# define BOOST_PP_FOR_844_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(845, s) BOOST_PP_IIF(c, BOOST_PP_FOR_845, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(845, s), p, o, m) +# define BOOST_PP_FOR_845_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(846, s) BOOST_PP_IIF(c, BOOST_PP_FOR_846, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(846, s), p, o, m) +# define BOOST_PP_FOR_846_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(847, s) BOOST_PP_IIF(c, BOOST_PP_FOR_847, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(847, s), p, o, m) +# define BOOST_PP_FOR_847_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(848, s) BOOST_PP_IIF(c, BOOST_PP_FOR_848, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(848, s), p, o, m) +# define BOOST_PP_FOR_848_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(849, s) BOOST_PP_IIF(c, BOOST_PP_FOR_849, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(849, s), p, o, m) +# define BOOST_PP_FOR_849_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(850, s) BOOST_PP_IIF(c, BOOST_PP_FOR_850, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(850, s), p, o, m) +# define BOOST_PP_FOR_850_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(851, s) BOOST_PP_IIF(c, BOOST_PP_FOR_851, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(851, s), p, o, m) +# define BOOST_PP_FOR_851_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(852, s) BOOST_PP_IIF(c, BOOST_PP_FOR_852, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(852, s), p, o, m) +# define BOOST_PP_FOR_852_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(853, s) BOOST_PP_IIF(c, BOOST_PP_FOR_853, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(853, s), p, o, m) +# define BOOST_PP_FOR_853_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(854, s) BOOST_PP_IIF(c, BOOST_PP_FOR_854, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(854, s), p, o, m) +# define BOOST_PP_FOR_854_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(855, s) BOOST_PP_IIF(c, BOOST_PP_FOR_855, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(855, s), p, o, m) +# define BOOST_PP_FOR_855_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(856, s) BOOST_PP_IIF(c, BOOST_PP_FOR_856, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(856, s), p, o, m) +# define BOOST_PP_FOR_856_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(857, s) BOOST_PP_IIF(c, BOOST_PP_FOR_857, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(857, s), p, o, m) +# define BOOST_PP_FOR_857_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(858, s) BOOST_PP_IIF(c, BOOST_PP_FOR_858, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(858, s), p, o, m) +# define BOOST_PP_FOR_858_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(859, s) BOOST_PP_IIF(c, BOOST_PP_FOR_859, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(859, s), p, o, m) +# define BOOST_PP_FOR_859_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(860, s) BOOST_PP_IIF(c, BOOST_PP_FOR_860, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(860, s), p, o, m) +# define BOOST_PP_FOR_860_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(861, s) BOOST_PP_IIF(c, BOOST_PP_FOR_861, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(861, s), p, o, m) +# define BOOST_PP_FOR_861_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(862, s) BOOST_PP_IIF(c, BOOST_PP_FOR_862, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(862, s), p, o, m) +# define BOOST_PP_FOR_862_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(863, s) BOOST_PP_IIF(c, BOOST_PP_FOR_863, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(863, s), p, o, m) +# define BOOST_PP_FOR_863_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(864, s) BOOST_PP_IIF(c, BOOST_PP_FOR_864, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(864, s), p, o, m) +# define BOOST_PP_FOR_864_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(865, s) BOOST_PP_IIF(c, BOOST_PP_FOR_865, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(865, s), p, o, m) +# define BOOST_PP_FOR_865_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(866, s) BOOST_PP_IIF(c, BOOST_PP_FOR_866, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(866, s), p, o, m) +# define BOOST_PP_FOR_866_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(867, s) BOOST_PP_IIF(c, BOOST_PP_FOR_867, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(867, s), p, o, m) +# define BOOST_PP_FOR_867_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(868, s) BOOST_PP_IIF(c, BOOST_PP_FOR_868, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(868, s), p, o, m) +# define BOOST_PP_FOR_868_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(869, s) BOOST_PP_IIF(c, BOOST_PP_FOR_869, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(869, s), p, o, m) +# define BOOST_PP_FOR_869_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(870, s) BOOST_PP_IIF(c, BOOST_PP_FOR_870, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(870, s), p, o, m) +# define BOOST_PP_FOR_870_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(871, s) BOOST_PP_IIF(c, BOOST_PP_FOR_871, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(871, s), p, o, m) +# define BOOST_PP_FOR_871_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(872, s) BOOST_PP_IIF(c, BOOST_PP_FOR_872, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(872, s), p, o, m) +# define BOOST_PP_FOR_872_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(873, s) BOOST_PP_IIF(c, BOOST_PP_FOR_873, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(873, s), p, o, m) +# define BOOST_PP_FOR_873_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(874, s) BOOST_PP_IIF(c, BOOST_PP_FOR_874, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(874, s), p, o, m) +# define BOOST_PP_FOR_874_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(875, s) BOOST_PP_IIF(c, BOOST_PP_FOR_875, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(875, s), p, o, m) +# define BOOST_PP_FOR_875_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(876, s) BOOST_PP_IIF(c, BOOST_PP_FOR_876, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(876, s), p, o, m) +# define BOOST_PP_FOR_876_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(877, s) BOOST_PP_IIF(c, BOOST_PP_FOR_877, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(877, s), p, o, m) +# define BOOST_PP_FOR_877_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(878, s) BOOST_PP_IIF(c, BOOST_PP_FOR_878, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(878, s), p, o, m) +# define BOOST_PP_FOR_878_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(879, s) BOOST_PP_IIF(c, BOOST_PP_FOR_879, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(879, s), p, o, m) +# define BOOST_PP_FOR_879_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(880, s) BOOST_PP_IIF(c, BOOST_PP_FOR_880, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(880, s), p, o, m) +# define BOOST_PP_FOR_880_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(881, s) BOOST_PP_IIF(c, BOOST_PP_FOR_881, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(881, s), p, o, m) +# define BOOST_PP_FOR_881_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(882, s) BOOST_PP_IIF(c, BOOST_PP_FOR_882, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(882, s), p, o, m) +# define BOOST_PP_FOR_882_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(883, s) BOOST_PP_IIF(c, BOOST_PP_FOR_883, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(883, s), p, o, m) +# define BOOST_PP_FOR_883_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(884, s) BOOST_PP_IIF(c, BOOST_PP_FOR_884, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(884, s), p, o, m) +# define BOOST_PP_FOR_884_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(885, s) BOOST_PP_IIF(c, BOOST_PP_FOR_885, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(885, s), p, o, m) +# define BOOST_PP_FOR_885_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(886, s) BOOST_PP_IIF(c, BOOST_PP_FOR_886, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(886, s), p, o, m) +# define BOOST_PP_FOR_886_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(887, s) BOOST_PP_IIF(c, BOOST_PP_FOR_887, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(887, s), p, o, m) +# define BOOST_PP_FOR_887_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(888, s) BOOST_PP_IIF(c, BOOST_PP_FOR_888, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(888, s), p, o, m) +# define BOOST_PP_FOR_888_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(889, s) BOOST_PP_IIF(c, BOOST_PP_FOR_889, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(889, s), p, o, m) +# define BOOST_PP_FOR_889_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(890, s) BOOST_PP_IIF(c, BOOST_PP_FOR_890, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(890, s), p, o, m) +# define BOOST_PP_FOR_890_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(891, s) BOOST_PP_IIF(c, BOOST_PP_FOR_891, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(891, s), p, o, m) +# define BOOST_PP_FOR_891_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(892, s) BOOST_PP_IIF(c, BOOST_PP_FOR_892, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(892, s), p, o, m) +# define BOOST_PP_FOR_892_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(893, s) BOOST_PP_IIF(c, BOOST_PP_FOR_893, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(893, s), p, o, m) +# define BOOST_PP_FOR_893_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(894, s) BOOST_PP_IIF(c, BOOST_PP_FOR_894, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(894, s), p, o, m) +# define BOOST_PP_FOR_894_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(895, s) BOOST_PP_IIF(c, BOOST_PP_FOR_895, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(895, s), p, o, m) +# define BOOST_PP_FOR_895_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(896, s) BOOST_PP_IIF(c, BOOST_PP_FOR_896, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(896, s), p, o, m) +# define BOOST_PP_FOR_896_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(897, s) BOOST_PP_IIF(c, BOOST_PP_FOR_897, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(897, s), p, o, m) +# define BOOST_PP_FOR_897_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(898, s) BOOST_PP_IIF(c, BOOST_PP_FOR_898, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(898, s), p, o, m) +# define BOOST_PP_FOR_898_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(899, s) BOOST_PP_IIF(c, BOOST_PP_FOR_899, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(899, s), p, o, m) +# define BOOST_PP_FOR_899_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(900, s) BOOST_PP_IIF(c, BOOST_PP_FOR_900, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(900, s), p, o, m) +# define BOOST_PP_FOR_900_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(901, s) BOOST_PP_IIF(c, BOOST_PP_FOR_901, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(901, s), p, o, m) +# define BOOST_PP_FOR_901_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(902, s) BOOST_PP_IIF(c, BOOST_PP_FOR_902, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(902, s), p, o, m) +# define BOOST_PP_FOR_902_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(903, s) BOOST_PP_IIF(c, BOOST_PP_FOR_903, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(903, s), p, o, m) +# define BOOST_PP_FOR_903_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(904, s) BOOST_PP_IIF(c, BOOST_PP_FOR_904, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(904, s), p, o, m) +# define BOOST_PP_FOR_904_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(905, s) BOOST_PP_IIF(c, BOOST_PP_FOR_905, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(905, s), p, o, m) +# define BOOST_PP_FOR_905_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(906, s) BOOST_PP_IIF(c, BOOST_PP_FOR_906, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(906, s), p, o, m) +# define BOOST_PP_FOR_906_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(907, s) BOOST_PP_IIF(c, BOOST_PP_FOR_907, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(907, s), p, o, m) +# define BOOST_PP_FOR_907_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(908, s) BOOST_PP_IIF(c, BOOST_PP_FOR_908, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(908, s), p, o, m) +# define BOOST_PP_FOR_908_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(909, s) BOOST_PP_IIF(c, BOOST_PP_FOR_909, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(909, s), p, o, m) +# define BOOST_PP_FOR_909_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(910, s) BOOST_PP_IIF(c, BOOST_PP_FOR_910, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(910, s), p, o, m) +# define BOOST_PP_FOR_910_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(911, s) BOOST_PP_IIF(c, BOOST_PP_FOR_911, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(911, s), p, o, m) +# define BOOST_PP_FOR_911_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(912, s) BOOST_PP_IIF(c, BOOST_PP_FOR_912, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(912, s), p, o, m) +# define BOOST_PP_FOR_912_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(913, s) BOOST_PP_IIF(c, BOOST_PP_FOR_913, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(913, s), p, o, m) +# define BOOST_PP_FOR_913_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(914, s) BOOST_PP_IIF(c, BOOST_PP_FOR_914, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(914, s), p, o, m) +# define BOOST_PP_FOR_914_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(915, s) BOOST_PP_IIF(c, BOOST_PP_FOR_915, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(915, s), p, o, m) +# define BOOST_PP_FOR_915_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(916, s) BOOST_PP_IIF(c, BOOST_PP_FOR_916, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(916, s), p, o, m) +# define BOOST_PP_FOR_916_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(917, s) BOOST_PP_IIF(c, BOOST_PP_FOR_917, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(917, s), p, o, m) +# define BOOST_PP_FOR_917_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(918, s) BOOST_PP_IIF(c, BOOST_PP_FOR_918, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(918, s), p, o, m) +# define BOOST_PP_FOR_918_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(919, s) BOOST_PP_IIF(c, BOOST_PP_FOR_919, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(919, s), p, o, m) +# define BOOST_PP_FOR_919_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(920, s) BOOST_PP_IIF(c, BOOST_PP_FOR_920, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(920, s), p, o, m) +# define BOOST_PP_FOR_920_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(921, s) BOOST_PP_IIF(c, BOOST_PP_FOR_921, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(921, s), p, o, m) +# define BOOST_PP_FOR_921_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(922, s) BOOST_PP_IIF(c, BOOST_PP_FOR_922, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(922, s), p, o, m) +# define BOOST_PP_FOR_922_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(923, s) BOOST_PP_IIF(c, BOOST_PP_FOR_923, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(923, s), p, o, m) +# define BOOST_PP_FOR_923_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(924, s) BOOST_PP_IIF(c, BOOST_PP_FOR_924, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(924, s), p, o, m) +# define BOOST_PP_FOR_924_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(925, s) BOOST_PP_IIF(c, BOOST_PP_FOR_925, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(925, s), p, o, m) +# define BOOST_PP_FOR_925_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(926, s) BOOST_PP_IIF(c, BOOST_PP_FOR_926, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(926, s), p, o, m) +# define BOOST_PP_FOR_926_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(927, s) BOOST_PP_IIF(c, BOOST_PP_FOR_927, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(927, s), p, o, m) +# define BOOST_PP_FOR_927_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(928, s) BOOST_PP_IIF(c, BOOST_PP_FOR_928, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(928, s), p, o, m) +# define BOOST_PP_FOR_928_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(929, s) BOOST_PP_IIF(c, BOOST_PP_FOR_929, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(929, s), p, o, m) +# define BOOST_PP_FOR_929_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(930, s) BOOST_PP_IIF(c, BOOST_PP_FOR_930, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(930, s), p, o, m) +# define BOOST_PP_FOR_930_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(931, s) BOOST_PP_IIF(c, BOOST_PP_FOR_931, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(931, s), p, o, m) +# define BOOST_PP_FOR_931_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(932, s) BOOST_PP_IIF(c, BOOST_PP_FOR_932, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(932, s), p, o, m) +# define BOOST_PP_FOR_932_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(933, s) BOOST_PP_IIF(c, BOOST_PP_FOR_933, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(933, s), p, o, m) +# define BOOST_PP_FOR_933_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(934, s) BOOST_PP_IIF(c, BOOST_PP_FOR_934, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(934, s), p, o, m) +# define BOOST_PP_FOR_934_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(935, s) BOOST_PP_IIF(c, BOOST_PP_FOR_935, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(935, s), p, o, m) +# define BOOST_PP_FOR_935_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(936, s) BOOST_PP_IIF(c, BOOST_PP_FOR_936, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(936, s), p, o, m) +# define BOOST_PP_FOR_936_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(937, s) BOOST_PP_IIF(c, BOOST_PP_FOR_937, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(937, s), p, o, m) +# define BOOST_PP_FOR_937_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(938, s) BOOST_PP_IIF(c, BOOST_PP_FOR_938, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(938, s), p, o, m) +# define BOOST_PP_FOR_938_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(939, s) BOOST_PP_IIF(c, BOOST_PP_FOR_939, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(939, s), p, o, m) +# define BOOST_PP_FOR_939_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(940, s) BOOST_PP_IIF(c, BOOST_PP_FOR_940, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(940, s), p, o, m) +# define BOOST_PP_FOR_940_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(941, s) BOOST_PP_IIF(c, BOOST_PP_FOR_941, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(941, s), p, o, m) +# define BOOST_PP_FOR_941_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(942, s) BOOST_PP_IIF(c, BOOST_PP_FOR_942, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(942, s), p, o, m) +# define BOOST_PP_FOR_942_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(943, s) BOOST_PP_IIF(c, BOOST_PP_FOR_943, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(943, s), p, o, m) +# define BOOST_PP_FOR_943_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(944, s) BOOST_PP_IIF(c, BOOST_PP_FOR_944, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(944, s), p, o, m) +# define BOOST_PP_FOR_944_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(945, s) BOOST_PP_IIF(c, BOOST_PP_FOR_945, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(945, s), p, o, m) +# define BOOST_PP_FOR_945_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(946, s) BOOST_PP_IIF(c, BOOST_PP_FOR_946, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(946, s), p, o, m) +# define BOOST_PP_FOR_946_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(947, s) BOOST_PP_IIF(c, BOOST_PP_FOR_947, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(947, s), p, o, m) +# define BOOST_PP_FOR_947_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(948, s) BOOST_PP_IIF(c, BOOST_PP_FOR_948, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(948, s), p, o, m) +# define BOOST_PP_FOR_948_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(949, s) BOOST_PP_IIF(c, BOOST_PP_FOR_949, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(949, s), p, o, m) +# define BOOST_PP_FOR_949_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(950, s) BOOST_PP_IIF(c, BOOST_PP_FOR_950, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(950, s), p, o, m) +# define BOOST_PP_FOR_950_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(951, s) BOOST_PP_IIF(c, BOOST_PP_FOR_951, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(951, s), p, o, m) +# define BOOST_PP_FOR_951_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(952, s) BOOST_PP_IIF(c, BOOST_PP_FOR_952, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(952, s), p, o, m) +# define BOOST_PP_FOR_952_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(953, s) BOOST_PP_IIF(c, BOOST_PP_FOR_953, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(953, s), p, o, m) +# define BOOST_PP_FOR_953_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(954, s) BOOST_PP_IIF(c, BOOST_PP_FOR_954, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(954, s), p, o, m) +# define BOOST_PP_FOR_954_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(955, s) BOOST_PP_IIF(c, BOOST_PP_FOR_955, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(955, s), p, o, m) +# define BOOST_PP_FOR_955_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(956, s) BOOST_PP_IIF(c, BOOST_PP_FOR_956, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(956, s), p, o, m) +# define BOOST_PP_FOR_956_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(957, s) BOOST_PP_IIF(c, BOOST_PP_FOR_957, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(957, s), p, o, m) +# define BOOST_PP_FOR_957_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(958, s) BOOST_PP_IIF(c, BOOST_PP_FOR_958, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(958, s), p, o, m) +# define BOOST_PP_FOR_958_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(959, s) BOOST_PP_IIF(c, BOOST_PP_FOR_959, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(959, s), p, o, m) +# define BOOST_PP_FOR_959_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(960, s) BOOST_PP_IIF(c, BOOST_PP_FOR_960, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(960, s), p, o, m) +# define BOOST_PP_FOR_960_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(961, s) BOOST_PP_IIF(c, BOOST_PP_FOR_961, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(961, s), p, o, m) +# define BOOST_PP_FOR_961_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(962, s) BOOST_PP_IIF(c, BOOST_PP_FOR_962, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(962, s), p, o, m) +# define BOOST_PP_FOR_962_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(963, s) BOOST_PP_IIF(c, BOOST_PP_FOR_963, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(963, s), p, o, m) +# define BOOST_PP_FOR_963_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(964, s) BOOST_PP_IIF(c, BOOST_PP_FOR_964, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(964, s), p, o, m) +# define BOOST_PP_FOR_964_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(965, s) BOOST_PP_IIF(c, BOOST_PP_FOR_965, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(965, s), p, o, m) +# define BOOST_PP_FOR_965_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(966, s) BOOST_PP_IIF(c, BOOST_PP_FOR_966, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(966, s), p, o, m) +# define BOOST_PP_FOR_966_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(967, s) BOOST_PP_IIF(c, BOOST_PP_FOR_967, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(967, s), p, o, m) +# define BOOST_PP_FOR_967_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(968, s) BOOST_PP_IIF(c, BOOST_PP_FOR_968, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(968, s), p, o, m) +# define BOOST_PP_FOR_968_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(969, s) BOOST_PP_IIF(c, BOOST_PP_FOR_969, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(969, s), p, o, m) +# define BOOST_PP_FOR_969_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(970, s) BOOST_PP_IIF(c, BOOST_PP_FOR_970, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(970, s), p, o, m) +# define BOOST_PP_FOR_970_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(971, s) BOOST_PP_IIF(c, BOOST_PP_FOR_971, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(971, s), p, o, m) +# define BOOST_PP_FOR_971_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(972, s) BOOST_PP_IIF(c, BOOST_PP_FOR_972, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(972, s), p, o, m) +# define BOOST_PP_FOR_972_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(973, s) BOOST_PP_IIF(c, BOOST_PP_FOR_973, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(973, s), p, o, m) +# define BOOST_PP_FOR_973_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(974, s) BOOST_PP_IIF(c, BOOST_PP_FOR_974, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(974, s), p, o, m) +# define BOOST_PP_FOR_974_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(975, s) BOOST_PP_IIF(c, BOOST_PP_FOR_975, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(975, s), p, o, m) +# define BOOST_PP_FOR_975_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(976, s) BOOST_PP_IIF(c, BOOST_PP_FOR_976, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(976, s), p, o, m) +# define BOOST_PP_FOR_976_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(977, s) BOOST_PP_IIF(c, BOOST_PP_FOR_977, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(977, s), p, o, m) +# define BOOST_PP_FOR_977_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(978, s) BOOST_PP_IIF(c, BOOST_PP_FOR_978, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(978, s), p, o, m) +# define BOOST_PP_FOR_978_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(979, s) BOOST_PP_IIF(c, BOOST_PP_FOR_979, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(979, s), p, o, m) +# define BOOST_PP_FOR_979_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(980, s) BOOST_PP_IIF(c, BOOST_PP_FOR_980, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(980, s), p, o, m) +# define BOOST_PP_FOR_980_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(981, s) BOOST_PP_IIF(c, BOOST_PP_FOR_981, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(981, s), p, o, m) +# define BOOST_PP_FOR_981_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(982, s) BOOST_PP_IIF(c, BOOST_PP_FOR_982, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(982, s), p, o, m) +# define BOOST_PP_FOR_982_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(983, s) BOOST_PP_IIF(c, BOOST_PP_FOR_983, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(983, s), p, o, m) +# define BOOST_PP_FOR_983_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(984, s) BOOST_PP_IIF(c, BOOST_PP_FOR_984, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(984, s), p, o, m) +# define BOOST_PP_FOR_984_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(985, s) BOOST_PP_IIF(c, BOOST_PP_FOR_985, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(985, s), p, o, m) +# define BOOST_PP_FOR_985_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(986, s) BOOST_PP_IIF(c, BOOST_PP_FOR_986, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(986, s), p, o, m) +# define BOOST_PP_FOR_986_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(987, s) BOOST_PP_IIF(c, BOOST_PP_FOR_987, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(987, s), p, o, m) +# define BOOST_PP_FOR_987_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(988, s) BOOST_PP_IIF(c, BOOST_PP_FOR_988, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(988, s), p, o, m) +# define BOOST_PP_FOR_988_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(989, s) BOOST_PP_IIF(c, BOOST_PP_FOR_989, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(989, s), p, o, m) +# define BOOST_PP_FOR_989_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(990, s) BOOST_PP_IIF(c, BOOST_PP_FOR_990, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(990, s), p, o, m) +# define BOOST_PP_FOR_990_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(991, s) BOOST_PP_IIF(c, BOOST_PP_FOR_991, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(991, s), p, o, m) +# define BOOST_PP_FOR_991_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(992, s) BOOST_PP_IIF(c, BOOST_PP_FOR_992, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(992, s), p, o, m) +# define BOOST_PP_FOR_992_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(993, s) BOOST_PP_IIF(c, BOOST_PP_FOR_993, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(993, s), p, o, m) +# define BOOST_PP_FOR_993_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(994, s) BOOST_PP_IIF(c, BOOST_PP_FOR_994, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(994, s), p, o, m) +# define BOOST_PP_FOR_994_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(995, s) BOOST_PP_IIF(c, BOOST_PP_FOR_995, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(995, s), p, o, m) +# define BOOST_PP_FOR_995_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(996, s) BOOST_PP_IIF(c, BOOST_PP_FOR_996, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(996, s), p, o, m) +# define BOOST_PP_FOR_996_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(997, s) BOOST_PP_IIF(c, BOOST_PP_FOR_997, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(997, s), p, o, m) +# define BOOST_PP_FOR_997_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(998, s) BOOST_PP_IIF(c, BOOST_PP_FOR_998, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(998, s), p, o, m) +# define BOOST_PP_FOR_998_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(999, s) BOOST_PP_IIF(c, BOOST_PP_FOR_999, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(999, s), p, o, m) +# define BOOST_PP_FOR_999_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1000, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1000, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1000, s), p, o, m) +# define BOOST_PP_FOR_1000_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1001, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1001, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1001, s), p, o, m) +# define BOOST_PP_FOR_1001_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1002, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1002, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1002, s), p, o, m) +# define BOOST_PP_FOR_1002_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1003, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1003, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1003, s), p, o, m) +# define BOOST_PP_FOR_1003_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1004, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1004, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1004, s), p, o, m) +# define BOOST_PP_FOR_1004_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1005, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1005, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1005, s), p, o, m) +# define BOOST_PP_FOR_1005_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1006, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1006, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1006, s), p, o, m) +# define BOOST_PP_FOR_1006_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1007, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1007, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1007, s), p, o, m) +# define BOOST_PP_FOR_1007_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1008, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1008, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1008, s), p, o, m) +# define BOOST_PP_FOR_1008_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1009, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1009, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1009, s), p, o, m) +# define BOOST_PP_FOR_1009_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1010, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1010, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1010, s), p, o, m) +# define BOOST_PP_FOR_1010_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1011, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1011, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1011, s), p, o, m) +# define BOOST_PP_FOR_1011_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1012, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1012, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1012, s), p, o, m) +# define BOOST_PP_FOR_1012_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1013, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1013, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1013, s), p, o, m) +# define BOOST_PP_FOR_1013_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1014, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1014, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1014, s), p, o, m) +# define BOOST_PP_FOR_1014_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1015, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1015, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1015, s), p, o, m) +# define BOOST_PP_FOR_1015_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1016, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1016, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1016, s), p, o, m) +# define BOOST_PP_FOR_1016_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1017, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1017, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1017, s), p, o, m) +# define BOOST_PP_FOR_1017_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1018, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1018, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1018, s), p, o, m) +# define BOOST_PP_FOR_1018_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1019, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1019, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1019, s), p, o, m) +# define BOOST_PP_FOR_1019_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1020, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1020, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1020, s), p, o, m) +# define BOOST_PP_FOR_1020_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1021, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1021, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1021, s), p, o, m) +# define BOOST_PP_FOR_1021_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1022, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1022, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1022, s), p, o, m) +# define BOOST_PP_FOR_1022_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1023, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1023, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1023, s), p, o, m) +# define BOOST_PP_FOR_1023_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1024, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1024, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1024, s), p, o, m) +# define BOOST_PP_FOR_1024_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1025, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1025, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1025, s), p, o, m) +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/detail/limits/for_256.hpp b/src/boost/boost/preprocessor/repetition/detail/limits/for_256.hpp new file mode 100644 index 000000000..f1fb63f44 --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/detail/limits/for_256.hpp @@ -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_REPETITION_DETAIL_FOR_256_HPP +# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_256_HPP +# +# define BOOST_PP_FOR_0(s, p, o, m) BOOST_PP_FOR_0_C(BOOST_PP_BOOL(p(1, s)), s, p, o, m) +# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_C(BOOST_PP_BOOL(p(2, s)), s, p, o, m) +# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_C(BOOST_PP_BOOL(p(3, s)), s, p, o, m) +# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_C(BOOST_PP_BOOL(p(4, s)), s, p, o, m) +# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_C(BOOST_PP_BOOL(p(5, s)), s, p, o, m) +# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_C(BOOST_PP_BOOL(p(6, s)), s, p, o, m) +# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_C(BOOST_PP_BOOL(p(7, s)), s, p, o, m) +# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_C(BOOST_PP_BOOL(p(8, s)), s, p, o, m) +# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_C(BOOST_PP_BOOL(p(9, s)), s, p, o, m) +# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_C(BOOST_PP_BOOL(p(10, s)), s, p, o, m) +# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_C(BOOST_PP_BOOL(p(11, s)), s, p, o, m) +# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_C(BOOST_PP_BOOL(p(12, s)), s, p, o, m) +# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_C(BOOST_PP_BOOL(p(13, s)), s, p, o, m) +# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_C(BOOST_PP_BOOL(p(14, s)), s, p, o, m) +# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_C(BOOST_PP_BOOL(p(15, s)), s, p, o, m) +# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_C(BOOST_PP_BOOL(p(16, s)), s, p, o, m) +# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_C(BOOST_PP_BOOL(p(17, s)), s, p, o, m) +# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_C(BOOST_PP_BOOL(p(18, s)), s, p, o, m) +# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_C(BOOST_PP_BOOL(p(19, s)), s, p, o, m) +# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_C(BOOST_PP_BOOL(p(20, s)), s, p, o, m) +# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_C(BOOST_PP_BOOL(p(21, s)), s, p, o, m) +# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_C(BOOST_PP_BOOL(p(22, s)), s, p, o, m) +# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_C(BOOST_PP_BOOL(p(23, s)), s, p, o, m) +# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_C(BOOST_PP_BOOL(p(24, s)), s, p, o, m) +# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_C(BOOST_PP_BOOL(p(25, s)), s, p, o, m) +# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_C(BOOST_PP_BOOL(p(26, s)), s, p, o, m) +# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_C(BOOST_PP_BOOL(p(27, s)), s, p, o, m) +# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_C(BOOST_PP_BOOL(p(28, s)), s, p, o, m) +# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_C(BOOST_PP_BOOL(p(29, s)), s, p, o, m) +# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_C(BOOST_PP_BOOL(p(30, s)), s, p, o, m) +# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_C(BOOST_PP_BOOL(p(31, s)), s, p, o, m) +# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_C(BOOST_PP_BOOL(p(32, s)), s, p, o, m) +# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_C(BOOST_PP_BOOL(p(33, s)), s, p, o, m) +# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_C(BOOST_PP_BOOL(p(34, s)), s, p, o, m) +# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_C(BOOST_PP_BOOL(p(35, s)), s, p, o, m) +# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_C(BOOST_PP_BOOL(p(36, s)), s, p, o, m) +# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_C(BOOST_PP_BOOL(p(37, s)), s, p, o, m) +# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_C(BOOST_PP_BOOL(p(38, s)), s, p, o, m) +# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_C(BOOST_PP_BOOL(p(39, s)), s, p, o, m) +# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_C(BOOST_PP_BOOL(p(40, s)), s, p, o, m) +# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_C(BOOST_PP_BOOL(p(41, s)), s, p, o, m) +# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_C(BOOST_PP_BOOL(p(42, s)), s, p, o, m) +# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_C(BOOST_PP_BOOL(p(43, s)), s, p, o, m) +# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_C(BOOST_PP_BOOL(p(44, s)), s, p, o, m) +# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_C(BOOST_PP_BOOL(p(45, s)), s, p, o, m) +# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_C(BOOST_PP_BOOL(p(46, s)), s, p, o, m) +# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_C(BOOST_PP_BOOL(p(47, s)), s, p, o, m) +# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_C(BOOST_PP_BOOL(p(48, s)), s, p, o, m) +# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_C(BOOST_PP_BOOL(p(49, s)), s, p, o, m) +# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_C(BOOST_PP_BOOL(p(50, s)), s, p, o, m) +# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_C(BOOST_PP_BOOL(p(51, s)), s, p, o, m) +# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_C(BOOST_PP_BOOL(p(52, s)), s, p, o, m) +# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_C(BOOST_PP_BOOL(p(53, s)), s, p, o, m) +# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_C(BOOST_PP_BOOL(p(54, s)), s, p, o, m) +# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_C(BOOST_PP_BOOL(p(55, s)), s, p, o, m) +# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_C(BOOST_PP_BOOL(p(56, s)), s, p, o, m) +# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_C(BOOST_PP_BOOL(p(57, s)), s, p, o, m) +# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_C(BOOST_PP_BOOL(p(58, s)), s, p, o, m) +# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_C(BOOST_PP_BOOL(p(59, s)), s, p, o, m) +# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_C(BOOST_PP_BOOL(p(60, s)), s, p, o, m) +# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_C(BOOST_PP_BOOL(p(61, s)), s, p, o, m) +# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_C(BOOST_PP_BOOL(p(62, s)), s, p, o, m) +# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_C(BOOST_PP_BOOL(p(63, s)), s, p, o, m) +# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_C(BOOST_PP_BOOL(p(64, s)), s, p, o, m) +# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_C(BOOST_PP_BOOL(p(65, s)), s, p, o, m) +# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_C(BOOST_PP_BOOL(p(66, s)), s, p, o, m) +# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_C(BOOST_PP_BOOL(p(67, s)), s, p, o, m) +# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_C(BOOST_PP_BOOL(p(68, s)), s, p, o, m) +# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_C(BOOST_PP_BOOL(p(69, s)), s, p, o, m) +# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_C(BOOST_PP_BOOL(p(70, s)), s, p, o, m) +# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_C(BOOST_PP_BOOL(p(71, s)), s, p, o, m) +# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_C(BOOST_PP_BOOL(p(72, s)), s, p, o, m) +# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_C(BOOST_PP_BOOL(p(73, s)), s, p, o, m) +# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_C(BOOST_PP_BOOL(p(74, s)), s, p, o, m) +# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_C(BOOST_PP_BOOL(p(75, s)), s, p, o, m) +# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_C(BOOST_PP_BOOL(p(76, s)), s, p, o, m) +# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_C(BOOST_PP_BOOL(p(77, s)), s, p, o, m) +# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_C(BOOST_PP_BOOL(p(78, s)), s, p, o, m) +# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_C(BOOST_PP_BOOL(p(79, s)), s, p, o, m) +# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_C(BOOST_PP_BOOL(p(80, s)), s, p, o, m) +# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_C(BOOST_PP_BOOL(p(81, s)), s, p, o, m) +# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_C(BOOST_PP_BOOL(p(82, s)), s, p, o, m) +# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_C(BOOST_PP_BOOL(p(83, s)), s, p, o, m) +# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_C(BOOST_PP_BOOL(p(84, s)), s, p, o, m) +# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_C(BOOST_PP_BOOL(p(85, s)), s, p, o, m) +# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_C(BOOST_PP_BOOL(p(86, s)), s, p, o, m) +# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_C(BOOST_PP_BOOL(p(87, s)), s, p, o, m) +# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_C(BOOST_PP_BOOL(p(88, s)), s, p, o, m) +# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_C(BOOST_PP_BOOL(p(89, s)), s, p, o, m) +# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_C(BOOST_PP_BOOL(p(90, s)), s, p, o, m) +# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_C(BOOST_PP_BOOL(p(91, s)), s, p, o, m) +# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_C(BOOST_PP_BOOL(p(92, s)), s, p, o, m) +# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_C(BOOST_PP_BOOL(p(93, s)), s, p, o, m) +# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_C(BOOST_PP_BOOL(p(94, s)), s, p, o, m) +# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_C(BOOST_PP_BOOL(p(95, s)), s, p, o, m) +# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_C(BOOST_PP_BOOL(p(96, s)), s, p, o, m) +# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_C(BOOST_PP_BOOL(p(97, s)), s, p, o, m) +# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_C(BOOST_PP_BOOL(p(98, s)), s, p, o, m) +# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_C(BOOST_PP_BOOL(p(99, s)), s, p, o, m) +# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_C(BOOST_PP_BOOL(p(100, s)), s, p, o, m) +# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_C(BOOST_PP_BOOL(p(101, s)), s, p, o, m) +# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_C(BOOST_PP_BOOL(p(102, s)), s, p, o, m) +# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_C(BOOST_PP_BOOL(p(103, s)), s, p, o, m) +# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_C(BOOST_PP_BOOL(p(104, s)), s, p, o, m) +# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_C(BOOST_PP_BOOL(p(105, s)), s, p, o, m) +# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_C(BOOST_PP_BOOL(p(106, s)), s, p, o, m) +# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_C(BOOST_PP_BOOL(p(107, s)), s, p, o, m) +# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_C(BOOST_PP_BOOL(p(108, s)), s, p, o, m) +# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_C(BOOST_PP_BOOL(p(109, s)), s, p, o, m) +# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_C(BOOST_PP_BOOL(p(110, s)), s, p, o, m) +# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_C(BOOST_PP_BOOL(p(111, s)), s, p, o, m) +# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_C(BOOST_PP_BOOL(p(112, s)), s, p, o, m) +# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_C(BOOST_PP_BOOL(p(113, s)), s, p, o, m) +# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_C(BOOST_PP_BOOL(p(114, s)), s, p, o, m) +# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_C(BOOST_PP_BOOL(p(115, s)), s, p, o, m) +# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_C(BOOST_PP_BOOL(p(116, s)), s, p, o, m) +# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_C(BOOST_PP_BOOL(p(117, s)), s, p, o, m) +# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_C(BOOST_PP_BOOL(p(118, s)), s, p, o, m) +# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_C(BOOST_PP_BOOL(p(119, s)), s, p, o, m) +# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_C(BOOST_PP_BOOL(p(120, s)), s, p, o, m) +# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_C(BOOST_PP_BOOL(p(121, s)), s, p, o, m) +# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_C(BOOST_PP_BOOL(p(122, s)), s, p, o, m) +# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_C(BOOST_PP_BOOL(p(123, s)), s, p, o, m) +# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_C(BOOST_PP_BOOL(p(124, s)), s, p, o, m) +# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_C(BOOST_PP_BOOL(p(125, s)), s, p, o, m) +# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_C(BOOST_PP_BOOL(p(126, s)), s, p, o, m) +# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_C(BOOST_PP_BOOL(p(127, s)), s, p, o, m) +# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_C(BOOST_PP_BOOL(p(128, s)), s, p, o, m) +# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_C(BOOST_PP_BOOL(p(129, s)), s, p, o, m) +# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_C(BOOST_PP_BOOL(p(130, s)), s, p, o, m) +# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_C(BOOST_PP_BOOL(p(131, s)), s, p, o, m) +# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_C(BOOST_PP_BOOL(p(132, s)), s, p, o, m) +# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_C(BOOST_PP_BOOL(p(133, s)), s, p, o, m) +# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_C(BOOST_PP_BOOL(p(134, s)), s, p, o, m) +# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_C(BOOST_PP_BOOL(p(135, s)), s, p, o, m) +# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_C(BOOST_PP_BOOL(p(136, s)), s, p, o, m) +# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_C(BOOST_PP_BOOL(p(137, s)), s, p, o, m) +# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_C(BOOST_PP_BOOL(p(138, s)), s, p, o, m) +# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_C(BOOST_PP_BOOL(p(139, s)), s, p, o, m) +# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_C(BOOST_PP_BOOL(p(140, s)), s, p, o, m) +# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_C(BOOST_PP_BOOL(p(141, s)), s, p, o, m) +# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_C(BOOST_PP_BOOL(p(142, s)), s, p, o, m) +# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_C(BOOST_PP_BOOL(p(143, s)), s, p, o, m) +# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_C(BOOST_PP_BOOL(p(144, s)), s, p, o, m) +# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_C(BOOST_PP_BOOL(p(145, s)), s, p, o, m) +# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_C(BOOST_PP_BOOL(p(146, s)), s, p, o, m) +# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_C(BOOST_PP_BOOL(p(147, s)), s, p, o, m) +# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_C(BOOST_PP_BOOL(p(148, s)), s, p, o, m) +# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_C(BOOST_PP_BOOL(p(149, s)), s, p, o, m) +# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_C(BOOST_PP_BOOL(p(150, s)), s, p, o, m) +# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_C(BOOST_PP_BOOL(p(151, s)), s, p, o, m) +# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_C(BOOST_PP_BOOL(p(152, s)), s, p, o, m) +# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_C(BOOST_PP_BOOL(p(153, s)), s, p, o, m) +# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_C(BOOST_PP_BOOL(p(154, s)), s, p, o, m) +# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_C(BOOST_PP_BOOL(p(155, s)), s, p, o, m) +# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_C(BOOST_PP_BOOL(p(156, s)), s, p, o, m) +# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_C(BOOST_PP_BOOL(p(157, s)), s, p, o, m) +# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_C(BOOST_PP_BOOL(p(158, s)), s, p, o, m) +# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_C(BOOST_PP_BOOL(p(159, s)), s, p, o, m) +# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_C(BOOST_PP_BOOL(p(160, s)), s, p, o, m) +# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_C(BOOST_PP_BOOL(p(161, s)), s, p, o, m) +# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_C(BOOST_PP_BOOL(p(162, s)), s, p, o, m) +# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_C(BOOST_PP_BOOL(p(163, s)), s, p, o, m) +# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_C(BOOST_PP_BOOL(p(164, s)), s, p, o, m) +# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_C(BOOST_PP_BOOL(p(165, s)), s, p, o, m) +# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_C(BOOST_PP_BOOL(p(166, s)), s, p, o, m) +# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_C(BOOST_PP_BOOL(p(167, s)), s, p, o, m) +# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_C(BOOST_PP_BOOL(p(168, s)), s, p, o, m) +# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_C(BOOST_PP_BOOL(p(169, s)), s, p, o, m) +# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_C(BOOST_PP_BOOL(p(170, s)), s, p, o, m) +# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_C(BOOST_PP_BOOL(p(171, s)), s, p, o, m) +# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_C(BOOST_PP_BOOL(p(172, s)), s, p, o, m) +# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_C(BOOST_PP_BOOL(p(173, s)), s, p, o, m) +# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_C(BOOST_PP_BOOL(p(174, s)), s, p, o, m) +# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_C(BOOST_PP_BOOL(p(175, s)), s, p, o, m) +# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_C(BOOST_PP_BOOL(p(176, s)), s, p, o, m) +# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_C(BOOST_PP_BOOL(p(177, s)), s, p, o, m) +# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_C(BOOST_PP_BOOL(p(178, s)), s, p, o, m) +# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_C(BOOST_PP_BOOL(p(179, s)), s, p, o, m) +# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_C(BOOST_PP_BOOL(p(180, s)), s, p, o, m) +# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_C(BOOST_PP_BOOL(p(181, s)), s, p, o, m) +# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_C(BOOST_PP_BOOL(p(182, s)), s, p, o, m) +# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_C(BOOST_PP_BOOL(p(183, s)), s, p, o, m) +# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_C(BOOST_PP_BOOL(p(184, s)), s, p, o, m) +# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_C(BOOST_PP_BOOL(p(185, s)), s, p, o, m) +# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_C(BOOST_PP_BOOL(p(186, s)), s, p, o, m) +# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_C(BOOST_PP_BOOL(p(187, s)), s, p, o, m) +# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_C(BOOST_PP_BOOL(p(188, s)), s, p, o, m) +# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_C(BOOST_PP_BOOL(p(189, s)), s, p, o, m) +# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_C(BOOST_PP_BOOL(p(190, s)), s, p, o, m) +# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_C(BOOST_PP_BOOL(p(191, s)), s, p, o, m) +# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_C(BOOST_PP_BOOL(p(192, s)), s, p, o, m) +# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_C(BOOST_PP_BOOL(p(193, s)), s, p, o, m) +# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_C(BOOST_PP_BOOL(p(194, s)), s, p, o, m) +# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_C(BOOST_PP_BOOL(p(195, s)), s, p, o, m) +# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_C(BOOST_PP_BOOL(p(196, s)), s, p, o, m) +# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_C(BOOST_PP_BOOL(p(197, s)), s, p, o, m) +# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_C(BOOST_PP_BOOL(p(198, s)), s, p, o, m) +# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_C(BOOST_PP_BOOL(p(199, s)), s, p, o, m) +# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_C(BOOST_PP_BOOL(p(200, s)), s, p, o, m) +# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_C(BOOST_PP_BOOL(p(201, s)), s, p, o, m) +# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_C(BOOST_PP_BOOL(p(202, s)), s, p, o, m) +# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_C(BOOST_PP_BOOL(p(203, s)), s, p, o, m) +# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_C(BOOST_PP_BOOL(p(204, s)), s, p, o, m) +# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_C(BOOST_PP_BOOL(p(205, s)), s, p, o, m) +# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_C(BOOST_PP_BOOL(p(206, s)), s, p, o, m) +# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_C(BOOST_PP_BOOL(p(207, s)), s, p, o, m) +# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_C(BOOST_PP_BOOL(p(208, s)), s, p, o, m) +# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_C(BOOST_PP_BOOL(p(209, s)), s, p, o, m) +# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_C(BOOST_PP_BOOL(p(210, s)), s, p, o, m) +# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_C(BOOST_PP_BOOL(p(211, s)), s, p, o, m) +# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_C(BOOST_PP_BOOL(p(212, s)), s, p, o, m) +# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_C(BOOST_PP_BOOL(p(213, s)), s, p, o, m) +# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_C(BOOST_PP_BOOL(p(214, s)), s, p, o, m) +# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_C(BOOST_PP_BOOL(p(215, s)), s, p, o, m) +# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_C(BOOST_PP_BOOL(p(216, s)), s, p, o, m) +# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_C(BOOST_PP_BOOL(p(217, s)), s, p, o, m) +# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_C(BOOST_PP_BOOL(p(218, s)), s, p, o, m) +# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_C(BOOST_PP_BOOL(p(219, s)), s, p, o, m) +# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_C(BOOST_PP_BOOL(p(220, s)), s, p, o, m) +# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_C(BOOST_PP_BOOL(p(221, s)), s, p, o, m) +# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_C(BOOST_PP_BOOL(p(222, s)), s, p, o, m) +# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_C(BOOST_PP_BOOL(p(223, s)), s, p, o, m) +# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_C(BOOST_PP_BOOL(p(224, s)), s, p, o, m) +# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_C(BOOST_PP_BOOL(p(225, s)), s, p, o, m) +# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_C(BOOST_PP_BOOL(p(226, s)), s, p, o, m) +# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_C(BOOST_PP_BOOL(p(227, s)), s, p, o, m) +# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_C(BOOST_PP_BOOL(p(228, s)), s, p, o, m) +# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_C(BOOST_PP_BOOL(p(229, s)), s, p, o, m) +# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_C(BOOST_PP_BOOL(p(230, s)), s, p, o, m) +# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_C(BOOST_PP_BOOL(p(231, s)), s, p, o, m) +# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_C(BOOST_PP_BOOL(p(232, s)), s, p, o, m) +# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_C(BOOST_PP_BOOL(p(233, s)), s, p, o, m) +# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_C(BOOST_PP_BOOL(p(234, s)), s, p, o, m) +# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_C(BOOST_PP_BOOL(p(235, s)), s, p, o, m) +# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_C(BOOST_PP_BOOL(p(236, s)), s, p, o, m) +# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_C(BOOST_PP_BOOL(p(237, s)), s, p, o, m) +# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_C(BOOST_PP_BOOL(p(238, s)), s, p, o, m) +# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_C(BOOST_PP_BOOL(p(239, s)), s, p, o, m) +# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_C(BOOST_PP_BOOL(p(240, s)), s, p, o, m) +# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_C(BOOST_PP_BOOL(p(241, s)), s, p, o, m) +# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_C(BOOST_PP_BOOL(p(242, s)), s, p, o, m) +# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_C(BOOST_PP_BOOL(p(243, s)), s, p, o, m) +# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_C(BOOST_PP_BOOL(p(244, s)), s, p, o, m) +# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_C(BOOST_PP_BOOL(p(245, s)), s, p, o, m) +# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_C(BOOST_PP_BOOL(p(246, s)), s, p, o, m) +# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_C(BOOST_PP_BOOL(p(247, s)), s, p, o, m) +# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_C(BOOST_PP_BOOL(p(248, s)), s, p, o, m) +# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_C(BOOST_PP_BOOL(p(249, s)), s, p, o, m) +# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_C(BOOST_PP_BOOL(p(250, s)), s, p, o, m) +# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_C(BOOST_PP_BOOL(p(251, s)), s, p, o, m) +# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_C(BOOST_PP_BOOL(p(252, s)), s, p, o, m) +# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_C(BOOST_PP_BOOL(p(253, s)), s, p, o, m) +# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_C(BOOST_PP_BOOL(p(254, s)), s, p, o, m) +# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_C(BOOST_PP_BOOL(p(255, s)), s, p, o, m) +# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_C(BOOST_PP_BOOL(p(256, s)), s, p, o, m) +# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_C(BOOST_PP_BOOL(p(257, s)), s, p, o, m) +# +# define BOOST_PP_FOR_0_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(1, s) BOOST_PP_IIF(c, BOOST_PP_FOR_1, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(1, s), p, o, m) +# define BOOST_PP_FOR_1_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IIF(c, BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(2, s), p, o, m) +# define BOOST_PP_FOR_2_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IIF(c, BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(3, s), p, o, m) +# define BOOST_PP_FOR_3_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IIF(c, BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(4, s), p, o, m) +# define BOOST_PP_FOR_4_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IIF(c, BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(5, s), p, o, m) +# define BOOST_PP_FOR_5_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IIF(c, BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(6, s), p, o, m) +# define BOOST_PP_FOR_6_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IIF(c, BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(7, s), p, o, m) +# define BOOST_PP_FOR_7_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IIF(c, BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(8, s), p, o, m) +# define BOOST_PP_FOR_8_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IIF(c, BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(9, s), p, o, m) +# define BOOST_PP_FOR_9_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IIF(c, BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(10, s), p, o, m) +# define BOOST_PP_FOR_10_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IIF(c, BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(11, s), p, o, m) +# define BOOST_PP_FOR_11_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IIF(c, BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(12, s), p, o, m) +# define BOOST_PP_FOR_12_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IIF(c, BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(13, s), p, o, m) +# define BOOST_PP_FOR_13_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IIF(c, BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(14, s), p, o, m) +# define BOOST_PP_FOR_14_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IIF(c, BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(15, s), p, o, m) +# define BOOST_PP_FOR_15_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IIF(c, BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(16, s), p, o, m) +# define BOOST_PP_FOR_16_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IIF(c, BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(17, s), p, o, m) +# define BOOST_PP_FOR_17_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IIF(c, BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(18, s), p, o, m) +# define BOOST_PP_FOR_18_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IIF(c, BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(19, s), p, o, m) +# define BOOST_PP_FOR_19_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IIF(c, BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(20, s), p, o, m) +# define BOOST_PP_FOR_20_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IIF(c, BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(21, s), p, o, m) +# define BOOST_PP_FOR_21_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IIF(c, BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(22, s), p, o, m) +# define BOOST_PP_FOR_22_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IIF(c, BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(23, s), p, o, m) +# define BOOST_PP_FOR_23_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IIF(c, BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(24, s), p, o, m) +# define BOOST_PP_FOR_24_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IIF(c, BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(25, s), p, o, m) +# define BOOST_PP_FOR_25_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IIF(c, BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(26, s), p, o, m) +# define BOOST_PP_FOR_26_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IIF(c, BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(27, s), p, o, m) +# define BOOST_PP_FOR_27_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IIF(c, BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(28, s), p, o, m) +# define BOOST_PP_FOR_28_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IIF(c, BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(29, s), p, o, m) +# define BOOST_PP_FOR_29_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IIF(c, BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(30, s), p, o, m) +# define BOOST_PP_FOR_30_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IIF(c, BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(31, s), p, o, m) +# define BOOST_PP_FOR_31_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IIF(c, BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(32, s), p, o, m) +# define BOOST_PP_FOR_32_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IIF(c, BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(33, s), p, o, m) +# define BOOST_PP_FOR_33_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IIF(c, BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(34, s), p, o, m) +# define BOOST_PP_FOR_34_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IIF(c, BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(35, s), p, o, m) +# define BOOST_PP_FOR_35_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IIF(c, BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(36, s), p, o, m) +# define BOOST_PP_FOR_36_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IIF(c, BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(37, s), p, o, m) +# define BOOST_PP_FOR_37_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IIF(c, BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(38, s), p, o, m) +# define BOOST_PP_FOR_38_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IIF(c, BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(39, s), p, o, m) +# define BOOST_PP_FOR_39_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IIF(c, BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(40, s), p, o, m) +# define BOOST_PP_FOR_40_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IIF(c, BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(41, s), p, o, m) +# define BOOST_PP_FOR_41_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IIF(c, BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(42, s), p, o, m) +# define BOOST_PP_FOR_42_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IIF(c, BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(43, s), p, o, m) +# define BOOST_PP_FOR_43_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IIF(c, BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(44, s), p, o, m) +# define BOOST_PP_FOR_44_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IIF(c, BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(45, s), p, o, m) +# define BOOST_PP_FOR_45_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IIF(c, BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(46, s), p, o, m) +# define BOOST_PP_FOR_46_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IIF(c, BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(47, s), p, o, m) +# define BOOST_PP_FOR_47_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IIF(c, BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(48, s), p, o, m) +# define BOOST_PP_FOR_48_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IIF(c, BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(49, s), p, o, m) +# define BOOST_PP_FOR_49_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IIF(c, BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(50, s), p, o, m) +# define BOOST_PP_FOR_50_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IIF(c, BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(51, s), p, o, m) +# define BOOST_PP_FOR_51_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IIF(c, BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(52, s), p, o, m) +# define BOOST_PP_FOR_52_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IIF(c, BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(53, s), p, o, m) +# define BOOST_PP_FOR_53_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IIF(c, BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(54, s), p, o, m) +# define BOOST_PP_FOR_54_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IIF(c, BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(55, s), p, o, m) +# define BOOST_PP_FOR_55_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IIF(c, BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(56, s), p, o, m) +# define BOOST_PP_FOR_56_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IIF(c, BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(57, s), p, o, m) +# define BOOST_PP_FOR_57_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IIF(c, BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(58, s), p, o, m) +# define BOOST_PP_FOR_58_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IIF(c, BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(59, s), p, o, m) +# define BOOST_PP_FOR_59_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IIF(c, BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(60, s), p, o, m) +# define BOOST_PP_FOR_60_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IIF(c, BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(61, s), p, o, m) +# define BOOST_PP_FOR_61_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IIF(c, BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(62, s), p, o, m) +# define BOOST_PP_FOR_62_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IIF(c, BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(63, s), p, o, m) +# define BOOST_PP_FOR_63_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IIF(c, BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(64, s), p, o, m) +# define BOOST_PP_FOR_64_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IIF(c, BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(65, s), p, o, m) +# define BOOST_PP_FOR_65_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IIF(c, BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(66, s), p, o, m) +# define BOOST_PP_FOR_66_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IIF(c, BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(67, s), p, o, m) +# define BOOST_PP_FOR_67_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IIF(c, BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(68, s), p, o, m) +# define BOOST_PP_FOR_68_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IIF(c, BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(69, s), p, o, m) +# define BOOST_PP_FOR_69_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IIF(c, BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(70, s), p, o, m) +# define BOOST_PP_FOR_70_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IIF(c, BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(71, s), p, o, m) +# define BOOST_PP_FOR_71_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IIF(c, BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(72, s), p, o, m) +# define BOOST_PP_FOR_72_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IIF(c, BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(73, s), p, o, m) +# define BOOST_PP_FOR_73_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IIF(c, BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(74, s), p, o, m) +# define BOOST_PP_FOR_74_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IIF(c, BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(75, s), p, o, m) +# define BOOST_PP_FOR_75_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IIF(c, BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(76, s), p, o, m) +# define BOOST_PP_FOR_76_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IIF(c, BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(77, s), p, o, m) +# define BOOST_PP_FOR_77_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IIF(c, BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(78, s), p, o, m) +# define BOOST_PP_FOR_78_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IIF(c, BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(79, s), p, o, m) +# define BOOST_PP_FOR_79_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IIF(c, BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(80, s), p, o, m) +# define BOOST_PP_FOR_80_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IIF(c, BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(81, s), p, o, m) +# define BOOST_PP_FOR_81_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IIF(c, BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(82, s), p, o, m) +# define BOOST_PP_FOR_82_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IIF(c, BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(83, s), p, o, m) +# define BOOST_PP_FOR_83_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IIF(c, BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(84, s), p, o, m) +# define BOOST_PP_FOR_84_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IIF(c, BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(85, s), p, o, m) +# define BOOST_PP_FOR_85_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IIF(c, BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(86, s), p, o, m) +# define BOOST_PP_FOR_86_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IIF(c, BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(87, s), p, o, m) +# define BOOST_PP_FOR_87_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IIF(c, BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(88, s), p, o, m) +# define BOOST_PP_FOR_88_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IIF(c, BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(89, s), p, o, m) +# define BOOST_PP_FOR_89_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IIF(c, BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(90, s), p, o, m) +# define BOOST_PP_FOR_90_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IIF(c, BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(91, s), p, o, m) +# define BOOST_PP_FOR_91_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IIF(c, BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(92, s), p, o, m) +# define BOOST_PP_FOR_92_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IIF(c, BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(93, s), p, o, m) +# define BOOST_PP_FOR_93_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IIF(c, BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(94, s), p, o, m) +# define BOOST_PP_FOR_94_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IIF(c, BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(95, s), p, o, m) +# define BOOST_PP_FOR_95_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IIF(c, BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(96, s), p, o, m) +# define BOOST_PP_FOR_96_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IIF(c, BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(97, s), p, o, m) +# define BOOST_PP_FOR_97_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IIF(c, BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(98, s), p, o, m) +# define BOOST_PP_FOR_98_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IIF(c, BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(99, s), p, o, m) +# define BOOST_PP_FOR_99_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IIF(c, BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(100, s), p, o, m) +# define BOOST_PP_FOR_100_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IIF(c, BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(101, s), p, o, m) +# define BOOST_PP_FOR_101_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IIF(c, BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(102, s), p, o, m) +# define BOOST_PP_FOR_102_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IIF(c, BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(103, s), p, o, m) +# define BOOST_PP_FOR_103_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IIF(c, BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(104, s), p, o, m) +# define BOOST_PP_FOR_104_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IIF(c, BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(105, s), p, o, m) +# define BOOST_PP_FOR_105_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IIF(c, BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(106, s), p, o, m) +# define BOOST_PP_FOR_106_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IIF(c, BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(107, s), p, o, m) +# define BOOST_PP_FOR_107_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IIF(c, BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(108, s), p, o, m) +# define BOOST_PP_FOR_108_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IIF(c, BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(109, s), p, o, m) +# define BOOST_PP_FOR_109_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IIF(c, BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(110, s), p, o, m) +# define BOOST_PP_FOR_110_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IIF(c, BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(111, s), p, o, m) +# define BOOST_PP_FOR_111_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IIF(c, BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(112, s), p, o, m) +# define BOOST_PP_FOR_112_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IIF(c, BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(113, s), p, o, m) +# define BOOST_PP_FOR_113_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IIF(c, BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(114, s), p, o, m) +# define BOOST_PP_FOR_114_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IIF(c, BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(115, s), p, o, m) +# define BOOST_PP_FOR_115_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IIF(c, BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(116, s), p, o, m) +# define BOOST_PP_FOR_116_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IIF(c, BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(117, s), p, o, m) +# define BOOST_PP_FOR_117_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IIF(c, BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(118, s), p, o, m) +# define BOOST_PP_FOR_118_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IIF(c, BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(119, s), p, o, m) +# define BOOST_PP_FOR_119_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IIF(c, BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(120, s), p, o, m) +# define BOOST_PP_FOR_120_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IIF(c, BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(121, s), p, o, m) +# define BOOST_PP_FOR_121_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IIF(c, BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(122, s), p, o, m) +# define BOOST_PP_FOR_122_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IIF(c, BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(123, s), p, o, m) +# define BOOST_PP_FOR_123_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IIF(c, BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(124, s), p, o, m) +# define BOOST_PP_FOR_124_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IIF(c, BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(125, s), p, o, m) +# define BOOST_PP_FOR_125_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IIF(c, BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(126, s), p, o, m) +# define BOOST_PP_FOR_126_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IIF(c, BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(127, s), p, o, m) +# define BOOST_PP_FOR_127_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IIF(c, BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(128, s), p, o, m) +# define BOOST_PP_FOR_128_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IIF(c, BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(129, s), p, o, m) +# define BOOST_PP_FOR_129_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IIF(c, BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(130, s), p, o, m) +# define BOOST_PP_FOR_130_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IIF(c, BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(131, s), p, o, m) +# define BOOST_PP_FOR_131_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IIF(c, BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(132, s), p, o, m) +# define BOOST_PP_FOR_132_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IIF(c, BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(133, s), p, o, m) +# define BOOST_PP_FOR_133_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IIF(c, BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(134, s), p, o, m) +# define BOOST_PP_FOR_134_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IIF(c, BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(135, s), p, o, m) +# define BOOST_PP_FOR_135_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IIF(c, BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(136, s), p, o, m) +# define BOOST_PP_FOR_136_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IIF(c, BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(137, s), p, o, m) +# define BOOST_PP_FOR_137_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IIF(c, BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(138, s), p, o, m) +# define BOOST_PP_FOR_138_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IIF(c, BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(139, s), p, o, m) +# define BOOST_PP_FOR_139_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IIF(c, BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(140, s), p, o, m) +# define BOOST_PP_FOR_140_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IIF(c, BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(141, s), p, o, m) +# define BOOST_PP_FOR_141_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IIF(c, BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(142, s), p, o, m) +# define BOOST_PP_FOR_142_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IIF(c, BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(143, s), p, o, m) +# define BOOST_PP_FOR_143_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IIF(c, BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(144, s), p, o, m) +# define BOOST_PP_FOR_144_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IIF(c, BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(145, s), p, o, m) +# define BOOST_PP_FOR_145_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IIF(c, BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(146, s), p, o, m) +# define BOOST_PP_FOR_146_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IIF(c, BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(147, s), p, o, m) +# define BOOST_PP_FOR_147_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IIF(c, BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(148, s), p, o, m) +# define BOOST_PP_FOR_148_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IIF(c, BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(149, s), p, o, m) +# define BOOST_PP_FOR_149_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IIF(c, BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(150, s), p, o, m) +# define BOOST_PP_FOR_150_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IIF(c, BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(151, s), p, o, m) +# define BOOST_PP_FOR_151_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IIF(c, BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(152, s), p, o, m) +# define BOOST_PP_FOR_152_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IIF(c, BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(153, s), p, o, m) +# define BOOST_PP_FOR_153_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IIF(c, BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(154, s), p, o, m) +# define BOOST_PP_FOR_154_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IIF(c, BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(155, s), p, o, m) +# define BOOST_PP_FOR_155_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IIF(c, BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(156, s), p, o, m) +# define BOOST_PP_FOR_156_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IIF(c, BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(157, s), p, o, m) +# define BOOST_PP_FOR_157_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IIF(c, BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(158, s), p, o, m) +# define BOOST_PP_FOR_158_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IIF(c, BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(159, s), p, o, m) +# define BOOST_PP_FOR_159_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IIF(c, BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(160, s), p, o, m) +# define BOOST_PP_FOR_160_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IIF(c, BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(161, s), p, o, m) +# define BOOST_PP_FOR_161_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IIF(c, BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(162, s), p, o, m) +# define BOOST_PP_FOR_162_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IIF(c, BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(163, s), p, o, m) +# define BOOST_PP_FOR_163_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IIF(c, BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(164, s), p, o, m) +# define BOOST_PP_FOR_164_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IIF(c, BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(165, s), p, o, m) +# define BOOST_PP_FOR_165_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IIF(c, BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(166, s), p, o, m) +# define BOOST_PP_FOR_166_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IIF(c, BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(167, s), p, o, m) +# define BOOST_PP_FOR_167_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IIF(c, BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(168, s), p, o, m) +# define BOOST_PP_FOR_168_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IIF(c, BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(169, s), p, o, m) +# define BOOST_PP_FOR_169_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IIF(c, BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(170, s), p, o, m) +# define BOOST_PP_FOR_170_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IIF(c, BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(171, s), p, o, m) +# define BOOST_PP_FOR_171_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IIF(c, BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(172, s), p, o, m) +# define BOOST_PP_FOR_172_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IIF(c, BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(173, s), p, o, m) +# define BOOST_PP_FOR_173_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IIF(c, BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(174, s), p, o, m) +# define BOOST_PP_FOR_174_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IIF(c, BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(175, s), p, o, m) +# define BOOST_PP_FOR_175_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IIF(c, BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(176, s), p, o, m) +# define BOOST_PP_FOR_176_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IIF(c, BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(177, s), p, o, m) +# define BOOST_PP_FOR_177_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IIF(c, BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(178, s), p, o, m) +# define BOOST_PP_FOR_178_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IIF(c, BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(179, s), p, o, m) +# define BOOST_PP_FOR_179_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IIF(c, BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(180, s), p, o, m) +# define BOOST_PP_FOR_180_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IIF(c, BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(181, s), p, o, m) +# define BOOST_PP_FOR_181_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IIF(c, BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(182, s), p, o, m) +# define BOOST_PP_FOR_182_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IIF(c, BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(183, s), p, o, m) +# define BOOST_PP_FOR_183_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IIF(c, BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(184, s), p, o, m) +# define BOOST_PP_FOR_184_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IIF(c, BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(185, s), p, o, m) +# define BOOST_PP_FOR_185_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IIF(c, BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(186, s), p, o, m) +# define BOOST_PP_FOR_186_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IIF(c, BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(187, s), p, o, m) +# define BOOST_PP_FOR_187_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IIF(c, BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(188, s), p, o, m) +# define BOOST_PP_FOR_188_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IIF(c, BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(189, s), p, o, m) +# define BOOST_PP_FOR_189_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IIF(c, BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(190, s), p, o, m) +# define BOOST_PP_FOR_190_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IIF(c, BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(191, s), p, o, m) +# define BOOST_PP_FOR_191_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IIF(c, BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(192, s), p, o, m) +# define BOOST_PP_FOR_192_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IIF(c, BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(193, s), p, o, m) +# define BOOST_PP_FOR_193_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IIF(c, BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(194, s), p, o, m) +# define BOOST_PP_FOR_194_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IIF(c, BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(195, s), p, o, m) +# define BOOST_PP_FOR_195_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IIF(c, BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(196, s), p, o, m) +# define BOOST_PP_FOR_196_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IIF(c, BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(197, s), p, o, m) +# define BOOST_PP_FOR_197_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IIF(c, BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(198, s), p, o, m) +# define BOOST_PP_FOR_198_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IIF(c, BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(199, s), p, o, m) +# define BOOST_PP_FOR_199_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IIF(c, BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(200, s), p, o, m) +# define BOOST_PP_FOR_200_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IIF(c, BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(201, s), p, o, m) +# define BOOST_PP_FOR_201_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IIF(c, BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(202, s), p, o, m) +# define BOOST_PP_FOR_202_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IIF(c, BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(203, s), p, o, m) +# define BOOST_PP_FOR_203_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IIF(c, BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(204, s), p, o, m) +# define BOOST_PP_FOR_204_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IIF(c, BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(205, s), p, o, m) +# define BOOST_PP_FOR_205_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IIF(c, BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(206, s), p, o, m) +# define BOOST_PP_FOR_206_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IIF(c, BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(207, s), p, o, m) +# define BOOST_PP_FOR_207_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IIF(c, BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(208, s), p, o, m) +# define BOOST_PP_FOR_208_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IIF(c, BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(209, s), p, o, m) +# define BOOST_PP_FOR_209_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IIF(c, BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(210, s), p, o, m) +# define BOOST_PP_FOR_210_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IIF(c, BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(211, s), p, o, m) +# define BOOST_PP_FOR_211_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IIF(c, BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(212, s), p, o, m) +# define BOOST_PP_FOR_212_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IIF(c, BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(213, s), p, o, m) +# define BOOST_PP_FOR_213_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IIF(c, BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(214, s), p, o, m) +# define BOOST_PP_FOR_214_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IIF(c, BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(215, s), p, o, m) +# define BOOST_PP_FOR_215_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IIF(c, BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(216, s), p, o, m) +# define BOOST_PP_FOR_216_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IIF(c, BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(217, s), p, o, m) +# define BOOST_PP_FOR_217_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IIF(c, BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(218, s), p, o, m) +# define BOOST_PP_FOR_218_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IIF(c, BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(219, s), p, o, m) +# define BOOST_PP_FOR_219_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IIF(c, BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(220, s), p, o, m) +# define BOOST_PP_FOR_220_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IIF(c, BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(221, s), p, o, m) +# define BOOST_PP_FOR_221_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IIF(c, BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(222, s), p, o, m) +# define BOOST_PP_FOR_222_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IIF(c, BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(223, s), p, o, m) +# define BOOST_PP_FOR_223_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IIF(c, BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(224, s), p, o, m) +# define BOOST_PP_FOR_224_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IIF(c, BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(225, s), p, o, m) +# define BOOST_PP_FOR_225_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IIF(c, BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(226, s), p, o, m) +# define BOOST_PP_FOR_226_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IIF(c, BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(227, s), p, o, m) +# define BOOST_PP_FOR_227_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IIF(c, BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(228, s), p, o, m) +# define BOOST_PP_FOR_228_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IIF(c, BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(229, s), p, o, m) +# define BOOST_PP_FOR_229_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IIF(c, BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(230, s), p, o, m) +# define BOOST_PP_FOR_230_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IIF(c, BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(231, s), p, o, m) +# define BOOST_PP_FOR_231_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IIF(c, BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(232, s), p, o, m) +# define BOOST_PP_FOR_232_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IIF(c, BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(233, s), p, o, m) +# define BOOST_PP_FOR_233_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IIF(c, BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(234, s), p, o, m) +# define BOOST_PP_FOR_234_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IIF(c, BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(235, s), p, o, m) +# define BOOST_PP_FOR_235_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IIF(c, BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(236, s), p, o, m) +# define BOOST_PP_FOR_236_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IIF(c, BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(237, s), p, o, m) +# define BOOST_PP_FOR_237_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IIF(c, BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(238, s), p, o, m) +# define BOOST_PP_FOR_238_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IIF(c, BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(239, s), p, o, m) +# define BOOST_PP_FOR_239_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IIF(c, BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(240, s), p, o, m) +# define BOOST_PP_FOR_240_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IIF(c, BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(241, s), p, o, m) +# define BOOST_PP_FOR_241_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IIF(c, BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(242, s), p, o, m) +# define BOOST_PP_FOR_242_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IIF(c, BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(243, s), p, o, m) +# define BOOST_PP_FOR_243_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IIF(c, BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(244, s), p, o, m) +# define BOOST_PP_FOR_244_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IIF(c, BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(245, s), p, o, m) +# define BOOST_PP_FOR_245_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IIF(c, BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(246, s), p, o, m) +# define BOOST_PP_FOR_246_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IIF(c, BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(247, s), p, o, m) +# define BOOST_PP_FOR_247_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IIF(c, BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(248, s), p, o, m) +# define BOOST_PP_FOR_248_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IIF(c, BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(249, s), p, o, m) +# define BOOST_PP_FOR_249_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IIF(c, BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(250, s), p, o, m) +# define BOOST_PP_FOR_250_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IIF(c, BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(251, s), p, o, m) +# define BOOST_PP_FOR_251_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IIF(c, BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(252, s), p, o, m) +# define BOOST_PP_FOR_252_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IIF(c, BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(253, s), p, o, m) +# define BOOST_PP_FOR_253_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IIF(c, BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(254, s), p, o, m) +# define BOOST_PP_FOR_254_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IIF(c, BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(255, s), p, o, m) +# define BOOST_PP_FOR_255_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IIF(c, BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(256, s), p, o, m) +# define BOOST_PP_FOR_256_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IIF(c, BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(257, s), p, o, m) +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/detail/limits/for_512.hpp b/src/boost/boost/preprocessor/repetition/detail/limits/for_512.hpp new file mode 100644 index 000000000..eaa904a4d --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/detail/limits/for_512.hpp @@ -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_REPETITION_DETAIL_FOR_512_HPP +# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_512_HPP +# +# define BOOST_PP_FOR_257(s, p, o, m) BOOST_PP_FOR_257_C(BOOST_PP_BOOL(p(258, s)), s, p, o, m) +# define BOOST_PP_FOR_258(s, p, o, m) BOOST_PP_FOR_258_C(BOOST_PP_BOOL(p(259, s)), s, p, o, m) +# define BOOST_PP_FOR_259(s, p, o, m) BOOST_PP_FOR_259_C(BOOST_PP_BOOL(p(260, s)), s, p, o, m) +# define BOOST_PP_FOR_260(s, p, o, m) BOOST_PP_FOR_260_C(BOOST_PP_BOOL(p(261, s)), s, p, o, m) +# define BOOST_PP_FOR_261(s, p, o, m) BOOST_PP_FOR_261_C(BOOST_PP_BOOL(p(262, s)), s, p, o, m) +# define BOOST_PP_FOR_262(s, p, o, m) BOOST_PP_FOR_262_C(BOOST_PP_BOOL(p(263, s)), s, p, o, m) +# define BOOST_PP_FOR_263(s, p, o, m) BOOST_PP_FOR_263_C(BOOST_PP_BOOL(p(264, s)), s, p, o, m) +# define BOOST_PP_FOR_264(s, p, o, m) BOOST_PP_FOR_264_C(BOOST_PP_BOOL(p(265, s)), s, p, o, m) +# define BOOST_PP_FOR_265(s, p, o, m) BOOST_PP_FOR_265_C(BOOST_PP_BOOL(p(266, s)), s, p, o, m) +# define BOOST_PP_FOR_266(s, p, o, m) BOOST_PP_FOR_266_C(BOOST_PP_BOOL(p(267, s)), s, p, o, m) +# define BOOST_PP_FOR_267(s, p, o, m) BOOST_PP_FOR_267_C(BOOST_PP_BOOL(p(268, s)), s, p, o, m) +# define BOOST_PP_FOR_268(s, p, o, m) BOOST_PP_FOR_268_C(BOOST_PP_BOOL(p(269, s)), s, p, o, m) +# define BOOST_PP_FOR_269(s, p, o, m) BOOST_PP_FOR_269_C(BOOST_PP_BOOL(p(270, s)), s, p, o, m) +# define BOOST_PP_FOR_270(s, p, o, m) BOOST_PP_FOR_270_C(BOOST_PP_BOOL(p(271, s)), s, p, o, m) +# define BOOST_PP_FOR_271(s, p, o, m) BOOST_PP_FOR_271_C(BOOST_PP_BOOL(p(272, s)), s, p, o, m) +# define BOOST_PP_FOR_272(s, p, o, m) BOOST_PP_FOR_272_C(BOOST_PP_BOOL(p(273, s)), s, p, o, m) +# define BOOST_PP_FOR_273(s, p, o, m) BOOST_PP_FOR_273_C(BOOST_PP_BOOL(p(274, s)), s, p, o, m) +# define BOOST_PP_FOR_274(s, p, o, m) BOOST_PP_FOR_274_C(BOOST_PP_BOOL(p(275, s)), s, p, o, m) +# define BOOST_PP_FOR_275(s, p, o, m) BOOST_PP_FOR_275_C(BOOST_PP_BOOL(p(276, s)), s, p, o, m) +# define BOOST_PP_FOR_276(s, p, o, m) BOOST_PP_FOR_276_C(BOOST_PP_BOOL(p(277, s)), s, p, o, m) +# define BOOST_PP_FOR_277(s, p, o, m) BOOST_PP_FOR_277_C(BOOST_PP_BOOL(p(278, s)), s, p, o, m) +# define BOOST_PP_FOR_278(s, p, o, m) BOOST_PP_FOR_278_C(BOOST_PP_BOOL(p(279, s)), s, p, o, m) +# define BOOST_PP_FOR_279(s, p, o, m) BOOST_PP_FOR_279_C(BOOST_PP_BOOL(p(280, s)), s, p, o, m) +# define BOOST_PP_FOR_280(s, p, o, m) BOOST_PP_FOR_280_C(BOOST_PP_BOOL(p(281, s)), s, p, o, m) +# define BOOST_PP_FOR_281(s, p, o, m) BOOST_PP_FOR_281_C(BOOST_PP_BOOL(p(282, s)), s, p, o, m) +# define BOOST_PP_FOR_282(s, p, o, m) BOOST_PP_FOR_282_C(BOOST_PP_BOOL(p(283, s)), s, p, o, m) +# define BOOST_PP_FOR_283(s, p, o, m) BOOST_PP_FOR_283_C(BOOST_PP_BOOL(p(284, s)), s, p, o, m) +# define BOOST_PP_FOR_284(s, p, o, m) BOOST_PP_FOR_284_C(BOOST_PP_BOOL(p(285, s)), s, p, o, m) +# define BOOST_PP_FOR_285(s, p, o, m) BOOST_PP_FOR_285_C(BOOST_PP_BOOL(p(286, s)), s, p, o, m) +# define BOOST_PP_FOR_286(s, p, o, m) BOOST_PP_FOR_286_C(BOOST_PP_BOOL(p(287, s)), s, p, o, m) +# define BOOST_PP_FOR_287(s, p, o, m) BOOST_PP_FOR_287_C(BOOST_PP_BOOL(p(288, s)), s, p, o, m) +# define BOOST_PP_FOR_288(s, p, o, m) BOOST_PP_FOR_288_C(BOOST_PP_BOOL(p(289, s)), s, p, o, m) +# define BOOST_PP_FOR_289(s, p, o, m) BOOST_PP_FOR_289_C(BOOST_PP_BOOL(p(290, s)), s, p, o, m) +# define BOOST_PP_FOR_290(s, p, o, m) BOOST_PP_FOR_290_C(BOOST_PP_BOOL(p(291, s)), s, p, o, m) +# define BOOST_PP_FOR_291(s, p, o, m) BOOST_PP_FOR_291_C(BOOST_PP_BOOL(p(292, s)), s, p, o, m) +# define BOOST_PP_FOR_292(s, p, o, m) BOOST_PP_FOR_292_C(BOOST_PP_BOOL(p(293, s)), s, p, o, m) +# define BOOST_PP_FOR_293(s, p, o, m) BOOST_PP_FOR_293_C(BOOST_PP_BOOL(p(294, s)), s, p, o, m) +# define BOOST_PP_FOR_294(s, p, o, m) BOOST_PP_FOR_294_C(BOOST_PP_BOOL(p(295, s)), s, p, o, m) +# define BOOST_PP_FOR_295(s, p, o, m) BOOST_PP_FOR_295_C(BOOST_PP_BOOL(p(296, s)), s, p, o, m) +# define BOOST_PP_FOR_296(s, p, o, m) BOOST_PP_FOR_296_C(BOOST_PP_BOOL(p(297, s)), s, p, o, m) +# define BOOST_PP_FOR_297(s, p, o, m) BOOST_PP_FOR_297_C(BOOST_PP_BOOL(p(298, s)), s, p, o, m) +# define BOOST_PP_FOR_298(s, p, o, m) BOOST_PP_FOR_298_C(BOOST_PP_BOOL(p(299, s)), s, p, o, m) +# define BOOST_PP_FOR_299(s, p, o, m) BOOST_PP_FOR_299_C(BOOST_PP_BOOL(p(300, s)), s, p, o, m) +# define BOOST_PP_FOR_300(s, p, o, m) BOOST_PP_FOR_300_C(BOOST_PP_BOOL(p(301, s)), s, p, o, m) +# define BOOST_PP_FOR_301(s, p, o, m) BOOST_PP_FOR_301_C(BOOST_PP_BOOL(p(302, s)), s, p, o, m) +# define BOOST_PP_FOR_302(s, p, o, m) BOOST_PP_FOR_302_C(BOOST_PP_BOOL(p(303, s)), s, p, o, m) +# define BOOST_PP_FOR_303(s, p, o, m) BOOST_PP_FOR_303_C(BOOST_PP_BOOL(p(304, s)), s, p, o, m) +# define BOOST_PP_FOR_304(s, p, o, m) BOOST_PP_FOR_304_C(BOOST_PP_BOOL(p(305, s)), s, p, o, m) +# define BOOST_PP_FOR_305(s, p, o, m) BOOST_PP_FOR_305_C(BOOST_PP_BOOL(p(306, s)), s, p, o, m) +# define BOOST_PP_FOR_306(s, p, o, m) BOOST_PP_FOR_306_C(BOOST_PP_BOOL(p(307, s)), s, p, o, m) +# define BOOST_PP_FOR_307(s, p, o, m) BOOST_PP_FOR_307_C(BOOST_PP_BOOL(p(308, s)), s, p, o, m) +# define BOOST_PP_FOR_308(s, p, o, m) BOOST_PP_FOR_308_C(BOOST_PP_BOOL(p(309, s)), s, p, o, m) +# define BOOST_PP_FOR_309(s, p, o, m) BOOST_PP_FOR_309_C(BOOST_PP_BOOL(p(310, s)), s, p, o, m) +# define BOOST_PP_FOR_310(s, p, o, m) BOOST_PP_FOR_310_C(BOOST_PP_BOOL(p(311, s)), s, p, o, m) +# define BOOST_PP_FOR_311(s, p, o, m) BOOST_PP_FOR_311_C(BOOST_PP_BOOL(p(312, s)), s, p, o, m) +# define BOOST_PP_FOR_312(s, p, o, m) BOOST_PP_FOR_312_C(BOOST_PP_BOOL(p(313, s)), s, p, o, m) +# define BOOST_PP_FOR_313(s, p, o, m) BOOST_PP_FOR_313_C(BOOST_PP_BOOL(p(314, s)), s, p, o, m) +# define BOOST_PP_FOR_314(s, p, o, m) BOOST_PP_FOR_314_C(BOOST_PP_BOOL(p(315, s)), s, p, o, m) +# define BOOST_PP_FOR_315(s, p, o, m) BOOST_PP_FOR_315_C(BOOST_PP_BOOL(p(316, s)), s, p, o, m) +# define BOOST_PP_FOR_316(s, p, o, m) BOOST_PP_FOR_316_C(BOOST_PP_BOOL(p(317, s)), s, p, o, m) +# define BOOST_PP_FOR_317(s, p, o, m) BOOST_PP_FOR_317_C(BOOST_PP_BOOL(p(318, s)), s, p, o, m) +# define BOOST_PP_FOR_318(s, p, o, m) BOOST_PP_FOR_318_C(BOOST_PP_BOOL(p(319, s)), s, p, o, m) +# define BOOST_PP_FOR_319(s, p, o, m) BOOST_PP_FOR_319_C(BOOST_PP_BOOL(p(320, s)), s, p, o, m) +# define BOOST_PP_FOR_320(s, p, o, m) BOOST_PP_FOR_320_C(BOOST_PP_BOOL(p(321, s)), s, p, o, m) +# define BOOST_PP_FOR_321(s, p, o, m) BOOST_PP_FOR_321_C(BOOST_PP_BOOL(p(322, s)), s, p, o, m) +# define BOOST_PP_FOR_322(s, p, o, m) BOOST_PP_FOR_322_C(BOOST_PP_BOOL(p(323, s)), s, p, o, m) +# define BOOST_PP_FOR_323(s, p, o, m) BOOST_PP_FOR_323_C(BOOST_PP_BOOL(p(324, s)), s, p, o, m) +# define BOOST_PP_FOR_324(s, p, o, m) BOOST_PP_FOR_324_C(BOOST_PP_BOOL(p(325, s)), s, p, o, m) +# define BOOST_PP_FOR_325(s, p, o, m) BOOST_PP_FOR_325_C(BOOST_PP_BOOL(p(326, s)), s, p, o, m) +# define BOOST_PP_FOR_326(s, p, o, m) BOOST_PP_FOR_326_C(BOOST_PP_BOOL(p(327, s)), s, p, o, m) +# define BOOST_PP_FOR_327(s, p, o, m) BOOST_PP_FOR_327_C(BOOST_PP_BOOL(p(328, s)), s, p, o, m) +# define BOOST_PP_FOR_328(s, p, o, m) BOOST_PP_FOR_328_C(BOOST_PP_BOOL(p(329, s)), s, p, o, m) +# define BOOST_PP_FOR_329(s, p, o, m) BOOST_PP_FOR_329_C(BOOST_PP_BOOL(p(330, s)), s, p, o, m) +# define BOOST_PP_FOR_330(s, p, o, m) BOOST_PP_FOR_330_C(BOOST_PP_BOOL(p(331, s)), s, p, o, m) +# define BOOST_PP_FOR_331(s, p, o, m) BOOST_PP_FOR_331_C(BOOST_PP_BOOL(p(332, s)), s, p, o, m) +# define BOOST_PP_FOR_332(s, p, o, m) BOOST_PP_FOR_332_C(BOOST_PP_BOOL(p(333, s)), s, p, o, m) +# define BOOST_PP_FOR_333(s, p, o, m) BOOST_PP_FOR_333_C(BOOST_PP_BOOL(p(334, s)), s, p, o, m) +# define BOOST_PP_FOR_334(s, p, o, m) BOOST_PP_FOR_334_C(BOOST_PP_BOOL(p(335, s)), s, p, o, m) +# define BOOST_PP_FOR_335(s, p, o, m) BOOST_PP_FOR_335_C(BOOST_PP_BOOL(p(336, s)), s, p, o, m) +# define BOOST_PP_FOR_336(s, p, o, m) BOOST_PP_FOR_336_C(BOOST_PP_BOOL(p(337, s)), s, p, o, m) +# define BOOST_PP_FOR_337(s, p, o, m) BOOST_PP_FOR_337_C(BOOST_PP_BOOL(p(338, s)), s, p, o, m) +# define BOOST_PP_FOR_338(s, p, o, m) BOOST_PP_FOR_338_C(BOOST_PP_BOOL(p(339, s)), s, p, o, m) +# define BOOST_PP_FOR_339(s, p, o, m) BOOST_PP_FOR_339_C(BOOST_PP_BOOL(p(340, s)), s, p, o, m) +# define BOOST_PP_FOR_340(s, p, o, m) BOOST_PP_FOR_340_C(BOOST_PP_BOOL(p(341, s)), s, p, o, m) +# define BOOST_PP_FOR_341(s, p, o, m) BOOST_PP_FOR_341_C(BOOST_PP_BOOL(p(342, s)), s, p, o, m) +# define BOOST_PP_FOR_342(s, p, o, m) BOOST_PP_FOR_342_C(BOOST_PP_BOOL(p(343, s)), s, p, o, m) +# define BOOST_PP_FOR_343(s, p, o, m) BOOST_PP_FOR_343_C(BOOST_PP_BOOL(p(344, s)), s, p, o, m) +# define BOOST_PP_FOR_344(s, p, o, m) BOOST_PP_FOR_344_C(BOOST_PP_BOOL(p(345, s)), s, p, o, m) +# define BOOST_PP_FOR_345(s, p, o, m) BOOST_PP_FOR_345_C(BOOST_PP_BOOL(p(346, s)), s, p, o, m) +# define BOOST_PP_FOR_346(s, p, o, m) BOOST_PP_FOR_346_C(BOOST_PP_BOOL(p(347, s)), s, p, o, m) +# define BOOST_PP_FOR_347(s, p, o, m) BOOST_PP_FOR_347_C(BOOST_PP_BOOL(p(348, s)), s, p, o, m) +# define BOOST_PP_FOR_348(s, p, o, m) BOOST_PP_FOR_348_C(BOOST_PP_BOOL(p(349, s)), s, p, o, m) +# define BOOST_PP_FOR_349(s, p, o, m) BOOST_PP_FOR_349_C(BOOST_PP_BOOL(p(350, s)), s, p, o, m) +# define BOOST_PP_FOR_350(s, p, o, m) BOOST_PP_FOR_350_C(BOOST_PP_BOOL(p(351, s)), s, p, o, m) +# define BOOST_PP_FOR_351(s, p, o, m) BOOST_PP_FOR_351_C(BOOST_PP_BOOL(p(352, s)), s, p, o, m) +# define BOOST_PP_FOR_352(s, p, o, m) BOOST_PP_FOR_352_C(BOOST_PP_BOOL(p(353, s)), s, p, o, m) +# define BOOST_PP_FOR_353(s, p, o, m) BOOST_PP_FOR_353_C(BOOST_PP_BOOL(p(354, s)), s, p, o, m) +# define BOOST_PP_FOR_354(s, p, o, m) BOOST_PP_FOR_354_C(BOOST_PP_BOOL(p(355, s)), s, p, o, m) +# define BOOST_PP_FOR_355(s, p, o, m) BOOST_PP_FOR_355_C(BOOST_PP_BOOL(p(356, s)), s, p, o, m) +# define BOOST_PP_FOR_356(s, p, o, m) BOOST_PP_FOR_356_C(BOOST_PP_BOOL(p(357, s)), s, p, o, m) +# define BOOST_PP_FOR_357(s, p, o, m) BOOST_PP_FOR_357_C(BOOST_PP_BOOL(p(358, s)), s, p, o, m) +# define BOOST_PP_FOR_358(s, p, o, m) BOOST_PP_FOR_358_C(BOOST_PP_BOOL(p(359, s)), s, p, o, m) +# define BOOST_PP_FOR_359(s, p, o, m) BOOST_PP_FOR_359_C(BOOST_PP_BOOL(p(360, s)), s, p, o, m) +# define BOOST_PP_FOR_360(s, p, o, m) BOOST_PP_FOR_360_C(BOOST_PP_BOOL(p(361, s)), s, p, o, m) +# define BOOST_PP_FOR_361(s, p, o, m) BOOST_PP_FOR_361_C(BOOST_PP_BOOL(p(362, s)), s, p, o, m) +# define BOOST_PP_FOR_362(s, p, o, m) BOOST_PP_FOR_362_C(BOOST_PP_BOOL(p(363, s)), s, p, o, m) +# define BOOST_PP_FOR_363(s, p, o, m) BOOST_PP_FOR_363_C(BOOST_PP_BOOL(p(364, s)), s, p, o, m) +# define BOOST_PP_FOR_364(s, p, o, m) BOOST_PP_FOR_364_C(BOOST_PP_BOOL(p(365, s)), s, p, o, m) +# define BOOST_PP_FOR_365(s, p, o, m) BOOST_PP_FOR_365_C(BOOST_PP_BOOL(p(366, s)), s, p, o, m) +# define BOOST_PP_FOR_366(s, p, o, m) BOOST_PP_FOR_366_C(BOOST_PP_BOOL(p(367, s)), s, p, o, m) +# define BOOST_PP_FOR_367(s, p, o, m) BOOST_PP_FOR_367_C(BOOST_PP_BOOL(p(368, s)), s, p, o, m) +# define BOOST_PP_FOR_368(s, p, o, m) BOOST_PP_FOR_368_C(BOOST_PP_BOOL(p(369, s)), s, p, o, m) +# define BOOST_PP_FOR_369(s, p, o, m) BOOST_PP_FOR_369_C(BOOST_PP_BOOL(p(370, s)), s, p, o, m) +# define BOOST_PP_FOR_370(s, p, o, m) BOOST_PP_FOR_370_C(BOOST_PP_BOOL(p(371, s)), s, p, o, m) +# define BOOST_PP_FOR_371(s, p, o, m) BOOST_PP_FOR_371_C(BOOST_PP_BOOL(p(372, s)), s, p, o, m) +# define BOOST_PP_FOR_372(s, p, o, m) BOOST_PP_FOR_372_C(BOOST_PP_BOOL(p(373, s)), s, p, o, m) +# define BOOST_PP_FOR_373(s, p, o, m) BOOST_PP_FOR_373_C(BOOST_PP_BOOL(p(374, s)), s, p, o, m) +# define BOOST_PP_FOR_374(s, p, o, m) BOOST_PP_FOR_374_C(BOOST_PP_BOOL(p(375, s)), s, p, o, m) +# define BOOST_PP_FOR_375(s, p, o, m) BOOST_PP_FOR_375_C(BOOST_PP_BOOL(p(376, s)), s, p, o, m) +# define BOOST_PP_FOR_376(s, p, o, m) BOOST_PP_FOR_376_C(BOOST_PP_BOOL(p(377, s)), s, p, o, m) +# define BOOST_PP_FOR_377(s, p, o, m) BOOST_PP_FOR_377_C(BOOST_PP_BOOL(p(378, s)), s, p, o, m) +# define BOOST_PP_FOR_378(s, p, o, m) BOOST_PP_FOR_378_C(BOOST_PP_BOOL(p(379, s)), s, p, o, m) +# define BOOST_PP_FOR_379(s, p, o, m) BOOST_PP_FOR_379_C(BOOST_PP_BOOL(p(380, s)), s, p, o, m) +# define BOOST_PP_FOR_380(s, p, o, m) BOOST_PP_FOR_380_C(BOOST_PP_BOOL(p(381, s)), s, p, o, m) +# define BOOST_PP_FOR_381(s, p, o, m) BOOST_PP_FOR_381_C(BOOST_PP_BOOL(p(382, s)), s, p, o, m) +# define BOOST_PP_FOR_382(s, p, o, m) BOOST_PP_FOR_382_C(BOOST_PP_BOOL(p(383, s)), s, p, o, m) +# define BOOST_PP_FOR_383(s, p, o, m) BOOST_PP_FOR_383_C(BOOST_PP_BOOL(p(384, s)), s, p, o, m) +# define BOOST_PP_FOR_384(s, p, o, m) BOOST_PP_FOR_384_C(BOOST_PP_BOOL(p(385, s)), s, p, o, m) +# define BOOST_PP_FOR_385(s, p, o, m) BOOST_PP_FOR_385_C(BOOST_PP_BOOL(p(386, s)), s, p, o, m) +# define BOOST_PP_FOR_386(s, p, o, m) BOOST_PP_FOR_386_C(BOOST_PP_BOOL(p(387, s)), s, p, o, m) +# define BOOST_PP_FOR_387(s, p, o, m) BOOST_PP_FOR_387_C(BOOST_PP_BOOL(p(388, s)), s, p, o, m) +# define BOOST_PP_FOR_388(s, p, o, m) BOOST_PP_FOR_388_C(BOOST_PP_BOOL(p(389, s)), s, p, o, m) +# define BOOST_PP_FOR_389(s, p, o, m) BOOST_PP_FOR_389_C(BOOST_PP_BOOL(p(390, s)), s, p, o, m) +# define BOOST_PP_FOR_390(s, p, o, m) BOOST_PP_FOR_390_C(BOOST_PP_BOOL(p(391, s)), s, p, o, m) +# define BOOST_PP_FOR_391(s, p, o, m) BOOST_PP_FOR_391_C(BOOST_PP_BOOL(p(392, s)), s, p, o, m) +# define BOOST_PP_FOR_392(s, p, o, m) BOOST_PP_FOR_392_C(BOOST_PP_BOOL(p(393, s)), s, p, o, m) +# define BOOST_PP_FOR_393(s, p, o, m) BOOST_PP_FOR_393_C(BOOST_PP_BOOL(p(394, s)), s, p, o, m) +# define BOOST_PP_FOR_394(s, p, o, m) BOOST_PP_FOR_394_C(BOOST_PP_BOOL(p(395, s)), s, p, o, m) +# define BOOST_PP_FOR_395(s, p, o, m) BOOST_PP_FOR_395_C(BOOST_PP_BOOL(p(396, s)), s, p, o, m) +# define BOOST_PP_FOR_396(s, p, o, m) BOOST_PP_FOR_396_C(BOOST_PP_BOOL(p(397, s)), s, p, o, m) +# define BOOST_PP_FOR_397(s, p, o, m) BOOST_PP_FOR_397_C(BOOST_PP_BOOL(p(398, s)), s, p, o, m) +# define BOOST_PP_FOR_398(s, p, o, m) BOOST_PP_FOR_398_C(BOOST_PP_BOOL(p(399, s)), s, p, o, m) +# define BOOST_PP_FOR_399(s, p, o, m) BOOST_PP_FOR_399_C(BOOST_PP_BOOL(p(400, s)), s, p, o, m) +# define BOOST_PP_FOR_400(s, p, o, m) BOOST_PP_FOR_400_C(BOOST_PP_BOOL(p(401, s)), s, p, o, m) +# define BOOST_PP_FOR_401(s, p, o, m) BOOST_PP_FOR_401_C(BOOST_PP_BOOL(p(402, s)), s, p, o, m) +# define BOOST_PP_FOR_402(s, p, o, m) BOOST_PP_FOR_402_C(BOOST_PP_BOOL(p(403, s)), s, p, o, m) +# define BOOST_PP_FOR_403(s, p, o, m) BOOST_PP_FOR_403_C(BOOST_PP_BOOL(p(404, s)), s, p, o, m) +# define BOOST_PP_FOR_404(s, p, o, m) BOOST_PP_FOR_404_C(BOOST_PP_BOOL(p(405, s)), s, p, o, m) +# define BOOST_PP_FOR_405(s, p, o, m) BOOST_PP_FOR_405_C(BOOST_PP_BOOL(p(406, s)), s, p, o, m) +# define BOOST_PP_FOR_406(s, p, o, m) BOOST_PP_FOR_406_C(BOOST_PP_BOOL(p(407, s)), s, p, o, m) +# define BOOST_PP_FOR_407(s, p, o, m) BOOST_PP_FOR_407_C(BOOST_PP_BOOL(p(408, s)), s, p, o, m) +# define BOOST_PP_FOR_408(s, p, o, m) BOOST_PP_FOR_408_C(BOOST_PP_BOOL(p(409, s)), s, p, o, m) +# define BOOST_PP_FOR_409(s, p, o, m) BOOST_PP_FOR_409_C(BOOST_PP_BOOL(p(410, s)), s, p, o, m) +# define BOOST_PP_FOR_410(s, p, o, m) BOOST_PP_FOR_410_C(BOOST_PP_BOOL(p(411, s)), s, p, o, m) +# define BOOST_PP_FOR_411(s, p, o, m) BOOST_PP_FOR_411_C(BOOST_PP_BOOL(p(412, s)), s, p, o, m) +# define BOOST_PP_FOR_412(s, p, o, m) BOOST_PP_FOR_412_C(BOOST_PP_BOOL(p(413, s)), s, p, o, m) +# define BOOST_PP_FOR_413(s, p, o, m) BOOST_PP_FOR_413_C(BOOST_PP_BOOL(p(414, s)), s, p, o, m) +# define BOOST_PP_FOR_414(s, p, o, m) BOOST_PP_FOR_414_C(BOOST_PP_BOOL(p(415, s)), s, p, o, m) +# define BOOST_PP_FOR_415(s, p, o, m) BOOST_PP_FOR_415_C(BOOST_PP_BOOL(p(416, s)), s, p, o, m) +# define BOOST_PP_FOR_416(s, p, o, m) BOOST_PP_FOR_416_C(BOOST_PP_BOOL(p(417, s)), s, p, o, m) +# define BOOST_PP_FOR_417(s, p, o, m) BOOST_PP_FOR_417_C(BOOST_PP_BOOL(p(418, s)), s, p, o, m) +# define BOOST_PP_FOR_418(s, p, o, m) BOOST_PP_FOR_418_C(BOOST_PP_BOOL(p(419, s)), s, p, o, m) +# define BOOST_PP_FOR_419(s, p, o, m) BOOST_PP_FOR_419_C(BOOST_PP_BOOL(p(420, s)), s, p, o, m) +# define BOOST_PP_FOR_420(s, p, o, m) BOOST_PP_FOR_420_C(BOOST_PP_BOOL(p(421, s)), s, p, o, m) +# define BOOST_PP_FOR_421(s, p, o, m) BOOST_PP_FOR_421_C(BOOST_PP_BOOL(p(422, s)), s, p, o, m) +# define BOOST_PP_FOR_422(s, p, o, m) BOOST_PP_FOR_422_C(BOOST_PP_BOOL(p(423, s)), s, p, o, m) +# define BOOST_PP_FOR_423(s, p, o, m) BOOST_PP_FOR_423_C(BOOST_PP_BOOL(p(424, s)), s, p, o, m) +# define BOOST_PP_FOR_424(s, p, o, m) BOOST_PP_FOR_424_C(BOOST_PP_BOOL(p(425, s)), s, p, o, m) +# define BOOST_PP_FOR_425(s, p, o, m) BOOST_PP_FOR_425_C(BOOST_PP_BOOL(p(426, s)), s, p, o, m) +# define BOOST_PP_FOR_426(s, p, o, m) BOOST_PP_FOR_426_C(BOOST_PP_BOOL(p(427, s)), s, p, o, m) +# define BOOST_PP_FOR_427(s, p, o, m) BOOST_PP_FOR_427_C(BOOST_PP_BOOL(p(428, s)), s, p, o, m) +# define BOOST_PP_FOR_428(s, p, o, m) BOOST_PP_FOR_428_C(BOOST_PP_BOOL(p(429, s)), s, p, o, m) +# define BOOST_PP_FOR_429(s, p, o, m) BOOST_PP_FOR_429_C(BOOST_PP_BOOL(p(430, s)), s, p, o, m) +# define BOOST_PP_FOR_430(s, p, o, m) BOOST_PP_FOR_430_C(BOOST_PP_BOOL(p(431, s)), s, p, o, m) +# define BOOST_PP_FOR_431(s, p, o, m) BOOST_PP_FOR_431_C(BOOST_PP_BOOL(p(432, s)), s, p, o, m) +# define BOOST_PP_FOR_432(s, p, o, m) BOOST_PP_FOR_432_C(BOOST_PP_BOOL(p(433, s)), s, p, o, m) +# define BOOST_PP_FOR_433(s, p, o, m) BOOST_PP_FOR_433_C(BOOST_PP_BOOL(p(434, s)), s, p, o, m) +# define BOOST_PP_FOR_434(s, p, o, m) BOOST_PP_FOR_434_C(BOOST_PP_BOOL(p(435, s)), s, p, o, m) +# define BOOST_PP_FOR_435(s, p, o, m) BOOST_PP_FOR_435_C(BOOST_PP_BOOL(p(436, s)), s, p, o, m) +# define BOOST_PP_FOR_436(s, p, o, m) BOOST_PP_FOR_436_C(BOOST_PP_BOOL(p(437, s)), s, p, o, m) +# define BOOST_PP_FOR_437(s, p, o, m) BOOST_PP_FOR_437_C(BOOST_PP_BOOL(p(438, s)), s, p, o, m) +# define BOOST_PP_FOR_438(s, p, o, m) BOOST_PP_FOR_438_C(BOOST_PP_BOOL(p(439, s)), s, p, o, m) +# define BOOST_PP_FOR_439(s, p, o, m) BOOST_PP_FOR_439_C(BOOST_PP_BOOL(p(440, s)), s, p, o, m) +# define BOOST_PP_FOR_440(s, p, o, m) BOOST_PP_FOR_440_C(BOOST_PP_BOOL(p(441, s)), s, p, o, m) +# define BOOST_PP_FOR_441(s, p, o, m) BOOST_PP_FOR_441_C(BOOST_PP_BOOL(p(442, s)), s, p, o, m) +# define BOOST_PP_FOR_442(s, p, o, m) BOOST_PP_FOR_442_C(BOOST_PP_BOOL(p(443, s)), s, p, o, m) +# define BOOST_PP_FOR_443(s, p, o, m) BOOST_PP_FOR_443_C(BOOST_PP_BOOL(p(444, s)), s, p, o, m) +# define BOOST_PP_FOR_444(s, p, o, m) BOOST_PP_FOR_444_C(BOOST_PP_BOOL(p(445, s)), s, p, o, m) +# define BOOST_PP_FOR_445(s, p, o, m) BOOST_PP_FOR_445_C(BOOST_PP_BOOL(p(446, s)), s, p, o, m) +# define BOOST_PP_FOR_446(s, p, o, m) BOOST_PP_FOR_446_C(BOOST_PP_BOOL(p(447, s)), s, p, o, m) +# define BOOST_PP_FOR_447(s, p, o, m) BOOST_PP_FOR_447_C(BOOST_PP_BOOL(p(448, s)), s, p, o, m) +# define BOOST_PP_FOR_448(s, p, o, m) BOOST_PP_FOR_448_C(BOOST_PP_BOOL(p(449, s)), s, p, o, m) +# define BOOST_PP_FOR_449(s, p, o, m) BOOST_PP_FOR_449_C(BOOST_PP_BOOL(p(450, s)), s, p, o, m) +# define BOOST_PP_FOR_450(s, p, o, m) BOOST_PP_FOR_450_C(BOOST_PP_BOOL(p(451, s)), s, p, o, m) +# define BOOST_PP_FOR_451(s, p, o, m) BOOST_PP_FOR_451_C(BOOST_PP_BOOL(p(452, s)), s, p, o, m) +# define BOOST_PP_FOR_452(s, p, o, m) BOOST_PP_FOR_452_C(BOOST_PP_BOOL(p(453, s)), s, p, o, m) +# define BOOST_PP_FOR_453(s, p, o, m) BOOST_PP_FOR_453_C(BOOST_PP_BOOL(p(454, s)), s, p, o, m) +# define BOOST_PP_FOR_454(s, p, o, m) BOOST_PP_FOR_454_C(BOOST_PP_BOOL(p(455, s)), s, p, o, m) +# define BOOST_PP_FOR_455(s, p, o, m) BOOST_PP_FOR_455_C(BOOST_PP_BOOL(p(456, s)), s, p, o, m) +# define BOOST_PP_FOR_456(s, p, o, m) BOOST_PP_FOR_456_C(BOOST_PP_BOOL(p(457, s)), s, p, o, m) +# define BOOST_PP_FOR_457(s, p, o, m) BOOST_PP_FOR_457_C(BOOST_PP_BOOL(p(458, s)), s, p, o, m) +# define BOOST_PP_FOR_458(s, p, o, m) BOOST_PP_FOR_458_C(BOOST_PP_BOOL(p(459, s)), s, p, o, m) +# define BOOST_PP_FOR_459(s, p, o, m) BOOST_PP_FOR_459_C(BOOST_PP_BOOL(p(460, s)), s, p, o, m) +# define BOOST_PP_FOR_460(s, p, o, m) BOOST_PP_FOR_460_C(BOOST_PP_BOOL(p(461, s)), s, p, o, m) +# define BOOST_PP_FOR_461(s, p, o, m) BOOST_PP_FOR_461_C(BOOST_PP_BOOL(p(462, s)), s, p, o, m) +# define BOOST_PP_FOR_462(s, p, o, m) BOOST_PP_FOR_462_C(BOOST_PP_BOOL(p(463, s)), s, p, o, m) +# define BOOST_PP_FOR_463(s, p, o, m) BOOST_PP_FOR_463_C(BOOST_PP_BOOL(p(464, s)), s, p, o, m) +# define BOOST_PP_FOR_464(s, p, o, m) BOOST_PP_FOR_464_C(BOOST_PP_BOOL(p(465, s)), s, p, o, m) +# define BOOST_PP_FOR_465(s, p, o, m) BOOST_PP_FOR_465_C(BOOST_PP_BOOL(p(466, s)), s, p, o, m) +# define BOOST_PP_FOR_466(s, p, o, m) BOOST_PP_FOR_466_C(BOOST_PP_BOOL(p(467, s)), s, p, o, m) +# define BOOST_PP_FOR_467(s, p, o, m) BOOST_PP_FOR_467_C(BOOST_PP_BOOL(p(468, s)), s, p, o, m) +# define BOOST_PP_FOR_468(s, p, o, m) BOOST_PP_FOR_468_C(BOOST_PP_BOOL(p(469, s)), s, p, o, m) +# define BOOST_PP_FOR_469(s, p, o, m) BOOST_PP_FOR_469_C(BOOST_PP_BOOL(p(470, s)), s, p, o, m) +# define BOOST_PP_FOR_470(s, p, o, m) BOOST_PP_FOR_470_C(BOOST_PP_BOOL(p(471, s)), s, p, o, m) +# define BOOST_PP_FOR_471(s, p, o, m) BOOST_PP_FOR_471_C(BOOST_PP_BOOL(p(472, s)), s, p, o, m) +# define BOOST_PP_FOR_472(s, p, o, m) BOOST_PP_FOR_472_C(BOOST_PP_BOOL(p(473, s)), s, p, o, m) +# define BOOST_PP_FOR_473(s, p, o, m) BOOST_PP_FOR_473_C(BOOST_PP_BOOL(p(474, s)), s, p, o, m) +# define BOOST_PP_FOR_474(s, p, o, m) BOOST_PP_FOR_474_C(BOOST_PP_BOOL(p(475, s)), s, p, o, m) +# define BOOST_PP_FOR_475(s, p, o, m) BOOST_PP_FOR_475_C(BOOST_PP_BOOL(p(476, s)), s, p, o, m) +# define BOOST_PP_FOR_476(s, p, o, m) BOOST_PP_FOR_476_C(BOOST_PP_BOOL(p(477, s)), s, p, o, m) +# define BOOST_PP_FOR_477(s, p, o, m) BOOST_PP_FOR_477_C(BOOST_PP_BOOL(p(478, s)), s, p, o, m) +# define BOOST_PP_FOR_478(s, p, o, m) BOOST_PP_FOR_478_C(BOOST_PP_BOOL(p(479, s)), s, p, o, m) +# define BOOST_PP_FOR_479(s, p, o, m) BOOST_PP_FOR_479_C(BOOST_PP_BOOL(p(480, s)), s, p, o, m) +# define BOOST_PP_FOR_480(s, p, o, m) BOOST_PP_FOR_480_C(BOOST_PP_BOOL(p(481, s)), s, p, o, m) +# define BOOST_PP_FOR_481(s, p, o, m) BOOST_PP_FOR_481_C(BOOST_PP_BOOL(p(482, s)), s, p, o, m) +# define BOOST_PP_FOR_482(s, p, o, m) BOOST_PP_FOR_482_C(BOOST_PP_BOOL(p(483, s)), s, p, o, m) +# define BOOST_PP_FOR_483(s, p, o, m) BOOST_PP_FOR_483_C(BOOST_PP_BOOL(p(484, s)), s, p, o, m) +# define BOOST_PP_FOR_484(s, p, o, m) BOOST_PP_FOR_484_C(BOOST_PP_BOOL(p(485, s)), s, p, o, m) +# define BOOST_PP_FOR_485(s, p, o, m) BOOST_PP_FOR_485_C(BOOST_PP_BOOL(p(486, s)), s, p, o, m) +# define BOOST_PP_FOR_486(s, p, o, m) BOOST_PP_FOR_486_C(BOOST_PP_BOOL(p(487, s)), s, p, o, m) +# define BOOST_PP_FOR_487(s, p, o, m) BOOST_PP_FOR_487_C(BOOST_PP_BOOL(p(488, s)), s, p, o, m) +# define BOOST_PP_FOR_488(s, p, o, m) BOOST_PP_FOR_488_C(BOOST_PP_BOOL(p(489, s)), s, p, o, m) +# define BOOST_PP_FOR_489(s, p, o, m) BOOST_PP_FOR_489_C(BOOST_PP_BOOL(p(490, s)), s, p, o, m) +# define BOOST_PP_FOR_490(s, p, o, m) BOOST_PP_FOR_490_C(BOOST_PP_BOOL(p(491, s)), s, p, o, m) +# define BOOST_PP_FOR_491(s, p, o, m) BOOST_PP_FOR_491_C(BOOST_PP_BOOL(p(492, s)), s, p, o, m) +# define BOOST_PP_FOR_492(s, p, o, m) BOOST_PP_FOR_492_C(BOOST_PP_BOOL(p(493, s)), s, p, o, m) +# define BOOST_PP_FOR_493(s, p, o, m) BOOST_PP_FOR_493_C(BOOST_PP_BOOL(p(494, s)), s, p, o, m) +# define BOOST_PP_FOR_494(s, p, o, m) BOOST_PP_FOR_494_C(BOOST_PP_BOOL(p(495, s)), s, p, o, m) +# define BOOST_PP_FOR_495(s, p, o, m) BOOST_PP_FOR_495_C(BOOST_PP_BOOL(p(496, s)), s, p, o, m) +# define BOOST_PP_FOR_496(s, p, o, m) BOOST_PP_FOR_496_C(BOOST_PP_BOOL(p(497, s)), s, p, o, m) +# define BOOST_PP_FOR_497(s, p, o, m) BOOST_PP_FOR_497_C(BOOST_PP_BOOL(p(498, s)), s, p, o, m) +# define BOOST_PP_FOR_498(s, p, o, m) BOOST_PP_FOR_498_C(BOOST_PP_BOOL(p(499, s)), s, p, o, m) +# define BOOST_PP_FOR_499(s, p, o, m) BOOST_PP_FOR_499_C(BOOST_PP_BOOL(p(500, s)), s, p, o, m) +# define BOOST_PP_FOR_500(s, p, o, m) BOOST_PP_FOR_500_C(BOOST_PP_BOOL(p(501, s)), s, p, o, m) +# define BOOST_PP_FOR_501(s, p, o, m) BOOST_PP_FOR_501_C(BOOST_PP_BOOL(p(502, s)), s, p, o, m) +# define BOOST_PP_FOR_502(s, p, o, m) BOOST_PP_FOR_502_C(BOOST_PP_BOOL(p(503, s)), s, p, o, m) +# define BOOST_PP_FOR_503(s, p, o, m) BOOST_PP_FOR_503_C(BOOST_PP_BOOL(p(504, s)), s, p, o, m) +# define BOOST_PP_FOR_504(s, p, o, m) BOOST_PP_FOR_504_C(BOOST_PP_BOOL(p(505, s)), s, p, o, m) +# define BOOST_PP_FOR_505(s, p, o, m) BOOST_PP_FOR_505_C(BOOST_PP_BOOL(p(506, s)), s, p, o, m) +# define BOOST_PP_FOR_506(s, p, o, m) BOOST_PP_FOR_506_C(BOOST_PP_BOOL(p(507, s)), s, p, o, m) +# define BOOST_PP_FOR_507(s, p, o, m) BOOST_PP_FOR_507_C(BOOST_PP_BOOL(p(508, s)), s, p, o, m) +# define BOOST_PP_FOR_508(s, p, o, m) BOOST_PP_FOR_508_C(BOOST_PP_BOOL(p(509, s)), s, p, o, m) +# define BOOST_PP_FOR_509(s, p, o, m) BOOST_PP_FOR_509_C(BOOST_PP_BOOL(p(510, s)), s, p, o, m) +# define BOOST_PP_FOR_510(s, p, o, m) BOOST_PP_FOR_510_C(BOOST_PP_BOOL(p(511, s)), s, p, o, m) +# define BOOST_PP_FOR_511(s, p, o, m) BOOST_PP_FOR_511_C(BOOST_PP_BOOL(p(512, s)), s, p, o, m) +# define BOOST_PP_FOR_512(s, p, o, m) BOOST_PP_FOR_512_C(BOOST_PP_BOOL(p(513, s)), s, p, o, m) +# +# define BOOST_PP_FOR_257_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(258, s) BOOST_PP_IIF(c, BOOST_PP_FOR_258, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(258, s), p, o, m) +# define BOOST_PP_FOR_258_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(259, s) BOOST_PP_IIF(c, BOOST_PP_FOR_259, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(259, s), p, o, m) +# define BOOST_PP_FOR_259_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(260, s) BOOST_PP_IIF(c, BOOST_PP_FOR_260, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(260, s), p, o, m) +# define BOOST_PP_FOR_260_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(261, s) BOOST_PP_IIF(c, BOOST_PP_FOR_261, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(261, s), p, o, m) +# define BOOST_PP_FOR_261_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(262, s) BOOST_PP_IIF(c, BOOST_PP_FOR_262, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(262, s), p, o, m) +# define BOOST_PP_FOR_262_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(263, s) BOOST_PP_IIF(c, BOOST_PP_FOR_263, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(263, s), p, o, m) +# define BOOST_PP_FOR_263_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(264, s) BOOST_PP_IIF(c, BOOST_PP_FOR_264, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(264, s), p, o, m) +# define BOOST_PP_FOR_264_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(265, s) BOOST_PP_IIF(c, BOOST_PP_FOR_265, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(265, s), p, o, m) +# define BOOST_PP_FOR_265_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(266, s) BOOST_PP_IIF(c, BOOST_PP_FOR_266, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(266, s), p, o, m) +# define BOOST_PP_FOR_266_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(267, s) BOOST_PP_IIF(c, BOOST_PP_FOR_267, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(267, s), p, o, m) +# define BOOST_PP_FOR_267_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(268, s) BOOST_PP_IIF(c, BOOST_PP_FOR_268, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(268, s), p, o, m) +# define BOOST_PP_FOR_268_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(269, s) BOOST_PP_IIF(c, BOOST_PP_FOR_269, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(269, s), p, o, m) +# define BOOST_PP_FOR_269_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(270, s) BOOST_PP_IIF(c, BOOST_PP_FOR_270, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(270, s), p, o, m) +# define BOOST_PP_FOR_270_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(271, s) BOOST_PP_IIF(c, BOOST_PP_FOR_271, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(271, s), p, o, m) +# define BOOST_PP_FOR_271_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(272, s) BOOST_PP_IIF(c, BOOST_PP_FOR_272, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(272, s), p, o, m) +# define BOOST_PP_FOR_272_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(273, s) BOOST_PP_IIF(c, BOOST_PP_FOR_273, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(273, s), p, o, m) +# define BOOST_PP_FOR_273_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(274, s) BOOST_PP_IIF(c, BOOST_PP_FOR_274, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(274, s), p, o, m) +# define BOOST_PP_FOR_274_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(275, s) BOOST_PP_IIF(c, BOOST_PP_FOR_275, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(275, s), p, o, m) +# define BOOST_PP_FOR_275_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(276, s) BOOST_PP_IIF(c, BOOST_PP_FOR_276, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(276, s), p, o, m) +# define BOOST_PP_FOR_276_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(277, s) BOOST_PP_IIF(c, BOOST_PP_FOR_277, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(277, s), p, o, m) +# define BOOST_PP_FOR_277_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(278, s) BOOST_PP_IIF(c, BOOST_PP_FOR_278, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(278, s), p, o, m) +# define BOOST_PP_FOR_278_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(279, s) BOOST_PP_IIF(c, BOOST_PP_FOR_279, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(279, s), p, o, m) +# define BOOST_PP_FOR_279_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(280, s) BOOST_PP_IIF(c, BOOST_PP_FOR_280, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(280, s), p, o, m) +# define BOOST_PP_FOR_280_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(281, s) BOOST_PP_IIF(c, BOOST_PP_FOR_281, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(281, s), p, o, m) +# define BOOST_PP_FOR_281_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(282, s) BOOST_PP_IIF(c, BOOST_PP_FOR_282, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(282, s), p, o, m) +# define BOOST_PP_FOR_282_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(283, s) BOOST_PP_IIF(c, BOOST_PP_FOR_283, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(283, s), p, o, m) +# define BOOST_PP_FOR_283_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(284, s) BOOST_PP_IIF(c, BOOST_PP_FOR_284, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(284, s), p, o, m) +# define BOOST_PP_FOR_284_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(285, s) BOOST_PP_IIF(c, BOOST_PP_FOR_285, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(285, s), p, o, m) +# define BOOST_PP_FOR_285_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(286, s) BOOST_PP_IIF(c, BOOST_PP_FOR_286, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(286, s), p, o, m) +# define BOOST_PP_FOR_286_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(287, s) BOOST_PP_IIF(c, BOOST_PP_FOR_287, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(287, s), p, o, m) +# define BOOST_PP_FOR_287_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(288, s) BOOST_PP_IIF(c, BOOST_PP_FOR_288, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(288, s), p, o, m) +# define BOOST_PP_FOR_288_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(289, s) BOOST_PP_IIF(c, BOOST_PP_FOR_289, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(289, s), p, o, m) +# define BOOST_PP_FOR_289_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(290, s) BOOST_PP_IIF(c, BOOST_PP_FOR_290, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(290, s), p, o, m) +# define BOOST_PP_FOR_290_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(291, s) BOOST_PP_IIF(c, BOOST_PP_FOR_291, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(291, s), p, o, m) +# define BOOST_PP_FOR_291_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(292, s) BOOST_PP_IIF(c, BOOST_PP_FOR_292, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(292, s), p, o, m) +# define BOOST_PP_FOR_292_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(293, s) BOOST_PP_IIF(c, BOOST_PP_FOR_293, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(293, s), p, o, m) +# define BOOST_PP_FOR_293_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(294, s) BOOST_PP_IIF(c, BOOST_PP_FOR_294, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(294, s), p, o, m) +# define BOOST_PP_FOR_294_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(295, s) BOOST_PP_IIF(c, BOOST_PP_FOR_295, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(295, s), p, o, m) +# define BOOST_PP_FOR_295_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(296, s) BOOST_PP_IIF(c, BOOST_PP_FOR_296, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(296, s), p, o, m) +# define BOOST_PP_FOR_296_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(297, s) BOOST_PP_IIF(c, BOOST_PP_FOR_297, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(297, s), p, o, m) +# define BOOST_PP_FOR_297_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(298, s) BOOST_PP_IIF(c, BOOST_PP_FOR_298, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(298, s), p, o, m) +# define BOOST_PP_FOR_298_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(299, s) BOOST_PP_IIF(c, BOOST_PP_FOR_299, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(299, s), p, o, m) +# define BOOST_PP_FOR_299_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(300, s) BOOST_PP_IIF(c, BOOST_PP_FOR_300, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(300, s), p, o, m) +# define BOOST_PP_FOR_300_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(301, s) BOOST_PP_IIF(c, BOOST_PP_FOR_301, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(301, s), p, o, m) +# define BOOST_PP_FOR_301_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(302, s) BOOST_PP_IIF(c, BOOST_PP_FOR_302, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(302, s), p, o, m) +# define BOOST_PP_FOR_302_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(303, s) BOOST_PP_IIF(c, BOOST_PP_FOR_303, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(303, s), p, o, m) +# define BOOST_PP_FOR_303_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(304, s) BOOST_PP_IIF(c, BOOST_PP_FOR_304, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(304, s), p, o, m) +# define BOOST_PP_FOR_304_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(305, s) BOOST_PP_IIF(c, BOOST_PP_FOR_305, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(305, s), p, o, m) +# define BOOST_PP_FOR_305_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(306, s) BOOST_PP_IIF(c, BOOST_PP_FOR_306, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(306, s), p, o, m) +# define BOOST_PP_FOR_306_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(307, s) BOOST_PP_IIF(c, BOOST_PP_FOR_307, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(307, s), p, o, m) +# define BOOST_PP_FOR_307_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(308, s) BOOST_PP_IIF(c, BOOST_PP_FOR_308, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(308, s), p, o, m) +# define BOOST_PP_FOR_308_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(309, s) BOOST_PP_IIF(c, BOOST_PP_FOR_309, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(309, s), p, o, m) +# define BOOST_PP_FOR_309_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(310, s) BOOST_PP_IIF(c, BOOST_PP_FOR_310, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(310, s), p, o, m) +# define BOOST_PP_FOR_310_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(311, s) BOOST_PP_IIF(c, BOOST_PP_FOR_311, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(311, s), p, o, m) +# define BOOST_PP_FOR_311_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(312, s) BOOST_PP_IIF(c, BOOST_PP_FOR_312, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(312, s), p, o, m) +# define BOOST_PP_FOR_312_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(313, s) BOOST_PP_IIF(c, BOOST_PP_FOR_313, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(313, s), p, o, m) +# define BOOST_PP_FOR_313_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(314, s) BOOST_PP_IIF(c, BOOST_PP_FOR_314, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(314, s), p, o, m) +# define BOOST_PP_FOR_314_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(315, s) BOOST_PP_IIF(c, BOOST_PP_FOR_315, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(315, s), p, o, m) +# define BOOST_PP_FOR_315_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(316, s) BOOST_PP_IIF(c, BOOST_PP_FOR_316, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(316, s), p, o, m) +# define BOOST_PP_FOR_316_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(317, s) BOOST_PP_IIF(c, BOOST_PP_FOR_317, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(317, s), p, o, m) +# define BOOST_PP_FOR_317_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(318, s) BOOST_PP_IIF(c, BOOST_PP_FOR_318, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(318, s), p, o, m) +# define BOOST_PP_FOR_318_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(319, s) BOOST_PP_IIF(c, BOOST_PP_FOR_319, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(319, s), p, o, m) +# define BOOST_PP_FOR_319_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(320, s) BOOST_PP_IIF(c, BOOST_PP_FOR_320, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(320, s), p, o, m) +# define BOOST_PP_FOR_320_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(321, s) BOOST_PP_IIF(c, BOOST_PP_FOR_321, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(321, s), p, o, m) +# define BOOST_PP_FOR_321_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(322, s) BOOST_PP_IIF(c, BOOST_PP_FOR_322, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(322, s), p, o, m) +# define BOOST_PP_FOR_322_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(323, s) BOOST_PP_IIF(c, BOOST_PP_FOR_323, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(323, s), p, o, m) +# define BOOST_PP_FOR_323_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(324, s) BOOST_PP_IIF(c, BOOST_PP_FOR_324, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(324, s), p, o, m) +# define BOOST_PP_FOR_324_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(325, s) BOOST_PP_IIF(c, BOOST_PP_FOR_325, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(325, s), p, o, m) +# define BOOST_PP_FOR_325_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(326, s) BOOST_PP_IIF(c, BOOST_PP_FOR_326, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(326, s), p, o, m) +# define BOOST_PP_FOR_326_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(327, s) BOOST_PP_IIF(c, BOOST_PP_FOR_327, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(327, s), p, o, m) +# define BOOST_PP_FOR_327_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(328, s) BOOST_PP_IIF(c, BOOST_PP_FOR_328, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(328, s), p, o, m) +# define BOOST_PP_FOR_328_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(329, s) BOOST_PP_IIF(c, BOOST_PP_FOR_329, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(329, s), p, o, m) +# define BOOST_PP_FOR_329_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(330, s) BOOST_PP_IIF(c, BOOST_PP_FOR_330, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(330, s), p, o, m) +# define BOOST_PP_FOR_330_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(331, s) BOOST_PP_IIF(c, BOOST_PP_FOR_331, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(331, s), p, o, m) +# define BOOST_PP_FOR_331_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(332, s) BOOST_PP_IIF(c, BOOST_PP_FOR_332, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(332, s), p, o, m) +# define BOOST_PP_FOR_332_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(333, s) BOOST_PP_IIF(c, BOOST_PP_FOR_333, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(333, s), p, o, m) +# define BOOST_PP_FOR_333_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(334, s) BOOST_PP_IIF(c, BOOST_PP_FOR_334, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(334, s), p, o, m) +# define BOOST_PP_FOR_334_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(335, s) BOOST_PP_IIF(c, BOOST_PP_FOR_335, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(335, s), p, o, m) +# define BOOST_PP_FOR_335_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(336, s) BOOST_PP_IIF(c, BOOST_PP_FOR_336, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(336, s), p, o, m) +# define BOOST_PP_FOR_336_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(337, s) BOOST_PP_IIF(c, BOOST_PP_FOR_337, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(337, s), p, o, m) +# define BOOST_PP_FOR_337_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(338, s) BOOST_PP_IIF(c, BOOST_PP_FOR_338, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(338, s), p, o, m) +# define BOOST_PP_FOR_338_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(339, s) BOOST_PP_IIF(c, BOOST_PP_FOR_339, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(339, s), p, o, m) +# define BOOST_PP_FOR_339_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(340, s) BOOST_PP_IIF(c, BOOST_PP_FOR_340, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(340, s), p, o, m) +# define BOOST_PP_FOR_340_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(341, s) BOOST_PP_IIF(c, BOOST_PP_FOR_341, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(341, s), p, o, m) +# define BOOST_PP_FOR_341_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(342, s) BOOST_PP_IIF(c, BOOST_PP_FOR_342, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(342, s), p, o, m) +# define BOOST_PP_FOR_342_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(343, s) BOOST_PP_IIF(c, BOOST_PP_FOR_343, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(343, s), p, o, m) +# define BOOST_PP_FOR_343_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(344, s) BOOST_PP_IIF(c, BOOST_PP_FOR_344, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(344, s), p, o, m) +# define BOOST_PP_FOR_344_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(345, s) BOOST_PP_IIF(c, BOOST_PP_FOR_345, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(345, s), p, o, m) +# define BOOST_PP_FOR_345_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(346, s) BOOST_PP_IIF(c, BOOST_PP_FOR_346, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(346, s), p, o, m) +# define BOOST_PP_FOR_346_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(347, s) BOOST_PP_IIF(c, BOOST_PP_FOR_347, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(347, s), p, o, m) +# define BOOST_PP_FOR_347_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(348, s) BOOST_PP_IIF(c, BOOST_PP_FOR_348, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(348, s), p, o, m) +# define BOOST_PP_FOR_348_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(349, s) BOOST_PP_IIF(c, BOOST_PP_FOR_349, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(349, s), p, o, m) +# define BOOST_PP_FOR_349_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(350, s) BOOST_PP_IIF(c, BOOST_PP_FOR_350, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(350, s), p, o, m) +# define BOOST_PP_FOR_350_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(351, s) BOOST_PP_IIF(c, BOOST_PP_FOR_351, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(351, s), p, o, m) +# define BOOST_PP_FOR_351_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(352, s) BOOST_PP_IIF(c, BOOST_PP_FOR_352, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(352, s), p, o, m) +# define BOOST_PP_FOR_352_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(353, s) BOOST_PP_IIF(c, BOOST_PP_FOR_353, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(353, s), p, o, m) +# define BOOST_PP_FOR_353_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(354, s) BOOST_PP_IIF(c, BOOST_PP_FOR_354, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(354, s), p, o, m) +# define BOOST_PP_FOR_354_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(355, s) BOOST_PP_IIF(c, BOOST_PP_FOR_355, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(355, s), p, o, m) +# define BOOST_PP_FOR_355_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(356, s) BOOST_PP_IIF(c, BOOST_PP_FOR_356, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(356, s), p, o, m) +# define BOOST_PP_FOR_356_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(357, s) BOOST_PP_IIF(c, BOOST_PP_FOR_357, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(357, s), p, o, m) +# define BOOST_PP_FOR_357_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(358, s) BOOST_PP_IIF(c, BOOST_PP_FOR_358, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(358, s), p, o, m) +# define BOOST_PP_FOR_358_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(359, s) BOOST_PP_IIF(c, BOOST_PP_FOR_359, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(359, s), p, o, m) +# define BOOST_PP_FOR_359_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(360, s) BOOST_PP_IIF(c, BOOST_PP_FOR_360, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(360, s), p, o, m) +# define BOOST_PP_FOR_360_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(361, s) BOOST_PP_IIF(c, BOOST_PP_FOR_361, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(361, s), p, o, m) +# define BOOST_PP_FOR_361_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(362, s) BOOST_PP_IIF(c, BOOST_PP_FOR_362, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(362, s), p, o, m) +# define BOOST_PP_FOR_362_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(363, s) BOOST_PP_IIF(c, BOOST_PP_FOR_363, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(363, s), p, o, m) +# define BOOST_PP_FOR_363_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(364, s) BOOST_PP_IIF(c, BOOST_PP_FOR_364, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(364, s), p, o, m) +# define BOOST_PP_FOR_364_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(365, s) BOOST_PP_IIF(c, BOOST_PP_FOR_365, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(365, s), p, o, m) +# define BOOST_PP_FOR_365_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(366, s) BOOST_PP_IIF(c, BOOST_PP_FOR_366, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(366, s), p, o, m) +# define BOOST_PP_FOR_366_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(367, s) BOOST_PP_IIF(c, BOOST_PP_FOR_367, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(367, s), p, o, m) +# define BOOST_PP_FOR_367_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(368, s) BOOST_PP_IIF(c, BOOST_PP_FOR_368, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(368, s), p, o, m) +# define BOOST_PP_FOR_368_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(369, s) BOOST_PP_IIF(c, BOOST_PP_FOR_369, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(369, s), p, o, m) +# define BOOST_PP_FOR_369_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(370, s) BOOST_PP_IIF(c, BOOST_PP_FOR_370, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(370, s), p, o, m) +# define BOOST_PP_FOR_370_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(371, s) BOOST_PP_IIF(c, BOOST_PP_FOR_371, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(371, s), p, o, m) +# define BOOST_PP_FOR_371_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(372, s) BOOST_PP_IIF(c, BOOST_PP_FOR_372, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(372, s), p, o, m) +# define BOOST_PP_FOR_372_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(373, s) BOOST_PP_IIF(c, BOOST_PP_FOR_373, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(373, s), p, o, m) +# define BOOST_PP_FOR_373_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(374, s) BOOST_PP_IIF(c, BOOST_PP_FOR_374, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(374, s), p, o, m) +# define BOOST_PP_FOR_374_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(375, s) BOOST_PP_IIF(c, BOOST_PP_FOR_375, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(375, s), p, o, m) +# define BOOST_PP_FOR_375_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(376, s) BOOST_PP_IIF(c, BOOST_PP_FOR_376, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(376, s), p, o, m) +# define BOOST_PP_FOR_376_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(377, s) BOOST_PP_IIF(c, BOOST_PP_FOR_377, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(377, s), p, o, m) +# define BOOST_PP_FOR_377_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(378, s) BOOST_PP_IIF(c, BOOST_PP_FOR_378, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(378, s), p, o, m) +# define BOOST_PP_FOR_378_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(379, s) BOOST_PP_IIF(c, BOOST_PP_FOR_379, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(379, s), p, o, m) +# define BOOST_PP_FOR_379_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(380, s) BOOST_PP_IIF(c, BOOST_PP_FOR_380, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(380, s), p, o, m) +# define BOOST_PP_FOR_380_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(381, s) BOOST_PP_IIF(c, BOOST_PP_FOR_381, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(381, s), p, o, m) +# define BOOST_PP_FOR_381_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(382, s) BOOST_PP_IIF(c, BOOST_PP_FOR_382, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(382, s), p, o, m) +# define BOOST_PP_FOR_382_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(383, s) BOOST_PP_IIF(c, BOOST_PP_FOR_383, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(383, s), p, o, m) +# define BOOST_PP_FOR_383_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(384, s) BOOST_PP_IIF(c, BOOST_PP_FOR_384, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(384, s), p, o, m) +# define BOOST_PP_FOR_384_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(385, s) BOOST_PP_IIF(c, BOOST_PP_FOR_385, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(385, s), p, o, m) +# define BOOST_PP_FOR_385_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(386, s) BOOST_PP_IIF(c, BOOST_PP_FOR_386, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(386, s), p, o, m) +# define BOOST_PP_FOR_386_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(387, s) BOOST_PP_IIF(c, BOOST_PP_FOR_387, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(387, s), p, o, m) +# define BOOST_PP_FOR_387_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(388, s) BOOST_PP_IIF(c, BOOST_PP_FOR_388, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(388, s), p, o, m) +# define BOOST_PP_FOR_388_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(389, s) BOOST_PP_IIF(c, BOOST_PP_FOR_389, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(389, s), p, o, m) +# define BOOST_PP_FOR_389_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(390, s) BOOST_PP_IIF(c, BOOST_PP_FOR_390, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(390, s), p, o, m) +# define BOOST_PP_FOR_390_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(391, s) BOOST_PP_IIF(c, BOOST_PP_FOR_391, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(391, s), p, o, m) +# define BOOST_PP_FOR_391_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(392, s) BOOST_PP_IIF(c, BOOST_PP_FOR_392, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(392, s), p, o, m) +# define BOOST_PP_FOR_392_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(393, s) BOOST_PP_IIF(c, BOOST_PP_FOR_393, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(393, s), p, o, m) +# define BOOST_PP_FOR_393_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(394, s) BOOST_PP_IIF(c, BOOST_PP_FOR_394, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(394, s), p, o, m) +# define BOOST_PP_FOR_394_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(395, s) BOOST_PP_IIF(c, BOOST_PP_FOR_395, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(395, s), p, o, m) +# define BOOST_PP_FOR_395_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(396, s) BOOST_PP_IIF(c, BOOST_PP_FOR_396, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(396, s), p, o, m) +# define BOOST_PP_FOR_396_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(397, s) BOOST_PP_IIF(c, BOOST_PP_FOR_397, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(397, s), p, o, m) +# define BOOST_PP_FOR_397_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(398, s) BOOST_PP_IIF(c, BOOST_PP_FOR_398, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(398, s), p, o, m) +# define BOOST_PP_FOR_398_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(399, s) BOOST_PP_IIF(c, BOOST_PP_FOR_399, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(399, s), p, o, m) +# define BOOST_PP_FOR_399_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(400, s) BOOST_PP_IIF(c, BOOST_PP_FOR_400, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(400, s), p, o, m) +# define BOOST_PP_FOR_400_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(401, s) BOOST_PP_IIF(c, BOOST_PP_FOR_401, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(401, s), p, o, m) +# define BOOST_PP_FOR_401_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(402, s) BOOST_PP_IIF(c, BOOST_PP_FOR_402, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(402, s), p, o, m) +# define BOOST_PP_FOR_402_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(403, s) BOOST_PP_IIF(c, BOOST_PP_FOR_403, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(403, s), p, o, m) +# define BOOST_PP_FOR_403_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(404, s) BOOST_PP_IIF(c, BOOST_PP_FOR_404, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(404, s), p, o, m) +# define BOOST_PP_FOR_404_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(405, s) BOOST_PP_IIF(c, BOOST_PP_FOR_405, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(405, s), p, o, m) +# define BOOST_PP_FOR_405_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(406, s) BOOST_PP_IIF(c, BOOST_PP_FOR_406, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(406, s), p, o, m) +# define BOOST_PP_FOR_406_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(407, s) BOOST_PP_IIF(c, BOOST_PP_FOR_407, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(407, s), p, o, m) +# define BOOST_PP_FOR_407_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(408, s) BOOST_PP_IIF(c, BOOST_PP_FOR_408, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(408, s), p, o, m) +# define BOOST_PP_FOR_408_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(409, s) BOOST_PP_IIF(c, BOOST_PP_FOR_409, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(409, s), p, o, m) +# define BOOST_PP_FOR_409_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(410, s) BOOST_PP_IIF(c, BOOST_PP_FOR_410, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(410, s), p, o, m) +# define BOOST_PP_FOR_410_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(411, s) BOOST_PP_IIF(c, BOOST_PP_FOR_411, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(411, s), p, o, m) +# define BOOST_PP_FOR_411_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(412, s) BOOST_PP_IIF(c, BOOST_PP_FOR_412, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(412, s), p, o, m) +# define BOOST_PP_FOR_412_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(413, s) BOOST_PP_IIF(c, BOOST_PP_FOR_413, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(413, s), p, o, m) +# define BOOST_PP_FOR_413_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(414, s) BOOST_PP_IIF(c, BOOST_PP_FOR_414, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(414, s), p, o, m) +# define BOOST_PP_FOR_414_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(415, s) BOOST_PP_IIF(c, BOOST_PP_FOR_415, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(415, s), p, o, m) +# define BOOST_PP_FOR_415_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(416, s) BOOST_PP_IIF(c, BOOST_PP_FOR_416, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(416, s), p, o, m) +# define BOOST_PP_FOR_416_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(417, s) BOOST_PP_IIF(c, BOOST_PP_FOR_417, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(417, s), p, o, m) +# define BOOST_PP_FOR_417_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(418, s) BOOST_PP_IIF(c, BOOST_PP_FOR_418, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(418, s), p, o, m) +# define BOOST_PP_FOR_418_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(419, s) BOOST_PP_IIF(c, BOOST_PP_FOR_419, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(419, s), p, o, m) +# define BOOST_PP_FOR_419_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(420, s) BOOST_PP_IIF(c, BOOST_PP_FOR_420, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(420, s), p, o, m) +# define BOOST_PP_FOR_420_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(421, s) BOOST_PP_IIF(c, BOOST_PP_FOR_421, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(421, s), p, o, m) +# define BOOST_PP_FOR_421_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(422, s) BOOST_PP_IIF(c, BOOST_PP_FOR_422, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(422, s), p, o, m) +# define BOOST_PP_FOR_422_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(423, s) BOOST_PP_IIF(c, BOOST_PP_FOR_423, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(423, s), p, o, m) +# define BOOST_PP_FOR_423_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(424, s) BOOST_PP_IIF(c, BOOST_PP_FOR_424, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(424, s), p, o, m) +# define BOOST_PP_FOR_424_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(425, s) BOOST_PP_IIF(c, BOOST_PP_FOR_425, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(425, s), p, o, m) +# define BOOST_PP_FOR_425_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(426, s) BOOST_PP_IIF(c, BOOST_PP_FOR_426, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(426, s), p, o, m) +# define BOOST_PP_FOR_426_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(427, s) BOOST_PP_IIF(c, BOOST_PP_FOR_427, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(427, s), p, o, m) +# define BOOST_PP_FOR_427_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(428, s) BOOST_PP_IIF(c, BOOST_PP_FOR_428, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(428, s), p, o, m) +# define BOOST_PP_FOR_428_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(429, s) BOOST_PP_IIF(c, BOOST_PP_FOR_429, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(429, s), p, o, m) +# define BOOST_PP_FOR_429_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(430, s) BOOST_PP_IIF(c, BOOST_PP_FOR_430, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(430, s), p, o, m) +# define BOOST_PP_FOR_430_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(431, s) BOOST_PP_IIF(c, BOOST_PP_FOR_431, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(431, s), p, o, m) +# define BOOST_PP_FOR_431_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(432, s) BOOST_PP_IIF(c, BOOST_PP_FOR_432, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(432, s), p, o, m) +# define BOOST_PP_FOR_432_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(433, s) BOOST_PP_IIF(c, BOOST_PP_FOR_433, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(433, s), p, o, m) +# define BOOST_PP_FOR_433_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(434, s) BOOST_PP_IIF(c, BOOST_PP_FOR_434, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(434, s), p, o, m) +# define BOOST_PP_FOR_434_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(435, s) BOOST_PP_IIF(c, BOOST_PP_FOR_435, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(435, s), p, o, m) +# define BOOST_PP_FOR_435_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(436, s) BOOST_PP_IIF(c, BOOST_PP_FOR_436, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(436, s), p, o, m) +# define BOOST_PP_FOR_436_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(437, s) BOOST_PP_IIF(c, BOOST_PP_FOR_437, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(437, s), p, o, m) +# define BOOST_PP_FOR_437_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(438, s) BOOST_PP_IIF(c, BOOST_PP_FOR_438, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(438, s), p, o, m) +# define BOOST_PP_FOR_438_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(439, s) BOOST_PP_IIF(c, BOOST_PP_FOR_439, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(439, s), p, o, m) +# define BOOST_PP_FOR_439_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(440, s) BOOST_PP_IIF(c, BOOST_PP_FOR_440, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(440, s), p, o, m) +# define BOOST_PP_FOR_440_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(441, s) BOOST_PP_IIF(c, BOOST_PP_FOR_441, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(441, s), p, o, m) +# define BOOST_PP_FOR_441_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(442, s) BOOST_PP_IIF(c, BOOST_PP_FOR_442, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(442, s), p, o, m) +# define BOOST_PP_FOR_442_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(443, s) BOOST_PP_IIF(c, BOOST_PP_FOR_443, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(443, s), p, o, m) +# define BOOST_PP_FOR_443_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(444, s) BOOST_PP_IIF(c, BOOST_PP_FOR_444, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(444, s), p, o, m) +# define BOOST_PP_FOR_444_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(445, s) BOOST_PP_IIF(c, BOOST_PP_FOR_445, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(445, s), p, o, m) +# define BOOST_PP_FOR_445_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(446, s) BOOST_PP_IIF(c, BOOST_PP_FOR_446, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(446, s), p, o, m) +# define BOOST_PP_FOR_446_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(447, s) BOOST_PP_IIF(c, BOOST_PP_FOR_447, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(447, s), p, o, m) +# define BOOST_PP_FOR_447_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(448, s) BOOST_PP_IIF(c, BOOST_PP_FOR_448, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(448, s), p, o, m) +# define BOOST_PP_FOR_448_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(449, s) BOOST_PP_IIF(c, BOOST_PP_FOR_449, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(449, s), p, o, m) +# define BOOST_PP_FOR_449_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(450, s) BOOST_PP_IIF(c, BOOST_PP_FOR_450, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(450, s), p, o, m) +# define BOOST_PP_FOR_450_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(451, s) BOOST_PP_IIF(c, BOOST_PP_FOR_451, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(451, s), p, o, m) +# define BOOST_PP_FOR_451_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(452, s) BOOST_PP_IIF(c, BOOST_PP_FOR_452, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(452, s), p, o, m) +# define BOOST_PP_FOR_452_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(453, s) BOOST_PP_IIF(c, BOOST_PP_FOR_453, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(453, s), p, o, m) +# define BOOST_PP_FOR_453_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(454, s) BOOST_PP_IIF(c, BOOST_PP_FOR_454, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(454, s), p, o, m) +# define BOOST_PP_FOR_454_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(455, s) BOOST_PP_IIF(c, BOOST_PP_FOR_455, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(455, s), p, o, m) +# define BOOST_PP_FOR_455_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(456, s) BOOST_PP_IIF(c, BOOST_PP_FOR_456, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(456, s), p, o, m) +# define BOOST_PP_FOR_456_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(457, s) BOOST_PP_IIF(c, BOOST_PP_FOR_457, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(457, s), p, o, m) +# define BOOST_PP_FOR_457_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(458, s) BOOST_PP_IIF(c, BOOST_PP_FOR_458, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(458, s), p, o, m) +# define BOOST_PP_FOR_458_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(459, s) BOOST_PP_IIF(c, BOOST_PP_FOR_459, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(459, s), p, o, m) +# define BOOST_PP_FOR_459_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(460, s) BOOST_PP_IIF(c, BOOST_PP_FOR_460, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(460, s), p, o, m) +# define BOOST_PP_FOR_460_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(461, s) BOOST_PP_IIF(c, BOOST_PP_FOR_461, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(461, s), p, o, m) +# define BOOST_PP_FOR_461_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(462, s) BOOST_PP_IIF(c, BOOST_PP_FOR_462, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(462, s), p, o, m) +# define BOOST_PP_FOR_462_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(463, s) BOOST_PP_IIF(c, BOOST_PP_FOR_463, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(463, s), p, o, m) +# define BOOST_PP_FOR_463_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(464, s) BOOST_PP_IIF(c, BOOST_PP_FOR_464, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(464, s), p, o, m) +# define BOOST_PP_FOR_464_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(465, s) BOOST_PP_IIF(c, BOOST_PP_FOR_465, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(465, s), p, o, m) +# define BOOST_PP_FOR_465_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(466, s) BOOST_PP_IIF(c, BOOST_PP_FOR_466, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(466, s), p, o, m) +# define BOOST_PP_FOR_466_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(467, s) BOOST_PP_IIF(c, BOOST_PP_FOR_467, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(467, s), p, o, m) +# define BOOST_PP_FOR_467_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(468, s) BOOST_PP_IIF(c, BOOST_PP_FOR_468, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(468, s), p, o, m) +# define BOOST_PP_FOR_468_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(469, s) BOOST_PP_IIF(c, BOOST_PP_FOR_469, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(469, s), p, o, m) +# define BOOST_PP_FOR_469_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(470, s) BOOST_PP_IIF(c, BOOST_PP_FOR_470, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(470, s), p, o, m) +# define BOOST_PP_FOR_470_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(471, s) BOOST_PP_IIF(c, BOOST_PP_FOR_471, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(471, s), p, o, m) +# define BOOST_PP_FOR_471_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(472, s) BOOST_PP_IIF(c, BOOST_PP_FOR_472, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(472, s), p, o, m) +# define BOOST_PP_FOR_472_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(473, s) BOOST_PP_IIF(c, BOOST_PP_FOR_473, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(473, s), p, o, m) +# define BOOST_PP_FOR_473_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(474, s) BOOST_PP_IIF(c, BOOST_PP_FOR_474, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(474, s), p, o, m) +# define BOOST_PP_FOR_474_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(475, s) BOOST_PP_IIF(c, BOOST_PP_FOR_475, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(475, s), p, o, m) +# define BOOST_PP_FOR_475_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(476, s) BOOST_PP_IIF(c, BOOST_PP_FOR_476, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(476, s), p, o, m) +# define BOOST_PP_FOR_476_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(477, s) BOOST_PP_IIF(c, BOOST_PP_FOR_477, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(477, s), p, o, m) +# define BOOST_PP_FOR_477_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(478, s) BOOST_PP_IIF(c, BOOST_PP_FOR_478, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(478, s), p, o, m) +# define BOOST_PP_FOR_478_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(479, s) BOOST_PP_IIF(c, BOOST_PP_FOR_479, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(479, s), p, o, m) +# define BOOST_PP_FOR_479_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(480, s) BOOST_PP_IIF(c, BOOST_PP_FOR_480, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(480, s), p, o, m) +# define BOOST_PP_FOR_480_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(481, s) BOOST_PP_IIF(c, BOOST_PP_FOR_481, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(481, s), p, o, m) +# define BOOST_PP_FOR_481_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(482, s) BOOST_PP_IIF(c, BOOST_PP_FOR_482, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(482, s), p, o, m) +# define BOOST_PP_FOR_482_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(483, s) BOOST_PP_IIF(c, BOOST_PP_FOR_483, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(483, s), p, o, m) +# define BOOST_PP_FOR_483_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(484, s) BOOST_PP_IIF(c, BOOST_PP_FOR_484, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(484, s), p, o, m) +# define BOOST_PP_FOR_484_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(485, s) BOOST_PP_IIF(c, BOOST_PP_FOR_485, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(485, s), p, o, m) +# define BOOST_PP_FOR_485_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(486, s) BOOST_PP_IIF(c, BOOST_PP_FOR_486, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(486, s), p, o, m) +# define BOOST_PP_FOR_486_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(487, s) BOOST_PP_IIF(c, BOOST_PP_FOR_487, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(487, s), p, o, m) +# define BOOST_PP_FOR_487_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(488, s) BOOST_PP_IIF(c, BOOST_PP_FOR_488, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(488, s), p, o, m) +# define BOOST_PP_FOR_488_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(489, s) BOOST_PP_IIF(c, BOOST_PP_FOR_489, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(489, s), p, o, m) +# define BOOST_PP_FOR_489_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(490, s) BOOST_PP_IIF(c, BOOST_PP_FOR_490, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(490, s), p, o, m) +# define BOOST_PP_FOR_490_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(491, s) BOOST_PP_IIF(c, BOOST_PP_FOR_491, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(491, s), p, o, m) +# define BOOST_PP_FOR_491_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(492, s) BOOST_PP_IIF(c, BOOST_PP_FOR_492, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(492, s), p, o, m) +# define BOOST_PP_FOR_492_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(493, s) BOOST_PP_IIF(c, BOOST_PP_FOR_493, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(493, s), p, o, m) +# define BOOST_PP_FOR_493_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(494, s) BOOST_PP_IIF(c, BOOST_PP_FOR_494, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(494, s), p, o, m) +# define BOOST_PP_FOR_494_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(495, s) BOOST_PP_IIF(c, BOOST_PP_FOR_495, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(495, s), p, o, m) +# define BOOST_PP_FOR_495_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(496, s) BOOST_PP_IIF(c, BOOST_PP_FOR_496, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(496, s), p, o, m) +# define BOOST_PP_FOR_496_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(497, s) BOOST_PP_IIF(c, BOOST_PP_FOR_497, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(497, s), p, o, m) +# define BOOST_PP_FOR_497_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(498, s) BOOST_PP_IIF(c, BOOST_PP_FOR_498, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(498, s), p, o, m) +# define BOOST_PP_FOR_498_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(499, s) BOOST_PP_IIF(c, BOOST_PP_FOR_499, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(499, s), p, o, m) +# define BOOST_PP_FOR_499_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(500, s) BOOST_PP_IIF(c, BOOST_PP_FOR_500, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(500, s), p, o, m) +# define BOOST_PP_FOR_500_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(501, s) BOOST_PP_IIF(c, BOOST_PP_FOR_501, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(501, s), p, o, m) +# define BOOST_PP_FOR_501_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(502, s) BOOST_PP_IIF(c, BOOST_PP_FOR_502, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(502, s), p, o, m) +# define BOOST_PP_FOR_502_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(503, s) BOOST_PP_IIF(c, BOOST_PP_FOR_503, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(503, s), p, o, m) +# define BOOST_PP_FOR_503_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(504, s) BOOST_PP_IIF(c, BOOST_PP_FOR_504, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(504, s), p, o, m) +# define BOOST_PP_FOR_504_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(505, s) BOOST_PP_IIF(c, BOOST_PP_FOR_505, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(505, s), p, o, m) +# define BOOST_PP_FOR_505_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(506, s) BOOST_PP_IIF(c, BOOST_PP_FOR_506, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(506, s), p, o, m) +# define BOOST_PP_FOR_506_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(507, s) BOOST_PP_IIF(c, BOOST_PP_FOR_507, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(507, s), p, o, m) +# define BOOST_PP_FOR_507_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(508, s) BOOST_PP_IIF(c, BOOST_PP_FOR_508, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(508, s), p, o, m) +# define BOOST_PP_FOR_508_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(509, s) BOOST_PP_IIF(c, BOOST_PP_FOR_509, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(509, s), p, o, m) +# define BOOST_PP_FOR_509_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(510, s) BOOST_PP_IIF(c, BOOST_PP_FOR_510, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(510, s), p, o, m) +# define BOOST_PP_FOR_510_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(511, s) BOOST_PP_IIF(c, BOOST_PP_FOR_511, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(511, s), p, o, m) +# define BOOST_PP_FOR_511_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(512, s) BOOST_PP_IIF(c, BOOST_PP_FOR_512, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(512, s), p, o, m) +# define BOOST_PP_FOR_512_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(513, s) BOOST_PP_IIF(c, BOOST_PP_FOR_513, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(513, s), p, o, m) +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/detail/msvc/for.hpp b/src/boost/boost/preprocessor/repetition/detail/msvc/for.hpp index 5bb179fe9..9ed5955b3 100644 --- a/src/boost/boost/preprocessor/repetition/detail/msvc/for.hpp +++ b/src/boost/boost/preprocessor/repetition/detail/msvc/for.hpp @@ -8,6 +8,7 @@ # */ # # /* Revised by Paul Mensonides (2002) */ +# /* Revised by Edward Diener (2020) */ # # /* See http://www.boost.org for most recent version. */ # diff --git a/src/boost/boost/preprocessor/repetition/enum.hpp b/src/boost/boost/preprocessor/repetition/enum.hpp deleted file mode 100644 index 8b4ab9a51..000000000 --- a/src/boost/boost/preprocessor/repetition/enum.hpp +++ /dev/null @@ -1,66 +0,0 @@ -# /* 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_REPETITION_ENUM_HPP -# define BOOST_PREPROCESSOR_REPETITION_ENUM_HPP -# -# include -# include -# include -# include -# include -# include -# include -# include -# -# /* BOOST_PP_ENUM */ -# -# if 0 -# define BOOST_PP_ENUM(count, macro, data) -# endif -# -# define BOOST_PP_ENUM BOOST_PP_CAT(BOOST_PP_ENUM_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4)) -# -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() -# define BOOST_PP_ENUM_1(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_M_1, (m, d)) -# define BOOST_PP_ENUM_2(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_M_2, (m, d)) -# define BOOST_PP_ENUM_3(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_M_3, (m, d)) -# else -# define BOOST_PP_ENUM_1(c, m, d) BOOST_PP_ENUM_1_I(c, m, d) -# define BOOST_PP_ENUM_2(c, m, d) BOOST_PP_ENUM_2_I(c, m, d) -# define BOOST_PP_ENUM_3(c, m, d) BOOST_PP_ENUM_3_I(c, m, d) -# define BOOST_PP_ENUM_1_I(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_M_1, (m, d)) -# define BOOST_PP_ENUM_2_I(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_M_2, (m, d)) -# define BOOST_PP_ENUM_3_I(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_M_3, (m, d)) -# endif -# -# define BOOST_PP_ENUM_4(c, m, d) BOOST_PP_ERROR(0x0003) -# -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() -# define BOOST_PP_ENUM_M_1(z, n, md) BOOST_PP_ENUM_M_1_IM(z, n, BOOST_PP_TUPLE_REM_2 md) -# define BOOST_PP_ENUM_M_2(z, n, md) BOOST_PP_ENUM_M_2_IM(z, n, BOOST_PP_TUPLE_REM_2 md) -# define BOOST_PP_ENUM_M_3(z, n, md) BOOST_PP_ENUM_M_3_IM(z, n, BOOST_PP_TUPLE_REM_2 md) -# define BOOST_PP_ENUM_M_1_IM(z, n, im) BOOST_PP_ENUM_M_1_I(z, n, im) -# define BOOST_PP_ENUM_M_2_IM(z, n, im) BOOST_PP_ENUM_M_2_I(z, n, im) -# define BOOST_PP_ENUM_M_3_IM(z, n, im) BOOST_PP_ENUM_M_3_I(z, n, im) -# else -# define BOOST_PP_ENUM_M_1(z, n, md) BOOST_PP_ENUM_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md)) -# define BOOST_PP_ENUM_M_2(z, n, md) BOOST_PP_ENUM_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md)) -# define BOOST_PP_ENUM_M_3(z, n, md) BOOST_PP_ENUM_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md)) -# endif -# -# define BOOST_PP_ENUM_M_1_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d) -# define BOOST_PP_ENUM_M_2_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d) -# define BOOST_PP_ENUM_M_3_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d) -# -# endif diff --git a/src/boost/boost/preprocessor/repetition/enum_params_with_a_default.hpp b/src/boost/boost/preprocessor/repetition/enum_params_with_a_default.hpp deleted file mode 100644 index 2281c5cea..000000000 --- a/src/boost/boost/preprocessor/repetition/enum_params_with_a_default.hpp +++ /dev/null @@ -1,25 +0,0 @@ -# /* 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_REPETITION_ENUM_PARAMS_WITH_A_DEFAULT_HPP -# define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_A_DEFAULT_HPP -# -# include -# include -# include -# -# /* BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT */ -# -# define BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(count, param, def) BOOST_PP_ENUM_BINARY_PARAMS(count, param, = def BOOST_PP_INTERCEPT) -# -# endif diff --git a/src/boost/boost/preprocessor/repetition/for.hpp b/src/boost/boost/preprocessor/repetition/for.hpp index 6a5968f5d..87d6752cb 100644 --- a/src/boost/boost/preprocessor/repetition/for.hpp +++ b/src/boost/boost/preprocessor/repetition/for.hpp @@ -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_REPETITION_FOR_HPP # define BOOST_PREPROCESSOR_REPETITION_FOR_HPP # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # include # include # include @@ -52,13 +57,13 @@ # define BOOST_PP_FOR_257_ERROR() BOOST_PP_ERROR(0x0002) # define BOOST_PP_FOR_257(s, p, o, m) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_FOR_257_PR(s,p), \ - BOOST_PP_FOR_257_ERROR, \ - BOOST_PP_EMPTY \ - ) \ - () \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_FOR_257_PR(s,p), \ + BOOST_PP_FOR_257_ERROR, \ + BOOST_PP_EMPTY \ + ) \ + () \ /**/ // # define BOOST_PP_FOR_257(s, p, o, m) BOOST_PP_ERROR(0x0002) # @@ -321,4 +326,113 @@ # define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_255(s, p, o, m) 0 # define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_256(s, p, o, m) 0 # +# else +# +# include +# include +# include +# include +# include +# include +# include +# +# /* BOOST_PP_FOR */ +# +# if 0 +# define BOOST_PP_FOR(state, pred, op, macro) +# endif +# +# if BOOST_PP_LIMIT_FOR == 256 +# define BOOST_PP_FOR BOOST_PP_CAT(BOOST_PP_FOR_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 256))) +# elif BOOST_PP_LIMIT_FOR == 512 +# define BOOST_PP_FOR BOOST_PP_CAT(BOOST_PP_FOR_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 512))) +# elif BOOST_PP_LIMIT_FOR == 1024 +# define BOOST_PP_FOR BOOST_PP_CAT(BOOST_PP_FOR_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 1024))) +# else +# error Incorrect value for the BOOST_PP_LIMIT_FOR limit +# endif +# +# define BOOST_PP_FOR_P(n) BOOST_PP_FOR_P_DEC(BOOST_PP_DEC(n)) +# define BOOST_PP_FOR_P_DEC(n) BOOST_PP_CAT(BOOST_PP_FOR_CHECK_, BOOST_PP_CAT(BOOST_PP_FOR_ , n)(1, BOOST_PP_FOR_SR_P, BOOST_PP_FOR_SR_O, BOOST_PP_FOR_SR_M)) +# +# define BOOST_PP_FOR_SR_P(r, s) s +# define BOOST_PP_FOR_SR_O(r, s) 0 +# define BOOST_PP_FOR_SR_M(r, s) BOOST_PP_NIL +# +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() +# include +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() +# include +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC() +# include +# else +# include +# endif +# +# if BOOST_PP_LIMIT_FOR == 256 +# +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC() +# define BOOST_PP_FOR_257_PR(s, p) BOOST_PP_BOOL(p##(257, s)) +# else +# define BOOST_PP_FOR_257_PR(s, p) BOOST_PP_BOOL(p(257, s)) +# endif + +# define BOOST_PP_FOR_257_ERROR() BOOST_PP_ERROR(0x0002) +# define BOOST_PP_FOR_257(s, p, o, m) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_FOR_257_PR(s,p), \ + BOOST_PP_FOR_257_ERROR, \ + BOOST_PP_EMPTY \ + ) \ + () \ +/**/ +# +# elif BOOST_PP_LIMIT_FOR == 512 +# +# define BOOST_PP_FOR_513_PR(s, p) BOOST_PP_BOOL(p(513, s)) + +# define BOOST_PP_FOR_513_ERROR() BOOST_PP_ERROR(0x0002) +# define BOOST_PP_FOR_513(s, p, o, m) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_FOR_513_PR(s,p), \ + BOOST_PP_FOR_513_ERROR, \ + BOOST_PP_EMPTY \ + ) \ + () \ +/**/ +# +# elif BOOST_PP_LIMIT_FOR == 1024 +# +# define BOOST_PP_FOR_1025_PR(s, p) BOOST_PP_BOOL(p(1025, s)) + +# define BOOST_PP_FOR_1025_ERROR() BOOST_PP_ERROR(0x0002) +# define BOOST_PP_FOR_1025(s, p, o, m) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_FOR_1025_PR(s,p), \ + BOOST_PP_FOR_1025_ERROR, \ + BOOST_PP_EMPTY \ + ) \ + () \ +/**/ +# +# endif +# +# define BOOST_PP_FOR_CHECK_BOOST_PP_NIL 1 +# +# if BOOST_PP_LIMIT_FOR == 256 +# include +# elif BOOST_PP_LIMIT_FOR == 512 +# include +# include +# elif BOOST_PP_LIMIT_FOR == 1024 +# include +# include +# include +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/repetition/limits/for_1024.hpp b/src/boost/boost/preprocessor/repetition/limits/for_1024.hpp new file mode 100644 index 000000000..622d858f4 --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/limits/for_1024.hpp @@ -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_REPETITION_FOR_1024_HPP +# define BOOST_PREPROCESSOR_REPETITION_FOR_1024_HPP +# +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_513(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_514(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_515(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_516(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_517(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_518(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_519(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_520(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_521(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_522(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_523(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_524(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_525(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_526(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_527(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_528(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_529(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_530(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_531(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_532(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_533(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_534(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_535(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_536(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_537(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_538(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_539(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_540(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_541(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_542(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_543(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_544(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_545(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_546(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_547(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_548(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_549(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_550(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_551(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_552(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_553(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_554(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_555(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_556(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_557(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_558(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_559(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_560(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_561(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_562(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_563(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_564(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_565(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_566(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_567(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_568(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_569(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_570(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_571(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_572(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_573(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_574(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_575(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_576(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_577(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_578(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_579(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_580(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_581(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_582(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_583(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_584(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_585(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_586(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_587(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_588(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_589(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_590(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_591(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_592(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_593(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_594(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_595(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_596(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_597(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_598(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_599(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_600(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_601(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_602(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_603(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_604(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_605(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_606(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_607(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_608(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_609(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_610(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_611(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_612(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_613(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_614(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_615(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_616(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_617(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_618(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_619(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_620(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_621(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_622(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_623(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_624(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_625(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_626(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_627(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_628(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_629(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_630(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_631(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_632(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_633(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_634(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_635(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_636(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_637(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_638(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_639(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_640(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_641(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_642(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_643(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_644(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_645(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_646(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_647(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_648(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_649(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_650(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_651(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_652(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_653(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_654(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_655(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_656(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_657(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_658(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_659(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_660(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_661(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_662(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_663(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_664(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_665(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_666(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_667(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_668(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_669(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_670(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_671(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_672(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_673(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_674(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_675(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_676(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_677(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_678(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_679(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_680(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_681(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_682(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_683(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_684(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_685(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_686(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_687(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_688(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_689(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_690(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_691(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_692(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_693(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_694(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_695(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_696(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_697(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_698(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_699(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_700(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_701(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_702(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_703(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_704(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_705(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_706(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_707(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_708(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_709(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_710(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_711(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_712(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_713(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_714(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_715(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_716(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_717(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_718(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_719(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_720(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_721(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_722(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_723(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_724(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_725(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_726(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_727(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_728(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_729(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_730(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_731(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_732(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_733(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_734(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_735(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_736(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_737(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_738(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_739(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_740(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_741(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_742(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_743(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_744(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_745(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_746(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_747(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_748(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_749(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_750(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_751(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_752(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_753(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_754(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_755(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_756(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_757(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_758(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_759(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_760(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_761(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_762(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_763(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_764(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_765(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_766(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_767(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_768(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_769(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_770(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_771(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_772(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_773(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_774(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_775(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_776(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_777(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_778(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_779(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_780(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_781(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_782(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_783(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_784(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_785(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_786(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_787(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_788(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_789(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_790(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_791(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_792(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_793(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_794(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_795(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_796(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_797(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_798(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_799(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_800(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_801(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_802(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_803(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_804(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_805(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_806(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_807(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_808(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_809(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_810(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_811(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_812(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_813(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_814(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_815(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_816(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_817(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_818(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_819(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_820(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_821(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_822(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_823(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_824(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_825(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_826(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_827(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_828(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_829(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_830(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_831(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_832(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_833(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_834(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_835(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_836(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_837(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_838(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_839(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_840(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_841(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_842(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_843(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_844(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_845(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_846(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_847(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_848(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_849(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_850(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_851(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_852(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_853(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_854(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_855(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_856(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_857(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_858(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_859(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_860(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_861(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_862(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_863(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_864(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_865(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_866(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_867(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_868(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_869(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_870(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_871(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_872(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_873(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_874(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_875(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_876(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_877(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_878(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_879(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_880(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_881(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_882(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_883(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_884(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_885(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_886(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_887(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_888(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_889(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_890(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_891(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_892(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_893(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_894(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_895(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_896(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_897(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_898(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_899(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_900(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_901(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_902(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_903(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_904(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_905(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_906(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_907(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_908(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_909(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_910(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_911(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_912(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_913(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_914(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_915(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_916(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_917(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_918(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_919(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_920(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_921(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_922(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_923(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_924(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_925(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_926(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_927(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_928(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_929(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_930(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_931(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_932(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_933(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_934(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_935(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_936(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_937(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_938(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_939(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_940(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_941(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_942(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_943(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_944(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_945(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_946(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_947(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_948(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_949(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_950(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_951(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_952(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_953(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_954(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_955(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_956(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_957(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_958(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_959(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_960(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_961(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_962(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_963(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_964(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_965(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_966(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_967(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_968(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_969(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_970(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_971(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_972(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_973(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_974(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_975(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_976(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_977(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_978(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_979(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_980(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_981(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_982(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_983(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_984(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_985(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_986(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_987(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_988(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_989(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_990(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_991(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_992(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_993(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_994(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_995(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_996(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_997(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_998(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_999(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1000(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1001(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1002(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1003(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1004(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1005(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1006(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1007(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1008(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1009(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1010(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1011(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1012(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1013(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1014(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1015(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1016(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1017(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1018(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1019(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1020(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1021(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1022(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1023(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1024(s, p, o, m) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/limits/for_256.hpp b/src/boost/boost/preprocessor/repetition/limits/for_256.hpp new file mode 100644 index 000000000..f826a3378 --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/limits/for_256.hpp @@ -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_REPETITION_FOR_256_HPP +# define BOOST_PREPROCESSOR_REPETITION_FOR_256_HPP +# +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_0(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_2(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_3(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_4(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_5(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_6(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_7(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_8(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_9(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_10(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_11(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_12(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_13(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_14(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_15(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_16(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_17(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_18(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_19(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_20(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_21(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_22(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_23(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_24(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_25(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_26(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_27(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_28(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_29(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_30(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_31(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_32(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_33(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_34(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_35(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_36(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_37(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_38(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_39(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_40(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_41(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_42(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_43(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_44(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_45(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_46(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_47(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_48(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_49(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_50(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_51(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_52(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_53(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_54(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_55(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_56(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_57(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_58(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_59(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_60(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_61(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_62(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_63(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_64(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_65(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_66(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_67(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_68(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_69(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_70(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_71(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_72(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_73(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_74(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_75(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_76(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_77(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_78(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_79(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_80(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_81(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_82(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_83(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_84(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_85(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_86(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_87(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_88(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_89(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_90(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_91(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_92(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_93(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_94(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_95(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_96(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_97(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_98(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_99(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_100(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_101(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_102(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_103(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_104(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_105(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_106(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_107(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_108(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_109(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_110(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_111(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_112(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_113(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_114(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_115(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_116(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_117(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_118(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_119(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_120(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_121(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_122(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_123(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_124(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_125(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_126(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_127(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_128(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_129(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_130(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_131(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_132(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_133(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_134(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_135(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_136(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_137(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_138(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_139(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_140(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_141(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_142(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_143(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_144(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_145(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_146(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_147(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_148(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_149(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_150(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_151(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_152(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_153(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_154(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_155(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_156(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_157(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_158(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_159(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_160(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_161(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_162(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_163(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_164(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_165(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_166(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_167(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_168(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_169(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_170(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_171(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_172(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_173(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_174(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_175(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_176(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_177(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_178(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_179(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_180(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_181(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_182(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_183(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_184(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_185(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_186(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_187(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_188(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_189(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_190(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_191(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_192(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_193(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_194(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_195(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_196(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_197(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_198(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_199(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_200(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_201(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_202(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_203(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_204(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_205(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_206(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_207(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_208(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_209(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_210(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_211(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_212(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_213(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_214(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_215(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_216(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_217(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_218(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_219(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_220(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_221(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_222(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_223(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_224(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_225(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_226(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_227(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_228(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_229(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_230(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_231(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_232(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_233(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_234(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_235(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_236(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_237(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_238(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_239(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_240(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_241(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_242(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_243(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_244(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_245(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_246(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_247(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_248(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_249(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_250(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_251(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_252(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_253(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_254(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_255(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_256(s, p, o, m) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/limits/for_512.hpp b/src/boost/boost/preprocessor/repetition/limits/for_512.hpp new file mode 100644 index 000000000..4f2284b14 --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/limits/for_512.hpp @@ -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_REPETITION_FOR_512_HPP +# define BOOST_PREPROCESSOR_REPETITION_FOR_512_HPP +# +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_257(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_258(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_259(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_260(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_261(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_262(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_263(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_264(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_265(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_266(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_267(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_268(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_269(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_270(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_271(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_272(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_273(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_274(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_275(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_276(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_277(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_278(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_279(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_280(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_281(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_282(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_283(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_284(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_285(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_286(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_287(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_288(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_289(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_290(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_291(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_292(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_293(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_294(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_295(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_296(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_297(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_298(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_299(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_300(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_301(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_302(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_303(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_304(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_305(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_306(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_307(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_308(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_309(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_310(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_311(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_312(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_313(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_314(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_315(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_316(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_317(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_318(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_319(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_320(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_321(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_322(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_323(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_324(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_325(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_326(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_327(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_328(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_329(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_330(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_331(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_332(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_333(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_334(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_335(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_336(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_337(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_338(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_339(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_340(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_341(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_342(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_343(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_344(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_345(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_346(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_347(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_348(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_349(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_350(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_351(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_352(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_353(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_354(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_355(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_356(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_357(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_358(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_359(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_360(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_361(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_362(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_363(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_364(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_365(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_366(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_367(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_368(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_369(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_370(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_371(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_372(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_373(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_374(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_375(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_376(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_377(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_378(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_379(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_380(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_381(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_382(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_383(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_384(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_385(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_386(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_387(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_388(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_389(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_390(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_391(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_392(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_393(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_394(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_395(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_396(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_397(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_398(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_399(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_400(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_401(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_402(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_403(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_404(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_405(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_406(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_407(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_408(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_409(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_410(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_411(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_412(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_413(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_414(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_415(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_416(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_417(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_418(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_419(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_420(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_421(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_422(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_423(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_424(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_425(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_426(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_427(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_428(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_429(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_430(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_431(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_432(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_433(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_434(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_435(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_436(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_437(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_438(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_439(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_440(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_441(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_442(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_443(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_444(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_445(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_446(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_447(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_448(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_449(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_450(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_451(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_452(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_453(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_454(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_455(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_456(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_457(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_458(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_459(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_460(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_461(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_462(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_463(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_464(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_465(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_466(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_467(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_468(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_469(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_470(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_471(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_472(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_473(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_474(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_475(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_476(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_477(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_478(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_479(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_480(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_481(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_482(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_483(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_484(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_485(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_486(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_487(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_488(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_489(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_490(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_491(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_492(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_493(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_494(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_495(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_496(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_497(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_498(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_499(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_500(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_501(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_502(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_503(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_504(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_505(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_506(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_507(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_508(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_509(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_510(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_511(s, p, o, m) 0 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_512(s, p, o, m) 0 +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/limits/repeat_1024.hpp b/src/boost/boost/preprocessor/repetition/limits/repeat_1024.hpp new file mode 100644 index 000000000..098576d99 --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/limits/repeat_1024.hpp @@ -0,0 +1,1557 @@ +# /* 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_REPETITION_REPEAT_1024_HPP +# define BOOST_PREPROCESSOR_REPETITION_REPEAT_1024_HPP +# +# define BOOST_PP_REPEAT_1_513(m, d) BOOST_PP_REPEAT_1_512(m, d) m(2, 512, d) +# define BOOST_PP_REPEAT_1_514(m, d) BOOST_PP_REPEAT_1_513(m, d) m(2, 513, d) +# define BOOST_PP_REPEAT_1_515(m, d) BOOST_PP_REPEAT_1_514(m, d) m(2, 514, d) +# define BOOST_PP_REPEAT_1_516(m, d) BOOST_PP_REPEAT_1_515(m, d) m(2, 515, d) +# define BOOST_PP_REPEAT_1_517(m, d) BOOST_PP_REPEAT_1_516(m, d) m(2, 516, d) +# define BOOST_PP_REPEAT_1_518(m, d) BOOST_PP_REPEAT_1_517(m, d) m(2, 517, d) +# define BOOST_PP_REPEAT_1_519(m, d) BOOST_PP_REPEAT_1_518(m, d) m(2, 518, d) +# define BOOST_PP_REPEAT_1_520(m, d) BOOST_PP_REPEAT_1_519(m, d) m(2, 519, d) +# define BOOST_PP_REPEAT_1_521(m, d) BOOST_PP_REPEAT_1_520(m, d) m(2, 520, d) +# define BOOST_PP_REPEAT_1_522(m, d) BOOST_PP_REPEAT_1_521(m, d) m(2, 521, d) +# define BOOST_PP_REPEAT_1_523(m, d) BOOST_PP_REPEAT_1_522(m, d) m(2, 522, d) +# define BOOST_PP_REPEAT_1_524(m, d) BOOST_PP_REPEAT_1_523(m, d) m(2, 523, d) +# define BOOST_PP_REPEAT_1_525(m, d) BOOST_PP_REPEAT_1_524(m, d) m(2, 524, d) +# define BOOST_PP_REPEAT_1_526(m, d) BOOST_PP_REPEAT_1_525(m, d) m(2, 525, d) +# define BOOST_PP_REPEAT_1_527(m, d) BOOST_PP_REPEAT_1_526(m, d) m(2, 526, d) +# define BOOST_PP_REPEAT_1_528(m, d) BOOST_PP_REPEAT_1_527(m, d) m(2, 527, d) +# define BOOST_PP_REPEAT_1_529(m, d) BOOST_PP_REPEAT_1_528(m, d) m(2, 528, d) +# define BOOST_PP_REPEAT_1_530(m, d) BOOST_PP_REPEAT_1_529(m, d) m(2, 529, d) +# define BOOST_PP_REPEAT_1_531(m, d) BOOST_PP_REPEAT_1_530(m, d) m(2, 530, d) +# define BOOST_PP_REPEAT_1_532(m, d) BOOST_PP_REPEAT_1_531(m, d) m(2, 531, d) +# define BOOST_PP_REPEAT_1_533(m, d) BOOST_PP_REPEAT_1_532(m, d) m(2, 532, d) +# define BOOST_PP_REPEAT_1_534(m, d) BOOST_PP_REPEAT_1_533(m, d) m(2, 533, d) +# define BOOST_PP_REPEAT_1_535(m, d) BOOST_PP_REPEAT_1_534(m, d) m(2, 534, d) +# define BOOST_PP_REPEAT_1_536(m, d) BOOST_PP_REPEAT_1_535(m, d) m(2, 535, d) +# define BOOST_PP_REPEAT_1_537(m, d) BOOST_PP_REPEAT_1_536(m, d) m(2, 536, d) +# define BOOST_PP_REPEAT_1_538(m, d) BOOST_PP_REPEAT_1_537(m, d) m(2, 537, d) +# define BOOST_PP_REPEAT_1_539(m, d) BOOST_PP_REPEAT_1_538(m, d) m(2, 538, d) +# define BOOST_PP_REPEAT_1_540(m, d) BOOST_PP_REPEAT_1_539(m, d) m(2, 539, d) +# define BOOST_PP_REPEAT_1_541(m, d) BOOST_PP_REPEAT_1_540(m, d) m(2, 540, d) +# define BOOST_PP_REPEAT_1_542(m, d) BOOST_PP_REPEAT_1_541(m, d) m(2, 541, d) +# define BOOST_PP_REPEAT_1_543(m, d) BOOST_PP_REPEAT_1_542(m, d) m(2, 542, d) +# define BOOST_PP_REPEAT_1_544(m, d) BOOST_PP_REPEAT_1_543(m, d) m(2, 543, d) +# define BOOST_PP_REPEAT_1_545(m, d) BOOST_PP_REPEAT_1_544(m, d) m(2, 544, d) +# define BOOST_PP_REPEAT_1_546(m, d) BOOST_PP_REPEAT_1_545(m, d) m(2, 545, d) +# define BOOST_PP_REPEAT_1_547(m, d) BOOST_PP_REPEAT_1_546(m, d) m(2, 546, d) +# define BOOST_PP_REPEAT_1_548(m, d) BOOST_PP_REPEAT_1_547(m, d) m(2, 547, d) +# define BOOST_PP_REPEAT_1_549(m, d) BOOST_PP_REPEAT_1_548(m, d) m(2, 548, d) +# define BOOST_PP_REPEAT_1_550(m, d) BOOST_PP_REPEAT_1_549(m, d) m(2, 549, d) +# define BOOST_PP_REPEAT_1_551(m, d) BOOST_PP_REPEAT_1_550(m, d) m(2, 550, d) +# define BOOST_PP_REPEAT_1_552(m, d) BOOST_PP_REPEAT_1_551(m, d) m(2, 551, d) +# define BOOST_PP_REPEAT_1_553(m, d) BOOST_PP_REPEAT_1_552(m, d) m(2, 552, d) +# define BOOST_PP_REPEAT_1_554(m, d) BOOST_PP_REPEAT_1_553(m, d) m(2, 553, d) +# define BOOST_PP_REPEAT_1_555(m, d) BOOST_PP_REPEAT_1_554(m, d) m(2, 554, d) +# define BOOST_PP_REPEAT_1_556(m, d) BOOST_PP_REPEAT_1_555(m, d) m(2, 555, d) +# define BOOST_PP_REPEAT_1_557(m, d) BOOST_PP_REPEAT_1_556(m, d) m(2, 556, d) +# define BOOST_PP_REPEAT_1_558(m, d) BOOST_PP_REPEAT_1_557(m, d) m(2, 557, d) +# define BOOST_PP_REPEAT_1_559(m, d) BOOST_PP_REPEAT_1_558(m, d) m(2, 558, d) +# define BOOST_PP_REPEAT_1_560(m, d) BOOST_PP_REPEAT_1_559(m, d) m(2, 559, d) +# define BOOST_PP_REPEAT_1_561(m, d) BOOST_PP_REPEAT_1_560(m, d) m(2, 560, d) +# define BOOST_PP_REPEAT_1_562(m, d) BOOST_PP_REPEAT_1_561(m, d) m(2, 561, d) +# define BOOST_PP_REPEAT_1_563(m, d) BOOST_PP_REPEAT_1_562(m, d) m(2, 562, d) +# define BOOST_PP_REPEAT_1_564(m, d) BOOST_PP_REPEAT_1_563(m, d) m(2, 563, d) +# define BOOST_PP_REPEAT_1_565(m, d) BOOST_PP_REPEAT_1_564(m, d) m(2, 564, d) +# define BOOST_PP_REPEAT_1_566(m, d) BOOST_PP_REPEAT_1_565(m, d) m(2, 565, d) +# define BOOST_PP_REPEAT_1_567(m, d) BOOST_PP_REPEAT_1_566(m, d) m(2, 566, d) +# define BOOST_PP_REPEAT_1_568(m, d) BOOST_PP_REPEAT_1_567(m, d) m(2, 567, d) +# define BOOST_PP_REPEAT_1_569(m, d) BOOST_PP_REPEAT_1_568(m, d) m(2, 568, d) +# define BOOST_PP_REPEAT_1_570(m, d) BOOST_PP_REPEAT_1_569(m, d) m(2, 569, d) +# define BOOST_PP_REPEAT_1_571(m, d) BOOST_PP_REPEAT_1_570(m, d) m(2, 570, d) +# define BOOST_PP_REPEAT_1_572(m, d) BOOST_PP_REPEAT_1_571(m, d) m(2, 571, d) +# define BOOST_PP_REPEAT_1_573(m, d) BOOST_PP_REPEAT_1_572(m, d) m(2, 572, d) +# define BOOST_PP_REPEAT_1_574(m, d) BOOST_PP_REPEAT_1_573(m, d) m(2, 573, d) +# define BOOST_PP_REPEAT_1_575(m, d) BOOST_PP_REPEAT_1_574(m, d) m(2, 574, d) +# define BOOST_PP_REPEAT_1_576(m, d) BOOST_PP_REPEAT_1_575(m, d) m(2, 575, d) +# define BOOST_PP_REPEAT_1_577(m, d) BOOST_PP_REPEAT_1_576(m, d) m(2, 576, d) +# define BOOST_PP_REPEAT_1_578(m, d) BOOST_PP_REPEAT_1_577(m, d) m(2, 577, d) +# define BOOST_PP_REPEAT_1_579(m, d) BOOST_PP_REPEAT_1_578(m, d) m(2, 578, d) +# define BOOST_PP_REPEAT_1_580(m, d) BOOST_PP_REPEAT_1_579(m, d) m(2, 579, d) +# define BOOST_PP_REPEAT_1_581(m, d) BOOST_PP_REPEAT_1_580(m, d) m(2, 580, d) +# define BOOST_PP_REPEAT_1_582(m, d) BOOST_PP_REPEAT_1_581(m, d) m(2, 581, d) +# define BOOST_PP_REPEAT_1_583(m, d) BOOST_PP_REPEAT_1_582(m, d) m(2, 582, d) +# define BOOST_PP_REPEAT_1_584(m, d) BOOST_PP_REPEAT_1_583(m, d) m(2, 583, d) +# define BOOST_PP_REPEAT_1_585(m, d) BOOST_PP_REPEAT_1_584(m, d) m(2, 584, d) +# define BOOST_PP_REPEAT_1_586(m, d) BOOST_PP_REPEAT_1_585(m, d) m(2, 585, d) +# define BOOST_PP_REPEAT_1_587(m, d) BOOST_PP_REPEAT_1_586(m, d) m(2, 586, d) +# define BOOST_PP_REPEAT_1_588(m, d) BOOST_PP_REPEAT_1_587(m, d) m(2, 587, d) +# define BOOST_PP_REPEAT_1_589(m, d) BOOST_PP_REPEAT_1_588(m, d) m(2, 588, d) +# define BOOST_PP_REPEAT_1_590(m, d) BOOST_PP_REPEAT_1_589(m, d) m(2, 589, d) +# define BOOST_PP_REPEAT_1_591(m, d) BOOST_PP_REPEAT_1_590(m, d) m(2, 590, d) +# define BOOST_PP_REPEAT_1_592(m, d) BOOST_PP_REPEAT_1_591(m, d) m(2, 591, d) +# define BOOST_PP_REPEAT_1_593(m, d) BOOST_PP_REPEAT_1_592(m, d) m(2, 592, d) +# define BOOST_PP_REPEAT_1_594(m, d) BOOST_PP_REPEAT_1_593(m, d) m(2, 593, d) +# define BOOST_PP_REPEAT_1_595(m, d) BOOST_PP_REPEAT_1_594(m, d) m(2, 594, d) +# define BOOST_PP_REPEAT_1_596(m, d) BOOST_PP_REPEAT_1_595(m, d) m(2, 595, d) +# define BOOST_PP_REPEAT_1_597(m, d) BOOST_PP_REPEAT_1_596(m, d) m(2, 596, d) +# define BOOST_PP_REPEAT_1_598(m, d) BOOST_PP_REPEAT_1_597(m, d) m(2, 597, d) +# define BOOST_PP_REPEAT_1_599(m, d) BOOST_PP_REPEAT_1_598(m, d) m(2, 598, d) +# define BOOST_PP_REPEAT_1_600(m, d) BOOST_PP_REPEAT_1_599(m, d) m(2, 599, d) +# define BOOST_PP_REPEAT_1_601(m, d) BOOST_PP_REPEAT_1_600(m, d) m(2, 600, d) +# define BOOST_PP_REPEAT_1_602(m, d) BOOST_PP_REPEAT_1_601(m, d) m(2, 601, d) +# define BOOST_PP_REPEAT_1_603(m, d) BOOST_PP_REPEAT_1_602(m, d) m(2, 602, d) +# define BOOST_PP_REPEAT_1_604(m, d) BOOST_PP_REPEAT_1_603(m, d) m(2, 603, d) +# define BOOST_PP_REPEAT_1_605(m, d) BOOST_PP_REPEAT_1_604(m, d) m(2, 604, d) +# define BOOST_PP_REPEAT_1_606(m, d) BOOST_PP_REPEAT_1_605(m, d) m(2, 605, d) +# define BOOST_PP_REPEAT_1_607(m, d) BOOST_PP_REPEAT_1_606(m, d) m(2, 606, d) +# define BOOST_PP_REPEAT_1_608(m, d) BOOST_PP_REPEAT_1_607(m, d) m(2, 607, d) +# define BOOST_PP_REPEAT_1_609(m, d) BOOST_PP_REPEAT_1_608(m, d) m(2, 608, d) +# define BOOST_PP_REPEAT_1_610(m, d) BOOST_PP_REPEAT_1_609(m, d) m(2, 609, d) +# define BOOST_PP_REPEAT_1_611(m, d) BOOST_PP_REPEAT_1_610(m, d) m(2, 610, d) +# define BOOST_PP_REPEAT_1_612(m, d) BOOST_PP_REPEAT_1_611(m, d) m(2, 611, d) +# define BOOST_PP_REPEAT_1_613(m, d) BOOST_PP_REPEAT_1_612(m, d) m(2, 612, d) +# define BOOST_PP_REPEAT_1_614(m, d) BOOST_PP_REPEAT_1_613(m, d) m(2, 613, d) +# define BOOST_PP_REPEAT_1_615(m, d) BOOST_PP_REPEAT_1_614(m, d) m(2, 614, d) +# define BOOST_PP_REPEAT_1_616(m, d) BOOST_PP_REPEAT_1_615(m, d) m(2, 615, d) +# define BOOST_PP_REPEAT_1_617(m, d) BOOST_PP_REPEAT_1_616(m, d) m(2, 616, d) +# define BOOST_PP_REPEAT_1_618(m, d) BOOST_PP_REPEAT_1_617(m, d) m(2, 617, d) +# define BOOST_PP_REPEAT_1_619(m, d) BOOST_PP_REPEAT_1_618(m, d) m(2, 618, d) +# define BOOST_PP_REPEAT_1_620(m, d) BOOST_PP_REPEAT_1_619(m, d) m(2, 619, d) +# define BOOST_PP_REPEAT_1_621(m, d) BOOST_PP_REPEAT_1_620(m, d) m(2, 620, d) +# define BOOST_PP_REPEAT_1_622(m, d) BOOST_PP_REPEAT_1_621(m, d) m(2, 621, d) +# define BOOST_PP_REPEAT_1_623(m, d) BOOST_PP_REPEAT_1_622(m, d) m(2, 622, d) +# define BOOST_PP_REPEAT_1_624(m, d) BOOST_PP_REPEAT_1_623(m, d) m(2, 623, d) +# define BOOST_PP_REPEAT_1_625(m, d) BOOST_PP_REPEAT_1_624(m, d) m(2, 624, d) +# define BOOST_PP_REPEAT_1_626(m, d) BOOST_PP_REPEAT_1_625(m, d) m(2, 625, d) +# define BOOST_PP_REPEAT_1_627(m, d) BOOST_PP_REPEAT_1_626(m, d) m(2, 626, d) +# define BOOST_PP_REPEAT_1_628(m, d) BOOST_PP_REPEAT_1_627(m, d) m(2, 627, d) +# define BOOST_PP_REPEAT_1_629(m, d) BOOST_PP_REPEAT_1_628(m, d) m(2, 628, d) +# define BOOST_PP_REPEAT_1_630(m, d) BOOST_PP_REPEAT_1_629(m, d) m(2, 629, d) +# define BOOST_PP_REPEAT_1_631(m, d) BOOST_PP_REPEAT_1_630(m, d) m(2, 630, d) +# define BOOST_PP_REPEAT_1_632(m, d) BOOST_PP_REPEAT_1_631(m, d) m(2, 631, d) +# define BOOST_PP_REPEAT_1_633(m, d) BOOST_PP_REPEAT_1_632(m, d) m(2, 632, d) +# define BOOST_PP_REPEAT_1_634(m, d) BOOST_PP_REPEAT_1_633(m, d) m(2, 633, d) +# define BOOST_PP_REPEAT_1_635(m, d) BOOST_PP_REPEAT_1_634(m, d) m(2, 634, d) +# define BOOST_PP_REPEAT_1_636(m, d) BOOST_PP_REPEAT_1_635(m, d) m(2, 635, d) +# define BOOST_PP_REPEAT_1_637(m, d) BOOST_PP_REPEAT_1_636(m, d) m(2, 636, d) +# define BOOST_PP_REPEAT_1_638(m, d) BOOST_PP_REPEAT_1_637(m, d) m(2, 637, d) +# define BOOST_PP_REPEAT_1_639(m, d) BOOST_PP_REPEAT_1_638(m, d) m(2, 638, d) +# define BOOST_PP_REPEAT_1_640(m, d) BOOST_PP_REPEAT_1_639(m, d) m(2, 639, d) +# define BOOST_PP_REPEAT_1_641(m, d) BOOST_PP_REPEAT_1_640(m, d) m(2, 640, d) +# define BOOST_PP_REPEAT_1_642(m, d) BOOST_PP_REPEAT_1_641(m, d) m(2, 641, d) +# define BOOST_PP_REPEAT_1_643(m, d) BOOST_PP_REPEAT_1_642(m, d) m(2, 642, d) +# define BOOST_PP_REPEAT_1_644(m, d) BOOST_PP_REPEAT_1_643(m, d) m(2, 643, d) +# define BOOST_PP_REPEAT_1_645(m, d) BOOST_PP_REPEAT_1_644(m, d) m(2, 644, d) +# define BOOST_PP_REPEAT_1_646(m, d) BOOST_PP_REPEAT_1_645(m, d) m(2, 645, d) +# define BOOST_PP_REPEAT_1_647(m, d) BOOST_PP_REPEAT_1_646(m, d) m(2, 646, d) +# define BOOST_PP_REPEAT_1_648(m, d) BOOST_PP_REPEAT_1_647(m, d) m(2, 647, d) +# define BOOST_PP_REPEAT_1_649(m, d) BOOST_PP_REPEAT_1_648(m, d) m(2, 648, d) +# define BOOST_PP_REPEAT_1_650(m, d) BOOST_PP_REPEAT_1_649(m, d) m(2, 649, d) +# define BOOST_PP_REPEAT_1_651(m, d) BOOST_PP_REPEAT_1_650(m, d) m(2, 650, d) +# define BOOST_PP_REPEAT_1_652(m, d) BOOST_PP_REPEAT_1_651(m, d) m(2, 651, d) +# define BOOST_PP_REPEAT_1_653(m, d) BOOST_PP_REPEAT_1_652(m, d) m(2, 652, d) +# define BOOST_PP_REPEAT_1_654(m, d) BOOST_PP_REPEAT_1_653(m, d) m(2, 653, d) +# define BOOST_PP_REPEAT_1_655(m, d) BOOST_PP_REPEAT_1_654(m, d) m(2, 654, d) +# define BOOST_PP_REPEAT_1_656(m, d) BOOST_PP_REPEAT_1_655(m, d) m(2, 655, d) +# define BOOST_PP_REPEAT_1_657(m, d) BOOST_PP_REPEAT_1_656(m, d) m(2, 656, d) +# define BOOST_PP_REPEAT_1_658(m, d) BOOST_PP_REPEAT_1_657(m, d) m(2, 657, d) +# define BOOST_PP_REPEAT_1_659(m, d) BOOST_PP_REPEAT_1_658(m, d) m(2, 658, d) +# define BOOST_PP_REPEAT_1_660(m, d) BOOST_PP_REPEAT_1_659(m, d) m(2, 659, d) +# define BOOST_PP_REPEAT_1_661(m, d) BOOST_PP_REPEAT_1_660(m, d) m(2, 660, d) +# define BOOST_PP_REPEAT_1_662(m, d) BOOST_PP_REPEAT_1_661(m, d) m(2, 661, d) +# define BOOST_PP_REPEAT_1_663(m, d) BOOST_PP_REPEAT_1_662(m, d) m(2, 662, d) +# define BOOST_PP_REPEAT_1_664(m, d) BOOST_PP_REPEAT_1_663(m, d) m(2, 663, d) +# define BOOST_PP_REPEAT_1_665(m, d) BOOST_PP_REPEAT_1_664(m, d) m(2, 664, d) +# define BOOST_PP_REPEAT_1_666(m, d) BOOST_PP_REPEAT_1_665(m, d) m(2, 665, d) +# define BOOST_PP_REPEAT_1_667(m, d) BOOST_PP_REPEAT_1_666(m, d) m(2, 666, d) +# define BOOST_PP_REPEAT_1_668(m, d) BOOST_PP_REPEAT_1_667(m, d) m(2, 667, d) +# define BOOST_PP_REPEAT_1_669(m, d) BOOST_PP_REPEAT_1_668(m, d) m(2, 668, d) +# define BOOST_PP_REPEAT_1_670(m, d) BOOST_PP_REPEAT_1_669(m, d) m(2, 669, d) +# define BOOST_PP_REPEAT_1_671(m, d) BOOST_PP_REPEAT_1_670(m, d) m(2, 670, d) +# define BOOST_PP_REPEAT_1_672(m, d) BOOST_PP_REPEAT_1_671(m, d) m(2, 671, d) +# define BOOST_PP_REPEAT_1_673(m, d) BOOST_PP_REPEAT_1_672(m, d) m(2, 672, d) +# define BOOST_PP_REPEAT_1_674(m, d) BOOST_PP_REPEAT_1_673(m, d) m(2, 673, d) +# define BOOST_PP_REPEAT_1_675(m, d) BOOST_PP_REPEAT_1_674(m, d) m(2, 674, d) +# define BOOST_PP_REPEAT_1_676(m, d) BOOST_PP_REPEAT_1_675(m, d) m(2, 675, d) +# define BOOST_PP_REPEAT_1_677(m, d) BOOST_PP_REPEAT_1_676(m, d) m(2, 676, d) +# define BOOST_PP_REPEAT_1_678(m, d) BOOST_PP_REPEAT_1_677(m, d) m(2, 677, d) +# define BOOST_PP_REPEAT_1_679(m, d) BOOST_PP_REPEAT_1_678(m, d) m(2, 678, d) +# define BOOST_PP_REPEAT_1_680(m, d) BOOST_PP_REPEAT_1_679(m, d) m(2, 679, d) +# define BOOST_PP_REPEAT_1_681(m, d) BOOST_PP_REPEAT_1_680(m, d) m(2, 680, d) +# define BOOST_PP_REPEAT_1_682(m, d) BOOST_PP_REPEAT_1_681(m, d) m(2, 681, d) +# define BOOST_PP_REPEAT_1_683(m, d) BOOST_PP_REPEAT_1_682(m, d) m(2, 682, d) +# define BOOST_PP_REPEAT_1_684(m, d) BOOST_PP_REPEAT_1_683(m, d) m(2, 683, d) +# define BOOST_PP_REPEAT_1_685(m, d) BOOST_PP_REPEAT_1_684(m, d) m(2, 684, d) +# define BOOST_PP_REPEAT_1_686(m, d) BOOST_PP_REPEAT_1_685(m, d) m(2, 685, d) +# define BOOST_PP_REPEAT_1_687(m, d) BOOST_PP_REPEAT_1_686(m, d) m(2, 686, d) +# define BOOST_PP_REPEAT_1_688(m, d) BOOST_PP_REPEAT_1_687(m, d) m(2, 687, d) +# define BOOST_PP_REPEAT_1_689(m, d) BOOST_PP_REPEAT_1_688(m, d) m(2, 688, d) +# define BOOST_PP_REPEAT_1_690(m, d) BOOST_PP_REPEAT_1_689(m, d) m(2, 689, d) +# define BOOST_PP_REPEAT_1_691(m, d) BOOST_PP_REPEAT_1_690(m, d) m(2, 690, d) +# define BOOST_PP_REPEAT_1_692(m, d) BOOST_PP_REPEAT_1_691(m, d) m(2, 691, d) +# define BOOST_PP_REPEAT_1_693(m, d) BOOST_PP_REPEAT_1_692(m, d) m(2, 692, d) +# define BOOST_PP_REPEAT_1_694(m, d) BOOST_PP_REPEAT_1_693(m, d) m(2, 693, d) +# define BOOST_PP_REPEAT_1_695(m, d) BOOST_PP_REPEAT_1_694(m, d) m(2, 694, d) +# define BOOST_PP_REPEAT_1_696(m, d) BOOST_PP_REPEAT_1_695(m, d) m(2, 695, d) +# define BOOST_PP_REPEAT_1_697(m, d) BOOST_PP_REPEAT_1_696(m, d) m(2, 696, d) +# define BOOST_PP_REPEAT_1_698(m, d) BOOST_PP_REPEAT_1_697(m, d) m(2, 697, d) +# define BOOST_PP_REPEAT_1_699(m, d) BOOST_PP_REPEAT_1_698(m, d) m(2, 698, d) +# define BOOST_PP_REPEAT_1_700(m, d) BOOST_PP_REPEAT_1_699(m, d) m(2, 699, d) +# define BOOST_PP_REPEAT_1_701(m, d) BOOST_PP_REPEAT_1_700(m, d) m(2, 700, d) +# define BOOST_PP_REPEAT_1_702(m, d) BOOST_PP_REPEAT_1_701(m, d) m(2, 701, d) +# define BOOST_PP_REPEAT_1_703(m, d) BOOST_PP_REPEAT_1_702(m, d) m(2, 702, d) +# define BOOST_PP_REPEAT_1_704(m, d) BOOST_PP_REPEAT_1_703(m, d) m(2, 703, d) +# define BOOST_PP_REPEAT_1_705(m, d) BOOST_PP_REPEAT_1_704(m, d) m(2, 704, d) +# define BOOST_PP_REPEAT_1_706(m, d) BOOST_PP_REPEAT_1_705(m, d) m(2, 705, d) +# define BOOST_PP_REPEAT_1_707(m, d) BOOST_PP_REPEAT_1_706(m, d) m(2, 706, d) +# define BOOST_PP_REPEAT_1_708(m, d) BOOST_PP_REPEAT_1_707(m, d) m(2, 707, d) +# define BOOST_PP_REPEAT_1_709(m, d) BOOST_PP_REPEAT_1_708(m, d) m(2, 708, d) +# define BOOST_PP_REPEAT_1_710(m, d) BOOST_PP_REPEAT_1_709(m, d) m(2, 709, d) +# define BOOST_PP_REPEAT_1_711(m, d) BOOST_PP_REPEAT_1_710(m, d) m(2, 710, d) +# define BOOST_PP_REPEAT_1_712(m, d) BOOST_PP_REPEAT_1_711(m, d) m(2, 711, d) +# define BOOST_PP_REPEAT_1_713(m, d) BOOST_PP_REPEAT_1_712(m, d) m(2, 712, d) +# define BOOST_PP_REPEAT_1_714(m, d) BOOST_PP_REPEAT_1_713(m, d) m(2, 713, d) +# define BOOST_PP_REPEAT_1_715(m, d) BOOST_PP_REPEAT_1_714(m, d) m(2, 714, d) +# define BOOST_PP_REPEAT_1_716(m, d) BOOST_PP_REPEAT_1_715(m, d) m(2, 715, d) +# define BOOST_PP_REPEAT_1_717(m, d) BOOST_PP_REPEAT_1_716(m, d) m(2, 716, d) +# define BOOST_PP_REPEAT_1_718(m, d) BOOST_PP_REPEAT_1_717(m, d) m(2, 717, d) +# define BOOST_PP_REPEAT_1_719(m, d) BOOST_PP_REPEAT_1_718(m, d) m(2, 718, d) +# define BOOST_PP_REPEAT_1_720(m, d) BOOST_PP_REPEAT_1_719(m, d) m(2, 719, d) +# define BOOST_PP_REPEAT_1_721(m, d) BOOST_PP_REPEAT_1_720(m, d) m(2, 720, d) +# define BOOST_PP_REPEAT_1_722(m, d) BOOST_PP_REPEAT_1_721(m, d) m(2, 721, d) +# define BOOST_PP_REPEAT_1_723(m, d) BOOST_PP_REPEAT_1_722(m, d) m(2, 722, d) +# define BOOST_PP_REPEAT_1_724(m, d) BOOST_PP_REPEAT_1_723(m, d) m(2, 723, d) +# define BOOST_PP_REPEAT_1_725(m, d) BOOST_PP_REPEAT_1_724(m, d) m(2, 724, d) +# define BOOST_PP_REPEAT_1_726(m, d) BOOST_PP_REPEAT_1_725(m, d) m(2, 725, d) +# define BOOST_PP_REPEAT_1_727(m, d) BOOST_PP_REPEAT_1_726(m, d) m(2, 726, d) +# define BOOST_PP_REPEAT_1_728(m, d) BOOST_PP_REPEAT_1_727(m, d) m(2, 727, d) +# define BOOST_PP_REPEAT_1_729(m, d) BOOST_PP_REPEAT_1_728(m, d) m(2, 728, d) +# define BOOST_PP_REPEAT_1_730(m, d) BOOST_PP_REPEAT_1_729(m, d) m(2, 729, d) +# define BOOST_PP_REPEAT_1_731(m, d) BOOST_PP_REPEAT_1_730(m, d) m(2, 730, d) +# define BOOST_PP_REPEAT_1_732(m, d) BOOST_PP_REPEAT_1_731(m, d) m(2, 731, d) +# define BOOST_PP_REPEAT_1_733(m, d) BOOST_PP_REPEAT_1_732(m, d) m(2, 732, d) +# define BOOST_PP_REPEAT_1_734(m, d) BOOST_PP_REPEAT_1_733(m, d) m(2, 733, d) +# define BOOST_PP_REPEAT_1_735(m, d) BOOST_PP_REPEAT_1_734(m, d) m(2, 734, d) +# define BOOST_PP_REPEAT_1_736(m, d) BOOST_PP_REPEAT_1_735(m, d) m(2, 735, d) +# define BOOST_PP_REPEAT_1_737(m, d) BOOST_PP_REPEAT_1_736(m, d) m(2, 736, d) +# define BOOST_PP_REPEAT_1_738(m, d) BOOST_PP_REPEAT_1_737(m, d) m(2, 737, d) +# define BOOST_PP_REPEAT_1_739(m, d) BOOST_PP_REPEAT_1_738(m, d) m(2, 738, d) +# define BOOST_PP_REPEAT_1_740(m, d) BOOST_PP_REPEAT_1_739(m, d) m(2, 739, d) +# define BOOST_PP_REPEAT_1_741(m, d) BOOST_PP_REPEAT_1_740(m, d) m(2, 740, d) +# define BOOST_PP_REPEAT_1_742(m, d) BOOST_PP_REPEAT_1_741(m, d) m(2, 741, d) +# define BOOST_PP_REPEAT_1_743(m, d) BOOST_PP_REPEAT_1_742(m, d) m(2, 742, d) +# define BOOST_PP_REPEAT_1_744(m, d) BOOST_PP_REPEAT_1_743(m, d) m(2, 743, d) +# define BOOST_PP_REPEAT_1_745(m, d) BOOST_PP_REPEAT_1_744(m, d) m(2, 744, d) +# define BOOST_PP_REPEAT_1_746(m, d) BOOST_PP_REPEAT_1_745(m, d) m(2, 745, d) +# define BOOST_PP_REPEAT_1_747(m, d) BOOST_PP_REPEAT_1_746(m, d) m(2, 746, d) +# define BOOST_PP_REPEAT_1_748(m, d) BOOST_PP_REPEAT_1_747(m, d) m(2, 747, d) +# define BOOST_PP_REPEAT_1_749(m, d) BOOST_PP_REPEAT_1_748(m, d) m(2, 748, d) +# define BOOST_PP_REPEAT_1_750(m, d) BOOST_PP_REPEAT_1_749(m, d) m(2, 749, d) +# define BOOST_PP_REPEAT_1_751(m, d) BOOST_PP_REPEAT_1_750(m, d) m(2, 750, d) +# define BOOST_PP_REPEAT_1_752(m, d) BOOST_PP_REPEAT_1_751(m, d) m(2, 751, d) +# define BOOST_PP_REPEAT_1_753(m, d) BOOST_PP_REPEAT_1_752(m, d) m(2, 752, d) +# define BOOST_PP_REPEAT_1_754(m, d) BOOST_PP_REPEAT_1_753(m, d) m(2, 753, d) +# define BOOST_PP_REPEAT_1_755(m, d) BOOST_PP_REPEAT_1_754(m, d) m(2, 754, d) +# define BOOST_PP_REPEAT_1_756(m, d) BOOST_PP_REPEAT_1_755(m, d) m(2, 755, d) +# define BOOST_PP_REPEAT_1_757(m, d) BOOST_PP_REPEAT_1_756(m, d) m(2, 756, d) +# define BOOST_PP_REPEAT_1_758(m, d) BOOST_PP_REPEAT_1_757(m, d) m(2, 757, d) +# define BOOST_PP_REPEAT_1_759(m, d) BOOST_PP_REPEAT_1_758(m, d) m(2, 758, d) +# define BOOST_PP_REPEAT_1_760(m, d) BOOST_PP_REPEAT_1_759(m, d) m(2, 759, d) +# define BOOST_PP_REPEAT_1_761(m, d) BOOST_PP_REPEAT_1_760(m, d) m(2, 760, d) +# define BOOST_PP_REPEAT_1_762(m, d) BOOST_PP_REPEAT_1_761(m, d) m(2, 761, d) +# define BOOST_PP_REPEAT_1_763(m, d) BOOST_PP_REPEAT_1_762(m, d) m(2, 762, d) +# define BOOST_PP_REPEAT_1_764(m, d) BOOST_PP_REPEAT_1_763(m, d) m(2, 763, d) +# define BOOST_PP_REPEAT_1_765(m, d) BOOST_PP_REPEAT_1_764(m, d) m(2, 764, d) +# define BOOST_PP_REPEAT_1_766(m, d) BOOST_PP_REPEAT_1_765(m, d) m(2, 765, d) +# define BOOST_PP_REPEAT_1_767(m, d) BOOST_PP_REPEAT_1_766(m, d) m(2, 766, d) +# define BOOST_PP_REPEAT_1_768(m, d) BOOST_PP_REPEAT_1_767(m, d) m(2, 767, d) +# define BOOST_PP_REPEAT_1_769(m, d) BOOST_PP_REPEAT_1_768(m, d) m(2, 768, d) +# define BOOST_PP_REPEAT_1_770(m, d) BOOST_PP_REPEAT_1_769(m, d) m(2, 769, d) +# define BOOST_PP_REPEAT_1_771(m, d) BOOST_PP_REPEAT_1_770(m, d) m(2, 770, d) +# define BOOST_PP_REPEAT_1_772(m, d) BOOST_PP_REPEAT_1_771(m, d) m(2, 771, d) +# define BOOST_PP_REPEAT_1_773(m, d) BOOST_PP_REPEAT_1_772(m, d) m(2, 772, d) +# define BOOST_PP_REPEAT_1_774(m, d) BOOST_PP_REPEAT_1_773(m, d) m(2, 773, d) +# define BOOST_PP_REPEAT_1_775(m, d) BOOST_PP_REPEAT_1_774(m, d) m(2, 774, d) +# define BOOST_PP_REPEAT_1_776(m, d) BOOST_PP_REPEAT_1_775(m, d) m(2, 775, d) +# define BOOST_PP_REPEAT_1_777(m, d) BOOST_PP_REPEAT_1_776(m, d) m(2, 776, d) +# define BOOST_PP_REPEAT_1_778(m, d) BOOST_PP_REPEAT_1_777(m, d) m(2, 777, d) +# define BOOST_PP_REPEAT_1_779(m, d) BOOST_PP_REPEAT_1_778(m, d) m(2, 778, d) +# define BOOST_PP_REPEAT_1_780(m, d) BOOST_PP_REPEAT_1_779(m, d) m(2, 779, d) +# define BOOST_PP_REPEAT_1_781(m, d) BOOST_PP_REPEAT_1_780(m, d) m(2, 780, d) +# define BOOST_PP_REPEAT_1_782(m, d) BOOST_PP_REPEAT_1_781(m, d) m(2, 781, d) +# define BOOST_PP_REPEAT_1_783(m, d) BOOST_PP_REPEAT_1_782(m, d) m(2, 782, d) +# define BOOST_PP_REPEAT_1_784(m, d) BOOST_PP_REPEAT_1_783(m, d) m(2, 783, d) +# define BOOST_PP_REPEAT_1_785(m, d) BOOST_PP_REPEAT_1_784(m, d) m(2, 784, d) +# define BOOST_PP_REPEAT_1_786(m, d) BOOST_PP_REPEAT_1_785(m, d) m(2, 785, d) +# define BOOST_PP_REPEAT_1_787(m, d) BOOST_PP_REPEAT_1_786(m, d) m(2, 786, d) +# define BOOST_PP_REPEAT_1_788(m, d) BOOST_PP_REPEAT_1_787(m, d) m(2, 787, d) +# define BOOST_PP_REPEAT_1_789(m, d) BOOST_PP_REPEAT_1_788(m, d) m(2, 788, d) +# define BOOST_PP_REPEAT_1_790(m, d) BOOST_PP_REPEAT_1_789(m, d) m(2, 789, d) +# define BOOST_PP_REPEAT_1_791(m, d) BOOST_PP_REPEAT_1_790(m, d) m(2, 790, d) +# define BOOST_PP_REPEAT_1_792(m, d) BOOST_PP_REPEAT_1_791(m, d) m(2, 791, d) +# define BOOST_PP_REPEAT_1_793(m, d) BOOST_PP_REPEAT_1_792(m, d) m(2, 792, d) +# define BOOST_PP_REPEAT_1_794(m, d) BOOST_PP_REPEAT_1_793(m, d) m(2, 793, d) +# define BOOST_PP_REPEAT_1_795(m, d) BOOST_PP_REPEAT_1_794(m, d) m(2, 794, d) +# define BOOST_PP_REPEAT_1_796(m, d) BOOST_PP_REPEAT_1_795(m, d) m(2, 795, d) +# define BOOST_PP_REPEAT_1_797(m, d) BOOST_PP_REPEAT_1_796(m, d) m(2, 796, d) +# define BOOST_PP_REPEAT_1_798(m, d) BOOST_PP_REPEAT_1_797(m, d) m(2, 797, d) +# define BOOST_PP_REPEAT_1_799(m, d) BOOST_PP_REPEAT_1_798(m, d) m(2, 798, d) +# define BOOST_PP_REPEAT_1_800(m, d) BOOST_PP_REPEAT_1_799(m, d) m(2, 799, d) +# define BOOST_PP_REPEAT_1_801(m, d) BOOST_PP_REPEAT_1_800(m, d) m(2, 800, d) +# define BOOST_PP_REPEAT_1_802(m, d) BOOST_PP_REPEAT_1_801(m, d) m(2, 801, d) +# define BOOST_PP_REPEAT_1_803(m, d) BOOST_PP_REPEAT_1_802(m, d) m(2, 802, d) +# define BOOST_PP_REPEAT_1_804(m, d) BOOST_PP_REPEAT_1_803(m, d) m(2, 803, d) +# define BOOST_PP_REPEAT_1_805(m, d) BOOST_PP_REPEAT_1_804(m, d) m(2, 804, d) +# define BOOST_PP_REPEAT_1_806(m, d) BOOST_PP_REPEAT_1_805(m, d) m(2, 805, d) +# define BOOST_PP_REPEAT_1_807(m, d) BOOST_PP_REPEAT_1_806(m, d) m(2, 806, d) +# define BOOST_PP_REPEAT_1_808(m, d) BOOST_PP_REPEAT_1_807(m, d) m(2, 807, d) +# define BOOST_PP_REPEAT_1_809(m, d) BOOST_PP_REPEAT_1_808(m, d) m(2, 808, d) +# define BOOST_PP_REPEAT_1_810(m, d) BOOST_PP_REPEAT_1_809(m, d) m(2, 809, d) +# define BOOST_PP_REPEAT_1_811(m, d) BOOST_PP_REPEAT_1_810(m, d) m(2, 810, d) +# define BOOST_PP_REPEAT_1_812(m, d) BOOST_PP_REPEAT_1_811(m, d) m(2, 811, d) +# define BOOST_PP_REPEAT_1_813(m, d) BOOST_PP_REPEAT_1_812(m, d) m(2, 812, d) +# define BOOST_PP_REPEAT_1_814(m, d) BOOST_PP_REPEAT_1_813(m, d) m(2, 813, d) +# define BOOST_PP_REPEAT_1_815(m, d) BOOST_PP_REPEAT_1_814(m, d) m(2, 814, d) +# define BOOST_PP_REPEAT_1_816(m, d) BOOST_PP_REPEAT_1_815(m, d) m(2, 815, d) +# define BOOST_PP_REPEAT_1_817(m, d) BOOST_PP_REPEAT_1_816(m, d) m(2, 816, d) +# define BOOST_PP_REPEAT_1_818(m, d) BOOST_PP_REPEAT_1_817(m, d) m(2, 817, d) +# define BOOST_PP_REPEAT_1_819(m, d) BOOST_PP_REPEAT_1_818(m, d) m(2, 818, d) +# define BOOST_PP_REPEAT_1_820(m, d) BOOST_PP_REPEAT_1_819(m, d) m(2, 819, d) +# define BOOST_PP_REPEAT_1_821(m, d) BOOST_PP_REPEAT_1_820(m, d) m(2, 820, d) +# define BOOST_PP_REPEAT_1_822(m, d) BOOST_PP_REPEAT_1_821(m, d) m(2, 821, d) +# define BOOST_PP_REPEAT_1_823(m, d) BOOST_PP_REPEAT_1_822(m, d) m(2, 822, d) +# define BOOST_PP_REPEAT_1_824(m, d) BOOST_PP_REPEAT_1_823(m, d) m(2, 823, d) +# define BOOST_PP_REPEAT_1_825(m, d) BOOST_PP_REPEAT_1_824(m, d) m(2, 824, d) +# define BOOST_PP_REPEAT_1_826(m, d) BOOST_PP_REPEAT_1_825(m, d) m(2, 825, d) +# define BOOST_PP_REPEAT_1_827(m, d) BOOST_PP_REPEAT_1_826(m, d) m(2, 826, d) +# define BOOST_PP_REPEAT_1_828(m, d) BOOST_PP_REPEAT_1_827(m, d) m(2, 827, d) +# define BOOST_PP_REPEAT_1_829(m, d) BOOST_PP_REPEAT_1_828(m, d) m(2, 828, d) +# define BOOST_PP_REPEAT_1_830(m, d) BOOST_PP_REPEAT_1_829(m, d) m(2, 829, d) +# define BOOST_PP_REPEAT_1_831(m, d) BOOST_PP_REPEAT_1_830(m, d) m(2, 830, d) +# define BOOST_PP_REPEAT_1_832(m, d) BOOST_PP_REPEAT_1_831(m, d) m(2, 831, d) +# define BOOST_PP_REPEAT_1_833(m, d) BOOST_PP_REPEAT_1_832(m, d) m(2, 832, d) +# define BOOST_PP_REPEAT_1_834(m, d) BOOST_PP_REPEAT_1_833(m, d) m(2, 833, d) +# define BOOST_PP_REPEAT_1_835(m, d) BOOST_PP_REPEAT_1_834(m, d) m(2, 834, d) +# define BOOST_PP_REPEAT_1_836(m, d) BOOST_PP_REPEAT_1_835(m, d) m(2, 835, d) +# define BOOST_PP_REPEAT_1_837(m, d) BOOST_PP_REPEAT_1_836(m, d) m(2, 836, d) +# define BOOST_PP_REPEAT_1_838(m, d) BOOST_PP_REPEAT_1_837(m, d) m(2, 837, d) +# define BOOST_PP_REPEAT_1_839(m, d) BOOST_PP_REPEAT_1_838(m, d) m(2, 838, d) +# define BOOST_PP_REPEAT_1_840(m, d) BOOST_PP_REPEAT_1_839(m, d) m(2, 839, d) +# define BOOST_PP_REPEAT_1_841(m, d) BOOST_PP_REPEAT_1_840(m, d) m(2, 840, d) +# define BOOST_PP_REPEAT_1_842(m, d) BOOST_PP_REPEAT_1_841(m, d) m(2, 841, d) +# define BOOST_PP_REPEAT_1_843(m, d) BOOST_PP_REPEAT_1_842(m, d) m(2, 842, d) +# define BOOST_PP_REPEAT_1_844(m, d) BOOST_PP_REPEAT_1_843(m, d) m(2, 843, d) +# define BOOST_PP_REPEAT_1_845(m, d) BOOST_PP_REPEAT_1_844(m, d) m(2, 844, d) +# define BOOST_PP_REPEAT_1_846(m, d) BOOST_PP_REPEAT_1_845(m, d) m(2, 845, d) +# define BOOST_PP_REPEAT_1_847(m, d) BOOST_PP_REPEAT_1_846(m, d) m(2, 846, d) +# define BOOST_PP_REPEAT_1_848(m, d) BOOST_PP_REPEAT_1_847(m, d) m(2, 847, d) +# define BOOST_PP_REPEAT_1_849(m, d) BOOST_PP_REPEAT_1_848(m, d) m(2, 848, d) +# define BOOST_PP_REPEAT_1_850(m, d) BOOST_PP_REPEAT_1_849(m, d) m(2, 849, d) +# define BOOST_PP_REPEAT_1_851(m, d) BOOST_PP_REPEAT_1_850(m, d) m(2, 850, d) +# define BOOST_PP_REPEAT_1_852(m, d) BOOST_PP_REPEAT_1_851(m, d) m(2, 851, d) +# define BOOST_PP_REPEAT_1_853(m, d) BOOST_PP_REPEAT_1_852(m, d) m(2, 852, d) +# define BOOST_PP_REPEAT_1_854(m, d) BOOST_PP_REPEAT_1_853(m, d) m(2, 853, d) +# define BOOST_PP_REPEAT_1_855(m, d) BOOST_PP_REPEAT_1_854(m, d) m(2, 854, d) +# define BOOST_PP_REPEAT_1_856(m, d) BOOST_PP_REPEAT_1_855(m, d) m(2, 855, d) +# define BOOST_PP_REPEAT_1_857(m, d) BOOST_PP_REPEAT_1_856(m, d) m(2, 856, d) +# define BOOST_PP_REPEAT_1_858(m, d) BOOST_PP_REPEAT_1_857(m, d) m(2, 857, d) +# define BOOST_PP_REPEAT_1_859(m, d) BOOST_PP_REPEAT_1_858(m, d) m(2, 858, d) +# define BOOST_PP_REPEAT_1_860(m, d) BOOST_PP_REPEAT_1_859(m, d) m(2, 859, d) +# define BOOST_PP_REPEAT_1_861(m, d) BOOST_PP_REPEAT_1_860(m, d) m(2, 860, d) +# define BOOST_PP_REPEAT_1_862(m, d) BOOST_PP_REPEAT_1_861(m, d) m(2, 861, d) +# define BOOST_PP_REPEAT_1_863(m, d) BOOST_PP_REPEAT_1_862(m, d) m(2, 862, d) +# define BOOST_PP_REPEAT_1_864(m, d) BOOST_PP_REPEAT_1_863(m, d) m(2, 863, d) +# define BOOST_PP_REPEAT_1_865(m, d) BOOST_PP_REPEAT_1_864(m, d) m(2, 864, d) +# define BOOST_PP_REPEAT_1_866(m, d) BOOST_PP_REPEAT_1_865(m, d) m(2, 865, d) +# define BOOST_PP_REPEAT_1_867(m, d) BOOST_PP_REPEAT_1_866(m, d) m(2, 866, d) +# define BOOST_PP_REPEAT_1_868(m, d) BOOST_PP_REPEAT_1_867(m, d) m(2, 867, d) +# define BOOST_PP_REPEAT_1_869(m, d) BOOST_PP_REPEAT_1_868(m, d) m(2, 868, d) +# define BOOST_PP_REPEAT_1_870(m, d) BOOST_PP_REPEAT_1_869(m, d) m(2, 869, d) +# define BOOST_PP_REPEAT_1_871(m, d) BOOST_PP_REPEAT_1_870(m, d) m(2, 870, d) +# define BOOST_PP_REPEAT_1_872(m, d) BOOST_PP_REPEAT_1_871(m, d) m(2, 871, d) +# define BOOST_PP_REPEAT_1_873(m, d) BOOST_PP_REPEAT_1_872(m, d) m(2, 872, d) +# define BOOST_PP_REPEAT_1_874(m, d) BOOST_PP_REPEAT_1_873(m, d) m(2, 873, d) +# define BOOST_PP_REPEAT_1_875(m, d) BOOST_PP_REPEAT_1_874(m, d) m(2, 874, d) +# define BOOST_PP_REPEAT_1_876(m, d) BOOST_PP_REPEAT_1_875(m, d) m(2, 875, d) +# define BOOST_PP_REPEAT_1_877(m, d) BOOST_PP_REPEAT_1_876(m, d) m(2, 876, d) +# define BOOST_PP_REPEAT_1_878(m, d) BOOST_PP_REPEAT_1_877(m, d) m(2, 877, d) +# define BOOST_PP_REPEAT_1_879(m, d) BOOST_PP_REPEAT_1_878(m, d) m(2, 878, d) +# define BOOST_PP_REPEAT_1_880(m, d) BOOST_PP_REPEAT_1_879(m, d) m(2, 879, d) +# define BOOST_PP_REPEAT_1_881(m, d) BOOST_PP_REPEAT_1_880(m, d) m(2, 880, d) +# define BOOST_PP_REPEAT_1_882(m, d) BOOST_PP_REPEAT_1_881(m, d) m(2, 881, d) +# define BOOST_PP_REPEAT_1_883(m, d) BOOST_PP_REPEAT_1_882(m, d) m(2, 882, d) +# define BOOST_PP_REPEAT_1_884(m, d) BOOST_PP_REPEAT_1_883(m, d) m(2, 883, d) +# define BOOST_PP_REPEAT_1_885(m, d) BOOST_PP_REPEAT_1_884(m, d) m(2, 884, d) +# define BOOST_PP_REPEAT_1_886(m, d) BOOST_PP_REPEAT_1_885(m, d) m(2, 885, d) +# define BOOST_PP_REPEAT_1_887(m, d) BOOST_PP_REPEAT_1_886(m, d) m(2, 886, d) +# define BOOST_PP_REPEAT_1_888(m, d) BOOST_PP_REPEAT_1_887(m, d) m(2, 887, d) +# define BOOST_PP_REPEAT_1_889(m, d) BOOST_PP_REPEAT_1_888(m, d) m(2, 888, d) +# define BOOST_PP_REPEAT_1_890(m, d) BOOST_PP_REPEAT_1_889(m, d) m(2, 889, d) +# define BOOST_PP_REPEAT_1_891(m, d) BOOST_PP_REPEAT_1_890(m, d) m(2, 890, d) +# define BOOST_PP_REPEAT_1_892(m, d) BOOST_PP_REPEAT_1_891(m, d) m(2, 891, d) +# define BOOST_PP_REPEAT_1_893(m, d) BOOST_PP_REPEAT_1_892(m, d) m(2, 892, d) +# define BOOST_PP_REPEAT_1_894(m, d) BOOST_PP_REPEAT_1_893(m, d) m(2, 893, d) +# define BOOST_PP_REPEAT_1_895(m, d) BOOST_PP_REPEAT_1_894(m, d) m(2, 894, d) +# define BOOST_PP_REPEAT_1_896(m, d) BOOST_PP_REPEAT_1_895(m, d) m(2, 895, d) +# define BOOST_PP_REPEAT_1_897(m, d) BOOST_PP_REPEAT_1_896(m, d) m(2, 896, d) +# define BOOST_PP_REPEAT_1_898(m, d) BOOST_PP_REPEAT_1_897(m, d) m(2, 897, d) +# define BOOST_PP_REPEAT_1_899(m, d) BOOST_PP_REPEAT_1_898(m, d) m(2, 898, d) +# define BOOST_PP_REPEAT_1_900(m, d) BOOST_PP_REPEAT_1_899(m, d) m(2, 899, d) +# define BOOST_PP_REPEAT_1_901(m, d) BOOST_PP_REPEAT_1_900(m, d) m(2, 900, d) +# define BOOST_PP_REPEAT_1_902(m, d) BOOST_PP_REPEAT_1_901(m, d) m(2, 901, d) +# define BOOST_PP_REPEAT_1_903(m, d) BOOST_PP_REPEAT_1_902(m, d) m(2, 902, d) +# define BOOST_PP_REPEAT_1_904(m, d) BOOST_PP_REPEAT_1_903(m, d) m(2, 903, d) +# define BOOST_PP_REPEAT_1_905(m, d) BOOST_PP_REPEAT_1_904(m, d) m(2, 904, d) +# define BOOST_PP_REPEAT_1_906(m, d) BOOST_PP_REPEAT_1_905(m, d) m(2, 905, d) +# define BOOST_PP_REPEAT_1_907(m, d) BOOST_PP_REPEAT_1_906(m, d) m(2, 906, d) +# define BOOST_PP_REPEAT_1_908(m, d) BOOST_PP_REPEAT_1_907(m, d) m(2, 907, d) +# define BOOST_PP_REPEAT_1_909(m, d) BOOST_PP_REPEAT_1_908(m, d) m(2, 908, d) +# define BOOST_PP_REPEAT_1_910(m, d) BOOST_PP_REPEAT_1_909(m, d) m(2, 909, d) +# define BOOST_PP_REPEAT_1_911(m, d) BOOST_PP_REPEAT_1_910(m, d) m(2, 910, d) +# define BOOST_PP_REPEAT_1_912(m, d) BOOST_PP_REPEAT_1_911(m, d) m(2, 911, d) +# define BOOST_PP_REPEAT_1_913(m, d) BOOST_PP_REPEAT_1_912(m, d) m(2, 912, d) +# define BOOST_PP_REPEAT_1_914(m, d) BOOST_PP_REPEAT_1_913(m, d) m(2, 913, d) +# define BOOST_PP_REPEAT_1_915(m, d) BOOST_PP_REPEAT_1_914(m, d) m(2, 914, d) +# define BOOST_PP_REPEAT_1_916(m, d) BOOST_PP_REPEAT_1_915(m, d) m(2, 915, d) +# define BOOST_PP_REPEAT_1_917(m, d) BOOST_PP_REPEAT_1_916(m, d) m(2, 916, d) +# define BOOST_PP_REPEAT_1_918(m, d) BOOST_PP_REPEAT_1_917(m, d) m(2, 917, d) +# define BOOST_PP_REPEAT_1_919(m, d) BOOST_PP_REPEAT_1_918(m, d) m(2, 918, d) +# define BOOST_PP_REPEAT_1_920(m, d) BOOST_PP_REPEAT_1_919(m, d) m(2, 919, d) +# define BOOST_PP_REPEAT_1_921(m, d) BOOST_PP_REPEAT_1_920(m, d) m(2, 920, d) +# define BOOST_PP_REPEAT_1_922(m, d) BOOST_PP_REPEAT_1_921(m, d) m(2, 921, d) +# define BOOST_PP_REPEAT_1_923(m, d) BOOST_PP_REPEAT_1_922(m, d) m(2, 922, d) +# define BOOST_PP_REPEAT_1_924(m, d) BOOST_PP_REPEAT_1_923(m, d) m(2, 923, d) +# define BOOST_PP_REPEAT_1_925(m, d) BOOST_PP_REPEAT_1_924(m, d) m(2, 924, d) +# define BOOST_PP_REPEAT_1_926(m, d) BOOST_PP_REPEAT_1_925(m, d) m(2, 925, d) +# define BOOST_PP_REPEAT_1_927(m, d) BOOST_PP_REPEAT_1_926(m, d) m(2, 926, d) +# define BOOST_PP_REPEAT_1_928(m, d) BOOST_PP_REPEAT_1_927(m, d) m(2, 927, d) +# define BOOST_PP_REPEAT_1_929(m, d) BOOST_PP_REPEAT_1_928(m, d) m(2, 928, d) +# define BOOST_PP_REPEAT_1_930(m, d) BOOST_PP_REPEAT_1_929(m, d) m(2, 929, d) +# define BOOST_PP_REPEAT_1_931(m, d) BOOST_PP_REPEAT_1_930(m, d) m(2, 930, d) +# define BOOST_PP_REPEAT_1_932(m, d) BOOST_PP_REPEAT_1_931(m, d) m(2, 931, d) +# define BOOST_PP_REPEAT_1_933(m, d) BOOST_PP_REPEAT_1_932(m, d) m(2, 932, d) +# define BOOST_PP_REPEAT_1_934(m, d) BOOST_PP_REPEAT_1_933(m, d) m(2, 933, d) +# define BOOST_PP_REPEAT_1_935(m, d) BOOST_PP_REPEAT_1_934(m, d) m(2, 934, d) +# define BOOST_PP_REPEAT_1_936(m, d) BOOST_PP_REPEAT_1_935(m, d) m(2, 935, d) +# define BOOST_PP_REPEAT_1_937(m, d) BOOST_PP_REPEAT_1_936(m, d) m(2, 936, d) +# define BOOST_PP_REPEAT_1_938(m, d) BOOST_PP_REPEAT_1_937(m, d) m(2, 937, d) +# define BOOST_PP_REPEAT_1_939(m, d) BOOST_PP_REPEAT_1_938(m, d) m(2, 938, d) +# define BOOST_PP_REPEAT_1_940(m, d) BOOST_PP_REPEAT_1_939(m, d) m(2, 939, d) +# define BOOST_PP_REPEAT_1_941(m, d) BOOST_PP_REPEAT_1_940(m, d) m(2, 940, d) +# define BOOST_PP_REPEAT_1_942(m, d) BOOST_PP_REPEAT_1_941(m, d) m(2, 941, d) +# define BOOST_PP_REPEAT_1_943(m, d) BOOST_PP_REPEAT_1_942(m, d) m(2, 942, d) +# define BOOST_PP_REPEAT_1_944(m, d) BOOST_PP_REPEAT_1_943(m, d) m(2, 943, d) +# define BOOST_PP_REPEAT_1_945(m, d) BOOST_PP_REPEAT_1_944(m, d) m(2, 944, d) +# define BOOST_PP_REPEAT_1_946(m, d) BOOST_PP_REPEAT_1_945(m, d) m(2, 945, d) +# define BOOST_PP_REPEAT_1_947(m, d) BOOST_PP_REPEAT_1_946(m, d) m(2, 946, d) +# define BOOST_PP_REPEAT_1_948(m, d) BOOST_PP_REPEAT_1_947(m, d) m(2, 947, d) +# define BOOST_PP_REPEAT_1_949(m, d) BOOST_PP_REPEAT_1_948(m, d) m(2, 948, d) +# define BOOST_PP_REPEAT_1_950(m, d) BOOST_PP_REPEAT_1_949(m, d) m(2, 949, d) +# define BOOST_PP_REPEAT_1_951(m, d) BOOST_PP_REPEAT_1_950(m, d) m(2, 950, d) +# define BOOST_PP_REPEAT_1_952(m, d) BOOST_PP_REPEAT_1_951(m, d) m(2, 951, d) +# define BOOST_PP_REPEAT_1_953(m, d) BOOST_PP_REPEAT_1_952(m, d) m(2, 952, d) +# define BOOST_PP_REPEAT_1_954(m, d) BOOST_PP_REPEAT_1_953(m, d) m(2, 953, d) +# define BOOST_PP_REPEAT_1_955(m, d) BOOST_PP_REPEAT_1_954(m, d) m(2, 954, d) +# define BOOST_PP_REPEAT_1_956(m, d) BOOST_PP_REPEAT_1_955(m, d) m(2, 955, d) +# define BOOST_PP_REPEAT_1_957(m, d) BOOST_PP_REPEAT_1_956(m, d) m(2, 956, d) +# define BOOST_PP_REPEAT_1_958(m, d) BOOST_PP_REPEAT_1_957(m, d) m(2, 957, d) +# define BOOST_PP_REPEAT_1_959(m, d) BOOST_PP_REPEAT_1_958(m, d) m(2, 958, d) +# define BOOST_PP_REPEAT_1_960(m, d) BOOST_PP_REPEAT_1_959(m, d) m(2, 959, d) +# define BOOST_PP_REPEAT_1_961(m, d) BOOST_PP_REPEAT_1_960(m, d) m(2, 960, d) +# define BOOST_PP_REPEAT_1_962(m, d) BOOST_PP_REPEAT_1_961(m, d) m(2, 961, d) +# define BOOST_PP_REPEAT_1_963(m, d) BOOST_PP_REPEAT_1_962(m, d) m(2, 962, d) +# define BOOST_PP_REPEAT_1_964(m, d) BOOST_PP_REPEAT_1_963(m, d) m(2, 963, d) +# define BOOST_PP_REPEAT_1_965(m, d) BOOST_PP_REPEAT_1_964(m, d) m(2, 964, d) +# define BOOST_PP_REPEAT_1_966(m, d) BOOST_PP_REPEAT_1_965(m, d) m(2, 965, d) +# define BOOST_PP_REPEAT_1_967(m, d) BOOST_PP_REPEAT_1_966(m, d) m(2, 966, d) +# define BOOST_PP_REPEAT_1_968(m, d) BOOST_PP_REPEAT_1_967(m, d) m(2, 967, d) +# define BOOST_PP_REPEAT_1_969(m, d) BOOST_PP_REPEAT_1_968(m, d) m(2, 968, d) +# define BOOST_PP_REPEAT_1_970(m, d) BOOST_PP_REPEAT_1_969(m, d) m(2, 969, d) +# define BOOST_PP_REPEAT_1_971(m, d) BOOST_PP_REPEAT_1_970(m, d) m(2, 970, d) +# define BOOST_PP_REPEAT_1_972(m, d) BOOST_PP_REPEAT_1_971(m, d) m(2, 971, d) +# define BOOST_PP_REPEAT_1_973(m, d) BOOST_PP_REPEAT_1_972(m, d) m(2, 972, d) +# define BOOST_PP_REPEAT_1_974(m, d) BOOST_PP_REPEAT_1_973(m, d) m(2, 973, d) +# define BOOST_PP_REPEAT_1_975(m, d) BOOST_PP_REPEAT_1_974(m, d) m(2, 974, d) +# define BOOST_PP_REPEAT_1_976(m, d) BOOST_PP_REPEAT_1_975(m, d) m(2, 975, d) +# define BOOST_PP_REPEAT_1_977(m, d) BOOST_PP_REPEAT_1_976(m, d) m(2, 976, d) +# define BOOST_PP_REPEAT_1_978(m, d) BOOST_PP_REPEAT_1_977(m, d) m(2, 977, d) +# define BOOST_PP_REPEAT_1_979(m, d) BOOST_PP_REPEAT_1_978(m, d) m(2, 978, d) +# define BOOST_PP_REPEAT_1_980(m, d) BOOST_PP_REPEAT_1_979(m, d) m(2, 979, d) +# define BOOST_PP_REPEAT_1_981(m, d) BOOST_PP_REPEAT_1_980(m, d) m(2, 980, d) +# define BOOST_PP_REPEAT_1_982(m, d) BOOST_PP_REPEAT_1_981(m, d) m(2, 981, d) +# define BOOST_PP_REPEAT_1_983(m, d) BOOST_PP_REPEAT_1_982(m, d) m(2, 982, d) +# define BOOST_PP_REPEAT_1_984(m, d) BOOST_PP_REPEAT_1_983(m, d) m(2, 983, d) +# define BOOST_PP_REPEAT_1_985(m, d) BOOST_PP_REPEAT_1_984(m, d) m(2, 984, d) +# define BOOST_PP_REPEAT_1_986(m, d) BOOST_PP_REPEAT_1_985(m, d) m(2, 985, d) +# define BOOST_PP_REPEAT_1_987(m, d) BOOST_PP_REPEAT_1_986(m, d) m(2, 986, d) +# define BOOST_PP_REPEAT_1_988(m, d) BOOST_PP_REPEAT_1_987(m, d) m(2, 987, d) +# define BOOST_PP_REPEAT_1_989(m, d) BOOST_PP_REPEAT_1_988(m, d) m(2, 988, d) +# define BOOST_PP_REPEAT_1_990(m, d) BOOST_PP_REPEAT_1_989(m, d) m(2, 989, d) +# define BOOST_PP_REPEAT_1_991(m, d) BOOST_PP_REPEAT_1_990(m, d) m(2, 990, d) +# define BOOST_PP_REPEAT_1_992(m, d) BOOST_PP_REPEAT_1_991(m, d) m(2, 991, d) +# define BOOST_PP_REPEAT_1_993(m, d) BOOST_PP_REPEAT_1_992(m, d) m(2, 992, d) +# define BOOST_PP_REPEAT_1_994(m, d) BOOST_PP_REPEAT_1_993(m, d) m(2, 993, d) +# define BOOST_PP_REPEAT_1_995(m, d) BOOST_PP_REPEAT_1_994(m, d) m(2, 994, d) +# define BOOST_PP_REPEAT_1_996(m, d) BOOST_PP_REPEAT_1_995(m, d) m(2, 995, d) +# define BOOST_PP_REPEAT_1_997(m, d) BOOST_PP_REPEAT_1_996(m, d) m(2, 996, d) +# define BOOST_PP_REPEAT_1_998(m, d) BOOST_PP_REPEAT_1_997(m, d) m(2, 997, d) +# define BOOST_PP_REPEAT_1_999(m, d) BOOST_PP_REPEAT_1_998(m, d) m(2, 998, d) +# define BOOST_PP_REPEAT_1_1000(m, d) BOOST_PP_REPEAT_1_999(m, d) m(2, 999, d) +# define BOOST_PP_REPEAT_1_1001(m, d) BOOST_PP_REPEAT_1_1000(m, d) m(2, 1000, d) +# define BOOST_PP_REPEAT_1_1002(m, d) BOOST_PP_REPEAT_1_1001(m, d) m(2, 1001, d) +# define BOOST_PP_REPEAT_1_1003(m, d) BOOST_PP_REPEAT_1_1002(m, d) m(2, 1002, d) +# define BOOST_PP_REPEAT_1_1004(m, d) BOOST_PP_REPEAT_1_1003(m, d) m(2, 1003, d) +# define BOOST_PP_REPEAT_1_1005(m, d) BOOST_PP_REPEAT_1_1004(m, d) m(2, 1004, d) +# define BOOST_PP_REPEAT_1_1006(m, d) BOOST_PP_REPEAT_1_1005(m, d) m(2, 1005, d) +# define BOOST_PP_REPEAT_1_1007(m, d) BOOST_PP_REPEAT_1_1006(m, d) m(2, 1006, d) +# define BOOST_PP_REPEAT_1_1008(m, d) BOOST_PP_REPEAT_1_1007(m, d) m(2, 1007, d) +# define BOOST_PP_REPEAT_1_1009(m, d) BOOST_PP_REPEAT_1_1008(m, d) m(2, 1008, d) +# define BOOST_PP_REPEAT_1_1010(m, d) BOOST_PP_REPEAT_1_1009(m, d) m(2, 1009, d) +# define BOOST_PP_REPEAT_1_1011(m, d) BOOST_PP_REPEAT_1_1010(m, d) m(2, 1010, d) +# define BOOST_PP_REPEAT_1_1012(m, d) BOOST_PP_REPEAT_1_1011(m, d) m(2, 1011, d) +# define BOOST_PP_REPEAT_1_1013(m, d) BOOST_PP_REPEAT_1_1012(m, d) m(2, 1012, d) +# define BOOST_PP_REPEAT_1_1014(m, d) BOOST_PP_REPEAT_1_1013(m, d) m(2, 1013, d) +# define BOOST_PP_REPEAT_1_1015(m, d) BOOST_PP_REPEAT_1_1014(m, d) m(2, 1014, d) +# define BOOST_PP_REPEAT_1_1016(m, d) BOOST_PP_REPEAT_1_1015(m, d) m(2, 1015, d) +# define BOOST_PP_REPEAT_1_1017(m, d) BOOST_PP_REPEAT_1_1016(m, d) m(2, 1016, d) +# define BOOST_PP_REPEAT_1_1018(m, d) BOOST_PP_REPEAT_1_1017(m, d) m(2, 1017, d) +# define BOOST_PP_REPEAT_1_1019(m, d) BOOST_PP_REPEAT_1_1018(m, d) m(2, 1018, d) +# define BOOST_PP_REPEAT_1_1020(m, d) BOOST_PP_REPEAT_1_1019(m, d) m(2, 1019, d) +# define BOOST_PP_REPEAT_1_1021(m, d) BOOST_PP_REPEAT_1_1020(m, d) m(2, 1020, d) +# define BOOST_PP_REPEAT_1_1022(m, d) BOOST_PP_REPEAT_1_1021(m, d) m(2, 1021, d) +# define BOOST_PP_REPEAT_1_1023(m, d) BOOST_PP_REPEAT_1_1022(m, d) m(2, 1022, d) +# define BOOST_PP_REPEAT_1_1024(m, d) BOOST_PP_REPEAT_1_1023(m, d) m(2, 1023, d) +# +# define BOOST_PP_REPEAT_2_513(m, d) BOOST_PP_REPEAT_2_512(m, d) m(3, 512, d) +# define BOOST_PP_REPEAT_2_514(m, d) BOOST_PP_REPEAT_2_513(m, d) m(3, 513, d) +# define BOOST_PP_REPEAT_2_515(m, d) BOOST_PP_REPEAT_2_514(m, d) m(3, 514, d) +# define BOOST_PP_REPEAT_2_516(m, d) BOOST_PP_REPEAT_2_515(m, d) m(3, 515, d) +# define BOOST_PP_REPEAT_2_517(m, d) BOOST_PP_REPEAT_2_516(m, d) m(3, 516, d) +# define BOOST_PP_REPEAT_2_518(m, d) BOOST_PP_REPEAT_2_517(m, d) m(3, 517, d) +# define BOOST_PP_REPEAT_2_519(m, d) BOOST_PP_REPEAT_2_518(m, d) m(3, 518, d) +# define BOOST_PP_REPEAT_2_520(m, d) BOOST_PP_REPEAT_2_519(m, d) m(3, 519, d) +# define BOOST_PP_REPEAT_2_521(m, d) BOOST_PP_REPEAT_2_520(m, d) m(3, 520, d) +# define BOOST_PP_REPEAT_2_522(m, d) BOOST_PP_REPEAT_2_521(m, d) m(3, 521, d) +# define BOOST_PP_REPEAT_2_523(m, d) BOOST_PP_REPEAT_2_522(m, d) m(3, 522, d) +# define BOOST_PP_REPEAT_2_524(m, d) BOOST_PP_REPEAT_2_523(m, d) m(3, 523, d) +# define BOOST_PP_REPEAT_2_525(m, d) BOOST_PP_REPEAT_2_524(m, d) m(3, 524, d) +# define BOOST_PP_REPEAT_2_526(m, d) BOOST_PP_REPEAT_2_525(m, d) m(3, 525, d) +# define BOOST_PP_REPEAT_2_527(m, d) BOOST_PP_REPEAT_2_526(m, d) m(3, 526, d) +# define BOOST_PP_REPEAT_2_528(m, d) BOOST_PP_REPEAT_2_527(m, d) m(3, 527, d) +# define BOOST_PP_REPEAT_2_529(m, d) BOOST_PP_REPEAT_2_528(m, d) m(3, 528, d) +# define BOOST_PP_REPEAT_2_530(m, d) BOOST_PP_REPEAT_2_529(m, d) m(3, 529, d) +# define BOOST_PP_REPEAT_2_531(m, d) BOOST_PP_REPEAT_2_530(m, d) m(3, 530, d) +# define BOOST_PP_REPEAT_2_532(m, d) BOOST_PP_REPEAT_2_531(m, d) m(3, 531, d) +# define BOOST_PP_REPEAT_2_533(m, d) BOOST_PP_REPEAT_2_532(m, d) m(3, 532, d) +# define BOOST_PP_REPEAT_2_534(m, d) BOOST_PP_REPEAT_2_533(m, d) m(3, 533, d) +# define BOOST_PP_REPEAT_2_535(m, d) BOOST_PP_REPEAT_2_534(m, d) m(3, 534, d) +# define BOOST_PP_REPEAT_2_536(m, d) BOOST_PP_REPEAT_2_535(m, d) m(3, 535, d) +# define BOOST_PP_REPEAT_2_537(m, d) BOOST_PP_REPEAT_2_536(m, d) m(3, 536, d) +# define BOOST_PP_REPEAT_2_538(m, d) BOOST_PP_REPEAT_2_537(m, d) m(3, 537, d) +# define BOOST_PP_REPEAT_2_539(m, d) BOOST_PP_REPEAT_2_538(m, d) m(3, 538, d) +# define BOOST_PP_REPEAT_2_540(m, d) BOOST_PP_REPEAT_2_539(m, d) m(3, 539, d) +# define BOOST_PP_REPEAT_2_541(m, d) BOOST_PP_REPEAT_2_540(m, d) m(3, 540, d) +# define BOOST_PP_REPEAT_2_542(m, d) BOOST_PP_REPEAT_2_541(m, d) m(3, 541, d) +# define BOOST_PP_REPEAT_2_543(m, d) BOOST_PP_REPEAT_2_542(m, d) m(3, 542, d) +# define BOOST_PP_REPEAT_2_544(m, d) BOOST_PP_REPEAT_2_543(m, d) m(3, 543, d) +# define BOOST_PP_REPEAT_2_545(m, d) BOOST_PP_REPEAT_2_544(m, d) m(3, 544, d) +# define BOOST_PP_REPEAT_2_546(m, d) BOOST_PP_REPEAT_2_545(m, d) m(3, 545, d) +# define BOOST_PP_REPEAT_2_547(m, d) BOOST_PP_REPEAT_2_546(m, d) m(3, 546, d) +# define BOOST_PP_REPEAT_2_548(m, d) BOOST_PP_REPEAT_2_547(m, d) m(3, 547, d) +# define BOOST_PP_REPEAT_2_549(m, d) BOOST_PP_REPEAT_2_548(m, d) m(3, 548, d) +# define BOOST_PP_REPEAT_2_550(m, d) BOOST_PP_REPEAT_2_549(m, d) m(3, 549, d) +# define BOOST_PP_REPEAT_2_551(m, d) BOOST_PP_REPEAT_2_550(m, d) m(3, 550, d) +# define BOOST_PP_REPEAT_2_552(m, d) BOOST_PP_REPEAT_2_551(m, d) m(3, 551, d) +# define BOOST_PP_REPEAT_2_553(m, d) BOOST_PP_REPEAT_2_552(m, d) m(3, 552, d) +# define BOOST_PP_REPEAT_2_554(m, d) BOOST_PP_REPEAT_2_553(m, d) m(3, 553, d) +# define BOOST_PP_REPEAT_2_555(m, d) BOOST_PP_REPEAT_2_554(m, d) m(3, 554, d) +# define BOOST_PP_REPEAT_2_556(m, d) BOOST_PP_REPEAT_2_555(m, d) m(3, 555, d) +# define BOOST_PP_REPEAT_2_557(m, d) BOOST_PP_REPEAT_2_556(m, d) m(3, 556, d) +# define BOOST_PP_REPEAT_2_558(m, d) BOOST_PP_REPEAT_2_557(m, d) m(3, 557, d) +# define BOOST_PP_REPEAT_2_559(m, d) BOOST_PP_REPEAT_2_558(m, d) m(3, 558, d) +# define BOOST_PP_REPEAT_2_560(m, d) BOOST_PP_REPEAT_2_559(m, d) m(3, 559, d) +# define BOOST_PP_REPEAT_2_561(m, d) BOOST_PP_REPEAT_2_560(m, d) m(3, 560, d) +# define BOOST_PP_REPEAT_2_562(m, d) BOOST_PP_REPEAT_2_561(m, d) m(3, 561, d) +# define BOOST_PP_REPEAT_2_563(m, d) BOOST_PP_REPEAT_2_562(m, d) m(3, 562, d) +# define BOOST_PP_REPEAT_2_564(m, d) BOOST_PP_REPEAT_2_563(m, d) m(3, 563, d) +# define BOOST_PP_REPEAT_2_565(m, d) BOOST_PP_REPEAT_2_564(m, d) m(3, 564, d) +# define BOOST_PP_REPEAT_2_566(m, d) BOOST_PP_REPEAT_2_565(m, d) m(3, 565, d) +# define BOOST_PP_REPEAT_2_567(m, d) BOOST_PP_REPEAT_2_566(m, d) m(3, 566, d) +# define BOOST_PP_REPEAT_2_568(m, d) BOOST_PP_REPEAT_2_567(m, d) m(3, 567, d) +# define BOOST_PP_REPEAT_2_569(m, d) BOOST_PP_REPEAT_2_568(m, d) m(3, 568, d) +# define BOOST_PP_REPEAT_2_570(m, d) BOOST_PP_REPEAT_2_569(m, d) m(3, 569, d) +# define BOOST_PP_REPEAT_2_571(m, d) BOOST_PP_REPEAT_2_570(m, d) m(3, 570, d) +# define BOOST_PP_REPEAT_2_572(m, d) BOOST_PP_REPEAT_2_571(m, d) m(3, 571, d) +# define BOOST_PP_REPEAT_2_573(m, d) BOOST_PP_REPEAT_2_572(m, d) m(3, 572, d) +# define BOOST_PP_REPEAT_2_574(m, d) BOOST_PP_REPEAT_2_573(m, d) m(3, 573, d) +# define BOOST_PP_REPEAT_2_575(m, d) BOOST_PP_REPEAT_2_574(m, d) m(3, 574, d) +# define BOOST_PP_REPEAT_2_576(m, d) BOOST_PP_REPEAT_2_575(m, d) m(3, 575, d) +# define BOOST_PP_REPEAT_2_577(m, d) BOOST_PP_REPEAT_2_576(m, d) m(3, 576, d) +# define BOOST_PP_REPEAT_2_578(m, d) BOOST_PP_REPEAT_2_577(m, d) m(3, 577, d) +# define BOOST_PP_REPEAT_2_579(m, d) BOOST_PP_REPEAT_2_578(m, d) m(3, 578, d) +# define BOOST_PP_REPEAT_2_580(m, d) BOOST_PP_REPEAT_2_579(m, d) m(3, 579, d) +# define BOOST_PP_REPEAT_2_581(m, d) BOOST_PP_REPEAT_2_580(m, d) m(3, 580, d) +# define BOOST_PP_REPEAT_2_582(m, d) BOOST_PP_REPEAT_2_581(m, d) m(3, 581, d) +# define BOOST_PP_REPEAT_2_583(m, d) BOOST_PP_REPEAT_2_582(m, d) m(3, 582, d) +# define BOOST_PP_REPEAT_2_584(m, d) BOOST_PP_REPEAT_2_583(m, d) m(3, 583, d) +# define BOOST_PP_REPEAT_2_585(m, d) BOOST_PP_REPEAT_2_584(m, d) m(3, 584, d) +# define BOOST_PP_REPEAT_2_586(m, d) BOOST_PP_REPEAT_2_585(m, d) m(3, 585, d) +# define BOOST_PP_REPEAT_2_587(m, d) BOOST_PP_REPEAT_2_586(m, d) m(3, 586, d) +# define BOOST_PP_REPEAT_2_588(m, d) BOOST_PP_REPEAT_2_587(m, d) m(3, 587, d) +# define BOOST_PP_REPEAT_2_589(m, d) BOOST_PP_REPEAT_2_588(m, d) m(3, 588, d) +# define BOOST_PP_REPEAT_2_590(m, d) BOOST_PP_REPEAT_2_589(m, d) m(3, 589, d) +# define BOOST_PP_REPEAT_2_591(m, d) BOOST_PP_REPEAT_2_590(m, d) m(3, 590, d) +# define BOOST_PP_REPEAT_2_592(m, d) BOOST_PP_REPEAT_2_591(m, d) m(3, 591, d) +# define BOOST_PP_REPEAT_2_593(m, d) BOOST_PP_REPEAT_2_592(m, d) m(3, 592, d) +# define BOOST_PP_REPEAT_2_594(m, d) BOOST_PP_REPEAT_2_593(m, d) m(3, 593, d) +# define BOOST_PP_REPEAT_2_595(m, d) BOOST_PP_REPEAT_2_594(m, d) m(3, 594, d) +# define BOOST_PP_REPEAT_2_596(m, d) BOOST_PP_REPEAT_2_595(m, d) m(3, 595, d) +# define BOOST_PP_REPEAT_2_597(m, d) BOOST_PP_REPEAT_2_596(m, d) m(3, 596, d) +# define BOOST_PP_REPEAT_2_598(m, d) BOOST_PP_REPEAT_2_597(m, d) m(3, 597, d) +# define BOOST_PP_REPEAT_2_599(m, d) BOOST_PP_REPEAT_2_598(m, d) m(3, 598, d) +# define BOOST_PP_REPEAT_2_600(m, d) BOOST_PP_REPEAT_2_599(m, d) m(3, 599, d) +# define BOOST_PP_REPEAT_2_601(m, d) BOOST_PP_REPEAT_2_600(m, d) m(3, 600, d) +# define BOOST_PP_REPEAT_2_602(m, d) BOOST_PP_REPEAT_2_601(m, d) m(3, 601, d) +# define BOOST_PP_REPEAT_2_603(m, d) BOOST_PP_REPEAT_2_602(m, d) m(3, 602, d) +# define BOOST_PP_REPEAT_2_604(m, d) BOOST_PP_REPEAT_2_603(m, d) m(3, 603, d) +# define BOOST_PP_REPEAT_2_605(m, d) BOOST_PP_REPEAT_2_604(m, d) m(3, 604, d) +# define BOOST_PP_REPEAT_2_606(m, d) BOOST_PP_REPEAT_2_605(m, d) m(3, 605, d) +# define BOOST_PP_REPEAT_2_607(m, d) BOOST_PP_REPEAT_2_606(m, d) m(3, 606, d) +# define BOOST_PP_REPEAT_2_608(m, d) BOOST_PP_REPEAT_2_607(m, d) m(3, 607, d) +# define BOOST_PP_REPEAT_2_609(m, d) BOOST_PP_REPEAT_2_608(m, d) m(3, 608, d) +# define BOOST_PP_REPEAT_2_610(m, d) BOOST_PP_REPEAT_2_609(m, d) m(3, 609, d) +# define BOOST_PP_REPEAT_2_611(m, d) BOOST_PP_REPEAT_2_610(m, d) m(3, 610, d) +# define BOOST_PP_REPEAT_2_612(m, d) BOOST_PP_REPEAT_2_611(m, d) m(3, 611, d) +# define BOOST_PP_REPEAT_2_613(m, d) BOOST_PP_REPEAT_2_612(m, d) m(3, 612, d) +# define BOOST_PP_REPEAT_2_614(m, d) BOOST_PP_REPEAT_2_613(m, d) m(3, 613, d) +# define BOOST_PP_REPEAT_2_615(m, d) BOOST_PP_REPEAT_2_614(m, d) m(3, 614, d) +# define BOOST_PP_REPEAT_2_616(m, d) BOOST_PP_REPEAT_2_615(m, d) m(3, 615, d) +# define BOOST_PP_REPEAT_2_617(m, d) BOOST_PP_REPEAT_2_616(m, d) m(3, 616, d) +# define BOOST_PP_REPEAT_2_618(m, d) BOOST_PP_REPEAT_2_617(m, d) m(3, 617, d) +# define BOOST_PP_REPEAT_2_619(m, d) BOOST_PP_REPEAT_2_618(m, d) m(3, 618, d) +# define BOOST_PP_REPEAT_2_620(m, d) BOOST_PP_REPEAT_2_619(m, d) m(3, 619, d) +# define BOOST_PP_REPEAT_2_621(m, d) BOOST_PP_REPEAT_2_620(m, d) m(3, 620, d) +# define BOOST_PP_REPEAT_2_622(m, d) BOOST_PP_REPEAT_2_621(m, d) m(3, 621, d) +# define BOOST_PP_REPEAT_2_623(m, d) BOOST_PP_REPEAT_2_622(m, d) m(3, 622, d) +# define BOOST_PP_REPEAT_2_624(m, d) BOOST_PP_REPEAT_2_623(m, d) m(3, 623, d) +# define BOOST_PP_REPEAT_2_625(m, d) BOOST_PP_REPEAT_2_624(m, d) m(3, 624, d) +# define BOOST_PP_REPEAT_2_626(m, d) BOOST_PP_REPEAT_2_625(m, d) m(3, 625, d) +# define BOOST_PP_REPEAT_2_627(m, d) BOOST_PP_REPEAT_2_626(m, d) m(3, 626, d) +# define BOOST_PP_REPEAT_2_628(m, d) BOOST_PP_REPEAT_2_627(m, d) m(3, 627, d) +# define BOOST_PP_REPEAT_2_629(m, d) BOOST_PP_REPEAT_2_628(m, d) m(3, 628, d) +# define BOOST_PP_REPEAT_2_630(m, d) BOOST_PP_REPEAT_2_629(m, d) m(3, 629, d) +# define BOOST_PP_REPEAT_2_631(m, d) BOOST_PP_REPEAT_2_630(m, d) m(3, 630, d) +# define BOOST_PP_REPEAT_2_632(m, d) BOOST_PP_REPEAT_2_631(m, d) m(3, 631, d) +# define BOOST_PP_REPEAT_2_633(m, d) BOOST_PP_REPEAT_2_632(m, d) m(3, 632, d) +# define BOOST_PP_REPEAT_2_634(m, d) BOOST_PP_REPEAT_2_633(m, d) m(3, 633, d) +# define BOOST_PP_REPEAT_2_635(m, d) BOOST_PP_REPEAT_2_634(m, d) m(3, 634, d) +# define BOOST_PP_REPEAT_2_636(m, d) BOOST_PP_REPEAT_2_635(m, d) m(3, 635, d) +# define BOOST_PP_REPEAT_2_637(m, d) BOOST_PP_REPEAT_2_636(m, d) m(3, 636, d) +# define BOOST_PP_REPEAT_2_638(m, d) BOOST_PP_REPEAT_2_637(m, d) m(3, 637, d) +# define BOOST_PP_REPEAT_2_639(m, d) BOOST_PP_REPEAT_2_638(m, d) m(3, 638, d) +# define BOOST_PP_REPEAT_2_640(m, d) BOOST_PP_REPEAT_2_639(m, d) m(3, 639, d) +# define BOOST_PP_REPEAT_2_641(m, d) BOOST_PP_REPEAT_2_640(m, d) m(3, 640, d) +# define BOOST_PP_REPEAT_2_642(m, d) BOOST_PP_REPEAT_2_641(m, d) m(3, 641, d) +# define BOOST_PP_REPEAT_2_643(m, d) BOOST_PP_REPEAT_2_642(m, d) m(3, 642, d) +# define BOOST_PP_REPEAT_2_644(m, d) BOOST_PP_REPEAT_2_643(m, d) m(3, 643, d) +# define BOOST_PP_REPEAT_2_645(m, d) BOOST_PP_REPEAT_2_644(m, d) m(3, 644, d) +# define BOOST_PP_REPEAT_2_646(m, d) BOOST_PP_REPEAT_2_645(m, d) m(3, 645, d) +# define BOOST_PP_REPEAT_2_647(m, d) BOOST_PP_REPEAT_2_646(m, d) m(3, 646, d) +# define BOOST_PP_REPEAT_2_648(m, d) BOOST_PP_REPEAT_2_647(m, d) m(3, 647, d) +# define BOOST_PP_REPEAT_2_649(m, d) BOOST_PP_REPEAT_2_648(m, d) m(3, 648, d) +# define BOOST_PP_REPEAT_2_650(m, d) BOOST_PP_REPEAT_2_649(m, d) m(3, 649, d) +# define BOOST_PP_REPEAT_2_651(m, d) BOOST_PP_REPEAT_2_650(m, d) m(3, 650, d) +# define BOOST_PP_REPEAT_2_652(m, d) BOOST_PP_REPEAT_2_651(m, d) m(3, 651, d) +# define BOOST_PP_REPEAT_2_653(m, d) BOOST_PP_REPEAT_2_652(m, d) m(3, 652, d) +# define BOOST_PP_REPEAT_2_654(m, d) BOOST_PP_REPEAT_2_653(m, d) m(3, 653, d) +# define BOOST_PP_REPEAT_2_655(m, d) BOOST_PP_REPEAT_2_654(m, d) m(3, 654, d) +# define BOOST_PP_REPEAT_2_656(m, d) BOOST_PP_REPEAT_2_655(m, d) m(3, 655, d) +# define BOOST_PP_REPEAT_2_657(m, d) BOOST_PP_REPEAT_2_656(m, d) m(3, 656, d) +# define BOOST_PP_REPEAT_2_658(m, d) BOOST_PP_REPEAT_2_657(m, d) m(3, 657, d) +# define BOOST_PP_REPEAT_2_659(m, d) BOOST_PP_REPEAT_2_658(m, d) m(3, 658, d) +# define BOOST_PP_REPEAT_2_660(m, d) BOOST_PP_REPEAT_2_659(m, d) m(3, 659, d) +# define BOOST_PP_REPEAT_2_661(m, d) BOOST_PP_REPEAT_2_660(m, d) m(3, 660, d) +# define BOOST_PP_REPEAT_2_662(m, d) BOOST_PP_REPEAT_2_661(m, d) m(3, 661, d) +# define BOOST_PP_REPEAT_2_663(m, d) BOOST_PP_REPEAT_2_662(m, d) m(3, 662, d) +# define BOOST_PP_REPEAT_2_664(m, d) BOOST_PP_REPEAT_2_663(m, d) m(3, 663, d) +# define BOOST_PP_REPEAT_2_665(m, d) BOOST_PP_REPEAT_2_664(m, d) m(3, 664, d) +# define BOOST_PP_REPEAT_2_666(m, d) BOOST_PP_REPEAT_2_665(m, d) m(3, 665, d) +# define BOOST_PP_REPEAT_2_667(m, d) BOOST_PP_REPEAT_2_666(m, d) m(3, 666, d) +# define BOOST_PP_REPEAT_2_668(m, d) BOOST_PP_REPEAT_2_667(m, d) m(3, 667, d) +# define BOOST_PP_REPEAT_2_669(m, d) BOOST_PP_REPEAT_2_668(m, d) m(3, 668, d) +# define BOOST_PP_REPEAT_2_670(m, d) BOOST_PP_REPEAT_2_669(m, d) m(3, 669, d) +# define BOOST_PP_REPEAT_2_671(m, d) BOOST_PP_REPEAT_2_670(m, d) m(3, 670, d) +# define BOOST_PP_REPEAT_2_672(m, d) BOOST_PP_REPEAT_2_671(m, d) m(3, 671, d) +# define BOOST_PP_REPEAT_2_673(m, d) BOOST_PP_REPEAT_2_672(m, d) m(3, 672, d) +# define BOOST_PP_REPEAT_2_674(m, d) BOOST_PP_REPEAT_2_673(m, d) m(3, 673, d) +# define BOOST_PP_REPEAT_2_675(m, d) BOOST_PP_REPEAT_2_674(m, d) m(3, 674, d) +# define BOOST_PP_REPEAT_2_676(m, d) BOOST_PP_REPEAT_2_675(m, d) m(3, 675, d) +# define BOOST_PP_REPEAT_2_677(m, d) BOOST_PP_REPEAT_2_676(m, d) m(3, 676, d) +# define BOOST_PP_REPEAT_2_678(m, d) BOOST_PP_REPEAT_2_677(m, d) m(3, 677, d) +# define BOOST_PP_REPEAT_2_679(m, d) BOOST_PP_REPEAT_2_678(m, d) m(3, 678, d) +# define BOOST_PP_REPEAT_2_680(m, d) BOOST_PP_REPEAT_2_679(m, d) m(3, 679, d) +# define BOOST_PP_REPEAT_2_681(m, d) BOOST_PP_REPEAT_2_680(m, d) m(3, 680, d) +# define BOOST_PP_REPEAT_2_682(m, d) BOOST_PP_REPEAT_2_681(m, d) m(3, 681, d) +# define BOOST_PP_REPEAT_2_683(m, d) BOOST_PP_REPEAT_2_682(m, d) m(3, 682, d) +# define BOOST_PP_REPEAT_2_684(m, d) BOOST_PP_REPEAT_2_683(m, d) m(3, 683, d) +# define BOOST_PP_REPEAT_2_685(m, d) BOOST_PP_REPEAT_2_684(m, d) m(3, 684, d) +# define BOOST_PP_REPEAT_2_686(m, d) BOOST_PP_REPEAT_2_685(m, d) m(3, 685, d) +# define BOOST_PP_REPEAT_2_687(m, d) BOOST_PP_REPEAT_2_686(m, d) m(3, 686, d) +# define BOOST_PP_REPEAT_2_688(m, d) BOOST_PP_REPEAT_2_687(m, d) m(3, 687, d) +# define BOOST_PP_REPEAT_2_689(m, d) BOOST_PP_REPEAT_2_688(m, d) m(3, 688, d) +# define BOOST_PP_REPEAT_2_690(m, d) BOOST_PP_REPEAT_2_689(m, d) m(3, 689, d) +# define BOOST_PP_REPEAT_2_691(m, d) BOOST_PP_REPEAT_2_690(m, d) m(3, 690, d) +# define BOOST_PP_REPEAT_2_692(m, d) BOOST_PP_REPEAT_2_691(m, d) m(3, 691, d) +# define BOOST_PP_REPEAT_2_693(m, d) BOOST_PP_REPEAT_2_692(m, d) m(3, 692, d) +# define BOOST_PP_REPEAT_2_694(m, d) BOOST_PP_REPEAT_2_693(m, d) m(3, 693, d) +# define BOOST_PP_REPEAT_2_695(m, d) BOOST_PP_REPEAT_2_694(m, d) m(3, 694, d) +# define BOOST_PP_REPEAT_2_696(m, d) BOOST_PP_REPEAT_2_695(m, d) m(3, 695, d) +# define BOOST_PP_REPEAT_2_697(m, d) BOOST_PP_REPEAT_2_696(m, d) m(3, 696, d) +# define BOOST_PP_REPEAT_2_698(m, d) BOOST_PP_REPEAT_2_697(m, d) m(3, 697, d) +# define BOOST_PP_REPEAT_2_699(m, d) BOOST_PP_REPEAT_2_698(m, d) m(3, 698, d) +# define BOOST_PP_REPEAT_2_700(m, d) BOOST_PP_REPEAT_2_699(m, d) m(3, 699, d) +# define BOOST_PP_REPEAT_2_701(m, d) BOOST_PP_REPEAT_2_700(m, d) m(3, 700, d) +# define BOOST_PP_REPEAT_2_702(m, d) BOOST_PP_REPEAT_2_701(m, d) m(3, 701, d) +# define BOOST_PP_REPEAT_2_703(m, d) BOOST_PP_REPEAT_2_702(m, d) m(3, 702, d) +# define BOOST_PP_REPEAT_2_704(m, d) BOOST_PP_REPEAT_2_703(m, d) m(3, 703, d) +# define BOOST_PP_REPEAT_2_705(m, d) BOOST_PP_REPEAT_2_704(m, d) m(3, 704, d) +# define BOOST_PP_REPEAT_2_706(m, d) BOOST_PP_REPEAT_2_705(m, d) m(3, 705, d) +# define BOOST_PP_REPEAT_2_707(m, d) BOOST_PP_REPEAT_2_706(m, d) m(3, 706, d) +# define BOOST_PP_REPEAT_2_708(m, d) BOOST_PP_REPEAT_2_707(m, d) m(3, 707, d) +# define BOOST_PP_REPEAT_2_709(m, d) BOOST_PP_REPEAT_2_708(m, d) m(3, 708, d) +# define BOOST_PP_REPEAT_2_710(m, d) BOOST_PP_REPEAT_2_709(m, d) m(3, 709, d) +# define BOOST_PP_REPEAT_2_711(m, d) BOOST_PP_REPEAT_2_710(m, d) m(3, 710, d) +# define BOOST_PP_REPEAT_2_712(m, d) BOOST_PP_REPEAT_2_711(m, d) m(3, 711, d) +# define BOOST_PP_REPEAT_2_713(m, d) BOOST_PP_REPEAT_2_712(m, d) m(3, 712, d) +# define BOOST_PP_REPEAT_2_714(m, d) BOOST_PP_REPEAT_2_713(m, d) m(3, 713, d) +# define BOOST_PP_REPEAT_2_715(m, d) BOOST_PP_REPEAT_2_714(m, d) m(3, 714, d) +# define BOOST_PP_REPEAT_2_716(m, d) BOOST_PP_REPEAT_2_715(m, d) m(3, 715, d) +# define BOOST_PP_REPEAT_2_717(m, d) BOOST_PP_REPEAT_2_716(m, d) m(3, 716, d) +# define BOOST_PP_REPEAT_2_718(m, d) BOOST_PP_REPEAT_2_717(m, d) m(3, 717, d) +# define BOOST_PP_REPEAT_2_719(m, d) BOOST_PP_REPEAT_2_718(m, d) m(3, 718, d) +# define BOOST_PP_REPEAT_2_720(m, d) BOOST_PP_REPEAT_2_719(m, d) m(3, 719, d) +# define BOOST_PP_REPEAT_2_721(m, d) BOOST_PP_REPEAT_2_720(m, d) m(3, 720, d) +# define BOOST_PP_REPEAT_2_722(m, d) BOOST_PP_REPEAT_2_721(m, d) m(3, 721, d) +# define BOOST_PP_REPEAT_2_723(m, d) BOOST_PP_REPEAT_2_722(m, d) m(3, 722, d) +# define BOOST_PP_REPEAT_2_724(m, d) BOOST_PP_REPEAT_2_723(m, d) m(3, 723, d) +# define BOOST_PP_REPEAT_2_725(m, d) BOOST_PP_REPEAT_2_724(m, d) m(3, 724, d) +# define BOOST_PP_REPEAT_2_726(m, d) BOOST_PP_REPEAT_2_725(m, d) m(3, 725, d) +# define BOOST_PP_REPEAT_2_727(m, d) BOOST_PP_REPEAT_2_726(m, d) m(3, 726, d) +# define BOOST_PP_REPEAT_2_728(m, d) BOOST_PP_REPEAT_2_727(m, d) m(3, 727, d) +# define BOOST_PP_REPEAT_2_729(m, d) BOOST_PP_REPEAT_2_728(m, d) m(3, 728, d) +# define BOOST_PP_REPEAT_2_730(m, d) BOOST_PP_REPEAT_2_729(m, d) m(3, 729, d) +# define BOOST_PP_REPEAT_2_731(m, d) BOOST_PP_REPEAT_2_730(m, d) m(3, 730, d) +# define BOOST_PP_REPEAT_2_732(m, d) BOOST_PP_REPEAT_2_731(m, d) m(3, 731, d) +# define BOOST_PP_REPEAT_2_733(m, d) BOOST_PP_REPEAT_2_732(m, d) m(3, 732, d) +# define BOOST_PP_REPEAT_2_734(m, d) BOOST_PP_REPEAT_2_733(m, d) m(3, 733, d) +# define BOOST_PP_REPEAT_2_735(m, d) BOOST_PP_REPEAT_2_734(m, d) m(3, 734, d) +# define BOOST_PP_REPEAT_2_736(m, d) BOOST_PP_REPEAT_2_735(m, d) m(3, 735, d) +# define BOOST_PP_REPEAT_2_737(m, d) BOOST_PP_REPEAT_2_736(m, d) m(3, 736, d) +# define BOOST_PP_REPEAT_2_738(m, d) BOOST_PP_REPEAT_2_737(m, d) m(3, 737, d) +# define BOOST_PP_REPEAT_2_739(m, d) BOOST_PP_REPEAT_2_738(m, d) m(3, 738, d) +# define BOOST_PP_REPEAT_2_740(m, d) BOOST_PP_REPEAT_2_739(m, d) m(3, 739, d) +# define BOOST_PP_REPEAT_2_741(m, d) BOOST_PP_REPEAT_2_740(m, d) m(3, 740, d) +# define BOOST_PP_REPEAT_2_742(m, d) BOOST_PP_REPEAT_2_741(m, d) m(3, 741, d) +# define BOOST_PP_REPEAT_2_743(m, d) BOOST_PP_REPEAT_2_742(m, d) m(3, 742, d) +# define BOOST_PP_REPEAT_2_744(m, d) BOOST_PP_REPEAT_2_743(m, d) m(3, 743, d) +# define BOOST_PP_REPEAT_2_745(m, d) BOOST_PP_REPEAT_2_744(m, d) m(3, 744, d) +# define BOOST_PP_REPEAT_2_746(m, d) BOOST_PP_REPEAT_2_745(m, d) m(3, 745, d) +# define BOOST_PP_REPEAT_2_747(m, d) BOOST_PP_REPEAT_2_746(m, d) m(3, 746, d) +# define BOOST_PP_REPEAT_2_748(m, d) BOOST_PP_REPEAT_2_747(m, d) m(3, 747, d) +# define BOOST_PP_REPEAT_2_749(m, d) BOOST_PP_REPEAT_2_748(m, d) m(3, 748, d) +# define BOOST_PP_REPEAT_2_750(m, d) BOOST_PP_REPEAT_2_749(m, d) m(3, 749, d) +# define BOOST_PP_REPEAT_2_751(m, d) BOOST_PP_REPEAT_2_750(m, d) m(3, 750, d) +# define BOOST_PP_REPEAT_2_752(m, d) BOOST_PP_REPEAT_2_751(m, d) m(3, 751, d) +# define BOOST_PP_REPEAT_2_753(m, d) BOOST_PP_REPEAT_2_752(m, d) m(3, 752, d) +# define BOOST_PP_REPEAT_2_754(m, d) BOOST_PP_REPEAT_2_753(m, d) m(3, 753, d) +# define BOOST_PP_REPEAT_2_755(m, d) BOOST_PP_REPEAT_2_754(m, d) m(3, 754, d) +# define BOOST_PP_REPEAT_2_756(m, d) BOOST_PP_REPEAT_2_755(m, d) m(3, 755, d) +# define BOOST_PP_REPEAT_2_757(m, d) BOOST_PP_REPEAT_2_756(m, d) m(3, 756, d) +# define BOOST_PP_REPEAT_2_758(m, d) BOOST_PP_REPEAT_2_757(m, d) m(3, 757, d) +# define BOOST_PP_REPEAT_2_759(m, d) BOOST_PP_REPEAT_2_758(m, d) m(3, 758, d) +# define BOOST_PP_REPEAT_2_760(m, d) BOOST_PP_REPEAT_2_759(m, d) m(3, 759, d) +# define BOOST_PP_REPEAT_2_761(m, d) BOOST_PP_REPEAT_2_760(m, d) m(3, 760, d) +# define BOOST_PP_REPEAT_2_762(m, d) BOOST_PP_REPEAT_2_761(m, d) m(3, 761, d) +# define BOOST_PP_REPEAT_2_763(m, d) BOOST_PP_REPEAT_2_762(m, d) m(3, 762, d) +# define BOOST_PP_REPEAT_2_764(m, d) BOOST_PP_REPEAT_2_763(m, d) m(3, 763, d) +# define BOOST_PP_REPEAT_2_765(m, d) BOOST_PP_REPEAT_2_764(m, d) m(3, 764, d) +# define BOOST_PP_REPEAT_2_766(m, d) BOOST_PP_REPEAT_2_765(m, d) m(3, 765, d) +# define BOOST_PP_REPEAT_2_767(m, d) BOOST_PP_REPEAT_2_766(m, d) m(3, 766, d) +# define BOOST_PP_REPEAT_2_768(m, d) BOOST_PP_REPEAT_2_767(m, d) m(3, 767, d) +# define BOOST_PP_REPEAT_2_769(m, d) BOOST_PP_REPEAT_2_768(m, d) m(3, 768, d) +# define BOOST_PP_REPEAT_2_770(m, d) BOOST_PP_REPEAT_2_769(m, d) m(3, 769, d) +# define BOOST_PP_REPEAT_2_771(m, d) BOOST_PP_REPEAT_2_770(m, d) m(3, 770, d) +# define BOOST_PP_REPEAT_2_772(m, d) BOOST_PP_REPEAT_2_771(m, d) m(3, 771, d) +# define BOOST_PP_REPEAT_2_773(m, d) BOOST_PP_REPEAT_2_772(m, d) m(3, 772, d) +# define BOOST_PP_REPEAT_2_774(m, d) BOOST_PP_REPEAT_2_773(m, d) m(3, 773, d) +# define BOOST_PP_REPEAT_2_775(m, d) BOOST_PP_REPEAT_2_774(m, d) m(3, 774, d) +# define BOOST_PP_REPEAT_2_776(m, d) BOOST_PP_REPEAT_2_775(m, d) m(3, 775, d) +# define BOOST_PP_REPEAT_2_777(m, d) BOOST_PP_REPEAT_2_776(m, d) m(3, 776, d) +# define BOOST_PP_REPEAT_2_778(m, d) BOOST_PP_REPEAT_2_777(m, d) m(3, 777, d) +# define BOOST_PP_REPEAT_2_779(m, d) BOOST_PP_REPEAT_2_778(m, d) m(3, 778, d) +# define BOOST_PP_REPEAT_2_780(m, d) BOOST_PP_REPEAT_2_779(m, d) m(3, 779, d) +# define BOOST_PP_REPEAT_2_781(m, d) BOOST_PP_REPEAT_2_780(m, d) m(3, 780, d) +# define BOOST_PP_REPEAT_2_782(m, d) BOOST_PP_REPEAT_2_781(m, d) m(3, 781, d) +# define BOOST_PP_REPEAT_2_783(m, d) BOOST_PP_REPEAT_2_782(m, d) m(3, 782, d) +# define BOOST_PP_REPEAT_2_784(m, d) BOOST_PP_REPEAT_2_783(m, d) m(3, 783, d) +# define BOOST_PP_REPEAT_2_785(m, d) BOOST_PP_REPEAT_2_784(m, d) m(3, 784, d) +# define BOOST_PP_REPEAT_2_786(m, d) BOOST_PP_REPEAT_2_785(m, d) m(3, 785, d) +# define BOOST_PP_REPEAT_2_787(m, d) BOOST_PP_REPEAT_2_786(m, d) m(3, 786, d) +# define BOOST_PP_REPEAT_2_788(m, d) BOOST_PP_REPEAT_2_787(m, d) m(3, 787, d) +# define BOOST_PP_REPEAT_2_789(m, d) BOOST_PP_REPEAT_2_788(m, d) m(3, 788, d) +# define BOOST_PP_REPEAT_2_790(m, d) BOOST_PP_REPEAT_2_789(m, d) m(3, 789, d) +# define BOOST_PP_REPEAT_2_791(m, d) BOOST_PP_REPEAT_2_790(m, d) m(3, 790, d) +# define BOOST_PP_REPEAT_2_792(m, d) BOOST_PP_REPEAT_2_791(m, d) m(3, 791, d) +# define BOOST_PP_REPEAT_2_793(m, d) BOOST_PP_REPEAT_2_792(m, d) m(3, 792, d) +# define BOOST_PP_REPEAT_2_794(m, d) BOOST_PP_REPEAT_2_793(m, d) m(3, 793, d) +# define BOOST_PP_REPEAT_2_795(m, d) BOOST_PP_REPEAT_2_794(m, d) m(3, 794, d) +# define BOOST_PP_REPEAT_2_796(m, d) BOOST_PP_REPEAT_2_795(m, d) m(3, 795, d) +# define BOOST_PP_REPEAT_2_797(m, d) BOOST_PP_REPEAT_2_796(m, d) m(3, 796, d) +# define BOOST_PP_REPEAT_2_798(m, d) BOOST_PP_REPEAT_2_797(m, d) m(3, 797, d) +# define BOOST_PP_REPEAT_2_799(m, d) BOOST_PP_REPEAT_2_798(m, d) m(3, 798, d) +# define BOOST_PP_REPEAT_2_800(m, d) BOOST_PP_REPEAT_2_799(m, d) m(3, 799, d) +# define BOOST_PP_REPEAT_2_801(m, d) BOOST_PP_REPEAT_2_800(m, d) m(3, 800, d) +# define BOOST_PP_REPEAT_2_802(m, d) BOOST_PP_REPEAT_2_801(m, d) m(3, 801, d) +# define BOOST_PP_REPEAT_2_803(m, d) BOOST_PP_REPEAT_2_802(m, d) m(3, 802, d) +# define BOOST_PP_REPEAT_2_804(m, d) BOOST_PP_REPEAT_2_803(m, d) m(3, 803, d) +# define BOOST_PP_REPEAT_2_805(m, d) BOOST_PP_REPEAT_2_804(m, d) m(3, 804, d) +# define BOOST_PP_REPEAT_2_806(m, d) BOOST_PP_REPEAT_2_805(m, d) m(3, 805, d) +# define BOOST_PP_REPEAT_2_807(m, d) BOOST_PP_REPEAT_2_806(m, d) m(3, 806, d) +# define BOOST_PP_REPEAT_2_808(m, d) BOOST_PP_REPEAT_2_807(m, d) m(3, 807, d) +# define BOOST_PP_REPEAT_2_809(m, d) BOOST_PP_REPEAT_2_808(m, d) m(3, 808, d) +# define BOOST_PP_REPEAT_2_810(m, d) BOOST_PP_REPEAT_2_809(m, d) m(3, 809, d) +# define BOOST_PP_REPEAT_2_811(m, d) BOOST_PP_REPEAT_2_810(m, d) m(3, 810, d) +# define BOOST_PP_REPEAT_2_812(m, d) BOOST_PP_REPEAT_2_811(m, d) m(3, 811, d) +# define BOOST_PP_REPEAT_2_813(m, d) BOOST_PP_REPEAT_2_812(m, d) m(3, 812, d) +# define BOOST_PP_REPEAT_2_814(m, d) BOOST_PP_REPEAT_2_813(m, d) m(3, 813, d) +# define BOOST_PP_REPEAT_2_815(m, d) BOOST_PP_REPEAT_2_814(m, d) m(3, 814, d) +# define BOOST_PP_REPEAT_2_816(m, d) BOOST_PP_REPEAT_2_815(m, d) m(3, 815, d) +# define BOOST_PP_REPEAT_2_817(m, d) BOOST_PP_REPEAT_2_816(m, d) m(3, 816, d) +# define BOOST_PP_REPEAT_2_818(m, d) BOOST_PP_REPEAT_2_817(m, d) m(3, 817, d) +# define BOOST_PP_REPEAT_2_819(m, d) BOOST_PP_REPEAT_2_818(m, d) m(3, 818, d) +# define BOOST_PP_REPEAT_2_820(m, d) BOOST_PP_REPEAT_2_819(m, d) m(3, 819, d) +# define BOOST_PP_REPEAT_2_821(m, d) BOOST_PP_REPEAT_2_820(m, d) m(3, 820, d) +# define BOOST_PP_REPEAT_2_822(m, d) BOOST_PP_REPEAT_2_821(m, d) m(3, 821, d) +# define BOOST_PP_REPEAT_2_823(m, d) BOOST_PP_REPEAT_2_822(m, d) m(3, 822, d) +# define BOOST_PP_REPEAT_2_824(m, d) BOOST_PP_REPEAT_2_823(m, d) m(3, 823, d) +# define BOOST_PP_REPEAT_2_825(m, d) BOOST_PP_REPEAT_2_824(m, d) m(3, 824, d) +# define BOOST_PP_REPEAT_2_826(m, d) BOOST_PP_REPEAT_2_825(m, d) m(3, 825, d) +# define BOOST_PP_REPEAT_2_827(m, d) BOOST_PP_REPEAT_2_826(m, d) m(3, 826, d) +# define BOOST_PP_REPEAT_2_828(m, d) BOOST_PP_REPEAT_2_827(m, d) m(3, 827, d) +# define BOOST_PP_REPEAT_2_829(m, d) BOOST_PP_REPEAT_2_828(m, d) m(3, 828, d) +# define BOOST_PP_REPEAT_2_830(m, d) BOOST_PP_REPEAT_2_829(m, d) m(3, 829, d) +# define BOOST_PP_REPEAT_2_831(m, d) BOOST_PP_REPEAT_2_830(m, d) m(3, 830, d) +# define BOOST_PP_REPEAT_2_832(m, d) BOOST_PP_REPEAT_2_831(m, d) m(3, 831, d) +# define BOOST_PP_REPEAT_2_833(m, d) BOOST_PP_REPEAT_2_832(m, d) m(3, 832, d) +# define BOOST_PP_REPEAT_2_834(m, d) BOOST_PP_REPEAT_2_833(m, d) m(3, 833, d) +# define BOOST_PP_REPEAT_2_835(m, d) BOOST_PP_REPEAT_2_834(m, d) m(3, 834, d) +# define BOOST_PP_REPEAT_2_836(m, d) BOOST_PP_REPEAT_2_835(m, d) m(3, 835, d) +# define BOOST_PP_REPEAT_2_837(m, d) BOOST_PP_REPEAT_2_836(m, d) m(3, 836, d) +# define BOOST_PP_REPEAT_2_838(m, d) BOOST_PP_REPEAT_2_837(m, d) m(3, 837, d) +# define BOOST_PP_REPEAT_2_839(m, d) BOOST_PP_REPEAT_2_838(m, d) m(3, 838, d) +# define BOOST_PP_REPEAT_2_840(m, d) BOOST_PP_REPEAT_2_839(m, d) m(3, 839, d) +# define BOOST_PP_REPEAT_2_841(m, d) BOOST_PP_REPEAT_2_840(m, d) m(3, 840, d) +# define BOOST_PP_REPEAT_2_842(m, d) BOOST_PP_REPEAT_2_841(m, d) m(3, 841, d) +# define BOOST_PP_REPEAT_2_843(m, d) BOOST_PP_REPEAT_2_842(m, d) m(3, 842, d) +# define BOOST_PP_REPEAT_2_844(m, d) BOOST_PP_REPEAT_2_843(m, d) m(3, 843, d) +# define BOOST_PP_REPEAT_2_845(m, d) BOOST_PP_REPEAT_2_844(m, d) m(3, 844, d) +# define BOOST_PP_REPEAT_2_846(m, d) BOOST_PP_REPEAT_2_845(m, d) m(3, 845, d) +# define BOOST_PP_REPEAT_2_847(m, d) BOOST_PP_REPEAT_2_846(m, d) m(3, 846, d) +# define BOOST_PP_REPEAT_2_848(m, d) BOOST_PP_REPEAT_2_847(m, d) m(3, 847, d) +# define BOOST_PP_REPEAT_2_849(m, d) BOOST_PP_REPEAT_2_848(m, d) m(3, 848, d) +# define BOOST_PP_REPEAT_2_850(m, d) BOOST_PP_REPEAT_2_849(m, d) m(3, 849, d) +# define BOOST_PP_REPEAT_2_851(m, d) BOOST_PP_REPEAT_2_850(m, d) m(3, 850, d) +# define BOOST_PP_REPEAT_2_852(m, d) BOOST_PP_REPEAT_2_851(m, d) m(3, 851, d) +# define BOOST_PP_REPEAT_2_853(m, d) BOOST_PP_REPEAT_2_852(m, d) m(3, 852, d) +# define BOOST_PP_REPEAT_2_854(m, d) BOOST_PP_REPEAT_2_853(m, d) m(3, 853, d) +# define BOOST_PP_REPEAT_2_855(m, d) BOOST_PP_REPEAT_2_854(m, d) m(3, 854, d) +# define BOOST_PP_REPEAT_2_856(m, d) BOOST_PP_REPEAT_2_855(m, d) m(3, 855, d) +# define BOOST_PP_REPEAT_2_857(m, d) BOOST_PP_REPEAT_2_856(m, d) m(3, 856, d) +# define BOOST_PP_REPEAT_2_858(m, d) BOOST_PP_REPEAT_2_857(m, d) m(3, 857, d) +# define BOOST_PP_REPEAT_2_859(m, d) BOOST_PP_REPEAT_2_858(m, d) m(3, 858, d) +# define BOOST_PP_REPEAT_2_860(m, d) BOOST_PP_REPEAT_2_859(m, d) m(3, 859, d) +# define BOOST_PP_REPEAT_2_861(m, d) BOOST_PP_REPEAT_2_860(m, d) m(3, 860, d) +# define BOOST_PP_REPEAT_2_862(m, d) BOOST_PP_REPEAT_2_861(m, d) m(3, 861, d) +# define BOOST_PP_REPEAT_2_863(m, d) BOOST_PP_REPEAT_2_862(m, d) m(3, 862, d) +# define BOOST_PP_REPEAT_2_864(m, d) BOOST_PP_REPEAT_2_863(m, d) m(3, 863, d) +# define BOOST_PP_REPEAT_2_865(m, d) BOOST_PP_REPEAT_2_864(m, d) m(3, 864, d) +# define BOOST_PP_REPEAT_2_866(m, d) BOOST_PP_REPEAT_2_865(m, d) m(3, 865, d) +# define BOOST_PP_REPEAT_2_867(m, d) BOOST_PP_REPEAT_2_866(m, d) m(3, 866, d) +# define BOOST_PP_REPEAT_2_868(m, d) BOOST_PP_REPEAT_2_867(m, d) m(3, 867, d) +# define BOOST_PP_REPEAT_2_869(m, d) BOOST_PP_REPEAT_2_868(m, d) m(3, 868, d) +# define BOOST_PP_REPEAT_2_870(m, d) BOOST_PP_REPEAT_2_869(m, d) m(3, 869, d) +# define BOOST_PP_REPEAT_2_871(m, d) BOOST_PP_REPEAT_2_870(m, d) m(3, 870, d) +# define BOOST_PP_REPEAT_2_872(m, d) BOOST_PP_REPEAT_2_871(m, d) m(3, 871, d) +# define BOOST_PP_REPEAT_2_873(m, d) BOOST_PP_REPEAT_2_872(m, d) m(3, 872, d) +# define BOOST_PP_REPEAT_2_874(m, d) BOOST_PP_REPEAT_2_873(m, d) m(3, 873, d) +# define BOOST_PP_REPEAT_2_875(m, d) BOOST_PP_REPEAT_2_874(m, d) m(3, 874, d) +# define BOOST_PP_REPEAT_2_876(m, d) BOOST_PP_REPEAT_2_875(m, d) m(3, 875, d) +# define BOOST_PP_REPEAT_2_877(m, d) BOOST_PP_REPEAT_2_876(m, d) m(3, 876, d) +# define BOOST_PP_REPEAT_2_878(m, d) BOOST_PP_REPEAT_2_877(m, d) m(3, 877, d) +# define BOOST_PP_REPEAT_2_879(m, d) BOOST_PP_REPEAT_2_878(m, d) m(3, 878, d) +# define BOOST_PP_REPEAT_2_880(m, d) BOOST_PP_REPEAT_2_879(m, d) m(3, 879, d) +# define BOOST_PP_REPEAT_2_881(m, d) BOOST_PP_REPEAT_2_880(m, d) m(3, 880, d) +# define BOOST_PP_REPEAT_2_882(m, d) BOOST_PP_REPEAT_2_881(m, d) m(3, 881, d) +# define BOOST_PP_REPEAT_2_883(m, d) BOOST_PP_REPEAT_2_882(m, d) m(3, 882, d) +# define BOOST_PP_REPEAT_2_884(m, d) BOOST_PP_REPEAT_2_883(m, d) m(3, 883, d) +# define BOOST_PP_REPEAT_2_885(m, d) BOOST_PP_REPEAT_2_884(m, d) m(3, 884, d) +# define BOOST_PP_REPEAT_2_886(m, d) BOOST_PP_REPEAT_2_885(m, d) m(3, 885, d) +# define BOOST_PP_REPEAT_2_887(m, d) BOOST_PP_REPEAT_2_886(m, d) m(3, 886, d) +# define BOOST_PP_REPEAT_2_888(m, d) BOOST_PP_REPEAT_2_887(m, d) m(3, 887, d) +# define BOOST_PP_REPEAT_2_889(m, d) BOOST_PP_REPEAT_2_888(m, d) m(3, 888, d) +# define BOOST_PP_REPEAT_2_890(m, d) BOOST_PP_REPEAT_2_889(m, d) m(3, 889, d) +# define BOOST_PP_REPEAT_2_891(m, d) BOOST_PP_REPEAT_2_890(m, d) m(3, 890, d) +# define BOOST_PP_REPEAT_2_892(m, d) BOOST_PP_REPEAT_2_891(m, d) m(3, 891, d) +# define BOOST_PP_REPEAT_2_893(m, d) BOOST_PP_REPEAT_2_892(m, d) m(3, 892, d) +# define BOOST_PP_REPEAT_2_894(m, d) BOOST_PP_REPEAT_2_893(m, d) m(3, 893, d) +# define BOOST_PP_REPEAT_2_895(m, d) BOOST_PP_REPEAT_2_894(m, d) m(3, 894, d) +# define BOOST_PP_REPEAT_2_896(m, d) BOOST_PP_REPEAT_2_895(m, d) m(3, 895, d) +# define BOOST_PP_REPEAT_2_897(m, d) BOOST_PP_REPEAT_2_896(m, d) m(3, 896, d) +# define BOOST_PP_REPEAT_2_898(m, d) BOOST_PP_REPEAT_2_897(m, d) m(3, 897, d) +# define BOOST_PP_REPEAT_2_899(m, d) BOOST_PP_REPEAT_2_898(m, d) m(3, 898, d) +# define BOOST_PP_REPEAT_2_900(m, d) BOOST_PP_REPEAT_2_899(m, d) m(3, 899, d) +# define BOOST_PP_REPEAT_2_901(m, d) BOOST_PP_REPEAT_2_900(m, d) m(3, 900, d) +# define BOOST_PP_REPEAT_2_902(m, d) BOOST_PP_REPEAT_2_901(m, d) m(3, 901, d) +# define BOOST_PP_REPEAT_2_903(m, d) BOOST_PP_REPEAT_2_902(m, d) m(3, 902, d) +# define BOOST_PP_REPEAT_2_904(m, d) BOOST_PP_REPEAT_2_903(m, d) m(3, 903, d) +# define BOOST_PP_REPEAT_2_905(m, d) BOOST_PP_REPEAT_2_904(m, d) m(3, 904, d) +# define BOOST_PP_REPEAT_2_906(m, d) BOOST_PP_REPEAT_2_905(m, d) m(3, 905, d) +# define BOOST_PP_REPEAT_2_907(m, d) BOOST_PP_REPEAT_2_906(m, d) m(3, 906, d) +# define BOOST_PP_REPEAT_2_908(m, d) BOOST_PP_REPEAT_2_907(m, d) m(3, 907, d) +# define BOOST_PP_REPEAT_2_909(m, d) BOOST_PP_REPEAT_2_908(m, d) m(3, 908, d) +# define BOOST_PP_REPEAT_2_910(m, d) BOOST_PP_REPEAT_2_909(m, d) m(3, 909, d) +# define BOOST_PP_REPEAT_2_911(m, d) BOOST_PP_REPEAT_2_910(m, d) m(3, 910, d) +# define BOOST_PP_REPEAT_2_912(m, d) BOOST_PP_REPEAT_2_911(m, d) m(3, 911, d) +# define BOOST_PP_REPEAT_2_913(m, d) BOOST_PP_REPEAT_2_912(m, d) m(3, 912, d) +# define BOOST_PP_REPEAT_2_914(m, d) BOOST_PP_REPEAT_2_913(m, d) m(3, 913, d) +# define BOOST_PP_REPEAT_2_915(m, d) BOOST_PP_REPEAT_2_914(m, d) m(3, 914, d) +# define BOOST_PP_REPEAT_2_916(m, d) BOOST_PP_REPEAT_2_915(m, d) m(3, 915, d) +# define BOOST_PP_REPEAT_2_917(m, d) BOOST_PP_REPEAT_2_916(m, d) m(3, 916, d) +# define BOOST_PP_REPEAT_2_918(m, d) BOOST_PP_REPEAT_2_917(m, d) m(3, 917, d) +# define BOOST_PP_REPEAT_2_919(m, d) BOOST_PP_REPEAT_2_918(m, d) m(3, 918, d) +# define BOOST_PP_REPEAT_2_920(m, d) BOOST_PP_REPEAT_2_919(m, d) m(3, 919, d) +# define BOOST_PP_REPEAT_2_921(m, d) BOOST_PP_REPEAT_2_920(m, d) m(3, 920, d) +# define BOOST_PP_REPEAT_2_922(m, d) BOOST_PP_REPEAT_2_921(m, d) m(3, 921, d) +# define BOOST_PP_REPEAT_2_923(m, d) BOOST_PP_REPEAT_2_922(m, d) m(3, 922, d) +# define BOOST_PP_REPEAT_2_924(m, d) BOOST_PP_REPEAT_2_923(m, d) m(3, 923, d) +# define BOOST_PP_REPEAT_2_925(m, d) BOOST_PP_REPEAT_2_924(m, d) m(3, 924, d) +# define BOOST_PP_REPEAT_2_926(m, d) BOOST_PP_REPEAT_2_925(m, d) m(3, 925, d) +# define BOOST_PP_REPEAT_2_927(m, d) BOOST_PP_REPEAT_2_926(m, d) m(3, 926, d) +# define BOOST_PP_REPEAT_2_928(m, d) BOOST_PP_REPEAT_2_927(m, d) m(3, 927, d) +# define BOOST_PP_REPEAT_2_929(m, d) BOOST_PP_REPEAT_2_928(m, d) m(3, 928, d) +# define BOOST_PP_REPEAT_2_930(m, d) BOOST_PP_REPEAT_2_929(m, d) m(3, 929, d) +# define BOOST_PP_REPEAT_2_931(m, d) BOOST_PP_REPEAT_2_930(m, d) m(3, 930, d) +# define BOOST_PP_REPEAT_2_932(m, d) BOOST_PP_REPEAT_2_931(m, d) m(3, 931, d) +# define BOOST_PP_REPEAT_2_933(m, d) BOOST_PP_REPEAT_2_932(m, d) m(3, 932, d) +# define BOOST_PP_REPEAT_2_934(m, d) BOOST_PP_REPEAT_2_933(m, d) m(3, 933, d) +# define BOOST_PP_REPEAT_2_935(m, d) BOOST_PP_REPEAT_2_934(m, d) m(3, 934, d) +# define BOOST_PP_REPEAT_2_936(m, d) BOOST_PP_REPEAT_2_935(m, d) m(3, 935, d) +# define BOOST_PP_REPEAT_2_937(m, d) BOOST_PP_REPEAT_2_936(m, d) m(3, 936, d) +# define BOOST_PP_REPEAT_2_938(m, d) BOOST_PP_REPEAT_2_937(m, d) m(3, 937, d) +# define BOOST_PP_REPEAT_2_939(m, d) BOOST_PP_REPEAT_2_938(m, d) m(3, 938, d) +# define BOOST_PP_REPEAT_2_940(m, d) BOOST_PP_REPEAT_2_939(m, d) m(3, 939, d) +# define BOOST_PP_REPEAT_2_941(m, d) BOOST_PP_REPEAT_2_940(m, d) m(3, 940, d) +# define BOOST_PP_REPEAT_2_942(m, d) BOOST_PP_REPEAT_2_941(m, d) m(3, 941, d) +# define BOOST_PP_REPEAT_2_943(m, d) BOOST_PP_REPEAT_2_942(m, d) m(3, 942, d) +# define BOOST_PP_REPEAT_2_944(m, d) BOOST_PP_REPEAT_2_943(m, d) m(3, 943, d) +# define BOOST_PP_REPEAT_2_945(m, d) BOOST_PP_REPEAT_2_944(m, d) m(3, 944, d) +# define BOOST_PP_REPEAT_2_946(m, d) BOOST_PP_REPEAT_2_945(m, d) m(3, 945, d) +# define BOOST_PP_REPEAT_2_947(m, d) BOOST_PP_REPEAT_2_946(m, d) m(3, 946, d) +# define BOOST_PP_REPEAT_2_948(m, d) BOOST_PP_REPEAT_2_947(m, d) m(3, 947, d) +# define BOOST_PP_REPEAT_2_949(m, d) BOOST_PP_REPEAT_2_948(m, d) m(3, 948, d) +# define BOOST_PP_REPEAT_2_950(m, d) BOOST_PP_REPEAT_2_949(m, d) m(3, 949, d) +# define BOOST_PP_REPEAT_2_951(m, d) BOOST_PP_REPEAT_2_950(m, d) m(3, 950, d) +# define BOOST_PP_REPEAT_2_952(m, d) BOOST_PP_REPEAT_2_951(m, d) m(3, 951, d) +# define BOOST_PP_REPEAT_2_953(m, d) BOOST_PP_REPEAT_2_952(m, d) m(3, 952, d) +# define BOOST_PP_REPEAT_2_954(m, d) BOOST_PP_REPEAT_2_953(m, d) m(3, 953, d) +# define BOOST_PP_REPEAT_2_955(m, d) BOOST_PP_REPEAT_2_954(m, d) m(3, 954, d) +# define BOOST_PP_REPEAT_2_956(m, d) BOOST_PP_REPEAT_2_955(m, d) m(3, 955, d) +# define BOOST_PP_REPEAT_2_957(m, d) BOOST_PP_REPEAT_2_956(m, d) m(3, 956, d) +# define BOOST_PP_REPEAT_2_958(m, d) BOOST_PP_REPEAT_2_957(m, d) m(3, 957, d) +# define BOOST_PP_REPEAT_2_959(m, d) BOOST_PP_REPEAT_2_958(m, d) m(3, 958, d) +# define BOOST_PP_REPEAT_2_960(m, d) BOOST_PP_REPEAT_2_959(m, d) m(3, 959, d) +# define BOOST_PP_REPEAT_2_961(m, d) BOOST_PP_REPEAT_2_960(m, d) m(3, 960, d) +# define BOOST_PP_REPEAT_2_962(m, d) BOOST_PP_REPEAT_2_961(m, d) m(3, 961, d) +# define BOOST_PP_REPEAT_2_963(m, d) BOOST_PP_REPEAT_2_962(m, d) m(3, 962, d) +# define BOOST_PP_REPEAT_2_964(m, d) BOOST_PP_REPEAT_2_963(m, d) m(3, 963, d) +# define BOOST_PP_REPEAT_2_965(m, d) BOOST_PP_REPEAT_2_964(m, d) m(3, 964, d) +# define BOOST_PP_REPEAT_2_966(m, d) BOOST_PP_REPEAT_2_965(m, d) m(3, 965, d) +# define BOOST_PP_REPEAT_2_967(m, d) BOOST_PP_REPEAT_2_966(m, d) m(3, 966, d) +# define BOOST_PP_REPEAT_2_968(m, d) BOOST_PP_REPEAT_2_967(m, d) m(3, 967, d) +# define BOOST_PP_REPEAT_2_969(m, d) BOOST_PP_REPEAT_2_968(m, d) m(3, 968, d) +# define BOOST_PP_REPEAT_2_970(m, d) BOOST_PP_REPEAT_2_969(m, d) m(3, 969, d) +# define BOOST_PP_REPEAT_2_971(m, d) BOOST_PP_REPEAT_2_970(m, d) m(3, 970, d) +# define BOOST_PP_REPEAT_2_972(m, d) BOOST_PP_REPEAT_2_971(m, d) m(3, 971, d) +# define BOOST_PP_REPEAT_2_973(m, d) BOOST_PP_REPEAT_2_972(m, d) m(3, 972, d) +# define BOOST_PP_REPEAT_2_974(m, d) BOOST_PP_REPEAT_2_973(m, d) m(3, 973, d) +# define BOOST_PP_REPEAT_2_975(m, d) BOOST_PP_REPEAT_2_974(m, d) m(3, 974, d) +# define BOOST_PP_REPEAT_2_976(m, d) BOOST_PP_REPEAT_2_975(m, d) m(3, 975, d) +# define BOOST_PP_REPEAT_2_977(m, d) BOOST_PP_REPEAT_2_976(m, d) m(3, 976, d) +# define BOOST_PP_REPEAT_2_978(m, d) BOOST_PP_REPEAT_2_977(m, d) m(3, 977, d) +# define BOOST_PP_REPEAT_2_979(m, d) BOOST_PP_REPEAT_2_978(m, d) m(3, 978, d) +# define BOOST_PP_REPEAT_2_980(m, d) BOOST_PP_REPEAT_2_979(m, d) m(3, 979, d) +# define BOOST_PP_REPEAT_2_981(m, d) BOOST_PP_REPEAT_2_980(m, d) m(3, 980, d) +# define BOOST_PP_REPEAT_2_982(m, d) BOOST_PP_REPEAT_2_981(m, d) m(3, 981, d) +# define BOOST_PP_REPEAT_2_983(m, d) BOOST_PP_REPEAT_2_982(m, d) m(3, 982, d) +# define BOOST_PP_REPEAT_2_984(m, d) BOOST_PP_REPEAT_2_983(m, d) m(3, 983, d) +# define BOOST_PP_REPEAT_2_985(m, d) BOOST_PP_REPEAT_2_984(m, d) m(3, 984, d) +# define BOOST_PP_REPEAT_2_986(m, d) BOOST_PP_REPEAT_2_985(m, d) m(3, 985, d) +# define BOOST_PP_REPEAT_2_987(m, d) BOOST_PP_REPEAT_2_986(m, d) m(3, 986, d) +# define BOOST_PP_REPEAT_2_988(m, d) BOOST_PP_REPEAT_2_987(m, d) m(3, 987, d) +# define BOOST_PP_REPEAT_2_989(m, d) BOOST_PP_REPEAT_2_988(m, d) m(3, 988, d) +# define BOOST_PP_REPEAT_2_990(m, d) BOOST_PP_REPEAT_2_989(m, d) m(3, 989, d) +# define BOOST_PP_REPEAT_2_991(m, d) BOOST_PP_REPEAT_2_990(m, d) m(3, 990, d) +# define BOOST_PP_REPEAT_2_992(m, d) BOOST_PP_REPEAT_2_991(m, d) m(3, 991, d) +# define BOOST_PP_REPEAT_2_993(m, d) BOOST_PP_REPEAT_2_992(m, d) m(3, 992, d) +# define BOOST_PP_REPEAT_2_994(m, d) BOOST_PP_REPEAT_2_993(m, d) m(3, 993, d) +# define BOOST_PP_REPEAT_2_995(m, d) BOOST_PP_REPEAT_2_994(m, d) m(3, 994, d) +# define BOOST_PP_REPEAT_2_996(m, d) BOOST_PP_REPEAT_2_995(m, d) m(3, 995, d) +# define BOOST_PP_REPEAT_2_997(m, d) BOOST_PP_REPEAT_2_996(m, d) m(3, 996, d) +# define BOOST_PP_REPEAT_2_998(m, d) BOOST_PP_REPEAT_2_997(m, d) m(3, 997, d) +# define BOOST_PP_REPEAT_2_999(m, d) BOOST_PP_REPEAT_2_998(m, d) m(3, 998, d) +# define BOOST_PP_REPEAT_2_1000(m, d) BOOST_PP_REPEAT_2_999(m, d) m(3, 999, d) +# define BOOST_PP_REPEAT_2_1001(m, d) BOOST_PP_REPEAT_2_1000(m, d) m(3, 1000, d) +# define BOOST_PP_REPEAT_2_1002(m, d) BOOST_PP_REPEAT_2_1001(m, d) m(3, 1001, d) +# define BOOST_PP_REPEAT_2_1003(m, d) BOOST_PP_REPEAT_2_1002(m, d) m(3, 1002, d) +# define BOOST_PP_REPEAT_2_1004(m, d) BOOST_PP_REPEAT_2_1003(m, d) m(3, 1003, d) +# define BOOST_PP_REPEAT_2_1005(m, d) BOOST_PP_REPEAT_2_1004(m, d) m(3, 1004, d) +# define BOOST_PP_REPEAT_2_1006(m, d) BOOST_PP_REPEAT_2_1005(m, d) m(3, 1005, d) +# define BOOST_PP_REPEAT_2_1007(m, d) BOOST_PP_REPEAT_2_1006(m, d) m(3, 1006, d) +# define BOOST_PP_REPEAT_2_1008(m, d) BOOST_PP_REPEAT_2_1007(m, d) m(3, 1007, d) +# define BOOST_PP_REPEAT_2_1009(m, d) BOOST_PP_REPEAT_2_1008(m, d) m(3, 1008, d) +# define BOOST_PP_REPEAT_2_1010(m, d) BOOST_PP_REPEAT_2_1009(m, d) m(3, 1009, d) +# define BOOST_PP_REPEAT_2_1011(m, d) BOOST_PP_REPEAT_2_1010(m, d) m(3, 1010, d) +# define BOOST_PP_REPEAT_2_1012(m, d) BOOST_PP_REPEAT_2_1011(m, d) m(3, 1011, d) +# define BOOST_PP_REPEAT_2_1013(m, d) BOOST_PP_REPEAT_2_1012(m, d) m(3, 1012, d) +# define BOOST_PP_REPEAT_2_1014(m, d) BOOST_PP_REPEAT_2_1013(m, d) m(3, 1013, d) +# define BOOST_PP_REPEAT_2_1015(m, d) BOOST_PP_REPEAT_2_1014(m, d) m(3, 1014, d) +# define BOOST_PP_REPEAT_2_1016(m, d) BOOST_PP_REPEAT_2_1015(m, d) m(3, 1015, d) +# define BOOST_PP_REPEAT_2_1017(m, d) BOOST_PP_REPEAT_2_1016(m, d) m(3, 1016, d) +# define BOOST_PP_REPEAT_2_1018(m, d) BOOST_PP_REPEAT_2_1017(m, d) m(3, 1017, d) +# define BOOST_PP_REPEAT_2_1019(m, d) BOOST_PP_REPEAT_2_1018(m, d) m(3, 1018, d) +# define BOOST_PP_REPEAT_2_1020(m, d) BOOST_PP_REPEAT_2_1019(m, d) m(3, 1019, d) +# define BOOST_PP_REPEAT_2_1021(m, d) BOOST_PP_REPEAT_2_1020(m, d) m(3, 1020, d) +# define BOOST_PP_REPEAT_2_1022(m, d) BOOST_PP_REPEAT_2_1021(m, d) m(3, 1021, d) +# define BOOST_PP_REPEAT_2_1023(m, d) BOOST_PP_REPEAT_2_1022(m, d) m(3, 1022, d) +# define BOOST_PP_REPEAT_2_1024(m, d) BOOST_PP_REPEAT_2_1023(m, d) m(3, 1023, d) +# +# define BOOST_PP_REPEAT_3_513(m, d) BOOST_PP_REPEAT_3_512(m, d) m(4, 512, d) +# define BOOST_PP_REPEAT_3_514(m, d) BOOST_PP_REPEAT_3_513(m, d) m(4, 513, d) +# define BOOST_PP_REPEAT_3_515(m, d) BOOST_PP_REPEAT_3_514(m, d) m(4, 514, d) +# define BOOST_PP_REPEAT_3_516(m, d) BOOST_PP_REPEAT_3_515(m, d) m(4, 515, d) +# define BOOST_PP_REPEAT_3_517(m, d) BOOST_PP_REPEAT_3_516(m, d) m(4, 516, d) +# define BOOST_PP_REPEAT_3_518(m, d) BOOST_PP_REPEAT_3_517(m, d) m(4, 517, d) +# define BOOST_PP_REPEAT_3_519(m, d) BOOST_PP_REPEAT_3_518(m, d) m(4, 518, d) +# define BOOST_PP_REPEAT_3_520(m, d) BOOST_PP_REPEAT_3_519(m, d) m(4, 519, d) +# define BOOST_PP_REPEAT_3_521(m, d) BOOST_PP_REPEAT_3_520(m, d) m(4, 520, d) +# define BOOST_PP_REPEAT_3_522(m, d) BOOST_PP_REPEAT_3_521(m, d) m(4, 521, d) +# define BOOST_PP_REPEAT_3_523(m, d) BOOST_PP_REPEAT_3_522(m, d) m(4, 522, d) +# define BOOST_PP_REPEAT_3_524(m, d) BOOST_PP_REPEAT_3_523(m, d) m(4, 523, d) +# define BOOST_PP_REPEAT_3_525(m, d) BOOST_PP_REPEAT_3_524(m, d) m(4, 524, d) +# define BOOST_PP_REPEAT_3_526(m, d) BOOST_PP_REPEAT_3_525(m, d) m(4, 525, d) +# define BOOST_PP_REPEAT_3_527(m, d) BOOST_PP_REPEAT_3_526(m, d) m(4, 526, d) +# define BOOST_PP_REPEAT_3_528(m, d) BOOST_PP_REPEAT_3_527(m, d) m(4, 527, d) +# define BOOST_PP_REPEAT_3_529(m, d) BOOST_PP_REPEAT_3_528(m, d) m(4, 528, d) +# define BOOST_PP_REPEAT_3_530(m, d) BOOST_PP_REPEAT_3_529(m, d) m(4, 529, d) +# define BOOST_PP_REPEAT_3_531(m, d) BOOST_PP_REPEAT_3_530(m, d) m(4, 530, d) +# define BOOST_PP_REPEAT_3_532(m, d) BOOST_PP_REPEAT_3_531(m, d) m(4, 531, d) +# define BOOST_PP_REPEAT_3_533(m, d) BOOST_PP_REPEAT_3_532(m, d) m(4, 532, d) +# define BOOST_PP_REPEAT_3_534(m, d) BOOST_PP_REPEAT_3_533(m, d) m(4, 533, d) +# define BOOST_PP_REPEAT_3_535(m, d) BOOST_PP_REPEAT_3_534(m, d) m(4, 534, d) +# define BOOST_PP_REPEAT_3_536(m, d) BOOST_PP_REPEAT_3_535(m, d) m(4, 535, d) +# define BOOST_PP_REPEAT_3_537(m, d) BOOST_PP_REPEAT_3_536(m, d) m(4, 536, d) +# define BOOST_PP_REPEAT_3_538(m, d) BOOST_PP_REPEAT_3_537(m, d) m(4, 537, d) +# define BOOST_PP_REPEAT_3_539(m, d) BOOST_PP_REPEAT_3_538(m, d) m(4, 538, d) +# define BOOST_PP_REPEAT_3_540(m, d) BOOST_PP_REPEAT_3_539(m, d) m(4, 539, d) +# define BOOST_PP_REPEAT_3_541(m, d) BOOST_PP_REPEAT_3_540(m, d) m(4, 540, d) +# define BOOST_PP_REPEAT_3_542(m, d) BOOST_PP_REPEAT_3_541(m, d) m(4, 541, d) +# define BOOST_PP_REPEAT_3_543(m, d) BOOST_PP_REPEAT_3_542(m, d) m(4, 542, d) +# define BOOST_PP_REPEAT_3_544(m, d) BOOST_PP_REPEAT_3_543(m, d) m(4, 543, d) +# define BOOST_PP_REPEAT_3_545(m, d) BOOST_PP_REPEAT_3_544(m, d) m(4, 544, d) +# define BOOST_PP_REPEAT_3_546(m, d) BOOST_PP_REPEAT_3_545(m, d) m(4, 545, d) +# define BOOST_PP_REPEAT_3_547(m, d) BOOST_PP_REPEAT_3_546(m, d) m(4, 546, d) +# define BOOST_PP_REPEAT_3_548(m, d) BOOST_PP_REPEAT_3_547(m, d) m(4, 547, d) +# define BOOST_PP_REPEAT_3_549(m, d) BOOST_PP_REPEAT_3_548(m, d) m(4, 548, d) +# define BOOST_PP_REPEAT_3_550(m, d) BOOST_PP_REPEAT_3_549(m, d) m(4, 549, d) +# define BOOST_PP_REPEAT_3_551(m, d) BOOST_PP_REPEAT_3_550(m, d) m(4, 550, d) +# define BOOST_PP_REPEAT_3_552(m, d) BOOST_PP_REPEAT_3_551(m, d) m(4, 551, d) +# define BOOST_PP_REPEAT_3_553(m, d) BOOST_PP_REPEAT_3_552(m, d) m(4, 552, d) +# define BOOST_PP_REPEAT_3_554(m, d) BOOST_PP_REPEAT_3_553(m, d) m(4, 553, d) +# define BOOST_PP_REPEAT_3_555(m, d) BOOST_PP_REPEAT_3_554(m, d) m(4, 554, d) +# define BOOST_PP_REPEAT_3_556(m, d) BOOST_PP_REPEAT_3_555(m, d) m(4, 555, d) +# define BOOST_PP_REPEAT_3_557(m, d) BOOST_PP_REPEAT_3_556(m, d) m(4, 556, d) +# define BOOST_PP_REPEAT_3_558(m, d) BOOST_PP_REPEAT_3_557(m, d) m(4, 557, d) +# define BOOST_PP_REPEAT_3_559(m, d) BOOST_PP_REPEAT_3_558(m, d) m(4, 558, d) +# define BOOST_PP_REPEAT_3_560(m, d) BOOST_PP_REPEAT_3_559(m, d) m(4, 559, d) +# define BOOST_PP_REPEAT_3_561(m, d) BOOST_PP_REPEAT_3_560(m, d) m(4, 560, d) +# define BOOST_PP_REPEAT_3_562(m, d) BOOST_PP_REPEAT_3_561(m, d) m(4, 561, d) +# define BOOST_PP_REPEAT_3_563(m, d) BOOST_PP_REPEAT_3_562(m, d) m(4, 562, d) +# define BOOST_PP_REPEAT_3_564(m, d) BOOST_PP_REPEAT_3_563(m, d) m(4, 563, d) +# define BOOST_PP_REPEAT_3_565(m, d) BOOST_PP_REPEAT_3_564(m, d) m(4, 564, d) +# define BOOST_PP_REPEAT_3_566(m, d) BOOST_PP_REPEAT_3_565(m, d) m(4, 565, d) +# define BOOST_PP_REPEAT_3_567(m, d) BOOST_PP_REPEAT_3_566(m, d) m(4, 566, d) +# define BOOST_PP_REPEAT_3_568(m, d) BOOST_PP_REPEAT_3_567(m, d) m(4, 567, d) +# define BOOST_PP_REPEAT_3_569(m, d) BOOST_PP_REPEAT_3_568(m, d) m(4, 568, d) +# define BOOST_PP_REPEAT_3_570(m, d) BOOST_PP_REPEAT_3_569(m, d) m(4, 569, d) +# define BOOST_PP_REPEAT_3_571(m, d) BOOST_PP_REPEAT_3_570(m, d) m(4, 570, d) +# define BOOST_PP_REPEAT_3_572(m, d) BOOST_PP_REPEAT_3_571(m, d) m(4, 571, d) +# define BOOST_PP_REPEAT_3_573(m, d) BOOST_PP_REPEAT_3_572(m, d) m(4, 572, d) +# define BOOST_PP_REPEAT_3_574(m, d) BOOST_PP_REPEAT_3_573(m, d) m(4, 573, d) +# define BOOST_PP_REPEAT_3_575(m, d) BOOST_PP_REPEAT_3_574(m, d) m(4, 574, d) +# define BOOST_PP_REPEAT_3_576(m, d) BOOST_PP_REPEAT_3_575(m, d) m(4, 575, d) +# define BOOST_PP_REPEAT_3_577(m, d) BOOST_PP_REPEAT_3_576(m, d) m(4, 576, d) +# define BOOST_PP_REPEAT_3_578(m, d) BOOST_PP_REPEAT_3_577(m, d) m(4, 577, d) +# define BOOST_PP_REPEAT_3_579(m, d) BOOST_PP_REPEAT_3_578(m, d) m(4, 578, d) +# define BOOST_PP_REPEAT_3_580(m, d) BOOST_PP_REPEAT_3_579(m, d) m(4, 579, d) +# define BOOST_PP_REPEAT_3_581(m, d) BOOST_PP_REPEAT_3_580(m, d) m(4, 580, d) +# define BOOST_PP_REPEAT_3_582(m, d) BOOST_PP_REPEAT_3_581(m, d) m(4, 581, d) +# define BOOST_PP_REPEAT_3_583(m, d) BOOST_PP_REPEAT_3_582(m, d) m(4, 582, d) +# define BOOST_PP_REPEAT_3_584(m, d) BOOST_PP_REPEAT_3_583(m, d) m(4, 583, d) +# define BOOST_PP_REPEAT_3_585(m, d) BOOST_PP_REPEAT_3_584(m, d) m(4, 584, d) +# define BOOST_PP_REPEAT_3_586(m, d) BOOST_PP_REPEAT_3_585(m, d) m(4, 585, d) +# define BOOST_PP_REPEAT_3_587(m, d) BOOST_PP_REPEAT_3_586(m, d) m(4, 586, d) +# define BOOST_PP_REPEAT_3_588(m, d) BOOST_PP_REPEAT_3_587(m, d) m(4, 587, d) +# define BOOST_PP_REPEAT_3_589(m, d) BOOST_PP_REPEAT_3_588(m, d) m(4, 588, d) +# define BOOST_PP_REPEAT_3_590(m, d) BOOST_PP_REPEAT_3_589(m, d) m(4, 589, d) +# define BOOST_PP_REPEAT_3_591(m, d) BOOST_PP_REPEAT_3_590(m, d) m(4, 590, d) +# define BOOST_PP_REPEAT_3_592(m, d) BOOST_PP_REPEAT_3_591(m, d) m(4, 591, d) +# define BOOST_PP_REPEAT_3_593(m, d) BOOST_PP_REPEAT_3_592(m, d) m(4, 592, d) +# define BOOST_PP_REPEAT_3_594(m, d) BOOST_PP_REPEAT_3_593(m, d) m(4, 593, d) +# define BOOST_PP_REPEAT_3_595(m, d) BOOST_PP_REPEAT_3_594(m, d) m(4, 594, d) +# define BOOST_PP_REPEAT_3_596(m, d) BOOST_PP_REPEAT_3_595(m, d) m(4, 595, d) +# define BOOST_PP_REPEAT_3_597(m, d) BOOST_PP_REPEAT_3_596(m, d) m(4, 596, d) +# define BOOST_PP_REPEAT_3_598(m, d) BOOST_PP_REPEAT_3_597(m, d) m(4, 597, d) +# define BOOST_PP_REPEAT_3_599(m, d) BOOST_PP_REPEAT_3_598(m, d) m(4, 598, d) +# define BOOST_PP_REPEAT_3_600(m, d) BOOST_PP_REPEAT_3_599(m, d) m(4, 599, d) +# define BOOST_PP_REPEAT_3_601(m, d) BOOST_PP_REPEAT_3_600(m, d) m(4, 600, d) +# define BOOST_PP_REPEAT_3_602(m, d) BOOST_PP_REPEAT_3_601(m, d) m(4, 601, d) +# define BOOST_PP_REPEAT_3_603(m, d) BOOST_PP_REPEAT_3_602(m, d) m(4, 602, d) +# define BOOST_PP_REPEAT_3_604(m, d) BOOST_PP_REPEAT_3_603(m, d) m(4, 603, d) +# define BOOST_PP_REPEAT_3_605(m, d) BOOST_PP_REPEAT_3_604(m, d) m(4, 604, d) +# define BOOST_PP_REPEAT_3_606(m, d) BOOST_PP_REPEAT_3_605(m, d) m(4, 605, d) +# define BOOST_PP_REPEAT_3_607(m, d) BOOST_PP_REPEAT_3_606(m, d) m(4, 606, d) +# define BOOST_PP_REPEAT_3_608(m, d) BOOST_PP_REPEAT_3_607(m, d) m(4, 607, d) +# define BOOST_PP_REPEAT_3_609(m, d) BOOST_PP_REPEAT_3_608(m, d) m(4, 608, d) +# define BOOST_PP_REPEAT_3_610(m, d) BOOST_PP_REPEAT_3_609(m, d) m(4, 609, d) +# define BOOST_PP_REPEAT_3_611(m, d) BOOST_PP_REPEAT_3_610(m, d) m(4, 610, d) +# define BOOST_PP_REPEAT_3_612(m, d) BOOST_PP_REPEAT_3_611(m, d) m(4, 611, d) +# define BOOST_PP_REPEAT_3_613(m, d) BOOST_PP_REPEAT_3_612(m, d) m(4, 612, d) +# define BOOST_PP_REPEAT_3_614(m, d) BOOST_PP_REPEAT_3_613(m, d) m(4, 613, d) +# define BOOST_PP_REPEAT_3_615(m, d) BOOST_PP_REPEAT_3_614(m, d) m(4, 614, d) +# define BOOST_PP_REPEAT_3_616(m, d) BOOST_PP_REPEAT_3_615(m, d) m(4, 615, d) +# define BOOST_PP_REPEAT_3_617(m, d) BOOST_PP_REPEAT_3_616(m, d) m(4, 616, d) +# define BOOST_PP_REPEAT_3_618(m, d) BOOST_PP_REPEAT_3_617(m, d) m(4, 617, d) +# define BOOST_PP_REPEAT_3_619(m, d) BOOST_PP_REPEAT_3_618(m, d) m(4, 618, d) +# define BOOST_PP_REPEAT_3_620(m, d) BOOST_PP_REPEAT_3_619(m, d) m(4, 619, d) +# define BOOST_PP_REPEAT_3_621(m, d) BOOST_PP_REPEAT_3_620(m, d) m(4, 620, d) +# define BOOST_PP_REPEAT_3_622(m, d) BOOST_PP_REPEAT_3_621(m, d) m(4, 621, d) +# define BOOST_PP_REPEAT_3_623(m, d) BOOST_PP_REPEAT_3_622(m, d) m(4, 622, d) +# define BOOST_PP_REPEAT_3_624(m, d) BOOST_PP_REPEAT_3_623(m, d) m(4, 623, d) +# define BOOST_PP_REPEAT_3_625(m, d) BOOST_PP_REPEAT_3_624(m, d) m(4, 624, d) +# define BOOST_PP_REPEAT_3_626(m, d) BOOST_PP_REPEAT_3_625(m, d) m(4, 625, d) +# define BOOST_PP_REPEAT_3_627(m, d) BOOST_PP_REPEAT_3_626(m, d) m(4, 626, d) +# define BOOST_PP_REPEAT_3_628(m, d) BOOST_PP_REPEAT_3_627(m, d) m(4, 627, d) +# define BOOST_PP_REPEAT_3_629(m, d) BOOST_PP_REPEAT_3_628(m, d) m(4, 628, d) +# define BOOST_PP_REPEAT_3_630(m, d) BOOST_PP_REPEAT_3_629(m, d) m(4, 629, d) +# define BOOST_PP_REPEAT_3_631(m, d) BOOST_PP_REPEAT_3_630(m, d) m(4, 630, d) +# define BOOST_PP_REPEAT_3_632(m, d) BOOST_PP_REPEAT_3_631(m, d) m(4, 631, d) +# define BOOST_PP_REPEAT_3_633(m, d) BOOST_PP_REPEAT_3_632(m, d) m(4, 632, d) +# define BOOST_PP_REPEAT_3_634(m, d) BOOST_PP_REPEAT_3_633(m, d) m(4, 633, d) +# define BOOST_PP_REPEAT_3_635(m, d) BOOST_PP_REPEAT_3_634(m, d) m(4, 634, d) +# define BOOST_PP_REPEAT_3_636(m, d) BOOST_PP_REPEAT_3_635(m, d) m(4, 635, d) +# define BOOST_PP_REPEAT_3_637(m, d) BOOST_PP_REPEAT_3_636(m, d) m(4, 636, d) +# define BOOST_PP_REPEAT_3_638(m, d) BOOST_PP_REPEAT_3_637(m, d) m(4, 637, d) +# define BOOST_PP_REPEAT_3_639(m, d) BOOST_PP_REPEAT_3_638(m, d) m(4, 638, d) +# define BOOST_PP_REPEAT_3_640(m, d) BOOST_PP_REPEAT_3_639(m, d) m(4, 639, d) +# define BOOST_PP_REPEAT_3_641(m, d) BOOST_PP_REPEAT_3_640(m, d) m(4, 640, d) +# define BOOST_PP_REPEAT_3_642(m, d) BOOST_PP_REPEAT_3_641(m, d) m(4, 641, d) +# define BOOST_PP_REPEAT_3_643(m, d) BOOST_PP_REPEAT_3_642(m, d) m(4, 642, d) +# define BOOST_PP_REPEAT_3_644(m, d) BOOST_PP_REPEAT_3_643(m, d) m(4, 643, d) +# define BOOST_PP_REPEAT_3_645(m, d) BOOST_PP_REPEAT_3_644(m, d) m(4, 644, d) +# define BOOST_PP_REPEAT_3_646(m, d) BOOST_PP_REPEAT_3_645(m, d) m(4, 645, d) +# define BOOST_PP_REPEAT_3_647(m, d) BOOST_PP_REPEAT_3_646(m, d) m(4, 646, d) +# define BOOST_PP_REPEAT_3_648(m, d) BOOST_PP_REPEAT_3_647(m, d) m(4, 647, d) +# define BOOST_PP_REPEAT_3_649(m, d) BOOST_PP_REPEAT_3_648(m, d) m(4, 648, d) +# define BOOST_PP_REPEAT_3_650(m, d) BOOST_PP_REPEAT_3_649(m, d) m(4, 649, d) +# define BOOST_PP_REPEAT_3_651(m, d) BOOST_PP_REPEAT_3_650(m, d) m(4, 650, d) +# define BOOST_PP_REPEAT_3_652(m, d) BOOST_PP_REPEAT_3_651(m, d) m(4, 651, d) +# define BOOST_PP_REPEAT_3_653(m, d) BOOST_PP_REPEAT_3_652(m, d) m(4, 652, d) +# define BOOST_PP_REPEAT_3_654(m, d) BOOST_PP_REPEAT_3_653(m, d) m(4, 653, d) +# define BOOST_PP_REPEAT_3_655(m, d) BOOST_PP_REPEAT_3_654(m, d) m(4, 654, d) +# define BOOST_PP_REPEAT_3_656(m, d) BOOST_PP_REPEAT_3_655(m, d) m(4, 655, d) +# define BOOST_PP_REPEAT_3_657(m, d) BOOST_PP_REPEAT_3_656(m, d) m(4, 656, d) +# define BOOST_PP_REPEAT_3_658(m, d) BOOST_PP_REPEAT_3_657(m, d) m(4, 657, d) +# define BOOST_PP_REPEAT_3_659(m, d) BOOST_PP_REPEAT_3_658(m, d) m(4, 658, d) +# define BOOST_PP_REPEAT_3_660(m, d) BOOST_PP_REPEAT_3_659(m, d) m(4, 659, d) +# define BOOST_PP_REPEAT_3_661(m, d) BOOST_PP_REPEAT_3_660(m, d) m(4, 660, d) +# define BOOST_PP_REPEAT_3_662(m, d) BOOST_PP_REPEAT_3_661(m, d) m(4, 661, d) +# define BOOST_PP_REPEAT_3_663(m, d) BOOST_PP_REPEAT_3_662(m, d) m(4, 662, d) +# define BOOST_PP_REPEAT_3_664(m, d) BOOST_PP_REPEAT_3_663(m, d) m(4, 663, d) +# define BOOST_PP_REPEAT_3_665(m, d) BOOST_PP_REPEAT_3_664(m, d) m(4, 664, d) +# define BOOST_PP_REPEAT_3_666(m, d) BOOST_PP_REPEAT_3_665(m, d) m(4, 665, d) +# define BOOST_PP_REPEAT_3_667(m, d) BOOST_PP_REPEAT_3_666(m, d) m(4, 666, d) +# define BOOST_PP_REPEAT_3_668(m, d) BOOST_PP_REPEAT_3_667(m, d) m(4, 667, d) +# define BOOST_PP_REPEAT_3_669(m, d) BOOST_PP_REPEAT_3_668(m, d) m(4, 668, d) +# define BOOST_PP_REPEAT_3_670(m, d) BOOST_PP_REPEAT_3_669(m, d) m(4, 669, d) +# define BOOST_PP_REPEAT_3_671(m, d) BOOST_PP_REPEAT_3_670(m, d) m(4, 670, d) +# define BOOST_PP_REPEAT_3_672(m, d) BOOST_PP_REPEAT_3_671(m, d) m(4, 671, d) +# define BOOST_PP_REPEAT_3_673(m, d) BOOST_PP_REPEAT_3_672(m, d) m(4, 672, d) +# define BOOST_PP_REPEAT_3_674(m, d) BOOST_PP_REPEAT_3_673(m, d) m(4, 673, d) +# define BOOST_PP_REPEAT_3_675(m, d) BOOST_PP_REPEAT_3_674(m, d) m(4, 674, d) +# define BOOST_PP_REPEAT_3_676(m, d) BOOST_PP_REPEAT_3_675(m, d) m(4, 675, d) +# define BOOST_PP_REPEAT_3_677(m, d) BOOST_PP_REPEAT_3_676(m, d) m(4, 676, d) +# define BOOST_PP_REPEAT_3_678(m, d) BOOST_PP_REPEAT_3_677(m, d) m(4, 677, d) +# define BOOST_PP_REPEAT_3_679(m, d) BOOST_PP_REPEAT_3_678(m, d) m(4, 678, d) +# define BOOST_PP_REPEAT_3_680(m, d) BOOST_PP_REPEAT_3_679(m, d) m(4, 679, d) +# define BOOST_PP_REPEAT_3_681(m, d) BOOST_PP_REPEAT_3_680(m, d) m(4, 680, d) +# define BOOST_PP_REPEAT_3_682(m, d) BOOST_PP_REPEAT_3_681(m, d) m(4, 681, d) +# define BOOST_PP_REPEAT_3_683(m, d) BOOST_PP_REPEAT_3_682(m, d) m(4, 682, d) +# define BOOST_PP_REPEAT_3_684(m, d) BOOST_PP_REPEAT_3_683(m, d) m(4, 683, d) +# define BOOST_PP_REPEAT_3_685(m, d) BOOST_PP_REPEAT_3_684(m, d) m(4, 684, d) +# define BOOST_PP_REPEAT_3_686(m, d) BOOST_PP_REPEAT_3_685(m, d) m(4, 685, d) +# define BOOST_PP_REPEAT_3_687(m, d) BOOST_PP_REPEAT_3_686(m, d) m(4, 686, d) +# define BOOST_PP_REPEAT_3_688(m, d) BOOST_PP_REPEAT_3_687(m, d) m(4, 687, d) +# define BOOST_PP_REPEAT_3_689(m, d) BOOST_PP_REPEAT_3_688(m, d) m(4, 688, d) +# define BOOST_PP_REPEAT_3_690(m, d) BOOST_PP_REPEAT_3_689(m, d) m(4, 689, d) +# define BOOST_PP_REPEAT_3_691(m, d) BOOST_PP_REPEAT_3_690(m, d) m(4, 690, d) +# define BOOST_PP_REPEAT_3_692(m, d) BOOST_PP_REPEAT_3_691(m, d) m(4, 691, d) +# define BOOST_PP_REPEAT_3_693(m, d) BOOST_PP_REPEAT_3_692(m, d) m(4, 692, d) +# define BOOST_PP_REPEAT_3_694(m, d) BOOST_PP_REPEAT_3_693(m, d) m(4, 693, d) +# define BOOST_PP_REPEAT_3_695(m, d) BOOST_PP_REPEAT_3_694(m, d) m(4, 694, d) +# define BOOST_PP_REPEAT_3_696(m, d) BOOST_PP_REPEAT_3_695(m, d) m(4, 695, d) +# define BOOST_PP_REPEAT_3_697(m, d) BOOST_PP_REPEAT_3_696(m, d) m(4, 696, d) +# define BOOST_PP_REPEAT_3_698(m, d) BOOST_PP_REPEAT_3_697(m, d) m(4, 697, d) +# define BOOST_PP_REPEAT_3_699(m, d) BOOST_PP_REPEAT_3_698(m, d) m(4, 698, d) +# define BOOST_PP_REPEAT_3_700(m, d) BOOST_PP_REPEAT_3_699(m, d) m(4, 699, d) +# define BOOST_PP_REPEAT_3_701(m, d) BOOST_PP_REPEAT_3_700(m, d) m(4, 700, d) +# define BOOST_PP_REPEAT_3_702(m, d) BOOST_PP_REPEAT_3_701(m, d) m(4, 701, d) +# define BOOST_PP_REPEAT_3_703(m, d) BOOST_PP_REPEAT_3_702(m, d) m(4, 702, d) +# define BOOST_PP_REPEAT_3_704(m, d) BOOST_PP_REPEAT_3_703(m, d) m(4, 703, d) +# define BOOST_PP_REPEAT_3_705(m, d) BOOST_PP_REPEAT_3_704(m, d) m(4, 704, d) +# define BOOST_PP_REPEAT_3_706(m, d) BOOST_PP_REPEAT_3_705(m, d) m(4, 705, d) +# define BOOST_PP_REPEAT_3_707(m, d) BOOST_PP_REPEAT_3_706(m, d) m(4, 706, d) +# define BOOST_PP_REPEAT_3_708(m, d) BOOST_PP_REPEAT_3_707(m, d) m(4, 707, d) +# define BOOST_PP_REPEAT_3_709(m, d) BOOST_PP_REPEAT_3_708(m, d) m(4, 708, d) +# define BOOST_PP_REPEAT_3_710(m, d) BOOST_PP_REPEAT_3_709(m, d) m(4, 709, d) +# define BOOST_PP_REPEAT_3_711(m, d) BOOST_PP_REPEAT_3_710(m, d) m(4, 710, d) +# define BOOST_PP_REPEAT_3_712(m, d) BOOST_PP_REPEAT_3_711(m, d) m(4, 711, d) +# define BOOST_PP_REPEAT_3_713(m, d) BOOST_PP_REPEAT_3_712(m, d) m(4, 712, d) +# define BOOST_PP_REPEAT_3_714(m, d) BOOST_PP_REPEAT_3_713(m, d) m(4, 713, d) +# define BOOST_PP_REPEAT_3_715(m, d) BOOST_PP_REPEAT_3_714(m, d) m(4, 714, d) +# define BOOST_PP_REPEAT_3_716(m, d) BOOST_PP_REPEAT_3_715(m, d) m(4, 715, d) +# define BOOST_PP_REPEAT_3_717(m, d) BOOST_PP_REPEAT_3_716(m, d) m(4, 716, d) +# define BOOST_PP_REPEAT_3_718(m, d) BOOST_PP_REPEAT_3_717(m, d) m(4, 717, d) +# define BOOST_PP_REPEAT_3_719(m, d) BOOST_PP_REPEAT_3_718(m, d) m(4, 718, d) +# define BOOST_PP_REPEAT_3_720(m, d) BOOST_PP_REPEAT_3_719(m, d) m(4, 719, d) +# define BOOST_PP_REPEAT_3_721(m, d) BOOST_PP_REPEAT_3_720(m, d) m(4, 720, d) +# define BOOST_PP_REPEAT_3_722(m, d) BOOST_PP_REPEAT_3_721(m, d) m(4, 721, d) +# define BOOST_PP_REPEAT_3_723(m, d) BOOST_PP_REPEAT_3_722(m, d) m(4, 722, d) +# define BOOST_PP_REPEAT_3_724(m, d) BOOST_PP_REPEAT_3_723(m, d) m(4, 723, d) +# define BOOST_PP_REPEAT_3_725(m, d) BOOST_PP_REPEAT_3_724(m, d) m(4, 724, d) +# define BOOST_PP_REPEAT_3_726(m, d) BOOST_PP_REPEAT_3_725(m, d) m(4, 725, d) +# define BOOST_PP_REPEAT_3_727(m, d) BOOST_PP_REPEAT_3_726(m, d) m(4, 726, d) +# define BOOST_PP_REPEAT_3_728(m, d) BOOST_PP_REPEAT_3_727(m, d) m(4, 727, d) +# define BOOST_PP_REPEAT_3_729(m, d) BOOST_PP_REPEAT_3_728(m, d) m(4, 728, d) +# define BOOST_PP_REPEAT_3_730(m, d) BOOST_PP_REPEAT_3_729(m, d) m(4, 729, d) +# define BOOST_PP_REPEAT_3_731(m, d) BOOST_PP_REPEAT_3_730(m, d) m(4, 730, d) +# define BOOST_PP_REPEAT_3_732(m, d) BOOST_PP_REPEAT_3_731(m, d) m(4, 731, d) +# define BOOST_PP_REPEAT_3_733(m, d) BOOST_PP_REPEAT_3_732(m, d) m(4, 732, d) +# define BOOST_PP_REPEAT_3_734(m, d) BOOST_PP_REPEAT_3_733(m, d) m(4, 733, d) +# define BOOST_PP_REPEAT_3_735(m, d) BOOST_PP_REPEAT_3_734(m, d) m(4, 734, d) +# define BOOST_PP_REPEAT_3_736(m, d) BOOST_PP_REPEAT_3_735(m, d) m(4, 735, d) +# define BOOST_PP_REPEAT_3_737(m, d) BOOST_PP_REPEAT_3_736(m, d) m(4, 736, d) +# define BOOST_PP_REPEAT_3_738(m, d) BOOST_PP_REPEAT_3_737(m, d) m(4, 737, d) +# define BOOST_PP_REPEAT_3_739(m, d) BOOST_PP_REPEAT_3_738(m, d) m(4, 738, d) +# define BOOST_PP_REPEAT_3_740(m, d) BOOST_PP_REPEAT_3_739(m, d) m(4, 739, d) +# define BOOST_PP_REPEAT_3_741(m, d) BOOST_PP_REPEAT_3_740(m, d) m(4, 740, d) +# define BOOST_PP_REPEAT_3_742(m, d) BOOST_PP_REPEAT_3_741(m, d) m(4, 741, d) +# define BOOST_PP_REPEAT_3_743(m, d) BOOST_PP_REPEAT_3_742(m, d) m(4, 742, d) +# define BOOST_PP_REPEAT_3_744(m, d) BOOST_PP_REPEAT_3_743(m, d) m(4, 743, d) +# define BOOST_PP_REPEAT_3_745(m, d) BOOST_PP_REPEAT_3_744(m, d) m(4, 744, d) +# define BOOST_PP_REPEAT_3_746(m, d) BOOST_PP_REPEAT_3_745(m, d) m(4, 745, d) +# define BOOST_PP_REPEAT_3_747(m, d) BOOST_PP_REPEAT_3_746(m, d) m(4, 746, d) +# define BOOST_PP_REPEAT_3_748(m, d) BOOST_PP_REPEAT_3_747(m, d) m(4, 747, d) +# define BOOST_PP_REPEAT_3_749(m, d) BOOST_PP_REPEAT_3_748(m, d) m(4, 748, d) +# define BOOST_PP_REPEAT_3_750(m, d) BOOST_PP_REPEAT_3_749(m, d) m(4, 749, d) +# define BOOST_PP_REPEAT_3_751(m, d) BOOST_PP_REPEAT_3_750(m, d) m(4, 750, d) +# define BOOST_PP_REPEAT_3_752(m, d) BOOST_PP_REPEAT_3_751(m, d) m(4, 751, d) +# define BOOST_PP_REPEAT_3_753(m, d) BOOST_PP_REPEAT_3_752(m, d) m(4, 752, d) +# define BOOST_PP_REPEAT_3_754(m, d) BOOST_PP_REPEAT_3_753(m, d) m(4, 753, d) +# define BOOST_PP_REPEAT_3_755(m, d) BOOST_PP_REPEAT_3_754(m, d) m(4, 754, d) +# define BOOST_PP_REPEAT_3_756(m, d) BOOST_PP_REPEAT_3_755(m, d) m(4, 755, d) +# define BOOST_PP_REPEAT_3_757(m, d) BOOST_PP_REPEAT_3_756(m, d) m(4, 756, d) +# define BOOST_PP_REPEAT_3_758(m, d) BOOST_PP_REPEAT_3_757(m, d) m(4, 757, d) +# define BOOST_PP_REPEAT_3_759(m, d) BOOST_PP_REPEAT_3_758(m, d) m(4, 758, d) +# define BOOST_PP_REPEAT_3_760(m, d) BOOST_PP_REPEAT_3_759(m, d) m(4, 759, d) +# define BOOST_PP_REPEAT_3_761(m, d) BOOST_PP_REPEAT_3_760(m, d) m(4, 760, d) +# define BOOST_PP_REPEAT_3_762(m, d) BOOST_PP_REPEAT_3_761(m, d) m(4, 761, d) +# define BOOST_PP_REPEAT_3_763(m, d) BOOST_PP_REPEAT_3_762(m, d) m(4, 762, d) +# define BOOST_PP_REPEAT_3_764(m, d) BOOST_PP_REPEAT_3_763(m, d) m(4, 763, d) +# define BOOST_PP_REPEAT_3_765(m, d) BOOST_PP_REPEAT_3_764(m, d) m(4, 764, d) +# define BOOST_PP_REPEAT_3_766(m, d) BOOST_PP_REPEAT_3_765(m, d) m(4, 765, d) +# define BOOST_PP_REPEAT_3_767(m, d) BOOST_PP_REPEAT_3_766(m, d) m(4, 766, d) +# define BOOST_PP_REPEAT_3_768(m, d) BOOST_PP_REPEAT_3_767(m, d) m(4, 767, d) +# define BOOST_PP_REPEAT_3_769(m, d) BOOST_PP_REPEAT_3_768(m, d) m(4, 768, d) +# define BOOST_PP_REPEAT_3_770(m, d) BOOST_PP_REPEAT_3_769(m, d) m(4, 769, d) +# define BOOST_PP_REPEAT_3_771(m, d) BOOST_PP_REPEAT_3_770(m, d) m(4, 770, d) +# define BOOST_PP_REPEAT_3_772(m, d) BOOST_PP_REPEAT_3_771(m, d) m(4, 771, d) +# define BOOST_PP_REPEAT_3_773(m, d) BOOST_PP_REPEAT_3_772(m, d) m(4, 772, d) +# define BOOST_PP_REPEAT_3_774(m, d) BOOST_PP_REPEAT_3_773(m, d) m(4, 773, d) +# define BOOST_PP_REPEAT_3_775(m, d) BOOST_PP_REPEAT_3_774(m, d) m(4, 774, d) +# define BOOST_PP_REPEAT_3_776(m, d) BOOST_PP_REPEAT_3_775(m, d) m(4, 775, d) +# define BOOST_PP_REPEAT_3_777(m, d) BOOST_PP_REPEAT_3_776(m, d) m(4, 776, d) +# define BOOST_PP_REPEAT_3_778(m, d) BOOST_PP_REPEAT_3_777(m, d) m(4, 777, d) +# define BOOST_PP_REPEAT_3_779(m, d) BOOST_PP_REPEAT_3_778(m, d) m(4, 778, d) +# define BOOST_PP_REPEAT_3_780(m, d) BOOST_PP_REPEAT_3_779(m, d) m(4, 779, d) +# define BOOST_PP_REPEAT_3_781(m, d) BOOST_PP_REPEAT_3_780(m, d) m(4, 780, d) +# define BOOST_PP_REPEAT_3_782(m, d) BOOST_PP_REPEAT_3_781(m, d) m(4, 781, d) +# define BOOST_PP_REPEAT_3_783(m, d) BOOST_PP_REPEAT_3_782(m, d) m(4, 782, d) +# define BOOST_PP_REPEAT_3_784(m, d) BOOST_PP_REPEAT_3_783(m, d) m(4, 783, d) +# define BOOST_PP_REPEAT_3_785(m, d) BOOST_PP_REPEAT_3_784(m, d) m(4, 784, d) +# define BOOST_PP_REPEAT_3_786(m, d) BOOST_PP_REPEAT_3_785(m, d) m(4, 785, d) +# define BOOST_PP_REPEAT_3_787(m, d) BOOST_PP_REPEAT_3_786(m, d) m(4, 786, d) +# define BOOST_PP_REPEAT_3_788(m, d) BOOST_PP_REPEAT_3_787(m, d) m(4, 787, d) +# define BOOST_PP_REPEAT_3_789(m, d) BOOST_PP_REPEAT_3_788(m, d) m(4, 788, d) +# define BOOST_PP_REPEAT_3_790(m, d) BOOST_PP_REPEAT_3_789(m, d) m(4, 789, d) +# define BOOST_PP_REPEAT_3_791(m, d) BOOST_PP_REPEAT_3_790(m, d) m(4, 790, d) +# define BOOST_PP_REPEAT_3_792(m, d) BOOST_PP_REPEAT_3_791(m, d) m(4, 791, d) +# define BOOST_PP_REPEAT_3_793(m, d) BOOST_PP_REPEAT_3_792(m, d) m(4, 792, d) +# define BOOST_PP_REPEAT_3_794(m, d) BOOST_PP_REPEAT_3_793(m, d) m(4, 793, d) +# define BOOST_PP_REPEAT_3_795(m, d) BOOST_PP_REPEAT_3_794(m, d) m(4, 794, d) +# define BOOST_PP_REPEAT_3_796(m, d) BOOST_PP_REPEAT_3_795(m, d) m(4, 795, d) +# define BOOST_PP_REPEAT_3_797(m, d) BOOST_PP_REPEAT_3_796(m, d) m(4, 796, d) +# define BOOST_PP_REPEAT_3_798(m, d) BOOST_PP_REPEAT_3_797(m, d) m(4, 797, d) +# define BOOST_PP_REPEAT_3_799(m, d) BOOST_PP_REPEAT_3_798(m, d) m(4, 798, d) +# define BOOST_PP_REPEAT_3_800(m, d) BOOST_PP_REPEAT_3_799(m, d) m(4, 799, d) +# define BOOST_PP_REPEAT_3_801(m, d) BOOST_PP_REPEAT_3_800(m, d) m(4, 800, d) +# define BOOST_PP_REPEAT_3_802(m, d) BOOST_PP_REPEAT_3_801(m, d) m(4, 801, d) +# define BOOST_PP_REPEAT_3_803(m, d) BOOST_PP_REPEAT_3_802(m, d) m(4, 802, d) +# define BOOST_PP_REPEAT_3_804(m, d) BOOST_PP_REPEAT_3_803(m, d) m(4, 803, d) +# define BOOST_PP_REPEAT_3_805(m, d) BOOST_PP_REPEAT_3_804(m, d) m(4, 804, d) +# define BOOST_PP_REPEAT_3_806(m, d) BOOST_PP_REPEAT_3_805(m, d) m(4, 805, d) +# define BOOST_PP_REPEAT_3_807(m, d) BOOST_PP_REPEAT_3_806(m, d) m(4, 806, d) +# define BOOST_PP_REPEAT_3_808(m, d) BOOST_PP_REPEAT_3_807(m, d) m(4, 807, d) +# define BOOST_PP_REPEAT_3_809(m, d) BOOST_PP_REPEAT_3_808(m, d) m(4, 808, d) +# define BOOST_PP_REPEAT_3_810(m, d) BOOST_PP_REPEAT_3_809(m, d) m(4, 809, d) +# define BOOST_PP_REPEAT_3_811(m, d) BOOST_PP_REPEAT_3_810(m, d) m(4, 810, d) +# define BOOST_PP_REPEAT_3_812(m, d) BOOST_PP_REPEAT_3_811(m, d) m(4, 811, d) +# define BOOST_PP_REPEAT_3_813(m, d) BOOST_PP_REPEAT_3_812(m, d) m(4, 812, d) +# define BOOST_PP_REPEAT_3_814(m, d) BOOST_PP_REPEAT_3_813(m, d) m(4, 813, d) +# define BOOST_PP_REPEAT_3_815(m, d) BOOST_PP_REPEAT_3_814(m, d) m(4, 814, d) +# define BOOST_PP_REPEAT_3_816(m, d) BOOST_PP_REPEAT_3_815(m, d) m(4, 815, d) +# define BOOST_PP_REPEAT_3_817(m, d) BOOST_PP_REPEAT_3_816(m, d) m(4, 816, d) +# define BOOST_PP_REPEAT_3_818(m, d) BOOST_PP_REPEAT_3_817(m, d) m(4, 817, d) +# define BOOST_PP_REPEAT_3_819(m, d) BOOST_PP_REPEAT_3_818(m, d) m(4, 818, d) +# define BOOST_PP_REPEAT_3_820(m, d) BOOST_PP_REPEAT_3_819(m, d) m(4, 819, d) +# define BOOST_PP_REPEAT_3_821(m, d) BOOST_PP_REPEAT_3_820(m, d) m(4, 820, d) +# define BOOST_PP_REPEAT_3_822(m, d) BOOST_PP_REPEAT_3_821(m, d) m(4, 821, d) +# define BOOST_PP_REPEAT_3_823(m, d) BOOST_PP_REPEAT_3_822(m, d) m(4, 822, d) +# define BOOST_PP_REPEAT_3_824(m, d) BOOST_PP_REPEAT_3_823(m, d) m(4, 823, d) +# define BOOST_PP_REPEAT_3_825(m, d) BOOST_PP_REPEAT_3_824(m, d) m(4, 824, d) +# define BOOST_PP_REPEAT_3_826(m, d) BOOST_PP_REPEAT_3_825(m, d) m(4, 825, d) +# define BOOST_PP_REPEAT_3_827(m, d) BOOST_PP_REPEAT_3_826(m, d) m(4, 826, d) +# define BOOST_PP_REPEAT_3_828(m, d) BOOST_PP_REPEAT_3_827(m, d) m(4, 827, d) +# define BOOST_PP_REPEAT_3_829(m, d) BOOST_PP_REPEAT_3_828(m, d) m(4, 828, d) +# define BOOST_PP_REPEAT_3_830(m, d) BOOST_PP_REPEAT_3_829(m, d) m(4, 829, d) +# define BOOST_PP_REPEAT_3_831(m, d) BOOST_PP_REPEAT_3_830(m, d) m(4, 830, d) +# define BOOST_PP_REPEAT_3_832(m, d) BOOST_PP_REPEAT_3_831(m, d) m(4, 831, d) +# define BOOST_PP_REPEAT_3_833(m, d) BOOST_PP_REPEAT_3_832(m, d) m(4, 832, d) +# define BOOST_PP_REPEAT_3_834(m, d) BOOST_PP_REPEAT_3_833(m, d) m(4, 833, d) +# define BOOST_PP_REPEAT_3_835(m, d) BOOST_PP_REPEAT_3_834(m, d) m(4, 834, d) +# define BOOST_PP_REPEAT_3_836(m, d) BOOST_PP_REPEAT_3_835(m, d) m(4, 835, d) +# define BOOST_PP_REPEAT_3_837(m, d) BOOST_PP_REPEAT_3_836(m, d) m(4, 836, d) +# define BOOST_PP_REPEAT_3_838(m, d) BOOST_PP_REPEAT_3_837(m, d) m(4, 837, d) +# define BOOST_PP_REPEAT_3_839(m, d) BOOST_PP_REPEAT_3_838(m, d) m(4, 838, d) +# define BOOST_PP_REPEAT_3_840(m, d) BOOST_PP_REPEAT_3_839(m, d) m(4, 839, d) +# define BOOST_PP_REPEAT_3_841(m, d) BOOST_PP_REPEAT_3_840(m, d) m(4, 840, d) +# define BOOST_PP_REPEAT_3_842(m, d) BOOST_PP_REPEAT_3_841(m, d) m(4, 841, d) +# define BOOST_PP_REPEAT_3_843(m, d) BOOST_PP_REPEAT_3_842(m, d) m(4, 842, d) +# define BOOST_PP_REPEAT_3_844(m, d) BOOST_PP_REPEAT_3_843(m, d) m(4, 843, d) +# define BOOST_PP_REPEAT_3_845(m, d) BOOST_PP_REPEAT_3_844(m, d) m(4, 844, d) +# define BOOST_PP_REPEAT_3_846(m, d) BOOST_PP_REPEAT_3_845(m, d) m(4, 845, d) +# define BOOST_PP_REPEAT_3_847(m, d) BOOST_PP_REPEAT_3_846(m, d) m(4, 846, d) +# define BOOST_PP_REPEAT_3_848(m, d) BOOST_PP_REPEAT_3_847(m, d) m(4, 847, d) +# define BOOST_PP_REPEAT_3_849(m, d) BOOST_PP_REPEAT_3_848(m, d) m(4, 848, d) +# define BOOST_PP_REPEAT_3_850(m, d) BOOST_PP_REPEAT_3_849(m, d) m(4, 849, d) +# define BOOST_PP_REPEAT_3_851(m, d) BOOST_PP_REPEAT_3_850(m, d) m(4, 850, d) +# define BOOST_PP_REPEAT_3_852(m, d) BOOST_PP_REPEAT_3_851(m, d) m(4, 851, d) +# define BOOST_PP_REPEAT_3_853(m, d) BOOST_PP_REPEAT_3_852(m, d) m(4, 852, d) +# define BOOST_PP_REPEAT_3_854(m, d) BOOST_PP_REPEAT_3_853(m, d) m(4, 853, d) +# define BOOST_PP_REPEAT_3_855(m, d) BOOST_PP_REPEAT_3_854(m, d) m(4, 854, d) +# define BOOST_PP_REPEAT_3_856(m, d) BOOST_PP_REPEAT_3_855(m, d) m(4, 855, d) +# define BOOST_PP_REPEAT_3_857(m, d) BOOST_PP_REPEAT_3_856(m, d) m(4, 856, d) +# define BOOST_PP_REPEAT_3_858(m, d) BOOST_PP_REPEAT_3_857(m, d) m(4, 857, d) +# define BOOST_PP_REPEAT_3_859(m, d) BOOST_PP_REPEAT_3_858(m, d) m(4, 858, d) +# define BOOST_PP_REPEAT_3_860(m, d) BOOST_PP_REPEAT_3_859(m, d) m(4, 859, d) +# define BOOST_PP_REPEAT_3_861(m, d) BOOST_PP_REPEAT_3_860(m, d) m(4, 860, d) +# define BOOST_PP_REPEAT_3_862(m, d) BOOST_PP_REPEAT_3_861(m, d) m(4, 861, d) +# define BOOST_PP_REPEAT_3_863(m, d) BOOST_PP_REPEAT_3_862(m, d) m(4, 862, d) +# define BOOST_PP_REPEAT_3_864(m, d) BOOST_PP_REPEAT_3_863(m, d) m(4, 863, d) +# define BOOST_PP_REPEAT_3_865(m, d) BOOST_PP_REPEAT_3_864(m, d) m(4, 864, d) +# define BOOST_PP_REPEAT_3_866(m, d) BOOST_PP_REPEAT_3_865(m, d) m(4, 865, d) +# define BOOST_PP_REPEAT_3_867(m, d) BOOST_PP_REPEAT_3_866(m, d) m(4, 866, d) +# define BOOST_PP_REPEAT_3_868(m, d) BOOST_PP_REPEAT_3_867(m, d) m(4, 867, d) +# define BOOST_PP_REPEAT_3_869(m, d) BOOST_PP_REPEAT_3_868(m, d) m(4, 868, d) +# define BOOST_PP_REPEAT_3_870(m, d) BOOST_PP_REPEAT_3_869(m, d) m(4, 869, d) +# define BOOST_PP_REPEAT_3_871(m, d) BOOST_PP_REPEAT_3_870(m, d) m(4, 870, d) +# define BOOST_PP_REPEAT_3_872(m, d) BOOST_PP_REPEAT_3_871(m, d) m(4, 871, d) +# define BOOST_PP_REPEAT_3_873(m, d) BOOST_PP_REPEAT_3_872(m, d) m(4, 872, d) +# define BOOST_PP_REPEAT_3_874(m, d) BOOST_PP_REPEAT_3_873(m, d) m(4, 873, d) +# define BOOST_PP_REPEAT_3_875(m, d) BOOST_PP_REPEAT_3_874(m, d) m(4, 874, d) +# define BOOST_PP_REPEAT_3_876(m, d) BOOST_PP_REPEAT_3_875(m, d) m(4, 875, d) +# define BOOST_PP_REPEAT_3_877(m, d) BOOST_PP_REPEAT_3_876(m, d) m(4, 876, d) +# define BOOST_PP_REPEAT_3_878(m, d) BOOST_PP_REPEAT_3_877(m, d) m(4, 877, d) +# define BOOST_PP_REPEAT_3_879(m, d) BOOST_PP_REPEAT_3_878(m, d) m(4, 878, d) +# define BOOST_PP_REPEAT_3_880(m, d) BOOST_PP_REPEAT_3_879(m, d) m(4, 879, d) +# define BOOST_PP_REPEAT_3_881(m, d) BOOST_PP_REPEAT_3_880(m, d) m(4, 880, d) +# define BOOST_PP_REPEAT_3_882(m, d) BOOST_PP_REPEAT_3_881(m, d) m(4, 881, d) +# define BOOST_PP_REPEAT_3_883(m, d) BOOST_PP_REPEAT_3_882(m, d) m(4, 882, d) +# define BOOST_PP_REPEAT_3_884(m, d) BOOST_PP_REPEAT_3_883(m, d) m(4, 883, d) +# define BOOST_PP_REPEAT_3_885(m, d) BOOST_PP_REPEAT_3_884(m, d) m(4, 884, d) +# define BOOST_PP_REPEAT_3_886(m, d) BOOST_PP_REPEAT_3_885(m, d) m(4, 885, d) +# define BOOST_PP_REPEAT_3_887(m, d) BOOST_PP_REPEAT_3_886(m, d) m(4, 886, d) +# define BOOST_PP_REPEAT_3_888(m, d) BOOST_PP_REPEAT_3_887(m, d) m(4, 887, d) +# define BOOST_PP_REPEAT_3_889(m, d) BOOST_PP_REPEAT_3_888(m, d) m(4, 888, d) +# define BOOST_PP_REPEAT_3_890(m, d) BOOST_PP_REPEAT_3_889(m, d) m(4, 889, d) +# define BOOST_PP_REPEAT_3_891(m, d) BOOST_PP_REPEAT_3_890(m, d) m(4, 890, d) +# define BOOST_PP_REPEAT_3_892(m, d) BOOST_PP_REPEAT_3_891(m, d) m(4, 891, d) +# define BOOST_PP_REPEAT_3_893(m, d) BOOST_PP_REPEAT_3_892(m, d) m(4, 892, d) +# define BOOST_PP_REPEAT_3_894(m, d) BOOST_PP_REPEAT_3_893(m, d) m(4, 893, d) +# define BOOST_PP_REPEAT_3_895(m, d) BOOST_PP_REPEAT_3_894(m, d) m(4, 894, d) +# define BOOST_PP_REPEAT_3_896(m, d) BOOST_PP_REPEAT_3_895(m, d) m(4, 895, d) +# define BOOST_PP_REPEAT_3_897(m, d) BOOST_PP_REPEAT_3_896(m, d) m(4, 896, d) +# define BOOST_PP_REPEAT_3_898(m, d) BOOST_PP_REPEAT_3_897(m, d) m(4, 897, d) +# define BOOST_PP_REPEAT_3_899(m, d) BOOST_PP_REPEAT_3_898(m, d) m(4, 898, d) +# define BOOST_PP_REPEAT_3_900(m, d) BOOST_PP_REPEAT_3_899(m, d) m(4, 899, d) +# define BOOST_PP_REPEAT_3_901(m, d) BOOST_PP_REPEAT_3_900(m, d) m(4, 900, d) +# define BOOST_PP_REPEAT_3_902(m, d) BOOST_PP_REPEAT_3_901(m, d) m(4, 901, d) +# define BOOST_PP_REPEAT_3_903(m, d) BOOST_PP_REPEAT_3_902(m, d) m(4, 902, d) +# define BOOST_PP_REPEAT_3_904(m, d) BOOST_PP_REPEAT_3_903(m, d) m(4, 903, d) +# define BOOST_PP_REPEAT_3_905(m, d) BOOST_PP_REPEAT_3_904(m, d) m(4, 904, d) +# define BOOST_PP_REPEAT_3_906(m, d) BOOST_PP_REPEAT_3_905(m, d) m(4, 905, d) +# define BOOST_PP_REPEAT_3_907(m, d) BOOST_PP_REPEAT_3_906(m, d) m(4, 906, d) +# define BOOST_PP_REPEAT_3_908(m, d) BOOST_PP_REPEAT_3_907(m, d) m(4, 907, d) +# define BOOST_PP_REPEAT_3_909(m, d) BOOST_PP_REPEAT_3_908(m, d) m(4, 908, d) +# define BOOST_PP_REPEAT_3_910(m, d) BOOST_PP_REPEAT_3_909(m, d) m(4, 909, d) +# define BOOST_PP_REPEAT_3_911(m, d) BOOST_PP_REPEAT_3_910(m, d) m(4, 910, d) +# define BOOST_PP_REPEAT_3_912(m, d) BOOST_PP_REPEAT_3_911(m, d) m(4, 911, d) +# define BOOST_PP_REPEAT_3_913(m, d) BOOST_PP_REPEAT_3_912(m, d) m(4, 912, d) +# define BOOST_PP_REPEAT_3_914(m, d) BOOST_PP_REPEAT_3_913(m, d) m(4, 913, d) +# define BOOST_PP_REPEAT_3_915(m, d) BOOST_PP_REPEAT_3_914(m, d) m(4, 914, d) +# define BOOST_PP_REPEAT_3_916(m, d) BOOST_PP_REPEAT_3_915(m, d) m(4, 915, d) +# define BOOST_PP_REPEAT_3_917(m, d) BOOST_PP_REPEAT_3_916(m, d) m(4, 916, d) +# define BOOST_PP_REPEAT_3_918(m, d) BOOST_PP_REPEAT_3_917(m, d) m(4, 917, d) +# define BOOST_PP_REPEAT_3_919(m, d) BOOST_PP_REPEAT_3_918(m, d) m(4, 918, d) +# define BOOST_PP_REPEAT_3_920(m, d) BOOST_PP_REPEAT_3_919(m, d) m(4, 919, d) +# define BOOST_PP_REPEAT_3_921(m, d) BOOST_PP_REPEAT_3_920(m, d) m(4, 920, d) +# define BOOST_PP_REPEAT_3_922(m, d) BOOST_PP_REPEAT_3_921(m, d) m(4, 921, d) +# define BOOST_PP_REPEAT_3_923(m, d) BOOST_PP_REPEAT_3_922(m, d) m(4, 922, d) +# define BOOST_PP_REPEAT_3_924(m, d) BOOST_PP_REPEAT_3_923(m, d) m(4, 923, d) +# define BOOST_PP_REPEAT_3_925(m, d) BOOST_PP_REPEAT_3_924(m, d) m(4, 924, d) +# define BOOST_PP_REPEAT_3_926(m, d) BOOST_PP_REPEAT_3_925(m, d) m(4, 925, d) +# define BOOST_PP_REPEAT_3_927(m, d) BOOST_PP_REPEAT_3_926(m, d) m(4, 926, d) +# define BOOST_PP_REPEAT_3_928(m, d) BOOST_PP_REPEAT_3_927(m, d) m(4, 927, d) +# define BOOST_PP_REPEAT_3_929(m, d) BOOST_PP_REPEAT_3_928(m, d) m(4, 928, d) +# define BOOST_PP_REPEAT_3_930(m, d) BOOST_PP_REPEAT_3_929(m, d) m(4, 929, d) +# define BOOST_PP_REPEAT_3_931(m, d) BOOST_PP_REPEAT_3_930(m, d) m(4, 930, d) +# define BOOST_PP_REPEAT_3_932(m, d) BOOST_PP_REPEAT_3_931(m, d) m(4, 931, d) +# define BOOST_PP_REPEAT_3_933(m, d) BOOST_PP_REPEAT_3_932(m, d) m(4, 932, d) +# define BOOST_PP_REPEAT_3_934(m, d) BOOST_PP_REPEAT_3_933(m, d) m(4, 933, d) +# define BOOST_PP_REPEAT_3_935(m, d) BOOST_PP_REPEAT_3_934(m, d) m(4, 934, d) +# define BOOST_PP_REPEAT_3_936(m, d) BOOST_PP_REPEAT_3_935(m, d) m(4, 935, d) +# define BOOST_PP_REPEAT_3_937(m, d) BOOST_PP_REPEAT_3_936(m, d) m(4, 936, d) +# define BOOST_PP_REPEAT_3_938(m, d) BOOST_PP_REPEAT_3_937(m, d) m(4, 937, d) +# define BOOST_PP_REPEAT_3_939(m, d) BOOST_PP_REPEAT_3_938(m, d) m(4, 938, d) +# define BOOST_PP_REPEAT_3_940(m, d) BOOST_PP_REPEAT_3_939(m, d) m(4, 939, d) +# define BOOST_PP_REPEAT_3_941(m, d) BOOST_PP_REPEAT_3_940(m, d) m(4, 940, d) +# define BOOST_PP_REPEAT_3_942(m, d) BOOST_PP_REPEAT_3_941(m, d) m(4, 941, d) +# define BOOST_PP_REPEAT_3_943(m, d) BOOST_PP_REPEAT_3_942(m, d) m(4, 942, d) +# define BOOST_PP_REPEAT_3_944(m, d) BOOST_PP_REPEAT_3_943(m, d) m(4, 943, d) +# define BOOST_PP_REPEAT_3_945(m, d) BOOST_PP_REPEAT_3_944(m, d) m(4, 944, d) +# define BOOST_PP_REPEAT_3_946(m, d) BOOST_PP_REPEAT_3_945(m, d) m(4, 945, d) +# define BOOST_PP_REPEAT_3_947(m, d) BOOST_PP_REPEAT_3_946(m, d) m(4, 946, d) +# define BOOST_PP_REPEAT_3_948(m, d) BOOST_PP_REPEAT_3_947(m, d) m(4, 947, d) +# define BOOST_PP_REPEAT_3_949(m, d) BOOST_PP_REPEAT_3_948(m, d) m(4, 948, d) +# define BOOST_PP_REPEAT_3_950(m, d) BOOST_PP_REPEAT_3_949(m, d) m(4, 949, d) +# define BOOST_PP_REPEAT_3_951(m, d) BOOST_PP_REPEAT_3_950(m, d) m(4, 950, d) +# define BOOST_PP_REPEAT_3_952(m, d) BOOST_PP_REPEAT_3_951(m, d) m(4, 951, d) +# define BOOST_PP_REPEAT_3_953(m, d) BOOST_PP_REPEAT_3_952(m, d) m(4, 952, d) +# define BOOST_PP_REPEAT_3_954(m, d) BOOST_PP_REPEAT_3_953(m, d) m(4, 953, d) +# define BOOST_PP_REPEAT_3_955(m, d) BOOST_PP_REPEAT_3_954(m, d) m(4, 954, d) +# define BOOST_PP_REPEAT_3_956(m, d) BOOST_PP_REPEAT_3_955(m, d) m(4, 955, d) +# define BOOST_PP_REPEAT_3_957(m, d) BOOST_PP_REPEAT_3_956(m, d) m(4, 956, d) +# define BOOST_PP_REPEAT_3_958(m, d) BOOST_PP_REPEAT_3_957(m, d) m(4, 957, d) +# define BOOST_PP_REPEAT_3_959(m, d) BOOST_PP_REPEAT_3_958(m, d) m(4, 958, d) +# define BOOST_PP_REPEAT_3_960(m, d) BOOST_PP_REPEAT_3_959(m, d) m(4, 959, d) +# define BOOST_PP_REPEAT_3_961(m, d) BOOST_PP_REPEAT_3_960(m, d) m(4, 960, d) +# define BOOST_PP_REPEAT_3_962(m, d) BOOST_PP_REPEAT_3_961(m, d) m(4, 961, d) +# define BOOST_PP_REPEAT_3_963(m, d) BOOST_PP_REPEAT_3_962(m, d) m(4, 962, d) +# define BOOST_PP_REPEAT_3_964(m, d) BOOST_PP_REPEAT_3_963(m, d) m(4, 963, d) +# define BOOST_PP_REPEAT_3_965(m, d) BOOST_PP_REPEAT_3_964(m, d) m(4, 964, d) +# define BOOST_PP_REPEAT_3_966(m, d) BOOST_PP_REPEAT_3_965(m, d) m(4, 965, d) +# define BOOST_PP_REPEAT_3_967(m, d) BOOST_PP_REPEAT_3_966(m, d) m(4, 966, d) +# define BOOST_PP_REPEAT_3_968(m, d) BOOST_PP_REPEAT_3_967(m, d) m(4, 967, d) +# define BOOST_PP_REPEAT_3_969(m, d) BOOST_PP_REPEAT_3_968(m, d) m(4, 968, d) +# define BOOST_PP_REPEAT_3_970(m, d) BOOST_PP_REPEAT_3_969(m, d) m(4, 969, d) +# define BOOST_PP_REPEAT_3_971(m, d) BOOST_PP_REPEAT_3_970(m, d) m(4, 970, d) +# define BOOST_PP_REPEAT_3_972(m, d) BOOST_PP_REPEAT_3_971(m, d) m(4, 971, d) +# define BOOST_PP_REPEAT_3_973(m, d) BOOST_PP_REPEAT_3_972(m, d) m(4, 972, d) +# define BOOST_PP_REPEAT_3_974(m, d) BOOST_PP_REPEAT_3_973(m, d) m(4, 973, d) +# define BOOST_PP_REPEAT_3_975(m, d) BOOST_PP_REPEAT_3_974(m, d) m(4, 974, d) +# define BOOST_PP_REPEAT_3_976(m, d) BOOST_PP_REPEAT_3_975(m, d) m(4, 975, d) +# define BOOST_PP_REPEAT_3_977(m, d) BOOST_PP_REPEAT_3_976(m, d) m(4, 976, d) +# define BOOST_PP_REPEAT_3_978(m, d) BOOST_PP_REPEAT_3_977(m, d) m(4, 977, d) +# define BOOST_PP_REPEAT_3_979(m, d) BOOST_PP_REPEAT_3_978(m, d) m(4, 978, d) +# define BOOST_PP_REPEAT_3_980(m, d) BOOST_PP_REPEAT_3_979(m, d) m(4, 979, d) +# define BOOST_PP_REPEAT_3_981(m, d) BOOST_PP_REPEAT_3_980(m, d) m(4, 980, d) +# define BOOST_PP_REPEAT_3_982(m, d) BOOST_PP_REPEAT_3_981(m, d) m(4, 981, d) +# define BOOST_PP_REPEAT_3_983(m, d) BOOST_PP_REPEAT_3_982(m, d) m(4, 982, d) +# define BOOST_PP_REPEAT_3_984(m, d) BOOST_PP_REPEAT_3_983(m, d) m(4, 983, d) +# define BOOST_PP_REPEAT_3_985(m, d) BOOST_PP_REPEAT_3_984(m, d) m(4, 984, d) +# define BOOST_PP_REPEAT_3_986(m, d) BOOST_PP_REPEAT_3_985(m, d) m(4, 985, d) +# define BOOST_PP_REPEAT_3_987(m, d) BOOST_PP_REPEAT_3_986(m, d) m(4, 986, d) +# define BOOST_PP_REPEAT_3_988(m, d) BOOST_PP_REPEAT_3_987(m, d) m(4, 987, d) +# define BOOST_PP_REPEAT_3_989(m, d) BOOST_PP_REPEAT_3_988(m, d) m(4, 988, d) +# define BOOST_PP_REPEAT_3_990(m, d) BOOST_PP_REPEAT_3_989(m, d) m(4, 989, d) +# define BOOST_PP_REPEAT_3_991(m, d) BOOST_PP_REPEAT_3_990(m, d) m(4, 990, d) +# define BOOST_PP_REPEAT_3_992(m, d) BOOST_PP_REPEAT_3_991(m, d) m(4, 991, d) +# define BOOST_PP_REPEAT_3_993(m, d) BOOST_PP_REPEAT_3_992(m, d) m(4, 992, d) +# define BOOST_PP_REPEAT_3_994(m, d) BOOST_PP_REPEAT_3_993(m, d) m(4, 993, d) +# define BOOST_PP_REPEAT_3_995(m, d) BOOST_PP_REPEAT_3_994(m, d) m(4, 994, d) +# define BOOST_PP_REPEAT_3_996(m, d) BOOST_PP_REPEAT_3_995(m, d) m(4, 995, d) +# define BOOST_PP_REPEAT_3_997(m, d) BOOST_PP_REPEAT_3_996(m, d) m(4, 996, d) +# define BOOST_PP_REPEAT_3_998(m, d) BOOST_PP_REPEAT_3_997(m, d) m(4, 997, d) +# define BOOST_PP_REPEAT_3_999(m, d) BOOST_PP_REPEAT_3_998(m, d) m(4, 998, d) +# define BOOST_PP_REPEAT_3_1000(m, d) BOOST_PP_REPEAT_3_999(m, d) m(4, 999, d) +# define BOOST_PP_REPEAT_3_1001(m, d) BOOST_PP_REPEAT_3_1000(m, d) m(4, 1000, d) +# define BOOST_PP_REPEAT_3_1002(m, d) BOOST_PP_REPEAT_3_1001(m, d) m(4, 1001, d) +# define BOOST_PP_REPEAT_3_1003(m, d) BOOST_PP_REPEAT_3_1002(m, d) m(4, 1002, d) +# define BOOST_PP_REPEAT_3_1004(m, d) BOOST_PP_REPEAT_3_1003(m, d) m(4, 1003, d) +# define BOOST_PP_REPEAT_3_1005(m, d) BOOST_PP_REPEAT_3_1004(m, d) m(4, 1004, d) +# define BOOST_PP_REPEAT_3_1006(m, d) BOOST_PP_REPEAT_3_1005(m, d) m(4, 1005, d) +# define BOOST_PP_REPEAT_3_1007(m, d) BOOST_PP_REPEAT_3_1006(m, d) m(4, 1006, d) +# define BOOST_PP_REPEAT_3_1008(m, d) BOOST_PP_REPEAT_3_1007(m, d) m(4, 1007, d) +# define BOOST_PP_REPEAT_3_1009(m, d) BOOST_PP_REPEAT_3_1008(m, d) m(4, 1008, d) +# define BOOST_PP_REPEAT_3_1010(m, d) BOOST_PP_REPEAT_3_1009(m, d) m(4, 1009, d) +# define BOOST_PP_REPEAT_3_1011(m, d) BOOST_PP_REPEAT_3_1010(m, d) m(4, 1010, d) +# define BOOST_PP_REPEAT_3_1012(m, d) BOOST_PP_REPEAT_3_1011(m, d) m(4, 1011, d) +# define BOOST_PP_REPEAT_3_1013(m, d) BOOST_PP_REPEAT_3_1012(m, d) m(4, 1012, d) +# define BOOST_PP_REPEAT_3_1014(m, d) BOOST_PP_REPEAT_3_1013(m, d) m(4, 1013, d) +# define BOOST_PP_REPEAT_3_1015(m, d) BOOST_PP_REPEAT_3_1014(m, d) m(4, 1014, d) +# define BOOST_PP_REPEAT_3_1016(m, d) BOOST_PP_REPEAT_3_1015(m, d) m(4, 1015, d) +# define BOOST_PP_REPEAT_3_1017(m, d) BOOST_PP_REPEAT_3_1016(m, d) m(4, 1016, d) +# define BOOST_PP_REPEAT_3_1018(m, d) BOOST_PP_REPEAT_3_1017(m, d) m(4, 1017, d) +# define BOOST_PP_REPEAT_3_1019(m, d) BOOST_PP_REPEAT_3_1018(m, d) m(4, 1018, d) +# define BOOST_PP_REPEAT_3_1020(m, d) BOOST_PP_REPEAT_3_1019(m, d) m(4, 1019, d) +# define BOOST_PP_REPEAT_3_1021(m, d) BOOST_PP_REPEAT_3_1020(m, d) m(4, 1020, d) +# define BOOST_PP_REPEAT_3_1022(m, d) BOOST_PP_REPEAT_3_1021(m, d) m(4, 1021, d) +# define BOOST_PP_REPEAT_3_1023(m, d) BOOST_PP_REPEAT_3_1022(m, d) m(4, 1022, d) +# define BOOST_PP_REPEAT_3_1024(m, d) BOOST_PP_REPEAT_3_1023(m, d) m(4, 1023, d) +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/limits/repeat_256.hpp b/src/boost/boost/preprocessor/repetition/limits/repeat_256.hpp new file mode 100644 index 000000000..151adefbc --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/limits/repeat_256.hpp @@ -0,0 +1,791 @@ +# /* 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_REPETITION_REPEAT_256_HPP +# define BOOST_PREPROCESSOR_REPETITION_REPEAT_256_HPP +# +# define BOOST_PP_REPEAT_1_0(m, d) +# define BOOST_PP_REPEAT_1_1(m, d) m(2, 0, d) +# define BOOST_PP_REPEAT_1_2(m, d) BOOST_PP_REPEAT_1_1(m, d) m(2, 1, d) +# define BOOST_PP_REPEAT_1_3(m, d) BOOST_PP_REPEAT_1_2(m, d) m(2, 2, d) +# define BOOST_PP_REPEAT_1_4(m, d) BOOST_PP_REPEAT_1_3(m, d) m(2, 3, d) +# define BOOST_PP_REPEAT_1_5(m, d) BOOST_PP_REPEAT_1_4(m, d) m(2, 4, d) +# define BOOST_PP_REPEAT_1_6(m, d) BOOST_PP_REPEAT_1_5(m, d) m(2, 5, d) +# define BOOST_PP_REPEAT_1_7(m, d) BOOST_PP_REPEAT_1_6(m, d) m(2, 6, d) +# define BOOST_PP_REPEAT_1_8(m, d) BOOST_PP_REPEAT_1_7(m, d) m(2, 7, d) +# define BOOST_PP_REPEAT_1_9(m, d) BOOST_PP_REPEAT_1_8(m, d) m(2, 8, d) +# define BOOST_PP_REPEAT_1_10(m, d) BOOST_PP_REPEAT_1_9(m, d) m(2, 9, d) +# define BOOST_PP_REPEAT_1_11(m, d) BOOST_PP_REPEAT_1_10(m, d) m(2, 10, d) +# define BOOST_PP_REPEAT_1_12(m, d) BOOST_PP_REPEAT_1_11(m, d) m(2, 11, d) +# define BOOST_PP_REPEAT_1_13(m, d) BOOST_PP_REPEAT_1_12(m, d) m(2, 12, d) +# define BOOST_PP_REPEAT_1_14(m, d) BOOST_PP_REPEAT_1_13(m, d) m(2, 13, d) +# define BOOST_PP_REPEAT_1_15(m, d) BOOST_PP_REPEAT_1_14(m, d) m(2, 14, d) +# define BOOST_PP_REPEAT_1_16(m, d) BOOST_PP_REPEAT_1_15(m, d) m(2, 15, d) +# define BOOST_PP_REPEAT_1_17(m, d) BOOST_PP_REPEAT_1_16(m, d) m(2, 16, d) +# define BOOST_PP_REPEAT_1_18(m, d) BOOST_PP_REPEAT_1_17(m, d) m(2, 17, d) +# define BOOST_PP_REPEAT_1_19(m, d) BOOST_PP_REPEAT_1_18(m, d) m(2, 18, d) +# define BOOST_PP_REPEAT_1_20(m, d) BOOST_PP_REPEAT_1_19(m, d) m(2, 19, d) +# define BOOST_PP_REPEAT_1_21(m, d) BOOST_PP_REPEAT_1_20(m, d) m(2, 20, d) +# define BOOST_PP_REPEAT_1_22(m, d) BOOST_PP_REPEAT_1_21(m, d) m(2, 21, d) +# define BOOST_PP_REPEAT_1_23(m, d) BOOST_PP_REPEAT_1_22(m, d) m(2, 22, d) +# define BOOST_PP_REPEAT_1_24(m, d) BOOST_PP_REPEAT_1_23(m, d) m(2, 23, d) +# define BOOST_PP_REPEAT_1_25(m, d) BOOST_PP_REPEAT_1_24(m, d) m(2, 24, d) +# define BOOST_PP_REPEAT_1_26(m, d) BOOST_PP_REPEAT_1_25(m, d) m(2, 25, d) +# define BOOST_PP_REPEAT_1_27(m, d) BOOST_PP_REPEAT_1_26(m, d) m(2, 26, d) +# define BOOST_PP_REPEAT_1_28(m, d) BOOST_PP_REPEAT_1_27(m, d) m(2, 27, d) +# define BOOST_PP_REPEAT_1_29(m, d) BOOST_PP_REPEAT_1_28(m, d) m(2, 28, d) +# define BOOST_PP_REPEAT_1_30(m, d) BOOST_PP_REPEAT_1_29(m, d) m(2, 29, d) +# define BOOST_PP_REPEAT_1_31(m, d) BOOST_PP_REPEAT_1_30(m, d) m(2, 30, d) +# define BOOST_PP_REPEAT_1_32(m, d) BOOST_PP_REPEAT_1_31(m, d) m(2, 31, d) +# define BOOST_PP_REPEAT_1_33(m, d) BOOST_PP_REPEAT_1_32(m, d) m(2, 32, d) +# define BOOST_PP_REPEAT_1_34(m, d) BOOST_PP_REPEAT_1_33(m, d) m(2, 33, d) +# define BOOST_PP_REPEAT_1_35(m, d) BOOST_PP_REPEAT_1_34(m, d) m(2, 34, d) +# define BOOST_PP_REPEAT_1_36(m, d) BOOST_PP_REPEAT_1_35(m, d) m(2, 35, d) +# define BOOST_PP_REPEAT_1_37(m, d) BOOST_PP_REPEAT_1_36(m, d) m(2, 36, d) +# define BOOST_PP_REPEAT_1_38(m, d) BOOST_PP_REPEAT_1_37(m, d) m(2, 37, d) +# define BOOST_PP_REPEAT_1_39(m, d) BOOST_PP_REPEAT_1_38(m, d) m(2, 38, d) +# define BOOST_PP_REPEAT_1_40(m, d) BOOST_PP_REPEAT_1_39(m, d) m(2, 39, d) +# define BOOST_PP_REPEAT_1_41(m, d) BOOST_PP_REPEAT_1_40(m, d) m(2, 40, d) +# define BOOST_PP_REPEAT_1_42(m, d) BOOST_PP_REPEAT_1_41(m, d) m(2, 41, d) +# define BOOST_PP_REPEAT_1_43(m, d) BOOST_PP_REPEAT_1_42(m, d) m(2, 42, d) +# define BOOST_PP_REPEAT_1_44(m, d) BOOST_PP_REPEAT_1_43(m, d) m(2, 43, d) +# define BOOST_PP_REPEAT_1_45(m, d) BOOST_PP_REPEAT_1_44(m, d) m(2, 44, d) +# define BOOST_PP_REPEAT_1_46(m, d) BOOST_PP_REPEAT_1_45(m, d) m(2, 45, d) +# define BOOST_PP_REPEAT_1_47(m, d) BOOST_PP_REPEAT_1_46(m, d) m(2, 46, d) +# define BOOST_PP_REPEAT_1_48(m, d) BOOST_PP_REPEAT_1_47(m, d) m(2, 47, d) +# define BOOST_PP_REPEAT_1_49(m, d) BOOST_PP_REPEAT_1_48(m, d) m(2, 48, d) +# define BOOST_PP_REPEAT_1_50(m, d) BOOST_PP_REPEAT_1_49(m, d) m(2, 49, d) +# define BOOST_PP_REPEAT_1_51(m, d) BOOST_PP_REPEAT_1_50(m, d) m(2, 50, d) +# define BOOST_PP_REPEAT_1_52(m, d) BOOST_PP_REPEAT_1_51(m, d) m(2, 51, d) +# define BOOST_PP_REPEAT_1_53(m, d) BOOST_PP_REPEAT_1_52(m, d) m(2, 52, d) +# define BOOST_PP_REPEAT_1_54(m, d) BOOST_PP_REPEAT_1_53(m, d) m(2, 53, d) +# define BOOST_PP_REPEAT_1_55(m, d) BOOST_PP_REPEAT_1_54(m, d) m(2, 54, d) +# define BOOST_PP_REPEAT_1_56(m, d) BOOST_PP_REPEAT_1_55(m, d) m(2, 55, d) +# define BOOST_PP_REPEAT_1_57(m, d) BOOST_PP_REPEAT_1_56(m, d) m(2, 56, d) +# define BOOST_PP_REPEAT_1_58(m, d) BOOST_PP_REPEAT_1_57(m, d) m(2, 57, d) +# define BOOST_PP_REPEAT_1_59(m, d) BOOST_PP_REPEAT_1_58(m, d) m(2, 58, d) +# define BOOST_PP_REPEAT_1_60(m, d) BOOST_PP_REPEAT_1_59(m, d) m(2, 59, d) +# define BOOST_PP_REPEAT_1_61(m, d) BOOST_PP_REPEAT_1_60(m, d) m(2, 60, d) +# define BOOST_PP_REPEAT_1_62(m, d) BOOST_PP_REPEAT_1_61(m, d) m(2, 61, d) +# define BOOST_PP_REPEAT_1_63(m, d) BOOST_PP_REPEAT_1_62(m, d) m(2, 62, d) +# define BOOST_PP_REPEAT_1_64(m, d) BOOST_PP_REPEAT_1_63(m, d) m(2, 63, d) +# define BOOST_PP_REPEAT_1_65(m, d) BOOST_PP_REPEAT_1_64(m, d) m(2, 64, d) +# define BOOST_PP_REPEAT_1_66(m, d) BOOST_PP_REPEAT_1_65(m, d) m(2, 65, d) +# define BOOST_PP_REPEAT_1_67(m, d) BOOST_PP_REPEAT_1_66(m, d) m(2, 66, d) +# define BOOST_PP_REPEAT_1_68(m, d) BOOST_PP_REPEAT_1_67(m, d) m(2, 67, d) +# define BOOST_PP_REPEAT_1_69(m, d) BOOST_PP_REPEAT_1_68(m, d) m(2, 68, d) +# define BOOST_PP_REPEAT_1_70(m, d) BOOST_PP_REPEAT_1_69(m, d) m(2, 69, d) +# define BOOST_PP_REPEAT_1_71(m, d) BOOST_PP_REPEAT_1_70(m, d) m(2, 70, d) +# define BOOST_PP_REPEAT_1_72(m, d) BOOST_PP_REPEAT_1_71(m, d) m(2, 71, d) +# define BOOST_PP_REPEAT_1_73(m, d) BOOST_PP_REPEAT_1_72(m, d) m(2, 72, d) +# define BOOST_PP_REPEAT_1_74(m, d) BOOST_PP_REPEAT_1_73(m, d) m(2, 73, d) +# define BOOST_PP_REPEAT_1_75(m, d) BOOST_PP_REPEAT_1_74(m, d) m(2, 74, d) +# define BOOST_PP_REPEAT_1_76(m, d) BOOST_PP_REPEAT_1_75(m, d) m(2, 75, d) +# define BOOST_PP_REPEAT_1_77(m, d) BOOST_PP_REPEAT_1_76(m, d) m(2, 76, d) +# define BOOST_PP_REPEAT_1_78(m, d) BOOST_PP_REPEAT_1_77(m, d) m(2, 77, d) +# define BOOST_PP_REPEAT_1_79(m, d) BOOST_PP_REPEAT_1_78(m, d) m(2, 78, d) +# define BOOST_PP_REPEAT_1_80(m, d) BOOST_PP_REPEAT_1_79(m, d) m(2, 79, d) +# define BOOST_PP_REPEAT_1_81(m, d) BOOST_PP_REPEAT_1_80(m, d) m(2, 80, d) +# define BOOST_PP_REPEAT_1_82(m, d) BOOST_PP_REPEAT_1_81(m, d) m(2, 81, d) +# define BOOST_PP_REPEAT_1_83(m, d) BOOST_PP_REPEAT_1_82(m, d) m(2, 82, d) +# define BOOST_PP_REPEAT_1_84(m, d) BOOST_PP_REPEAT_1_83(m, d) m(2, 83, d) +# define BOOST_PP_REPEAT_1_85(m, d) BOOST_PP_REPEAT_1_84(m, d) m(2, 84, d) +# define BOOST_PP_REPEAT_1_86(m, d) BOOST_PP_REPEAT_1_85(m, d) m(2, 85, d) +# define BOOST_PP_REPEAT_1_87(m, d) BOOST_PP_REPEAT_1_86(m, d) m(2, 86, d) +# define BOOST_PP_REPEAT_1_88(m, d) BOOST_PP_REPEAT_1_87(m, d) m(2, 87, d) +# define BOOST_PP_REPEAT_1_89(m, d) BOOST_PP_REPEAT_1_88(m, d) m(2, 88, d) +# define BOOST_PP_REPEAT_1_90(m, d) BOOST_PP_REPEAT_1_89(m, d) m(2, 89, d) +# define BOOST_PP_REPEAT_1_91(m, d) BOOST_PP_REPEAT_1_90(m, d) m(2, 90, d) +# define BOOST_PP_REPEAT_1_92(m, d) BOOST_PP_REPEAT_1_91(m, d) m(2, 91, d) +# define BOOST_PP_REPEAT_1_93(m, d) BOOST_PP_REPEAT_1_92(m, d) m(2, 92, d) +# define BOOST_PP_REPEAT_1_94(m, d) BOOST_PP_REPEAT_1_93(m, d) m(2, 93, d) +# define BOOST_PP_REPEAT_1_95(m, d) BOOST_PP_REPEAT_1_94(m, d) m(2, 94, d) +# define BOOST_PP_REPEAT_1_96(m, d) BOOST_PP_REPEAT_1_95(m, d) m(2, 95, d) +# define BOOST_PP_REPEAT_1_97(m, d) BOOST_PP_REPEAT_1_96(m, d) m(2, 96, d) +# define BOOST_PP_REPEAT_1_98(m, d) BOOST_PP_REPEAT_1_97(m, d) m(2, 97, d) +# define BOOST_PP_REPEAT_1_99(m, d) BOOST_PP_REPEAT_1_98(m, d) m(2, 98, d) +# define BOOST_PP_REPEAT_1_100(m, d) BOOST_PP_REPEAT_1_99(m, d) m(2, 99, d) +# define BOOST_PP_REPEAT_1_101(m, d) BOOST_PP_REPEAT_1_100(m, d) m(2, 100, d) +# define BOOST_PP_REPEAT_1_102(m, d) BOOST_PP_REPEAT_1_101(m, d) m(2, 101, d) +# define BOOST_PP_REPEAT_1_103(m, d) BOOST_PP_REPEAT_1_102(m, d) m(2, 102, d) +# define BOOST_PP_REPEAT_1_104(m, d) BOOST_PP_REPEAT_1_103(m, d) m(2, 103, d) +# define BOOST_PP_REPEAT_1_105(m, d) BOOST_PP_REPEAT_1_104(m, d) m(2, 104, d) +# define BOOST_PP_REPEAT_1_106(m, d) BOOST_PP_REPEAT_1_105(m, d) m(2, 105, d) +# define BOOST_PP_REPEAT_1_107(m, d) BOOST_PP_REPEAT_1_106(m, d) m(2, 106, d) +# define BOOST_PP_REPEAT_1_108(m, d) BOOST_PP_REPEAT_1_107(m, d) m(2, 107, d) +# define BOOST_PP_REPEAT_1_109(m, d) BOOST_PP_REPEAT_1_108(m, d) m(2, 108, d) +# define BOOST_PP_REPEAT_1_110(m, d) BOOST_PP_REPEAT_1_109(m, d) m(2, 109, d) +# define BOOST_PP_REPEAT_1_111(m, d) BOOST_PP_REPEAT_1_110(m, d) m(2, 110, d) +# define BOOST_PP_REPEAT_1_112(m, d) BOOST_PP_REPEAT_1_111(m, d) m(2, 111, d) +# define BOOST_PP_REPEAT_1_113(m, d) BOOST_PP_REPEAT_1_112(m, d) m(2, 112, d) +# define BOOST_PP_REPEAT_1_114(m, d) BOOST_PP_REPEAT_1_113(m, d) m(2, 113, d) +# define BOOST_PP_REPEAT_1_115(m, d) BOOST_PP_REPEAT_1_114(m, d) m(2, 114, d) +# define BOOST_PP_REPEAT_1_116(m, d) BOOST_PP_REPEAT_1_115(m, d) m(2, 115, d) +# define BOOST_PP_REPEAT_1_117(m, d) BOOST_PP_REPEAT_1_116(m, d) m(2, 116, d) +# define BOOST_PP_REPEAT_1_118(m, d) BOOST_PP_REPEAT_1_117(m, d) m(2, 117, d) +# define BOOST_PP_REPEAT_1_119(m, d) BOOST_PP_REPEAT_1_118(m, d) m(2, 118, d) +# define BOOST_PP_REPEAT_1_120(m, d) BOOST_PP_REPEAT_1_119(m, d) m(2, 119, d) +# define BOOST_PP_REPEAT_1_121(m, d) BOOST_PP_REPEAT_1_120(m, d) m(2, 120, d) +# define BOOST_PP_REPEAT_1_122(m, d) BOOST_PP_REPEAT_1_121(m, d) m(2, 121, d) +# define BOOST_PP_REPEAT_1_123(m, d) BOOST_PP_REPEAT_1_122(m, d) m(2, 122, d) +# define BOOST_PP_REPEAT_1_124(m, d) BOOST_PP_REPEAT_1_123(m, d) m(2, 123, d) +# define BOOST_PP_REPEAT_1_125(m, d) BOOST_PP_REPEAT_1_124(m, d) m(2, 124, d) +# define BOOST_PP_REPEAT_1_126(m, d) BOOST_PP_REPEAT_1_125(m, d) m(2, 125, d) +# define BOOST_PP_REPEAT_1_127(m, d) BOOST_PP_REPEAT_1_126(m, d) m(2, 126, d) +# define BOOST_PP_REPEAT_1_128(m, d) BOOST_PP_REPEAT_1_127(m, d) m(2, 127, d) +# define BOOST_PP_REPEAT_1_129(m, d) BOOST_PP_REPEAT_1_128(m, d) m(2, 128, d) +# define BOOST_PP_REPEAT_1_130(m, d) BOOST_PP_REPEAT_1_129(m, d) m(2, 129, d) +# define BOOST_PP_REPEAT_1_131(m, d) BOOST_PP_REPEAT_1_130(m, d) m(2, 130, d) +# define BOOST_PP_REPEAT_1_132(m, d) BOOST_PP_REPEAT_1_131(m, d) m(2, 131, d) +# define BOOST_PP_REPEAT_1_133(m, d) BOOST_PP_REPEAT_1_132(m, d) m(2, 132, d) +# define BOOST_PP_REPEAT_1_134(m, d) BOOST_PP_REPEAT_1_133(m, d) m(2, 133, d) +# define BOOST_PP_REPEAT_1_135(m, d) BOOST_PP_REPEAT_1_134(m, d) m(2, 134, d) +# define BOOST_PP_REPEAT_1_136(m, d) BOOST_PP_REPEAT_1_135(m, d) m(2, 135, d) +# define BOOST_PP_REPEAT_1_137(m, d) BOOST_PP_REPEAT_1_136(m, d) m(2, 136, d) +# define BOOST_PP_REPEAT_1_138(m, d) BOOST_PP_REPEAT_1_137(m, d) m(2, 137, d) +# define BOOST_PP_REPEAT_1_139(m, d) BOOST_PP_REPEAT_1_138(m, d) m(2, 138, d) +# define BOOST_PP_REPEAT_1_140(m, d) BOOST_PP_REPEAT_1_139(m, d) m(2, 139, d) +# define BOOST_PP_REPEAT_1_141(m, d) BOOST_PP_REPEAT_1_140(m, d) m(2, 140, d) +# define BOOST_PP_REPEAT_1_142(m, d) BOOST_PP_REPEAT_1_141(m, d) m(2, 141, d) +# define BOOST_PP_REPEAT_1_143(m, d) BOOST_PP_REPEAT_1_142(m, d) m(2, 142, d) +# define BOOST_PP_REPEAT_1_144(m, d) BOOST_PP_REPEAT_1_143(m, d) m(2, 143, d) +# define BOOST_PP_REPEAT_1_145(m, d) BOOST_PP_REPEAT_1_144(m, d) m(2, 144, d) +# define BOOST_PP_REPEAT_1_146(m, d) BOOST_PP_REPEAT_1_145(m, d) m(2, 145, d) +# define BOOST_PP_REPEAT_1_147(m, d) BOOST_PP_REPEAT_1_146(m, d) m(2, 146, d) +# define BOOST_PP_REPEAT_1_148(m, d) BOOST_PP_REPEAT_1_147(m, d) m(2, 147, d) +# define BOOST_PP_REPEAT_1_149(m, d) BOOST_PP_REPEAT_1_148(m, d) m(2, 148, d) +# define BOOST_PP_REPEAT_1_150(m, d) BOOST_PP_REPEAT_1_149(m, d) m(2, 149, d) +# define BOOST_PP_REPEAT_1_151(m, d) BOOST_PP_REPEAT_1_150(m, d) m(2, 150, d) +# define BOOST_PP_REPEAT_1_152(m, d) BOOST_PP_REPEAT_1_151(m, d) m(2, 151, d) +# define BOOST_PP_REPEAT_1_153(m, d) BOOST_PP_REPEAT_1_152(m, d) m(2, 152, d) +# define BOOST_PP_REPEAT_1_154(m, d) BOOST_PP_REPEAT_1_153(m, d) m(2, 153, d) +# define BOOST_PP_REPEAT_1_155(m, d) BOOST_PP_REPEAT_1_154(m, d) m(2, 154, d) +# define BOOST_PP_REPEAT_1_156(m, d) BOOST_PP_REPEAT_1_155(m, d) m(2, 155, d) +# define BOOST_PP_REPEAT_1_157(m, d) BOOST_PP_REPEAT_1_156(m, d) m(2, 156, d) +# define BOOST_PP_REPEAT_1_158(m, d) BOOST_PP_REPEAT_1_157(m, d) m(2, 157, d) +# define BOOST_PP_REPEAT_1_159(m, d) BOOST_PP_REPEAT_1_158(m, d) m(2, 158, d) +# define BOOST_PP_REPEAT_1_160(m, d) BOOST_PP_REPEAT_1_159(m, d) m(2, 159, d) +# define BOOST_PP_REPEAT_1_161(m, d) BOOST_PP_REPEAT_1_160(m, d) m(2, 160, d) +# define BOOST_PP_REPEAT_1_162(m, d) BOOST_PP_REPEAT_1_161(m, d) m(2, 161, d) +# define BOOST_PP_REPEAT_1_163(m, d) BOOST_PP_REPEAT_1_162(m, d) m(2, 162, d) +# define BOOST_PP_REPEAT_1_164(m, d) BOOST_PP_REPEAT_1_163(m, d) m(2, 163, d) +# define BOOST_PP_REPEAT_1_165(m, d) BOOST_PP_REPEAT_1_164(m, d) m(2, 164, d) +# define BOOST_PP_REPEAT_1_166(m, d) BOOST_PP_REPEAT_1_165(m, d) m(2, 165, d) +# define BOOST_PP_REPEAT_1_167(m, d) BOOST_PP_REPEAT_1_166(m, d) m(2, 166, d) +# define BOOST_PP_REPEAT_1_168(m, d) BOOST_PP_REPEAT_1_167(m, d) m(2, 167, d) +# define BOOST_PP_REPEAT_1_169(m, d) BOOST_PP_REPEAT_1_168(m, d) m(2, 168, d) +# define BOOST_PP_REPEAT_1_170(m, d) BOOST_PP_REPEAT_1_169(m, d) m(2, 169, d) +# define BOOST_PP_REPEAT_1_171(m, d) BOOST_PP_REPEAT_1_170(m, d) m(2, 170, d) +# define BOOST_PP_REPEAT_1_172(m, d) BOOST_PP_REPEAT_1_171(m, d) m(2, 171, d) +# define BOOST_PP_REPEAT_1_173(m, d) BOOST_PP_REPEAT_1_172(m, d) m(2, 172, d) +# define BOOST_PP_REPEAT_1_174(m, d) BOOST_PP_REPEAT_1_173(m, d) m(2, 173, d) +# define BOOST_PP_REPEAT_1_175(m, d) BOOST_PP_REPEAT_1_174(m, d) m(2, 174, d) +# define BOOST_PP_REPEAT_1_176(m, d) BOOST_PP_REPEAT_1_175(m, d) m(2, 175, d) +# define BOOST_PP_REPEAT_1_177(m, d) BOOST_PP_REPEAT_1_176(m, d) m(2, 176, d) +# define BOOST_PP_REPEAT_1_178(m, d) BOOST_PP_REPEAT_1_177(m, d) m(2, 177, d) +# define BOOST_PP_REPEAT_1_179(m, d) BOOST_PP_REPEAT_1_178(m, d) m(2, 178, d) +# define BOOST_PP_REPEAT_1_180(m, d) BOOST_PP_REPEAT_1_179(m, d) m(2, 179, d) +# define BOOST_PP_REPEAT_1_181(m, d) BOOST_PP_REPEAT_1_180(m, d) m(2, 180, d) +# define BOOST_PP_REPEAT_1_182(m, d) BOOST_PP_REPEAT_1_181(m, d) m(2, 181, d) +# define BOOST_PP_REPEAT_1_183(m, d) BOOST_PP_REPEAT_1_182(m, d) m(2, 182, d) +# define BOOST_PP_REPEAT_1_184(m, d) BOOST_PP_REPEAT_1_183(m, d) m(2, 183, d) +# define BOOST_PP_REPEAT_1_185(m, d) BOOST_PP_REPEAT_1_184(m, d) m(2, 184, d) +# define BOOST_PP_REPEAT_1_186(m, d) BOOST_PP_REPEAT_1_185(m, d) m(2, 185, d) +# define BOOST_PP_REPEAT_1_187(m, d) BOOST_PP_REPEAT_1_186(m, d) m(2, 186, d) +# define BOOST_PP_REPEAT_1_188(m, d) BOOST_PP_REPEAT_1_187(m, d) m(2, 187, d) +# define BOOST_PP_REPEAT_1_189(m, d) BOOST_PP_REPEAT_1_188(m, d) m(2, 188, d) +# define BOOST_PP_REPEAT_1_190(m, d) BOOST_PP_REPEAT_1_189(m, d) m(2, 189, d) +# define BOOST_PP_REPEAT_1_191(m, d) BOOST_PP_REPEAT_1_190(m, d) m(2, 190, d) +# define BOOST_PP_REPEAT_1_192(m, d) BOOST_PP_REPEAT_1_191(m, d) m(2, 191, d) +# define BOOST_PP_REPEAT_1_193(m, d) BOOST_PP_REPEAT_1_192(m, d) m(2, 192, d) +# define BOOST_PP_REPEAT_1_194(m, d) BOOST_PP_REPEAT_1_193(m, d) m(2, 193, d) +# define BOOST_PP_REPEAT_1_195(m, d) BOOST_PP_REPEAT_1_194(m, d) m(2, 194, d) +# define BOOST_PP_REPEAT_1_196(m, d) BOOST_PP_REPEAT_1_195(m, d) m(2, 195, d) +# define BOOST_PP_REPEAT_1_197(m, d) BOOST_PP_REPEAT_1_196(m, d) m(2, 196, d) +# define BOOST_PP_REPEAT_1_198(m, d) BOOST_PP_REPEAT_1_197(m, d) m(2, 197, d) +# define BOOST_PP_REPEAT_1_199(m, d) BOOST_PP_REPEAT_1_198(m, d) m(2, 198, d) +# define BOOST_PP_REPEAT_1_200(m, d) BOOST_PP_REPEAT_1_199(m, d) m(2, 199, d) +# define BOOST_PP_REPEAT_1_201(m, d) BOOST_PP_REPEAT_1_200(m, d) m(2, 200, d) +# define BOOST_PP_REPEAT_1_202(m, d) BOOST_PP_REPEAT_1_201(m, d) m(2, 201, d) +# define BOOST_PP_REPEAT_1_203(m, d) BOOST_PP_REPEAT_1_202(m, d) m(2, 202, d) +# define BOOST_PP_REPEAT_1_204(m, d) BOOST_PP_REPEAT_1_203(m, d) m(2, 203, d) +# define BOOST_PP_REPEAT_1_205(m, d) BOOST_PP_REPEAT_1_204(m, d) m(2, 204, d) +# define BOOST_PP_REPEAT_1_206(m, d) BOOST_PP_REPEAT_1_205(m, d) m(2, 205, d) +# define BOOST_PP_REPEAT_1_207(m, d) BOOST_PP_REPEAT_1_206(m, d) m(2, 206, d) +# define BOOST_PP_REPEAT_1_208(m, d) BOOST_PP_REPEAT_1_207(m, d) m(2, 207, d) +# define BOOST_PP_REPEAT_1_209(m, d) BOOST_PP_REPEAT_1_208(m, d) m(2, 208, d) +# define BOOST_PP_REPEAT_1_210(m, d) BOOST_PP_REPEAT_1_209(m, d) m(2, 209, d) +# define BOOST_PP_REPEAT_1_211(m, d) BOOST_PP_REPEAT_1_210(m, d) m(2, 210, d) +# define BOOST_PP_REPEAT_1_212(m, d) BOOST_PP_REPEAT_1_211(m, d) m(2, 211, d) +# define BOOST_PP_REPEAT_1_213(m, d) BOOST_PP_REPEAT_1_212(m, d) m(2, 212, d) +# define BOOST_PP_REPEAT_1_214(m, d) BOOST_PP_REPEAT_1_213(m, d) m(2, 213, d) +# define BOOST_PP_REPEAT_1_215(m, d) BOOST_PP_REPEAT_1_214(m, d) m(2, 214, d) +# define BOOST_PP_REPEAT_1_216(m, d) BOOST_PP_REPEAT_1_215(m, d) m(2, 215, d) +# define BOOST_PP_REPEAT_1_217(m, d) BOOST_PP_REPEAT_1_216(m, d) m(2, 216, d) +# define BOOST_PP_REPEAT_1_218(m, d) BOOST_PP_REPEAT_1_217(m, d) m(2, 217, d) +# define BOOST_PP_REPEAT_1_219(m, d) BOOST_PP_REPEAT_1_218(m, d) m(2, 218, d) +# define BOOST_PP_REPEAT_1_220(m, d) BOOST_PP_REPEAT_1_219(m, d) m(2, 219, d) +# define BOOST_PP_REPEAT_1_221(m, d) BOOST_PP_REPEAT_1_220(m, d) m(2, 220, d) +# define BOOST_PP_REPEAT_1_222(m, d) BOOST_PP_REPEAT_1_221(m, d) m(2, 221, d) +# define BOOST_PP_REPEAT_1_223(m, d) BOOST_PP_REPEAT_1_222(m, d) m(2, 222, d) +# define BOOST_PP_REPEAT_1_224(m, d) BOOST_PP_REPEAT_1_223(m, d) m(2, 223, d) +# define BOOST_PP_REPEAT_1_225(m, d) BOOST_PP_REPEAT_1_224(m, d) m(2, 224, d) +# define BOOST_PP_REPEAT_1_226(m, d) BOOST_PP_REPEAT_1_225(m, d) m(2, 225, d) +# define BOOST_PP_REPEAT_1_227(m, d) BOOST_PP_REPEAT_1_226(m, d) m(2, 226, d) +# define BOOST_PP_REPEAT_1_228(m, d) BOOST_PP_REPEAT_1_227(m, d) m(2, 227, d) +# define BOOST_PP_REPEAT_1_229(m, d) BOOST_PP_REPEAT_1_228(m, d) m(2, 228, d) +# define BOOST_PP_REPEAT_1_230(m, d) BOOST_PP_REPEAT_1_229(m, d) m(2, 229, d) +# define BOOST_PP_REPEAT_1_231(m, d) BOOST_PP_REPEAT_1_230(m, d) m(2, 230, d) +# define BOOST_PP_REPEAT_1_232(m, d) BOOST_PP_REPEAT_1_231(m, d) m(2, 231, d) +# define BOOST_PP_REPEAT_1_233(m, d) BOOST_PP_REPEAT_1_232(m, d) m(2, 232, d) +# define BOOST_PP_REPEAT_1_234(m, d) BOOST_PP_REPEAT_1_233(m, d) m(2, 233, d) +# define BOOST_PP_REPEAT_1_235(m, d) BOOST_PP_REPEAT_1_234(m, d) m(2, 234, d) +# define BOOST_PP_REPEAT_1_236(m, d) BOOST_PP_REPEAT_1_235(m, d) m(2, 235, d) +# define BOOST_PP_REPEAT_1_237(m, d) BOOST_PP_REPEAT_1_236(m, d) m(2, 236, d) +# define BOOST_PP_REPEAT_1_238(m, d) BOOST_PP_REPEAT_1_237(m, d) m(2, 237, d) +# define BOOST_PP_REPEAT_1_239(m, d) BOOST_PP_REPEAT_1_238(m, d) m(2, 238, d) +# define BOOST_PP_REPEAT_1_240(m, d) BOOST_PP_REPEAT_1_239(m, d) m(2, 239, d) +# define BOOST_PP_REPEAT_1_241(m, d) BOOST_PP_REPEAT_1_240(m, d) m(2, 240, d) +# define BOOST_PP_REPEAT_1_242(m, d) BOOST_PP_REPEAT_1_241(m, d) m(2, 241, d) +# define BOOST_PP_REPEAT_1_243(m, d) BOOST_PP_REPEAT_1_242(m, d) m(2, 242, d) +# define BOOST_PP_REPEAT_1_244(m, d) BOOST_PP_REPEAT_1_243(m, d) m(2, 243, d) +# define BOOST_PP_REPEAT_1_245(m, d) BOOST_PP_REPEAT_1_244(m, d) m(2, 244, d) +# define BOOST_PP_REPEAT_1_246(m, d) BOOST_PP_REPEAT_1_245(m, d) m(2, 245, d) +# define BOOST_PP_REPEAT_1_247(m, d) BOOST_PP_REPEAT_1_246(m, d) m(2, 246, d) +# define BOOST_PP_REPEAT_1_248(m, d) BOOST_PP_REPEAT_1_247(m, d) m(2, 247, d) +# define BOOST_PP_REPEAT_1_249(m, d) BOOST_PP_REPEAT_1_248(m, d) m(2, 248, d) +# define BOOST_PP_REPEAT_1_250(m, d) BOOST_PP_REPEAT_1_249(m, d) m(2, 249, d) +# define BOOST_PP_REPEAT_1_251(m, d) BOOST_PP_REPEAT_1_250(m, d) m(2, 250, d) +# define BOOST_PP_REPEAT_1_252(m, d) BOOST_PP_REPEAT_1_251(m, d) m(2, 251, d) +# define BOOST_PP_REPEAT_1_253(m, d) BOOST_PP_REPEAT_1_252(m, d) m(2, 252, d) +# define BOOST_PP_REPEAT_1_254(m, d) BOOST_PP_REPEAT_1_253(m, d) m(2, 253, d) +# define BOOST_PP_REPEAT_1_255(m, d) BOOST_PP_REPEAT_1_254(m, d) m(2, 254, d) +# define BOOST_PP_REPEAT_1_256(m, d) BOOST_PP_REPEAT_1_255(m, d) m(2, 255, d) +# +# define BOOST_PP_REPEAT_2_0(m, d) +# define BOOST_PP_REPEAT_2_1(m, d) m(3, 0, d) +# define BOOST_PP_REPEAT_2_2(m, d) BOOST_PP_REPEAT_2_1(m, d) m(3, 1, d) +# define BOOST_PP_REPEAT_2_3(m, d) BOOST_PP_REPEAT_2_2(m, d) m(3, 2, d) +# define BOOST_PP_REPEAT_2_4(m, d) BOOST_PP_REPEAT_2_3(m, d) m(3, 3, d) +# define BOOST_PP_REPEAT_2_5(m, d) BOOST_PP_REPEAT_2_4(m, d) m(3, 4, d) +# define BOOST_PP_REPEAT_2_6(m, d) BOOST_PP_REPEAT_2_5(m, d) m(3, 5, d) +# define BOOST_PP_REPEAT_2_7(m, d) BOOST_PP_REPEAT_2_6(m, d) m(3, 6, d) +# define BOOST_PP_REPEAT_2_8(m, d) BOOST_PP_REPEAT_2_7(m, d) m(3, 7, d) +# define BOOST_PP_REPEAT_2_9(m, d) BOOST_PP_REPEAT_2_8(m, d) m(3, 8, d) +# define BOOST_PP_REPEAT_2_10(m, d) BOOST_PP_REPEAT_2_9(m, d) m(3, 9, d) +# define BOOST_PP_REPEAT_2_11(m, d) BOOST_PP_REPEAT_2_10(m, d) m(3, 10, d) +# define BOOST_PP_REPEAT_2_12(m, d) BOOST_PP_REPEAT_2_11(m, d) m(3, 11, d) +# define BOOST_PP_REPEAT_2_13(m, d) BOOST_PP_REPEAT_2_12(m, d) m(3, 12, d) +# define BOOST_PP_REPEAT_2_14(m, d) BOOST_PP_REPEAT_2_13(m, d) m(3, 13, d) +# define BOOST_PP_REPEAT_2_15(m, d) BOOST_PP_REPEAT_2_14(m, d) m(3, 14, d) +# define BOOST_PP_REPEAT_2_16(m, d) BOOST_PP_REPEAT_2_15(m, d) m(3, 15, d) +# define BOOST_PP_REPEAT_2_17(m, d) BOOST_PP_REPEAT_2_16(m, d) m(3, 16, d) +# define BOOST_PP_REPEAT_2_18(m, d) BOOST_PP_REPEAT_2_17(m, d) m(3, 17, d) +# define BOOST_PP_REPEAT_2_19(m, d) BOOST_PP_REPEAT_2_18(m, d) m(3, 18, d) +# define BOOST_PP_REPEAT_2_20(m, d) BOOST_PP_REPEAT_2_19(m, d) m(3, 19, d) +# define BOOST_PP_REPEAT_2_21(m, d) BOOST_PP_REPEAT_2_20(m, d) m(3, 20, d) +# define BOOST_PP_REPEAT_2_22(m, d) BOOST_PP_REPEAT_2_21(m, d) m(3, 21, d) +# define BOOST_PP_REPEAT_2_23(m, d) BOOST_PP_REPEAT_2_22(m, d) m(3, 22, d) +# define BOOST_PP_REPEAT_2_24(m, d) BOOST_PP_REPEAT_2_23(m, d) m(3, 23, d) +# define BOOST_PP_REPEAT_2_25(m, d) BOOST_PP_REPEAT_2_24(m, d) m(3, 24, d) +# define BOOST_PP_REPEAT_2_26(m, d) BOOST_PP_REPEAT_2_25(m, d) m(3, 25, d) +# define BOOST_PP_REPEAT_2_27(m, d) BOOST_PP_REPEAT_2_26(m, d) m(3, 26, d) +# define BOOST_PP_REPEAT_2_28(m, d) BOOST_PP_REPEAT_2_27(m, d) m(3, 27, d) +# define BOOST_PP_REPEAT_2_29(m, d) BOOST_PP_REPEAT_2_28(m, d) m(3, 28, d) +# define BOOST_PP_REPEAT_2_30(m, d) BOOST_PP_REPEAT_2_29(m, d) m(3, 29, d) +# define BOOST_PP_REPEAT_2_31(m, d) BOOST_PP_REPEAT_2_30(m, d) m(3, 30, d) +# define BOOST_PP_REPEAT_2_32(m, d) BOOST_PP_REPEAT_2_31(m, d) m(3, 31, d) +# define BOOST_PP_REPEAT_2_33(m, d) BOOST_PP_REPEAT_2_32(m, d) m(3, 32, d) +# define BOOST_PP_REPEAT_2_34(m, d) BOOST_PP_REPEAT_2_33(m, d) m(3, 33, d) +# define BOOST_PP_REPEAT_2_35(m, d) BOOST_PP_REPEAT_2_34(m, d) m(3, 34, d) +# define BOOST_PP_REPEAT_2_36(m, d) BOOST_PP_REPEAT_2_35(m, d) m(3, 35, d) +# define BOOST_PP_REPEAT_2_37(m, d) BOOST_PP_REPEAT_2_36(m, d) m(3, 36, d) +# define BOOST_PP_REPEAT_2_38(m, d) BOOST_PP_REPEAT_2_37(m, d) m(3, 37, d) +# define BOOST_PP_REPEAT_2_39(m, d) BOOST_PP_REPEAT_2_38(m, d) m(3, 38, d) +# define BOOST_PP_REPEAT_2_40(m, d) BOOST_PP_REPEAT_2_39(m, d) m(3, 39, d) +# define BOOST_PP_REPEAT_2_41(m, d) BOOST_PP_REPEAT_2_40(m, d) m(3, 40, d) +# define BOOST_PP_REPEAT_2_42(m, d) BOOST_PP_REPEAT_2_41(m, d) m(3, 41, d) +# define BOOST_PP_REPEAT_2_43(m, d) BOOST_PP_REPEAT_2_42(m, d) m(3, 42, d) +# define BOOST_PP_REPEAT_2_44(m, d) BOOST_PP_REPEAT_2_43(m, d) m(3, 43, d) +# define BOOST_PP_REPEAT_2_45(m, d) BOOST_PP_REPEAT_2_44(m, d) m(3, 44, d) +# define BOOST_PP_REPEAT_2_46(m, d) BOOST_PP_REPEAT_2_45(m, d) m(3, 45, d) +# define BOOST_PP_REPEAT_2_47(m, d) BOOST_PP_REPEAT_2_46(m, d) m(3, 46, d) +# define BOOST_PP_REPEAT_2_48(m, d) BOOST_PP_REPEAT_2_47(m, d) m(3, 47, d) +# define BOOST_PP_REPEAT_2_49(m, d) BOOST_PP_REPEAT_2_48(m, d) m(3, 48, d) +# define BOOST_PP_REPEAT_2_50(m, d) BOOST_PP_REPEAT_2_49(m, d) m(3, 49, d) +# define BOOST_PP_REPEAT_2_51(m, d) BOOST_PP_REPEAT_2_50(m, d) m(3, 50, d) +# define BOOST_PP_REPEAT_2_52(m, d) BOOST_PP_REPEAT_2_51(m, d) m(3, 51, d) +# define BOOST_PP_REPEAT_2_53(m, d) BOOST_PP_REPEAT_2_52(m, d) m(3, 52, d) +# define BOOST_PP_REPEAT_2_54(m, d) BOOST_PP_REPEAT_2_53(m, d) m(3, 53, d) +# define BOOST_PP_REPEAT_2_55(m, d) BOOST_PP_REPEAT_2_54(m, d) m(3, 54, d) +# define BOOST_PP_REPEAT_2_56(m, d) BOOST_PP_REPEAT_2_55(m, d) m(3, 55, d) +# define BOOST_PP_REPEAT_2_57(m, d) BOOST_PP_REPEAT_2_56(m, d) m(3, 56, d) +# define BOOST_PP_REPEAT_2_58(m, d) BOOST_PP_REPEAT_2_57(m, d) m(3, 57, d) +# define BOOST_PP_REPEAT_2_59(m, d) BOOST_PP_REPEAT_2_58(m, d) m(3, 58, d) +# define BOOST_PP_REPEAT_2_60(m, d) BOOST_PP_REPEAT_2_59(m, d) m(3, 59, d) +# define BOOST_PP_REPEAT_2_61(m, d) BOOST_PP_REPEAT_2_60(m, d) m(3, 60, d) +# define BOOST_PP_REPEAT_2_62(m, d) BOOST_PP_REPEAT_2_61(m, d) m(3, 61, d) +# define BOOST_PP_REPEAT_2_63(m, d) BOOST_PP_REPEAT_2_62(m, d) m(3, 62, d) +# define BOOST_PP_REPEAT_2_64(m, d) BOOST_PP_REPEAT_2_63(m, d) m(3, 63, d) +# define BOOST_PP_REPEAT_2_65(m, d) BOOST_PP_REPEAT_2_64(m, d) m(3, 64, d) +# define BOOST_PP_REPEAT_2_66(m, d) BOOST_PP_REPEAT_2_65(m, d) m(3, 65, d) +# define BOOST_PP_REPEAT_2_67(m, d) BOOST_PP_REPEAT_2_66(m, d) m(3, 66, d) +# define BOOST_PP_REPEAT_2_68(m, d) BOOST_PP_REPEAT_2_67(m, d) m(3, 67, d) +# define BOOST_PP_REPEAT_2_69(m, d) BOOST_PP_REPEAT_2_68(m, d) m(3, 68, d) +# define BOOST_PP_REPEAT_2_70(m, d) BOOST_PP_REPEAT_2_69(m, d) m(3, 69, d) +# define BOOST_PP_REPEAT_2_71(m, d) BOOST_PP_REPEAT_2_70(m, d) m(3, 70, d) +# define BOOST_PP_REPEAT_2_72(m, d) BOOST_PP_REPEAT_2_71(m, d) m(3, 71, d) +# define BOOST_PP_REPEAT_2_73(m, d) BOOST_PP_REPEAT_2_72(m, d) m(3, 72, d) +# define BOOST_PP_REPEAT_2_74(m, d) BOOST_PP_REPEAT_2_73(m, d) m(3, 73, d) +# define BOOST_PP_REPEAT_2_75(m, d) BOOST_PP_REPEAT_2_74(m, d) m(3, 74, d) +# define BOOST_PP_REPEAT_2_76(m, d) BOOST_PP_REPEAT_2_75(m, d) m(3, 75, d) +# define BOOST_PP_REPEAT_2_77(m, d) BOOST_PP_REPEAT_2_76(m, d) m(3, 76, d) +# define BOOST_PP_REPEAT_2_78(m, d) BOOST_PP_REPEAT_2_77(m, d) m(3, 77, d) +# define BOOST_PP_REPEAT_2_79(m, d) BOOST_PP_REPEAT_2_78(m, d) m(3, 78, d) +# define BOOST_PP_REPEAT_2_80(m, d) BOOST_PP_REPEAT_2_79(m, d) m(3, 79, d) +# define BOOST_PP_REPEAT_2_81(m, d) BOOST_PP_REPEAT_2_80(m, d) m(3, 80, d) +# define BOOST_PP_REPEAT_2_82(m, d) BOOST_PP_REPEAT_2_81(m, d) m(3, 81, d) +# define BOOST_PP_REPEAT_2_83(m, d) BOOST_PP_REPEAT_2_82(m, d) m(3, 82, d) +# define BOOST_PP_REPEAT_2_84(m, d) BOOST_PP_REPEAT_2_83(m, d) m(3, 83, d) +# define BOOST_PP_REPEAT_2_85(m, d) BOOST_PP_REPEAT_2_84(m, d) m(3, 84, d) +# define BOOST_PP_REPEAT_2_86(m, d) BOOST_PP_REPEAT_2_85(m, d) m(3, 85, d) +# define BOOST_PP_REPEAT_2_87(m, d) BOOST_PP_REPEAT_2_86(m, d) m(3, 86, d) +# define BOOST_PP_REPEAT_2_88(m, d) BOOST_PP_REPEAT_2_87(m, d) m(3, 87, d) +# define BOOST_PP_REPEAT_2_89(m, d) BOOST_PP_REPEAT_2_88(m, d) m(3, 88, d) +# define BOOST_PP_REPEAT_2_90(m, d) BOOST_PP_REPEAT_2_89(m, d) m(3, 89, d) +# define BOOST_PP_REPEAT_2_91(m, d) BOOST_PP_REPEAT_2_90(m, d) m(3, 90, d) +# define BOOST_PP_REPEAT_2_92(m, d) BOOST_PP_REPEAT_2_91(m, d) m(3, 91, d) +# define BOOST_PP_REPEAT_2_93(m, d) BOOST_PP_REPEAT_2_92(m, d) m(3, 92, d) +# define BOOST_PP_REPEAT_2_94(m, d) BOOST_PP_REPEAT_2_93(m, d) m(3, 93, d) +# define BOOST_PP_REPEAT_2_95(m, d) BOOST_PP_REPEAT_2_94(m, d) m(3, 94, d) +# define BOOST_PP_REPEAT_2_96(m, d) BOOST_PP_REPEAT_2_95(m, d) m(3, 95, d) +# define BOOST_PP_REPEAT_2_97(m, d) BOOST_PP_REPEAT_2_96(m, d) m(3, 96, d) +# define BOOST_PP_REPEAT_2_98(m, d) BOOST_PP_REPEAT_2_97(m, d) m(3, 97, d) +# define BOOST_PP_REPEAT_2_99(m, d) BOOST_PP_REPEAT_2_98(m, d) m(3, 98, d) +# define BOOST_PP_REPEAT_2_100(m, d) BOOST_PP_REPEAT_2_99(m, d) m(3, 99, d) +# define BOOST_PP_REPEAT_2_101(m, d) BOOST_PP_REPEAT_2_100(m, d) m(3, 100, d) +# define BOOST_PP_REPEAT_2_102(m, d) BOOST_PP_REPEAT_2_101(m, d) m(3, 101, d) +# define BOOST_PP_REPEAT_2_103(m, d) BOOST_PP_REPEAT_2_102(m, d) m(3, 102, d) +# define BOOST_PP_REPEAT_2_104(m, d) BOOST_PP_REPEAT_2_103(m, d) m(3, 103, d) +# define BOOST_PP_REPEAT_2_105(m, d) BOOST_PP_REPEAT_2_104(m, d) m(3, 104, d) +# define BOOST_PP_REPEAT_2_106(m, d) BOOST_PP_REPEAT_2_105(m, d) m(3, 105, d) +# define BOOST_PP_REPEAT_2_107(m, d) BOOST_PP_REPEAT_2_106(m, d) m(3, 106, d) +# define BOOST_PP_REPEAT_2_108(m, d) BOOST_PP_REPEAT_2_107(m, d) m(3, 107, d) +# define BOOST_PP_REPEAT_2_109(m, d) BOOST_PP_REPEAT_2_108(m, d) m(3, 108, d) +# define BOOST_PP_REPEAT_2_110(m, d) BOOST_PP_REPEAT_2_109(m, d) m(3, 109, d) +# define BOOST_PP_REPEAT_2_111(m, d) BOOST_PP_REPEAT_2_110(m, d) m(3, 110, d) +# define BOOST_PP_REPEAT_2_112(m, d) BOOST_PP_REPEAT_2_111(m, d) m(3, 111, d) +# define BOOST_PP_REPEAT_2_113(m, d) BOOST_PP_REPEAT_2_112(m, d) m(3, 112, d) +# define BOOST_PP_REPEAT_2_114(m, d) BOOST_PP_REPEAT_2_113(m, d) m(3, 113, d) +# define BOOST_PP_REPEAT_2_115(m, d) BOOST_PP_REPEAT_2_114(m, d) m(3, 114, d) +# define BOOST_PP_REPEAT_2_116(m, d) BOOST_PP_REPEAT_2_115(m, d) m(3, 115, d) +# define BOOST_PP_REPEAT_2_117(m, d) BOOST_PP_REPEAT_2_116(m, d) m(3, 116, d) +# define BOOST_PP_REPEAT_2_118(m, d) BOOST_PP_REPEAT_2_117(m, d) m(3, 117, d) +# define BOOST_PP_REPEAT_2_119(m, d) BOOST_PP_REPEAT_2_118(m, d) m(3, 118, d) +# define BOOST_PP_REPEAT_2_120(m, d) BOOST_PP_REPEAT_2_119(m, d) m(3, 119, d) +# define BOOST_PP_REPEAT_2_121(m, d) BOOST_PP_REPEAT_2_120(m, d) m(3, 120, d) +# define BOOST_PP_REPEAT_2_122(m, d) BOOST_PP_REPEAT_2_121(m, d) m(3, 121, d) +# define BOOST_PP_REPEAT_2_123(m, d) BOOST_PP_REPEAT_2_122(m, d) m(3, 122, d) +# define BOOST_PP_REPEAT_2_124(m, d) BOOST_PP_REPEAT_2_123(m, d) m(3, 123, d) +# define BOOST_PP_REPEAT_2_125(m, d) BOOST_PP_REPEAT_2_124(m, d) m(3, 124, d) +# define BOOST_PP_REPEAT_2_126(m, d) BOOST_PP_REPEAT_2_125(m, d) m(3, 125, d) +# define BOOST_PP_REPEAT_2_127(m, d) BOOST_PP_REPEAT_2_126(m, d) m(3, 126, d) +# define BOOST_PP_REPEAT_2_128(m, d) BOOST_PP_REPEAT_2_127(m, d) m(3, 127, d) +# define BOOST_PP_REPEAT_2_129(m, d) BOOST_PP_REPEAT_2_128(m, d) m(3, 128, d) +# define BOOST_PP_REPEAT_2_130(m, d) BOOST_PP_REPEAT_2_129(m, d) m(3, 129, d) +# define BOOST_PP_REPEAT_2_131(m, d) BOOST_PP_REPEAT_2_130(m, d) m(3, 130, d) +# define BOOST_PP_REPEAT_2_132(m, d) BOOST_PP_REPEAT_2_131(m, d) m(3, 131, d) +# define BOOST_PP_REPEAT_2_133(m, d) BOOST_PP_REPEAT_2_132(m, d) m(3, 132, d) +# define BOOST_PP_REPEAT_2_134(m, d) BOOST_PP_REPEAT_2_133(m, d) m(3, 133, d) +# define BOOST_PP_REPEAT_2_135(m, d) BOOST_PP_REPEAT_2_134(m, d) m(3, 134, d) +# define BOOST_PP_REPEAT_2_136(m, d) BOOST_PP_REPEAT_2_135(m, d) m(3, 135, d) +# define BOOST_PP_REPEAT_2_137(m, d) BOOST_PP_REPEAT_2_136(m, d) m(3, 136, d) +# define BOOST_PP_REPEAT_2_138(m, d) BOOST_PP_REPEAT_2_137(m, d) m(3, 137, d) +# define BOOST_PP_REPEAT_2_139(m, d) BOOST_PP_REPEAT_2_138(m, d) m(3, 138, d) +# define BOOST_PP_REPEAT_2_140(m, d) BOOST_PP_REPEAT_2_139(m, d) m(3, 139, d) +# define BOOST_PP_REPEAT_2_141(m, d) BOOST_PP_REPEAT_2_140(m, d) m(3, 140, d) +# define BOOST_PP_REPEAT_2_142(m, d) BOOST_PP_REPEAT_2_141(m, d) m(3, 141, d) +# define BOOST_PP_REPEAT_2_143(m, d) BOOST_PP_REPEAT_2_142(m, d) m(3, 142, d) +# define BOOST_PP_REPEAT_2_144(m, d) BOOST_PP_REPEAT_2_143(m, d) m(3, 143, d) +# define BOOST_PP_REPEAT_2_145(m, d) BOOST_PP_REPEAT_2_144(m, d) m(3, 144, d) +# define BOOST_PP_REPEAT_2_146(m, d) BOOST_PP_REPEAT_2_145(m, d) m(3, 145, d) +# define BOOST_PP_REPEAT_2_147(m, d) BOOST_PP_REPEAT_2_146(m, d) m(3, 146, d) +# define BOOST_PP_REPEAT_2_148(m, d) BOOST_PP_REPEAT_2_147(m, d) m(3, 147, d) +# define BOOST_PP_REPEAT_2_149(m, d) BOOST_PP_REPEAT_2_148(m, d) m(3, 148, d) +# define BOOST_PP_REPEAT_2_150(m, d) BOOST_PP_REPEAT_2_149(m, d) m(3, 149, d) +# define BOOST_PP_REPEAT_2_151(m, d) BOOST_PP_REPEAT_2_150(m, d) m(3, 150, d) +# define BOOST_PP_REPEAT_2_152(m, d) BOOST_PP_REPEAT_2_151(m, d) m(3, 151, d) +# define BOOST_PP_REPEAT_2_153(m, d) BOOST_PP_REPEAT_2_152(m, d) m(3, 152, d) +# define BOOST_PP_REPEAT_2_154(m, d) BOOST_PP_REPEAT_2_153(m, d) m(3, 153, d) +# define BOOST_PP_REPEAT_2_155(m, d) BOOST_PP_REPEAT_2_154(m, d) m(3, 154, d) +# define BOOST_PP_REPEAT_2_156(m, d) BOOST_PP_REPEAT_2_155(m, d) m(3, 155, d) +# define BOOST_PP_REPEAT_2_157(m, d) BOOST_PP_REPEAT_2_156(m, d) m(3, 156, d) +# define BOOST_PP_REPEAT_2_158(m, d) BOOST_PP_REPEAT_2_157(m, d) m(3, 157, d) +# define BOOST_PP_REPEAT_2_159(m, d) BOOST_PP_REPEAT_2_158(m, d) m(3, 158, d) +# define BOOST_PP_REPEAT_2_160(m, d) BOOST_PP_REPEAT_2_159(m, d) m(3, 159, d) +# define BOOST_PP_REPEAT_2_161(m, d) BOOST_PP_REPEAT_2_160(m, d) m(3, 160, d) +# define BOOST_PP_REPEAT_2_162(m, d) BOOST_PP_REPEAT_2_161(m, d) m(3, 161, d) +# define BOOST_PP_REPEAT_2_163(m, d) BOOST_PP_REPEAT_2_162(m, d) m(3, 162, d) +# define BOOST_PP_REPEAT_2_164(m, d) BOOST_PP_REPEAT_2_163(m, d) m(3, 163, d) +# define BOOST_PP_REPEAT_2_165(m, d) BOOST_PP_REPEAT_2_164(m, d) m(3, 164, d) +# define BOOST_PP_REPEAT_2_166(m, d) BOOST_PP_REPEAT_2_165(m, d) m(3, 165, d) +# define BOOST_PP_REPEAT_2_167(m, d) BOOST_PP_REPEAT_2_166(m, d) m(3, 166, d) +# define BOOST_PP_REPEAT_2_168(m, d) BOOST_PP_REPEAT_2_167(m, d) m(3, 167, d) +# define BOOST_PP_REPEAT_2_169(m, d) BOOST_PP_REPEAT_2_168(m, d) m(3, 168, d) +# define BOOST_PP_REPEAT_2_170(m, d) BOOST_PP_REPEAT_2_169(m, d) m(3, 169, d) +# define BOOST_PP_REPEAT_2_171(m, d) BOOST_PP_REPEAT_2_170(m, d) m(3, 170, d) +# define BOOST_PP_REPEAT_2_172(m, d) BOOST_PP_REPEAT_2_171(m, d) m(3, 171, d) +# define BOOST_PP_REPEAT_2_173(m, d) BOOST_PP_REPEAT_2_172(m, d) m(3, 172, d) +# define BOOST_PP_REPEAT_2_174(m, d) BOOST_PP_REPEAT_2_173(m, d) m(3, 173, d) +# define BOOST_PP_REPEAT_2_175(m, d) BOOST_PP_REPEAT_2_174(m, d) m(3, 174, d) +# define BOOST_PP_REPEAT_2_176(m, d) BOOST_PP_REPEAT_2_175(m, d) m(3, 175, d) +# define BOOST_PP_REPEAT_2_177(m, d) BOOST_PP_REPEAT_2_176(m, d) m(3, 176, d) +# define BOOST_PP_REPEAT_2_178(m, d) BOOST_PP_REPEAT_2_177(m, d) m(3, 177, d) +# define BOOST_PP_REPEAT_2_179(m, d) BOOST_PP_REPEAT_2_178(m, d) m(3, 178, d) +# define BOOST_PP_REPEAT_2_180(m, d) BOOST_PP_REPEAT_2_179(m, d) m(3, 179, d) +# define BOOST_PP_REPEAT_2_181(m, d) BOOST_PP_REPEAT_2_180(m, d) m(3, 180, d) +# define BOOST_PP_REPEAT_2_182(m, d) BOOST_PP_REPEAT_2_181(m, d) m(3, 181, d) +# define BOOST_PP_REPEAT_2_183(m, d) BOOST_PP_REPEAT_2_182(m, d) m(3, 182, d) +# define BOOST_PP_REPEAT_2_184(m, d) BOOST_PP_REPEAT_2_183(m, d) m(3, 183, d) +# define BOOST_PP_REPEAT_2_185(m, d) BOOST_PP_REPEAT_2_184(m, d) m(3, 184, d) +# define BOOST_PP_REPEAT_2_186(m, d) BOOST_PP_REPEAT_2_185(m, d) m(3, 185, d) +# define BOOST_PP_REPEAT_2_187(m, d) BOOST_PP_REPEAT_2_186(m, d) m(3, 186, d) +# define BOOST_PP_REPEAT_2_188(m, d) BOOST_PP_REPEAT_2_187(m, d) m(3, 187, d) +# define BOOST_PP_REPEAT_2_189(m, d) BOOST_PP_REPEAT_2_188(m, d) m(3, 188, d) +# define BOOST_PP_REPEAT_2_190(m, d) BOOST_PP_REPEAT_2_189(m, d) m(3, 189, d) +# define BOOST_PP_REPEAT_2_191(m, d) BOOST_PP_REPEAT_2_190(m, d) m(3, 190, d) +# define BOOST_PP_REPEAT_2_192(m, d) BOOST_PP_REPEAT_2_191(m, d) m(3, 191, d) +# define BOOST_PP_REPEAT_2_193(m, d) BOOST_PP_REPEAT_2_192(m, d) m(3, 192, d) +# define BOOST_PP_REPEAT_2_194(m, d) BOOST_PP_REPEAT_2_193(m, d) m(3, 193, d) +# define BOOST_PP_REPEAT_2_195(m, d) BOOST_PP_REPEAT_2_194(m, d) m(3, 194, d) +# define BOOST_PP_REPEAT_2_196(m, d) BOOST_PP_REPEAT_2_195(m, d) m(3, 195, d) +# define BOOST_PP_REPEAT_2_197(m, d) BOOST_PP_REPEAT_2_196(m, d) m(3, 196, d) +# define BOOST_PP_REPEAT_2_198(m, d) BOOST_PP_REPEAT_2_197(m, d) m(3, 197, d) +# define BOOST_PP_REPEAT_2_199(m, d) BOOST_PP_REPEAT_2_198(m, d) m(3, 198, d) +# define BOOST_PP_REPEAT_2_200(m, d) BOOST_PP_REPEAT_2_199(m, d) m(3, 199, d) +# define BOOST_PP_REPEAT_2_201(m, d) BOOST_PP_REPEAT_2_200(m, d) m(3, 200, d) +# define BOOST_PP_REPEAT_2_202(m, d) BOOST_PP_REPEAT_2_201(m, d) m(3, 201, d) +# define BOOST_PP_REPEAT_2_203(m, d) BOOST_PP_REPEAT_2_202(m, d) m(3, 202, d) +# define BOOST_PP_REPEAT_2_204(m, d) BOOST_PP_REPEAT_2_203(m, d) m(3, 203, d) +# define BOOST_PP_REPEAT_2_205(m, d) BOOST_PP_REPEAT_2_204(m, d) m(3, 204, d) +# define BOOST_PP_REPEAT_2_206(m, d) BOOST_PP_REPEAT_2_205(m, d) m(3, 205, d) +# define BOOST_PP_REPEAT_2_207(m, d) BOOST_PP_REPEAT_2_206(m, d) m(3, 206, d) +# define BOOST_PP_REPEAT_2_208(m, d) BOOST_PP_REPEAT_2_207(m, d) m(3, 207, d) +# define BOOST_PP_REPEAT_2_209(m, d) BOOST_PP_REPEAT_2_208(m, d) m(3, 208, d) +# define BOOST_PP_REPEAT_2_210(m, d) BOOST_PP_REPEAT_2_209(m, d) m(3, 209, d) +# define BOOST_PP_REPEAT_2_211(m, d) BOOST_PP_REPEAT_2_210(m, d) m(3, 210, d) +# define BOOST_PP_REPEAT_2_212(m, d) BOOST_PP_REPEAT_2_211(m, d) m(3, 211, d) +# define BOOST_PP_REPEAT_2_213(m, d) BOOST_PP_REPEAT_2_212(m, d) m(3, 212, d) +# define BOOST_PP_REPEAT_2_214(m, d) BOOST_PP_REPEAT_2_213(m, d) m(3, 213, d) +# define BOOST_PP_REPEAT_2_215(m, d) BOOST_PP_REPEAT_2_214(m, d) m(3, 214, d) +# define BOOST_PP_REPEAT_2_216(m, d) BOOST_PP_REPEAT_2_215(m, d) m(3, 215, d) +# define BOOST_PP_REPEAT_2_217(m, d) BOOST_PP_REPEAT_2_216(m, d) m(3, 216, d) +# define BOOST_PP_REPEAT_2_218(m, d) BOOST_PP_REPEAT_2_217(m, d) m(3, 217, d) +# define BOOST_PP_REPEAT_2_219(m, d) BOOST_PP_REPEAT_2_218(m, d) m(3, 218, d) +# define BOOST_PP_REPEAT_2_220(m, d) BOOST_PP_REPEAT_2_219(m, d) m(3, 219, d) +# define BOOST_PP_REPEAT_2_221(m, d) BOOST_PP_REPEAT_2_220(m, d) m(3, 220, d) +# define BOOST_PP_REPEAT_2_222(m, d) BOOST_PP_REPEAT_2_221(m, d) m(3, 221, d) +# define BOOST_PP_REPEAT_2_223(m, d) BOOST_PP_REPEAT_2_222(m, d) m(3, 222, d) +# define BOOST_PP_REPEAT_2_224(m, d) BOOST_PP_REPEAT_2_223(m, d) m(3, 223, d) +# define BOOST_PP_REPEAT_2_225(m, d) BOOST_PP_REPEAT_2_224(m, d) m(3, 224, d) +# define BOOST_PP_REPEAT_2_226(m, d) BOOST_PP_REPEAT_2_225(m, d) m(3, 225, d) +# define BOOST_PP_REPEAT_2_227(m, d) BOOST_PP_REPEAT_2_226(m, d) m(3, 226, d) +# define BOOST_PP_REPEAT_2_228(m, d) BOOST_PP_REPEAT_2_227(m, d) m(3, 227, d) +# define BOOST_PP_REPEAT_2_229(m, d) BOOST_PP_REPEAT_2_228(m, d) m(3, 228, d) +# define BOOST_PP_REPEAT_2_230(m, d) BOOST_PP_REPEAT_2_229(m, d) m(3, 229, d) +# define BOOST_PP_REPEAT_2_231(m, d) BOOST_PP_REPEAT_2_230(m, d) m(3, 230, d) +# define BOOST_PP_REPEAT_2_232(m, d) BOOST_PP_REPEAT_2_231(m, d) m(3, 231, d) +# define BOOST_PP_REPEAT_2_233(m, d) BOOST_PP_REPEAT_2_232(m, d) m(3, 232, d) +# define BOOST_PP_REPEAT_2_234(m, d) BOOST_PP_REPEAT_2_233(m, d) m(3, 233, d) +# define BOOST_PP_REPEAT_2_235(m, d) BOOST_PP_REPEAT_2_234(m, d) m(3, 234, d) +# define BOOST_PP_REPEAT_2_236(m, d) BOOST_PP_REPEAT_2_235(m, d) m(3, 235, d) +# define BOOST_PP_REPEAT_2_237(m, d) BOOST_PP_REPEAT_2_236(m, d) m(3, 236, d) +# define BOOST_PP_REPEAT_2_238(m, d) BOOST_PP_REPEAT_2_237(m, d) m(3, 237, d) +# define BOOST_PP_REPEAT_2_239(m, d) BOOST_PP_REPEAT_2_238(m, d) m(3, 238, d) +# define BOOST_PP_REPEAT_2_240(m, d) BOOST_PP_REPEAT_2_239(m, d) m(3, 239, d) +# define BOOST_PP_REPEAT_2_241(m, d) BOOST_PP_REPEAT_2_240(m, d) m(3, 240, d) +# define BOOST_PP_REPEAT_2_242(m, d) BOOST_PP_REPEAT_2_241(m, d) m(3, 241, d) +# define BOOST_PP_REPEAT_2_243(m, d) BOOST_PP_REPEAT_2_242(m, d) m(3, 242, d) +# define BOOST_PP_REPEAT_2_244(m, d) BOOST_PP_REPEAT_2_243(m, d) m(3, 243, d) +# define BOOST_PP_REPEAT_2_245(m, d) BOOST_PP_REPEAT_2_244(m, d) m(3, 244, d) +# define BOOST_PP_REPEAT_2_246(m, d) BOOST_PP_REPEAT_2_245(m, d) m(3, 245, d) +# define BOOST_PP_REPEAT_2_247(m, d) BOOST_PP_REPEAT_2_246(m, d) m(3, 246, d) +# define BOOST_PP_REPEAT_2_248(m, d) BOOST_PP_REPEAT_2_247(m, d) m(3, 247, d) +# define BOOST_PP_REPEAT_2_249(m, d) BOOST_PP_REPEAT_2_248(m, d) m(3, 248, d) +# define BOOST_PP_REPEAT_2_250(m, d) BOOST_PP_REPEAT_2_249(m, d) m(3, 249, d) +# define BOOST_PP_REPEAT_2_251(m, d) BOOST_PP_REPEAT_2_250(m, d) m(3, 250, d) +# define BOOST_PP_REPEAT_2_252(m, d) BOOST_PP_REPEAT_2_251(m, d) m(3, 251, d) +# define BOOST_PP_REPEAT_2_253(m, d) BOOST_PP_REPEAT_2_252(m, d) m(3, 252, d) +# define BOOST_PP_REPEAT_2_254(m, d) BOOST_PP_REPEAT_2_253(m, d) m(3, 253, d) +# define BOOST_PP_REPEAT_2_255(m, d) BOOST_PP_REPEAT_2_254(m, d) m(3, 254, d) +# define BOOST_PP_REPEAT_2_256(m, d) BOOST_PP_REPEAT_2_255(m, d) m(3, 255, d) +# +# define BOOST_PP_REPEAT_3_0(m, d) +# define BOOST_PP_REPEAT_3_1(m, d) m(4, 0, d) +# define BOOST_PP_REPEAT_3_2(m, d) BOOST_PP_REPEAT_3_1(m, d) m(4, 1, d) +# define BOOST_PP_REPEAT_3_3(m, d) BOOST_PP_REPEAT_3_2(m, d) m(4, 2, d) +# define BOOST_PP_REPEAT_3_4(m, d) BOOST_PP_REPEAT_3_3(m, d) m(4, 3, d) +# define BOOST_PP_REPEAT_3_5(m, d) BOOST_PP_REPEAT_3_4(m, d) m(4, 4, d) +# define BOOST_PP_REPEAT_3_6(m, d) BOOST_PP_REPEAT_3_5(m, d) m(4, 5, d) +# define BOOST_PP_REPEAT_3_7(m, d) BOOST_PP_REPEAT_3_6(m, d) m(4, 6, d) +# define BOOST_PP_REPEAT_3_8(m, d) BOOST_PP_REPEAT_3_7(m, d) m(4, 7, d) +# define BOOST_PP_REPEAT_3_9(m, d) BOOST_PP_REPEAT_3_8(m, d) m(4, 8, d) +# define BOOST_PP_REPEAT_3_10(m, d) BOOST_PP_REPEAT_3_9(m, d) m(4, 9, d) +# define BOOST_PP_REPEAT_3_11(m, d) BOOST_PP_REPEAT_3_10(m, d) m(4, 10, d) +# define BOOST_PP_REPEAT_3_12(m, d) BOOST_PP_REPEAT_3_11(m, d) m(4, 11, d) +# define BOOST_PP_REPEAT_3_13(m, d) BOOST_PP_REPEAT_3_12(m, d) m(4, 12, d) +# define BOOST_PP_REPEAT_3_14(m, d) BOOST_PP_REPEAT_3_13(m, d) m(4, 13, d) +# define BOOST_PP_REPEAT_3_15(m, d) BOOST_PP_REPEAT_3_14(m, d) m(4, 14, d) +# define BOOST_PP_REPEAT_3_16(m, d) BOOST_PP_REPEAT_3_15(m, d) m(4, 15, d) +# define BOOST_PP_REPEAT_3_17(m, d) BOOST_PP_REPEAT_3_16(m, d) m(4, 16, d) +# define BOOST_PP_REPEAT_3_18(m, d) BOOST_PP_REPEAT_3_17(m, d) m(4, 17, d) +# define BOOST_PP_REPEAT_3_19(m, d) BOOST_PP_REPEAT_3_18(m, d) m(4, 18, d) +# define BOOST_PP_REPEAT_3_20(m, d) BOOST_PP_REPEAT_3_19(m, d) m(4, 19, d) +# define BOOST_PP_REPEAT_3_21(m, d) BOOST_PP_REPEAT_3_20(m, d) m(4, 20, d) +# define BOOST_PP_REPEAT_3_22(m, d) BOOST_PP_REPEAT_3_21(m, d) m(4, 21, d) +# define BOOST_PP_REPEAT_3_23(m, d) BOOST_PP_REPEAT_3_22(m, d) m(4, 22, d) +# define BOOST_PP_REPEAT_3_24(m, d) BOOST_PP_REPEAT_3_23(m, d) m(4, 23, d) +# define BOOST_PP_REPEAT_3_25(m, d) BOOST_PP_REPEAT_3_24(m, d) m(4, 24, d) +# define BOOST_PP_REPEAT_3_26(m, d) BOOST_PP_REPEAT_3_25(m, d) m(4, 25, d) +# define BOOST_PP_REPEAT_3_27(m, d) BOOST_PP_REPEAT_3_26(m, d) m(4, 26, d) +# define BOOST_PP_REPEAT_3_28(m, d) BOOST_PP_REPEAT_3_27(m, d) m(4, 27, d) +# define BOOST_PP_REPEAT_3_29(m, d) BOOST_PP_REPEAT_3_28(m, d) m(4, 28, d) +# define BOOST_PP_REPEAT_3_30(m, d) BOOST_PP_REPEAT_3_29(m, d) m(4, 29, d) +# define BOOST_PP_REPEAT_3_31(m, d) BOOST_PP_REPEAT_3_30(m, d) m(4, 30, d) +# define BOOST_PP_REPEAT_3_32(m, d) BOOST_PP_REPEAT_3_31(m, d) m(4, 31, d) +# define BOOST_PP_REPEAT_3_33(m, d) BOOST_PP_REPEAT_3_32(m, d) m(4, 32, d) +# define BOOST_PP_REPEAT_3_34(m, d) BOOST_PP_REPEAT_3_33(m, d) m(4, 33, d) +# define BOOST_PP_REPEAT_3_35(m, d) BOOST_PP_REPEAT_3_34(m, d) m(4, 34, d) +# define BOOST_PP_REPEAT_3_36(m, d) BOOST_PP_REPEAT_3_35(m, d) m(4, 35, d) +# define BOOST_PP_REPEAT_3_37(m, d) BOOST_PP_REPEAT_3_36(m, d) m(4, 36, d) +# define BOOST_PP_REPEAT_3_38(m, d) BOOST_PP_REPEAT_3_37(m, d) m(4, 37, d) +# define BOOST_PP_REPEAT_3_39(m, d) BOOST_PP_REPEAT_3_38(m, d) m(4, 38, d) +# define BOOST_PP_REPEAT_3_40(m, d) BOOST_PP_REPEAT_3_39(m, d) m(4, 39, d) +# define BOOST_PP_REPEAT_3_41(m, d) BOOST_PP_REPEAT_3_40(m, d) m(4, 40, d) +# define BOOST_PP_REPEAT_3_42(m, d) BOOST_PP_REPEAT_3_41(m, d) m(4, 41, d) +# define BOOST_PP_REPEAT_3_43(m, d) BOOST_PP_REPEAT_3_42(m, d) m(4, 42, d) +# define BOOST_PP_REPEAT_3_44(m, d) BOOST_PP_REPEAT_3_43(m, d) m(4, 43, d) +# define BOOST_PP_REPEAT_3_45(m, d) BOOST_PP_REPEAT_3_44(m, d) m(4, 44, d) +# define BOOST_PP_REPEAT_3_46(m, d) BOOST_PP_REPEAT_3_45(m, d) m(4, 45, d) +# define BOOST_PP_REPEAT_3_47(m, d) BOOST_PP_REPEAT_3_46(m, d) m(4, 46, d) +# define BOOST_PP_REPEAT_3_48(m, d) BOOST_PP_REPEAT_3_47(m, d) m(4, 47, d) +# define BOOST_PP_REPEAT_3_49(m, d) BOOST_PP_REPEAT_3_48(m, d) m(4, 48, d) +# define BOOST_PP_REPEAT_3_50(m, d) BOOST_PP_REPEAT_3_49(m, d) m(4, 49, d) +# define BOOST_PP_REPEAT_3_51(m, d) BOOST_PP_REPEAT_3_50(m, d) m(4, 50, d) +# define BOOST_PP_REPEAT_3_52(m, d) BOOST_PP_REPEAT_3_51(m, d) m(4, 51, d) +# define BOOST_PP_REPEAT_3_53(m, d) BOOST_PP_REPEAT_3_52(m, d) m(4, 52, d) +# define BOOST_PP_REPEAT_3_54(m, d) BOOST_PP_REPEAT_3_53(m, d) m(4, 53, d) +# define BOOST_PP_REPEAT_3_55(m, d) BOOST_PP_REPEAT_3_54(m, d) m(4, 54, d) +# define BOOST_PP_REPEAT_3_56(m, d) BOOST_PP_REPEAT_3_55(m, d) m(4, 55, d) +# define BOOST_PP_REPEAT_3_57(m, d) BOOST_PP_REPEAT_3_56(m, d) m(4, 56, d) +# define BOOST_PP_REPEAT_3_58(m, d) BOOST_PP_REPEAT_3_57(m, d) m(4, 57, d) +# define BOOST_PP_REPEAT_3_59(m, d) BOOST_PP_REPEAT_3_58(m, d) m(4, 58, d) +# define BOOST_PP_REPEAT_3_60(m, d) BOOST_PP_REPEAT_3_59(m, d) m(4, 59, d) +# define BOOST_PP_REPEAT_3_61(m, d) BOOST_PP_REPEAT_3_60(m, d) m(4, 60, d) +# define BOOST_PP_REPEAT_3_62(m, d) BOOST_PP_REPEAT_3_61(m, d) m(4, 61, d) +# define BOOST_PP_REPEAT_3_63(m, d) BOOST_PP_REPEAT_3_62(m, d) m(4, 62, d) +# define BOOST_PP_REPEAT_3_64(m, d) BOOST_PP_REPEAT_3_63(m, d) m(4, 63, d) +# define BOOST_PP_REPEAT_3_65(m, d) BOOST_PP_REPEAT_3_64(m, d) m(4, 64, d) +# define BOOST_PP_REPEAT_3_66(m, d) BOOST_PP_REPEAT_3_65(m, d) m(4, 65, d) +# define BOOST_PP_REPEAT_3_67(m, d) BOOST_PP_REPEAT_3_66(m, d) m(4, 66, d) +# define BOOST_PP_REPEAT_3_68(m, d) BOOST_PP_REPEAT_3_67(m, d) m(4, 67, d) +# define BOOST_PP_REPEAT_3_69(m, d) BOOST_PP_REPEAT_3_68(m, d) m(4, 68, d) +# define BOOST_PP_REPEAT_3_70(m, d) BOOST_PP_REPEAT_3_69(m, d) m(4, 69, d) +# define BOOST_PP_REPEAT_3_71(m, d) BOOST_PP_REPEAT_3_70(m, d) m(4, 70, d) +# define BOOST_PP_REPEAT_3_72(m, d) BOOST_PP_REPEAT_3_71(m, d) m(4, 71, d) +# define BOOST_PP_REPEAT_3_73(m, d) BOOST_PP_REPEAT_3_72(m, d) m(4, 72, d) +# define BOOST_PP_REPEAT_3_74(m, d) BOOST_PP_REPEAT_3_73(m, d) m(4, 73, d) +# define BOOST_PP_REPEAT_3_75(m, d) BOOST_PP_REPEAT_3_74(m, d) m(4, 74, d) +# define BOOST_PP_REPEAT_3_76(m, d) BOOST_PP_REPEAT_3_75(m, d) m(4, 75, d) +# define BOOST_PP_REPEAT_3_77(m, d) BOOST_PP_REPEAT_3_76(m, d) m(4, 76, d) +# define BOOST_PP_REPEAT_3_78(m, d) BOOST_PP_REPEAT_3_77(m, d) m(4, 77, d) +# define BOOST_PP_REPEAT_3_79(m, d) BOOST_PP_REPEAT_3_78(m, d) m(4, 78, d) +# define BOOST_PP_REPEAT_3_80(m, d) BOOST_PP_REPEAT_3_79(m, d) m(4, 79, d) +# define BOOST_PP_REPEAT_3_81(m, d) BOOST_PP_REPEAT_3_80(m, d) m(4, 80, d) +# define BOOST_PP_REPEAT_3_82(m, d) BOOST_PP_REPEAT_3_81(m, d) m(4, 81, d) +# define BOOST_PP_REPEAT_3_83(m, d) BOOST_PP_REPEAT_3_82(m, d) m(4, 82, d) +# define BOOST_PP_REPEAT_3_84(m, d) BOOST_PP_REPEAT_3_83(m, d) m(4, 83, d) +# define BOOST_PP_REPEAT_3_85(m, d) BOOST_PP_REPEAT_3_84(m, d) m(4, 84, d) +# define BOOST_PP_REPEAT_3_86(m, d) BOOST_PP_REPEAT_3_85(m, d) m(4, 85, d) +# define BOOST_PP_REPEAT_3_87(m, d) BOOST_PP_REPEAT_3_86(m, d) m(4, 86, d) +# define BOOST_PP_REPEAT_3_88(m, d) BOOST_PP_REPEAT_3_87(m, d) m(4, 87, d) +# define BOOST_PP_REPEAT_3_89(m, d) BOOST_PP_REPEAT_3_88(m, d) m(4, 88, d) +# define BOOST_PP_REPEAT_3_90(m, d) BOOST_PP_REPEAT_3_89(m, d) m(4, 89, d) +# define BOOST_PP_REPEAT_3_91(m, d) BOOST_PP_REPEAT_3_90(m, d) m(4, 90, d) +# define BOOST_PP_REPEAT_3_92(m, d) BOOST_PP_REPEAT_3_91(m, d) m(4, 91, d) +# define BOOST_PP_REPEAT_3_93(m, d) BOOST_PP_REPEAT_3_92(m, d) m(4, 92, d) +# define BOOST_PP_REPEAT_3_94(m, d) BOOST_PP_REPEAT_3_93(m, d) m(4, 93, d) +# define BOOST_PP_REPEAT_3_95(m, d) BOOST_PP_REPEAT_3_94(m, d) m(4, 94, d) +# define BOOST_PP_REPEAT_3_96(m, d) BOOST_PP_REPEAT_3_95(m, d) m(4, 95, d) +# define BOOST_PP_REPEAT_3_97(m, d) BOOST_PP_REPEAT_3_96(m, d) m(4, 96, d) +# define BOOST_PP_REPEAT_3_98(m, d) BOOST_PP_REPEAT_3_97(m, d) m(4, 97, d) +# define BOOST_PP_REPEAT_3_99(m, d) BOOST_PP_REPEAT_3_98(m, d) m(4, 98, d) +# define BOOST_PP_REPEAT_3_100(m, d) BOOST_PP_REPEAT_3_99(m, d) m(4, 99, d) +# define BOOST_PP_REPEAT_3_101(m, d) BOOST_PP_REPEAT_3_100(m, d) m(4, 100, d) +# define BOOST_PP_REPEAT_3_102(m, d) BOOST_PP_REPEAT_3_101(m, d) m(4, 101, d) +# define BOOST_PP_REPEAT_3_103(m, d) BOOST_PP_REPEAT_3_102(m, d) m(4, 102, d) +# define BOOST_PP_REPEAT_3_104(m, d) BOOST_PP_REPEAT_3_103(m, d) m(4, 103, d) +# define BOOST_PP_REPEAT_3_105(m, d) BOOST_PP_REPEAT_3_104(m, d) m(4, 104, d) +# define BOOST_PP_REPEAT_3_106(m, d) BOOST_PP_REPEAT_3_105(m, d) m(4, 105, d) +# define BOOST_PP_REPEAT_3_107(m, d) BOOST_PP_REPEAT_3_106(m, d) m(4, 106, d) +# define BOOST_PP_REPEAT_3_108(m, d) BOOST_PP_REPEAT_3_107(m, d) m(4, 107, d) +# define BOOST_PP_REPEAT_3_109(m, d) BOOST_PP_REPEAT_3_108(m, d) m(4, 108, d) +# define BOOST_PP_REPEAT_3_110(m, d) BOOST_PP_REPEAT_3_109(m, d) m(4, 109, d) +# define BOOST_PP_REPEAT_3_111(m, d) BOOST_PP_REPEAT_3_110(m, d) m(4, 110, d) +# define BOOST_PP_REPEAT_3_112(m, d) BOOST_PP_REPEAT_3_111(m, d) m(4, 111, d) +# define BOOST_PP_REPEAT_3_113(m, d) BOOST_PP_REPEAT_3_112(m, d) m(4, 112, d) +# define BOOST_PP_REPEAT_3_114(m, d) BOOST_PP_REPEAT_3_113(m, d) m(4, 113, d) +# define BOOST_PP_REPEAT_3_115(m, d) BOOST_PP_REPEAT_3_114(m, d) m(4, 114, d) +# define BOOST_PP_REPEAT_3_116(m, d) BOOST_PP_REPEAT_3_115(m, d) m(4, 115, d) +# define BOOST_PP_REPEAT_3_117(m, d) BOOST_PP_REPEAT_3_116(m, d) m(4, 116, d) +# define BOOST_PP_REPEAT_3_118(m, d) BOOST_PP_REPEAT_3_117(m, d) m(4, 117, d) +# define BOOST_PP_REPEAT_3_119(m, d) BOOST_PP_REPEAT_3_118(m, d) m(4, 118, d) +# define BOOST_PP_REPEAT_3_120(m, d) BOOST_PP_REPEAT_3_119(m, d) m(4, 119, d) +# define BOOST_PP_REPEAT_3_121(m, d) BOOST_PP_REPEAT_3_120(m, d) m(4, 120, d) +# define BOOST_PP_REPEAT_3_122(m, d) BOOST_PP_REPEAT_3_121(m, d) m(4, 121, d) +# define BOOST_PP_REPEAT_3_123(m, d) BOOST_PP_REPEAT_3_122(m, d) m(4, 122, d) +# define BOOST_PP_REPEAT_3_124(m, d) BOOST_PP_REPEAT_3_123(m, d) m(4, 123, d) +# define BOOST_PP_REPEAT_3_125(m, d) BOOST_PP_REPEAT_3_124(m, d) m(4, 124, d) +# define BOOST_PP_REPEAT_3_126(m, d) BOOST_PP_REPEAT_3_125(m, d) m(4, 125, d) +# define BOOST_PP_REPEAT_3_127(m, d) BOOST_PP_REPEAT_3_126(m, d) m(4, 126, d) +# define BOOST_PP_REPEAT_3_128(m, d) BOOST_PP_REPEAT_3_127(m, d) m(4, 127, d) +# define BOOST_PP_REPEAT_3_129(m, d) BOOST_PP_REPEAT_3_128(m, d) m(4, 128, d) +# define BOOST_PP_REPEAT_3_130(m, d) BOOST_PP_REPEAT_3_129(m, d) m(4, 129, d) +# define BOOST_PP_REPEAT_3_131(m, d) BOOST_PP_REPEAT_3_130(m, d) m(4, 130, d) +# define BOOST_PP_REPEAT_3_132(m, d) BOOST_PP_REPEAT_3_131(m, d) m(4, 131, d) +# define BOOST_PP_REPEAT_3_133(m, d) BOOST_PP_REPEAT_3_132(m, d) m(4, 132, d) +# define BOOST_PP_REPEAT_3_134(m, d) BOOST_PP_REPEAT_3_133(m, d) m(4, 133, d) +# define BOOST_PP_REPEAT_3_135(m, d) BOOST_PP_REPEAT_3_134(m, d) m(4, 134, d) +# define BOOST_PP_REPEAT_3_136(m, d) BOOST_PP_REPEAT_3_135(m, d) m(4, 135, d) +# define BOOST_PP_REPEAT_3_137(m, d) BOOST_PP_REPEAT_3_136(m, d) m(4, 136, d) +# define BOOST_PP_REPEAT_3_138(m, d) BOOST_PP_REPEAT_3_137(m, d) m(4, 137, d) +# define BOOST_PP_REPEAT_3_139(m, d) BOOST_PP_REPEAT_3_138(m, d) m(4, 138, d) +# define BOOST_PP_REPEAT_3_140(m, d) BOOST_PP_REPEAT_3_139(m, d) m(4, 139, d) +# define BOOST_PP_REPEAT_3_141(m, d) BOOST_PP_REPEAT_3_140(m, d) m(4, 140, d) +# define BOOST_PP_REPEAT_3_142(m, d) BOOST_PP_REPEAT_3_141(m, d) m(4, 141, d) +# define BOOST_PP_REPEAT_3_143(m, d) BOOST_PP_REPEAT_3_142(m, d) m(4, 142, d) +# define BOOST_PP_REPEAT_3_144(m, d) BOOST_PP_REPEAT_3_143(m, d) m(4, 143, d) +# define BOOST_PP_REPEAT_3_145(m, d) BOOST_PP_REPEAT_3_144(m, d) m(4, 144, d) +# define BOOST_PP_REPEAT_3_146(m, d) BOOST_PP_REPEAT_3_145(m, d) m(4, 145, d) +# define BOOST_PP_REPEAT_3_147(m, d) BOOST_PP_REPEAT_3_146(m, d) m(4, 146, d) +# define BOOST_PP_REPEAT_3_148(m, d) BOOST_PP_REPEAT_3_147(m, d) m(4, 147, d) +# define BOOST_PP_REPEAT_3_149(m, d) BOOST_PP_REPEAT_3_148(m, d) m(4, 148, d) +# define BOOST_PP_REPEAT_3_150(m, d) BOOST_PP_REPEAT_3_149(m, d) m(4, 149, d) +# define BOOST_PP_REPEAT_3_151(m, d) BOOST_PP_REPEAT_3_150(m, d) m(4, 150, d) +# define BOOST_PP_REPEAT_3_152(m, d) BOOST_PP_REPEAT_3_151(m, d) m(4, 151, d) +# define BOOST_PP_REPEAT_3_153(m, d) BOOST_PP_REPEAT_3_152(m, d) m(4, 152, d) +# define BOOST_PP_REPEAT_3_154(m, d) BOOST_PP_REPEAT_3_153(m, d) m(4, 153, d) +# define BOOST_PP_REPEAT_3_155(m, d) BOOST_PP_REPEAT_3_154(m, d) m(4, 154, d) +# define BOOST_PP_REPEAT_3_156(m, d) BOOST_PP_REPEAT_3_155(m, d) m(4, 155, d) +# define BOOST_PP_REPEAT_3_157(m, d) BOOST_PP_REPEAT_3_156(m, d) m(4, 156, d) +# define BOOST_PP_REPEAT_3_158(m, d) BOOST_PP_REPEAT_3_157(m, d) m(4, 157, d) +# define BOOST_PP_REPEAT_3_159(m, d) BOOST_PP_REPEAT_3_158(m, d) m(4, 158, d) +# define BOOST_PP_REPEAT_3_160(m, d) BOOST_PP_REPEAT_3_159(m, d) m(4, 159, d) +# define BOOST_PP_REPEAT_3_161(m, d) BOOST_PP_REPEAT_3_160(m, d) m(4, 160, d) +# define BOOST_PP_REPEAT_3_162(m, d) BOOST_PP_REPEAT_3_161(m, d) m(4, 161, d) +# define BOOST_PP_REPEAT_3_163(m, d) BOOST_PP_REPEAT_3_162(m, d) m(4, 162, d) +# define BOOST_PP_REPEAT_3_164(m, d) BOOST_PP_REPEAT_3_163(m, d) m(4, 163, d) +# define BOOST_PP_REPEAT_3_165(m, d) BOOST_PP_REPEAT_3_164(m, d) m(4, 164, d) +# define BOOST_PP_REPEAT_3_166(m, d) BOOST_PP_REPEAT_3_165(m, d) m(4, 165, d) +# define BOOST_PP_REPEAT_3_167(m, d) BOOST_PP_REPEAT_3_166(m, d) m(4, 166, d) +# define BOOST_PP_REPEAT_3_168(m, d) BOOST_PP_REPEAT_3_167(m, d) m(4, 167, d) +# define BOOST_PP_REPEAT_3_169(m, d) BOOST_PP_REPEAT_3_168(m, d) m(4, 168, d) +# define BOOST_PP_REPEAT_3_170(m, d) BOOST_PP_REPEAT_3_169(m, d) m(4, 169, d) +# define BOOST_PP_REPEAT_3_171(m, d) BOOST_PP_REPEAT_3_170(m, d) m(4, 170, d) +# define BOOST_PP_REPEAT_3_172(m, d) BOOST_PP_REPEAT_3_171(m, d) m(4, 171, d) +# define BOOST_PP_REPEAT_3_173(m, d) BOOST_PP_REPEAT_3_172(m, d) m(4, 172, d) +# define BOOST_PP_REPEAT_3_174(m, d) BOOST_PP_REPEAT_3_173(m, d) m(4, 173, d) +# define BOOST_PP_REPEAT_3_175(m, d) BOOST_PP_REPEAT_3_174(m, d) m(4, 174, d) +# define BOOST_PP_REPEAT_3_176(m, d) BOOST_PP_REPEAT_3_175(m, d) m(4, 175, d) +# define BOOST_PP_REPEAT_3_177(m, d) BOOST_PP_REPEAT_3_176(m, d) m(4, 176, d) +# define BOOST_PP_REPEAT_3_178(m, d) BOOST_PP_REPEAT_3_177(m, d) m(4, 177, d) +# define BOOST_PP_REPEAT_3_179(m, d) BOOST_PP_REPEAT_3_178(m, d) m(4, 178, d) +# define BOOST_PP_REPEAT_3_180(m, d) BOOST_PP_REPEAT_3_179(m, d) m(4, 179, d) +# define BOOST_PP_REPEAT_3_181(m, d) BOOST_PP_REPEAT_3_180(m, d) m(4, 180, d) +# define BOOST_PP_REPEAT_3_182(m, d) BOOST_PP_REPEAT_3_181(m, d) m(4, 181, d) +# define BOOST_PP_REPEAT_3_183(m, d) BOOST_PP_REPEAT_3_182(m, d) m(4, 182, d) +# define BOOST_PP_REPEAT_3_184(m, d) BOOST_PP_REPEAT_3_183(m, d) m(4, 183, d) +# define BOOST_PP_REPEAT_3_185(m, d) BOOST_PP_REPEAT_3_184(m, d) m(4, 184, d) +# define BOOST_PP_REPEAT_3_186(m, d) BOOST_PP_REPEAT_3_185(m, d) m(4, 185, d) +# define BOOST_PP_REPEAT_3_187(m, d) BOOST_PP_REPEAT_3_186(m, d) m(4, 186, d) +# define BOOST_PP_REPEAT_3_188(m, d) BOOST_PP_REPEAT_3_187(m, d) m(4, 187, d) +# define BOOST_PP_REPEAT_3_189(m, d) BOOST_PP_REPEAT_3_188(m, d) m(4, 188, d) +# define BOOST_PP_REPEAT_3_190(m, d) BOOST_PP_REPEAT_3_189(m, d) m(4, 189, d) +# define BOOST_PP_REPEAT_3_191(m, d) BOOST_PP_REPEAT_3_190(m, d) m(4, 190, d) +# define BOOST_PP_REPEAT_3_192(m, d) BOOST_PP_REPEAT_3_191(m, d) m(4, 191, d) +# define BOOST_PP_REPEAT_3_193(m, d) BOOST_PP_REPEAT_3_192(m, d) m(4, 192, d) +# define BOOST_PP_REPEAT_3_194(m, d) BOOST_PP_REPEAT_3_193(m, d) m(4, 193, d) +# define BOOST_PP_REPEAT_3_195(m, d) BOOST_PP_REPEAT_3_194(m, d) m(4, 194, d) +# define BOOST_PP_REPEAT_3_196(m, d) BOOST_PP_REPEAT_3_195(m, d) m(4, 195, d) +# define BOOST_PP_REPEAT_3_197(m, d) BOOST_PP_REPEAT_3_196(m, d) m(4, 196, d) +# define BOOST_PP_REPEAT_3_198(m, d) BOOST_PP_REPEAT_3_197(m, d) m(4, 197, d) +# define BOOST_PP_REPEAT_3_199(m, d) BOOST_PP_REPEAT_3_198(m, d) m(4, 198, d) +# define BOOST_PP_REPEAT_3_200(m, d) BOOST_PP_REPEAT_3_199(m, d) m(4, 199, d) +# define BOOST_PP_REPEAT_3_201(m, d) BOOST_PP_REPEAT_3_200(m, d) m(4, 200, d) +# define BOOST_PP_REPEAT_3_202(m, d) BOOST_PP_REPEAT_3_201(m, d) m(4, 201, d) +# define BOOST_PP_REPEAT_3_203(m, d) BOOST_PP_REPEAT_3_202(m, d) m(4, 202, d) +# define BOOST_PP_REPEAT_3_204(m, d) BOOST_PP_REPEAT_3_203(m, d) m(4, 203, d) +# define BOOST_PP_REPEAT_3_205(m, d) BOOST_PP_REPEAT_3_204(m, d) m(4, 204, d) +# define BOOST_PP_REPEAT_3_206(m, d) BOOST_PP_REPEAT_3_205(m, d) m(4, 205, d) +# define BOOST_PP_REPEAT_3_207(m, d) BOOST_PP_REPEAT_3_206(m, d) m(4, 206, d) +# define BOOST_PP_REPEAT_3_208(m, d) BOOST_PP_REPEAT_3_207(m, d) m(4, 207, d) +# define BOOST_PP_REPEAT_3_209(m, d) BOOST_PP_REPEAT_3_208(m, d) m(4, 208, d) +# define BOOST_PP_REPEAT_3_210(m, d) BOOST_PP_REPEAT_3_209(m, d) m(4, 209, d) +# define BOOST_PP_REPEAT_3_211(m, d) BOOST_PP_REPEAT_3_210(m, d) m(4, 210, d) +# define BOOST_PP_REPEAT_3_212(m, d) BOOST_PP_REPEAT_3_211(m, d) m(4, 211, d) +# define BOOST_PP_REPEAT_3_213(m, d) BOOST_PP_REPEAT_3_212(m, d) m(4, 212, d) +# define BOOST_PP_REPEAT_3_214(m, d) BOOST_PP_REPEAT_3_213(m, d) m(4, 213, d) +# define BOOST_PP_REPEAT_3_215(m, d) BOOST_PP_REPEAT_3_214(m, d) m(4, 214, d) +# define BOOST_PP_REPEAT_3_216(m, d) BOOST_PP_REPEAT_3_215(m, d) m(4, 215, d) +# define BOOST_PP_REPEAT_3_217(m, d) BOOST_PP_REPEAT_3_216(m, d) m(4, 216, d) +# define BOOST_PP_REPEAT_3_218(m, d) BOOST_PP_REPEAT_3_217(m, d) m(4, 217, d) +# define BOOST_PP_REPEAT_3_219(m, d) BOOST_PP_REPEAT_3_218(m, d) m(4, 218, d) +# define BOOST_PP_REPEAT_3_220(m, d) BOOST_PP_REPEAT_3_219(m, d) m(4, 219, d) +# define BOOST_PP_REPEAT_3_221(m, d) BOOST_PP_REPEAT_3_220(m, d) m(4, 220, d) +# define BOOST_PP_REPEAT_3_222(m, d) BOOST_PP_REPEAT_3_221(m, d) m(4, 221, d) +# define BOOST_PP_REPEAT_3_223(m, d) BOOST_PP_REPEAT_3_222(m, d) m(4, 222, d) +# define BOOST_PP_REPEAT_3_224(m, d) BOOST_PP_REPEAT_3_223(m, d) m(4, 223, d) +# define BOOST_PP_REPEAT_3_225(m, d) BOOST_PP_REPEAT_3_224(m, d) m(4, 224, d) +# define BOOST_PP_REPEAT_3_226(m, d) BOOST_PP_REPEAT_3_225(m, d) m(4, 225, d) +# define BOOST_PP_REPEAT_3_227(m, d) BOOST_PP_REPEAT_3_226(m, d) m(4, 226, d) +# define BOOST_PP_REPEAT_3_228(m, d) BOOST_PP_REPEAT_3_227(m, d) m(4, 227, d) +# define BOOST_PP_REPEAT_3_229(m, d) BOOST_PP_REPEAT_3_228(m, d) m(4, 228, d) +# define BOOST_PP_REPEAT_3_230(m, d) BOOST_PP_REPEAT_3_229(m, d) m(4, 229, d) +# define BOOST_PP_REPEAT_3_231(m, d) BOOST_PP_REPEAT_3_230(m, d) m(4, 230, d) +# define BOOST_PP_REPEAT_3_232(m, d) BOOST_PP_REPEAT_3_231(m, d) m(4, 231, d) +# define BOOST_PP_REPEAT_3_233(m, d) BOOST_PP_REPEAT_3_232(m, d) m(4, 232, d) +# define BOOST_PP_REPEAT_3_234(m, d) BOOST_PP_REPEAT_3_233(m, d) m(4, 233, d) +# define BOOST_PP_REPEAT_3_235(m, d) BOOST_PP_REPEAT_3_234(m, d) m(4, 234, d) +# define BOOST_PP_REPEAT_3_236(m, d) BOOST_PP_REPEAT_3_235(m, d) m(4, 235, d) +# define BOOST_PP_REPEAT_3_237(m, d) BOOST_PP_REPEAT_3_236(m, d) m(4, 236, d) +# define BOOST_PP_REPEAT_3_238(m, d) BOOST_PP_REPEAT_3_237(m, d) m(4, 237, d) +# define BOOST_PP_REPEAT_3_239(m, d) BOOST_PP_REPEAT_3_238(m, d) m(4, 238, d) +# define BOOST_PP_REPEAT_3_240(m, d) BOOST_PP_REPEAT_3_239(m, d) m(4, 239, d) +# define BOOST_PP_REPEAT_3_241(m, d) BOOST_PP_REPEAT_3_240(m, d) m(4, 240, d) +# define BOOST_PP_REPEAT_3_242(m, d) BOOST_PP_REPEAT_3_241(m, d) m(4, 241, d) +# define BOOST_PP_REPEAT_3_243(m, d) BOOST_PP_REPEAT_3_242(m, d) m(4, 242, d) +# define BOOST_PP_REPEAT_3_244(m, d) BOOST_PP_REPEAT_3_243(m, d) m(4, 243, d) +# define BOOST_PP_REPEAT_3_245(m, d) BOOST_PP_REPEAT_3_244(m, d) m(4, 244, d) +# define BOOST_PP_REPEAT_3_246(m, d) BOOST_PP_REPEAT_3_245(m, d) m(4, 245, d) +# define BOOST_PP_REPEAT_3_247(m, d) BOOST_PP_REPEAT_3_246(m, d) m(4, 246, d) +# define BOOST_PP_REPEAT_3_248(m, d) BOOST_PP_REPEAT_3_247(m, d) m(4, 247, d) +# define BOOST_PP_REPEAT_3_249(m, d) BOOST_PP_REPEAT_3_248(m, d) m(4, 248, d) +# define BOOST_PP_REPEAT_3_250(m, d) BOOST_PP_REPEAT_3_249(m, d) m(4, 249, d) +# define BOOST_PP_REPEAT_3_251(m, d) BOOST_PP_REPEAT_3_250(m, d) m(4, 250, d) +# define BOOST_PP_REPEAT_3_252(m, d) BOOST_PP_REPEAT_3_251(m, d) m(4, 251, d) +# define BOOST_PP_REPEAT_3_253(m, d) BOOST_PP_REPEAT_3_252(m, d) m(4, 252, d) +# define BOOST_PP_REPEAT_3_254(m, d) BOOST_PP_REPEAT_3_253(m, d) m(4, 253, d) +# define BOOST_PP_REPEAT_3_255(m, d) BOOST_PP_REPEAT_3_254(m, d) m(4, 254, d) +# define BOOST_PP_REPEAT_3_256(m, d) BOOST_PP_REPEAT_3_255(m, d) m(4, 255, d) +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/limits/repeat_512.hpp b/src/boost/boost/preprocessor/repetition/limits/repeat_512.hpp new file mode 100644 index 000000000..209e42268 --- /dev/null +++ b/src/boost/boost/preprocessor/repetition/limits/repeat_512.hpp @@ -0,0 +1,789 @@ +# /* 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_REPETITION_REPEAT_512_HPP +# define BOOST_PREPROCESSOR_REPETITION_REPEAT_512_HPP +# +# define BOOST_PP_REPEAT_1_257(m, d) BOOST_PP_REPEAT_1_256(m, d) m(2, 256, d) +# define BOOST_PP_REPEAT_1_258(m, d) BOOST_PP_REPEAT_1_257(m, d) m(2, 257, d) +# define BOOST_PP_REPEAT_1_259(m, d) BOOST_PP_REPEAT_1_258(m, d) m(2, 258, d) +# define BOOST_PP_REPEAT_1_260(m, d) BOOST_PP_REPEAT_1_259(m, d) m(2, 259, d) +# define BOOST_PP_REPEAT_1_261(m, d) BOOST_PP_REPEAT_1_260(m, d) m(2, 260, d) +# define BOOST_PP_REPEAT_1_262(m, d) BOOST_PP_REPEAT_1_261(m, d) m(2, 261, d) +# define BOOST_PP_REPEAT_1_263(m, d) BOOST_PP_REPEAT_1_262(m, d) m(2, 262, d) +# define BOOST_PP_REPEAT_1_264(m, d) BOOST_PP_REPEAT_1_263(m, d) m(2, 263, d) +# define BOOST_PP_REPEAT_1_265(m, d) BOOST_PP_REPEAT_1_264(m, d) m(2, 264, d) +# define BOOST_PP_REPEAT_1_266(m, d) BOOST_PP_REPEAT_1_265(m, d) m(2, 265, d) +# define BOOST_PP_REPEAT_1_267(m, d) BOOST_PP_REPEAT_1_266(m, d) m(2, 266, d) +# define BOOST_PP_REPEAT_1_268(m, d) BOOST_PP_REPEAT_1_267(m, d) m(2, 267, d) +# define BOOST_PP_REPEAT_1_269(m, d) BOOST_PP_REPEAT_1_268(m, d) m(2, 268, d) +# define BOOST_PP_REPEAT_1_270(m, d) BOOST_PP_REPEAT_1_269(m, d) m(2, 269, d) +# define BOOST_PP_REPEAT_1_271(m, d) BOOST_PP_REPEAT_1_270(m, d) m(2, 270, d) +# define BOOST_PP_REPEAT_1_272(m, d) BOOST_PP_REPEAT_1_271(m, d) m(2, 271, d) +# define BOOST_PP_REPEAT_1_273(m, d) BOOST_PP_REPEAT_1_272(m, d) m(2, 272, d) +# define BOOST_PP_REPEAT_1_274(m, d) BOOST_PP_REPEAT_1_273(m, d) m(2, 273, d) +# define BOOST_PP_REPEAT_1_275(m, d) BOOST_PP_REPEAT_1_274(m, d) m(2, 274, d) +# define BOOST_PP_REPEAT_1_276(m, d) BOOST_PP_REPEAT_1_275(m, d) m(2, 275, d) +# define BOOST_PP_REPEAT_1_277(m, d) BOOST_PP_REPEAT_1_276(m, d) m(2, 276, d) +# define BOOST_PP_REPEAT_1_278(m, d) BOOST_PP_REPEAT_1_277(m, d) m(2, 277, d) +# define BOOST_PP_REPEAT_1_279(m, d) BOOST_PP_REPEAT_1_278(m, d) m(2, 278, d) +# define BOOST_PP_REPEAT_1_280(m, d) BOOST_PP_REPEAT_1_279(m, d) m(2, 279, d) +# define BOOST_PP_REPEAT_1_281(m, d) BOOST_PP_REPEAT_1_280(m, d) m(2, 280, d) +# define BOOST_PP_REPEAT_1_282(m, d) BOOST_PP_REPEAT_1_281(m, d) m(2, 281, d) +# define BOOST_PP_REPEAT_1_283(m, d) BOOST_PP_REPEAT_1_282(m, d) m(2, 282, d) +# define BOOST_PP_REPEAT_1_284(m, d) BOOST_PP_REPEAT_1_283(m, d) m(2, 283, d) +# define BOOST_PP_REPEAT_1_285(m, d) BOOST_PP_REPEAT_1_284(m, d) m(2, 284, d) +# define BOOST_PP_REPEAT_1_286(m, d) BOOST_PP_REPEAT_1_285(m, d) m(2, 285, d) +# define BOOST_PP_REPEAT_1_287(m, d) BOOST_PP_REPEAT_1_286(m, d) m(2, 286, d) +# define BOOST_PP_REPEAT_1_288(m, d) BOOST_PP_REPEAT_1_287(m, d) m(2, 287, d) +# define BOOST_PP_REPEAT_1_289(m, d) BOOST_PP_REPEAT_1_288(m, d) m(2, 288, d) +# define BOOST_PP_REPEAT_1_290(m, d) BOOST_PP_REPEAT_1_289(m, d) m(2, 289, d) +# define BOOST_PP_REPEAT_1_291(m, d) BOOST_PP_REPEAT_1_290(m, d) m(2, 290, d) +# define BOOST_PP_REPEAT_1_292(m, d) BOOST_PP_REPEAT_1_291(m, d) m(2, 291, d) +# define BOOST_PP_REPEAT_1_293(m, d) BOOST_PP_REPEAT_1_292(m, d) m(2, 292, d) +# define BOOST_PP_REPEAT_1_294(m, d) BOOST_PP_REPEAT_1_293(m, d) m(2, 293, d) +# define BOOST_PP_REPEAT_1_295(m, d) BOOST_PP_REPEAT_1_294(m, d) m(2, 294, d) +# define BOOST_PP_REPEAT_1_296(m, d) BOOST_PP_REPEAT_1_295(m, d) m(2, 295, d) +# define BOOST_PP_REPEAT_1_297(m, d) BOOST_PP_REPEAT_1_296(m, d) m(2, 296, d) +# define BOOST_PP_REPEAT_1_298(m, d) BOOST_PP_REPEAT_1_297(m, d) m(2, 297, d) +# define BOOST_PP_REPEAT_1_299(m, d) BOOST_PP_REPEAT_1_298(m, d) m(2, 298, d) +# define BOOST_PP_REPEAT_1_300(m, d) BOOST_PP_REPEAT_1_299(m, d) m(2, 299, d) +# define BOOST_PP_REPEAT_1_301(m, d) BOOST_PP_REPEAT_1_300(m, d) m(2, 300, d) +# define BOOST_PP_REPEAT_1_302(m, d) BOOST_PP_REPEAT_1_301(m, d) m(2, 301, d) +# define BOOST_PP_REPEAT_1_303(m, d) BOOST_PP_REPEAT_1_302(m, d) m(2, 302, d) +# define BOOST_PP_REPEAT_1_304(m, d) BOOST_PP_REPEAT_1_303(m, d) m(2, 303, d) +# define BOOST_PP_REPEAT_1_305(m, d) BOOST_PP_REPEAT_1_304(m, d) m(2, 304, d) +# define BOOST_PP_REPEAT_1_306(m, d) BOOST_PP_REPEAT_1_305(m, d) m(2, 305, d) +# define BOOST_PP_REPEAT_1_307(m, d) BOOST_PP_REPEAT_1_306(m, d) m(2, 306, d) +# define BOOST_PP_REPEAT_1_308(m, d) BOOST_PP_REPEAT_1_307(m, d) m(2, 307, d) +# define BOOST_PP_REPEAT_1_309(m, d) BOOST_PP_REPEAT_1_308(m, d) m(2, 308, d) +# define BOOST_PP_REPEAT_1_310(m, d) BOOST_PP_REPEAT_1_309(m, d) m(2, 309, d) +# define BOOST_PP_REPEAT_1_311(m, d) BOOST_PP_REPEAT_1_310(m, d) m(2, 310, d) +# define BOOST_PP_REPEAT_1_312(m, d) BOOST_PP_REPEAT_1_311(m, d) m(2, 311, d) +# define BOOST_PP_REPEAT_1_313(m, d) BOOST_PP_REPEAT_1_312(m, d) m(2, 312, d) +# define BOOST_PP_REPEAT_1_314(m, d) BOOST_PP_REPEAT_1_313(m, d) m(2, 313, d) +# define BOOST_PP_REPEAT_1_315(m, d) BOOST_PP_REPEAT_1_314(m, d) m(2, 314, d) +# define BOOST_PP_REPEAT_1_316(m, d) BOOST_PP_REPEAT_1_315(m, d) m(2, 315, d) +# define BOOST_PP_REPEAT_1_317(m, d) BOOST_PP_REPEAT_1_316(m, d) m(2, 316, d) +# define BOOST_PP_REPEAT_1_318(m, d) BOOST_PP_REPEAT_1_317(m, d) m(2, 317, d) +# define BOOST_PP_REPEAT_1_319(m, d) BOOST_PP_REPEAT_1_318(m, d) m(2, 318, d) +# define BOOST_PP_REPEAT_1_320(m, d) BOOST_PP_REPEAT_1_319(m, d) m(2, 319, d) +# define BOOST_PP_REPEAT_1_321(m, d) BOOST_PP_REPEAT_1_320(m, d) m(2, 320, d) +# define BOOST_PP_REPEAT_1_322(m, d) BOOST_PP_REPEAT_1_321(m, d) m(2, 321, d) +# define BOOST_PP_REPEAT_1_323(m, d) BOOST_PP_REPEAT_1_322(m, d) m(2, 322, d) +# define BOOST_PP_REPEAT_1_324(m, d) BOOST_PP_REPEAT_1_323(m, d) m(2, 323, d) +# define BOOST_PP_REPEAT_1_325(m, d) BOOST_PP_REPEAT_1_324(m, d) m(2, 324, d) +# define BOOST_PP_REPEAT_1_326(m, d) BOOST_PP_REPEAT_1_325(m, d) m(2, 325, d) +# define BOOST_PP_REPEAT_1_327(m, d) BOOST_PP_REPEAT_1_326(m, d) m(2, 326, d) +# define BOOST_PP_REPEAT_1_328(m, d) BOOST_PP_REPEAT_1_327(m, d) m(2, 327, d) +# define BOOST_PP_REPEAT_1_329(m, d) BOOST_PP_REPEAT_1_328(m, d) m(2, 328, d) +# define BOOST_PP_REPEAT_1_330(m, d) BOOST_PP_REPEAT_1_329(m, d) m(2, 329, d) +# define BOOST_PP_REPEAT_1_331(m, d) BOOST_PP_REPEAT_1_330(m, d) m(2, 330, d) +# define BOOST_PP_REPEAT_1_332(m, d) BOOST_PP_REPEAT_1_331(m, d) m(2, 331, d) +# define BOOST_PP_REPEAT_1_333(m, d) BOOST_PP_REPEAT_1_332(m, d) m(2, 332, d) +# define BOOST_PP_REPEAT_1_334(m, d) BOOST_PP_REPEAT_1_333(m, d) m(2, 333, d) +# define BOOST_PP_REPEAT_1_335(m, d) BOOST_PP_REPEAT_1_334(m, d) m(2, 334, d) +# define BOOST_PP_REPEAT_1_336(m, d) BOOST_PP_REPEAT_1_335(m, d) m(2, 335, d) +# define BOOST_PP_REPEAT_1_337(m, d) BOOST_PP_REPEAT_1_336(m, d) m(2, 336, d) +# define BOOST_PP_REPEAT_1_338(m, d) BOOST_PP_REPEAT_1_337(m, d) m(2, 337, d) +# define BOOST_PP_REPEAT_1_339(m, d) BOOST_PP_REPEAT_1_338(m, d) m(2, 338, d) +# define BOOST_PP_REPEAT_1_340(m, d) BOOST_PP_REPEAT_1_339(m, d) m(2, 339, d) +# define BOOST_PP_REPEAT_1_341(m, d) BOOST_PP_REPEAT_1_340(m, d) m(2, 340, d) +# define BOOST_PP_REPEAT_1_342(m, d) BOOST_PP_REPEAT_1_341(m, d) m(2, 341, d) +# define BOOST_PP_REPEAT_1_343(m, d) BOOST_PP_REPEAT_1_342(m, d) m(2, 342, d) +# define BOOST_PP_REPEAT_1_344(m, d) BOOST_PP_REPEAT_1_343(m, d) m(2, 343, d) +# define BOOST_PP_REPEAT_1_345(m, d) BOOST_PP_REPEAT_1_344(m, d) m(2, 344, d) +# define BOOST_PP_REPEAT_1_346(m, d) BOOST_PP_REPEAT_1_345(m, d) m(2, 345, d) +# define BOOST_PP_REPEAT_1_347(m, d) BOOST_PP_REPEAT_1_346(m, d) m(2, 346, d) +# define BOOST_PP_REPEAT_1_348(m, d) BOOST_PP_REPEAT_1_347(m, d) m(2, 347, d) +# define BOOST_PP_REPEAT_1_349(m, d) BOOST_PP_REPEAT_1_348(m, d) m(2, 348, d) +# define BOOST_PP_REPEAT_1_350(m, d) BOOST_PP_REPEAT_1_349(m, d) m(2, 349, d) +# define BOOST_PP_REPEAT_1_351(m, d) BOOST_PP_REPEAT_1_350(m, d) m(2, 350, d) +# define BOOST_PP_REPEAT_1_352(m, d) BOOST_PP_REPEAT_1_351(m, d) m(2, 351, d) +# define BOOST_PP_REPEAT_1_353(m, d) BOOST_PP_REPEAT_1_352(m, d) m(2, 352, d) +# define BOOST_PP_REPEAT_1_354(m, d) BOOST_PP_REPEAT_1_353(m, d) m(2, 353, d) +# define BOOST_PP_REPEAT_1_355(m, d) BOOST_PP_REPEAT_1_354(m, d) m(2, 354, d) +# define BOOST_PP_REPEAT_1_356(m, d) BOOST_PP_REPEAT_1_355(m, d) m(2, 355, d) +# define BOOST_PP_REPEAT_1_357(m, d) BOOST_PP_REPEAT_1_356(m, d) m(2, 356, d) +# define BOOST_PP_REPEAT_1_358(m, d) BOOST_PP_REPEAT_1_357(m, d) m(2, 357, d) +# define BOOST_PP_REPEAT_1_359(m, d) BOOST_PP_REPEAT_1_358(m, d) m(2, 358, d) +# define BOOST_PP_REPEAT_1_360(m, d) BOOST_PP_REPEAT_1_359(m, d) m(2, 359, d) +# define BOOST_PP_REPEAT_1_361(m, d) BOOST_PP_REPEAT_1_360(m, d) m(2, 360, d) +# define BOOST_PP_REPEAT_1_362(m, d) BOOST_PP_REPEAT_1_361(m, d) m(2, 361, d) +# define BOOST_PP_REPEAT_1_363(m, d) BOOST_PP_REPEAT_1_362(m, d) m(2, 362, d) +# define BOOST_PP_REPEAT_1_364(m, d) BOOST_PP_REPEAT_1_363(m, d) m(2, 363, d) +# define BOOST_PP_REPEAT_1_365(m, d) BOOST_PP_REPEAT_1_364(m, d) m(2, 364, d) +# define BOOST_PP_REPEAT_1_366(m, d) BOOST_PP_REPEAT_1_365(m, d) m(2, 365, d) +# define BOOST_PP_REPEAT_1_367(m, d) BOOST_PP_REPEAT_1_366(m, d) m(2, 366, d) +# define BOOST_PP_REPEAT_1_368(m, d) BOOST_PP_REPEAT_1_367(m, d) m(2, 367, d) +# define BOOST_PP_REPEAT_1_369(m, d) BOOST_PP_REPEAT_1_368(m, d) m(2, 368, d) +# define BOOST_PP_REPEAT_1_370(m, d) BOOST_PP_REPEAT_1_369(m, d) m(2, 369, d) +# define BOOST_PP_REPEAT_1_371(m, d) BOOST_PP_REPEAT_1_370(m, d) m(2, 370, d) +# define BOOST_PP_REPEAT_1_372(m, d) BOOST_PP_REPEAT_1_371(m, d) m(2, 371, d) +# define BOOST_PP_REPEAT_1_373(m, d) BOOST_PP_REPEAT_1_372(m, d) m(2, 372, d) +# define BOOST_PP_REPEAT_1_374(m, d) BOOST_PP_REPEAT_1_373(m, d) m(2, 373, d) +# define BOOST_PP_REPEAT_1_375(m, d) BOOST_PP_REPEAT_1_374(m, d) m(2, 374, d) +# define BOOST_PP_REPEAT_1_376(m, d) BOOST_PP_REPEAT_1_375(m, d) m(2, 375, d) +# define BOOST_PP_REPEAT_1_377(m, d) BOOST_PP_REPEAT_1_376(m, d) m(2, 376, d) +# define BOOST_PP_REPEAT_1_378(m, d) BOOST_PP_REPEAT_1_377(m, d) m(2, 377, d) +# define BOOST_PP_REPEAT_1_379(m, d) BOOST_PP_REPEAT_1_378(m, d) m(2, 378, d) +# define BOOST_PP_REPEAT_1_380(m, d) BOOST_PP_REPEAT_1_379(m, d) m(2, 379, d) +# define BOOST_PP_REPEAT_1_381(m, d) BOOST_PP_REPEAT_1_380(m, d) m(2, 380, d) +# define BOOST_PP_REPEAT_1_382(m, d) BOOST_PP_REPEAT_1_381(m, d) m(2, 381, d) +# define BOOST_PP_REPEAT_1_383(m, d) BOOST_PP_REPEAT_1_382(m, d) m(2, 382, d) +# define BOOST_PP_REPEAT_1_384(m, d) BOOST_PP_REPEAT_1_383(m, d) m(2, 383, d) +# define BOOST_PP_REPEAT_1_385(m, d) BOOST_PP_REPEAT_1_384(m, d) m(2, 384, d) +# define BOOST_PP_REPEAT_1_386(m, d) BOOST_PP_REPEAT_1_385(m, d) m(2, 385, d) +# define BOOST_PP_REPEAT_1_387(m, d) BOOST_PP_REPEAT_1_386(m, d) m(2, 386, d) +# define BOOST_PP_REPEAT_1_388(m, d) BOOST_PP_REPEAT_1_387(m, d) m(2, 387, d) +# define BOOST_PP_REPEAT_1_389(m, d) BOOST_PP_REPEAT_1_388(m, d) m(2, 388, d) +# define BOOST_PP_REPEAT_1_390(m, d) BOOST_PP_REPEAT_1_389(m, d) m(2, 389, d) +# define BOOST_PP_REPEAT_1_391(m, d) BOOST_PP_REPEAT_1_390(m, d) m(2, 390, d) +# define BOOST_PP_REPEAT_1_392(m, d) BOOST_PP_REPEAT_1_391(m, d) m(2, 391, d) +# define BOOST_PP_REPEAT_1_393(m, d) BOOST_PP_REPEAT_1_392(m, d) m(2, 392, d) +# define BOOST_PP_REPEAT_1_394(m, d) BOOST_PP_REPEAT_1_393(m, d) m(2, 393, d) +# define BOOST_PP_REPEAT_1_395(m, d) BOOST_PP_REPEAT_1_394(m, d) m(2, 394, d) +# define BOOST_PP_REPEAT_1_396(m, d) BOOST_PP_REPEAT_1_395(m, d) m(2, 395, d) +# define BOOST_PP_REPEAT_1_397(m, d) BOOST_PP_REPEAT_1_396(m, d) m(2, 396, d) +# define BOOST_PP_REPEAT_1_398(m, d) BOOST_PP_REPEAT_1_397(m, d) m(2, 397, d) +# define BOOST_PP_REPEAT_1_399(m, d) BOOST_PP_REPEAT_1_398(m, d) m(2, 398, d) +# define BOOST_PP_REPEAT_1_400(m, d) BOOST_PP_REPEAT_1_399(m, d) m(2, 399, d) +# define BOOST_PP_REPEAT_1_401(m, d) BOOST_PP_REPEAT_1_400(m, d) m(2, 400, d) +# define BOOST_PP_REPEAT_1_402(m, d) BOOST_PP_REPEAT_1_401(m, d) m(2, 401, d) +# define BOOST_PP_REPEAT_1_403(m, d) BOOST_PP_REPEAT_1_402(m, d) m(2, 402, d) +# define BOOST_PP_REPEAT_1_404(m, d) BOOST_PP_REPEAT_1_403(m, d) m(2, 403, d) +# define BOOST_PP_REPEAT_1_405(m, d) BOOST_PP_REPEAT_1_404(m, d) m(2, 404, d) +# define BOOST_PP_REPEAT_1_406(m, d) BOOST_PP_REPEAT_1_405(m, d) m(2, 405, d) +# define BOOST_PP_REPEAT_1_407(m, d) BOOST_PP_REPEAT_1_406(m, d) m(2, 406, d) +# define BOOST_PP_REPEAT_1_408(m, d) BOOST_PP_REPEAT_1_407(m, d) m(2, 407, d) +# define BOOST_PP_REPEAT_1_409(m, d) BOOST_PP_REPEAT_1_408(m, d) m(2, 408, d) +# define BOOST_PP_REPEAT_1_410(m, d) BOOST_PP_REPEAT_1_409(m, d) m(2, 409, d) +# define BOOST_PP_REPEAT_1_411(m, d) BOOST_PP_REPEAT_1_410(m, d) m(2, 410, d) +# define BOOST_PP_REPEAT_1_412(m, d) BOOST_PP_REPEAT_1_411(m, d) m(2, 411, d) +# define BOOST_PP_REPEAT_1_413(m, d) BOOST_PP_REPEAT_1_412(m, d) m(2, 412, d) +# define BOOST_PP_REPEAT_1_414(m, d) BOOST_PP_REPEAT_1_413(m, d) m(2, 413, d) +# define BOOST_PP_REPEAT_1_415(m, d) BOOST_PP_REPEAT_1_414(m, d) m(2, 414, d) +# define BOOST_PP_REPEAT_1_416(m, d) BOOST_PP_REPEAT_1_415(m, d) m(2, 415, d) +# define BOOST_PP_REPEAT_1_417(m, d) BOOST_PP_REPEAT_1_416(m, d) m(2, 416, d) +# define BOOST_PP_REPEAT_1_418(m, d) BOOST_PP_REPEAT_1_417(m, d) m(2, 417, d) +# define BOOST_PP_REPEAT_1_419(m, d) BOOST_PP_REPEAT_1_418(m, d) m(2, 418, d) +# define BOOST_PP_REPEAT_1_420(m, d) BOOST_PP_REPEAT_1_419(m, d) m(2, 419, d) +# define BOOST_PP_REPEAT_1_421(m, d) BOOST_PP_REPEAT_1_420(m, d) m(2, 420, d) +# define BOOST_PP_REPEAT_1_422(m, d) BOOST_PP_REPEAT_1_421(m, d) m(2, 421, d) +# define BOOST_PP_REPEAT_1_423(m, d) BOOST_PP_REPEAT_1_422(m, d) m(2, 422, d) +# define BOOST_PP_REPEAT_1_424(m, d) BOOST_PP_REPEAT_1_423(m, d) m(2, 423, d) +# define BOOST_PP_REPEAT_1_425(m, d) BOOST_PP_REPEAT_1_424(m, d) m(2, 424, d) +# define BOOST_PP_REPEAT_1_426(m, d) BOOST_PP_REPEAT_1_425(m, d) m(2, 425, d) +# define BOOST_PP_REPEAT_1_427(m, d) BOOST_PP_REPEAT_1_426(m, d) m(2, 426, d) +# define BOOST_PP_REPEAT_1_428(m, d) BOOST_PP_REPEAT_1_427(m, d) m(2, 427, d) +# define BOOST_PP_REPEAT_1_429(m, d) BOOST_PP_REPEAT_1_428(m, d) m(2, 428, d) +# define BOOST_PP_REPEAT_1_430(m, d) BOOST_PP_REPEAT_1_429(m, d) m(2, 429, d) +# define BOOST_PP_REPEAT_1_431(m, d) BOOST_PP_REPEAT_1_430(m, d) m(2, 430, d) +# define BOOST_PP_REPEAT_1_432(m, d) BOOST_PP_REPEAT_1_431(m, d) m(2, 431, d) +# define BOOST_PP_REPEAT_1_433(m, d) BOOST_PP_REPEAT_1_432(m, d) m(2, 432, d) +# define BOOST_PP_REPEAT_1_434(m, d) BOOST_PP_REPEAT_1_433(m, d) m(2, 433, d) +# define BOOST_PP_REPEAT_1_435(m, d) BOOST_PP_REPEAT_1_434(m, d) m(2, 434, d) +# define BOOST_PP_REPEAT_1_436(m, d) BOOST_PP_REPEAT_1_435(m, d) m(2, 435, d) +# define BOOST_PP_REPEAT_1_437(m, d) BOOST_PP_REPEAT_1_436(m, d) m(2, 436, d) +# define BOOST_PP_REPEAT_1_438(m, d) BOOST_PP_REPEAT_1_437(m, d) m(2, 437, d) +# define BOOST_PP_REPEAT_1_439(m, d) BOOST_PP_REPEAT_1_438(m, d) m(2, 438, d) +# define BOOST_PP_REPEAT_1_440(m, d) BOOST_PP_REPEAT_1_439(m, d) m(2, 439, d) +# define BOOST_PP_REPEAT_1_441(m, d) BOOST_PP_REPEAT_1_440(m, d) m(2, 440, d) +# define BOOST_PP_REPEAT_1_442(m, d) BOOST_PP_REPEAT_1_441(m, d) m(2, 441, d) +# define BOOST_PP_REPEAT_1_443(m, d) BOOST_PP_REPEAT_1_442(m, d) m(2, 442, d) +# define BOOST_PP_REPEAT_1_444(m, d) BOOST_PP_REPEAT_1_443(m, d) m(2, 443, d) +# define BOOST_PP_REPEAT_1_445(m, d) BOOST_PP_REPEAT_1_444(m, d) m(2, 444, d) +# define BOOST_PP_REPEAT_1_446(m, d) BOOST_PP_REPEAT_1_445(m, d) m(2, 445, d) +# define BOOST_PP_REPEAT_1_447(m, d) BOOST_PP_REPEAT_1_446(m, d) m(2, 446, d) +# define BOOST_PP_REPEAT_1_448(m, d) BOOST_PP_REPEAT_1_447(m, d) m(2, 447, d) +# define BOOST_PP_REPEAT_1_449(m, d) BOOST_PP_REPEAT_1_448(m, d) m(2, 448, d) +# define BOOST_PP_REPEAT_1_450(m, d) BOOST_PP_REPEAT_1_449(m, d) m(2, 449, d) +# define BOOST_PP_REPEAT_1_451(m, d) BOOST_PP_REPEAT_1_450(m, d) m(2, 450, d) +# define BOOST_PP_REPEAT_1_452(m, d) BOOST_PP_REPEAT_1_451(m, d) m(2, 451, d) +# define BOOST_PP_REPEAT_1_453(m, d) BOOST_PP_REPEAT_1_452(m, d) m(2, 452, d) +# define BOOST_PP_REPEAT_1_454(m, d) BOOST_PP_REPEAT_1_453(m, d) m(2, 453, d) +# define BOOST_PP_REPEAT_1_455(m, d) BOOST_PP_REPEAT_1_454(m, d) m(2, 454, d) +# define BOOST_PP_REPEAT_1_456(m, d) BOOST_PP_REPEAT_1_455(m, d) m(2, 455, d) +# define BOOST_PP_REPEAT_1_457(m, d) BOOST_PP_REPEAT_1_456(m, d) m(2, 456, d) +# define BOOST_PP_REPEAT_1_458(m, d) BOOST_PP_REPEAT_1_457(m, d) m(2, 457, d) +# define BOOST_PP_REPEAT_1_459(m, d) BOOST_PP_REPEAT_1_458(m, d) m(2, 458, d) +# define BOOST_PP_REPEAT_1_460(m, d) BOOST_PP_REPEAT_1_459(m, d) m(2, 459, d) +# define BOOST_PP_REPEAT_1_461(m, d) BOOST_PP_REPEAT_1_460(m, d) m(2, 460, d) +# define BOOST_PP_REPEAT_1_462(m, d) BOOST_PP_REPEAT_1_461(m, d) m(2, 461, d) +# define BOOST_PP_REPEAT_1_463(m, d) BOOST_PP_REPEAT_1_462(m, d) m(2, 462, d) +# define BOOST_PP_REPEAT_1_464(m, d) BOOST_PP_REPEAT_1_463(m, d) m(2, 463, d) +# define BOOST_PP_REPEAT_1_465(m, d) BOOST_PP_REPEAT_1_464(m, d) m(2, 464, d) +# define BOOST_PP_REPEAT_1_466(m, d) BOOST_PP_REPEAT_1_465(m, d) m(2, 465, d) +# define BOOST_PP_REPEAT_1_467(m, d) BOOST_PP_REPEAT_1_466(m, d) m(2, 466, d) +# define BOOST_PP_REPEAT_1_468(m, d) BOOST_PP_REPEAT_1_467(m, d) m(2, 467, d) +# define BOOST_PP_REPEAT_1_469(m, d) BOOST_PP_REPEAT_1_468(m, d) m(2, 468, d) +# define BOOST_PP_REPEAT_1_470(m, d) BOOST_PP_REPEAT_1_469(m, d) m(2, 469, d) +# define BOOST_PP_REPEAT_1_471(m, d) BOOST_PP_REPEAT_1_470(m, d) m(2, 470, d) +# define BOOST_PP_REPEAT_1_472(m, d) BOOST_PP_REPEAT_1_471(m, d) m(2, 471, d) +# define BOOST_PP_REPEAT_1_473(m, d) BOOST_PP_REPEAT_1_472(m, d) m(2, 472, d) +# define BOOST_PP_REPEAT_1_474(m, d) BOOST_PP_REPEAT_1_473(m, d) m(2, 473, d) +# define BOOST_PP_REPEAT_1_475(m, d) BOOST_PP_REPEAT_1_474(m, d) m(2, 474, d) +# define BOOST_PP_REPEAT_1_476(m, d) BOOST_PP_REPEAT_1_475(m, d) m(2, 475, d) +# define BOOST_PP_REPEAT_1_477(m, d) BOOST_PP_REPEAT_1_476(m, d) m(2, 476, d) +# define BOOST_PP_REPEAT_1_478(m, d) BOOST_PP_REPEAT_1_477(m, d) m(2, 477, d) +# define BOOST_PP_REPEAT_1_479(m, d) BOOST_PP_REPEAT_1_478(m, d) m(2, 478, d) +# define BOOST_PP_REPEAT_1_480(m, d) BOOST_PP_REPEAT_1_479(m, d) m(2, 479, d) +# define BOOST_PP_REPEAT_1_481(m, d) BOOST_PP_REPEAT_1_480(m, d) m(2, 480, d) +# define BOOST_PP_REPEAT_1_482(m, d) BOOST_PP_REPEAT_1_481(m, d) m(2, 481, d) +# define BOOST_PP_REPEAT_1_483(m, d) BOOST_PP_REPEAT_1_482(m, d) m(2, 482, d) +# define BOOST_PP_REPEAT_1_484(m, d) BOOST_PP_REPEAT_1_483(m, d) m(2, 483, d) +# define BOOST_PP_REPEAT_1_485(m, d) BOOST_PP_REPEAT_1_484(m, d) m(2, 484, d) +# define BOOST_PP_REPEAT_1_486(m, d) BOOST_PP_REPEAT_1_485(m, d) m(2, 485, d) +# define BOOST_PP_REPEAT_1_487(m, d) BOOST_PP_REPEAT_1_486(m, d) m(2, 486, d) +# define BOOST_PP_REPEAT_1_488(m, d) BOOST_PP_REPEAT_1_487(m, d) m(2, 487, d) +# define BOOST_PP_REPEAT_1_489(m, d) BOOST_PP_REPEAT_1_488(m, d) m(2, 488, d) +# define BOOST_PP_REPEAT_1_490(m, d) BOOST_PP_REPEAT_1_489(m, d) m(2, 489, d) +# define BOOST_PP_REPEAT_1_491(m, d) BOOST_PP_REPEAT_1_490(m, d) m(2, 490, d) +# define BOOST_PP_REPEAT_1_492(m, d) BOOST_PP_REPEAT_1_491(m, d) m(2, 491, d) +# define BOOST_PP_REPEAT_1_493(m, d) BOOST_PP_REPEAT_1_492(m, d) m(2, 492, d) +# define BOOST_PP_REPEAT_1_494(m, d) BOOST_PP_REPEAT_1_493(m, d) m(2, 493, d) +# define BOOST_PP_REPEAT_1_495(m, d) BOOST_PP_REPEAT_1_494(m, d) m(2, 494, d) +# define BOOST_PP_REPEAT_1_496(m, d) BOOST_PP_REPEAT_1_495(m, d) m(2, 495, d) +# define BOOST_PP_REPEAT_1_497(m, d) BOOST_PP_REPEAT_1_496(m, d) m(2, 496, d) +# define BOOST_PP_REPEAT_1_498(m, d) BOOST_PP_REPEAT_1_497(m, d) m(2, 497, d) +# define BOOST_PP_REPEAT_1_499(m, d) BOOST_PP_REPEAT_1_498(m, d) m(2, 498, d) +# define BOOST_PP_REPEAT_1_500(m, d) BOOST_PP_REPEAT_1_499(m, d) m(2, 499, d) +# define BOOST_PP_REPEAT_1_501(m, d) BOOST_PP_REPEAT_1_500(m, d) m(2, 500, d) +# define BOOST_PP_REPEAT_1_502(m, d) BOOST_PP_REPEAT_1_501(m, d) m(2, 501, d) +# define BOOST_PP_REPEAT_1_503(m, d) BOOST_PP_REPEAT_1_502(m, d) m(2, 502, d) +# define BOOST_PP_REPEAT_1_504(m, d) BOOST_PP_REPEAT_1_503(m, d) m(2, 503, d) +# define BOOST_PP_REPEAT_1_505(m, d) BOOST_PP_REPEAT_1_504(m, d) m(2, 504, d) +# define BOOST_PP_REPEAT_1_506(m, d) BOOST_PP_REPEAT_1_505(m, d) m(2, 505, d) +# define BOOST_PP_REPEAT_1_507(m, d) BOOST_PP_REPEAT_1_506(m, d) m(2, 506, d) +# define BOOST_PP_REPEAT_1_508(m, d) BOOST_PP_REPEAT_1_507(m, d) m(2, 507, d) +# define BOOST_PP_REPEAT_1_509(m, d) BOOST_PP_REPEAT_1_508(m, d) m(2, 508, d) +# define BOOST_PP_REPEAT_1_510(m, d) BOOST_PP_REPEAT_1_509(m, d) m(2, 509, d) +# define BOOST_PP_REPEAT_1_511(m, d) BOOST_PP_REPEAT_1_510(m, d) m(2, 510, d) +# define BOOST_PP_REPEAT_1_512(m, d) BOOST_PP_REPEAT_1_511(m, d) m(2, 511, d) +# +# define BOOST_PP_REPEAT_2_257(m, d) BOOST_PP_REPEAT_2_256(m, d) m(3, 256, d) +# define BOOST_PP_REPEAT_2_258(m, d) BOOST_PP_REPEAT_2_257(m, d) m(3, 257, d) +# define BOOST_PP_REPEAT_2_259(m, d) BOOST_PP_REPEAT_2_258(m, d) m(3, 258, d) +# define BOOST_PP_REPEAT_2_260(m, d) BOOST_PP_REPEAT_2_259(m, d) m(3, 259, d) +# define BOOST_PP_REPEAT_2_261(m, d) BOOST_PP_REPEAT_2_260(m, d) m(3, 260, d) +# define BOOST_PP_REPEAT_2_262(m, d) BOOST_PP_REPEAT_2_261(m, d) m(3, 261, d) +# define BOOST_PP_REPEAT_2_263(m, d) BOOST_PP_REPEAT_2_262(m, d) m(3, 262, d) +# define BOOST_PP_REPEAT_2_264(m, d) BOOST_PP_REPEAT_2_263(m, d) m(3, 263, d) +# define BOOST_PP_REPEAT_2_265(m, d) BOOST_PP_REPEAT_2_264(m, d) m(3, 264, d) +# define BOOST_PP_REPEAT_2_266(m, d) BOOST_PP_REPEAT_2_265(m, d) m(3, 265, d) +# define BOOST_PP_REPEAT_2_267(m, d) BOOST_PP_REPEAT_2_266(m, d) m(3, 266, d) +# define BOOST_PP_REPEAT_2_268(m, d) BOOST_PP_REPEAT_2_267(m, d) m(3, 267, d) +# define BOOST_PP_REPEAT_2_269(m, d) BOOST_PP_REPEAT_2_268(m, d) m(3, 268, d) +# define BOOST_PP_REPEAT_2_270(m, d) BOOST_PP_REPEAT_2_269(m, d) m(3, 269, d) +# define BOOST_PP_REPEAT_2_271(m, d) BOOST_PP_REPEAT_2_270(m, d) m(3, 270, d) +# define BOOST_PP_REPEAT_2_272(m, d) BOOST_PP_REPEAT_2_271(m, d) m(3, 271, d) +# define BOOST_PP_REPEAT_2_273(m, d) BOOST_PP_REPEAT_2_272(m, d) m(3, 272, d) +# define BOOST_PP_REPEAT_2_274(m, d) BOOST_PP_REPEAT_2_273(m, d) m(3, 273, d) +# define BOOST_PP_REPEAT_2_275(m, d) BOOST_PP_REPEAT_2_274(m, d) m(3, 274, d) +# define BOOST_PP_REPEAT_2_276(m, d) BOOST_PP_REPEAT_2_275(m, d) m(3, 275, d) +# define BOOST_PP_REPEAT_2_277(m, d) BOOST_PP_REPEAT_2_276(m, d) m(3, 276, d) +# define BOOST_PP_REPEAT_2_278(m, d) BOOST_PP_REPEAT_2_277(m, d) m(3, 277, d) +# define BOOST_PP_REPEAT_2_279(m, d) BOOST_PP_REPEAT_2_278(m, d) m(3, 278, d) +# define BOOST_PP_REPEAT_2_280(m, d) BOOST_PP_REPEAT_2_279(m, d) m(3, 279, d) +# define BOOST_PP_REPEAT_2_281(m, d) BOOST_PP_REPEAT_2_280(m, d) m(3, 280, d) +# define BOOST_PP_REPEAT_2_282(m, d) BOOST_PP_REPEAT_2_281(m, d) m(3, 281, d) +# define BOOST_PP_REPEAT_2_283(m, d) BOOST_PP_REPEAT_2_282(m, d) m(3, 282, d) +# define BOOST_PP_REPEAT_2_284(m, d) BOOST_PP_REPEAT_2_283(m, d) m(3, 283, d) +# define BOOST_PP_REPEAT_2_285(m, d) BOOST_PP_REPEAT_2_284(m, d) m(3, 284, d) +# define BOOST_PP_REPEAT_2_286(m, d) BOOST_PP_REPEAT_2_285(m, d) m(3, 285, d) +# define BOOST_PP_REPEAT_2_287(m, d) BOOST_PP_REPEAT_2_286(m, d) m(3, 286, d) +# define BOOST_PP_REPEAT_2_288(m, d) BOOST_PP_REPEAT_2_287(m, d) m(3, 287, d) +# define BOOST_PP_REPEAT_2_289(m, d) BOOST_PP_REPEAT_2_288(m, d) m(3, 288, d) +# define BOOST_PP_REPEAT_2_290(m, d) BOOST_PP_REPEAT_2_289(m, d) m(3, 289, d) +# define BOOST_PP_REPEAT_2_291(m, d) BOOST_PP_REPEAT_2_290(m, d) m(3, 290, d) +# define BOOST_PP_REPEAT_2_292(m, d) BOOST_PP_REPEAT_2_291(m, d) m(3, 291, d) +# define BOOST_PP_REPEAT_2_293(m, d) BOOST_PP_REPEAT_2_292(m, d) m(3, 292, d) +# define BOOST_PP_REPEAT_2_294(m, d) BOOST_PP_REPEAT_2_293(m, d) m(3, 293, d) +# define BOOST_PP_REPEAT_2_295(m, d) BOOST_PP_REPEAT_2_294(m, d) m(3, 294, d) +# define BOOST_PP_REPEAT_2_296(m, d) BOOST_PP_REPEAT_2_295(m, d) m(3, 295, d) +# define BOOST_PP_REPEAT_2_297(m, d) BOOST_PP_REPEAT_2_296(m, d) m(3, 296, d) +# define BOOST_PP_REPEAT_2_298(m, d) BOOST_PP_REPEAT_2_297(m, d) m(3, 297, d) +# define BOOST_PP_REPEAT_2_299(m, d) BOOST_PP_REPEAT_2_298(m, d) m(3, 298, d) +# define BOOST_PP_REPEAT_2_300(m, d) BOOST_PP_REPEAT_2_299(m, d) m(3, 299, d) +# define BOOST_PP_REPEAT_2_301(m, d) BOOST_PP_REPEAT_2_300(m, d) m(3, 300, d) +# define BOOST_PP_REPEAT_2_302(m, d) BOOST_PP_REPEAT_2_301(m, d) m(3, 301, d) +# define BOOST_PP_REPEAT_2_303(m, d) BOOST_PP_REPEAT_2_302(m, d) m(3, 302, d) +# define BOOST_PP_REPEAT_2_304(m, d) BOOST_PP_REPEAT_2_303(m, d) m(3, 303, d) +# define BOOST_PP_REPEAT_2_305(m, d) BOOST_PP_REPEAT_2_304(m, d) m(3, 304, d) +# define BOOST_PP_REPEAT_2_306(m, d) BOOST_PP_REPEAT_2_305(m, d) m(3, 305, d) +# define BOOST_PP_REPEAT_2_307(m, d) BOOST_PP_REPEAT_2_306(m, d) m(3, 306, d) +# define BOOST_PP_REPEAT_2_308(m, d) BOOST_PP_REPEAT_2_307(m, d) m(3, 307, d) +# define BOOST_PP_REPEAT_2_309(m, d) BOOST_PP_REPEAT_2_308(m, d) m(3, 308, d) +# define BOOST_PP_REPEAT_2_310(m, d) BOOST_PP_REPEAT_2_309(m, d) m(3, 309, d) +# define BOOST_PP_REPEAT_2_311(m, d) BOOST_PP_REPEAT_2_310(m, d) m(3, 310, d) +# define BOOST_PP_REPEAT_2_312(m, d) BOOST_PP_REPEAT_2_311(m, d) m(3, 311, d) +# define BOOST_PP_REPEAT_2_313(m, d) BOOST_PP_REPEAT_2_312(m, d) m(3, 312, d) +# define BOOST_PP_REPEAT_2_314(m, d) BOOST_PP_REPEAT_2_313(m, d) m(3, 313, d) +# define BOOST_PP_REPEAT_2_315(m, d) BOOST_PP_REPEAT_2_314(m, d) m(3, 314, d) +# define BOOST_PP_REPEAT_2_316(m, d) BOOST_PP_REPEAT_2_315(m, d) m(3, 315, d) +# define BOOST_PP_REPEAT_2_317(m, d) BOOST_PP_REPEAT_2_316(m, d) m(3, 316, d) +# define BOOST_PP_REPEAT_2_318(m, d) BOOST_PP_REPEAT_2_317(m, d) m(3, 317, d) +# define BOOST_PP_REPEAT_2_319(m, d) BOOST_PP_REPEAT_2_318(m, d) m(3, 318, d) +# define BOOST_PP_REPEAT_2_320(m, d) BOOST_PP_REPEAT_2_319(m, d) m(3, 319, d) +# define BOOST_PP_REPEAT_2_321(m, d) BOOST_PP_REPEAT_2_320(m, d) m(3, 320, d) +# define BOOST_PP_REPEAT_2_322(m, d) BOOST_PP_REPEAT_2_321(m, d) m(3, 321, d) +# define BOOST_PP_REPEAT_2_323(m, d) BOOST_PP_REPEAT_2_322(m, d) m(3, 322, d) +# define BOOST_PP_REPEAT_2_324(m, d) BOOST_PP_REPEAT_2_323(m, d) m(3, 323, d) +# define BOOST_PP_REPEAT_2_325(m, d) BOOST_PP_REPEAT_2_324(m, d) m(3, 324, d) +# define BOOST_PP_REPEAT_2_326(m, d) BOOST_PP_REPEAT_2_325(m, d) m(3, 325, d) +# define BOOST_PP_REPEAT_2_327(m, d) BOOST_PP_REPEAT_2_326(m, d) m(3, 326, d) +# define BOOST_PP_REPEAT_2_328(m, d) BOOST_PP_REPEAT_2_327(m, d) m(3, 327, d) +# define BOOST_PP_REPEAT_2_329(m, d) BOOST_PP_REPEAT_2_328(m, d) m(3, 328, d) +# define BOOST_PP_REPEAT_2_330(m, d) BOOST_PP_REPEAT_2_329(m, d) m(3, 329, d) +# define BOOST_PP_REPEAT_2_331(m, d) BOOST_PP_REPEAT_2_330(m, d) m(3, 330, d) +# define BOOST_PP_REPEAT_2_332(m, d) BOOST_PP_REPEAT_2_331(m, d) m(3, 331, d) +# define BOOST_PP_REPEAT_2_333(m, d) BOOST_PP_REPEAT_2_332(m, d) m(3, 332, d) +# define BOOST_PP_REPEAT_2_334(m, d) BOOST_PP_REPEAT_2_333(m, d) m(3, 333, d) +# define BOOST_PP_REPEAT_2_335(m, d) BOOST_PP_REPEAT_2_334(m, d) m(3, 334, d) +# define BOOST_PP_REPEAT_2_336(m, d) BOOST_PP_REPEAT_2_335(m, d) m(3, 335, d) +# define BOOST_PP_REPEAT_2_337(m, d) BOOST_PP_REPEAT_2_336(m, d) m(3, 336, d) +# define BOOST_PP_REPEAT_2_338(m, d) BOOST_PP_REPEAT_2_337(m, d) m(3, 337, d) +# define BOOST_PP_REPEAT_2_339(m, d) BOOST_PP_REPEAT_2_338(m, d) m(3, 338, d) +# define BOOST_PP_REPEAT_2_340(m, d) BOOST_PP_REPEAT_2_339(m, d) m(3, 339, d) +# define BOOST_PP_REPEAT_2_341(m, d) BOOST_PP_REPEAT_2_340(m, d) m(3, 340, d) +# define BOOST_PP_REPEAT_2_342(m, d) BOOST_PP_REPEAT_2_341(m, d) m(3, 341, d) +# define BOOST_PP_REPEAT_2_343(m, d) BOOST_PP_REPEAT_2_342(m, d) m(3, 342, d) +# define BOOST_PP_REPEAT_2_344(m, d) BOOST_PP_REPEAT_2_343(m, d) m(3, 343, d) +# define BOOST_PP_REPEAT_2_345(m, d) BOOST_PP_REPEAT_2_344(m, d) m(3, 344, d) +# define BOOST_PP_REPEAT_2_346(m, d) BOOST_PP_REPEAT_2_345(m, d) m(3, 345, d) +# define BOOST_PP_REPEAT_2_347(m, d) BOOST_PP_REPEAT_2_346(m, d) m(3, 346, d) +# define BOOST_PP_REPEAT_2_348(m, d) BOOST_PP_REPEAT_2_347(m, d) m(3, 347, d) +# define BOOST_PP_REPEAT_2_349(m, d) BOOST_PP_REPEAT_2_348(m, d) m(3, 348, d) +# define BOOST_PP_REPEAT_2_350(m, d) BOOST_PP_REPEAT_2_349(m, d) m(3, 349, d) +# define BOOST_PP_REPEAT_2_351(m, d) BOOST_PP_REPEAT_2_350(m, d) m(3, 350, d) +# define BOOST_PP_REPEAT_2_352(m, d) BOOST_PP_REPEAT_2_351(m, d) m(3, 351, d) +# define BOOST_PP_REPEAT_2_353(m, d) BOOST_PP_REPEAT_2_352(m, d) m(3, 352, d) +# define BOOST_PP_REPEAT_2_354(m, d) BOOST_PP_REPEAT_2_353(m, d) m(3, 353, d) +# define BOOST_PP_REPEAT_2_355(m, d) BOOST_PP_REPEAT_2_354(m, d) m(3, 354, d) +# define BOOST_PP_REPEAT_2_356(m, d) BOOST_PP_REPEAT_2_355(m, d) m(3, 355, d) +# define BOOST_PP_REPEAT_2_357(m, d) BOOST_PP_REPEAT_2_356(m, d) m(3, 356, d) +# define BOOST_PP_REPEAT_2_358(m, d) BOOST_PP_REPEAT_2_357(m, d) m(3, 357, d) +# define BOOST_PP_REPEAT_2_359(m, d) BOOST_PP_REPEAT_2_358(m, d) m(3, 358, d) +# define BOOST_PP_REPEAT_2_360(m, d) BOOST_PP_REPEAT_2_359(m, d) m(3, 359, d) +# define BOOST_PP_REPEAT_2_361(m, d) BOOST_PP_REPEAT_2_360(m, d) m(3, 360, d) +# define BOOST_PP_REPEAT_2_362(m, d) BOOST_PP_REPEAT_2_361(m, d) m(3, 361, d) +# define BOOST_PP_REPEAT_2_363(m, d) BOOST_PP_REPEAT_2_362(m, d) m(3, 362, d) +# define BOOST_PP_REPEAT_2_364(m, d) BOOST_PP_REPEAT_2_363(m, d) m(3, 363, d) +# define BOOST_PP_REPEAT_2_365(m, d) BOOST_PP_REPEAT_2_364(m, d) m(3, 364, d) +# define BOOST_PP_REPEAT_2_366(m, d) BOOST_PP_REPEAT_2_365(m, d) m(3, 365, d) +# define BOOST_PP_REPEAT_2_367(m, d) BOOST_PP_REPEAT_2_366(m, d) m(3, 366, d) +# define BOOST_PP_REPEAT_2_368(m, d) BOOST_PP_REPEAT_2_367(m, d) m(3, 367, d) +# define BOOST_PP_REPEAT_2_369(m, d) BOOST_PP_REPEAT_2_368(m, d) m(3, 368, d) +# define BOOST_PP_REPEAT_2_370(m, d) BOOST_PP_REPEAT_2_369(m, d) m(3, 369, d) +# define BOOST_PP_REPEAT_2_371(m, d) BOOST_PP_REPEAT_2_370(m, d) m(3, 370, d) +# define BOOST_PP_REPEAT_2_372(m, d) BOOST_PP_REPEAT_2_371(m, d) m(3, 371, d) +# define BOOST_PP_REPEAT_2_373(m, d) BOOST_PP_REPEAT_2_372(m, d) m(3, 372, d) +# define BOOST_PP_REPEAT_2_374(m, d) BOOST_PP_REPEAT_2_373(m, d) m(3, 373, d) +# define BOOST_PP_REPEAT_2_375(m, d) BOOST_PP_REPEAT_2_374(m, d) m(3, 374, d) +# define BOOST_PP_REPEAT_2_376(m, d) BOOST_PP_REPEAT_2_375(m, d) m(3, 375, d) +# define BOOST_PP_REPEAT_2_377(m, d) BOOST_PP_REPEAT_2_376(m, d) m(3, 376, d) +# define BOOST_PP_REPEAT_2_378(m, d) BOOST_PP_REPEAT_2_377(m, d) m(3, 377, d) +# define BOOST_PP_REPEAT_2_379(m, d) BOOST_PP_REPEAT_2_378(m, d) m(3, 378, d) +# define BOOST_PP_REPEAT_2_380(m, d) BOOST_PP_REPEAT_2_379(m, d) m(3, 379, d) +# define BOOST_PP_REPEAT_2_381(m, d) BOOST_PP_REPEAT_2_380(m, d) m(3, 380, d) +# define BOOST_PP_REPEAT_2_382(m, d) BOOST_PP_REPEAT_2_381(m, d) m(3, 381, d) +# define BOOST_PP_REPEAT_2_383(m, d) BOOST_PP_REPEAT_2_382(m, d) m(3, 382, d) +# define BOOST_PP_REPEAT_2_384(m, d) BOOST_PP_REPEAT_2_383(m, d) m(3, 383, d) +# define BOOST_PP_REPEAT_2_385(m, d) BOOST_PP_REPEAT_2_384(m, d) m(3, 384, d) +# define BOOST_PP_REPEAT_2_386(m, d) BOOST_PP_REPEAT_2_385(m, d) m(3, 385, d) +# define BOOST_PP_REPEAT_2_387(m, d) BOOST_PP_REPEAT_2_386(m, d) m(3, 386, d) +# define BOOST_PP_REPEAT_2_388(m, d) BOOST_PP_REPEAT_2_387(m, d) m(3, 387, d) +# define BOOST_PP_REPEAT_2_389(m, d) BOOST_PP_REPEAT_2_388(m, d) m(3, 388, d) +# define BOOST_PP_REPEAT_2_390(m, d) BOOST_PP_REPEAT_2_389(m, d) m(3, 389, d) +# define BOOST_PP_REPEAT_2_391(m, d) BOOST_PP_REPEAT_2_390(m, d) m(3, 390, d) +# define BOOST_PP_REPEAT_2_392(m, d) BOOST_PP_REPEAT_2_391(m, d) m(3, 391, d) +# define BOOST_PP_REPEAT_2_393(m, d) BOOST_PP_REPEAT_2_392(m, d) m(3, 392, d) +# define BOOST_PP_REPEAT_2_394(m, d) BOOST_PP_REPEAT_2_393(m, d) m(3, 393, d) +# define BOOST_PP_REPEAT_2_395(m, d) BOOST_PP_REPEAT_2_394(m, d) m(3, 394, d) +# define BOOST_PP_REPEAT_2_396(m, d) BOOST_PP_REPEAT_2_395(m, d) m(3, 395, d) +# define BOOST_PP_REPEAT_2_397(m, d) BOOST_PP_REPEAT_2_396(m, d) m(3, 396, d) +# define BOOST_PP_REPEAT_2_398(m, d) BOOST_PP_REPEAT_2_397(m, d) m(3, 397, d) +# define BOOST_PP_REPEAT_2_399(m, d) BOOST_PP_REPEAT_2_398(m, d) m(3, 398, d) +# define BOOST_PP_REPEAT_2_400(m, d) BOOST_PP_REPEAT_2_399(m, d) m(3, 399, d) +# define BOOST_PP_REPEAT_2_401(m, d) BOOST_PP_REPEAT_2_400(m, d) m(3, 400, d) +# define BOOST_PP_REPEAT_2_402(m, d) BOOST_PP_REPEAT_2_401(m, d) m(3, 401, d) +# define BOOST_PP_REPEAT_2_403(m, d) BOOST_PP_REPEAT_2_402(m, d) m(3, 402, d) +# define BOOST_PP_REPEAT_2_404(m, d) BOOST_PP_REPEAT_2_403(m, d) m(3, 403, d) +# define BOOST_PP_REPEAT_2_405(m, d) BOOST_PP_REPEAT_2_404(m, d) m(3, 404, d) +# define BOOST_PP_REPEAT_2_406(m, d) BOOST_PP_REPEAT_2_405(m, d) m(3, 405, d) +# define BOOST_PP_REPEAT_2_407(m, d) BOOST_PP_REPEAT_2_406(m, d) m(3, 406, d) +# define BOOST_PP_REPEAT_2_408(m, d) BOOST_PP_REPEAT_2_407(m, d) m(3, 407, d) +# define BOOST_PP_REPEAT_2_409(m, d) BOOST_PP_REPEAT_2_408(m, d) m(3, 408, d) +# define BOOST_PP_REPEAT_2_410(m, d) BOOST_PP_REPEAT_2_409(m, d) m(3, 409, d) +# define BOOST_PP_REPEAT_2_411(m, d) BOOST_PP_REPEAT_2_410(m, d) m(3, 410, d) +# define BOOST_PP_REPEAT_2_412(m, d) BOOST_PP_REPEAT_2_411(m, d) m(3, 411, d) +# define BOOST_PP_REPEAT_2_413(m, d) BOOST_PP_REPEAT_2_412(m, d) m(3, 412, d) +# define BOOST_PP_REPEAT_2_414(m, d) BOOST_PP_REPEAT_2_413(m, d) m(3, 413, d) +# define BOOST_PP_REPEAT_2_415(m, d) BOOST_PP_REPEAT_2_414(m, d) m(3, 414, d) +# define BOOST_PP_REPEAT_2_416(m, d) BOOST_PP_REPEAT_2_415(m, d) m(3, 415, d) +# define BOOST_PP_REPEAT_2_417(m, d) BOOST_PP_REPEAT_2_416(m, d) m(3, 416, d) +# define BOOST_PP_REPEAT_2_418(m, d) BOOST_PP_REPEAT_2_417(m, d) m(3, 417, d) +# define BOOST_PP_REPEAT_2_419(m, d) BOOST_PP_REPEAT_2_418(m, d) m(3, 418, d) +# define BOOST_PP_REPEAT_2_420(m, d) BOOST_PP_REPEAT_2_419(m, d) m(3, 419, d) +# define BOOST_PP_REPEAT_2_421(m, d) BOOST_PP_REPEAT_2_420(m, d) m(3, 420, d) +# define BOOST_PP_REPEAT_2_422(m, d) BOOST_PP_REPEAT_2_421(m, d) m(3, 421, d) +# define BOOST_PP_REPEAT_2_423(m, d) BOOST_PP_REPEAT_2_422(m, d) m(3, 422, d) +# define BOOST_PP_REPEAT_2_424(m, d) BOOST_PP_REPEAT_2_423(m, d) m(3, 423, d) +# define BOOST_PP_REPEAT_2_425(m, d) BOOST_PP_REPEAT_2_424(m, d) m(3, 424, d) +# define BOOST_PP_REPEAT_2_426(m, d) BOOST_PP_REPEAT_2_425(m, d) m(3, 425, d) +# define BOOST_PP_REPEAT_2_427(m, d) BOOST_PP_REPEAT_2_426(m, d) m(3, 426, d) +# define BOOST_PP_REPEAT_2_428(m, d) BOOST_PP_REPEAT_2_427(m, d) m(3, 427, d) +# define BOOST_PP_REPEAT_2_429(m, d) BOOST_PP_REPEAT_2_428(m, d) m(3, 428, d) +# define BOOST_PP_REPEAT_2_430(m, d) BOOST_PP_REPEAT_2_429(m, d) m(3, 429, d) +# define BOOST_PP_REPEAT_2_431(m, d) BOOST_PP_REPEAT_2_430(m, d) m(3, 430, d) +# define BOOST_PP_REPEAT_2_432(m, d) BOOST_PP_REPEAT_2_431(m, d) m(3, 431, d) +# define BOOST_PP_REPEAT_2_433(m, d) BOOST_PP_REPEAT_2_432(m, d) m(3, 432, d) +# define BOOST_PP_REPEAT_2_434(m, d) BOOST_PP_REPEAT_2_433(m, d) m(3, 433, d) +# define BOOST_PP_REPEAT_2_435(m, d) BOOST_PP_REPEAT_2_434(m, d) m(3, 434, d) +# define BOOST_PP_REPEAT_2_436(m, d) BOOST_PP_REPEAT_2_435(m, d) m(3, 435, d) +# define BOOST_PP_REPEAT_2_437(m, d) BOOST_PP_REPEAT_2_436(m, d) m(3, 436, d) +# define BOOST_PP_REPEAT_2_438(m, d) BOOST_PP_REPEAT_2_437(m, d) m(3, 437, d) +# define BOOST_PP_REPEAT_2_439(m, d) BOOST_PP_REPEAT_2_438(m, d) m(3, 438, d) +# define BOOST_PP_REPEAT_2_440(m, d) BOOST_PP_REPEAT_2_439(m, d) m(3, 439, d) +# define BOOST_PP_REPEAT_2_441(m, d) BOOST_PP_REPEAT_2_440(m, d) m(3, 440, d) +# define BOOST_PP_REPEAT_2_442(m, d) BOOST_PP_REPEAT_2_441(m, d) m(3, 441, d) +# define BOOST_PP_REPEAT_2_443(m, d) BOOST_PP_REPEAT_2_442(m, d) m(3, 442, d) +# define BOOST_PP_REPEAT_2_444(m, d) BOOST_PP_REPEAT_2_443(m, d) m(3, 443, d) +# define BOOST_PP_REPEAT_2_445(m, d) BOOST_PP_REPEAT_2_444(m, d) m(3, 444, d) +# define BOOST_PP_REPEAT_2_446(m, d) BOOST_PP_REPEAT_2_445(m, d) m(3, 445, d) +# define BOOST_PP_REPEAT_2_447(m, d) BOOST_PP_REPEAT_2_446(m, d) m(3, 446, d) +# define BOOST_PP_REPEAT_2_448(m, d) BOOST_PP_REPEAT_2_447(m, d) m(3, 447, d) +# define BOOST_PP_REPEAT_2_449(m, d) BOOST_PP_REPEAT_2_448(m, d) m(3, 448, d) +# define BOOST_PP_REPEAT_2_450(m, d) BOOST_PP_REPEAT_2_449(m, d) m(3, 449, d) +# define BOOST_PP_REPEAT_2_451(m, d) BOOST_PP_REPEAT_2_450(m, d) m(3, 450, d) +# define BOOST_PP_REPEAT_2_452(m, d) BOOST_PP_REPEAT_2_451(m, d) m(3, 451, d) +# define BOOST_PP_REPEAT_2_453(m, d) BOOST_PP_REPEAT_2_452(m, d) m(3, 452, d) +# define BOOST_PP_REPEAT_2_454(m, d) BOOST_PP_REPEAT_2_453(m, d) m(3, 453, d) +# define BOOST_PP_REPEAT_2_455(m, d) BOOST_PP_REPEAT_2_454(m, d) m(3, 454, d) +# define BOOST_PP_REPEAT_2_456(m, d) BOOST_PP_REPEAT_2_455(m, d) m(3, 455, d) +# define BOOST_PP_REPEAT_2_457(m, d) BOOST_PP_REPEAT_2_456(m, d) m(3, 456, d) +# define BOOST_PP_REPEAT_2_458(m, d) BOOST_PP_REPEAT_2_457(m, d) m(3, 457, d) +# define BOOST_PP_REPEAT_2_459(m, d) BOOST_PP_REPEAT_2_458(m, d) m(3, 458, d) +# define BOOST_PP_REPEAT_2_460(m, d) BOOST_PP_REPEAT_2_459(m, d) m(3, 459, d) +# define BOOST_PP_REPEAT_2_461(m, d) BOOST_PP_REPEAT_2_460(m, d) m(3, 460, d) +# define BOOST_PP_REPEAT_2_462(m, d) BOOST_PP_REPEAT_2_461(m, d) m(3, 461, d) +# define BOOST_PP_REPEAT_2_463(m, d) BOOST_PP_REPEAT_2_462(m, d) m(3, 462, d) +# define BOOST_PP_REPEAT_2_464(m, d) BOOST_PP_REPEAT_2_463(m, d) m(3, 463, d) +# define BOOST_PP_REPEAT_2_465(m, d) BOOST_PP_REPEAT_2_464(m, d) m(3, 464, d) +# define BOOST_PP_REPEAT_2_466(m, d) BOOST_PP_REPEAT_2_465(m, d) m(3, 465, d) +# define BOOST_PP_REPEAT_2_467(m, d) BOOST_PP_REPEAT_2_466(m, d) m(3, 466, d) +# define BOOST_PP_REPEAT_2_468(m, d) BOOST_PP_REPEAT_2_467(m, d) m(3, 467, d) +# define BOOST_PP_REPEAT_2_469(m, d) BOOST_PP_REPEAT_2_468(m, d) m(3, 468, d) +# define BOOST_PP_REPEAT_2_470(m, d) BOOST_PP_REPEAT_2_469(m, d) m(3, 469, d) +# define BOOST_PP_REPEAT_2_471(m, d) BOOST_PP_REPEAT_2_470(m, d) m(3, 470, d) +# define BOOST_PP_REPEAT_2_472(m, d) BOOST_PP_REPEAT_2_471(m, d) m(3, 471, d) +# define BOOST_PP_REPEAT_2_473(m, d) BOOST_PP_REPEAT_2_472(m, d) m(3, 472, d) +# define BOOST_PP_REPEAT_2_474(m, d) BOOST_PP_REPEAT_2_473(m, d) m(3, 473, d) +# define BOOST_PP_REPEAT_2_475(m, d) BOOST_PP_REPEAT_2_474(m, d) m(3, 474, d) +# define BOOST_PP_REPEAT_2_476(m, d) BOOST_PP_REPEAT_2_475(m, d) m(3, 475, d) +# define BOOST_PP_REPEAT_2_477(m, d) BOOST_PP_REPEAT_2_476(m, d) m(3, 476, d) +# define BOOST_PP_REPEAT_2_478(m, d) BOOST_PP_REPEAT_2_477(m, d) m(3, 477, d) +# define BOOST_PP_REPEAT_2_479(m, d) BOOST_PP_REPEAT_2_478(m, d) m(3, 478, d) +# define BOOST_PP_REPEAT_2_480(m, d) BOOST_PP_REPEAT_2_479(m, d) m(3, 479, d) +# define BOOST_PP_REPEAT_2_481(m, d) BOOST_PP_REPEAT_2_480(m, d) m(3, 480, d) +# define BOOST_PP_REPEAT_2_482(m, d) BOOST_PP_REPEAT_2_481(m, d) m(3, 481, d) +# define BOOST_PP_REPEAT_2_483(m, d) BOOST_PP_REPEAT_2_482(m, d) m(3, 482, d) +# define BOOST_PP_REPEAT_2_484(m, d) BOOST_PP_REPEAT_2_483(m, d) m(3, 483, d) +# define BOOST_PP_REPEAT_2_485(m, d) BOOST_PP_REPEAT_2_484(m, d) m(3, 484, d) +# define BOOST_PP_REPEAT_2_486(m, d) BOOST_PP_REPEAT_2_485(m, d) m(3, 485, d) +# define BOOST_PP_REPEAT_2_487(m, d) BOOST_PP_REPEAT_2_486(m, d) m(3, 486, d) +# define BOOST_PP_REPEAT_2_488(m, d) BOOST_PP_REPEAT_2_487(m, d) m(3, 487, d) +# define BOOST_PP_REPEAT_2_489(m, d) BOOST_PP_REPEAT_2_488(m, d) m(3, 488, d) +# define BOOST_PP_REPEAT_2_490(m, d) BOOST_PP_REPEAT_2_489(m, d) m(3, 489, d) +# define BOOST_PP_REPEAT_2_491(m, d) BOOST_PP_REPEAT_2_490(m, d) m(3, 490, d) +# define BOOST_PP_REPEAT_2_492(m, d) BOOST_PP_REPEAT_2_491(m, d) m(3, 491, d) +# define BOOST_PP_REPEAT_2_493(m, d) BOOST_PP_REPEAT_2_492(m, d) m(3, 492, d) +# define BOOST_PP_REPEAT_2_494(m, d) BOOST_PP_REPEAT_2_493(m, d) m(3, 493, d) +# define BOOST_PP_REPEAT_2_495(m, d) BOOST_PP_REPEAT_2_494(m, d) m(3, 494, d) +# define BOOST_PP_REPEAT_2_496(m, d) BOOST_PP_REPEAT_2_495(m, d) m(3, 495, d) +# define BOOST_PP_REPEAT_2_497(m, d) BOOST_PP_REPEAT_2_496(m, d) m(3, 496, d) +# define BOOST_PP_REPEAT_2_498(m, d) BOOST_PP_REPEAT_2_497(m, d) m(3, 497, d) +# define BOOST_PP_REPEAT_2_499(m, d) BOOST_PP_REPEAT_2_498(m, d) m(3, 498, d) +# define BOOST_PP_REPEAT_2_500(m, d) BOOST_PP_REPEAT_2_499(m, d) m(3, 499, d) +# define BOOST_PP_REPEAT_2_501(m, d) BOOST_PP_REPEAT_2_500(m, d) m(3, 500, d) +# define BOOST_PP_REPEAT_2_502(m, d) BOOST_PP_REPEAT_2_501(m, d) m(3, 501, d) +# define BOOST_PP_REPEAT_2_503(m, d) BOOST_PP_REPEAT_2_502(m, d) m(3, 502, d) +# define BOOST_PP_REPEAT_2_504(m, d) BOOST_PP_REPEAT_2_503(m, d) m(3, 503, d) +# define BOOST_PP_REPEAT_2_505(m, d) BOOST_PP_REPEAT_2_504(m, d) m(3, 504, d) +# define BOOST_PP_REPEAT_2_506(m, d) BOOST_PP_REPEAT_2_505(m, d) m(3, 505, d) +# define BOOST_PP_REPEAT_2_507(m, d) BOOST_PP_REPEAT_2_506(m, d) m(3, 506, d) +# define BOOST_PP_REPEAT_2_508(m, d) BOOST_PP_REPEAT_2_507(m, d) m(3, 507, d) +# define BOOST_PP_REPEAT_2_509(m, d) BOOST_PP_REPEAT_2_508(m, d) m(3, 508, d) +# define BOOST_PP_REPEAT_2_510(m, d) BOOST_PP_REPEAT_2_509(m, d) m(3, 509, d) +# define BOOST_PP_REPEAT_2_511(m, d) BOOST_PP_REPEAT_2_510(m, d) m(3, 510, d) +# define BOOST_PP_REPEAT_2_512(m, d) BOOST_PP_REPEAT_2_511(m, d) m(3, 511, d) +# +# define BOOST_PP_REPEAT_3_257(m, d) BOOST_PP_REPEAT_3_256(m, d) m(4, 256, d) +# define BOOST_PP_REPEAT_3_258(m, d) BOOST_PP_REPEAT_3_257(m, d) m(4, 257, d) +# define BOOST_PP_REPEAT_3_259(m, d) BOOST_PP_REPEAT_3_258(m, d) m(4, 258, d) +# define BOOST_PP_REPEAT_3_260(m, d) BOOST_PP_REPEAT_3_259(m, d) m(4, 259, d) +# define BOOST_PP_REPEAT_3_261(m, d) BOOST_PP_REPEAT_3_260(m, d) m(4, 260, d) +# define BOOST_PP_REPEAT_3_262(m, d) BOOST_PP_REPEAT_3_261(m, d) m(4, 261, d) +# define BOOST_PP_REPEAT_3_263(m, d) BOOST_PP_REPEAT_3_262(m, d) m(4, 262, d) +# define BOOST_PP_REPEAT_3_264(m, d) BOOST_PP_REPEAT_3_263(m, d) m(4, 263, d) +# define BOOST_PP_REPEAT_3_265(m, d) BOOST_PP_REPEAT_3_264(m, d) m(4, 264, d) +# define BOOST_PP_REPEAT_3_266(m, d) BOOST_PP_REPEAT_3_265(m, d) m(4, 265, d) +# define BOOST_PP_REPEAT_3_267(m, d) BOOST_PP_REPEAT_3_266(m, d) m(4, 266, d) +# define BOOST_PP_REPEAT_3_268(m, d) BOOST_PP_REPEAT_3_267(m, d) m(4, 267, d) +# define BOOST_PP_REPEAT_3_269(m, d) BOOST_PP_REPEAT_3_268(m, d) m(4, 268, d) +# define BOOST_PP_REPEAT_3_270(m, d) BOOST_PP_REPEAT_3_269(m, d) m(4, 269, d) +# define BOOST_PP_REPEAT_3_271(m, d) BOOST_PP_REPEAT_3_270(m, d) m(4, 270, d) +# define BOOST_PP_REPEAT_3_272(m, d) BOOST_PP_REPEAT_3_271(m, d) m(4, 271, d) +# define BOOST_PP_REPEAT_3_273(m, d) BOOST_PP_REPEAT_3_272(m, d) m(4, 272, d) +# define BOOST_PP_REPEAT_3_274(m, d) BOOST_PP_REPEAT_3_273(m, d) m(4, 273, d) +# define BOOST_PP_REPEAT_3_275(m, d) BOOST_PP_REPEAT_3_274(m, d) m(4, 274, d) +# define BOOST_PP_REPEAT_3_276(m, d) BOOST_PP_REPEAT_3_275(m, d) m(4, 275, d) +# define BOOST_PP_REPEAT_3_277(m, d) BOOST_PP_REPEAT_3_276(m, d) m(4, 276, d) +# define BOOST_PP_REPEAT_3_278(m, d) BOOST_PP_REPEAT_3_277(m, d) m(4, 277, d) +# define BOOST_PP_REPEAT_3_279(m, d) BOOST_PP_REPEAT_3_278(m, d) m(4, 278, d) +# define BOOST_PP_REPEAT_3_280(m, d) BOOST_PP_REPEAT_3_279(m, d) m(4, 279, d) +# define BOOST_PP_REPEAT_3_281(m, d) BOOST_PP_REPEAT_3_280(m, d) m(4, 280, d) +# define BOOST_PP_REPEAT_3_282(m, d) BOOST_PP_REPEAT_3_281(m, d) m(4, 281, d) +# define BOOST_PP_REPEAT_3_283(m, d) BOOST_PP_REPEAT_3_282(m, d) m(4, 282, d) +# define BOOST_PP_REPEAT_3_284(m, d) BOOST_PP_REPEAT_3_283(m, d) m(4, 283, d) +# define BOOST_PP_REPEAT_3_285(m, d) BOOST_PP_REPEAT_3_284(m, d) m(4, 284, d) +# define BOOST_PP_REPEAT_3_286(m, d) BOOST_PP_REPEAT_3_285(m, d) m(4, 285, d) +# define BOOST_PP_REPEAT_3_287(m, d) BOOST_PP_REPEAT_3_286(m, d) m(4, 286, d) +# define BOOST_PP_REPEAT_3_288(m, d) BOOST_PP_REPEAT_3_287(m, d) m(4, 287, d) +# define BOOST_PP_REPEAT_3_289(m, d) BOOST_PP_REPEAT_3_288(m, d) m(4, 288, d) +# define BOOST_PP_REPEAT_3_290(m, d) BOOST_PP_REPEAT_3_289(m, d) m(4, 289, d) +# define BOOST_PP_REPEAT_3_291(m, d) BOOST_PP_REPEAT_3_290(m, d) m(4, 290, d) +# define BOOST_PP_REPEAT_3_292(m, d) BOOST_PP_REPEAT_3_291(m, d) m(4, 291, d) +# define BOOST_PP_REPEAT_3_293(m, d) BOOST_PP_REPEAT_3_292(m, d) m(4, 292, d) +# define BOOST_PP_REPEAT_3_294(m, d) BOOST_PP_REPEAT_3_293(m, d) m(4, 293, d) +# define BOOST_PP_REPEAT_3_295(m, d) BOOST_PP_REPEAT_3_294(m, d) m(4, 294, d) +# define BOOST_PP_REPEAT_3_296(m, d) BOOST_PP_REPEAT_3_295(m, d) m(4, 295, d) +# define BOOST_PP_REPEAT_3_297(m, d) BOOST_PP_REPEAT_3_296(m, d) m(4, 296, d) +# define BOOST_PP_REPEAT_3_298(m, d) BOOST_PP_REPEAT_3_297(m, d) m(4, 297, d) +# define BOOST_PP_REPEAT_3_299(m, d) BOOST_PP_REPEAT_3_298(m, d) m(4, 298, d) +# define BOOST_PP_REPEAT_3_300(m, d) BOOST_PP_REPEAT_3_299(m, d) m(4, 299, d) +# define BOOST_PP_REPEAT_3_301(m, d) BOOST_PP_REPEAT_3_300(m, d) m(4, 300, d) +# define BOOST_PP_REPEAT_3_302(m, d) BOOST_PP_REPEAT_3_301(m, d) m(4, 301, d) +# define BOOST_PP_REPEAT_3_303(m, d) BOOST_PP_REPEAT_3_302(m, d) m(4, 302, d) +# define BOOST_PP_REPEAT_3_304(m, d) BOOST_PP_REPEAT_3_303(m, d) m(4, 303, d) +# define BOOST_PP_REPEAT_3_305(m, d) BOOST_PP_REPEAT_3_304(m, d) m(4, 304, d) +# define BOOST_PP_REPEAT_3_306(m, d) BOOST_PP_REPEAT_3_305(m, d) m(4, 305, d) +# define BOOST_PP_REPEAT_3_307(m, d) BOOST_PP_REPEAT_3_306(m, d) m(4, 306, d) +# define BOOST_PP_REPEAT_3_308(m, d) BOOST_PP_REPEAT_3_307(m, d) m(4, 307, d) +# define BOOST_PP_REPEAT_3_309(m, d) BOOST_PP_REPEAT_3_308(m, d) m(4, 308, d) +# define BOOST_PP_REPEAT_3_310(m, d) BOOST_PP_REPEAT_3_309(m, d) m(4, 309, d) +# define BOOST_PP_REPEAT_3_311(m, d) BOOST_PP_REPEAT_3_310(m, d) m(4, 310, d) +# define BOOST_PP_REPEAT_3_312(m, d) BOOST_PP_REPEAT_3_311(m, d) m(4, 311, d) +# define BOOST_PP_REPEAT_3_313(m, d) BOOST_PP_REPEAT_3_312(m, d) m(4, 312, d) +# define BOOST_PP_REPEAT_3_314(m, d) BOOST_PP_REPEAT_3_313(m, d) m(4, 313, d) +# define BOOST_PP_REPEAT_3_315(m, d) BOOST_PP_REPEAT_3_314(m, d) m(4, 314, d) +# define BOOST_PP_REPEAT_3_316(m, d) BOOST_PP_REPEAT_3_315(m, d) m(4, 315, d) +# define BOOST_PP_REPEAT_3_317(m, d) BOOST_PP_REPEAT_3_316(m, d) m(4, 316, d) +# define BOOST_PP_REPEAT_3_318(m, d) BOOST_PP_REPEAT_3_317(m, d) m(4, 317, d) +# define BOOST_PP_REPEAT_3_319(m, d) BOOST_PP_REPEAT_3_318(m, d) m(4, 318, d) +# define BOOST_PP_REPEAT_3_320(m, d) BOOST_PP_REPEAT_3_319(m, d) m(4, 319, d) +# define BOOST_PP_REPEAT_3_321(m, d) BOOST_PP_REPEAT_3_320(m, d) m(4, 320, d) +# define BOOST_PP_REPEAT_3_322(m, d) BOOST_PP_REPEAT_3_321(m, d) m(4, 321, d) +# define BOOST_PP_REPEAT_3_323(m, d) BOOST_PP_REPEAT_3_322(m, d) m(4, 322, d) +# define BOOST_PP_REPEAT_3_324(m, d) BOOST_PP_REPEAT_3_323(m, d) m(4, 323, d) +# define BOOST_PP_REPEAT_3_325(m, d) BOOST_PP_REPEAT_3_324(m, d) m(4, 324, d) +# define BOOST_PP_REPEAT_3_326(m, d) BOOST_PP_REPEAT_3_325(m, d) m(4, 325, d) +# define BOOST_PP_REPEAT_3_327(m, d) BOOST_PP_REPEAT_3_326(m, d) m(4, 326, d) +# define BOOST_PP_REPEAT_3_328(m, d) BOOST_PP_REPEAT_3_327(m, d) m(4, 327, d) +# define BOOST_PP_REPEAT_3_329(m, d) BOOST_PP_REPEAT_3_328(m, d) m(4, 328, d) +# define BOOST_PP_REPEAT_3_330(m, d) BOOST_PP_REPEAT_3_329(m, d) m(4, 329, d) +# define BOOST_PP_REPEAT_3_331(m, d) BOOST_PP_REPEAT_3_330(m, d) m(4, 330, d) +# define BOOST_PP_REPEAT_3_332(m, d) BOOST_PP_REPEAT_3_331(m, d) m(4, 331, d) +# define BOOST_PP_REPEAT_3_333(m, d) BOOST_PP_REPEAT_3_332(m, d) m(4, 332, d) +# define BOOST_PP_REPEAT_3_334(m, d) BOOST_PP_REPEAT_3_333(m, d) m(4, 333, d) +# define BOOST_PP_REPEAT_3_335(m, d) BOOST_PP_REPEAT_3_334(m, d) m(4, 334, d) +# define BOOST_PP_REPEAT_3_336(m, d) BOOST_PP_REPEAT_3_335(m, d) m(4, 335, d) +# define BOOST_PP_REPEAT_3_337(m, d) BOOST_PP_REPEAT_3_336(m, d) m(4, 336, d) +# define BOOST_PP_REPEAT_3_338(m, d) BOOST_PP_REPEAT_3_337(m, d) m(4, 337, d) +# define BOOST_PP_REPEAT_3_339(m, d) BOOST_PP_REPEAT_3_338(m, d) m(4, 338, d) +# define BOOST_PP_REPEAT_3_340(m, d) BOOST_PP_REPEAT_3_339(m, d) m(4, 339, d) +# define BOOST_PP_REPEAT_3_341(m, d) BOOST_PP_REPEAT_3_340(m, d) m(4, 340, d) +# define BOOST_PP_REPEAT_3_342(m, d) BOOST_PP_REPEAT_3_341(m, d) m(4, 341, d) +# define BOOST_PP_REPEAT_3_343(m, d) BOOST_PP_REPEAT_3_342(m, d) m(4, 342, d) +# define BOOST_PP_REPEAT_3_344(m, d) BOOST_PP_REPEAT_3_343(m, d) m(4, 343, d) +# define BOOST_PP_REPEAT_3_345(m, d) BOOST_PP_REPEAT_3_344(m, d) m(4, 344, d) +# define BOOST_PP_REPEAT_3_346(m, d) BOOST_PP_REPEAT_3_345(m, d) m(4, 345, d) +# define BOOST_PP_REPEAT_3_347(m, d) BOOST_PP_REPEAT_3_346(m, d) m(4, 346, d) +# define BOOST_PP_REPEAT_3_348(m, d) BOOST_PP_REPEAT_3_347(m, d) m(4, 347, d) +# define BOOST_PP_REPEAT_3_349(m, d) BOOST_PP_REPEAT_3_348(m, d) m(4, 348, d) +# define BOOST_PP_REPEAT_3_350(m, d) BOOST_PP_REPEAT_3_349(m, d) m(4, 349, d) +# define BOOST_PP_REPEAT_3_351(m, d) BOOST_PP_REPEAT_3_350(m, d) m(4, 350, d) +# define BOOST_PP_REPEAT_3_352(m, d) BOOST_PP_REPEAT_3_351(m, d) m(4, 351, d) +# define BOOST_PP_REPEAT_3_353(m, d) BOOST_PP_REPEAT_3_352(m, d) m(4, 352, d) +# define BOOST_PP_REPEAT_3_354(m, d) BOOST_PP_REPEAT_3_353(m, d) m(4, 353, d) +# define BOOST_PP_REPEAT_3_355(m, d) BOOST_PP_REPEAT_3_354(m, d) m(4, 354, d) +# define BOOST_PP_REPEAT_3_356(m, d) BOOST_PP_REPEAT_3_355(m, d) m(4, 355, d) +# define BOOST_PP_REPEAT_3_357(m, d) BOOST_PP_REPEAT_3_356(m, d) m(4, 356, d) +# define BOOST_PP_REPEAT_3_358(m, d) BOOST_PP_REPEAT_3_357(m, d) m(4, 357, d) +# define BOOST_PP_REPEAT_3_359(m, d) BOOST_PP_REPEAT_3_358(m, d) m(4, 358, d) +# define BOOST_PP_REPEAT_3_360(m, d) BOOST_PP_REPEAT_3_359(m, d) m(4, 359, d) +# define BOOST_PP_REPEAT_3_361(m, d) BOOST_PP_REPEAT_3_360(m, d) m(4, 360, d) +# define BOOST_PP_REPEAT_3_362(m, d) BOOST_PP_REPEAT_3_361(m, d) m(4, 361, d) +# define BOOST_PP_REPEAT_3_363(m, d) BOOST_PP_REPEAT_3_362(m, d) m(4, 362, d) +# define BOOST_PP_REPEAT_3_364(m, d) BOOST_PP_REPEAT_3_363(m, d) m(4, 363, d) +# define BOOST_PP_REPEAT_3_365(m, d) BOOST_PP_REPEAT_3_364(m, d) m(4, 364, d) +# define BOOST_PP_REPEAT_3_366(m, d) BOOST_PP_REPEAT_3_365(m, d) m(4, 365, d) +# define BOOST_PP_REPEAT_3_367(m, d) BOOST_PP_REPEAT_3_366(m, d) m(4, 366, d) +# define BOOST_PP_REPEAT_3_368(m, d) BOOST_PP_REPEAT_3_367(m, d) m(4, 367, d) +# define BOOST_PP_REPEAT_3_369(m, d) BOOST_PP_REPEAT_3_368(m, d) m(4, 368, d) +# define BOOST_PP_REPEAT_3_370(m, d) BOOST_PP_REPEAT_3_369(m, d) m(4, 369, d) +# define BOOST_PP_REPEAT_3_371(m, d) BOOST_PP_REPEAT_3_370(m, d) m(4, 370, d) +# define BOOST_PP_REPEAT_3_372(m, d) BOOST_PP_REPEAT_3_371(m, d) m(4, 371, d) +# define BOOST_PP_REPEAT_3_373(m, d) BOOST_PP_REPEAT_3_372(m, d) m(4, 372, d) +# define BOOST_PP_REPEAT_3_374(m, d) BOOST_PP_REPEAT_3_373(m, d) m(4, 373, d) +# define BOOST_PP_REPEAT_3_375(m, d) BOOST_PP_REPEAT_3_374(m, d) m(4, 374, d) +# define BOOST_PP_REPEAT_3_376(m, d) BOOST_PP_REPEAT_3_375(m, d) m(4, 375, d) +# define BOOST_PP_REPEAT_3_377(m, d) BOOST_PP_REPEAT_3_376(m, d) m(4, 376, d) +# define BOOST_PP_REPEAT_3_378(m, d) BOOST_PP_REPEAT_3_377(m, d) m(4, 377, d) +# define BOOST_PP_REPEAT_3_379(m, d) BOOST_PP_REPEAT_3_378(m, d) m(4, 378, d) +# define BOOST_PP_REPEAT_3_380(m, d) BOOST_PP_REPEAT_3_379(m, d) m(4, 379, d) +# define BOOST_PP_REPEAT_3_381(m, d) BOOST_PP_REPEAT_3_380(m, d) m(4, 380, d) +# define BOOST_PP_REPEAT_3_382(m, d) BOOST_PP_REPEAT_3_381(m, d) m(4, 381, d) +# define BOOST_PP_REPEAT_3_383(m, d) BOOST_PP_REPEAT_3_382(m, d) m(4, 382, d) +# define BOOST_PP_REPEAT_3_384(m, d) BOOST_PP_REPEAT_3_383(m, d) m(4, 383, d) +# define BOOST_PP_REPEAT_3_385(m, d) BOOST_PP_REPEAT_3_384(m, d) m(4, 384, d) +# define BOOST_PP_REPEAT_3_386(m, d) BOOST_PP_REPEAT_3_385(m, d) m(4, 385, d) +# define BOOST_PP_REPEAT_3_387(m, d) BOOST_PP_REPEAT_3_386(m, d) m(4, 386, d) +# define BOOST_PP_REPEAT_3_388(m, d) BOOST_PP_REPEAT_3_387(m, d) m(4, 387, d) +# define BOOST_PP_REPEAT_3_389(m, d) BOOST_PP_REPEAT_3_388(m, d) m(4, 388, d) +# define BOOST_PP_REPEAT_3_390(m, d) BOOST_PP_REPEAT_3_389(m, d) m(4, 389, d) +# define BOOST_PP_REPEAT_3_391(m, d) BOOST_PP_REPEAT_3_390(m, d) m(4, 390, d) +# define BOOST_PP_REPEAT_3_392(m, d) BOOST_PP_REPEAT_3_391(m, d) m(4, 391, d) +# define BOOST_PP_REPEAT_3_393(m, d) BOOST_PP_REPEAT_3_392(m, d) m(4, 392, d) +# define BOOST_PP_REPEAT_3_394(m, d) BOOST_PP_REPEAT_3_393(m, d) m(4, 393, d) +# define BOOST_PP_REPEAT_3_395(m, d) BOOST_PP_REPEAT_3_394(m, d) m(4, 394, d) +# define BOOST_PP_REPEAT_3_396(m, d) BOOST_PP_REPEAT_3_395(m, d) m(4, 395, d) +# define BOOST_PP_REPEAT_3_397(m, d) BOOST_PP_REPEAT_3_396(m, d) m(4, 396, d) +# define BOOST_PP_REPEAT_3_398(m, d) BOOST_PP_REPEAT_3_397(m, d) m(4, 397, d) +# define BOOST_PP_REPEAT_3_399(m, d) BOOST_PP_REPEAT_3_398(m, d) m(4, 398, d) +# define BOOST_PP_REPEAT_3_400(m, d) BOOST_PP_REPEAT_3_399(m, d) m(4, 399, d) +# define BOOST_PP_REPEAT_3_401(m, d) BOOST_PP_REPEAT_3_400(m, d) m(4, 400, d) +# define BOOST_PP_REPEAT_3_402(m, d) BOOST_PP_REPEAT_3_401(m, d) m(4, 401, d) +# define BOOST_PP_REPEAT_3_403(m, d) BOOST_PP_REPEAT_3_402(m, d) m(4, 402, d) +# define BOOST_PP_REPEAT_3_404(m, d) BOOST_PP_REPEAT_3_403(m, d) m(4, 403, d) +# define BOOST_PP_REPEAT_3_405(m, d) BOOST_PP_REPEAT_3_404(m, d) m(4, 404, d) +# define BOOST_PP_REPEAT_3_406(m, d) BOOST_PP_REPEAT_3_405(m, d) m(4, 405, d) +# define BOOST_PP_REPEAT_3_407(m, d) BOOST_PP_REPEAT_3_406(m, d) m(4, 406, d) +# define BOOST_PP_REPEAT_3_408(m, d) BOOST_PP_REPEAT_3_407(m, d) m(4, 407, d) +# define BOOST_PP_REPEAT_3_409(m, d) BOOST_PP_REPEAT_3_408(m, d) m(4, 408, d) +# define BOOST_PP_REPEAT_3_410(m, d) BOOST_PP_REPEAT_3_409(m, d) m(4, 409, d) +# define BOOST_PP_REPEAT_3_411(m, d) BOOST_PP_REPEAT_3_410(m, d) m(4, 410, d) +# define BOOST_PP_REPEAT_3_412(m, d) BOOST_PP_REPEAT_3_411(m, d) m(4, 411, d) +# define BOOST_PP_REPEAT_3_413(m, d) BOOST_PP_REPEAT_3_412(m, d) m(4, 412, d) +# define BOOST_PP_REPEAT_3_414(m, d) BOOST_PP_REPEAT_3_413(m, d) m(4, 413, d) +# define BOOST_PP_REPEAT_3_415(m, d) BOOST_PP_REPEAT_3_414(m, d) m(4, 414, d) +# define BOOST_PP_REPEAT_3_416(m, d) BOOST_PP_REPEAT_3_415(m, d) m(4, 415, d) +# define BOOST_PP_REPEAT_3_417(m, d) BOOST_PP_REPEAT_3_416(m, d) m(4, 416, d) +# define BOOST_PP_REPEAT_3_418(m, d) BOOST_PP_REPEAT_3_417(m, d) m(4, 417, d) +# define BOOST_PP_REPEAT_3_419(m, d) BOOST_PP_REPEAT_3_418(m, d) m(4, 418, d) +# define BOOST_PP_REPEAT_3_420(m, d) BOOST_PP_REPEAT_3_419(m, d) m(4, 419, d) +# define BOOST_PP_REPEAT_3_421(m, d) BOOST_PP_REPEAT_3_420(m, d) m(4, 420, d) +# define BOOST_PP_REPEAT_3_422(m, d) BOOST_PP_REPEAT_3_421(m, d) m(4, 421, d) +# define BOOST_PP_REPEAT_3_423(m, d) BOOST_PP_REPEAT_3_422(m, d) m(4, 422, d) +# define BOOST_PP_REPEAT_3_424(m, d) BOOST_PP_REPEAT_3_423(m, d) m(4, 423, d) +# define BOOST_PP_REPEAT_3_425(m, d) BOOST_PP_REPEAT_3_424(m, d) m(4, 424, d) +# define BOOST_PP_REPEAT_3_426(m, d) BOOST_PP_REPEAT_3_425(m, d) m(4, 425, d) +# define BOOST_PP_REPEAT_3_427(m, d) BOOST_PP_REPEAT_3_426(m, d) m(4, 426, d) +# define BOOST_PP_REPEAT_3_428(m, d) BOOST_PP_REPEAT_3_427(m, d) m(4, 427, d) +# define BOOST_PP_REPEAT_3_429(m, d) BOOST_PP_REPEAT_3_428(m, d) m(4, 428, d) +# define BOOST_PP_REPEAT_3_430(m, d) BOOST_PP_REPEAT_3_429(m, d) m(4, 429, d) +# define BOOST_PP_REPEAT_3_431(m, d) BOOST_PP_REPEAT_3_430(m, d) m(4, 430, d) +# define BOOST_PP_REPEAT_3_432(m, d) BOOST_PP_REPEAT_3_431(m, d) m(4, 431, d) +# define BOOST_PP_REPEAT_3_433(m, d) BOOST_PP_REPEAT_3_432(m, d) m(4, 432, d) +# define BOOST_PP_REPEAT_3_434(m, d) BOOST_PP_REPEAT_3_433(m, d) m(4, 433, d) +# define BOOST_PP_REPEAT_3_435(m, d) BOOST_PP_REPEAT_3_434(m, d) m(4, 434, d) +# define BOOST_PP_REPEAT_3_436(m, d) BOOST_PP_REPEAT_3_435(m, d) m(4, 435, d) +# define BOOST_PP_REPEAT_3_437(m, d) BOOST_PP_REPEAT_3_436(m, d) m(4, 436, d) +# define BOOST_PP_REPEAT_3_438(m, d) BOOST_PP_REPEAT_3_437(m, d) m(4, 437, d) +# define BOOST_PP_REPEAT_3_439(m, d) BOOST_PP_REPEAT_3_438(m, d) m(4, 438, d) +# define BOOST_PP_REPEAT_3_440(m, d) BOOST_PP_REPEAT_3_439(m, d) m(4, 439, d) +# define BOOST_PP_REPEAT_3_441(m, d) BOOST_PP_REPEAT_3_440(m, d) m(4, 440, d) +# define BOOST_PP_REPEAT_3_442(m, d) BOOST_PP_REPEAT_3_441(m, d) m(4, 441, d) +# define BOOST_PP_REPEAT_3_443(m, d) BOOST_PP_REPEAT_3_442(m, d) m(4, 442, d) +# define BOOST_PP_REPEAT_3_444(m, d) BOOST_PP_REPEAT_3_443(m, d) m(4, 443, d) +# define BOOST_PP_REPEAT_3_445(m, d) BOOST_PP_REPEAT_3_444(m, d) m(4, 444, d) +# define BOOST_PP_REPEAT_3_446(m, d) BOOST_PP_REPEAT_3_445(m, d) m(4, 445, d) +# define BOOST_PP_REPEAT_3_447(m, d) BOOST_PP_REPEAT_3_446(m, d) m(4, 446, d) +# define BOOST_PP_REPEAT_3_448(m, d) BOOST_PP_REPEAT_3_447(m, d) m(4, 447, d) +# define BOOST_PP_REPEAT_3_449(m, d) BOOST_PP_REPEAT_3_448(m, d) m(4, 448, d) +# define BOOST_PP_REPEAT_3_450(m, d) BOOST_PP_REPEAT_3_449(m, d) m(4, 449, d) +# define BOOST_PP_REPEAT_3_451(m, d) BOOST_PP_REPEAT_3_450(m, d) m(4, 450, d) +# define BOOST_PP_REPEAT_3_452(m, d) BOOST_PP_REPEAT_3_451(m, d) m(4, 451, d) +# define BOOST_PP_REPEAT_3_453(m, d) BOOST_PP_REPEAT_3_452(m, d) m(4, 452, d) +# define BOOST_PP_REPEAT_3_454(m, d) BOOST_PP_REPEAT_3_453(m, d) m(4, 453, d) +# define BOOST_PP_REPEAT_3_455(m, d) BOOST_PP_REPEAT_3_454(m, d) m(4, 454, d) +# define BOOST_PP_REPEAT_3_456(m, d) BOOST_PP_REPEAT_3_455(m, d) m(4, 455, d) +# define BOOST_PP_REPEAT_3_457(m, d) BOOST_PP_REPEAT_3_456(m, d) m(4, 456, d) +# define BOOST_PP_REPEAT_3_458(m, d) BOOST_PP_REPEAT_3_457(m, d) m(4, 457, d) +# define BOOST_PP_REPEAT_3_459(m, d) BOOST_PP_REPEAT_3_458(m, d) m(4, 458, d) +# define BOOST_PP_REPEAT_3_460(m, d) BOOST_PP_REPEAT_3_459(m, d) m(4, 459, d) +# define BOOST_PP_REPEAT_3_461(m, d) BOOST_PP_REPEAT_3_460(m, d) m(4, 460, d) +# define BOOST_PP_REPEAT_3_462(m, d) BOOST_PP_REPEAT_3_461(m, d) m(4, 461, d) +# define BOOST_PP_REPEAT_3_463(m, d) BOOST_PP_REPEAT_3_462(m, d) m(4, 462, d) +# define BOOST_PP_REPEAT_3_464(m, d) BOOST_PP_REPEAT_3_463(m, d) m(4, 463, d) +# define BOOST_PP_REPEAT_3_465(m, d) BOOST_PP_REPEAT_3_464(m, d) m(4, 464, d) +# define BOOST_PP_REPEAT_3_466(m, d) BOOST_PP_REPEAT_3_465(m, d) m(4, 465, d) +# define BOOST_PP_REPEAT_3_467(m, d) BOOST_PP_REPEAT_3_466(m, d) m(4, 466, d) +# define BOOST_PP_REPEAT_3_468(m, d) BOOST_PP_REPEAT_3_467(m, d) m(4, 467, d) +# define BOOST_PP_REPEAT_3_469(m, d) BOOST_PP_REPEAT_3_468(m, d) m(4, 468, d) +# define BOOST_PP_REPEAT_3_470(m, d) BOOST_PP_REPEAT_3_469(m, d) m(4, 469, d) +# define BOOST_PP_REPEAT_3_471(m, d) BOOST_PP_REPEAT_3_470(m, d) m(4, 470, d) +# define BOOST_PP_REPEAT_3_472(m, d) BOOST_PP_REPEAT_3_471(m, d) m(4, 471, d) +# define BOOST_PP_REPEAT_3_473(m, d) BOOST_PP_REPEAT_3_472(m, d) m(4, 472, d) +# define BOOST_PP_REPEAT_3_474(m, d) BOOST_PP_REPEAT_3_473(m, d) m(4, 473, d) +# define BOOST_PP_REPEAT_3_475(m, d) BOOST_PP_REPEAT_3_474(m, d) m(4, 474, d) +# define BOOST_PP_REPEAT_3_476(m, d) BOOST_PP_REPEAT_3_475(m, d) m(4, 475, d) +# define BOOST_PP_REPEAT_3_477(m, d) BOOST_PP_REPEAT_3_476(m, d) m(4, 476, d) +# define BOOST_PP_REPEAT_3_478(m, d) BOOST_PP_REPEAT_3_477(m, d) m(4, 477, d) +# define BOOST_PP_REPEAT_3_479(m, d) BOOST_PP_REPEAT_3_478(m, d) m(4, 478, d) +# define BOOST_PP_REPEAT_3_480(m, d) BOOST_PP_REPEAT_3_479(m, d) m(4, 479, d) +# define BOOST_PP_REPEAT_3_481(m, d) BOOST_PP_REPEAT_3_480(m, d) m(4, 480, d) +# define BOOST_PP_REPEAT_3_482(m, d) BOOST_PP_REPEAT_3_481(m, d) m(4, 481, d) +# define BOOST_PP_REPEAT_3_483(m, d) BOOST_PP_REPEAT_3_482(m, d) m(4, 482, d) +# define BOOST_PP_REPEAT_3_484(m, d) BOOST_PP_REPEAT_3_483(m, d) m(4, 483, d) +# define BOOST_PP_REPEAT_3_485(m, d) BOOST_PP_REPEAT_3_484(m, d) m(4, 484, d) +# define BOOST_PP_REPEAT_3_486(m, d) BOOST_PP_REPEAT_3_485(m, d) m(4, 485, d) +# define BOOST_PP_REPEAT_3_487(m, d) BOOST_PP_REPEAT_3_486(m, d) m(4, 486, d) +# define BOOST_PP_REPEAT_3_488(m, d) BOOST_PP_REPEAT_3_487(m, d) m(4, 487, d) +# define BOOST_PP_REPEAT_3_489(m, d) BOOST_PP_REPEAT_3_488(m, d) m(4, 488, d) +# define BOOST_PP_REPEAT_3_490(m, d) BOOST_PP_REPEAT_3_489(m, d) m(4, 489, d) +# define BOOST_PP_REPEAT_3_491(m, d) BOOST_PP_REPEAT_3_490(m, d) m(4, 490, d) +# define BOOST_PP_REPEAT_3_492(m, d) BOOST_PP_REPEAT_3_491(m, d) m(4, 491, d) +# define BOOST_PP_REPEAT_3_493(m, d) BOOST_PP_REPEAT_3_492(m, d) m(4, 492, d) +# define BOOST_PP_REPEAT_3_494(m, d) BOOST_PP_REPEAT_3_493(m, d) m(4, 493, d) +# define BOOST_PP_REPEAT_3_495(m, d) BOOST_PP_REPEAT_3_494(m, d) m(4, 494, d) +# define BOOST_PP_REPEAT_3_496(m, d) BOOST_PP_REPEAT_3_495(m, d) m(4, 495, d) +# define BOOST_PP_REPEAT_3_497(m, d) BOOST_PP_REPEAT_3_496(m, d) m(4, 496, d) +# define BOOST_PP_REPEAT_3_498(m, d) BOOST_PP_REPEAT_3_497(m, d) m(4, 497, d) +# define BOOST_PP_REPEAT_3_499(m, d) BOOST_PP_REPEAT_3_498(m, d) m(4, 498, d) +# define BOOST_PP_REPEAT_3_500(m, d) BOOST_PP_REPEAT_3_499(m, d) m(4, 499, d) +# define BOOST_PP_REPEAT_3_501(m, d) BOOST_PP_REPEAT_3_500(m, d) m(4, 500, d) +# define BOOST_PP_REPEAT_3_502(m, d) BOOST_PP_REPEAT_3_501(m, d) m(4, 501, d) +# define BOOST_PP_REPEAT_3_503(m, d) BOOST_PP_REPEAT_3_502(m, d) m(4, 502, d) +# define BOOST_PP_REPEAT_3_504(m, d) BOOST_PP_REPEAT_3_503(m, d) m(4, 503, d) +# define BOOST_PP_REPEAT_3_505(m, d) BOOST_PP_REPEAT_3_504(m, d) m(4, 504, d) +# define BOOST_PP_REPEAT_3_506(m, d) BOOST_PP_REPEAT_3_505(m, d) m(4, 505, d) +# define BOOST_PP_REPEAT_3_507(m, d) BOOST_PP_REPEAT_3_506(m, d) m(4, 506, d) +# define BOOST_PP_REPEAT_3_508(m, d) BOOST_PP_REPEAT_3_507(m, d) m(4, 507, d) +# define BOOST_PP_REPEAT_3_509(m, d) BOOST_PP_REPEAT_3_508(m, d) m(4, 508, d) +# define BOOST_PP_REPEAT_3_510(m, d) BOOST_PP_REPEAT_3_509(m, d) m(4, 509, d) +# define BOOST_PP_REPEAT_3_511(m, d) BOOST_PP_REPEAT_3_510(m, d) m(4, 510, d) +# define BOOST_PP_REPEAT_3_512(m, d) BOOST_PP_REPEAT_3_511(m, d) m(4, 511, d) +# +# endif diff --git a/src/boost/boost/preprocessor/repetition/repeat.hpp b/src/boost/boost/preprocessor/repetition/repeat.hpp index fa31de39b..25a01f74e 100644 --- a/src/boost/boost/preprocessor/repetition/repeat.hpp +++ b/src/boost/boost/preprocessor/repetition/repeat.hpp @@ -8,6 +8,7 @@ # */ # # /* Revised by Paul Mensonides (2002) */ +# /* Revised by Edward Diener (2020) */ # # /* See http://www.boost.org for most recent version. */ # @@ -48,6 +49,8 @@ # define BOOST_PP_REPEAT_2ND BOOST_PP_REPEAT_2 # define BOOST_PP_REPEAT_3RD BOOST_PP_REPEAT_3 # +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # define BOOST_PP_REPEAT_1_0(m, d) # define BOOST_PP_REPEAT_1_1(m, d) m(2, 0, d) # define BOOST_PP_REPEAT_1_2(m, d) BOOST_PP_REPEAT_1_1(m, d) m(2, 1, d) @@ -822,4 +825,23 @@ # define BOOST_PP_REPEAT_3_255(m, d) BOOST_PP_REPEAT_3_254(m, d) m(4, 254, d) # define BOOST_PP_REPEAT_3_256(m, d) BOOST_PP_REPEAT_3_255(m, d) m(4, 255, d) # +# else +# +# include +# +# if BOOST_PP_LIMIT_REPEAT == 256 +# include +# elif BOOST_PP_LIMIT_REPEAT == 512 +# include +# include +# elif BOOST_PP_LIMIT_REPEAT == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_REPEAT limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/repetition/repeat_from_to.hpp b/src/boost/boost/preprocessor/repetition/repeat_from_to.hpp index 161bc8125..a6bbfecae 100644 --- a/src/boost/boost/preprocessor/repetition/repeat_from_to.hpp +++ b/src/boost/boost/preprocessor/repetition/repeat_from_to.hpp @@ -8,6 +8,7 @@ # */ # # /* Revised by Paul Mensonides (2002) */ +# /* Revised by Edward Diener (2020) */ # # /* See http://www.boost.org for most recent version. */ # @@ -33,9 +34,35 @@ # # define BOOST_PP_REPEAT_FROM_TO BOOST_PP_CAT(BOOST_PP_REPEAT_FROM_TO_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4)) # +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # define BOOST_PP_REPEAT_FROM_TO_1(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_1(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt) # define BOOST_PP_REPEAT_FROM_TO_2(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_2(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt) # define BOOST_PP_REPEAT_FROM_TO_3(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_3(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt) +# +# else +# +# include +# include +# +# if BOOST_PP_LIMIT_REPEAT == 256 +# define BOOST_PP_REPEAT_FROM_TO_1(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_1(BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)), f, l, m, dt) +# define BOOST_PP_REPEAT_FROM_TO_2(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_2(BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)), f, l, m, dt) +# define BOOST_PP_REPEAT_FROM_TO_3(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_3(BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)), f, l, m, dt) +# elif BOOST_PP_LIMIT_REPEAT == 512 +# define BOOST_PP_REPEAT_FROM_TO_1(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_1(BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512)), f, l, m, dt) +# define BOOST_PP_REPEAT_FROM_TO_2(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_2(BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512)), f, l, m, dt) +# define BOOST_PP_REPEAT_FROM_TO_3(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_3(BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512)), f, l, m, dt) +# elif BOOST_PP_LIMIT_REPEAT == 1024 +# define BOOST_PP_REPEAT_FROM_TO_1(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_1(BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 1024)), f, l, m, dt) +# define BOOST_PP_REPEAT_FROM_TO_2(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_2(BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 1024)), f, l, m, dt) +# define BOOST_PP_REPEAT_FROM_TO_3(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_3(BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 1024)), f, l, m, dt) +# else +# error Incorrect value for the BOOST_PP_LIMIT_REPEAT limit +# endif +# +# endif +# # define BOOST_PP_REPEAT_FROM_TO_4(f, l, m, dt) BOOST_PP_ERROR(0x0003) # # define BOOST_PP_REPEAT_FROM_TO_1ST BOOST_PP_REPEAT_FROM_TO_1 diff --git a/src/boost/boost/preprocessor/seq/detail/is_empty.hpp b/src/boost/boost/preprocessor/seq/detail/is_empty.hpp index ce69868be..de3a77573 100644 --- a/src/boost/boost/preprocessor/seq/detail/is_empty.hpp +++ b/src/boost/boost/preprocessor/seq/detail/is_empty.hpp @@ -21,29 +21,29 @@ /* An empty seq is one that is just BOOST_PP_SEQ_NIL */ # # define BOOST_PP_SEQ_DETAIL_IS_EMPTY(seq) \ - BOOST_PP_COMPL \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \ - ) \ + BOOST_PP_COMPL \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \ + ) \ /**/ # # define BOOST_PP_SEQ_DETAIL_IS_EMPTY_SIZE(size) \ - BOOST_PP_COMPL \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \ - ) \ + BOOST_PP_COMPL \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \ + ) \ /**/ # # define BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq)) \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq)) \ /**/ # # define BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \ - BOOST_PP_BOOL(size) \ + BOOST_PP_BOOL(size) \ /**/ # # define BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq) \ - BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq (nil))) \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq (nil))) \ /**/ # # endif diff --git a/src/boost/boost/preprocessor/seq/detail/limits/split_1024.hpp b/src/boost/boost/preprocessor/seq/detail/limits/split_1024.hpp new file mode 100644 index 000000000..f258357d6 --- /dev/null +++ b/src/boost/boost/preprocessor/seq/detail/limits/split_1024.hpp @@ -0,0 +1,530 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_1024_HPP +# define BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_1024_HPP +# +# define BOOST_PP_SEQ_SPLIT_513(x) (x) BOOST_PP_SEQ_SPLIT_512 +# define BOOST_PP_SEQ_SPLIT_514(x) (x) BOOST_PP_SEQ_SPLIT_513 +# define BOOST_PP_SEQ_SPLIT_515(x) (x) BOOST_PP_SEQ_SPLIT_514 +# define BOOST_PP_SEQ_SPLIT_516(x) (x) BOOST_PP_SEQ_SPLIT_515 +# define BOOST_PP_SEQ_SPLIT_517(x) (x) BOOST_PP_SEQ_SPLIT_516 +# define BOOST_PP_SEQ_SPLIT_518(x) (x) BOOST_PP_SEQ_SPLIT_517 +# define BOOST_PP_SEQ_SPLIT_519(x) (x) BOOST_PP_SEQ_SPLIT_518 +# define BOOST_PP_SEQ_SPLIT_520(x) (x) BOOST_PP_SEQ_SPLIT_519 +# define BOOST_PP_SEQ_SPLIT_521(x) (x) BOOST_PP_SEQ_SPLIT_520 +# define BOOST_PP_SEQ_SPLIT_522(x) (x) BOOST_PP_SEQ_SPLIT_521 +# define BOOST_PP_SEQ_SPLIT_523(x) (x) BOOST_PP_SEQ_SPLIT_522 +# define BOOST_PP_SEQ_SPLIT_524(x) (x) BOOST_PP_SEQ_SPLIT_523 +# define BOOST_PP_SEQ_SPLIT_525(x) (x) BOOST_PP_SEQ_SPLIT_524 +# define BOOST_PP_SEQ_SPLIT_526(x) (x) BOOST_PP_SEQ_SPLIT_525 +# define BOOST_PP_SEQ_SPLIT_527(x) (x) BOOST_PP_SEQ_SPLIT_526 +# define BOOST_PP_SEQ_SPLIT_528(x) (x) BOOST_PP_SEQ_SPLIT_527 +# define BOOST_PP_SEQ_SPLIT_529(x) (x) BOOST_PP_SEQ_SPLIT_528 +# define BOOST_PP_SEQ_SPLIT_530(x) (x) BOOST_PP_SEQ_SPLIT_529 +# define BOOST_PP_SEQ_SPLIT_531(x) (x) BOOST_PP_SEQ_SPLIT_530 +# define BOOST_PP_SEQ_SPLIT_532(x) (x) BOOST_PP_SEQ_SPLIT_531 +# define BOOST_PP_SEQ_SPLIT_533(x) (x) BOOST_PP_SEQ_SPLIT_532 +# define BOOST_PP_SEQ_SPLIT_534(x) (x) BOOST_PP_SEQ_SPLIT_533 +# define BOOST_PP_SEQ_SPLIT_535(x) (x) BOOST_PP_SEQ_SPLIT_534 +# define BOOST_PP_SEQ_SPLIT_536(x) (x) BOOST_PP_SEQ_SPLIT_535 +# define BOOST_PP_SEQ_SPLIT_537(x) (x) BOOST_PP_SEQ_SPLIT_536 +# define BOOST_PP_SEQ_SPLIT_538(x) (x) BOOST_PP_SEQ_SPLIT_537 +# define BOOST_PP_SEQ_SPLIT_539(x) (x) BOOST_PP_SEQ_SPLIT_538 +# define BOOST_PP_SEQ_SPLIT_540(x) (x) BOOST_PP_SEQ_SPLIT_539 +# define BOOST_PP_SEQ_SPLIT_541(x) (x) BOOST_PP_SEQ_SPLIT_540 +# define BOOST_PP_SEQ_SPLIT_542(x) (x) BOOST_PP_SEQ_SPLIT_541 +# define BOOST_PP_SEQ_SPLIT_543(x) (x) BOOST_PP_SEQ_SPLIT_542 +# define BOOST_PP_SEQ_SPLIT_544(x) (x) BOOST_PP_SEQ_SPLIT_543 +# define BOOST_PP_SEQ_SPLIT_545(x) (x) BOOST_PP_SEQ_SPLIT_544 +# define BOOST_PP_SEQ_SPLIT_546(x) (x) BOOST_PP_SEQ_SPLIT_545 +# define BOOST_PP_SEQ_SPLIT_547(x) (x) BOOST_PP_SEQ_SPLIT_546 +# define BOOST_PP_SEQ_SPLIT_548(x) (x) BOOST_PP_SEQ_SPLIT_547 +# define BOOST_PP_SEQ_SPLIT_549(x) (x) BOOST_PP_SEQ_SPLIT_548 +# define BOOST_PP_SEQ_SPLIT_550(x) (x) BOOST_PP_SEQ_SPLIT_549 +# define BOOST_PP_SEQ_SPLIT_551(x) (x) BOOST_PP_SEQ_SPLIT_550 +# define BOOST_PP_SEQ_SPLIT_552(x) (x) BOOST_PP_SEQ_SPLIT_551 +# define BOOST_PP_SEQ_SPLIT_553(x) (x) BOOST_PP_SEQ_SPLIT_552 +# define BOOST_PP_SEQ_SPLIT_554(x) (x) BOOST_PP_SEQ_SPLIT_553 +# define BOOST_PP_SEQ_SPLIT_555(x) (x) BOOST_PP_SEQ_SPLIT_554 +# define BOOST_PP_SEQ_SPLIT_556(x) (x) BOOST_PP_SEQ_SPLIT_555 +# define BOOST_PP_SEQ_SPLIT_557(x) (x) BOOST_PP_SEQ_SPLIT_556 +# define BOOST_PP_SEQ_SPLIT_558(x) (x) BOOST_PP_SEQ_SPLIT_557 +# define BOOST_PP_SEQ_SPLIT_559(x) (x) BOOST_PP_SEQ_SPLIT_558 +# define BOOST_PP_SEQ_SPLIT_560(x) (x) BOOST_PP_SEQ_SPLIT_559 +# define BOOST_PP_SEQ_SPLIT_561(x) (x) BOOST_PP_SEQ_SPLIT_560 +# define BOOST_PP_SEQ_SPLIT_562(x) (x) BOOST_PP_SEQ_SPLIT_561 +# define BOOST_PP_SEQ_SPLIT_563(x) (x) BOOST_PP_SEQ_SPLIT_562 +# define BOOST_PP_SEQ_SPLIT_564(x) (x) BOOST_PP_SEQ_SPLIT_563 +# define BOOST_PP_SEQ_SPLIT_565(x) (x) BOOST_PP_SEQ_SPLIT_564 +# define BOOST_PP_SEQ_SPLIT_566(x) (x) BOOST_PP_SEQ_SPLIT_565 +# define BOOST_PP_SEQ_SPLIT_567(x) (x) BOOST_PP_SEQ_SPLIT_566 +# define BOOST_PP_SEQ_SPLIT_568(x) (x) BOOST_PP_SEQ_SPLIT_567 +# define BOOST_PP_SEQ_SPLIT_569(x) (x) BOOST_PP_SEQ_SPLIT_568 +# define BOOST_PP_SEQ_SPLIT_570(x) (x) BOOST_PP_SEQ_SPLIT_569 +# define BOOST_PP_SEQ_SPLIT_571(x) (x) BOOST_PP_SEQ_SPLIT_570 +# define BOOST_PP_SEQ_SPLIT_572(x) (x) BOOST_PP_SEQ_SPLIT_571 +# define BOOST_PP_SEQ_SPLIT_573(x) (x) BOOST_PP_SEQ_SPLIT_572 +# define BOOST_PP_SEQ_SPLIT_574(x) (x) BOOST_PP_SEQ_SPLIT_573 +# define BOOST_PP_SEQ_SPLIT_575(x) (x) BOOST_PP_SEQ_SPLIT_574 +# define BOOST_PP_SEQ_SPLIT_576(x) (x) BOOST_PP_SEQ_SPLIT_575 +# define BOOST_PP_SEQ_SPLIT_577(x) (x) BOOST_PP_SEQ_SPLIT_576 +# define BOOST_PP_SEQ_SPLIT_578(x) (x) BOOST_PP_SEQ_SPLIT_577 +# define BOOST_PP_SEQ_SPLIT_579(x) (x) BOOST_PP_SEQ_SPLIT_578 +# define BOOST_PP_SEQ_SPLIT_580(x) (x) BOOST_PP_SEQ_SPLIT_579 +# define BOOST_PP_SEQ_SPLIT_581(x) (x) BOOST_PP_SEQ_SPLIT_580 +# define BOOST_PP_SEQ_SPLIT_582(x) (x) BOOST_PP_SEQ_SPLIT_581 +# define BOOST_PP_SEQ_SPLIT_583(x) (x) BOOST_PP_SEQ_SPLIT_582 +# define BOOST_PP_SEQ_SPLIT_584(x) (x) BOOST_PP_SEQ_SPLIT_583 +# define BOOST_PP_SEQ_SPLIT_585(x) (x) BOOST_PP_SEQ_SPLIT_584 +# define BOOST_PP_SEQ_SPLIT_586(x) (x) BOOST_PP_SEQ_SPLIT_585 +# define BOOST_PP_SEQ_SPLIT_587(x) (x) BOOST_PP_SEQ_SPLIT_586 +# define BOOST_PP_SEQ_SPLIT_588(x) (x) BOOST_PP_SEQ_SPLIT_587 +# define BOOST_PP_SEQ_SPLIT_589(x) (x) BOOST_PP_SEQ_SPLIT_588 +# define BOOST_PP_SEQ_SPLIT_590(x) (x) BOOST_PP_SEQ_SPLIT_589 +# define BOOST_PP_SEQ_SPLIT_591(x) (x) BOOST_PP_SEQ_SPLIT_590 +# define BOOST_PP_SEQ_SPLIT_592(x) (x) BOOST_PP_SEQ_SPLIT_591 +# define BOOST_PP_SEQ_SPLIT_593(x) (x) BOOST_PP_SEQ_SPLIT_592 +# define BOOST_PP_SEQ_SPLIT_594(x) (x) BOOST_PP_SEQ_SPLIT_593 +# define BOOST_PP_SEQ_SPLIT_595(x) (x) BOOST_PP_SEQ_SPLIT_594 +# define BOOST_PP_SEQ_SPLIT_596(x) (x) BOOST_PP_SEQ_SPLIT_595 +# define BOOST_PP_SEQ_SPLIT_597(x) (x) BOOST_PP_SEQ_SPLIT_596 +# define BOOST_PP_SEQ_SPLIT_598(x) (x) BOOST_PP_SEQ_SPLIT_597 +# define BOOST_PP_SEQ_SPLIT_599(x) (x) BOOST_PP_SEQ_SPLIT_598 +# define BOOST_PP_SEQ_SPLIT_600(x) (x) BOOST_PP_SEQ_SPLIT_599 +# define BOOST_PP_SEQ_SPLIT_601(x) (x) BOOST_PP_SEQ_SPLIT_600 +# define BOOST_PP_SEQ_SPLIT_602(x) (x) BOOST_PP_SEQ_SPLIT_601 +# define BOOST_PP_SEQ_SPLIT_603(x) (x) BOOST_PP_SEQ_SPLIT_602 +# define BOOST_PP_SEQ_SPLIT_604(x) (x) BOOST_PP_SEQ_SPLIT_603 +# define BOOST_PP_SEQ_SPLIT_605(x) (x) BOOST_PP_SEQ_SPLIT_604 +# define BOOST_PP_SEQ_SPLIT_606(x) (x) BOOST_PP_SEQ_SPLIT_605 +# define BOOST_PP_SEQ_SPLIT_607(x) (x) BOOST_PP_SEQ_SPLIT_606 +# define BOOST_PP_SEQ_SPLIT_608(x) (x) BOOST_PP_SEQ_SPLIT_607 +# define BOOST_PP_SEQ_SPLIT_609(x) (x) BOOST_PP_SEQ_SPLIT_608 +# define BOOST_PP_SEQ_SPLIT_610(x) (x) BOOST_PP_SEQ_SPLIT_609 +# define BOOST_PP_SEQ_SPLIT_611(x) (x) BOOST_PP_SEQ_SPLIT_610 +# define BOOST_PP_SEQ_SPLIT_612(x) (x) BOOST_PP_SEQ_SPLIT_611 +# define BOOST_PP_SEQ_SPLIT_613(x) (x) BOOST_PP_SEQ_SPLIT_612 +# define BOOST_PP_SEQ_SPLIT_614(x) (x) BOOST_PP_SEQ_SPLIT_613 +# define BOOST_PP_SEQ_SPLIT_615(x) (x) BOOST_PP_SEQ_SPLIT_614 +# define BOOST_PP_SEQ_SPLIT_616(x) (x) BOOST_PP_SEQ_SPLIT_615 +# define BOOST_PP_SEQ_SPLIT_617(x) (x) BOOST_PP_SEQ_SPLIT_616 +# define BOOST_PP_SEQ_SPLIT_618(x) (x) BOOST_PP_SEQ_SPLIT_617 +# define BOOST_PP_SEQ_SPLIT_619(x) (x) BOOST_PP_SEQ_SPLIT_618 +# define BOOST_PP_SEQ_SPLIT_620(x) (x) BOOST_PP_SEQ_SPLIT_619 +# define BOOST_PP_SEQ_SPLIT_621(x) (x) BOOST_PP_SEQ_SPLIT_620 +# define BOOST_PP_SEQ_SPLIT_622(x) (x) BOOST_PP_SEQ_SPLIT_621 +# define BOOST_PP_SEQ_SPLIT_623(x) (x) BOOST_PP_SEQ_SPLIT_622 +# define BOOST_PP_SEQ_SPLIT_624(x) (x) BOOST_PP_SEQ_SPLIT_623 +# define BOOST_PP_SEQ_SPLIT_625(x) (x) BOOST_PP_SEQ_SPLIT_624 +# define BOOST_PP_SEQ_SPLIT_626(x) (x) BOOST_PP_SEQ_SPLIT_625 +# define BOOST_PP_SEQ_SPLIT_627(x) (x) BOOST_PP_SEQ_SPLIT_626 +# define BOOST_PP_SEQ_SPLIT_628(x) (x) BOOST_PP_SEQ_SPLIT_627 +# define BOOST_PP_SEQ_SPLIT_629(x) (x) BOOST_PP_SEQ_SPLIT_628 +# define BOOST_PP_SEQ_SPLIT_630(x) (x) BOOST_PP_SEQ_SPLIT_629 +# define BOOST_PP_SEQ_SPLIT_631(x) (x) BOOST_PP_SEQ_SPLIT_630 +# define BOOST_PP_SEQ_SPLIT_632(x) (x) BOOST_PP_SEQ_SPLIT_631 +# define BOOST_PP_SEQ_SPLIT_633(x) (x) BOOST_PP_SEQ_SPLIT_632 +# define BOOST_PP_SEQ_SPLIT_634(x) (x) BOOST_PP_SEQ_SPLIT_633 +# define BOOST_PP_SEQ_SPLIT_635(x) (x) BOOST_PP_SEQ_SPLIT_634 +# define BOOST_PP_SEQ_SPLIT_636(x) (x) BOOST_PP_SEQ_SPLIT_635 +# define BOOST_PP_SEQ_SPLIT_637(x) (x) BOOST_PP_SEQ_SPLIT_636 +# define BOOST_PP_SEQ_SPLIT_638(x) (x) BOOST_PP_SEQ_SPLIT_637 +# define BOOST_PP_SEQ_SPLIT_639(x) (x) BOOST_PP_SEQ_SPLIT_638 +# define BOOST_PP_SEQ_SPLIT_640(x) (x) BOOST_PP_SEQ_SPLIT_639 +# define BOOST_PP_SEQ_SPLIT_641(x) (x) BOOST_PP_SEQ_SPLIT_640 +# define BOOST_PP_SEQ_SPLIT_642(x) (x) BOOST_PP_SEQ_SPLIT_641 +# define BOOST_PP_SEQ_SPLIT_643(x) (x) BOOST_PP_SEQ_SPLIT_642 +# define BOOST_PP_SEQ_SPLIT_644(x) (x) BOOST_PP_SEQ_SPLIT_643 +# define BOOST_PP_SEQ_SPLIT_645(x) (x) BOOST_PP_SEQ_SPLIT_644 +# define BOOST_PP_SEQ_SPLIT_646(x) (x) BOOST_PP_SEQ_SPLIT_645 +# define BOOST_PP_SEQ_SPLIT_647(x) (x) BOOST_PP_SEQ_SPLIT_646 +# define BOOST_PP_SEQ_SPLIT_648(x) (x) BOOST_PP_SEQ_SPLIT_647 +# define BOOST_PP_SEQ_SPLIT_649(x) (x) BOOST_PP_SEQ_SPLIT_648 +# define BOOST_PP_SEQ_SPLIT_650(x) (x) BOOST_PP_SEQ_SPLIT_649 +# define BOOST_PP_SEQ_SPLIT_651(x) (x) BOOST_PP_SEQ_SPLIT_650 +# define BOOST_PP_SEQ_SPLIT_652(x) (x) BOOST_PP_SEQ_SPLIT_651 +# define BOOST_PP_SEQ_SPLIT_653(x) (x) BOOST_PP_SEQ_SPLIT_652 +# define BOOST_PP_SEQ_SPLIT_654(x) (x) BOOST_PP_SEQ_SPLIT_653 +# define BOOST_PP_SEQ_SPLIT_655(x) (x) BOOST_PP_SEQ_SPLIT_654 +# define BOOST_PP_SEQ_SPLIT_656(x) (x) BOOST_PP_SEQ_SPLIT_655 +# define BOOST_PP_SEQ_SPLIT_657(x) (x) BOOST_PP_SEQ_SPLIT_656 +# define BOOST_PP_SEQ_SPLIT_658(x) (x) BOOST_PP_SEQ_SPLIT_657 +# define BOOST_PP_SEQ_SPLIT_659(x) (x) BOOST_PP_SEQ_SPLIT_658 +# define BOOST_PP_SEQ_SPLIT_660(x) (x) BOOST_PP_SEQ_SPLIT_659 +# define BOOST_PP_SEQ_SPLIT_661(x) (x) BOOST_PP_SEQ_SPLIT_660 +# define BOOST_PP_SEQ_SPLIT_662(x) (x) BOOST_PP_SEQ_SPLIT_661 +# define BOOST_PP_SEQ_SPLIT_663(x) (x) BOOST_PP_SEQ_SPLIT_662 +# define BOOST_PP_SEQ_SPLIT_664(x) (x) BOOST_PP_SEQ_SPLIT_663 +# define BOOST_PP_SEQ_SPLIT_665(x) (x) BOOST_PP_SEQ_SPLIT_664 +# define BOOST_PP_SEQ_SPLIT_666(x) (x) BOOST_PP_SEQ_SPLIT_665 +# define BOOST_PP_SEQ_SPLIT_667(x) (x) BOOST_PP_SEQ_SPLIT_666 +# define BOOST_PP_SEQ_SPLIT_668(x) (x) BOOST_PP_SEQ_SPLIT_667 +# define BOOST_PP_SEQ_SPLIT_669(x) (x) BOOST_PP_SEQ_SPLIT_668 +# define BOOST_PP_SEQ_SPLIT_670(x) (x) BOOST_PP_SEQ_SPLIT_669 +# define BOOST_PP_SEQ_SPLIT_671(x) (x) BOOST_PP_SEQ_SPLIT_670 +# define BOOST_PP_SEQ_SPLIT_672(x) (x) BOOST_PP_SEQ_SPLIT_671 +# define BOOST_PP_SEQ_SPLIT_673(x) (x) BOOST_PP_SEQ_SPLIT_672 +# define BOOST_PP_SEQ_SPLIT_674(x) (x) BOOST_PP_SEQ_SPLIT_673 +# define BOOST_PP_SEQ_SPLIT_675(x) (x) BOOST_PP_SEQ_SPLIT_674 +# define BOOST_PP_SEQ_SPLIT_676(x) (x) BOOST_PP_SEQ_SPLIT_675 +# define BOOST_PP_SEQ_SPLIT_677(x) (x) BOOST_PP_SEQ_SPLIT_676 +# define BOOST_PP_SEQ_SPLIT_678(x) (x) BOOST_PP_SEQ_SPLIT_677 +# define BOOST_PP_SEQ_SPLIT_679(x) (x) BOOST_PP_SEQ_SPLIT_678 +# define BOOST_PP_SEQ_SPLIT_680(x) (x) BOOST_PP_SEQ_SPLIT_679 +# define BOOST_PP_SEQ_SPLIT_681(x) (x) BOOST_PP_SEQ_SPLIT_680 +# define BOOST_PP_SEQ_SPLIT_682(x) (x) BOOST_PP_SEQ_SPLIT_681 +# define BOOST_PP_SEQ_SPLIT_683(x) (x) BOOST_PP_SEQ_SPLIT_682 +# define BOOST_PP_SEQ_SPLIT_684(x) (x) BOOST_PP_SEQ_SPLIT_683 +# define BOOST_PP_SEQ_SPLIT_685(x) (x) BOOST_PP_SEQ_SPLIT_684 +# define BOOST_PP_SEQ_SPLIT_686(x) (x) BOOST_PP_SEQ_SPLIT_685 +# define BOOST_PP_SEQ_SPLIT_687(x) (x) BOOST_PP_SEQ_SPLIT_686 +# define BOOST_PP_SEQ_SPLIT_688(x) (x) BOOST_PP_SEQ_SPLIT_687 +# define BOOST_PP_SEQ_SPLIT_689(x) (x) BOOST_PP_SEQ_SPLIT_688 +# define BOOST_PP_SEQ_SPLIT_690(x) (x) BOOST_PP_SEQ_SPLIT_689 +# define BOOST_PP_SEQ_SPLIT_691(x) (x) BOOST_PP_SEQ_SPLIT_690 +# define BOOST_PP_SEQ_SPLIT_692(x) (x) BOOST_PP_SEQ_SPLIT_691 +# define BOOST_PP_SEQ_SPLIT_693(x) (x) BOOST_PP_SEQ_SPLIT_692 +# define BOOST_PP_SEQ_SPLIT_694(x) (x) BOOST_PP_SEQ_SPLIT_693 +# define BOOST_PP_SEQ_SPLIT_695(x) (x) BOOST_PP_SEQ_SPLIT_694 +# define BOOST_PP_SEQ_SPLIT_696(x) (x) BOOST_PP_SEQ_SPLIT_695 +# define BOOST_PP_SEQ_SPLIT_697(x) (x) BOOST_PP_SEQ_SPLIT_696 +# define BOOST_PP_SEQ_SPLIT_698(x) (x) BOOST_PP_SEQ_SPLIT_697 +# define BOOST_PP_SEQ_SPLIT_699(x) (x) BOOST_PP_SEQ_SPLIT_698 +# define BOOST_PP_SEQ_SPLIT_700(x) (x) BOOST_PP_SEQ_SPLIT_699 +# define BOOST_PP_SEQ_SPLIT_701(x) (x) BOOST_PP_SEQ_SPLIT_700 +# define BOOST_PP_SEQ_SPLIT_702(x) (x) BOOST_PP_SEQ_SPLIT_701 +# define BOOST_PP_SEQ_SPLIT_703(x) (x) BOOST_PP_SEQ_SPLIT_702 +# define BOOST_PP_SEQ_SPLIT_704(x) (x) BOOST_PP_SEQ_SPLIT_703 +# define BOOST_PP_SEQ_SPLIT_705(x) (x) BOOST_PP_SEQ_SPLIT_704 +# define BOOST_PP_SEQ_SPLIT_706(x) (x) BOOST_PP_SEQ_SPLIT_705 +# define BOOST_PP_SEQ_SPLIT_707(x) (x) BOOST_PP_SEQ_SPLIT_706 +# define BOOST_PP_SEQ_SPLIT_708(x) (x) BOOST_PP_SEQ_SPLIT_707 +# define BOOST_PP_SEQ_SPLIT_709(x) (x) BOOST_PP_SEQ_SPLIT_708 +# define BOOST_PP_SEQ_SPLIT_710(x) (x) BOOST_PP_SEQ_SPLIT_709 +# define BOOST_PP_SEQ_SPLIT_711(x) (x) BOOST_PP_SEQ_SPLIT_710 +# define BOOST_PP_SEQ_SPLIT_712(x) (x) BOOST_PP_SEQ_SPLIT_711 +# define BOOST_PP_SEQ_SPLIT_713(x) (x) BOOST_PP_SEQ_SPLIT_712 +# define BOOST_PP_SEQ_SPLIT_714(x) (x) BOOST_PP_SEQ_SPLIT_713 +# define BOOST_PP_SEQ_SPLIT_715(x) (x) BOOST_PP_SEQ_SPLIT_714 +# define BOOST_PP_SEQ_SPLIT_716(x) (x) BOOST_PP_SEQ_SPLIT_715 +# define BOOST_PP_SEQ_SPLIT_717(x) (x) BOOST_PP_SEQ_SPLIT_716 +# define BOOST_PP_SEQ_SPLIT_718(x) (x) BOOST_PP_SEQ_SPLIT_717 +# define BOOST_PP_SEQ_SPLIT_719(x) (x) BOOST_PP_SEQ_SPLIT_718 +# define BOOST_PP_SEQ_SPLIT_720(x) (x) BOOST_PP_SEQ_SPLIT_719 +# define BOOST_PP_SEQ_SPLIT_721(x) (x) BOOST_PP_SEQ_SPLIT_720 +# define BOOST_PP_SEQ_SPLIT_722(x) (x) BOOST_PP_SEQ_SPLIT_721 +# define BOOST_PP_SEQ_SPLIT_723(x) (x) BOOST_PP_SEQ_SPLIT_722 +# define BOOST_PP_SEQ_SPLIT_724(x) (x) BOOST_PP_SEQ_SPLIT_723 +# define BOOST_PP_SEQ_SPLIT_725(x) (x) BOOST_PP_SEQ_SPLIT_724 +# define BOOST_PP_SEQ_SPLIT_726(x) (x) BOOST_PP_SEQ_SPLIT_725 +# define BOOST_PP_SEQ_SPLIT_727(x) (x) BOOST_PP_SEQ_SPLIT_726 +# define BOOST_PP_SEQ_SPLIT_728(x) (x) BOOST_PP_SEQ_SPLIT_727 +# define BOOST_PP_SEQ_SPLIT_729(x) (x) BOOST_PP_SEQ_SPLIT_728 +# define BOOST_PP_SEQ_SPLIT_730(x) (x) BOOST_PP_SEQ_SPLIT_729 +# define BOOST_PP_SEQ_SPLIT_731(x) (x) BOOST_PP_SEQ_SPLIT_730 +# define BOOST_PP_SEQ_SPLIT_732(x) (x) BOOST_PP_SEQ_SPLIT_731 +# define BOOST_PP_SEQ_SPLIT_733(x) (x) BOOST_PP_SEQ_SPLIT_732 +# define BOOST_PP_SEQ_SPLIT_734(x) (x) BOOST_PP_SEQ_SPLIT_733 +# define BOOST_PP_SEQ_SPLIT_735(x) (x) BOOST_PP_SEQ_SPLIT_734 +# define BOOST_PP_SEQ_SPLIT_736(x) (x) BOOST_PP_SEQ_SPLIT_735 +# define BOOST_PP_SEQ_SPLIT_737(x) (x) BOOST_PP_SEQ_SPLIT_736 +# define BOOST_PP_SEQ_SPLIT_738(x) (x) BOOST_PP_SEQ_SPLIT_737 +# define BOOST_PP_SEQ_SPLIT_739(x) (x) BOOST_PP_SEQ_SPLIT_738 +# define BOOST_PP_SEQ_SPLIT_740(x) (x) BOOST_PP_SEQ_SPLIT_739 +# define BOOST_PP_SEQ_SPLIT_741(x) (x) BOOST_PP_SEQ_SPLIT_740 +# define BOOST_PP_SEQ_SPLIT_742(x) (x) BOOST_PP_SEQ_SPLIT_741 +# define BOOST_PP_SEQ_SPLIT_743(x) (x) BOOST_PP_SEQ_SPLIT_742 +# define BOOST_PP_SEQ_SPLIT_744(x) (x) BOOST_PP_SEQ_SPLIT_743 +# define BOOST_PP_SEQ_SPLIT_745(x) (x) BOOST_PP_SEQ_SPLIT_744 +# define BOOST_PP_SEQ_SPLIT_746(x) (x) BOOST_PP_SEQ_SPLIT_745 +# define BOOST_PP_SEQ_SPLIT_747(x) (x) BOOST_PP_SEQ_SPLIT_746 +# define BOOST_PP_SEQ_SPLIT_748(x) (x) BOOST_PP_SEQ_SPLIT_747 +# define BOOST_PP_SEQ_SPLIT_749(x) (x) BOOST_PP_SEQ_SPLIT_748 +# define BOOST_PP_SEQ_SPLIT_750(x) (x) BOOST_PP_SEQ_SPLIT_749 +# define BOOST_PP_SEQ_SPLIT_751(x) (x) BOOST_PP_SEQ_SPLIT_750 +# define BOOST_PP_SEQ_SPLIT_752(x) (x) BOOST_PP_SEQ_SPLIT_751 +# define BOOST_PP_SEQ_SPLIT_753(x) (x) BOOST_PP_SEQ_SPLIT_752 +# define BOOST_PP_SEQ_SPLIT_754(x) (x) BOOST_PP_SEQ_SPLIT_753 +# define BOOST_PP_SEQ_SPLIT_755(x) (x) BOOST_PP_SEQ_SPLIT_754 +# define BOOST_PP_SEQ_SPLIT_756(x) (x) BOOST_PP_SEQ_SPLIT_755 +# define BOOST_PP_SEQ_SPLIT_757(x) (x) BOOST_PP_SEQ_SPLIT_756 +# define BOOST_PP_SEQ_SPLIT_758(x) (x) BOOST_PP_SEQ_SPLIT_757 +# define BOOST_PP_SEQ_SPLIT_759(x) (x) BOOST_PP_SEQ_SPLIT_758 +# define BOOST_PP_SEQ_SPLIT_760(x) (x) BOOST_PP_SEQ_SPLIT_759 +# define BOOST_PP_SEQ_SPLIT_761(x) (x) BOOST_PP_SEQ_SPLIT_760 +# define BOOST_PP_SEQ_SPLIT_762(x) (x) BOOST_PP_SEQ_SPLIT_761 +# define BOOST_PP_SEQ_SPLIT_763(x) (x) BOOST_PP_SEQ_SPLIT_762 +# define BOOST_PP_SEQ_SPLIT_764(x) (x) BOOST_PP_SEQ_SPLIT_763 +# define BOOST_PP_SEQ_SPLIT_765(x) (x) BOOST_PP_SEQ_SPLIT_764 +# define BOOST_PP_SEQ_SPLIT_766(x) (x) BOOST_PP_SEQ_SPLIT_765 +# define BOOST_PP_SEQ_SPLIT_767(x) (x) BOOST_PP_SEQ_SPLIT_766 +# define BOOST_PP_SEQ_SPLIT_768(x) (x) BOOST_PP_SEQ_SPLIT_767 +# define BOOST_PP_SEQ_SPLIT_769(x) (x) BOOST_PP_SEQ_SPLIT_768 +# define BOOST_PP_SEQ_SPLIT_770(x) (x) BOOST_PP_SEQ_SPLIT_769 +# define BOOST_PP_SEQ_SPLIT_771(x) (x) BOOST_PP_SEQ_SPLIT_770 +# define BOOST_PP_SEQ_SPLIT_772(x) (x) BOOST_PP_SEQ_SPLIT_771 +# define BOOST_PP_SEQ_SPLIT_773(x) (x) BOOST_PP_SEQ_SPLIT_772 +# define BOOST_PP_SEQ_SPLIT_774(x) (x) BOOST_PP_SEQ_SPLIT_773 +# define BOOST_PP_SEQ_SPLIT_775(x) (x) BOOST_PP_SEQ_SPLIT_774 +# define BOOST_PP_SEQ_SPLIT_776(x) (x) BOOST_PP_SEQ_SPLIT_775 +# define BOOST_PP_SEQ_SPLIT_777(x) (x) BOOST_PP_SEQ_SPLIT_776 +# define BOOST_PP_SEQ_SPLIT_778(x) (x) BOOST_PP_SEQ_SPLIT_777 +# define BOOST_PP_SEQ_SPLIT_779(x) (x) BOOST_PP_SEQ_SPLIT_778 +# define BOOST_PP_SEQ_SPLIT_780(x) (x) BOOST_PP_SEQ_SPLIT_779 +# define BOOST_PP_SEQ_SPLIT_781(x) (x) BOOST_PP_SEQ_SPLIT_780 +# define BOOST_PP_SEQ_SPLIT_782(x) (x) BOOST_PP_SEQ_SPLIT_781 +# define BOOST_PP_SEQ_SPLIT_783(x) (x) BOOST_PP_SEQ_SPLIT_782 +# define BOOST_PP_SEQ_SPLIT_784(x) (x) BOOST_PP_SEQ_SPLIT_783 +# define BOOST_PP_SEQ_SPLIT_785(x) (x) BOOST_PP_SEQ_SPLIT_784 +# define BOOST_PP_SEQ_SPLIT_786(x) (x) BOOST_PP_SEQ_SPLIT_785 +# define BOOST_PP_SEQ_SPLIT_787(x) (x) BOOST_PP_SEQ_SPLIT_786 +# define BOOST_PP_SEQ_SPLIT_788(x) (x) BOOST_PP_SEQ_SPLIT_787 +# define BOOST_PP_SEQ_SPLIT_789(x) (x) BOOST_PP_SEQ_SPLIT_788 +# define BOOST_PP_SEQ_SPLIT_790(x) (x) BOOST_PP_SEQ_SPLIT_789 +# define BOOST_PP_SEQ_SPLIT_791(x) (x) BOOST_PP_SEQ_SPLIT_790 +# define BOOST_PP_SEQ_SPLIT_792(x) (x) BOOST_PP_SEQ_SPLIT_791 +# define BOOST_PP_SEQ_SPLIT_793(x) (x) BOOST_PP_SEQ_SPLIT_792 +# define BOOST_PP_SEQ_SPLIT_794(x) (x) BOOST_PP_SEQ_SPLIT_793 +# define BOOST_PP_SEQ_SPLIT_795(x) (x) BOOST_PP_SEQ_SPLIT_794 +# define BOOST_PP_SEQ_SPLIT_796(x) (x) BOOST_PP_SEQ_SPLIT_795 +# define BOOST_PP_SEQ_SPLIT_797(x) (x) BOOST_PP_SEQ_SPLIT_796 +# define BOOST_PP_SEQ_SPLIT_798(x) (x) BOOST_PP_SEQ_SPLIT_797 +# define BOOST_PP_SEQ_SPLIT_799(x) (x) BOOST_PP_SEQ_SPLIT_798 +# define BOOST_PP_SEQ_SPLIT_800(x) (x) BOOST_PP_SEQ_SPLIT_799 +# define BOOST_PP_SEQ_SPLIT_801(x) (x) BOOST_PP_SEQ_SPLIT_800 +# define BOOST_PP_SEQ_SPLIT_802(x) (x) BOOST_PP_SEQ_SPLIT_801 +# define BOOST_PP_SEQ_SPLIT_803(x) (x) BOOST_PP_SEQ_SPLIT_802 +# define BOOST_PP_SEQ_SPLIT_804(x) (x) BOOST_PP_SEQ_SPLIT_803 +# define BOOST_PP_SEQ_SPLIT_805(x) (x) BOOST_PP_SEQ_SPLIT_804 +# define BOOST_PP_SEQ_SPLIT_806(x) (x) BOOST_PP_SEQ_SPLIT_805 +# define BOOST_PP_SEQ_SPLIT_807(x) (x) BOOST_PP_SEQ_SPLIT_806 +# define BOOST_PP_SEQ_SPLIT_808(x) (x) BOOST_PP_SEQ_SPLIT_807 +# define BOOST_PP_SEQ_SPLIT_809(x) (x) BOOST_PP_SEQ_SPLIT_808 +# define BOOST_PP_SEQ_SPLIT_810(x) (x) BOOST_PP_SEQ_SPLIT_809 +# define BOOST_PP_SEQ_SPLIT_811(x) (x) BOOST_PP_SEQ_SPLIT_810 +# define BOOST_PP_SEQ_SPLIT_812(x) (x) BOOST_PP_SEQ_SPLIT_811 +# define BOOST_PP_SEQ_SPLIT_813(x) (x) BOOST_PP_SEQ_SPLIT_812 +# define BOOST_PP_SEQ_SPLIT_814(x) (x) BOOST_PP_SEQ_SPLIT_813 +# define BOOST_PP_SEQ_SPLIT_815(x) (x) BOOST_PP_SEQ_SPLIT_814 +# define BOOST_PP_SEQ_SPLIT_816(x) (x) BOOST_PP_SEQ_SPLIT_815 +# define BOOST_PP_SEQ_SPLIT_817(x) (x) BOOST_PP_SEQ_SPLIT_816 +# define BOOST_PP_SEQ_SPLIT_818(x) (x) BOOST_PP_SEQ_SPLIT_817 +# define BOOST_PP_SEQ_SPLIT_819(x) (x) BOOST_PP_SEQ_SPLIT_818 +# define BOOST_PP_SEQ_SPLIT_820(x) (x) BOOST_PP_SEQ_SPLIT_819 +# define BOOST_PP_SEQ_SPLIT_821(x) (x) BOOST_PP_SEQ_SPLIT_820 +# define BOOST_PP_SEQ_SPLIT_822(x) (x) BOOST_PP_SEQ_SPLIT_821 +# define BOOST_PP_SEQ_SPLIT_823(x) (x) BOOST_PP_SEQ_SPLIT_822 +# define BOOST_PP_SEQ_SPLIT_824(x) (x) BOOST_PP_SEQ_SPLIT_823 +# define BOOST_PP_SEQ_SPLIT_825(x) (x) BOOST_PP_SEQ_SPLIT_824 +# define BOOST_PP_SEQ_SPLIT_826(x) (x) BOOST_PP_SEQ_SPLIT_825 +# define BOOST_PP_SEQ_SPLIT_827(x) (x) BOOST_PP_SEQ_SPLIT_826 +# define BOOST_PP_SEQ_SPLIT_828(x) (x) BOOST_PP_SEQ_SPLIT_827 +# define BOOST_PP_SEQ_SPLIT_829(x) (x) BOOST_PP_SEQ_SPLIT_828 +# define BOOST_PP_SEQ_SPLIT_830(x) (x) BOOST_PP_SEQ_SPLIT_829 +# define BOOST_PP_SEQ_SPLIT_831(x) (x) BOOST_PP_SEQ_SPLIT_830 +# define BOOST_PP_SEQ_SPLIT_832(x) (x) BOOST_PP_SEQ_SPLIT_831 +# define BOOST_PP_SEQ_SPLIT_833(x) (x) BOOST_PP_SEQ_SPLIT_832 +# define BOOST_PP_SEQ_SPLIT_834(x) (x) BOOST_PP_SEQ_SPLIT_833 +# define BOOST_PP_SEQ_SPLIT_835(x) (x) BOOST_PP_SEQ_SPLIT_834 +# define BOOST_PP_SEQ_SPLIT_836(x) (x) BOOST_PP_SEQ_SPLIT_835 +# define BOOST_PP_SEQ_SPLIT_837(x) (x) BOOST_PP_SEQ_SPLIT_836 +# define BOOST_PP_SEQ_SPLIT_838(x) (x) BOOST_PP_SEQ_SPLIT_837 +# define BOOST_PP_SEQ_SPLIT_839(x) (x) BOOST_PP_SEQ_SPLIT_838 +# define BOOST_PP_SEQ_SPLIT_840(x) (x) BOOST_PP_SEQ_SPLIT_839 +# define BOOST_PP_SEQ_SPLIT_841(x) (x) BOOST_PP_SEQ_SPLIT_840 +# define BOOST_PP_SEQ_SPLIT_842(x) (x) BOOST_PP_SEQ_SPLIT_841 +# define BOOST_PP_SEQ_SPLIT_843(x) (x) BOOST_PP_SEQ_SPLIT_842 +# define BOOST_PP_SEQ_SPLIT_844(x) (x) BOOST_PP_SEQ_SPLIT_843 +# define BOOST_PP_SEQ_SPLIT_845(x) (x) BOOST_PP_SEQ_SPLIT_844 +# define BOOST_PP_SEQ_SPLIT_846(x) (x) BOOST_PP_SEQ_SPLIT_845 +# define BOOST_PP_SEQ_SPLIT_847(x) (x) BOOST_PP_SEQ_SPLIT_846 +# define BOOST_PP_SEQ_SPLIT_848(x) (x) BOOST_PP_SEQ_SPLIT_847 +# define BOOST_PP_SEQ_SPLIT_849(x) (x) BOOST_PP_SEQ_SPLIT_848 +# define BOOST_PP_SEQ_SPLIT_850(x) (x) BOOST_PP_SEQ_SPLIT_849 +# define BOOST_PP_SEQ_SPLIT_851(x) (x) BOOST_PP_SEQ_SPLIT_850 +# define BOOST_PP_SEQ_SPLIT_852(x) (x) BOOST_PP_SEQ_SPLIT_851 +# define BOOST_PP_SEQ_SPLIT_853(x) (x) BOOST_PP_SEQ_SPLIT_852 +# define BOOST_PP_SEQ_SPLIT_854(x) (x) BOOST_PP_SEQ_SPLIT_853 +# define BOOST_PP_SEQ_SPLIT_855(x) (x) BOOST_PP_SEQ_SPLIT_854 +# define BOOST_PP_SEQ_SPLIT_856(x) (x) BOOST_PP_SEQ_SPLIT_855 +# define BOOST_PP_SEQ_SPLIT_857(x) (x) BOOST_PP_SEQ_SPLIT_856 +# define BOOST_PP_SEQ_SPLIT_858(x) (x) BOOST_PP_SEQ_SPLIT_857 +# define BOOST_PP_SEQ_SPLIT_859(x) (x) BOOST_PP_SEQ_SPLIT_858 +# define BOOST_PP_SEQ_SPLIT_860(x) (x) BOOST_PP_SEQ_SPLIT_859 +# define BOOST_PP_SEQ_SPLIT_861(x) (x) BOOST_PP_SEQ_SPLIT_860 +# define BOOST_PP_SEQ_SPLIT_862(x) (x) BOOST_PP_SEQ_SPLIT_861 +# define BOOST_PP_SEQ_SPLIT_863(x) (x) BOOST_PP_SEQ_SPLIT_862 +# define BOOST_PP_SEQ_SPLIT_864(x) (x) BOOST_PP_SEQ_SPLIT_863 +# define BOOST_PP_SEQ_SPLIT_865(x) (x) BOOST_PP_SEQ_SPLIT_864 +# define BOOST_PP_SEQ_SPLIT_866(x) (x) BOOST_PP_SEQ_SPLIT_865 +# define BOOST_PP_SEQ_SPLIT_867(x) (x) BOOST_PP_SEQ_SPLIT_866 +# define BOOST_PP_SEQ_SPLIT_868(x) (x) BOOST_PP_SEQ_SPLIT_867 +# define BOOST_PP_SEQ_SPLIT_869(x) (x) BOOST_PP_SEQ_SPLIT_868 +# define BOOST_PP_SEQ_SPLIT_870(x) (x) BOOST_PP_SEQ_SPLIT_869 +# define BOOST_PP_SEQ_SPLIT_871(x) (x) BOOST_PP_SEQ_SPLIT_870 +# define BOOST_PP_SEQ_SPLIT_872(x) (x) BOOST_PP_SEQ_SPLIT_871 +# define BOOST_PP_SEQ_SPLIT_873(x) (x) BOOST_PP_SEQ_SPLIT_872 +# define BOOST_PP_SEQ_SPLIT_874(x) (x) BOOST_PP_SEQ_SPLIT_873 +# define BOOST_PP_SEQ_SPLIT_875(x) (x) BOOST_PP_SEQ_SPLIT_874 +# define BOOST_PP_SEQ_SPLIT_876(x) (x) BOOST_PP_SEQ_SPLIT_875 +# define BOOST_PP_SEQ_SPLIT_877(x) (x) BOOST_PP_SEQ_SPLIT_876 +# define BOOST_PP_SEQ_SPLIT_878(x) (x) BOOST_PP_SEQ_SPLIT_877 +# define BOOST_PP_SEQ_SPLIT_879(x) (x) BOOST_PP_SEQ_SPLIT_878 +# define BOOST_PP_SEQ_SPLIT_880(x) (x) BOOST_PP_SEQ_SPLIT_879 +# define BOOST_PP_SEQ_SPLIT_881(x) (x) BOOST_PP_SEQ_SPLIT_880 +# define BOOST_PP_SEQ_SPLIT_882(x) (x) BOOST_PP_SEQ_SPLIT_881 +# define BOOST_PP_SEQ_SPLIT_883(x) (x) BOOST_PP_SEQ_SPLIT_882 +# define BOOST_PP_SEQ_SPLIT_884(x) (x) BOOST_PP_SEQ_SPLIT_883 +# define BOOST_PP_SEQ_SPLIT_885(x) (x) BOOST_PP_SEQ_SPLIT_884 +# define BOOST_PP_SEQ_SPLIT_886(x) (x) BOOST_PP_SEQ_SPLIT_885 +# define BOOST_PP_SEQ_SPLIT_887(x) (x) BOOST_PP_SEQ_SPLIT_886 +# define BOOST_PP_SEQ_SPLIT_888(x) (x) BOOST_PP_SEQ_SPLIT_887 +# define BOOST_PP_SEQ_SPLIT_889(x) (x) BOOST_PP_SEQ_SPLIT_888 +# define BOOST_PP_SEQ_SPLIT_890(x) (x) BOOST_PP_SEQ_SPLIT_889 +# define BOOST_PP_SEQ_SPLIT_891(x) (x) BOOST_PP_SEQ_SPLIT_890 +# define BOOST_PP_SEQ_SPLIT_892(x) (x) BOOST_PP_SEQ_SPLIT_891 +# define BOOST_PP_SEQ_SPLIT_893(x) (x) BOOST_PP_SEQ_SPLIT_892 +# define BOOST_PP_SEQ_SPLIT_894(x) (x) BOOST_PP_SEQ_SPLIT_893 +# define BOOST_PP_SEQ_SPLIT_895(x) (x) BOOST_PP_SEQ_SPLIT_894 +# define BOOST_PP_SEQ_SPLIT_896(x) (x) BOOST_PP_SEQ_SPLIT_895 +# define BOOST_PP_SEQ_SPLIT_897(x) (x) BOOST_PP_SEQ_SPLIT_896 +# define BOOST_PP_SEQ_SPLIT_898(x) (x) BOOST_PP_SEQ_SPLIT_897 +# define BOOST_PP_SEQ_SPLIT_899(x) (x) BOOST_PP_SEQ_SPLIT_898 +# define BOOST_PP_SEQ_SPLIT_900(x) (x) BOOST_PP_SEQ_SPLIT_899 +# define BOOST_PP_SEQ_SPLIT_901(x) (x) BOOST_PP_SEQ_SPLIT_900 +# define BOOST_PP_SEQ_SPLIT_902(x) (x) BOOST_PP_SEQ_SPLIT_901 +# define BOOST_PP_SEQ_SPLIT_903(x) (x) BOOST_PP_SEQ_SPLIT_902 +# define BOOST_PP_SEQ_SPLIT_904(x) (x) BOOST_PP_SEQ_SPLIT_903 +# define BOOST_PP_SEQ_SPLIT_905(x) (x) BOOST_PP_SEQ_SPLIT_904 +# define BOOST_PP_SEQ_SPLIT_906(x) (x) BOOST_PP_SEQ_SPLIT_905 +# define BOOST_PP_SEQ_SPLIT_907(x) (x) BOOST_PP_SEQ_SPLIT_906 +# define BOOST_PP_SEQ_SPLIT_908(x) (x) BOOST_PP_SEQ_SPLIT_907 +# define BOOST_PP_SEQ_SPLIT_909(x) (x) BOOST_PP_SEQ_SPLIT_908 +# define BOOST_PP_SEQ_SPLIT_910(x) (x) BOOST_PP_SEQ_SPLIT_909 +# define BOOST_PP_SEQ_SPLIT_911(x) (x) BOOST_PP_SEQ_SPLIT_910 +# define BOOST_PP_SEQ_SPLIT_912(x) (x) BOOST_PP_SEQ_SPLIT_911 +# define BOOST_PP_SEQ_SPLIT_913(x) (x) BOOST_PP_SEQ_SPLIT_912 +# define BOOST_PP_SEQ_SPLIT_914(x) (x) BOOST_PP_SEQ_SPLIT_913 +# define BOOST_PP_SEQ_SPLIT_915(x) (x) BOOST_PP_SEQ_SPLIT_914 +# define BOOST_PP_SEQ_SPLIT_916(x) (x) BOOST_PP_SEQ_SPLIT_915 +# define BOOST_PP_SEQ_SPLIT_917(x) (x) BOOST_PP_SEQ_SPLIT_916 +# define BOOST_PP_SEQ_SPLIT_918(x) (x) BOOST_PP_SEQ_SPLIT_917 +# define BOOST_PP_SEQ_SPLIT_919(x) (x) BOOST_PP_SEQ_SPLIT_918 +# define BOOST_PP_SEQ_SPLIT_920(x) (x) BOOST_PP_SEQ_SPLIT_919 +# define BOOST_PP_SEQ_SPLIT_921(x) (x) BOOST_PP_SEQ_SPLIT_920 +# define BOOST_PP_SEQ_SPLIT_922(x) (x) BOOST_PP_SEQ_SPLIT_921 +# define BOOST_PP_SEQ_SPLIT_923(x) (x) BOOST_PP_SEQ_SPLIT_922 +# define BOOST_PP_SEQ_SPLIT_924(x) (x) BOOST_PP_SEQ_SPLIT_923 +# define BOOST_PP_SEQ_SPLIT_925(x) (x) BOOST_PP_SEQ_SPLIT_924 +# define BOOST_PP_SEQ_SPLIT_926(x) (x) BOOST_PP_SEQ_SPLIT_925 +# define BOOST_PP_SEQ_SPLIT_927(x) (x) BOOST_PP_SEQ_SPLIT_926 +# define BOOST_PP_SEQ_SPLIT_928(x) (x) BOOST_PP_SEQ_SPLIT_927 +# define BOOST_PP_SEQ_SPLIT_929(x) (x) BOOST_PP_SEQ_SPLIT_928 +# define BOOST_PP_SEQ_SPLIT_930(x) (x) BOOST_PP_SEQ_SPLIT_929 +# define BOOST_PP_SEQ_SPLIT_931(x) (x) BOOST_PP_SEQ_SPLIT_930 +# define BOOST_PP_SEQ_SPLIT_932(x) (x) BOOST_PP_SEQ_SPLIT_931 +# define BOOST_PP_SEQ_SPLIT_933(x) (x) BOOST_PP_SEQ_SPLIT_932 +# define BOOST_PP_SEQ_SPLIT_934(x) (x) BOOST_PP_SEQ_SPLIT_933 +# define BOOST_PP_SEQ_SPLIT_935(x) (x) BOOST_PP_SEQ_SPLIT_934 +# define BOOST_PP_SEQ_SPLIT_936(x) (x) BOOST_PP_SEQ_SPLIT_935 +# define BOOST_PP_SEQ_SPLIT_937(x) (x) BOOST_PP_SEQ_SPLIT_936 +# define BOOST_PP_SEQ_SPLIT_938(x) (x) BOOST_PP_SEQ_SPLIT_937 +# define BOOST_PP_SEQ_SPLIT_939(x) (x) BOOST_PP_SEQ_SPLIT_938 +# define BOOST_PP_SEQ_SPLIT_940(x) (x) BOOST_PP_SEQ_SPLIT_939 +# define BOOST_PP_SEQ_SPLIT_941(x) (x) BOOST_PP_SEQ_SPLIT_940 +# define BOOST_PP_SEQ_SPLIT_942(x) (x) BOOST_PP_SEQ_SPLIT_941 +# define BOOST_PP_SEQ_SPLIT_943(x) (x) BOOST_PP_SEQ_SPLIT_942 +# define BOOST_PP_SEQ_SPLIT_944(x) (x) BOOST_PP_SEQ_SPLIT_943 +# define BOOST_PP_SEQ_SPLIT_945(x) (x) BOOST_PP_SEQ_SPLIT_944 +# define BOOST_PP_SEQ_SPLIT_946(x) (x) BOOST_PP_SEQ_SPLIT_945 +# define BOOST_PP_SEQ_SPLIT_947(x) (x) BOOST_PP_SEQ_SPLIT_946 +# define BOOST_PP_SEQ_SPLIT_948(x) (x) BOOST_PP_SEQ_SPLIT_947 +# define BOOST_PP_SEQ_SPLIT_949(x) (x) BOOST_PP_SEQ_SPLIT_948 +# define BOOST_PP_SEQ_SPLIT_950(x) (x) BOOST_PP_SEQ_SPLIT_949 +# define BOOST_PP_SEQ_SPLIT_951(x) (x) BOOST_PP_SEQ_SPLIT_950 +# define BOOST_PP_SEQ_SPLIT_952(x) (x) BOOST_PP_SEQ_SPLIT_951 +# define BOOST_PP_SEQ_SPLIT_953(x) (x) BOOST_PP_SEQ_SPLIT_952 +# define BOOST_PP_SEQ_SPLIT_954(x) (x) BOOST_PP_SEQ_SPLIT_953 +# define BOOST_PP_SEQ_SPLIT_955(x) (x) BOOST_PP_SEQ_SPLIT_954 +# define BOOST_PP_SEQ_SPLIT_956(x) (x) BOOST_PP_SEQ_SPLIT_955 +# define BOOST_PP_SEQ_SPLIT_957(x) (x) BOOST_PP_SEQ_SPLIT_956 +# define BOOST_PP_SEQ_SPLIT_958(x) (x) BOOST_PP_SEQ_SPLIT_957 +# define BOOST_PP_SEQ_SPLIT_959(x) (x) BOOST_PP_SEQ_SPLIT_958 +# define BOOST_PP_SEQ_SPLIT_960(x) (x) BOOST_PP_SEQ_SPLIT_959 +# define BOOST_PP_SEQ_SPLIT_961(x) (x) BOOST_PP_SEQ_SPLIT_960 +# define BOOST_PP_SEQ_SPLIT_962(x) (x) BOOST_PP_SEQ_SPLIT_961 +# define BOOST_PP_SEQ_SPLIT_963(x) (x) BOOST_PP_SEQ_SPLIT_962 +# define BOOST_PP_SEQ_SPLIT_964(x) (x) BOOST_PP_SEQ_SPLIT_963 +# define BOOST_PP_SEQ_SPLIT_965(x) (x) BOOST_PP_SEQ_SPLIT_964 +# define BOOST_PP_SEQ_SPLIT_966(x) (x) BOOST_PP_SEQ_SPLIT_965 +# define BOOST_PP_SEQ_SPLIT_967(x) (x) BOOST_PP_SEQ_SPLIT_966 +# define BOOST_PP_SEQ_SPLIT_968(x) (x) BOOST_PP_SEQ_SPLIT_967 +# define BOOST_PP_SEQ_SPLIT_969(x) (x) BOOST_PP_SEQ_SPLIT_968 +# define BOOST_PP_SEQ_SPLIT_970(x) (x) BOOST_PP_SEQ_SPLIT_969 +# define BOOST_PP_SEQ_SPLIT_971(x) (x) BOOST_PP_SEQ_SPLIT_970 +# define BOOST_PP_SEQ_SPLIT_972(x) (x) BOOST_PP_SEQ_SPLIT_971 +# define BOOST_PP_SEQ_SPLIT_973(x) (x) BOOST_PP_SEQ_SPLIT_972 +# define BOOST_PP_SEQ_SPLIT_974(x) (x) BOOST_PP_SEQ_SPLIT_973 +# define BOOST_PP_SEQ_SPLIT_975(x) (x) BOOST_PP_SEQ_SPLIT_974 +# define BOOST_PP_SEQ_SPLIT_976(x) (x) BOOST_PP_SEQ_SPLIT_975 +# define BOOST_PP_SEQ_SPLIT_977(x) (x) BOOST_PP_SEQ_SPLIT_976 +# define BOOST_PP_SEQ_SPLIT_978(x) (x) BOOST_PP_SEQ_SPLIT_977 +# define BOOST_PP_SEQ_SPLIT_979(x) (x) BOOST_PP_SEQ_SPLIT_978 +# define BOOST_PP_SEQ_SPLIT_980(x) (x) BOOST_PP_SEQ_SPLIT_979 +# define BOOST_PP_SEQ_SPLIT_981(x) (x) BOOST_PP_SEQ_SPLIT_980 +# define BOOST_PP_SEQ_SPLIT_982(x) (x) BOOST_PP_SEQ_SPLIT_981 +# define BOOST_PP_SEQ_SPLIT_983(x) (x) BOOST_PP_SEQ_SPLIT_982 +# define BOOST_PP_SEQ_SPLIT_984(x) (x) BOOST_PP_SEQ_SPLIT_983 +# define BOOST_PP_SEQ_SPLIT_985(x) (x) BOOST_PP_SEQ_SPLIT_984 +# define BOOST_PP_SEQ_SPLIT_986(x) (x) BOOST_PP_SEQ_SPLIT_985 +# define BOOST_PP_SEQ_SPLIT_987(x) (x) BOOST_PP_SEQ_SPLIT_986 +# define BOOST_PP_SEQ_SPLIT_988(x) (x) BOOST_PP_SEQ_SPLIT_987 +# define BOOST_PP_SEQ_SPLIT_989(x) (x) BOOST_PP_SEQ_SPLIT_988 +# define BOOST_PP_SEQ_SPLIT_990(x) (x) BOOST_PP_SEQ_SPLIT_989 +# define BOOST_PP_SEQ_SPLIT_991(x) (x) BOOST_PP_SEQ_SPLIT_990 +# define BOOST_PP_SEQ_SPLIT_992(x) (x) BOOST_PP_SEQ_SPLIT_991 +# define BOOST_PP_SEQ_SPLIT_993(x) (x) BOOST_PP_SEQ_SPLIT_992 +# define BOOST_PP_SEQ_SPLIT_994(x) (x) BOOST_PP_SEQ_SPLIT_993 +# define BOOST_PP_SEQ_SPLIT_995(x) (x) BOOST_PP_SEQ_SPLIT_994 +# define BOOST_PP_SEQ_SPLIT_996(x) (x) BOOST_PP_SEQ_SPLIT_995 +# define BOOST_PP_SEQ_SPLIT_997(x) (x) BOOST_PP_SEQ_SPLIT_996 +# define BOOST_PP_SEQ_SPLIT_998(x) (x) BOOST_PP_SEQ_SPLIT_997 +# define BOOST_PP_SEQ_SPLIT_999(x) (x) BOOST_PP_SEQ_SPLIT_998 +# define BOOST_PP_SEQ_SPLIT_1000(x) (x) BOOST_PP_SEQ_SPLIT_999 +# define BOOST_PP_SEQ_SPLIT_1001(x) (x) BOOST_PP_SEQ_SPLIT_1000 +# define BOOST_PP_SEQ_SPLIT_1002(x) (x) BOOST_PP_SEQ_SPLIT_1001 +# define BOOST_PP_SEQ_SPLIT_1003(x) (x) BOOST_PP_SEQ_SPLIT_1002 +# define BOOST_PP_SEQ_SPLIT_1004(x) (x) BOOST_PP_SEQ_SPLIT_1003 +# define BOOST_PP_SEQ_SPLIT_1005(x) (x) BOOST_PP_SEQ_SPLIT_1004 +# define BOOST_PP_SEQ_SPLIT_1006(x) (x) BOOST_PP_SEQ_SPLIT_1005 +# define BOOST_PP_SEQ_SPLIT_1007(x) (x) BOOST_PP_SEQ_SPLIT_1006 +# define BOOST_PP_SEQ_SPLIT_1008(x) (x) BOOST_PP_SEQ_SPLIT_1007 +# define BOOST_PP_SEQ_SPLIT_1009(x) (x) BOOST_PP_SEQ_SPLIT_1008 +# define BOOST_PP_SEQ_SPLIT_1010(x) (x) BOOST_PP_SEQ_SPLIT_1009 +# define BOOST_PP_SEQ_SPLIT_1011(x) (x) BOOST_PP_SEQ_SPLIT_1010 +# define BOOST_PP_SEQ_SPLIT_1012(x) (x) BOOST_PP_SEQ_SPLIT_1011 +# define BOOST_PP_SEQ_SPLIT_1013(x) (x) BOOST_PP_SEQ_SPLIT_1012 +# define BOOST_PP_SEQ_SPLIT_1014(x) (x) BOOST_PP_SEQ_SPLIT_1013 +# define BOOST_PP_SEQ_SPLIT_1015(x) (x) BOOST_PP_SEQ_SPLIT_1014 +# define BOOST_PP_SEQ_SPLIT_1016(x) (x) BOOST_PP_SEQ_SPLIT_1015 +# define BOOST_PP_SEQ_SPLIT_1017(x) (x) BOOST_PP_SEQ_SPLIT_1016 +# define BOOST_PP_SEQ_SPLIT_1018(x) (x) BOOST_PP_SEQ_SPLIT_1017 +# define BOOST_PP_SEQ_SPLIT_1019(x) (x) BOOST_PP_SEQ_SPLIT_1018 +# define BOOST_PP_SEQ_SPLIT_1020(x) (x) BOOST_PP_SEQ_SPLIT_1019 +# define BOOST_PP_SEQ_SPLIT_1021(x) (x) BOOST_PP_SEQ_SPLIT_1020 +# define BOOST_PP_SEQ_SPLIT_1022(x) (x) BOOST_PP_SEQ_SPLIT_1021 +# define BOOST_PP_SEQ_SPLIT_1023(x) (x) BOOST_PP_SEQ_SPLIT_1022 +# define BOOST_PP_SEQ_SPLIT_1024(x) (x) BOOST_PP_SEQ_SPLIT_1023 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/detail/limits/split_256.hpp b/src/boost/boost/preprocessor/seq/detail/limits/split_256.hpp new file mode 100644 index 000000000..5d4ca8db5 --- /dev/null +++ b/src/boost/boost/preprocessor/seq/detail/limits/split_256.hpp @@ -0,0 +1,272 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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_SEQ_DETAIL_SPLIT_256_HPP +# define BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_256_HPP +# +# define BOOST_PP_SEQ_SPLIT_1(x) (x), +# define BOOST_PP_SEQ_SPLIT_2(x) (x) BOOST_PP_SEQ_SPLIT_1 +# define BOOST_PP_SEQ_SPLIT_3(x) (x) BOOST_PP_SEQ_SPLIT_2 +# define BOOST_PP_SEQ_SPLIT_4(x) (x) BOOST_PP_SEQ_SPLIT_3 +# define BOOST_PP_SEQ_SPLIT_5(x) (x) BOOST_PP_SEQ_SPLIT_4 +# define BOOST_PP_SEQ_SPLIT_6(x) (x) BOOST_PP_SEQ_SPLIT_5 +# define BOOST_PP_SEQ_SPLIT_7(x) (x) BOOST_PP_SEQ_SPLIT_6 +# define BOOST_PP_SEQ_SPLIT_8(x) (x) BOOST_PP_SEQ_SPLIT_7 +# define BOOST_PP_SEQ_SPLIT_9(x) (x) BOOST_PP_SEQ_SPLIT_8 +# define BOOST_PP_SEQ_SPLIT_10(x) (x) BOOST_PP_SEQ_SPLIT_9 +# define BOOST_PP_SEQ_SPLIT_11(x) (x) BOOST_PP_SEQ_SPLIT_10 +# define BOOST_PP_SEQ_SPLIT_12(x) (x) BOOST_PP_SEQ_SPLIT_11 +# define BOOST_PP_SEQ_SPLIT_13(x) (x) BOOST_PP_SEQ_SPLIT_12 +# define BOOST_PP_SEQ_SPLIT_14(x) (x) BOOST_PP_SEQ_SPLIT_13 +# define BOOST_PP_SEQ_SPLIT_15(x) (x) BOOST_PP_SEQ_SPLIT_14 +# define BOOST_PP_SEQ_SPLIT_16(x) (x) BOOST_PP_SEQ_SPLIT_15 +# define BOOST_PP_SEQ_SPLIT_17(x) (x) BOOST_PP_SEQ_SPLIT_16 +# define BOOST_PP_SEQ_SPLIT_18(x) (x) BOOST_PP_SEQ_SPLIT_17 +# define BOOST_PP_SEQ_SPLIT_19(x) (x) BOOST_PP_SEQ_SPLIT_18 +# define BOOST_PP_SEQ_SPLIT_20(x) (x) BOOST_PP_SEQ_SPLIT_19 +# define BOOST_PP_SEQ_SPLIT_21(x) (x) BOOST_PP_SEQ_SPLIT_20 +# define BOOST_PP_SEQ_SPLIT_22(x) (x) BOOST_PP_SEQ_SPLIT_21 +# define BOOST_PP_SEQ_SPLIT_23(x) (x) BOOST_PP_SEQ_SPLIT_22 +# define BOOST_PP_SEQ_SPLIT_24(x) (x) BOOST_PP_SEQ_SPLIT_23 +# define BOOST_PP_SEQ_SPLIT_25(x) (x) BOOST_PP_SEQ_SPLIT_24 +# define BOOST_PP_SEQ_SPLIT_26(x) (x) BOOST_PP_SEQ_SPLIT_25 +# define BOOST_PP_SEQ_SPLIT_27(x) (x) BOOST_PP_SEQ_SPLIT_26 +# define BOOST_PP_SEQ_SPLIT_28(x) (x) BOOST_PP_SEQ_SPLIT_27 +# define BOOST_PP_SEQ_SPLIT_29(x) (x) BOOST_PP_SEQ_SPLIT_28 +# define BOOST_PP_SEQ_SPLIT_30(x) (x) BOOST_PP_SEQ_SPLIT_29 +# define BOOST_PP_SEQ_SPLIT_31(x) (x) BOOST_PP_SEQ_SPLIT_30 +# define BOOST_PP_SEQ_SPLIT_32(x) (x) BOOST_PP_SEQ_SPLIT_31 +# define BOOST_PP_SEQ_SPLIT_33(x) (x) BOOST_PP_SEQ_SPLIT_32 +# define BOOST_PP_SEQ_SPLIT_34(x) (x) BOOST_PP_SEQ_SPLIT_33 +# define BOOST_PP_SEQ_SPLIT_35(x) (x) BOOST_PP_SEQ_SPLIT_34 +# define BOOST_PP_SEQ_SPLIT_36(x) (x) BOOST_PP_SEQ_SPLIT_35 +# define BOOST_PP_SEQ_SPLIT_37(x) (x) BOOST_PP_SEQ_SPLIT_36 +# define BOOST_PP_SEQ_SPLIT_38(x) (x) BOOST_PP_SEQ_SPLIT_37 +# define BOOST_PP_SEQ_SPLIT_39(x) (x) BOOST_PP_SEQ_SPLIT_38 +# define BOOST_PP_SEQ_SPLIT_40(x) (x) BOOST_PP_SEQ_SPLIT_39 +# define BOOST_PP_SEQ_SPLIT_41(x) (x) BOOST_PP_SEQ_SPLIT_40 +# define BOOST_PP_SEQ_SPLIT_42(x) (x) BOOST_PP_SEQ_SPLIT_41 +# define BOOST_PP_SEQ_SPLIT_43(x) (x) BOOST_PP_SEQ_SPLIT_42 +# define BOOST_PP_SEQ_SPLIT_44(x) (x) BOOST_PP_SEQ_SPLIT_43 +# define BOOST_PP_SEQ_SPLIT_45(x) (x) BOOST_PP_SEQ_SPLIT_44 +# define BOOST_PP_SEQ_SPLIT_46(x) (x) BOOST_PP_SEQ_SPLIT_45 +# define BOOST_PP_SEQ_SPLIT_47(x) (x) BOOST_PP_SEQ_SPLIT_46 +# define BOOST_PP_SEQ_SPLIT_48(x) (x) BOOST_PP_SEQ_SPLIT_47 +# define BOOST_PP_SEQ_SPLIT_49(x) (x) BOOST_PP_SEQ_SPLIT_48 +# define BOOST_PP_SEQ_SPLIT_50(x) (x) BOOST_PP_SEQ_SPLIT_49 +# define BOOST_PP_SEQ_SPLIT_51(x) (x) BOOST_PP_SEQ_SPLIT_50 +# define BOOST_PP_SEQ_SPLIT_52(x) (x) BOOST_PP_SEQ_SPLIT_51 +# define BOOST_PP_SEQ_SPLIT_53(x) (x) BOOST_PP_SEQ_SPLIT_52 +# define BOOST_PP_SEQ_SPLIT_54(x) (x) BOOST_PP_SEQ_SPLIT_53 +# define BOOST_PP_SEQ_SPLIT_55(x) (x) BOOST_PP_SEQ_SPLIT_54 +# define BOOST_PP_SEQ_SPLIT_56(x) (x) BOOST_PP_SEQ_SPLIT_55 +# define BOOST_PP_SEQ_SPLIT_57(x) (x) BOOST_PP_SEQ_SPLIT_56 +# define BOOST_PP_SEQ_SPLIT_58(x) (x) BOOST_PP_SEQ_SPLIT_57 +# define BOOST_PP_SEQ_SPLIT_59(x) (x) BOOST_PP_SEQ_SPLIT_58 +# define BOOST_PP_SEQ_SPLIT_60(x) (x) BOOST_PP_SEQ_SPLIT_59 +# define BOOST_PP_SEQ_SPLIT_61(x) (x) BOOST_PP_SEQ_SPLIT_60 +# define BOOST_PP_SEQ_SPLIT_62(x) (x) BOOST_PP_SEQ_SPLIT_61 +# define BOOST_PP_SEQ_SPLIT_63(x) (x) BOOST_PP_SEQ_SPLIT_62 +# define BOOST_PP_SEQ_SPLIT_64(x) (x) BOOST_PP_SEQ_SPLIT_63 +# define BOOST_PP_SEQ_SPLIT_65(x) (x) BOOST_PP_SEQ_SPLIT_64 +# define BOOST_PP_SEQ_SPLIT_66(x) (x) BOOST_PP_SEQ_SPLIT_65 +# define BOOST_PP_SEQ_SPLIT_67(x) (x) BOOST_PP_SEQ_SPLIT_66 +# define BOOST_PP_SEQ_SPLIT_68(x) (x) BOOST_PP_SEQ_SPLIT_67 +# define BOOST_PP_SEQ_SPLIT_69(x) (x) BOOST_PP_SEQ_SPLIT_68 +# define BOOST_PP_SEQ_SPLIT_70(x) (x) BOOST_PP_SEQ_SPLIT_69 +# define BOOST_PP_SEQ_SPLIT_71(x) (x) BOOST_PP_SEQ_SPLIT_70 +# define BOOST_PP_SEQ_SPLIT_72(x) (x) BOOST_PP_SEQ_SPLIT_71 +# define BOOST_PP_SEQ_SPLIT_73(x) (x) BOOST_PP_SEQ_SPLIT_72 +# define BOOST_PP_SEQ_SPLIT_74(x) (x) BOOST_PP_SEQ_SPLIT_73 +# define BOOST_PP_SEQ_SPLIT_75(x) (x) BOOST_PP_SEQ_SPLIT_74 +# define BOOST_PP_SEQ_SPLIT_76(x) (x) BOOST_PP_SEQ_SPLIT_75 +# define BOOST_PP_SEQ_SPLIT_77(x) (x) BOOST_PP_SEQ_SPLIT_76 +# define BOOST_PP_SEQ_SPLIT_78(x) (x) BOOST_PP_SEQ_SPLIT_77 +# define BOOST_PP_SEQ_SPLIT_79(x) (x) BOOST_PP_SEQ_SPLIT_78 +# define BOOST_PP_SEQ_SPLIT_80(x) (x) BOOST_PP_SEQ_SPLIT_79 +# define BOOST_PP_SEQ_SPLIT_81(x) (x) BOOST_PP_SEQ_SPLIT_80 +# define BOOST_PP_SEQ_SPLIT_82(x) (x) BOOST_PP_SEQ_SPLIT_81 +# define BOOST_PP_SEQ_SPLIT_83(x) (x) BOOST_PP_SEQ_SPLIT_82 +# define BOOST_PP_SEQ_SPLIT_84(x) (x) BOOST_PP_SEQ_SPLIT_83 +# define BOOST_PP_SEQ_SPLIT_85(x) (x) BOOST_PP_SEQ_SPLIT_84 +# define BOOST_PP_SEQ_SPLIT_86(x) (x) BOOST_PP_SEQ_SPLIT_85 +# define BOOST_PP_SEQ_SPLIT_87(x) (x) BOOST_PP_SEQ_SPLIT_86 +# define BOOST_PP_SEQ_SPLIT_88(x) (x) BOOST_PP_SEQ_SPLIT_87 +# define BOOST_PP_SEQ_SPLIT_89(x) (x) BOOST_PP_SEQ_SPLIT_88 +# define BOOST_PP_SEQ_SPLIT_90(x) (x) BOOST_PP_SEQ_SPLIT_89 +# define BOOST_PP_SEQ_SPLIT_91(x) (x) BOOST_PP_SEQ_SPLIT_90 +# define BOOST_PP_SEQ_SPLIT_92(x) (x) BOOST_PP_SEQ_SPLIT_91 +# define BOOST_PP_SEQ_SPLIT_93(x) (x) BOOST_PP_SEQ_SPLIT_92 +# define BOOST_PP_SEQ_SPLIT_94(x) (x) BOOST_PP_SEQ_SPLIT_93 +# define BOOST_PP_SEQ_SPLIT_95(x) (x) BOOST_PP_SEQ_SPLIT_94 +# define BOOST_PP_SEQ_SPLIT_96(x) (x) BOOST_PP_SEQ_SPLIT_95 +# define BOOST_PP_SEQ_SPLIT_97(x) (x) BOOST_PP_SEQ_SPLIT_96 +# define BOOST_PP_SEQ_SPLIT_98(x) (x) BOOST_PP_SEQ_SPLIT_97 +# define BOOST_PP_SEQ_SPLIT_99(x) (x) BOOST_PP_SEQ_SPLIT_98 +# define BOOST_PP_SEQ_SPLIT_100(x) (x) BOOST_PP_SEQ_SPLIT_99 +# define BOOST_PP_SEQ_SPLIT_101(x) (x) BOOST_PP_SEQ_SPLIT_100 +# define BOOST_PP_SEQ_SPLIT_102(x) (x) BOOST_PP_SEQ_SPLIT_101 +# define BOOST_PP_SEQ_SPLIT_103(x) (x) BOOST_PP_SEQ_SPLIT_102 +# define BOOST_PP_SEQ_SPLIT_104(x) (x) BOOST_PP_SEQ_SPLIT_103 +# define BOOST_PP_SEQ_SPLIT_105(x) (x) BOOST_PP_SEQ_SPLIT_104 +# define BOOST_PP_SEQ_SPLIT_106(x) (x) BOOST_PP_SEQ_SPLIT_105 +# define BOOST_PP_SEQ_SPLIT_107(x) (x) BOOST_PP_SEQ_SPLIT_106 +# define BOOST_PP_SEQ_SPLIT_108(x) (x) BOOST_PP_SEQ_SPLIT_107 +# define BOOST_PP_SEQ_SPLIT_109(x) (x) BOOST_PP_SEQ_SPLIT_108 +# define BOOST_PP_SEQ_SPLIT_110(x) (x) BOOST_PP_SEQ_SPLIT_109 +# define BOOST_PP_SEQ_SPLIT_111(x) (x) BOOST_PP_SEQ_SPLIT_110 +# define BOOST_PP_SEQ_SPLIT_112(x) (x) BOOST_PP_SEQ_SPLIT_111 +# define BOOST_PP_SEQ_SPLIT_113(x) (x) BOOST_PP_SEQ_SPLIT_112 +# define BOOST_PP_SEQ_SPLIT_114(x) (x) BOOST_PP_SEQ_SPLIT_113 +# define BOOST_PP_SEQ_SPLIT_115(x) (x) BOOST_PP_SEQ_SPLIT_114 +# define BOOST_PP_SEQ_SPLIT_116(x) (x) BOOST_PP_SEQ_SPLIT_115 +# define BOOST_PP_SEQ_SPLIT_117(x) (x) BOOST_PP_SEQ_SPLIT_116 +# define BOOST_PP_SEQ_SPLIT_118(x) (x) BOOST_PP_SEQ_SPLIT_117 +# define BOOST_PP_SEQ_SPLIT_119(x) (x) BOOST_PP_SEQ_SPLIT_118 +# define BOOST_PP_SEQ_SPLIT_120(x) (x) BOOST_PP_SEQ_SPLIT_119 +# define BOOST_PP_SEQ_SPLIT_121(x) (x) BOOST_PP_SEQ_SPLIT_120 +# define BOOST_PP_SEQ_SPLIT_122(x) (x) BOOST_PP_SEQ_SPLIT_121 +# define BOOST_PP_SEQ_SPLIT_123(x) (x) BOOST_PP_SEQ_SPLIT_122 +# define BOOST_PP_SEQ_SPLIT_124(x) (x) BOOST_PP_SEQ_SPLIT_123 +# define BOOST_PP_SEQ_SPLIT_125(x) (x) BOOST_PP_SEQ_SPLIT_124 +# define BOOST_PP_SEQ_SPLIT_126(x) (x) BOOST_PP_SEQ_SPLIT_125 +# define BOOST_PP_SEQ_SPLIT_127(x) (x) BOOST_PP_SEQ_SPLIT_126 +# define BOOST_PP_SEQ_SPLIT_128(x) (x) BOOST_PP_SEQ_SPLIT_127 +# define BOOST_PP_SEQ_SPLIT_129(x) (x) BOOST_PP_SEQ_SPLIT_128 +# define BOOST_PP_SEQ_SPLIT_130(x) (x) BOOST_PP_SEQ_SPLIT_129 +# define BOOST_PP_SEQ_SPLIT_131(x) (x) BOOST_PP_SEQ_SPLIT_130 +# define BOOST_PP_SEQ_SPLIT_132(x) (x) BOOST_PP_SEQ_SPLIT_131 +# define BOOST_PP_SEQ_SPLIT_133(x) (x) BOOST_PP_SEQ_SPLIT_132 +# define BOOST_PP_SEQ_SPLIT_134(x) (x) BOOST_PP_SEQ_SPLIT_133 +# define BOOST_PP_SEQ_SPLIT_135(x) (x) BOOST_PP_SEQ_SPLIT_134 +# define BOOST_PP_SEQ_SPLIT_136(x) (x) BOOST_PP_SEQ_SPLIT_135 +# define BOOST_PP_SEQ_SPLIT_137(x) (x) BOOST_PP_SEQ_SPLIT_136 +# define BOOST_PP_SEQ_SPLIT_138(x) (x) BOOST_PP_SEQ_SPLIT_137 +# define BOOST_PP_SEQ_SPLIT_139(x) (x) BOOST_PP_SEQ_SPLIT_138 +# define BOOST_PP_SEQ_SPLIT_140(x) (x) BOOST_PP_SEQ_SPLIT_139 +# define BOOST_PP_SEQ_SPLIT_141(x) (x) BOOST_PP_SEQ_SPLIT_140 +# define BOOST_PP_SEQ_SPLIT_142(x) (x) BOOST_PP_SEQ_SPLIT_141 +# define BOOST_PP_SEQ_SPLIT_143(x) (x) BOOST_PP_SEQ_SPLIT_142 +# define BOOST_PP_SEQ_SPLIT_144(x) (x) BOOST_PP_SEQ_SPLIT_143 +# define BOOST_PP_SEQ_SPLIT_145(x) (x) BOOST_PP_SEQ_SPLIT_144 +# define BOOST_PP_SEQ_SPLIT_146(x) (x) BOOST_PP_SEQ_SPLIT_145 +# define BOOST_PP_SEQ_SPLIT_147(x) (x) BOOST_PP_SEQ_SPLIT_146 +# define BOOST_PP_SEQ_SPLIT_148(x) (x) BOOST_PP_SEQ_SPLIT_147 +# define BOOST_PP_SEQ_SPLIT_149(x) (x) BOOST_PP_SEQ_SPLIT_148 +# define BOOST_PP_SEQ_SPLIT_150(x) (x) BOOST_PP_SEQ_SPLIT_149 +# define BOOST_PP_SEQ_SPLIT_151(x) (x) BOOST_PP_SEQ_SPLIT_150 +# define BOOST_PP_SEQ_SPLIT_152(x) (x) BOOST_PP_SEQ_SPLIT_151 +# define BOOST_PP_SEQ_SPLIT_153(x) (x) BOOST_PP_SEQ_SPLIT_152 +# define BOOST_PP_SEQ_SPLIT_154(x) (x) BOOST_PP_SEQ_SPLIT_153 +# define BOOST_PP_SEQ_SPLIT_155(x) (x) BOOST_PP_SEQ_SPLIT_154 +# define BOOST_PP_SEQ_SPLIT_156(x) (x) BOOST_PP_SEQ_SPLIT_155 +# define BOOST_PP_SEQ_SPLIT_157(x) (x) BOOST_PP_SEQ_SPLIT_156 +# define BOOST_PP_SEQ_SPLIT_158(x) (x) BOOST_PP_SEQ_SPLIT_157 +# define BOOST_PP_SEQ_SPLIT_159(x) (x) BOOST_PP_SEQ_SPLIT_158 +# define BOOST_PP_SEQ_SPLIT_160(x) (x) BOOST_PP_SEQ_SPLIT_159 +# define BOOST_PP_SEQ_SPLIT_161(x) (x) BOOST_PP_SEQ_SPLIT_160 +# define BOOST_PP_SEQ_SPLIT_162(x) (x) BOOST_PP_SEQ_SPLIT_161 +# define BOOST_PP_SEQ_SPLIT_163(x) (x) BOOST_PP_SEQ_SPLIT_162 +# define BOOST_PP_SEQ_SPLIT_164(x) (x) BOOST_PP_SEQ_SPLIT_163 +# define BOOST_PP_SEQ_SPLIT_165(x) (x) BOOST_PP_SEQ_SPLIT_164 +# define BOOST_PP_SEQ_SPLIT_166(x) (x) BOOST_PP_SEQ_SPLIT_165 +# define BOOST_PP_SEQ_SPLIT_167(x) (x) BOOST_PP_SEQ_SPLIT_166 +# define BOOST_PP_SEQ_SPLIT_168(x) (x) BOOST_PP_SEQ_SPLIT_167 +# define BOOST_PP_SEQ_SPLIT_169(x) (x) BOOST_PP_SEQ_SPLIT_168 +# define BOOST_PP_SEQ_SPLIT_170(x) (x) BOOST_PP_SEQ_SPLIT_169 +# define BOOST_PP_SEQ_SPLIT_171(x) (x) BOOST_PP_SEQ_SPLIT_170 +# define BOOST_PP_SEQ_SPLIT_172(x) (x) BOOST_PP_SEQ_SPLIT_171 +# define BOOST_PP_SEQ_SPLIT_173(x) (x) BOOST_PP_SEQ_SPLIT_172 +# define BOOST_PP_SEQ_SPLIT_174(x) (x) BOOST_PP_SEQ_SPLIT_173 +# define BOOST_PP_SEQ_SPLIT_175(x) (x) BOOST_PP_SEQ_SPLIT_174 +# define BOOST_PP_SEQ_SPLIT_176(x) (x) BOOST_PP_SEQ_SPLIT_175 +# define BOOST_PP_SEQ_SPLIT_177(x) (x) BOOST_PP_SEQ_SPLIT_176 +# define BOOST_PP_SEQ_SPLIT_178(x) (x) BOOST_PP_SEQ_SPLIT_177 +# define BOOST_PP_SEQ_SPLIT_179(x) (x) BOOST_PP_SEQ_SPLIT_178 +# define BOOST_PP_SEQ_SPLIT_180(x) (x) BOOST_PP_SEQ_SPLIT_179 +# define BOOST_PP_SEQ_SPLIT_181(x) (x) BOOST_PP_SEQ_SPLIT_180 +# define BOOST_PP_SEQ_SPLIT_182(x) (x) BOOST_PP_SEQ_SPLIT_181 +# define BOOST_PP_SEQ_SPLIT_183(x) (x) BOOST_PP_SEQ_SPLIT_182 +# define BOOST_PP_SEQ_SPLIT_184(x) (x) BOOST_PP_SEQ_SPLIT_183 +# define BOOST_PP_SEQ_SPLIT_185(x) (x) BOOST_PP_SEQ_SPLIT_184 +# define BOOST_PP_SEQ_SPLIT_186(x) (x) BOOST_PP_SEQ_SPLIT_185 +# define BOOST_PP_SEQ_SPLIT_187(x) (x) BOOST_PP_SEQ_SPLIT_186 +# define BOOST_PP_SEQ_SPLIT_188(x) (x) BOOST_PP_SEQ_SPLIT_187 +# define BOOST_PP_SEQ_SPLIT_189(x) (x) BOOST_PP_SEQ_SPLIT_188 +# define BOOST_PP_SEQ_SPLIT_190(x) (x) BOOST_PP_SEQ_SPLIT_189 +# define BOOST_PP_SEQ_SPLIT_191(x) (x) BOOST_PP_SEQ_SPLIT_190 +# define BOOST_PP_SEQ_SPLIT_192(x) (x) BOOST_PP_SEQ_SPLIT_191 +# define BOOST_PP_SEQ_SPLIT_193(x) (x) BOOST_PP_SEQ_SPLIT_192 +# define BOOST_PP_SEQ_SPLIT_194(x) (x) BOOST_PP_SEQ_SPLIT_193 +# define BOOST_PP_SEQ_SPLIT_195(x) (x) BOOST_PP_SEQ_SPLIT_194 +# define BOOST_PP_SEQ_SPLIT_196(x) (x) BOOST_PP_SEQ_SPLIT_195 +# define BOOST_PP_SEQ_SPLIT_197(x) (x) BOOST_PP_SEQ_SPLIT_196 +# define BOOST_PP_SEQ_SPLIT_198(x) (x) BOOST_PP_SEQ_SPLIT_197 +# define BOOST_PP_SEQ_SPLIT_199(x) (x) BOOST_PP_SEQ_SPLIT_198 +# define BOOST_PP_SEQ_SPLIT_200(x) (x) BOOST_PP_SEQ_SPLIT_199 +# define BOOST_PP_SEQ_SPLIT_201(x) (x) BOOST_PP_SEQ_SPLIT_200 +# define BOOST_PP_SEQ_SPLIT_202(x) (x) BOOST_PP_SEQ_SPLIT_201 +# define BOOST_PP_SEQ_SPLIT_203(x) (x) BOOST_PP_SEQ_SPLIT_202 +# define BOOST_PP_SEQ_SPLIT_204(x) (x) BOOST_PP_SEQ_SPLIT_203 +# define BOOST_PP_SEQ_SPLIT_205(x) (x) BOOST_PP_SEQ_SPLIT_204 +# define BOOST_PP_SEQ_SPLIT_206(x) (x) BOOST_PP_SEQ_SPLIT_205 +# define BOOST_PP_SEQ_SPLIT_207(x) (x) BOOST_PP_SEQ_SPLIT_206 +# define BOOST_PP_SEQ_SPLIT_208(x) (x) BOOST_PP_SEQ_SPLIT_207 +# define BOOST_PP_SEQ_SPLIT_209(x) (x) BOOST_PP_SEQ_SPLIT_208 +# define BOOST_PP_SEQ_SPLIT_210(x) (x) BOOST_PP_SEQ_SPLIT_209 +# define BOOST_PP_SEQ_SPLIT_211(x) (x) BOOST_PP_SEQ_SPLIT_210 +# define BOOST_PP_SEQ_SPLIT_212(x) (x) BOOST_PP_SEQ_SPLIT_211 +# define BOOST_PP_SEQ_SPLIT_213(x) (x) BOOST_PP_SEQ_SPLIT_212 +# define BOOST_PP_SEQ_SPLIT_214(x) (x) BOOST_PP_SEQ_SPLIT_213 +# define BOOST_PP_SEQ_SPLIT_215(x) (x) BOOST_PP_SEQ_SPLIT_214 +# define BOOST_PP_SEQ_SPLIT_216(x) (x) BOOST_PP_SEQ_SPLIT_215 +# define BOOST_PP_SEQ_SPLIT_217(x) (x) BOOST_PP_SEQ_SPLIT_216 +# define BOOST_PP_SEQ_SPLIT_218(x) (x) BOOST_PP_SEQ_SPLIT_217 +# define BOOST_PP_SEQ_SPLIT_219(x) (x) BOOST_PP_SEQ_SPLIT_218 +# define BOOST_PP_SEQ_SPLIT_220(x) (x) BOOST_PP_SEQ_SPLIT_219 +# define BOOST_PP_SEQ_SPLIT_221(x) (x) BOOST_PP_SEQ_SPLIT_220 +# define BOOST_PP_SEQ_SPLIT_222(x) (x) BOOST_PP_SEQ_SPLIT_221 +# define BOOST_PP_SEQ_SPLIT_223(x) (x) BOOST_PP_SEQ_SPLIT_222 +# define BOOST_PP_SEQ_SPLIT_224(x) (x) BOOST_PP_SEQ_SPLIT_223 +# define BOOST_PP_SEQ_SPLIT_225(x) (x) BOOST_PP_SEQ_SPLIT_224 +# define BOOST_PP_SEQ_SPLIT_226(x) (x) BOOST_PP_SEQ_SPLIT_225 +# define BOOST_PP_SEQ_SPLIT_227(x) (x) BOOST_PP_SEQ_SPLIT_226 +# define BOOST_PP_SEQ_SPLIT_228(x) (x) BOOST_PP_SEQ_SPLIT_227 +# define BOOST_PP_SEQ_SPLIT_229(x) (x) BOOST_PP_SEQ_SPLIT_228 +# define BOOST_PP_SEQ_SPLIT_230(x) (x) BOOST_PP_SEQ_SPLIT_229 +# define BOOST_PP_SEQ_SPLIT_231(x) (x) BOOST_PP_SEQ_SPLIT_230 +# define BOOST_PP_SEQ_SPLIT_232(x) (x) BOOST_PP_SEQ_SPLIT_231 +# define BOOST_PP_SEQ_SPLIT_233(x) (x) BOOST_PP_SEQ_SPLIT_232 +# define BOOST_PP_SEQ_SPLIT_234(x) (x) BOOST_PP_SEQ_SPLIT_233 +# define BOOST_PP_SEQ_SPLIT_235(x) (x) BOOST_PP_SEQ_SPLIT_234 +# define BOOST_PP_SEQ_SPLIT_236(x) (x) BOOST_PP_SEQ_SPLIT_235 +# define BOOST_PP_SEQ_SPLIT_237(x) (x) BOOST_PP_SEQ_SPLIT_236 +# define BOOST_PP_SEQ_SPLIT_238(x) (x) BOOST_PP_SEQ_SPLIT_237 +# define BOOST_PP_SEQ_SPLIT_239(x) (x) BOOST_PP_SEQ_SPLIT_238 +# define BOOST_PP_SEQ_SPLIT_240(x) (x) BOOST_PP_SEQ_SPLIT_239 +# define BOOST_PP_SEQ_SPLIT_241(x) (x) BOOST_PP_SEQ_SPLIT_240 +# define BOOST_PP_SEQ_SPLIT_242(x) (x) BOOST_PP_SEQ_SPLIT_241 +# define BOOST_PP_SEQ_SPLIT_243(x) (x) BOOST_PP_SEQ_SPLIT_242 +# define BOOST_PP_SEQ_SPLIT_244(x) (x) BOOST_PP_SEQ_SPLIT_243 +# define BOOST_PP_SEQ_SPLIT_245(x) (x) BOOST_PP_SEQ_SPLIT_244 +# define BOOST_PP_SEQ_SPLIT_246(x) (x) BOOST_PP_SEQ_SPLIT_245 +# define BOOST_PP_SEQ_SPLIT_247(x) (x) BOOST_PP_SEQ_SPLIT_246 +# define BOOST_PP_SEQ_SPLIT_248(x) (x) BOOST_PP_SEQ_SPLIT_247 +# define BOOST_PP_SEQ_SPLIT_249(x) (x) BOOST_PP_SEQ_SPLIT_248 +# define BOOST_PP_SEQ_SPLIT_250(x) (x) BOOST_PP_SEQ_SPLIT_249 +# define BOOST_PP_SEQ_SPLIT_251(x) (x) BOOST_PP_SEQ_SPLIT_250 +# define BOOST_PP_SEQ_SPLIT_252(x) (x) BOOST_PP_SEQ_SPLIT_251 +# define BOOST_PP_SEQ_SPLIT_253(x) (x) BOOST_PP_SEQ_SPLIT_252 +# define BOOST_PP_SEQ_SPLIT_254(x) (x) BOOST_PP_SEQ_SPLIT_253 +# define BOOST_PP_SEQ_SPLIT_255(x) (x) BOOST_PP_SEQ_SPLIT_254 +# define BOOST_PP_SEQ_SPLIT_256(x) (x) BOOST_PP_SEQ_SPLIT_255 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/detail/limits/split_512.hpp b/src/boost/boost/preprocessor/seq/detail/limits/split_512.hpp new file mode 100644 index 000000000..f93d6b71a --- /dev/null +++ b/src/boost/boost/preprocessor/seq/detail/limits/split_512.hpp @@ -0,0 +1,274 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_512_HPP +# define BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_512_HPP +# +# define BOOST_PP_SEQ_SPLIT_257(x) (x) BOOST_PP_SEQ_SPLIT_256 +# define BOOST_PP_SEQ_SPLIT_258(x) (x) BOOST_PP_SEQ_SPLIT_257 +# define BOOST_PP_SEQ_SPLIT_259(x) (x) BOOST_PP_SEQ_SPLIT_258 +# define BOOST_PP_SEQ_SPLIT_260(x) (x) BOOST_PP_SEQ_SPLIT_259 +# define BOOST_PP_SEQ_SPLIT_261(x) (x) BOOST_PP_SEQ_SPLIT_260 +# define BOOST_PP_SEQ_SPLIT_262(x) (x) BOOST_PP_SEQ_SPLIT_261 +# define BOOST_PP_SEQ_SPLIT_263(x) (x) BOOST_PP_SEQ_SPLIT_262 +# define BOOST_PP_SEQ_SPLIT_264(x) (x) BOOST_PP_SEQ_SPLIT_263 +# define BOOST_PP_SEQ_SPLIT_265(x) (x) BOOST_PP_SEQ_SPLIT_264 +# define BOOST_PP_SEQ_SPLIT_266(x) (x) BOOST_PP_SEQ_SPLIT_265 +# define BOOST_PP_SEQ_SPLIT_267(x) (x) BOOST_PP_SEQ_SPLIT_266 +# define BOOST_PP_SEQ_SPLIT_268(x) (x) BOOST_PP_SEQ_SPLIT_267 +# define BOOST_PP_SEQ_SPLIT_269(x) (x) BOOST_PP_SEQ_SPLIT_268 +# define BOOST_PP_SEQ_SPLIT_270(x) (x) BOOST_PP_SEQ_SPLIT_269 +# define BOOST_PP_SEQ_SPLIT_271(x) (x) BOOST_PP_SEQ_SPLIT_270 +# define BOOST_PP_SEQ_SPLIT_272(x) (x) BOOST_PP_SEQ_SPLIT_271 +# define BOOST_PP_SEQ_SPLIT_273(x) (x) BOOST_PP_SEQ_SPLIT_272 +# define BOOST_PP_SEQ_SPLIT_274(x) (x) BOOST_PP_SEQ_SPLIT_273 +# define BOOST_PP_SEQ_SPLIT_275(x) (x) BOOST_PP_SEQ_SPLIT_274 +# define BOOST_PP_SEQ_SPLIT_276(x) (x) BOOST_PP_SEQ_SPLIT_275 +# define BOOST_PP_SEQ_SPLIT_277(x) (x) BOOST_PP_SEQ_SPLIT_276 +# define BOOST_PP_SEQ_SPLIT_278(x) (x) BOOST_PP_SEQ_SPLIT_277 +# define BOOST_PP_SEQ_SPLIT_279(x) (x) BOOST_PP_SEQ_SPLIT_278 +# define BOOST_PP_SEQ_SPLIT_280(x) (x) BOOST_PP_SEQ_SPLIT_279 +# define BOOST_PP_SEQ_SPLIT_281(x) (x) BOOST_PP_SEQ_SPLIT_280 +# define BOOST_PP_SEQ_SPLIT_282(x) (x) BOOST_PP_SEQ_SPLIT_281 +# define BOOST_PP_SEQ_SPLIT_283(x) (x) BOOST_PP_SEQ_SPLIT_282 +# define BOOST_PP_SEQ_SPLIT_284(x) (x) BOOST_PP_SEQ_SPLIT_283 +# define BOOST_PP_SEQ_SPLIT_285(x) (x) BOOST_PP_SEQ_SPLIT_284 +# define BOOST_PP_SEQ_SPLIT_286(x) (x) BOOST_PP_SEQ_SPLIT_285 +# define BOOST_PP_SEQ_SPLIT_287(x) (x) BOOST_PP_SEQ_SPLIT_286 +# define BOOST_PP_SEQ_SPLIT_288(x) (x) BOOST_PP_SEQ_SPLIT_287 +# define BOOST_PP_SEQ_SPLIT_289(x) (x) BOOST_PP_SEQ_SPLIT_288 +# define BOOST_PP_SEQ_SPLIT_290(x) (x) BOOST_PP_SEQ_SPLIT_289 +# define BOOST_PP_SEQ_SPLIT_291(x) (x) BOOST_PP_SEQ_SPLIT_290 +# define BOOST_PP_SEQ_SPLIT_292(x) (x) BOOST_PP_SEQ_SPLIT_291 +# define BOOST_PP_SEQ_SPLIT_293(x) (x) BOOST_PP_SEQ_SPLIT_292 +# define BOOST_PP_SEQ_SPLIT_294(x) (x) BOOST_PP_SEQ_SPLIT_293 +# define BOOST_PP_SEQ_SPLIT_295(x) (x) BOOST_PP_SEQ_SPLIT_294 +# define BOOST_PP_SEQ_SPLIT_296(x) (x) BOOST_PP_SEQ_SPLIT_295 +# define BOOST_PP_SEQ_SPLIT_297(x) (x) BOOST_PP_SEQ_SPLIT_296 +# define BOOST_PP_SEQ_SPLIT_298(x) (x) BOOST_PP_SEQ_SPLIT_297 +# define BOOST_PP_SEQ_SPLIT_299(x) (x) BOOST_PP_SEQ_SPLIT_298 +# define BOOST_PP_SEQ_SPLIT_300(x) (x) BOOST_PP_SEQ_SPLIT_299 +# define BOOST_PP_SEQ_SPLIT_301(x) (x) BOOST_PP_SEQ_SPLIT_300 +# define BOOST_PP_SEQ_SPLIT_302(x) (x) BOOST_PP_SEQ_SPLIT_301 +# define BOOST_PP_SEQ_SPLIT_303(x) (x) BOOST_PP_SEQ_SPLIT_302 +# define BOOST_PP_SEQ_SPLIT_304(x) (x) BOOST_PP_SEQ_SPLIT_303 +# define BOOST_PP_SEQ_SPLIT_305(x) (x) BOOST_PP_SEQ_SPLIT_304 +# define BOOST_PP_SEQ_SPLIT_306(x) (x) BOOST_PP_SEQ_SPLIT_305 +# define BOOST_PP_SEQ_SPLIT_307(x) (x) BOOST_PP_SEQ_SPLIT_306 +# define BOOST_PP_SEQ_SPLIT_308(x) (x) BOOST_PP_SEQ_SPLIT_307 +# define BOOST_PP_SEQ_SPLIT_309(x) (x) BOOST_PP_SEQ_SPLIT_308 +# define BOOST_PP_SEQ_SPLIT_310(x) (x) BOOST_PP_SEQ_SPLIT_309 +# define BOOST_PP_SEQ_SPLIT_311(x) (x) BOOST_PP_SEQ_SPLIT_310 +# define BOOST_PP_SEQ_SPLIT_312(x) (x) BOOST_PP_SEQ_SPLIT_311 +# define BOOST_PP_SEQ_SPLIT_313(x) (x) BOOST_PP_SEQ_SPLIT_312 +# define BOOST_PP_SEQ_SPLIT_314(x) (x) BOOST_PP_SEQ_SPLIT_313 +# define BOOST_PP_SEQ_SPLIT_315(x) (x) BOOST_PP_SEQ_SPLIT_314 +# define BOOST_PP_SEQ_SPLIT_316(x) (x) BOOST_PP_SEQ_SPLIT_315 +# define BOOST_PP_SEQ_SPLIT_317(x) (x) BOOST_PP_SEQ_SPLIT_316 +# define BOOST_PP_SEQ_SPLIT_318(x) (x) BOOST_PP_SEQ_SPLIT_317 +# define BOOST_PP_SEQ_SPLIT_319(x) (x) BOOST_PP_SEQ_SPLIT_318 +# define BOOST_PP_SEQ_SPLIT_320(x) (x) BOOST_PP_SEQ_SPLIT_319 +# define BOOST_PP_SEQ_SPLIT_321(x) (x) BOOST_PP_SEQ_SPLIT_320 +# define BOOST_PP_SEQ_SPLIT_322(x) (x) BOOST_PP_SEQ_SPLIT_321 +# define BOOST_PP_SEQ_SPLIT_323(x) (x) BOOST_PP_SEQ_SPLIT_322 +# define BOOST_PP_SEQ_SPLIT_324(x) (x) BOOST_PP_SEQ_SPLIT_323 +# define BOOST_PP_SEQ_SPLIT_325(x) (x) BOOST_PP_SEQ_SPLIT_324 +# define BOOST_PP_SEQ_SPLIT_326(x) (x) BOOST_PP_SEQ_SPLIT_325 +# define BOOST_PP_SEQ_SPLIT_327(x) (x) BOOST_PP_SEQ_SPLIT_326 +# define BOOST_PP_SEQ_SPLIT_328(x) (x) BOOST_PP_SEQ_SPLIT_327 +# define BOOST_PP_SEQ_SPLIT_329(x) (x) BOOST_PP_SEQ_SPLIT_328 +# define BOOST_PP_SEQ_SPLIT_330(x) (x) BOOST_PP_SEQ_SPLIT_329 +# define BOOST_PP_SEQ_SPLIT_331(x) (x) BOOST_PP_SEQ_SPLIT_330 +# define BOOST_PP_SEQ_SPLIT_332(x) (x) BOOST_PP_SEQ_SPLIT_331 +# define BOOST_PP_SEQ_SPLIT_333(x) (x) BOOST_PP_SEQ_SPLIT_332 +# define BOOST_PP_SEQ_SPLIT_334(x) (x) BOOST_PP_SEQ_SPLIT_333 +# define BOOST_PP_SEQ_SPLIT_335(x) (x) BOOST_PP_SEQ_SPLIT_334 +# define BOOST_PP_SEQ_SPLIT_336(x) (x) BOOST_PP_SEQ_SPLIT_335 +# define BOOST_PP_SEQ_SPLIT_337(x) (x) BOOST_PP_SEQ_SPLIT_336 +# define BOOST_PP_SEQ_SPLIT_338(x) (x) BOOST_PP_SEQ_SPLIT_337 +# define BOOST_PP_SEQ_SPLIT_339(x) (x) BOOST_PP_SEQ_SPLIT_338 +# define BOOST_PP_SEQ_SPLIT_340(x) (x) BOOST_PP_SEQ_SPLIT_339 +# define BOOST_PP_SEQ_SPLIT_341(x) (x) BOOST_PP_SEQ_SPLIT_340 +# define BOOST_PP_SEQ_SPLIT_342(x) (x) BOOST_PP_SEQ_SPLIT_341 +# define BOOST_PP_SEQ_SPLIT_343(x) (x) BOOST_PP_SEQ_SPLIT_342 +# define BOOST_PP_SEQ_SPLIT_344(x) (x) BOOST_PP_SEQ_SPLIT_343 +# define BOOST_PP_SEQ_SPLIT_345(x) (x) BOOST_PP_SEQ_SPLIT_344 +# define BOOST_PP_SEQ_SPLIT_346(x) (x) BOOST_PP_SEQ_SPLIT_345 +# define BOOST_PP_SEQ_SPLIT_347(x) (x) BOOST_PP_SEQ_SPLIT_346 +# define BOOST_PP_SEQ_SPLIT_348(x) (x) BOOST_PP_SEQ_SPLIT_347 +# define BOOST_PP_SEQ_SPLIT_349(x) (x) BOOST_PP_SEQ_SPLIT_348 +# define BOOST_PP_SEQ_SPLIT_350(x) (x) BOOST_PP_SEQ_SPLIT_349 +# define BOOST_PP_SEQ_SPLIT_351(x) (x) BOOST_PP_SEQ_SPLIT_350 +# define BOOST_PP_SEQ_SPLIT_352(x) (x) BOOST_PP_SEQ_SPLIT_351 +# define BOOST_PP_SEQ_SPLIT_353(x) (x) BOOST_PP_SEQ_SPLIT_352 +# define BOOST_PP_SEQ_SPLIT_354(x) (x) BOOST_PP_SEQ_SPLIT_353 +# define BOOST_PP_SEQ_SPLIT_355(x) (x) BOOST_PP_SEQ_SPLIT_354 +# define BOOST_PP_SEQ_SPLIT_356(x) (x) BOOST_PP_SEQ_SPLIT_355 +# define BOOST_PP_SEQ_SPLIT_357(x) (x) BOOST_PP_SEQ_SPLIT_356 +# define BOOST_PP_SEQ_SPLIT_358(x) (x) BOOST_PP_SEQ_SPLIT_357 +# define BOOST_PP_SEQ_SPLIT_359(x) (x) BOOST_PP_SEQ_SPLIT_358 +# define BOOST_PP_SEQ_SPLIT_360(x) (x) BOOST_PP_SEQ_SPLIT_359 +# define BOOST_PP_SEQ_SPLIT_361(x) (x) BOOST_PP_SEQ_SPLIT_360 +# define BOOST_PP_SEQ_SPLIT_362(x) (x) BOOST_PP_SEQ_SPLIT_361 +# define BOOST_PP_SEQ_SPLIT_363(x) (x) BOOST_PP_SEQ_SPLIT_362 +# define BOOST_PP_SEQ_SPLIT_364(x) (x) BOOST_PP_SEQ_SPLIT_363 +# define BOOST_PP_SEQ_SPLIT_365(x) (x) BOOST_PP_SEQ_SPLIT_364 +# define BOOST_PP_SEQ_SPLIT_366(x) (x) BOOST_PP_SEQ_SPLIT_365 +# define BOOST_PP_SEQ_SPLIT_367(x) (x) BOOST_PP_SEQ_SPLIT_366 +# define BOOST_PP_SEQ_SPLIT_368(x) (x) BOOST_PP_SEQ_SPLIT_367 +# define BOOST_PP_SEQ_SPLIT_369(x) (x) BOOST_PP_SEQ_SPLIT_368 +# define BOOST_PP_SEQ_SPLIT_370(x) (x) BOOST_PP_SEQ_SPLIT_369 +# define BOOST_PP_SEQ_SPLIT_371(x) (x) BOOST_PP_SEQ_SPLIT_370 +# define BOOST_PP_SEQ_SPLIT_372(x) (x) BOOST_PP_SEQ_SPLIT_371 +# define BOOST_PP_SEQ_SPLIT_373(x) (x) BOOST_PP_SEQ_SPLIT_372 +# define BOOST_PP_SEQ_SPLIT_374(x) (x) BOOST_PP_SEQ_SPLIT_373 +# define BOOST_PP_SEQ_SPLIT_375(x) (x) BOOST_PP_SEQ_SPLIT_374 +# define BOOST_PP_SEQ_SPLIT_376(x) (x) BOOST_PP_SEQ_SPLIT_375 +# define BOOST_PP_SEQ_SPLIT_377(x) (x) BOOST_PP_SEQ_SPLIT_376 +# define BOOST_PP_SEQ_SPLIT_378(x) (x) BOOST_PP_SEQ_SPLIT_377 +# define BOOST_PP_SEQ_SPLIT_379(x) (x) BOOST_PP_SEQ_SPLIT_378 +# define BOOST_PP_SEQ_SPLIT_380(x) (x) BOOST_PP_SEQ_SPLIT_379 +# define BOOST_PP_SEQ_SPLIT_381(x) (x) BOOST_PP_SEQ_SPLIT_380 +# define BOOST_PP_SEQ_SPLIT_382(x) (x) BOOST_PP_SEQ_SPLIT_381 +# define BOOST_PP_SEQ_SPLIT_383(x) (x) BOOST_PP_SEQ_SPLIT_382 +# define BOOST_PP_SEQ_SPLIT_384(x) (x) BOOST_PP_SEQ_SPLIT_383 +# define BOOST_PP_SEQ_SPLIT_385(x) (x) BOOST_PP_SEQ_SPLIT_384 +# define BOOST_PP_SEQ_SPLIT_386(x) (x) BOOST_PP_SEQ_SPLIT_385 +# define BOOST_PP_SEQ_SPLIT_387(x) (x) BOOST_PP_SEQ_SPLIT_386 +# define BOOST_PP_SEQ_SPLIT_388(x) (x) BOOST_PP_SEQ_SPLIT_387 +# define BOOST_PP_SEQ_SPLIT_389(x) (x) BOOST_PP_SEQ_SPLIT_388 +# define BOOST_PP_SEQ_SPLIT_390(x) (x) BOOST_PP_SEQ_SPLIT_389 +# define BOOST_PP_SEQ_SPLIT_391(x) (x) BOOST_PP_SEQ_SPLIT_390 +# define BOOST_PP_SEQ_SPLIT_392(x) (x) BOOST_PP_SEQ_SPLIT_391 +# define BOOST_PP_SEQ_SPLIT_393(x) (x) BOOST_PP_SEQ_SPLIT_392 +# define BOOST_PP_SEQ_SPLIT_394(x) (x) BOOST_PP_SEQ_SPLIT_393 +# define BOOST_PP_SEQ_SPLIT_395(x) (x) BOOST_PP_SEQ_SPLIT_394 +# define BOOST_PP_SEQ_SPLIT_396(x) (x) BOOST_PP_SEQ_SPLIT_395 +# define BOOST_PP_SEQ_SPLIT_397(x) (x) BOOST_PP_SEQ_SPLIT_396 +# define BOOST_PP_SEQ_SPLIT_398(x) (x) BOOST_PP_SEQ_SPLIT_397 +# define BOOST_PP_SEQ_SPLIT_399(x) (x) BOOST_PP_SEQ_SPLIT_398 +# define BOOST_PP_SEQ_SPLIT_400(x) (x) BOOST_PP_SEQ_SPLIT_399 +# define BOOST_PP_SEQ_SPLIT_401(x) (x) BOOST_PP_SEQ_SPLIT_400 +# define BOOST_PP_SEQ_SPLIT_402(x) (x) BOOST_PP_SEQ_SPLIT_401 +# define BOOST_PP_SEQ_SPLIT_403(x) (x) BOOST_PP_SEQ_SPLIT_402 +# define BOOST_PP_SEQ_SPLIT_404(x) (x) BOOST_PP_SEQ_SPLIT_403 +# define BOOST_PP_SEQ_SPLIT_405(x) (x) BOOST_PP_SEQ_SPLIT_404 +# define BOOST_PP_SEQ_SPLIT_406(x) (x) BOOST_PP_SEQ_SPLIT_405 +# define BOOST_PP_SEQ_SPLIT_407(x) (x) BOOST_PP_SEQ_SPLIT_406 +# define BOOST_PP_SEQ_SPLIT_408(x) (x) BOOST_PP_SEQ_SPLIT_407 +# define BOOST_PP_SEQ_SPLIT_409(x) (x) BOOST_PP_SEQ_SPLIT_408 +# define BOOST_PP_SEQ_SPLIT_410(x) (x) BOOST_PP_SEQ_SPLIT_409 +# define BOOST_PP_SEQ_SPLIT_411(x) (x) BOOST_PP_SEQ_SPLIT_410 +# define BOOST_PP_SEQ_SPLIT_412(x) (x) BOOST_PP_SEQ_SPLIT_411 +# define BOOST_PP_SEQ_SPLIT_413(x) (x) BOOST_PP_SEQ_SPLIT_412 +# define BOOST_PP_SEQ_SPLIT_414(x) (x) BOOST_PP_SEQ_SPLIT_413 +# define BOOST_PP_SEQ_SPLIT_415(x) (x) BOOST_PP_SEQ_SPLIT_414 +# define BOOST_PP_SEQ_SPLIT_416(x) (x) BOOST_PP_SEQ_SPLIT_415 +# define BOOST_PP_SEQ_SPLIT_417(x) (x) BOOST_PP_SEQ_SPLIT_416 +# define BOOST_PP_SEQ_SPLIT_418(x) (x) BOOST_PP_SEQ_SPLIT_417 +# define BOOST_PP_SEQ_SPLIT_419(x) (x) BOOST_PP_SEQ_SPLIT_418 +# define BOOST_PP_SEQ_SPLIT_420(x) (x) BOOST_PP_SEQ_SPLIT_419 +# define BOOST_PP_SEQ_SPLIT_421(x) (x) BOOST_PP_SEQ_SPLIT_420 +# define BOOST_PP_SEQ_SPLIT_422(x) (x) BOOST_PP_SEQ_SPLIT_421 +# define BOOST_PP_SEQ_SPLIT_423(x) (x) BOOST_PP_SEQ_SPLIT_422 +# define BOOST_PP_SEQ_SPLIT_424(x) (x) BOOST_PP_SEQ_SPLIT_423 +# define BOOST_PP_SEQ_SPLIT_425(x) (x) BOOST_PP_SEQ_SPLIT_424 +# define BOOST_PP_SEQ_SPLIT_426(x) (x) BOOST_PP_SEQ_SPLIT_425 +# define BOOST_PP_SEQ_SPLIT_427(x) (x) BOOST_PP_SEQ_SPLIT_426 +# define BOOST_PP_SEQ_SPLIT_428(x) (x) BOOST_PP_SEQ_SPLIT_427 +# define BOOST_PP_SEQ_SPLIT_429(x) (x) BOOST_PP_SEQ_SPLIT_428 +# define BOOST_PP_SEQ_SPLIT_430(x) (x) BOOST_PP_SEQ_SPLIT_429 +# define BOOST_PP_SEQ_SPLIT_431(x) (x) BOOST_PP_SEQ_SPLIT_430 +# define BOOST_PP_SEQ_SPLIT_432(x) (x) BOOST_PP_SEQ_SPLIT_431 +# define BOOST_PP_SEQ_SPLIT_433(x) (x) BOOST_PP_SEQ_SPLIT_432 +# define BOOST_PP_SEQ_SPLIT_434(x) (x) BOOST_PP_SEQ_SPLIT_433 +# define BOOST_PP_SEQ_SPLIT_435(x) (x) BOOST_PP_SEQ_SPLIT_434 +# define BOOST_PP_SEQ_SPLIT_436(x) (x) BOOST_PP_SEQ_SPLIT_435 +# define BOOST_PP_SEQ_SPLIT_437(x) (x) BOOST_PP_SEQ_SPLIT_436 +# define BOOST_PP_SEQ_SPLIT_438(x) (x) BOOST_PP_SEQ_SPLIT_437 +# define BOOST_PP_SEQ_SPLIT_439(x) (x) BOOST_PP_SEQ_SPLIT_438 +# define BOOST_PP_SEQ_SPLIT_440(x) (x) BOOST_PP_SEQ_SPLIT_439 +# define BOOST_PP_SEQ_SPLIT_441(x) (x) BOOST_PP_SEQ_SPLIT_440 +# define BOOST_PP_SEQ_SPLIT_442(x) (x) BOOST_PP_SEQ_SPLIT_441 +# define BOOST_PP_SEQ_SPLIT_443(x) (x) BOOST_PP_SEQ_SPLIT_442 +# define BOOST_PP_SEQ_SPLIT_444(x) (x) BOOST_PP_SEQ_SPLIT_443 +# define BOOST_PP_SEQ_SPLIT_445(x) (x) BOOST_PP_SEQ_SPLIT_444 +# define BOOST_PP_SEQ_SPLIT_446(x) (x) BOOST_PP_SEQ_SPLIT_445 +# define BOOST_PP_SEQ_SPLIT_447(x) (x) BOOST_PP_SEQ_SPLIT_446 +# define BOOST_PP_SEQ_SPLIT_448(x) (x) BOOST_PP_SEQ_SPLIT_447 +# define BOOST_PP_SEQ_SPLIT_449(x) (x) BOOST_PP_SEQ_SPLIT_448 +# define BOOST_PP_SEQ_SPLIT_450(x) (x) BOOST_PP_SEQ_SPLIT_449 +# define BOOST_PP_SEQ_SPLIT_451(x) (x) BOOST_PP_SEQ_SPLIT_450 +# define BOOST_PP_SEQ_SPLIT_452(x) (x) BOOST_PP_SEQ_SPLIT_451 +# define BOOST_PP_SEQ_SPLIT_453(x) (x) BOOST_PP_SEQ_SPLIT_452 +# define BOOST_PP_SEQ_SPLIT_454(x) (x) BOOST_PP_SEQ_SPLIT_453 +# define BOOST_PP_SEQ_SPLIT_455(x) (x) BOOST_PP_SEQ_SPLIT_454 +# define BOOST_PP_SEQ_SPLIT_456(x) (x) BOOST_PP_SEQ_SPLIT_455 +# define BOOST_PP_SEQ_SPLIT_457(x) (x) BOOST_PP_SEQ_SPLIT_456 +# define BOOST_PP_SEQ_SPLIT_458(x) (x) BOOST_PP_SEQ_SPLIT_457 +# define BOOST_PP_SEQ_SPLIT_459(x) (x) BOOST_PP_SEQ_SPLIT_458 +# define BOOST_PP_SEQ_SPLIT_460(x) (x) BOOST_PP_SEQ_SPLIT_459 +# define BOOST_PP_SEQ_SPLIT_461(x) (x) BOOST_PP_SEQ_SPLIT_460 +# define BOOST_PP_SEQ_SPLIT_462(x) (x) BOOST_PP_SEQ_SPLIT_461 +# define BOOST_PP_SEQ_SPLIT_463(x) (x) BOOST_PP_SEQ_SPLIT_462 +# define BOOST_PP_SEQ_SPLIT_464(x) (x) BOOST_PP_SEQ_SPLIT_463 +# define BOOST_PP_SEQ_SPLIT_465(x) (x) BOOST_PP_SEQ_SPLIT_464 +# define BOOST_PP_SEQ_SPLIT_466(x) (x) BOOST_PP_SEQ_SPLIT_465 +# define BOOST_PP_SEQ_SPLIT_467(x) (x) BOOST_PP_SEQ_SPLIT_466 +# define BOOST_PP_SEQ_SPLIT_468(x) (x) BOOST_PP_SEQ_SPLIT_467 +# define BOOST_PP_SEQ_SPLIT_469(x) (x) BOOST_PP_SEQ_SPLIT_468 +# define BOOST_PP_SEQ_SPLIT_470(x) (x) BOOST_PP_SEQ_SPLIT_469 +# define BOOST_PP_SEQ_SPLIT_471(x) (x) BOOST_PP_SEQ_SPLIT_470 +# define BOOST_PP_SEQ_SPLIT_472(x) (x) BOOST_PP_SEQ_SPLIT_471 +# define BOOST_PP_SEQ_SPLIT_473(x) (x) BOOST_PP_SEQ_SPLIT_472 +# define BOOST_PP_SEQ_SPLIT_474(x) (x) BOOST_PP_SEQ_SPLIT_473 +# define BOOST_PP_SEQ_SPLIT_475(x) (x) BOOST_PP_SEQ_SPLIT_474 +# define BOOST_PP_SEQ_SPLIT_476(x) (x) BOOST_PP_SEQ_SPLIT_475 +# define BOOST_PP_SEQ_SPLIT_477(x) (x) BOOST_PP_SEQ_SPLIT_476 +# define BOOST_PP_SEQ_SPLIT_478(x) (x) BOOST_PP_SEQ_SPLIT_477 +# define BOOST_PP_SEQ_SPLIT_479(x) (x) BOOST_PP_SEQ_SPLIT_478 +# define BOOST_PP_SEQ_SPLIT_480(x) (x) BOOST_PP_SEQ_SPLIT_479 +# define BOOST_PP_SEQ_SPLIT_481(x) (x) BOOST_PP_SEQ_SPLIT_480 +# define BOOST_PP_SEQ_SPLIT_482(x) (x) BOOST_PP_SEQ_SPLIT_481 +# define BOOST_PP_SEQ_SPLIT_483(x) (x) BOOST_PP_SEQ_SPLIT_482 +# define BOOST_PP_SEQ_SPLIT_484(x) (x) BOOST_PP_SEQ_SPLIT_483 +# define BOOST_PP_SEQ_SPLIT_485(x) (x) BOOST_PP_SEQ_SPLIT_484 +# define BOOST_PP_SEQ_SPLIT_486(x) (x) BOOST_PP_SEQ_SPLIT_485 +# define BOOST_PP_SEQ_SPLIT_487(x) (x) BOOST_PP_SEQ_SPLIT_486 +# define BOOST_PP_SEQ_SPLIT_488(x) (x) BOOST_PP_SEQ_SPLIT_487 +# define BOOST_PP_SEQ_SPLIT_489(x) (x) BOOST_PP_SEQ_SPLIT_488 +# define BOOST_PP_SEQ_SPLIT_490(x) (x) BOOST_PP_SEQ_SPLIT_489 +# define BOOST_PP_SEQ_SPLIT_491(x) (x) BOOST_PP_SEQ_SPLIT_490 +# define BOOST_PP_SEQ_SPLIT_492(x) (x) BOOST_PP_SEQ_SPLIT_491 +# define BOOST_PP_SEQ_SPLIT_493(x) (x) BOOST_PP_SEQ_SPLIT_492 +# define BOOST_PP_SEQ_SPLIT_494(x) (x) BOOST_PP_SEQ_SPLIT_493 +# define BOOST_PP_SEQ_SPLIT_495(x) (x) BOOST_PP_SEQ_SPLIT_494 +# define BOOST_PP_SEQ_SPLIT_496(x) (x) BOOST_PP_SEQ_SPLIT_495 +# define BOOST_PP_SEQ_SPLIT_497(x) (x) BOOST_PP_SEQ_SPLIT_496 +# define BOOST_PP_SEQ_SPLIT_498(x) (x) BOOST_PP_SEQ_SPLIT_497 +# define BOOST_PP_SEQ_SPLIT_499(x) (x) BOOST_PP_SEQ_SPLIT_498 +# define BOOST_PP_SEQ_SPLIT_500(x) (x) BOOST_PP_SEQ_SPLIT_499 +# define BOOST_PP_SEQ_SPLIT_501(x) (x) BOOST_PP_SEQ_SPLIT_500 +# define BOOST_PP_SEQ_SPLIT_502(x) (x) BOOST_PP_SEQ_SPLIT_501 +# define BOOST_PP_SEQ_SPLIT_503(x) (x) BOOST_PP_SEQ_SPLIT_502 +# define BOOST_PP_SEQ_SPLIT_504(x) (x) BOOST_PP_SEQ_SPLIT_503 +# define BOOST_PP_SEQ_SPLIT_505(x) (x) BOOST_PP_SEQ_SPLIT_504 +# define BOOST_PP_SEQ_SPLIT_506(x) (x) BOOST_PP_SEQ_SPLIT_505 +# define BOOST_PP_SEQ_SPLIT_507(x) (x) BOOST_PP_SEQ_SPLIT_506 +# define BOOST_PP_SEQ_SPLIT_508(x) (x) BOOST_PP_SEQ_SPLIT_507 +# define BOOST_PP_SEQ_SPLIT_509(x) (x) BOOST_PP_SEQ_SPLIT_508 +# define BOOST_PP_SEQ_SPLIT_510(x) (x) BOOST_PP_SEQ_SPLIT_509 +# define BOOST_PP_SEQ_SPLIT_511(x) (x) BOOST_PP_SEQ_SPLIT_510 +# define BOOST_PP_SEQ_SPLIT_512(x) (x) BOOST_PP_SEQ_SPLIT_511 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/detail/split.hpp b/src/boost/boost/preprocessor/seq/detail/split.hpp index ada485e9f..749dcc056 100644 --- a/src/boost/boost/preprocessor/seq/detail/split.hpp +++ b/src/boost/boost/preprocessor/seq/detail/split.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # ifndef BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_HPP @@ -24,6 +26,8 @@ # define BOOST_PP_SEQ_SPLIT_D(n, seq) (BOOST_PP_SEQ_SPLIT_ ## n ## seq) # endif # +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # define BOOST_PP_SEQ_SPLIT_1(x) (x), # define BOOST_PP_SEQ_SPLIT_2(x) (x) BOOST_PP_SEQ_SPLIT_1 # define BOOST_PP_SEQ_SPLIT_3(x) (x) BOOST_PP_SEQ_SPLIT_2 @@ -281,4 +285,23 @@ # define BOOST_PP_SEQ_SPLIT_255(x) (x) BOOST_PP_SEQ_SPLIT_254 # define BOOST_PP_SEQ_SPLIT_256(x) (x) BOOST_PP_SEQ_SPLIT_255 # +# else +# +# include +# +# if BOOST_PP_LIMIT_SEQ == 256 +# include +# elif BOOST_PP_LIMIT_SEQ == 512 +# include +# include +# elif BOOST_PP_LIMIT_SEQ == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_SEQ limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/seq/elem.hpp b/src/boost/boost/preprocessor/seq/elem.hpp index 16c22559e..e96d37eb3 100644 --- a/src/boost/boost/preprocessor/seq/elem.hpp +++ b/src/boost/boost/preprocessor/seq/elem.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # ifndef BOOST_PREPROCESSOR_SEQ_ELEM_HPP @@ -44,6 +46,8 @@ # define BOOST_PP_SEQ_ELEM_III(x, _) x # endif # +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # define BOOST_PP_SEQ_ELEM_0(x) x, BOOST_PP_NIL # define BOOST_PP_SEQ_ELEM_1(_) BOOST_PP_SEQ_ELEM_0 # define BOOST_PP_SEQ_ELEM_2(_) BOOST_PP_SEQ_ELEM_1 @@ -301,4 +305,23 @@ # define BOOST_PP_SEQ_ELEM_254(_) BOOST_PP_SEQ_ELEM_253 # define BOOST_PP_SEQ_ELEM_255(_) BOOST_PP_SEQ_ELEM_254 # +# else +# +# include +# +# if BOOST_PP_LIMIT_SEQ == 256 +# include +# elif BOOST_PP_LIMIT_SEQ == 512 +# include +# include +# elif BOOST_PP_LIMIT_SEQ == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_SEQ limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/seq/enum.hpp b/src/boost/boost/preprocessor/seq/enum.hpp index b3a9f1e3a..5ee355694 100644 --- a/src/boost/boost/preprocessor/seq/enum.hpp +++ b/src/boost/boost/preprocessor/seq/enum.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # ifndef BOOST_PREPROCESSOR_SEQ_ENUM_HPP @@ -28,6 +30,8 @@ # define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq # endif # +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # define BOOST_PP_SEQ_ENUM_1(x) x # define BOOST_PP_SEQ_ENUM_2(x) x, BOOST_PP_SEQ_ENUM_1 # define BOOST_PP_SEQ_ENUM_3(x) x, BOOST_PP_SEQ_ENUM_2 @@ -285,4 +289,23 @@ # define BOOST_PP_SEQ_ENUM_255(x) x, BOOST_PP_SEQ_ENUM_254 # define BOOST_PP_SEQ_ENUM_256(x) x, BOOST_PP_SEQ_ENUM_255 # +# else +# +# include +# +# if BOOST_PP_LIMIT_SEQ == 256 +# include +# elif BOOST_PP_LIMIT_SEQ == 512 +# include +# include +# elif BOOST_PP_LIMIT_SEQ == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_SEQ limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/seq/fold_left.hpp b/src/boost/boost/preprocessor/seq/fold_left.hpp index ea05882b9..0e941afde 100644 --- a/src/boost/boost/preprocessor/seq/fold_left.hpp +++ b/src/boost/boost/preprocessor/seq/fold_left.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # ifndef BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP @@ -26,6 +28,10 @@ # define BOOST_PP_SEQ_FOLD_LEFT(op, state, seq) ... # endif # +# include +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256)) # define BOOST_PP_SEQ_FOLD_LEFT_P(n) BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_CHECK_, BOOST_PP_SEQ_FOLD_LEFT_I_ ## n(BOOST_PP_SEQ_FOLD_LEFT_O, BOOST_PP_NIL, (nil), 1)) # define BOOST_PP_SEQ_FOLD_LEFT_O(s, st, _) st @@ -1067,4 +1073,50 @@ # define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) # endif # +# else +# +# include +# +# if BOOST_PP_LIMIT_SEQ == 256 +# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))) +# elif BOOST_PP_LIMIT_SEQ == 512 +# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 512))) +# elif BOOST_PP_LIMIT_SEQ == 1024 +# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 1024))) +# else +# error Incorrect value for the BOOST_PP_LIMIT_SEQ limit +# endif +# +# define BOOST_PP_SEQ_FOLD_LEFT_P(n) BOOST_PP_SEQ_FOLD_LEFT_P_DEC(BOOST_PP_DEC(n)) +# define BOOST_PP_SEQ_FOLD_LEFT_P_DEC(n) BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_CHECK_, BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_I_,n)(BOOST_PP_SEQ_FOLD_LEFT_O, BOOST_PP_NIL, (nil), 1)) +# define BOOST_PP_SEQ_FOLD_LEFT_O(s, st, _) st +# +# if BOOST_PP_LIMIT_SEQ == 256 +# define BOOST_PP_SEQ_FOLD_LEFT_257(op, st, ss) BOOST_PP_ERROR(0x0005) +# define BOOST_PP_SEQ_FOLD_LEFT_I_257(op, st, ss, sz) BOOST_PP_ERROR(0x0005) +# elif BOOST_PP_LIMIT_SEQ == 512 +# define BOOST_PP_SEQ_FOLD_LEFT_513(op, st, ss) BOOST_PP_ERROR(0x0005) +# define BOOST_PP_SEQ_FOLD_LEFT_I_513(op, st, ss, sz) BOOST_PP_ERROR(0x0005) +# elif BOOST_PP_LIMIT_SEQ == 1024 +# define BOOST_PP_SEQ_FOLD_LEFT_1025(op, st, ss) BOOST_PP_ERROR(0x0005) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1025(op, st, ss, sz) BOOST_PP_ERROR(0x0005) +# endif +# +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_NIL 1 +# +# define BOOST_PP_SEQ_FOLD_LEFT_F(op, st, ss, sz) st +# +# if BOOST_PP_LIMIT_SEQ == 256 +# include +# elif BOOST_PP_LIMIT_SEQ == 512 +# include +# include +# elif BOOST_PP_LIMIT_SEQ == 1024 +# include +# include +# include +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/seq/for_each_i.hpp b/src/boost/boost/preprocessor/seq/for_each_i.hpp index 0f6355943..c87e8e9d0 100644 --- a/src/boost/boost/preprocessor/seq/for_each_i.hpp +++ b/src/boost/boost/preprocessor/seq/for_each_i.hpp @@ -37,13 +37,13 @@ # define BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY(macro, data, seq) # # define BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ - BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ - BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY \ - ) \ - (macro, data, seq) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ + BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ + BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY \ + ) \ + (macro, data, seq) \ /**/ # # define BOOST_PP_SEQ_FOR_EACH_I_P(r, x) BOOST_PP_TUPLE_ELEM(5, 4, x) @@ -55,22 +55,22 @@ # endif # # define BOOST_PP_SEQ_FOR_EACH_I_O_I(macro, data, seq, i, sz) \ - BOOST_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, BOOST_PP_DEC(sz)) \ + BOOST_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, BOOST_PP_DEC(sz)) \ /**/ # define BOOST_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, sz) \ - ( \ - macro, \ - data, \ - BOOST_PP_IF \ - ( \ - sz, \ - BOOST_PP_SEQ_FOR_EACH_I_O_I_TAIL, \ - BOOST_PP_SEQ_FOR_EACH_I_O_I_NIL \ - ) \ - (seq), \ - BOOST_PP_INC(i), \ - sz \ - ) \ + ( \ + macro, \ + data, \ + BOOST_PP_IF \ + ( \ + sz, \ + BOOST_PP_SEQ_FOR_EACH_I_O_I_TAIL, \ + BOOST_PP_SEQ_FOR_EACH_I_O_I_NIL \ + ) \ + (seq), \ + BOOST_PP_INC(i), \ + sz \ + ) \ /**/ # define BOOST_PP_SEQ_FOR_EACH_I_O_I_TAIL(seq) BOOST_PP_SEQ_TAIL(seq) # define BOOST_PP_SEQ_FOR_EACH_I_O_I_NIL(seq) BOOST_PP_NIL @@ -97,13 +97,13 @@ # define BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY(r, macro, data, seq) # # define BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq) \ - BOOST_PP_IIF \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ - BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC, \ - BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY \ - ) \ - (r, macro, data, seq) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ + BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC, \ + BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY \ + ) \ + (r, macro, data, seq) \ /**/ # # endif diff --git a/src/boost/boost/preprocessor/seq/limits/elem_1024.hpp b/src/boost/boost/preprocessor/seq/limits/elem_1024.hpp new file mode 100644 index 000000000..475ad1690 --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/elem_1024.hpp @@ -0,0 +1,530 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_SEQ_ELEM_1024_HPP +# define BOOST_PREPROCESSOR_SEQ_ELEM_1024_HPP +# +# define BOOST_PP_SEQ_ELEM_512(_) BOOST_PP_SEQ_ELEM_511 +# define BOOST_PP_SEQ_ELEM_513(_) BOOST_PP_SEQ_ELEM_512 +# define BOOST_PP_SEQ_ELEM_514(_) BOOST_PP_SEQ_ELEM_513 +# define BOOST_PP_SEQ_ELEM_515(_) BOOST_PP_SEQ_ELEM_514 +# define BOOST_PP_SEQ_ELEM_516(_) BOOST_PP_SEQ_ELEM_515 +# define BOOST_PP_SEQ_ELEM_517(_) BOOST_PP_SEQ_ELEM_516 +# define BOOST_PP_SEQ_ELEM_518(_) BOOST_PP_SEQ_ELEM_517 +# define BOOST_PP_SEQ_ELEM_519(_) BOOST_PP_SEQ_ELEM_518 +# define BOOST_PP_SEQ_ELEM_520(_) BOOST_PP_SEQ_ELEM_519 +# define BOOST_PP_SEQ_ELEM_521(_) BOOST_PP_SEQ_ELEM_520 +# define BOOST_PP_SEQ_ELEM_522(_) BOOST_PP_SEQ_ELEM_521 +# define BOOST_PP_SEQ_ELEM_523(_) BOOST_PP_SEQ_ELEM_522 +# define BOOST_PP_SEQ_ELEM_524(_) BOOST_PP_SEQ_ELEM_523 +# define BOOST_PP_SEQ_ELEM_525(_) BOOST_PP_SEQ_ELEM_524 +# define BOOST_PP_SEQ_ELEM_526(_) BOOST_PP_SEQ_ELEM_525 +# define BOOST_PP_SEQ_ELEM_527(_) BOOST_PP_SEQ_ELEM_526 +# define BOOST_PP_SEQ_ELEM_528(_) BOOST_PP_SEQ_ELEM_527 +# define BOOST_PP_SEQ_ELEM_529(_) BOOST_PP_SEQ_ELEM_528 +# define BOOST_PP_SEQ_ELEM_530(_) BOOST_PP_SEQ_ELEM_529 +# define BOOST_PP_SEQ_ELEM_531(_) BOOST_PP_SEQ_ELEM_530 +# define BOOST_PP_SEQ_ELEM_532(_) BOOST_PP_SEQ_ELEM_531 +# define BOOST_PP_SEQ_ELEM_533(_) BOOST_PP_SEQ_ELEM_532 +# define BOOST_PP_SEQ_ELEM_534(_) BOOST_PP_SEQ_ELEM_533 +# define BOOST_PP_SEQ_ELEM_535(_) BOOST_PP_SEQ_ELEM_534 +# define BOOST_PP_SEQ_ELEM_536(_) BOOST_PP_SEQ_ELEM_535 +# define BOOST_PP_SEQ_ELEM_537(_) BOOST_PP_SEQ_ELEM_536 +# define BOOST_PP_SEQ_ELEM_538(_) BOOST_PP_SEQ_ELEM_537 +# define BOOST_PP_SEQ_ELEM_539(_) BOOST_PP_SEQ_ELEM_538 +# define BOOST_PP_SEQ_ELEM_540(_) BOOST_PP_SEQ_ELEM_539 +# define BOOST_PP_SEQ_ELEM_541(_) BOOST_PP_SEQ_ELEM_540 +# define BOOST_PP_SEQ_ELEM_542(_) BOOST_PP_SEQ_ELEM_541 +# define BOOST_PP_SEQ_ELEM_543(_) BOOST_PP_SEQ_ELEM_542 +# define BOOST_PP_SEQ_ELEM_544(_) BOOST_PP_SEQ_ELEM_543 +# define BOOST_PP_SEQ_ELEM_545(_) BOOST_PP_SEQ_ELEM_544 +# define BOOST_PP_SEQ_ELEM_546(_) BOOST_PP_SEQ_ELEM_545 +# define BOOST_PP_SEQ_ELEM_547(_) BOOST_PP_SEQ_ELEM_546 +# define BOOST_PP_SEQ_ELEM_548(_) BOOST_PP_SEQ_ELEM_547 +# define BOOST_PP_SEQ_ELEM_549(_) BOOST_PP_SEQ_ELEM_548 +# define BOOST_PP_SEQ_ELEM_550(_) BOOST_PP_SEQ_ELEM_549 +# define BOOST_PP_SEQ_ELEM_551(_) BOOST_PP_SEQ_ELEM_550 +# define BOOST_PP_SEQ_ELEM_552(_) BOOST_PP_SEQ_ELEM_551 +# define BOOST_PP_SEQ_ELEM_553(_) BOOST_PP_SEQ_ELEM_552 +# define BOOST_PP_SEQ_ELEM_554(_) BOOST_PP_SEQ_ELEM_553 +# define BOOST_PP_SEQ_ELEM_555(_) BOOST_PP_SEQ_ELEM_554 +# define BOOST_PP_SEQ_ELEM_556(_) BOOST_PP_SEQ_ELEM_555 +# define BOOST_PP_SEQ_ELEM_557(_) BOOST_PP_SEQ_ELEM_556 +# define BOOST_PP_SEQ_ELEM_558(_) BOOST_PP_SEQ_ELEM_557 +# define BOOST_PP_SEQ_ELEM_559(_) BOOST_PP_SEQ_ELEM_558 +# define BOOST_PP_SEQ_ELEM_560(_) BOOST_PP_SEQ_ELEM_559 +# define BOOST_PP_SEQ_ELEM_561(_) BOOST_PP_SEQ_ELEM_560 +# define BOOST_PP_SEQ_ELEM_562(_) BOOST_PP_SEQ_ELEM_561 +# define BOOST_PP_SEQ_ELEM_563(_) BOOST_PP_SEQ_ELEM_562 +# define BOOST_PP_SEQ_ELEM_564(_) BOOST_PP_SEQ_ELEM_563 +# define BOOST_PP_SEQ_ELEM_565(_) BOOST_PP_SEQ_ELEM_564 +# define BOOST_PP_SEQ_ELEM_566(_) BOOST_PP_SEQ_ELEM_565 +# define BOOST_PP_SEQ_ELEM_567(_) BOOST_PP_SEQ_ELEM_566 +# define BOOST_PP_SEQ_ELEM_568(_) BOOST_PP_SEQ_ELEM_567 +# define BOOST_PP_SEQ_ELEM_569(_) BOOST_PP_SEQ_ELEM_568 +# define BOOST_PP_SEQ_ELEM_570(_) BOOST_PP_SEQ_ELEM_569 +# define BOOST_PP_SEQ_ELEM_571(_) BOOST_PP_SEQ_ELEM_570 +# define BOOST_PP_SEQ_ELEM_572(_) BOOST_PP_SEQ_ELEM_571 +# define BOOST_PP_SEQ_ELEM_573(_) BOOST_PP_SEQ_ELEM_572 +# define BOOST_PP_SEQ_ELEM_574(_) BOOST_PP_SEQ_ELEM_573 +# define BOOST_PP_SEQ_ELEM_575(_) BOOST_PP_SEQ_ELEM_574 +# define BOOST_PP_SEQ_ELEM_576(_) BOOST_PP_SEQ_ELEM_575 +# define BOOST_PP_SEQ_ELEM_577(_) BOOST_PP_SEQ_ELEM_576 +# define BOOST_PP_SEQ_ELEM_578(_) BOOST_PP_SEQ_ELEM_577 +# define BOOST_PP_SEQ_ELEM_579(_) BOOST_PP_SEQ_ELEM_578 +# define BOOST_PP_SEQ_ELEM_580(_) BOOST_PP_SEQ_ELEM_579 +# define BOOST_PP_SEQ_ELEM_581(_) BOOST_PP_SEQ_ELEM_580 +# define BOOST_PP_SEQ_ELEM_582(_) BOOST_PP_SEQ_ELEM_581 +# define BOOST_PP_SEQ_ELEM_583(_) BOOST_PP_SEQ_ELEM_582 +# define BOOST_PP_SEQ_ELEM_584(_) BOOST_PP_SEQ_ELEM_583 +# define BOOST_PP_SEQ_ELEM_585(_) BOOST_PP_SEQ_ELEM_584 +# define BOOST_PP_SEQ_ELEM_586(_) BOOST_PP_SEQ_ELEM_585 +# define BOOST_PP_SEQ_ELEM_587(_) BOOST_PP_SEQ_ELEM_586 +# define BOOST_PP_SEQ_ELEM_588(_) BOOST_PP_SEQ_ELEM_587 +# define BOOST_PP_SEQ_ELEM_589(_) BOOST_PP_SEQ_ELEM_588 +# define BOOST_PP_SEQ_ELEM_590(_) BOOST_PP_SEQ_ELEM_589 +# define BOOST_PP_SEQ_ELEM_591(_) BOOST_PP_SEQ_ELEM_590 +# define BOOST_PP_SEQ_ELEM_592(_) BOOST_PP_SEQ_ELEM_591 +# define BOOST_PP_SEQ_ELEM_593(_) BOOST_PP_SEQ_ELEM_592 +# define BOOST_PP_SEQ_ELEM_594(_) BOOST_PP_SEQ_ELEM_593 +# define BOOST_PP_SEQ_ELEM_595(_) BOOST_PP_SEQ_ELEM_594 +# define BOOST_PP_SEQ_ELEM_596(_) BOOST_PP_SEQ_ELEM_595 +# define BOOST_PP_SEQ_ELEM_597(_) BOOST_PP_SEQ_ELEM_596 +# define BOOST_PP_SEQ_ELEM_598(_) BOOST_PP_SEQ_ELEM_597 +# define BOOST_PP_SEQ_ELEM_599(_) BOOST_PP_SEQ_ELEM_598 +# define BOOST_PP_SEQ_ELEM_600(_) BOOST_PP_SEQ_ELEM_599 +# define BOOST_PP_SEQ_ELEM_601(_) BOOST_PP_SEQ_ELEM_600 +# define BOOST_PP_SEQ_ELEM_602(_) BOOST_PP_SEQ_ELEM_601 +# define BOOST_PP_SEQ_ELEM_603(_) BOOST_PP_SEQ_ELEM_602 +# define BOOST_PP_SEQ_ELEM_604(_) BOOST_PP_SEQ_ELEM_603 +# define BOOST_PP_SEQ_ELEM_605(_) BOOST_PP_SEQ_ELEM_604 +# define BOOST_PP_SEQ_ELEM_606(_) BOOST_PP_SEQ_ELEM_605 +# define BOOST_PP_SEQ_ELEM_607(_) BOOST_PP_SEQ_ELEM_606 +# define BOOST_PP_SEQ_ELEM_608(_) BOOST_PP_SEQ_ELEM_607 +# define BOOST_PP_SEQ_ELEM_609(_) BOOST_PP_SEQ_ELEM_608 +# define BOOST_PP_SEQ_ELEM_610(_) BOOST_PP_SEQ_ELEM_609 +# define BOOST_PP_SEQ_ELEM_611(_) BOOST_PP_SEQ_ELEM_610 +# define BOOST_PP_SEQ_ELEM_612(_) BOOST_PP_SEQ_ELEM_611 +# define BOOST_PP_SEQ_ELEM_613(_) BOOST_PP_SEQ_ELEM_612 +# define BOOST_PP_SEQ_ELEM_614(_) BOOST_PP_SEQ_ELEM_613 +# define BOOST_PP_SEQ_ELEM_615(_) BOOST_PP_SEQ_ELEM_614 +# define BOOST_PP_SEQ_ELEM_616(_) BOOST_PP_SEQ_ELEM_615 +# define BOOST_PP_SEQ_ELEM_617(_) BOOST_PP_SEQ_ELEM_616 +# define BOOST_PP_SEQ_ELEM_618(_) BOOST_PP_SEQ_ELEM_617 +# define BOOST_PP_SEQ_ELEM_619(_) BOOST_PP_SEQ_ELEM_618 +# define BOOST_PP_SEQ_ELEM_620(_) BOOST_PP_SEQ_ELEM_619 +# define BOOST_PP_SEQ_ELEM_621(_) BOOST_PP_SEQ_ELEM_620 +# define BOOST_PP_SEQ_ELEM_622(_) BOOST_PP_SEQ_ELEM_621 +# define BOOST_PP_SEQ_ELEM_623(_) BOOST_PP_SEQ_ELEM_622 +# define BOOST_PP_SEQ_ELEM_624(_) BOOST_PP_SEQ_ELEM_623 +# define BOOST_PP_SEQ_ELEM_625(_) BOOST_PP_SEQ_ELEM_624 +# define BOOST_PP_SEQ_ELEM_626(_) BOOST_PP_SEQ_ELEM_625 +# define BOOST_PP_SEQ_ELEM_627(_) BOOST_PP_SEQ_ELEM_626 +# define BOOST_PP_SEQ_ELEM_628(_) BOOST_PP_SEQ_ELEM_627 +# define BOOST_PP_SEQ_ELEM_629(_) BOOST_PP_SEQ_ELEM_628 +# define BOOST_PP_SEQ_ELEM_630(_) BOOST_PP_SEQ_ELEM_629 +# define BOOST_PP_SEQ_ELEM_631(_) BOOST_PP_SEQ_ELEM_630 +# define BOOST_PP_SEQ_ELEM_632(_) BOOST_PP_SEQ_ELEM_631 +# define BOOST_PP_SEQ_ELEM_633(_) BOOST_PP_SEQ_ELEM_632 +# define BOOST_PP_SEQ_ELEM_634(_) BOOST_PP_SEQ_ELEM_633 +# define BOOST_PP_SEQ_ELEM_635(_) BOOST_PP_SEQ_ELEM_634 +# define BOOST_PP_SEQ_ELEM_636(_) BOOST_PP_SEQ_ELEM_635 +# define BOOST_PP_SEQ_ELEM_637(_) BOOST_PP_SEQ_ELEM_636 +# define BOOST_PP_SEQ_ELEM_638(_) BOOST_PP_SEQ_ELEM_637 +# define BOOST_PP_SEQ_ELEM_639(_) BOOST_PP_SEQ_ELEM_638 +# define BOOST_PP_SEQ_ELEM_640(_) BOOST_PP_SEQ_ELEM_639 +# define BOOST_PP_SEQ_ELEM_641(_) BOOST_PP_SEQ_ELEM_640 +# define BOOST_PP_SEQ_ELEM_642(_) BOOST_PP_SEQ_ELEM_641 +# define BOOST_PP_SEQ_ELEM_643(_) BOOST_PP_SEQ_ELEM_642 +# define BOOST_PP_SEQ_ELEM_644(_) BOOST_PP_SEQ_ELEM_643 +# define BOOST_PP_SEQ_ELEM_645(_) BOOST_PP_SEQ_ELEM_644 +# define BOOST_PP_SEQ_ELEM_646(_) BOOST_PP_SEQ_ELEM_645 +# define BOOST_PP_SEQ_ELEM_647(_) BOOST_PP_SEQ_ELEM_646 +# define BOOST_PP_SEQ_ELEM_648(_) BOOST_PP_SEQ_ELEM_647 +# define BOOST_PP_SEQ_ELEM_649(_) BOOST_PP_SEQ_ELEM_648 +# define BOOST_PP_SEQ_ELEM_650(_) BOOST_PP_SEQ_ELEM_649 +# define BOOST_PP_SEQ_ELEM_651(_) BOOST_PP_SEQ_ELEM_650 +# define BOOST_PP_SEQ_ELEM_652(_) BOOST_PP_SEQ_ELEM_651 +# define BOOST_PP_SEQ_ELEM_653(_) BOOST_PP_SEQ_ELEM_652 +# define BOOST_PP_SEQ_ELEM_654(_) BOOST_PP_SEQ_ELEM_653 +# define BOOST_PP_SEQ_ELEM_655(_) BOOST_PP_SEQ_ELEM_654 +# define BOOST_PP_SEQ_ELEM_656(_) BOOST_PP_SEQ_ELEM_655 +# define BOOST_PP_SEQ_ELEM_657(_) BOOST_PP_SEQ_ELEM_656 +# define BOOST_PP_SEQ_ELEM_658(_) BOOST_PP_SEQ_ELEM_657 +# define BOOST_PP_SEQ_ELEM_659(_) BOOST_PP_SEQ_ELEM_658 +# define BOOST_PP_SEQ_ELEM_660(_) BOOST_PP_SEQ_ELEM_659 +# define BOOST_PP_SEQ_ELEM_661(_) BOOST_PP_SEQ_ELEM_660 +# define BOOST_PP_SEQ_ELEM_662(_) BOOST_PP_SEQ_ELEM_661 +# define BOOST_PP_SEQ_ELEM_663(_) BOOST_PP_SEQ_ELEM_662 +# define BOOST_PP_SEQ_ELEM_664(_) BOOST_PP_SEQ_ELEM_663 +# define BOOST_PP_SEQ_ELEM_665(_) BOOST_PP_SEQ_ELEM_664 +# define BOOST_PP_SEQ_ELEM_666(_) BOOST_PP_SEQ_ELEM_665 +# define BOOST_PP_SEQ_ELEM_667(_) BOOST_PP_SEQ_ELEM_666 +# define BOOST_PP_SEQ_ELEM_668(_) BOOST_PP_SEQ_ELEM_667 +# define BOOST_PP_SEQ_ELEM_669(_) BOOST_PP_SEQ_ELEM_668 +# define BOOST_PP_SEQ_ELEM_670(_) BOOST_PP_SEQ_ELEM_669 +# define BOOST_PP_SEQ_ELEM_671(_) BOOST_PP_SEQ_ELEM_670 +# define BOOST_PP_SEQ_ELEM_672(_) BOOST_PP_SEQ_ELEM_671 +# define BOOST_PP_SEQ_ELEM_673(_) BOOST_PP_SEQ_ELEM_672 +# define BOOST_PP_SEQ_ELEM_674(_) BOOST_PP_SEQ_ELEM_673 +# define BOOST_PP_SEQ_ELEM_675(_) BOOST_PP_SEQ_ELEM_674 +# define BOOST_PP_SEQ_ELEM_676(_) BOOST_PP_SEQ_ELEM_675 +# define BOOST_PP_SEQ_ELEM_677(_) BOOST_PP_SEQ_ELEM_676 +# define BOOST_PP_SEQ_ELEM_678(_) BOOST_PP_SEQ_ELEM_677 +# define BOOST_PP_SEQ_ELEM_679(_) BOOST_PP_SEQ_ELEM_678 +# define BOOST_PP_SEQ_ELEM_680(_) BOOST_PP_SEQ_ELEM_679 +# define BOOST_PP_SEQ_ELEM_681(_) BOOST_PP_SEQ_ELEM_680 +# define BOOST_PP_SEQ_ELEM_682(_) BOOST_PP_SEQ_ELEM_681 +# define BOOST_PP_SEQ_ELEM_683(_) BOOST_PP_SEQ_ELEM_682 +# define BOOST_PP_SEQ_ELEM_684(_) BOOST_PP_SEQ_ELEM_683 +# define BOOST_PP_SEQ_ELEM_685(_) BOOST_PP_SEQ_ELEM_684 +# define BOOST_PP_SEQ_ELEM_686(_) BOOST_PP_SEQ_ELEM_685 +# define BOOST_PP_SEQ_ELEM_687(_) BOOST_PP_SEQ_ELEM_686 +# define BOOST_PP_SEQ_ELEM_688(_) BOOST_PP_SEQ_ELEM_687 +# define BOOST_PP_SEQ_ELEM_689(_) BOOST_PP_SEQ_ELEM_688 +# define BOOST_PP_SEQ_ELEM_690(_) BOOST_PP_SEQ_ELEM_689 +# define BOOST_PP_SEQ_ELEM_691(_) BOOST_PP_SEQ_ELEM_690 +# define BOOST_PP_SEQ_ELEM_692(_) BOOST_PP_SEQ_ELEM_691 +# define BOOST_PP_SEQ_ELEM_693(_) BOOST_PP_SEQ_ELEM_692 +# define BOOST_PP_SEQ_ELEM_694(_) BOOST_PP_SEQ_ELEM_693 +# define BOOST_PP_SEQ_ELEM_695(_) BOOST_PP_SEQ_ELEM_694 +# define BOOST_PP_SEQ_ELEM_696(_) BOOST_PP_SEQ_ELEM_695 +# define BOOST_PP_SEQ_ELEM_697(_) BOOST_PP_SEQ_ELEM_696 +# define BOOST_PP_SEQ_ELEM_698(_) BOOST_PP_SEQ_ELEM_697 +# define BOOST_PP_SEQ_ELEM_699(_) BOOST_PP_SEQ_ELEM_698 +# define BOOST_PP_SEQ_ELEM_700(_) BOOST_PP_SEQ_ELEM_699 +# define BOOST_PP_SEQ_ELEM_701(_) BOOST_PP_SEQ_ELEM_700 +# define BOOST_PP_SEQ_ELEM_702(_) BOOST_PP_SEQ_ELEM_701 +# define BOOST_PP_SEQ_ELEM_703(_) BOOST_PP_SEQ_ELEM_702 +# define BOOST_PP_SEQ_ELEM_704(_) BOOST_PP_SEQ_ELEM_703 +# define BOOST_PP_SEQ_ELEM_705(_) BOOST_PP_SEQ_ELEM_704 +# define BOOST_PP_SEQ_ELEM_706(_) BOOST_PP_SEQ_ELEM_705 +# define BOOST_PP_SEQ_ELEM_707(_) BOOST_PP_SEQ_ELEM_706 +# define BOOST_PP_SEQ_ELEM_708(_) BOOST_PP_SEQ_ELEM_707 +# define BOOST_PP_SEQ_ELEM_709(_) BOOST_PP_SEQ_ELEM_708 +# define BOOST_PP_SEQ_ELEM_710(_) BOOST_PP_SEQ_ELEM_709 +# define BOOST_PP_SEQ_ELEM_711(_) BOOST_PP_SEQ_ELEM_710 +# define BOOST_PP_SEQ_ELEM_712(_) BOOST_PP_SEQ_ELEM_711 +# define BOOST_PP_SEQ_ELEM_713(_) BOOST_PP_SEQ_ELEM_712 +# define BOOST_PP_SEQ_ELEM_714(_) BOOST_PP_SEQ_ELEM_713 +# define BOOST_PP_SEQ_ELEM_715(_) BOOST_PP_SEQ_ELEM_714 +# define BOOST_PP_SEQ_ELEM_716(_) BOOST_PP_SEQ_ELEM_715 +# define BOOST_PP_SEQ_ELEM_717(_) BOOST_PP_SEQ_ELEM_716 +# define BOOST_PP_SEQ_ELEM_718(_) BOOST_PP_SEQ_ELEM_717 +# define BOOST_PP_SEQ_ELEM_719(_) BOOST_PP_SEQ_ELEM_718 +# define BOOST_PP_SEQ_ELEM_720(_) BOOST_PP_SEQ_ELEM_719 +# define BOOST_PP_SEQ_ELEM_721(_) BOOST_PP_SEQ_ELEM_720 +# define BOOST_PP_SEQ_ELEM_722(_) BOOST_PP_SEQ_ELEM_721 +# define BOOST_PP_SEQ_ELEM_723(_) BOOST_PP_SEQ_ELEM_722 +# define BOOST_PP_SEQ_ELEM_724(_) BOOST_PP_SEQ_ELEM_723 +# define BOOST_PP_SEQ_ELEM_725(_) BOOST_PP_SEQ_ELEM_724 +# define BOOST_PP_SEQ_ELEM_726(_) BOOST_PP_SEQ_ELEM_725 +# define BOOST_PP_SEQ_ELEM_727(_) BOOST_PP_SEQ_ELEM_726 +# define BOOST_PP_SEQ_ELEM_728(_) BOOST_PP_SEQ_ELEM_727 +# define BOOST_PP_SEQ_ELEM_729(_) BOOST_PP_SEQ_ELEM_728 +# define BOOST_PP_SEQ_ELEM_730(_) BOOST_PP_SEQ_ELEM_729 +# define BOOST_PP_SEQ_ELEM_731(_) BOOST_PP_SEQ_ELEM_730 +# define BOOST_PP_SEQ_ELEM_732(_) BOOST_PP_SEQ_ELEM_731 +# define BOOST_PP_SEQ_ELEM_733(_) BOOST_PP_SEQ_ELEM_732 +# define BOOST_PP_SEQ_ELEM_734(_) BOOST_PP_SEQ_ELEM_733 +# define BOOST_PP_SEQ_ELEM_735(_) BOOST_PP_SEQ_ELEM_734 +# define BOOST_PP_SEQ_ELEM_736(_) BOOST_PP_SEQ_ELEM_735 +# define BOOST_PP_SEQ_ELEM_737(_) BOOST_PP_SEQ_ELEM_736 +# define BOOST_PP_SEQ_ELEM_738(_) BOOST_PP_SEQ_ELEM_737 +# define BOOST_PP_SEQ_ELEM_739(_) BOOST_PP_SEQ_ELEM_738 +# define BOOST_PP_SEQ_ELEM_740(_) BOOST_PP_SEQ_ELEM_739 +# define BOOST_PP_SEQ_ELEM_741(_) BOOST_PP_SEQ_ELEM_740 +# define BOOST_PP_SEQ_ELEM_742(_) BOOST_PP_SEQ_ELEM_741 +# define BOOST_PP_SEQ_ELEM_743(_) BOOST_PP_SEQ_ELEM_742 +# define BOOST_PP_SEQ_ELEM_744(_) BOOST_PP_SEQ_ELEM_743 +# define BOOST_PP_SEQ_ELEM_745(_) BOOST_PP_SEQ_ELEM_744 +# define BOOST_PP_SEQ_ELEM_746(_) BOOST_PP_SEQ_ELEM_745 +# define BOOST_PP_SEQ_ELEM_747(_) BOOST_PP_SEQ_ELEM_746 +# define BOOST_PP_SEQ_ELEM_748(_) BOOST_PP_SEQ_ELEM_747 +# define BOOST_PP_SEQ_ELEM_749(_) BOOST_PP_SEQ_ELEM_748 +# define BOOST_PP_SEQ_ELEM_750(_) BOOST_PP_SEQ_ELEM_749 +# define BOOST_PP_SEQ_ELEM_751(_) BOOST_PP_SEQ_ELEM_750 +# define BOOST_PP_SEQ_ELEM_752(_) BOOST_PP_SEQ_ELEM_751 +# define BOOST_PP_SEQ_ELEM_753(_) BOOST_PP_SEQ_ELEM_752 +# define BOOST_PP_SEQ_ELEM_754(_) BOOST_PP_SEQ_ELEM_753 +# define BOOST_PP_SEQ_ELEM_755(_) BOOST_PP_SEQ_ELEM_754 +# define BOOST_PP_SEQ_ELEM_756(_) BOOST_PP_SEQ_ELEM_755 +# define BOOST_PP_SEQ_ELEM_757(_) BOOST_PP_SEQ_ELEM_756 +# define BOOST_PP_SEQ_ELEM_758(_) BOOST_PP_SEQ_ELEM_757 +# define BOOST_PP_SEQ_ELEM_759(_) BOOST_PP_SEQ_ELEM_758 +# define BOOST_PP_SEQ_ELEM_760(_) BOOST_PP_SEQ_ELEM_759 +# define BOOST_PP_SEQ_ELEM_761(_) BOOST_PP_SEQ_ELEM_760 +# define BOOST_PP_SEQ_ELEM_762(_) BOOST_PP_SEQ_ELEM_761 +# define BOOST_PP_SEQ_ELEM_763(_) BOOST_PP_SEQ_ELEM_762 +# define BOOST_PP_SEQ_ELEM_764(_) BOOST_PP_SEQ_ELEM_763 +# define BOOST_PP_SEQ_ELEM_765(_) BOOST_PP_SEQ_ELEM_764 +# define BOOST_PP_SEQ_ELEM_766(_) BOOST_PP_SEQ_ELEM_765 +# define BOOST_PP_SEQ_ELEM_767(_) BOOST_PP_SEQ_ELEM_766 +# define BOOST_PP_SEQ_ELEM_768(_) BOOST_PP_SEQ_ELEM_767 +# define BOOST_PP_SEQ_ELEM_769(_) BOOST_PP_SEQ_ELEM_768 +# define BOOST_PP_SEQ_ELEM_770(_) BOOST_PP_SEQ_ELEM_769 +# define BOOST_PP_SEQ_ELEM_771(_) BOOST_PP_SEQ_ELEM_770 +# define BOOST_PP_SEQ_ELEM_772(_) BOOST_PP_SEQ_ELEM_771 +# define BOOST_PP_SEQ_ELEM_773(_) BOOST_PP_SEQ_ELEM_772 +# define BOOST_PP_SEQ_ELEM_774(_) BOOST_PP_SEQ_ELEM_773 +# define BOOST_PP_SEQ_ELEM_775(_) BOOST_PP_SEQ_ELEM_774 +# define BOOST_PP_SEQ_ELEM_776(_) BOOST_PP_SEQ_ELEM_775 +# define BOOST_PP_SEQ_ELEM_777(_) BOOST_PP_SEQ_ELEM_776 +# define BOOST_PP_SEQ_ELEM_778(_) BOOST_PP_SEQ_ELEM_777 +# define BOOST_PP_SEQ_ELEM_779(_) BOOST_PP_SEQ_ELEM_778 +# define BOOST_PP_SEQ_ELEM_780(_) BOOST_PP_SEQ_ELEM_779 +# define BOOST_PP_SEQ_ELEM_781(_) BOOST_PP_SEQ_ELEM_780 +# define BOOST_PP_SEQ_ELEM_782(_) BOOST_PP_SEQ_ELEM_781 +# define BOOST_PP_SEQ_ELEM_783(_) BOOST_PP_SEQ_ELEM_782 +# define BOOST_PP_SEQ_ELEM_784(_) BOOST_PP_SEQ_ELEM_783 +# define BOOST_PP_SEQ_ELEM_785(_) BOOST_PP_SEQ_ELEM_784 +# define BOOST_PP_SEQ_ELEM_786(_) BOOST_PP_SEQ_ELEM_785 +# define BOOST_PP_SEQ_ELEM_787(_) BOOST_PP_SEQ_ELEM_786 +# define BOOST_PP_SEQ_ELEM_788(_) BOOST_PP_SEQ_ELEM_787 +# define BOOST_PP_SEQ_ELEM_789(_) BOOST_PP_SEQ_ELEM_788 +# define BOOST_PP_SEQ_ELEM_790(_) BOOST_PP_SEQ_ELEM_789 +# define BOOST_PP_SEQ_ELEM_791(_) BOOST_PP_SEQ_ELEM_790 +# define BOOST_PP_SEQ_ELEM_792(_) BOOST_PP_SEQ_ELEM_791 +# define BOOST_PP_SEQ_ELEM_793(_) BOOST_PP_SEQ_ELEM_792 +# define BOOST_PP_SEQ_ELEM_794(_) BOOST_PP_SEQ_ELEM_793 +# define BOOST_PP_SEQ_ELEM_795(_) BOOST_PP_SEQ_ELEM_794 +# define BOOST_PP_SEQ_ELEM_796(_) BOOST_PP_SEQ_ELEM_795 +# define BOOST_PP_SEQ_ELEM_797(_) BOOST_PP_SEQ_ELEM_796 +# define BOOST_PP_SEQ_ELEM_798(_) BOOST_PP_SEQ_ELEM_797 +# define BOOST_PP_SEQ_ELEM_799(_) BOOST_PP_SEQ_ELEM_798 +# define BOOST_PP_SEQ_ELEM_800(_) BOOST_PP_SEQ_ELEM_799 +# define BOOST_PP_SEQ_ELEM_801(_) BOOST_PP_SEQ_ELEM_800 +# define BOOST_PP_SEQ_ELEM_802(_) BOOST_PP_SEQ_ELEM_801 +# define BOOST_PP_SEQ_ELEM_803(_) BOOST_PP_SEQ_ELEM_802 +# define BOOST_PP_SEQ_ELEM_804(_) BOOST_PP_SEQ_ELEM_803 +# define BOOST_PP_SEQ_ELEM_805(_) BOOST_PP_SEQ_ELEM_804 +# define BOOST_PP_SEQ_ELEM_806(_) BOOST_PP_SEQ_ELEM_805 +# define BOOST_PP_SEQ_ELEM_807(_) BOOST_PP_SEQ_ELEM_806 +# define BOOST_PP_SEQ_ELEM_808(_) BOOST_PP_SEQ_ELEM_807 +# define BOOST_PP_SEQ_ELEM_809(_) BOOST_PP_SEQ_ELEM_808 +# define BOOST_PP_SEQ_ELEM_810(_) BOOST_PP_SEQ_ELEM_809 +# define BOOST_PP_SEQ_ELEM_811(_) BOOST_PP_SEQ_ELEM_810 +# define BOOST_PP_SEQ_ELEM_812(_) BOOST_PP_SEQ_ELEM_811 +# define BOOST_PP_SEQ_ELEM_813(_) BOOST_PP_SEQ_ELEM_812 +# define BOOST_PP_SEQ_ELEM_814(_) BOOST_PP_SEQ_ELEM_813 +# define BOOST_PP_SEQ_ELEM_815(_) BOOST_PP_SEQ_ELEM_814 +# define BOOST_PP_SEQ_ELEM_816(_) BOOST_PP_SEQ_ELEM_815 +# define BOOST_PP_SEQ_ELEM_817(_) BOOST_PP_SEQ_ELEM_816 +# define BOOST_PP_SEQ_ELEM_818(_) BOOST_PP_SEQ_ELEM_817 +# define BOOST_PP_SEQ_ELEM_819(_) BOOST_PP_SEQ_ELEM_818 +# define BOOST_PP_SEQ_ELEM_820(_) BOOST_PP_SEQ_ELEM_819 +# define BOOST_PP_SEQ_ELEM_821(_) BOOST_PP_SEQ_ELEM_820 +# define BOOST_PP_SEQ_ELEM_822(_) BOOST_PP_SEQ_ELEM_821 +# define BOOST_PP_SEQ_ELEM_823(_) BOOST_PP_SEQ_ELEM_822 +# define BOOST_PP_SEQ_ELEM_824(_) BOOST_PP_SEQ_ELEM_823 +# define BOOST_PP_SEQ_ELEM_825(_) BOOST_PP_SEQ_ELEM_824 +# define BOOST_PP_SEQ_ELEM_826(_) BOOST_PP_SEQ_ELEM_825 +# define BOOST_PP_SEQ_ELEM_827(_) BOOST_PP_SEQ_ELEM_826 +# define BOOST_PP_SEQ_ELEM_828(_) BOOST_PP_SEQ_ELEM_827 +# define BOOST_PP_SEQ_ELEM_829(_) BOOST_PP_SEQ_ELEM_828 +# define BOOST_PP_SEQ_ELEM_830(_) BOOST_PP_SEQ_ELEM_829 +# define BOOST_PP_SEQ_ELEM_831(_) BOOST_PP_SEQ_ELEM_830 +# define BOOST_PP_SEQ_ELEM_832(_) BOOST_PP_SEQ_ELEM_831 +# define BOOST_PP_SEQ_ELEM_833(_) BOOST_PP_SEQ_ELEM_832 +# define BOOST_PP_SEQ_ELEM_834(_) BOOST_PP_SEQ_ELEM_833 +# define BOOST_PP_SEQ_ELEM_835(_) BOOST_PP_SEQ_ELEM_834 +# define BOOST_PP_SEQ_ELEM_836(_) BOOST_PP_SEQ_ELEM_835 +# define BOOST_PP_SEQ_ELEM_837(_) BOOST_PP_SEQ_ELEM_836 +# define BOOST_PP_SEQ_ELEM_838(_) BOOST_PP_SEQ_ELEM_837 +# define BOOST_PP_SEQ_ELEM_839(_) BOOST_PP_SEQ_ELEM_838 +# define BOOST_PP_SEQ_ELEM_840(_) BOOST_PP_SEQ_ELEM_839 +# define BOOST_PP_SEQ_ELEM_841(_) BOOST_PP_SEQ_ELEM_840 +# define BOOST_PP_SEQ_ELEM_842(_) BOOST_PP_SEQ_ELEM_841 +# define BOOST_PP_SEQ_ELEM_843(_) BOOST_PP_SEQ_ELEM_842 +# define BOOST_PP_SEQ_ELEM_844(_) BOOST_PP_SEQ_ELEM_843 +# define BOOST_PP_SEQ_ELEM_845(_) BOOST_PP_SEQ_ELEM_844 +# define BOOST_PP_SEQ_ELEM_846(_) BOOST_PP_SEQ_ELEM_845 +# define BOOST_PP_SEQ_ELEM_847(_) BOOST_PP_SEQ_ELEM_846 +# define BOOST_PP_SEQ_ELEM_848(_) BOOST_PP_SEQ_ELEM_847 +# define BOOST_PP_SEQ_ELEM_849(_) BOOST_PP_SEQ_ELEM_848 +# define BOOST_PP_SEQ_ELEM_850(_) BOOST_PP_SEQ_ELEM_849 +# define BOOST_PP_SEQ_ELEM_851(_) BOOST_PP_SEQ_ELEM_850 +# define BOOST_PP_SEQ_ELEM_852(_) BOOST_PP_SEQ_ELEM_851 +# define BOOST_PP_SEQ_ELEM_853(_) BOOST_PP_SEQ_ELEM_852 +# define BOOST_PP_SEQ_ELEM_854(_) BOOST_PP_SEQ_ELEM_853 +# define BOOST_PP_SEQ_ELEM_855(_) BOOST_PP_SEQ_ELEM_854 +# define BOOST_PP_SEQ_ELEM_856(_) BOOST_PP_SEQ_ELEM_855 +# define BOOST_PP_SEQ_ELEM_857(_) BOOST_PP_SEQ_ELEM_856 +# define BOOST_PP_SEQ_ELEM_858(_) BOOST_PP_SEQ_ELEM_857 +# define BOOST_PP_SEQ_ELEM_859(_) BOOST_PP_SEQ_ELEM_858 +# define BOOST_PP_SEQ_ELEM_860(_) BOOST_PP_SEQ_ELEM_859 +# define BOOST_PP_SEQ_ELEM_861(_) BOOST_PP_SEQ_ELEM_860 +# define BOOST_PP_SEQ_ELEM_862(_) BOOST_PP_SEQ_ELEM_861 +# define BOOST_PP_SEQ_ELEM_863(_) BOOST_PP_SEQ_ELEM_862 +# define BOOST_PP_SEQ_ELEM_864(_) BOOST_PP_SEQ_ELEM_863 +# define BOOST_PP_SEQ_ELEM_865(_) BOOST_PP_SEQ_ELEM_864 +# define BOOST_PP_SEQ_ELEM_866(_) BOOST_PP_SEQ_ELEM_865 +# define BOOST_PP_SEQ_ELEM_867(_) BOOST_PP_SEQ_ELEM_866 +# define BOOST_PP_SEQ_ELEM_868(_) BOOST_PP_SEQ_ELEM_867 +# define BOOST_PP_SEQ_ELEM_869(_) BOOST_PP_SEQ_ELEM_868 +# define BOOST_PP_SEQ_ELEM_870(_) BOOST_PP_SEQ_ELEM_869 +# define BOOST_PP_SEQ_ELEM_871(_) BOOST_PP_SEQ_ELEM_870 +# define BOOST_PP_SEQ_ELEM_872(_) BOOST_PP_SEQ_ELEM_871 +# define BOOST_PP_SEQ_ELEM_873(_) BOOST_PP_SEQ_ELEM_872 +# define BOOST_PP_SEQ_ELEM_874(_) BOOST_PP_SEQ_ELEM_873 +# define BOOST_PP_SEQ_ELEM_875(_) BOOST_PP_SEQ_ELEM_874 +# define BOOST_PP_SEQ_ELEM_876(_) BOOST_PP_SEQ_ELEM_875 +# define BOOST_PP_SEQ_ELEM_877(_) BOOST_PP_SEQ_ELEM_876 +# define BOOST_PP_SEQ_ELEM_878(_) BOOST_PP_SEQ_ELEM_877 +# define BOOST_PP_SEQ_ELEM_879(_) BOOST_PP_SEQ_ELEM_878 +# define BOOST_PP_SEQ_ELEM_880(_) BOOST_PP_SEQ_ELEM_879 +# define BOOST_PP_SEQ_ELEM_881(_) BOOST_PP_SEQ_ELEM_880 +# define BOOST_PP_SEQ_ELEM_882(_) BOOST_PP_SEQ_ELEM_881 +# define BOOST_PP_SEQ_ELEM_883(_) BOOST_PP_SEQ_ELEM_882 +# define BOOST_PP_SEQ_ELEM_884(_) BOOST_PP_SEQ_ELEM_883 +# define BOOST_PP_SEQ_ELEM_885(_) BOOST_PP_SEQ_ELEM_884 +# define BOOST_PP_SEQ_ELEM_886(_) BOOST_PP_SEQ_ELEM_885 +# define BOOST_PP_SEQ_ELEM_887(_) BOOST_PP_SEQ_ELEM_886 +# define BOOST_PP_SEQ_ELEM_888(_) BOOST_PP_SEQ_ELEM_887 +# define BOOST_PP_SEQ_ELEM_889(_) BOOST_PP_SEQ_ELEM_888 +# define BOOST_PP_SEQ_ELEM_890(_) BOOST_PP_SEQ_ELEM_889 +# define BOOST_PP_SEQ_ELEM_891(_) BOOST_PP_SEQ_ELEM_890 +# define BOOST_PP_SEQ_ELEM_892(_) BOOST_PP_SEQ_ELEM_891 +# define BOOST_PP_SEQ_ELEM_893(_) BOOST_PP_SEQ_ELEM_892 +# define BOOST_PP_SEQ_ELEM_894(_) BOOST_PP_SEQ_ELEM_893 +# define BOOST_PP_SEQ_ELEM_895(_) BOOST_PP_SEQ_ELEM_894 +# define BOOST_PP_SEQ_ELEM_896(_) BOOST_PP_SEQ_ELEM_895 +# define BOOST_PP_SEQ_ELEM_897(_) BOOST_PP_SEQ_ELEM_896 +# define BOOST_PP_SEQ_ELEM_898(_) BOOST_PP_SEQ_ELEM_897 +# define BOOST_PP_SEQ_ELEM_899(_) BOOST_PP_SEQ_ELEM_898 +# define BOOST_PP_SEQ_ELEM_900(_) BOOST_PP_SEQ_ELEM_899 +# define BOOST_PP_SEQ_ELEM_901(_) BOOST_PP_SEQ_ELEM_900 +# define BOOST_PP_SEQ_ELEM_902(_) BOOST_PP_SEQ_ELEM_901 +# define BOOST_PP_SEQ_ELEM_903(_) BOOST_PP_SEQ_ELEM_902 +# define BOOST_PP_SEQ_ELEM_904(_) BOOST_PP_SEQ_ELEM_903 +# define BOOST_PP_SEQ_ELEM_905(_) BOOST_PP_SEQ_ELEM_904 +# define BOOST_PP_SEQ_ELEM_906(_) BOOST_PP_SEQ_ELEM_905 +# define BOOST_PP_SEQ_ELEM_907(_) BOOST_PP_SEQ_ELEM_906 +# define BOOST_PP_SEQ_ELEM_908(_) BOOST_PP_SEQ_ELEM_907 +# define BOOST_PP_SEQ_ELEM_909(_) BOOST_PP_SEQ_ELEM_908 +# define BOOST_PP_SEQ_ELEM_910(_) BOOST_PP_SEQ_ELEM_909 +# define BOOST_PP_SEQ_ELEM_911(_) BOOST_PP_SEQ_ELEM_910 +# define BOOST_PP_SEQ_ELEM_912(_) BOOST_PP_SEQ_ELEM_911 +# define BOOST_PP_SEQ_ELEM_913(_) BOOST_PP_SEQ_ELEM_912 +# define BOOST_PP_SEQ_ELEM_914(_) BOOST_PP_SEQ_ELEM_913 +# define BOOST_PP_SEQ_ELEM_915(_) BOOST_PP_SEQ_ELEM_914 +# define BOOST_PP_SEQ_ELEM_916(_) BOOST_PP_SEQ_ELEM_915 +# define BOOST_PP_SEQ_ELEM_917(_) BOOST_PP_SEQ_ELEM_916 +# define BOOST_PP_SEQ_ELEM_918(_) BOOST_PP_SEQ_ELEM_917 +# define BOOST_PP_SEQ_ELEM_919(_) BOOST_PP_SEQ_ELEM_918 +# define BOOST_PP_SEQ_ELEM_920(_) BOOST_PP_SEQ_ELEM_919 +# define BOOST_PP_SEQ_ELEM_921(_) BOOST_PP_SEQ_ELEM_920 +# define BOOST_PP_SEQ_ELEM_922(_) BOOST_PP_SEQ_ELEM_921 +# define BOOST_PP_SEQ_ELEM_923(_) BOOST_PP_SEQ_ELEM_922 +# define BOOST_PP_SEQ_ELEM_924(_) BOOST_PP_SEQ_ELEM_923 +# define BOOST_PP_SEQ_ELEM_925(_) BOOST_PP_SEQ_ELEM_924 +# define BOOST_PP_SEQ_ELEM_926(_) BOOST_PP_SEQ_ELEM_925 +# define BOOST_PP_SEQ_ELEM_927(_) BOOST_PP_SEQ_ELEM_926 +# define BOOST_PP_SEQ_ELEM_928(_) BOOST_PP_SEQ_ELEM_927 +# define BOOST_PP_SEQ_ELEM_929(_) BOOST_PP_SEQ_ELEM_928 +# define BOOST_PP_SEQ_ELEM_930(_) BOOST_PP_SEQ_ELEM_929 +# define BOOST_PP_SEQ_ELEM_931(_) BOOST_PP_SEQ_ELEM_930 +# define BOOST_PP_SEQ_ELEM_932(_) BOOST_PP_SEQ_ELEM_931 +# define BOOST_PP_SEQ_ELEM_933(_) BOOST_PP_SEQ_ELEM_932 +# define BOOST_PP_SEQ_ELEM_934(_) BOOST_PP_SEQ_ELEM_933 +# define BOOST_PP_SEQ_ELEM_935(_) BOOST_PP_SEQ_ELEM_934 +# define BOOST_PP_SEQ_ELEM_936(_) BOOST_PP_SEQ_ELEM_935 +# define BOOST_PP_SEQ_ELEM_937(_) BOOST_PP_SEQ_ELEM_936 +# define BOOST_PP_SEQ_ELEM_938(_) BOOST_PP_SEQ_ELEM_937 +# define BOOST_PP_SEQ_ELEM_939(_) BOOST_PP_SEQ_ELEM_938 +# define BOOST_PP_SEQ_ELEM_940(_) BOOST_PP_SEQ_ELEM_939 +# define BOOST_PP_SEQ_ELEM_941(_) BOOST_PP_SEQ_ELEM_940 +# define BOOST_PP_SEQ_ELEM_942(_) BOOST_PP_SEQ_ELEM_941 +# define BOOST_PP_SEQ_ELEM_943(_) BOOST_PP_SEQ_ELEM_942 +# define BOOST_PP_SEQ_ELEM_944(_) BOOST_PP_SEQ_ELEM_943 +# define BOOST_PP_SEQ_ELEM_945(_) BOOST_PP_SEQ_ELEM_944 +# define BOOST_PP_SEQ_ELEM_946(_) BOOST_PP_SEQ_ELEM_945 +# define BOOST_PP_SEQ_ELEM_947(_) BOOST_PP_SEQ_ELEM_946 +# define BOOST_PP_SEQ_ELEM_948(_) BOOST_PP_SEQ_ELEM_947 +# define BOOST_PP_SEQ_ELEM_949(_) BOOST_PP_SEQ_ELEM_948 +# define BOOST_PP_SEQ_ELEM_950(_) BOOST_PP_SEQ_ELEM_949 +# define BOOST_PP_SEQ_ELEM_951(_) BOOST_PP_SEQ_ELEM_950 +# define BOOST_PP_SEQ_ELEM_952(_) BOOST_PP_SEQ_ELEM_951 +# define BOOST_PP_SEQ_ELEM_953(_) BOOST_PP_SEQ_ELEM_952 +# define BOOST_PP_SEQ_ELEM_954(_) BOOST_PP_SEQ_ELEM_953 +# define BOOST_PP_SEQ_ELEM_955(_) BOOST_PP_SEQ_ELEM_954 +# define BOOST_PP_SEQ_ELEM_956(_) BOOST_PP_SEQ_ELEM_955 +# define BOOST_PP_SEQ_ELEM_957(_) BOOST_PP_SEQ_ELEM_956 +# define BOOST_PP_SEQ_ELEM_958(_) BOOST_PP_SEQ_ELEM_957 +# define BOOST_PP_SEQ_ELEM_959(_) BOOST_PP_SEQ_ELEM_958 +# define BOOST_PP_SEQ_ELEM_960(_) BOOST_PP_SEQ_ELEM_959 +# define BOOST_PP_SEQ_ELEM_961(_) BOOST_PP_SEQ_ELEM_960 +# define BOOST_PP_SEQ_ELEM_962(_) BOOST_PP_SEQ_ELEM_961 +# define BOOST_PP_SEQ_ELEM_963(_) BOOST_PP_SEQ_ELEM_962 +# define BOOST_PP_SEQ_ELEM_964(_) BOOST_PP_SEQ_ELEM_963 +# define BOOST_PP_SEQ_ELEM_965(_) BOOST_PP_SEQ_ELEM_964 +# define BOOST_PP_SEQ_ELEM_966(_) BOOST_PP_SEQ_ELEM_965 +# define BOOST_PP_SEQ_ELEM_967(_) BOOST_PP_SEQ_ELEM_966 +# define BOOST_PP_SEQ_ELEM_968(_) BOOST_PP_SEQ_ELEM_967 +# define BOOST_PP_SEQ_ELEM_969(_) BOOST_PP_SEQ_ELEM_968 +# define BOOST_PP_SEQ_ELEM_970(_) BOOST_PP_SEQ_ELEM_969 +# define BOOST_PP_SEQ_ELEM_971(_) BOOST_PP_SEQ_ELEM_970 +# define BOOST_PP_SEQ_ELEM_972(_) BOOST_PP_SEQ_ELEM_971 +# define BOOST_PP_SEQ_ELEM_973(_) BOOST_PP_SEQ_ELEM_972 +# define BOOST_PP_SEQ_ELEM_974(_) BOOST_PP_SEQ_ELEM_973 +# define BOOST_PP_SEQ_ELEM_975(_) BOOST_PP_SEQ_ELEM_974 +# define BOOST_PP_SEQ_ELEM_976(_) BOOST_PP_SEQ_ELEM_975 +# define BOOST_PP_SEQ_ELEM_977(_) BOOST_PP_SEQ_ELEM_976 +# define BOOST_PP_SEQ_ELEM_978(_) BOOST_PP_SEQ_ELEM_977 +# define BOOST_PP_SEQ_ELEM_979(_) BOOST_PP_SEQ_ELEM_978 +# define BOOST_PP_SEQ_ELEM_980(_) BOOST_PP_SEQ_ELEM_979 +# define BOOST_PP_SEQ_ELEM_981(_) BOOST_PP_SEQ_ELEM_980 +# define BOOST_PP_SEQ_ELEM_982(_) BOOST_PP_SEQ_ELEM_981 +# define BOOST_PP_SEQ_ELEM_983(_) BOOST_PP_SEQ_ELEM_982 +# define BOOST_PP_SEQ_ELEM_984(_) BOOST_PP_SEQ_ELEM_983 +# define BOOST_PP_SEQ_ELEM_985(_) BOOST_PP_SEQ_ELEM_984 +# define BOOST_PP_SEQ_ELEM_986(_) BOOST_PP_SEQ_ELEM_985 +# define BOOST_PP_SEQ_ELEM_987(_) BOOST_PP_SEQ_ELEM_986 +# define BOOST_PP_SEQ_ELEM_988(_) BOOST_PP_SEQ_ELEM_987 +# define BOOST_PP_SEQ_ELEM_989(_) BOOST_PP_SEQ_ELEM_988 +# define BOOST_PP_SEQ_ELEM_990(_) BOOST_PP_SEQ_ELEM_989 +# define BOOST_PP_SEQ_ELEM_991(_) BOOST_PP_SEQ_ELEM_990 +# define BOOST_PP_SEQ_ELEM_992(_) BOOST_PP_SEQ_ELEM_991 +# define BOOST_PP_SEQ_ELEM_993(_) BOOST_PP_SEQ_ELEM_992 +# define BOOST_PP_SEQ_ELEM_994(_) BOOST_PP_SEQ_ELEM_993 +# define BOOST_PP_SEQ_ELEM_995(_) BOOST_PP_SEQ_ELEM_994 +# define BOOST_PP_SEQ_ELEM_996(_) BOOST_PP_SEQ_ELEM_995 +# define BOOST_PP_SEQ_ELEM_997(_) BOOST_PP_SEQ_ELEM_996 +# define BOOST_PP_SEQ_ELEM_998(_) BOOST_PP_SEQ_ELEM_997 +# define BOOST_PP_SEQ_ELEM_999(_) BOOST_PP_SEQ_ELEM_998 +# define BOOST_PP_SEQ_ELEM_1000(_) BOOST_PP_SEQ_ELEM_999 +# define BOOST_PP_SEQ_ELEM_1001(_) BOOST_PP_SEQ_ELEM_1000 +# define BOOST_PP_SEQ_ELEM_1002(_) BOOST_PP_SEQ_ELEM_1001 +# define BOOST_PP_SEQ_ELEM_1003(_) BOOST_PP_SEQ_ELEM_1002 +# define BOOST_PP_SEQ_ELEM_1004(_) BOOST_PP_SEQ_ELEM_1003 +# define BOOST_PP_SEQ_ELEM_1005(_) BOOST_PP_SEQ_ELEM_1004 +# define BOOST_PP_SEQ_ELEM_1006(_) BOOST_PP_SEQ_ELEM_1005 +# define BOOST_PP_SEQ_ELEM_1007(_) BOOST_PP_SEQ_ELEM_1006 +# define BOOST_PP_SEQ_ELEM_1008(_) BOOST_PP_SEQ_ELEM_1007 +# define BOOST_PP_SEQ_ELEM_1009(_) BOOST_PP_SEQ_ELEM_1008 +# define BOOST_PP_SEQ_ELEM_1010(_) BOOST_PP_SEQ_ELEM_1009 +# define BOOST_PP_SEQ_ELEM_1011(_) BOOST_PP_SEQ_ELEM_1010 +# define BOOST_PP_SEQ_ELEM_1012(_) BOOST_PP_SEQ_ELEM_1011 +# define BOOST_PP_SEQ_ELEM_1013(_) BOOST_PP_SEQ_ELEM_1012 +# define BOOST_PP_SEQ_ELEM_1014(_) BOOST_PP_SEQ_ELEM_1013 +# define BOOST_PP_SEQ_ELEM_1015(_) BOOST_PP_SEQ_ELEM_1014 +# define BOOST_PP_SEQ_ELEM_1016(_) BOOST_PP_SEQ_ELEM_1015 +# define BOOST_PP_SEQ_ELEM_1017(_) BOOST_PP_SEQ_ELEM_1016 +# define BOOST_PP_SEQ_ELEM_1018(_) BOOST_PP_SEQ_ELEM_1017 +# define BOOST_PP_SEQ_ELEM_1019(_) BOOST_PP_SEQ_ELEM_1018 +# define BOOST_PP_SEQ_ELEM_1020(_) BOOST_PP_SEQ_ELEM_1019 +# define BOOST_PP_SEQ_ELEM_1021(_) BOOST_PP_SEQ_ELEM_1020 +# define BOOST_PP_SEQ_ELEM_1022(_) BOOST_PP_SEQ_ELEM_1021 +# define BOOST_PP_SEQ_ELEM_1023(_) BOOST_PP_SEQ_ELEM_1022 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/elem_256.hpp b/src/boost/boost/preprocessor/seq/limits/elem_256.hpp new file mode 100644 index 000000000..eee387f23 --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/elem_256.hpp @@ -0,0 +1,272 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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_SEQ_ELEM_256_HPP +# define BOOST_PREPROCESSOR_SEQ_ELEM_256_HPP +# +# define BOOST_PP_SEQ_ELEM_0(x) x, BOOST_PP_NIL +# define BOOST_PP_SEQ_ELEM_1(_) BOOST_PP_SEQ_ELEM_0 +# define BOOST_PP_SEQ_ELEM_2(_) BOOST_PP_SEQ_ELEM_1 +# define BOOST_PP_SEQ_ELEM_3(_) BOOST_PP_SEQ_ELEM_2 +# define BOOST_PP_SEQ_ELEM_4(_) BOOST_PP_SEQ_ELEM_3 +# define BOOST_PP_SEQ_ELEM_5(_) BOOST_PP_SEQ_ELEM_4 +# define BOOST_PP_SEQ_ELEM_6(_) BOOST_PP_SEQ_ELEM_5 +# define BOOST_PP_SEQ_ELEM_7(_) BOOST_PP_SEQ_ELEM_6 +# define BOOST_PP_SEQ_ELEM_8(_) BOOST_PP_SEQ_ELEM_7 +# define BOOST_PP_SEQ_ELEM_9(_) BOOST_PP_SEQ_ELEM_8 +# define BOOST_PP_SEQ_ELEM_10(_) BOOST_PP_SEQ_ELEM_9 +# define BOOST_PP_SEQ_ELEM_11(_) BOOST_PP_SEQ_ELEM_10 +# define BOOST_PP_SEQ_ELEM_12(_) BOOST_PP_SEQ_ELEM_11 +# define BOOST_PP_SEQ_ELEM_13(_) BOOST_PP_SEQ_ELEM_12 +# define BOOST_PP_SEQ_ELEM_14(_) BOOST_PP_SEQ_ELEM_13 +# define BOOST_PP_SEQ_ELEM_15(_) BOOST_PP_SEQ_ELEM_14 +# define BOOST_PP_SEQ_ELEM_16(_) BOOST_PP_SEQ_ELEM_15 +# define BOOST_PP_SEQ_ELEM_17(_) BOOST_PP_SEQ_ELEM_16 +# define BOOST_PP_SEQ_ELEM_18(_) BOOST_PP_SEQ_ELEM_17 +# define BOOST_PP_SEQ_ELEM_19(_) BOOST_PP_SEQ_ELEM_18 +# define BOOST_PP_SEQ_ELEM_20(_) BOOST_PP_SEQ_ELEM_19 +# define BOOST_PP_SEQ_ELEM_21(_) BOOST_PP_SEQ_ELEM_20 +# define BOOST_PP_SEQ_ELEM_22(_) BOOST_PP_SEQ_ELEM_21 +# define BOOST_PP_SEQ_ELEM_23(_) BOOST_PP_SEQ_ELEM_22 +# define BOOST_PP_SEQ_ELEM_24(_) BOOST_PP_SEQ_ELEM_23 +# define BOOST_PP_SEQ_ELEM_25(_) BOOST_PP_SEQ_ELEM_24 +# define BOOST_PP_SEQ_ELEM_26(_) BOOST_PP_SEQ_ELEM_25 +# define BOOST_PP_SEQ_ELEM_27(_) BOOST_PP_SEQ_ELEM_26 +# define BOOST_PP_SEQ_ELEM_28(_) BOOST_PP_SEQ_ELEM_27 +# define BOOST_PP_SEQ_ELEM_29(_) BOOST_PP_SEQ_ELEM_28 +# define BOOST_PP_SEQ_ELEM_30(_) BOOST_PP_SEQ_ELEM_29 +# define BOOST_PP_SEQ_ELEM_31(_) BOOST_PP_SEQ_ELEM_30 +# define BOOST_PP_SEQ_ELEM_32(_) BOOST_PP_SEQ_ELEM_31 +# define BOOST_PP_SEQ_ELEM_33(_) BOOST_PP_SEQ_ELEM_32 +# define BOOST_PP_SEQ_ELEM_34(_) BOOST_PP_SEQ_ELEM_33 +# define BOOST_PP_SEQ_ELEM_35(_) BOOST_PP_SEQ_ELEM_34 +# define BOOST_PP_SEQ_ELEM_36(_) BOOST_PP_SEQ_ELEM_35 +# define BOOST_PP_SEQ_ELEM_37(_) BOOST_PP_SEQ_ELEM_36 +# define BOOST_PP_SEQ_ELEM_38(_) BOOST_PP_SEQ_ELEM_37 +# define BOOST_PP_SEQ_ELEM_39(_) BOOST_PP_SEQ_ELEM_38 +# define BOOST_PP_SEQ_ELEM_40(_) BOOST_PP_SEQ_ELEM_39 +# define BOOST_PP_SEQ_ELEM_41(_) BOOST_PP_SEQ_ELEM_40 +# define BOOST_PP_SEQ_ELEM_42(_) BOOST_PP_SEQ_ELEM_41 +# define BOOST_PP_SEQ_ELEM_43(_) BOOST_PP_SEQ_ELEM_42 +# define BOOST_PP_SEQ_ELEM_44(_) BOOST_PP_SEQ_ELEM_43 +# define BOOST_PP_SEQ_ELEM_45(_) BOOST_PP_SEQ_ELEM_44 +# define BOOST_PP_SEQ_ELEM_46(_) BOOST_PP_SEQ_ELEM_45 +# define BOOST_PP_SEQ_ELEM_47(_) BOOST_PP_SEQ_ELEM_46 +# define BOOST_PP_SEQ_ELEM_48(_) BOOST_PP_SEQ_ELEM_47 +# define BOOST_PP_SEQ_ELEM_49(_) BOOST_PP_SEQ_ELEM_48 +# define BOOST_PP_SEQ_ELEM_50(_) BOOST_PP_SEQ_ELEM_49 +# define BOOST_PP_SEQ_ELEM_51(_) BOOST_PP_SEQ_ELEM_50 +# define BOOST_PP_SEQ_ELEM_52(_) BOOST_PP_SEQ_ELEM_51 +# define BOOST_PP_SEQ_ELEM_53(_) BOOST_PP_SEQ_ELEM_52 +# define BOOST_PP_SEQ_ELEM_54(_) BOOST_PP_SEQ_ELEM_53 +# define BOOST_PP_SEQ_ELEM_55(_) BOOST_PP_SEQ_ELEM_54 +# define BOOST_PP_SEQ_ELEM_56(_) BOOST_PP_SEQ_ELEM_55 +# define BOOST_PP_SEQ_ELEM_57(_) BOOST_PP_SEQ_ELEM_56 +# define BOOST_PP_SEQ_ELEM_58(_) BOOST_PP_SEQ_ELEM_57 +# define BOOST_PP_SEQ_ELEM_59(_) BOOST_PP_SEQ_ELEM_58 +# define BOOST_PP_SEQ_ELEM_60(_) BOOST_PP_SEQ_ELEM_59 +# define BOOST_PP_SEQ_ELEM_61(_) BOOST_PP_SEQ_ELEM_60 +# define BOOST_PP_SEQ_ELEM_62(_) BOOST_PP_SEQ_ELEM_61 +# define BOOST_PP_SEQ_ELEM_63(_) BOOST_PP_SEQ_ELEM_62 +# define BOOST_PP_SEQ_ELEM_64(_) BOOST_PP_SEQ_ELEM_63 +# define BOOST_PP_SEQ_ELEM_65(_) BOOST_PP_SEQ_ELEM_64 +# define BOOST_PP_SEQ_ELEM_66(_) BOOST_PP_SEQ_ELEM_65 +# define BOOST_PP_SEQ_ELEM_67(_) BOOST_PP_SEQ_ELEM_66 +# define BOOST_PP_SEQ_ELEM_68(_) BOOST_PP_SEQ_ELEM_67 +# define BOOST_PP_SEQ_ELEM_69(_) BOOST_PP_SEQ_ELEM_68 +# define BOOST_PP_SEQ_ELEM_70(_) BOOST_PP_SEQ_ELEM_69 +# define BOOST_PP_SEQ_ELEM_71(_) BOOST_PP_SEQ_ELEM_70 +# define BOOST_PP_SEQ_ELEM_72(_) BOOST_PP_SEQ_ELEM_71 +# define BOOST_PP_SEQ_ELEM_73(_) BOOST_PP_SEQ_ELEM_72 +# define BOOST_PP_SEQ_ELEM_74(_) BOOST_PP_SEQ_ELEM_73 +# define BOOST_PP_SEQ_ELEM_75(_) BOOST_PP_SEQ_ELEM_74 +# define BOOST_PP_SEQ_ELEM_76(_) BOOST_PP_SEQ_ELEM_75 +# define BOOST_PP_SEQ_ELEM_77(_) BOOST_PP_SEQ_ELEM_76 +# define BOOST_PP_SEQ_ELEM_78(_) BOOST_PP_SEQ_ELEM_77 +# define BOOST_PP_SEQ_ELEM_79(_) BOOST_PP_SEQ_ELEM_78 +# define BOOST_PP_SEQ_ELEM_80(_) BOOST_PP_SEQ_ELEM_79 +# define BOOST_PP_SEQ_ELEM_81(_) BOOST_PP_SEQ_ELEM_80 +# define BOOST_PP_SEQ_ELEM_82(_) BOOST_PP_SEQ_ELEM_81 +# define BOOST_PP_SEQ_ELEM_83(_) BOOST_PP_SEQ_ELEM_82 +# define BOOST_PP_SEQ_ELEM_84(_) BOOST_PP_SEQ_ELEM_83 +# define BOOST_PP_SEQ_ELEM_85(_) BOOST_PP_SEQ_ELEM_84 +# define BOOST_PP_SEQ_ELEM_86(_) BOOST_PP_SEQ_ELEM_85 +# define BOOST_PP_SEQ_ELEM_87(_) BOOST_PP_SEQ_ELEM_86 +# define BOOST_PP_SEQ_ELEM_88(_) BOOST_PP_SEQ_ELEM_87 +# define BOOST_PP_SEQ_ELEM_89(_) BOOST_PP_SEQ_ELEM_88 +# define BOOST_PP_SEQ_ELEM_90(_) BOOST_PP_SEQ_ELEM_89 +# define BOOST_PP_SEQ_ELEM_91(_) BOOST_PP_SEQ_ELEM_90 +# define BOOST_PP_SEQ_ELEM_92(_) BOOST_PP_SEQ_ELEM_91 +# define BOOST_PP_SEQ_ELEM_93(_) BOOST_PP_SEQ_ELEM_92 +# define BOOST_PP_SEQ_ELEM_94(_) BOOST_PP_SEQ_ELEM_93 +# define BOOST_PP_SEQ_ELEM_95(_) BOOST_PP_SEQ_ELEM_94 +# define BOOST_PP_SEQ_ELEM_96(_) BOOST_PP_SEQ_ELEM_95 +# define BOOST_PP_SEQ_ELEM_97(_) BOOST_PP_SEQ_ELEM_96 +# define BOOST_PP_SEQ_ELEM_98(_) BOOST_PP_SEQ_ELEM_97 +# define BOOST_PP_SEQ_ELEM_99(_) BOOST_PP_SEQ_ELEM_98 +# define BOOST_PP_SEQ_ELEM_100(_) BOOST_PP_SEQ_ELEM_99 +# define BOOST_PP_SEQ_ELEM_101(_) BOOST_PP_SEQ_ELEM_100 +# define BOOST_PP_SEQ_ELEM_102(_) BOOST_PP_SEQ_ELEM_101 +# define BOOST_PP_SEQ_ELEM_103(_) BOOST_PP_SEQ_ELEM_102 +# define BOOST_PP_SEQ_ELEM_104(_) BOOST_PP_SEQ_ELEM_103 +# define BOOST_PP_SEQ_ELEM_105(_) BOOST_PP_SEQ_ELEM_104 +# define BOOST_PP_SEQ_ELEM_106(_) BOOST_PP_SEQ_ELEM_105 +# define BOOST_PP_SEQ_ELEM_107(_) BOOST_PP_SEQ_ELEM_106 +# define BOOST_PP_SEQ_ELEM_108(_) BOOST_PP_SEQ_ELEM_107 +# define BOOST_PP_SEQ_ELEM_109(_) BOOST_PP_SEQ_ELEM_108 +# define BOOST_PP_SEQ_ELEM_110(_) BOOST_PP_SEQ_ELEM_109 +# define BOOST_PP_SEQ_ELEM_111(_) BOOST_PP_SEQ_ELEM_110 +# define BOOST_PP_SEQ_ELEM_112(_) BOOST_PP_SEQ_ELEM_111 +# define BOOST_PP_SEQ_ELEM_113(_) BOOST_PP_SEQ_ELEM_112 +# define BOOST_PP_SEQ_ELEM_114(_) BOOST_PP_SEQ_ELEM_113 +# define BOOST_PP_SEQ_ELEM_115(_) BOOST_PP_SEQ_ELEM_114 +# define BOOST_PP_SEQ_ELEM_116(_) BOOST_PP_SEQ_ELEM_115 +# define BOOST_PP_SEQ_ELEM_117(_) BOOST_PP_SEQ_ELEM_116 +# define BOOST_PP_SEQ_ELEM_118(_) BOOST_PP_SEQ_ELEM_117 +# define BOOST_PP_SEQ_ELEM_119(_) BOOST_PP_SEQ_ELEM_118 +# define BOOST_PP_SEQ_ELEM_120(_) BOOST_PP_SEQ_ELEM_119 +# define BOOST_PP_SEQ_ELEM_121(_) BOOST_PP_SEQ_ELEM_120 +# define BOOST_PP_SEQ_ELEM_122(_) BOOST_PP_SEQ_ELEM_121 +# define BOOST_PP_SEQ_ELEM_123(_) BOOST_PP_SEQ_ELEM_122 +# define BOOST_PP_SEQ_ELEM_124(_) BOOST_PP_SEQ_ELEM_123 +# define BOOST_PP_SEQ_ELEM_125(_) BOOST_PP_SEQ_ELEM_124 +# define BOOST_PP_SEQ_ELEM_126(_) BOOST_PP_SEQ_ELEM_125 +# define BOOST_PP_SEQ_ELEM_127(_) BOOST_PP_SEQ_ELEM_126 +# define BOOST_PP_SEQ_ELEM_128(_) BOOST_PP_SEQ_ELEM_127 +# define BOOST_PP_SEQ_ELEM_129(_) BOOST_PP_SEQ_ELEM_128 +# define BOOST_PP_SEQ_ELEM_130(_) BOOST_PP_SEQ_ELEM_129 +# define BOOST_PP_SEQ_ELEM_131(_) BOOST_PP_SEQ_ELEM_130 +# define BOOST_PP_SEQ_ELEM_132(_) BOOST_PP_SEQ_ELEM_131 +# define BOOST_PP_SEQ_ELEM_133(_) BOOST_PP_SEQ_ELEM_132 +# define BOOST_PP_SEQ_ELEM_134(_) BOOST_PP_SEQ_ELEM_133 +# define BOOST_PP_SEQ_ELEM_135(_) BOOST_PP_SEQ_ELEM_134 +# define BOOST_PP_SEQ_ELEM_136(_) BOOST_PP_SEQ_ELEM_135 +# define BOOST_PP_SEQ_ELEM_137(_) BOOST_PP_SEQ_ELEM_136 +# define BOOST_PP_SEQ_ELEM_138(_) BOOST_PP_SEQ_ELEM_137 +# define BOOST_PP_SEQ_ELEM_139(_) BOOST_PP_SEQ_ELEM_138 +# define BOOST_PP_SEQ_ELEM_140(_) BOOST_PP_SEQ_ELEM_139 +# define BOOST_PP_SEQ_ELEM_141(_) BOOST_PP_SEQ_ELEM_140 +# define BOOST_PP_SEQ_ELEM_142(_) BOOST_PP_SEQ_ELEM_141 +# define BOOST_PP_SEQ_ELEM_143(_) BOOST_PP_SEQ_ELEM_142 +# define BOOST_PP_SEQ_ELEM_144(_) BOOST_PP_SEQ_ELEM_143 +# define BOOST_PP_SEQ_ELEM_145(_) BOOST_PP_SEQ_ELEM_144 +# define BOOST_PP_SEQ_ELEM_146(_) BOOST_PP_SEQ_ELEM_145 +# define BOOST_PP_SEQ_ELEM_147(_) BOOST_PP_SEQ_ELEM_146 +# define BOOST_PP_SEQ_ELEM_148(_) BOOST_PP_SEQ_ELEM_147 +# define BOOST_PP_SEQ_ELEM_149(_) BOOST_PP_SEQ_ELEM_148 +# define BOOST_PP_SEQ_ELEM_150(_) BOOST_PP_SEQ_ELEM_149 +# define BOOST_PP_SEQ_ELEM_151(_) BOOST_PP_SEQ_ELEM_150 +# define BOOST_PP_SEQ_ELEM_152(_) BOOST_PP_SEQ_ELEM_151 +# define BOOST_PP_SEQ_ELEM_153(_) BOOST_PP_SEQ_ELEM_152 +# define BOOST_PP_SEQ_ELEM_154(_) BOOST_PP_SEQ_ELEM_153 +# define BOOST_PP_SEQ_ELEM_155(_) BOOST_PP_SEQ_ELEM_154 +# define BOOST_PP_SEQ_ELEM_156(_) BOOST_PP_SEQ_ELEM_155 +# define BOOST_PP_SEQ_ELEM_157(_) BOOST_PP_SEQ_ELEM_156 +# define BOOST_PP_SEQ_ELEM_158(_) BOOST_PP_SEQ_ELEM_157 +# define BOOST_PP_SEQ_ELEM_159(_) BOOST_PP_SEQ_ELEM_158 +# define BOOST_PP_SEQ_ELEM_160(_) BOOST_PP_SEQ_ELEM_159 +# define BOOST_PP_SEQ_ELEM_161(_) BOOST_PP_SEQ_ELEM_160 +# define BOOST_PP_SEQ_ELEM_162(_) BOOST_PP_SEQ_ELEM_161 +# define BOOST_PP_SEQ_ELEM_163(_) BOOST_PP_SEQ_ELEM_162 +# define BOOST_PP_SEQ_ELEM_164(_) BOOST_PP_SEQ_ELEM_163 +# define BOOST_PP_SEQ_ELEM_165(_) BOOST_PP_SEQ_ELEM_164 +# define BOOST_PP_SEQ_ELEM_166(_) BOOST_PP_SEQ_ELEM_165 +# define BOOST_PP_SEQ_ELEM_167(_) BOOST_PP_SEQ_ELEM_166 +# define BOOST_PP_SEQ_ELEM_168(_) BOOST_PP_SEQ_ELEM_167 +# define BOOST_PP_SEQ_ELEM_169(_) BOOST_PP_SEQ_ELEM_168 +# define BOOST_PP_SEQ_ELEM_170(_) BOOST_PP_SEQ_ELEM_169 +# define BOOST_PP_SEQ_ELEM_171(_) BOOST_PP_SEQ_ELEM_170 +# define BOOST_PP_SEQ_ELEM_172(_) BOOST_PP_SEQ_ELEM_171 +# define BOOST_PP_SEQ_ELEM_173(_) BOOST_PP_SEQ_ELEM_172 +# define BOOST_PP_SEQ_ELEM_174(_) BOOST_PP_SEQ_ELEM_173 +# define BOOST_PP_SEQ_ELEM_175(_) BOOST_PP_SEQ_ELEM_174 +# define BOOST_PP_SEQ_ELEM_176(_) BOOST_PP_SEQ_ELEM_175 +# define BOOST_PP_SEQ_ELEM_177(_) BOOST_PP_SEQ_ELEM_176 +# define BOOST_PP_SEQ_ELEM_178(_) BOOST_PP_SEQ_ELEM_177 +# define BOOST_PP_SEQ_ELEM_179(_) BOOST_PP_SEQ_ELEM_178 +# define BOOST_PP_SEQ_ELEM_180(_) BOOST_PP_SEQ_ELEM_179 +# define BOOST_PP_SEQ_ELEM_181(_) BOOST_PP_SEQ_ELEM_180 +# define BOOST_PP_SEQ_ELEM_182(_) BOOST_PP_SEQ_ELEM_181 +# define BOOST_PP_SEQ_ELEM_183(_) BOOST_PP_SEQ_ELEM_182 +# define BOOST_PP_SEQ_ELEM_184(_) BOOST_PP_SEQ_ELEM_183 +# define BOOST_PP_SEQ_ELEM_185(_) BOOST_PP_SEQ_ELEM_184 +# define BOOST_PP_SEQ_ELEM_186(_) BOOST_PP_SEQ_ELEM_185 +# define BOOST_PP_SEQ_ELEM_187(_) BOOST_PP_SEQ_ELEM_186 +# define BOOST_PP_SEQ_ELEM_188(_) BOOST_PP_SEQ_ELEM_187 +# define BOOST_PP_SEQ_ELEM_189(_) BOOST_PP_SEQ_ELEM_188 +# define BOOST_PP_SEQ_ELEM_190(_) BOOST_PP_SEQ_ELEM_189 +# define BOOST_PP_SEQ_ELEM_191(_) BOOST_PP_SEQ_ELEM_190 +# define BOOST_PP_SEQ_ELEM_192(_) BOOST_PP_SEQ_ELEM_191 +# define BOOST_PP_SEQ_ELEM_193(_) BOOST_PP_SEQ_ELEM_192 +# define BOOST_PP_SEQ_ELEM_194(_) BOOST_PP_SEQ_ELEM_193 +# define BOOST_PP_SEQ_ELEM_195(_) BOOST_PP_SEQ_ELEM_194 +# define BOOST_PP_SEQ_ELEM_196(_) BOOST_PP_SEQ_ELEM_195 +# define BOOST_PP_SEQ_ELEM_197(_) BOOST_PP_SEQ_ELEM_196 +# define BOOST_PP_SEQ_ELEM_198(_) BOOST_PP_SEQ_ELEM_197 +# define BOOST_PP_SEQ_ELEM_199(_) BOOST_PP_SEQ_ELEM_198 +# define BOOST_PP_SEQ_ELEM_200(_) BOOST_PP_SEQ_ELEM_199 +# define BOOST_PP_SEQ_ELEM_201(_) BOOST_PP_SEQ_ELEM_200 +# define BOOST_PP_SEQ_ELEM_202(_) BOOST_PP_SEQ_ELEM_201 +# define BOOST_PP_SEQ_ELEM_203(_) BOOST_PP_SEQ_ELEM_202 +# define BOOST_PP_SEQ_ELEM_204(_) BOOST_PP_SEQ_ELEM_203 +# define BOOST_PP_SEQ_ELEM_205(_) BOOST_PP_SEQ_ELEM_204 +# define BOOST_PP_SEQ_ELEM_206(_) BOOST_PP_SEQ_ELEM_205 +# define BOOST_PP_SEQ_ELEM_207(_) BOOST_PP_SEQ_ELEM_206 +# define BOOST_PP_SEQ_ELEM_208(_) BOOST_PP_SEQ_ELEM_207 +# define BOOST_PP_SEQ_ELEM_209(_) BOOST_PP_SEQ_ELEM_208 +# define BOOST_PP_SEQ_ELEM_210(_) BOOST_PP_SEQ_ELEM_209 +# define BOOST_PP_SEQ_ELEM_211(_) BOOST_PP_SEQ_ELEM_210 +# define BOOST_PP_SEQ_ELEM_212(_) BOOST_PP_SEQ_ELEM_211 +# define BOOST_PP_SEQ_ELEM_213(_) BOOST_PP_SEQ_ELEM_212 +# define BOOST_PP_SEQ_ELEM_214(_) BOOST_PP_SEQ_ELEM_213 +# define BOOST_PP_SEQ_ELEM_215(_) BOOST_PP_SEQ_ELEM_214 +# define BOOST_PP_SEQ_ELEM_216(_) BOOST_PP_SEQ_ELEM_215 +# define BOOST_PP_SEQ_ELEM_217(_) BOOST_PP_SEQ_ELEM_216 +# define BOOST_PP_SEQ_ELEM_218(_) BOOST_PP_SEQ_ELEM_217 +# define BOOST_PP_SEQ_ELEM_219(_) BOOST_PP_SEQ_ELEM_218 +# define BOOST_PP_SEQ_ELEM_220(_) BOOST_PP_SEQ_ELEM_219 +# define BOOST_PP_SEQ_ELEM_221(_) BOOST_PP_SEQ_ELEM_220 +# define BOOST_PP_SEQ_ELEM_222(_) BOOST_PP_SEQ_ELEM_221 +# define BOOST_PP_SEQ_ELEM_223(_) BOOST_PP_SEQ_ELEM_222 +# define BOOST_PP_SEQ_ELEM_224(_) BOOST_PP_SEQ_ELEM_223 +# define BOOST_PP_SEQ_ELEM_225(_) BOOST_PP_SEQ_ELEM_224 +# define BOOST_PP_SEQ_ELEM_226(_) BOOST_PP_SEQ_ELEM_225 +# define BOOST_PP_SEQ_ELEM_227(_) BOOST_PP_SEQ_ELEM_226 +# define BOOST_PP_SEQ_ELEM_228(_) BOOST_PP_SEQ_ELEM_227 +# define BOOST_PP_SEQ_ELEM_229(_) BOOST_PP_SEQ_ELEM_228 +# define BOOST_PP_SEQ_ELEM_230(_) BOOST_PP_SEQ_ELEM_229 +# define BOOST_PP_SEQ_ELEM_231(_) BOOST_PP_SEQ_ELEM_230 +# define BOOST_PP_SEQ_ELEM_232(_) BOOST_PP_SEQ_ELEM_231 +# define BOOST_PP_SEQ_ELEM_233(_) BOOST_PP_SEQ_ELEM_232 +# define BOOST_PP_SEQ_ELEM_234(_) BOOST_PP_SEQ_ELEM_233 +# define BOOST_PP_SEQ_ELEM_235(_) BOOST_PP_SEQ_ELEM_234 +# define BOOST_PP_SEQ_ELEM_236(_) BOOST_PP_SEQ_ELEM_235 +# define BOOST_PP_SEQ_ELEM_237(_) BOOST_PP_SEQ_ELEM_236 +# define BOOST_PP_SEQ_ELEM_238(_) BOOST_PP_SEQ_ELEM_237 +# define BOOST_PP_SEQ_ELEM_239(_) BOOST_PP_SEQ_ELEM_238 +# define BOOST_PP_SEQ_ELEM_240(_) BOOST_PP_SEQ_ELEM_239 +# define BOOST_PP_SEQ_ELEM_241(_) BOOST_PP_SEQ_ELEM_240 +# define BOOST_PP_SEQ_ELEM_242(_) BOOST_PP_SEQ_ELEM_241 +# define BOOST_PP_SEQ_ELEM_243(_) BOOST_PP_SEQ_ELEM_242 +# define BOOST_PP_SEQ_ELEM_244(_) BOOST_PP_SEQ_ELEM_243 +# define BOOST_PP_SEQ_ELEM_245(_) BOOST_PP_SEQ_ELEM_244 +# define BOOST_PP_SEQ_ELEM_246(_) BOOST_PP_SEQ_ELEM_245 +# define BOOST_PP_SEQ_ELEM_247(_) BOOST_PP_SEQ_ELEM_246 +# define BOOST_PP_SEQ_ELEM_248(_) BOOST_PP_SEQ_ELEM_247 +# define BOOST_PP_SEQ_ELEM_249(_) BOOST_PP_SEQ_ELEM_248 +# define BOOST_PP_SEQ_ELEM_250(_) BOOST_PP_SEQ_ELEM_249 +# define BOOST_PP_SEQ_ELEM_251(_) BOOST_PP_SEQ_ELEM_250 +# define BOOST_PP_SEQ_ELEM_252(_) BOOST_PP_SEQ_ELEM_251 +# define BOOST_PP_SEQ_ELEM_253(_) BOOST_PP_SEQ_ELEM_252 +# define BOOST_PP_SEQ_ELEM_254(_) BOOST_PP_SEQ_ELEM_253 +# define BOOST_PP_SEQ_ELEM_255(_) BOOST_PP_SEQ_ELEM_254 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/elem_512.hpp b/src/boost/boost/preprocessor/seq/limits/elem_512.hpp new file mode 100644 index 000000000..82740147d --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/elem_512.hpp @@ -0,0 +1,274 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_SEQ_ELEM_512_HPP +# define BOOST_PREPROCESSOR_SEQ_ELEM_512_HPP +# +# define BOOST_PP_SEQ_ELEM_256(_) BOOST_PP_SEQ_ELEM_255 +# define BOOST_PP_SEQ_ELEM_257(_) BOOST_PP_SEQ_ELEM_256 +# define BOOST_PP_SEQ_ELEM_258(_) BOOST_PP_SEQ_ELEM_257 +# define BOOST_PP_SEQ_ELEM_259(_) BOOST_PP_SEQ_ELEM_258 +# define BOOST_PP_SEQ_ELEM_260(_) BOOST_PP_SEQ_ELEM_259 +# define BOOST_PP_SEQ_ELEM_261(_) BOOST_PP_SEQ_ELEM_260 +# define BOOST_PP_SEQ_ELEM_262(_) BOOST_PP_SEQ_ELEM_261 +# define BOOST_PP_SEQ_ELEM_263(_) BOOST_PP_SEQ_ELEM_262 +# define BOOST_PP_SEQ_ELEM_264(_) BOOST_PP_SEQ_ELEM_263 +# define BOOST_PP_SEQ_ELEM_265(_) BOOST_PP_SEQ_ELEM_264 +# define BOOST_PP_SEQ_ELEM_266(_) BOOST_PP_SEQ_ELEM_265 +# define BOOST_PP_SEQ_ELEM_267(_) BOOST_PP_SEQ_ELEM_266 +# define BOOST_PP_SEQ_ELEM_268(_) BOOST_PP_SEQ_ELEM_267 +# define BOOST_PP_SEQ_ELEM_269(_) BOOST_PP_SEQ_ELEM_268 +# define BOOST_PP_SEQ_ELEM_270(_) BOOST_PP_SEQ_ELEM_269 +# define BOOST_PP_SEQ_ELEM_271(_) BOOST_PP_SEQ_ELEM_270 +# define BOOST_PP_SEQ_ELEM_272(_) BOOST_PP_SEQ_ELEM_271 +# define BOOST_PP_SEQ_ELEM_273(_) BOOST_PP_SEQ_ELEM_272 +# define BOOST_PP_SEQ_ELEM_274(_) BOOST_PP_SEQ_ELEM_273 +# define BOOST_PP_SEQ_ELEM_275(_) BOOST_PP_SEQ_ELEM_274 +# define BOOST_PP_SEQ_ELEM_276(_) BOOST_PP_SEQ_ELEM_275 +# define BOOST_PP_SEQ_ELEM_277(_) BOOST_PP_SEQ_ELEM_276 +# define BOOST_PP_SEQ_ELEM_278(_) BOOST_PP_SEQ_ELEM_277 +# define BOOST_PP_SEQ_ELEM_279(_) BOOST_PP_SEQ_ELEM_278 +# define BOOST_PP_SEQ_ELEM_280(_) BOOST_PP_SEQ_ELEM_279 +# define BOOST_PP_SEQ_ELEM_281(_) BOOST_PP_SEQ_ELEM_280 +# define BOOST_PP_SEQ_ELEM_282(_) BOOST_PP_SEQ_ELEM_281 +# define BOOST_PP_SEQ_ELEM_283(_) BOOST_PP_SEQ_ELEM_282 +# define BOOST_PP_SEQ_ELEM_284(_) BOOST_PP_SEQ_ELEM_283 +# define BOOST_PP_SEQ_ELEM_285(_) BOOST_PP_SEQ_ELEM_284 +# define BOOST_PP_SEQ_ELEM_286(_) BOOST_PP_SEQ_ELEM_285 +# define BOOST_PP_SEQ_ELEM_287(_) BOOST_PP_SEQ_ELEM_286 +# define BOOST_PP_SEQ_ELEM_288(_) BOOST_PP_SEQ_ELEM_287 +# define BOOST_PP_SEQ_ELEM_289(_) BOOST_PP_SEQ_ELEM_288 +# define BOOST_PP_SEQ_ELEM_290(_) BOOST_PP_SEQ_ELEM_289 +# define BOOST_PP_SEQ_ELEM_291(_) BOOST_PP_SEQ_ELEM_290 +# define BOOST_PP_SEQ_ELEM_292(_) BOOST_PP_SEQ_ELEM_291 +# define BOOST_PP_SEQ_ELEM_293(_) BOOST_PP_SEQ_ELEM_292 +# define BOOST_PP_SEQ_ELEM_294(_) BOOST_PP_SEQ_ELEM_293 +# define BOOST_PP_SEQ_ELEM_295(_) BOOST_PP_SEQ_ELEM_294 +# define BOOST_PP_SEQ_ELEM_296(_) BOOST_PP_SEQ_ELEM_295 +# define BOOST_PP_SEQ_ELEM_297(_) BOOST_PP_SEQ_ELEM_296 +# define BOOST_PP_SEQ_ELEM_298(_) BOOST_PP_SEQ_ELEM_297 +# define BOOST_PP_SEQ_ELEM_299(_) BOOST_PP_SEQ_ELEM_298 +# define BOOST_PP_SEQ_ELEM_300(_) BOOST_PP_SEQ_ELEM_299 +# define BOOST_PP_SEQ_ELEM_301(_) BOOST_PP_SEQ_ELEM_300 +# define BOOST_PP_SEQ_ELEM_302(_) BOOST_PP_SEQ_ELEM_301 +# define BOOST_PP_SEQ_ELEM_303(_) BOOST_PP_SEQ_ELEM_302 +# define BOOST_PP_SEQ_ELEM_304(_) BOOST_PP_SEQ_ELEM_303 +# define BOOST_PP_SEQ_ELEM_305(_) BOOST_PP_SEQ_ELEM_304 +# define BOOST_PP_SEQ_ELEM_306(_) BOOST_PP_SEQ_ELEM_305 +# define BOOST_PP_SEQ_ELEM_307(_) BOOST_PP_SEQ_ELEM_306 +# define BOOST_PP_SEQ_ELEM_308(_) BOOST_PP_SEQ_ELEM_307 +# define BOOST_PP_SEQ_ELEM_309(_) BOOST_PP_SEQ_ELEM_308 +# define BOOST_PP_SEQ_ELEM_310(_) BOOST_PP_SEQ_ELEM_309 +# define BOOST_PP_SEQ_ELEM_311(_) BOOST_PP_SEQ_ELEM_310 +# define BOOST_PP_SEQ_ELEM_312(_) BOOST_PP_SEQ_ELEM_311 +# define BOOST_PP_SEQ_ELEM_313(_) BOOST_PP_SEQ_ELEM_312 +# define BOOST_PP_SEQ_ELEM_314(_) BOOST_PP_SEQ_ELEM_313 +# define BOOST_PP_SEQ_ELEM_315(_) BOOST_PP_SEQ_ELEM_314 +# define BOOST_PP_SEQ_ELEM_316(_) BOOST_PP_SEQ_ELEM_315 +# define BOOST_PP_SEQ_ELEM_317(_) BOOST_PP_SEQ_ELEM_316 +# define BOOST_PP_SEQ_ELEM_318(_) BOOST_PP_SEQ_ELEM_317 +# define BOOST_PP_SEQ_ELEM_319(_) BOOST_PP_SEQ_ELEM_318 +# define BOOST_PP_SEQ_ELEM_320(_) BOOST_PP_SEQ_ELEM_319 +# define BOOST_PP_SEQ_ELEM_321(_) BOOST_PP_SEQ_ELEM_320 +# define BOOST_PP_SEQ_ELEM_322(_) BOOST_PP_SEQ_ELEM_321 +# define BOOST_PP_SEQ_ELEM_323(_) BOOST_PP_SEQ_ELEM_322 +# define BOOST_PP_SEQ_ELEM_324(_) BOOST_PP_SEQ_ELEM_323 +# define BOOST_PP_SEQ_ELEM_325(_) BOOST_PP_SEQ_ELEM_324 +# define BOOST_PP_SEQ_ELEM_326(_) BOOST_PP_SEQ_ELEM_325 +# define BOOST_PP_SEQ_ELEM_327(_) BOOST_PP_SEQ_ELEM_326 +# define BOOST_PP_SEQ_ELEM_328(_) BOOST_PP_SEQ_ELEM_327 +# define BOOST_PP_SEQ_ELEM_329(_) BOOST_PP_SEQ_ELEM_328 +# define BOOST_PP_SEQ_ELEM_330(_) BOOST_PP_SEQ_ELEM_329 +# define BOOST_PP_SEQ_ELEM_331(_) BOOST_PP_SEQ_ELEM_330 +# define BOOST_PP_SEQ_ELEM_332(_) BOOST_PP_SEQ_ELEM_331 +# define BOOST_PP_SEQ_ELEM_333(_) BOOST_PP_SEQ_ELEM_332 +# define BOOST_PP_SEQ_ELEM_334(_) BOOST_PP_SEQ_ELEM_333 +# define BOOST_PP_SEQ_ELEM_335(_) BOOST_PP_SEQ_ELEM_334 +# define BOOST_PP_SEQ_ELEM_336(_) BOOST_PP_SEQ_ELEM_335 +# define BOOST_PP_SEQ_ELEM_337(_) BOOST_PP_SEQ_ELEM_336 +# define BOOST_PP_SEQ_ELEM_338(_) BOOST_PP_SEQ_ELEM_337 +# define BOOST_PP_SEQ_ELEM_339(_) BOOST_PP_SEQ_ELEM_338 +# define BOOST_PP_SEQ_ELEM_340(_) BOOST_PP_SEQ_ELEM_339 +# define BOOST_PP_SEQ_ELEM_341(_) BOOST_PP_SEQ_ELEM_340 +# define BOOST_PP_SEQ_ELEM_342(_) BOOST_PP_SEQ_ELEM_341 +# define BOOST_PP_SEQ_ELEM_343(_) BOOST_PP_SEQ_ELEM_342 +# define BOOST_PP_SEQ_ELEM_344(_) BOOST_PP_SEQ_ELEM_343 +# define BOOST_PP_SEQ_ELEM_345(_) BOOST_PP_SEQ_ELEM_344 +# define BOOST_PP_SEQ_ELEM_346(_) BOOST_PP_SEQ_ELEM_345 +# define BOOST_PP_SEQ_ELEM_347(_) BOOST_PP_SEQ_ELEM_346 +# define BOOST_PP_SEQ_ELEM_348(_) BOOST_PP_SEQ_ELEM_347 +# define BOOST_PP_SEQ_ELEM_349(_) BOOST_PP_SEQ_ELEM_348 +# define BOOST_PP_SEQ_ELEM_350(_) BOOST_PP_SEQ_ELEM_349 +# define BOOST_PP_SEQ_ELEM_351(_) BOOST_PP_SEQ_ELEM_350 +# define BOOST_PP_SEQ_ELEM_352(_) BOOST_PP_SEQ_ELEM_351 +# define BOOST_PP_SEQ_ELEM_353(_) BOOST_PP_SEQ_ELEM_352 +# define BOOST_PP_SEQ_ELEM_354(_) BOOST_PP_SEQ_ELEM_353 +# define BOOST_PP_SEQ_ELEM_355(_) BOOST_PP_SEQ_ELEM_354 +# define BOOST_PP_SEQ_ELEM_356(_) BOOST_PP_SEQ_ELEM_355 +# define BOOST_PP_SEQ_ELEM_357(_) BOOST_PP_SEQ_ELEM_356 +# define BOOST_PP_SEQ_ELEM_358(_) BOOST_PP_SEQ_ELEM_357 +# define BOOST_PP_SEQ_ELEM_359(_) BOOST_PP_SEQ_ELEM_358 +# define BOOST_PP_SEQ_ELEM_360(_) BOOST_PP_SEQ_ELEM_359 +# define BOOST_PP_SEQ_ELEM_361(_) BOOST_PP_SEQ_ELEM_360 +# define BOOST_PP_SEQ_ELEM_362(_) BOOST_PP_SEQ_ELEM_361 +# define BOOST_PP_SEQ_ELEM_363(_) BOOST_PP_SEQ_ELEM_362 +# define BOOST_PP_SEQ_ELEM_364(_) BOOST_PP_SEQ_ELEM_363 +# define BOOST_PP_SEQ_ELEM_365(_) BOOST_PP_SEQ_ELEM_364 +# define BOOST_PP_SEQ_ELEM_366(_) BOOST_PP_SEQ_ELEM_365 +# define BOOST_PP_SEQ_ELEM_367(_) BOOST_PP_SEQ_ELEM_366 +# define BOOST_PP_SEQ_ELEM_368(_) BOOST_PP_SEQ_ELEM_367 +# define BOOST_PP_SEQ_ELEM_369(_) BOOST_PP_SEQ_ELEM_368 +# define BOOST_PP_SEQ_ELEM_370(_) BOOST_PP_SEQ_ELEM_369 +# define BOOST_PP_SEQ_ELEM_371(_) BOOST_PP_SEQ_ELEM_370 +# define BOOST_PP_SEQ_ELEM_372(_) BOOST_PP_SEQ_ELEM_371 +# define BOOST_PP_SEQ_ELEM_373(_) BOOST_PP_SEQ_ELEM_372 +# define BOOST_PP_SEQ_ELEM_374(_) BOOST_PP_SEQ_ELEM_373 +# define BOOST_PP_SEQ_ELEM_375(_) BOOST_PP_SEQ_ELEM_374 +# define BOOST_PP_SEQ_ELEM_376(_) BOOST_PP_SEQ_ELEM_375 +# define BOOST_PP_SEQ_ELEM_377(_) BOOST_PP_SEQ_ELEM_376 +# define BOOST_PP_SEQ_ELEM_378(_) BOOST_PP_SEQ_ELEM_377 +# define BOOST_PP_SEQ_ELEM_379(_) BOOST_PP_SEQ_ELEM_378 +# define BOOST_PP_SEQ_ELEM_380(_) BOOST_PP_SEQ_ELEM_379 +# define BOOST_PP_SEQ_ELEM_381(_) BOOST_PP_SEQ_ELEM_380 +# define BOOST_PP_SEQ_ELEM_382(_) BOOST_PP_SEQ_ELEM_381 +# define BOOST_PP_SEQ_ELEM_383(_) BOOST_PP_SEQ_ELEM_382 +# define BOOST_PP_SEQ_ELEM_384(_) BOOST_PP_SEQ_ELEM_383 +# define BOOST_PP_SEQ_ELEM_385(_) BOOST_PP_SEQ_ELEM_384 +# define BOOST_PP_SEQ_ELEM_386(_) BOOST_PP_SEQ_ELEM_385 +# define BOOST_PP_SEQ_ELEM_387(_) BOOST_PP_SEQ_ELEM_386 +# define BOOST_PP_SEQ_ELEM_388(_) BOOST_PP_SEQ_ELEM_387 +# define BOOST_PP_SEQ_ELEM_389(_) BOOST_PP_SEQ_ELEM_388 +# define BOOST_PP_SEQ_ELEM_390(_) BOOST_PP_SEQ_ELEM_389 +# define BOOST_PP_SEQ_ELEM_391(_) BOOST_PP_SEQ_ELEM_390 +# define BOOST_PP_SEQ_ELEM_392(_) BOOST_PP_SEQ_ELEM_391 +# define BOOST_PP_SEQ_ELEM_393(_) BOOST_PP_SEQ_ELEM_392 +# define BOOST_PP_SEQ_ELEM_394(_) BOOST_PP_SEQ_ELEM_393 +# define BOOST_PP_SEQ_ELEM_395(_) BOOST_PP_SEQ_ELEM_394 +# define BOOST_PP_SEQ_ELEM_396(_) BOOST_PP_SEQ_ELEM_395 +# define BOOST_PP_SEQ_ELEM_397(_) BOOST_PP_SEQ_ELEM_396 +# define BOOST_PP_SEQ_ELEM_398(_) BOOST_PP_SEQ_ELEM_397 +# define BOOST_PP_SEQ_ELEM_399(_) BOOST_PP_SEQ_ELEM_398 +# define BOOST_PP_SEQ_ELEM_400(_) BOOST_PP_SEQ_ELEM_399 +# define BOOST_PP_SEQ_ELEM_401(_) BOOST_PP_SEQ_ELEM_400 +# define BOOST_PP_SEQ_ELEM_402(_) BOOST_PP_SEQ_ELEM_401 +# define BOOST_PP_SEQ_ELEM_403(_) BOOST_PP_SEQ_ELEM_402 +# define BOOST_PP_SEQ_ELEM_404(_) BOOST_PP_SEQ_ELEM_403 +# define BOOST_PP_SEQ_ELEM_405(_) BOOST_PP_SEQ_ELEM_404 +# define BOOST_PP_SEQ_ELEM_406(_) BOOST_PP_SEQ_ELEM_405 +# define BOOST_PP_SEQ_ELEM_407(_) BOOST_PP_SEQ_ELEM_406 +# define BOOST_PP_SEQ_ELEM_408(_) BOOST_PP_SEQ_ELEM_407 +# define BOOST_PP_SEQ_ELEM_409(_) BOOST_PP_SEQ_ELEM_408 +# define BOOST_PP_SEQ_ELEM_410(_) BOOST_PP_SEQ_ELEM_409 +# define BOOST_PP_SEQ_ELEM_411(_) BOOST_PP_SEQ_ELEM_410 +# define BOOST_PP_SEQ_ELEM_412(_) BOOST_PP_SEQ_ELEM_411 +# define BOOST_PP_SEQ_ELEM_413(_) BOOST_PP_SEQ_ELEM_412 +# define BOOST_PP_SEQ_ELEM_414(_) BOOST_PP_SEQ_ELEM_413 +# define BOOST_PP_SEQ_ELEM_415(_) BOOST_PP_SEQ_ELEM_414 +# define BOOST_PP_SEQ_ELEM_416(_) BOOST_PP_SEQ_ELEM_415 +# define BOOST_PP_SEQ_ELEM_417(_) BOOST_PP_SEQ_ELEM_416 +# define BOOST_PP_SEQ_ELEM_418(_) BOOST_PP_SEQ_ELEM_417 +# define BOOST_PP_SEQ_ELEM_419(_) BOOST_PP_SEQ_ELEM_418 +# define BOOST_PP_SEQ_ELEM_420(_) BOOST_PP_SEQ_ELEM_419 +# define BOOST_PP_SEQ_ELEM_421(_) BOOST_PP_SEQ_ELEM_420 +# define BOOST_PP_SEQ_ELEM_422(_) BOOST_PP_SEQ_ELEM_421 +# define BOOST_PP_SEQ_ELEM_423(_) BOOST_PP_SEQ_ELEM_422 +# define BOOST_PP_SEQ_ELEM_424(_) BOOST_PP_SEQ_ELEM_423 +# define BOOST_PP_SEQ_ELEM_425(_) BOOST_PP_SEQ_ELEM_424 +# define BOOST_PP_SEQ_ELEM_426(_) BOOST_PP_SEQ_ELEM_425 +# define BOOST_PP_SEQ_ELEM_427(_) BOOST_PP_SEQ_ELEM_426 +# define BOOST_PP_SEQ_ELEM_428(_) BOOST_PP_SEQ_ELEM_427 +# define BOOST_PP_SEQ_ELEM_429(_) BOOST_PP_SEQ_ELEM_428 +# define BOOST_PP_SEQ_ELEM_430(_) BOOST_PP_SEQ_ELEM_429 +# define BOOST_PP_SEQ_ELEM_431(_) BOOST_PP_SEQ_ELEM_430 +# define BOOST_PP_SEQ_ELEM_432(_) BOOST_PP_SEQ_ELEM_431 +# define BOOST_PP_SEQ_ELEM_433(_) BOOST_PP_SEQ_ELEM_432 +# define BOOST_PP_SEQ_ELEM_434(_) BOOST_PP_SEQ_ELEM_433 +# define BOOST_PP_SEQ_ELEM_435(_) BOOST_PP_SEQ_ELEM_434 +# define BOOST_PP_SEQ_ELEM_436(_) BOOST_PP_SEQ_ELEM_435 +# define BOOST_PP_SEQ_ELEM_437(_) BOOST_PP_SEQ_ELEM_436 +# define BOOST_PP_SEQ_ELEM_438(_) BOOST_PP_SEQ_ELEM_437 +# define BOOST_PP_SEQ_ELEM_439(_) BOOST_PP_SEQ_ELEM_438 +# define BOOST_PP_SEQ_ELEM_440(_) BOOST_PP_SEQ_ELEM_439 +# define BOOST_PP_SEQ_ELEM_441(_) BOOST_PP_SEQ_ELEM_440 +# define BOOST_PP_SEQ_ELEM_442(_) BOOST_PP_SEQ_ELEM_441 +# define BOOST_PP_SEQ_ELEM_443(_) BOOST_PP_SEQ_ELEM_442 +# define BOOST_PP_SEQ_ELEM_444(_) BOOST_PP_SEQ_ELEM_443 +# define BOOST_PP_SEQ_ELEM_445(_) BOOST_PP_SEQ_ELEM_444 +# define BOOST_PP_SEQ_ELEM_446(_) BOOST_PP_SEQ_ELEM_445 +# define BOOST_PP_SEQ_ELEM_447(_) BOOST_PP_SEQ_ELEM_446 +# define BOOST_PP_SEQ_ELEM_448(_) BOOST_PP_SEQ_ELEM_447 +# define BOOST_PP_SEQ_ELEM_449(_) BOOST_PP_SEQ_ELEM_448 +# define BOOST_PP_SEQ_ELEM_450(_) BOOST_PP_SEQ_ELEM_449 +# define BOOST_PP_SEQ_ELEM_451(_) BOOST_PP_SEQ_ELEM_450 +# define BOOST_PP_SEQ_ELEM_452(_) BOOST_PP_SEQ_ELEM_451 +# define BOOST_PP_SEQ_ELEM_453(_) BOOST_PP_SEQ_ELEM_452 +# define BOOST_PP_SEQ_ELEM_454(_) BOOST_PP_SEQ_ELEM_453 +# define BOOST_PP_SEQ_ELEM_455(_) BOOST_PP_SEQ_ELEM_454 +# define BOOST_PP_SEQ_ELEM_456(_) BOOST_PP_SEQ_ELEM_455 +# define BOOST_PP_SEQ_ELEM_457(_) BOOST_PP_SEQ_ELEM_456 +# define BOOST_PP_SEQ_ELEM_458(_) BOOST_PP_SEQ_ELEM_457 +# define BOOST_PP_SEQ_ELEM_459(_) BOOST_PP_SEQ_ELEM_458 +# define BOOST_PP_SEQ_ELEM_460(_) BOOST_PP_SEQ_ELEM_459 +# define BOOST_PP_SEQ_ELEM_461(_) BOOST_PP_SEQ_ELEM_460 +# define BOOST_PP_SEQ_ELEM_462(_) BOOST_PP_SEQ_ELEM_461 +# define BOOST_PP_SEQ_ELEM_463(_) BOOST_PP_SEQ_ELEM_462 +# define BOOST_PP_SEQ_ELEM_464(_) BOOST_PP_SEQ_ELEM_463 +# define BOOST_PP_SEQ_ELEM_465(_) BOOST_PP_SEQ_ELEM_464 +# define BOOST_PP_SEQ_ELEM_466(_) BOOST_PP_SEQ_ELEM_465 +# define BOOST_PP_SEQ_ELEM_467(_) BOOST_PP_SEQ_ELEM_466 +# define BOOST_PP_SEQ_ELEM_468(_) BOOST_PP_SEQ_ELEM_467 +# define BOOST_PP_SEQ_ELEM_469(_) BOOST_PP_SEQ_ELEM_468 +# define BOOST_PP_SEQ_ELEM_470(_) BOOST_PP_SEQ_ELEM_469 +# define BOOST_PP_SEQ_ELEM_471(_) BOOST_PP_SEQ_ELEM_470 +# define BOOST_PP_SEQ_ELEM_472(_) BOOST_PP_SEQ_ELEM_471 +# define BOOST_PP_SEQ_ELEM_473(_) BOOST_PP_SEQ_ELEM_472 +# define BOOST_PP_SEQ_ELEM_474(_) BOOST_PP_SEQ_ELEM_473 +# define BOOST_PP_SEQ_ELEM_475(_) BOOST_PP_SEQ_ELEM_474 +# define BOOST_PP_SEQ_ELEM_476(_) BOOST_PP_SEQ_ELEM_475 +# define BOOST_PP_SEQ_ELEM_477(_) BOOST_PP_SEQ_ELEM_476 +# define BOOST_PP_SEQ_ELEM_478(_) BOOST_PP_SEQ_ELEM_477 +# define BOOST_PP_SEQ_ELEM_479(_) BOOST_PP_SEQ_ELEM_478 +# define BOOST_PP_SEQ_ELEM_480(_) BOOST_PP_SEQ_ELEM_479 +# define BOOST_PP_SEQ_ELEM_481(_) BOOST_PP_SEQ_ELEM_480 +# define BOOST_PP_SEQ_ELEM_482(_) BOOST_PP_SEQ_ELEM_481 +# define BOOST_PP_SEQ_ELEM_483(_) BOOST_PP_SEQ_ELEM_482 +# define BOOST_PP_SEQ_ELEM_484(_) BOOST_PP_SEQ_ELEM_483 +# define BOOST_PP_SEQ_ELEM_485(_) BOOST_PP_SEQ_ELEM_484 +# define BOOST_PP_SEQ_ELEM_486(_) BOOST_PP_SEQ_ELEM_485 +# define BOOST_PP_SEQ_ELEM_487(_) BOOST_PP_SEQ_ELEM_486 +# define BOOST_PP_SEQ_ELEM_488(_) BOOST_PP_SEQ_ELEM_487 +# define BOOST_PP_SEQ_ELEM_489(_) BOOST_PP_SEQ_ELEM_488 +# define BOOST_PP_SEQ_ELEM_490(_) BOOST_PP_SEQ_ELEM_489 +# define BOOST_PP_SEQ_ELEM_491(_) BOOST_PP_SEQ_ELEM_490 +# define BOOST_PP_SEQ_ELEM_492(_) BOOST_PP_SEQ_ELEM_491 +# define BOOST_PP_SEQ_ELEM_493(_) BOOST_PP_SEQ_ELEM_492 +# define BOOST_PP_SEQ_ELEM_494(_) BOOST_PP_SEQ_ELEM_493 +# define BOOST_PP_SEQ_ELEM_495(_) BOOST_PP_SEQ_ELEM_494 +# define BOOST_PP_SEQ_ELEM_496(_) BOOST_PP_SEQ_ELEM_495 +# define BOOST_PP_SEQ_ELEM_497(_) BOOST_PP_SEQ_ELEM_496 +# define BOOST_PP_SEQ_ELEM_498(_) BOOST_PP_SEQ_ELEM_497 +# define BOOST_PP_SEQ_ELEM_499(_) BOOST_PP_SEQ_ELEM_498 +# define BOOST_PP_SEQ_ELEM_500(_) BOOST_PP_SEQ_ELEM_499 +# define BOOST_PP_SEQ_ELEM_501(_) BOOST_PP_SEQ_ELEM_500 +# define BOOST_PP_SEQ_ELEM_502(_) BOOST_PP_SEQ_ELEM_501 +# define BOOST_PP_SEQ_ELEM_503(_) BOOST_PP_SEQ_ELEM_502 +# define BOOST_PP_SEQ_ELEM_504(_) BOOST_PP_SEQ_ELEM_503 +# define BOOST_PP_SEQ_ELEM_505(_) BOOST_PP_SEQ_ELEM_504 +# define BOOST_PP_SEQ_ELEM_506(_) BOOST_PP_SEQ_ELEM_505 +# define BOOST_PP_SEQ_ELEM_507(_) BOOST_PP_SEQ_ELEM_506 +# define BOOST_PP_SEQ_ELEM_508(_) BOOST_PP_SEQ_ELEM_507 +# define BOOST_PP_SEQ_ELEM_509(_) BOOST_PP_SEQ_ELEM_508 +# define BOOST_PP_SEQ_ELEM_510(_) BOOST_PP_SEQ_ELEM_509 +# define BOOST_PP_SEQ_ELEM_511(_) BOOST_PP_SEQ_ELEM_510 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/enum_1024.hpp b/src/boost/boost/preprocessor/seq/limits/enum_1024.hpp new file mode 100644 index 000000000..cdbe9a9cb --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/enum_1024.hpp @@ -0,0 +1,530 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_SEQ_ENUM_1024_HPP +# define BOOST_PREPROCESSOR_SEQ_ENUM_1024_HPP +# +# define BOOST_PP_SEQ_ENUM_513(x) x, BOOST_PP_SEQ_ENUM_512 +# define BOOST_PP_SEQ_ENUM_514(x) x, BOOST_PP_SEQ_ENUM_513 +# define BOOST_PP_SEQ_ENUM_515(x) x, BOOST_PP_SEQ_ENUM_514 +# define BOOST_PP_SEQ_ENUM_516(x) x, BOOST_PP_SEQ_ENUM_515 +# define BOOST_PP_SEQ_ENUM_517(x) x, BOOST_PP_SEQ_ENUM_516 +# define BOOST_PP_SEQ_ENUM_518(x) x, BOOST_PP_SEQ_ENUM_517 +# define BOOST_PP_SEQ_ENUM_519(x) x, BOOST_PP_SEQ_ENUM_518 +# define BOOST_PP_SEQ_ENUM_520(x) x, BOOST_PP_SEQ_ENUM_519 +# define BOOST_PP_SEQ_ENUM_521(x) x, BOOST_PP_SEQ_ENUM_520 +# define BOOST_PP_SEQ_ENUM_522(x) x, BOOST_PP_SEQ_ENUM_521 +# define BOOST_PP_SEQ_ENUM_523(x) x, BOOST_PP_SEQ_ENUM_522 +# define BOOST_PP_SEQ_ENUM_524(x) x, BOOST_PP_SEQ_ENUM_523 +# define BOOST_PP_SEQ_ENUM_525(x) x, BOOST_PP_SEQ_ENUM_524 +# define BOOST_PP_SEQ_ENUM_526(x) x, BOOST_PP_SEQ_ENUM_525 +# define BOOST_PP_SEQ_ENUM_527(x) x, BOOST_PP_SEQ_ENUM_526 +# define BOOST_PP_SEQ_ENUM_528(x) x, BOOST_PP_SEQ_ENUM_527 +# define BOOST_PP_SEQ_ENUM_529(x) x, BOOST_PP_SEQ_ENUM_528 +# define BOOST_PP_SEQ_ENUM_530(x) x, BOOST_PP_SEQ_ENUM_529 +# define BOOST_PP_SEQ_ENUM_531(x) x, BOOST_PP_SEQ_ENUM_530 +# define BOOST_PP_SEQ_ENUM_532(x) x, BOOST_PP_SEQ_ENUM_531 +# define BOOST_PP_SEQ_ENUM_533(x) x, BOOST_PP_SEQ_ENUM_532 +# define BOOST_PP_SEQ_ENUM_534(x) x, BOOST_PP_SEQ_ENUM_533 +# define BOOST_PP_SEQ_ENUM_535(x) x, BOOST_PP_SEQ_ENUM_534 +# define BOOST_PP_SEQ_ENUM_536(x) x, BOOST_PP_SEQ_ENUM_535 +# define BOOST_PP_SEQ_ENUM_537(x) x, BOOST_PP_SEQ_ENUM_536 +# define BOOST_PP_SEQ_ENUM_538(x) x, BOOST_PP_SEQ_ENUM_537 +# define BOOST_PP_SEQ_ENUM_539(x) x, BOOST_PP_SEQ_ENUM_538 +# define BOOST_PP_SEQ_ENUM_540(x) x, BOOST_PP_SEQ_ENUM_539 +# define BOOST_PP_SEQ_ENUM_541(x) x, BOOST_PP_SEQ_ENUM_540 +# define BOOST_PP_SEQ_ENUM_542(x) x, BOOST_PP_SEQ_ENUM_541 +# define BOOST_PP_SEQ_ENUM_543(x) x, BOOST_PP_SEQ_ENUM_542 +# define BOOST_PP_SEQ_ENUM_544(x) x, BOOST_PP_SEQ_ENUM_543 +# define BOOST_PP_SEQ_ENUM_545(x) x, BOOST_PP_SEQ_ENUM_544 +# define BOOST_PP_SEQ_ENUM_546(x) x, BOOST_PP_SEQ_ENUM_545 +# define BOOST_PP_SEQ_ENUM_547(x) x, BOOST_PP_SEQ_ENUM_546 +# define BOOST_PP_SEQ_ENUM_548(x) x, BOOST_PP_SEQ_ENUM_547 +# define BOOST_PP_SEQ_ENUM_549(x) x, BOOST_PP_SEQ_ENUM_548 +# define BOOST_PP_SEQ_ENUM_550(x) x, BOOST_PP_SEQ_ENUM_549 +# define BOOST_PP_SEQ_ENUM_551(x) x, BOOST_PP_SEQ_ENUM_550 +# define BOOST_PP_SEQ_ENUM_552(x) x, BOOST_PP_SEQ_ENUM_551 +# define BOOST_PP_SEQ_ENUM_553(x) x, BOOST_PP_SEQ_ENUM_552 +# define BOOST_PP_SEQ_ENUM_554(x) x, BOOST_PP_SEQ_ENUM_553 +# define BOOST_PP_SEQ_ENUM_555(x) x, BOOST_PP_SEQ_ENUM_554 +# define BOOST_PP_SEQ_ENUM_556(x) x, BOOST_PP_SEQ_ENUM_555 +# define BOOST_PP_SEQ_ENUM_557(x) x, BOOST_PP_SEQ_ENUM_556 +# define BOOST_PP_SEQ_ENUM_558(x) x, BOOST_PP_SEQ_ENUM_557 +# define BOOST_PP_SEQ_ENUM_559(x) x, BOOST_PP_SEQ_ENUM_558 +# define BOOST_PP_SEQ_ENUM_560(x) x, BOOST_PP_SEQ_ENUM_559 +# define BOOST_PP_SEQ_ENUM_561(x) x, BOOST_PP_SEQ_ENUM_560 +# define BOOST_PP_SEQ_ENUM_562(x) x, BOOST_PP_SEQ_ENUM_561 +# define BOOST_PP_SEQ_ENUM_563(x) x, BOOST_PP_SEQ_ENUM_562 +# define BOOST_PP_SEQ_ENUM_564(x) x, BOOST_PP_SEQ_ENUM_563 +# define BOOST_PP_SEQ_ENUM_565(x) x, BOOST_PP_SEQ_ENUM_564 +# define BOOST_PP_SEQ_ENUM_566(x) x, BOOST_PP_SEQ_ENUM_565 +# define BOOST_PP_SEQ_ENUM_567(x) x, BOOST_PP_SEQ_ENUM_566 +# define BOOST_PP_SEQ_ENUM_568(x) x, BOOST_PP_SEQ_ENUM_567 +# define BOOST_PP_SEQ_ENUM_569(x) x, BOOST_PP_SEQ_ENUM_568 +# define BOOST_PP_SEQ_ENUM_570(x) x, BOOST_PP_SEQ_ENUM_569 +# define BOOST_PP_SEQ_ENUM_571(x) x, BOOST_PP_SEQ_ENUM_570 +# define BOOST_PP_SEQ_ENUM_572(x) x, BOOST_PP_SEQ_ENUM_571 +# define BOOST_PP_SEQ_ENUM_573(x) x, BOOST_PP_SEQ_ENUM_572 +# define BOOST_PP_SEQ_ENUM_574(x) x, BOOST_PP_SEQ_ENUM_573 +# define BOOST_PP_SEQ_ENUM_575(x) x, BOOST_PP_SEQ_ENUM_574 +# define BOOST_PP_SEQ_ENUM_576(x) x, BOOST_PP_SEQ_ENUM_575 +# define BOOST_PP_SEQ_ENUM_577(x) x, BOOST_PP_SEQ_ENUM_576 +# define BOOST_PP_SEQ_ENUM_578(x) x, BOOST_PP_SEQ_ENUM_577 +# define BOOST_PP_SEQ_ENUM_579(x) x, BOOST_PP_SEQ_ENUM_578 +# define BOOST_PP_SEQ_ENUM_580(x) x, BOOST_PP_SEQ_ENUM_579 +# define BOOST_PP_SEQ_ENUM_581(x) x, BOOST_PP_SEQ_ENUM_580 +# define BOOST_PP_SEQ_ENUM_582(x) x, BOOST_PP_SEQ_ENUM_581 +# define BOOST_PP_SEQ_ENUM_583(x) x, BOOST_PP_SEQ_ENUM_582 +# define BOOST_PP_SEQ_ENUM_584(x) x, BOOST_PP_SEQ_ENUM_583 +# define BOOST_PP_SEQ_ENUM_585(x) x, BOOST_PP_SEQ_ENUM_584 +# define BOOST_PP_SEQ_ENUM_586(x) x, BOOST_PP_SEQ_ENUM_585 +# define BOOST_PP_SEQ_ENUM_587(x) x, BOOST_PP_SEQ_ENUM_586 +# define BOOST_PP_SEQ_ENUM_588(x) x, BOOST_PP_SEQ_ENUM_587 +# define BOOST_PP_SEQ_ENUM_589(x) x, BOOST_PP_SEQ_ENUM_588 +# define BOOST_PP_SEQ_ENUM_590(x) x, BOOST_PP_SEQ_ENUM_589 +# define BOOST_PP_SEQ_ENUM_591(x) x, BOOST_PP_SEQ_ENUM_590 +# define BOOST_PP_SEQ_ENUM_592(x) x, BOOST_PP_SEQ_ENUM_591 +# define BOOST_PP_SEQ_ENUM_593(x) x, BOOST_PP_SEQ_ENUM_592 +# define BOOST_PP_SEQ_ENUM_594(x) x, BOOST_PP_SEQ_ENUM_593 +# define BOOST_PP_SEQ_ENUM_595(x) x, BOOST_PP_SEQ_ENUM_594 +# define BOOST_PP_SEQ_ENUM_596(x) x, BOOST_PP_SEQ_ENUM_595 +# define BOOST_PP_SEQ_ENUM_597(x) x, BOOST_PP_SEQ_ENUM_596 +# define BOOST_PP_SEQ_ENUM_598(x) x, BOOST_PP_SEQ_ENUM_597 +# define BOOST_PP_SEQ_ENUM_599(x) x, BOOST_PP_SEQ_ENUM_598 +# define BOOST_PP_SEQ_ENUM_600(x) x, BOOST_PP_SEQ_ENUM_599 +# define BOOST_PP_SEQ_ENUM_601(x) x, BOOST_PP_SEQ_ENUM_600 +# define BOOST_PP_SEQ_ENUM_602(x) x, BOOST_PP_SEQ_ENUM_601 +# define BOOST_PP_SEQ_ENUM_603(x) x, BOOST_PP_SEQ_ENUM_602 +# define BOOST_PP_SEQ_ENUM_604(x) x, BOOST_PP_SEQ_ENUM_603 +# define BOOST_PP_SEQ_ENUM_605(x) x, BOOST_PP_SEQ_ENUM_604 +# define BOOST_PP_SEQ_ENUM_606(x) x, BOOST_PP_SEQ_ENUM_605 +# define BOOST_PP_SEQ_ENUM_607(x) x, BOOST_PP_SEQ_ENUM_606 +# define BOOST_PP_SEQ_ENUM_608(x) x, BOOST_PP_SEQ_ENUM_607 +# define BOOST_PP_SEQ_ENUM_609(x) x, BOOST_PP_SEQ_ENUM_608 +# define BOOST_PP_SEQ_ENUM_610(x) x, BOOST_PP_SEQ_ENUM_609 +# define BOOST_PP_SEQ_ENUM_611(x) x, BOOST_PP_SEQ_ENUM_610 +# define BOOST_PP_SEQ_ENUM_612(x) x, BOOST_PP_SEQ_ENUM_611 +# define BOOST_PP_SEQ_ENUM_613(x) x, BOOST_PP_SEQ_ENUM_612 +# define BOOST_PP_SEQ_ENUM_614(x) x, BOOST_PP_SEQ_ENUM_613 +# define BOOST_PP_SEQ_ENUM_615(x) x, BOOST_PP_SEQ_ENUM_614 +# define BOOST_PP_SEQ_ENUM_616(x) x, BOOST_PP_SEQ_ENUM_615 +# define BOOST_PP_SEQ_ENUM_617(x) x, BOOST_PP_SEQ_ENUM_616 +# define BOOST_PP_SEQ_ENUM_618(x) x, BOOST_PP_SEQ_ENUM_617 +# define BOOST_PP_SEQ_ENUM_619(x) x, BOOST_PP_SEQ_ENUM_618 +# define BOOST_PP_SEQ_ENUM_620(x) x, BOOST_PP_SEQ_ENUM_619 +# define BOOST_PP_SEQ_ENUM_621(x) x, BOOST_PP_SEQ_ENUM_620 +# define BOOST_PP_SEQ_ENUM_622(x) x, BOOST_PP_SEQ_ENUM_621 +# define BOOST_PP_SEQ_ENUM_623(x) x, BOOST_PP_SEQ_ENUM_622 +# define BOOST_PP_SEQ_ENUM_624(x) x, BOOST_PP_SEQ_ENUM_623 +# define BOOST_PP_SEQ_ENUM_625(x) x, BOOST_PP_SEQ_ENUM_624 +# define BOOST_PP_SEQ_ENUM_626(x) x, BOOST_PP_SEQ_ENUM_625 +# define BOOST_PP_SEQ_ENUM_627(x) x, BOOST_PP_SEQ_ENUM_626 +# define BOOST_PP_SEQ_ENUM_628(x) x, BOOST_PP_SEQ_ENUM_627 +# define BOOST_PP_SEQ_ENUM_629(x) x, BOOST_PP_SEQ_ENUM_628 +# define BOOST_PP_SEQ_ENUM_630(x) x, BOOST_PP_SEQ_ENUM_629 +# define BOOST_PP_SEQ_ENUM_631(x) x, BOOST_PP_SEQ_ENUM_630 +# define BOOST_PP_SEQ_ENUM_632(x) x, BOOST_PP_SEQ_ENUM_631 +# define BOOST_PP_SEQ_ENUM_633(x) x, BOOST_PP_SEQ_ENUM_632 +# define BOOST_PP_SEQ_ENUM_634(x) x, BOOST_PP_SEQ_ENUM_633 +# define BOOST_PP_SEQ_ENUM_635(x) x, BOOST_PP_SEQ_ENUM_634 +# define BOOST_PP_SEQ_ENUM_636(x) x, BOOST_PP_SEQ_ENUM_635 +# define BOOST_PP_SEQ_ENUM_637(x) x, BOOST_PP_SEQ_ENUM_636 +# define BOOST_PP_SEQ_ENUM_638(x) x, BOOST_PP_SEQ_ENUM_637 +# define BOOST_PP_SEQ_ENUM_639(x) x, BOOST_PP_SEQ_ENUM_638 +# define BOOST_PP_SEQ_ENUM_640(x) x, BOOST_PP_SEQ_ENUM_639 +# define BOOST_PP_SEQ_ENUM_641(x) x, BOOST_PP_SEQ_ENUM_640 +# define BOOST_PP_SEQ_ENUM_642(x) x, BOOST_PP_SEQ_ENUM_641 +# define BOOST_PP_SEQ_ENUM_643(x) x, BOOST_PP_SEQ_ENUM_642 +# define BOOST_PP_SEQ_ENUM_644(x) x, BOOST_PP_SEQ_ENUM_643 +# define BOOST_PP_SEQ_ENUM_645(x) x, BOOST_PP_SEQ_ENUM_644 +# define BOOST_PP_SEQ_ENUM_646(x) x, BOOST_PP_SEQ_ENUM_645 +# define BOOST_PP_SEQ_ENUM_647(x) x, BOOST_PP_SEQ_ENUM_646 +# define BOOST_PP_SEQ_ENUM_648(x) x, BOOST_PP_SEQ_ENUM_647 +# define BOOST_PP_SEQ_ENUM_649(x) x, BOOST_PP_SEQ_ENUM_648 +# define BOOST_PP_SEQ_ENUM_650(x) x, BOOST_PP_SEQ_ENUM_649 +# define BOOST_PP_SEQ_ENUM_651(x) x, BOOST_PP_SEQ_ENUM_650 +# define BOOST_PP_SEQ_ENUM_652(x) x, BOOST_PP_SEQ_ENUM_651 +# define BOOST_PP_SEQ_ENUM_653(x) x, BOOST_PP_SEQ_ENUM_652 +# define BOOST_PP_SEQ_ENUM_654(x) x, BOOST_PP_SEQ_ENUM_653 +# define BOOST_PP_SEQ_ENUM_655(x) x, BOOST_PP_SEQ_ENUM_654 +# define BOOST_PP_SEQ_ENUM_656(x) x, BOOST_PP_SEQ_ENUM_655 +# define BOOST_PP_SEQ_ENUM_657(x) x, BOOST_PP_SEQ_ENUM_656 +# define BOOST_PP_SEQ_ENUM_658(x) x, BOOST_PP_SEQ_ENUM_657 +# define BOOST_PP_SEQ_ENUM_659(x) x, BOOST_PP_SEQ_ENUM_658 +# define BOOST_PP_SEQ_ENUM_660(x) x, BOOST_PP_SEQ_ENUM_659 +# define BOOST_PP_SEQ_ENUM_661(x) x, BOOST_PP_SEQ_ENUM_660 +# define BOOST_PP_SEQ_ENUM_662(x) x, BOOST_PP_SEQ_ENUM_661 +# define BOOST_PP_SEQ_ENUM_663(x) x, BOOST_PP_SEQ_ENUM_662 +# define BOOST_PP_SEQ_ENUM_664(x) x, BOOST_PP_SEQ_ENUM_663 +# define BOOST_PP_SEQ_ENUM_665(x) x, BOOST_PP_SEQ_ENUM_664 +# define BOOST_PP_SEQ_ENUM_666(x) x, BOOST_PP_SEQ_ENUM_665 +# define BOOST_PP_SEQ_ENUM_667(x) x, BOOST_PP_SEQ_ENUM_666 +# define BOOST_PP_SEQ_ENUM_668(x) x, BOOST_PP_SEQ_ENUM_667 +# define BOOST_PP_SEQ_ENUM_669(x) x, BOOST_PP_SEQ_ENUM_668 +# define BOOST_PP_SEQ_ENUM_670(x) x, BOOST_PP_SEQ_ENUM_669 +# define BOOST_PP_SEQ_ENUM_671(x) x, BOOST_PP_SEQ_ENUM_670 +# define BOOST_PP_SEQ_ENUM_672(x) x, BOOST_PP_SEQ_ENUM_671 +# define BOOST_PP_SEQ_ENUM_673(x) x, BOOST_PP_SEQ_ENUM_672 +# define BOOST_PP_SEQ_ENUM_674(x) x, BOOST_PP_SEQ_ENUM_673 +# define BOOST_PP_SEQ_ENUM_675(x) x, BOOST_PP_SEQ_ENUM_674 +# define BOOST_PP_SEQ_ENUM_676(x) x, BOOST_PP_SEQ_ENUM_675 +# define BOOST_PP_SEQ_ENUM_677(x) x, BOOST_PP_SEQ_ENUM_676 +# define BOOST_PP_SEQ_ENUM_678(x) x, BOOST_PP_SEQ_ENUM_677 +# define BOOST_PP_SEQ_ENUM_679(x) x, BOOST_PP_SEQ_ENUM_678 +# define BOOST_PP_SEQ_ENUM_680(x) x, BOOST_PP_SEQ_ENUM_679 +# define BOOST_PP_SEQ_ENUM_681(x) x, BOOST_PP_SEQ_ENUM_680 +# define BOOST_PP_SEQ_ENUM_682(x) x, BOOST_PP_SEQ_ENUM_681 +# define BOOST_PP_SEQ_ENUM_683(x) x, BOOST_PP_SEQ_ENUM_682 +# define BOOST_PP_SEQ_ENUM_684(x) x, BOOST_PP_SEQ_ENUM_683 +# define BOOST_PP_SEQ_ENUM_685(x) x, BOOST_PP_SEQ_ENUM_684 +# define BOOST_PP_SEQ_ENUM_686(x) x, BOOST_PP_SEQ_ENUM_685 +# define BOOST_PP_SEQ_ENUM_687(x) x, BOOST_PP_SEQ_ENUM_686 +# define BOOST_PP_SEQ_ENUM_688(x) x, BOOST_PP_SEQ_ENUM_687 +# define BOOST_PP_SEQ_ENUM_689(x) x, BOOST_PP_SEQ_ENUM_688 +# define BOOST_PP_SEQ_ENUM_690(x) x, BOOST_PP_SEQ_ENUM_689 +# define BOOST_PP_SEQ_ENUM_691(x) x, BOOST_PP_SEQ_ENUM_690 +# define BOOST_PP_SEQ_ENUM_692(x) x, BOOST_PP_SEQ_ENUM_691 +# define BOOST_PP_SEQ_ENUM_693(x) x, BOOST_PP_SEQ_ENUM_692 +# define BOOST_PP_SEQ_ENUM_694(x) x, BOOST_PP_SEQ_ENUM_693 +# define BOOST_PP_SEQ_ENUM_695(x) x, BOOST_PP_SEQ_ENUM_694 +# define BOOST_PP_SEQ_ENUM_696(x) x, BOOST_PP_SEQ_ENUM_695 +# define BOOST_PP_SEQ_ENUM_697(x) x, BOOST_PP_SEQ_ENUM_696 +# define BOOST_PP_SEQ_ENUM_698(x) x, BOOST_PP_SEQ_ENUM_697 +# define BOOST_PP_SEQ_ENUM_699(x) x, BOOST_PP_SEQ_ENUM_698 +# define BOOST_PP_SEQ_ENUM_700(x) x, BOOST_PP_SEQ_ENUM_699 +# define BOOST_PP_SEQ_ENUM_701(x) x, BOOST_PP_SEQ_ENUM_700 +# define BOOST_PP_SEQ_ENUM_702(x) x, BOOST_PP_SEQ_ENUM_701 +# define BOOST_PP_SEQ_ENUM_703(x) x, BOOST_PP_SEQ_ENUM_702 +# define BOOST_PP_SEQ_ENUM_704(x) x, BOOST_PP_SEQ_ENUM_703 +# define BOOST_PP_SEQ_ENUM_705(x) x, BOOST_PP_SEQ_ENUM_704 +# define BOOST_PP_SEQ_ENUM_706(x) x, BOOST_PP_SEQ_ENUM_705 +# define BOOST_PP_SEQ_ENUM_707(x) x, BOOST_PP_SEQ_ENUM_706 +# define BOOST_PP_SEQ_ENUM_708(x) x, BOOST_PP_SEQ_ENUM_707 +# define BOOST_PP_SEQ_ENUM_709(x) x, BOOST_PP_SEQ_ENUM_708 +# define BOOST_PP_SEQ_ENUM_710(x) x, BOOST_PP_SEQ_ENUM_709 +# define BOOST_PP_SEQ_ENUM_711(x) x, BOOST_PP_SEQ_ENUM_710 +# define BOOST_PP_SEQ_ENUM_712(x) x, BOOST_PP_SEQ_ENUM_711 +# define BOOST_PP_SEQ_ENUM_713(x) x, BOOST_PP_SEQ_ENUM_712 +# define BOOST_PP_SEQ_ENUM_714(x) x, BOOST_PP_SEQ_ENUM_713 +# define BOOST_PP_SEQ_ENUM_715(x) x, BOOST_PP_SEQ_ENUM_714 +# define BOOST_PP_SEQ_ENUM_716(x) x, BOOST_PP_SEQ_ENUM_715 +# define BOOST_PP_SEQ_ENUM_717(x) x, BOOST_PP_SEQ_ENUM_716 +# define BOOST_PP_SEQ_ENUM_718(x) x, BOOST_PP_SEQ_ENUM_717 +# define BOOST_PP_SEQ_ENUM_719(x) x, BOOST_PP_SEQ_ENUM_718 +# define BOOST_PP_SEQ_ENUM_720(x) x, BOOST_PP_SEQ_ENUM_719 +# define BOOST_PP_SEQ_ENUM_721(x) x, BOOST_PP_SEQ_ENUM_720 +# define BOOST_PP_SEQ_ENUM_722(x) x, BOOST_PP_SEQ_ENUM_721 +# define BOOST_PP_SEQ_ENUM_723(x) x, BOOST_PP_SEQ_ENUM_722 +# define BOOST_PP_SEQ_ENUM_724(x) x, BOOST_PP_SEQ_ENUM_723 +# define BOOST_PP_SEQ_ENUM_725(x) x, BOOST_PP_SEQ_ENUM_724 +# define BOOST_PP_SEQ_ENUM_726(x) x, BOOST_PP_SEQ_ENUM_725 +# define BOOST_PP_SEQ_ENUM_727(x) x, BOOST_PP_SEQ_ENUM_726 +# define BOOST_PP_SEQ_ENUM_728(x) x, BOOST_PP_SEQ_ENUM_727 +# define BOOST_PP_SEQ_ENUM_729(x) x, BOOST_PP_SEQ_ENUM_728 +# define BOOST_PP_SEQ_ENUM_730(x) x, BOOST_PP_SEQ_ENUM_729 +# define BOOST_PP_SEQ_ENUM_731(x) x, BOOST_PP_SEQ_ENUM_730 +# define BOOST_PP_SEQ_ENUM_732(x) x, BOOST_PP_SEQ_ENUM_731 +# define BOOST_PP_SEQ_ENUM_733(x) x, BOOST_PP_SEQ_ENUM_732 +# define BOOST_PP_SEQ_ENUM_734(x) x, BOOST_PP_SEQ_ENUM_733 +# define BOOST_PP_SEQ_ENUM_735(x) x, BOOST_PP_SEQ_ENUM_734 +# define BOOST_PP_SEQ_ENUM_736(x) x, BOOST_PP_SEQ_ENUM_735 +# define BOOST_PP_SEQ_ENUM_737(x) x, BOOST_PP_SEQ_ENUM_736 +# define BOOST_PP_SEQ_ENUM_738(x) x, BOOST_PP_SEQ_ENUM_737 +# define BOOST_PP_SEQ_ENUM_739(x) x, BOOST_PP_SEQ_ENUM_738 +# define BOOST_PP_SEQ_ENUM_740(x) x, BOOST_PP_SEQ_ENUM_739 +# define BOOST_PP_SEQ_ENUM_741(x) x, BOOST_PP_SEQ_ENUM_740 +# define BOOST_PP_SEQ_ENUM_742(x) x, BOOST_PP_SEQ_ENUM_741 +# define BOOST_PP_SEQ_ENUM_743(x) x, BOOST_PP_SEQ_ENUM_742 +# define BOOST_PP_SEQ_ENUM_744(x) x, BOOST_PP_SEQ_ENUM_743 +# define BOOST_PP_SEQ_ENUM_745(x) x, BOOST_PP_SEQ_ENUM_744 +# define BOOST_PP_SEQ_ENUM_746(x) x, BOOST_PP_SEQ_ENUM_745 +# define BOOST_PP_SEQ_ENUM_747(x) x, BOOST_PP_SEQ_ENUM_746 +# define BOOST_PP_SEQ_ENUM_748(x) x, BOOST_PP_SEQ_ENUM_747 +# define BOOST_PP_SEQ_ENUM_749(x) x, BOOST_PP_SEQ_ENUM_748 +# define BOOST_PP_SEQ_ENUM_750(x) x, BOOST_PP_SEQ_ENUM_749 +# define BOOST_PP_SEQ_ENUM_751(x) x, BOOST_PP_SEQ_ENUM_750 +# define BOOST_PP_SEQ_ENUM_752(x) x, BOOST_PP_SEQ_ENUM_751 +# define BOOST_PP_SEQ_ENUM_753(x) x, BOOST_PP_SEQ_ENUM_752 +# define BOOST_PP_SEQ_ENUM_754(x) x, BOOST_PP_SEQ_ENUM_753 +# define BOOST_PP_SEQ_ENUM_755(x) x, BOOST_PP_SEQ_ENUM_754 +# define BOOST_PP_SEQ_ENUM_756(x) x, BOOST_PP_SEQ_ENUM_755 +# define BOOST_PP_SEQ_ENUM_757(x) x, BOOST_PP_SEQ_ENUM_756 +# define BOOST_PP_SEQ_ENUM_758(x) x, BOOST_PP_SEQ_ENUM_757 +# define BOOST_PP_SEQ_ENUM_759(x) x, BOOST_PP_SEQ_ENUM_758 +# define BOOST_PP_SEQ_ENUM_760(x) x, BOOST_PP_SEQ_ENUM_759 +# define BOOST_PP_SEQ_ENUM_761(x) x, BOOST_PP_SEQ_ENUM_760 +# define BOOST_PP_SEQ_ENUM_762(x) x, BOOST_PP_SEQ_ENUM_761 +# define BOOST_PP_SEQ_ENUM_763(x) x, BOOST_PP_SEQ_ENUM_762 +# define BOOST_PP_SEQ_ENUM_764(x) x, BOOST_PP_SEQ_ENUM_763 +# define BOOST_PP_SEQ_ENUM_765(x) x, BOOST_PP_SEQ_ENUM_764 +# define BOOST_PP_SEQ_ENUM_766(x) x, BOOST_PP_SEQ_ENUM_765 +# define BOOST_PP_SEQ_ENUM_767(x) x, BOOST_PP_SEQ_ENUM_766 +# define BOOST_PP_SEQ_ENUM_768(x) x, BOOST_PP_SEQ_ENUM_767 +# define BOOST_PP_SEQ_ENUM_769(x) x, BOOST_PP_SEQ_ENUM_768 +# define BOOST_PP_SEQ_ENUM_770(x) x, BOOST_PP_SEQ_ENUM_769 +# define BOOST_PP_SEQ_ENUM_771(x) x, BOOST_PP_SEQ_ENUM_770 +# define BOOST_PP_SEQ_ENUM_772(x) x, BOOST_PP_SEQ_ENUM_771 +# define BOOST_PP_SEQ_ENUM_773(x) x, BOOST_PP_SEQ_ENUM_772 +# define BOOST_PP_SEQ_ENUM_774(x) x, BOOST_PP_SEQ_ENUM_773 +# define BOOST_PP_SEQ_ENUM_775(x) x, BOOST_PP_SEQ_ENUM_774 +# define BOOST_PP_SEQ_ENUM_776(x) x, BOOST_PP_SEQ_ENUM_775 +# define BOOST_PP_SEQ_ENUM_777(x) x, BOOST_PP_SEQ_ENUM_776 +# define BOOST_PP_SEQ_ENUM_778(x) x, BOOST_PP_SEQ_ENUM_777 +# define BOOST_PP_SEQ_ENUM_779(x) x, BOOST_PP_SEQ_ENUM_778 +# define BOOST_PP_SEQ_ENUM_780(x) x, BOOST_PP_SEQ_ENUM_779 +# define BOOST_PP_SEQ_ENUM_781(x) x, BOOST_PP_SEQ_ENUM_780 +# define BOOST_PP_SEQ_ENUM_782(x) x, BOOST_PP_SEQ_ENUM_781 +# define BOOST_PP_SEQ_ENUM_783(x) x, BOOST_PP_SEQ_ENUM_782 +# define BOOST_PP_SEQ_ENUM_784(x) x, BOOST_PP_SEQ_ENUM_783 +# define BOOST_PP_SEQ_ENUM_785(x) x, BOOST_PP_SEQ_ENUM_784 +# define BOOST_PP_SEQ_ENUM_786(x) x, BOOST_PP_SEQ_ENUM_785 +# define BOOST_PP_SEQ_ENUM_787(x) x, BOOST_PP_SEQ_ENUM_786 +# define BOOST_PP_SEQ_ENUM_788(x) x, BOOST_PP_SEQ_ENUM_787 +# define BOOST_PP_SEQ_ENUM_789(x) x, BOOST_PP_SEQ_ENUM_788 +# define BOOST_PP_SEQ_ENUM_790(x) x, BOOST_PP_SEQ_ENUM_789 +# define BOOST_PP_SEQ_ENUM_791(x) x, BOOST_PP_SEQ_ENUM_790 +# define BOOST_PP_SEQ_ENUM_792(x) x, BOOST_PP_SEQ_ENUM_791 +# define BOOST_PP_SEQ_ENUM_793(x) x, BOOST_PP_SEQ_ENUM_792 +# define BOOST_PP_SEQ_ENUM_794(x) x, BOOST_PP_SEQ_ENUM_793 +# define BOOST_PP_SEQ_ENUM_795(x) x, BOOST_PP_SEQ_ENUM_794 +# define BOOST_PP_SEQ_ENUM_796(x) x, BOOST_PP_SEQ_ENUM_795 +# define BOOST_PP_SEQ_ENUM_797(x) x, BOOST_PP_SEQ_ENUM_796 +# define BOOST_PP_SEQ_ENUM_798(x) x, BOOST_PP_SEQ_ENUM_797 +# define BOOST_PP_SEQ_ENUM_799(x) x, BOOST_PP_SEQ_ENUM_798 +# define BOOST_PP_SEQ_ENUM_800(x) x, BOOST_PP_SEQ_ENUM_799 +# define BOOST_PP_SEQ_ENUM_801(x) x, BOOST_PP_SEQ_ENUM_800 +# define BOOST_PP_SEQ_ENUM_802(x) x, BOOST_PP_SEQ_ENUM_801 +# define BOOST_PP_SEQ_ENUM_803(x) x, BOOST_PP_SEQ_ENUM_802 +# define BOOST_PP_SEQ_ENUM_804(x) x, BOOST_PP_SEQ_ENUM_803 +# define BOOST_PP_SEQ_ENUM_805(x) x, BOOST_PP_SEQ_ENUM_804 +# define BOOST_PP_SEQ_ENUM_806(x) x, BOOST_PP_SEQ_ENUM_805 +# define BOOST_PP_SEQ_ENUM_807(x) x, BOOST_PP_SEQ_ENUM_806 +# define BOOST_PP_SEQ_ENUM_808(x) x, BOOST_PP_SEQ_ENUM_807 +# define BOOST_PP_SEQ_ENUM_809(x) x, BOOST_PP_SEQ_ENUM_808 +# define BOOST_PP_SEQ_ENUM_810(x) x, BOOST_PP_SEQ_ENUM_809 +# define BOOST_PP_SEQ_ENUM_811(x) x, BOOST_PP_SEQ_ENUM_810 +# define BOOST_PP_SEQ_ENUM_812(x) x, BOOST_PP_SEQ_ENUM_811 +# define BOOST_PP_SEQ_ENUM_813(x) x, BOOST_PP_SEQ_ENUM_812 +# define BOOST_PP_SEQ_ENUM_814(x) x, BOOST_PP_SEQ_ENUM_813 +# define BOOST_PP_SEQ_ENUM_815(x) x, BOOST_PP_SEQ_ENUM_814 +# define BOOST_PP_SEQ_ENUM_816(x) x, BOOST_PP_SEQ_ENUM_815 +# define BOOST_PP_SEQ_ENUM_817(x) x, BOOST_PP_SEQ_ENUM_816 +# define BOOST_PP_SEQ_ENUM_818(x) x, BOOST_PP_SEQ_ENUM_817 +# define BOOST_PP_SEQ_ENUM_819(x) x, BOOST_PP_SEQ_ENUM_818 +# define BOOST_PP_SEQ_ENUM_820(x) x, BOOST_PP_SEQ_ENUM_819 +# define BOOST_PP_SEQ_ENUM_821(x) x, BOOST_PP_SEQ_ENUM_820 +# define BOOST_PP_SEQ_ENUM_822(x) x, BOOST_PP_SEQ_ENUM_821 +# define BOOST_PP_SEQ_ENUM_823(x) x, BOOST_PP_SEQ_ENUM_822 +# define BOOST_PP_SEQ_ENUM_824(x) x, BOOST_PP_SEQ_ENUM_823 +# define BOOST_PP_SEQ_ENUM_825(x) x, BOOST_PP_SEQ_ENUM_824 +# define BOOST_PP_SEQ_ENUM_826(x) x, BOOST_PP_SEQ_ENUM_825 +# define BOOST_PP_SEQ_ENUM_827(x) x, BOOST_PP_SEQ_ENUM_826 +# define BOOST_PP_SEQ_ENUM_828(x) x, BOOST_PP_SEQ_ENUM_827 +# define BOOST_PP_SEQ_ENUM_829(x) x, BOOST_PP_SEQ_ENUM_828 +# define BOOST_PP_SEQ_ENUM_830(x) x, BOOST_PP_SEQ_ENUM_829 +# define BOOST_PP_SEQ_ENUM_831(x) x, BOOST_PP_SEQ_ENUM_830 +# define BOOST_PP_SEQ_ENUM_832(x) x, BOOST_PP_SEQ_ENUM_831 +# define BOOST_PP_SEQ_ENUM_833(x) x, BOOST_PP_SEQ_ENUM_832 +# define BOOST_PP_SEQ_ENUM_834(x) x, BOOST_PP_SEQ_ENUM_833 +# define BOOST_PP_SEQ_ENUM_835(x) x, BOOST_PP_SEQ_ENUM_834 +# define BOOST_PP_SEQ_ENUM_836(x) x, BOOST_PP_SEQ_ENUM_835 +# define BOOST_PP_SEQ_ENUM_837(x) x, BOOST_PP_SEQ_ENUM_836 +# define BOOST_PP_SEQ_ENUM_838(x) x, BOOST_PP_SEQ_ENUM_837 +# define BOOST_PP_SEQ_ENUM_839(x) x, BOOST_PP_SEQ_ENUM_838 +# define BOOST_PP_SEQ_ENUM_840(x) x, BOOST_PP_SEQ_ENUM_839 +# define BOOST_PP_SEQ_ENUM_841(x) x, BOOST_PP_SEQ_ENUM_840 +# define BOOST_PP_SEQ_ENUM_842(x) x, BOOST_PP_SEQ_ENUM_841 +# define BOOST_PP_SEQ_ENUM_843(x) x, BOOST_PP_SEQ_ENUM_842 +# define BOOST_PP_SEQ_ENUM_844(x) x, BOOST_PP_SEQ_ENUM_843 +# define BOOST_PP_SEQ_ENUM_845(x) x, BOOST_PP_SEQ_ENUM_844 +# define BOOST_PP_SEQ_ENUM_846(x) x, BOOST_PP_SEQ_ENUM_845 +# define BOOST_PP_SEQ_ENUM_847(x) x, BOOST_PP_SEQ_ENUM_846 +# define BOOST_PP_SEQ_ENUM_848(x) x, BOOST_PP_SEQ_ENUM_847 +# define BOOST_PP_SEQ_ENUM_849(x) x, BOOST_PP_SEQ_ENUM_848 +# define BOOST_PP_SEQ_ENUM_850(x) x, BOOST_PP_SEQ_ENUM_849 +# define BOOST_PP_SEQ_ENUM_851(x) x, BOOST_PP_SEQ_ENUM_850 +# define BOOST_PP_SEQ_ENUM_852(x) x, BOOST_PP_SEQ_ENUM_851 +# define BOOST_PP_SEQ_ENUM_853(x) x, BOOST_PP_SEQ_ENUM_852 +# define BOOST_PP_SEQ_ENUM_854(x) x, BOOST_PP_SEQ_ENUM_853 +# define BOOST_PP_SEQ_ENUM_855(x) x, BOOST_PP_SEQ_ENUM_854 +# define BOOST_PP_SEQ_ENUM_856(x) x, BOOST_PP_SEQ_ENUM_855 +# define BOOST_PP_SEQ_ENUM_857(x) x, BOOST_PP_SEQ_ENUM_856 +# define BOOST_PP_SEQ_ENUM_858(x) x, BOOST_PP_SEQ_ENUM_857 +# define BOOST_PP_SEQ_ENUM_859(x) x, BOOST_PP_SEQ_ENUM_858 +# define BOOST_PP_SEQ_ENUM_860(x) x, BOOST_PP_SEQ_ENUM_859 +# define BOOST_PP_SEQ_ENUM_861(x) x, BOOST_PP_SEQ_ENUM_860 +# define BOOST_PP_SEQ_ENUM_862(x) x, BOOST_PP_SEQ_ENUM_861 +# define BOOST_PP_SEQ_ENUM_863(x) x, BOOST_PP_SEQ_ENUM_862 +# define BOOST_PP_SEQ_ENUM_864(x) x, BOOST_PP_SEQ_ENUM_863 +# define BOOST_PP_SEQ_ENUM_865(x) x, BOOST_PP_SEQ_ENUM_864 +# define BOOST_PP_SEQ_ENUM_866(x) x, BOOST_PP_SEQ_ENUM_865 +# define BOOST_PP_SEQ_ENUM_867(x) x, BOOST_PP_SEQ_ENUM_866 +# define BOOST_PP_SEQ_ENUM_868(x) x, BOOST_PP_SEQ_ENUM_867 +# define BOOST_PP_SEQ_ENUM_869(x) x, BOOST_PP_SEQ_ENUM_868 +# define BOOST_PP_SEQ_ENUM_870(x) x, BOOST_PP_SEQ_ENUM_869 +# define BOOST_PP_SEQ_ENUM_871(x) x, BOOST_PP_SEQ_ENUM_870 +# define BOOST_PP_SEQ_ENUM_872(x) x, BOOST_PP_SEQ_ENUM_871 +# define BOOST_PP_SEQ_ENUM_873(x) x, BOOST_PP_SEQ_ENUM_872 +# define BOOST_PP_SEQ_ENUM_874(x) x, BOOST_PP_SEQ_ENUM_873 +# define BOOST_PP_SEQ_ENUM_875(x) x, BOOST_PP_SEQ_ENUM_874 +# define BOOST_PP_SEQ_ENUM_876(x) x, BOOST_PP_SEQ_ENUM_875 +# define BOOST_PP_SEQ_ENUM_877(x) x, BOOST_PP_SEQ_ENUM_876 +# define BOOST_PP_SEQ_ENUM_878(x) x, BOOST_PP_SEQ_ENUM_877 +# define BOOST_PP_SEQ_ENUM_879(x) x, BOOST_PP_SEQ_ENUM_878 +# define BOOST_PP_SEQ_ENUM_880(x) x, BOOST_PP_SEQ_ENUM_879 +# define BOOST_PP_SEQ_ENUM_881(x) x, BOOST_PP_SEQ_ENUM_880 +# define BOOST_PP_SEQ_ENUM_882(x) x, BOOST_PP_SEQ_ENUM_881 +# define BOOST_PP_SEQ_ENUM_883(x) x, BOOST_PP_SEQ_ENUM_882 +# define BOOST_PP_SEQ_ENUM_884(x) x, BOOST_PP_SEQ_ENUM_883 +# define BOOST_PP_SEQ_ENUM_885(x) x, BOOST_PP_SEQ_ENUM_884 +# define BOOST_PP_SEQ_ENUM_886(x) x, BOOST_PP_SEQ_ENUM_885 +# define BOOST_PP_SEQ_ENUM_887(x) x, BOOST_PP_SEQ_ENUM_886 +# define BOOST_PP_SEQ_ENUM_888(x) x, BOOST_PP_SEQ_ENUM_887 +# define BOOST_PP_SEQ_ENUM_889(x) x, BOOST_PP_SEQ_ENUM_888 +# define BOOST_PP_SEQ_ENUM_890(x) x, BOOST_PP_SEQ_ENUM_889 +# define BOOST_PP_SEQ_ENUM_891(x) x, BOOST_PP_SEQ_ENUM_890 +# define BOOST_PP_SEQ_ENUM_892(x) x, BOOST_PP_SEQ_ENUM_891 +# define BOOST_PP_SEQ_ENUM_893(x) x, BOOST_PP_SEQ_ENUM_892 +# define BOOST_PP_SEQ_ENUM_894(x) x, BOOST_PP_SEQ_ENUM_893 +# define BOOST_PP_SEQ_ENUM_895(x) x, BOOST_PP_SEQ_ENUM_894 +# define BOOST_PP_SEQ_ENUM_896(x) x, BOOST_PP_SEQ_ENUM_895 +# define BOOST_PP_SEQ_ENUM_897(x) x, BOOST_PP_SEQ_ENUM_896 +# define BOOST_PP_SEQ_ENUM_898(x) x, BOOST_PP_SEQ_ENUM_897 +# define BOOST_PP_SEQ_ENUM_899(x) x, BOOST_PP_SEQ_ENUM_898 +# define BOOST_PP_SEQ_ENUM_900(x) x, BOOST_PP_SEQ_ENUM_899 +# define BOOST_PP_SEQ_ENUM_901(x) x, BOOST_PP_SEQ_ENUM_900 +# define BOOST_PP_SEQ_ENUM_902(x) x, BOOST_PP_SEQ_ENUM_901 +# define BOOST_PP_SEQ_ENUM_903(x) x, BOOST_PP_SEQ_ENUM_902 +# define BOOST_PP_SEQ_ENUM_904(x) x, BOOST_PP_SEQ_ENUM_903 +# define BOOST_PP_SEQ_ENUM_905(x) x, BOOST_PP_SEQ_ENUM_904 +# define BOOST_PP_SEQ_ENUM_906(x) x, BOOST_PP_SEQ_ENUM_905 +# define BOOST_PP_SEQ_ENUM_907(x) x, BOOST_PP_SEQ_ENUM_906 +# define BOOST_PP_SEQ_ENUM_908(x) x, BOOST_PP_SEQ_ENUM_907 +# define BOOST_PP_SEQ_ENUM_909(x) x, BOOST_PP_SEQ_ENUM_908 +# define BOOST_PP_SEQ_ENUM_910(x) x, BOOST_PP_SEQ_ENUM_909 +# define BOOST_PP_SEQ_ENUM_911(x) x, BOOST_PP_SEQ_ENUM_910 +# define BOOST_PP_SEQ_ENUM_912(x) x, BOOST_PP_SEQ_ENUM_911 +# define BOOST_PP_SEQ_ENUM_913(x) x, BOOST_PP_SEQ_ENUM_912 +# define BOOST_PP_SEQ_ENUM_914(x) x, BOOST_PP_SEQ_ENUM_913 +# define BOOST_PP_SEQ_ENUM_915(x) x, BOOST_PP_SEQ_ENUM_914 +# define BOOST_PP_SEQ_ENUM_916(x) x, BOOST_PP_SEQ_ENUM_915 +# define BOOST_PP_SEQ_ENUM_917(x) x, BOOST_PP_SEQ_ENUM_916 +# define BOOST_PP_SEQ_ENUM_918(x) x, BOOST_PP_SEQ_ENUM_917 +# define BOOST_PP_SEQ_ENUM_919(x) x, BOOST_PP_SEQ_ENUM_918 +# define BOOST_PP_SEQ_ENUM_920(x) x, BOOST_PP_SEQ_ENUM_919 +# define BOOST_PP_SEQ_ENUM_921(x) x, BOOST_PP_SEQ_ENUM_920 +# define BOOST_PP_SEQ_ENUM_922(x) x, BOOST_PP_SEQ_ENUM_921 +# define BOOST_PP_SEQ_ENUM_923(x) x, BOOST_PP_SEQ_ENUM_922 +# define BOOST_PP_SEQ_ENUM_924(x) x, BOOST_PP_SEQ_ENUM_923 +# define BOOST_PP_SEQ_ENUM_925(x) x, BOOST_PP_SEQ_ENUM_924 +# define BOOST_PP_SEQ_ENUM_926(x) x, BOOST_PP_SEQ_ENUM_925 +# define BOOST_PP_SEQ_ENUM_927(x) x, BOOST_PP_SEQ_ENUM_926 +# define BOOST_PP_SEQ_ENUM_928(x) x, BOOST_PP_SEQ_ENUM_927 +# define BOOST_PP_SEQ_ENUM_929(x) x, BOOST_PP_SEQ_ENUM_928 +# define BOOST_PP_SEQ_ENUM_930(x) x, BOOST_PP_SEQ_ENUM_929 +# define BOOST_PP_SEQ_ENUM_931(x) x, BOOST_PP_SEQ_ENUM_930 +# define BOOST_PP_SEQ_ENUM_932(x) x, BOOST_PP_SEQ_ENUM_931 +# define BOOST_PP_SEQ_ENUM_933(x) x, BOOST_PP_SEQ_ENUM_932 +# define BOOST_PP_SEQ_ENUM_934(x) x, BOOST_PP_SEQ_ENUM_933 +# define BOOST_PP_SEQ_ENUM_935(x) x, BOOST_PP_SEQ_ENUM_934 +# define BOOST_PP_SEQ_ENUM_936(x) x, BOOST_PP_SEQ_ENUM_935 +# define BOOST_PP_SEQ_ENUM_937(x) x, BOOST_PP_SEQ_ENUM_936 +# define BOOST_PP_SEQ_ENUM_938(x) x, BOOST_PP_SEQ_ENUM_937 +# define BOOST_PP_SEQ_ENUM_939(x) x, BOOST_PP_SEQ_ENUM_938 +# define BOOST_PP_SEQ_ENUM_940(x) x, BOOST_PP_SEQ_ENUM_939 +# define BOOST_PP_SEQ_ENUM_941(x) x, BOOST_PP_SEQ_ENUM_940 +# define BOOST_PP_SEQ_ENUM_942(x) x, BOOST_PP_SEQ_ENUM_941 +# define BOOST_PP_SEQ_ENUM_943(x) x, BOOST_PP_SEQ_ENUM_942 +# define BOOST_PP_SEQ_ENUM_944(x) x, BOOST_PP_SEQ_ENUM_943 +# define BOOST_PP_SEQ_ENUM_945(x) x, BOOST_PP_SEQ_ENUM_944 +# define BOOST_PP_SEQ_ENUM_946(x) x, BOOST_PP_SEQ_ENUM_945 +# define BOOST_PP_SEQ_ENUM_947(x) x, BOOST_PP_SEQ_ENUM_946 +# define BOOST_PP_SEQ_ENUM_948(x) x, BOOST_PP_SEQ_ENUM_947 +# define BOOST_PP_SEQ_ENUM_949(x) x, BOOST_PP_SEQ_ENUM_948 +# define BOOST_PP_SEQ_ENUM_950(x) x, BOOST_PP_SEQ_ENUM_949 +# define BOOST_PP_SEQ_ENUM_951(x) x, BOOST_PP_SEQ_ENUM_950 +# define BOOST_PP_SEQ_ENUM_952(x) x, BOOST_PP_SEQ_ENUM_951 +# define BOOST_PP_SEQ_ENUM_953(x) x, BOOST_PP_SEQ_ENUM_952 +# define BOOST_PP_SEQ_ENUM_954(x) x, BOOST_PP_SEQ_ENUM_953 +# define BOOST_PP_SEQ_ENUM_955(x) x, BOOST_PP_SEQ_ENUM_954 +# define BOOST_PP_SEQ_ENUM_956(x) x, BOOST_PP_SEQ_ENUM_955 +# define BOOST_PP_SEQ_ENUM_957(x) x, BOOST_PP_SEQ_ENUM_956 +# define BOOST_PP_SEQ_ENUM_958(x) x, BOOST_PP_SEQ_ENUM_957 +# define BOOST_PP_SEQ_ENUM_959(x) x, BOOST_PP_SEQ_ENUM_958 +# define BOOST_PP_SEQ_ENUM_960(x) x, BOOST_PP_SEQ_ENUM_959 +# define BOOST_PP_SEQ_ENUM_961(x) x, BOOST_PP_SEQ_ENUM_960 +# define BOOST_PP_SEQ_ENUM_962(x) x, BOOST_PP_SEQ_ENUM_961 +# define BOOST_PP_SEQ_ENUM_963(x) x, BOOST_PP_SEQ_ENUM_962 +# define BOOST_PP_SEQ_ENUM_964(x) x, BOOST_PP_SEQ_ENUM_963 +# define BOOST_PP_SEQ_ENUM_965(x) x, BOOST_PP_SEQ_ENUM_964 +# define BOOST_PP_SEQ_ENUM_966(x) x, BOOST_PP_SEQ_ENUM_965 +# define BOOST_PP_SEQ_ENUM_967(x) x, BOOST_PP_SEQ_ENUM_966 +# define BOOST_PP_SEQ_ENUM_968(x) x, BOOST_PP_SEQ_ENUM_967 +# define BOOST_PP_SEQ_ENUM_969(x) x, BOOST_PP_SEQ_ENUM_968 +# define BOOST_PP_SEQ_ENUM_970(x) x, BOOST_PP_SEQ_ENUM_969 +# define BOOST_PP_SEQ_ENUM_971(x) x, BOOST_PP_SEQ_ENUM_970 +# define BOOST_PP_SEQ_ENUM_972(x) x, BOOST_PP_SEQ_ENUM_971 +# define BOOST_PP_SEQ_ENUM_973(x) x, BOOST_PP_SEQ_ENUM_972 +# define BOOST_PP_SEQ_ENUM_974(x) x, BOOST_PP_SEQ_ENUM_973 +# define BOOST_PP_SEQ_ENUM_975(x) x, BOOST_PP_SEQ_ENUM_974 +# define BOOST_PP_SEQ_ENUM_976(x) x, BOOST_PP_SEQ_ENUM_975 +# define BOOST_PP_SEQ_ENUM_977(x) x, BOOST_PP_SEQ_ENUM_976 +# define BOOST_PP_SEQ_ENUM_978(x) x, BOOST_PP_SEQ_ENUM_977 +# define BOOST_PP_SEQ_ENUM_979(x) x, BOOST_PP_SEQ_ENUM_978 +# define BOOST_PP_SEQ_ENUM_980(x) x, BOOST_PP_SEQ_ENUM_979 +# define BOOST_PP_SEQ_ENUM_981(x) x, BOOST_PP_SEQ_ENUM_980 +# define BOOST_PP_SEQ_ENUM_982(x) x, BOOST_PP_SEQ_ENUM_981 +# define BOOST_PP_SEQ_ENUM_983(x) x, BOOST_PP_SEQ_ENUM_982 +# define BOOST_PP_SEQ_ENUM_984(x) x, BOOST_PP_SEQ_ENUM_983 +# define BOOST_PP_SEQ_ENUM_985(x) x, BOOST_PP_SEQ_ENUM_984 +# define BOOST_PP_SEQ_ENUM_986(x) x, BOOST_PP_SEQ_ENUM_985 +# define BOOST_PP_SEQ_ENUM_987(x) x, BOOST_PP_SEQ_ENUM_986 +# define BOOST_PP_SEQ_ENUM_988(x) x, BOOST_PP_SEQ_ENUM_987 +# define BOOST_PP_SEQ_ENUM_989(x) x, BOOST_PP_SEQ_ENUM_988 +# define BOOST_PP_SEQ_ENUM_990(x) x, BOOST_PP_SEQ_ENUM_989 +# define BOOST_PP_SEQ_ENUM_991(x) x, BOOST_PP_SEQ_ENUM_990 +# define BOOST_PP_SEQ_ENUM_992(x) x, BOOST_PP_SEQ_ENUM_991 +# define BOOST_PP_SEQ_ENUM_993(x) x, BOOST_PP_SEQ_ENUM_992 +# define BOOST_PP_SEQ_ENUM_994(x) x, BOOST_PP_SEQ_ENUM_993 +# define BOOST_PP_SEQ_ENUM_995(x) x, BOOST_PP_SEQ_ENUM_994 +# define BOOST_PP_SEQ_ENUM_996(x) x, BOOST_PP_SEQ_ENUM_995 +# define BOOST_PP_SEQ_ENUM_997(x) x, BOOST_PP_SEQ_ENUM_996 +# define BOOST_PP_SEQ_ENUM_998(x) x, BOOST_PP_SEQ_ENUM_997 +# define BOOST_PP_SEQ_ENUM_999(x) x, BOOST_PP_SEQ_ENUM_998 +# define BOOST_PP_SEQ_ENUM_1000(x) x, BOOST_PP_SEQ_ENUM_999 +# define BOOST_PP_SEQ_ENUM_1001(x) x, BOOST_PP_SEQ_ENUM_1000 +# define BOOST_PP_SEQ_ENUM_1002(x) x, BOOST_PP_SEQ_ENUM_1001 +# define BOOST_PP_SEQ_ENUM_1003(x) x, BOOST_PP_SEQ_ENUM_1002 +# define BOOST_PP_SEQ_ENUM_1004(x) x, BOOST_PP_SEQ_ENUM_1003 +# define BOOST_PP_SEQ_ENUM_1005(x) x, BOOST_PP_SEQ_ENUM_1004 +# define BOOST_PP_SEQ_ENUM_1006(x) x, BOOST_PP_SEQ_ENUM_1005 +# define BOOST_PP_SEQ_ENUM_1007(x) x, BOOST_PP_SEQ_ENUM_1006 +# define BOOST_PP_SEQ_ENUM_1008(x) x, BOOST_PP_SEQ_ENUM_1007 +# define BOOST_PP_SEQ_ENUM_1009(x) x, BOOST_PP_SEQ_ENUM_1008 +# define BOOST_PP_SEQ_ENUM_1010(x) x, BOOST_PP_SEQ_ENUM_1009 +# define BOOST_PP_SEQ_ENUM_1011(x) x, BOOST_PP_SEQ_ENUM_1010 +# define BOOST_PP_SEQ_ENUM_1012(x) x, BOOST_PP_SEQ_ENUM_1011 +# define BOOST_PP_SEQ_ENUM_1013(x) x, BOOST_PP_SEQ_ENUM_1012 +# define BOOST_PP_SEQ_ENUM_1014(x) x, BOOST_PP_SEQ_ENUM_1013 +# define BOOST_PP_SEQ_ENUM_1015(x) x, BOOST_PP_SEQ_ENUM_1014 +# define BOOST_PP_SEQ_ENUM_1016(x) x, BOOST_PP_SEQ_ENUM_1015 +# define BOOST_PP_SEQ_ENUM_1017(x) x, BOOST_PP_SEQ_ENUM_1016 +# define BOOST_PP_SEQ_ENUM_1018(x) x, BOOST_PP_SEQ_ENUM_1017 +# define BOOST_PP_SEQ_ENUM_1019(x) x, BOOST_PP_SEQ_ENUM_1018 +# define BOOST_PP_SEQ_ENUM_1020(x) x, BOOST_PP_SEQ_ENUM_1019 +# define BOOST_PP_SEQ_ENUM_1021(x) x, BOOST_PP_SEQ_ENUM_1020 +# define BOOST_PP_SEQ_ENUM_1022(x) x, BOOST_PP_SEQ_ENUM_1021 +# define BOOST_PP_SEQ_ENUM_1023(x) x, BOOST_PP_SEQ_ENUM_1022 +# define BOOST_PP_SEQ_ENUM_1024(x) x, BOOST_PP_SEQ_ENUM_1023 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/enum_256.hpp b/src/boost/boost/preprocessor/seq/limits/enum_256.hpp new file mode 100644 index 000000000..ffea6ddc1 --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/enum_256.hpp @@ -0,0 +1,272 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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_SEQ_ENUM_256_HPP +# define BOOST_PREPROCESSOR_SEQ_ENUM_256_HPP +# +# define BOOST_PP_SEQ_ENUM_1(x) x +# define BOOST_PP_SEQ_ENUM_2(x) x, BOOST_PP_SEQ_ENUM_1 +# define BOOST_PP_SEQ_ENUM_3(x) x, BOOST_PP_SEQ_ENUM_2 +# define BOOST_PP_SEQ_ENUM_4(x) x, BOOST_PP_SEQ_ENUM_3 +# define BOOST_PP_SEQ_ENUM_5(x) x, BOOST_PP_SEQ_ENUM_4 +# define BOOST_PP_SEQ_ENUM_6(x) x, BOOST_PP_SEQ_ENUM_5 +# define BOOST_PP_SEQ_ENUM_7(x) x, BOOST_PP_SEQ_ENUM_6 +# define BOOST_PP_SEQ_ENUM_8(x) x, BOOST_PP_SEQ_ENUM_7 +# define BOOST_PP_SEQ_ENUM_9(x) x, BOOST_PP_SEQ_ENUM_8 +# define BOOST_PP_SEQ_ENUM_10(x) x, BOOST_PP_SEQ_ENUM_9 +# define BOOST_PP_SEQ_ENUM_11(x) x, BOOST_PP_SEQ_ENUM_10 +# define BOOST_PP_SEQ_ENUM_12(x) x, BOOST_PP_SEQ_ENUM_11 +# define BOOST_PP_SEQ_ENUM_13(x) x, BOOST_PP_SEQ_ENUM_12 +# define BOOST_PP_SEQ_ENUM_14(x) x, BOOST_PP_SEQ_ENUM_13 +# define BOOST_PP_SEQ_ENUM_15(x) x, BOOST_PP_SEQ_ENUM_14 +# define BOOST_PP_SEQ_ENUM_16(x) x, BOOST_PP_SEQ_ENUM_15 +# define BOOST_PP_SEQ_ENUM_17(x) x, BOOST_PP_SEQ_ENUM_16 +# define BOOST_PP_SEQ_ENUM_18(x) x, BOOST_PP_SEQ_ENUM_17 +# define BOOST_PP_SEQ_ENUM_19(x) x, BOOST_PP_SEQ_ENUM_18 +# define BOOST_PP_SEQ_ENUM_20(x) x, BOOST_PP_SEQ_ENUM_19 +# define BOOST_PP_SEQ_ENUM_21(x) x, BOOST_PP_SEQ_ENUM_20 +# define BOOST_PP_SEQ_ENUM_22(x) x, BOOST_PP_SEQ_ENUM_21 +# define BOOST_PP_SEQ_ENUM_23(x) x, BOOST_PP_SEQ_ENUM_22 +# define BOOST_PP_SEQ_ENUM_24(x) x, BOOST_PP_SEQ_ENUM_23 +# define BOOST_PP_SEQ_ENUM_25(x) x, BOOST_PP_SEQ_ENUM_24 +# define BOOST_PP_SEQ_ENUM_26(x) x, BOOST_PP_SEQ_ENUM_25 +# define BOOST_PP_SEQ_ENUM_27(x) x, BOOST_PP_SEQ_ENUM_26 +# define BOOST_PP_SEQ_ENUM_28(x) x, BOOST_PP_SEQ_ENUM_27 +# define BOOST_PP_SEQ_ENUM_29(x) x, BOOST_PP_SEQ_ENUM_28 +# define BOOST_PP_SEQ_ENUM_30(x) x, BOOST_PP_SEQ_ENUM_29 +# define BOOST_PP_SEQ_ENUM_31(x) x, BOOST_PP_SEQ_ENUM_30 +# define BOOST_PP_SEQ_ENUM_32(x) x, BOOST_PP_SEQ_ENUM_31 +# define BOOST_PP_SEQ_ENUM_33(x) x, BOOST_PP_SEQ_ENUM_32 +# define BOOST_PP_SEQ_ENUM_34(x) x, BOOST_PP_SEQ_ENUM_33 +# define BOOST_PP_SEQ_ENUM_35(x) x, BOOST_PP_SEQ_ENUM_34 +# define BOOST_PP_SEQ_ENUM_36(x) x, BOOST_PP_SEQ_ENUM_35 +# define BOOST_PP_SEQ_ENUM_37(x) x, BOOST_PP_SEQ_ENUM_36 +# define BOOST_PP_SEQ_ENUM_38(x) x, BOOST_PP_SEQ_ENUM_37 +# define BOOST_PP_SEQ_ENUM_39(x) x, BOOST_PP_SEQ_ENUM_38 +# define BOOST_PP_SEQ_ENUM_40(x) x, BOOST_PP_SEQ_ENUM_39 +# define BOOST_PP_SEQ_ENUM_41(x) x, BOOST_PP_SEQ_ENUM_40 +# define BOOST_PP_SEQ_ENUM_42(x) x, BOOST_PP_SEQ_ENUM_41 +# define BOOST_PP_SEQ_ENUM_43(x) x, BOOST_PP_SEQ_ENUM_42 +# define BOOST_PP_SEQ_ENUM_44(x) x, BOOST_PP_SEQ_ENUM_43 +# define BOOST_PP_SEQ_ENUM_45(x) x, BOOST_PP_SEQ_ENUM_44 +# define BOOST_PP_SEQ_ENUM_46(x) x, BOOST_PP_SEQ_ENUM_45 +# define BOOST_PP_SEQ_ENUM_47(x) x, BOOST_PP_SEQ_ENUM_46 +# define BOOST_PP_SEQ_ENUM_48(x) x, BOOST_PP_SEQ_ENUM_47 +# define BOOST_PP_SEQ_ENUM_49(x) x, BOOST_PP_SEQ_ENUM_48 +# define BOOST_PP_SEQ_ENUM_50(x) x, BOOST_PP_SEQ_ENUM_49 +# define BOOST_PP_SEQ_ENUM_51(x) x, BOOST_PP_SEQ_ENUM_50 +# define BOOST_PP_SEQ_ENUM_52(x) x, BOOST_PP_SEQ_ENUM_51 +# define BOOST_PP_SEQ_ENUM_53(x) x, BOOST_PP_SEQ_ENUM_52 +# define BOOST_PP_SEQ_ENUM_54(x) x, BOOST_PP_SEQ_ENUM_53 +# define BOOST_PP_SEQ_ENUM_55(x) x, BOOST_PP_SEQ_ENUM_54 +# define BOOST_PP_SEQ_ENUM_56(x) x, BOOST_PP_SEQ_ENUM_55 +# define BOOST_PP_SEQ_ENUM_57(x) x, BOOST_PP_SEQ_ENUM_56 +# define BOOST_PP_SEQ_ENUM_58(x) x, BOOST_PP_SEQ_ENUM_57 +# define BOOST_PP_SEQ_ENUM_59(x) x, BOOST_PP_SEQ_ENUM_58 +# define BOOST_PP_SEQ_ENUM_60(x) x, BOOST_PP_SEQ_ENUM_59 +# define BOOST_PP_SEQ_ENUM_61(x) x, BOOST_PP_SEQ_ENUM_60 +# define BOOST_PP_SEQ_ENUM_62(x) x, BOOST_PP_SEQ_ENUM_61 +# define BOOST_PP_SEQ_ENUM_63(x) x, BOOST_PP_SEQ_ENUM_62 +# define BOOST_PP_SEQ_ENUM_64(x) x, BOOST_PP_SEQ_ENUM_63 +# define BOOST_PP_SEQ_ENUM_65(x) x, BOOST_PP_SEQ_ENUM_64 +# define BOOST_PP_SEQ_ENUM_66(x) x, BOOST_PP_SEQ_ENUM_65 +# define BOOST_PP_SEQ_ENUM_67(x) x, BOOST_PP_SEQ_ENUM_66 +# define BOOST_PP_SEQ_ENUM_68(x) x, BOOST_PP_SEQ_ENUM_67 +# define BOOST_PP_SEQ_ENUM_69(x) x, BOOST_PP_SEQ_ENUM_68 +# define BOOST_PP_SEQ_ENUM_70(x) x, BOOST_PP_SEQ_ENUM_69 +# define BOOST_PP_SEQ_ENUM_71(x) x, BOOST_PP_SEQ_ENUM_70 +# define BOOST_PP_SEQ_ENUM_72(x) x, BOOST_PP_SEQ_ENUM_71 +# define BOOST_PP_SEQ_ENUM_73(x) x, BOOST_PP_SEQ_ENUM_72 +# define BOOST_PP_SEQ_ENUM_74(x) x, BOOST_PP_SEQ_ENUM_73 +# define BOOST_PP_SEQ_ENUM_75(x) x, BOOST_PP_SEQ_ENUM_74 +# define BOOST_PP_SEQ_ENUM_76(x) x, BOOST_PP_SEQ_ENUM_75 +# define BOOST_PP_SEQ_ENUM_77(x) x, BOOST_PP_SEQ_ENUM_76 +# define BOOST_PP_SEQ_ENUM_78(x) x, BOOST_PP_SEQ_ENUM_77 +# define BOOST_PP_SEQ_ENUM_79(x) x, BOOST_PP_SEQ_ENUM_78 +# define BOOST_PP_SEQ_ENUM_80(x) x, BOOST_PP_SEQ_ENUM_79 +# define BOOST_PP_SEQ_ENUM_81(x) x, BOOST_PP_SEQ_ENUM_80 +# define BOOST_PP_SEQ_ENUM_82(x) x, BOOST_PP_SEQ_ENUM_81 +# define BOOST_PP_SEQ_ENUM_83(x) x, BOOST_PP_SEQ_ENUM_82 +# define BOOST_PP_SEQ_ENUM_84(x) x, BOOST_PP_SEQ_ENUM_83 +# define BOOST_PP_SEQ_ENUM_85(x) x, BOOST_PP_SEQ_ENUM_84 +# define BOOST_PP_SEQ_ENUM_86(x) x, BOOST_PP_SEQ_ENUM_85 +# define BOOST_PP_SEQ_ENUM_87(x) x, BOOST_PP_SEQ_ENUM_86 +# define BOOST_PP_SEQ_ENUM_88(x) x, BOOST_PP_SEQ_ENUM_87 +# define BOOST_PP_SEQ_ENUM_89(x) x, BOOST_PP_SEQ_ENUM_88 +# define BOOST_PP_SEQ_ENUM_90(x) x, BOOST_PP_SEQ_ENUM_89 +# define BOOST_PP_SEQ_ENUM_91(x) x, BOOST_PP_SEQ_ENUM_90 +# define BOOST_PP_SEQ_ENUM_92(x) x, BOOST_PP_SEQ_ENUM_91 +# define BOOST_PP_SEQ_ENUM_93(x) x, BOOST_PP_SEQ_ENUM_92 +# define BOOST_PP_SEQ_ENUM_94(x) x, BOOST_PP_SEQ_ENUM_93 +# define BOOST_PP_SEQ_ENUM_95(x) x, BOOST_PP_SEQ_ENUM_94 +# define BOOST_PP_SEQ_ENUM_96(x) x, BOOST_PP_SEQ_ENUM_95 +# define BOOST_PP_SEQ_ENUM_97(x) x, BOOST_PP_SEQ_ENUM_96 +# define BOOST_PP_SEQ_ENUM_98(x) x, BOOST_PP_SEQ_ENUM_97 +# define BOOST_PP_SEQ_ENUM_99(x) x, BOOST_PP_SEQ_ENUM_98 +# define BOOST_PP_SEQ_ENUM_100(x) x, BOOST_PP_SEQ_ENUM_99 +# define BOOST_PP_SEQ_ENUM_101(x) x, BOOST_PP_SEQ_ENUM_100 +# define BOOST_PP_SEQ_ENUM_102(x) x, BOOST_PP_SEQ_ENUM_101 +# define BOOST_PP_SEQ_ENUM_103(x) x, BOOST_PP_SEQ_ENUM_102 +# define BOOST_PP_SEQ_ENUM_104(x) x, BOOST_PP_SEQ_ENUM_103 +# define BOOST_PP_SEQ_ENUM_105(x) x, BOOST_PP_SEQ_ENUM_104 +# define BOOST_PP_SEQ_ENUM_106(x) x, BOOST_PP_SEQ_ENUM_105 +# define BOOST_PP_SEQ_ENUM_107(x) x, BOOST_PP_SEQ_ENUM_106 +# define BOOST_PP_SEQ_ENUM_108(x) x, BOOST_PP_SEQ_ENUM_107 +# define BOOST_PP_SEQ_ENUM_109(x) x, BOOST_PP_SEQ_ENUM_108 +# define BOOST_PP_SEQ_ENUM_110(x) x, BOOST_PP_SEQ_ENUM_109 +# define BOOST_PP_SEQ_ENUM_111(x) x, BOOST_PP_SEQ_ENUM_110 +# define BOOST_PP_SEQ_ENUM_112(x) x, BOOST_PP_SEQ_ENUM_111 +# define BOOST_PP_SEQ_ENUM_113(x) x, BOOST_PP_SEQ_ENUM_112 +# define BOOST_PP_SEQ_ENUM_114(x) x, BOOST_PP_SEQ_ENUM_113 +# define BOOST_PP_SEQ_ENUM_115(x) x, BOOST_PP_SEQ_ENUM_114 +# define BOOST_PP_SEQ_ENUM_116(x) x, BOOST_PP_SEQ_ENUM_115 +# define BOOST_PP_SEQ_ENUM_117(x) x, BOOST_PP_SEQ_ENUM_116 +# define BOOST_PP_SEQ_ENUM_118(x) x, BOOST_PP_SEQ_ENUM_117 +# define BOOST_PP_SEQ_ENUM_119(x) x, BOOST_PP_SEQ_ENUM_118 +# define BOOST_PP_SEQ_ENUM_120(x) x, BOOST_PP_SEQ_ENUM_119 +# define BOOST_PP_SEQ_ENUM_121(x) x, BOOST_PP_SEQ_ENUM_120 +# define BOOST_PP_SEQ_ENUM_122(x) x, BOOST_PP_SEQ_ENUM_121 +# define BOOST_PP_SEQ_ENUM_123(x) x, BOOST_PP_SEQ_ENUM_122 +# define BOOST_PP_SEQ_ENUM_124(x) x, BOOST_PP_SEQ_ENUM_123 +# define BOOST_PP_SEQ_ENUM_125(x) x, BOOST_PP_SEQ_ENUM_124 +# define BOOST_PP_SEQ_ENUM_126(x) x, BOOST_PP_SEQ_ENUM_125 +# define BOOST_PP_SEQ_ENUM_127(x) x, BOOST_PP_SEQ_ENUM_126 +# define BOOST_PP_SEQ_ENUM_128(x) x, BOOST_PP_SEQ_ENUM_127 +# define BOOST_PP_SEQ_ENUM_129(x) x, BOOST_PP_SEQ_ENUM_128 +# define BOOST_PP_SEQ_ENUM_130(x) x, BOOST_PP_SEQ_ENUM_129 +# define BOOST_PP_SEQ_ENUM_131(x) x, BOOST_PP_SEQ_ENUM_130 +# define BOOST_PP_SEQ_ENUM_132(x) x, BOOST_PP_SEQ_ENUM_131 +# define BOOST_PP_SEQ_ENUM_133(x) x, BOOST_PP_SEQ_ENUM_132 +# define BOOST_PP_SEQ_ENUM_134(x) x, BOOST_PP_SEQ_ENUM_133 +# define BOOST_PP_SEQ_ENUM_135(x) x, BOOST_PP_SEQ_ENUM_134 +# define BOOST_PP_SEQ_ENUM_136(x) x, BOOST_PP_SEQ_ENUM_135 +# define BOOST_PP_SEQ_ENUM_137(x) x, BOOST_PP_SEQ_ENUM_136 +# define BOOST_PP_SEQ_ENUM_138(x) x, BOOST_PP_SEQ_ENUM_137 +# define BOOST_PP_SEQ_ENUM_139(x) x, BOOST_PP_SEQ_ENUM_138 +# define BOOST_PP_SEQ_ENUM_140(x) x, BOOST_PP_SEQ_ENUM_139 +# define BOOST_PP_SEQ_ENUM_141(x) x, BOOST_PP_SEQ_ENUM_140 +# define BOOST_PP_SEQ_ENUM_142(x) x, BOOST_PP_SEQ_ENUM_141 +# define BOOST_PP_SEQ_ENUM_143(x) x, BOOST_PP_SEQ_ENUM_142 +# define BOOST_PP_SEQ_ENUM_144(x) x, BOOST_PP_SEQ_ENUM_143 +# define BOOST_PP_SEQ_ENUM_145(x) x, BOOST_PP_SEQ_ENUM_144 +# define BOOST_PP_SEQ_ENUM_146(x) x, BOOST_PP_SEQ_ENUM_145 +# define BOOST_PP_SEQ_ENUM_147(x) x, BOOST_PP_SEQ_ENUM_146 +# define BOOST_PP_SEQ_ENUM_148(x) x, BOOST_PP_SEQ_ENUM_147 +# define BOOST_PP_SEQ_ENUM_149(x) x, BOOST_PP_SEQ_ENUM_148 +# define BOOST_PP_SEQ_ENUM_150(x) x, BOOST_PP_SEQ_ENUM_149 +# define BOOST_PP_SEQ_ENUM_151(x) x, BOOST_PP_SEQ_ENUM_150 +# define BOOST_PP_SEQ_ENUM_152(x) x, BOOST_PP_SEQ_ENUM_151 +# define BOOST_PP_SEQ_ENUM_153(x) x, BOOST_PP_SEQ_ENUM_152 +# define BOOST_PP_SEQ_ENUM_154(x) x, BOOST_PP_SEQ_ENUM_153 +# define BOOST_PP_SEQ_ENUM_155(x) x, BOOST_PP_SEQ_ENUM_154 +# define BOOST_PP_SEQ_ENUM_156(x) x, BOOST_PP_SEQ_ENUM_155 +# define BOOST_PP_SEQ_ENUM_157(x) x, BOOST_PP_SEQ_ENUM_156 +# define BOOST_PP_SEQ_ENUM_158(x) x, BOOST_PP_SEQ_ENUM_157 +# define BOOST_PP_SEQ_ENUM_159(x) x, BOOST_PP_SEQ_ENUM_158 +# define BOOST_PP_SEQ_ENUM_160(x) x, BOOST_PP_SEQ_ENUM_159 +# define BOOST_PP_SEQ_ENUM_161(x) x, BOOST_PP_SEQ_ENUM_160 +# define BOOST_PP_SEQ_ENUM_162(x) x, BOOST_PP_SEQ_ENUM_161 +# define BOOST_PP_SEQ_ENUM_163(x) x, BOOST_PP_SEQ_ENUM_162 +# define BOOST_PP_SEQ_ENUM_164(x) x, BOOST_PP_SEQ_ENUM_163 +# define BOOST_PP_SEQ_ENUM_165(x) x, BOOST_PP_SEQ_ENUM_164 +# define BOOST_PP_SEQ_ENUM_166(x) x, BOOST_PP_SEQ_ENUM_165 +# define BOOST_PP_SEQ_ENUM_167(x) x, BOOST_PP_SEQ_ENUM_166 +# define BOOST_PP_SEQ_ENUM_168(x) x, BOOST_PP_SEQ_ENUM_167 +# define BOOST_PP_SEQ_ENUM_169(x) x, BOOST_PP_SEQ_ENUM_168 +# define BOOST_PP_SEQ_ENUM_170(x) x, BOOST_PP_SEQ_ENUM_169 +# define BOOST_PP_SEQ_ENUM_171(x) x, BOOST_PP_SEQ_ENUM_170 +# define BOOST_PP_SEQ_ENUM_172(x) x, BOOST_PP_SEQ_ENUM_171 +# define BOOST_PP_SEQ_ENUM_173(x) x, BOOST_PP_SEQ_ENUM_172 +# define BOOST_PP_SEQ_ENUM_174(x) x, BOOST_PP_SEQ_ENUM_173 +# define BOOST_PP_SEQ_ENUM_175(x) x, BOOST_PP_SEQ_ENUM_174 +# define BOOST_PP_SEQ_ENUM_176(x) x, BOOST_PP_SEQ_ENUM_175 +# define BOOST_PP_SEQ_ENUM_177(x) x, BOOST_PP_SEQ_ENUM_176 +# define BOOST_PP_SEQ_ENUM_178(x) x, BOOST_PP_SEQ_ENUM_177 +# define BOOST_PP_SEQ_ENUM_179(x) x, BOOST_PP_SEQ_ENUM_178 +# define BOOST_PP_SEQ_ENUM_180(x) x, BOOST_PP_SEQ_ENUM_179 +# define BOOST_PP_SEQ_ENUM_181(x) x, BOOST_PP_SEQ_ENUM_180 +# define BOOST_PP_SEQ_ENUM_182(x) x, BOOST_PP_SEQ_ENUM_181 +# define BOOST_PP_SEQ_ENUM_183(x) x, BOOST_PP_SEQ_ENUM_182 +# define BOOST_PP_SEQ_ENUM_184(x) x, BOOST_PP_SEQ_ENUM_183 +# define BOOST_PP_SEQ_ENUM_185(x) x, BOOST_PP_SEQ_ENUM_184 +# define BOOST_PP_SEQ_ENUM_186(x) x, BOOST_PP_SEQ_ENUM_185 +# define BOOST_PP_SEQ_ENUM_187(x) x, BOOST_PP_SEQ_ENUM_186 +# define BOOST_PP_SEQ_ENUM_188(x) x, BOOST_PP_SEQ_ENUM_187 +# define BOOST_PP_SEQ_ENUM_189(x) x, BOOST_PP_SEQ_ENUM_188 +# define BOOST_PP_SEQ_ENUM_190(x) x, BOOST_PP_SEQ_ENUM_189 +# define BOOST_PP_SEQ_ENUM_191(x) x, BOOST_PP_SEQ_ENUM_190 +# define BOOST_PP_SEQ_ENUM_192(x) x, BOOST_PP_SEQ_ENUM_191 +# define BOOST_PP_SEQ_ENUM_193(x) x, BOOST_PP_SEQ_ENUM_192 +# define BOOST_PP_SEQ_ENUM_194(x) x, BOOST_PP_SEQ_ENUM_193 +# define BOOST_PP_SEQ_ENUM_195(x) x, BOOST_PP_SEQ_ENUM_194 +# define BOOST_PP_SEQ_ENUM_196(x) x, BOOST_PP_SEQ_ENUM_195 +# define BOOST_PP_SEQ_ENUM_197(x) x, BOOST_PP_SEQ_ENUM_196 +# define BOOST_PP_SEQ_ENUM_198(x) x, BOOST_PP_SEQ_ENUM_197 +# define BOOST_PP_SEQ_ENUM_199(x) x, BOOST_PP_SEQ_ENUM_198 +# define BOOST_PP_SEQ_ENUM_200(x) x, BOOST_PP_SEQ_ENUM_199 +# define BOOST_PP_SEQ_ENUM_201(x) x, BOOST_PP_SEQ_ENUM_200 +# define BOOST_PP_SEQ_ENUM_202(x) x, BOOST_PP_SEQ_ENUM_201 +# define BOOST_PP_SEQ_ENUM_203(x) x, BOOST_PP_SEQ_ENUM_202 +# define BOOST_PP_SEQ_ENUM_204(x) x, BOOST_PP_SEQ_ENUM_203 +# define BOOST_PP_SEQ_ENUM_205(x) x, BOOST_PP_SEQ_ENUM_204 +# define BOOST_PP_SEQ_ENUM_206(x) x, BOOST_PP_SEQ_ENUM_205 +# define BOOST_PP_SEQ_ENUM_207(x) x, BOOST_PP_SEQ_ENUM_206 +# define BOOST_PP_SEQ_ENUM_208(x) x, BOOST_PP_SEQ_ENUM_207 +# define BOOST_PP_SEQ_ENUM_209(x) x, BOOST_PP_SEQ_ENUM_208 +# define BOOST_PP_SEQ_ENUM_210(x) x, BOOST_PP_SEQ_ENUM_209 +# define BOOST_PP_SEQ_ENUM_211(x) x, BOOST_PP_SEQ_ENUM_210 +# define BOOST_PP_SEQ_ENUM_212(x) x, BOOST_PP_SEQ_ENUM_211 +# define BOOST_PP_SEQ_ENUM_213(x) x, BOOST_PP_SEQ_ENUM_212 +# define BOOST_PP_SEQ_ENUM_214(x) x, BOOST_PP_SEQ_ENUM_213 +# define BOOST_PP_SEQ_ENUM_215(x) x, BOOST_PP_SEQ_ENUM_214 +# define BOOST_PP_SEQ_ENUM_216(x) x, BOOST_PP_SEQ_ENUM_215 +# define BOOST_PP_SEQ_ENUM_217(x) x, BOOST_PP_SEQ_ENUM_216 +# define BOOST_PP_SEQ_ENUM_218(x) x, BOOST_PP_SEQ_ENUM_217 +# define BOOST_PP_SEQ_ENUM_219(x) x, BOOST_PP_SEQ_ENUM_218 +# define BOOST_PP_SEQ_ENUM_220(x) x, BOOST_PP_SEQ_ENUM_219 +# define BOOST_PP_SEQ_ENUM_221(x) x, BOOST_PP_SEQ_ENUM_220 +# define BOOST_PP_SEQ_ENUM_222(x) x, BOOST_PP_SEQ_ENUM_221 +# define BOOST_PP_SEQ_ENUM_223(x) x, BOOST_PP_SEQ_ENUM_222 +# define BOOST_PP_SEQ_ENUM_224(x) x, BOOST_PP_SEQ_ENUM_223 +# define BOOST_PP_SEQ_ENUM_225(x) x, BOOST_PP_SEQ_ENUM_224 +# define BOOST_PP_SEQ_ENUM_226(x) x, BOOST_PP_SEQ_ENUM_225 +# define BOOST_PP_SEQ_ENUM_227(x) x, BOOST_PP_SEQ_ENUM_226 +# define BOOST_PP_SEQ_ENUM_228(x) x, BOOST_PP_SEQ_ENUM_227 +# define BOOST_PP_SEQ_ENUM_229(x) x, BOOST_PP_SEQ_ENUM_228 +# define BOOST_PP_SEQ_ENUM_230(x) x, BOOST_PP_SEQ_ENUM_229 +# define BOOST_PP_SEQ_ENUM_231(x) x, BOOST_PP_SEQ_ENUM_230 +# define BOOST_PP_SEQ_ENUM_232(x) x, BOOST_PP_SEQ_ENUM_231 +# define BOOST_PP_SEQ_ENUM_233(x) x, BOOST_PP_SEQ_ENUM_232 +# define BOOST_PP_SEQ_ENUM_234(x) x, BOOST_PP_SEQ_ENUM_233 +# define BOOST_PP_SEQ_ENUM_235(x) x, BOOST_PP_SEQ_ENUM_234 +# define BOOST_PP_SEQ_ENUM_236(x) x, BOOST_PP_SEQ_ENUM_235 +# define BOOST_PP_SEQ_ENUM_237(x) x, BOOST_PP_SEQ_ENUM_236 +# define BOOST_PP_SEQ_ENUM_238(x) x, BOOST_PP_SEQ_ENUM_237 +# define BOOST_PP_SEQ_ENUM_239(x) x, BOOST_PP_SEQ_ENUM_238 +# define BOOST_PP_SEQ_ENUM_240(x) x, BOOST_PP_SEQ_ENUM_239 +# define BOOST_PP_SEQ_ENUM_241(x) x, BOOST_PP_SEQ_ENUM_240 +# define BOOST_PP_SEQ_ENUM_242(x) x, BOOST_PP_SEQ_ENUM_241 +# define BOOST_PP_SEQ_ENUM_243(x) x, BOOST_PP_SEQ_ENUM_242 +# define BOOST_PP_SEQ_ENUM_244(x) x, BOOST_PP_SEQ_ENUM_243 +# define BOOST_PP_SEQ_ENUM_245(x) x, BOOST_PP_SEQ_ENUM_244 +# define BOOST_PP_SEQ_ENUM_246(x) x, BOOST_PP_SEQ_ENUM_245 +# define BOOST_PP_SEQ_ENUM_247(x) x, BOOST_PP_SEQ_ENUM_246 +# define BOOST_PP_SEQ_ENUM_248(x) x, BOOST_PP_SEQ_ENUM_247 +# define BOOST_PP_SEQ_ENUM_249(x) x, BOOST_PP_SEQ_ENUM_248 +# define BOOST_PP_SEQ_ENUM_250(x) x, BOOST_PP_SEQ_ENUM_249 +# define BOOST_PP_SEQ_ENUM_251(x) x, BOOST_PP_SEQ_ENUM_250 +# define BOOST_PP_SEQ_ENUM_252(x) x, BOOST_PP_SEQ_ENUM_251 +# define BOOST_PP_SEQ_ENUM_253(x) x, BOOST_PP_SEQ_ENUM_252 +# define BOOST_PP_SEQ_ENUM_254(x) x, BOOST_PP_SEQ_ENUM_253 +# define BOOST_PP_SEQ_ENUM_255(x) x, BOOST_PP_SEQ_ENUM_254 +# define BOOST_PP_SEQ_ENUM_256(x) x, BOOST_PP_SEQ_ENUM_255 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/enum_512.hpp b/src/boost/boost/preprocessor/seq/limits/enum_512.hpp new file mode 100644 index 000000000..aeca418f8 --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/enum_512.hpp @@ -0,0 +1,274 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_SEQ_ENUM_512_HPP +# define BOOST_PREPROCESSOR_SEQ_ENUM_512_HPP +# +# define BOOST_PP_SEQ_ENUM_257(x) x, BOOST_PP_SEQ_ENUM_256 +# define BOOST_PP_SEQ_ENUM_258(x) x, BOOST_PP_SEQ_ENUM_257 +# define BOOST_PP_SEQ_ENUM_259(x) x, BOOST_PP_SEQ_ENUM_258 +# define BOOST_PP_SEQ_ENUM_260(x) x, BOOST_PP_SEQ_ENUM_259 +# define BOOST_PP_SEQ_ENUM_261(x) x, BOOST_PP_SEQ_ENUM_260 +# define BOOST_PP_SEQ_ENUM_262(x) x, BOOST_PP_SEQ_ENUM_261 +# define BOOST_PP_SEQ_ENUM_263(x) x, BOOST_PP_SEQ_ENUM_262 +# define BOOST_PP_SEQ_ENUM_264(x) x, BOOST_PP_SEQ_ENUM_263 +# define BOOST_PP_SEQ_ENUM_265(x) x, BOOST_PP_SEQ_ENUM_264 +# define BOOST_PP_SEQ_ENUM_266(x) x, BOOST_PP_SEQ_ENUM_265 +# define BOOST_PP_SEQ_ENUM_267(x) x, BOOST_PP_SEQ_ENUM_266 +# define BOOST_PP_SEQ_ENUM_268(x) x, BOOST_PP_SEQ_ENUM_267 +# define BOOST_PP_SEQ_ENUM_269(x) x, BOOST_PP_SEQ_ENUM_268 +# define BOOST_PP_SEQ_ENUM_270(x) x, BOOST_PP_SEQ_ENUM_269 +# define BOOST_PP_SEQ_ENUM_271(x) x, BOOST_PP_SEQ_ENUM_270 +# define BOOST_PP_SEQ_ENUM_272(x) x, BOOST_PP_SEQ_ENUM_271 +# define BOOST_PP_SEQ_ENUM_273(x) x, BOOST_PP_SEQ_ENUM_272 +# define BOOST_PP_SEQ_ENUM_274(x) x, BOOST_PP_SEQ_ENUM_273 +# define BOOST_PP_SEQ_ENUM_275(x) x, BOOST_PP_SEQ_ENUM_274 +# define BOOST_PP_SEQ_ENUM_276(x) x, BOOST_PP_SEQ_ENUM_275 +# define BOOST_PP_SEQ_ENUM_277(x) x, BOOST_PP_SEQ_ENUM_276 +# define BOOST_PP_SEQ_ENUM_278(x) x, BOOST_PP_SEQ_ENUM_277 +# define BOOST_PP_SEQ_ENUM_279(x) x, BOOST_PP_SEQ_ENUM_278 +# define BOOST_PP_SEQ_ENUM_280(x) x, BOOST_PP_SEQ_ENUM_279 +# define BOOST_PP_SEQ_ENUM_281(x) x, BOOST_PP_SEQ_ENUM_280 +# define BOOST_PP_SEQ_ENUM_282(x) x, BOOST_PP_SEQ_ENUM_281 +# define BOOST_PP_SEQ_ENUM_283(x) x, BOOST_PP_SEQ_ENUM_282 +# define BOOST_PP_SEQ_ENUM_284(x) x, BOOST_PP_SEQ_ENUM_283 +# define BOOST_PP_SEQ_ENUM_285(x) x, BOOST_PP_SEQ_ENUM_284 +# define BOOST_PP_SEQ_ENUM_286(x) x, BOOST_PP_SEQ_ENUM_285 +# define BOOST_PP_SEQ_ENUM_287(x) x, BOOST_PP_SEQ_ENUM_286 +# define BOOST_PP_SEQ_ENUM_288(x) x, BOOST_PP_SEQ_ENUM_287 +# define BOOST_PP_SEQ_ENUM_289(x) x, BOOST_PP_SEQ_ENUM_288 +# define BOOST_PP_SEQ_ENUM_290(x) x, BOOST_PP_SEQ_ENUM_289 +# define BOOST_PP_SEQ_ENUM_291(x) x, BOOST_PP_SEQ_ENUM_290 +# define BOOST_PP_SEQ_ENUM_292(x) x, BOOST_PP_SEQ_ENUM_291 +# define BOOST_PP_SEQ_ENUM_293(x) x, BOOST_PP_SEQ_ENUM_292 +# define BOOST_PP_SEQ_ENUM_294(x) x, BOOST_PP_SEQ_ENUM_293 +# define BOOST_PP_SEQ_ENUM_295(x) x, BOOST_PP_SEQ_ENUM_294 +# define BOOST_PP_SEQ_ENUM_296(x) x, BOOST_PP_SEQ_ENUM_295 +# define BOOST_PP_SEQ_ENUM_297(x) x, BOOST_PP_SEQ_ENUM_296 +# define BOOST_PP_SEQ_ENUM_298(x) x, BOOST_PP_SEQ_ENUM_297 +# define BOOST_PP_SEQ_ENUM_299(x) x, BOOST_PP_SEQ_ENUM_298 +# define BOOST_PP_SEQ_ENUM_300(x) x, BOOST_PP_SEQ_ENUM_299 +# define BOOST_PP_SEQ_ENUM_301(x) x, BOOST_PP_SEQ_ENUM_300 +# define BOOST_PP_SEQ_ENUM_302(x) x, BOOST_PP_SEQ_ENUM_301 +# define BOOST_PP_SEQ_ENUM_303(x) x, BOOST_PP_SEQ_ENUM_302 +# define BOOST_PP_SEQ_ENUM_304(x) x, BOOST_PP_SEQ_ENUM_303 +# define BOOST_PP_SEQ_ENUM_305(x) x, BOOST_PP_SEQ_ENUM_304 +# define BOOST_PP_SEQ_ENUM_306(x) x, BOOST_PP_SEQ_ENUM_305 +# define BOOST_PP_SEQ_ENUM_307(x) x, BOOST_PP_SEQ_ENUM_306 +# define BOOST_PP_SEQ_ENUM_308(x) x, BOOST_PP_SEQ_ENUM_307 +# define BOOST_PP_SEQ_ENUM_309(x) x, BOOST_PP_SEQ_ENUM_308 +# define BOOST_PP_SEQ_ENUM_310(x) x, BOOST_PP_SEQ_ENUM_309 +# define BOOST_PP_SEQ_ENUM_311(x) x, BOOST_PP_SEQ_ENUM_310 +# define BOOST_PP_SEQ_ENUM_312(x) x, BOOST_PP_SEQ_ENUM_311 +# define BOOST_PP_SEQ_ENUM_313(x) x, BOOST_PP_SEQ_ENUM_312 +# define BOOST_PP_SEQ_ENUM_314(x) x, BOOST_PP_SEQ_ENUM_313 +# define BOOST_PP_SEQ_ENUM_315(x) x, BOOST_PP_SEQ_ENUM_314 +# define BOOST_PP_SEQ_ENUM_316(x) x, BOOST_PP_SEQ_ENUM_315 +# define BOOST_PP_SEQ_ENUM_317(x) x, BOOST_PP_SEQ_ENUM_316 +# define BOOST_PP_SEQ_ENUM_318(x) x, BOOST_PP_SEQ_ENUM_317 +# define BOOST_PP_SEQ_ENUM_319(x) x, BOOST_PP_SEQ_ENUM_318 +# define BOOST_PP_SEQ_ENUM_320(x) x, BOOST_PP_SEQ_ENUM_319 +# define BOOST_PP_SEQ_ENUM_321(x) x, BOOST_PP_SEQ_ENUM_320 +# define BOOST_PP_SEQ_ENUM_322(x) x, BOOST_PP_SEQ_ENUM_321 +# define BOOST_PP_SEQ_ENUM_323(x) x, BOOST_PP_SEQ_ENUM_322 +# define BOOST_PP_SEQ_ENUM_324(x) x, BOOST_PP_SEQ_ENUM_323 +# define BOOST_PP_SEQ_ENUM_325(x) x, BOOST_PP_SEQ_ENUM_324 +# define BOOST_PP_SEQ_ENUM_326(x) x, BOOST_PP_SEQ_ENUM_325 +# define BOOST_PP_SEQ_ENUM_327(x) x, BOOST_PP_SEQ_ENUM_326 +# define BOOST_PP_SEQ_ENUM_328(x) x, BOOST_PP_SEQ_ENUM_327 +# define BOOST_PP_SEQ_ENUM_329(x) x, BOOST_PP_SEQ_ENUM_328 +# define BOOST_PP_SEQ_ENUM_330(x) x, BOOST_PP_SEQ_ENUM_329 +# define BOOST_PP_SEQ_ENUM_331(x) x, BOOST_PP_SEQ_ENUM_330 +# define BOOST_PP_SEQ_ENUM_332(x) x, BOOST_PP_SEQ_ENUM_331 +# define BOOST_PP_SEQ_ENUM_333(x) x, BOOST_PP_SEQ_ENUM_332 +# define BOOST_PP_SEQ_ENUM_334(x) x, BOOST_PP_SEQ_ENUM_333 +# define BOOST_PP_SEQ_ENUM_335(x) x, BOOST_PP_SEQ_ENUM_334 +# define BOOST_PP_SEQ_ENUM_336(x) x, BOOST_PP_SEQ_ENUM_335 +# define BOOST_PP_SEQ_ENUM_337(x) x, BOOST_PP_SEQ_ENUM_336 +# define BOOST_PP_SEQ_ENUM_338(x) x, BOOST_PP_SEQ_ENUM_337 +# define BOOST_PP_SEQ_ENUM_339(x) x, BOOST_PP_SEQ_ENUM_338 +# define BOOST_PP_SEQ_ENUM_340(x) x, BOOST_PP_SEQ_ENUM_339 +# define BOOST_PP_SEQ_ENUM_341(x) x, BOOST_PP_SEQ_ENUM_340 +# define BOOST_PP_SEQ_ENUM_342(x) x, BOOST_PP_SEQ_ENUM_341 +# define BOOST_PP_SEQ_ENUM_343(x) x, BOOST_PP_SEQ_ENUM_342 +# define BOOST_PP_SEQ_ENUM_344(x) x, BOOST_PP_SEQ_ENUM_343 +# define BOOST_PP_SEQ_ENUM_345(x) x, BOOST_PP_SEQ_ENUM_344 +# define BOOST_PP_SEQ_ENUM_346(x) x, BOOST_PP_SEQ_ENUM_345 +# define BOOST_PP_SEQ_ENUM_347(x) x, BOOST_PP_SEQ_ENUM_346 +# define BOOST_PP_SEQ_ENUM_348(x) x, BOOST_PP_SEQ_ENUM_347 +# define BOOST_PP_SEQ_ENUM_349(x) x, BOOST_PP_SEQ_ENUM_348 +# define BOOST_PP_SEQ_ENUM_350(x) x, BOOST_PP_SEQ_ENUM_349 +# define BOOST_PP_SEQ_ENUM_351(x) x, BOOST_PP_SEQ_ENUM_350 +# define BOOST_PP_SEQ_ENUM_352(x) x, BOOST_PP_SEQ_ENUM_351 +# define BOOST_PP_SEQ_ENUM_353(x) x, BOOST_PP_SEQ_ENUM_352 +# define BOOST_PP_SEQ_ENUM_354(x) x, BOOST_PP_SEQ_ENUM_353 +# define BOOST_PP_SEQ_ENUM_355(x) x, BOOST_PP_SEQ_ENUM_354 +# define BOOST_PP_SEQ_ENUM_356(x) x, BOOST_PP_SEQ_ENUM_355 +# define BOOST_PP_SEQ_ENUM_357(x) x, BOOST_PP_SEQ_ENUM_356 +# define BOOST_PP_SEQ_ENUM_358(x) x, BOOST_PP_SEQ_ENUM_357 +# define BOOST_PP_SEQ_ENUM_359(x) x, BOOST_PP_SEQ_ENUM_358 +# define BOOST_PP_SEQ_ENUM_360(x) x, BOOST_PP_SEQ_ENUM_359 +# define BOOST_PP_SEQ_ENUM_361(x) x, BOOST_PP_SEQ_ENUM_360 +# define BOOST_PP_SEQ_ENUM_362(x) x, BOOST_PP_SEQ_ENUM_361 +# define BOOST_PP_SEQ_ENUM_363(x) x, BOOST_PP_SEQ_ENUM_362 +# define BOOST_PP_SEQ_ENUM_364(x) x, BOOST_PP_SEQ_ENUM_363 +# define BOOST_PP_SEQ_ENUM_365(x) x, BOOST_PP_SEQ_ENUM_364 +# define BOOST_PP_SEQ_ENUM_366(x) x, BOOST_PP_SEQ_ENUM_365 +# define BOOST_PP_SEQ_ENUM_367(x) x, BOOST_PP_SEQ_ENUM_366 +# define BOOST_PP_SEQ_ENUM_368(x) x, BOOST_PP_SEQ_ENUM_367 +# define BOOST_PP_SEQ_ENUM_369(x) x, BOOST_PP_SEQ_ENUM_368 +# define BOOST_PP_SEQ_ENUM_370(x) x, BOOST_PP_SEQ_ENUM_369 +# define BOOST_PP_SEQ_ENUM_371(x) x, BOOST_PP_SEQ_ENUM_370 +# define BOOST_PP_SEQ_ENUM_372(x) x, BOOST_PP_SEQ_ENUM_371 +# define BOOST_PP_SEQ_ENUM_373(x) x, BOOST_PP_SEQ_ENUM_372 +# define BOOST_PP_SEQ_ENUM_374(x) x, BOOST_PP_SEQ_ENUM_373 +# define BOOST_PP_SEQ_ENUM_375(x) x, BOOST_PP_SEQ_ENUM_374 +# define BOOST_PP_SEQ_ENUM_376(x) x, BOOST_PP_SEQ_ENUM_375 +# define BOOST_PP_SEQ_ENUM_377(x) x, BOOST_PP_SEQ_ENUM_376 +# define BOOST_PP_SEQ_ENUM_378(x) x, BOOST_PP_SEQ_ENUM_377 +# define BOOST_PP_SEQ_ENUM_379(x) x, BOOST_PP_SEQ_ENUM_378 +# define BOOST_PP_SEQ_ENUM_380(x) x, BOOST_PP_SEQ_ENUM_379 +# define BOOST_PP_SEQ_ENUM_381(x) x, BOOST_PP_SEQ_ENUM_380 +# define BOOST_PP_SEQ_ENUM_382(x) x, BOOST_PP_SEQ_ENUM_381 +# define BOOST_PP_SEQ_ENUM_383(x) x, BOOST_PP_SEQ_ENUM_382 +# define BOOST_PP_SEQ_ENUM_384(x) x, BOOST_PP_SEQ_ENUM_383 +# define BOOST_PP_SEQ_ENUM_385(x) x, BOOST_PP_SEQ_ENUM_384 +# define BOOST_PP_SEQ_ENUM_386(x) x, BOOST_PP_SEQ_ENUM_385 +# define BOOST_PP_SEQ_ENUM_387(x) x, BOOST_PP_SEQ_ENUM_386 +# define BOOST_PP_SEQ_ENUM_388(x) x, BOOST_PP_SEQ_ENUM_387 +# define BOOST_PP_SEQ_ENUM_389(x) x, BOOST_PP_SEQ_ENUM_388 +# define BOOST_PP_SEQ_ENUM_390(x) x, BOOST_PP_SEQ_ENUM_389 +# define BOOST_PP_SEQ_ENUM_391(x) x, BOOST_PP_SEQ_ENUM_390 +# define BOOST_PP_SEQ_ENUM_392(x) x, BOOST_PP_SEQ_ENUM_391 +# define BOOST_PP_SEQ_ENUM_393(x) x, BOOST_PP_SEQ_ENUM_392 +# define BOOST_PP_SEQ_ENUM_394(x) x, BOOST_PP_SEQ_ENUM_393 +# define BOOST_PP_SEQ_ENUM_395(x) x, BOOST_PP_SEQ_ENUM_394 +# define BOOST_PP_SEQ_ENUM_396(x) x, BOOST_PP_SEQ_ENUM_395 +# define BOOST_PP_SEQ_ENUM_397(x) x, BOOST_PP_SEQ_ENUM_396 +# define BOOST_PP_SEQ_ENUM_398(x) x, BOOST_PP_SEQ_ENUM_397 +# define BOOST_PP_SEQ_ENUM_399(x) x, BOOST_PP_SEQ_ENUM_398 +# define BOOST_PP_SEQ_ENUM_400(x) x, BOOST_PP_SEQ_ENUM_399 +# define BOOST_PP_SEQ_ENUM_401(x) x, BOOST_PP_SEQ_ENUM_400 +# define BOOST_PP_SEQ_ENUM_402(x) x, BOOST_PP_SEQ_ENUM_401 +# define BOOST_PP_SEQ_ENUM_403(x) x, BOOST_PP_SEQ_ENUM_402 +# define BOOST_PP_SEQ_ENUM_404(x) x, BOOST_PP_SEQ_ENUM_403 +# define BOOST_PP_SEQ_ENUM_405(x) x, BOOST_PP_SEQ_ENUM_404 +# define BOOST_PP_SEQ_ENUM_406(x) x, BOOST_PP_SEQ_ENUM_405 +# define BOOST_PP_SEQ_ENUM_407(x) x, BOOST_PP_SEQ_ENUM_406 +# define BOOST_PP_SEQ_ENUM_408(x) x, BOOST_PP_SEQ_ENUM_407 +# define BOOST_PP_SEQ_ENUM_409(x) x, BOOST_PP_SEQ_ENUM_408 +# define BOOST_PP_SEQ_ENUM_410(x) x, BOOST_PP_SEQ_ENUM_409 +# define BOOST_PP_SEQ_ENUM_411(x) x, BOOST_PP_SEQ_ENUM_410 +# define BOOST_PP_SEQ_ENUM_412(x) x, BOOST_PP_SEQ_ENUM_411 +# define BOOST_PP_SEQ_ENUM_413(x) x, BOOST_PP_SEQ_ENUM_412 +# define BOOST_PP_SEQ_ENUM_414(x) x, BOOST_PP_SEQ_ENUM_413 +# define BOOST_PP_SEQ_ENUM_415(x) x, BOOST_PP_SEQ_ENUM_414 +# define BOOST_PP_SEQ_ENUM_416(x) x, BOOST_PP_SEQ_ENUM_415 +# define BOOST_PP_SEQ_ENUM_417(x) x, BOOST_PP_SEQ_ENUM_416 +# define BOOST_PP_SEQ_ENUM_418(x) x, BOOST_PP_SEQ_ENUM_417 +# define BOOST_PP_SEQ_ENUM_419(x) x, BOOST_PP_SEQ_ENUM_418 +# define BOOST_PP_SEQ_ENUM_420(x) x, BOOST_PP_SEQ_ENUM_419 +# define BOOST_PP_SEQ_ENUM_421(x) x, BOOST_PP_SEQ_ENUM_420 +# define BOOST_PP_SEQ_ENUM_422(x) x, BOOST_PP_SEQ_ENUM_421 +# define BOOST_PP_SEQ_ENUM_423(x) x, BOOST_PP_SEQ_ENUM_422 +# define BOOST_PP_SEQ_ENUM_424(x) x, BOOST_PP_SEQ_ENUM_423 +# define BOOST_PP_SEQ_ENUM_425(x) x, BOOST_PP_SEQ_ENUM_424 +# define BOOST_PP_SEQ_ENUM_426(x) x, BOOST_PP_SEQ_ENUM_425 +# define BOOST_PP_SEQ_ENUM_427(x) x, BOOST_PP_SEQ_ENUM_426 +# define BOOST_PP_SEQ_ENUM_428(x) x, BOOST_PP_SEQ_ENUM_427 +# define BOOST_PP_SEQ_ENUM_429(x) x, BOOST_PP_SEQ_ENUM_428 +# define BOOST_PP_SEQ_ENUM_430(x) x, BOOST_PP_SEQ_ENUM_429 +# define BOOST_PP_SEQ_ENUM_431(x) x, BOOST_PP_SEQ_ENUM_430 +# define BOOST_PP_SEQ_ENUM_432(x) x, BOOST_PP_SEQ_ENUM_431 +# define BOOST_PP_SEQ_ENUM_433(x) x, BOOST_PP_SEQ_ENUM_432 +# define BOOST_PP_SEQ_ENUM_434(x) x, BOOST_PP_SEQ_ENUM_433 +# define BOOST_PP_SEQ_ENUM_435(x) x, BOOST_PP_SEQ_ENUM_434 +# define BOOST_PP_SEQ_ENUM_436(x) x, BOOST_PP_SEQ_ENUM_435 +# define BOOST_PP_SEQ_ENUM_437(x) x, BOOST_PP_SEQ_ENUM_436 +# define BOOST_PP_SEQ_ENUM_438(x) x, BOOST_PP_SEQ_ENUM_437 +# define BOOST_PP_SEQ_ENUM_439(x) x, BOOST_PP_SEQ_ENUM_438 +# define BOOST_PP_SEQ_ENUM_440(x) x, BOOST_PP_SEQ_ENUM_439 +# define BOOST_PP_SEQ_ENUM_441(x) x, BOOST_PP_SEQ_ENUM_440 +# define BOOST_PP_SEQ_ENUM_442(x) x, BOOST_PP_SEQ_ENUM_441 +# define BOOST_PP_SEQ_ENUM_443(x) x, BOOST_PP_SEQ_ENUM_442 +# define BOOST_PP_SEQ_ENUM_444(x) x, BOOST_PP_SEQ_ENUM_443 +# define BOOST_PP_SEQ_ENUM_445(x) x, BOOST_PP_SEQ_ENUM_444 +# define BOOST_PP_SEQ_ENUM_446(x) x, BOOST_PP_SEQ_ENUM_445 +# define BOOST_PP_SEQ_ENUM_447(x) x, BOOST_PP_SEQ_ENUM_446 +# define BOOST_PP_SEQ_ENUM_448(x) x, BOOST_PP_SEQ_ENUM_447 +# define BOOST_PP_SEQ_ENUM_449(x) x, BOOST_PP_SEQ_ENUM_448 +# define BOOST_PP_SEQ_ENUM_450(x) x, BOOST_PP_SEQ_ENUM_449 +# define BOOST_PP_SEQ_ENUM_451(x) x, BOOST_PP_SEQ_ENUM_450 +# define BOOST_PP_SEQ_ENUM_452(x) x, BOOST_PP_SEQ_ENUM_451 +# define BOOST_PP_SEQ_ENUM_453(x) x, BOOST_PP_SEQ_ENUM_452 +# define BOOST_PP_SEQ_ENUM_454(x) x, BOOST_PP_SEQ_ENUM_453 +# define BOOST_PP_SEQ_ENUM_455(x) x, BOOST_PP_SEQ_ENUM_454 +# define BOOST_PP_SEQ_ENUM_456(x) x, BOOST_PP_SEQ_ENUM_455 +# define BOOST_PP_SEQ_ENUM_457(x) x, BOOST_PP_SEQ_ENUM_456 +# define BOOST_PP_SEQ_ENUM_458(x) x, BOOST_PP_SEQ_ENUM_457 +# define BOOST_PP_SEQ_ENUM_459(x) x, BOOST_PP_SEQ_ENUM_458 +# define BOOST_PP_SEQ_ENUM_460(x) x, BOOST_PP_SEQ_ENUM_459 +# define BOOST_PP_SEQ_ENUM_461(x) x, BOOST_PP_SEQ_ENUM_460 +# define BOOST_PP_SEQ_ENUM_462(x) x, BOOST_PP_SEQ_ENUM_461 +# define BOOST_PP_SEQ_ENUM_463(x) x, BOOST_PP_SEQ_ENUM_462 +# define BOOST_PP_SEQ_ENUM_464(x) x, BOOST_PP_SEQ_ENUM_463 +# define BOOST_PP_SEQ_ENUM_465(x) x, BOOST_PP_SEQ_ENUM_464 +# define BOOST_PP_SEQ_ENUM_466(x) x, BOOST_PP_SEQ_ENUM_465 +# define BOOST_PP_SEQ_ENUM_467(x) x, BOOST_PP_SEQ_ENUM_466 +# define BOOST_PP_SEQ_ENUM_468(x) x, BOOST_PP_SEQ_ENUM_467 +# define BOOST_PP_SEQ_ENUM_469(x) x, BOOST_PP_SEQ_ENUM_468 +# define BOOST_PP_SEQ_ENUM_470(x) x, BOOST_PP_SEQ_ENUM_469 +# define BOOST_PP_SEQ_ENUM_471(x) x, BOOST_PP_SEQ_ENUM_470 +# define BOOST_PP_SEQ_ENUM_472(x) x, BOOST_PP_SEQ_ENUM_471 +# define BOOST_PP_SEQ_ENUM_473(x) x, BOOST_PP_SEQ_ENUM_472 +# define BOOST_PP_SEQ_ENUM_474(x) x, BOOST_PP_SEQ_ENUM_473 +# define BOOST_PP_SEQ_ENUM_475(x) x, BOOST_PP_SEQ_ENUM_474 +# define BOOST_PP_SEQ_ENUM_476(x) x, BOOST_PP_SEQ_ENUM_475 +# define BOOST_PP_SEQ_ENUM_477(x) x, BOOST_PP_SEQ_ENUM_476 +# define BOOST_PP_SEQ_ENUM_478(x) x, BOOST_PP_SEQ_ENUM_477 +# define BOOST_PP_SEQ_ENUM_479(x) x, BOOST_PP_SEQ_ENUM_478 +# define BOOST_PP_SEQ_ENUM_480(x) x, BOOST_PP_SEQ_ENUM_479 +# define BOOST_PP_SEQ_ENUM_481(x) x, BOOST_PP_SEQ_ENUM_480 +# define BOOST_PP_SEQ_ENUM_482(x) x, BOOST_PP_SEQ_ENUM_481 +# define BOOST_PP_SEQ_ENUM_483(x) x, BOOST_PP_SEQ_ENUM_482 +# define BOOST_PP_SEQ_ENUM_484(x) x, BOOST_PP_SEQ_ENUM_483 +# define BOOST_PP_SEQ_ENUM_485(x) x, BOOST_PP_SEQ_ENUM_484 +# define BOOST_PP_SEQ_ENUM_486(x) x, BOOST_PP_SEQ_ENUM_485 +# define BOOST_PP_SEQ_ENUM_487(x) x, BOOST_PP_SEQ_ENUM_486 +# define BOOST_PP_SEQ_ENUM_488(x) x, BOOST_PP_SEQ_ENUM_487 +# define BOOST_PP_SEQ_ENUM_489(x) x, BOOST_PP_SEQ_ENUM_488 +# define BOOST_PP_SEQ_ENUM_490(x) x, BOOST_PP_SEQ_ENUM_489 +# define BOOST_PP_SEQ_ENUM_491(x) x, BOOST_PP_SEQ_ENUM_490 +# define BOOST_PP_SEQ_ENUM_492(x) x, BOOST_PP_SEQ_ENUM_491 +# define BOOST_PP_SEQ_ENUM_493(x) x, BOOST_PP_SEQ_ENUM_492 +# define BOOST_PP_SEQ_ENUM_494(x) x, BOOST_PP_SEQ_ENUM_493 +# define BOOST_PP_SEQ_ENUM_495(x) x, BOOST_PP_SEQ_ENUM_494 +# define BOOST_PP_SEQ_ENUM_496(x) x, BOOST_PP_SEQ_ENUM_495 +# define BOOST_PP_SEQ_ENUM_497(x) x, BOOST_PP_SEQ_ENUM_496 +# define BOOST_PP_SEQ_ENUM_498(x) x, BOOST_PP_SEQ_ENUM_497 +# define BOOST_PP_SEQ_ENUM_499(x) x, BOOST_PP_SEQ_ENUM_498 +# define BOOST_PP_SEQ_ENUM_500(x) x, BOOST_PP_SEQ_ENUM_499 +# define BOOST_PP_SEQ_ENUM_501(x) x, BOOST_PP_SEQ_ENUM_500 +# define BOOST_PP_SEQ_ENUM_502(x) x, BOOST_PP_SEQ_ENUM_501 +# define BOOST_PP_SEQ_ENUM_503(x) x, BOOST_PP_SEQ_ENUM_502 +# define BOOST_PP_SEQ_ENUM_504(x) x, BOOST_PP_SEQ_ENUM_503 +# define BOOST_PP_SEQ_ENUM_505(x) x, BOOST_PP_SEQ_ENUM_504 +# define BOOST_PP_SEQ_ENUM_506(x) x, BOOST_PP_SEQ_ENUM_505 +# define BOOST_PP_SEQ_ENUM_507(x) x, BOOST_PP_SEQ_ENUM_506 +# define BOOST_PP_SEQ_ENUM_508(x) x, BOOST_PP_SEQ_ENUM_507 +# define BOOST_PP_SEQ_ENUM_509(x) x, BOOST_PP_SEQ_ENUM_508 +# define BOOST_PP_SEQ_ENUM_510(x) x, BOOST_PP_SEQ_ENUM_509 +# define BOOST_PP_SEQ_ENUM_511(x) x, BOOST_PP_SEQ_ENUM_510 +# define BOOST_PP_SEQ_ENUM_512(x) x, BOOST_PP_SEQ_ENUM_511 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/fold_left_1024.hpp b/src/boost/boost/preprocessor/seq/limits/fold_left_1024.hpp new file mode 100644 index 000000000..b8b72657e --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/fold_left_1024.hpp @@ -0,0 +1,1556 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_1024_HPP +# define BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_1024_HPP +# +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_513(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_514(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_515(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_516(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_517(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_518(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_519(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_520(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_521(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_522(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_523(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_524(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_525(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_526(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_527(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_528(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_529(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_530(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_531(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_532(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_533(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_534(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_535(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_536(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_537(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_538(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_539(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_540(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_541(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_542(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_543(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_544(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_545(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_546(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_547(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_548(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_549(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_550(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_551(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_552(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_553(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_554(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_555(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_556(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_557(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_558(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_559(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_560(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_561(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_562(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_563(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_564(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_565(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_566(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_567(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_568(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_569(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_570(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_571(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_572(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_573(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_574(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_575(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_576(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_577(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_578(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_579(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_580(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_581(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_582(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_583(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_584(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_585(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_586(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_587(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_588(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_589(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_590(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_591(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_592(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_593(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_594(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_595(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_596(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_597(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_598(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_599(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_600(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_601(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_602(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_603(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_604(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_605(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_606(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_607(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_608(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_609(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_610(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_611(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_612(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_613(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_614(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_615(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_616(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_617(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_618(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_619(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_620(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_621(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_622(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_623(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_624(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_625(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_626(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_627(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_628(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_629(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_630(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_631(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_632(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_633(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_634(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_635(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_636(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_637(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_638(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_639(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_640(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_641(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_642(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_643(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_644(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_645(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_646(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_647(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_648(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_649(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_650(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_651(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_652(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_653(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_654(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_655(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_656(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_657(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_658(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_659(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_660(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_661(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_662(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_663(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_664(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_665(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_666(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_667(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_668(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_669(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_670(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_671(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_672(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_673(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_674(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_675(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_676(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_677(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_678(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_679(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_680(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_681(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_682(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_683(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_684(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_685(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_686(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_687(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_688(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_689(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_690(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_691(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_692(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_693(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_694(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_695(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_696(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_697(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_698(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_699(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_700(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_701(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_702(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_703(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_704(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_705(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_706(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_707(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_708(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_709(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_710(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_711(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_712(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_713(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_714(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_715(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_716(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_717(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_718(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_719(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_720(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_721(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_722(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_723(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_724(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_725(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_726(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_727(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_728(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_729(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_730(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_731(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_732(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_733(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_734(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_735(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_736(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_737(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_738(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_739(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_740(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_741(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_742(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_743(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_744(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_745(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_746(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_747(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_748(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_749(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_750(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_751(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_752(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_753(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_754(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_755(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_756(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_757(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_758(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_759(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_760(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_761(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_762(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_763(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_764(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_765(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_766(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_767(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_768(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_769(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_770(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_771(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_772(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_773(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_774(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_775(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_776(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_777(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_778(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_779(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_780(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_781(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_782(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_783(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_784(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_785(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_786(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_787(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_788(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_789(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_790(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_791(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_792(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_793(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_794(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_795(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_796(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_797(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_798(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_799(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_800(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_801(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_802(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_803(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_804(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_805(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_806(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_807(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_808(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_809(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_810(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_811(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_812(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_813(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_814(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_815(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_816(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_817(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_818(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_819(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_820(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_821(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_822(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_823(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_824(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_825(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_826(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_827(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_828(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_829(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_830(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_831(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_832(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_833(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_834(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_835(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_836(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_837(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_838(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_839(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_840(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_841(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_842(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_843(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_844(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_845(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_846(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_847(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_848(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_849(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_850(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_851(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_852(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_853(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_854(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_855(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_856(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_857(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_858(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_859(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_860(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_861(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_862(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_863(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_864(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_865(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_866(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_867(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_868(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_869(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_870(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_871(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_872(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_873(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_874(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_875(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_876(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_877(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_878(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_879(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_880(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_881(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_882(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_883(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_884(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_885(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_886(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_887(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_888(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_889(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_890(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_891(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_892(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_893(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_894(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_895(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_896(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_897(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_898(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_899(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_900(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_901(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_902(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_903(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_904(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_905(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_906(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_907(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_908(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_909(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_910(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_911(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_912(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_913(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_914(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_915(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_916(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_917(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_918(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_919(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_920(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_921(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_922(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_923(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_924(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_925(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_926(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_927(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_928(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_929(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_930(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_931(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_932(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_933(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_934(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_935(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_936(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_937(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_938(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_939(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_940(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_941(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_942(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_943(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_944(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_945(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_946(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_947(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_948(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_949(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_950(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_951(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_952(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_953(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_954(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_955(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_956(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_957(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_958(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_959(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_960(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_961(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_962(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_963(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_964(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_965(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_966(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_967(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_968(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_969(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_970(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_971(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_972(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_973(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_974(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_975(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_976(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_977(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_978(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_979(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_980(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_981(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_982(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_983(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_984(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_985(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_986(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_987(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_988(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_989(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_990(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_991(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_992(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_993(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_994(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_995(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_996(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_997(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_998(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_999(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1000(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1001(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1002(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1003(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1004(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1005(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1006(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1007(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1008(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1009(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1010(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1011(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1012(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1013(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1014(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1015(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1016(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1017(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1018(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1019(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1020(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1021(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1022(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1023(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1024(op, st, ss, sz) 0 +# +# define BOOST_PP_SEQ_FOLD_LEFT_513(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_513(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_514(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_514(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_515(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_515(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_516(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_516(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_517(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_517(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_518(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_518(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_519(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_519(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_520(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_520(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_521(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_521(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_522(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_522(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_523(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_523(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_524(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_524(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_525(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_525(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_526(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_526(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_527(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_527(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_528(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_528(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_529(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_529(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_530(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_530(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_531(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_531(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_532(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_532(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_533(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_533(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_534(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_534(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_535(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_535(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_536(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_536(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_537(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_537(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_538(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_538(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_539(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_539(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_540(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_540(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_541(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_541(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_542(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_542(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_543(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_543(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_544(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_544(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_545(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_545(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_546(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_546(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_547(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_547(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_548(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_548(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_549(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_549(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_550(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_550(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_551(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_551(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_552(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_552(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_553(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_553(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_554(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_554(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_555(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_555(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_556(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_556(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_557(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_557(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_558(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_558(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_559(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_559(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_560(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_560(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_561(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_561(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_562(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_562(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_563(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_563(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_564(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_564(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_565(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_565(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_566(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_566(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_567(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_567(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_568(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_568(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_569(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_569(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_570(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_570(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_571(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_571(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_572(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_572(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_573(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_573(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_574(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_574(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_575(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_575(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_576(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_576(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_577(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_577(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_578(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_578(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_579(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_579(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_580(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_580(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_581(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_581(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_582(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_582(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_583(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_583(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_584(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_584(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_585(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_585(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_586(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_586(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_587(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_587(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_588(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_588(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_589(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_589(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_590(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_590(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_591(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_591(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_592(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_592(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_593(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_593(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_594(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_594(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_595(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_595(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_596(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_596(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_597(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_597(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_598(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_598(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_599(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_599(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_600(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_600(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_601(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_601(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_602(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_602(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_603(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_603(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_604(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_604(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_605(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_605(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_606(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_606(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_607(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_607(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_608(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_608(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_609(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_609(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_610(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_610(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_611(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_611(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_612(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_612(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_613(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_613(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_614(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_614(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_615(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_615(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_616(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_616(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_617(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_617(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_618(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_618(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_619(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_619(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_620(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_620(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_621(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_621(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_622(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_622(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_623(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_623(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_624(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_624(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_625(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_625(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_626(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_626(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_627(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_627(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_628(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_628(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_629(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_629(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_630(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_630(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_631(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_631(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_632(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_632(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_633(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_633(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_634(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_634(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_635(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_635(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_636(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_636(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_637(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_637(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_638(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_638(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_639(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_639(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_640(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_640(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_641(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_641(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_642(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_642(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_643(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_643(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_644(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_644(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_645(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_645(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_646(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_646(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_647(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_647(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_648(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_648(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_649(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_649(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_650(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_650(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_651(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_651(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_652(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_652(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_653(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_653(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_654(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_654(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_655(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_655(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_656(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_656(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_657(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_657(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_658(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_658(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_659(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_659(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_660(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_660(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_661(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_661(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_662(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_662(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_663(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_663(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_664(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_664(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_665(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_665(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_666(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_666(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_667(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_667(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_668(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_668(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_669(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_669(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_670(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_670(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_671(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_671(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_672(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_672(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_673(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_673(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_674(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_674(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_675(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_675(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_676(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_676(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_677(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_677(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_678(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_678(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_679(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_679(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_680(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_680(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_681(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_681(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_682(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_682(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_683(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_683(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_684(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_684(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_685(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_685(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_686(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_686(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_687(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_687(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_688(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_688(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_689(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_689(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_690(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_690(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_691(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_691(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_692(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_692(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_693(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_693(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_694(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_694(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_695(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_695(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_696(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_696(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_697(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_697(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_698(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_698(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_699(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_699(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_700(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_700(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_701(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_701(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_702(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_702(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_703(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_703(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_704(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_704(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_705(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_705(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_706(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_706(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_707(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_707(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_708(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_708(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_709(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_709(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_710(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_710(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_711(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_711(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_712(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_712(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_713(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_713(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_714(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_714(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_715(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_715(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_716(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_716(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_717(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_717(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_718(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_718(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_719(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_719(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_720(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_720(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_721(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_721(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_722(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_722(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_723(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_723(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_724(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_724(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_725(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_725(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_726(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_726(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_727(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_727(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_728(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_728(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_729(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_729(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_730(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_730(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_731(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_731(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_732(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_732(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_733(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_733(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_734(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_734(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_735(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_735(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_736(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_736(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_737(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_737(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_738(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_738(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_739(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_739(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_740(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_740(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_741(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_741(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_742(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_742(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_743(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_743(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_744(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_744(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_745(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_745(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_746(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_746(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_747(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_747(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_748(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_748(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_749(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_749(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_750(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_750(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_751(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_751(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_752(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_752(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_753(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_753(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_754(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_754(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_755(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_755(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_756(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_756(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_757(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_757(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_758(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_758(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_759(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_759(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_760(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_760(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_761(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_761(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_762(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_762(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_763(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_763(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_764(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_764(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_765(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_765(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_766(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_766(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_767(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_767(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_768(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_768(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_769(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_769(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_770(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_770(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_771(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_771(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_772(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_772(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_773(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_773(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_774(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_774(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_775(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_775(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_776(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_776(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_777(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_777(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_778(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_778(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_779(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_779(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_780(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_780(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_781(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_781(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_782(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_782(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_783(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_783(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_784(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_784(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_785(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_785(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_786(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_786(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_787(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_787(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_788(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_788(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_789(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_789(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_790(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_790(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_791(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_791(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_792(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_792(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_793(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_793(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_794(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_794(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_795(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_795(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_796(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_796(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_797(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_797(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_798(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_798(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_799(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_799(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_800(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_800(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_801(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_801(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_802(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_802(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_803(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_803(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_804(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_804(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_805(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_805(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_806(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_806(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_807(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_807(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_808(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_808(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_809(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_809(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_810(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_810(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_811(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_811(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_812(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_812(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_813(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_813(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_814(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_814(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_815(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_815(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_816(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_816(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_817(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_817(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_818(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_818(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_819(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_819(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_820(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_820(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_821(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_821(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_822(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_822(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_823(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_823(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_824(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_824(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_825(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_825(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_826(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_826(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_827(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_827(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_828(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_828(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_829(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_829(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_830(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_830(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_831(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_831(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_832(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_832(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_833(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_833(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_834(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_834(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_835(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_835(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_836(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_836(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_837(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_837(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_838(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_838(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_839(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_839(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_840(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_840(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_841(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_841(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_842(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_842(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_843(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_843(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_844(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_844(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_845(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_845(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_846(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_846(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_847(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_847(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_848(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_848(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_849(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_849(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_850(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_850(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_851(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_851(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_852(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_852(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_853(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_853(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_854(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_854(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_855(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_855(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_856(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_856(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_857(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_857(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_858(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_858(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_859(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_859(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_860(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_860(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_861(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_861(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_862(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_862(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_863(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_863(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_864(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_864(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_865(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_865(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_866(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_866(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_867(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_867(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_868(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_868(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_869(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_869(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_870(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_870(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_871(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_871(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_872(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_872(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_873(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_873(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_874(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_874(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_875(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_875(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_876(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_876(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_877(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_877(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_878(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_878(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_879(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_879(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_880(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_880(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_881(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_881(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_882(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_882(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_883(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_883(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_884(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_884(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_885(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_885(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_886(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_886(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_887(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_887(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_888(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_888(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_889(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_889(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_890(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_890(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_891(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_891(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_892(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_892(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_893(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_893(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_894(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_894(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_895(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_895(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_896(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_896(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_897(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_897(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_898(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_898(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_899(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_899(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_900(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_900(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_901(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_901(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_902(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_902(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_903(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_903(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_904(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_904(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_905(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_905(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_906(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_906(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_907(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_907(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_908(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_908(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_909(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_909(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_910(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_910(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_911(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_911(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_912(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_912(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_913(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_913(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_914(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_914(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_915(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_915(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_916(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_916(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_917(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_917(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_918(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_918(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_919(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_919(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_920(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_920(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_921(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_921(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_922(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_922(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_923(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_923(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_924(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_924(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_925(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_925(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_926(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_926(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_927(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_927(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_928(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_928(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_929(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_929(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_930(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_930(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_931(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_931(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_932(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_932(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_933(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_933(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_934(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_934(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_935(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_935(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_936(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_936(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_937(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_937(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_938(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_938(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_939(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_939(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_940(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_940(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_941(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_941(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_942(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_942(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_943(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_943(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_944(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_944(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_945(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_945(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_946(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_946(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_947(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_947(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_948(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_948(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_949(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_949(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_950(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_950(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_951(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_951(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_952(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_952(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_953(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_953(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_954(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_954(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_955(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_955(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_956(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_956(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_957(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_957(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_958(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_958(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_959(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_959(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_960(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_960(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_961(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_961(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_962(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_962(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_963(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_963(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_964(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_964(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_965(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_965(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_966(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_966(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_967(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_967(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_968(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_968(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_969(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_969(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_970(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_970(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_971(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_971(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_972(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_972(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_973(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_973(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_974(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_974(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_975(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_975(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_976(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_976(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_977(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_977(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_978(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_978(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_979(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_979(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_980(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_980(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_981(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_981(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_982(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_982(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_983(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_983(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_984(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_984(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_985(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_985(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_986(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_986(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_987(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_987(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_988(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_988(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_989(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_989(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_990(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_990(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_991(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_991(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_992(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_992(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_993(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_993(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_994(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_994(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_995(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_995(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_996(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_996(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_997(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_997(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_998(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_998(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_999(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_999(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1000(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1000(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1001(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1001(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1002(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1002(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1003(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1003(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1004(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1004(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1005(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1005(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1006(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1006(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1007(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1007(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1008(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1008(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1009(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1009(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1010(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1010(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1011(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1011(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1012(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1012(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1013(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1013(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1014(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1014(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1015(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1015(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1016(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1016(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1017(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1017(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1018(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1018(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1019(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1019(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1020(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1020(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1021(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1021(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1022(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1022(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1023(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1023(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1024(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1024(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# +# define BOOST_PP_SEQ_FOLD_LEFT_I_513(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_514, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(514, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_514(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_515, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(515, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_515(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_516, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(516, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_516(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_517, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(517, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_517(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_518, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(518, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_518(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_519, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(519, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_519(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_520, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(520, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_520(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_521, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(521, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_521(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_522, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(522, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_522(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_523, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(523, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_523(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_524, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(524, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_524(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_525, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(525, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_525(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_526, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(526, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_526(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_527, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(527, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_527(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_528, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(528, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_528(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_529, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(529, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_529(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_530, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(530, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_530(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_531, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(531, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_531(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_532, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(532, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_532(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_533, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(533, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_533(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_534, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(534, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_534(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_535, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(535, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_535(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_536, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(536, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_536(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_537, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(537, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_537(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_538, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(538, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_538(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_539, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(539, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_539(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_540, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(540, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_540(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_541, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(541, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_541(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_542, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(542, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_542(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_543, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(543, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_543(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_544, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(544, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_544(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_545, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(545, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_545(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_546, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(546, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_546(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_547, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(547, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_547(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_548, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(548, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_548(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_549, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(549, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_549(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_550, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(550, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_550(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_551, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(551, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_551(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_552, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(552, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_552(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_553, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(553, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_553(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_554, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(554, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_554(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_555, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(555, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_555(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_556, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(556, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_556(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_557, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(557, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_557(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_558, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(558, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_558(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_559, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(559, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_559(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_560, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(560, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_560(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_561, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(561, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_561(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_562, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(562, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_562(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_563, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(563, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_563(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_564, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(564, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_564(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_565, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(565, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_565(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_566, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(566, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_566(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_567, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(567, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_567(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_568, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(568, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_568(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_569, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(569, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_569(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_570, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(570, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_570(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_571, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(571, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_571(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_572, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(572, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_572(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_573, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(573, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_573(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_574, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(574, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_574(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_575, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(575, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_575(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_576, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(576, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_576(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_577, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(577, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_577(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_578, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(578, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_578(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_579, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(579, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_579(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_580, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(580, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_580(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_581, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(581, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_581(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_582, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(582, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_582(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_583, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(583, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_583(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_584, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(584, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_584(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_585, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(585, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_585(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_586, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(586, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_586(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_587, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(587, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_587(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_588, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(588, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_588(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_589, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(589, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_589(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_590, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(590, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_590(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_591, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(591, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_591(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_592, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(592, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_592(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_593, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(593, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_593(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_594, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(594, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_594(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_595, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(595, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_595(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_596, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(596, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_596(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_597, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(597, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_597(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_598, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(598, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_598(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_599, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(599, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_599(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_600, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(600, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_600(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_601, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(601, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_601(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_602, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(602, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_602(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_603, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(603, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_603(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_604, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(604, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_604(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_605, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(605, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_605(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_606, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(606, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_606(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_607, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(607, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_607(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_608, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(608, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_608(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_609, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(609, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_609(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_610, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(610, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_610(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_611, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(611, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_611(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_612, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(612, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_612(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_613, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(613, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_613(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_614, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(614, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_614(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_615, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(615, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_615(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_616, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(616, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_616(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_617, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(617, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_617(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_618, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(618, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_618(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_619, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(619, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_619(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_620, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(620, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_620(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_621, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(621, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_621(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_622, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(622, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_622(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_623, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(623, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_623(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_624, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(624, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_624(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_625, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(625, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_625(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_626, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(626, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_626(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_627, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(627, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_627(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_628, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(628, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_628(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_629, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(629, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_629(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_630, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(630, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_630(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_631, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(631, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_631(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_632, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(632, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_632(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_633, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(633, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_633(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_634, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(634, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_634(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_635, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(635, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_635(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_636, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(636, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_636(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_637, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(637, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_637(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_638, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(638, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_638(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_639, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(639, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_639(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_640, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(640, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_640(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_641, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(641, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_641(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_642, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(642, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_642(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_643, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(643, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_643(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_644, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(644, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_644(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_645, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(645, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_645(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_646, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(646, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_646(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_647, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(647, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_647(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_648, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(648, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_648(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_649, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(649, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_649(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_650, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(650, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_650(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_651, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(651, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_651(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_652, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(652, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_652(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_653, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(653, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_653(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_654, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(654, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_654(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_655, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(655, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_655(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_656, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(656, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_656(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_657, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(657, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_657(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_658, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(658, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_658(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_659, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(659, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_659(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_660, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(660, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_660(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_661, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(661, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_661(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_662, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(662, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_662(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_663, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(663, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_663(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_664, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(664, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_664(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_665, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(665, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_665(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_666, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(666, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_666(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_667, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(667, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_667(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_668, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(668, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_668(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_669, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(669, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_669(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_670, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(670, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_670(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_671, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(671, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_671(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_672, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(672, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_672(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_673, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(673, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_673(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_674, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(674, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_674(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_675, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(675, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_675(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_676, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(676, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_676(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_677, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(677, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_677(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_678, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(678, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_678(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_679, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(679, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_679(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_680, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(680, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_680(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_681, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(681, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_681(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_682, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(682, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_682(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_683, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(683, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_683(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_684, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(684, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_684(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_685, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(685, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_685(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_686, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(686, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_686(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_687, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(687, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_687(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_688, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(688, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_688(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_689, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(689, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_689(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_690, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(690, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_690(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_691, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(691, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_691(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_692, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(692, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_692(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_693, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(693, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_693(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_694, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(694, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_694(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_695, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(695, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_695(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_696, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(696, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_696(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_697, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(697, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_697(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_698, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(698, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_698(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_699, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(699, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_699(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_700, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(700, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_700(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_701, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(701, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_701(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_702, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(702, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_702(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_703, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(703, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_703(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_704, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(704, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_704(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_705, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(705, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_705(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_706, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(706, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_706(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_707, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(707, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_707(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_708, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(708, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_708(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_709, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(709, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_709(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_710, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(710, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_710(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_711, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(711, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_711(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_712, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(712, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_712(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_713, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(713, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_713(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_714, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(714, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_714(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_715, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(715, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_715(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_716, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(716, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_716(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_717, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(717, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_717(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_718, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(718, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_718(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_719, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(719, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_719(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_720, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(720, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_720(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_721, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(721, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_721(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_722, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(722, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_722(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_723, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(723, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_723(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_724, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(724, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_724(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_725, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(725, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_725(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_726, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(726, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_726(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_727, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(727, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_727(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_728, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(728, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_728(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_729, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(729, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_729(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_730, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(730, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_730(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_731, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(731, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_731(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_732, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(732, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_732(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_733, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(733, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_733(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_734, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(734, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_734(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_735, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(735, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_735(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_736, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(736, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_736(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_737, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(737, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_737(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_738, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(738, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_738(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_739, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(739, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_739(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_740, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(740, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_740(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_741, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(741, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_741(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_742, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(742, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_742(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_743, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(743, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_743(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_744, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(744, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_744(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_745, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(745, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_745(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_746, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(746, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_746(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_747, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(747, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_747(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_748, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(748, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_748(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_749, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(749, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_749(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_750, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(750, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_750(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_751, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(751, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_751(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_752, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(752, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_752(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_753, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(753, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_753(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_754, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(754, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_754(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_755, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(755, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_755(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_756, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(756, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_756(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_757, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(757, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_757(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_758, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(758, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_758(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_759, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(759, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_759(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_760, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(760, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_760(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_761, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(761, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_761(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_762, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(762, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_762(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_763, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(763, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_763(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_764, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(764, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_764(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_765, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(765, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_765(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_766, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(766, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_766(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_767, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(767, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_767(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_768, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(768, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_768(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_769, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(769, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_769(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_770, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(770, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_770(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_771, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(771, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_771(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_772, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(772, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_772(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_773, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(773, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_773(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_774, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(774, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_774(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_775, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(775, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_775(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_776, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(776, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_776(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_777, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(777, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_777(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_778, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(778, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_778(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_779, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(779, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_779(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_780, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(780, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_780(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_781, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(781, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_781(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_782, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(782, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_782(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_783, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(783, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_783(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_784, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(784, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_784(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_785, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(785, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_785(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_786, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(786, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_786(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_787, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(787, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_787(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_788, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(788, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_788(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_789, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(789, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_789(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_790, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(790, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_790(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_791, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(791, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_791(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_792, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(792, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_792(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_793, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(793, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_793(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_794, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(794, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_794(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_795, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(795, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_795(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_796, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(796, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_796(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_797, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(797, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_797(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_798, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(798, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_798(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_799, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(799, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_799(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_800, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(800, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_800(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_801, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(801, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_801(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_802, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(802, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_802(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_803, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(803, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_803(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_804, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(804, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_804(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_805, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(805, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_805(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_806, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(806, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_806(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_807, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(807, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_807(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_808, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(808, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_808(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_809, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(809, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_809(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_810, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(810, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_810(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_811, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(811, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_811(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_812, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(812, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_812(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_813, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(813, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_813(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_814, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(814, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_814(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_815, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(815, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_815(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_816, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(816, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_816(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_817, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(817, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_817(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_818, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(818, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_818(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_819, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(819, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_819(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_820, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(820, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_820(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_821, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(821, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_821(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_822, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(822, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_822(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_823, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(823, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_823(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_824, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(824, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_824(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_825, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(825, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_825(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_826, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(826, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_826(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_827, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(827, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_827(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_828, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(828, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_828(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_829, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(829, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_829(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_830, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(830, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_830(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_831, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(831, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_831(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_832, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(832, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_832(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_833, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(833, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_833(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_834, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(834, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_834(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_835, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(835, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_835(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_836, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(836, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_836(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_837, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(837, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_837(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_838, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(838, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_838(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_839, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(839, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_839(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_840, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(840, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_840(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_841, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(841, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_841(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_842, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(842, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_842(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_843, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(843, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_843(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_844, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(844, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_844(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_845, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(845, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_845(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_846, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(846, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_846(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_847, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(847, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_847(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_848, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(848, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_848(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_849, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(849, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_849(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_850, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(850, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_850(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_851, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(851, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_851(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_852, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(852, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_852(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_853, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(853, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_853(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_854, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(854, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_854(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_855, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(855, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_855(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_856, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(856, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_856(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_857, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(857, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_857(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_858, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(858, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_858(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_859, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(859, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_859(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_860, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(860, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_860(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_861, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(861, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_861(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_862, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(862, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_862(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_863, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(863, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_863(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_864, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(864, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_864(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_865, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(865, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_865(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_866, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(866, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_866(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_867, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(867, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_867(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_868, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(868, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_868(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_869, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(869, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_869(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_870, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(870, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_870(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_871, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(871, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_871(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_872, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(872, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_872(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_873, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(873, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_873(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_874, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(874, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_874(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_875, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(875, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_875(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_876, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(876, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_876(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_877, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(877, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_877(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_878, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(878, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_878(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_879, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(879, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_879(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_880, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(880, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_880(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_881, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(881, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_881(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_882, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(882, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_882(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_883, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(883, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_883(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_884, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(884, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_884(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_885, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(885, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_885(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_886, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(886, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_886(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_887, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(887, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_887(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_888, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(888, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_888(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_889, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(889, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_889(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_890, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(890, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_890(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_891, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(891, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_891(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_892, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(892, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_892(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_893, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(893, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_893(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_894, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(894, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_894(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_895, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(895, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_895(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_896, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(896, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_896(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_897, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(897, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_897(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_898, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(898, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_898(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_899, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(899, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_899(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_900, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(900, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_900(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_901, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(901, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_901(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_902, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(902, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_902(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_903, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(903, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_903(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_904, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(904, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_904(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_905, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(905, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_905(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_906, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(906, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_906(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_907, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(907, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_907(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_908, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(908, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_908(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_909, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(909, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_909(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_910, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(910, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_910(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_911, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(911, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_911(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_912, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(912, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_912(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_913, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(913, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_913(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_914, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(914, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_914(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_915, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(915, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_915(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_916, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(916, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_916(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_917, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(917, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_917(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_918, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(918, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_918(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_919, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(919, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_919(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_920, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(920, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_920(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_921, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(921, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_921(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_922, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(922, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_922(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_923, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(923, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_923(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_924, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(924, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_924(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_925, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(925, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_925(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_926, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(926, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_926(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_927, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(927, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_927(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_928, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(928, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_928(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_929, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(929, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_929(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_930, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(930, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_930(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_931, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(931, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_931(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_932, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(932, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_932(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_933, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(933, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_933(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_934, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(934, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_934(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_935, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(935, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_935(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_936, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(936, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_936(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_937, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(937, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_937(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_938, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(938, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_938(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_939, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(939, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_939(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_940, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(940, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_940(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_941, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(941, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_941(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_942, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(942, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_942(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_943, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(943, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_943(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_944, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(944, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_944(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_945, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(945, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_945(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_946, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(946, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_946(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_947, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(947, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_947(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_948, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(948, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_948(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_949, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(949, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_949(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_950, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(950, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_950(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_951, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(951, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_951(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_952, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(952, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_952(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_953, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(953, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_953(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_954, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(954, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_954(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_955, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(955, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_955(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_956, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(956, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_956(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_957, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(957, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_957(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_958, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(958, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_958(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_959, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(959, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_959(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_960, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(960, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_960(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_961, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(961, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_961(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_962, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(962, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_962(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_963, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(963, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_963(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_964, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(964, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_964(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_965, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(965, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_965(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_966, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(966, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_966(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_967, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(967, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_967(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_968, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(968, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_968(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_969, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(969, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_969(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_970, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(970, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_970(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_971, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(971, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_971(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_972, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(972, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_972(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_973, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(973, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_973(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_974, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(974, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_974(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_975, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(975, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_975(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_976, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(976, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_976(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_977, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(977, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_977(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_978, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(978, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_978(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_979, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(979, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_979(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_980, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(980, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_980(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_981, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(981, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_981(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_982, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(982, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_982(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_983, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(983, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_983(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_984, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(984, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_984(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_985, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(985, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_985(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_986, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(986, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_986(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_987, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(987, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_987(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_988, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(988, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_988(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_989, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(989, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_989(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_990, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(990, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_990(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_991, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(991, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_991(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_992, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(992, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_992(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_993, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(993, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_993(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_994, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(994, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_994(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_995, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(995, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_995(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_996, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(996, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_996(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_997, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(997, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_997(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_998, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(998, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_998(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_999, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(999, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_999(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1000, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1000, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1000(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1001, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1001, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1001(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1002, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1002, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1002(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1003, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1003, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1003(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1004, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1004, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1004(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1005, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1005, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1005(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1006, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1006, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1006(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1007, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1007, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1007(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1008, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1008, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1008(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1009, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1009, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1009(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1010, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1010, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1010(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1011, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1011, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1011(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1012, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1012, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1012(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1013, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1013, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1013(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1014, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1014, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1014(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1015, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1015, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1015(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1016, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1016, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1016(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1017, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1017, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1017(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1018, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1018, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1018(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1019, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1019, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1019(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1020, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1020, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1020(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1021, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1021, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1021(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1022, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1022, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1022(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1023, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1023, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1023(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1024, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1024, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1024(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1025, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1025, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/fold_left_256.hpp b/src/boost/boost/preprocessor/seq/limits/fold_left_256.hpp new file mode 100644 index 000000000..d67791ee1 --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/fold_left_256.hpp @@ -0,0 +1,1053 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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_SEQ_FOLD_LEFT_256_HPP +# define BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_256_HPP +# +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_0(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) 0 +# +# define BOOST_PP_SEQ_FOLD_LEFT_0(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_0(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_4(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_5(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_6(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_7(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_8(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_9(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_10(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_11(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_12(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_13(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_14(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_15(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_16(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_17(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_18(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_19(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_20(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_21(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_22(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_23(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_24(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_25(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_26(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_27(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_28(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_29(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_30(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_31(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_32(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_33(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_34(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_35(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_36(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_37(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_38(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_39(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_40(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_41(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_42(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_43(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_44(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_45(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_46(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_47(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_48(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_49(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_50(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_51(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_52(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_53(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_54(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_55(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_56(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_57(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_58(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_59(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_60(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_61(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_62(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_63(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_64(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_65(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_66(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_67(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_68(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_69(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_70(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_71(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_72(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_73(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_74(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_75(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_76(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_77(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_78(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_79(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_80(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_81(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_82(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_83(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_84(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_85(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_86(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_87(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_88(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_89(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_90(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_91(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_92(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_93(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_94(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_95(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_96(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_97(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_98(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_99(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_100(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_101(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_102(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_103(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_104(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_105(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_106(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_107(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_108(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_109(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_110(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_111(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_112(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_113(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_114(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_115(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_116(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_117(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_118(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_119(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_120(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_121(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_122(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_123(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_124(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_125(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_126(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_127(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_128(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_129(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_130(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_131(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_132(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_133(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_134(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_135(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_136(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_137(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_138(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_139(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_140(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_141(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_142(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_143(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_144(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_145(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_146(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_147(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_148(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_149(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_150(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_151(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_152(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_153(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_154(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_155(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_156(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_157(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_158(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_159(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_160(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_161(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_162(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_163(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_164(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_165(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_166(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_167(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_168(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_169(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_170(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_171(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_172(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_173(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_174(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_175(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_176(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_177(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_178(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_179(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_180(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_181(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_182(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_183(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_184(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_185(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_186(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_187(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_188(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_189(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_190(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_191(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_192(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_193(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_194(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_195(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_196(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_197(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_198(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_199(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_200(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_201(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_202(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_203(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_204(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_205(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_206(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_207(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_208(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_209(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_210(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_211(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_212(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_213(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_214(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_215(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_216(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_217(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_218(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_219(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_220(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_221(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_222(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_223(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_224(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_225(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_226(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_227(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_228(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_229(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_230(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_231(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_232(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_233(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_234(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_235(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_236(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_237(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_238(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_239(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_240(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_241(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_242(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_243(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_244(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_245(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_246(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_247(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_248(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_249(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_250(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_251(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_252(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_253(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_254(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_255(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_256(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC() +# +# define BOOST_PP_SEQ_FOLD_LEFT_I_0(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(1, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# +# else +# +# define BOOST_PP_SEQ_FOLD_LEFT_I_0(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_1, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(1, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# +# endif +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/fold_left_512.hpp b/src/boost/boost/preprocessor/seq/limits/fold_left_512.hpp new file mode 100644 index 000000000..c9708d900 --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/fold_left_512.hpp @@ -0,0 +1,788 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_512_HPP +# define BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_512_HPP +# +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_257(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_258(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_259(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_260(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_261(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_262(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_263(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_264(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_265(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_266(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_267(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_268(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_269(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_270(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_271(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_272(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_273(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_274(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_275(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_276(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_277(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_278(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_279(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_280(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_281(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_282(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_283(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_284(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_285(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_286(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_287(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_288(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_289(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_290(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_291(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_292(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_293(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_294(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_295(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_296(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_297(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_298(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_299(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_300(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_301(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_302(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_303(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_304(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_305(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_306(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_307(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_308(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_309(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_310(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_311(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_312(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_313(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_314(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_315(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_316(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_317(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_318(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_319(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_320(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_321(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_322(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_323(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_324(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_325(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_326(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_327(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_328(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_329(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_330(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_331(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_332(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_333(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_334(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_335(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_336(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_337(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_338(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_339(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_340(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_341(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_342(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_343(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_344(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_345(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_346(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_347(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_348(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_349(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_350(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_351(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_352(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_353(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_354(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_355(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_356(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_357(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_358(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_359(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_360(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_361(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_362(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_363(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_364(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_365(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_366(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_367(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_368(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_369(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_370(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_371(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_372(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_373(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_374(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_375(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_376(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_377(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_378(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_379(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_380(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_381(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_382(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_383(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_384(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_385(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_386(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_387(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_388(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_389(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_390(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_391(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_392(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_393(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_394(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_395(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_396(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_397(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_398(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_399(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_400(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_401(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_402(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_403(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_404(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_405(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_406(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_407(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_408(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_409(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_410(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_411(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_412(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_413(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_414(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_415(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_416(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_417(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_418(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_419(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_420(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_421(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_422(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_423(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_424(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_425(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_426(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_427(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_428(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_429(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_430(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_431(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_432(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_433(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_434(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_435(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_436(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_437(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_438(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_439(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_440(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_441(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_442(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_443(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_444(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_445(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_446(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_447(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_448(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_449(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_450(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_451(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_452(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_453(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_454(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_455(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_456(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_457(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_458(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_459(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_460(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_461(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_462(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_463(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_464(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_465(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_466(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_467(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_468(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_469(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_470(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_471(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_472(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_473(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_474(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_475(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_476(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_477(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_478(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_479(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_480(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_481(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_482(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_483(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_484(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_485(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_486(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_487(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_488(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_489(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_490(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_491(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_492(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_493(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_494(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_495(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_496(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_497(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_498(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_499(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_500(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_501(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_502(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_503(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_504(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_505(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_506(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_507(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_508(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_509(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_510(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_511(op, st, ss, sz) 0 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_512(op, st, ss, sz) 0 +# +# define BOOST_PP_SEQ_FOLD_LEFT_257(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_257(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_258(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_258(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_259(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_259(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_260(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_260(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_261(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_261(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_262(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_262(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_263(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_263(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_264(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_264(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_265(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_265(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_266(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_266(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_267(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_267(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_268(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_268(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_269(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_269(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_270(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_270(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_271(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_271(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_272(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_272(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_273(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_273(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_274(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_274(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_275(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_275(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_276(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_276(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_277(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_277(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_278(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_278(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_279(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_279(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_280(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_280(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_281(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_281(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_282(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_282(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_283(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_283(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_284(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_284(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_285(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_285(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_286(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_286(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_287(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_287(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_288(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_288(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_289(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_289(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_290(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_290(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_291(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_291(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_292(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_292(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_293(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_293(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_294(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_294(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_295(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_295(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_296(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_296(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_297(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_297(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_298(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_298(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_299(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_299(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_300(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_300(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_301(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_301(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_302(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_302(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_303(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_303(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_304(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_304(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_305(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_305(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_306(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_306(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_307(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_307(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_308(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_308(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_309(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_309(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_310(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_310(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_311(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_311(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_312(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_312(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_313(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_313(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_314(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_314(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_315(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_315(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_316(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_316(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_317(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_317(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_318(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_318(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_319(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_319(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_320(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_320(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_321(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_321(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_322(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_322(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_323(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_323(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_324(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_324(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_325(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_325(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_326(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_326(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_327(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_327(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_328(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_328(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_329(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_329(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_330(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_330(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_331(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_331(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_332(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_332(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_333(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_333(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_334(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_334(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_335(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_335(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_336(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_336(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_337(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_337(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_338(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_338(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_339(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_339(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_340(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_340(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_341(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_341(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_342(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_342(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_343(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_343(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_344(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_344(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_345(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_345(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_346(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_346(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_347(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_347(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_348(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_348(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_349(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_349(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_350(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_350(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_351(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_351(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_352(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_352(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_353(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_353(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_354(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_354(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_355(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_355(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_356(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_356(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_357(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_357(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_358(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_358(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_359(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_359(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_360(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_360(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_361(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_361(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_362(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_362(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_363(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_363(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_364(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_364(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_365(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_365(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_366(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_366(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_367(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_367(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_368(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_368(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_369(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_369(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_370(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_370(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_371(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_371(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_372(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_372(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_373(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_373(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_374(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_374(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_375(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_375(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_376(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_376(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_377(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_377(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_378(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_378(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_379(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_379(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_380(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_380(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_381(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_381(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_382(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_382(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_383(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_383(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_384(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_384(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_385(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_385(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_386(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_386(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_387(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_387(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_388(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_388(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_389(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_389(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_390(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_390(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_391(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_391(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_392(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_392(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_393(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_393(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_394(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_394(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_395(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_395(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_396(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_396(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_397(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_397(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_398(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_398(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_399(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_399(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_400(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_400(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_401(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_401(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_402(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_402(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_403(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_403(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_404(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_404(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_405(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_405(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_406(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_406(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_407(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_407(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_408(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_408(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_409(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_409(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_410(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_410(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_411(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_411(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_412(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_412(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_413(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_413(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_414(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_414(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_415(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_415(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_416(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_416(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_417(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_417(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_418(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_418(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_419(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_419(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_420(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_420(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_421(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_421(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_422(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_422(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_423(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_423(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_424(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_424(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_425(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_425(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_426(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_426(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_427(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_427(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_428(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_428(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_429(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_429(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_430(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_430(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_431(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_431(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_432(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_432(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_433(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_433(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_434(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_434(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_435(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_435(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_436(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_436(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_437(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_437(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_438(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_438(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_439(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_439(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_440(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_440(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_441(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_441(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_442(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_442(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_443(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_443(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_444(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_444(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_445(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_445(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_446(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_446(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_447(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_447(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_448(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_448(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_449(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_449(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_450(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_450(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_451(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_451(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_452(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_452(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_453(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_453(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_454(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_454(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_455(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_455(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_456(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_456(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_457(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_457(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_458(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_458(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_459(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_459(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_460(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_460(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_461(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_461(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_462(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_462(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_463(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_463(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_464(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_464(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_465(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_465(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_466(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_466(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_467(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_467(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_468(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_468(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_469(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_469(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_470(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_470(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_471(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_471(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_472(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_472(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_473(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_473(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_474(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_474(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_475(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_475(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_476(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_476(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_477(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_477(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_478(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_478(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_479(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_479(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_480(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_480(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_481(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_481(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_482(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_482(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_483(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_483(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_484(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_484(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_485(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_485(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_486(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_486(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_487(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_487(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_488(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_488(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_489(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_489(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_490(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_490(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_491(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_491(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_492(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_492(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_493(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_493(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_494(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_494(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_495(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_495(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_496(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_496(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_497(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_497(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_498(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_498(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_499(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_499(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_500(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_500(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_501(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_501(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_502(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_502(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_503(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_503(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_504(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_504(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_505(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_505(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_506(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_506(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_507(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_507(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_508(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_508(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_509(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_509(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_510(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_510(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_511(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_511(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# define BOOST_PP_SEQ_FOLD_LEFT_512(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_512(op, st, ss, BOOST_PP_SEQ_SIZE(ss)) +# +# define BOOST_PP_SEQ_FOLD_LEFT_I_257(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_258, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(258, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_258(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_259, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(259, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_259(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_260, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(260, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_260(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_261, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(261, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_261(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_262, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(262, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_262(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_263, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(263, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_263(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_264, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(264, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_264(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_265, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(265, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_265(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_266, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(266, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_266(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_267, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(267, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_267(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_268, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(268, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_268(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_269, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(269, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_269(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_270, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(270, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_270(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_271, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(271, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_271(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_272, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(272, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_272(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_273, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(273, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_273(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_274, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(274, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_274(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_275, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(275, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_275(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_276, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(276, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_276(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_277, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(277, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_277(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_278, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(278, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_278(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_279, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(279, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_279(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_280, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(280, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_280(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_281, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(281, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_281(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_282, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(282, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_282(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_283, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(283, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_283(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_284, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(284, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_284(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_285, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(285, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_285(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_286, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(286, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_286(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_287, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(287, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_287(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_288, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(288, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_288(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_289, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(289, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_289(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_290, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(290, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_290(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_291, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(291, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_291(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_292, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(292, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_292(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_293, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(293, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_293(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_294, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(294, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_294(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_295, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(295, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_295(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_296, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(296, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_296(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_297, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(297, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_297(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_298, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(298, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_298(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_299, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(299, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_299(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_300, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(300, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_300(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_301, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(301, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_301(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_302, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(302, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_302(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_303, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(303, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_303(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_304, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(304, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_304(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_305, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(305, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_305(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_306, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(306, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_306(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_307, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(307, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_307(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_308, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(308, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_308(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_309, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(309, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_309(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_310, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(310, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_310(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_311, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(311, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_311(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_312, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(312, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_312(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_313, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(313, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_313(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_314, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(314, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_314(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_315, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(315, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_315(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_316, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(316, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_316(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_317, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(317, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_317(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_318, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(318, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_318(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_319, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(319, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_319(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_320, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(320, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_320(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_321, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(321, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_321(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_322, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(322, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_322(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_323, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(323, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_323(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_324, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(324, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_324(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_325, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(325, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_325(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_326, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(326, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_326(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_327, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(327, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_327(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_328, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(328, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_328(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_329, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(329, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_329(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_330, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(330, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_330(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_331, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(331, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_331(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_332, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(332, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_332(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_333, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(333, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_333(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_334, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(334, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_334(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_335, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(335, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_335(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_336, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(336, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_336(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_337, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(337, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_337(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_338, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(338, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_338(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_339, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(339, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_339(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_340, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(340, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_340(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_341, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(341, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_341(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_342, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(342, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_342(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_343, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(343, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_343(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_344, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(344, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_344(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_345, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(345, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_345(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_346, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(346, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_346(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_347, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(347, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_347(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_348, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(348, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_348(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_349, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(349, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_349(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_350, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(350, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_350(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_351, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(351, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_351(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_352, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(352, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_352(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_353, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(353, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_353(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_354, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(354, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_354(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_355, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(355, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_355(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_356, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(356, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_356(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_357, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(357, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_357(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_358, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(358, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_358(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_359, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(359, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_359(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_360, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(360, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_360(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_361, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(361, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_361(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_362, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(362, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_362(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_363, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(363, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_363(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_364, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(364, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_364(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_365, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(365, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_365(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_366, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(366, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_366(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_367, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(367, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_367(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_368, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(368, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_368(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_369, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(369, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_369(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_370, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(370, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_370(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_371, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(371, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_371(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_372, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(372, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_372(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_373, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(373, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_373(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_374, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(374, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_374(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_375, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(375, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_375(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_376, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(376, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_376(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_377, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(377, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_377(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_378, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(378, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_378(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_379, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(379, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_379(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_380, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(380, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_380(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_381, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(381, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_381(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_382, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(382, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_382(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_383, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(383, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_383(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_384, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(384, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_384(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_385, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(385, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_385(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_386, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(386, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_386(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_387, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(387, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_387(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_388, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(388, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_388(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_389, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(389, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_389(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_390, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(390, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_390(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_391, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(391, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_391(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_392, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(392, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_392(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_393, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(393, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_393(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_394, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(394, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_394(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_395, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(395, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_395(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_396, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(396, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_396(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_397, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(397, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_397(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_398, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(398, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_398(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_399, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(399, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_399(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_400, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(400, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_400(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_401, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(401, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_401(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_402, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(402, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_402(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_403, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(403, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_403(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_404, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(404, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_404(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_405, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(405, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_405(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_406, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(406, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_406(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_407, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(407, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_407(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_408, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(408, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_408(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_409, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(409, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_409(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_410, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(410, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_410(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_411, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(411, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_411(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_412, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(412, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_412(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_413, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(413, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_413(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_414, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(414, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_414(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_415, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(415, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_415(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_416, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(416, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_416(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_417, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(417, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_417(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_418, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(418, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_418(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_419, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(419, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_419(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_420, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(420, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_420(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_421, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(421, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_421(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_422, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(422, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_422(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_423, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(423, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_423(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_424, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(424, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_424(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_425, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(425, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_425(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_426, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(426, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_426(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_427, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(427, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_427(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_428, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(428, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_428(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_429, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(429, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_429(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_430, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(430, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_430(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_431, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(431, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_431(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_432, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(432, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_432(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_433, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(433, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_433(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_434, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(434, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_434(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_435, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(435, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_435(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_436, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(436, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_436(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_437, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(437, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_437(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_438, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(438, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_438(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_439, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(439, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_439(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_440, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(440, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_440(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_441, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(441, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_441(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_442, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(442, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_442(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_443, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(443, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_443(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_444, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(444, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_444(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_445, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(445, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_445(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_446, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(446, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_446(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_447, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(447, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_447(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_448, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(448, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_448(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_449, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(449, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_449(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_450, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(450, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_450(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_451, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(451, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_451(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_452, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(452, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_452(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_453, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(453, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_453(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_454, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(454, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_454(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_455, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(455, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_455(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_456, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(456, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_456(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_457, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(457, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_457(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_458, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(458, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_458(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_459, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(459, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_459(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_460, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(460, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_460(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_461, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(461, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_461(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_462, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(462, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_462(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_463, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(463, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_463(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_464, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(464, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_464(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_465, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(465, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_465(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_466, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(466, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_466(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_467, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(467, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_467(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_468, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(468, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_468(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_469, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(469, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_469(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_470, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(470, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_470(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_471, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(471, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_471(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_472, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(472, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_472(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_473, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(473, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_473(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_474, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(474, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_474(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_475, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(475, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_475(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_476, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(476, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_476(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_477, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(477, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_477(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_478, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(478, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_478(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_479, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(479, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_479(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_480, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(480, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_480(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_481, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(481, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_481(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_482, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(482, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_482(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_483, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(483, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_483(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_484, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(484, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_484(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_485, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(485, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_485(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_486, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(486, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_486(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_487, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(487, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_487(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_488, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(488, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_488(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_489, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(489, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_489(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_490, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(490, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_490(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_491, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(491, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_491(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_492, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(492, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_492(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_493, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(493, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_493(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_494, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(494, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_494(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_495, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(495, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_495(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_496, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(496, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_496(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_497, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(497, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_497(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_498, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(498, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_498(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_499, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(499, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_499(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_500, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(500, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_500(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_501, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(501, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_501(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_502, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(502, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_502(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_503, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(503, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_503(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_504, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(504, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_504(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_505, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(505, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_505(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_506, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(506, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_506(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_507, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(507, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_507(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_508, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(508, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_508(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_509, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(509, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_509(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_510, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(510, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_510(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_511, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(511, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_511(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_512, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(512, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# define BOOST_PP_SEQ_FOLD_LEFT_I_512(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_513, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(513, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz)) +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/size_1024.hpp b/src/boost/boost/preprocessor/seq/limits/size_1024.hpp new file mode 100644 index 000000000..e7fee29cb --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/size_1024.hpp @@ -0,0 +1,1043 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_SEQ_SIZE_1024_HPP +# define BOOST_PREPROCESSOR_SEQ_SIZE_1024_HPP +# +# define BOOST_PP_SEQ_SIZE_513(_) BOOST_PP_SEQ_SIZE_514 +# define BOOST_PP_SEQ_SIZE_514(_) BOOST_PP_SEQ_SIZE_515 +# define BOOST_PP_SEQ_SIZE_515(_) BOOST_PP_SEQ_SIZE_516 +# define BOOST_PP_SEQ_SIZE_516(_) BOOST_PP_SEQ_SIZE_517 +# define BOOST_PP_SEQ_SIZE_517(_) BOOST_PP_SEQ_SIZE_518 +# define BOOST_PP_SEQ_SIZE_518(_) BOOST_PP_SEQ_SIZE_519 +# define BOOST_PP_SEQ_SIZE_519(_) BOOST_PP_SEQ_SIZE_520 +# define BOOST_PP_SEQ_SIZE_520(_) BOOST_PP_SEQ_SIZE_521 +# define BOOST_PP_SEQ_SIZE_521(_) BOOST_PP_SEQ_SIZE_522 +# define BOOST_PP_SEQ_SIZE_522(_) BOOST_PP_SEQ_SIZE_523 +# define BOOST_PP_SEQ_SIZE_523(_) BOOST_PP_SEQ_SIZE_524 +# define BOOST_PP_SEQ_SIZE_524(_) BOOST_PP_SEQ_SIZE_525 +# define BOOST_PP_SEQ_SIZE_525(_) BOOST_PP_SEQ_SIZE_526 +# define BOOST_PP_SEQ_SIZE_526(_) BOOST_PP_SEQ_SIZE_527 +# define BOOST_PP_SEQ_SIZE_527(_) BOOST_PP_SEQ_SIZE_528 +# define BOOST_PP_SEQ_SIZE_528(_) BOOST_PP_SEQ_SIZE_529 +# define BOOST_PP_SEQ_SIZE_529(_) BOOST_PP_SEQ_SIZE_530 +# define BOOST_PP_SEQ_SIZE_530(_) BOOST_PP_SEQ_SIZE_531 +# define BOOST_PP_SEQ_SIZE_531(_) BOOST_PP_SEQ_SIZE_532 +# define BOOST_PP_SEQ_SIZE_532(_) BOOST_PP_SEQ_SIZE_533 +# define BOOST_PP_SEQ_SIZE_533(_) BOOST_PP_SEQ_SIZE_534 +# define BOOST_PP_SEQ_SIZE_534(_) BOOST_PP_SEQ_SIZE_535 +# define BOOST_PP_SEQ_SIZE_535(_) BOOST_PP_SEQ_SIZE_536 +# define BOOST_PP_SEQ_SIZE_536(_) BOOST_PP_SEQ_SIZE_537 +# define BOOST_PP_SEQ_SIZE_537(_) BOOST_PP_SEQ_SIZE_538 +# define BOOST_PP_SEQ_SIZE_538(_) BOOST_PP_SEQ_SIZE_539 +# define BOOST_PP_SEQ_SIZE_539(_) BOOST_PP_SEQ_SIZE_540 +# define BOOST_PP_SEQ_SIZE_540(_) BOOST_PP_SEQ_SIZE_541 +# define BOOST_PP_SEQ_SIZE_541(_) BOOST_PP_SEQ_SIZE_542 +# define BOOST_PP_SEQ_SIZE_542(_) BOOST_PP_SEQ_SIZE_543 +# define BOOST_PP_SEQ_SIZE_543(_) BOOST_PP_SEQ_SIZE_544 +# define BOOST_PP_SEQ_SIZE_544(_) BOOST_PP_SEQ_SIZE_545 +# define BOOST_PP_SEQ_SIZE_545(_) BOOST_PP_SEQ_SIZE_546 +# define BOOST_PP_SEQ_SIZE_546(_) BOOST_PP_SEQ_SIZE_547 +# define BOOST_PP_SEQ_SIZE_547(_) BOOST_PP_SEQ_SIZE_548 +# define BOOST_PP_SEQ_SIZE_548(_) BOOST_PP_SEQ_SIZE_549 +# define BOOST_PP_SEQ_SIZE_549(_) BOOST_PP_SEQ_SIZE_550 +# define BOOST_PP_SEQ_SIZE_550(_) BOOST_PP_SEQ_SIZE_551 +# define BOOST_PP_SEQ_SIZE_551(_) BOOST_PP_SEQ_SIZE_552 +# define BOOST_PP_SEQ_SIZE_552(_) BOOST_PP_SEQ_SIZE_553 +# define BOOST_PP_SEQ_SIZE_553(_) BOOST_PP_SEQ_SIZE_554 +# define BOOST_PP_SEQ_SIZE_554(_) BOOST_PP_SEQ_SIZE_555 +# define BOOST_PP_SEQ_SIZE_555(_) BOOST_PP_SEQ_SIZE_556 +# define BOOST_PP_SEQ_SIZE_556(_) BOOST_PP_SEQ_SIZE_557 +# define BOOST_PP_SEQ_SIZE_557(_) BOOST_PP_SEQ_SIZE_558 +# define BOOST_PP_SEQ_SIZE_558(_) BOOST_PP_SEQ_SIZE_559 +# define BOOST_PP_SEQ_SIZE_559(_) BOOST_PP_SEQ_SIZE_560 +# define BOOST_PP_SEQ_SIZE_560(_) BOOST_PP_SEQ_SIZE_561 +# define BOOST_PP_SEQ_SIZE_561(_) BOOST_PP_SEQ_SIZE_562 +# define BOOST_PP_SEQ_SIZE_562(_) BOOST_PP_SEQ_SIZE_563 +# define BOOST_PP_SEQ_SIZE_563(_) BOOST_PP_SEQ_SIZE_564 +# define BOOST_PP_SEQ_SIZE_564(_) BOOST_PP_SEQ_SIZE_565 +# define BOOST_PP_SEQ_SIZE_565(_) BOOST_PP_SEQ_SIZE_566 +# define BOOST_PP_SEQ_SIZE_566(_) BOOST_PP_SEQ_SIZE_567 +# define BOOST_PP_SEQ_SIZE_567(_) BOOST_PP_SEQ_SIZE_568 +# define BOOST_PP_SEQ_SIZE_568(_) BOOST_PP_SEQ_SIZE_569 +# define BOOST_PP_SEQ_SIZE_569(_) BOOST_PP_SEQ_SIZE_570 +# define BOOST_PP_SEQ_SIZE_570(_) BOOST_PP_SEQ_SIZE_571 +# define BOOST_PP_SEQ_SIZE_571(_) BOOST_PP_SEQ_SIZE_572 +# define BOOST_PP_SEQ_SIZE_572(_) BOOST_PP_SEQ_SIZE_573 +# define BOOST_PP_SEQ_SIZE_573(_) BOOST_PP_SEQ_SIZE_574 +# define BOOST_PP_SEQ_SIZE_574(_) BOOST_PP_SEQ_SIZE_575 +# define BOOST_PP_SEQ_SIZE_575(_) BOOST_PP_SEQ_SIZE_576 +# define BOOST_PP_SEQ_SIZE_576(_) BOOST_PP_SEQ_SIZE_577 +# define BOOST_PP_SEQ_SIZE_577(_) BOOST_PP_SEQ_SIZE_578 +# define BOOST_PP_SEQ_SIZE_578(_) BOOST_PP_SEQ_SIZE_579 +# define BOOST_PP_SEQ_SIZE_579(_) BOOST_PP_SEQ_SIZE_580 +# define BOOST_PP_SEQ_SIZE_580(_) BOOST_PP_SEQ_SIZE_581 +# define BOOST_PP_SEQ_SIZE_581(_) BOOST_PP_SEQ_SIZE_582 +# define BOOST_PP_SEQ_SIZE_582(_) BOOST_PP_SEQ_SIZE_583 +# define BOOST_PP_SEQ_SIZE_583(_) BOOST_PP_SEQ_SIZE_584 +# define BOOST_PP_SEQ_SIZE_584(_) BOOST_PP_SEQ_SIZE_585 +# define BOOST_PP_SEQ_SIZE_585(_) BOOST_PP_SEQ_SIZE_586 +# define BOOST_PP_SEQ_SIZE_586(_) BOOST_PP_SEQ_SIZE_587 +# define BOOST_PP_SEQ_SIZE_587(_) BOOST_PP_SEQ_SIZE_588 +# define BOOST_PP_SEQ_SIZE_588(_) BOOST_PP_SEQ_SIZE_589 +# define BOOST_PP_SEQ_SIZE_589(_) BOOST_PP_SEQ_SIZE_590 +# define BOOST_PP_SEQ_SIZE_590(_) BOOST_PP_SEQ_SIZE_591 +# define BOOST_PP_SEQ_SIZE_591(_) BOOST_PP_SEQ_SIZE_592 +# define BOOST_PP_SEQ_SIZE_592(_) BOOST_PP_SEQ_SIZE_593 +# define BOOST_PP_SEQ_SIZE_593(_) BOOST_PP_SEQ_SIZE_594 +# define BOOST_PP_SEQ_SIZE_594(_) BOOST_PP_SEQ_SIZE_595 +# define BOOST_PP_SEQ_SIZE_595(_) BOOST_PP_SEQ_SIZE_596 +# define BOOST_PP_SEQ_SIZE_596(_) BOOST_PP_SEQ_SIZE_597 +# define BOOST_PP_SEQ_SIZE_597(_) BOOST_PP_SEQ_SIZE_598 +# define BOOST_PP_SEQ_SIZE_598(_) BOOST_PP_SEQ_SIZE_599 +# define BOOST_PP_SEQ_SIZE_599(_) BOOST_PP_SEQ_SIZE_600 +# define BOOST_PP_SEQ_SIZE_600(_) BOOST_PP_SEQ_SIZE_601 +# define BOOST_PP_SEQ_SIZE_601(_) BOOST_PP_SEQ_SIZE_602 +# define BOOST_PP_SEQ_SIZE_602(_) BOOST_PP_SEQ_SIZE_603 +# define BOOST_PP_SEQ_SIZE_603(_) BOOST_PP_SEQ_SIZE_604 +# define BOOST_PP_SEQ_SIZE_604(_) BOOST_PP_SEQ_SIZE_605 +# define BOOST_PP_SEQ_SIZE_605(_) BOOST_PP_SEQ_SIZE_606 +# define BOOST_PP_SEQ_SIZE_606(_) BOOST_PP_SEQ_SIZE_607 +# define BOOST_PP_SEQ_SIZE_607(_) BOOST_PP_SEQ_SIZE_608 +# define BOOST_PP_SEQ_SIZE_608(_) BOOST_PP_SEQ_SIZE_609 +# define BOOST_PP_SEQ_SIZE_609(_) BOOST_PP_SEQ_SIZE_610 +# define BOOST_PP_SEQ_SIZE_610(_) BOOST_PP_SEQ_SIZE_611 +# define BOOST_PP_SEQ_SIZE_611(_) BOOST_PP_SEQ_SIZE_612 +# define BOOST_PP_SEQ_SIZE_612(_) BOOST_PP_SEQ_SIZE_613 +# define BOOST_PP_SEQ_SIZE_613(_) BOOST_PP_SEQ_SIZE_614 +# define BOOST_PP_SEQ_SIZE_614(_) BOOST_PP_SEQ_SIZE_615 +# define BOOST_PP_SEQ_SIZE_615(_) BOOST_PP_SEQ_SIZE_616 +# define BOOST_PP_SEQ_SIZE_616(_) BOOST_PP_SEQ_SIZE_617 +# define BOOST_PP_SEQ_SIZE_617(_) BOOST_PP_SEQ_SIZE_618 +# define BOOST_PP_SEQ_SIZE_618(_) BOOST_PP_SEQ_SIZE_619 +# define BOOST_PP_SEQ_SIZE_619(_) BOOST_PP_SEQ_SIZE_620 +# define BOOST_PP_SEQ_SIZE_620(_) BOOST_PP_SEQ_SIZE_621 +# define BOOST_PP_SEQ_SIZE_621(_) BOOST_PP_SEQ_SIZE_622 +# define BOOST_PP_SEQ_SIZE_622(_) BOOST_PP_SEQ_SIZE_623 +# define BOOST_PP_SEQ_SIZE_623(_) BOOST_PP_SEQ_SIZE_624 +# define BOOST_PP_SEQ_SIZE_624(_) BOOST_PP_SEQ_SIZE_625 +# define BOOST_PP_SEQ_SIZE_625(_) BOOST_PP_SEQ_SIZE_626 +# define BOOST_PP_SEQ_SIZE_626(_) BOOST_PP_SEQ_SIZE_627 +# define BOOST_PP_SEQ_SIZE_627(_) BOOST_PP_SEQ_SIZE_628 +# define BOOST_PP_SEQ_SIZE_628(_) BOOST_PP_SEQ_SIZE_629 +# define BOOST_PP_SEQ_SIZE_629(_) BOOST_PP_SEQ_SIZE_630 +# define BOOST_PP_SEQ_SIZE_630(_) BOOST_PP_SEQ_SIZE_631 +# define BOOST_PP_SEQ_SIZE_631(_) BOOST_PP_SEQ_SIZE_632 +# define BOOST_PP_SEQ_SIZE_632(_) BOOST_PP_SEQ_SIZE_633 +# define BOOST_PP_SEQ_SIZE_633(_) BOOST_PP_SEQ_SIZE_634 +# define BOOST_PP_SEQ_SIZE_634(_) BOOST_PP_SEQ_SIZE_635 +# define BOOST_PP_SEQ_SIZE_635(_) BOOST_PP_SEQ_SIZE_636 +# define BOOST_PP_SEQ_SIZE_636(_) BOOST_PP_SEQ_SIZE_637 +# define BOOST_PP_SEQ_SIZE_637(_) BOOST_PP_SEQ_SIZE_638 +# define BOOST_PP_SEQ_SIZE_638(_) BOOST_PP_SEQ_SIZE_639 +# define BOOST_PP_SEQ_SIZE_639(_) BOOST_PP_SEQ_SIZE_640 +# define BOOST_PP_SEQ_SIZE_640(_) BOOST_PP_SEQ_SIZE_641 +# define BOOST_PP_SEQ_SIZE_641(_) BOOST_PP_SEQ_SIZE_642 +# define BOOST_PP_SEQ_SIZE_642(_) BOOST_PP_SEQ_SIZE_643 +# define BOOST_PP_SEQ_SIZE_643(_) BOOST_PP_SEQ_SIZE_644 +# define BOOST_PP_SEQ_SIZE_644(_) BOOST_PP_SEQ_SIZE_645 +# define BOOST_PP_SEQ_SIZE_645(_) BOOST_PP_SEQ_SIZE_646 +# define BOOST_PP_SEQ_SIZE_646(_) BOOST_PP_SEQ_SIZE_647 +# define BOOST_PP_SEQ_SIZE_647(_) BOOST_PP_SEQ_SIZE_648 +# define BOOST_PP_SEQ_SIZE_648(_) BOOST_PP_SEQ_SIZE_649 +# define BOOST_PP_SEQ_SIZE_649(_) BOOST_PP_SEQ_SIZE_650 +# define BOOST_PP_SEQ_SIZE_650(_) BOOST_PP_SEQ_SIZE_651 +# define BOOST_PP_SEQ_SIZE_651(_) BOOST_PP_SEQ_SIZE_652 +# define BOOST_PP_SEQ_SIZE_652(_) BOOST_PP_SEQ_SIZE_653 +# define BOOST_PP_SEQ_SIZE_653(_) BOOST_PP_SEQ_SIZE_654 +# define BOOST_PP_SEQ_SIZE_654(_) BOOST_PP_SEQ_SIZE_655 +# define BOOST_PP_SEQ_SIZE_655(_) BOOST_PP_SEQ_SIZE_656 +# define BOOST_PP_SEQ_SIZE_656(_) BOOST_PP_SEQ_SIZE_657 +# define BOOST_PP_SEQ_SIZE_657(_) BOOST_PP_SEQ_SIZE_658 +# define BOOST_PP_SEQ_SIZE_658(_) BOOST_PP_SEQ_SIZE_659 +# define BOOST_PP_SEQ_SIZE_659(_) BOOST_PP_SEQ_SIZE_660 +# define BOOST_PP_SEQ_SIZE_660(_) BOOST_PP_SEQ_SIZE_661 +# define BOOST_PP_SEQ_SIZE_661(_) BOOST_PP_SEQ_SIZE_662 +# define BOOST_PP_SEQ_SIZE_662(_) BOOST_PP_SEQ_SIZE_663 +# define BOOST_PP_SEQ_SIZE_663(_) BOOST_PP_SEQ_SIZE_664 +# define BOOST_PP_SEQ_SIZE_664(_) BOOST_PP_SEQ_SIZE_665 +# define BOOST_PP_SEQ_SIZE_665(_) BOOST_PP_SEQ_SIZE_666 +# define BOOST_PP_SEQ_SIZE_666(_) BOOST_PP_SEQ_SIZE_667 +# define BOOST_PP_SEQ_SIZE_667(_) BOOST_PP_SEQ_SIZE_668 +# define BOOST_PP_SEQ_SIZE_668(_) BOOST_PP_SEQ_SIZE_669 +# define BOOST_PP_SEQ_SIZE_669(_) BOOST_PP_SEQ_SIZE_670 +# define BOOST_PP_SEQ_SIZE_670(_) BOOST_PP_SEQ_SIZE_671 +# define BOOST_PP_SEQ_SIZE_671(_) BOOST_PP_SEQ_SIZE_672 +# define BOOST_PP_SEQ_SIZE_672(_) BOOST_PP_SEQ_SIZE_673 +# define BOOST_PP_SEQ_SIZE_673(_) BOOST_PP_SEQ_SIZE_674 +# define BOOST_PP_SEQ_SIZE_674(_) BOOST_PP_SEQ_SIZE_675 +# define BOOST_PP_SEQ_SIZE_675(_) BOOST_PP_SEQ_SIZE_676 +# define BOOST_PP_SEQ_SIZE_676(_) BOOST_PP_SEQ_SIZE_677 +# define BOOST_PP_SEQ_SIZE_677(_) BOOST_PP_SEQ_SIZE_678 +# define BOOST_PP_SEQ_SIZE_678(_) BOOST_PP_SEQ_SIZE_679 +# define BOOST_PP_SEQ_SIZE_679(_) BOOST_PP_SEQ_SIZE_680 +# define BOOST_PP_SEQ_SIZE_680(_) BOOST_PP_SEQ_SIZE_681 +# define BOOST_PP_SEQ_SIZE_681(_) BOOST_PP_SEQ_SIZE_682 +# define BOOST_PP_SEQ_SIZE_682(_) BOOST_PP_SEQ_SIZE_683 +# define BOOST_PP_SEQ_SIZE_683(_) BOOST_PP_SEQ_SIZE_684 +# define BOOST_PP_SEQ_SIZE_684(_) BOOST_PP_SEQ_SIZE_685 +# define BOOST_PP_SEQ_SIZE_685(_) BOOST_PP_SEQ_SIZE_686 +# define BOOST_PP_SEQ_SIZE_686(_) BOOST_PP_SEQ_SIZE_687 +# define BOOST_PP_SEQ_SIZE_687(_) BOOST_PP_SEQ_SIZE_688 +# define BOOST_PP_SEQ_SIZE_688(_) BOOST_PP_SEQ_SIZE_689 +# define BOOST_PP_SEQ_SIZE_689(_) BOOST_PP_SEQ_SIZE_690 +# define BOOST_PP_SEQ_SIZE_690(_) BOOST_PP_SEQ_SIZE_691 +# define BOOST_PP_SEQ_SIZE_691(_) BOOST_PP_SEQ_SIZE_692 +# define BOOST_PP_SEQ_SIZE_692(_) BOOST_PP_SEQ_SIZE_693 +# define BOOST_PP_SEQ_SIZE_693(_) BOOST_PP_SEQ_SIZE_694 +# define BOOST_PP_SEQ_SIZE_694(_) BOOST_PP_SEQ_SIZE_695 +# define BOOST_PP_SEQ_SIZE_695(_) BOOST_PP_SEQ_SIZE_696 +# define BOOST_PP_SEQ_SIZE_696(_) BOOST_PP_SEQ_SIZE_697 +# define BOOST_PP_SEQ_SIZE_697(_) BOOST_PP_SEQ_SIZE_698 +# define BOOST_PP_SEQ_SIZE_698(_) BOOST_PP_SEQ_SIZE_699 +# define BOOST_PP_SEQ_SIZE_699(_) BOOST_PP_SEQ_SIZE_700 +# define BOOST_PP_SEQ_SIZE_700(_) BOOST_PP_SEQ_SIZE_701 +# define BOOST_PP_SEQ_SIZE_701(_) BOOST_PP_SEQ_SIZE_702 +# define BOOST_PP_SEQ_SIZE_702(_) BOOST_PP_SEQ_SIZE_703 +# define BOOST_PP_SEQ_SIZE_703(_) BOOST_PP_SEQ_SIZE_704 +# define BOOST_PP_SEQ_SIZE_704(_) BOOST_PP_SEQ_SIZE_705 +# define BOOST_PP_SEQ_SIZE_705(_) BOOST_PP_SEQ_SIZE_706 +# define BOOST_PP_SEQ_SIZE_706(_) BOOST_PP_SEQ_SIZE_707 +# define BOOST_PP_SEQ_SIZE_707(_) BOOST_PP_SEQ_SIZE_708 +# define BOOST_PP_SEQ_SIZE_708(_) BOOST_PP_SEQ_SIZE_709 +# define BOOST_PP_SEQ_SIZE_709(_) BOOST_PP_SEQ_SIZE_710 +# define BOOST_PP_SEQ_SIZE_710(_) BOOST_PP_SEQ_SIZE_711 +# define BOOST_PP_SEQ_SIZE_711(_) BOOST_PP_SEQ_SIZE_712 +# define BOOST_PP_SEQ_SIZE_712(_) BOOST_PP_SEQ_SIZE_713 +# define BOOST_PP_SEQ_SIZE_713(_) BOOST_PP_SEQ_SIZE_714 +# define BOOST_PP_SEQ_SIZE_714(_) BOOST_PP_SEQ_SIZE_715 +# define BOOST_PP_SEQ_SIZE_715(_) BOOST_PP_SEQ_SIZE_716 +# define BOOST_PP_SEQ_SIZE_716(_) BOOST_PP_SEQ_SIZE_717 +# define BOOST_PP_SEQ_SIZE_717(_) BOOST_PP_SEQ_SIZE_718 +# define BOOST_PP_SEQ_SIZE_718(_) BOOST_PP_SEQ_SIZE_719 +# define BOOST_PP_SEQ_SIZE_719(_) BOOST_PP_SEQ_SIZE_720 +# define BOOST_PP_SEQ_SIZE_720(_) BOOST_PP_SEQ_SIZE_721 +# define BOOST_PP_SEQ_SIZE_721(_) BOOST_PP_SEQ_SIZE_722 +# define BOOST_PP_SEQ_SIZE_722(_) BOOST_PP_SEQ_SIZE_723 +# define BOOST_PP_SEQ_SIZE_723(_) BOOST_PP_SEQ_SIZE_724 +# define BOOST_PP_SEQ_SIZE_724(_) BOOST_PP_SEQ_SIZE_725 +# define BOOST_PP_SEQ_SIZE_725(_) BOOST_PP_SEQ_SIZE_726 +# define BOOST_PP_SEQ_SIZE_726(_) BOOST_PP_SEQ_SIZE_727 +# define BOOST_PP_SEQ_SIZE_727(_) BOOST_PP_SEQ_SIZE_728 +# define BOOST_PP_SEQ_SIZE_728(_) BOOST_PP_SEQ_SIZE_729 +# define BOOST_PP_SEQ_SIZE_729(_) BOOST_PP_SEQ_SIZE_730 +# define BOOST_PP_SEQ_SIZE_730(_) BOOST_PP_SEQ_SIZE_731 +# define BOOST_PP_SEQ_SIZE_731(_) BOOST_PP_SEQ_SIZE_732 +# define BOOST_PP_SEQ_SIZE_732(_) BOOST_PP_SEQ_SIZE_733 +# define BOOST_PP_SEQ_SIZE_733(_) BOOST_PP_SEQ_SIZE_734 +# define BOOST_PP_SEQ_SIZE_734(_) BOOST_PP_SEQ_SIZE_735 +# define BOOST_PP_SEQ_SIZE_735(_) BOOST_PP_SEQ_SIZE_736 +# define BOOST_PP_SEQ_SIZE_736(_) BOOST_PP_SEQ_SIZE_737 +# define BOOST_PP_SEQ_SIZE_737(_) BOOST_PP_SEQ_SIZE_738 +# define BOOST_PP_SEQ_SIZE_738(_) BOOST_PP_SEQ_SIZE_739 +# define BOOST_PP_SEQ_SIZE_739(_) BOOST_PP_SEQ_SIZE_740 +# define BOOST_PP_SEQ_SIZE_740(_) BOOST_PP_SEQ_SIZE_741 +# define BOOST_PP_SEQ_SIZE_741(_) BOOST_PP_SEQ_SIZE_742 +# define BOOST_PP_SEQ_SIZE_742(_) BOOST_PP_SEQ_SIZE_743 +# define BOOST_PP_SEQ_SIZE_743(_) BOOST_PP_SEQ_SIZE_744 +# define BOOST_PP_SEQ_SIZE_744(_) BOOST_PP_SEQ_SIZE_745 +# define BOOST_PP_SEQ_SIZE_745(_) BOOST_PP_SEQ_SIZE_746 +# define BOOST_PP_SEQ_SIZE_746(_) BOOST_PP_SEQ_SIZE_747 +# define BOOST_PP_SEQ_SIZE_747(_) BOOST_PP_SEQ_SIZE_748 +# define BOOST_PP_SEQ_SIZE_748(_) BOOST_PP_SEQ_SIZE_749 +# define BOOST_PP_SEQ_SIZE_749(_) BOOST_PP_SEQ_SIZE_750 +# define BOOST_PP_SEQ_SIZE_750(_) BOOST_PP_SEQ_SIZE_751 +# define BOOST_PP_SEQ_SIZE_751(_) BOOST_PP_SEQ_SIZE_752 +# define BOOST_PP_SEQ_SIZE_752(_) BOOST_PP_SEQ_SIZE_753 +# define BOOST_PP_SEQ_SIZE_753(_) BOOST_PP_SEQ_SIZE_754 +# define BOOST_PP_SEQ_SIZE_754(_) BOOST_PP_SEQ_SIZE_755 +# define BOOST_PP_SEQ_SIZE_755(_) BOOST_PP_SEQ_SIZE_756 +# define BOOST_PP_SEQ_SIZE_756(_) BOOST_PP_SEQ_SIZE_757 +# define BOOST_PP_SEQ_SIZE_757(_) BOOST_PP_SEQ_SIZE_758 +# define BOOST_PP_SEQ_SIZE_758(_) BOOST_PP_SEQ_SIZE_759 +# define BOOST_PP_SEQ_SIZE_759(_) BOOST_PP_SEQ_SIZE_760 +# define BOOST_PP_SEQ_SIZE_760(_) BOOST_PP_SEQ_SIZE_761 +# define BOOST_PP_SEQ_SIZE_761(_) BOOST_PP_SEQ_SIZE_762 +# define BOOST_PP_SEQ_SIZE_762(_) BOOST_PP_SEQ_SIZE_763 +# define BOOST_PP_SEQ_SIZE_763(_) BOOST_PP_SEQ_SIZE_764 +# define BOOST_PP_SEQ_SIZE_764(_) BOOST_PP_SEQ_SIZE_765 +# define BOOST_PP_SEQ_SIZE_765(_) BOOST_PP_SEQ_SIZE_766 +# define BOOST_PP_SEQ_SIZE_766(_) BOOST_PP_SEQ_SIZE_767 +# define BOOST_PP_SEQ_SIZE_767(_) BOOST_PP_SEQ_SIZE_768 +# define BOOST_PP_SEQ_SIZE_768(_) BOOST_PP_SEQ_SIZE_769 +# define BOOST_PP_SEQ_SIZE_769(_) BOOST_PP_SEQ_SIZE_770 +# define BOOST_PP_SEQ_SIZE_770(_) BOOST_PP_SEQ_SIZE_771 +# define BOOST_PP_SEQ_SIZE_771(_) BOOST_PP_SEQ_SIZE_772 +# define BOOST_PP_SEQ_SIZE_772(_) BOOST_PP_SEQ_SIZE_773 +# define BOOST_PP_SEQ_SIZE_773(_) BOOST_PP_SEQ_SIZE_774 +# define BOOST_PP_SEQ_SIZE_774(_) BOOST_PP_SEQ_SIZE_775 +# define BOOST_PP_SEQ_SIZE_775(_) BOOST_PP_SEQ_SIZE_776 +# define BOOST_PP_SEQ_SIZE_776(_) BOOST_PP_SEQ_SIZE_777 +# define BOOST_PP_SEQ_SIZE_777(_) BOOST_PP_SEQ_SIZE_778 +# define BOOST_PP_SEQ_SIZE_778(_) BOOST_PP_SEQ_SIZE_779 +# define BOOST_PP_SEQ_SIZE_779(_) BOOST_PP_SEQ_SIZE_780 +# define BOOST_PP_SEQ_SIZE_780(_) BOOST_PP_SEQ_SIZE_781 +# define BOOST_PP_SEQ_SIZE_781(_) BOOST_PP_SEQ_SIZE_782 +# define BOOST_PP_SEQ_SIZE_782(_) BOOST_PP_SEQ_SIZE_783 +# define BOOST_PP_SEQ_SIZE_783(_) BOOST_PP_SEQ_SIZE_784 +# define BOOST_PP_SEQ_SIZE_784(_) BOOST_PP_SEQ_SIZE_785 +# define BOOST_PP_SEQ_SIZE_785(_) BOOST_PP_SEQ_SIZE_786 +# define BOOST_PP_SEQ_SIZE_786(_) BOOST_PP_SEQ_SIZE_787 +# define BOOST_PP_SEQ_SIZE_787(_) BOOST_PP_SEQ_SIZE_788 +# define BOOST_PP_SEQ_SIZE_788(_) BOOST_PP_SEQ_SIZE_789 +# define BOOST_PP_SEQ_SIZE_789(_) BOOST_PP_SEQ_SIZE_790 +# define BOOST_PP_SEQ_SIZE_790(_) BOOST_PP_SEQ_SIZE_791 +# define BOOST_PP_SEQ_SIZE_791(_) BOOST_PP_SEQ_SIZE_792 +# define BOOST_PP_SEQ_SIZE_792(_) BOOST_PP_SEQ_SIZE_793 +# define BOOST_PP_SEQ_SIZE_793(_) BOOST_PP_SEQ_SIZE_794 +# define BOOST_PP_SEQ_SIZE_794(_) BOOST_PP_SEQ_SIZE_795 +# define BOOST_PP_SEQ_SIZE_795(_) BOOST_PP_SEQ_SIZE_796 +# define BOOST_PP_SEQ_SIZE_796(_) BOOST_PP_SEQ_SIZE_797 +# define BOOST_PP_SEQ_SIZE_797(_) BOOST_PP_SEQ_SIZE_798 +# define BOOST_PP_SEQ_SIZE_798(_) BOOST_PP_SEQ_SIZE_799 +# define BOOST_PP_SEQ_SIZE_799(_) BOOST_PP_SEQ_SIZE_800 +# define BOOST_PP_SEQ_SIZE_800(_) BOOST_PP_SEQ_SIZE_801 +# define BOOST_PP_SEQ_SIZE_801(_) BOOST_PP_SEQ_SIZE_802 +# define BOOST_PP_SEQ_SIZE_802(_) BOOST_PP_SEQ_SIZE_803 +# define BOOST_PP_SEQ_SIZE_803(_) BOOST_PP_SEQ_SIZE_804 +# define BOOST_PP_SEQ_SIZE_804(_) BOOST_PP_SEQ_SIZE_805 +# define BOOST_PP_SEQ_SIZE_805(_) BOOST_PP_SEQ_SIZE_806 +# define BOOST_PP_SEQ_SIZE_806(_) BOOST_PP_SEQ_SIZE_807 +# define BOOST_PP_SEQ_SIZE_807(_) BOOST_PP_SEQ_SIZE_808 +# define BOOST_PP_SEQ_SIZE_808(_) BOOST_PP_SEQ_SIZE_809 +# define BOOST_PP_SEQ_SIZE_809(_) BOOST_PP_SEQ_SIZE_810 +# define BOOST_PP_SEQ_SIZE_810(_) BOOST_PP_SEQ_SIZE_811 +# define BOOST_PP_SEQ_SIZE_811(_) BOOST_PP_SEQ_SIZE_812 +# define BOOST_PP_SEQ_SIZE_812(_) BOOST_PP_SEQ_SIZE_813 +# define BOOST_PP_SEQ_SIZE_813(_) BOOST_PP_SEQ_SIZE_814 +# define BOOST_PP_SEQ_SIZE_814(_) BOOST_PP_SEQ_SIZE_815 +# define BOOST_PP_SEQ_SIZE_815(_) BOOST_PP_SEQ_SIZE_816 +# define BOOST_PP_SEQ_SIZE_816(_) BOOST_PP_SEQ_SIZE_817 +# define BOOST_PP_SEQ_SIZE_817(_) BOOST_PP_SEQ_SIZE_818 +# define BOOST_PP_SEQ_SIZE_818(_) BOOST_PP_SEQ_SIZE_819 +# define BOOST_PP_SEQ_SIZE_819(_) BOOST_PP_SEQ_SIZE_820 +# define BOOST_PP_SEQ_SIZE_820(_) BOOST_PP_SEQ_SIZE_821 +# define BOOST_PP_SEQ_SIZE_821(_) BOOST_PP_SEQ_SIZE_822 +# define BOOST_PP_SEQ_SIZE_822(_) BOOST_PP_SEQ_SIZE_823 +# define BOOST_PP_SEQ_SIZE_823(_) BOOST_PP_SEQ_SIZE_824 +# define BOOST_PP_SEQ_SIZE_824(_) BOOST_PP_SEQ_SIZE_825 +# define BOOST_PP_SEQ_SIZE_825(_) BOOST_PP_SEQ_SIZE_826 +# define BOOST_PP_SEQ_SIZE_826(_) BOOST_PP_SEQ_SIZE_827 +# define BOOST_PP_SEQ_SIZE_827(_) BOOST_PP_SEQ_SIZE_828 +# define BOOST_PP_SEQ_SIZE_828(_) BOOST_PP_SEQ_SIZE_829 +# define BOOST_PP_SEQ_SIZE_829(_) BOOST_PP_SEQ_SIZE_830 +# define BOOST_PP_SEQ_SIZE_830(_) BOOST_PP_SEQ_SIZE_831 +# define BOOST_PP_SEQ_SIZE_831(_) BOOST_PP_SEQ_SIZE_832 +# define BOOST_PP_SEQ_SIZE_832(_) BOOST_PP_SEQ_SIZE_833 +# define BOOST_PP_SEQ_SIZE_833(_) BOOST_PP_SEQ_SIZE_834 +# define BOOST_PP_SEQ_SIZE_834(_) BOOST_PP_SEQ_SIZE_835 +# define BOOST_PP_SEQ_SIZE_835(_) BOOST_PP_SEQ_SIZE_836 +# define BOOST_PP_SEQ_SIZE_836(_) BOOST_PP_SEQ_SIZE_837 +# define BOOST_PP_SEQ_SIZE_837(_) BOOST_PP_SEQ_SIZE_838 +# define BOOST_PP_SEQ_SIZE_838(_) BOOST_PP_SEQ_SIZE_839 +# define BOOST_PP_SEQ_SIZE_839(_) BOOST_PP_SEQ_SIZE_840 +# define BOOST_PP_SEQ_SIZE_840(_) BOOST_PP_SEQ_SIZE_841 +# define BOOST_PP_SEQ_SIZE_841(_) BOOST_PP_SEQ_SIZE_842 +# define BOOST_PP_SEQ_SIZE_842(_) BOOST_PP_SEQ_SIZE_843 +# define BOOST_PP_SEQ_SIZE_843(_) BOOST_PP_SEQ_SIZE_844 +# define BOOST_PP_SEQ_SIZE_844(_) BOOST_PP_SEQ_SIZE_845 +# define BOOST_PP_SEQ_SIZE_845(_) BOOST_PP_SEQ_SIZE_846 +# define BOOST_PP_SEQ_SIZE_846(_) BOOST_PP_SEQ_SIZE_847 +# define BOOST_PP_SEQ_SIZE_847(_) BOOST_PP_SEQ_SIZE_848 +# define BOOST_PP_SEQ_SIZE_848(_) BOOST_PP_SEQ_SIZE_849 +# define BOOST_PP_SEQ_SIZE_849(_) BOOST_PP_SEQ_SIZE_850 +# define BOOST_PP_SEQ_SIZE_850(_) BOOST_PP_SEQ_SIZE_851 +# define BOOST_PP_SEQ_SIZE_851(_) BOOST_PP_SEQ_SIZE_852 +# define BOOST_PP_SEQ_SIZE_852(_) BOOST_PP_SEQ_SIZE_853 +# define BOOST_PP_SEQ_SIZE_853(_) BOOST_PP_SEQ_SIZE_854 +# define BOOST_PP_SEQ_SIZE_854(_) BOOST_PP_SEQ_SIZE_855 +# define BOOST_PP_SEQ_SIZE_855(_) BOOST_PP_SEQ_SIZE_856 +# define BOOST_PP_SEQ_SIZE_856(_) BOOST_PP_SEQ_SIZE_857 +# define BOOST_PP_SEQ_SIZE_857(_) BOOST_PP_SEQ_SIZE_858 +# define BOOST_PP_SEQ_SIZE_858(_) BOOST_PP_SEQ_SIZE_859 +# define BOOST_PP_SEQ_SIZE_859(_) BOOST_PP_SEQ_SIZE_860 +# define BOOST_PP_SEQ_SIZE_860(_) BOOST_PP_SEQ_SIZE_861 +# define BOOST_PP_SEQ_SIZE_861(_) BOOST_PP_SEQ_SIZE_862 +# define BOOST_PP_SEQ_SIZE_862(_) BOOST_PP_SEQ_SIZE_863 +# define BOOST_PP_SEQ_SIZE_863(_) BOOST_PP_SEQ_SIZE_864 +# define BOOST_PP_SEQ_SIZE_864(_) BOOST_PP_SEQ_SIZE_865 +# define BOOST_PP_SEQ_SIZE_865(_) BOOST_PP_SEQ_SIZE_866 +# define BOOST_PP_SEQ_SIZE_866(_) BOOST_PP_SEQ_SIZE_867 +# define BOOST_PP_SEQ_SIZE_867(_) BOOST_PP_SEQ_SIZE_868 +# define BOOST_PP_SEQ_SIZE_868(_) BOOST_PP_SEQ_SIZE_869 +# define BOOST_PP_SEQ_SIZE_869(_) BOOST_PP_SEQ_SIZE_870 +# define BOOST_PP_SEQ_SIZE_870(_) BOOST_PP_SEQ_SIZE_871 +# define BOOST_PP_SEQ_SIZE_871(_) BOOST_PP_SEQ_SIZE_872 +# define BOOST_PP_SEQ_SIZE_872(_) BOOST_PP_SEQ_SIZE_873 +# define BOOST_PP_SEQ_SIZE_873(_) BOOST_PP_SEQ_SIZE_874 +# define BOOST_PP_SEQ_SIZE_874(_) BOOST_PP_SEQ_SIZE_875 +# define BOOST_PP_SEQ_SIZE_875(_) BOOST_PP_SEQ_SIZE_876 +# define BOOST_PP_SEQ_SIZE_876(_) BOOST_PP_SEQ_SIZE_877 +# define BOOST_PP_SEQ_SIZE_877(_) BOOST_PP_SEQ_SIZE_878 +# define BOOST_PP_SEQ_SIZE_878(_) BOOST_PP_SEQ_SIZE_879 +# define BOOST_PP_SEQ_SIZE_879(_) BOOST_PP_SEQ_SIZE_880 +# define BOOST_PP_SEQ_SIZE_880(_) BOOST_PP_SEQ_SIZE_881 +# define BOOST_PP_SEQ_SIZE_881(_) BOOST_PP_SEQ_SIZE_882 +# define BOOST_PP_SEQ_SIZE_882(_) BOOST_PP_SEQ_SIZE_883 +# define BOOST_PP_SEQ_SIZE_883(_) BOOST_PP_SEQ_SIZE_884 +# define BOOST_PP_SEQ_SIZE_884(_) BOOST_PP_SEQ_SIZE_885 +# define BOOST_PP_SEQ_SIZE_885(_) BOOST_PP_SEQ_SIZE_886 +# define BOOST_PP_SEQ_SIZE_886(_) BOOST_PP_SEQ_SIZE_887 +# define BOOST_PP_SEQ_SIZE_887(_) BOOST_PP_SEQ_SIZE_888 +# define BOOST_PP_SEQ_SIZE_888(_) BOOST_PP_SEQ_SIZE_889 +# define BOOST_PP_SEQ_SIZE_889(_) BOOST_PP_SEQ_SIZE_890 +# define BOOST_PP_SEQ_SIZE_890(_) BOOST_PP_SEQ_SIZE_891 +# define BOOST_PP_SEQ_SIZE_891(_) BOOST_PP_SEQ_SIZE_892 +# define BOOST_PP_SEQ_SIZE_892(_) BOOST_PP_SEQ_SIZE_893 +# define BOOST_PP_SEQ_SIZE_893(_) BOOST_PP_SEQ_SIZE_894 +# define BOOST_PP_SEQ_SIZE_894(_) BOOST_PP_SEQ_SIZE_895 +# define BOOST_PP_SEQ_SIZE_895(_) BOOST_PP_SEQ_SIZE_896 +# define BOOST_PP_SEQ_SIZE_896(_) BOOST_PP_SEQ_SIZE_897 +# define BOOST_PP_SEQ_SIZE_897(_) BOOST_PP_SEQ_SIZE_898 +# define BOOST_PP_SEQ_SIZE_898(_) BOOST_PP_SEQ_SIZE_899 +# define BOOST_PP_SEQ_SIZE_899(_) BOOST_PP_SEQ_SIZE_900 +# define BOOST_PP_SEQ_SIZE_900(_) BOOST_PP_SEQ_SIZE_901 +# define BOOST_PP_SEQ_SIZE_901(_) BOOST_PP_SEQ_SIZE_902 +# define BOOST_PP_SEQ_SIZE_902(_) BOOST_PP_SEQ_SIZE_903 +# define BOOST_PP_SEQ_SIZE_903(_) BOOST_PP_SEQ_SIZE_904 +# define BOOST_PP_SEQ_SIZE_904(_) BOOST_PP_SEQ_SIZE_905 +# define BOOST_PP_SEQ_SIZE_905(_) BOOST_PP_SEQ_SIZE_906 +# define BOOST_PP_SEQ_SIZE_906(_) BOOST_PP_SEQ_SIZE_907 +# define BOOST_PP_SEQ_SIZE_907(_) BOOST_PP_SEQ_SIZE_908 +# define BOOST_PP_SEQ_SIZE_908(_) BOOST_PP_SEQ_SIZE_909 +# define BOOST_PP_SEQ_SIZE_909(_) BOOST_PP_SEQ_SIZE_910 +# define BOOST_PP_SEQ_SIZE_910(_) BOOST_PP_SEQ_SIZE_911 +# define BOOST_PP_SEQ_SIZE_911(_) BOOST_PP_SEQ_SIZE_912 +# define BOOST_PP_SEQ_SIZE_912(_) BOOST_PP_SEQ_SIZE_913 +# define BOOST_PP_SEQ_SIZE_913(_) BOOST_PP_SEQ_SIZE_914 +# define BOOST_PP_SEQ_SIZE_914(_) BOOST_PP_SEQ_SIZE_915 +# define BOOST_PP_SEQ_SIZE_915(_) BOOST_PP_SEQ_SIZE_916 +# define BOOST_PP_SEQ_SIZE_916(_) BOOST_PP_SEQ_SIZE_917 +# define BOOST_PP_SEQ_SIZE_917(_) BOOST_PP_SEQ_SIZE_918 +# define BOOST_PP_SEQ_SIZE_918(_) BOOST_PP_SEQ_SIZE_919 +# define BOOST_PP_SEQ_SIZE_919(_) BOOST_PP_SEQ_SIZE_920 +# define BOOST_PP_SEQ_SIZE_920(_) BOOST_PP_SEQ_SIZE_921 +# define BOOST_PP_SEQ_SIZE_921(_) BOOST_PP_SEQ_SIZE_922 +# define BOOST_PP_SEQ_SIZE_922(_) BOOST_PP_SEQ_SIZE_923 +# define BOOST_PP_SEQ_SIZE_923(_) BOOST_PP_SEQ_SIZE_924 +# define BOOST_PP_SEQ_SIZE_924(_) BOOST_PP_SEQ_SIZE_925 +# define BOOST_PP_SEQ_SIZE_925(_) BOOST_PP_SEQ_SIZE_926 +# define BOOST_PP_SEQ_SIZE_926(_) BOOST_PP_SEQ_SIZE_927 +# define BOOST_PP_SEQ_SIZE_927(_) BOOST_PP_SEQ_SIZE_928 +# define BOOST_PP_SEQ_SIZE_928(_) BOOST_PP_SEQ_SIZE_929 +# define BOOST_PP_SEQ_SIZE_929(_) BOOST_PP_SEQ_SIZE_930 +# define BOOST_PP_SEQ_SIZE_930(_) BOOST_PP_SEQ_SIZE_931 +# define BOOST_PP_SEQ_SIZE_931(_) BOOST_PP_SEQ_SIZE_932 +# define BOOST_PP_SEQ_SIZE_932(_) BOOST_PP_SEQ_SIZE_933 +# define BOOST_PP_SEQ_SIZE_933(_) BOOST_PP_SEQ_SIZE_934 +# define BOOST_PP_SEQ_SIZE_934(_) BOOST_PP_SEQ_SIZE_935 +# define BOOST_PP_SEQ_SIZE_935(_) BOOST_PP_SEQ_SIZE_936 +# define BOOST_PP_SEQ_SIZE_936(_) BOOST_PP_SEQ_SIZE_937 +# define BOOST_PP_SEQ_SIZE_937(_) BOOST_PP_SEQ_SIZE_938 +# define BOOST_PP_SEQ_SIZE_938(_) BOOST_PP_SEQ_SIZE_939 +# define BOOST_PP_SEQ_SIZE_939(_) BOOST_PP_SEQ_SIZE_940 +# define BOOST_PP_SEQ_SIZE_940(_) BOOST_PP_SEQ_SIZE_941 +# define BOOST_PP_SEQ_SIZE_941(_) BOOST_PP_SEQ_SIZE_942 +# define BOOST_PP_SEQ_SIZE_942(_) BOOST_PP_SEQ_SIZE_943 +# define BOOST_PP_SEQ_SIZE_943(_) BOOST_PP_SEQ_SIZE_944 +# define BOOST_PP_SEQ_SIZE_944(_) BOOST_PP_SEQ_SIZE_945 +# define BOOST_PP_SEQ_SIZE_945(_) BOOST_PP_SEQ_SIZE_946 +# define BOOST_PP_SEQ_SIZE_946(_) BOOST_PP_SEQ_SIZE_947 +# define BOOST_PP_SEQ_SIZE_947(_) BOOST_PP_SEQ_SIZE_948 +# define BOOST_PP_SEQ_SIZE_948(_) BOOST_PP_SEQ_SIZE_949 +# define BOOST_PP_SEQ_SIZE_949(_) BOOST_PP_SEQ_SIZE_950 +# define BOOST_PP_SEQ_SIZE_950(_) BOOST_PP_SEQ_SIZE_951 +# define BOOST_PP_SEQ_SIZE_951(_) BOOST_PP_SEQ_SIZE_952 +# define BOOST_PP_SEQ_SIZE_952(_) BOOST_PP_SEQ_SIZE_953 +# define BOOST_PP_SEQ_SIZE_953(_) BOOST_PP_SEQ_SIZE_954 +# define BOOST_PP_SEQ_SIZE_954(_) BOOST_PP_SEQ_SIZE_955 +# define BOOST_PP_SEQ_SIZE_955(_) BOOST_PP_SEQ_SIZE_956 +# define BOOST_PP_SEQ_SIZE_956(_) BOOST_PP_SEQ_SIZE_957 +# define BOOST_PP_SEQ_SIZE_957(_) BOOST_PP_SEQ_SIZE_958 +# define BOOST_PP_SEQ_SIZE_958(_) BOOST_PP_SEQ_SIZE_959 +# define BOOST_PP_SEQ_SIZE_959(_) BOOST_PP_SEQ_SIZE_960 +# define BOOST_PP_SEQ_SIZE_960(_) BOOST_PP_SEQ_SIZE_961 +# define BOOST_PP_SEQ_SIZE_961(_) BOOST_PP_SEQ_SIZE_962 +# define BOOST_PP_SEQ_SIZE_962(_) BOOST_PP_SEQ_SIZE_963 +# define BOOST_PP_SEQ_SIZE_963(_) BOOST_PP_SEQ_SIZE_964 +# define BOOST_PP_SEQ_SIZE_964(_) BOOST_PP_SEQ_SIZE_965 +# define BOOST_PP_SEQ_SIZE_965(_) BOOST_PP_SEQ_SIZE_966 +# define BOOST_PP_SEQ_SIZE_966(_) BOOST_PP_SEQ_SIZE_967 +# define BOOST_PP_SEQ_SIZE_967(_) BOOST_PP_SEQ_SIZE_968 +# define BOOST_PP_SEQ_SIZE_968(_) BOOST_PP_SEQ_SIZE_969 +# define BOOST_PP_SEQ_SIZE_969(_) BOOST_PP_SEQ_SIZE_970 +# define BOOST_PP_SEQ_SIZE_970(_) BOOST_PP_SEQ_SIZE_971 +# define BOOST_PP_SEQ_SIZE_971(_) BOOST_PP_SEQ_SIZE_972 +# define BOOST_PP_SEQ_SIZE_972(_) BOOST_PP_SEQ_SIZE_973 +# define BOOST_PP_SEQ_SIZE_973(_) BOOST_PP_SEQ_SIZE_974 +# define BOOST_PP_SEQ_SIZE_974(_) BOOST_PP_SEQ_SIZE_975 +# define BOOST_PP_SEQ_SIZE_975(_) BOOST_PP_SEQ_SIZE_976 +# define BOOST_PP_SEQ_SIZE_976(_) BOOST_PP_SEQ_SIZE_977 +# define BOOST_PP_SEQ_SIZE_977(_) BOOST_PP_SEQ_SIZE_978 +# define BOOST_PP_SEQ_SIZE_978(_) BOOST_PP_SEQ_SIZE_979 +# define BOOST_PP_SEQ_SIZE_979(_) BOOST_PP_SEQ_SIZE_980 +# define BOOST_PP_SEQ_SIZE_980(_) BOOST_PP_SEQ_SIZE_981 +# define BOOST_PP_SEQ_SIZE_981(_) BOOST_PP_SEQ_SIZE_982 +# define BOOST_PP_SEQ_SIZE_982(_) BOOST_PP_SEQ_SIZE_983 +# define BOOST_PP_SEQ_SIZE_983(_) BOOST_PP_SEQ_SIZE_984 +# define BOOST_PP_SEQ_SIZE_984(_) BOOST_PP_SEQ_SIZE_985 +# define BOOST_PP_SEQ_SIZE_985(_) BOOST_PP_SEQ_SIZE_986 +# define BOOST_PP_SEQ_SIZE_986(_) BOOST_PP_SEQ_SIZE_987 +# define BOOST_PP_SEQ_SIZE_987(_) BOOST_PP_SEQ_SIZE_988 +# define BOOST_PP_SEQ_SIZE_988(_) BOOST_PP_SEQ_SIZE_989 +# define BOOST_PP_SEQ_SIZE_989(_) BOOST_PP_SEQ_SIZE_990 +# define BOOST_PP_SEQ_SIZE_990(_) BOOST_PP_SEQ_SIZE_991 +# define BOOST_PP_SEQ_SIZE_991(_) BOOST_PP_SEQ_SIZE_992 +# define BOOST_PP_SEQ_SIZE_992(_) BOOST_PP_SEQ_SIZE_993 +# define BOOST_PP_SEQ_SIZE_993(_) BOOST_PP_SEQ_SIZE_994 +# define BOOST_PP_SEQ_SIZE_994(_) BOOST_PP_SEQ_SIZE_995 +# define BOOST_PP_SEQ_SIZE_995(_) BOOST_PP_SEQ_SIZE_996 +# define BOOST_PP_SEQ_SIZE_996(_) BOOST_PP_SEQ_SIZE_997 +# define BOOST_PP_SEQ_SIZE_997(_) BOOST_PP_SEQ_SIZE_998 +# define BOOST_PP_SEQ_SIZE_998(_) BOOST_PP_SEQ_SIZE_999 +# define BOOST_PP_SEQ_SIZE_999(_) BOOST_PP_SEQ_SIZE_1000 +# define BOOST_PP_SEQ_SIZE_1000(_) BOOST_PP_SEQ_SIZE_1001 +# define BOOST_PP_SEQ_SIZE_1001(_) BOOST_PP_SEQ_SIZE_1002 +# define BOOST_PP_SEQ_SIZE_1002(_) BOOST_PP_SEQ_SIZE_1003 +# define BOOST_PP_SEQ_SIZE_1003(_) BOOST_PP_SEQ_SIZE_1004 +# define BOOST_PP_SEQ_SIZE_1004(_) BOOST_PP_SEQ_SIZE_1005 +# define BOOST_PP_SEQ_SIZE_1005(_) BOOST_PP_SEQ_SIZE_1006 +# define BOOST_PP_SEQ_SIZE_1006(_) BOOST_PP_SEQ_SIZE_1007 +# define BOOST_PP_SEQ_SIZE_1007(_) BOOST_PP_SEQ_SIZE_1008 +# define BOOST_PP_SEQ_SIZE_1008(_) BOOST_PP_SEQ_SIZE_1009 +# define BOOST_PP_SEQ_SIZE_1009(_) BOOST_PP_SEQ_SIZE_1010 +# define BOOST_PP_SEQ_SIZE_1010(_) BOOST_PP_SEQ_SIZE_1011 +# define BOOST_PP_SEQ_SIZE_1011(_) BOOST_PP_SEQ_SIZE_1012 +# define BOOST_PP_SEQ_SIZE_1012(_) BOOST_PP_SEQ_SIZE_1013 +# define BOOST_PP_SEQ_SIZE_1013(_) BOOST_PP_SEQ_SIZE_1014 +# define BOOST_PP_SEQ_SIZE_1014(_) BOOST_PP_SEQ_SIZE_1015 +# define BOOST_PP_SEQ_SIZE_1015(_) BOOST_PP_SEQ_SIZE_1016 +# define BOOST_PP_SEQ_SIZE_1016(_) BOOST_PP_SEQ_SIZE_1017 +# define BOOST_PP_SEQ_SIZE_1017(_) BOOST_PP_SEQ_SIZE_1018 +# define BOOST_PP_SEQ_SIZE_1018(_) BOOST_PP_SEQ_SIZE_1019 +# define BOOST_PP_SEQ_SIZE_1019(_) BOOST_PP_SEQ_SIZE_1020 +# define BOOST_PP_SEQ_SIZE_1020(_) BOOST_PP_SEQ_SIZE_1021 +# define BOOST_PP_SEQ_SIZE_1021(_) BOOST_PP_SEQ_SIZE_1022 +# define BOOST_PP_SEQ_SIZE_1022(_) BOOST_PP_SEQ_SIZE_1023 +# define BOOST_PP_SEQ_SIZE_1023(_) BOOST_PP_SEQ_SIZE_1024 +# define BOOST_PP_SEQ_SIZE_1024(_) BOOST_PP_SEQ_SIZE_1025 +# +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_514 514 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_515 515 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_516 516 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_517 517 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_518 518 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_519 519 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_520 520 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_521 521 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_522 522 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_523 523 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_524 524 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_525 525 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_526 526 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_527 527 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_528 528 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_529 529 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_530 530 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_531 531 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_532 532 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_533 533 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_534 534 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_535 535 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_536 536 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_537 537 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_538 538 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_539 539 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_540 540 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_541 541 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_542 542 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_543 543 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_544 544 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_545 545 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_546 546 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_547 547 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_548 548 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_549 549 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_550 550 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_551 551 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_552 552 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_553 553 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_554 554 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_555 555 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_556 556 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_557 557 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_558 558 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_559 559 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_560 560 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_561 561 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_562 562 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_563 563 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_564 564 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_565 565 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_566 566 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_567 567 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_568 568 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_569 569 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_570 570 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_571 571 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_572 572 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_573 573 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_574 574 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_575 575 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_576 576 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_577 577 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_578 578 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_579 579 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_580 580 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_581 581 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_582 582 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_583 583 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_584 584 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_585 585 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_586 586 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_587 587 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_588 588 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_589 589 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_590 590 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_591 591 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_592 592 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_593 593 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_594 594 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_595 595 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_596 596 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_597 597 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_598 598 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_599 599 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_600 600 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_601 601 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_602 602 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_603 603 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_604 604 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_605 605 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_606 606 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_607 607 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_608 608 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_609 609 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_610 610 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_611 611 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_612 612 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_613 613 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_614 614 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_615 615 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_616 616 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_617 617 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_618 618 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_619 619 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_620 620 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_621 621 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_622 622 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_623 623 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_624 624 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_625 625 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_626 626 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_627 627 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_628 628 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_629 629 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_630 630 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_631 631 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_632 632 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_633 633 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_634 634 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_635 635 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_636 636 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_637 637 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_638 638 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_639 639 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_640 640 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_641 641 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_642 642 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_643 643 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_644 644 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_645 645 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_646 646 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_647 647 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_648 648 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_649 649 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_650 650 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_651 651 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_652 652 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_653 653 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_654 654 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_655 655 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_656 656 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_657 657 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_658 658 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_659 659 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_660 660 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_661 661 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_662 662 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_663 663 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_664 664 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_665 665 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_666 666 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_667 667 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_668 668 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_669 669 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_670 670 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_671 671 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_672 672 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_673 673 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_674 674 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_675 675 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_676 676 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_677 677 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_678 678 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_679 679 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_680 680 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_681 681 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_682 682 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_683 683 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_684 684 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_685 685 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_686 686 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_687 687 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_688 688 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_689 689 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_690 690 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_691 691 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_692 692 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_693 693 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_694 694 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_695 695 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_696 696 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_697 697 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_698 698 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_699 699 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_700 700 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_701 701 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_702 702 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_703 703 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_704 704 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_705 705 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_706 706 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_707 707 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_708 708 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_709 709 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_710 710 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_711 711 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_712 712 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_713 713 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_714 714 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_715 715 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_716 716 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_717 717 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_718 718 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_719 719 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_720 720 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_721 721 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_722 722 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_723 723 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_724 724 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_725 725 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_726 726 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_727 727 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_728 728 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_729 729 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_730 730 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_731 731 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_732 732 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_733 733 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_734 734 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_735 735 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_736 736 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_737 737 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_738 738 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_739 739 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_740 740 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_741 741 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_742 742 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_743 743 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_744 744 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_745 745 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_746 746 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_747 747 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_748 748 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_749 749 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_750 750 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_751 751 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_752 752 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_753 753 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_754 754 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_755 755 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_756 756 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_757 757 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_758 758 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_759 759 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_760 760 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_761 761 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_762 762 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_763 763 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_764 764 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_765 765 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_766 766 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_767 767 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_768 768 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_769 769 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_770 770 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_771 771 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_772 772 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_773 773 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_774 774 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_775 775 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_776 776 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_777 777 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_778 778 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_779 779 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_780 780 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_781 781 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_782 782 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_783 783 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_784 784 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_785 785 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_786 786 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_787 787 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_788 788 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_789 789 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_790 790 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_791 791 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_792 792 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_793 793 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_794 794 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_795 795 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_796 796 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_797 797 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_798 798 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_799 799 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_800 800 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_801 801 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_802 802 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_803 803 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_804 804 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_805 805 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_806 806 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_807 807 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_808 808 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_809 809 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_810 810 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_811 811 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_812 812 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_813 813 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_814 814 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_815 815 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_816 816 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_817 817 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_818 818 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_819 819 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_820 820 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_821 821 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_822 822 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_823 823 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_824 824 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_825 825 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_826 826 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_827 827 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_828 828 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_829 829 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_830 830 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_831 831 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_832 832 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_833 833 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_834 834 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_835 835 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_836 836 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_837 837 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_838 838 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_839 839 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_840 840 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_841 841 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_842 842 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_843 843 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_844 844 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_845 845 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_846 846 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_847 847 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_848 848 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_849 849 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_850 850 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_851 851 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_852 852 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_853 853 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_854 854 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_855 855 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_856 856 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_857 857 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_858 858 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_859 859 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_860 860 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_861 861 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_862 862 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_863 863 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_864 864 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_865 865 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_866 866 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_867 867 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_868 868 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_869 869 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_870 870 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_871 871 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_872 872 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_873 873 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_874 874 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_875 875 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_876 876 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_877 877 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_878 878 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_879 879 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_880 880 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_881 881 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_882 882 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_883 883 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_884 884 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_885 885 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_886 886 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_887 887 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_888 888 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_889 889 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_890 890 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_891 891 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_892 892 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_893 893 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_894 894 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_895 895 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_896 896 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_897 897 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_898 898 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_899 899 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_900 900 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_901 901 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_902 902 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_903 903 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_904 904 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_905 905 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_906 906 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_907 907 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_908 908 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_909 909 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_910 910 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_911 911 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_912 912 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_913 913 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_914 914 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_915 915 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_916 916 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_917 917 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_918 918 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_919 919 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_920 920 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_921 921 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_922 922 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_923 923 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_924 924 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_925 925 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_926 926 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_927 927 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_928 928 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_929 929 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_930 930 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_931 931 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_932 932 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_933 933 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_934 934 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_935 935 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_936 936 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_937 937 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_938 938 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_939 939 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_940 940 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_941 941 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_942 942 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_943 943 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_944 944 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_945 945 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_946 946 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_947 947 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_948 948 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_949 949 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_950 950 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_951 951 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_952 952 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_953 953 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_954 954 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_955 955 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_956 956 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_957 957 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_958 958 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_959 959 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_960 960 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_961 961 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_962 962 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_963 963 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_964 964 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_965 965 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_966 966 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_967 967 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_968 968 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_969 969 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_970 970 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_971 971 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_972 972 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_973 973 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_974 974 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_975 975 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_976 976 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_977 977 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_978 978 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_979 979 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_980 980 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_981 981 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_982 982 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_983 983 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_984 984 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_985 985 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_986 986 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_987 987 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_988 988 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_989 989 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_990 990 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_991 991 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_992 992 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_993 993 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_994 994 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_995 995 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_996 996 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_997 997 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_998 998 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_999 999 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1000 1000 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1001 1001 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1002 1002 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1003 1003 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1004 1004 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1005 1005 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1006 1006 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1007 1007 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1008 1008 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1009 1009 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1010 1010 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1011 1011 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1012 1012 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1013 1013 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1014 1014 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1015 1015 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1016 1016 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1017 1017 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1018 1018 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1019 1019 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1020 1020 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1021 1021 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1022 1022 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1023 1023 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1024 1024 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1025 1025 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/size_256.hpp b/src/boost/boost/preprocessor/seq/limits/size_256.hpp new file mode 100644 index 000000000..50fd9eca8 --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/size_256.hpp @@ -0,0 +1,532 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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_SEQ_SIZE_256_HPP +# define BOOST_PREPROCESSOR_SEQ_SIZE_256_HPP +# +# define BOOST_PP_SEQ_SIZE_0(_) BOOST_PP_SEQ_SIZE_1 +# define BOOST_PP_SEQ_SIZE_1(_) BOOST_PP_SEQ_SIZE_2 +# define BOOST_PP_SEQ_SIZE_2(_) BOOST_PP_SEQ_SIZE_3 +# define BOOST_PP_SEQ_SIZE_3(_) BOOST_PP_SEQ_SIZE_4 +# define BOOST_PP_SEQ_SIZE_4(_) BOOST_PP_SEQ_SIZE_5 +# define BOOST_PP_SEQ_SIZE_5(_) BOOST_PP_SEQ_SIZE_6 +# define BOOST_PP_SEQ_SIZE_6(_) BOOST_PP_SEQ_SIZE_7 +# define BOOST_PP_SEQ_SIZE_7(_) BOOST_PP_SEQ_SIZE_8 +# define BOOST_PP_SEQ_SIZE_8(_) BOOST_PP_SEQ_SIZE_9 +# define BOOST_PP_SEQ_SIZE_9(_) BOOST_PP_SEQ_SIZE_10 +# define BOOST_PP_SEQ_SIZE_10(_) BOOST_PP_SEQ_SIZE_11 +# define BOOST_PP_SEQ_SIZE_11(_) BOOST_PP_SEQ_SIZE_12 +# define BOOST_PP_SEQ_SIZE_12(_) BOOST_PP_SEQ_SIZE_13 +# define BOOST_PP_SEQ_SIZE_13(_) BOOST_PP_SEQ_SIZE_14 +# define BOOST_PP_SEQ_SIZE_14(_) BOOST_PP_SEQ_SIZE_15 +# define BOOST_PP_SEQ_SIZE_15(_) BOOST_PP_SEQ_SIZE_16 +# define BOOST_PP_SEQ_SIZE_16(_) BOOST_PP_SEQ_SIZE_17 +# define BOOST_PP_SEQ_SIZE_17(_) BOOST_PP_SEQ_SIZE_18 +# define BOOST_PP_SEQ_SIZE_18(_) BOOST_PP_SEQ_SIZE_19 +# define BOOST_PP_SEQ_SIZE_19(_) BOOST_PP_SEQ_SIZE_20 +# define BOOST_PP_SEQ_SIZE_20(_) BOOST_PP_SEQ_SIZE_21 +# define BOOST_PP_SEQ_SIZE_21(_) BOOST_PP_SEQ_SIZE_22 +# define BOOST_PP_SEQ_SIZE_22(_) BOOST_PP_SEQ_SIZE_23 +# define BOOST_PP_SEQ_SIZE_23(_) BOOST_PP_SEQ_SIZE_24 +# define BOOST_PP_SEQ_SIZE_24(_) BOOST_PP_SEQ_SIZE_25 +# define BOOST_PP_SEQ_SIZE_25(_) BOOST_PP_SEQ_SIZE_26 +# define BOOST_PP_SEQ_SIZE_26(_) BOOST_PP_SEQ_SIZE_27 +# define BOOST_PP_SEQ_SIZE_27(_) BOOST_PP_SEQ_SIZE_28 +# define BOOST_PP_SEQ_SIZE_28(_) BOOST_PP_SEQ_SIZE_29 +# define BOOST_PP_SEQ_SIZE_29(_) BOOST_PP_SEQ_SIZE_30 +# define BOOST_PP_SEQ_SIZE_30(_) BOOST_PP_SEQ_SIZE_31 +# define BOOST_PP_SEQ_SIZE_31(_) BOOST_PP_SEQ_SIZE_32 +# define BOOST_PP_SEQ_SIZE_32(_) BOOST_PP_SEQ_SIZE_33 +# define BOOST_PP_SEQ_SIZE_33(_) BOOST_PP_SEQ_SIZE_34 +# define BOOST_PP_SEQ_SIZE_34(_) BOOST_PP_SEQ_SIZE_35 +# define BOOST_PP_SEQ_SIZE_35(_) BOOST_PP_SEQ_SIZE_36 +# define BOOST_PP_SEQ_SIZE_36(_) BOOST_PP_SEQ_SIZE_37 +# define BOOST_PP_SEQ_SIZE_37(_) BOOST_PP_SEQ_SIZE_38 +# define BOOST_PP_SEQ_SIZE_38(_) BOOST_PP_SEQ_SIZE_39 +# define BOOST_PP_SEQ_SIZE_39(_) BOOST_PP_SEQ_SIZE_40 +# define BOOST_PP_SEQ_SIZE_40(_) BOOST_PP_SEQ_SIZE_41 +# define BOOST_PP_SEQ_SIZE_41(_) BOOST_PP_SEQ_SIZE_42 +# define BOOST_PP_SEQ_SIZE_42(_) BOOST_PP_SEQ_SIZE_43 +# define BOOST_PP_SEQ_SIZE_43(_) BOOST_PP_SEQ_SIZE_44 +# define BOOST_PP_SEQ_SIZE_44(_) BOOST_PP_SEQ_SIZE_45 +# define BOOST_PP_SEQ_SIZE_45(_) BOOST_PP_SEQ_SIZE_46 +# define BOOST_PP_SEQ_SIZE_46(_) BOOST_PP_SEQ_SIZE_47 +# define BOOST_PP_SEQ_SIZE_47(_) BOOST_PP_SEQ_SIZE_48 +# define BOOST_PP_SEQ_SIZE_48(_) BOOST_PP_SEQ_SIZE_49 +# define BOOST_PP_SEQ_SIZE_49(_) BOOST_PP_SEQ_SIZE_50 +# define BOOST_PP_SEQ_SIZE_50(_) BOOST_PP_SEQ_SIZE_51 +# define BOOST_PP_SEQ_SIZE_51(_) BOOST_PP_SEQ_SIZE_52 +# define BOOST_PP_SEQ_SIZE_52(_) BOOST_PP_SEQ_SIZE_53 +# define BOOST_PP_SEQ_SIZE_53(_) BOOST_PP_SEQ_SIZE_54 +# define BOOST_PP_SEQ_SIZE_54(_) BOOST_PP_SEQ_SIZE_55 +# define BOOST_PP_SEQ_SIZE_55(_) BOOST_PP_SEQ_SIZE_56 +# define BOOST_PP_SEQ_SIZE_56(_) BOOST_PP_SEQ_SIZE_57 +# define BOOST_PP_SEQ_SIZE_57(_) BOOST_PP_SEQ_SIZE_58 +# define BOOST_PP_SEQ_SIZE_58(_) BOOST_PP_SEQ_SIZE_59 +# define BOOST_PP_SEQ_SIZE_59(_) BOOST_PP_SEQ_SIZE_60 +# define BOOST_PP_SEQ_SIZE_60(_) BOOST_PP_SEQ_SIZE_61 +# define BOOST_PP_SEQ_SIZE_61(_) BOOST_PP_SEQ_SIZE_62 +# define BOOST_PP_SEQ_SIZE_62(_) BOOST_PP_SEQ_SIZE_63 +# define BOOST_PP_SEQ_SIZE_63(_) BOOST_PP_SEQ_SIZE_64 +# define BOOST_PP_SEQ_SIZE_64(_) BOOST_PP_SEQ_SIZE_65 +# define BOOST_PP_SEQ_SIZE_65(_) BOOST_PP_SEQ_SIZE_66 +# define BOOST_PP_SEQ_SIZE_66(_) BOOST_PP_SEQ_SIZE_67 +# define BOOST_PP_SEQ_SIZE_67(_) BOOST_PP_SEQ_SIZE_68 +# define BOOST_PP_SEQ_SIZE_68(_) BOOST_PP_SEQ_SIZE_69 +# define BOOST_PP_SEQ_SIZE_69(_) BOOST_PP_SEQ_SIZE_70 +# define BOOST_PP_SEQ_SIZE_70(_) BOOST_PP_SEQ_SIZE_71 +# define BOOST_PP_SEQ_SIZE_71(_) BOOST_PP_SEQ_SIZE_72 +# define BOOST_PP_SEQ_SIZE_72(_) BOOST_PP_SEQ_SIZE_73 +# define BOOST_PP_SEQ_SIZE_73(_) BOOST_PP_SEQ_SIZE_74 +# define BOOST_PP_SEQ_SIZE_74(_) BOOST_PP_SEQ_SIZE_75 +# define BOOST_PP_SEQ_SIZE_75(_) BOOST_PP_SEQ_SIZE_76 +# define BOOST_PP_SEQ_SIZE_76(_) BOOST_PP_SEQ_SIZE_77 +# define BOOST_PP_SEQ_SIZE_77(_) BOOST_PP_SEQ_SIZE_78 +# define BOOST_PP_SEQ_SIZE_78(_) BOOST_PP_SEQ_SIZE_79 +# define BOOST_PP_SEQ_SIZE_79(_) BOOST_PP_SEQ_SIZE_80 +# define BOOST_PP_SEQ_SIZE_80(_) BOOST_PP_SEQ_SIZE_81 +# define BOOST_PP_SEQ_SIZE_81(_) BOOST_PP_SEQ_SIZE_82 +# define BOOST_PP_SEQ_SIZE_82(_) BOOST_PP_SEQ_SIZE_83 +# define BOOST_PP_SEQ_SIZE_83(_) BOOST_PP_SEQ_SIZE_84 +# define BOOST_PP_SEQ_SIZE_84(_) BOOST_PP_SEQ_SIZE_85 +# define BOOST_PP_SEQ_SIZE_85(_) BOOST_PP_SEQ_SIZE_86 +# define BOOST_PP_SEQ_SIZE_86(_) BOOST_PP_SEQ_SIZE_87 +# define BOOST_PP_SEQ_SIZE_87(_) BOOST_PP_SEQ_SIZE_88 +# define BOOST_PP_SEQ_SIZE_88(_) BOOST_PP_SEQ_SIZE_89 +# define BOOST_PP_SEQ_SIZE_89(_) BOOST_PP_SEQ_SIZE_90 +# define BOOST_PP_SEQ_SIZE_90(_) BOOST_PP_SEQ_SIZE_91 +# define BOOST_PP_SEQ_SIZE_91(_) BOOST_PP_SEQ_SIZE_92 +# define BOOST_PP_SEQ_SIZE_92(_) BOOST_PP_SEQ_SIZE_93 +# define BOOST_PP_SEQ_SIZE_93(_) BOOST_PP_SEQ_SIZE_94 +# define BOOST_PP_SEQ_SIZE_94(_) BOOST_PP_SEQ_SIZE_95 +# define BOOST_PP_SEQ_SIZE_95(_) BOOST_PP_SEQ_SIZE_96 +# define BOOST_PP_SEQ_SIZE_96(_) BOOST_PP_SEQ_SIZE_97 +# define BOOST_PP_SEQ_SIZE_97(_) BOOST_PP_SEQ_SIZE_98 +# define BOOST_PP_SEQ_SIZE_98(_) BOOST_PP_SEQ_SIZE_99 +# define BOOST_PP_SEQ_SIZE_99(_) BOOST_PP_SEQ_SIZE_100 +# define BOOST_PP_SEQ_SIZE_100(_) BOOST_PP_SEQ_SIZE_101 +# define BOOST_PP_SEQ_SIZE_101(_) BOOST_PP_SEQ_SIZE_102 +# define BOOST_PP_SEQ_SIZE_102(_) BOOST_PP_SEQ_SIZE_103 +# define BOOST_PP_SEQ_SIZE_103(_) BOOST_PP_SEQ_SIZE_104 +# define BOOST_PP_SEQ_SIZE_104(_) BOOST_PP_SEQ_SIZE_105 +# define BOOST_PP_SEQ_SIZE_105(_) BOOST_PP_SEQ_SIZE_106 +# define BOOST_PP_SEQ_SIZE_106(_) BOOST_PP_SEQ_SIZE_107 +# define BOOST_PP_SEQ_SIZE_107(_) BOOST_PP_SEQ_SIZE_108 +# define BOOST_PP_SEQ_SIZE_108(_) BOOST_PP_SEQ_SIZE_109 +# define BOOST_PP_SEQ_SIZE_109(_) BOOST_PP_SEQ_SIZE_110 +# define BOOST_PP_SEQ_SIZE_110(_) BOOST_PP_SEQ_SIZE_111 +# define BOOST_PP_SEQ_SIZE_111(_) BOOST_PP_SEQ_SIZE_112 +# define BOOST_PP_SEQ_SIZE_112(_) BOOST_PP_SEQ_SIZE_113 +# define BOOST_PP_SEQ_SIZE_113(_) BOOST_PP_SEQ_SIZE_114 +# define BOOST_PP_SEQ_SIZE_114(_) BOOST_PP_SEQ_SIZE_115 +# define BOOST_PP_SEQ_SIZE_115(_) BOOST_PP_SEQ_SIZE_116 +# define BOOST_PP_SEQ_SIZE_116(_) BOOST_PP_SEQ_SIZE_117 +# define BOOST_PP_SEQ_SIZE_117(_) BOOST_PP_SEQ_SIZE_118 +# define BOOST_PP_SEQ_SIZE_118(_) BOOST_PP_SEQ_SIZE_119 +# define BOOST_PP_SEQ_SIZE_119(_) BOOST_PP_SEQ_SIZE_120 +# define BOOST_PP_SEQ_SIZE_120(_) BOOST_PP_SEQ_SIZE_121 +# define BOOST_PP_SEQ_SIZE_121(_) BOOST_PP_SEQ_SIZE_122 +# define BOOST_PP_SEQ_SIZE_122(_) BOOST_PP_SEQ_SIZE_123 +# define BOOST_PP_SEQ_SIZE_123(_) BOOST_PP_SEQ_SIZE_124 +# define BOOST_PP_SEQ_SIZE_124(_) BOOST_PP_SEQ_SIZE_125 +# define BOOST_PP_SEQ_SIZE_125(_) BOOST_PP_SEQ_SIZE_126 +# define BOOST_PP_SEQ_SIZE_126(_) BOOST_PP_SEQ_SIZE_127 +# define BOOST_PP_SEQ_SIZE_127(_) BOOST_PP_SEQ_SIZE_128 +# define BOOST_PP_SEQ_SIZE_128(_) BOOST_PP_SEQ_SIZE_129 +# define BOOST_PP_SEQ_SIZE_129(_) BOOST_PP_SEQ_SIZE_130 +# define BOOST_PP_SEQ_SIZE_130(_) BOOST_PP_SEQ_SIZE_131 +# define BOOST_PP_SEQ_SIZE_131(_) BOOST_PP_SEQ_SIZE_132 +# define BOOST_PP_SEQ_SIZE_132(_) BOOST_PP_SEQ_SIZE_133 +# define BOOST_PP_SEQ_SIZE_133(_) BOOST_PP_SEQ_SIZE_134 +# define BOOST_PP_SEQ_SIZE_134(_) BOOST_PP_SEQ_SIZE_135 +# define BOOST_PP_SEQ_SIZE_135(_) BOOST_PP_SEQ_SIZE_136 +# define BOOST_PP_SEQ_SIZE_136(_) BOOST_PP_SEQ_SIZE_137 +# define BOOST_PP_SEQ_SIZE_137(_) BOOST_PP_SEQ_SIZE_138 +# define BOOST_PP_SEQ_SIZE_138(_) BOOST_PP_SEQ_SIZE_139 +# define BOOST_PP_SEQ_SIZE_139(_) BOOST_PP_SEQ_SIZE_140 +# define BOOST_PP_SEQ_SIZE_140(_) BOOST_PP_SEQ_SIZE_141 +# define BOOST_PP_SEQ_SIZE_141(_) BOOST_PP_SEQ_SIZE_142 +# define BOOST_PP_SEQ_SIZE_142(_) BOOST_PP_SEQ_SIZE_143 +# define BOOST_PP_SEQ_SIZE_143(_) BOOST_PP_SEQ_SIZE_144 +# define BOOST_PP_SEQ_SIZE_144(_) BOOST_PP_SEQ_SIZE_145 +# define BOOST_PP_SEQ_SIZE_145(_) BOOST_PP_SEQ_SIZE_146 +# define BOOST_PP_SEQ_SIZE_146(_) BOOST_PP_SEQ_SIZE_147 +# define BOOST_PP_SEQ_SIZE_147(_) BOOST_PP_SEQ_SIZE_148 +# define BOOST_PP_SEQ_SIZE_148(_) BOOST_PP_SEQ_SIZE_149 +# define BOOST_PP_SEQ_SIZE_149(_) BOOST_PP_SEQ_SIZE_150 +# define BOOST_PP_SEQ_SIZE_150(_) BOOST_PP_SEQ_SIZE_151 +# define BOOST_PP_SEQ_SIZE_151(_) BOOST_PP_SEQ_SIZE_152 +# define BOOST_PP_SEQ_SIZE_152(_) BOOST_PP_SEQ_SIZE_153 +# define BOOST_PP_SEQ_SIZE_153(_) BOOST_PP_SEQ_SIZE_154 +# define BOOST_PP_SEQ_SIZE_154(_) BOOST_PP_SEQ_SIZE_155 +# define BOOST_PP_SEQ_SIZE_155(_) BOOST_PP_SEQ_SIZE_156 +# define BOOST_PP_SEQ_SIZE_156(_) BOOST_PP_SEQ_SIZE_157 +# define BOOST_PP_SEQ_SIZE_157(_) BOOST_PP_SEQ_SIZE_158 +# define BOOST_PP_SEQ_SIZE_158(_) BOOST_PP_SEQ_SIZE_159 +# define BOOST_PP_SEQ_SIZE_159(_) BOOST_PP_SEQ_SIZE_160 +# define BOOST_PP_SEQ_SIZE_160(_) BOOST_PP_SEQ_SIZE_161 +# define BOOST_PP_SEQ_SIZE_161(_) BOOST_PP_SEQ_SIZE_162 +# define BOOST_PP_SEQ_SIZE_162(_) BOOST_PP_SEQ_SIZE_163 +# define BOOST_PP_SEQ_SIZE_163(_) BOOST_PP_SEQ_SIZE_164 +# define BOOST_PP_SEQ_SIZE_164(_) BOOST_PP_SEQ_SIZE_165 +# define BOOST_PP_SEQ_SIZE_165(_) BOOST_PP_SEQ_SIZE_166 +# define BOOST_PP_SEQ_SIZE_166(_) BOOST_PP_SEQ_SIZE_167 +# define BOOST_PP_SEQ_SIZE_167(_) BOOST_PP_SEQ_SIZE_168 +# define BOOST_PP_SEQ_SIZE_168(_) BOOST_PP_SEQ_SIZE_169 +# define BOOST_PP_SEQ_SIZE_169(_) BOOST_PP_SEQ_SIZE_170 +# define BOOST_PP_SEQ_SIZE_170(_) BOOST_PP_SEQ_SIZE_171 +# define BOOST_PP_SEQ_SIZE_171(_) BOOST_PP_SEQ_SIZE_172 +# define BOOST_PP_SEQ_SIZE_172(_) BOOST_PP_SEQ_SIZE_173 +# define BOOST_PP_SEQ_SIZE_173(_) BOOST_PP_SEQ_SIZE_174 +# define BOOST_PP_SEQ_SIZE_174(_) BOOST_PP_SEQ_SIZE_175 +# define BOOST_PP_SEQ_SIZE_175(_) BOOST_PP_SEQ_SIZE_176 +# define BOOST_PP_SEQ_SIZE_176(_) BOOST_PP_SEQ_SIZE_177 +# define BOOST_PP_SEQ_SIZE_177(_) BOOST_PP_SEQ_SIZE_178 +# define BOOST_PP_SEQ_SIZE_178(_) BOOST_PP_SEQ_SIZE_179 +# define BOOST_PP_SEQ_SIZE_179(_) BOOST_PP_SEQ_SIZE_180 +# define BOOST_PP_SEQ_SIZE_180(_) BOOST_PP_SEQ_SIZE_181 +# define BOOST_PP_SEQ_SIZE_181(_) BOOST_PP_SEQ_SIZE_182 +# define BOOST_PP_SEQ_SIZE_182(_) BOOST_PP_SEQ_SIZE_183 +# define BOOST_PP_SEQ_SIZE_183(_) BOOST_PP_SEQ_SIZE_184 +# define BOOST_PP_SEQ_SIZE_184(_) BOOST_PP_SEQ_SIZE_185 +# define BOOST_PP_SEQ_SIZE_185(_) BOOST_PP_SEQ_SIZE_186 +# define BOOST_PP_SEQ_SIZE_186(_) BOOST_PP_SEQ_SIZE_187 +# define BOOST_PP_SEQ_SIZE_187(_) BOOST_PP_SEQ_SIZE_188 +# define BOOST_PP_SEQ_SIZE_188(_) BOOST_PP_SEQ_SIZE_189 +# define BOOST_PP_SEQ_SIZE_189(_) BOOST_PP_SEQ_SIZE_190 +# define BOOST_PP_SEQ_SIZE_190(_) BOOST_PP_SEQ_SIZE_191 +# define BOOST_PP_SEQ_SIZE_191(_) BOOST_PP_SEQ_SIZE_192 +# define BOOST_PP_SEQ_SIZE_192(_) BOOST_PP_SEQ_SIZE_193 +# define BOOST_PP_SEQ_SIZE_193(_) BOOST_PP_SEQ_SIZE_194 +# define BOOST_PP_SEQ_SIZE_194(_) BOOST_PP_SEQ_SIZE_195 +# define BOOST_PP_SEQ_SIZE_195(_) BOOST_PP_SEQ_SIZE_196 +# define BOOST_PP_SEQ_SIZE_196(_) BOOST_PP_SEQ_SIZE_197 +# define BOOST_PP_SEQ_SIZE_197(_) BOOST_PP_SEQ_SIZE_198 +# define BOOST_PP_SEQ_SIZE_198(_) BOOST_PP_SEQ_SIZE_199 +# define BOOST_PP_SEQ_SIZE_199(_) BOOST_PP_SEQ_SIZE_200 +# define BOOST_PP_SEQ_SIZE_200(_) BOOST_PP_SEQ_SIZE_201 +# define BOOST_PP_SEQ_SIZE_201(_) BOOST_PP_SEQ_SIZE_202 +# define BOOST_PP_SEQ_SIZE_202(_) BOOST_PP_SEQ_SIZE_203 +# define BOOST_PP_SEQ_SIZE_203(_) BOOST_PP_SEQ_SIZE_204 +# define BOOST_PP_SEQ_SIZE_204(_) BOOST_PP_SEQ_SIZE_205 +# define BOOST_PP_SEQ_SIZE_205(_) BOOST_PP_SEQ_SIZE_206 +# define BOOST_PP_SEQ_SIZE_206(_) BOOST_PP_SEQ_SIZE_207 +# define BOOST_PP_SEQ_SIZE_207(_) BOOST_PP_SEQ_SIZE_208 +# define BOOST_PP_SEQ_SIZE_208(_) BOOST_PP_SEQ_SIZE_209 +# define BOOST_PP_SEQ_SIZE_209(_) BOOST_PP_SEQ_SIZE_210 +# define BOOST_PP_SEQ_SIZE_210(_) BOOST_PP_SEQ_SIZE_211 +# define BOOST_PP_SEQ_SIZE_211(_) BOOST_PP_SEQ_SIZE_212 +# define BOOST_PP_SEQ_SIZE_212(_) BOOST_PP_SEQ_SIZE_213 +# define BOOST_PP_SEQ_SIZE_213(_) BOOST_PP_SEQ_SIZE_214 +# define BOOST_PP_SEQ_SIZE_214(_) BOOST_PP_SEQ_SIZE_215 +# define BOOST_PP_SEQ_SIZE_215(_) BOOST_PP_SEQ_SIZE_216 +# define BOOST_PP_SEQ_SIZE_216(_) BOOST_PP_SEQ_SIZE_217 +# define BOOST_PP_SEQ_SIZE_217(_) BOOST_PP_SEQ_SIZE_218 +# define BOOST_PP_SEQ_SIZE_218(_) BOOST_PP_SEQ_SIZE_219 +# define BOOST_PP_SEQ_SIZE_219(_) BOOST_PP_SEQ_SIZE_220 +# define BOOST_PP_SEQ_SIZE_220(_) BOOST_PP_SEQ_SIZE_221 +# define BOOST_PP_SEQ_SIZE_221(_) BOOST_PP_SEQ_SIZE_222 +# define BOOST_PP_SEQ_SIZE_222(_) BOOST_PP_SEQ_SIZE_223 +# define BOOST_PP_SEQ_SIZE_223(_) BOOST_PP_SEQ_SIZE_224 +# define BOOST_PP_SEQ_SIZE_224(_) BOOST_PP_SEQ_SIZE_225 +# define BOOST_PP_SEQ_SIZE_225(_) BOOST_PP_SEQ_SIZE_226 +# define BOOST_PP_SEQ_SIZE_226(_) BOOST_PP_SEQ_SIZE_227 +# define BOOST_PP_SEQ_SIZE_227(_) BOOST_PP_SEQ_SIZE_228 +# define BOOST_PP_SEQ_SIZE_228(_) BOOST_PP_SEQ_SIZE_229 +# define BOOST_PP_SEQ_SIZE_229(_) BOOST_PP_SEQ_SIZE_230 +# define BOOST_PP_SEQ_SIZE_230(_) BOOST_PP_SEQ_SIZE_231 +# define BOOST_PP_SEQ_SIZE_231(_) BOOST_PP_SEQ_SIZE_232 +# define BOOST_PP_SEQ_SIZE_232(_) BOOST_PP_SEQ_SIZE_233 +# define BOOST_PP_SEQ_SIZE_233(_) BOOST_PP_SEQ_SIZE_234 +# define BOOST_PP_SEQ_SIZE_234(_) BOOST_PP_SEQ_SIZE_235 +# define BOOST_PP_SEQ_SIZE_235(_) BOOST_PP_SEQ_SIZE_236 +# define BOOST_PP_SEQ_SIZE_236(_) BOOST_PP_SEQ_SIZE_237 +# define BOOST_PP_SEQ_SIZE_237(_) BOOST_PP_SEQ_SIZE_238 +# define BOOST_PP_SEQ_SIZE_238(_) BOOST_PP_SEQ_SIZE_239 +# define BOOST_PP_SEQ_SIZE_239(_) BOOST_PP_SEQ_SIZE_240 +# define BOOST_PP_SEQ_SIZE_240(_) BOOST_PP_SEQ_SIZE_241 +# define BOOST_PP_SEQ_SIZE_241(_) BOOST_PP_SEQ_SIZE_242 +# define BOOST_PP_SEQ_SIZE_242(_) BOOST_PP_SEQ_SIZE_243 +# define BOOST_PP_SEQ_SIZE_243(_) BOOST_PP_SEQ_SIZE_244 +# define BOOST_PP_SEQ_SIZE_244(_) BOOST_PP_SEQ_SIZE_245 +# define BOOST_PP_SEQ_SIZE_245(_) BOOST_PP_SEQ_SIZE_246 +# define BOOST_PP_SEQ_SIZE_246(_) BOOST_PP_SEQ_SIZE_247 +# define BOOST_PP_SEQ_SIZE_247(_) BOOST_PP_SEQ_SIZE_248 +# define BOOST_PP_SEQ_SIZE_248(_) BOOST_PP_SEQ_SIZE_249 +# define BOOST_PP_SEQ_SIZE_249(_) BOOST_PP_SEQ_SIZE_250 +# define BOOST_PP_SEQ_SIZE_250(_) BOOST_PP_SEQ_SIZE_251 +# define BOOST_PP_SEQ_SIZE_251(_) BOOST_PP_SEQ_SIZE_252 +# define BOOST_PP_SEQ_SIZE_252(_) BOOST_PP_SEQ_SIZE_253 +# define BOOST_PP_SEQ_SIZE_253(_) BOOST_PP_SEQ_SIZE_254 +# define BOOST_PP_SEQ_SIZE_254(_) BOOST_PP_SEQ_SIZE_255 +# define BOOST_PP_SEQ_SIZE_255(_) BOOST_PP_SEQ_SIZE_256 +# define BOOST_PP_SEQ_SIZE_256(_) BOOST_PP_SEQ_SIZE_257 +# +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_0 0 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1 1 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_2 2 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_3 3 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4 4 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_5 5 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_6 6 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_7 7 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_8 8 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_9 9 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_10 10 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_11 11 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_12 12 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_13 13 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_14 14 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_15 15 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_16 16 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_17 17 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_18 18 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_19 19 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_20 20 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_21 21 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_22 22 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_23 23 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_24 24 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_25 25 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_26 26 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_27 27 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_28 28 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_29 29 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_30 30 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_31 31 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_32 32 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_33 33 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_34 34 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_35 35 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_36 36 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_37 37 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_38 38 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_39 39 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_40 40 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_41 41 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_42 42 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_43 43 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_44 44 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_45 45 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_46 46 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_47 47 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_48 48 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_49 49 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_50 50 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_51 51 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_52 52 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_53 53 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_54 54 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_55 55 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_56 56 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_57 57 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_58 58 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_59 59 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_60 60 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_61 61 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_62 62 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_63 63 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_64 64 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_65 65 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_66 66 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_67 67 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_68 68 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_69 69 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_70 70 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_71 71 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_72 72 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_73 73 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_74 74 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_75 75 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_76 76 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_77 77 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_78 78 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_79 79 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_80 80 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_81 81 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_82 82 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_83 83 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_84 84 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_85 85 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_86 86 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_87 87 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_88 88 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_89 89 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_90 90 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_91 91 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_92 92 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_93 93 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_94 94 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_95 95 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_96 96 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_97 97 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_98 98 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_99 99 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_100 100 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_101 101 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_102 102 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_103 103 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_104 104 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_105 105 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_106 106 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_107 107 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_108 108 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_109 109 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_110 110 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_111 111 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_112 112 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_113 113 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_114 114 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_115 115 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_116 116 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_117 117 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_118 118 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_119 119 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_120 120 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_121 121 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_122 122 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_123 123 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_124 124 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_125 125 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_126 126 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_127 127 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_128 128 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_129 129 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_130 130 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_131 131 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_132 132 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_133 133 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_134 134 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_135 135 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_136 136 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_137 137 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_138 138 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_139 139 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_140 140 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_141 141 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_142 142 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_143 143 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_144 144 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_145 145 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_146 146 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_147 147 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_148 148 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_149 149 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_150 150 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_151 151 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_152 152 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_153 153 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_154 154 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_155 155 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_156 156 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_157 157 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_158 158 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_159 159 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_160 160 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_161 161 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_162 162 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_163 163 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_164 164 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_165 165 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_166 166 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_167 167 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_168 168 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_169 169 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_170 170 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_171 171 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_172 172 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_173 173 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_174 174 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_175 175 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_176 176 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_177 177 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_178 178 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_179 179 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_180 180 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_181 181 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_182 182 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_183 183 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_184 184 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_185 185 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_186 186 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_187 187 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_188 188 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_189 189 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_190 190 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_191 191 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_192 192 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_193 193 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_194 194 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_195 195 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_196 196 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_197 197 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_198 198 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_199 199 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_200 200 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_201 201 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_202 202 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_203 203 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_204 204 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_205 205 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_206 206 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_207 207 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_208 208 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_209 209 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_210 210 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_211 211 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_212 212 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_213 213 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_214 214 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_215 215 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_216 216 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_217 217 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_218 218 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_219 219 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_220 220 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_221 221 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_222 222 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_223 223 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_224 224 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_225 225 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_226 226 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_227 227 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_228 228 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_229 229 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_230 230 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_231 231 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_232 232 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_233 233 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_234 234 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_235 235 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_236 236 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_237 237 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_238 238 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_239 239 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_240 240 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_241 241 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_242 242 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_243 243 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_244 244 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_245 245 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_246 246 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_247 247 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_248 248 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_249 249 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_250 250 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_251 251 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_252 252 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_253 253 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_254 254 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_255 255 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_256 256 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_257 257 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/limits/size_512.hpp b/src/boost/boost/preprocessor/seq/limits/size_512.hpp new file mode 100644 index 000000000..56d922c06 --- /dev/null +++ b/src/boost/boost/preprocessor/seq/limits/size_512.hpp @@ -0,0 +1,531 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 2002. +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_SEQ_SIZE_512_HPP +# define BOOST_PREPROCESSOR_SEQ_SIZE_512_HPP +# +# define BOOST_PP_SEQ_SIZE_257(_) BOOST_PP_SEQ_SIZE_258 +# define BOOST_PP_SEQ_SIZE_258(_) BOOST_PP_SEQ_SIZE_259 +# define BOOST_PP_SEQ_SIZE_259(_) BOOST_PP_SEQ_SIZE_260 +# define BOOST_PP_SEQ_SIZE_260(_) BOOST_PP_SEQ_SIZE_261 +# define BOOST_PP_SEQ_SIZE_261(_) BOOST_PP_SEQ_SIZE_262 +# define BOOST_PP_SEQ_SIZE_262(_) BOOST_PP_SEQ_SIZE_263 +# define BOOST_PP_SEQ_SIZE_263(_) BOOST_PP_SEQ_SIZE_264 +# define BOOST_PP_SEQ_SIZE_264(_) BOOST_PP_SEQ_SIZE_265 +# define BOOST_PP_SEQ_SIZE_265(_) BOOST_PP_SEQ_SIZE_266 +# define BOOST_PP_SEQ_SIZE_266(_) BOOST_PP_SEQ_SIZE_267 +# define BOOST_PP_SEQ_SIZE_267(_) BOOST_PP_SEQ_SIZE_268 +# define BOOST_PP_SEQ_SIZE_268(_) BOOST_PP_SEQ_SIZE_269 +# define BOOST_PP_SEQ_SIZE_269(_) BOOST_PP_SEQ_SIZE_270 +# define BOOST_PP_SEQ_SIZE_270(_) BOOST_PP_SEQ_SIZE_271 +# define BOOST_PP_SEQ_SIZE_271(_) BOOST_PP_SEQ_SIZE_272 +# define BOOST_PP_SEQ_SIZE_272(_) BOOST_PP_SEQ_SIZE_273 +# define BOOST_PP_SEQ_SIZE_273(_) BOOST_PP_SEQ_SIZE_274 +# define BOOST_PP_SEQ_SIZE_274(_) BOOST_PP_SEQ_SIZE_275 +# define BOOST_PP_SEQ_SIZE_275(_) BOOST_PP_SEQ_SIZE_276 +# define BOOST_PP_SEQ_SIZE_276(_) BOOST_PP_SEQ_SIZE_277 +# define BOOST_PP_SEQ_SIZE_277(_) BOOST_PP_SEQ_SIZE_278 +# define BOOST_PP_SEQ_SIZE_278(_) BOOST_PP_SEQ_SIZE_279 +# define BOOST_PP_SEQ_SIZE_279(_) BOOST_PP_SEQ_SIZE_280 +# define BOOST_PP_SEQ_SIZE_280(_) BOOST_PP_SEQ_SIZE_281 +# define BOOST_PP_SEQ_SIZE_281(_) BOOST_PP_SEQ_SIZE_282 +# define BOOST_PP_SEQ_SIZE_282(_) BOOST_PP_SEQ_SIZE_283 +# define BOOST_PP_SEQ_SIZE_283(_) BOOST_PP_SEQ_SIZE_284 +# define BOOST_PP_SEQ_SIZE_284(_) BOOST_PP_SEQ_SIZE_285 +# define BOOST_PP_SEQ_SIZE_285(_) BOOST_PP_SEQ_SIZE_286 +# define BOOST_PP_SEQ_SIZE_286(_) BOOST_PP_SEQ_SIZE_287 +# define BOOST_PP_SEQ_SIZE_287(_) BOOST_PP_SEQ_SIZE_288 +# define BOOST_PP_SEQ_SIZE_288(_) BOOST_PP_SEQ_SIZE_289 +# define BOOST_PP_SEQ_SIZE_289(_) BOOST_PP_SEQ_SIZE_290 +# define BOOST_PP_SEQ_SIZE_290(_) BOOST_PP_SEQ_SIZE_291 +# define BOOST_PP_SEQ_SIZE_291(_) BOOST_PP_SEQ_SIZE_292 +# define BOOST_PP_SEQ_SIZE_292(_) BOOST_PP_SEQ_SIZE_293 +# define BOOST_PP_SEQ_SIZE_293(_) BOOST_PP_SEQ_SIZE_294 +# define BOOST_PP_SEQ_SIZE_294(_) BOOST_PP_SEQ_SIZE_295 +# define BOOST_PP_SEQ_SIZE_295(_) BOOST_PP_SEQ_SIZE_296 +# define BOOST_PP_SEQ_SIZE_296(_) BOOST_PP_SEQ_SIZE_297 +# define BOOST_PP_SEQ_SIZE_297(_) BOOST_PP_SEQ_SIZE_298 +# define BOOST_PP_SEQ_SIZE_298(_) BOOST_PP_SEQ_SIZE_299 +# define BOOST_PP_SEQ_SIZE_299(_) BOOST_PP_SEQ_SIZE_300 +# define BOOST_PP_SEQ_SIZE_300(_) BOOST_PP_SEQ_SIZE_301 +# define BOOST_PP_SEQ_SIZE_301(_) BOOST_PP_SEQ_SIZE_302 +# define BOOST_PP_SEQ_SIZE_302(_) BOOST_PP_SEQ_SIZE_303 +# define BOOST_PP_SEQ_SIZE_303(_) BOOST_PP_SEQ_SIZE_304 +# define BOOST_PP_SEQ_SIZE_304(_) BOOST_PP_SEQ_SIZE_305 +# define BOOST_PP_SEQ_SIZE_305(_) BOOST_PP_SEQ_SIZE_306 +# define BOOST_PP_SEQ_SIZE_306(_) BOOST_PP_SEQ_SIZE_307 +# define BOOST_PP_SEQ_SIZE_307(_) BOOST_PP_SEQ_SIZE_308 +# define BOOST_PP_SEQ_SIZE_308(_) BOOST_PP_SEQ_SIZE_309 +# define BOOST_PP_SEQ_SIZE_309(_) BOOST_PP_SEQ_SIZE_310 +# define BOOST_PP_SEQ_SIZE_310(_) BOOST_PP_SEQ_SIZE_311 +# define BOOST_PP_SEQ_SIZE_311(_) BOOST_PP_SEQ_SIZE_312 +# define BOOST_PP_SEQ_SIZE_312(_) BOOST_PP_SEQ_SIZE_313 +# define BOOST_PP_SEQ_SIZE_313(_) BOOST_PP_SEQ_SIZE_314 +# define BOOST_PP_SEQ_SIZE_314(_) BOOST_PP_SEQ_SIZE_315 +# define BOOST_PP_SEQ_SIZE_315(_) BOOST_PP_SEQ_SIZE_316 +# define BOOST_PP_SEQ_SIZE_316(_) BOOST_PP_SEQ_SIZE_317 +# define BOOST_PP_SEQ_SIZE_317(_) BOOST_PP_SEQ_SIZE_318 +# define BOOST_PP_SEQ_SIZE_318(_) BOOST_PP_SEQ_SIZE_319 +# define BOOST_PP_SEQ_SIZE_319(_) BOOST_PP_SEQ_SIZE_320 +# define BOOST_PP_SEQ_SIZE_320(_) BOOST_PP_SEQ_SIZE_321 +# define BOOST_PP_SEQ_SIZE_321(_) BOOST_PP_SEQ_SIZE_322 +# define BOOST_PP_SEQ_SIZE_322(_) BOOST_PP_SEQ_SIZE_323 +# define BOOST_PP_SEQ_SIZE_323(_) BOOST_PP_SEQ_SIZE_324 +# define BOOST_PP_SEQ_SIZE_324(_) BOOST_PP_SEQ_SIZE_325 +# define BOOST_PP_SEQ_SIZE_325(_) BOOST_PP_SEQ_SIZE_326 +# define BOOST_PP_SEQ_SIZE_326(_) BOOST_PP_SEQ_SIZE_327 +# define BOOST_PP_SEQ_SIZE_327(_) BOOST_PP_SEQ_SIZE_328 +# define BOOST_PP_SEQ_SIZE_328(_) BOOST_PP_SEQ_SIZE_329 +# define BOOST_PP_SEQ_SIZE_329(_) BOOST_PP_SEQ_SIZE_330 +# define BOOST_PP_SEQ_SIZE_330(_) BOOST_PP_SEQ_SIZE_331 +# define BOOST_PP_SEQ_SIZE_331(_) BOOST_PP_SEQ_SIZE_332 +# define BOOST_PP_SEQ_SIZE_332(_) BOOST_PP_SEQ_SIZE_333 +# define BOOST_PP_SEQ_SIZE_333(_) BOOST_PP_SEQ_SIZE_334 +# define BOOST_PP_SEQ_SIZE_334(_) BOOST_PP_SEQ_SIZE_335 +# define BOOST_PP_SEQ_SIZE_335(_) BOOST_PP_SEQ_SIZE_336 +# define BOOST_PP_SEQ_SIZE_336(_) BOOST_PP_SEQ_SIZE_337 +# define BOOST_PP_SEQ_SIZE_337(_) BOOST_PP_SEQ_SIZE_338 +# define BOOST_PP_SEQ_SIZE_338(_) BOOST_PP_SEQ_SIZE_339 +# define BOOST_PP_SEQ_SIZE_339(_) BOOST_PP_SEQ_SIZE_340 +# define BOOST_PP_SEQ_SIZE_340(_) BOOST_PP_SEQ_SIZE_341 +# define BOOST_PP_SEQ_SIZE_341(_) BOOST_PP_SEQ_SIZE_342 +# define BOOST_PP_SEQ_SIZE_342(_) BOOST_PP_SEQ_SIZE_343 +# define BOOST_PP_SEQ_SIZE_343(_) BOOST_PP_SEQ_SIZE_344 +# define BOOST_PP_SEQ_SIZE_344(_) BOOST_PP_SEQ_SIZE_345 +# define BOOST_PP_SEQ_SIZE_345(_) BOOST_PP_SEQ_SIZE_346 +# define BOOST_PP_SEQ_SIZE_346(_) BOOST_PP_SEQ_SIZE_347 +# define BOOST_PP_SEQ_SIZE_347(_) BOOST_PP_SEQ_SIZE_348 +# define BOOST_PP_SEQ_SIZE_348(_) BOOST_PP_SEQ_SIZE_349 +# define BOOST_PP_SEQ_SIZE_349(_) BOOST_PP_SEQ_SIZE_350 +# define BOOST_PP_SEQ_SIZE_350(_) BOOST_PP_SEQ_SIZE_351 +# define BOOST_PP_SEQ_SIZE_351(_) BOOST_PP_SEQ_SIZE_352 +# define BOOST_PP_SEQ_SIZE_352(_) BOOST_PP_SEQ_SIZE_353 +# define BOOST_PP_SEQ_SIZE_353(_) BOOST_PP_SEQ_SIZE_354 +# define BOOST_PP_SEQ_SIZE_354(_) BOOST_PP_SEQ_SIZE_355 +# define BOOST_PP_SEQ_SIZE_355(_) BOOST_PP_SEQ_SIZE_356 +# define BOOST_PP_SEQ_SIZE_356(_) BOOST_PP_SEQ_SIZE_357 +# define BOOST_PP_SEQ_SIZE_357(_) BOOST_PP_SEQ_SIZE_358 +# define BOOST_PP_SEQ_SIZE_358(_) BOOST_PP_SEQ_SIZE_359 +# define BOOST_PP_SEQ_SIZE_359(_) BOOST_PP_SEQ_SIZE_360 +# define BOOST_PP_SEQ_SIZE_360(_) BOOST_PP_SEQ_SIZE_361 +# define BOOST_PP_SEQ_SIZE_361(_) BOOST_PP_SEQ_SIZE_362 +# define BOOST_PP_SEQ_SIZE_362(_) BOOST_PP_SEQ_SIZE_363 +# define BOOST_PP_SEQ_SIZE_363(_) BOOST_PP_SEQ_SIZE_364 +# define BOOST_PP_SEQ_SIZE_364(_) BOOST_PP_SEQ_SIZE_365 +# define BOOST_PP_SEQ_SIZE_365(_) BOOST_PP_SEQ_SIZE_366 +# define BOOST_PP_SEQ_SIZE_366(_) BOOST_PP_SEQ_SIZE_367 +# define BOOST_PP_SEQ_SIZE_367(_) BOOST_PP_SEQ_SIZE_368 +# define BOOST_PP_SEQ_SIZE_368(_) BOOST_PP_SEQ_SIZE_369 +# define BOOST_PP_SEQ_SIZE_369(_) BOOST_PP_SEQ_SIZE_370 +# define BOOST_PP_SEQ_SIZE_370(_) BOOST_PP_SEQ_SIZE_371 +# define BOOST_PP_SEQ_SIZE_371(_) BOOST_PP_SEQ_SIZE_372 +# define BOOST_PP_SEQ_SIZE_372(_) BOOST_PP_SEQ_SIZE_373 +# define BOOST_PP_SEQ_SIZE_373(_) BOOST_PP_SEQ_SIZE_374 +# define BOOST_PP_SEQ_SIZE_374(_) BOOST_PP_SEQ_SIZE_375 +# define BOOST_PP_SEQ_SIZE_375(_) BOOST_PP_SEQ_SIZE_376 +# define BOOST_PP_SEQ_SIZE_376(_) BOOST_PP_SEQ_SIZE_377 +# define BOOST_PP_SEQ_SIZE_377(_) BOOST_PP_SEQ_SIZE_378 +# define BOOST_PP_SEQ_SIZE_378(_) BOOST_PP_SEQ_SIZE_379 +# define BOOST_PP_SEQ_SIZE_379(_) BOOST_PP_SEQ_SIZE_380 +# define BOOST_PP_SEQ_SIZE_380(_) BOOST_PP_SEQ_SIZE_381 +# define BOOST_PP_SEQ_SIZE_381(_) BOOST_PP_SEQ_SIZE_382 +# define BOOST_PP_SEQ_SIZE_382(_) BOOST_PP_SEQ_SIZE_383 +# define BOOST_PP_SEQ_SIZE_383(_) BOOST_PP_SEQ_SIZE_384 +# define BOOST_PP_SEQ_SIZE_384(_) BOOST_PP_SEQ_SIZE_385 +# define BOOST_PP_SEQ_SIZE_385(_) BOOST_PP_SEQ_SIZE_386 +# define BOOST_PP_SEQ_SIZE_386(_) BOOST_PP_SEQ_SIZE_387 +# define BOOST_PP_SEQ_SIZE_387(_) BOOST_PP_SEQ_SIZE_388 +# define BOOST_PP_SEQ_SIZE_388(_) BOOST_PP_SEQ_SIZE_389 +# define BOOST_PP_SEQ_SIZE_389(_) BOOST_PP_SEQ_SIZE_390 +# define BOOST_PP_SEQ_SIZE_390(_) BOOST_PP_SEQ_SIZE_391 +# define BOOST_PP_SEQ_SIZE_391(_) BOOST_PP_SEQ_SIZE_392 +# define BOOST_PP_SEQ_SIZE_392(_) BOOST_PP_SEQ_SIZE_393 +# define BOOST_PP_SEQ_SIZE_393(_) BOOST_PP_SEQ_SIZE_394 +# define BOOST_PP_SEQ_SIZE_394(_) BOOST_PP_SEQ_SIZE_395 +# define BOOST_PP_SEQ_SIZE_395(_) BOOST_PP_SEQ_SIZE_396 +# define BOOST_PP_SEQ_SIZE_396(_) BOOST_PP_SEQ_SIZE_397 +# define BOOST_PP_SEQ_SIZE_397(_) BOOST_PP_SEQ_SIZE_398 +# define BOOST_PP_SEQ_SIZE_398(_) BOOST_PP_SEQ_SIZE_399 +# define BOOST_PP_SEQ_SIZE_399(_) BOOST_PP_SEQ_SIZE_400 +# define BOOST_PP_SEQ_SIZE_400(_) BOOST_PP_SEQ_SIZE_401 +# define BOOST_PP_SEQ_SIZE_401(_) BOOST_PP_SEQ_SIZE_402 +# define BOOST_PP_SEQ_SIZE_402(_) BOOST_PP_SEQ_SIZE_403 +# define BOOST_PP_SEQ_SIZE_403(_) BOOST_PP_SEQ_SIZE_404 +# define BOOST_PP_SEQ_SIZE_404(_) BOOST_PP_SEQ_SIZE_405 +# define BOOST_PP_SEQ_SIZE_405(_) BOOST_PP_SEQ_SIZE_406 +# define BOOST_PP_SEQ_SIZE_406(_) BOOST_PP_SEQ_SIZE_407 +# define BOOST_PP_SEQ_SIZE_407(_) BOOST_PP_SEQ_SIZE_408 +# define BOOST_PP_SEQ_SIZE_408(_) BOOST_PP_SEQ_SIZE_409 +# define BOOST_PP_SEQ_SIZE_409(_) BOOST_PP_SEQ_SIZE_410 +# define BOOST_PP_SEQ_SIZE_410(_) BOOST_PP_SEQ_SIZE_411 +# define BOOST_PP_SEQ_SIZE_411(_) BOOST_PP_SEQ_SIZE_412 +# define BOOST_PP_SEQ_SIZE_412(_) BOOST_PP_SEQ_SIZE_413 +# define BOOST_PP_SEQ_SIZE_413(_) BOOST_PP_SEQ_SIZE_414 +# define BOOST_PP_SEQ_SIZE_414(_) BOOST_PP_SEQ_SIZE_415 +# define BOOST_PP_SEQ_SIZE_415(_) BOOST_PP_SEQ_SIZE_416 +# define BOOST_PP_SEQ_SIZE_416(_) BOOST_PP_SEQ_SIZE_417 +# define BOOST_PP_SEQ_SIZE_417(_) BOOST_PP_SEQ_SIZE_418 +# define BOOST_PP_SEQ_SIZE_418(_) BOOST_PP_SEQ_SIZE_419 +# define BOOST_PP_SEQ_SIZE_419(_) BOOST_PP_SEQ_SIZE_420 +# define BOOST_PP_SEQ_SIZE_420(_) BOOST_PP_SEQ_SIZE_421 +# define BOOST_PP_SEQ_SIZE_421(_) BOOST_PP_SEQ_SIZE_422 +# define BOOST_PP_SEQ_SIZE_422(_) BOOST_PP_SEQ_SIZE_423 +# define BOOST_PP_SEQ_SIZE_423(_) BOOST_PP_SEQ_SIZE_424 +# define BOOST_PP_SEQ_SIZE_424(_) BOOST_PP_SEQ_SIZE_425 +# define BOOST_PP_SEQ_SIZE_425(_) BOOST_PP_SEQ_SIZE_426 +# define BOOST_PP_SEQ_SIZE_426(_) BOOST_PP_SEQ_SIZE_427 +# define BOOST_PP_SEQ_SIZE_427(_) BOOST_PP_SEQ_SIZE_428 +# define BOOST_PP_SEQ_SIZE_428(_) BOOST_PP_SEQ_SIZE_429 +# define BOOST_PP_SEQ_SIZE_429(_) BOOST_PP_SEQ_SIZE_430 +# define BOOST_PP_SEQ_SIZE_430(_) BOOST_PP_SEQ_SIZE_431 +# define BOOST_PP_SEQ_SIZE_431(_) BOOST_PP_SEQ_SIZE_432 +# define BOOST_PP_SEQ_SIZE_432(_) BOOST_PP_SEQ_SIZE_433 +# define BOOST_PP_SEQ_SIZE_433(_) BOOST_PP_SEQ_SIZE_434 +# define BOOST_PP_SEQ_SIZE_434(_) BOOST_PP_SEQ_SIZE_435 +# define BOOST_PP_SEQ_SIZE_435(_) BOOST_PP_SEQ_SIZE_436 +# define BOOST_PP_SEQ_SIZE_436(_) BOOST_PP_SEQ_SIZE_437 +# define BOOST_PP_SEQ_SIZE_437(_) BOOST_PP_SEQ_SIZE_438 +# define BOOST_PP_SEQ_SIZE_438(_) BOOST_PP_SEQ_SIZE_439 +# define BOOST_PP_SEQ_SIZE_439(_) BOOST_PP_SEQ_SIZE_440 +# define BOOST_PP_SEQ_SIZE_440(_) BOOST_PP_SEQ_SIZE_441 +# define BOOST_PP_SEQ_SIZE_441(_) BOOST_PP_SEQ_SIZE_442 +# define BOOST_PP_SEQ_SIZE_442(_) BOOST_PP_SEQ_SIZE_443 +# define BOOST_PP_SEQ_SIZE_443(_) BOOST_PP_SEQ_SIZE_444 +# define BOOST_PP_SEQ_SIZE_444(_) BOOST_PP_SEQ_SIZE_445 +# define BOOST_PP_SEQ_SIZE_445(_) BOOST_PP_SEQ_SIZE_446 +# define BOOST_PP_SEQ_SIZE_446(_) BOOST_PP_SEQ_SIZE_447 +# define BOOST_PP_SEQ_SIZE_447(_) BOOST_PP_SEQ_SIZE_448 +# define BOOST_PP_SEQ_SIZE_448(_) BOOST_PP_SEQ_SIZE_449 +# define BOOST_PP_SEQ_SIZE_449(_) BOOST_PP_SEQ_SIZE_450 +# define BOOST_PP_SEQ_SIZE_450(_) BOOST_PP_SEQ_SIZE_451 +# define BOOST_PP_SEQ_SIZE_451(_) BOOST_PP_SEQ_SIZE_452 +# define BOOST_PP_SEQ_SIZE_452(_) BOOST_PP_SEQ_SIZE_453 +# define BOOST_PP_SEQ_SIZE_453(_) BOOST_PP_SEQ_SIZE_454 +# define BOOST_PP_SEQ_SIZE_454(_) BOOST_PP_SEQ_SIZE_455 +# define BOOST_PP_SEQ_SIZE_455(_) BOOST_PP_SEQ_SIZE_456 +# define BOOST_PP_SEQ_SIZE_456(_) BOOST_PP_SEQ_SIZE_457 +# define BOOST_PP_SEQ_SIZE_457(_) BOOST_PP_SEQ_SIZE_458 +# define BOOST_PP_SEQ_SIZE_458(_) BOOST_PP_SEQ_SIZE_459 +# define BOOST_PP_SEQ_SIZE_459(_) BOOST_PP_SEQ_SIZE_460 +# define BOOST_PP_SEQ_SIZE_460(_) BOOST_PP_SEQ_SIZE_461 +# define BOOST_PP_SEQ_SIZE_461(_) BOOST_PP_SEQ_SIZE_462 +# define BOOST_PP_SEQ_SIZE_462(_) BOOST_PP_SEQ_SIZE_463 +# define BOOST_PP_SEQ_SIZE_463(_) BOOST_PP_SEQ_SIZE_464 +# define BOOST_PP_SEQ_SIZE_464(_) BOOST_PP_SEQ_SIZE_465 +# define BOOST_PP_SEQ_SIZE_465(_) BOOST_PP_SEQ_SIZE_466 +# define BOOST_PP_SEQ_SIZE_466(_) BOOST_PP_SEQ_SIZE_467 +# define BOOST_PP_SEQ_SIZE_467(_) BOOST_PP_SEQ_SIZE_468 +# define BOOST_PP_SEQ_SIZE_468(_) BOOST_PP_SEQ_SIZE_469 +# define BOOST_PP_SEQ_SIZE_469(_) BOOST_PP_SEQ_SIZE_470 +# define BOOST_PP_SEQ_SIZE_470(_) BOOST_PP_SEQ_SIZE_471 +# define BOOST_PP_SEQ_SIZE_471(_) BOOST_PP_SEQ_SIZE_472 +# define BOOST_PP_SEQ_SIZE_472(_) BOOST_PP_SEQ_SIZE_473 +# define BOOST_PP_SEQ_SIZE_473(_) BOOST_PP_SEQ_SIZE_474 +# define BOOST_PP_SEQ_SIZE_474(_) BOOST_PP_SEQ_SIZE_475 +# define BOOST_PP_SEQ_SIZE_475(_) BOOST_PP_SEQ_SIZE_476 +# define BOOST_PP_SEQ_SIZE_476(_) BOOST_PP_SEQ_SIZE_477 +# define BOOST_PP_SEQ_SIZE_477(_) BOOST_PP_SEQ_SIZE_478 +# define BOOST_PP_SEQ_SIZE_478(_) BOOST_PP_SEQ_SIZE_479 +# define BOOST_PP_SEQ_SIZE_479(_) BOOST_PP_SEQ_SIZE_480 +# define BOOST_PP_SEQ_SIZE_480(_) BOOST_PP_SEQ_SIZE_481 +# define BOOST_PP_SEQ_SIZE_481(_) BOOST_PP_SEQ_SIZE_482 +# define BOOST_PP_SEQ_SIZE_482(_) BOOST_PP_SEQ_SIZE_483 +# define BOOST_PP_SEQ_SIZE_483(_) BOOST_PP_SEQ_SIZE_484 +# define BOOST_PP_SEQ_SIZE_484(_) BOOST_PP_SEQ_SIZE_485 +# define BOOST_PP_SEQ_SIZE_485(_) BOOST_PP_SEQ_SIZE_486 +# define BOOST_PP_SEQ_SIZE_486(_) BOOST_PP_SEQ_SIZE_487 +# define BOOST_PP_SEQ_SIZE_487(_) BOOST_PP_SEQ_SIZE_488 +# define BOOST_PP_SEQ_SIZE_488(_) BOOST_PP_SEQ_SIZE_489 +# define BOOST_PP_SEQ_SIZE_489(_) BOOST_PP_SEQ_SIZE_490 +# define BOOST_PP_SEQ_SIZE_490(_) BOOST_PP_SEQ_SIZE_491 +# define BOOST_PP_SEQ_SIZE_491(_) BOOST_PP_SEQ_SIZE_492 +# define BOOST_PP_SEQ_SIZE_492(_) BOOST_PP_SEQ_SIZE_493 +# define BOOST_PP_SEQ_SIZE_493(_) BOOST_PP_SEQ_SIZE_494 +# define BOOST_PP_SEQ_SIZE_494(_) BOOST_PP_SEQ_SIZE_495 +# define BOOST_PP_SEQ_SIZE_495(_) BOOST_PP_SEQ_SIZE_496 +# define BOOST_PP_SEQ_SIZE_496(_) BOOST_PP_SEQ_SIZE_497 +# define BOOST_PP_SEQ_SIZE_497(_) BOOST_PP_SEQ_SIZE_498 +# define BOOST_PP_SEQ_SIZE_498(_) BOOST_PP_SEQ_SIZE_499 +# define BOOST_PP_SEQ_SIZE_499(_) BOOST_PP_SEQ_SIZE_500 +# define BOOST_PP_SEQ_SIZE_500(_) BOOST_PP_SEQ_SIZE_501 +# define BOOST_PP_SEQ_SIZE_501(_) BOOST_PP_SEQ_SIZE_502 +# define BOOST_PP_SEQ_SIZE_502(_) BOOST_PP_SEQ_SIZE_503 +# define BOOST_PP_SEQ_SIZE_503(_) BOOST_PP_SEQ_SIZE_504 +# define BOOST_PP_SEQ_SIZE_504(_) BOOST_PP_SEQ_SIZE_505 +# define BOOST_PP_SEQ_SIZE_505(_) BOOST_PP_SEQ_SIZE_506 +# define BOOST_PP_SEQ_SIZE_506(_) BOOST_PP_SEQ_SIZE_507 +# define BOOST_PP_SEQ_SIZE_507(_) BOOST_PP_SEQ_SIZE_508 +# define BOOST_PP_SEQ_SIZE_508(_) BOOST_PP_SEQ_SIZE_509 +# define BOOST_PP_SEQ_SIZE_509(_) BOOST_PP_SEQ_SIZE_510 +# define BOOST_PP_SEQ_SIZE_510(_) BOOST_PP_SEQ_SIZE_511 +# define BOOST_PP_SEQ_SIZE_511(_) BOOST_PP_SEQ_SIZE_512 +# define BOOST_PP_SEQ_SIZE_512(_) BOOST_PP_SEQ_SIZE_513 +# +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_258 258 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_259 259 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_260 260 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_261 261 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_262 262 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_263 263 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_264 264 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_265 265 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_266 266 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_267 267 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_268 268 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_269 269 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_270 270 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_271 271 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_272 272 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_273 273 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_274 274 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_275 275 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_276 276 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_277 277 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_278 278 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_279 279 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_280 280 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_281 281 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_282 282 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_283 283 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_284 284 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_285 285 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_286 286 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_287 287 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_288 288 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_289 289 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_290 290 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_291 291 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_292 292 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_293 293 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_294 294 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_295 295 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_296 296 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_297 297 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_298 298 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_299 299 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_300 300 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_301 301 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_302 302 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_303 303 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_304 304 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_305 305 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_306 306 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_307 307 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_308 308 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_309 309 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_310 310 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_311 311 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_312 312 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_313 313 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_314 314 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_315 315 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_316 316 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_317 317 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_318 318 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_319 319 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_320 320 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_321 321 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_322 322 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_323 323 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_324 324 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_325 325 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_326 326 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_327 327 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_328 328 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_329 329 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_330 330 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_331 331 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_332 332 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_333 333 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_334 334 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_335 335 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_336 336 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_337 337 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_338 338 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_339 339 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_340 340 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_341 341 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_342 342 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_343 343 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_344 344 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_345 345 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_346 346 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_347 347 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_348 348 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_349 349 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_350 350 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_351 351 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_352 352 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_353 353 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_354 354 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_355 355 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_356 356 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_357 357 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_358 358 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_359 359 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_360 360 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_361 361 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_362 362 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_363 363 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_364 364 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_365 365 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_366 366 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_367 367 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_368 368 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_369 369 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_370 370 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_371 371 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_372 372 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_373 373 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_374 374 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_375 375 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_376 376 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_377 377 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_378 378 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_379 379 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_380 380 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_381 381 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_382 382 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_383 383 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_384 384 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_385 385 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_386 386 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_387 387 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_388 388 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_389 389 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_390 390 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_391 391 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_392 392 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_393 393 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_394 394 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_395 395 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_396 396 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_397 397 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_398 398 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_399 399 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_400 400 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_401 401 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_402 402 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_403 403 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_404 404 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_405 405 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_406 406 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_407 407 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_408 408 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_409 409 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_410 410 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_411 411 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_412 412 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_413 413 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_414 414 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_415 415 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_416 416 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_417 417 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_418 418 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_419 419 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_420 420 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_421 421 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_422 422 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_423 423 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_424 424 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_425 425 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_426 426 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_427 427 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_428 428 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_429 429 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_430 430 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_431 431 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_432 432 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_433 433 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_434 434 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_435 435 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_436 436 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_437 437 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_438 438 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_439 439 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_440 440 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_441 441 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_442 442 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_443 443 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_444 444 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_445 445 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_446 446 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_447 447 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_448 448 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_449 449 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_450 450 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_451 451 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_452 452 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_453 453 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_454 454 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_455 455 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_456 456 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_457 457 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_458 458 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_459 459 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_460 460 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_461 461 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_462 462 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_463 463 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_464 464 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_465 465 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_466 466 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_467 467 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_468 468 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_469 469 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_470 470 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_471 471 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_472 472 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_473 473 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_474 474 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_475 475 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_476 476 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_477 477 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_478 478 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_479 479 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_480 480 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_481 481 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_482 482 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_483 483 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_484 484 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_485 485 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_486 486 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_487 487 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_488 488 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_489 489 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_490 490 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_491 491 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_492 492 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_493 493 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_494 494 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_495 495 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_496 496 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_497 497 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_498 498 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_499 499 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_500 500 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_501 501 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_502 502 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_503 503 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_504 504 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_505 505 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_506 506 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_507 507 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_508 508 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_509 509 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_510 510 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_511 511 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_512 512 +# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_513 513 +# +# endif diff --git a/src/boost/boost/preprocessor/seq/rest_n.hpp b/src/boost/boost/preprocessor/seq/rest_n.hpp index d538e438f..42813e03a 100644 --- a/src/boost/boost/preprocessor/seq/rest_n.hpp +++ b/src/boost/boost/preprocessor/seq/rest_n.hpp @@ -15,7 +15,7 @@ # include # include # include -# include +# include # include # include # include @@ -31,16 +31,22 @@ # define BOOST_PP_SEQ_REST_N_I(n, seq) BOOST_PP_SEQ_REST_N_DETAIL_EXEC(n, seq, BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq)) # endif # +# define BOOST_PP_SEQ_REST_N_DETAIL_EXEC_NO_MATCH(n, seq) +# define BOOST_PP_SEQ_REST_N_DETAIL_EXEC_MATCH(n, seq) \ + BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), BOOST_PP_IDENTITY( (nil) seq )))() \ +/**/ # define BOOST_PP_SEQ_REST_N_DETAIL_EXEC(n, seq, size) \ - BOOST_PP_EXPR_IIF \ - ( \ - BOOST_PP_BITAND \ - ( \ - BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size), \ - BOOST_PP_NOT_EQUAL(n,size) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), BOOST_PP_IDENTITY( (nil) seq )))() \ - ) \ + BOOST_PP_IIF \ + ( \ + BOOST_PP_BITAND \ + ( \ + BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size), \ + BOOST_PP_NOT_EQUAL(n,size) \ + ), \ + BOOST_PP_SEQ_REST_N_DETAIL_EXEC_MATCH, \ + BOOST_PP_SEQ_REST_N_DETAIL_EXEC_NO_MATCH \ + ) \ + (n, seq) \ /**/ # # endif diff --git a/src/boost/boost/preprocessor/seq/size.hpp b/src/boost/boost/preprocessor/seq/size.hpp index c45dced36..fadd56230 100644 --- a/src/boost/boost/preprocessor/seq/size.hpp +++ b/src/boost/boost/preprocessor/seq/size.hpp @@ -7,6 +7,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # ifndef BOOST_PREPROCESSOR_SEQ_SIZE_HPP @@ -28,6 +30,8 @@ # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq) # endif # +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# # define BOOST_PP_SEQ_SIZE_0(_) BOOST_PP_SEQ_SIZE_1 # define BOOST_PP_SEQ_SIZE_1(_) BOOST_PP_SEQ_SIZE_2 # define BOOST_PP_SEQ_SIZE_2(_) BOOST_PP_SEQ_SIZE_3 @@ -545,4 +549,23 @@ # define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_256 256 # define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_257 257 # +# else +# +# include +# +# if BOOST_PP_LIMIT_SEQ == 256 +# include +# elif BOOST_PP_LIMIT_SEQ == 512 +# include +# include +# elif BOOST_PP_LIMIT_SEQ == 1024 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_SEQ limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/stringize.hpp b/src/boost/boost/preprocessor/stringize.hpp index 2005891ae..af37fdb42 100644 --- a/src/boost/boost/preprocessor/stringize.hpp +++ b/src/boost/boost/preprocessor/stringize.hpp @@ -28,10 +28,6 @@ # define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_I(text) # endif # -#if BOOST_PP_VARIADICS # define BOOST_PP_STRINGIZE_I(...) #__VA_ARGS__ -#else -# define BOOST_PP_STRINGIZE_I(text) #text -#endif # # endif diff --git a/src/boost/boost/preprocessor/tuple/detail/is_single_return.hpp b/src/boost/boost/preprocessor/tuple/detail/is_single_return.hpp index dfc5af640..d8e0d2e7e 100644 --- a/src/boost/boost/preprocessor/tuple/detail/is_single_return.hpp +++ b/src/boost/boost/preprocessor/tuple/detail/is_single_return.hpp @@ -16,13 +16,13 @@ # # /* BOOST_PP_TUPLE_IS_SINGLE_RETURN */ # -# if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC +# if BOOST_PP_VARIADICS_MSVC # include # include # include -# define BOOST_PP_TUPLE_IS_SINGLE_RETURN(sr,nsr,tuple) \ - BOOST_PP_IIF(BOOST_PP_IS_1(BOOST_PP_TUPLE_SIZE(tuple)),sr,nsr) \ - /**/ -# endif /* BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC */ +# define BOOST_PP_TUPLE_IS_SINGLE_RETURN(sr,nsr,tuple) \ + BOOST_PP_IIF(BOOST_PP_IS_1(BOOST_PP_TUPLE_SIZE(tuple)),sr,nsr) \ + /**/ +# endif /* BOOST_PP_VARIADICS_MSVC */ # # endif /* BOOST_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP */ diff --git a/src/boost/boost/preprocessor/tuple/eat.hpp b/src/boost/boost/preprocessor/tuple/eat.hpp index 944783328..9e7c58e94 100644 --- a/src/boost/boost/preprocessor/tuple/eat.hpp +++ b/src/boost/boost/preprocessor/tuple/eat.hpp @@ -8,7 +8,7 @@ # */ # # /* Revised by Paul Mensonides (2002-2011) */ -# /* Revised by Edward Diener (2011,2015) */ +# /* Revised by Edward Diener (2011,2015,2020) */ # # /* See http://www.boost.org for most recent version. */ # @@ -19,25 +19,11 @@ # # /* BOOST_PP_EAT */ # -# if BOOST_PP_VARIADICS -# define BOOST_PP_EAT(...) -# else -# define BOOST_PP_EAT(x) -# endif +# define BOOST_PP_EAT(...) # # /* BOOST_PP_TUPLE_EAT */ # -# if BOOST_PP_VARIADICS -# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_EAT -# else -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() -# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_I(size) -# else -# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_OO((size)) -# define BOOST_PP_TUPLE_EAT_OO(par) BOOST_PP_TUPLE_EAT_I ## par -# endif -# define BOOST_PP_TUPLE_EAT_I(size) BOOST_PP_TUPLE_EAT_ ## size -# endif +# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_EAT # # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() # define BOOST_PP_TUPLE_EAT_N(size) BOOST_PP_TUPLE_EAT_N_I(size) @@ -45,7 +31,7 @@ # define BOOST_PP_TUPLE_EAT_N(size) BOOST_PP_TUPLE_EAT_N_OO((size)) # define BOOST_PP_TUPLE_EAT_N_OO(par) BOOST_PP_TUPLE_EAT_N_I ## par # endif -# define BOOST_PP_TUPLE_EAT_N_I(size) BOOST_PP_TUPLE_EAT_ ## size +# define BOOST_PP_TUPLE_EAT_N_I(size) BOOST_PP_EAT # # define BOOST_PP_TUPLE_EAT_1(e0) # define BOOST_PP_TUPLE_EAT_2(e0, e1) diff --git a/src/boost/boost/preprocessor/tuple/elem.hpp b/src/boost/boost/preprocessor/tuple/elem.hpp index 0e7c59270..aafc46c1d 100644 --- a/src/boost/boost/preprocessor/tuple/elem.hpp +++ b/src/boost/boost/preprocessor/tuple/elem.hpp @@ -8,7 +8,7 @@ # */ # # /* Revised by Paul Mensonides (2002-2011) */ -# /* Revised by Edward Diener (2011,2014) */ +# /* Revised by Edward Diener (2011,2014,2020) */ # # /* See http://www.boost.org for most recent version. */ # @@ -23,169 +23,23 @@ # include # include # -# if BOOST_PP_VARIADICS -# if BOOST_PP_VARIADICS_MSVC -# define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__), (__VA_ARGS__)) -# define BOOST_PP_TUPLE_ELEM_I(m, args) BOOST_PP_TUPLE_ELEM_II(m, args) -# define BOOST_PP_TUPLE_ELEM_II(m, args) BOOST_PP_CAT(m ## args,) +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__), (__VA_ARGS__)) +# define BOOST_PP_TUPLE_ELEM_I(m, args) BOOST_PP_TUPLE_ELEM_II(m, args) +# define BOOST_PP_TUPLE_ELEM_II(m, args) BOOST_PP_CAT(m ## args,) /* Use BOOST_PP_REM_CAT if it is a single element tuple ( which might be empty ) else use BOOST_PP_REM. This fixes a VC++ problem with an empty tuple and BOOST_PP_TUPLE_ELEM functionality. See tuple_elem_bug_test.cxx. */ -# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) \ - BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_EXPAND(BOOST_PP_TUPLE_IS_SINGLE_RETURN(BOOST_PP_REM_CAT,BOOST_PP_REM,tuple) tuple)) \ - /**/ -# else -# define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__)(__VA_ARGS__) -# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_REM tuple) -# endif -# define BOOST_PP_TUPLE_ELEM_O_3(size, n, tuple) BOOST_PP_TUPLE_ELEM_O_2(n, tuple) +# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) \ + BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_EXPAND(BOOST_PP_TUPLE_IS_SINGLE_RETURN(BOOST_PP_REM_CAT,BOOST_PP_REM,tuple) tuple)) \ + /**/ # else -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() -# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_, n), BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_E_, size), tuple)) -# define BOOST_PP_TUPLE_ELEM_I(m, args) BOOST_PP_TUPLE_ELEM_II(m, args) -# define BOOST_PP_TUPLE_ELEM_II(m, args) BOOST_PP_CAT(m ## args,) -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() -# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I_OO((size, n, tuple)) -# define BOOST_PP_TUPLE_ELEM_I_OO(par) BOOST_PP_TUPLE_ELEM_I ## par -# define BOOST_PP_TUPLE_ELEM_I(size, n, tuple) BOOST_PP_TUPLE_ELEM_II((n, BOOST_PP_TUPLE_ELEM_E_ ## size ## tuple)) -# define BOOST_PP_TUPLE_ELEM_II(par) BOOST_PP_TUPLE_ELEM_III_OO(par) -# define BOOST_PP_TUPLE_ELEM_III_OO(par) BOOST_PP_TUPLE_ELEM_III ## par -# define BOOST_PP_TUPLE_ELEM_III(n, etuple) BOOST_PP_TUPLE_ELEM_ ## n ## etuple -# else -# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_, n) BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_E_, size) tuple) -# define BOOST_PP_TUPLE_ELEM_I(x) x -# endif -# define BOOST_PP_TUPLE_ELEM_E_1(e0) (e0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_2(e0, e1) (e0, e1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_3(e0, e1, e2) (e0, e1, e2, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_4(e0, e1, e2, e3) (e0, e1, e2, e3, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_5(e0, e1, e2, e3, e4) (e0, e1, e2, e3, e4, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_6(e0, e1, e2, e3, e4, e5) (e0, e1, e2, e3, e4, e5, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_7(e0, e1, e2, e3, e4, e5, e6) (e0, e1, e2, e3, e4, e5, e6, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0, e1, e2, e3, e4, e5, e6, e7, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, e1, e2, e3, e4, e5, e6, e7, e8, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ?, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ?, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ?, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ?, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ?, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ?, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ?, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ?, ?) -# define BOOST_PP_TUPLE_ELEM_E_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ?) -# define BOOST_PP_TUPLE_ELEM_E_64 -# define BOOST_PP_TUPLE_ELEM_0(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e0 -# define BOOST_PP_TUPLE_ELEM_1(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e1 -# define BOOST_PP_TUPLE_ELEM_2(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e2 -# define BOOST_PP_TUPLE_ELEM_3(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e3 -# define BOOST_PP_TUPLE_ELEM_4(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e4 -# define BOOST_PP_TUPLE_ELEM_5(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e5 -# define BOOST_PP_TUPLE_ELEM_6(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e6 -# define BOOST_PP_TUPLE_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e7 -# define BOOST_PP_TUPLE_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e8 -# define BOOST_PP_TUPLE_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e9 -# define BOOST_PP_TUPLE_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e10 -# define BOOST_PP_TUPLE_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e11 -# define BOOST_PP_TUPLE_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e12 -# define BOOST_PP_TUPLE_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e13 -# define BOOST_PP_TUPLE_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e14 -# define BOOST_PP_TUPLE_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e15 -# define BOOST_PP_TUPLE_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e16 -# define BOOST_PP_TUPLE_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e17 -# define BOOST_PP_TUPLE_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e18 -# define BOOST_PP_TUPLE_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e19 -# define BOOST_PP_TUPLE_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e20 -# define BOOST_PP_TUPLE_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e21 -# define BOOST_PP_TUPLE_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e22 -# define BOOST_PP_TUPLE_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e23 -# define BOOST_PP_TUPLE_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e24 -# define BOOST_PP_TUPLE_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e25 -# define BOOST_PP_TUPLE_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e26 -# define BOOST_PP_TUPLE_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e27 -# define BOOST_PP_TUPLE_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e28 -# define BOOST_PP_TUPLE_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e29 -# define BOOST_PP_TUPLE_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e30 -# define BOOST_PP_TUPLE_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e31 -# define BOOST_PP_TUPLE_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e32 -# define BOOST_PP_TUPLE_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e33 -# define BOOST_PP_TUPLE_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e34 -# define BOOST_PP_TUPLE_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e35 -# define BOOST_PP_TUPLE_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e36 -# define BOOST_PP_TUPLE_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e37 -# define BOOST_PP_TUPLE_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e38 -# define BOOST_PP_TUPLE_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e39 -# define BOOST_PP_TUPLE_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e40 -# define BOOST_PP_TUPLE_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e41 -# define BOOST_PP_TUPLE_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e42 -# define BOOST_PP_TUPLE_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e43 -# define BOOST_PP_TUPLE_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e44 -# define BOOST_PP_TUPLE_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e45 -# define BOOST_PP_TUPLE_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e46 -# define BOOST_PP_TUPLE_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e47 -# define BOOST_PP_TUPLE_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e48 -# define BOOST_PP_TUPLE_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e49 -# define BOOST_PP_TUPLE_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e50 -# define BOOST_PP_TUPLE_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e51 -# define BOOST_PP_TUPLE_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e52 -# define BOOST_PP_TUPLE_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e53 -# define BOOST_PP_TUPLE_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e54 -# define BOOST_PP_TUPLE_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e55 -# define BOOST_PP_TUPLE_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e56 -# define BOOST_PP_TUPLE_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e57 -# define BOOST_PP_TUPLE_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e58 -# define BOOST_PP_TUPLE_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e59 -# define BOOST_PP_TUPLE_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e60 -# define BOOST_PP_TUPLE_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e61 -# define BOOST_PP_TUPLE_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e62 -# define BOOST_PP_TUPLE_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e63 +# define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__)(__VA_ARGS__) +# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_REM tuple) # endif +# define BOOST_PP_TUPLE_ELEM_O_3(size, n, tuple) BOOST_PP_TUPLE_ELEM_O_2(n, tuple) # # /* directly used elsewhere in Boost... */ # diff --git a/src/boost/boost/preprocessor/tuple/limits/to_list_128.hpp b/src/boost/boost/preprocessor/tuple/limits/to_list_128.hpp new file mode 100644 index 000000000..e07230319 --- /dev/null +++ b/src/boost/boost/preprocessor/tuple/limits/to_list_128.hpp @@ -0,0 +1,595 @@ +# /* 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-2011) */ +# /* Revised by Edward Diener (2011,2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_TUPLE_TO_LIST_128_HPP +# define BOOST_PREPROCESSOR_TUPLE_TO_LIST_128_HPP +# +# define BOOST_PP_TUPLE_TO_LIST_65( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ) +# define BOOST_PP_TUPLE_TO_LIST_66( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )) +# define BOOST_PP_TUPLE_TO_LIST_67( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))) +# define BOOST_PP_TUPLE_TO_LIST_68( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))) +# define BOOST_PP_TUPLE_TO_LIST_69( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))) +# define BOOST_PP_TUPLE_TO_LIST_70( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))) +# define BOOST_PP_TUPLE_TO_LIST_71( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))) +# define BOOST_PP_TUPLE_TO_LIST_72( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))) +# define BOOST_PP_TUPLE_TO_LIST_73( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))) +# define BOOST_PP_TUPLE_TO_LIST_74( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))) +# define BOOST_PP_TUPLE_TO_LIST_75( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_76( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_77( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_78( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_79( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_80( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_81( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_82( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_83( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_84( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_85( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_86( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_87( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_88( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_89( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_90( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_91( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_92( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_93( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_94( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_95( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_96( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_97( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_98( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_99( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_100( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_101( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_102( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_103( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_104( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_105( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_106( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_107( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_108( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_109( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_110( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_111( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_112( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_113( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_114( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_115( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_116( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_117( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_118( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_119( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_120( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_121( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_122( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_123( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_124( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_125( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_126( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_127( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_128( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# +# endif diff --git a/src/boost/boost/preprocessor/tuple/limits/to_list_256.hpp b/src/boost/boost/preprocessor/tuple/limits/to_list_256.hpp new file mode 100644 index 000000000..967e862d5 --- /dev/null +++ b/src/boost/boost/preprocessor/tuple/limits/to_list_256.hpp @@ -0,0 +1,1747 @@ +# /* 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-2011) */ +# /* Revised by Edward Diener (2011,2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_TUPLE_TO_LIST_256_HPP +# define BOOST_PREPROCESSOR_TUPLE_TO_LIST_256_HPP +# +# define BOOST_PP_TUPLE_TO_LIST_129( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ) +# define BOOST_PP_TUPLE_TO_LIST_130( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )) +# define BOOST_PP_TUPLE_TO_LIST_131( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))) +# define BOOST_PP_TUPLE_TO_LIST_132( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))) +# define BOOST_PP_TUPLE_TO_LIST_133( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))) +# define BOOST_PP_TUPLE_TO_LIST_134( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))) +# define BOOST_PP_TUPLE_TO_LIST_135( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))) +# define BOOST_PP_TUPLE_TO_LIST_136( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))) +# define BOOST_PP_TUPLE_TO_LIST_137( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))) +# define BOOST_PP_TUPLE_TO_LIST_138( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))) +# define BOOST_PP_TUPLE_TO_LIST_139( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_140( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_141( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_142( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_143( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_144( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_145( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_146( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_147( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_148( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_149( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_150( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_151( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_152( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_153( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_154( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_155( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_156( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_157( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_158( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_159( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_160( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_161( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_162( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_163( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_164( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_165( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_166( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_167( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_168( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_169( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_170( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_171( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_172( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_173( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_174( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_175( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_176( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_177( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_178( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_179( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_180( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_181( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_182( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_183( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_184( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_185( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_186( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_187( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_188( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_189( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_190( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_191( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_192( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_193( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ) +# define BOOST_PP_TUPLE_TO_LIST_194( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )) +# define BOOST_PP_TUPLE_TO_LIST_195( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))) +# define BOOST_PP_TUPLE_TO_LIST_196( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))) +# define BOOST_PP_TUPLE_TO_LIST_197( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))) +# define BOOST_PP_TUPLE_TO_LIST_198( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))) +# define BOOST_PP_TUPLE_TO_LIST_199( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))) +# define BOOST_PP_TUPLE_TO_LIST_200( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))) +# define BOOST_PP_TUPLE_TO_LIST_201( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))) +# define BOOST_PP_TUPLE_TO_LIST_202( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))) +# define BOOST_PP_TUPLE_TO_LIST_203( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_204( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_205( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_206( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_207( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_208( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_209( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_210( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_211( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_212( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_213( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_214( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_215( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_216( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_217( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_218( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_219( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_220( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_221( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_222( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_223( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_224( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_225( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_226( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_227( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_228( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_229( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_230( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_231( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_232( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_233( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_234( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_235( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_236( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_237( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_238( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_239( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_240( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_241( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_242( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_243( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_244( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_245( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_246( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_247( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, ( e246, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_248( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, ( e246, ( e247, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_249( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, ( e246, ( e247, ( e248, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_250( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, ( e246, ( e247, ( e248, ( e249, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_251( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, ( e246, ( e247, ( e248, ( e249, ( e250, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_252( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, ( e246, ( e247, ( e248, ( e249, ( e250, ( e251, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_253( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251, e252 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, ( e246, ( e247, ( e248, ( e249, ( e250, ( e251, ( e252, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_254( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251, e252, e253 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, ( e246, ( e247, ( e248, ( e249, ( e250, ( e251, ( e252, ( e253, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_255( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251, e252, e253, e254 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, ( e246, ( e247, ( e248, ( e249, ( e250, ( e251, ( e252, ( e253, ( e254, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_256( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251, e252, e253, e254, e255 ) \ + ( \ + e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, \ + ( e64, ( e65, ( e66, ( e67, ( e68, ( e69, ( e70, ( e71, ( e72, ( e73, ( e74, ( e75, ( e76, ( e77, ( e78, ( e79, ( e80, ( e81, ( e82, ( e83, ( e84, ( e85, ( e86, ( e87, ( e88, ( e89, ( e90, ( e91, ( e92, ( e93, ( e94, ( e95, ( e96, ( e97, ( e98, ( e99, ( e100, ( e101, ( e102, ( e103, ( e104, ( e105, ( e106, ( e107, ( e108, ( e109, ( e110, ( e111, ( e112, ( e113, ( e114, ( e115, ( e116, ( e117, ( e118, ( e119, ( e120, ( e121, ( e122, ( e123, ( e124, ( e125, ( e126, ( e127, \ + ( e128, ( e129, ( e130, ( e131, ( e132, ( e133, ( e134, ( e135, ( e136, ( e137, ( e138, ( e139, ( e140, ( e141, ( e142, ( e143, ( e144, ( e145, ( e146, ( e147, ( e148, ( e149, ( e150, ( e151, ( e152, ( e153, ( e154, ( e155, ( e156, ( e157, ( e158, ( e159, ( e160, ( e161, ( e162, ( e163, ( e164, ( e165, ( e166, ( e167, ( e168, ( e169, ( e170, ( e171, ( e172, ( e173, ( e174, ( e175, ( e176, ( e177, ( e178, ( e179, ( e180, ( e181, ( e182, ( e183, ( e184, ( e185, ( e186, ( e187, ( e188, ( e189, ( e190, ( e191, \ + ( e192, ( e193, ( e194, ( e195, ( e196, ( e197, ( e198, ( e199, ( e200, ( e201, ( e202, ( e203, ( e204, ( e205, ( e206, ( e207, ( e208, ( e209, ( e210, ( e211, ( e212, ( e213, ( e214, ( e215, ( e216, ( e217, ( e218, ( e219, ( e220, ( e221, ( e222, ( e223, ( e224, ( e225, ( e226, ( e227, ( e228, ( e229, ( e230, ( e231, ( e232, ( e233, ( e234, ( e235, ( e236, ( e237, ( e238, ( e239, ( e240, ( e241, ( e242, ( e243, ( e244, ( e245, ( e246, ( e247, ( e248, ( e249, ( e250, ( e251, ( e252, ( e253, ( e254, ( e255, \ + BOOST_PP_NIL \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) \ + )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# +# endif diff --git a/src/boost/boost/preprocessor/tuple/limits/to_list_64.hpp b/src/boost/boost/preprocessor/tuple/limits/to_list_64.hpp new file mode 100644 index 000000000..2310d7eca --- /dev/null +++ b/src/boost/boost/preprocessor/tuple/limits/to_list_64.hpp @@ -0,0 +1,83 @@ +# /* 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-2011) */ +# /* Revised by Edward Diener (2011) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_TUPLE_TO_LIST_64_HPP +# define BOOST_PREPROCESSOR_TUPLE_TO_LIST_64_HPP +# +# define BOOST_PP_TUPLE_TO_LIST_1(e0) (e0, BOOST_PP_NIL) +# define BOOST_PP_TUPLE_TO_LIST_2(e0, e1) (e0, (e1, BOOST_PP_NIL)) +# define BOOST_PP_TUPLE_TO_LIST_3(e0, e1, e2) (e0, (e1, (e2, BOOST_PP_NIL))) +# define BOOST_PP_TUPLE_TO_LIST_4(e0, e1, e2, e3) (e0, (e1, (e2, (e3, BOOST_PP_NIL)))) +# define BOOST_PP_TUPLE_TO_LIST_5(e0, e1, e2, e3, e4) (e0, (e1, (e2, (e3, (e4, BOOST_PP_NIL))))) +# define BOOST_PP_TUPLE_TO_LIST_6(e0, e1, e2, e3, e4, e5) (e0, (e1, (e2, (e3, (e4, (e5, BOOST_PP_NIL)))))) +# define BOOST_PP_TUPLE_TO_LIST_7(e0, e1, e2, e3, e4, e5, e6) (e0, (e1, (e2, (e3, (e4, (e5, (e6, BOOST_PP_NIL))))))) +# define BOOST_PP_TUPLE_TO_LIST_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, BOOST_PP_NIL)))))))) +# define BOOST_PP_TUPLE_TO_LIST_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, BOOST_PP_NIL))))))))) +# define BOOST_PP_TUPLE_TO_LIST_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, BOOST_PP_NIL)))))))))) +# define BOOST_PP_TUPLE_TO_LIST_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, BOOST_PP_NIL))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, BOOST_PP_NIL)))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, BOOST_PP_NIL))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, BOOST_PP_NIL)))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, BOOST_PP_NIL))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, BOOST_PP_NIL)))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, BOOST_PP_NIL))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, BOOST_PP_NIL)))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, BOOST_PP_NIL))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, BOOST_PP_NIL)))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, BOOST_PP_NIL))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, BOOST_PP_NIL)))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, BOOST_PP_NIL))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, BOOST_PP_NIL)))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, BOOST_PP_NIL))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, BOOST_PP_NIL)))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, BOOST_PP_NIL))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, BOOST_PP_NIL)))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, BOOST_PP_NIL))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, BOOST_PP_NIL)))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, BOOST_PP_NIL))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, BOOST_PP_NIL)))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, BOOST_PP_NIL))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, BOOST_PP_NIL)))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, BOOST_PP_NIL))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# define BOOST_PP_TUPLE_TO_LIST_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +# +# endif diff --git a/src/boost/boost/preprocessor/tuple/rem.hpp b/src/boost/boost/preprocessor/tuple/rem.hpp index d1e686530..bd8d23bd8 100644 --- a/src/boost/boost/preprocessor/tuple/rem.hpp +++ b/src/boost/boost/preprocessor/tuple/rem.hpp @@ -8,6 +8,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # ifndef BOOST_PREPROCESSOR_TUPLE_REM_HPP @@ -21,36 +23,28 @@ # # /* BOOST_PP_REM */ # -# if BOOST_PP_VARIADICS -# if BOOST_PP_VARIADICS_MSVC - /* To be used internally when __VA_ARGS__ could be empty ( or is a single element ) */ -# define BOOST_PP_REM_CAT(...) BOOST_PP_CAT(__VA_ARGS__,) -# endif -# define BOOST_PP_REM(...) __VA_ARGS__ -# else -# define BOOST_PP_REM(x) x +# if BOOST_PP_VARIADICS_MSVC + /* To be used internally when __VA_ARGS__ could be empty ( or is a single element ) */ +# define BOOST_PP_REM_CAT(...) BOOST_PP_CAT(__VA_ARGS__,) # endif +# define BOOST_PP_REM(...) __VA_ARGS__ # # /* BOOST_PP_TUPLE_REM */ # /* VC++8.0 cannot handle the variadic version of BOOST_PP_TUPLE_REM(size) */ -# if BOOST_PP_VARIADICS && !(BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400) -# if BOOST_PP_VARIADICS_MSVC - /* To be used internally when the size could be 0 ( or 1 ) */ -# define BOOST_PP_TUPLE_REM_CAT(size) BOOST_PP_REM_CAT -# endif +# if !(BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400) +# if BOOST_PP_VARIADICS_MSVC + /* To be used internally when the size could be 0 ( or 1 ) */ +# define BOOST_PP_TUPLE_REM_CAT(size) BOOST_PP_REM_CAT +# endif # define BOOST_PP_TUPLE_REM(size) BOOST_PP_REM # else -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() -# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_I(size) -# else -# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_OO((size)) -# define BOOST_PP_TUPLE_REM_OO(par) BOOST_PP_TUPLE_REM_I ## par -# endif +# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_I(size) # define BOOST_PP_TUPLE_REM_I(size) BOOST_PP_TUPLE_REM_ ## size # endif +# # define BOOST_PP_TUPLE_REM_0() # define BOOST_PP_TUPLE_REM_1(e0) e0 # define BOOST_PP_TUPLE_REM_2(e0, e1) e0, e1 @@ -119,31 +113,15 @@ # # /* BOOST_PP_TUPLE_REM_CTOR */ # -# if BOOST_PP_VARIADICS -# if BOOST_PP_VARIADICS_MSVC -# define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__), (__VA_ARGS__)) -# define BOOST_PP_TUPLE_REM_CTOR_I(m, args) BOOST_PP_TUPLE_REM_CTOR_II(m, args) -# define BOOST_PP_TUPLE_REM_CTOR_II(m, args) BOOST_PP_CAT(m ## args,) -# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_EXPAND(BOOST_PP_TUPLE_IS_SINGLE_RETURN(BOOST_PP_REM_CAT,BOOST_PP_REM,tuple) tuple) -# else -# define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__)(__VA_ARGS__) -# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_REM tuple -# endif -# define BOOST_PP_TUPLE_REM_CTOR_O_2(size, tuple) BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__), (__VA_ARGS__)) +# define BOOST_PP_TUPLE_REM_CTOR_I(m, args) BOOST_PP_TUPLE_REM_CTOR_II(m, args) +# define BOOST_PP_TUPLE_REM_CTOR_II(m, args) BOOST_PP_CAT(m ## args,) +# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_EXPAND(BOOST_PP_TUPLE_IS_SINGLE_RETURN(BOOST_PP_REM_CAT,BOOST_PP_REM,tuple) tuple) # else -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() -# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple) -# else -# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_D(size, tuple) -# define BOOST_PP_TUPLE_REM_CTOR_D(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple) -# endif -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() -# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) ext tuple -# else -# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) BOOST_PP_TUPLE_REM_CTOR_OO((ext, tuple)) -# define BOOST_PP_TUPLE_REM_CTOR_OO(par) BOOST_PP_TUPLE_REM_CTOR_II ## par -# define BOOST_PP_TUPLE_REM_CTOR_II(ext, tuple) ext ## tuple -# endif +# define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__)(__VA_ARGS__) +# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_REM tuple # endif +# define BOOST_PP_TUPLE_REM_CTOR_O_2(size, tuple) BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) # # endif diff --git a/src/boost/boost/preprocessor/tuple/size.hpp b/src/boost/boost/preprocessor/tuple/size.hpp index 1874be071..37f6541bd 100644 --- a/src/boost/boost/preprocessor/tuple/size.hpp +++ b/src/boost/boost/preprocessor/tuple/size.hpp @@ -15,14 +15,21 @@ # # include # include +# include +# include # include # -# if BOOST_PP_VARIADICS -# if BOOST_PP_VARIADICS_MSVC -# define BOOST_PP_TUPLE_SIZE(tuple) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE tuple,) -# else -# define BOOST_PP_TUPLE_SIZE(tuple) BOOST_PP_VARIADIC_SIZE tuple -# endif +# if BOOST_PP_VARIADIC_HAS_OPT() +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_TUPLE_SIZE(tuple) BOOST_PP_TUPLE_SIZE_CHECK(BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE tuple,)) +# else +# define BOOST_PP_TUPLE_SIZE(tuple) BOOST_PP_TUPLE_SIZE_CHECK(BOOST_PP_VARIADIC_SIZE tuple) +# endif +# define BOOST_PP_TUPLE_SIZE_CHECK(size) BOOST_PP_IF(size,size,1) +# elif BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_TUPLE_SIZE(tuple) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE tuple,) +# else +# define BOOST_PP_TUPLE_SIZE(tuple) BOOST_PP_VARIADIC_SIZE tuple # endif # # endif diff --git a/src/boost/boost/preprocessor/tuple/to_list.hpp b/src/boost/boost/preprocessor/tuple/to_list.hpp index aff96f406..8374a8b34 100644 --- a/src/boost/boost/preprocessor/tuple/to_list.hpp +++ b/src/boost/boost/preprocessor/tuple/to_list.hpp @@ -8,7 +8,7 @@ # */ # # /* Revised by Paul Mensonides (2002-2011) */ -# /* Revised by Edward Diener (2011) */ +# /* Revised by Edward Diener (2011,2020) */ # # /* See http://www.boost.org for most recent version. */ # @@ -17,38 +17,31 @@ # # include # include +# include # include # include # include +# include # # /* BOOST_PP_TUPLE_TO_LIST */ # -# if BOOST_PP_VARIADICS -# if BOOST_PP_VARIADICS_MSVC -# define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_TUPLE_TO_LIST_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__), (__VA_ARGS__)) -# define BOOST_PP_TUPLE_TO_LIST_I(m, args) BOOST_PP_TUPLE_TO_LIST_II(m, args) -# define BOOST_PP_TUPLE_TO_LIST_II(m, args) BOOST_PP_CAT(m ## args,) -# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_TUPLE_SIZE(tuple)) tuple -# else -# define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__)(__VA_ARGS__) -# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_VARIADIC_SIZE tuple) tuple -# endif -# define BOOST_PP_TUPLE_TO_LIST_O_2(size, tuple) BOOST_PP_TUPLE_TO_LIST_O_1(tuple) +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_TUPLE_TO_LIST_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__), (__VA_ARGS__)) +# define BOOST_PP_TUPLE_TO_LIST_I(m, args) BOOST_PP_TUPLE_TO_LIST_II(m, args) +# define BOOST_PP_TUPLE_TO_LIST_II(m, args) BOOST_PP_CAT(m ## args,) +# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_TUPLE_SIZE(tuple)) tuple # else -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() -# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_I(size, tuple) -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() -# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s t -# else -# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_II(BOOST_PP_TUPLE_TO_LIST_ ## s t) -# define BOOST_PP_TUPLE_TO_LIST_II(res) res -# endif -# else -# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_OO((size, tuple)) -# define BOOST_PP_TUPLE_TO_LIST_OO(par) BOOST_PP_TUPLE_TO_LIST_I ## par -# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s ## t -# endif +# define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__)(__VA_ARGS__) +# if BOOST_PP_VARIADIC_HAS_OPT() +# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_TUPLE_TO_LIST_O_1_SIZE(BOOST_PP_VARIADIC_SIZE tuple, tuple) +# define BOOST_PP_TUPLE_TO_LIST_O_1_SIZE(size,tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_IF(size,size,1)) tuple +# else +# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_VARIADIC_SIZE tuple) tuple +# endif # endif +# define BOOST_PP_TUPLE_TO_LIST_O_2(size, tuple) BOOST_PP_TUPLE_TO_LIST_O_1(tuple) +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() # # define BOOST_PP_TUPLE_TO_LIST_1(e0) (e0, BOOST_PP_NIL) # define BOOST_PP_TUPLE_TO_LIST_2(e0, e1) (e0, (e1, BOOST_PP_NIL)) @@ -115,4 +108,23 @@ # define BOOST_PP_TUPLE_TO_LIST_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) # define BOOST_PP_TUPLE_TO_LIST_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) # +# else +# +# include +# +# if BOOST_PP_LIMIT_TUPLE == 64 +# include +# elif BOOST_PP_LIMIT_TUPLE == 128 +# include +# include +# elif BOOST_PP_LIMIT_TUPLE == 256 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_TUPLE limit +# endif +# +# endif +# # endif diff --git a/src/boost/boost/preprocessor/variadic/detail/has_opt.hpp b/src/boost/boost/preprocessor/variadic/detail/has_opt.hpp new file mode 100644 index 000000000..547a20bc3 --- /dev/null +++ b/src/boost/boost/preprocessor/variadic/detail/has_opt.hpp @@ -0,0 +1,39 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2019. * +# * Distributed under the Boost Software License, Version 1.0. (See * +# * accompanying file LICENSE_1_0.txt or copy at * +# * http://www.boost.org/LICENSE_1_0.txt) * +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_VARIADIC_DETAIL_HAS_OPT_HPP +# define BOOST_PREPROCESSOR_VARIADIC_DETAIL_HAS_OPT_HPP +# +# include +# +# if defined(__cplusplus) && __cplusplus > 201703L +# +# if BOOST_PP_VARIADICS_MSVC +# include +# endif +# +# define BOOST_PP_VARIADIC_HAS_OPT_FUNCTION(...) \ + __VA_OPT__(,) , 1, 0 \ +/**/ +# +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_VARIADIC_HAS_OPT_ELEM0(e0, ...) BOOST_PP_CAT(BOOST_PP_VARIADIC_HAS_OPT_ELEM_0(e0,__VA_ARGS__),) +# define BOOST_PP_VARIADIC_HAS_OPT_ELEM2(e0, ...) BOOST_PP_CAT(BOOST_PP_VARIADIC_HAS_OPT_ELEM_2(e0,__VA_ARGS__),) +# else +# define BOOST_PP_VARIADIC_HAS_OPT_ELEM0(e0, ...) BOOST_PP_VARIADIC_HAS_OPT_ELEM_0(e0,__VA_ARGS__) +# define BOOST_PP_VARIADIC_HAS_OPT_ELEM2(e0, ...) BOOST_PP_VARIADIC_HAS_OPT_ELEM_2(e0,__VA_ARGS__) +# endif +# define BOOST_PP_VARIADIC_HAS_OPT_ELEM_0(e0, ...) e0 +# define BOOST_PP_VARIADIC_HAS_OPT_ELEM_2(e0, e1, e2, ...) e2 +# +# endif +# +# endif diff --git a/src/boost/boost/preprocessor/variadic/elem.hpp b/src/boost/boost/preprocessor/variadic/elem.hpp index f604c9bd0..15a8e0696 100644 --- a/src/boost/boost/preprocessor/variadic/elem.hpp +++ b/src/boost/boost/preprocessor/variadic/elem.hpp @@ -8,6 +8,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # ifndef BOOST_PREPROCESSOR_VARIADIC_ELEM_HPP @@ -18,77 +20,97 @@ # # /* BOOST_PP_VARIADIC_ELEM */ # -# if BOOST_PP_VARIADICS -# if BOOST_PP_VARIADICS_MSVC -# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_VARIADIC_ELEM_I(n,__VA_ARGS__) -# define BOOST_PP_VARIADIC_ELEM_I(n, ...) BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,),) -# else -# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,) -# endif -# define BOOST_PP_VARIADIC_ELEM_0(e0, ...) e0 -# define BOOST_PP_VARIADIC_ELEM_1(e0, e1, ...) e1 -# define BOOST_PP_VARIADIC_ELEM_2(e0, e1, e2, ...) e2 -# define BOOST_PP_VARIADIC_ELEM_3(e0, e1, e2, e3, ...) e3 -# define BOOST_PP_VARIADIC_ELEM_4(e0, e1, e2, e3, e4, ...) e4 -# define BOOST_PP_VARIADIC_ELEM_5(e0, e1, e2, e3, e4, e5, ...) e5 -# define BOOST_PP_VARIADIC_ELEM_6(e0, e1, e2, e3, e4, e5, e6, ...) e6 -# define BOOST_PP_VARIADIC_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, ...) e7 -# define BOOST_PP_VARIADIC_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, ...) e8 -# define BOOST_PP_VARIADIC_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ...) e9 -# define BOOST_PP_VARIADIC_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ...) e10 -# define BOOST_PP_VARIADIC_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ...) e11 -# define BOOST_PP_VARIADIC_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ...) e12 -# define BOOST_PP_VARIADIC_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ...) e13 -# define BOOST_PP_VARIADIC_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ...) e14 -# define BOOST_PP_VARIADIC_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ...) e15 -# define BOOST_PP_VARIADIC_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ...) e16 -# define BOOST_PP_VARIADIC_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ...) e17 -# define BOOST_PP_VARIADIC_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ...) e18 -# define BOOST_PP_VARIADIC_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ...) e19 -# define BOOST_PP_VARIADIC_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ...) e20 -# define BOOST_PP_VARIADIC_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ...) e21 -# define BOOST_PP_VARIADIC_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ...) e22 -# define BOOST_PP_VARIADIC_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ...) e23 -# define BOOST_PP_VARIADIC_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ...) e24 -# define BOOST_PP_VARIADIC_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ...) e25 -# define BOOST_PP_VARIADIC_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ...) e26 -# define BOOST_PP_VARIADIC_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ...) e27 -# define BOOST_PP_VARIADIC_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ...) e28 -# define BOOST_PP_VARIADIC_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ...) e29 -# define BOOST_PP_VARIADIC_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ...) e30 -# define BOOST_PP_VARIADIC_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ...) e31 -# define BOOST_PP_VARIADIC_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ...) e32 -# define BOOST_PP_VARIADIC_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ...) e33 -# define BOOST_PP_VARIADIC_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ...) e34 -# define BOOST_PP_VARIADIC_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ...) e35 -# define BOOST_PP_VARIADIC_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ...) e36 -# define BOOST_PP_VARIADIC_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ...) e37 -# define BOOST_PP_VARIADIC_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ...) e38 -# define BOOST_PP_VARIADIC_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ...) e39 -# define BOOST_PP_VARIADIC_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ...) e40 -# define BOOST_PP_VARIADIC_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ...) e41 -# define BOOST_PP_VARIADIC_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ...) e42 -# define BOOST_PP_VARIADIC_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ...) e43 -# define BOOST_PP_VARIADIC_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ...) e44 -# define BOOST_PP_VARIADIC_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ...) e45 -# define BOOST_PP_VARIADIC_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ...) e46 -# define BOOST_PP_VARIADIC_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ...) e47 -# define BOOST_PP_VARIADIC_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ...) e48 -# define BOOST_PP_VARIADIC_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ...) e49 -# define BOOST_PP_VARIADIC_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ...) e50 -# define BOOST_PP_VARIADIC_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ...) e51 -# define BOOST_PP_VARIADIC_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ...) e52 -# define BOOST_PP_VARIADIC_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ...) e53 -# define BOOST_PP_VARIADIC_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ...) e54 -# define BOOST_PP_VARIADIC_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ...) e55 -# define BOOST_PP_VARIADIC_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ...) e56 -# define BOOST_PP_VARIADIC_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ...) e57 -# define BOOST_PP_VARIADIC_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ...) e58 -# define BOOST_PP_VARIADIC_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ...) e59 -# define BOOST_PP_VARIADIC_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ...) e60 -# define BOOST_PP_VARIADIC_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ...) e61 -# define BOOST_PP_VARIADIC_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ...) e62 -# define BOOST_PP_VARIADIC_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, ...) e63 +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_VARIADIC_ELEM_I(n,__VA_ARGS__) +# define BOOST_PP_VARIADIC_ELEM_I(n, ...) BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,),) +# else +# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,) +# endif +# +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# +# define BOOST_PP_VARIADIC_ELEM_0(e0, ...) e0 +# define BOOST_PP_VARIADIC_ELEM_1(e0, e1, ...) e1 +# define BOOST_PP_VARIADIC_ELEM_2(e0, e1, e2, ...) e2 +# define BOOST_PP_VARIADIC_ELEM_3(e0, e1, e2, e3, ...) e3 +# define BOOST_PP_VARIADIC_ELEM_4(e0, e1, e2, e3, e4, ...) e4 +# define BOOST_PP_VARIADIC_ELEM_5(e0, e1, e2, e3, e4, e5, ...) e5 +# define BOOST_PP_VARIADIC_ELEM_6(e0, e1, e2, e3, e4, e5, e6, ...) e6 +# define BOOST_PP_VARIADIC_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, ...) e7 +# define BOOST_PP_VARIADIC_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, ...) e8 +# define BOOST_PP_VARIADIC_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ...) e9 +# define BOOST_PP_VARIADIC_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ...) e10 +# define BOOST_PP_VARIADIC_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ...) e11 +# define BOOST_PP_VARIADIC_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ...) e12 +# define BOOST_PP_VARIADIC_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ...) e13 +# define BOOST_PP_VARIADIC_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ...) e14 +# define BOOST_PP_VARIADIC_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ...) e15 +# define BOOST_PP_VARIADIC_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ...) e16 +# define BOOST_PP_VARIADIC_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ...) e17 +# define BOOST_PP_VARIADIC_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ...) e18 +# define BOOST_PP_VARIADIC_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ...) e19 +# define BOOST_PP_VARIADIC_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ...) e20 +# define BOOST_PP_VARIADIC_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ...) e21 +# define BOOST_PP_VARIADIC_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ...) e22 +# define BOOST_PP_VARIADIC_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ...) e23 +# define BOOST_PP_VARIADIC_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ...) e24 +# define BOOST_PP_VARIADIC_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ...) e25 +# define BOOST_PP_VARIADIC_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ...) e26 +# define BOOST_PP_VARIADIC_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ...) e27 +# define BOOST_PP_VARIADIC_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ...) e28 +# define BOOST_PP_VARIADIC_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ...) e29 +# define BOOST_PP_VARIADIC_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ...) e30 +# define BOOST_PP_VARIADIC_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ...) e31 +# define BOOST_PP_VARIADIC_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ...) e32 +# define BOOST_PP_VARIADIC_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ...) e33 +# define BOOST_PP_VARIADIC_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ...) e34 +# define BOOST_PP_VARIADIC_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ...) e35 +# define BOOST_PP_VARIADIC_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ...) e36 +# define BOOST_PP_VARIADIC_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ...) e37 +# define BOOST_PP_VARIADIC_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ...) e38 +# define BOOST_PP_VARIADIC_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ...) e39 +# define BOOST_PP_VARIADIC_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ...) e40 +# define BOOST_PP_VARIADIC_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ...) e41 +# define BOOST_PP_VARIADIC_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ...) e42 +# define BOOST_PP_VARIADIC_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ...) e43 +# define BOOST_PP_VARIADIC_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ...) e44 +# define BOOST_PP_VARIADIC_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ...) e45 +# define BOOST_PP_VARIADIC_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ...) e46 +# define BOOST_PP_VARIADIC_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ...) e47 +# define BOOST_PP_VARIADIC_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ...) e48 +# define BOOST_PP_VARIADIC_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ...) e49 +# define BOOST_PP_VARIADIC_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ...) e50 +# define BOOST_PP_VARIADIC_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ...) e51 +# define BOOST_PP_VARIADIC_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ...) e52 +# define BOOST_PP_VARIADIC_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ...) e53 +# define BOOST_PP_VARIADIC_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ...) e54 +# define BOOST_PP_VARIADIC_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ...) e55 +# define BOOST_PP_VARIADIC_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ...) e56 +# define BOOST_PP_VARIADIC_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ...) e57 +# define BOOST_PP_VARIADIC_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ...) e58 +# define BOOST_PP_VARIADIC_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ...) e59 +# define BOOST_PP_VARIADIC_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ...) e60 +# define BOOST_PP_VARIADIC_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ...) e61 +# define BOOST_PP_VARIADIC_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ...) e62 +# define BOOST_PP_VARIADIC_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, ...) e63 +# +# else +# +# include +# +# if BOOST_PP_LIMIT_VARIADIC == 64 +# include +# elif BOOST_PP_LIMIT_VARIADIC == 128 +# include +# include +# elif BOOST_PP_LIMIT_VARIADIC == 256 +# include +# include +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_TUPLE limit +# endif +# # endif # # endif diff --git a/src/boost/boost/preprocessor/variadic/has_opt.hpp b/src/boost/boost/preprocessor/variadic/has_opt.hpp new file mode 100644 index 000000000..50f70269f --- /dev/null +++ b/src/boost/boost/preprocessor/variadic/has_opt.hpp @@ -0,0 +1,32 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2019. * +# * Distributed under the Boost Software License, Version 1.0. (See * +# * accompanying file LICENSE_1_0.txt or copy at * +# * http://www.boost.org/LICENSE_1_0.txt) * +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_VARIADIC_HAS_OPT_HPP +# define BOOST_PREPROCESSOR_VARIADIC_HAS_OPT_HPP +# +# include +# +# /* BOOST_PP_VARIADIC_HAS_OPT */ +# +# if defined(__cplusplus) && __cplusplus > 201703L +# if defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 8 && __GNUC__ < 10 +# define BOOST_PP_VARIADIC_HAS_OPT() 0 +# else +# include +# define BOOST_PP_VARIADIC_HAS_OPT() \ + BOOST_PP_VARIADIC_HAS_OPT_ELEM2(BOOST_PP_VARIADIC_HAS_OPT_FUNCTION(?),) \ +/**/ +# endif +# else +# define BOOST_PP_VARIADIC_HAS_OPT() 0 +# endif +# +# endif diff --git a/src/boost/boost/preprocessor/variadic/limits/elem_128.hpp b/src/boost/boost/preprocessor/variadic/limits/elem_128.hpp new file mode 100644 index 000000000..58aebb85d --- /dev/null +++ b/src/boost/boost/preprocessor/variadic/limits/elem_128.hpp @@ -0,0 +1,275 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2011. * +# * (C) Copyright Paul Mensonides 2011. * +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_VARIADIC_ELEM_128_HPP +# define BOOST_PREPROCESSOR_VARIADIC_ELEM_128_HPP +# +# define BOOST_PP_VARIADIC_ELEM_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, \ + ... \ + ) e64 +# define BOOST_PP_VARIADIC_ELEM_65(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, \ + ... \ + ) e65 +# define BOOST_PP_VARIADIC_ELEM_66(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, \ + ... \ + ) e66 +# define BOOST_PP_VARIADIC_ELEM_67(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, \ + ... \ + ) e67 +# define BOOST_PP_VARIADIC_ELEM_68(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, \ + ... \ + ) e68 +# define BOOST_PP_VARIADIC_ELEM_69(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, \ + ... \ + ) e69 +# define BOOST_PP_VARIADIC_ELEM_70(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, \ + ... \ + ) e70 +# define BOOST_PP_VARIADIC_ELEM_71(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, \ + ... \ + ) e71 +# define BOOST_PP_VARIADIC_ELEM_72(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, \ + ... \ + ) e72 +# define BOOST_PP_VARIADIC_ELEM_73(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, \ + ... \ + ) e73 +# define BOOST_PP_VARIADIC_ELEM_74(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, \ + ... \ + ) e74 +# define BOOST_PP_VARIADIC_ELEM_75(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, \ + ... \ + ) e75 +# define BOOST_PP_VARIADIC_ELEM_76(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, \ + ... \ + ) e76 +# define BOOST_PP_VARIADIC_ELEM_77(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, \ + ... \ + ) e77 +# define BOOST_PP_VARIADIC_ELEM_78(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, \ + ... \ + ) e78 +# define BOOST_PP_VARIADIC_ELEM_79(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, \ + ... \ + ) e79 +# define BOOST_PP_VARIADIC_ELEM_80(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, \ + ... \ + ) e80 +# define BOOST_PP_VARIADIC_ELEM_81(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, \ + ... \ + ) e81 +# define BOOST_PP_VARIADIC_ELEM_82(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, \ + ... \ + ) e82 +# define BOOST_PP_VARIADIC_ELEM_83(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, \ + ... \ + ) e83 +# define BOOST_PP_VARIADIC_ELEM_84(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, \ + ... \ + ) e84 +# define BOOST_PP_VARIADIC_ELEM_85(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, \ + ... \ + ) e85 +# define BOOST_PP_VARIADIC_ELEM_86(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, \ + ... \ + ) e86 +# define BOOST_PP_VARIADIC_ELEM_87(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, \ + ... \ + ) e87 +# define BOOST_PP_VARIADIC_ELEM_88(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, \ + ... \ + ) e88 +# define BOOST_PP_VARIADIC_ELEM_89(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, \ + ... \ + ) e89 +# define BOOST_PP_VARIADIC_ELEM_90(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, \ + ... \ + ) e90 +# define BOOST_PP_VARIADIC_ELEM_91(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, \ + ... \ + ) e91 +# define BOOST_PP_VARIADIC_ELEM_92(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, \ + ... \ + ) e92 +# define BOOST_PP_VARIADIC_ELEM_93(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, \ + ... \ + ) e93 +# define BOOST_PP_VARIADIC_ELEM_94(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, \ + ... \ + ) e94 +# define BOOST_PP_VARIADIC_ELEM_95(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, \ + ... \ + ) e95 +# define BOOST_PP_VARIADIC_ELEM_96(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, \ + ... \ + ) e96 +# define BOOST_PP_VARIADIC_ELEM_97(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, \ + ... \ + ) e97 +# define BOOST_PP_VARIADIC_ELEM_98(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, \ + ... \ + ) e98 +# define BOOST_PP_VARIADIC_ELEM_99(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, \ + ... \ + ) e99 +# define BOOST_PP_VARIADIC_ELEM_100(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, \ + ... \ + ) e100 +# define BOOST_PP_VARIADIC_ELEM_101(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, \ + ... \ + ) e101 +# define BOOST_PP_VARIADIC_ELEM_102(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, \ + ... \ + ) e102 +# define BOOST_PP_VARIADIC_ELEM_103(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, \ + ... \ + ) e103 +# define BOOST_PP_VARIADIC_ELEM_104(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, \ + ... \ + ) e104 +# define BOOST_PP_VARIADIC_ELEM_105(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, \ + ... \ + ) e105 +# define BOOST_PP_VARIADIC_ELEM_106(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, \ + ... \ + ) e106 +# define BOOST_PP_VARIADIC_ELEM_107(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, \ + ... \ + ) e107 +# define BOOST_PP_VARIADIC_ELEM_108(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, \ + ... \ + ) e108 +# define BOOST_PP_VARIADIC_ELEM_109(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, \ + ... \ + ) e109 +# define BOOST_PP_VARIADIC_ELEM_110(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, \ + ... \ + ) e110 +# define BOOST_PP_VARIADIC_ELEM_111(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, \ + ... \ + ) e111 +# define BOOST_PP_VARIADIC_ELEM_112(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, \ + ... \ + ) e112 +# define BOOST_PP_VARIADIC_ELEM_113(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, \ + ... \ + ) e113 +# define BOOST_PP_VARIADIC_ELEM_114(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, \ + ... \ + ) e114 +# define BOOST_PP_VARIADIC_ELEM_115(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, \ + ... \ + ) e115 +# define BOOST_PP_VARIADIC_ELEM_116(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, \ + ... \ + ) e116 +# define BOOST_PP_VARIADIC_ELEM_117(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, \ + ... \ + ) e117 +# define BOOST_PP_VARIADIC_ELEM_118(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, \ + ... \ + ) e118 +# define BOOST_PP_VARIADIC_ELEM_119(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, \ + ... \ + ) e119 +# define BOOST_PP_VARIADIC_ELEM_120(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, \ + ... \ + ) e120 +# define BOOST_PP_VARIADIC_ELEM_121(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, \ + ... \ + ) e121 +# define BOOST_PP_VARIADIC_ELEM_122(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, \ + ... \ + ) e122 +# define BOOST_PP_VARIADIC_ELEM_123(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, \ + ... \ + ) e123 +# define BOOST_PP_VARIADIC_ELEM_124(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, \ + ... \ + ) e124 +# define BOOST_PP_VARIADIC_ELEM_125(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, \ + ... \ + ) e125 +# define BOOST_PP_VARIADIC_ELEM_126(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, \ + ... \ + ) e126 +# define BOOST_PP_VARIADIC_ELEM_127(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + ... \ + ) e127 +# +# endif diff --git a/src/boost/boost/preprocessor/variadic/limits/elem_256.hpp b/src/boost/boost/preprocessor/variadic/limits/elem_256.hpp new file mode 100644 index 000000000..c750b2723 --- /dev/null +++ b/src/boost/boost/preprocessor/variadic/limits/elem_256.hpp @@ -0,0 +1,723 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2011. * +# * (C) Copyright Paul Mensonides 2011. * +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_VARIADIC_ELEM_256_HPP +# define BOOST_PREPROCESSOR_VARIADIC_ELEM_256_HPP +# +# define BOOST_PP_VARIADIC_ELEM_128(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, \ + ... \ + ) e128 +# define BOOST_PP_VARIADIC_ELEM_129(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, \ + ... \ + ) e129 +# define BOOST_PP_VARIADIC_ELEM_130(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, \ + ... \ + ) e130 +# define BOOST_PP_VARIADIC_ELEM_131(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, \ + ... \ + ) e131 +# define BOOST_PP_VARIADIC_ELEM_132(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, \ + ... \ + ) e132 +# define BOOST_PP_VARIADIC_ELEM_133(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, \ + ... \ + ) e133 +# define BOOST_PP_VARIADIC_ELEM_134(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, \ + ... \ + ) e134 +# define BOOST_PP_VARIADIC_ELEM_135(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, \ + ... \ + ) e135 +# define BOOST_PP_VARIADIC_ELEM_136(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, \ + ... \ + ) e136 +# define BOOST_PP_VARIADIC_ELEM_137(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, \ + ... \ + ) e137 +# define BOOST_PP_VARIADIC_ELEM_138(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, \ + ... \ + ) e138 +# define BOOST_PP_VARIADIC_ELEM_139(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, \ + ... \ + ) e139 +# define BOOST_PP_VARIADIC_ELEM_140(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, \ + ... \ + ) e140 +# define BOOST_PP_VARIADIC_ELEM_141(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, \ + ... \ + ) e141 +# define BOOST_PP_VARIADIC_ELEM_142(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, \ + ... \ + ) e142 +# define BOOST_PP_VARIADIC_ELEM_143(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, \ + ... \ + ) e143 +# define BOOST_PP_VARIADIC_ELEM_144(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, \ + ... \ + ) e144 +# define BOOST_PP_VARIADIC_ELEM_145(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, \ + ... \ + ) e145 +# define BOOST_PP_VARIADIC_ELEM_146(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, \ + ... \ + ) e146 +# define BOOST_PP_VARIADIC_ELEM_147(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, \ + ... \ + ) e147 +# define BOOST_PP_VARIADIC_ELEM_148(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, \ + ... \ + ) e148 +# define BOOST_PP_VARIADIC_ELEM_149(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, \ + ... \ + ) e149 +# define BOOST_PP_VARIADIC_ELEM_150(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, \ + ... \ + ) e150 +# define BOOST_PP_VARIADIC_ELEM_151(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, \ + ... \ + ) e151 +# define BOOST_PP_VARIADIC_ELEM_152(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, \ + ... \ + ) e152 +# define BOOST_PP_VARIADIC_ELEM_153(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, \ + ... \ + ) e153 +# define BOOST_PP_VARIADIC_ELEM_154(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, \ + ... \ + ) e154 +# define BOOST_PP_VARIADIC_ELEM_155(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, \ + ... \ + ) e155 +# define BOOST_PP_VARIADIC_ELEM_156(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, \ + ... \ + ) e156 +# define BOOST_PP_VARIADIC_ELEM_157(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, \ + ... \ + ) e157 +# define BOOST_PP_VARIADIC_ELEM_158(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, \ + ... \ + ) e158 +# define BOOST_PP_VARIADIC_ELEM_159(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, \ + ... \ + ) e159 +# define BOOST_PP_VARIADIC_ELEM_160(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, \ + ... \ + ) e160 +# define BOOST_PP_VARIADIC_ELEM_161(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, \ + ... \ + ) e161 +# define BOOST_PP_VARIADIC_ELEM_162(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, \ + ... \ + ) e162 +# define BOOST_PP_VARIADIC_ELEM_163(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, \ + ... \ + ) e163 +# define BOOST_PP_VARIADIC_ELEM_164(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, \ + ... \ + ) e164 +# define BOOST_PP_VARIADIC_ELEM_165(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, \ + ... \ + ) e165 +# define BOOST_PP_VARIADIC_ELEM_166(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, \ + ... \ + ) e166 +# define BOOST_PP_VARIADIC_ELEM_167(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, \ + ... \ + ) e167 +# define BOOST_PP_VARIADIC_ELEM_168(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, \ + ... \ + ) e168 +# define BOOST_PP_VARIADIC_ELEM_169(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, \ + ... \ + ) e169 +# define BOOST_PP_VARIADIC_ELEM_170(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, \ + ... \ + ) e170 +# define BOOST_PP_VARIADIC_ELEM_171(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, \ + ... \ + ) e171 +# define BOOST_PP_VARIADIC_ELEM_172(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, \ + ... \ + ) e172 +# define BOOST_PP_VARIADIC_ELEM_173(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, \ + ... \ + ) e173 +# define BOOST_PP_VARIADIC_ELEM_174(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, \ + ... \ + ) e174 +# define BOOST_PP_VARIADIC_ELEM_175(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, \ + ... \ + ) e175 +# define BOOST_PP_VARIADIC_ELEM_176(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, \ + ... \ + ) e176 +# define BOOST_PP_VARIADIC_ELEM_177(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, \ + ... \ + ) e177 +# define BOOST_PP_VARIADIC_ELEM_178(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, \ + ... \ + ) e178 +# define BOOST_PP_VARIADIC_ELEM_179(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, \ + ... \ + ) e179 +# define BOOST_PP_VARIADIC_ELEM_180(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, \ + ... \ + ) e180 +# define BOOST_PP_VARIADIC_ELEM_181(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, \ + ... \ + ) e181 +# define BOOST_PP_VARIADIC_ELEM_182(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, \ + ... \ + ) e182 +# define BOOST_PP_VARIADIC_ELEM_183(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, \ + ... \ + ) e183 +# define BOOST_PP_VARIADIC_ELEM_184(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, \ + ... \ + ) e184 +# define BOOST_PP_VARIADIC_ELEM_185(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, \ + ... \ + ) e185 +# define BOOST_PP_VARIADIC_ELEM_186(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, \ + ... \ + ) e186 +# define BOOST_PP_VARIADIC_ELEM_187(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, \ + ... \ + ) e187 +# define BOOST_PP_VARIADIC_ELEM_188(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, \ + ... \ + ) e188 +# define BOOST_PP_VARIADIC_ELEM_189(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, \ + ... \ + ) e189 +# define BOOST_PP_VARIADIC_ELEM_190(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, \ + ... \ + ) e190 +# define BOOST_PP_VARIADIC_ELEM_191(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + ... \ + ) e191 +# define BOOST_PP_VARIADIC_ELEM_192(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, \ + ... \ + ) e192 +# define BOOST_PP_VARIADIC_ELEM_193(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, \ + ... \ + ) e193 +# define BOOST_PP_VARIADIC_ELEM_194(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, \ + ... \ + ) e194 +# define BOOST_PP_VARIADIC_ELEM_195(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, \ + ... \ + ) e195 +# define BOOST_PP_VARIADIC_ELEM_196(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, \ + ... \ + ) e196 +# define BOOST_PP_VARIADIC_ELEM_197(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, \ + ... \ + ) e197 +# define BOOST_PP_VARIADIC_ELEM_198(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, \ + ... \ + ) e198 +# define BOOST_PP_VARIADIC_ELEM_199(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, \ + ... \ + ) e199 +# define BOOST_PP_VARIADIC_ELEM_200(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, \ + ... \ + ) e200 +# define BOOST_PP_VARIADIC_ELEM_201(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, \ + ... \ + ) e201 +# define BOOST_PP_VARIADIC_ELEM_202(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, \ + ... \ + ) e202 +# define BOOST_PP_VARIADIC_ELEM_203(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, \ + ... \ + ) e203 +# define BOOST_PP_VARIADIC_ELEM_204(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, \ + ... \ + ) e204 +# define BOOST_PP_VARIADIC_ELEM_205(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, \ + ... \ + ) e205 +# define BOOST_PP_VARIADIC_ELEM_206(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, \ + ... \ + ) e206 +# define BOOST_PP_VARIADIC_ELEM_207(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, \ + ... \ + ) e207 +# define BOOST_PP_VARIADIC_ELEM_208(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, \ + ... \ + ) e208 +# define BOOST_PP_VARIADIC_ELEM_209(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, \ + ... \ + ) e209 +# define BOOST_PP_VARIADIC_ELEM_210(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, \ + ... \ + ) e210 +# define BOOST_PP_VARIADIC_ELEM_211(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, \ + ... \ + ) e211 +# define BOOST_PP_VARIADIC_ELEM_212(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, \ + ... \ + ) e212 +# define BOOST_PP_VARIADIC_ELEM_213(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, \ + ... \ + ) e213 +# define BOOST_PP_VARIADIC_ELEM_214(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, \ + ... \ + ) e214 +# define BOOST_PP_VARIADIC_ELEM_215(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, \ + ... \ + ) e215 +# define BOOST_PP_VARIADIC_ELEM_216(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, \ + ... \ + ) e216 +# define BOOST_PP_VARIADIC_ELEM_217(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, \ + ... \ + ) e217 +# define BOOST_PP_VARIADIC_ELEM_218(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, \ + ... \ + ) e218 +# define BOOST_PP_VARIADIC_ELEM_219(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, \ + ... \ + ) e219 +# define BOOST_PP_VARIADIC_ELEM_220(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, \ + ... \ + ) e220 +# define BOOST_PP_VARIADIC_ELEM_221(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, \ + ... \ + ) e221 +# define BOOST_PP_VARIADIC_ELEM_222(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, \ + ... \ + ) e222 +# define BOOST_PP_VARIADIC_ELEM_223(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, \ + ... \ + ) e223 +# define BOOST_PP_VARIADIC_ELEM_224(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, \ + ... \ + ) e224 +# define BOOST_PP_VARIADIC_ELEM_225(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, \ + ... \ + ) e225 +# define BOOST_PP_VARIADIC_ELEM_226(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, \ + ... \ + ) e226 +# define BOOST_PP_VARIADIC_ELEM_227(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, \ + ... \ + ) e227 +# define BOOST_PP_VARIADIC_ELEM_228(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, \ + ... \ + ) e228 +# define BOOST_PP_VARIADIC_ELEM_229(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, \ + ... \ + ) e229 +# define BOOST_PP_VARIADIC_ELEM_230(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, \ + ... \ + ) e230 +# define BOOST_PP_VARIADIC_ELEM_231(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, \ + ... \ + ) e231 +# define BOOST_PP_VARIADIC_ELEM_232(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, \ + ... \ + ) e232 +# define BOOST_PP_VARIADIC_ELEM_233(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, \ + ... \ + ) e233 +# define BOOST_PP_VARIADIC_ELEM_234(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, \ + ... \ + ) e234 +# define BOOST_PP_VARIADIC_ELEM_235(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, \ + ... \ + ) e235 +# define BOOST_PP_VARIADIC_ELEM_236(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, \ + ... \ + ) e236 +# define BOOST_PP_VARIADIC_ELEM_237(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, \ + ... \ + ) e237 +# define BOOST_PP_VARIADIC_ELEM_238(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, \ + ... \ + ) e238 +# define BOOST_PP_VARIADIC_ELEM_239(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, \ + ... \ + ) e239 +# define BOOST_PP_VARIADIC_ELEM_240(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, \ + ... \ + ) e240 +# define BOOST_PP_VARIADIC_ELEM_241(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, \ + ... \ + ) e241 +# define BOOST_PP_VARIADIC_ELEM_242(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, \ + ... \ + ) e242 +# define BOOST_PP_VARIADIC_ELEM_243(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, \ + ... \ + ) e243 +# define BOOST_PP_VARIADIC_ELEM_244(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, \ + ... \ + ) e244 +# define BOOST_PP_VARIADIC_ELEM_245(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, \ + ... \ + ) e245 +# define BOOST_PP_VARIADIC_ELEM_246(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, \ + ... \ + ) e246 +# define BOOST_PP_VARIADIC_ELEM_247(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, \ + ... \ + ) e247 +# define BOOST_PP_VARIADIC_ELEM_248(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, \ + ... \ + ) e248 +# define BOOST_PP_VARIADIC_ELEM_249(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, \ + ... \ + ) e249 +# define BOOST_PP_VARIADIC_ELEM_250(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, \ + ... \ + ) e250 +# define BOOST_PP_VARIADIC_ELEM_251(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251, \ + ... \ + ) e251 +# define BOOST_PP_VARIADIC_ELEM_252(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251, e252, \ + ... \ + ) e252 +# define BOOST_PP_VARIADIC_ELEM_253(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251, e252, e253, \ + ... \ + ) e253 +# define BOOST_PP_VARIADIC_ELEM_254(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251, e252, e253, e254, \ + ... \ + ) e254 +# define BOOST_PP_VARIADIC_ELEM_255(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251, e252, e253, e254, e255, \ + ... \ + ) e255 +# +# endif diff --git a/src/boost/boost/preprocessor/variadic/limits/elem_64.hpp b/src/boost/boost/preprocessor/variadic/limits/elem_64.hpp new file mode 100644 index 000000000..f20a4bb4f --- /dev/null +++ b/src/boost/boost/preprocessor/variadic/limits/elem_64.hpp @@ -0,0 +1,81 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2011. * +# * (C) Copyright Paul Mensonides 2011. * +# * 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_VARIADIC_ELEM_64_HPP +# define BOOST_PREPROCESSOR_VARIADIC_ELEM_64_HPP +# +# define BOOST_PP_VARIADIC_ELEM_0(e0, ...) e0 +# define BOOST_PP_VARIADIC_ELEM_1(e0, e1, ...) e1 +# define BOOST_PP_VARIADIC_ELEM_2(e0, e1, e2, ...) e2 +# define BOOST_PP_VARIADIC_ELEM_3(e0, e1, e2, e3, ...) e3 +# define BOOST_PP_VARIADIC_ELEM_4(e0, e1, e2, e3, e4, ...) e4 +# define BOOST_PP_VARIADIC_ELEM_5(e0, e1, e2, e3, e4, e5, ...) e5 +# define BOOST_PP_VARIADIC_ELEM_6(e0, e1, e2, e3, e4, e5, e6, ...) e6 +# define BOOST_PP_VARIADIC_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, ...) e7 +# define BOOST_PP_VARIADIC_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, ...) e8 +# define BOOST_PP_VARIADIC_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ...) e9 +# define BOOST_PP_VARIADIC_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ...) e10 +# define BOOST_PP_VARIADIC_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ...) e11 +# define BOOST_PP_VARIADIC_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ...) e12 +# define BOOST_PP_VARIADIC_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ...) e13 +# define BOOST_PP_VARIADIC_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ...) e14 +# define BOOST_PP_VARIADIC_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ...) e15 +# define BOOST_PP_VARIADIC_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ...) e16 +# define BOOST_PP_VARIADIC_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ...) e17 +# define BOOST_PP_VARIADIC_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ...) e18 +# define BOOST_PP_VARIADIC_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ...) e19 +# define BOOST_PP_VARIADIC_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ...) e20 +# define BOOST_PP_VARIADIC_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ...) e21 +# define BOOST_PP_VARIADIC_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ...) e22 +# define BOOST_PP_VARIADIC_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ...) e23 +# define BOOST_PP_VARIADIC_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ...) e24 +# define BOOST_PP_VARIADIC_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ...) e25 +# define BOOST_PP_VARIADIC_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ...) e26 +# define BOOST_PP_VARIADIC_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ...) e27 +# define BOOST_PP_VARIADIC_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ...) e28 +# define BOOST_PP_VARIADIC_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ...) e29 +# define BOOST_PP_VARIADIC_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ...) e30 +# define BOOST_PP_VARIADIC_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ...) e31 +# define BOOST_PP_VARIADIC_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ...) e32 +# define BOOST_PP_VARIADIC_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ...) e33 +# define BOOST_PP_VARIADIC_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ...) e34 +# define BOOST_PP_VARIADIC_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ...) e35 +# define BOOST_PP_VARIADIC_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ...) e36 +# define BOOST_PP_VARIADIC_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ...) e37 +# define BOOST_PP_VARIADIC_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ...) e38 +# define BOOST_PP_VARIADIC_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ...) e39 +# define BOOST_PP_VARIADIC_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ...) e40 +# define BOOST_PP_VARIADIC_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ...) e41 +# define BOOST_PP_VARIADIC_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ...) e42 +# define BOOST_PP_VARIADIC_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ...) e43 +# define BOOST_PP_VARIADIC_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ...) e44 +# define BOOST_PP_VARIADIC_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ...) e45 +# define BOOST_PP_VARIADIC_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ...) e46 +# define BOOST_PP_VARIADIC_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ...) e47 +# define BOOST_PP_VARIADIC_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ...) e48 +# define BOOST_PP_VARIADIC_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ...) e49 +# define BOOST_PP_VARIADIC_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ...) e50 +# define BOOST_PP_VARIADIC_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ...) e51 +# define BOOST_PP_VARIADIC_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ...) e52 +# define BOOST_PP_VARIADIC_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ...) e53 +# define BOOST_PP_VARIADIC_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ...) e54 +# define BOOST_PP_VARIADIC_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ...) e55 +# define BOOST_PP_VARIADIC_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ...) e56 +# define BOOST_PP_VARIADIC_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ...) e57 +# define BOOST_PP_VARIADIC_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ...) e58 +# define BOOST_PP_VARIADIC_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ...) e59 +# define BOOST_PP_VARIADIC_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ...) e60 +# define BOOST_PP_VARIADIC_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ...) e61 +# define BOOST_PP_VARIADIC_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ...) e62 +# define BOOST_PP_VARIADIC_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, ...) e63 +# +# endif diff --git a/src/boost/boost/preprocessor/variadic/limits/size_128.hpp b/src/boost/boost/preprocessor/variadic/limits/size_128.hpp new file mode 100644 index 000000000..f6ef577d8 --- /dev/null +++ b/src/boost/boost/preprocessor/variadic/limits/size_128.hpp @@ -0,0 +1,47 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2011. * +# * (C) Copyright Paul Mensonides 2011. * +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_VARIADIC_SIZE_128_HPP +# define BOOST_PREPROCESSOR_VARIADIC_SIZE_128_HPP +# +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_VARIADIC_DO_SIZE(...) \ + BOOST_PP_CAT \ + ( \ + BOOST_PP_VARIADIC_SIZE_I \ + ( \ + __VA_ARGS__, \ + 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, \ + 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, \ + ), \ + ) \ + /**/ +# else +# define BOOST_PP_VARIADIC_DO_SIZE(...) \ + BOOST_PP_VARIADIC_SIZE_I \ + ( \ + __VA_ARGS__, \ + 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, \ + 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, \ + ) \ + /**/ +# endif +# define BOOST_PP_VARIADIC_SIZE_I( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + size, ... \ + ) size \ + /**/ +# +# endif diff --git a/src/boost/boost/preprocessor/variadic/limits/size_256.hpp b/src/boost/boost/preprocessor/variadic/limits/size_256.hpp new file mode 100644 index 000000000..0342963b7 --- /dev/null +++ b/src/boost/boost/preprocessor/variadic/limits/size_256.hpp @@ -0,0 +1,53 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2011. * +# * (C) Copyright Paul Mensonides 2011. * +# * 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 Edward Diener (2020) */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_VARIADIC_SIZE_256_HPP +# define BOOST_PREPROCESSOR_VARIADIC_SIZE_256_HPP +# +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_VARIADIC_DO_SIZE(...) \ + BOOST_PP_CAT \ + ( \ + BOOST_PP_VARIADIC_SIZE_I \ + ( \ + __VA_ARGS__, \ + 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, \ + 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, \ + 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, \ + 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, \ + ), \ + ) \ + /**/ +# else +# define BOOST_PP_VARIADIC_DO_SIZE(...) \ + BOOST_PP_VARIADIC_SIZE_I \ + ( \ + __VA_ARGS__, \ + 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, \ + 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, \ + 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, \ + 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, \ + ) \ + /**/ +# endif +# define BOOST_PP_VARIADIC_SIZE_I( \ + e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, \ + e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91, e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105, e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117, e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, \ + e128, e129, e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141, e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153, e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165, e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177, e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189, e190, e191, \ + e192, e193, e194, e195, e196, e197, e198, e199, e200, e201, e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213, e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225, e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237, e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249, e250, e251, e252, e253, e254, e255, \ + size, ... \ + ) size \ + /**/ +# +# endif diff --git a/src/boost/boost/preprocessor/variadic/limits/size_64.hpp b/src/boost/boost/preprocessor/variadic/limits/size_64.hpp new file mode 100644 index 000000000..102c4f810 --- /dev/null +++ b/src/boost/boost/preprocessor/variadic/limits/size_64.hpp @@ -0,0 +1,23 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Edward Diener 2011. * +# * (C) Copyright Paul Mensonides 2011. * +# * 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_VARIADIC_SIZE_64_HPP +# define BOOST_PREPROCESSOR_VARIADIC_SIZE_64_HPP +# +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_VARIADIC_DO_SIZE(...) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,),) +# else +# define BOOST_PP_VARIADIC_DO_SIZE(...) BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,) +# endif +# define BOOST_PP_VARIADIC_SIZE_I(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, size, ...) size +# +# endif diff --git a/src/boost/boost/preprocessor/variadic/size.hpp b/src/boost/boost/preprocessor/variadic/size.hpp index f12f1fd67..31834ab91 100644 --- a/src/boost/boost/preprocessor/variadic/size.hpp +++ b/src/boost/boost/preprocessor/variadic/size.hpp @@ -8,6 +8,8 @@ # * * # ************************************************************************** */ # +# /* Revised by Edward Diener (2020) */ +# # /* See http://www.boost.org for most recent version. */ # # ifndef BOOST_PREPROCESSOR_VARIADIC_SIZE_HPP @@ -15,16 +17,49 @@ # # include # include +# include +# include # # /* BOOST_PP_VARIADIC_SIZE */ # -# if BOOST_PP_VARIADICS -# if BOOST_PP_VARIADICS_MSVC -# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,),) +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT() +# +# if BOOST_PP_VARIADIC_HAS_OPT() +# if BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_VARIADIC_SIZE_NOT_EMPTY(...) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,),) +# else +# define BOOST_PP_VARIADIC_SIZE_NOT_EMPTY(...) BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,) +# endif +# define BOOST_PP_VARIADIC_SIZE_EMPTY(...) 0 +# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_IIF(BOOST_PP_CHECK_EMPTY(__VA_ARGS__),BOOST_PP_VARIADIC_SIZE_EMPTY,BOOST_PP_VARIADIC_SIZE_NOT_EMPTY)(__VA_ARGS__) +# elif BOOST_PP_VARIADICS_MSVC +# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,),) # else -# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,) +# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,) # endif # define BOOST_PP_VARIADIC_SIZE_I(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, size, ...) size +# +# else +# +# if BOOST_PP_VARIADIC_HAS_OPT() +# define BOOST_PP_VARIADIC_SIZE_EMPTY(...) 0 +# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_IIF(BOOST_PP_CHECK_EMPTY(__VA_ARGS__),BOOST_PP_VARIADIC_SIZE_EMPTY,BOOST_PP_VARIADIC_DO_SIZE)(__VA_ARGS__) +# else +# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_VARIADIC_DO_SIZE(__VA_ARGS__) +# endif +# +# include +# +# if BOOST_PP_LIMIT_VARIADIC == 64 +# include +# elif BOOST_PP_LIMIT_VARIADIC == 128 +# include +# elif BOOST_PP_LIMIT_VARIADIC == 256 +# include +# else +# error Incorrect value for the BOOST_PP_LIMIT_TUPLE limit +# endif +# # endif # # endif diff --git a/src/boost/boost/range/as_literal.hpp b/src/boost/boost/range/as_literal.hpp index 9203ebdf5..91c55b0cf 100644 --- a/src/boost/boost/range/as_literal.hpp +++ b/src/boost/boost/range/as_literal.hpp @@ -15,10 +15,6 @@ # pragma once #endif -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -#include -#else - #include #include @@ -165,6 +161,4 @@ namespace boost } } -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING - #endif diff --git a/src/boost/boost/range/begin.hpp b/src/boost/boost/range/begin.hpp index b2cf0691f..27532cd89 100644 --- a/src/boost/boost/range/begin.hpp +++ b/src/boost/boost/range/begin.hpp @@ -17,10 +17,6 @@ #include -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -#include -#else - #include #include #include @@ -28,7 +24,7 @@ namespace boost { -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) namespace range_detail { #endif @@ -85,7 +81,7 @@ namespace range_detail } -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) } // namespace 'range_detail' #endif @@ -101,7 +97,7 @@ BOOST_CONSTEXPR #endif inline BOOST_DEDUCED_TYPENAME range_iterator::type begin( T& r ) { -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) using namespace range_detail; #endif return range_begin( r ); @@ -113,7 +109,7 @@ BOOST_CONSTEXPR #endif inline BOOST_DEDUCED_TYPENAME range_iterator::type begin( const T& r ) { -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) using namespace range_detail; #endif return range_begin( r ); @@ -122,8 +118,6 @@ inline BOOST_DEDUCED_TYPENAME range_iterator::type begin( const T& r ) } // namespace range_adl_barrier } // namespace boost -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING - namespace boost { namespace range_adl_barrier diff --git a/src/boost/boost/range/concepts.hpp b/src/boost/boost/range/concepts.hpp index f078e0b5d..0d60f28a3 100644 --- a/src/boost/boost/range/concepts.hpp +++ b/src/boost/boost/range/concepts.hpp @@ -84,7 +84,7 @@ namespace boost { #endif #endif - #ifdef __BORLANDC__ + #ifdef BOOST_BORLANDC #define BOOST_RANGE_ENABLE_CONCEPT_ASSERT 0 #endif diff --git a/src/boost/boost/range/config.hpp b/src/boost/boost/range/config.hpp index c2403654b..e05d065fb 100644 --- a/src/boost/boost/range/config.hpp +++ b/src/boost/boost/range/config.hpp @@ -23,7 +23,7 @@ #error "macro already defined!" #endif -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) # define BOOST_RANGE_DEDUCED_TYPENAME typename #else #define BOOST_RANGE_DEDUCED_TYPENAME BOOST_DEDUCED_TYPENAME diff --git a/src/boost/boost/range/detail/as_literal.hpp b/src/boost/boost/range/detail/as_literal.hpp deleted file mode 100644 index 7be335cef..000000000 --- a/src/boost/boost/range/detail/as_literal.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// Boost.Range library -// -// Copyright Thorsten Ottosen 2006. Use, modification and -// distribution is subject to the Boost Software License, Version -// 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// For more information, see http://www.boost.org/libs/range/ -// - -#ifndef BOOST_RANGE_DETAIL_AS_LITERAL_HPP -#define BOOST_RANGE_DETAIL_AS_LITERAL_HPP - -#if defined(_MSC_VER) -# pragma once -#endif - -#include -#include - -namespace boost -{ - template< class Range > - inline iterator_range::type> - as_literal( Range& r ) - { - return ::boost::make_iterator_range( ::boost::range_detail::str_begin(r), - ::boost::range_detail::str_end(r) ); - } - -} - -#endif diff --git a/src/boost/boost/range/detail/begin.hpp b/src/boost/boost/range/detail/begin.hpp deleted file mode 100644 index b06ae7c1a..000000000 --- a/src/boost/boost/range/detail/begin.hpp +++ /dev/null @@ -1,83 +0,0 @@ -// Boost.Range library -// -// Copyright Thorsten Ottosen 2003-2004. Use, modification and -// distribution is subject to the Boost Software License, Version -// 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// For more information, see http://www.boost.org/libs/range/ -// - -#ifndef BOOST_RANGE_DETAIL_BEGIN_HPP -#define BOOST_RANGE_DETAIL_BEGIN_HPP - -#include // BOOST_MSVC -#include -#include -#include - -namespace boost -{ - - namespace range_detail - { - template< typename T > - struct range_begin; - - ////////////////////////////////////////////////////////////////////// - // default - ////////////////////////////////////////////////////////////////////// - - template<> - struct range_begin - { - template< typename C > - BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME range_iterator::type fun( C& c ) - { - return c.begin(); - }; - }; - - ////////////////////////////////////////////////////////////////////// - // pair - ////////////////////////////////////////////////////////////////////// - - template<> - struct range_begin - { - template< typename P > - BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME range_iterator

::type fun( const P& p ) - { - return p.first; - } - }; - - ////////////////////////////////////////////////////////////////////// - // array - ////////////////////////////////////////////////////////////////////// - - template<> - struct range_begin - { - template - BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME range_value::type* fun(T& t) - { - return t; - } - }; - - } // namespace 'range_detail' - - namespace range_adl_barrier - { - template< typename C > - BOOST_CONSTEXPR inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator::type - begin( C& c ) - { - return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range::type >::fun( c ); - } - } -} // namespace 'boost' - - -#endif diff --git a/src/boost/boost/range/detail/detail_str.hpp b/src/boost/boost/range/detail/detail_str.hpp deleted file mode 100644 index c014812ed..000000000 --- a/src/boost/boost/range/detail/detail_str.hpp +++ /dev/null @@ -1,376 +0,0 @@ -// Boost.Range library -// -// Copyright Thorsten Ottosen 2003-2004. Use, modification and -// distribution is subject to the Boost Software License, Version -// 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// For more information, see http://www.boost.org/libs/range/ -// - -#ifndef BOOST_RANGE_DETAIL_DETAIL_STR_HPP -#define BOOST_RANGE_DETAIL_DETAIL_STR_HPP - -#include // BOOST_MSVC -#include - -namespace boost -{ - - namespace range_detail - { - // - // iterator - // - - template<> - struct range_iterator_ - { - template< typename T > - struct pts - { - typedef BOOST_RANGE_DEDUCED_TYPENAME - remove_extent::type* type; - }; - }; - - template<> - struct range_iterator_ - { - template< typename S > - struct pts - { - typedef char* type; - }; - }; - - template<> - struct range_iterator_ - { - template< typename S > - struct pts - { - typedef const char* type; - }; - }; - - template<> - struct range_iterator_ - { - template< typename S > - struct pts - { - typedef wchar_t* type; - }; - }; - - template<> - struct range_iterator_ - { - template< typename S > - struct pts - { - typedef const wchar_t* type; - }; - }; - - - // - // const iterator - // - - template<> - struct range_const_iterator_ - { - template< typename T > - struct pts - { - typedef const BOOST_RANGE_DEDUCED_TYPENAME - remove_extent::type* type; - }; - }; - - template<> - struct range_const_iterator_ - { - template< typename S > - struct pts - { - typedef const char* type; - }; - }; - - template<> - struct range_const_iterator_ - { - template< typename S > - struct pts - { - typedef const char* type; - }; - }; - - template<> - struct range_const_iterator_ - { - template< typename S > - struct pts - { - typedef const wchar_t* type; - }; - }; - - template<> - struct range_const_iterator_ - { - template< typename S > - struct pts - { - typedef const wchar_t* type; - }; - }; - } -} - -#include -#include -#include -#include -#include - -namespace boost -{ - - namespace range_detail - { - // - // str_begin() - // - template<> - struct range_begin - { - static char* fun( char* s ) - { - return s; - } - }; - - template<> - struct range_begin - { - static const char* fun( const char* s ) - { - return s; - } - }; - - template<> - struct range_begin - { - - static wchar_t* fun( wchar_t* s ) - { - return s; - } - }; - - template<> - struct range_begin - { - static const wchar_t* fun( const wchar_t* s ) - { - return s; - } - }; - - template< typename C > - inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator::type - str_begin( C& c ) - { - return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME - range_detail::range::type >::fun( c ); - } - - // - // str_end() - // - - template<> - struct range_end - { - template< typename T, std::size_t sz > - static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] ) - { - return boost::range_detail::array_end( boost_range_array ); - } - }; - - template<> - struct range_end - { - template< typename T, std::size_t sz > - static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] ) - { - return boost::range_detail::array_end( boost_range_array ); - } - }; - - template<> - struct range_end - { - static char* fun( char* s ) - { - return boost::range_detail::str_end( s ); - } - }; - - template<> - struct range_end - { - static const char* fun( const char* s ) - { - return boost::range_detail::str_end( s ); - } - }; - - template<> - struct range_end - { - static wchar_t* fun( wchar_t* s ) - { - return boost::range_detail::str_end( s ); - } - }; - - - template<> - struct range_end - { - static const wchar_t* fun( const wchar_t* s ) - { - return boost::range_detail::str_end( s ); - } - }; - - template< typename C > - inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator::type - str_end( C& c ) - { - return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME - range_detail::range::type >::fun( c ); - } - - // - // size_type - // - - template<> - struct range_size_type_ - { - template< typename A > - struct pts - { - typedef std::size_t type; - }; - }; - - template<> - struct range_size_type_ - { - template< typename S > - struct pts - { - typedef std::size_t type; - }; - }; - - template<> - struct range_size_type_ - { - template< typename S > - struct pts - { - typedef std::size_t type; - }; - }; - - template<> - struct range_size_type_ - { - template< typename S > - struct pts - { - typedef std::size_t type; - }; - }; - - template<> - struct range_size_type_ - { - template< typename S > - struct pts - { - typedef std::size_t type; - }; - }; - - // - // value_type - // - - template<> - struct range_value_type_ - { - template< typename T > - struct pts - { - typedef char type; - }; - }; - - template<> - struct range_value_type_ - { - template< typename S > - struct pts - { - typedef char type; - }; - }; - - template<> - struct range_value_type_ - { - template< typename S > - struct pts - { - typedef const char type; - }; - }; - - template<> - struct range_value_type_ - { - template< typename S > - struct pts - { - typedef wchar_t type; - }; - }; - - template<> - struct range_value_type_ - { - template< typename S > - struct pts - { - typedef const wchar_t type; - }; - }; - - } // namespace 'range_detail' - -} // namespace 'boost' - - -#endif diff --git a/src/boost/boost/range/detail/end.hpp b/src/boost/boost/range/detail/end.hpp deleted file mode 100644 index 68f7e8773..000000000 --- a/src/boost/boost/range/detail/end.hpp +++ /dev/null @@ -1,86 +0,0 @@ -// Boost.Range library -// -// Copyright Thorsten Ottosen 2003-2004. Use, modification and -// distribution is subject to the Boost Software License, Version -// 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// For more information, see http://www.boost.org/libs/range/ -// - -#ifndef BOOST_RANGE_DETAIL_END_HPP -#define BOOST_RANGE_DETAIL_END_HPP - -#include // BOOST_MSVC -#include - -#include -#include -#include - -namespace boost -{ - namespace range_detail - { - template< typename T > - struct range_end; - - ////////////////////////////////////////////////////////////////////// - // default - ////////////////////////////////////////////////////////////////////// - - template<> - struct range_end - { - template< typename C > - BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME range_iterator::type - fun( C& c ) - { - return c.end(); - }; - }; - - ////////////////////////////////////////////////////////////////////// - // pair - ////////////////////////////////////////////////////////////////////// - - template<> - struct range_end - { - template< typename P > - BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME range_iterator

::type - fun( const P& p ) - { - return p.second; - } - }; - - ////////////////////////////////////////////////////////////////////// - // array - ////////////////////////////////////////////////////////////////////// - - template<> - struct range_end - { - template - BOOST_CONSTEXPR static BOOST_RANGE_DEDUCED_TYPENAME remove_extent::type* fun(T& t) - { - return t + remove_extent::size; - } - }; - - } // namespace 'range_detail' - - namespace range_adl_barrier - { - template< typename C > - BOOST_CONSTEXPR inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator::type - end( C& c ) - { - return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range::type >::fun( c ); - } - } // namespace range_adl_barrier - -} // namespace 'boost' - -#endif diff --git a/src/boost/boost/range/detail/remove_extent.hpp b/src/boost/boost/range/detail/remove_extent.hpp deleted file mode 100644 index 1ef931948..000000000 --- a/src/boost/boost/range/detail/remove_extent.hpp +++ /dev/null @@ -1,157 +0,0 @@ -// Boost.Range library -// -// Copyright Jonathan Turkanis 2005. Use, modification and -// distribution is subject to the Boost Software License, Version -// 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// For more information, see http://www.boost.org/libs/range/ -// - - -#ifndef BOOST_RANGE_DETAIL_REMOVE_BOUNDS_HPP -#define BOOST_RANGE_DETAIL_REMOVE_BOUNDS_HPP - -#include // MSVC, NO_INTRINSIC_WCHAR_T, put size_t in std. -#include -#include -#include -#include - -namespace boost -{ - namespace range_detail - { - - template< typename Case1 = mpl::true_, - typename Type1 = mpl::void_, - typename Case2 = mpl::true_, - typename Type2 = mpl::void_, - typename Case3 = mpl::true_, - typename Type3 = mpl::void_, - typename Case4 = mpl::true_, - typename Type4 = mpl::void_, - typename Case5 = mpl::true_, - typename Type5 = mpl::void_, - typename Case6 = mpl::true_, - typename Type6 = mpl::void_, - typename Case7 = mpl::true_, - typename Type7 = mpl::void_, - typename Case8 = mpl::true_, - typename Type8 = mpl::void_, - typename Case9 = mpl::true_, - typename Type9 = mpl::void_, - typename Case10 = mpl::true_, - typename Type10 = mpl::void_, - typename Case11 = mpl::true_, - typename Type11 = mpl::void_, - typename Case12 = mpl::true_, - typename Type12 = mpl::void_, - typename Case13 = mpl::true_, - typename Type13 = mpl::void_, - typename Case14 = mpl::true_, - typename Type14 = mpl::void_, - typename Case15 = mpl::true_, - typename Type15 = mpl::void_, - typename Case16 = mpl::true_, - typename Type16 = mpl::void_, - typename Case17 = mpl::true_, - typename Type17 = mpl::void_, - typename Case18 = mpl::true_, - typename Type18 = mpl::void_, - typename Case19 = mpl::true_, - typename Type19 = mpl::void_, - typename Case20 = mpl::true_, - typename Type20 = mpl::void_> - struct select { - typedef typename - mpl::eval_if< - Case1, mpl::identity, mpl::eval_if< - Case2, mpl::identity, mpl::eval_if< - Case3, mpl::identity, mpl::eval_if< - Case4, mpl::identity, mpl::eval_if< - Case5, mpl::identity, mpl::eval_if< - Case6, mpl::identity, mpl::eval_if< - Case7, mpl::identity, mpl::eval_if< - Case8, mpl::identity, mpl::eval_if< - Case9, mpl::identity, mpl::if_< - Case10, Type10, mpl::void_ > > > > > > > > > - >::type result1; - typedef typename - mpl::eval_if< - Case11, mpl::identity, mpl::eval_if< - Case12, mpl::identity, mpl::eval_if< - Case13, mpl::identity, mpl::eval_if< - Case14, mpl::identity, mpl::eval_if< - Case15, mpl::identity, mpl::eval_if< - Case16, mpl::identity, mpl::eval_if< - Case17, mpl::identity, mpl::eval_if< - Case18, mpl::identity, mpl::eval_if< - Case19, mpl::identity, mpl::if_< - Case20, Type20, mpl::void_ > > > > > > > > > - > result2; - typedef typename - mpl::eval_if< - is_same, - result2, - mpl::identity - >::type type; - }; - - template - struct remove_extent { - static T* ar; - BOOST_STATIC_CONSTANT(std::size_t, size = sizeof(*ar) / sizeof((*ar)[0])); - - typedef typename - select< - is_same, bool, - is_same, char, - is_same, signed char, - is_same, unsigned char, - #ifndef BOOST_NO_INTRINSIC_WCHAR_T - is_same, wchar_t, - #endif - is_same, short, - is_same, unsigned short, - is_same, int, - is_same, unsigned int, - is_same, long, - is_same, unsigned long, - is_same, float, - is_same, double, - is_same, long double - >::type result1; - typedef typename - select< - is_same, const bool, - is_same, const char, - is_same, const signed char, - is_same, const unsigned char, - #ifndef BOOST_NO_INTRINSIC_WCHAR_T - is_same, const wchar_t, - #endif - is_same, const short, - is_same, const unsigned short, - is_same, const int, - is_same, const unsigned int, - is_same, const long, - is_same, const unsigned long, - is_same, const float, - is_same, const double, - is_same, const long double - > result2; - typedef typename - mpl::eval_if< - is_same, - result2, - mpl::identity - >::type type; - }; - - } // namespace 'range_detail' - -} // namespace 'boost' - - -#endif diff --git a/src/boost/boost/range/detail/size_type.hpp b/src/boost/boost/range/detail/size_type.hpp deleted file mode 100644 index 1786e6a6e..000000000 --- a/src/boost/boost/range/detail/size_type.hpp +++ /dev/null @@ -1,55 +0,0 @@ -// Boost.Range library -// -// Copyright Thorsten Ottosen 2003-2004. Use, modification and -// distribution is subject to the Boost Software License, Version -// 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// For more information, see http://www.boost.org/libs/range/ -// - -#ifndef BOOST_RANGE_DETAIL_SIZE_TYPE_HPP -#define BOOST_RANGE_DETAIL_SIZE_TYPE_HPP - -#include - -////////////////////////////////////////////////////////////////////////////// -// missing partial specialization workaround. -////////////////////////////////////////////////////////////////////////////// - -namespace boost -{ - namespace range_detail - { - template< typename T > - struct range_size_type_ - { - template< typename C > - struct pts - { - typedef std::size_t type; - }; - }; - - template<> - struct range_size_type_ - { - template< typename C > - struct pts - { - typedef BOOST_RANGE_DEDUCED_TYPENAME C::size_type type; - }; - }; - } - - template< typename C > - class range_size - { - typedef typename range_detail::range::type c_type; - public: - typedef typename range_detail::range_size_type_::BOOST_NESTED_TEMPLATE pts::type type; - }; -} - -#endif - diff --git a/src/boost/boost/range/detail/value_type.hpp b/src/boost/boost/range/detail/value_type.hpp deleted file mode 100644 index 54593e3df..000000000 --- a/src/boost/boost/range/detail/value_type.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// Boost.Range library -// -// Copyright Thorsten Ottosen 2003-2004. Use, modification and -// distribution is subject to the Boost Software License, Version -// 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// For more information, see http://www.boost.org/libs/range/ -// - -#ifndef BOOST_RANGE_DETAIL_VALUE_TYPE_HPP -#define BOOST_RANGE_DETAIL_VALUE_TYPE_HPP - -#include -#include -#include - -////////////////////////////////////////////////////////////////////////////// -// missing partial specialization workaround. -////////////////////////////////////////////////////////////////////////////// - -namespace boost -{ - namespace range_detail - { - template< typename T > - struct range_value_type_; - - template<> - struct range_value_type_ - { - template< typename C > - struct pts - { - typedef BOOST_RANGE_DEDUCED_TYPENAME C::value_type type; - }; - }; - - template<> - struct range_value_type_ - { - template< typename P > - struct pts - { - typedef BOOST_RANGE_DEDUCED_TYPENAME boost::iterator_value< BOOST_RANGE_DEDUCED_TYPENAME P::first_type >::type type; - }; - }; - - template<> - struct range_value_type_ - { - template< typename T > - struct pts - { - typedef BOOST_DEDUCED_TYPENAME remove_extent::type type; - }; - }; - - } - - template< typename C > - class range_value - { - typedef BOOST_DEDUCED_TYPENAME range_detail::range::type c_type; - public: - typedef BOOST_DEDUCED_TYPENAME range_detail::range_value_type_::BOOST_NESTED_TEMPLATE pts::type type; - }; - -} - -#endif - diff --git a/src/boost/boost/range/end.hpp b/src/boost/boost/range/end.hpp index 4e0d02cc6..16ff4172c 100644 --- a/src/boost/boost/range/end.hpp +++ b/src/boost/boost/range/end.hpp @@ -17,10 +17,6 @@ #include -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -#include -#else - #include #include #include @@ -30,7 +26,7 @@ namespace boost { -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) namespace range_detail { #endif @@ -82,7 +78,7 @@ namespace range_detail return range_detail::array_end( a ); } -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) } // namespace 'range_detail' #endif @@ -95,7 +91,7 @@ BOOST_CONSTEXPR #endif inline BOOST_DEDUCED_TYPENAME range_iterator::type end( T& r ) { -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) using namespace range_detail; #endif return range_end( r ); @@ -107,7 +103,7 @@ BOOST_CONSTEXPR #endif inline BOOST_DEDUCED_TYPENAME range_iterator::type end( const T& r ) { -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) using namespace range_detail; #endif return range_end( r ); @@ -116,8 +112,6 @@ inline BOOST_DEDUCED_TYPENAME range_iterator::type end( const T& r ) } // namespace range_adl_barrier } // namespace 'boost' -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING - namespace boost { namespace range_adl_barrier diff --git a/src/boost/boost/range/iterator_range_core.hpp b/src/boost/boost/range/iterator_range_core.hpp index 6fdaf522e..7b9cba04a 100644 --- a/src/boost/boost/range/iterator_range_core.hpp +++ b/src/boost/boost/range/iterator_range_core.hpp @@ -637,8 +637,6 @@ class iterator_range_base return iterator_range_detail::greater_or_equal_than( l, r ); } -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -#else template< class Iterator1T, class Iterator2T > inline bool operator==( const iterator_range& l, const iterator_range& r ) @@ -743,8 +741,6 @@ class iterator_range_base return iterator_range_detail::greater_or_equal_than( l, r ); } -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING - // iterator range utilities -----------------------------------------// //! iterator_range construct helper @@ -769,17 +765,6 @@ class iterator_range_base return iterator_range(first, boost::next(first, n)); } -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - - template< typename Range > - inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > - make_iterator_range( Range& r ) - { - return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > - ( boost::begin( r ), boost::end( r ) ); - } - -#else //! iterator_range construct helper /*! Construct an \c iterator_range from a \c Range containing the begin @@ -801,8 +786,6 @@ class iterator_range_base ( r, iterator_range_detail::const_range_tag() ); } -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING - namespace iterator_range_detail { template< class Range > @@ -827,19 +810,6 @@ class iterator_range_base } } -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - - template< class Range > - inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > - make_iterator_range( Range& r, - BOOST_DEDUCED_TYPENAME range_difference::type advance_begin, - BOOST_DEDUCED_TYPENAME range_difference::type advance_end ) - { - return iterator_range_detail::make_range_impl( r, advance_begin, advance_end ); - } - -#else - template< class Range > inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator::type > make_iterator_range( Range& r, @@ -858,8 +828,6 @@ class iterator_range_base return iterator_range_detail::make_range_impl( r, advance_begin, advance_end ); } -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING - //! copy a range into a sequence /*! Construct a new sequence of the specified type from the elements diff --git a/src/boost/boost/range/rbegin.hpp b/src/boost/boost/range/rbegin.hpp index 1809e8a4a..335b1dc3f 100644 --- a/src/boost/boost/range/rbegin.hpp +++ b/src/boost/boost/range/rbegin.hpp @@ -21,17 +21,6 @@ namespace boost { -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - -template< class C > -inline BOOST_DEDUCED_TYPENAME range_reverse_iterator::type -rbegin( C& c ) -{ - return BOOST_DEDUCED_TYPENAME range_reverse_iterator::type( boost::end( c ) ); -} - -#else - template< class C > inline BOOST_DEDUCED_TYPENAME range_reverse_iterator::type rbegin( C& c ) @@ -50,8 +39,6 @@ rbegin( const C& c ) return iter_type( boost::end( c ) ); } -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING - template< class T > inline BOOST_DEDUCED_TYPENAME range_reverse_iterator::type const_rbegin( const T& r ) diff --git a/src/boost/boost/range/rend.hpp b/src/boost/boost/range/rend.hpp index 56896f204..b437a5c46 100644 --- a/src/boost/boost/range/rend.hpp +++ b/src/boost/boost/range/rend.hpp @@ -21,17 +21,6 @@ namespace boost { -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - -template< class C > -inline BOOST_DEDUCED_TYPENAME range_reverse_iterator::type -rend( C& c ) -{ - return BOOST_DEDUCED_TYPENAME range_reverse_iterator::type( boost::begin( c ) ); -} - -#else - template< class C > inline BOOST_DEDUCED_TYPENAME range_reverse_iterator::type rend( C& c ) @@ -50,8 +39,6 @@ rend( const C& c ) return iter_type( boost::begin( c ) ); } -#endif - template< class T > inline BOOST_DEDUCED_TYPENAME range_reverse_iterator::type const_rend( const T& r ) diff --git a/src/boost/boost/range/size.hpp b/src/boost/boost/range/size.hpp index 5760f4f04..ab44e0957 100644 --- a/src/boost/boost/range/size.hpp +++ b/src/boost/boost/range/size.hpp @@ -62,7 +62,7 @@ namespace boost BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept)); #endif -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \ +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) && \ !BOOST_WORKAROUND(__GNUC__, < 3) \ /**/ using namespace range_detail; diff --git a/src/boost/boost/regex.hpp b/src/boost/boost/regex.hpp deleted file mode 100644 index e73ac881d..000000000 --- a/src/boost/boost/regex.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org/libs/regex for documentation. - * FILE regex.cpp - * VERSION see - * DESCRIPTION: Declares boost::basic_regex<> and associated - * functions and classes. This header is the main - * entry point for the template regex code. - */ - - -/* start with C compatibility API */ - -#ifndef BOOST_RE_REGEX_HPP -#define BOOST_RE_REGEX_HPP - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif - -#include - -#endif // include - - - - diff --git a/src/boost/boost/regex/config.hpp b/src/boost/boost/regex/config.hpp deleted file mode 100644 index 858c10e3e..000000000 --- a/src/boost/boost/regex/config.hpp +++ /dev/null @@ -1,487 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE config.hpp - * VERSION see - * DESCRIPTION: regex extended config setup. - */ - -#ifndef BOOST_REGEX_CONFIG_HPP -#define BOOST_REGEX_CONFIG_HPP -/* - * Borland C++ Fix/error check - * this has to go *before* we include any std lib headers: - */ -#if defined(__BORLANDC__) -# include -#endif -#include - -/***************************************************************************** - * - * Include all the headers we need here: - * - ****************************************************************************/ - -#ifdef __cplusplus - -# ifndef BOOST_REGEX_USER_CONFIG -# define BOOST_REGEX_USER_CONFIG -# endif - -# include BOOST_REGEX_USER_CONFIG - -# include -# include - -#else - /* - * C build, - * don't include because that may - * do C++ specific things in future... - */ -# include -# include -# ifdef _MSC_VER -# define BOOST_MSVC _MSC_VER -# endif -#endif - -/***************************************************************************** - * - * Boilerplate regex config options: - * - ****************************************************************************/ - -/* Obsolete macro, use BOOST_VERSION instead: */ -#define BOOST_RE_VERSION 320 - -/* fix: */ -#if defined(_UNICODE) && !defined(UNICODE) -#define UNICODE -#endif - - -/* -* Define a macro for the namespace that details are placed in, this includes the Boost -* version number to avoid mismatched header and library versions: -*/ -#define BOOST_REGEX_DETAIL_NS BOOST_JOIN(re_detail_, BOOST_VERSION) - -/* - * Fix for gcc prior to 3.4: std::ctype doesn't allow - * masks to be combined, for example: - * std::use_facet >.is(std::ctype_base::lower|std::ctype_base::upper, L'a'); - * returns *false*. - */ -#ifdef __GLIBCPP__ -# define BOOST_REGEX_BUGGY_CTYPE_FACET -#endif - -/* - * Intel C++ before 8.0 ends up with unresolved externals unless we turn off - * extern template support: - */ -#if defined(BOOST_INTEL) && defined(__cplusplus) && (BOOST_INTEL <= 800) -# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES -#endif -/* - * Visual C++ doesn't support external templates with C++ extensions turned off: - */ -#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS) -# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES -#endif - /* - * Oracle compiler in C++11 mode doesn't like external templates for some reason: - */ -#ifdef __SUNPRO_CC -# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES -#endif - /* - * Shared regex lib will crash without this, frankly it looks a lot like a gcc bug: - */ -#if defined(__MINGW32__) -# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES -#endif -/* - * Clang fails to export template instances with -fvisibility=hidden, see - * https://github.com/boostorg/regex/issues/49 - */ -#ifdef __clang__ -# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES -#endif - -/* - * If there isn't good enough wide character support then there will - * be no wide character regular expressions: - */ -#if (defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING)) -# if !defined(BOOST_NO_WREGEX) -# define BOOST_NO_WREGEX -# endif -#else -# if defined(__sgi) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) - /* STLPort on IRIX is misconfigured: does not compile - * as a temporary fix include instead and prevent inclusion - * of STLPort version of */ -# include -# define __STLPORT_CWCTYPE -# define _STLP_CWCTYPE -# endif - -#ifdef __cplusplus -# include -#endif - -#endif - -/* - * If Win32 support has been disabled for boost in general, then - * it is for regex in particular: - */ -#if defined(BOOST_DISABLE_WIN32) && !defined(BOOST_REGEX_NO_W32) -# define BOOST_REGEX_NO_W32 -#endif - -/* disable our own file-iterators and mapfiles if we can't - * support them: */ -#if defined(_WIN32) -# if defined(BOOST_REGEX_NO_W32) || BOOST_PLAT_WINDOWS_RUNTIME -# define BOOST_REGEX_NO_FILEITER -# endif -#else /* defined(_WIN32) */ -# if !defined(BOOST_HAS_DIRENT_H) -# define BOOST_REGEX_NO_FILEITER -# endif -#endif - -/* backwards compatibitity: */ -#if defined(BOOST_RE_NO_LIB) -# define BOOST_REGEX_NO_LIB -#endif - -#if defined(__GNUC__) && !defined(_MSC_VER) && (defined(_WIN32) || defined(__CYGWIN__)) -/* gcc on win32 has problems if you include - (sporadically generates bad code). */ -# define BOOST_REGEX_NO_W32 -#endif -#if defined(__COMO__) && !defined(BOOST_REGEX_NO_W32) && !defined(_MSC_EXTENSIONS) -# define BOOST_REGEX_NO_W32 -#endif - -/***************************************************************************** - * - * Wide character workarounds: - * - ****************************************************************************/ - -/* - * define BOOST_REGEX_HAS_OTHER_WCHAR_T when wchar_t is a native type, but the users - * code may be built with wchar_t as unsigned short: basically when we're building - * with MSVC and the /Zc:wchar_t option we place some extra unsigned short versions - * of the non-inline functions in the library, so that users can still link to the lib, - * irrespective of whether their own code is built with /Zc:wchar_t. - * Note that this does NOT WORK with VC10 and VC14 when the C++ locale is in effect as - * the locale's facets simply do not compile in that case. - * As we default to the C++ locale when compiling for the windows runtime we - * skip in this case aswell. - */ -#if defined(__cplusplus) && \ - (defined(BOOST_MSVC) || defined(__ICL)) && \ - !defined(BOOST_NO_INTRINSIC_WCHAR_T) && \ - defined(BOOST_WINDOWS) && \ - !defined(__SGI_STL_PORT) && \ - !defined(_STLPORT_VERSION) && \ - !defined(BOOST_RWSTD_VER) && \ - ((_MSC_VER < 1600) || !defined(BOOST_REGEX_USE_CPP_LOCALE)) && \ - !BOOST_PLAT_WINDOWS_RUNTIME -# define BOOST_REGEX_HAS_OTHER_WCHAR_T -# ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable : 4251) -#if BOOST_MSVC < 1700 -# pragma warning(disable : 4231) -#endif -# if BOOST_MSVC < 1600 -# pragma warning(disable : 4660) -# endif -# endif -# if defined(_DLL) && defined(BOOST_MSVC) && (BOOST_MSVC < 1600) -# include - extern template class __declspec(dllimport) std::basic_string; -# endif -# ifdef BOOST_MSVC -# pragma warning(pop) -# endif -#endif - - -/***************************************************************************** - * - * Set up dll import/export options: - * - ****************************************************************************/ - -#ifndef BOOST_SYMBOL_EXPORT -# define BOOST_SYMBOL_EXPORT -# define BOOST_SYMBOL_IMPORT -#endif - -#if (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK) -# if defined(BOOST_REGEX_SOURCE) -# define BOOST_REGEX_DECL BOOST_SYMBOL_EXPORT -# define BOOST_REGEX_BUILD_DLL -# else -# define BOOST_REGEX_DECL BOOST_SYMBOL_IMPORT -# endif -#else -# define BOOST_REGEX_DECL -#endif - -#if !defined(BOOST_REGEX_NO_LIB) && !defined(BOOST_REGEX_SOURCE) && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus) -# define BOOST_LIB_NAME boost_regex -# if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK) -# define BOOST_DYN_LINK -# endif -# ifdef BOOST_REGEX_DIAG -# define BOOST_LIB_DIAGNOSTIC -# endif -# include -#endif - -/***************************************************************************** - * - * Set up function call type: - * - ****************************************************************************/ - -#if defined(_MSC_VER) && defined(_MSC_EXTENSIONS) -#if defined(_DEBUG) || defined(__MSVC_RUNTIME_CHECKS) || defined(_MANAGED) || defined(BOOST_REGEX_NO_FASTCALL) -# define BOOST_REGEX_CALL __cdecl -#else -# define BOOST_REGEX_CALL __fastcall -#endif -# define BOOST_REGEX_CCALL __cdecl -#endif - -#if defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32) -# define BOOST_REGEX_CALL __fastcall -# define BOOST_REGEX_CCALL __stdcall -#endif - -#ifndef BOOST_REGEX_CALL -# define BOOST_REGEX_CALL -#endif -#ifndef BOOST_REGEX_CCALL -#define BOOST_REGEX_CCALL -#endif - -/***************************************************************************** - * - * Set up localisation model: - * - ****************************************************************************/ - -/* backwards compatibility: */ -#ifdef BOOST_RE_LOCALE_C -# define BOOST_REGEX_USE_C_LOCALE -#endif - -#ifdef BOOST_RE_LOCALE_CPP -# define BOOST_REGEX_USE_CPP_LOCALE -#endif - -#if defined(__CYGWIN__) -# define BOOST_REGEX_USE_C_LOCALE -#endif - -/* use C++ locale when targeting windows store */ -#if BOOST_PLAT_WINDOWS_RUNTIME -# define BOOST_REGEX_USE_CPP_LOCALE -# define BOOST_REGEX_NO_WIN32_LOCALE -#endif - -/* Win32 defaults to native Win32 locale: */ -#if defined(_WIN32) && \ - !defined(BOOST_REGEX_USE_WIN32_LOCALE) && \ - !defined(BOOST_REGEX_USE_C_LOCALE) && \ - !defined(BOOST_REGEX_USE_CPP_LOCALE) && \ - !defined(BOOST_REGEX_NO_W32) && \ - !defined(BOOST_REGEX_NO_WIN32_LOCALE) -# define BOOST_REGEX_USE_WIN32_LOCALE -#endif -/* otherwise use C++ locale if supported: */ -#if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_NO_STD_LOCALE) -# define BOOST_REGEX_USE_CPP_LOCALE -#endif -/* otherwise use C+ locale: */ -#if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) -# define BOOST_REGEX_USE_C_LOCALE -#endif - -#ifndef BOOST_REGEX_MAX_STATE_COUNT -# define BOOST_REGEX_MAX_STATE_COUNT 100000000 -#endif - - -/***************************************************************************** - * - * Error Handling for exception free compilers: - * - ****************************************************************************/ - -#ifdef BOOST_NO_EXCEPTIONS -/* - * If there are no exceptions then we must report critical-errors - * the only way we know how; by terminating. - */ -#include -#include -#include - -# define BOOST_REGEX_NOEH_ASSERT(x)\ -if(0 == (x))\ -{\ - std::string s("Error: critical regex++ failure in: ");\ - s.append(#x);\ - std::runtime_error e(s);\ - boost::throw_exception(e);\ -} -#else -/* - * With exceptions then error handling is taken care of and - * there is no need for these checks: - */ -# define BOOST_REGEX_NOEH_ASSERT(x) -#endif - - -/***************************************************************************** - * - * Stack protection under MS Windows: - * - ****************************************************************************/ - -#if !defined(BOOST_REGEX_NO_W32) && !defined(BOOST_REGEX_V3) -# if(defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \ - && !defined(__GNUC__) \ - && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \ - && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003)) -# define BOOST_REGEX_HAS_MS_STACK_GUARD -# endif -#elif defined(BOOST_REGEX_HAS_MS_STACK_GUARD) -# undef BOOST_REGEX_HAS_MS_STACK_GUARD -#endif - -#if defined(__cplusplus) && defined(BOOST_REGEX_HAS_MS_STACK_GUARD) - -namespace boost{ -namespace BOOST_REGEX_DETAIL_NS{ - -BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page(); - -} -} - -#endif - - -/***************************************************************************** - * - * Algorithm selection and configuration: - * - ****************************************************************************/ - -#if !defined(BOOST_REGEX_RECURSIVE) && !defined(BOOST_REGEX_NON_RECURSIVE) -# if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && !defined(_STLP_DEBUG) && !defined(__STL_DEBUG) && !(defined(_MSC_VER) && (_MSC_VER >= 1400)) -# define BOOST_REGEX_RECURSIVE -# else -# define BOOST_REGEX_NON_RECURSIVE -# endif -#endif - -#ifdef BOOST_REGEX_NON_RECURSIVE -# ifdef BOOST_REGEX_RECURSIVE -# error "Can't set both BOOST_REGEX_RECURSIVE and BOOST_REGEX_NON_RECURSIVE" -# endif -# ifndef BOOST_REGEX_BLOCKSIZE -# define BOOST_REGEX_BLOCKSIZE 4096 -# endif -# if BOOST_REGEX_BLOCKSIZE < 512 -# error "BOOST_REGEX_BLOCKSIZE must be at least 512" -# endif -# ifndef BOOST_REGEX_MAX_BLOCKS -# define BOOST_REGEX_MAX_BLOCKS 1024 -# endif -# ifdef BOOST_REGEX_HAS_MS_STACK_GUARD -# undef BOOST_REGEX_HAS_MS_STACK_GUARD -# endif -# ifndef BOOST_REGEX_MAX_CACHE_BLOCKS -# define BOOST_REGEX_MAX_CACHE_BLOCKS 16 -# endif -#endif - - -/***************************************************************************** - * - * helper memory allocation functions: - * - ****************************************************************************/ - -#if defined(__cplusplus) && defined(BOOST_REGEX_NON_RECURSIVE) -namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ - -BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block(); -BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void*); - -}} /* namespaces */ -#endif - -/***************************************************************************** - * - * Diagnostics: - * - ****************************************************************************/ - -#ifdef BOOST_REGEX_CONFIG_INFO -BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info(); -#endif - -#if defined(BOOST_REGEX_DIAG) -# pragma message ("BOOST_REGEX_DECL" BOOST_STRINGIZE(=BOOST_REGEX_DECL)) -# pragma message ("BOOST_REGEX_CALL" BOOST_STRINGIZE(=BOOST_REGEX_CALL)) -# pragma message ("BOOST_REGEX_CCALL" BOOST_STRINGIZE(=BOOST_REGEX_CCALL)) -#ifdef BOOST_REGEX_USE_C_LOCALE -# pragma message ("Using C locale in regex traits class") -#elif BOOST_REGEX_USE_CPP_LOCALE -# pragma message ("Using C++ locale in regex traits class") -#else -# pragma message ("Using Win32 locale in regex traits class") -#endif -#if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK) -# pragma message ("Dynamic linking enabled") -#endif -#if defined(BOOST_REGEX_NO_LIB) || defined(BOOST_ALL_NO_LIB) -# pragma message ("Auto-linking disabled") -#endif -#ifdef BOOST_REGEX_NO_EXTERNAL_TEMPLATES -# pragma message ("Extern templates disabled") -#endif - -#endif - -#endif - - - - diff --git a/src/boost/boost/regex/config/borland.hpp b/src/boost/boost/regex/config/borland.hpp deleted file mode 100644 index 62781a2a7..000000000 --- a/src/boost/boost/regex/config/borland.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE boost/regex/config/borland.hpp - * VERSION see - * DESCRIPTION: regex borland-specific config setup. - */ - - -#if defined(__BORLANDC__) -# if (__BORLANDC__ == 0x550) || (__BORLANDC__ == 0x551) - // problems with std::basic_string and dll RTL: -# if defined(_RTLDLL) && defined(_RWSTD_COMPILE_INSTANTIATE) -# ifdef BOOST_REGEX_BUILD_DLL -# error _RWSTD_COMPILE_INSTANTIATE must not be defined when building regex++ as a DLL -# else -# pragma message("Defining _RWSTD_COMPILE_INSTANTIATE when linking to the DLL version of the RTL may produce memory corruption problems in std::basic_string, as a result of separate versions of basic_string's static data in the RTL and you're exe/dll: be warned!!") -# endif -# endif -# ifndef _RTLDLL - // this is harmless for a staic link: -# define _RWSTD_COMPILE_INSTANTIATE -# endif - // external templates cause problems for some reason: -# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES -# endif -# if (__BORLANDC__ <= 0x540) && !defined(BOOST_REGEX_NO_LIB) && !defined(_NO_VCL) - // C++ Builder 4 and earlier, we can't tell whether we should be using - // the VCL runtime or not, do a static link instead: -# define BOOST_REGEX_STATIC_LINK -# endif - // - // VCL support: - // if we're building a console app then there can't be any VCL (can there?) -# if !defined(__CONSOLE__) && !defined(_NO_VCL) -# define BOOST_REGEX_USE_VCL -# endif - // - // if this isn't Win32 then don't automatically select link - // libraries: - // -# ifndef _Windows -# ifndef BOOST_REGEX_NO_LIB -# define BOOST_REGEX_NO_LIB -# endif -# ifndef BOOST_REGEX_STATIC_LINK -# define BOOST_REGEX_STATIC_LINK -# endif -# endif - -#if __BORLANDC__ < 0x600 -// -// string workarounds: -// -#include -#undef strcmp -#undef strcpy -#endif - -#endif - - diff --git a/src/boost/boost/regex/config/cwchar.hpp b/src/boost/boost/regex/config/cwchar.hpp deleted file mode 100644 index b35fca915..000000000 --- a/src/boost/boost/regex/config/cwchar.hpp +++ /dev/null @@ -1,207 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE boost/regex/config/cwchar.hpp - * VERSION see - * DESCRIPTION: regex wide character string fixes. - */ - -#ifndef BOOST_REGEX_CONFIG_CWCHAR_HPP -#define BOOST_REGEX_CONFIG_CWCHAR_HPP - -#include -#include -#include - -#if defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER) -// apparently this is required for the RW STL on Linux: -#undef iswalnum -#undef iswalpha -#undef iswblank -#undef iswcntrl -#undef iswdigit -#undef iswgraph -#undef iswlower -#undef iswprint -#undef iswprint -#undef iswpunct -#undef iswspace -#undef iswupper -#undef iswxdigit -#undef iswctype -#undef towlower -#undef towupper -#undef towctrans -#undef wctrans -#undef wctype -#endif - -namespace std{ - -#ifndef BOOST_NO_STDC_NAMESPACE -extern "C"{ -#endif - -#ifdef iswalnum -inline int (iswalnum)(wint_t i) -{ return iswalnum(i); } -#undef iswalnum -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswalnum; -#endif - -#ifdef iswalpha -inline int (iswalpha)(wint_t i) -{ return iswalpha(i); } -#undef iswalpha -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswalpha; -#endif - -#ifdef iswcntrl -inline int (iswcntrl)(wint_t i) -{ return iswcntrl(i); } -#undef iswcntrl -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswcntrl; -#endif - -#ifdef iswdigit -inline int (iswdigit)(wint_t i) -{ return iswdigit(i); } -#undef iswdigit -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswdigit; -#endif - -#ifdef iswgraph -inline int (iswgraph)(wint_t i) -{ return iswgraph(i); } -#undef iswgraph -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswgraph; -#endif - -#ifdef iswlower -inline int (iswlower)(wint_t i) -{ return iswlower(i); } -#undef iswlower -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswlower; -#endif - -#ifdef iswprint -inline int (iswprint)(wint_t i) -{ return iswprint(i); } -#undef iswprint -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswprint; -#endif - -#ifdef iswpunct -inline int (iswpunct)(wint_t i) -{ return iswpunct(i); } -#undef iswpunct -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswpunct; -#endif - -#ifdef iswspace -inline int (iswspace)(wint_t i) -{ return iswspace(i); } -#undef iswspace -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswspace; -#endif - -#ifdef iswupper -inline int (iswupper)(wint_t i) -{ return iswupper(i); } -#undef iswupper -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswupper; -#endif - -#ifdef iswxdigit -inline int (iswxdigit)(wint_t i) -{ return iswxdigit(i); } -#undef iswxdigit -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswxdigit; -#endif - -#ifdef towlower -inline wint_t (towlower)(wint_t i) -{ return towlower(i); } -#undef towlower -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::towlower; -#endif - -#ifdef towupper -inline wint_t (towupper)(wint_t i) -{ return towupper(i); } -#undef towupper -#elif defined(BOOST_NO_STDC_NAMESPACE) -using :: towupper; -#endif - -#ifdef wcscmp -inline int (wcscmp)(const wchar_t *p1, const wchar_t *p2) -{ return wcscmp(p1,p2); } -#undef wcscmp -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::wcscmp; -#endif - -#ifdef wcscoll -inline int (wcscoll)(const wchar_t *p1, const wchar_t *p2) -{ return wcscoll(p1,p2); } -#undef wcscoll -#elif defined(BOOST_NO_STDC_NAMESPACE) && !defined(UNDER_CE) -using ::wcscoll; -#endif - -#ifdef wcscpy -inline wchar_t *(wcscpy)(wchar_t *p1, const wchar_t *p2) -{ return wcscpy(p1,p2); } -#undef wcscpy -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::wcscpy; -#endif - -#ifdef wcslen -inline size_t (wcslen)(const wchar_t *p) -{ return wcslen(p); } -#undef wcslen -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::wcslen; -#endif - -#ifdef wcsxfrm -size_t wcsxfrm(wchar_t *p1, const wchar_t *p2, size_t s) -{ return wcsxfrm(p1,p2,s); } -#undef wcsxfrm -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::wcsxfrm; -#endif - - -#ifndef BOOST_NO_STDC_NAMESPACE -} // extern "C" -#endif - -} // namespace std - -#endif - diff --git a/src/boost/boost/regex/icu.hpp b/src/boost/boost/regex/icu.hpp deleted file mode 100644 index 3dfc0ff24..000000000 --- a/src/boost/boost/regex/icu.hpp +++ /dev/null @@ -1,1069 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE icu.hpp - * VERSION see - * DESCRIPTION: Unicode regular expressions on top of the ICU Library. - */ - -#ifndef BOOST_REGEX_ICU_HPP -#define BOOST_REGEX_ICU_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef BOOST_MSVC -#pragma warning (push) -#pragma warning (disable: 4251) -#endif - -namespace boost{ - -namespace BOOST_REGEX_DETAIL_NS{ - -// -// Implementation details: -// -class BOOST_REGEX_DECL icu_regex_traits_implementation -{ - typedef UChar32 char_type; - typedef std::size_t size_type; - typedef std::vector string_type; - typedef U_NAMESPACE_QUALIFIER Locale locale_type; - typedef boost::uint_least32_t char_class_type; -public: - icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& l) - : m_locale(l) - { - UErrorCode success = U_ZERO_ERROR; - m_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success)); - if(U_SUCCESS(success) == 0) - init_error(); - m_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::IDENTICAL); - success = U_ZERO_ERROR; - m_primary_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success)); - if(U_SUCCESS(success) == 0) - init_error(); - m_primary_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::PRIMARY); - } - U_NAMESPACE_QUALIFIER Locale getloc()const - { - return m_locale; - } - string_type do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const; - string_type transform(const char_type* p1, const char_type* p2) const - { - return do_transform(p1, p2, m_collator.get()); - } - string_type transform_primary(const char_type* p1, const char_type* p2) const - { - return do_transform(p1, p2, m_primary_collator.get()); - } -private: - void init_error() - { - std::runtime_error e("Could not initialize ICU resources"); - boost::throw_exception(e); - } - U_NAMESPACE_QUALIFIER Locale m_locale; // The ICU locale that we're using - boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_collator; // The full collation object - boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_primary_collator; // The primary collation object -}; - -inline boost::shared_ptr get_icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& loc) -{ - return boost::shared_ptr(new icu_regex_traits_implementation(loc)); -} - -} - -class BOOST_REGEX_DECL icu_regex_traits -{ -public: - typedef UChar32 char_type; - typedef std::size_t size_type; - typedef std::vector string_type; - typedef U_NAMESPACE_QUALIFIER Locale locale_type; -#ifdef BOOST_NO_INT64_T - typedef std::bitset<64> char_class_type; -#else - typedef boost::uint64_t char_class_type; -#endif - - struct boost_extensions_tag{}; - - icu_regex_traits() - : m_pimpl(BOOST_REGEX_DETAIL_NS::get_icu_regex_traits_implementation(U_NAMESPACE_QUALIFIER Locale())) - { - } - static size_type length(const char_type* p); - - ::boost::regex_constants::syntax_type syntax_type(char_type c)const - { - return ((c < 0x7f) && (c > 0)) ? BOOST_REGEX_DETAIL_NS::get_default_syntax_type(static_cast(c)) : regex_constants::syntax_char; - } - ::boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c) const - { - return ((c < 0x7f) && (c > 0)) ? BOOST_REGEX_DETAIL_NS::get_default_escape_syntax_type(static_cast(c)) : regex_constants::syntax_char; - } - char_type translate(char_type c) const - { - return c; - } - char_type translate_nocase(char_type c) const - { - return ::u_tolower(c); - } - char_type translate(char_type c, bool icase) const - { - return icase ? translate_nocase(c) : translate(c); - } - char_type tolower(char_type c) const - { - return ::u_tolower(c); - } - char_type toupper(char_type c) const - { - return ::u_toupper(c); - } - string_type transform(const char_type* p1, const char_type* p2) const - { - return m_pimpl->transform(p1, p2); - } - string_type transform_primary(const char_type* p1, const char_type* p2) const - { - return m_pimpl->transform_primary(p1, p2); - } - char_class_type lookup_classname(const char_type* p1, const char_type* p2) const; - string_type lookup_collatename(const char_type* p1, const char_type* p2) const; - bool isctype(char_type c, char_class_type f) const; - boost::intmax_t toi(const char_type*& p1, const char_type* p2, int radix)const - { - return BOOST_REGEX_DETAIL_NS::global_toi(p1, p2, radix, *this); - } - int value(char_type c, int radix)const - { - return u_digit(c, static_cast< ::int8_t>(radix)); - } - locale_type imbue(locale_type l) - { - locale_type result(m_pimpl->getloc()); - m_pimpl = BOOST_REGEX_DETAIL_NS::get_icu_regex_traits_implementation(l); - return result; - } - locale_type getloc()const - { - return locale_type(); - } - std::string error_string(::boost::regex_constants::error_type n) const - { - return BOOST_REGEX_DETAIL_NS::get_default_error_string(n); - } -private: - icu_regex_traits(const icu_regex_traits&); - icu_regex_traits& operator=(const icu_regex_traits&); - - // - // define the bitmasks offsets we need for additional character properties: - // - enum{ - offset_blank = U_CHAR_CATEGORY_COUNT, - offset_space = U_CHAR_CATEGORY_COUNT+1, - offset_xdigit = U_CHAR_CATEGORY_COUNT+2, - offset_underscore = U_CHAR_CATEGORY_COUNT+3, - offset_unicode = U_CHAR_CATEGORY_COUNT+4, - offset_any = U_CHAR_CATEGORY_COUNT+5, - offset_ascii = U_CHAR_CATEGORY_COUNT+6, - offset_horizontal = U_CHAR_CATEGORY_COUNT+7, - offset_vertical = U_CHAR_CATEGORY_COUNT+8 - }; - - // - // and now the masks: - // - static const char_class_type mask_blank; - static const char_class_type mask_space; - static const char_class_type mask_xdigit; - static const char_class_type mask_underscore; - static const char_class_type mask_unicode; - static const char_class_type mask_any; - static const char_class_type mask_ascii; - static const char_class_type mask_horizontal; - static const char_class_type mask_vertical; - - static char_class_type lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2); - - boost::shared_ptr< ::boost::BOOST_REGEX_DETAIL_NS::icu_regex_traits_implementation> m_pimpl; -}; - -} // namespace boost - -// -// template instances: -// -#define BOOST_REGEX_CHAR_T UChar32 -#undef BOOST_REGEX_TRAITS_T -#define BOOST_REGEX_TRAITS_T , icu_regex_traits -#define BOOST_REGEX_ICU_INSTANCES -#ifdef BOOST_REGEX_ICU_INSTANTIATE -# define BOOST_REGEX_INSTANTIATE -#endif -#include -#undef BOOST_REGEX_CHAR_T -#undef BOOST_REGEX_TRAITS_T -#undef BOOST_REGEX_ICU_INSTANCES -#ifdef BOOST_REGEX_INSTANTIATE -# undef BOOST_REGEX_INSTANTIATE -#endif - -namespace boost{ - -// types: -typedef basic_regex< ::UChar32, icu_regex_traits> u32regex; -typedef match_results u32match; -typedef match_results u16match; - -// -// Construction of 32-bit regex types from UTF-8 and UTF-16 primitives: -// -namespace BOOST_REGEX_DETAIL_NS{ - -#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) -template -inline u32regex do_make_u32regex(InputIterator i, - InputIterator j, - boost::regex_constants::syntax_option_type opt, - const boost::mpl::int_<1>*) -{ - typedef boost::u8_to_u32_iterator conv_type; - return u32regex(conv_type(i, i, j), conv_type(j, i, j), opt); -} - -template -inline u32regex do_make_u32regex(InputIterator i, - InputIterator j, - boost::regex_constants::syntax_option_type opt, - const boost::mpl::int_<2>*) -{ - typedef boost::u16_to_u32_iterator conv_type; - return u32regex(conv_type(i, i, j), conv_type(j, i, j), opt); -} - -template -inline u32regex do_make_u32regex(InputIterator i, - InputIterator j, - boost::regex_constants::syntax_option_type opt, - const boost::mpl::int_<4>*) -{ - return u32regex(i, j, opt); -} -#else -template -inline u32regex do_make_u32regex(InputIterator i, - InputIterator j, - boost::regex_constants::syntax_option_type opt, - const boost::mpl::int_<1>*) -{ - typedef boost::u8_to_u32_iterator conv_type; - typedef std::vector vector_type; - vector_type v; - conv_type a(i, i, j), b(j, i, j); - while(a != b) - { - v.push_back(*a); - ++a; - } - if(v.size()) - return u32regex(&*v.begin(), v.size(), opt); - return u32regex(static_cast(0), static_cast(0), opt); -} - -template -inline u32regex do_make_u32regex(InputIterator i, - InputIterator j, - boost::regex_constants::syntax_option_type opt, - const boost::mpl::int_<2>*) -{ - typedef boost::u16_to_u32_iterator conv_type; - typedef std::vector vector_type; - vector_type v; - conv_type a(i, i, j), b(j, i, j); - while(a != b) - { - v.push_back(*a); - ++a; - } - if(v.size()) - return u32regex(&*v.begin(), v.size(), opt); - return u32regex(static_cast(0), static_cast(0), opt); -} - -template -inline u32regex do_make_u32regex(InputIterator i, - InputIterator j, - boost::regex_constants::syntax_option_type opt, - const boost::mpl::int_<4>*) -{ - typedef std::vector vector_type; - vector_type v; - while(i != j) - { - v.push_back((UChar32)(*i)); - ++i; - } - if(v.size()) - return u32regex(&*v.begin(), v.size(), opt); - return u32regex(static_cast(0), static_cast(0), opt); -} -#endif -} - -// BOOST_REGEX_UCHAR_IS_WCHAR_T -// -// Source inspection of unicode/umachine.h in ICU version 59 indicates that: -// -// On version 59, UChar is always char16_t in C++ mode (and uint16_t in C mode) -// -// On earlier versions, the logic is -// -// #if U_SIZEOF_WCHAR_T==2 -// typedef wchar_t OldUChar; -// #elif defined(__CHAR16_TYPE__) -// typedef __CHAR16_TYPE__ OldUChar; -// #else -// typedef uint16_t OldUChar; -// #endif -// -// That is, UChar is wchar_t only on versions below 59, when U_SIZEOF_WCHAR_T==2 -// -// Hence, - -#define BOOST_REGEX_UCHAR_IS_WCHAR_T (U_ICU_VERSION_MAJOR_NUM < 59 && U_SIZEOF_WCHAR_T == 2) - -#if BOOST_REGEX_UCHAR_IS_WCHAR_T - BOOST_STATIC_ASSERT((boost::is_same::value)); -#else - BOOST_STATIC_ASSERT(!(boost::is_same::value)); -#endif - -// -// Construction from an iterator pair: -// -template -inline u32regex make_u32regex(InputIterator i, - InputIterator j, - boost::regex_constants::syntax_option_type opt) -{ - return BOOST_REGEX_DETAIL_NS::do_make_u32regex(i, j, opt, static_cast const*>(0)); -} -// -// construction from UTF-8 nul-terminated strings: -// -inline u32regex make_u32regex(const char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ - return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + std::strlen(p), opt, static_cast const*>(0)); -} -inline u32regex make_u32regex(const unsigned char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ - return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + std::strlen(reinterpret_cast(p)), opt, static_cast const*>(0)); -} -// -// construction from UTF-16 nul-terminated strings: -// -#ifndef BOOST_NO_WREGEX -inline u32regex make_u32regex(const wchar_t* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ - return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + std::wcslen(p), opt, static_cast const*>(0)); -} -#endif -#if !BOOST_REGEX_UCHAR_IS_WCHAR_T -inline u32regex make_u32regex(const UChar* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ - return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + u_strlen(p), opt, static_cast const*>(0)); -} -#endif -// -// construction from basic_string class-template: -// -template -inline u32regex make_u32regex(const std::basic_string& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ - return BOOST_REGEX_DETAIL_NS::do_make_u32regex(s.begin(), s.end(), opt, static_cast const*>(0)); -} -// -// Construction from ICU string type: -// -inline u32regex make_u32regex(const U_NAMESPACE_QUALIFIER UnicodeString& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ - return BOOST_REGEX_DETAIL_NS::do_make_u32regex(s.getBuffer(), s.getBuffer() + s.length(), opt, static_cast const*>(0)); -} - -// -// regex_match overloads that widen the character type as appropriate: -// -namespace BOOST_REGEX_DETAIL_NS{ -template -void copy_results(MR1& out, MR2 const& in, NSubs named_subs) -{ - // copy results from an adapted MR2 match_results: - out.set_size(in.size(), in.prefix().first.base(), in.suffix().second.base()); - out.set_base(in.base().base()); - out.set_named_subs(named_subs); - for(int i = 0; i < (int)in.size(); ++i) - { - if(in[i].matched || !i) - { - out.set_first(in[i].first.base(), i); - out.set_second(in[i].second.base(), i, in[i].matched); - } - } -#ifdef BOOST_REGEX_MATCH_EXTRA - // Copy full capture info as well: - for(int i = 0; i < (int)in.size(); ++i) - { - if(in[i].captures().size()) - { - out[i].get_captures().assign(in[i].captures().size(), typename MR1::value_type()); - for(int j = 0; j < (int)out[i].captures().size(); ++j) - { - out[i].get_captures()[j].first = in[i].captures()[j].first.base(); - out[i].get_captures()[j].second = in[i].captures()[j].second.base(); - out[i].get_captures()[j].matched = in[i].captures()[j].matched; - } - } - } -#endif -} - -template -inline bool do_regex_match(BidiIterator first, BidiIterator last, - match_results& m, - const u32regex& e, - match_flag_type flags, - boost::mpl::int_<4> const*) -{ - return ::boost::regex_match(first, last, m, e, flags); -} -template -bool do_regex_match(BidiIterator first, BidiIterator last, - match_results& m, - const u32regex& e, - match_flag_type flags, - boost::mpl::int_<2> const*) -{ - typedef u16_to_u32_iterator conv_type; - typedef match_results match_type; - //typedef typename match_type::allocator_type alloc_type; - match_type what; - bool result = ::boost::regex_match(conv_type(first, first, last), conv_type(last, first, last), what, e, flags); - // copy results across to m: - if(result) copy_results(m, what, e.get_named_subs()); - return result; -} -template -bool do_regex_match(BidiIterator first, BidiIterator last, - match_results& m, - const u32regex& e, - match_flag_type flags, - boost::mpl::int_<1> const*) -{ - typedef u8_to_u32_iterator conv_type; - typedef match_results match_type; - //typedef typename match_type::allocator_type alloc_type; - match_type what; - bool result = ::boost::regex_match(conv_type(first, first, last), conv_type(last, first, last), what, e, flags); - // copy results across to m: - if(result) copy_results(m, what, e.get_named_subs()); - return result; -} -} // namespace BOOST_REGEX_DETAIL_NS - -template -inline bool u32regex_match(BidiIterator first, BidiIterator last, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_match(first, last, m, e, flags, static_cast const*>(0)); -} -inline bool u32regex_match(const UChar* p, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast const*>(0)); -} -#if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX) -inline bool u32regex_match(const wchar_t* p, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast const*>(0)); -} -#endif -inline bool u32regex_match(const char* p, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast const*>(0)); -} -inline bool u32regex_match(const unsigned char* p, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast const*>(0)); -} -inline bool u32regex_match(const std::string& s, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast const*>(0)); -} -#ifndef BOOST_NO_STD_WSTRING -inline bool u32regex_match(const std::wstring& s, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast const*>(0)); -} -#endif -inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast const*>(0)); -} -// -// regex_match overloads that do not return what matched: -// -template -inline bool u32regex_match(BidiIterator first, BidiIterator last, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_match(first, last, m, e, flags, static_cast const*>(0)); -} -inline bool u32regex_match(const UChar* p, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast const*>(0)); -} -#if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX) -inline bool u32regex_match(const wchar_t* p, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast const*>(0)); -} -#endif -inline bool u32regex_match(const char* p, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast const*>(0)); -} -inline bool u32regex_match(const unsigned char* p, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast const*>(0)); -} -inline bool u32regex_match(const std::string& s, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast const*>(0)); -} -#ifndef BOOST_NO_STD_WSTRING -inline bool u32regex_match(const std::wstring& s, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast const*>(0)); -} -#endif -inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast const*>(0)); -} - -// -// regex_search overloads that widen the character type as appropriate: -// -namespace BOOST_REGEX_DETAIL_NS{ -template -inline bool do_regex_search(BidiIterator first, BidiIterator last, - match_results& m, - const u32regex& e, - match_flag_type flags, - BidiIterator base, - boost::mpl::int_<4> const*) -{ - return ::boost::regex_search(first, last, m, e, flags, base); -} -template -bool do_regex_search(BidiIterator first, BidiIterator last, - match_results& m, - const u32regex& e, - match_flag_type flags, - BidiIterator base, - boost::mpl::int_<2> const*) -{ - typedef u16_to_u32_iterator conv_type; - typedef match_results match_type; - //typedef typename match_type::allocator_type alloc_type; - match_type what; - bool result = ::boost::regex_search(conv_type(first, first, last), conv_type(last, first, last), what, e, flags, conv_type(base)); - // copy results across to m: - if(result) copy_results(m, what, e.get_named_subs()); - return result; -} -template -bool do_regex_search(BidiIterator first, BidiIterator last, - match_results& m, - const u32regex& e, - match_flag_type flags, - BidiIterator base, - boost::mpl::int_<1> const*) -{ - typedef u8_to_u32_iterator conv_type; - typedef match_results match_type; - //typedef typename match_type::allocator_type alloc_type; - match_type what; - bool result = ::boost::regex_search(conv_type(first, first, last), conv_type(last, first, last), what, e, flags, conv_type(base)); - // copy results across to m: - if(result) copy_results(m, what, e.get_named_subs()); - return result; -} -} - -template -inline bool u32regex_search(BidiIterator first, BidiIterator last, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_search(first, last, m, e, flags, first, static_cast const*>(0)); -} -template -inline bool u32regex_search(BidiIterator first, BidiIterator last, - match_results& m, - const u32regex& e, - match_flag_type flags, - BidiIterator base) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_search(first, last, m, e, flags, base, static_cast const*>(0)); -} -inline bool u32regex_search(const UChar* p, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast const*>(0)); -} -#if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX) -inline bool u32regex_search(const wchar_t* p, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast const*>(0)); -} -#endif -inline bool u32regex_search(const char* p, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast const*>(0)); -} -inline bool u32regex_search(const unsigned char* p, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast const*>(0)); -} -inline bool u32regex_search(const std::string& s, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast const*>(0)); -} -#ifndef BOOST_NO_STD_WSTRING -inline bool u32regex_search(const std::wstring& s, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast const*>(0)); -} -#endif -inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s, - match_results& m, - const u32regex& e, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast const*>(0)); -} -template -inline bool u32regex_search(BidiIterator first, BidiIterator last, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_search(first, last, m, e, flags, first, static_cast const*>(0)); -} -inline bool u32regex_search(const UChar* p, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast const*>(0)); -} -#if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX) -inline bool u32regex_search(const wchar_t* p, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast const*>(0)); -} -#endif -inline bool u32regex_search(const char* p, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast const*>(0)); -} -inline bool u32regex_search(const unsigned char* p, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast const*>(0)); -} -inline bool u32regex_search(const std::string& s, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast const*>(0)); -} -#ifndef BOOST_NO_STD_WSTRING -inline bool u32regex_search(const std::wstring& s, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast const*>(0)); -} -#endif -inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s, - const u32regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return BOOST_REGEX_DETAIL_NS::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast const*>(0)); -} - -// -// overloads for regex_replace with utf-8 and utf-16 data types: -// -namespace BOOST_REGEX_DETAIL_NS{ -template -inline std::pair< boost::u8_to_u32_iterator, boost::u8_to_u32_iterator > - make_utf32_seq(I i, I j, mpl::int_<1> const*) -{ - return std::pair< boost::u8_to_u32_iterator, boost::u8_to_u32_iterator >(boost::u8_to_u32_iterator(i, i, j), boost::u8_to_u32_iterator(j, i, j)); -} -template -inline std::pair< boost::u16_to_u32_iterator, boost::u16_to_u32_iterator > - make_utf32_seq(I i, I j, mpl::int_<2> const*) -{ - return std::pair< boost::u16_to_u32_iterator, boost::u16_to_u32_iterator >(boost::u16_to_u32_iterator(i, i, j), boost::u16_to_u32_iterator(j, i, j)); -} -template -inline std::pair< I, I > - make_utf32_seq(I i, I j, mpl::int_<4> const*) -{ - return std::pair< I, I >(i, j); -} -template -inline std::pair< boost::u8_to_u32_iterator, boost::u8_to_u32_iterator > - make_utf32_seq(const charT* p, mpl::int_<1> const*) -{ - std::size_t len = std::strlen((const char*)p); - return std::pair< boost::u8_to_u32_iterator, boost::u8_to_u32_iterator >(boost::u8_to_u32_iterator(p, p, p+len), boost::u8_to_u32_iterator(p+len, p, p+len)); -} -template -inline std::pair< boost::u16_to_u32_iterator, boost::u16_to_u32_iterator > - make_utf32_seq(const charT* p, mpl::int_<2> const*) -{ - std::size_t len = u_strlen((const UChar*)p); - return std::pair< boost::u16_to_u32_iterator, boost::u16_to_u32_iterator >(boost::u16_to_u32_iterator(p, p, p + len), boost::u16_to_u32_iterator(p+len, p, p + len)); -} -template -inline std::pair< const charT*, const charT* > - make_utf32_seq(const charT* p, mpl::int_<4> const*) -{ - return std::pair< const charT*, const charT* >(p, p+icu_regex_traits::length((UChar32 const*)p)); -} -template -inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> const*) -{ - return o; -} -template -inline utf16_output_iterator make_utf32_out(OutputIterator o, mpl::int_<2> const*) -{ - return o; -} -template -inline utf8_output_iterator make_utf32_out(OutputIterator o, mpl::int_<1> const*) -{ - return o; -} - -template -OutputIterator do_regex_replace(OutputIterator out, - std::pair const& in, - const u32regex& e, - const std::pair& fmt, - match_flag_type flags - ) -{ - // unfortunately we have to copy the format string in order to pass in onward: - std::vector f; -#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS - f.assign(fmt.first, fmt.second); -#else - f.clear(); - I2 pos = fmt.first; - while(pos != fmt.second) - f.push_back(*pos++); -#endif - - regex_iterator i(in.first, in.second, e, flags); - regex_iterator j; - if(i == j) - { - if(!(flags & regex_constants::format_no_copy)) - out = BOOST_REGEX_DETAIL_NS::copy(in.first, in.second, out); - } - else - { - I1 last_m = in.first; - while(i != j) - { - if(!(flags & regex_constants::format_no_copy)) - out = BOOST_REGEX_DETAIL_NS::copy(i->prefix().first, i->prefix().second, out); - if(f.size()) - out = ::boost::BOOST_REGEX_DETAIL_NS::regex_format_imp(out, *i, &*f.begin(), &*f.begin() + f.size(), flags, e.get_traits()); - else - out = ::boost::BOOST_REGEX_DETAIL_NS::regex_format_imp(out, *i, static_cast(0), static_cast(0), flags, e.get_traits()); - last_m = (*i)[0].second; - if(flags & regex_constants::format_first_only) - break; - ++i; - } - if(!(flags & regex_constants::format_no_copy)) - out = BOOST_REGEX_DETAIL_NS::copy(last_m, in.second, out); - } - return out; -} -template -inline const BaseIterator& extract_output_base(const BaseIterator& b) -{ - return b; -} -template -inline BaseIterator extract_output_base(const utf8_output_iterator& b) -{ - return b.base(); -} -template -inline BaseIterator extract_output_base(const utf16_output_iterator& b) -{ - return b.base(); -} -} // BOOST_REGEX_DETAIL_NS - -template -inline OutputIterator u32regex_replace(OutputIterator out, - BidirectionalIterator first, - BidirectionalIterator last, - const u32regex& e, - const charT* fmt, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::extract_output_base - ( - BOOST_REGEX_DETAIL_NS::do_regex_replace( - BOOST_REGEX_DETAIL_NS::make_utf32_out(out, static_cast const*>(0)), - BOOST_REGEX_DETAIL_NS::make_utf32_seq(first, last, static_cast const*>(0)), - e, - BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt, static_cast const*>(0)), - flags) - ); -} - -template -inline OutputIterator u32regex_replace(OutputIterator out, - Iterator first, - Iterator last, - const u32regex& e, - const std::basic_string& fmt, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::extract_output_base - ( - BOOST_REGEX_DETAIL_NS::do_regex_replace( - BOOST_REGEX_DETAIL_NS::make_utf32_out(out, static_cast const*>(0)), - BOOST_REGEX_DETAIL_NS::make_utf32_seq(first, last, static_cast const*>(0)), - e, - BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt.begin(), fmt.end(), static_cast const*>(0)), - flags) - ); -} - -template -inline OutputIterator u32regex_replace(OutputIterator out, - Iterator first, - Iterator last, - const u32regex& e, - const U_NAMESPACE_QUALIFIER UnicodeString& fmt, - match_flag_type flags = match_default) -{ - return BOOST_REGEX_DETAIL_NS::extract_output_base - ( - BOOST_REGEX_DETAIL_NS::do_regex_replace( - BOOST_REGEX_DETAIL_NS::make_utf32_out(out, static_cast const*>(0)), - BOOST_REGEX_DETAIL_NS::make_utf32_seq(first, last, static_cast const*>(0)), - e, - BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast const*>(0)), - flags) - ); -} - -template -std::basic_string u32regex_replace(const std::basic_string& s, - const u32regex& e, - const charT* fmt, - match_flag_type flags = match_default) -{ - std::basic_string result; - BOOST_REGEX_DETAIL_NS::string_out_iterator > i(result); - u32regex_replace(i, s.begin(), s.end(), e, fmt, flags); - return result; -} - -template -std::basic_string u32regex_replace(const std::basic_string& s, - const u32regex& e, - const std::basic_string& fmt, - match_flag_type flags = match_default) -{ - std::basic_string result; - BOOST_REGEX_DETAIL_NS::string_out_iterator > i(result); - u32regex_replace(i, s.begin(), s.end(), e, fmt.c_str(), flags); - return result; -} - -namespace BOOST_REGEX_DETAIL_NS{ - -class unicode_string_out_iterator -{ - U_NAMESPACE_QUALIFIER UnicodeString* out; -public: - unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s) : out(&s) {} - unicode_string_out_iterator& operator++() { return *this; } - unicode_string_out_iterator& operator++(int) { return *this; } - unicode_string_out_iterator& operator*() { return *this; } - unicode_string_out_iterator& operator=(UChar v) - { - *out += v; - return *this; - } - typedef std::ptrdiff_t difference_type; - typedef UChar value_type; - typedef value_type* pointer; - typedef value_type& reference; - typedef std::output_iterator_tag iterator_category; -}; - -} - -inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NAMESPACE_QUALIFIER UnicodeString& s, - const u32regex& e, - const UChar* fmt, - match_flag_type flags = match_default) -{ - U_NAMESPACE_QUALIFIER UnicodeString result; - BOOST_REGEX_DETAIL_NS::unicode_string_out_iterator i(result); - u32regex_replace(i, s.getBuffer(), s.getBuffer()+s.length(), e, fmt, flags); - return result; -} - -inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NAMESPACE_QUALIFIER UnicodeString& s, - const u32regex& e, - const U_NAMESPACE_QUALIFIER UnicodeString& fmt, - match_flag_type flags = match_default) -{ - U_NAMESPACE_QUALIFIER UnicodeString result; - BOOST_REGEX_DETAIL_NS::unicode_string_out_iterator i(result); - BOOST_REGEX_DETAIL_NS::do_regex_replace( - BOOST_REGEX_DETAIL_NS::make_utf32_out(i, static_cast const*>(0)), - BOOST_REGEX_DETAIL_NS::make_utf32_seq(s.getBuffer(), s.getBuffer()+s.length(), static_cast const*>(0)), - e, - BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast const*>(0)), - flags); - return result; -} - -} // namespace boost. - -#ifdef BOOST_MSVC -#pragma warning (pop) -#endif - -#include -#include - -#endif diff --git a/src/boost/boost/regex/pattern_except.hpp b/src/boost/boost/regex/pattern_except.hpp deleted file mode 100644 index 1e347a53c..000000000 --- a/src/boost/boost/regex/pattern_except.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE pattern_except.hpp - * VERSION see - * DESCRIPTION: Declares pattern-matching exception classes. - */ - -#ifndef BOOST_RE_PAT_EXCEPT_HPP -#define BOOST_RE_PAT_EXCEPT_HPP - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif - -#include -#include -#include - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable : 4275) -#endif -class BOOST_REGEX_DECL regex_error : public std::runtime_error -{ -public: - explicit regex_error(const std::string& s, regex_constants::error_type err = regex_constants::error_unknown, std::ptrdiff_t pos = 0); - explicit regex_error(regex_constants::error_type err); - ~regex_error() throw(); - regex_constants::error_type code()const - { return m_error_code; } - std::ptrdiff_t position()const - { return m_position; } - void raise()const; -private: - regex_constants::error_type m_error_code; - std::ptrdiff_t m_position; -}; - -typedef regex_error bad_pattern; -typedef regex_error bad_expression; - -namespace BOOST_REGEX_DETAIL_NS{ - -BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex); - -template -void raise_error(const traits& t, regex_constants::error_type code) -{ - (void)t; // warning suppression - std::runtime_error e(t.error_string(code)); - ::boost::BOOST_REGEX_DETAIL_NS::raise_runtime_error(e); -} - -} - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif - - - diff --git a/src/boost/boost/regex/pending/object_cache.hpp b/src/boost/boost/regex/pending/object_cache.hpp deleted file mode 100644 index 8b35a319c..000000000 --- a/src/boost/boost/regex/pending/object_cache.hpp +++ /dev/null @@ -1,165 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE object_cache.hpp - * VERSION see - * DESCRIPTION: Implements a generic object cache. - */ - -#ifndef BOOST_REGEX_OBJECT_CACHE_HPP -#define BOOST_REGEX_OBJECT_CACHE_HPP - -#include -#include -#include -#include -#include -#include -#ifdef BOOST_HAS_THREADS -#include -#endif - -namespace boost{ - -template -class object_cache -{ -public: - typedef std::pair< ::boost::shared_ptr, Key const*> value_type; - typedef std::list list_type; - typedef typename list_type::iterator list_iterator; - typedef std::map map_type; - typedef typename map_type::iterator map_iterator; - typedef typename list_type::size_type size_type; - static boost::shared_ptr get(const Key& k, size_type l_max_cache_size); - -private: - static boost::shared_ptr do_get(const Key& k, size_type l_max_cache_size); - - struct data - { - list_type cont; - map_type index; - }; - - // Needed by compilers not implementing the resolution to DR45. For reference, - // see http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#45. - friend struct data; -}; - -template -boost::shared_ptr object_cache::get(const Key& k, size_type l_max_cache_size) -{ -#ifdef BOOST_HAS_THREADS - static boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT; - - boost::static_mutex::scoped_lock l(mut); - if(l) - { - return do_get(k, l_max_cache_size); - } - // - // what do we do if the lock fails? - // for now just throw, but we should never really get here... - // - ::boost::throw_exception(std::runtime_error("Error in thread safety code: could not acquire a lock")); -#if defined(BOOST_NO_UNREACHABLE_RETURN_DETECTION) || defined(BOOST_NO_EXCEPTIONS) - return boost::shared_ptr(); -#endif -#else - return do_get(k, l_max_cache_size); -#endif -} - -template -boost::shared_ptr object_cache::do_get(const Key& k, size_type l_max_cache_size) -{ - typedef typename object_cache::data object_data; - typedef typename map_type::size_type map_size_type; - static object_data s_data; - - // - // see if the object is already in the cache: - // - map_iterator mpos = s_data.index.find(k); - if(mpos != s_data.index.end()) - { - // - // Eureka! - // We have a cached item, bump it up the list and return it: - // - if(--(s_data.cont.end()) != mpos->second) - { - // splice out the item we want to move: - list_type temp; - temp.splice(temp.end(), s_data.cont, mpos->second); - // and now place it at the end of the list: - s_data.cont.splice(s_data.cont.end(), temp, temp.begin()); - BOOST_ASSERT(*(s_data.cont.back().second) == k); - // update index with new position: - mpos->second = --(s_data.cont.end()); - BOOST_ASSERT(&(mpos->first) == mpos->second->second); - BOOST_ASSERT(&(mpos->first) == s_data.cont.back().second); - } - return s_data.cont.back().first; - } - // - // if we get here then the item is not in the cache, - // so create it: - // - boost::shared_ptr result(new Object(k)); - // - // Add it to the list, and index it: - // - s_data.cont.push_back(value_type(result, static_cast(0))); - s_data.index.insert(std::make_pair(k, --(s_data.cont.end()))); - s_data.cont.back().second = &(s_data.index.find(k)->first); - map_size_type s = s_data.index.size(); - BOOST_ASSERT(s_data.index[k]->first.get() == result.get()); - BOOST_ASSERT(&(s_data.index.find(k)->first) == s_data.cont.back().second); - BOOST_ASSERT(s_data.index.find(k)->first == k); - if(s > l_max_cache_size) - { - // - // We have too many items in the list, so we need to start - // popping them off the back of the list, but only if they're - // being held uniquely by us: - // - list_iterator pos = s_data.cont.begin(); - list_iterator last = s_data.cont.end(); - while((pos != last) && (s > l_max_cache_size)) - { - if(pos->first.unique()) - { - list_iterator condemmed(pos); - ++pos; - // now remove the items from our containers, - // then order has to be as follows: - BOOST_ASSERT(s_data.index.find(*(condemmed->second)) != s_data.index.end()); - s_data.index.erase(*(condemmed->second)); - s_data.cont.erase(condemmed); - --s; - } - else - ++pos; - } - BOOST_ASSERT(s_data.index[k]->first.get() == result.get()); - BOOST_ASSERT(&(s_data.index.find(k)->first) == s_data.cont.back().second); - BOOST_ASSERT(s_data.index.find(k)->first == k); - } - return result; -} - -} - -#endif diff --git a/src/boost/boost/regex/pending/static_mutex.hpp b/src/boost/boost/regex/pending/static_mutex.hpp deleted file mode 100644 index 37c91e256..000000000 --- a/src/boost/boost/regex/pending/static_mutex.hpp +++ /dev/null @@ -1,182 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE static_mutex.hpp - * VERSION see - * DESCRIPTION: Declares static_mutex lock type, there are three different - * implementations: POSIX pthreads, WIN32 threads, and portable, - * these are described in more detail below. - */ - -#ifndef BOOST_REGEX_STATIC_MUTEX_HPP -#define BOOST_REGEX_STATIC_MUTEX_HPP - -#include -#include // dll import/export options. - -#ifdef BOOST_HAS_PTHREADS -#include -#endif - -#if defined(BOOST_HAS_PTHREADS) && defined(PTHREAD_MUTEX_INITIALIZER) -// -// pthreads version: -// simple wrap around a pthread_mutex_t initialized with -// PTHREAD_MUTEX_INITIALIZER. -// -namespace boost{ - -class static_mutex; - -#define BOOST_STATIC_MUTEX_INIT { PTHREAD_MUTEX_INITIALIZER, } - -class BOOST_REGEX_DECL scoped_static_mutex_lock -{ -public: - scoped_static_mutex_lock(static_mutex& mut, bool lk = true); - ~scoped_static_mutex_lock(); - inline bool locked()const - { - return m_have_lock; - } - inline operator void const*()const - { - return locked() ? this : 0; - } - void lock(); - void unlock(); -private: - static_mutex& m_mutex; - bool m_have_lock; -}; - -class static_mutex -{ -public: - typedef scoped_static_mutex_lock scoped_lock; - pthread_mutex_t m_mutex; -}; - -} // namespace boost -#elif defined(BOOST_HAS_WINTHREADS) -// -// Win32 version: -// Use a 32-bit int as a lock, along with a test-and-set -// implementation using InterlockedCompareExchange. -// - -#include - -namespace boost{ - -class BOOST_REGEX_DECL scoped_static_mutex_lock; - -class static_mutex -{ -public: - typedef scoped_static_mutex_lock scoped_lock; - boost::int32_t m_mutex; -}; - -#define BOOST_STATIC_MUTEX_INIT { 0, } - -class BOOST_REGEX_DECL scoped_static_mutex_lock -{ -public: - scoped_static_mutex_lock(static_mutex& mut, bool lk = true); - ~scoped_static_mutex_lock(); - operator void const*()const - { - return locked() ? this : 0; - } - bool locked()const - { - return m_have_lock; - } - void lock(); - void unlock(); -private: - static_mutex& m_mutex; - bool m_have_lock; - scoped_static_mutex_lock(const scoped_static_mutex_lock&); - scoped_static_mutex_lock& operator=(const scoped_static_mutex_lock&); -}; - -} // namespace - -#else -// -// Portable version of a static mutex based on Boost.Thread library: -// This has to use a single mutex shared by all instances of static_mutex -// because boost::call_once doesn't alow us to pass instance information -// down to the initialisation proceedure. In fact the initialisation routine -// may need to be called more than once - but only once per instance. -// -// Since this preprocessor path is almost never taken, we hide these header -// dependencies so that build tools don't find them. -// -#define BOOST_REGEX_H1 -#define BOOST_REGEX_H2 -#define BOOST_REGEX_H3 -#include BOOST_REGEX_H1 -#include BOOST_REGEX_H2 -#include BOOST_REGEX_H3 -#undef BOOST_REGEX_H1 -#undef BOOST_REGEX_H2 -#undef BOOST_REGEX_H3 - -namespace boost{ - -class BOOST_REGEX_DECL scoped_static_mutex_lock; -extern "C" BOOST_REGEX_DECL void boost_regex_free_static_mutex(); - -class BOOST_REGEX_DECL static_mutex -{ -public: - typedef scoped_static_mutex_lock scoped_lock; - static void init(); - static boost::recursive_mutex* m_pmutex; - static boost::once_flag m_once; -}; - -#define BOOST_STATIC_MUTEX_INIT { } - -class BOOST_REGEX_DECL scoped_static_mutex_lock -{ -public: - scoped_static_mutex_lock(static_mutex& mut, bool lk = true); - ~scoped_static_mutex_lock(); - operator void const*()const; - bool locked()const; - void lock(); - void unlock(); -private: - boost::unique_lock* m_plock; - bool m_have_lock; -}; - -inline scoped_static_mutex_lock::operator void const*()const -{ - return locked() ? this : 0; -} - -inline bool scoped_static_mutex_lock::locked()const -{ - return m_have_lock; -} - -} // namespace - -#endif - -#endif diff --git a/src/boost/boost/regex/pending/unicode_iterator.hpp b/src/boost/boost/regex/pending/unicode_iterator.hpp deleted file mode 100644 index 698ed042a..000000000 --- a/src/boost/boost/regex/pending/unicode_iterator.hpp +++ /dev/null @@ -1,785 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE unicode_iterator.hpp - * VERSION see - * DESCRIPTION: Iterator adapters for converting between different Unicode encodings. - */ - -/**************************************************************************** - -Contents: -~~~~~~~~~ - -1) Read Only, Input Adapters: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -template -class u32_to_u8_iterator; - -Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-8. - -template -class u8_to_u32_iterator; - -Adapts sequence of UTF-8 code points to "look like" a sequence of UTF-32. - -template -class u32_to_u16_iterator; - -Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-16. - -template -class u16_to_u32_iterator; - -Adapts sequence of UTF-16 code points to "look like" a sequence of UTF-32. - -2) Single pass output iterator adapters: - -template -class utf8_output_iterator; - -Accepts UTF-32 code points and forwards them on as UTF-8 code points. - -template -class utf16_output_iterator; - -Accepts UTF-32 code points and forwards them on as UTF-16 code points. - -****************************************************************************/ - -#ifndef BOOST_REGEX_UNICODE_ITERATOR_HPP -#define BOOST_REGEX_UNICODE_ITERATOR_HPP -#include -#include -#include -#include -#include -#include -#ifndef BOOST_NO_STD_LOCALE -#include -#include -#endif -#include // CHAR_BIT - -namespace boost{ - -namespace detail{ - -static const ::boost::uint16_t high_surrogate_base = 0xD7C0u; -static const ::boost::uint16_t low_surrogate_base = 0xDC00u; -static const ::boost::uint32_t ten_bit_mask = 0x3FFu; - -inline bool is_high_surrogate(::boost::uint16_t v) -{ - return (v & 0xFFFFFC00u) == 0xd800u; -} -inline bool is_low_surrogate(::boost::uint16_t v) -{ - return (v & 0xFFFFFC00u) == 0xdc00u; -} -template -inline bool is_surrogate(T v) -{ - return (v & 0xFFFFF800u) == 0xd800; -} - -inline unsigned utf8_byte_count(boost::uint8_t c) -{ - // if the most significant bit with a zero in it is in position - // 8-N then there are N bytes in this UTF-8 sequence: - boost::uint8_t mask = 0x80u; - unsigned result = 0; - while(c & mask) - { - ++result; - mask >>= 1; - } - return (result == 0) ? 1 : ((result > 4) ? 4 : result); -} - -inline unsigned utf8_trailing_byte_count(boost::uint8_t c) -{ - return utf8_byte_count(c) - 1; -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4100) -#endif -#ifndef BOOST_NO_EXCEPTIONS -BOOST_NORETURN -#endif -inline void invalid_utf32_code_point(::boost::uint32_t val) -{ -#ifndef BOOST_NO_STD_LOCALE - std::stringstream ss; - ss << "Invalid UTF-32 code point U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-16 sequence"; - std::out_of_range e(ss.str()); -#else - std::out_of_range e("Invalid UTF-32 code point encountered while trying to encode UTF-16 sequence"); -#endif - boost::throw_exception(e); -} -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - - -} // namespace detail - -template -class u32_to_u16_iterator - : public boost::iterator_facade, U16Type, std::bidirectional_iterator_tag, const U16Type> -{ - typedef boost::iterator_facade, U16Type, std::bidirectional_iterator_tag, const U16Type> base_type; - -#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) - typedef typename std::iterator_traits::value_type base_value_type; - - BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32); - BOOST_STATIC_ASSERT(sizeof(U16Type)*CHAR_BIT == 16); -#endif - -public: - typename base_type::reference - dereference()const - { - if(m_current == 2) - extract_current(); - return m_values[m_current]; - } - bool equal(const u32_to_u16_iterator& that)const - { - if(m_position == that.m_position) - { - // Both m_currents must be equal, or both even - // this is the same as saying their sum must be even: - return (m_current + that.m_current) & 1u ? false : true; - } - return false; - } - void increment() - { - // if we have a pending read then read now, so that we know whether - // to skip a position, or move to a low-surrogate: - if(m_current == 2) - { - // pending read: - extract_current(); - } - // move to the next surrogate position: - ++m_current; - // if we've reached the end skip a position: - if(m_values[m_current] == 0) - { - m_current = 2; - ++m_position; - } - } - void decrement() - { - if(m_current != 1) - { - // decrementing an iterator always leads to a valid position: - --m_position; - extract_current(); - m_current = m_values[1] ? 1 : 0; - } - else - { - m_current = 0; - } - } - BaseIterator base()const - { - return m_position; - } - // construct: - u32_to_u16_iterator() : m_position(), m_current(0) - { - m_values[0] = 0; - m_values[1] = 0; - m_values[2] = 0; - } - u32_to_u16_iterator(BaseIterator b) : m_position(b), m_current(2) - { - m_values[0] = 0; - m_values[1] = 0; - m_values[2] = 0; - } -private: - - void extract_current()const - { - // begin by checking for a code point out of range: - ::boost::uint32_t v = *m_position; - if(v >= 0x10000u) - { - if(v > 0x10FFFFu) - detail::invalid_utf32_code_point(*m_position); - // split into two surrogates: - m_values[0] = static_cast(v >> 10) + detail::high_surrogate_base; - m_values[1] = static_cast(v & detail::ten_bit_mask) + detail::low_surrogate_base; - m_current = 0; - BOOST_ASSERT(detail::is_high_surrogate(m_values[0])); - BOOST_ASSERT(detail::is_low_surrogate(m_values[1])); - } - else - { - // 16-bit code point: - m_values[0] = static_cast(*m_position); - m_values[1] = 0; - m_current = 0; - // value must not be a surrogate: - if(detail::is_surrogate(m_values[0])) - detail::invalid_utf32_code_point(*m_position); - } - } - BaseIterator m_position; - mutable U16Type m_values[3]; - mutable unsigned m_current; -}; - -template -class u16_to_u32_iterator - : public boost::iterator_facade, U32Type, std::bidirectional_iterator_tag, const U32Type> -{ - typedef boost::iterator_facade, U32Type, std::bidirectional_iterator_tag, const U32Type> base_type; - // special values for pending iterator reads: - BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu); - -#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) - typedef typename std::iterator_traits::value_type base_value_type; - - BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 16); - BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32); -#endif - -public: - typename base_type::reference - dereference()const - { - if(m_value == pending_read) - extract_current(); - return m_value; - } - bool equal(const u16_to_u32_iterator& that)const - { - return m_position == that.m_position; - } - void increment() - { - // skip high surrogate first if there is one: - if(detail::is_high_surrogate(*m_position)) ++m_position; - ++m_position; - m_value = pending_read; - } - void decrement() - { - --m_position; - // if we have a low surrogate then go back one more: - if(detail::is_low_surrogate(*m_position)) - --m_position; - m_value = pending_read; - } - BaseIterator base()const - { - return m_position; - } - // construct: - u16_to_u32_iterator() : m_position() - { - m_value = pending_read; - } - u16_to_u32_iterator(BaseIterator b) : m_position(b) - { - m_value = pending_read; - } - // - // Range checked version: - // - u16_to_u32_iterator(BaseIterator b, BaseIterator start, BaseIterator end) : m_position(b) - { - m_value = pending_read; - // - // The range must not start with a low surrogate, or end in a high surrogate, - // otherwise we run the risk of running outside the underlying input range. - // Likewise b must not be located at a low surrogate. - // - boost::uint16_t val; - if(start != end) - { - if((b != start) && (b != end)) - { - val = *b; - if(detail::is_surrogate(val) && ((val & 0xFC00u) == 0xDC00u)) - invalid_code_point(val); - } - val = *start; - if(detail::is_surrogate(val) && ((val & 0xFC00u) == 0xDC00u)) - invalid_code_point(val); - val = *--end; - if(detail::is_high_surrogate(val)) - invalid_code_point(val); - } - } -private: - static void invalid_code_point(::boost::uint16_t val) - { -#ifndef BOOST_NO_STD_LOCALE - std::stringstream ss; - ss << "Misplaced UTF-16 surrogate U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-32 sequence"; - std::out_of_range e(ss.str()); -#else - std::out_of_range e("Misplaced UTF-16 surrogate encountered while trying to encode UTF-32 sequence"); -#endif - boost::throw_exception(e); - } - void extract_current()const - { - m_value = static_cast(static_cast< ::boost::uint16_t>(*m_position)); - // if the last value is a high surrogate then adjust m_position and m_value as needed: - if(detail::is_high_surrogate(*m_position)) - { - // precondition; next value must have be a low-surrogate: - BaseIterator next(m_position); - ::boost::uint16_t t = *++next; - if((t & 0xFC00u) != 0xDC00u) - invalid_code_point(t); - m_value = (m_value - detail::high_surrogate_base) << 10; - m_value |= (static_cast(static_cast< ::boost::uint16_t>(t)) & detail::ten_bit_mask); - } - // postcondition; result must not be a surrogate: - if(detail::is_surrogate(m_value)) - invalid_code_point(static_cast< ::boost::uint16_t>(m_value)); - } - BaseIterator m_position; - mutable U32Type m_value; -}; - -template -class u32_to_u8_iterator - : public boost::iterator_facade, U8Type, std::bidirectional_iterator_tag, const U8Type> -{ - typedef boost::iterator_facade, U8Type, std::bidirectional_iterator_tag, const U8Type> base_type; - -#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) - typedef typename std::iterator_traits::value_type base_value_type; - - BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32); - BOOST_STATIC_ASSERT(sizeof(U8Type)*CHAR_BIT == 8); -#endif - -public: - typename base_type::reference - dereference()const - { - if(m_current == 4) - extract_current(); - return m_values[m_current]; - } - bool equal(const u32_to_u8_iterator& that)const - { - if(m_position == that.m_position) - { - // either the m_current's must be equal, or one must be 0 and - // the other 4: which means neither must have bits 1 or 2 set: - return (m_current == that.m_current) - || (((m_current | that.m_current) & 3) == 0); - } - return false; - } - void increment() - { - // if we have a pending read then read now, so that we know whether - // to skip a position, or move to a low-surrogate: - if(m_current == 4) - { - // pending read: - extract_current(); - } - // move to the next surrogate position: - ++m_current; - // if we've reached the end skip a position: - if(m_values[m_current] == 0) - { - m_current = 4; - ++m_position; - } - } - void decrement() - { - if((m_current & 3) == 0) - { - --m_position; - extract_current(); - m_current = 3; - while(m_current && (m_values[m_current] == 0)) - --m_current; - } - else - --m_current; - } - BaseIterator base()const - { - return m_position; - } - // construct: - u32_to_u8_iterator() : m_position(), m_current(0) - { - m_values[0] = 0; - m_values[1] = 0; - m_values[2] = 0; - m_values[3] = 0; - m_values[4] = 0; - } - u32_to_u8_iterator(BaseIterator b) : m_position(b), m_current(4) - { - m_values[0] = 0; - m_values[1] = 0; - m_values[2] = 0; - m_values[3] = 0; - m_values[4] = 0; - } -private: - - void extract_current()const - { - boost::uint32_t c = *m_position; - if(c > 0x10FFFFu) - detail::invalid_utf32_code_point(c); - if(c < 0x80u) - { - m_values[0] = static_cast(c); - m_values[1] = static_cast(0u); - m_values[2] = static_cast(0u); - m_values[3] = static_cast(0u); - } - else if(c < 0x800u) - { - m_values[0] = static_cast(0xC0u + (c >> 6)); - m_values[1] = static_cast(0x80u + (c & 0x3Fu)); - m_values[2] = static_cast(0u); - m_values[3] = static_cast(0u); - } - else if(c < 0x10000u) - { - m_values[0] = static_cast(0xE0u + (c >> 12)); - m_values[1] = static_cast(0x80u + ((c >> 6) & 0x3Fu)); - m_values[2] = static_cast(0x80u + (c & 0x3Fu)); - m_values[3] = static_cast(0u); - } - else - { - m_values[0] = static_cast(0xF0u + (c >> 18)); - m_values[1] = static_cast(0x80u + ((c >> 12) & 0x3Fu)); - m_values[2] = static_cast(0x80u + ((c >> 6) & 0x3Fu)); - m_values[3] = static_cast(0x80u + (c & 0x3Fu)); - } - m_current= 0; - } - BaseIterator m_position; - mutable U8Type m_values[5]; - mutable unsigned m_current; -}; - -template -class u8_to_u32_iterator - : public boost::iterator_facade, U32Type, std::bidirectional_iterator_tag, const U32Type> -{ - typedef boost::iterator_facade, U32Type, std::bidirectional_iterator_tag, const U32Type> base_type; - // special values for pending iterator reads: - BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu); - -#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) - typedef typename std::iterator_traits::value_type base_value_type; - - BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 8); - BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32); -#endif - -public: - typename base_type::reference - dereference()const - { - if(m_value == pending_read) - extract_current(); - return m_value; - } - bool equal(const u8_to_u32_iterator& that)const - { - return m_position == that.m_position; - } - void increment() - { - // We must not start with a continuation character: - if((static_cast(*m_position) & 0xC0) == 0x80) - invalid_sequence(); - // skip high surrogate first if there is one: - unsigned c = detail::utf8_byte_count(*m_position); - if(m_value == pending_read) - { - // Since we haven't read in a value, we need to validate the code points: - for(unsigned i = 0; i < c; ++i) - { - ++m_position; - // We must have a continuation byte: - if((i != c - 1) && ((static_cast(*m_position) & 0xC0) != 0x80)) - invalid_sequence(); - } - } - else - { - std::advance(m_position, c); - } - m_value = pending_read; - } - void decrement() - { - // Keep backtracking until we don't have a trailing character: - unsigned count = 0; - while((*--m_position & 0xC0u) == 0x80u) ++count; - // now check that the sequence was valid: - if(count != detail::utf8_trailing_byte_count(*m_position)) - invalid_sequence(); - m_value = pending_read; - } - BaseIterator base()const - { - return m_position; - } - // construct: - u8_to_u32_iterator() : m_position() - { - m_value = pending_read; - } - u8_to_u32_iterator(BaseIterator b) : m_position(b) - { - m_value = pending_read; - } - // - // Checked constructor: - // - u8_to_u32_iterator(BaseIterator b, BaseIterator start, BaseIterator end) : m_position(b) - { - m_value = pending_read; - // - // We must not start with a continuation character, or end with a - // truncated UTF-8 sequence otherwise we run the risk of going past - // the start/end of the underlying sequence: - // - if(start != end) - { - unsigned char v = *start; - if((v & 0xC0u) == 0x80u) - invalid_sequence(); - if((b != start) && (b != end) && ((*b & 0xC0u) == 0x80u)) - invalid_sequence(); - BaseIterator pos = end; - do - { - v = *--pos; - } - while((start != pos) && ((v & 0xC0u) == 0x80u)); - std::ptrdiff_t extra = detail::utf8_byte_count(v); - if(std::distance(pos, end) < extra) - invalid_sequence(); - } - } -private: - static void invalid_sequence() - { - std::out_of_range e("Invalid UTF-8 sequence encountered while trying to encode UTF-32 character"); - boost::throw_exception(e); - } - void extract_current()const - { - m_value = static_cast(static_cast< ::boost::uint8_t>(*m_position)); - // we must not have a continuation character: - if((m_value & 0xC0u) == 0x80u) - invalid_sequence(); - // see how many extra bytes we have: - unsigned extra = detail::utf8_trailing_byte_count(*m_position); - // extract the extra bits, 6 from each extra byte: - BaseIterator next(m_position); - for(unsigned c = 0; c < extra; ++c) - { - ++next; - m_value <<= 6; - // We must have a continuation byte: - if((static_cast(*next) & 0xC0) != 0x80) - invalid_sequence(); - m_value += static_cast(*next) & 0x3Fu; - } - // we now need to remove a few of the leftmost bits, but how many depends - // upon how many extra bytes we've extracted: - static const boost::uint32_t masks[4] = - { - 0x7Fu, - 0x7FFu, - 0xFFFFu, - 0x1FFFFFu, - }; - m_value &= masks[extra]; - // check the result is in range: - if(m_value > static_cast(0x10FFFFu)) - invalid_sequence(); - // The result must not be a surrogate: - if((m_value >= static_cast(0xD800)) && (m_value <= static_cast(0xDFFF))) - invalid_sequence(); - // We should not have had an invalidly encoded UTF8 sequence: - if((extra > 0) && (m_value <= static_cast(masks[extra - 1]))) - invalid_sequence(); - } - BaseIterator m_position; - mutable U32Type m_value; -}; - -template -class utf16_output_iterator -{ -public: - typedef void difference_type; - typedef void value_type; - typedef boost::uint32_t* pointer; - typedef boost::uint32_t& reference; - typedef std::output_iterator_tag iterator_category; - - utf16_output_iterator(const BaseIterator& b) - : m_position(b){} - utf16_output_iterator(const utf16_output_iterator& that) - : m_position(that.m_position){} - utf16_output_iterator& operator=(const utf16_output_iterator& that) - { - m_position = that.m_position; - return *this; - } - const utf16_output_iterator& operator*()const - { - return *this; - } - void operator=(boost::uint32_t val)const - { - push(val); - } - utf16_output_iterator& operator++() - { - return *this; - } - utf16_output_iterator& operator++(int) - { - return *this; - } - BaseIterator base()const - { - return m_position; - } -private: - void push(boost::uint32_t v)const - { - if(v >= 0x10000u) - { - // begin by checking for a code point out of range: - if(v > 0x10FFFFu) - detail::invalid_utf32_code_point(v); - // split into two surrogates: - *m_position++ = static_cast(v >> 10) + detail::high_surrogate_base; - *m_position++ = static_cast(v & detail::ten_bit_mask) + detail::low_surrogate_base; - } - else - { - // 16-bit code point: - // value must not be a surrogate: - if(detail::is_surrogate(v)) - detail::invalid_utf32_code_point(v); - *m_position++ = static_cast(v); - } - } - mutable BaseIterator m_position; -}; - -template -class utf8_output_iterator -{ -public: - typedef void difference_type; - typedef void value_type; - typedef boost::uint32_t* pointer; - typedef boost::uint32_t& reference; - typedef std::output_iterator_tag iterator_category; - - utf8_output_iterator(const BaseIterator& b) - : m_position(b){} - utf8_output_iterator(const utf8_output_iterator& that) - : m_position(that.m_position){} - utf8_output_iterator& operator=(const utf8_output_iterator& that) - { - m_position = that.m_position; - return *this; - } - const utf8_output_iterator& operator*()const - { - return *this; - } - void operator=(boost::uint32_t val)const - { - push(val); - } - utf8_output_iterator& operator++() - { - return *this; - } - utf8_output_iterator& operator++(int) - { - return *this; - } - BaseIterator base()const - { - return m_position; - } -private: - void push(boost::uint32_t c)const - { - if(c > 0x10FFFFu) - detail::invalid_utf32_code_point(c); - if(c < 0x80u) - { - *m_position++ = static_cast(c); - } - else if(c < 0x800u) - { - *m_position++ = static_cast(0xC0u + (c >> 6)); - *m_position++ = static_cast(0x80u + (c & 0x3Fu)); - } - else if(c < 0x10000u) - { - *m_position++ = static_cast(0xE0u + (c >> 12)); - *m_position++ = static_cast(0x80u + ((c >> 6) & 0x3Fu)); - *m_position++ = static_cast(0x80u + (c & 0x3Fu)); - } - else - { - *m_position++ = static_cast(0xF0u + (c >> 18)); - *m_position++ = static_cast(0x80u + ((c >> 12) & 0x3Fu)); - *m_position++ = static_cast(0x80u + ((c >> 6) & 0x3Fu)); - *m_position++ = static_cast(0x80u + (c & 0x3Fu)); - } - } - mutable BaseIterator m_position; -}; - -} // namespace boost - -#endif // BOOST_REGEX_UNICODE_ITERATOR_HPP - diff --git a/src/boost/boost/regex/regex_traits.hpp b/src/boost/boost/regex/regex_traits.hpp deleted file mode 100644 index c03301875..000000000 --- a/src/boost/boost/regex/regex_traits.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_traits.hpp - * VERSION see - * DESCRIPTION: Declares regular expression traits classes. - */ - -#ifndef BOOST_REGEX_TRAITS_HPP -#define BOOST_REGEX_TRAITS_HPP - -#ifndef BOOST_REGEX_CONFIG_HPP -# include -#endif - -# ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED -# include -# endif - -#endif // include - - - - - diff --git a/src/boost/boost/regex/user.hpp b/src/boost/boost/regex/user.hpp deleted file mode 100644 index 96f747612..000000000 --- a/src/boost/boost/regex/user.hpp +++ /dev/null @@ -1,93 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE user.hpp - * VERSION see - * DESCRIPTION: User settable options. - */ - -// define if you want the regex library to use the C locale -// even on Win32: -// #define BOOST_REGEX_USE_C_LOCALE - -// define this is you want the regex library to use the C++ -// locale: -// #define BOOST_REGEX_USE_CPP_LOCALE - -// define this if the runtime library is a dll, and you -// want BOOST_REGEX_DYN_LINK to set up dll exports/imports -// with __declspec(dllexport)/__declspec(dllimport.) -// #define BOOST_REGEX_HAS_DLL_RUNTIME - -// define this if you want to dynamically link to regex, -// if the runtime library is also a dll (Probably Win32 specific, -// and has no effect unless BOOST_REGEX_HAS_DLL_RUNTIME is set): -// #define BOOST_REGEX_DYN_LINK - -// define this if you don't want the lib to automatically -// select its link libraries: -// #define BOOST_REGEX_NO_LIB - -// define this if templates with switch statements cause problems: -// #define BOOST_REGEX_NO_TEMPLATE_SWITCH_MERGE - -// define this to disable Win32 support when available: -// #define BOOST_REGEX_NO_W32 - -// define this if bool is not a real type: -// #define BOOST_REGEX_NO_BOOL - -// define this if no template instances are to be placed in -// the library rather than users object files: -// #define BOOST_REGEX_NO_EXTERNAL_TEMPLATES - -// define this if the forward declarations in regex_fwd.hpp -// cause more problems than they are worth: -// #define BOOST_REGEX_NO_FWD - -// define this if your compiler supports MS Windows structured -// exception handling. -// #define BOOST_REGEX_HAS_MS_STACK_GUARD - -// define this if you want to use the recursive algorithm -// even if BOOST_REGEX_HAS_MS_STACK_GUARD is not defined. -// #define BOOST_REGEX_RECURSIVE - -// define this if you want to use the non-recursive -// algorithm, even if the recursive version would be the default. -// #define BOOST_REGEX_NON_RECURSIVE - -// define this if you want to set the size of the memory blocks -// used by the non-recursive algorithm. -// #define BOOST_REGEX_BLOCKSIZE 4096 - -// define this if you want to set the maximum number of memory blocks -// used by the non-recursive algorithm. -// #define BOOST_REGEX_MAX_BLOCKS 1024 - -// define this if you want to set the maximum number of memory blocks -// cached by the non-recursive algorithm: Normally this is 16, but can be -// higher if you have multiple threads all using boost.regex, or lower -// if you don't want boost.regex to cache memory. -// #define BOOST_REGEX_MAX_CACHE_BLOCKS 16 - -// define this if you want to be able to access extended capture -// information in your sub_match's (caution this will slow things -// down quite a bit). -// #define BOOST_REGEX_MATCH_EXTRA - -// define this if you want to enable support for Unicode via ICU. -// #define BOOST_HAS_ICU - -// define this if you want regex to use __cdecl calling convensions, even when __fastcall is available: -// #define BOOST_REGEX_NO_FASTCALL diff --git a/src/boost/boost/regex/v4/basic_regex.hpp b/src/boost/boost/regex/v4/basic_regex.hpp deleted file mode 100644 index 82b45bb89..000000000 --- a/src/boost/boost/regex/v4/basic_regex.hpp +++ /dev/null @@ -1,787 +0,0 @@ -/* - * - * Copyright (c) 1998-2004 John Maddock - * Copyright 2011 Garmin Ltd. or its subsidiaries - * - * 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) - * - */ - - /* - * LOCATION: see http://www.boost.org/ for most recent version. - * FILE basic_regex.cpp - * VERSION see - * DESCRIPTION: Declares template class basic_regex. - */ - -#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP -#define BOOST_REGEX_V4_BASIC_REGEX_HPP - -#include -#include - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable : 4251) -#if BOOST_MSVC < 1700 -# pragma warning(disable : 4231) -#endif -#if BOOST_MSVC < 1600 -#pragma warning(disable : 4660) -#endif -#if BOOST_MSVC < 1910 -#pragma warning(disable:4800) -#endif -#endif - -namespace BOOST_REGEX_DETAIL_NS{ - -// -// forward declaration, we will need this one later: -// -template -class basic_regex_parser; - -template -void bubble_down_one(I first, I last) -{ - if(first != last) - { - I next = last - 1; - while((next != first) && (*next < *(next-1))) - { - (next-1)->swap(*next); - --next; - } - } -} - -template -inline int hash_value_from_capture_name(Iterator i, Iterator j) -{ - std::size_t r = boost::hash_range(i, j); - r %= ((std::numeric_limits::max)() - 10001); - r += 10000; - return static_cast(r); -} - -class named_subexpressions -{ -public: - struct name - { - template - name(const charT* i, const charT* j, int idx) - : index(idx) - { - hash = hash_value_from_capture_name(i, j); - } - name(int h, int idx) - : index(idx), hash(h) - { - } - int index; - int hash; - bool operator < (const name& other)const - { - return hash < other.hash; - } - bool operator == (const name& other)const - { - return hash == other.hash; - } - void swap(name& other) - { - std::swap(index, other.index); - std::swap(hash, other.hash); - } - }; - - typedef std::vector::const_iterator const_iterator; - typedef std::pair range_type; - - named_subexpressions(){} - - template - void set_name(const charT* i, const charT* j, int index) - { - m_sub_names.push_back(name(i, j, index)); - bubble_down_one(m_sub_names.begin(), m_sub_names.end()); - } - template - int get_id(const charT* i, const charT* j)const - { - name t(i, j, 0); - typename std::vector::const_iterator pos = std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t); - if((pos != m_sub_names.end()) && (*pos == t)) - { - return pos->index; - } - return -1; - } - template - range_type equal_range(const charT* i, const charT* j)const - { - name t(i, j, 0); - return std::equal_range(m_sub_names.begin(), m_sub_names.end(), t); - } - int get_id(int h)const - { - name t(h, 0); - std::vector::const_iterator pos = std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t); - if((pos != m_sub_names.end()) && (*pos == t)) - { - return pos->index; - } - return -1; - } - range_type equal_range(int h)const - { - name t(h, 0); - return std::equal_range(m_sub_names.begin(), m_sub_names.end(), t); - } -private: - std::vector m_sub_names; -}; - -// -// class regex_data: -// represents the data we wish to expose to the matching algorithms. -// -template -struct regex_data : public named_subexpressions -{ - typedef regex_constants::syntax_option_type flag_type; - typedef std::size_t size_type; - - regex_data(const ::boost::shared_ptr< - ::boost::regex_traits_wrapper >& t) - : m_ptraits(t), m_expression(0), m_expression_len(0), m_disable_match_any(false) {} - regex_data() - : m_ptraits(new ::boost::regex_traits_wrapper()), m_expression(0), m_expression_len(0), m_disable_match_any(false) {} - - ::boost::shared_ptr< - ::boost::regex_traits_wrapper - > m_ptraits; // traits class instance - flag_type m_flags; // flags with which we were compiled - int m_status; // error code (0 implies OK). - const charT* m_expression; // the original expression - std::ptrdiff_t m_expression_len; // the length of the original expression - size_type m_mark_count; // the number of marked sub-expressions - BOOST_REGEX_DETAIL_NS::re_syntax_base* m_first_state; // the first state of the machine - unsigned m_restart_type; // search optimisation type - unsigned char m_startmap[1 << CHAR_BIT]; // which characters can start a match - unsigned int m_can_be_null; // whether we can match a null string - BOOST_REGEX_DETAIL_NS::raw_storage m_data; // the buffer in which our states are constructed - typename traits::char_class_type m_word_mask; // mask used to determine if a character is a word character - std::vector< - std::pair< - std::size_t, std::size_t> > m_subs; // Position of sub-expressions within the *string*. - bool m_has_recursions; // whether we have recursive expressions; - bool m_disable_match_any; // when set we need to disable the match_any flag as it causes different/buggy behaviour. -}; -// -// class basic_regex_implementation -// pimpl implementation class for basic_regex. -// -template -class basic_regex_implementation - : public regex_data -{ -public: - typedef regex_constants::syntax_option_type flag_type; - typedef std::ptrdiff_t difference_type; - typedef std::size_t size_type; - typedef typename traits::locale_type locale_type; - typedef const charT* const_iterator; - - basic_regex_implementation(){} - basic_regex_implementation(const ::boost::shared_ptr< - ::boost::regex_traits_wrapper >& t) - : regex_data(t) {} - void assign(const charT* arg_first, - const charT* arg_last, - flag_type f) - { - regex_data* pdat = this; - basic_regex_parser parser(pdat); - parser.parse(arg_first, arg_last, f); - } - - locale_type BOOST_REGEX_CALL imbue(locale_type l) - { - return this->m_ptraits->imbue(l); - } - locale_type BOOST_REGEX_CALL getloc()const - { - return this->m_ptraits->getloc(); - } - std::basic_string BOOST_REGEX_CALL str()const - { - std::basic_string result; - if(this->m_status == 0) - result = std::basic_string(this->m_expression, this->m_expression_len); - return result; - } - const_iterator BOOST_REGEX_CALL expression()const - { - return this->m_expression; - } - std::pair BOOST_REGEX_CALL subexpression(std::size_t n)const - { - const std::pair& pi = this->m_subs.at(n); - std::pair p(expression() + pi.first, expression() + pi.second); - return p; - } - // - // begin, end: - const_iterator BOOST_REGEX_CALL begin()const - { - return (this->m_status ? 0 : this->m_expression); - } - const_iterator BOOST_REGEX_CALL end()const - { - return (this->m_status ? 0 : this->m_expression + this->m_expression_len); - } - flag_type BOOST_REGEX_CALL flags()const - { - return this->m_flags; - } - size_type BOOST_REGEX_CALL size()const - { - return this->m_expression_len; - } - int BOOST_REGEX_CALL status()const - { - return this->m_status; - } - size_type BOOST_REGEX_CALL mark_count()const - { - return this->m_mark_count - 1; - } - const BOOST_REGEX_DETAIL_NS::re_syntax_base* get_first_state()const - { - return this->m_first_state; - } - unsigned get_restart_type()const - { - return this->m_restart_type; - } - const unsigned char* get_map()const - { - return this->m_startmap; - } - const ::boost::regex_traits_wrapper& get_traits()const - { - return *(this->m_ptraits); - } - bool can_be_null()const - { - return this->m_can_be_null; - } - const regex_data& get_data()const - { - basic_regex_implementation const* p = this; - return *static_cast*>(p); - } -}; - -} // namespace BOOST_REGEX_DETAIL_NS -// -// class basic_regex: -// represents the compiled -// regular expression: -// - -#ifdef BOOST_REGEX_NO_FWD -template > -#else -template -#endif -class basic_regex : public regbase -{ -public: - // typedefs: - typedef std::size_t traits_size_type; - typedef typename traits::string_type traits_string_type; - typedef charT char_type; - typedef traits traits_type; - - typedef charT value_type; - typedef charT& reference; - typedef const charT& const_reference; - typedef const charT* const_iterator; - typedef const_iterator iterator; - typedef std::ptrdiff_t difference_type; - typedef std::size_t size_type; - typedef regex_constants::syntax_option_type flag_type; - // locale_type - // placeholder for actual locale type used by the - // traits class to localise *this. - typedef typename traits::locale_type locale_type; - -public: - explicit basic_regex(){} - explicit basic_regex(const charT* p, flag_type f = regex_constants::normal) - { - assign(p, f); - } - basic_regex(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) - { - assign(p1, p2, f); - } - basic_regex(const charT* p, size_type len, flag_type f) - { - assign(p, len, f); - } - basic_regex(const basic_regex& that) - : m_pimpl(that.m_pimpl) {} - ~basic_regex(){} - basic_regex& BOOST_REGEX_CALL operator=(const basic_regex& that) - { - return assign(that); - } - basic_regex& BOOST_REGEX_CALL operator=(const charT* ptr) - { - return assign(ptr); - } - - // - // assign: - basic_regex& assign(const basic_regex& that) - { - m_pimpl = that.m_pimpl; - return *this; - } - basic_regex& assign(const charT* p, flag_type f = regex_constants::normal) - { - return assign(p, p + traits::length(p), f); - } - basic_regex& assign(const charT* p, size_type len, flag_type f) - { - return assign(p, p + len, f); - } -private: - basic_regex& do_assign(const charT* p1, - const charT* p2, - flag_type f); -public: - basic_regex& assign(const charT* p1, - const charT* p2, - flag_type f = regex_constants::normal) - { - return do_assign(p1, p2, f); - } -#if !defined(BOOST_NO_MEMBER_TEMPLATES) - - template - unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string& p, flag_type f = regex_constants::normal) - { - return set_expression(p.data(), p.data() + p.size(), f); - } - - template - explicit basic_regex(const std::basic_string& p, flag_type f = regex_constants::normal) - { - assign(p, f); - } - - template - basic_regex(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal) - { - typedef typename traits::string_type seq_type; - seq_type a(arg_first, arg_last); - if(a.size()) - assign(static_cast(&*a.begin()), static_cast(&*a.begin() + a.size()), f); - else - assign(static_cast(0), static_cast(0), f); - } - - template - basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string& p) - { - return assign(p.data(), p.data() + p.size(), regex_constants::normal); - } - - template - basic_regex& BOOST_REGEX_CALL assign( - const std::basic_string& s, - flag_type f = regex_constants::normal) - { - return assign(s.data(), s.data() + s.size(), f); - } - - template - basic_regex& BOOST_REGEX_CALL assign(InputIterator arg_first, - InputIterator arg_last, - flag_type f = regex_constants::normal) - { - typedef typename traits::string_type seq_type; - seq_type a(arg_first, arg_last); - if(a.size()) - { - const charT* p1 = &*a.begin(); - const charT* p2 = &*a.begin() + a.size(); - return assign(p1, p2, f); - } - return assign(static_cast(0), static_cast(0), f); - } -#else - unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string& p, flag_type f = regex_constants::normal) - { - return set_expression(p.data(), p.data() + p.size(), f); - } - - basic_regex(const std::basic_string& p, flag_type f = regex_constants::normal) - { - assign(p, f); - } - - basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string& p) - { - return assign(p.data(), p.data() + p.size(), regex_constants::normal); - } - - basic_regex& BOOST_REGEX_CALL assign( - const std::basic_string& s, - flag_type f = regex_constants::normal) - { - return assign(s.data(), s.data() + s.size(), f); - } - -#endif - - // - // locale: - locale_type BOOST_REGEX_CALL imbue(locale_type l); - locale_type BOOST_REGEX_CALL getloc()const - { - return m_pimpl.get() ? m_pimpl->getloc() : locale_type(); - } - // - // getflags: - // retained for backwards compatibility only, "flags" - // is now the preferred name: - flag_type BOOST_REGEX_CALL getflags()const - { - return flags(); - } - flag_type BOOST_REGEX_CALL flags()const - { - return m_pimpl.get() ? m_pimpl->flags() : 0; - } - // - // str: - std::basic_string BOOST_REGEX_CALL str()const - { - return m_pimpl.get() ? m_pimpl->str() : std::basic_string(); - } - // - // begin, end, subexpression: - std::pair BOOST_REGEX_CALL subexpression(std::size_t n)const - { - if(!m_pimpl.get()) - boost::throw_exception(std::logic_error("Can't access subexpressions in an invalid regex.")); - return m_pimpl->subexpression(n); - } - const_iterator BOOST_REGEX_CALL begin()const - { - return (m_pimpl.get() ? m_pimpl->begin() : 0); - } - const_iterator BOOST_REGEX_CALL end()const - { - return (m_pimpl.get() ? m_pimpl->end() : 0); - } - // - // swap: - void BOOST_REGEX_CALL swap(basic_regex& that)throw() - { - m_pimpl.swap(that.m_pimpl); - } - // - // size: - size_type BOOST_REGEX_CALL size()const - { - return (m_pimpl.get() ? m_pimpl->size() : 0); - } - // - // max_size: - size_type BOOST_REGEX_CALL max_size()const - { - return UINT_MAX; - } - // - // empty: - bool BOOST_REGEX_CALL empty()const - { - return (m_pimpl.get() ? 0 != m_pimpl->status() : true); - } - - size_type BOOST_REGEX_CALL mark_count()const - { - return (m_pimpl.get() ? m_pimpl->mark_count() : 0); - } - - int status()const - { - return (m_pimpl.get() ? m_pimpl->status() : regex_constants::error_empty); - } - - int BOOST_REGEX_CALL compare(const basic_regex& that) const - { - if(m_pimpl.get() == that.m_pimpl.get()) - return 0; - if(!m_pimpl.get()) - return -1; - if(!that.m_pimpl.get()) - return 1; - if(status() != that.status()) - return status() - that.status(); - if(flags() != that.flags()) - return flags() - that.flags(); - return str().compare(that.str()); - } - bool BOOST_REGEX_CALL operator==(const basic_regex& e)const - { - return compare(e) == 0; - } - bool BOOST_REGEX_CALL operator != (const basic_regex& e)const - { - return compare(e) != 0; - } - bool BOOST_REGEX_CALL operator<(const basic_regex& e)const - { - return compare(e) < 0; - } - bool BOOST_REGEX_CALL operator>(const basic_regex& e)const - { - return compare(e) > 0; - } - bool BOOST_REGEX_CALL operator<=(const basic_regex& e)const - { - return compare(e) <= 0; - } - bool BOOST_REGEX_CALL operator>=(const basic_regex& e)const - { - return compare(e) >= 0; - } - - // - // The following are deprecated as public interfaces - // but are available for compatibility with earlier versions. - const charT* BOOST_REGEX_CALL expression()const - { - return (m_pimpl.get() && !m_pimpl->status() ? m_pimpl->expression() : 0); - } - unsigned int BOOST_REGEX_CALL set_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) - { - assign(p1, p2, f | regex_constants::no_except); - return status(); - } - unsigned int BOOST_REGEX_CALL set_expression(const charT* p, flag_type f = regex_constants::normal) - { - assign(p, f | regex_constants::no_except); - return status(); - } - unsigned int BOOST_REGEX_CALL error_code()const - { - return status(); - } - // - // private access methods: - // - const BOOST_REGEX_DETAIL_NS::re_syntax_base* get_first_state()const - { - BOOST_ASSERT(0 != m_pimpl.get()); - return m_pimpl->get_first_state(); - } - unsigned get_restart_type()const - { - BOOST_ASSERT(0 != m_pimpl.get()); - return m_pimpl->get_restart_type(); - } - const unsigned char* get_map()const - { - BOOST_ASSERT(0 != m_pimpl.get()); - return m_pimpl->get_map(); - } - const ::boost::regex_traits_wrapper& get_traits()const - { - BOOST_ASSERT(0 != m_pimpl.get()); - return m_pimpl->get_traits(); - } - bool can_be_null()const - { - BOOST_ASSERT(0 != m_pimpl.get()); - return m_pimpl->can_be_null(); - } - const BOOST_REGEX_DETAIL_NS::regex_data& get_data()const - { - BOOST_ASSERT(0 != m_pimpl.get()); - return m_pimpl->get_data(); - } - boost::shared_ptr get_named_subs()const - { - return m_pimpl; - } - -private: - shared_ptr > m_pimpl; -}; - -// -// out of line members; -// these are the only members that mutate the basic_regex object, -// and are designed to provide the strong exception guarentee -// (in the event of a throw, the state of the object remains unchanged). -// -template -basic_regex& basic_regex::do_assign(const charT* p1, - const charT* p2, - flag_type f) -{ - shared_ptr > temp; - if(!m_pimpl.get()) - { - temp = shared_ptr >(new BOOST_REGEX_DETAIL_NS::basic_regex_implementation()); - } - else - { - temp = shared_ptr >(new BOOST_REGEX_DETAIL_NS::basic_regex_implementation(m_pimpl->m_ptraits)); - } - temp->assign(p1, p2, f); - temp.swap(m_pimpl); - return *this; -} - -template -typename basic_regex::locale_type BOOST_REGEX_CALL basic_regex::imbue(locale_type l) -{ - shared_ptr > temp(new BOOST_REGEX_DETAIL_NS::basic_regex_implementation()); - locale_type result = temp->imbue(l); - temp.swap(m_pimpl); - return result; -} - -// -// non-members: -// -template -void swap(basic_regex& e1, basic_regex& e2) -{ - e1.swap(e2); -} - -#ifndef BOOST_NO_STD_LOCALE -template -std::basic_ostream& - operator << (std::basic_ostream& os, - const basic_regex& e) -{ - return (os << e.str()); -} -#else -template -std::ostream& operator << (std::ostream& os, const basic_regex& e) -{ - return (os << e.str()); -} -#endif - -// -// class reg_expression: -// this is provided for backwards compatibility only, -// it is deprecated, no not use! -// -#ifdef BOOST_REGEX_NO_FWD -template > -#else -template -#endif -class reg_expression : public basic_regex -{ -public: - typedef typename basic_regex::flag_type flag_type; - typedef typename basic_regex::size_type size_type; - explicit reg_expression(){} - explicit reg_expression(const charT* p, flag_type f = regex_constants::normal) - : basic_regex(p, f){} - reg_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) - : basic_regex(p1, p2, f){} - reg_expression(const charT* p, size_type len, flag_type f) - : basic_regex(p, len, f){} - reg_expression(const reg_expression& that) - : basic_regex(that) {} - ~reg_expression(){} - reg_expression& BOOST_REGEX_CALL operator=(const reg_expression& that) - { - return this->assign(that); - } - -#if !defined(BOOST_NO_MEMBER_TEMPLATES) - template - explicit reg_expression(const std::basic_string& p, flag_type f = regex_constants::normal) - : basic_regex(p, f) - { - } - - template - reg_expression(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal) - : basic_regex(arg_first, arg_last, f) - { - } - - template - reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string& p) - { - this->assign(p); - return *this; - } -#else - explicit reg_expression(const std::basic_string& p, flag_type f = regex_constants::normal) - : basic_regex(p, f) - { - } - - reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string& p) - { - this->assign(p); - return *this; - } -#endif - -}; - -#ifdef BOOST_MSVC -#pragma warning (pop) -#endif - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/src/boost/boost/regex/v4/basic_regex_creator.hpp b/src/boost/boost/regex/v4/basic_regex_creator.hpp deleted file mode 100644 index 54821e4c8..000000000 --- a/src/boost/boost/regex/v4/basic_regex_creator.hpp +++ /dev/null @@ -1,1575 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE basic_regex_creator.cpp - * VERSION see - * DESCRIPTION: Declares template class basic_regex_creator which fills in - * the data members of a regex_data object. - */ - -#ifndef BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP -#define BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -# pragma warning(push) -#if BOOST_MSVC < 1910 -#pragma warning(disable:4800) -#endif -#endif - -namespace boost{ - -namespace BOOST_REGEX_DETAIL_NS{ - -template -struct digraph : public std::pair -{ - digraph() : std::pair(charT(0), charT(0)){} - digraph(charT c1) : std::pair(c1, charT(0)){} - digraph(charT c1, charT c2) : std::pair(c1, c2) - {} - digraph(const digraph& d) : std::pair(d.first, d.second){} - template - digraph(const Seq& s) : std::pair() - { - BOOST_ASSERT(s.size() <= 2); - BOOST_ASSERT(s.size()); - this->first = s[0]; - this->second = (s.size() > 1) ? s[1] : 0; - } -}; - -template -class basic_char_set -{ -public: - typedef digraph digraph_type; - typedef typename traits::string_type string_type; - typedef typename traits::char_class_type m_type; - - basic_char_set() - { - m_negate = false; - m_has_digraphs = false; - m_classes = 0; - m_negated_classes = 0; - m_empty = true; - } - - void add_single(const digraph_type& s) - { - m_singles.insert(s); - if(s.second) - m_has_digraphs = true; - m_empty = false; - } - void add_range(const digraph_type& first, const digraph_type& end) - { - m_ranges.push_back(first); - m_ranges.push_back(end); - if(first.second) - { - m_has_digraphs = true; - add_single(first); - } - if(end.second) - { - m_has_digraphs = true; - add_single(end); - } - m_empty = false; - } - void add_class(m_type m) - { - m_classes |= m; - m_empty = false; - } - void add_negated_class(m_type m) - { - m_negated_classes |= m; - m_empty = false; - } - void add_equivalent(const digraph_type& s) - { - m_equivalents.insert(s); - if(s.second) - { - m_has_digraphs = true; - add_single(s); - } - m_empty = false; - } - void negate() - { - m_negate = true; - //m_empty = false; - } - - // - // accessor functions: - // - bool has_digraphs()const - { - return m_has_digraphs; - } - bool is_negated()const - { - return m_negate; - } - typedef typename std::vector::const_iterator list_iterator; - typedef typename std::set::const_iterator set_iterator; - set_iterator singles_begin()const - { - return m_singles.begin(); - } - set_iterator singles_end()const - { - return m_singles.end(); - } - list_iterator ranges_begin()const - { - return m_ranges.begin(); - } - list_iterator ranges_end()const - { - return m_ranges.end(); - } - set_iterator equivalents_begin()const - { - return m_equivalents.begin(); - } - set_iterator equivalents_end()const - { - return m_equivalents.end(); - } - m_type classes()const - { - return m_classes; - } - m_type negated_classes()const - { - return m_negated_classes; - } - bool empty()const - { - return m_empty; - } -private: - std::set m_singles; // a list of single characters to match - std::vector m_ranges; // a list of end points of our ranges - bool m_negate; // true if the set is to be negated - bool m_has_digraphs; // true if we have digraphs present - m_type m_classes; // character classes to match - m_type m_negated_classes; // negated character classes to match - bool m_empty; // whether we've added anything yet - std::set m_equivalents; // a list of equivalence classes -}; - -template -class basic_regex_creator -{ -public: - basic_regex_creator(regex_data* data); - std::ptrdiff_t getoffset(void* addr) - { - return getoffset(addr, m_pdata->m_data.data()); - } - std::ptrdiff_t getoffset(const void* addr, const void* base) - { - return static_cast(addr) - static_cast(base); - } - re_syntax_base* getaddress(std::ptrdiff_t off) - { - return getaddress(off, m_pdata->m_data.data()); - } - re_syntax_base* getaddress(std::ptrdiff_t off, void* base) - { - return static_cast(static_cast(static_cast(base) + off)); - } - void init(unsigned l_flags) - { - m_pdata->m_flags = l_flags; - m_icase = l_flags & regex_constants::icase; - } - regbase::flag_type flags() - { - return m_pdata->m_flags; - } - void flags(regbase::flag_type f) - { - m_pdata->m_flags = f; - if(m_icase != static_cast(f & regbase::icase)) - { - m_icase = static_cast(f & regbase::icase); - } - } - re_syntax_base* append_state(syntax_element_type t, std::size_t s = sizeof(re_syntax_base)); - re_syntax_base* insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s = sizeof(re_syntax_base)); - re_literal* append_literal(charT c); - re_syntax_base* append_set(const basic_char_set& char_set); - re_syntax_base* append_set(const basic_char_set& char_set, mpl::false_*); - re_syntax_base* append_set(const basic_char_set& char_set, mpl::true_*); - void finalize(const charT* p1, const charT* p2); -protected: - regex_data* m_pdata; // pointer to the basic_regex_data struct we are filling in - const ::boost::regex_traits_wrapper& - m_traits; // convenience reference to traits class - re_syntax_base* m_last_state; // the last state we added - bool m_icase; // true for case insensitive matches - unsigned m_repeater_id; // the state_id of the next repeater - bool m_has_backrefs; // true if there are actually any backrefs - unsigned m_backrefs; // bitmask of permitted backrefs - boost::uintmax_t m_bad_repeats; // bitmask of repeats we can't deduce a startmap for; - bool m_has_recursions; // set when we have recursive expresisons to fixup - std::vector m_recursion_checks; // notes which recursions we've followed while analysing this expression - typename traits::char_class_type m_word_mask; // mask used to determine if a character is a word character - typename traits::char_class_type m_mask_space; // mask used to determine if a character is a word character - typename traits::char_class_type m_lower_mask; // mask used to determine if a character is a lowercase character - typename traits::char_class_type m_upper_mask; // mask used to determine if a character is an uppercase character - typename traits::char_class_type m_alpha_mask; // mask used to determine if a character is an alphabetic character -private: - basic_regex_creator& operator=(const basic_regex_creator&); - basic_regex_creator(const basic_regex_creator&); - - void fixup_pointers(re_syntax_base* state); - void fixup_recursions(re_syntax_base* state); - void create_startmaps(re_syntax_base* state); - int calculate_backstep(re_syntax_base* state); - void create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask); - unsigned get_restart_type(re_syntax_base* state); - void set_all_masks(unsigned char* bits, unsigned char); - bool is_bad_repeat(re_syntax_base* pt); - void set_bad_repeat(re_syntax_base* pt); - syntax_element_type get_repeat_type(re_syntax_base* state); - void probe_leading_repeat(re_syntax_base* state); -}; - -template -basic_regex_creator::basic_regex_creator(regex_data* data) - : m_pdata(data), m_traits(*(data->m_ptraits)), m_last_state(0), m_repeater_id(0), m_has_backrefs(false), m_backrefs(0), m_has_recursions(false) -{ - m_pdata->m_data.clear(); - m_pdata->m_status = ::boost::regex_constants::error_ok; - static const charT w = 'w'; - static const charT s = 's'; - static const charT l[5] = { 'l', 'o', 'w', 'e', 'r', }; - static const charT u[5] = { 'u', 'p', 'p', 'e', 'r', }; - static const charT a[5] = { 'a', 'l', 'p', 'h', 'a', }; - m_word_mask = m_traits.lookup_classname(&w, &w +1); - m_mask_space = m_traits.lookup_classname(&s, &s +1); - m_lower_mask = m_traits.lookup_classname(l, l + 5); - m_upper_mask = m_traits.lookup_classname(u, u + 5); - m_alpha_mask = m_traits.lookup_classname(a, a + 5); - m_pdata->m_word_mask = m_word_mask; - BOOST_ASSERT(m_word_mask != 0); - BOOST_ASSERT(m_mask_space != 0); - BOOST_ASSERT(m_lower_mask != 0); - BOOST_ASSERT(m_upper_mask != 0); - BOOST_ASSERT(m_alpha_mask != 0); -} - -template -re_syntax_base* basic_regex_creator::append_state(syntax_element_type t, std::size_t s) -{ - // if the state is a backref then make a note of it: - if(t == syntax_element_backref) - this->m_has_backrefs = true; - // append a new state, start by aligning our last one: - m_pdata->m_data.align(); - // set the offset to the next state in our last one: - if(m_last_state) - m_last_state->next.i = m_pdata->m_data.size() - getoffset(m_last_state); - // now actually extent our data: - m_last_state = static_cast(m_pdata->m_data.extend(s)); - // fill in boilerplate options in the new state: - m_last_state->next.i = 0; - m_last_state->type = t; - return m_last_state; -} - -template -re_syntax_base* basic_regex_creator::insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s) -{ - // append a new state, start by aligning our last one: - m_pdata->m_data.align(); - // set the offset to the next state in our last one: - if(m_last_state) - m_last_state->next.i = m_pdata->m_data.size() - getoffset(m_last_state); - // remember the last state position: - std::ptrdiff_t off = getoffset(m_last_state) + s; - // now actually insert our data: - re_syntax_base* new_state = static_cast(m_pdata->m_data.insert(pos, s)); - // fill in boilerplate options in the new state: - new_state->next.i = s; - new_state->type = t; - m_last_state = getaddress(off); - return new_state; -} - -template -re_literal* basic_regex_creator::append_literal(charT c) -{ - re_literal* result; - // start by seeing if we have an existing re_literal we can extend: - if((0 == m_last_state) || (m_last_state->type != syntax_element_literal)) - { - // no existing re_literal, create a new one: - result = static_cast(append_state(syntax_element_literal, sizeof(re_literal) + sizeof(charT))); - result->length = 1; - *static_cast(static_cast(result+1)) = m_traits.translate(c, m_icase); - } - else - { - // we have an existing re_literal, extend it: - std::ptrdiff_t off = getoffset(m_last_state); - m_pdata->m_data.extend(sizeof(charT)); - m_last_state = result = static_cast(getaddress(off)); - charT* characters = static_cast(static_cast(result+1)); - characters[result->length] = m_traits.translate(c, m_icase); - result->length += 1; - } - return result; -} - -template -inline re_syntax_base* basic_regex_creator::append_set( - const basic_char_set& char_set) -{ - typedef mpl::bool_< (sizeof(charT) == 1) > truth_type; - return char_set.has_digraphs() - ? append_set(char_set, static_cast(0)) - : append_set(char_set, static_cast(0)); -} - -template -re_syntax_base* basic_regex_creator::append_set( - const basic_char_set& char_set, mpl::false_*) -{ - typedef typename traits::string_type string_type; - typedef typename basic_char_set::list_iterator item_iterator; - typedef typename basic_char_set::set_iterator set_iterator; - typedef typename traits::char_class_type m_type; - - re_set_long* result = static_cast*>(append_state(syntax_element_long_set, sizeof(re_set_long))); - // - // fill in the basics: - // - result->csingles = static_cast(::boost::BOOST_REGEX_DETAIL_NS::distance(char_set.singles_begin(), char_set.singles_end())); - result->cranges = static_cast(::boost::BOOST_REGEX_DETAIL_NS::distance(char_set.ranges_begin(), char_set.ranges_end())) / 2; - result->cequivalents = static_cast(::boost::BOOST_REGEX_DETAIL_NS::distance(char_set.equivalents_begin(), char_set.equivalents_end())); - result->cclasses = char_set.classes(); - result->cnclasses = char_set.negated_classes(); - if(flags() & regbase::icase) - { - // adjust classes as needed: - if(((result->cclasses & m_lower_mask) == m_lower_mask) || ((result->cclasses & m_upper_mask) == m_upper_mask)) - result->cclasses |= m_alpha_mask; - if(((result->cnclasses & m_lower_mask) == m_lower_mask) || ((result->cnclasses & m_upper_mask) == m_upper_mask)) - result->cnclasses |= m_alpha_mask; - } - - result->isnot = char_set.is_negated(); - result->singleton = !char_set.has_digraphs(); - // - // remember where the state is for later: - // - std::ptrdiff_t offset = getoffset(result); - // - // now extend with all the singles: - // - item_iterator first, last; - set_iterator sfirst, slast; - sfirst = char_set.singles_begin(); - slast = char_set.singles_end(); - while(sfirst != slast) - { - charT* p = static_cast(this->m_pdata->m_data.extend(sizeof(charT) * (sfirst->first == static_cast(0) ? 1 : sfirst->second ? 3 : 2))); - p[0] = m_traits.translate(sfirst->first, m_icase); - if(sfirst->first == static_cast(0)) - { - p[0] = 0; - } - else if(sfirst->second) - { - p[1] = m_traits.translate(sfirst->second, m_icase); - p[2] = 0; - } - else - p[1] = 0; - ++sfirst; - } - // - // now extend with all the ranges: - // - first = char_set.ranges_begin(); - last = char_set.ranges_end(); - while(first != last) - { - // first grab the endpoints of the range: - digraph c1 = *first; - c1.first = this->m_traits.translate(c1.first, this->m_icase); - c1.second = this->m_traits.translate(c1.second, this->m_icase); - ++first; - digraph c2 = *first; - c2.first = this->m_traits.translate(c2.first, this->m_icase); - c2.second = this->m_traits.translate(c2.second, this->m_icase); - ++first; - string_type s1, s2; - // different actions now depending upon whether collation is turned on: - if(flags() & regex_constants::collate) - { - // we need to transform our range into sort keys: - charT a1[3] = { c1.first, c1.second, charT(0), }; - charT a2[3] = { c2.first, c2.second, charT(0), }; - s1 = this->m_traits.transform(a1, (a1[1] ? a1+2 : a1+1)); - s2 = this->m_traits.transform(a2, (a2[1] ? a2+2 : a2+1)); - if(s1.size() == 0) - s1 = string_type(1, charT(0)); - if(s2.size() == 0) - s2 = string_type(1, charT(0)); - } - else - { - if(c1.second) - { - s1.insert(s1.end(), c1.first); - s1.insert(s1.end(), c1.second); - } - else - s1 = string_type(1, c1.first); - if(c2.second) - { - s2.insert(s2.end(), c2.first); - s2.insert(s2.end(), c2.second); - } - else - s2.insert(s2.end(), c2.first); - } - if(s1 > s2) - { - // Oops error: - return 0; - } - charT* p = static_cast(this->m_pdata->m_data.extend(sizeof(charT) * (s1.size() + s2.size() + 2) ) ); - BOOST_REGEX_DETAIL_NS::copy(s1.begin(), s1.end(), p); - p[s1.size()] = charT(0); - p += s1.size() + 1; - BOOST_REGEX_DETAIL_NS::copy(s2.begin(), s2.end(), p); - p[s2.size()] = charT(0); - } - // - // now process the equivalence classes: - // - sfirst = char_set.equivalents_begin(); - slast = char_set.equivalents_end(); - while(sfirst != slast) - { - string_type s; - if(sfirst->second) - { - charT cs[3] = { sfirst->first, sfirst->second, charT(0), }; - s = m_traits.transform_primary(cs, cs+2); - } - else - s = m_traits.transform_primary(&sfirst->first, &sfirst->first+1); - if(s.empty()) - return 0; // invalid or unsupported equivalence class - charT* p = static_cast(this->m_pdata->m_data.extend(sizeof(charT) * (s.size()+1) ) ); - BOOST_REGEX_DETAIL_NS::copy(s.begin(), s.end(), p); - p[s.size()] = charT(0); - ++sfirst; - } - // - // finally reset the address of our last state: - // - m_last_state = result = static_cast*>(getaddress(offset)); - return result; -} - -template -inline bool char_less(T t1, T t2) -{ - return t1 < t2; -} -inline bool char_less(char t1, char t2) -{ - return static_cast(t1) < static_cast(t2); -} -inline bool char_less(signed char t1, signed char t2) -{ - return static_cast(t1) < static_cast(t2); -} - -template -re_syntax_base* basic_regex_creator::append_set( - const basic_char_set& char_set, mpl::true_*) -{ - typedef typename traits::string_type string_type; - typedef typename basic_char_set::list_iterator item_iterator; - typedef typename basic_char_set::set_iterator set_iterator; - - re_set* result = static_cast(append_state(syntax_element_set, sizeof(re_set))); - bool negate = char_set.is_negated(); - std::memset(result->_map, 0, sizeof(result->_map)); - // - // handle singles first: - // - item_iterator first, last; - set_iterator sfirst, slast; - sfirst = char_set.singles_begin(); - slast = char_set.singles_end(); - while(sfirst != slast) - { - for(unsigned int i = 0; i < (1 << CHAR_BIT); ++i) - { - if(this->m_traits.translate(static_cast(i), this->m_icase) - == this->m_traits.translate(sfirst->first, this->m_icase)) - result->_map[i] = true; - } - ++sfirst; - } - // - // OK now handle ranges: - // - first = char_set.ranges_begin(); - last = char_set.ranges_end(); - while(first != last) - { - // first grab the endpoints of the range: - charT c1 = this->m_traits.translate(first->first, this->m_icase); - ++first; - charT c2 = this->m_traits.translate(first->first, this->m_icase); - ++first; - // different actions now depending upon whether collation is turned on: - if(flags() & regex_constants::collate) - { - // we need to transform our range into sort keys: - charT c3[2] = { c1, charT(0), }; - string_type s1 = this->m_traits.transform(c3, c3+1); - c3[0] = c2; - string_type s2 = this->m_traits.transform(c3, c3+1); - if(s1 > s2) - { - // Oops error: - return 0; - } - BOOST_ASSERT(c3[1] == charT(0)); - for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) - { - c3[0] = static_cast(i); - string_type s3 = this->m_traits.transform(c3, c3 +1); - if((s1 <= s3) && (s3 <= s2)) - result->_map[i] = true; - } - } - else - { - if(char_less(c2, c1)) - { - // Oops error: - return 0; - } - // everything in range matches: - std::memset(result->_map + static_cast(c1), true, 1 + static_cast(c2) - static_cast(c1)); - } - } - // - // and now the classes: - // - typedef typename traits::char_class_type m_type; - m_type m = char_set.classes(); - if(flags() & regbase::icase) - { - // adjust m as needed: - if(((m & m_lower_mask) == m_lower_mask) || ((m & m_upper_mask) == m_upper_mask)) - m |= m_alpha_mask; - } - if(m != 0) - { - for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) - { - if(this->m_traits.isctype(static_cast(i), m)) - result->_map[i] = true; - } - } - // - // and now the negated classes: - // - m = char_set.negated_classes(); - if(flags() & regbase::icase) - { - // adjust m as needed: - if(((m & m_lower_mask) == m_lower_mask) || ((m & m_upper_mask) == m_upper_mask)) - m |= m_alpha_mask; - } - if(m != 0) - { - for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) - { - if(0 == this->m_traits.isctype(static_cast(i), m)) - result->_map[i] = true; - } - } - // - // now process the equivalence classes: - // - sfirst = char_set.equivalents_begin(); - slast = char_set.equivalents_end(); - while(sfirst != slast) - { - string_type s; - BOOST_ASSERT(static_cast(0) == sfirst->second); - s = m_traits.transform_primary(&sfirst->first, &sfirst->first+1); - if(s.empty()) - return 0; // invalid or unsupported equivalence class - for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) - { - charT c[2] = { (static_cast(i)), charT(0), }; - string_type s2 = this->m_traits.transform_primary(c, c+1); - if(s == s2) - result->_map[i] = true; - } - ++sfirst; - } - if(negate) - { - for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) - { - result->_map[i] = !(result->_map[i]); - } - } - return result; -} - -template -void basic_regex_creator::finalize(const charT* p1, const charT* p2) -{ - if(this->m_pdata->m_status) - return; - // we've added all the states we need, now finish things off. - // start by adding a terminating state: - append_state(syntax_element_match); - // extend storage to store original expression: - std::ptrdiff_t len = p2 - p1; - m_pdata->m_expression_len = len; - charT* ps = static_cast(m_pdata->m_data.extend(sizeof(charT) * (1 + (p2 - p1)))); - m_pdata->m_expression = ps; - BOOST_REGEX_DETAIL_NS::copy(p1, p2, ps); - ps[p2 - p1] = 0; - // fill in our other data... - // successful parsing implies a zero status: - m_pdata->m_status = 0; - // get the first state of the machine: - m_pdata->m_first_state = static_cast(m_pdata->m_data.data()); - // fixup pointers in the machine: - fixup_pointers(m_pdata->m_first_state); - if(m_has_recursions) - { - m_pdata->m_has_recursions = true; - fixup_recursions(m_pdata->m_first_state); - if(this->m_pdata->m_status) - return; - } - else - m_pdata->m_has_recursions = false; - // create nested startmaps: - create_startmaps(m_pdata->m_first_state); - // create main startmap: - std::memset(m_pdata->m_startmap, 0, sizeof(m_pdata->m_startmap)); - m_pdata->m_can_be_null = 0; - - m_bad_repeats = 0; - if(m_has_recursions) - m_recursion_checks.assign(1 + m_pdata->m_mark_count, 0u); - create_startmap(m_pdata->m_first_state, m_pdata->m_startmap, &(m_pdata->m_can_be_null), mask_all); - // get the restart type: - m_pdata->m_restart_type = get_restart_type(m_pdata->m_first_state); - // optimise a leading repeat if there is one: - probe_leading_repeat(m_pdata->m_first_state); -} - -template -void basic_regex_creator::fixup_pointers(re_syntax_base* state) -{ - while(state) - { - switch(state->type) - { - case syntax_element_recurse: - m_has_recursions = true; - if(state->next.i) - state->next.p = getaddress(state->next.i, state); - else - state->next.p = 0; - break; - case syntax_element_rep: - case syntax_element_dot_rep: - case syntax_element_char_rep: - case syntax_element_short_set_rep: - case syntax_element_long_set_rep: - // set the state_id of this repeat: - static_cast(state)->state_id = m_repeater_id++; - BOOST_FALLTHROUGH; - case syntax_element_alt: - std::memset(static_cast(state)->_map, 0, sizeof(static_cast(state)->_map)); - static_cast(state)->can_be_null = 0; - BOOST_FALLTHROUGH; - case syntax_element_jump: - static_cast(state)->alt.p = getaddress(static_cast(state)->alt.i, state); - BOOST_FALLTHROUGH; - default: - if(state->next.i) - state->next.p = getaddress(state->next.i, state); - else - state->next.p = 0; - } - state = state->next.p; - } -} - -template -void basic_regex_creator::fixup_recursions(re_syntax_base* state) -{ - re_syntax_base* base = state; - while(state) - { - switch(state->type) - { - case syntax_element_assert_backref: - { - // just check that the index is valid: - int idx = static_cast(state)->index; - if(idx < 0) - { - idx = -idx-1; - if(idx >= 10000) - { - idx = m_pdata->get_id(idx); - if(idx <= 0) - { - // check of sub-expression that doesn't exist: - if(0 == this->m_pdata->m_status) // update the error code if not already set - this->m_pdata->m_status = boost::regex_constants::error_bad_pattern; - // - // clear the expression, we should be empty: - // - this->m_pdata->m_expression = 0; - this->m_pdata->m_expression_len = 0; - // - // and throw if required: - // - if(0 == (this->flags() & regex_constants::no_except)) - { - std::string message = "Encountered a forward reference to a marked sub-expression that does not exist."; - boost::regex_error e(message, boost::regex_constants::error_bad_pattern, 0); - e.raise(); - } - } - } - } - } - break; - case syntax_element_recurse: - { - bool ok = false; - re_syntax_base* p = base; - std::ptrdiff_t idx = static_cast(state)->alt.i; - if(idx > 10000) - { - // - // There may be more than one capture group with this hash, just do what Perl - // does and recurse to the leftmost: - // - idx = m_pdata->get_id(static_cast(idx)); - } - if(idx < 0) - { - ok = false; - } - else - { - while(p) - { - if((p->type == syntax_element_startmark) && (static_cast(p)->index == idx)) - { - // - // We've found the target of the recursion, set the jump target: - // - static_cast(state)->alt.p = p; - ok = true; - // - // Now scan the target for nested repeats: - // - p = p->next.p; - int next_rep_id = 0; - while(p) - { - switch(p->type) - { - case syntax_element_rep: - case syntax_element_dot_rep: - case syntax_element_char_rep: - case syntax_element_short_set_rep: - case syntax_element_long_set_rep: - next_rep_id = static_cast(p)->state_id; - break; - case syntax_element_endmark: - if(static_cast(p)->index == idx) - next_rep_id = -1; - break; - default: - break; - } - if(next_rep_id) - break; - p = p->next.p; - } - if(next_rep_id > 0) - { - static_cast(state)->state_id = next_rep_id - 1; - } - - break; - } - p = p->next.p; - } - } - if(!ok) - { - // recursion to sub-expression that doesn't exist: - if(0 == this->m_pdata->m_status) // update the error code if not already set - this->m_pdata->m_status = boost::regex_constants::error_bad_pattern; - // - // clear the expression, we should be empty: - // - this->m_pdata->m_expression = 0; - this->m_pdata->m_expression_len = 0; - // - // and throw if required: - // - if(0 == (this->flags() & regex_constants::no_except)) - { - std::string message = "Encountered a forward reference to a recursive sub-expression that does not exist."; - boost::regex_error e(message, boost::regex_constants::error_bad_pattern, 0); - e.raise(); - } - } - } - break; - default: - break; - } - state = state->next.p; - } -} - -template -void basic_regex_creator::create_startmaps(re_syntax_base* state) -{ - // non-recursive implementation: - // create the last map in the machine first, so that earlier maps - // can make use of the result... - // - // This was originally a recursive implementation, but that caused stack - // overflows with complex expressions on small stacks (think COM+). - - // start by saving the case setting: - bool l_icase = m_icase; - std::vector > v; - - while(state) - { - switch(state->type) - { - case syntax_element_toggle_case: - // we need to track case changes here: - m_icase = static_cast(state)->icase; - state = state->next.p; - continue; - case syntax_element_alt: - case syntax_element_rep: - case syntax_element_dot_rep: - case syntax_element_char_rep: - case syntax_element_short_set_rep: - case syntax_element_long_set_rep: - // just push the state onto our stack for now: - v.push_back(std::pair(m_icase, state)); - state = state->next.p; - break; - case syntax_element_backstep: - // we need to calculate how big the backstep is: - static_cast(state)->index - = this->calculate_backstep(state->next.p); - if(static_cast(state)->index < 0) - { - // Oops error: - if(0 == this->m_pdata->m_status) // update the error code if not already set - this->m_pdata->m_status = boost::regex_constants::error_bad_pattern; - // - // clear the expression, we should be empty: - // - this->m_pdata->m_expression = 0; - this->m_pdata->m_expression_len = 0; - // - // and throw if required: - // - if(0 == (this->flags() & regex_constants::no_except)) - { - std::string message = "Invalid lookbehind assertion encountered in the regular expression."; - boost::regex_error e(message, boost::regex_constants::error_bad_pattern, 0); - e.raise(); - } - } - BOOST_FALLTHROUGH; - default: - state = state->next.p; - } - } - - // now work through our list, building all the maps as we go: - while(v.size()) - { - // Initialize m_recursion_checks if we need it: - if(m_has_recursions) - m_recursion_checks.assign(1 + m_pdata->m_mark_count, 0u); - - const std::pair& p = v.back(); - m_icase = p.first; - state = p.second; - v.pop_back(); - - // Build maps: - m_bad_repeats = 0; - create_startmap(state->next.p, static_cast(state)->_map, &static_cast(state)->can_be_null, mask_take); - m_bad_repeats = 0; - - if(m_has_recursions) - m_recursion_checks.assign(1 + m_pdata->m_mark_count, 0u); - create_startmap(static_cast(state)->alt.p, static_cast(state)->_map, &static_cast(state)->can_be_null, mask_skip); - // adjust the type of the state to allow for faster matching: - state->type = this->get_repeat_type(state); - } - // restore case sensitivity: - m_icase = l_icase; -} - -template -int basic_regex_creator::calculate_backstep(re_syntax_base* state) -{ - typedef typename traits::char_class_type m_type; - int result = 0; - while(state) - { - switch(state->type) - { - case syntax_element_startmark: - if((static_cast(state)->index == -1) - || (static_cast(state)->index == -2)) - { - state = static_cast(state->next.p)->alt.p->next.p; - continue; - } - else if(static_cast(state)->index == -3) - { - state = state->next.p->next.p; - continue; - } - break; - case syntax_element_endmark: - if((static_cast(state)->index == -1) - || (static_cast(state)->index == -2)) - return result; - break; - case syntax_element_literal: - result += static_cast(state)->length; - break; - case syntax_element_wild: - case syntax_element_set: - result += 1; - break; - case syntax_element_dot_rep: - case syntax_element_char_rep: - case syntax_element_short_set_rep: - case syntax_element_backref: - case syntax_element_rep: - case syntax_element_combining: - case syntax_element_long_set_rep: - case syntax_element_backstep: - { - re_repeat* rep = static_cast(state); - // adjust the type of the state to allow for faster matching: - state->type = this->get_repeat_type(state); - if((state->type == syntax_element_dot_rep) - || (state->type == syntax_element_char_rep) - || (state->type == syntax_element_short_set_rep)) - { - if(rep->max != rep->min) - return -1; - result += static_cast(rep->min); - state = rep->alt.p; - continue; - } - else if(state->type == syntax_element_long_set_rep) - { - BOOST_ASSERT(rep->next.p->type == syntax_element_long_set); - if(static_cast*>(rep->next.p)->singleton == 0) - return -1; - if(rep->max != rep->min) - return -1; - result += static_cast(rep->min); - state = rep->alt.p; - continue; - } - } - return -1; - case syntax_element_long_set: - if(static_cast*>(state)->singleton == 0) - return -1; - result += 1; - break; - case syntax_element_jump: - state = static_cast(state)->alt.p; - continue; - case syntax_element_alt: - { - int r1 = calculate_backstep(state->next.p); - int r2 = calculate_backstep(static_cast(state)->alt.p); - if((r1 < 0) || (r1 != r2)) - return -1; - return result + r1; - } - default: - break; - } - state = state->next.p; - } - return -1; -} - -template -void basic_regex_creator::create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask) -{ - int not_last_jump = 1; - re_syntax_base* recursion_start = 0; - int recursion_sub = 0; - re_syntax_base* recursion_restart = 0; - - // track case sensitivity: - bool l_icase = m_icase; - - while(state) - { - switch(state->type) - { - case syntax_element_toggle_case: - l_icase = static_cast(state)->icase; - state = state->next.p; - break; - case syntax_element_literal: - { - // don't set anything in *pnull, set each element in l_map - // that could match the first character in the literal: - if(l_map) - { - l_map[0] |= mask_init; - charT first_char = *static_cast(static_cast(static_cast(state) + 1)); - for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i) - { - if(m_traits.translate(static_cast(i), l_icase) == first_char) - l_map[i] |= mask; - } - } - return; - } - case syntax_element_end_line: - { - // next character must be a line separator (if there is one): - if(l_map) - { - l_map[0] |= mask_init; - l_map[static_cast('\n')] |= mask; - l_map[static_cast('\r')] |= mask; - l_map[static_cast('\f')] |= mask; - l_map[0x85] |= mask; - } - // now figure out if we can match a NULL string at this point: - if(pnull) - create_startmap(state->next.p, 0, pnull, mask); - return; - } - case syntax_element_recurse: - { - BOOST_ASSERT(static_cast(state)->alt.p->type == syntax_element_startmark); - recursion_sub = static_cast(static_cast(state)->alt.p)->index; - if(m_recursion_checks[recursion_sub] & 1u) - { - // Infinite recursion!! - if(0 == this->m_pdata->m_status) // update the error code if not already set - this->m_pdata->m_status = boost::regex_constants::error_bad_pattern; - // - // clear the expression, we should be empty: - // - this->m_pdata->m_expression = 0; - this->m_pdata->m_expression_len = 0; - // - // and throw if required: - // - if(0 == (this->flags() & regex_constants::no_except)) - { - std::string message = "Encountered an infinite recursion."; - boost::regex_error e(message, boost::regex_constants::error_bad_pattern, 0); - e.raise(); - } - } - else if(recursion_start == 0) - { - recursion_start = state; - recursion_restart = state->next.p; - state = static_cast(state)->alt.p; - m_recursion_checks[recursion_sub] |= 1u; - break; - } - m_recursion_checks[recursion_sub] |= 1u; - // can't handle nested recursion here... - BOOST_FALLTHROUGH; - } - case syntax_element_backref: - // can be null, and any character can match: - if(pnull) - *pnull |= mask; - BOOST_FALLTHROUGH; - case syntax_element_wild: - { - // can't be null, any character can match: - set_all_masks(l_map, mask); - return; - } - case syntax_element_accept: - case syntax_element_match: - { - // must be null, any character can match: - set_all_masks(l_map, mask); - if(pnull) - *pnull |= mask; - return; - } - case syntax_element_word_start: - { - // recurse, then AND with all the word characters: - create_startmap(state->next.p, l_map, pnull, mask); - if(l_map) - { - l_map[0] |= mask_init; - for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i) - { - if(!m_traits.isctype(static_cast(i), m_word_mask)) - l_map[i] &= static_cast(~mask); - } - } - return; - } - case syntax_element_word_end: - { - // recurse, then AND with all the word characters: - create_startmap(state->next.p, l_map, pnull, mask); - if(l_map) - { - l_map[0] |= mask_init; - for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i) - { - if(m_traits.isctype(static_cast(i), m_word_mask)) - l_map[i] &= static_cast(~mask); - } - } - return; - } - case syntax_element_buffer_end: - { - // we *must be null* : - if(pnull) - *pnull |= mask; - return; - } - case syntax_element_long_set: - if(l_map) - { - typedef typename traits::char_class_type m_type; - if(static_cast*>(state)->singleton) - { - l_map[0] |= mask_init; - for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i) - { - charT c = static_cast(i); - if(&c != re_is_set_member(&c, &c + 1, static_cast*>(state), *m_pdata, l_icase)) - l_map[i] |= mask; - } - } - else - set_all_masks(l_map, mask); - } - return; - case syntax_element_set: - if(l_map) - { - l_map[0] |= mask_init; - for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i) - { - if(static_cast(state)->_map[ - static_cast(m_traits.translate(static_cast(i), l_icase))]) - l_map[i] |= mask; - } - } - return; - case syntax_element_jump: - // take the jump: - state = static_cast(state)->alt.p; - not_last_jump = -1; - break; - case syntax_element_alt: - case syntax_element_rep: - case syntax_element_dot_rep: - case syntax_element_char_rep: - case syntax_element_short_set_rep: - case syntax_element_long_set_rep: - { - re_alt* rep = static_cast(state); - if(rep->_map[0] & mask_init) - { - if(l_map) - { - // copy previous results: - l_map[0] |= mask_init; - for(unsigned int i = 0; i <= UCHAR_MAX; ++i) - { - if(rep->_map[i] & mask_any) - l_map[i] |= mask; - } - } - if(pnull) - { - if(rep->can_be_null & mask_any) - *pnull |= mask; - } - } - else - { - // we haven't created a startmap for this alternative yet - // so take the union of the two options: - if(is_bad_repeat(state)) - { - set_all_masks(l_map, mask); - if(pnull) - *pnull |= mask; - return; - } - set_bad_repeat(state); - create_startmap(state->next.p, l_map, pnull, mask); - if((state->type == syntax_element_alt) - || (static_cast(state)->min == 0) - || (not_last_jump == 0)) - create_startmap(rep->alt.p, l_map, pnull, mask); - } - } - return; - case syntax_element_soft_buffer_end: - // match newline or null: - if(l_map) - { - l_map[0] |= mask_init; - l_map[static_cast('\n')] |= mask; - l_map[static_cast('\r')] |= mask; - } - if(pnull) - *pnull |= mask; - return; - case syntax_element_endmark: - // need to handle independent subs as a special case: - if(static_cast(state)->index < 0) - { - // can be null, any character can match: - set_all_masks(l_map, mask); - if(pnull) - *pnull |= mask; - return; - } - else if(recursion_start && (recursion_sub != 0) && (recursion_sub == static_cast(state)->index)) - { - // recursion termination: - recursion_start = 0; - state = recursion_restart; - break; - } - - // - // Normally we just go to the next state... but if this sub-expression is - // the target of a recursion, then we might be ending a recursion, in which - // case we should check whatever follows that recursion, as well as whatever - // follows this state: - // - if(m_pdata->m_has_recursions && static_cast(state)->index) - { - bool ok = false; - re_syntax_base* p = m_pdata->m_first_state; - while(p) - { - if(p->type == syntax_element_recurse) - { - re_brace* p2 = static_cast(static_cast(p)->alt.p); - if((p2->type == syntax_element_startmark) && (p2->index == static_cast(state)->index)) - { - ok = true; - break; - } - } - p = p->next.p; - } - if(ok && ((m_recursion_checks[static_cast(state)->index] & 2u) == 0)) - { - m_recursion_checks[static_cast(state)->index] |= 2u; - create_startmap(p->next.p, l_map, pnull, mask); - } - } - state = state->next.p; - break; - - case syntax_element_commit: - set_all_masks(l_map, mask); - // Continue scanning so we can figure out whether we can be null: - state = state->next.p; - break; - case syntax_element_startmark: - // need to handle independent subs as a special case: - if(static_cast(state)->index == -3) - { - state = state->next.p->next.p; - break; - } - BOOST_FALLTHROUGH; - default: - state = state->next.p; - } - ++not_last_jump; - } -} - -template -unsigned basic_regex_creator::get_restart_type(re_syntax_base* state) -{ - // - // find out how the machine starts, so we can optimise the search: - // - while(state) - { - switch(state->type) - { - case syntax_element_startmark: - case syntax_element_endmark: - state = state->next.p; - continue; - case syntax_element_start_line: - return regbase::restart_line; - case syntax_element_word_start: - return regbase::restart_word; - case syntax_element_buffer_start: - return regbase::restart_buf; - case syntax_element_restart_continue: - return regbase::restart_continue; - default: - state = 0; - continue; - } - } - return regbase::restart_any; -} - -template -void basic_regex_creator::set_all_masks(unsigned char* bits, unsigned char mask) -{ - // - // set mask in all of bits elements, - // if bits[0] has mask_init not set then we can - // optimise this to a call to memset: - // - if(bits) - { - if(bits[0] == 0) - (std::memset)(bits, mask, 1u << CHAR_BIT); - else - { - for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) - bits[i] |= mask; - } - bits[0] |= mask_init; - } -} - -template -bool basic_regex_creator::is_bad_repeat(re_syntax_base* pt) -{ - switch(pt->type) - { - case syntax_element_rep: - case syntax_element_dot_rep: - case syntax_element_char_rep: - case syntax_element_short_set_rep: - case syntax_element_long_set_rep: - { - unsigned state_id = static_cast(pt)->state_id; - if(state_id >= sizeof(m_bad_repeats) * CHAR_BIT) - return true; // run out of bits, assume we can't traverse this one. - static const boost::uintmax_t one = 1uL; - return m_bad_repeats & (one << state_id); - } - default: - return false; - } -} - -template -void basic_regex_creator::set_bad_repeat(re_syntax_base* pt) -{ - switch(pt->type) - { - case syntax_element_rep: - case syntax_element_dot_rep: - case syntax_element_char_rep: - case syntax_element_short_set_rep: - case syntax_element_long_set_rep: - { - unsigned state_id = static_cast(pt)->state_id; - static const boost::uintmax_t one = 1uL; - if(state_id <= sizeof(m_bad_repeats) * CHAR_BIT) - m_bad_repeats |= (one << state_id); - } - break; - default: - break; - } -} - -template -syntax_element_type basic_regex_creator::get_repeat_type(re_syntax_base* state) -{ - typedef typename traits::char_class_type m_type; - if(state->type == syntax_element_rep) - { - // check to see if we are repeating a single state: - if(state->next.p->next.p->next.p == static_cast(state)->alt.p) - { - switch(state->next.p->type) - { - case BOOST_REGEX_DETAIL_NS::syntax_element_wild: - return BOOST_REGEX_DETAIL_NS::syntax_element_dot_rep; - case BOOST_REGEX_DETAIL_NS::syntax_element_literal: - return BOOST_REGEX_DETAIL_NS::syntax_element_char_rep; - case BOOST_REGEX_DETAIL_NS::syntax_element_set: - return BOOST_REGEX_DETAIL_NS::syntax_element_short_set_rep; - case BOOST_REGEX_DETAIL_NS::syntax_element_long_set: - if(static_cast*>(state->next.p)->singleton) - return BOOST_REGEX_DETAIL_NS::syntax_element_long_set_rep; - break; - default: - break; - } - } - } - return state->type; -} - -template -void basic_regex_creator::probe_leading_repeat(re_syntax_base* state) -{ - // enumerate our states, and see if we have a leading repeat - // for which failed search restarts can be optimised; - do - { - switch(state->type) - { - case syntax_element_startmark: - if(static_cast(state)->index >= 0) - { - state = state->next.p; - continue; - } - if((static_cast(state)->index == -1) - || (static_cast(state)->index == -2)) - { - // skip past the zero width assertion: - state = static_cast(state->next.p)->alt.p->next.p; - continue; - } - if(static_cast(state)->index == -3) - { - // Have to skip the leading jump state: - state = state->next.p->next.p; - continue; - } - return; - case syntax_element_endmark: - case syntax_element_start_line: - case syntax_element_end_line: - case syntax_element_word_boundary: - case syntax_element_within_word: - case syntax_element_word_start: - case syntax_element_word_end: - case syntax_element_buffer_start: - case syntax_element_buffer_end: - case syntax_element_restart_continue: - state = state->next.p; - break; - case syntax_element_dot_rep: - case syntax_element_char_rep: - case syntax_element_short_set_rep: - case syntax_element_long_set_rep: - if(this->m_has_backrefs == 0) - static_cast(state)->leading = true; - BOOST_FALLTHROUGH; - default: - return; - } - }while(state); -} - - -} // namespace BOOST_REGEX_DETAIL_NS - -} // namespace boost - -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/src/boost/boost/regex/v4/basic_regex_parser.hpp b/src/boost/boost/regex/v4/basic_regex_parser.hpp deleted file mode 100644 index bbdaeb7a1..000000000 --- a/src/boost/boost/regex/v4/basic_regex_parser.hpp +++ /dev/null @@ -1,3143 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE basic_regex_parser.cpp - * VERSION see - * DESCRIPTION: Declares template class basic_regex_parser. - */ - -#ifndef BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP -#define BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -namespace BOOST_REGEX_DETAIL_NS{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4244) -#if BOOST_MSVC < 1910 -#pragma warning(disable:4800) -#endif -#endif - -inline boost::intmax_t umax(mpl::false_ const&) -{ - // Get out clause here, just in case numeric_limits is unspecialized: - return std::numeric_limits::is_specialized ? (std::numeric_limits::max)() : INT_MAX; -} -inline boost::intmax_t umax(mpl::true_ const&) -{ - return (std::numeric_limits::max)(); -} - -inline boost::intmax_t umax() -{ - return umax(mpl::bool_::digits >= std::numeric_limits::digits>()); -} - -template -class basic_regex_parser : public basic_regex_creator -{ -public: - basic_regex_parser(regex_data* data); - void parse(const charT* p1, const charT* p2, unsigned flags); - void fail(regex_constants::error_type error_code, std::ptrdiff_t position); - void fail(regex_constants::error_type error_code, std::ptrdiff_t position, std::string message, std::ptrdiff_t start_pos); - void fail(regex_constants::error_type error_code, std::ptrdiff_t position, const std::string& message) - { - fail(error_code, position, message, position); - } - - bool parse_all(); - bool parse_basic(); - bool parse_extended(); - bool parse_literal(); - bool parse_open_paren(); - bool parse_basic_escape(); - bool parse_extended_escape(); - bool parse_match_any(); - bool parse_repeat(std::size_t low = 0, std::size_t high = (std::numeric_limits::max)()); - bool parse_repeat_range(bool isbasic); - bool parse_alt(); - bool parse_set(); - bool parse_backref(); - void parse_set_literal(basic_char_set& char_set); - bool parse_inner_set(basic_char_set& char_set); - bool parse_QE(); - bool parse_perl_extension(); - bool parse_perl_verb(); - bool match_verb(const char*); - bool add_emacs_code(bool negate); - bool unwind_alts(std::ptrdiff_t last_paren_start); - digraph get_next_set_literal(basic_char_set& char_set); - charT unescape_character(); - regex_constants::syntax_option_type parse_options(); - -private: - typedef bool (basic_regex_parser::*parser_proc_type)(); - typedef typename traits::string_type string_type; - typedef typename traits::char_class_type char_class_type; - parser_proc_type m_parser_proc; // the main parser to use - const charT* m_base; // the start of the string being parsed - const charT* m_end; // the end of the string being parsed - const charT* m_position; // our current parser position - unsigned m_mark_count; // how many sub-expressions we have - int m_mark_reset; // used to indicate that we're inside a (?|...) block. - unsigned m_max_mark; // largest mark count seen inside a (?|...) block. - std::ptrdiff_t m_paren_start; // where the last seen ')' began (where repeats are inserted). - std::ptrdiff_t m_alt_insert_point; // where to insert the next alternative - bool m_has_case_change; // true if somewhere in the current block the case has changed - unsigned m_recursion_count; // How many times we've called parse_all. -#if defined(BOOST_MSVC) && defined(_M_IX86) - // This is an ugly warning suppression workaround (for warnings *inside* std::vector - // that can not otherwise be suppressed)... - BOOST_STATIC_ASSERT(sizeof(long) >= sizeof(void*)); - std::vector m_alt_jumps; // list of alternative in the current scope. -#else - std::vector m_alt_jumps; // list of alternative in the current scope. -#endif - - basic_regex_parser& operator=(const basic_regex_parser&); - basic_regex_parser(const basic_regex_parser&); -}; - -template -basic_regex_parser::basic_regex_parser(regex_data* data) - : basic_regex_creator(data), m_mark_count(0), m_mark_reset(-1), m_max_mark(0), m_paren_start(0), m_alt_insert_point(0), m_has_case_change(false), m_recursion_count(0) -{ -} - -template -void basic_regex_parser::parse(const charT* p1, const charT* p2, unsigned l_flags) -{ - // pass l_flags on to base class: - this->init(l_flags); - // set up pointers: - m_position = m_base = p1; - m_end = p2; - // empty strings are errors: - if((p1 == p2) && - ( - ((l_flags & regbase::main_option_type) != regbase::perl_syntax_group) - || (l_flags & regbase::no_empty_expressions) - ) - ) - { - fail(regex_constants::error_empty, 0); - return; - } - // select which parser to use: - switch(l_flags & regbase::main_option_type) - { - case regbase::perl_syntax_group: - { - m_parser_proc = &basic_regex_parser::parse_extended; - // - // Add a leading paren with index zero to give recursions a target: - // - re_brace* br = static_cast(this->append_state(syntax_element_startmark, sizeof(re_brace))); - br->index = 0; - br->icase = this->flags() & regbase::icase; - break; - } - case regbase::basic_syntax_group: - m_parser_proc = &basic_regex_parser::parse_basic; - break; - case regbase::literal: - m_parser_proc = &basic_regex_parser::parse_literal; - break; - default: - // Ooops, someone has managed to set more than one of the main option flags, - // so this must be an error: - fail(regex_constants::error_unknown, 0, "An invalid combination of regular expression syntax flags was used."); - return; - } - - // parse all our characters: - bool result = parse_all(); - // - // Unwind our alternatives: - // - unwind_alts(-1); - // reset l_flags as a global scope (?imsx) may have altered them: - this->flags(l_flags); - // if we haven't gobbled up all the characters then we must - // have had an unexpected ')' : - if(!result) - { - fail(regex_constants::error_paren, ::boost::BOOST_REGEX_DETAIL_NS::distance(m_base, m_position), "Found a closing ) with no corresponding opening parenthesis."); - return; - } - // if an error has been set then give up now: - if(this->m_pdata->m_status) - return; - // fill in our sub-expression count: - this->m_pdata->m_mark_count = 1 + m_mark_count; - this->finalize(p1, p2); -} - -template -void basic_regex_parser::fail(regex_constants::error_type error_code, std::ptrdiff_t position) -{ - // get the error message: - std::string message = this->m_pdata->m_ptraits->error_string(error_code); - fail(error_code, position, message); -} - -template -void basic_regex_parser::fail(regex_constants::error_type error_code, std::ptrdiff_t position, std::string message, std::ptrdiff_t start_pos) -{ - if(0 == this->m_pdata->m_status) // update the error code if not already set - this->m_pdata->m_status = error_code; - m_position = m_end; // don't bother parsing anything else - -#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS - // - // Augment error message with the regular expression text: - // - if(start_pos == position) - start_pos = (std::max)(static_cast(0), position - static_cast(10)); - std::ptrdiff_t end_pos = (std::min)(position + static_cast(10), static_cast(m_end - m_base)); - if(error_code != regex_constants::error_empty) - { - if((start_pos != 0) || (end_pos != (m_end - m_base))) - message += " The error occurred while parsing the regular expression fragment: '"; - else - message += " The error occurred while parsing the regular expression: '"; - if(start_pos != end_pos) - { - message += std::string(m_base + start_pos, m_base + position); - message += ">>>HERE>>>"; - message += std::string(m_base + position, m_base + end_pos); - } - message += "'."; - } -#endif - -#ifndef BOOST_NO_EXCEPTIONS - if(0 == (this->flags() & regex_constants::no_except)) - { - boost::regex_error e(message, error_code, position); - e.raise(); - } -#else - (void)position; // suppress warnings. -#endif -} - -template -bool basic_regex_parser::parse_all() -{ - if (++m_recursion_count > 400) - { - // exceeded internal limits - fail(boost::regex_constants::error_complexity, m_position - m_base, "Exceeded nested brace limit."); - } - bool result = true; - while(result && (m_position != m_end)) - { - result = (this->*m_parser_proc)(); - } - --m_recursion_count; - return result; -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4702) -#endif -template -bool basic_regex_parser::parse_basic() -{ - switch(this->m_traits.syntax_type(*m_position)) - { - case regex_constants::syntax_escape: - return parse_basic_escape(); - case regex_constants::syntax_dot: - return parse_match_any(); - case regex_constants::syntax_caret: - ++m_position; - this->append_state(syntax_element_start_line); - break; - case regex_constants::syntax_dollar: - ++m_position; - this->append_state(syntax_element_end_line); - break; - case regex_constants::syntax_star: - if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line)) - return parse_literal(); - else - { - ++m_position; - return parse_repeat(); - } - case regex_constants::syntax_plus: - if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line) || !(this->flags() & regbase::emacs_ex)) - return parse_literal(); - else - { - ++m_position; - return parse_repeat(1); - } - case regex_constants::syntax_question: - if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line) || !(this->flags() & regbase::emacs_ex)) - return parse_literal(); - else - { - ++m_position; - return parse_repeat(0, 1); - } - case regex_constants::syntax_open_set: - return parse_set(); - case regex_constants::syntax_newline: - if(this->flags() & regbase::newline_alt) - return parse_alt(); - else - return parse_literal(); - default: - return parse_literal(); - } - return true; -} - -template -bool basic_regex_parser::parse_extended() -{ - bool result = true; - switch(this->m_traits.syntax_type(*m_position)) - { - case regex_constants::syntax_open_mark: - return parse_open_paren(); - case regex_constants::syntax_close_mark: - return false; - case regex_constants::syntax_escape: - return parse_extended_escape(); - case regex_constants::syntax_dot: - return parse_match_any(); - case regex_constants::syntax_caret: - ++m_position; - this->append_state( - (this->flags() & regex_constants::no_mod_m ? syntax_element_buffer_start : syntax_element_start_line)); - break; - case regex_constants::syntax_dollar: - ++m_position; - this->append_state( - (this->flags() & regex_constants::no_mod_m ? syntax_element_buffer_end : syntax_element_end_line)); - break; - case regex_constants::syntax_star: - if(m_position == this->m_base) - { - fail(regex_constants::error_badrepeat, 0, "The repeat operator \"*\" cannot start a regular expression."); - return false; - } - ++m_position; - return parse_repeat(); - case regex_constants::syntax_question: - if(m_position == this->m_base) - { - fail(regex_constants::error_badrepeat, 0, "The repeat operator \"?\" cannot start a regular expression."); - return false; - } - ++m_position; - return parse_repeat(0,1); - case regex_constants::syntax_plus: - if(m_position == this->m_base) - { - fail(regex_constants::error_badrepeat, 0, "The repeat operator \"+\" cannot start a regular expression."); - return false; - } - ++m_position; - return parse_repeat(1); - case regex_constants::syntax_open_brace: - ++m_position; - return parse_repeat_range(false); - case regex_constants::syntax_close_brace: - if((this->flags() & regbase::no_perl_ex) == regbase::no_perl_ex) - { - fail(regex_constants::error_brace, this->m_position - this->m_base, "Found a closing repetition operator } with no corresponding {."); - return false; - } - result = parse_literal(); - break; - case regex_constants::syntax_or: - return parse_alt(); - case regex_constants::syntax_open_set: - return parse_set(); - case regex_constants::syntax_newline: - if(this->flags() & regbase::newline_alt) - return parse_alt(); - else - return parse_literal(); - case regex_constants::syntax_hash: - // - // If we have a mod_x flag set, then skip until - // we get to a newline character: - // - if((this->flags() - & (regbase::no_perl_ex|regbase::mod_x)) - == regbase::mod_x) - { - while((m_position != m_end) && !is_separator(*m_position++)){} - return true; - } - BOOST_FALLTHROUGH; - default: - result = parse_literal(); - break; - } - return result; -} -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template -bool basic_regex_parser::parse_literal() -{ - // append this as a literal provided it's not a space character - // or the perl option regbase::mod_x is not set: - if( - ((this->flags() - & (regbase::main_option_type|regbase::mod_x|regbase::no_perl_ex)) - != regbase::mod_x) - || !this->m_traits.isctype(*m_position, this->m_mask_space)) - this->append_literal(*m_position); - ++m_position; - return true; -} - -template -bool basic_regex_parser::parse_open_paren() -{ - // - // skip the '(' and error check: - // - if(++m_position == m_end) - { - fail(regex_constants::error_paren, m_position - m_base); - return false; - } - // - // begin by checking for a perl-style (?...) extension: - // - if( - ((this->flags() & (regbase::main_option_type | regbase::no_perl_ex)) == 0) - || ((this->flags() & (regbase::main_option_type | regbase::emacs_ex)) == (regbase::basic_syntax_group|regbase::emacs_ex)) - ) - { - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_question) - return parse_perl_extension(); - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_star) - return parse_perl_verb(); - } - // - // update our mark count, and append the required state: - // - unsigned markid = 0; - if(0 == (this->flags() & regbase::nosubs)) - { - markid = ++m_mark_count; -#ifndef BOOST_NO_STD_DISTANCE - if(this->flags() & regbase::save_subexpression_location) - this->m_pdata->m_subs.push_back(std::pair(std::distance(m_base, m_position) - 1, 0)); -#else - if(this->flags() & regbase::save_subexpression_location) - this->m_pdata->m_subs.push_back(std::pair((m_position - m_base) - 1, 0)); -#endif - } - re_brace* pb = static_cast(this->append_state(syntax_element_startmark, sizeof(re_brace))); - pb->index = markid; - pb->icase = this->flags() & regbase::icase; - std::ptrdiff_t last_paren_start = this->getoffset(pb); - // back up insertion point for alternations, and set new point: - std::ptrdiff_t last_alt_point = m_alt_insert_point; - this->m_pdata->m_data.align(); - m_alt_insert_point = this->m_pdata->m_data.size(); - // - // back up the current flags in case we have a nested (?imsx) group: - // - regex_constants::syntax_option_type opts = this->flags(); - bool old_case_change = m_has_case_change; - m_has_case_change = false; // no changes to this scope as yet... - // - // Back up branch reset data in case we have a nested (?|...) - // - int mark_reset = m_mark_reset; - m_mark_reset = -1; - // - // now recursively add more states, this will terminate when we get to a - // matching ')' : - // - parse_all(); - // - // Unwind pushed alternatives: - // - if(0 == unwind_alts(last_paren_start)) - return false; - // - // restore flags: - // - if(m_has_case_change) - { - // the case has changed in one or more of the alternatives - // within the scoped (...) block: we have to add a state - // to reset the case sensitivity: - static_cast( - this->append_state(syntax_element_toggle_case, sizeof(re_case)) - )->icase = opts & regbase::icase; - } - this->flags(opts); - m_has_case_change = old_case_change; - // - // restore branch reset: - // - m_mark_reset = mark_reset; - // - // we either have a ')' or we have run out of characters prematurely: - // - if(m_position == m_end) - { - this->fail(regex_constants::error_paren, ::boost::BOOST_REGEX_DETAIL_NS::distance(m_base, m_end)); - return false; - } - if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark) - return false; -#ifndef BOOST_NO_STD_DISTANCE - if(markid && (this->flags() & regbase::save_subexpression_location)) - this->m_pdata->m_subs.at(markid - 1).second = std::distance(m_base, m_position); -#else - if(markid && (this->flags() & regbase::save_subexpression_location)) - this->m_pdata->m_subs.at(markid - 1).second = (m_position - m_base); -#endif - ++m_position; - // - // append closing parenthesis state: - // - pb = static_cast(this->append_state(syntax_element_endmark, sizeof(re_brace))); - pb->index = markid; - pb->icase = this->flags() & regbase::icase; - this->m_paren_start = last_paren_start; - // - // restore the alternate insertion point: - // - this->m_alt_insert_point = last_alt_point; - // - // allow backrefs to this mark: - // - if((markid > 0) && (markid < sizeof(unsigned) * CHAR_BIT)) - this->m_backrefs |= 1u << (markid - 1); - - return true; -} - -template -bool basic_regex_parser::parse_basic_escape() -{ - if(++m_position == m_end) - { - fail(regex_constants::error_paren, m_position - m_base); - return false; - } - bool result = true; - switch(this->m_traits.escape_syntax_type(*m_position)) - { - case regex_constants::syntax_open_mark: - return parse_open_paren(); - case regex_constants::syntax_close_mark: - return false; - case regex_constants::syntax_plus: - if(this->flags() & regex_constants::bk_plus_qm) - { - ++m_position; - return parse_repeat(1); - } - else - return parse_literal(); - case regex_constants::syntax_question: - if(this->flags() & regex_constants::bk_plus_qm) - { - ++m_position; - return parse_repeat(0, 1); - } - else - return parse_literal(); - case regex_constants::syntax_open_brace: - if(this->flags() & regbase::no_intervals) - return parse_literal(); - ++m_position; - return parse_repeat_range(true); - case regex_constants::syntax_close_brace: - if(this->flags() & regbase::no_intervals) - return parse_literal(); - fail(regex_constants::error_brace, this->m_position - this->m_base, "Found a closing repetition operator } with no corresponding {."); - return false; - case regex_constants::syntax_or: - if(this->flags() & regbase::bk_vbar) - return parse_alt(); - else - result = parse_literal(); - break; - case regex_constants::syntax_digit: - return parse_backref(); - case regex_constants::escape_type_start_buffer: - if(this->flags() & regbase::emacs_ex) - { - ++m_position; - this->append_state(syntax_element_buffer_start); - } - else - result = parse_literal(); - break; - case regex_constants::escape_type_end_buffer: - if(this->flags() & regbase::emacs_ex) - { - ++m_position; - this->append_state(syntax_element_buffer_end); - } - else - result = parse_literal(); - break; - case regex_constants::escape_type_word_assert: - if(this->flags() & regbase::emacs_ex) - { - ++m_position; - this->append_state(syntax_element_word_boundary); - } - else - result = parse_literal(); - break; - case regex_constants::escape_type_not_word_assert: - if(this->flags() & regbase::emacs_ex) - { - ++m_position; - this->append_state(syntax_element_within_word); - } - else - result = parse_literal(); - break; - case regex_constants::escape_type_left_word: - if(this->flags() & regbase::emacs_ex) - { - ++m_position; - this->append_state(syntax_element_word_start); - } - else - result = parse_literal(); - break; - case regex_constants::escape_type_right_word: - if(this->flags() & regbase::emacs_ex) - { - ++m_position; - this->append_state(syntax_element_word_end); - } - else - result = parse_literal(); - break; - default: - if(this->flags() & regbase::emacs_ex) - { - bool negate = true; - switch(*m_position) - { - case 'w': - negate = false; - BOOST_FALLTHROUGH; - case 'W': - { - basic_char_set char_set; - if(negate) - char_set.negate(); - char_set.add_class(this->m_word_mask); - if(0 == this->append_set(char_set)) - { - fail(regex_constants::error_ctype, m_position - m_base); - return false; - } - ++m_position; - return true; - } - case 's': - negate = false; - BOOST_FALLTHROUGH; - case 'S': - return add_emacs_code(negate); - case 'c': - case 'C': - // not supported yet: - fail(regex_constants::error_escape, m_position - m_base, "The \\c and \\C escape sequences are not supported by POSIX basic regular expressions: try the Perl syntax instead."); - return false; - default: - break; - } - } - result = parse_literal(); - break; - } - return result; -} - -template -bool basic_regex_parser::parse_extended_escape() -{ - ++m_position; - if(m_position == m_end) - { - fail(regex_constants::error_escape, m_position - m_base, "Incomplete escape sequence found."); - return false; - } - bool negate = false; // in case this is a character class escape: \w \d etc - switch(this->m_traits.escape_syntax_type(*m_position)) - { - case regex_constants::escape_type_not_class: - negate = true; - BOOST_FALLTHROUGH; - case regex_constants::escape_type_class: - { -escape_type_class_jump: - typedef typename traits::char_class_type m_type; - m_type m = this->m_traits.lookup_classname(m_position, m_position+1); - if(m != 0) - { - basic_char_set char_set; - if(negate) - char_set.negate(); - char_set.add_class(m); - if(0 == this->append_set(char_set)) - { - fail(regex_constants::error_ctype, m_position - m_base); - return false; - } - ++m_position; - return true; - } - // - // not a class, just a regular unknown escape: - // - this->append_literal(unescape_character()); - break; - } - case regex_constants::syntax_digit: - return parse_backref(); - case regex_constants::escape_type_left_word: - ++m_position; - this->append_state(syntax_element_word_start); - break; - case regex_constants::escape_type_right_word: - ++m_position; - this->append_state(syntax_element_word_end); - break; - case regex_constants::escape_type_start_buffer: - ++m_position; - this->append_state(syntax_element_buffer_start); - break; - case regex_constants::escape_type_end_buffer: - ++m_position; - this->append_state(syntax_element_buffer_end); - break; - case regex_constants::escape_type_word_assert: - ++m_position; - this->append_state(syntax_element_word_boundary); - break; - case regex_constants::escape_type_not_word_assert: - ++m_position; - this->append_state(syntax_element_within_word); - break; - case regex_constants::escape_type_Z: - ++m_position; - this->append_state(syntax_element_soft_buffer_end); - break; - case regex_constants::escape_type_Q: - return parse_QE(); - case regex_constants::escape_type_C: - return parse_match_any(); - case regex_constants::escape_type_X: - ++m_position; - this->append_state(syntax_element_combining); - break; - case regex_constants::escape_type_G: - ++m_position; - this->append_state(syntax_element_restart_continue); - break; - case regex_constants::escape_type_not_property: - negate = true; - BOOST_FALLTHROUGH; - case regex_constants::escape_type_property: - { - ++m_position; - char_class_type m; - if(m_position == m_end) - { - fail(regex_constants::error_escape, m_position - m_base, "Incomplete property escape found."); - return false; - } - // maybe have \p{ddd} - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace) - { - const charT* base = m_position; - // skip forward until we find enclosing brace: - while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace)) - ++m_position; - if(m_position == m_end) - { - fail(regex_constants::error_escape, m_position - m_base, "Closing } missing from property escape sequence."); - return false; - } - m = this->m_traits.lookup_classname(++base, m_position++); - } - else - { - m = this->m_traits.lookup_classname(m_position, m_position+1); - ++m_position; - } - if(m != 0) - { - basic_char_set char_set; - if(negate) - char_set.negate(); - char_set.add_class(m); - if(0 == this->append_set(char_set)) - { - fail(regex_constants::error_ctype, m_position - m_base); - return false; - } - return true; - } - fail(regex_constants::error_ctype, m_position - m_base, "Escape sequence was neither a valid property nor a valid character class name."); - return false; - } - case regex_constants::escape_type_reset_start_mark: - if(0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex))) - { - re_brace* pb = static_cast(this->append_state(syntax_element_startmark, sizeof(re_brace))); - pb->index = -5; - pb->icase = this->flags() & regbase::icase; - this->m_pdata->m_data.align(); - ++m_position; - return true; - } - goto escape_type_class_jump; - case regex_constants::escape_type_line_ending: - if(0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex))) - { - const charT* e = get_escape_R_string(); - const charT* old_position = m_position; - const charT* old_end = m_end; - const charT* old_base = m_base; - m_position = e; - m_base = e; - m_end = e + traits::length(e); - bool r = parse_all(); - m_position = ++old_position; - m_end = old_end; - m_base = old_base; - return r; - } - goto escape_type_class_jump; - case regex_constants::escape_type_extended_backref: - if(0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex))) - { - bool have_brace = false; - bool negative = false; - static const char* incomplete_message = "Incomplete \\g escape found."; - if(++m_position == m_end) - { - fail(regex_constants::error_escape, m_position - m_base, incomplete_message); - return false; - } - // maybe have \g{ddd} - regex_constants::syntax_type syn = this->m_traits.syntax_type(*m_position); - regex_constants::syntax_type syn_end = 0; - if((syn == regex_constants::syntax_open_brace) - || (syn == regex_constants::escape_type_left_word) - || (syn == regex_constants::escape_type_end_buffer)) - { - if(++m_position == m_end) - { - fail(regex_constants::error_escape, m_position - m_base, incomplete_message); - return false; - } - have_brace = true; - switch(syn) - { - case regex_constants::syntax_open_brace: - syn_end = regex_constants::syntax_close_brace; - break; - case regex_constants::escape_type_left_word: - syn_end = regex_constants::escape_type_right_word; - break; - default: - syn_end = regex_constants::escape_type_end_buffer; - break; - } - } - negative = (*m_position == static_cast('-')); - if((negative) && (++m_position == m_end)) - { - fail(regex_constants::error_escape, m_position - m_base, incomplete_message); - return false; - } - const charT* pc = m_position; - boost::intmax_t i = this->m_traits.toi(pc, m_end, 10); - if((i < 0) && syn_end) - { - // Check for a named capture, get the leftmost one if there is more than one: - const charT* base = m_position; - while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != syn_end)) - { - ++m_position; - } - i = hash_value_from_capture_name(base, m_position); - pc = m_position; - } - if(negative) - i = 1 + m_mark_count - i; - if(((i > 0) && (i < std::numeric_limits::digits) && (i - 1 < static_cast(sizeof(unsigned) * CHAR_BIT)) && (this->m_backrefs & (1u << (i-1)))) || ((i > 10000) && (this->m_pdata->get_id(i) > 0) && (this->m_pdata->get_id(i)-1 < static_cast(sizeof(unsigned) * CHAR_BIT)) && (this->m_backrefs & (1u << (this->m_pdata->get_id(i)-1))))) - { - m_position = pc; - re_brace* pb = static_cast(this->append_state(syntax_element_backref, sizeof(re_brace))); - pb->index = i; - pb->icase = this->flags() & regbase::icase; - } - else - { - fail(regex_constants::error_backref, m_position - m_base); - return false; - } - m_position = pc; - if(have_brace) - { - if((m_position == m_end) || (this->m_traits.syntax_type(*m_position) != syn_end)) - { - fail(regex_constants::error_escape, m_position - m_base, incomplete_message); - return false; - } - ++m_position; - } - return true; - } - goto escape_type_class_jump; - case regex_constants::escape_type_control_v: - if(0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex))) - goto escape_type_class_jump; - BOOST_FALLTHROUGH; - default: - this->append_literal(unescape_character()); - break; - } - return true; -} - -template -bool basic_regex_parser::parse_match_any() -{ - // - // we have a '.' that can match any character: - // - ++m_position; - static_cast( - this->append_state(syntax_element_wild, sizeof(re_dot)) - )->mask = static_cast(this->flags() & regbase::no_mod_s - ? BOOST_REGEX_DETAIL_NS::force_not_newline - : this->flags() & regbase::mod_s ? - BOOST_REGEX_DETAIL_NS::force_newline : BOOST_REGEX_DETAIL_NS::dont_care); - return true; -} - -template -bool basic_regex_parser::parse_repeat(std::size_t low, std::size_t high) -{ - bool greedy = true; - bool pocessive = false; - std::size_t insert_point; - // - // when we get to here we may have a non-greedy ? mark still to come: - // - if((m_position != m_end) - && ( - (0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex))) - || ((regbase::basic_syntax_group|regbase::emacs_ex) == (this->flags() & (regbase::main_option_type | regbase::emacs_ex))) - ) - ) - { - // OK we have a perl or emacs regex, check for a '?': - if ((this->flags() & (regbase::main_option_type | regbase::mod_x | regbase::no_perl_ex)) == regbase::mod_x) - { - // whitespace skip: - while ((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space)) - ++m_position; - } - if((m_position != m_end) && (this->m_traits.syntax_type(*m_position) == regex_constants::syntax_question)) - { - greedy = false; - ++m_position; - } - // for perl regexes only check for pocessive ++ repeats. - if((m_position != m_end) - && (0 == (this->flags() & regbase::main_option_type)) - && (this->m_traits.syntax_type(*m_position) == regex_constants::syntax_plus)) - { - pocessive = true; - ++m_position; - } - } - if(0 == this->m_last_state) - { - fail(regex_constants::error_badrepeat, ::boost::BOOST_REGEX_DETAIL_NS::distance(m_base, m_position), "Nothing to repeat."); - return false; - } - if(this->m_last_state->type == syntax_element_endmark) - { - // insert a repeat before the '(' matching the last ')': - insert_point = this->m_paren_start; - } - else if((this->m_last_state->type == syntax_element_literal) && (static_cast(this->m_last_state)->length > 1)) - { - // the last state was a literal with more than one character, split it in two: - re_literal* lit = static_cast(this->m_last_state); - charT c = (static_cast(static_cast(lit+1)))[lit->length - 1]; - lit->length -= 1; - // now append new state: - lit = static_cast(this->append_state(syntax_element_literal, sizeof(re_literal) + sizeof(charT))); - lit->length = 1; - (static_cast(static_cast(lit+1)))[0] = c; - insert_point = this->getoffset(this->m_last_state); - } - else - { - // repeat the last state whatever it was, need to add some error checking here: - switch(this->m_last_state->type) - { - case syntax_element_start_line: - case syntax_element_end_line: - case syntax_element_word_boundary: - case syntax_element_within_word: - case syntax_element_word_start: - case syntax_element_word_end: - case syntax_element_buffer_start: - case syntax_element_buffer_end: - case syntax_element_alt: - case syntax_element_soft_buffer_end: - case syntax_element_restart_continue: - case syntax_element_jump: - case syntax_element_startmark: - case syntax_element_backstep: - // can't legally repeat any of the above: - fail(regex_constants::error_badrepeat, m_position - m_base); - return false; - default: - // do nothing... - break; - } - insert_point = this->getoffset(this->m_last_state); - } - // - // OK we now know what to repeat, so insert the repeat around it: - // - re_repeat* rep = static_cast(this->insert_state(insert_point, syntax_element_rep, re_repeater_size)); - rep->min = low; - rep->max = high; - rep->greedy = greedy; - rep->leading = false; - // store our repeater position for later: - std::ptrdiff_t rep_off = this->getoffset(rep); - // and append a back jump to the repeat: - re_jump* jmp = static_cast(this->append_state(syntax_element_jump, sizeof(re_jump))); - jmp->alt.i = rep_off - this->getoffset(jmp); - this->m_pdata->m_data.align(); - // now fill in the alt jump for the repeat: - rep = static_cast(this->getaddress(rep_off)); - rep->alt.i = this->m_pdata->m_data.size() - rep_off; - // - // If the repeat is pocessive then bracket the repeat with a (?>...) - // independent sub-expression construct: - // - if(pocessive) - { - if(m_position != m_end) - { - // - // Check for illegal following quantifier, we have to do this here, because - // the extra states we insert below circumvents our usual error checking :-( - // - bool contin = false; - do - { - if ((this->flags() & (regbase::main_option_type | regbase::mod_x | regbase::no_perl_ex)) == regbase::mod_x) - { - // whitespace skip: - while ((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space)) - ++m_position; - } - if (m_position != m_end) - { - switch (this->m_traits.syntax_type(*m_position)) - { - case regex_constants::syntax_star: - case regex_constants::syntax_plus: - case regex_constants::syntax_question: - case regex_constants::syntax_open_brace: - fail(regex_constants::error_badrepeat, m_position - m_base); - return false; - case regex_constants::syntax_open_mark: - // Do we have a comment? If so we need to skip it here... - if ((m_position + 2 < m_end) && this->m_traits.syntax_type(*(m_position + 1)) == regex_constants::syntax_question - && this->m_traits.syntax_type(*(m_position + 2)) == regex_constants::syntax_hash) - { - while ((m_position != m_end) - && (this->m_traits.syntax_type(*m_position++) != regex_constants::syntax_close_mark)) { - } - contin = true; - } - else - contin = false; - } - } - else - contin = false; - } while (contin); - } - re_brace* pb = static_cast(this->insert_state(insert_point, syntax_element_startmark, sizeof(re_brace))); - pb->index = -3; - pb->icase = this->flags() & regbase::icase; - jmp = static_cast(this->insert_state(insert_point + sizeof(re_brace), syntax_element_jump, sizeof(re_jump))); - this->m_pdata->m_data.align(); - jmp->alt.i = this->m_pdata->m_data.size() - this->getoffset(jmp); - pb = static_cast(this->append_state(syntax_element_endmark, sizeof(re_brace))); - pb->index = -3; - pb->icase = this->flags() & regbase::icase; - } - return true; -} - -template -bool basic_regex_parser::parse_repeat_range(bool isbasic) -{ - static const char* incomplete_message = "Missing } in quantified repetition."; - // - // parse a repeat-range: - // - std::size_t min, max; - boost::intmax_t v; - // skip whitespace: - while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space)) - ++m_position; - if(this->m_position == this->m_end) - { - if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex)) - { - fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message); - return false; - } - // Treat the opening '{' as a literal character, rewind to start of error: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position; - return parse_literal(); - } - // get min: - v = this->m_traits.toi(m_position, m_end, 10); - // skip whitespace: - if((v < 0) || (v > umax())) - { - if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex)) - { - fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message); - return false; - } - // Treat the opening '{' as a literal character, rewind to start of error: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position; - return parse_literal(); - } - while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space)) - ++m_position; - if(this->m_position == this->m_end) - { - if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex)) - { - fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message); - return false; - } - // Treat the opening '{' as a literal character, rewind to start of error: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position; - return parse_literal(); - } - min = static_cast(v); - // see if we have a comma: - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_comma) - { - // move on and error check: - ++m_position; - // skip whitespace: - while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space)) - ++m_position; - if(this->m_position == this->m_end) - { - if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex)) - { - fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message); - return false; - } - // Treat the opening '{' as a literal character, rewind to start of error: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position; - return parse_literal(); - } - // get the value if any: - v = this->m_traits.toi(m_position, m_end, 10); - max = ((v >= 0) && (v < umax())) ? (std::size_t)v : (std::numeric_limits::max)(); - } - else - { - // no comma, max = min: - max = min; - } - // skip whitespace: - while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space)) - ++m_position; - // OK now check trailing }: - if(this->m_position == this->m_end) - { - if(this->flags() & (regbase::main_option_type | regbase::no_perl_ex)) - { - fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message); - return false; - } - // Treat the opening '{' as a literal character, rewind to start of error: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position; - return parse_literal(); - } - if(isbasic) - { - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_escape) - { - ++m_position; - if(this->m_position == this->m_end) - { - fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message); - return false; - } - } - else - { - fail(regex_constants::error_brace, this->m_position - this->m_base, incomplete_message); - return false; - } - } - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_brace) - ++m_position; - else - { - // Treat the opening '{' as a literal character, rewind to start of error: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_brace) --m_position; - return parse_literal(); - } - // - // finally go and add the repeat, unless error: - // - if(min > max) - { - // Backtrack to error location: - m_position -= 2; - while(this->m_traits.isctype(*m_position, this->m_word_mask)) --m_position; - ++m_position; - fail(regex_constants::error_badbrace, m_position - m_base); - return false; - } - return parse_repeat(min, max); -} - -template -bool basic_regex_parser::parse_alt() -{ - // - // error check: if there have been no previous states, - // or if the last state was a '(' then error: - // - if( - ((this->m_last_state == 0) || (this->m_last_state->type == syntax_element_startmark)) - && - !( - ((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group) - && - ((this->flags() & regbase::no_empty_expressions) == 0) - ) - ) - { - fail(regex_constants::error_empty, this->m_position - this->m_base, "A regular expression cannot start with the alternation operator |."); - return false; - } - // - // Reset mark count if required: - // - if(m_max_mark < m_mark_count) - m_max_mark = m_mark_count; - if(m_mark_reset >= 0) - m_mark_count = m_mark_reset; - - ++m_position; - // - // we need to append a trailing jump: - // - re_syntax_base* pj = this->append_state(BOOST_REGEX_DETAIL_NS::syntax_element_jump, sizeof(re_jump)); - std::ptrdiff_t jump_offset = this->getoffset(pj); - // - // now insert the alternative: - // - re_alt* palt = static_cast(this->insert_state(this->m_alt_insert_point, syntax_element_alt, re_alt_size)); - jump_offset += re_alt_size; - this->m_pdata->m_data.align(); - palt->alt.i = this->m_pdata->m_data.size() - this->getoffset(palt); - // - // update m_alt_insert_point so that the next alternate gets - // inserted at the start of the second of the two we've just created: - // - this->m_alt_insert_point = this->m_pdata->m_data.size(); - // - // the start of this alternative must have a case changes state - // if the current block has messed around with case changes: - // - if(m_has_case_change) - { - static_cast( - this->append_state(syntax_element_toggle_case, sizeof(re_case)) - )->icase = this->m_icase; - } - // - // push the alternative onto our stack, a recursive - // implementation here is easier to understand (and faster - // as it happens), but causes all kinds of stack overflow problems - // on programs with small stacks (COM+). - // - m_alt_jumps.push_back(jump_offset); - return true; -} - -template -bool basic_regex_parser::parse_set() -{ - static const char* incomplete_message = "Character set declaration starting with [ terminated prematurely - either no ] was found or the set had no content."; - ++m_position; - if(m_position == m_end) - { - fail(regex_constants::error_brack, m_position - m_base, incomplete_message); - return false; - } - basic_char_set char_set; - - const charT* base = m_position; // where the '[' was - const charT* item_base = m_position; // where the '[' or '^' was - - while(m_position != m_end) - { - switch(this->m_traits.syntax_type(*m_position)) - { - case regex_constants::syntax_caret: - if(m_position == base) - { - char_set.negate(); - ++m_position; - item_base = m_position; - } - else - parse_set_literal(char_set); - break; - case regex_constants::syntax_close_set: - if(m_position == item_base) - { - parse_set_literal(char_set); - break; - } - else - { - ++m_position; - if(0 == this->append_set(char_set)) - { - fail(regex_constants::error_ctype, m_position - m_base); - return false; - } - } - return true; - case regex_constants::syntax_open_set: - if(parse_inner_set(char_set)) - break; - return true; - case regex_constants::syntax_escape: - { - // - // look ahead and see if this is a character class shortcut - // \d \w \s etc... - // - ++m_position; - if(this->m_traits.escape_syntax_type(*m_position) - == regex_constants::escape_type_class) - { - char_class_type m = this->m_traits.lookup_classname(m_position, m_position+1); - if(m != 0) - { - char_set.add_class(m); - ++m_position; - break; - } - } - else if(this->m_traits.escape_syntax_type(*m_position) - == regex_constants::escape_type_not_class) - { - // negated character class: - char_class_type m = this->m_traits.lookup_classname(m_position, m_position+1); - if(m != 0) - { - char_set.add_negated_class(m); - ++m_position; - break; - } - } - // not a character class, just a regular escape: - --m_position; - parse_set_literal(char_set); - break; - } - default: - parse_set_literal(char_set); - break; - } - } - return m_position != m_end; -} - -template -bool basic_regex_parser::parse_inner_set(basic_char_set& char_set) -{ - static const char* incomplete_message = "Character class declaration starting with [ terminated prematurely - either no ] was found or the set had no content."; - // - // we have either a character class [:name:] - // a collating element [.name.] - // or an equivalence class [=name=] - // - if(m_end == ++m_position) - { - fail(regex_constants::error_brack, m_position - m_base, incomplete_message); - return false; - } - switch(this->m_traits.syntax_type(*m_position)) - { - case regex_constants::syntax_dot: - // - // a collating element is treated as a literal: - // - --m_position; - parse_set_literal(char_set); - return true; - case regex_constants::syntax_colon: - { - // check that character classes are actually enabled: - if((this->flags() & (regbase::main_option_type | regbase::no_char_classes)) - == (regbase::basic_syntax_group | regbase::no_char_classes)) - { - --m_position; - parse_set_literal(char_set); - return true; - } - // skip the ':' - if(m_end == ++m_position) - { - fail(regex_constants::error_brack, m_position - m_base, incomplete_message); - return false; - } - const charT* name_first = m_position; - // skip at least one character, then find the matching ':]' - if(m_end == ++m_position) - { - fail(regex_constants::error_brack, m_position - m_base, incomplete_message); - return false; - } - while((m_position != m_end) - && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_colon)) - ++m_position; - const charT* name_last = m_position; - if(m_end == m_position) - { - fail(regex_constants::error_brack, m_position - m_base, incomplete_message); - return false; - } - if((m_end == ++m_position) - || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)) - { - fail(regex_constants::error_brack, m_position - m_base, incomplete_message); - return false; - } - // - // check for negated class: - // - bool negated = false; - if(this->m_traits.syntax_type(*name_first) == regex_constants::syntax_caret) - { - ++name_first; - negated = true; - } - typedef typename traits::char_class_type m_type; - m_type m = this->m_traits.lookup_classname(name_first, name_last); - if(m == 0) - { - if(char_set.empty() && (name_last - name_first == 1)) - { - // maybe a special case: - ++m_position; - if( (m_position != m_end) - && (this->m_traits.syntax_type(*m_position) - == regex_constants::syntax_close_set)) - { - if(this->m_traits.escape_syntax_type(*name_first) - == regex_constants::escape_type_left_word) - { - ++m_position; - this->append_state(syntax_element_word_start); - return false; - } - if(this->m_traits.escape_syntax_type(*name_first) - == regex_constants::escape_type_right_word) - { - ++m_position; - this->append_state(syntax_element_word_end); - return false; - } - } - } - fail(regex_constants::error_ctype, name_first - m_base); - return false; - } - if(negated == false) - char_set.add_class(m); - else - char_set.add_negated_class(m); - ++m_position; - break; - } - case regex_constants::syntax_equal: - { - // skip the '=' - if(m_end == ++m_position) - { - fail(regex_constants::error_brack, m_position - m_base, incomplete_message); - return false; - } - const charT* name_first = m_position; - // skip at least one character, then find the matching '=]' - if(m_end == ++m_position) - { - fail(regex_constants::error_brack, m_position - m_base, incomplete_message); - return false; - } - while((m_position != m_end) - && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal)) - ++m_position; - const charT* name_last = m_position; - if(m_end == m_position) - { - fail(regex_constants::error_brack, m_position - m_base, incomplete_message); - return false; - } - if((m_end == ++m_position) - || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)) - { - fail(regex_constants::error_brack, m_position - m_base, incomplete_message); - return false; - } - string_type m = this->m_traits.lookup_collatename(name_first, name_last); - if((0 == m.size()) || (m.size() > 2)) - { - fail(regex_constants::error_collate, name_first - m_base); - return false; - } - digraph d; - d.first = m[0]; - if(m.size() > 1) - d.second = m[1]; - else - d.second = 0; - char_set.add_equivalent(d); - ++m_position; - break; - } - default: - --m_position; - parse_set_literal(char_set); - break; - } - return true; -} - -template -void basic_regex_parser::parse_set_literal(basic_char_set& char_set) -{ - digraph start_range(get_next_set_literal(char_set)); - if(m_end == m_position) - { - fail(regex_constants::error_brack, m_position - m_base); - return; - } - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_dash) - { - // we have a range: - if(m_end == ++m_position) - { - fail(regex_constants::error_brack, m_position - m_base); - return; - } - if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set) - { - digraph end_range = get_next_set_literal(char_set); - char_set.add_range(start_range, end_range); - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_dash) - { - if(m_end == ++m_position) - { - fail(regex_constants::error_brack, m_position - m_base); - return; - } - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_set) - { - // trailing - : - --m_position; - return; - } - fail(regex_constants::error_range, m_position - m_base); - return; - } - return; - } - --m_position; - } - char_set.add_single(start_range); -} - -template -digraph basic_regex_parser::get_next_set_literal(basic_char_set& char_set) -{ - digraph result; - switch(this->m_traits.syntax_type(*m_position)) - { - case regex_constants::syntax_dash: - if(!char_set.empty()) - { - // see if we are at the end of the set: - if((++m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)) - { - fail(regex_constants::error_range, m_position - m_base); - return result; - } - --m_position; - } - result.first = *m_position++; - return result; - case regex_constants::syntax_escape: - // check to see if escapes are supported first: - if(this->flags() & regex_constants::no_escape_in_lists) - { - result = *m_position++; - break; - } - ++m_position; - result = unescape_character(); - break; - case regex_constants::syntax_open_set: - { - if(m_end == ++m_position) - { - fail(regex_constants::error_collate, m_position - m_base); - return result; - } - if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_dot) - { - --m_position; - result.first = *m_position; - ++m_position; - return result; - } - if(m_end == ++m_position) - { - fail(regex_constants::error_collate, m_position - m_base); - return result; - } - const charT* name_first = m_position; - // skip at least one character, then find the matching ':]' - if(m_end == ++m_position) - { - fail(regex_constants::error_collate, name_first - m_base); - return result; - } - while((m_position != m_end) - && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_dot)) - ++m_position; - const charT* name_last = m_position; - if(m_end == m_position) - { - fail(regex_constants::error_collate, name_first - m_base); - return result; - } - if((m_end == ++m_position) - || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)) - { - fail(regex_constants::error_collate, name_first - m_base); - return result; - } - ++m_position; - string_type s = this->m_traits.lookup_collatename(name_first, name_last); - if(s.empty() || (s.size() > 2)) - { - fail(regex_constants::error_collate, name_first - m_base); - return result; - } - result.first = s[0]; - if(s.size() > 1) - result.second = s[1]; - else - result.second = 0; - return result; - } - default: - result = *m_position++; - } - return result; -} - -// -// does a value fit in the specified charT type? -// -template -bool valid_value(charT, boost::intmax_t v, const mpl::true_&) -{ - return (v >> (sizeof(charT) * CHAR_BIT)) == 0; -} -template -bool valid_value(charT, boost::intmax_t, const mpl::false_&) -{ - return true; // v will alsways fit in a charT -} -template -bool valid_value(charT c, boost::intmax_t v) -{ - return valid_value(c, v, mpl::bool_<(sizeof(charT) < sizeof(boost::intmax_t))>()); -} - -template -charT basic_regex_parser::unescape_character() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif - charT result(0); - if(m_position == m_end) - { - fail(regex_constants::error_escape, m_position - m_base, "Escape sequence terminated prematurely."); - return false; - } - switch(this->m_traits.escape_syntax_type(*m_position)) - { - case regex_constants::escape_type_control_a: - result = charT('\a'); - break; - case regex_constants::escape_type_e: - result = charT(27); - break; - case regex_constants::escape_type_control_f: - result = charT('\f'); - break; - case regex_constants::escape_type_control_n: - result = charT('\n'); - break; - case regex_constants::escape_type_control_r: - result = charT('\r'); - break; - case regex_constants::escape_type_control_t: - result = charT('\t'); - break; - case regex_constants::escape_type_control_v: - result = charT('\v'); - break; - case regex_constants::escape_type_word_assert: - result = charT('\b'); - break; - case regex_constants::escape_type_ascii_control: - ++m_position; - if(m_position == m_end) - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_escape, m_position - m_base, "ASCII escape sequence terminated prematurely."); - return result; - } - result = static_cast(*m_position % 32); - break; - case regex_constants::escape_type_hex: - ++m_position; - if(m_position == m_end) - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_escape, m_position - m_base, "Hexadecimal escape sequence terminated prematurely."); - return result; - } - // maybe have \x{ddd} - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace) - { - ++m_position; - if(m_position == m_end) - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_escape, m_position - m_base, "Missing } in hexadecimal escape sequence."); - return result; - } - boost::intmax_t i = this->m_traits.toi(m_position, m_end, 16); - if((m_position == m_end) - || (i < 0) - || ((std::numeric_limits::is_specialized) && (i > (boost::intmax_t)(std::numeric_limits::max)())) - || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace)) - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_badbrace, m_position - m_base, "Hexadecimal escape sequence was invalid."); - return result; - } - ++m_position; - result = charT(i); - } - else - { - std::ptrdiff_t len = (std::min)(static_cast(2), static_cast(m_end - m_position)); - boost::intmax_t i = this->m_traits.toi(m_position, m_position + len, 16); - if((i < 0) - || !valid_value(charT(0), i)) - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_escape, m_position - m_base, "Escape sequence did not encode a valid character."); - return result; - } - result = charT(i); - } - return result; - case regex_constants::syntax_digit: - { - // an octal escape sequence, the first character must be a zero - // followed by up to 3 octal digits: - std::ptrdiff_t len = (std::min)(::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end), static_cast(4)); - const charT* bp = m_position; - boost::intmax_t val = this->m_traits.toi(bp, bp + 1, 8); - if(val != 0) - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - // Oops not an octal escape after all: - fail(regex_constants::error_escape, m_position - m_base, "Invalid octal escape sequence."); - return result; - } - val = this->m_traits.toi(m_position, m_position + len, 8); - if((val < 0) || (val > (boost::intmax_t)(std::numeric_limits::max)())) - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_escape, m_position - m_base, "Octal escape sequence is invalid."); - return result; - } - return static_cast(val); - } - case regex_constants::escape_type_named_char: - { - ++m_position; - if(m_position == m_end) - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_escape, m_position - m_base); - return false; - } - // maybe have \N{name} - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace) - { - const charT* base = m_position; - // skip forward until we find enclosing brace: - while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace)) - ++m_position; - if(m_position == m_end) - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_escape, m_position - m_base); - return false; - } - string_type s = this->m_traits.lookup_collatename(++base, m_position++); - if(s.empty()) - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_collate, m_position - m_base); - return false; - } - if(s.size() == 1) - { - return s[0]; - } - } - // fall through is a failure: - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_escape, m_position - m_base); - return false; - } - default: - result = *m_position; - break; - } - ++m_position; - return result; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool basic_regex_parser::parse_backref() -{ - BOOST_ASSERT(m_position != m_end); - const charT* pc = m_position; - boost::intmax_t i = this->m_traits.toi(pc, pc + 1, 10); - if((i == 0) || (((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group) && (this->flags() & regbase::no_bk_refs))) - { - // not a backref at all but an octal escape sequence: - charT c = unescape_character(); - this->append_literal(c); - } - else if((i > 0) && (this->m_backrefs & (1u << (i-1)))) - { - m_position = pc; - re_brace* pb = static_cast(this->append_state(syntax_element_backref, sizeof(re_brace))); - pb->index = i; - pb->icase = this->flags() & regbase::icase; - } - else - { - // Rewind to start of escape: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_backref, m_position - m_base); - return false; - } - return true; -} - -template -bool basic_regex_parser::parse_QE() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif - // - // parse a \Q...\E sequence: - // - ++m_position; // skip the Q - const charT* start = m_position; - const charT* end; - do - { - while((m_position != m_end) - && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape)) - ++m_position; - if(m_position == m_end) - { - // a \Q...\E sequence may terminate with the end of the expression: - end = m_position; - break; - } - if(++m_position == m_end) // skip the escape - { - fail(regex_constants::error_escape, m_position - m_base, "Unterminated \\Q...\\E sequence."); - return false; - } - // check to see if it's a \E: - if(this->m_traits.escape_syntax_type(*m_position) == regex_constants::escape_type_E) - { - ++m_position; - end = m_position - 2; - break; - } - // otherwise go round again: - }while(true); - // - // now add all the character between the two escapes as literals: - // - while(start != end) - { - this->append_literal(*start); - ++start; - } - return true; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool basic_regex_parser::parse_perl_extension() -{ - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - // - // treat comments as a special case, as these - // are the only ones that don't start with a leading - // startmark state: - // - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_hash) - { - while((m_position != m_end) - && (this->m_traits.syntax_type(*m_position++) != regex_constants::syntax_close_mark)) - {} - return true; - } - // - // backup some state, and prepare the way: - // - int markid = 0; - std::ptrdiff_t jump_offset = 0; - re_brace* pb = static_cast(this->append_state(syntax_element_startmark, sizeof(re_brace))); - pb->icase = this->flags() & regbase::icase; - std::ptrdiff_t last_paren_start = this->getoffset(pb); - // back up insertion point for alternations, and set new point: - std::ptrdiff_t last_alt_point = m_alt_insert_point; - this->m_pdata->m_data.align(); - m_alt_insert_point = this->m_pdata->m_data.size(); - std::ptrdiff_t expected_alt_point = m_alt_insert_point; - bool restore_flags = true; - regex_constants::syntax_option_type old_flags = this->flags(); - bool old_case_change = m_has_case_change; - m_has_case_change = false; - charT name_delim; - int mark_reset = m_mark_reset; - int max_mark = m_max_mark; - m_mark_reset = -1; - m_max_mark = m_mark_count; - boost::intmax_t v; - // - // select the actual extension used: - // - switch(this->m_traits.syntax_type(*m_position)) - { - case regex_constants::syntax_or: - m_mark_reset = m_mark_count; - BOOST_FALLTHROUGH; - case regex_constants::syntax_colon: - // - // a non-capturing mark: - // - pb->index = markid = 0; - ++m_position; - break; - case regex_constants::syntax_digit: - { - // - // a recursive subexpression: - // - v = this->m_traits.toi(m_position, m_end, 10); - if((v < 0) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base, "The recursive sub-expression refers to an invalid marking group, or is unterminated."); - return false; - } -insert_recursion: - pb->index = markid = 0; - re_recurse* pr = static_cast(this->append_state(syntax_element_recurse, sizeof(re_recurse))); - pr->alt.i = v; - pr->state_id = 0; - static_cast( - this->append_state(syntax_element_toggle_case, sizeof(re_case)) - )->icase = this->flags() & regbase::icase; - break; - } - case regex_constants::syntax_plus: - // - // A forward-relative recursive subexpression: - // - ++m_position; - v = this->m_traits.toi(m_position, m_end, 10); - if((v <= 0) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base, "An invalid or unterminated recursive sub-expression."); - return false; - } - if ((std::numeric_limits::max)() - m_mark_count < v) - { - fail(regex_constants::error_perl_extension, m_position - m_base, "An invalid or unterminated recursive sub-expression."); - return false; - } - v += m_mark_count; - goto insert_recursion; - case regex_constants::syntax_dash: - // - // Possibly a backward-relative recursive subexpression: - // - ++m_position; - v = this->m_traits.toi(m_position, m_end, 10); - if(v <= 0) - { - --m_position; - // Oops not a relative recursion at all, but a (?-imsx) group: - goto option_group_jump; - } - v = m_mark_count + 1 - v; - if(v <= 0) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base, "An invalid or unterminated recursive sub-expression."); - return false; - } - goto insert_recursion; - case regex_constants::syntax_equal: - pb->index = markid = -1; - ++m_position; - jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump))); - this->m_pdata->m_data.align(); - m_alt_insert_point = this->m_pdata->m_data.size(); - break; - case regex_constants::syntax_not: - pb->index = markid = -2; - ++m_position; - jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump))); - this->m_pdata->m_data.align(); - m_alt_insert_point = this->m_pdata->m_data.size(); - break; - case regex_constants::escape_type_left_word: - { - // a lookbehind assertion: - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - regex_constants::syntax_type t = this->m_traits.syntax_type(*m_position); - if(t == regex_constants::syntax_not) - pb->index = markid = -2; - else if(t == regex_constants::syntax_equal) - pb->index = markid = -1; - else - { - // Probably a named capture which also starts (?< : - name_delim = '>'; - --m_position; - goto named_capture_jump; - } - ++m_position; - jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump))); - this->append_state(syntax_element_backstep, sizeof(re_brace)); - this->m_pdata->m_data.align(); - m_alt_insert_point = this->m_pdata->m_data.size(); - break; - } - case regex_constants::escape_type_right_word: - // - // an independent sub-expression: - // - pb->index = markid = -3; - ++m_position; - jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump))); - this->m_pdata->m_data.align(); - m_alt_insert_point = this->m_pdata->m_data.size(); - break; - case regex_constants::syntax_open_mark: - { - // a conditional expression: - pb->index = markid = -4; - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - v = this->m_traits.toi(m_position, m_end, 10); - if(m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(*m_position == charT('R')) - { - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(*m_position == charT('&')) - { - const charT* base = ++m_position; - while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - ++m_position; - if(m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - v = -static_cast(hash_value_from_capture_name(base, m_position)); - } - else - { - v = -this->m_traits.toi(m_position, m_end, 10); - } - re_brace* br = static_cast(this->append_state(syntax_element_assert_backref, sizeof(re_brace))); - br->index = v < 0 ? (v - 1) : 0; - if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - } - else if((*m_position == charT('\'')) || (*m_position == charT('<'))) - { - const charT* base = ++m_position; - while((m_position != m_end) && (*m_position != charT('>')) && (*m_position != charT('\''))) - ++m_position; - if(m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - v = static_cast(hash_value_from_capture_name(base, m_position)); - re_brace* br = static_cast(this->append_state(syntax_element_assert_backref, sizeof(re_brace))); - br->index = v; - if(((*m_position != charT('>')) && (*m_position != charT('\''))) || (++m_position == m_end)) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base, "Unterminated named capture."); - return false; - } - if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - } - else if(*m_position == charT('D')) - { - const char* def = "DEFINE"; - while(*def && (m_position != m_end) && (*m_position == charT(*def))) - ++m_position, ++def; - if((m_position == m_end) || *def) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - re_brace* br = static_cast(this->append_state(syntax_element_assert_backref, sizeof(re_brace))); - br->index = 9999; // special magic value! - if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - } - else if(v > 0) - { - re_brace* br = static_cast(this->append_state(syntax_element_assert_backref, sizeof(re_brace))); - br->index = v; - if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - } - else - { - // verify that we have a lookahead or lookbehind assert: - if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_question) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(this->m_traits.syntax_type(*m_position) == regex_constants::escape_type_left_word) - { - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if((this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal) - && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_not)) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - m_position -= 3; - } - else - { - if((this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal) - && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_not)) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - m_position -= 2; - } - } - break; - } - case regex_constants::syntax_close_mark: - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - case regex_constants::escape_type_end_buffer: - { - name_delim = *m_position; -named_capture_jump: - markid = 0; - if(0 == (this->flags() & regbase::nosubs)) - { - markid = ++m_mark_count; - #ifndef BOOST_NO_STD_DISTANCE - if(this->flags() & regbase::save_subexpression_location) - this->m_pdata->m_subs.push_back(std::pair(std::distance(m_base, m_position) - 2, 0)); - #else - if(this->flags() & regbase::save_subexpression_location) - this->m_pdata->m_subs.push_back(std::pair((m_position - m_base) - 2, 0)); - #endif - } - pb->index = markid; - const charT* base = ++m_position; - if(m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - while((m_position != m_end) && (*m_position != name_delim)) - ++m_position; - if(m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - this->m_pdata->set_name(base, m_position, markid); - ++m_position; - break; - } - default: - if(*m_position == charT('R')) - { - ++m_position; - v = 0; - if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - goto insert_recursion; - } - if(*m_position == charT('&')) - { - ++m_position; - const charT* base = m_position; - while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - ++m_position; - if(m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - v = static_cast(hash_value_from_capture_name(base, m_position)); - goto insert_recursion; - } - if(*m_position == charT('P')) - { - ++m_position; - if(m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(*m_position == charT('>')) - { - ++m_position; - const charT* base = m_position; - while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - ++m_position; - if(m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - v = static_cast(hash_value_from_capture_name(base, m_position)); - goto insert_recursion; - } - } - // - // lets assume that we have a (?imsx) group and try and parse it: - // -option_group_jump: - regex_constants::syntax_option_type opts = parse_options(); - if(m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - // make a note of whether we have a case change: - m_has_case_change = ((opts & regbase::icase) != (this->flags() & regbase::icase)); - pb->index = markid = 0; - if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark) - { - // update flags and carry on as normal: - this->flags(opts); - restore_flags = false; - old_case_change |= m_has_case_change; // defer end of scope by one ')' - } - else if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_colon) - { - // update flags and carry on until the matching ')' is found: - this->flags(opts); - ++m_position; - } - else - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - - // finally append a case change state if we need it: - if(m_has_case_change) - { - static_cast( - this->append_state(syntax_element_toggle_case, sizeof(re_case)) - )->icase = opts & regbase::icase; - } - - } - // - // now recursively add more states, this will terminate when we get to a - // matching ')' : - // - parse_all(); - // - // Unwind alternatives: - // - if(0 == unwind_alts(last_paren_start)) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base, "Invalid alternation operators within (?...) block."); - return false; - } - // - // we either have a ')' or we have run out of characters prematurely: - // - if(m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - this->fail(regex_constants::error_paren, ::boost::BOOST_REGEX_DETAIL_NS::distance(m_base, m_end)); - return false; - } - BOOST_ASSERT(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark); - ++m_position; - // - // restore the flags: - // - if(restore_flags) - { - // append a case change state if we need it: - if(m_has_case_change) - { - static_cast( - this->append_state(syntax_element_toggle_case, sizeof(re_case)) - )->icase = old_flags & regbase::icase; - } - this->flags(old_flags); - } - // - // set up the jump pointer if we have one: - // - if(jump_offset) - { - this->m_pdata->m_data.align(); - re_jump* jmp = static_cast(this->getaddress(jump_offset)); - jmp->alt.i = this->m_pdata->m_data.size() - this->getoffset(jmp); - if((this->m_last_state == jmp) && (markid != -2)) - { - // Oops... we didn't have anything inside the assertion. - // Note we don't get here for negated forward lookahead as (?!) - // does have some uses. - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base, "Invalid or empty zero width assertion."); - return false; - } - } - // - // verify that if this is conditional expression, that we do have - // an alternative, if not add one: - // - if(markid == -4) - { - re_syntax_base* b = this->getaddress(expected_alt_point); - // Make sure we have exactly one alternative following this state: - if(b->type != syntax_element_alt) - { - re_alt* alt = static_cast(this->insert_state(expected_alt_point, syntax_element_alt, sizeof(re_alt))); - alt->alt.i = this->m_pdata->m_data.size() - this->getoffset(alt); - } - else if(((std::ptrdiff_t)this->m_pdata->m_data.size() > (static_cast(b)->alt.i + this->getoffset(b))) && (static_cast(b)->alt.i > 0) && this->getaddress(static_cast(b)->alt.i, b)->type == syntax_element_alt) - { - // Can't have seen more than one alternative: - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_bad_pattern, m_position - m_base, "More than one alternation operator | was encountered inside a conditional expression."); - return false; - } - else - { - // We must *not* have seen an alternative inside a (DEFINE) block: - b = this->getaddress(b->next.i, b); - if((b->type == syntax_element_assert_backref) && (static_cast(b)->index == 9999)) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_bad_pattern, m_position - m_base, "Alternation operators are not allowed inside a DEFINE block."); - return false; - } - } - // check for invalid repetition of next state: - b = this->getaddress(expected_alt_point); - b = this->getaddress(static_cast(b)->next.i, b); - if((b->type != syntax_element_assert_backref) - && (b->type != syntax_element_startmark)) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_badrepeat, m_position - m_base, "A repetition operator cannot be applied to a zero-width assertion."); - return false; - } - } - // - // append closing parenthesis state: - // - pb = static_cast(this->append_state(syntax_element_endmark, sizeof(re_brace))); - pb->index = markid; - pb->icase = this->flags() & regbase::icase; - this->m_paren_start = last_paren_start; - // - // restore the alternate insertion point: - // - this->m_alt_insert_point = last_alt_point; - // - // and the case change data: - // - m_has_case_change = old_case_change; - // - // And the mark_reset data: - // - if(m_max_mark > m_mark_count) - { - m_mark_count = m_max_mark; - } - m_mark_reset = mark_reset; - m_max_mark = max_mark; - - - if(markid > 0) - { -#ifndef BOOST_NO_STD_DISTANCE - if(this->flags() & regbase::save_subexpression_location) - this->m_pdata->m_subs.at(markid - 1).second = std::distance(m_base, m_position) - 1; -#else - if(this->flags() & regbase::save_subexpression_location) - this->m_pdata->m_subs.at(markid - 1).second = (m_position - m_base) - 1; -#endif - // - // allow backrefs to this mark: - // - if(markid < (int)(sizeof(unsigned) * CHAR_BIT)) - this->m_backrefs |= 1u << (markid - 1); - } - return true; -} - -template -bool basic_regex_parser::match_verb(const char* verb) -{ - while(*verb) - { - if(static_cast(*verb) != *m_position) - { - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(++m_position == m_end) - { - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - ++verb; - } - return true; -} - -template -bool basic_regex_parser::parse_perl_verb() -{ - if(++m_position == m_end) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - switch(*m_position) - { - case 'F': - if(++m_position == m_end) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if((this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark) || match_verb("AIL")) - { - if((m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - ++m_position; - this->append_state(syntax_element_fail); - return true; - } - break; - case 'A': - if(++m_position == m_end) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(match_verb("CCEPT")) - { - if((m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - ++m_position; - this->append_state(syntax_element_accept); - return true; - } - break; - case 'C': - if(++m_position == m_end) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(match_verb("OMMIT")) - { - if((m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - ++m_position; - static_cast(this->append_state(syntax_element_commit, sizeof(re_commit)))->action = commit_commit; - this->m_pdata->m_disable_match_any = true; - return true; - } - break; - case 'P': - if(++m_position == m_end) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(match_verb("RUNE")) - { - if((m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - ++m_position; - static_cast(this->append_state(syntax_element_commit, sizeof(re_commit)))->action = commit_prune; - this->m_pdata->m_disable_match_any = true; - return true; - } - break; - case 'S': - if(++m_position == m_end) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(match_verb("KIP")) - { - if((m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - ++m_position; - static_cast(this->append_state(syntax_element_commit, sizeof(re_commit)))->action = commit_skip; - this->m_pdata->m_disable_match_any = true; - return true; - } - break; - case 'T': - if(++m_position == m_end) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - if(match_verb("HEN")) - { - if((m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)) - { - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; - } - ++m_position; - this->append_state(syntax_element_then); - this->m_pdata->m_disable_match_any = true; - return true; - } - break; - } - // Rewind to start of (* sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_perl_extension, m_position - m_base); - return false; -} - -template -bool basic_regex_parser::add_emacs_code(bool negate) -{ - // - // parses an emacs style \sx or \Sx construct. - // - if(++m_position == m_end) - { - // Rewind to start of sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape) --m_position; - fail(regex_constants::error_escape, m_position - m_base); - return false; - } - basic_char_set char_set; - if(negate) - char_set.negate(); - - static const charT s_punct[5] = { 'p', 'u', 'n', 'c', 't', }; - - switch(*m_position) - { - case 's': - case ' ': - char_set.add_class(this->m_mask_space); - break; - case 'w': - char_set.add_class(this->m_word_mask); - break; - case '_': - char_set.add_single(digraph(charT('$'))); - char_set.add_single(digraph(charT('&'))); - char_set.add_single(digraph(charT('*'))); - char_set.add_single(digraph(charT('+'))); - char_set.add_single(digraph(charT('-'))); - char_set.add_single(digraph(charT('_'))); - char_set.add_single(digraph(charT('<'))); - char_set.add_single(digraph(charT('>'))); - break; - case '.': - char_set.add_class(this->m_traits.lookup_classname(s_punct, s_punct+5)); - break; - case '(': - char_set.add_single(digraph(charT('('))); - char_set.add_single(digraph(charT('['))); - char_set.add_single(digraph(charT('{'))); - break; - case ')': - char_set.add_single(digraph(charT(')'))); - char_set.add_single(digraph(charT(']'))); - char_set.add_single(digraph(charT('}'))); - break; - case '"': - char_set.add_single(digraph(charT('"'))); - char_set.add_single(digraph(charT('\''))); - char_set.add_single(digraph(charT('`'))); - break; - case '\'': - char_set.add_single(digraph(charT('\''))); - char_set.add_single(digraph(charT(','))); - char_set.add_single(digraph(charT('#'))); - break; - case '<': - char_set.add_single(digraph(charT(';'))); - break; - case '>': - char_set.add_single(digraph(charT('\n'))); - char_set.add_single(digraph(charT('\f'))); - break; - default: - fail(regex_constants::error_ctype, m_position - m_base); - return false; - } - if(0 == this->append_set(char_set)) - { - fail(regex_constants::error_ctype, m_position - m_base); - return false; - } - ++m_position; - return true; -} - -template -regex_constants::syntax_option_type basic_regex_parser::parse_options() -{ - // we have a (?imsx-imsx) group, convert it into a set of flags: - regex_constants::syntax_option_type f = this->flags(); - bool breakout = false; - do - { - switch(*m_position) - { - case 's': - f |= regex_constants::mod_s; - f &= ~regex_constants::no_mod_s; - break; - case 'm': - f &= ~regex_constants::no_mod_m; - break; - case 'i': - f |= regex_constants::icase; - break; - case 'x': - f |= regex_constants::mod_x; - break; - default: - breakout = true; - continue; - } - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_paren, m_position - m_base); - return false; - } - } - while(!breakout); - - breakout = false; - - if(*m_position == static_cast('-')) - { - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_paren, m_position - m_base); - return false; - } - do - { - switch(*m_position) - { - case 's': - f &= ~regex_constants::mod_s; - f |= regex_constants::no_mod_s; - break; - case 'm': - f |= regex_constants::no_mod_m; - break; - case 'i': - f &= ~regex_constants::icase; - break; - case 'x': - f &= ~regex_constants::mod_x; - break; - default: - breakout = true; - continue; - } - if(++m_position == m_end) - { - // Rewind to start of (? sequence: - --m_position; - while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position; - fail(regex_constants::error_paren, m_position - m_base); - return false; - } - } - while(!breakout); - } - return f; -} - -template -bool basic_regex_parser::unwind_alts(std::ptrdiff_t last_paren_start) -{ - // - // If we didn't actually add any states after the last - // alternative then that's an error: - // - if((this->m_alt_insert_point == static_cast(this->m_pdata->m_data.size())) - && m_alt_jumps.size() && (m_alt_jumps.back() > last_paren_start) - && - !( - ((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group) - && - ((this->flags() & regbase::no_empty_expressions) == 0) - ) - ) - { - fail(regex_constants::error_empty, this->m_position - this->m_base, "Can't terminate a sub-expression with an alternation operator |."); - return false; - } - // - // Fix up our alternatives: - // - while(m_alt_jumps.size() && (m_alt_jumps.back() > last_paren_start)) - { - // - // fix up the jump to point to the end of the states - // that we've just added: - // - std::ptrdiff_t jump_offset = m_alt_jumps.back(); - m_alt_jumps.pop_back(); - this->m_pdata->m_data.align(); - re_jump* jmp = static_cast(this->getaddress(jump_offset)); - BOOST_ASSERT(jmp->type == syntax_element_jump); - jmp->alt.i = this->m_pdata->m_data.size() - jump_offset; - } - return true; -} - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace BOOST_REGEX_DETAIL_NS -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif diff --git a/src/boost/boost/regex/v4/c_regex_traits.hpp b/src/boost/boost/regex/v4/c_regex_traits.hpp deleted file mode 100644 index 7100ea265..000000000 --- a/src/boost/boost/regex/v4/c_regex_traits.hpp +++ /dev/null @@ -1,211 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE c_regex_traits.hpp - * VERSION see - * DESCRIPTION: Declares regular expression traits class that wraps the global C locale. - */ - -#ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED -#define BOOST_C_REGEX_TRAITS_HPP_INCLUDED - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif -#ifndef BOOST_REGEX_WORKAROUND_HPP -#include -#endif - -#include - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std{ - using ::strlen; using ::tolower; -} -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ - -template -struct c_regex_traits; - -template<> -struct BOOST_REGEX_DECL c_regex_traits -{ - c_regex_traits(){} - typedef char char_type; - typedef std::size_t size_type; - typedef std::string string_type; - struct locale_type{}; - typedef boost::uint32_t char_class_type; - - static size_type length(const char_type* p) - { - return (std::strlen)(p); - } - - char translate(char c) const - { - return c; - } - char translate_nocase(char c) const - { - return static_cast((std::tolower)(static_cast(c))); - } - - static string_type BOOST_REGEX_CALL transform(const char* p1, const char* p2); - static string_type BOOST_REGEX_CALL transform_primary(const char* p1, const char* p2); - - static char_class_type BOOST_REGEX_CALL lookup_classname(const char* p1, const char* p2); - static string_type BOOST_REGEX_CALL lookup_collatename(const char* p1, const char* p2); - - static bool BOOST_REGEX_CALL isctype(char, char_class_type); - static int BOOST_REGEX_CALL value(char, int); - - locale_type imbue(locale_type l) - { return l; } - locale_type getloc()const - { return locale_type(); } - -private: - // this type is not copyable: - c_regex_traits(const c_regex_traits&); - c_regex_traits& operator=(const c_regex_traits&); -}; - -#ifndef BOOST_NO_WREGEX -template<> -struct BOOST_REGEX_DECL c_regex_traits -{ - c_regex_traits(){} - typedef wchar_t char_type; - typedef std::size_t size_type; - typedef std::wstring string_type; - struct locale_type{}; - typedef boost::uint32_t char_class_type; - - static size_type length(const char_type* p) - { - return (std::wcslen)(p); - } - - wchar_t translate(wchar_t c) const - { - return c; - } - wchar_t translate_nocase(wchar_t c) const - { - return (std::towlower)(c); - } - - static string_type BOOST_REGEX_CALL transform(const wchar_t* p1, const wchar_t* p2); - static string_type BOOST_REGEX_CALL transform_primary(const wchar_t* p1, const wchar_t* p2); - - static char_class_type BOOST_REGEX_CALL lookup_classname(const wchar_t* p1, const wchar_t* p2); - static string_type BOOST_REGEX_CALL lookup_collatename(const wchar_t* p1, const wchar_t* p2); - - static bool BOOST_REGEX_CALL isctype(wchar_t, char_class_type); - static int BOOST_REGEX_CALL value(wchar_t, int); - - locale_type imbue(locale_type l) - { return l; } - locale_type getloc()const - { return locale_type(); } - -private: - // this type is not copyable: - c_regex_traits(const c_regex_traits&); - c_regex_traits& operator=(const c_regex_traits&); -}; - -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -// -// Provide an unsigned short version as well, so the user can link to this -// no matter whether they build with /Zc:wchar_t or not (MSVC specific). -// -template<> -struct BOOST_REGEX_DECL c_regex_traits -{ - c_regex_traits(){} - typedef unsigned short char_type; - typedef std::size_t size_type; - typedef std::basic_string string_type; - struct locale_type{}; - typedef boost::uint32_t char_class_type; - - static size_type length(const char_type* p) - { - return (std::wcslen)((const wchar_t*)p); - } - - unsigned short translate(unsigned short c) const - { - return c; - } - unsigned short translate_nocase(unsigned short c) const - { - return (std::towlower)((wchar_t)c); - } - - static string_type BOOST_REGEX_CALL transform(const unsigned short* p1, const unsigned short* p2); - static string_type BOOST_REGEX_CALL transform_primary(const unsigned short* p1, const unsigned short* p2); - - static char_class_type BOOST_REGEX_CALL lookup_classname(const unsigned short* p1, const unsigned short* p2); - static string_type BOOST_REGEX_CALL lookup_collatename(const unsigned short* p1, const unsigned short* p2); - - static bool BOOST_REGEX_CALL isctype(unsigned short, char_class_type); - static int BOOST_REGEX_CALL value(unsigned short, int); - - locale_type imbue(locale_type l) - { return l; } - locale_type getloc()const - { return locale_type(); } - -private: - // this type is not copyable: - c_regex_traits(const c_regex_traits&); - c_regex_traits& operator=(const c_regex_traits&); -}; - -#endif - -#endif // BOOST_NO_WREGEX - -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - - - diff --git a/src/boost/boost/regex/v4/char_regex_traits.hpp b/src/boost/boost/regex/v4/char_regex_traits.hpp deleted file mode 100644 index 3c1936e3d..000000000 --- a/src/boost/boost/regex/v4/char_regex_traits.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE char_regex_traits.cpp - * VERSION see - * DESCRIPTION: Declares deprecated traits classes char_regex_traits<>. - */ - - -#ifndef BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP -#define BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ - -namespace deprecated{ -// -// class char_regex_traits_i -// provides case insensitive traits classes (deprecated): -template -class char_regex_traits_i : public regex_traits {}; - -template<> -class char_regex_traits_i : public regex_traits -{ -public: - typedef char char_type; - typedef unsigned char uchar_type; - typedef unsigned int size_type; - typedef regex_traits base_type; - -}; - -#ifndef BOOST_NO_WREGEX -template<> -class char_regex_traits_i : public regex_traits -{ -public: - typedef wchar_t char_type; - typedef unsigned short uchar_type; - typedef unsigned int size_type; - typedef regex_traits base_type; - -}; -#endif -} // namespace deprecated -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif // include - diff --git a/src/boost/boost/regex/v4/cpp_regex_traits.hpp b/src/boost/boost/regex/v4/cpp_regex_traits.hpp deleted file mode 100644 index 640c4419c..000000000 --- a/src/boost/boost/regex/v4/cpp_regex_traits.hpp +++ /dev/null @@ -1,1154 +0,0 @@ -/* - * - * Copyright (c) 2004 John Maddock - * Copyright 2011 Garmin Ltd. or its subsidiaries - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE cpp_regex_traits.hpp - * VERSION see - * DESCRIPTION: Declares regular expression traits class cpp_regex_traits. - */ - -#ifndef BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED -#define BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED - -#include -#include -#include - -#ifndef BOOST_NO_STD_LOCALE - -#ifndef BOOST_RE_PAT_EXCEPT_HPP -#include -#endif -#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED -#include -#endif -#ifdef BOOST_HAS_THREADS -#include -#endif -#ifndef BOOST_REGEX_PRIMARY_TRANSFORM -#include -#endif -#ifndef BOOST_REGEX_OBJECT_CACHE_HPP -#include -#endif - -#include -#include -#include - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4786 4251) -#endif - -namespace boost{ - -// -// forward declaration is needed by some compilers: -// -template -class cpp_regex_traits; - -namespace BOOST_REGEX_DETAIL_NS{ - -// -// class parser_buf: -// acts as a stream buffer which wraps around a pair of pointers: -// -template > -class parser_buf : public ::std::basic_streambuf -{ - typedef ::std::basic_streambuf base_type; - typedef typename base_type::int_type int_type; - typedef typename base_type::char_type char_type; - typedef typename base_type::pos_type pos_type; - typedef ::std::streamsize streamsize; - typedef typename base_type::off_type off_type; -public: - parser_buf() : base_type() { setbuf(0, 0); } - const charT* getnext() { return this->gptr(); } -protected: - std::basic_streambuf* setbuf(char_type* s, streamsize n); - typename parser_buf::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which); - typename parser_buf::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which); -private: - parser_buf& operator=(const parser_buf&); - parser_buf(const parser_buf&); -}; - -template -std::basic_streambuf* -parser_buf::setbuf(char_type* s, streamsize n) -{ - this->setg(s, s, s + n); - return this; -} - -template -typename parser_buf::pos_type -parser_buf::seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which) -{ - typedef typename boost::int_t::least cast_type; - - if(which & ::std::ios_base::out) - return pos_type(off_type(-1)); - std::ptrdiff_t size = this->egptr() - this->eback(); - std::ptrdiff_t pos = this->gptr() - this->eback(); - charT* g = this->eback(); - switch(static_cast(way)) - { - case ::std::ios_base::beg: - if((off < 0) || (off > size)) - return pos_type(off_type(-1)); - else - this->setg(g, g + off, g + size); - break; - case ::std::ios_base::end: - if((off < 0) || (off > size)) - return pos_type(off_type(-1)); - else - this->setg(g, g + size - off, g + size); - break; - case ::std::ios_base::cur: - { - std::ptrdiff_t newpos = static_cast(pos + off); - if((newpos < 0) || (newpos > size)) - return pos_type(off_type(-1)); - else - this->setg(g, g + newpos, g + size); - break; - } - default: ; - } -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4244) -#endif - return static_cast(this->gptr() - this->eback()); -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -typename parser_buf::pos_type -parser_buf::seekpos(pos_type sp, ::std::ios_base::openmode which) -{ - if(which & ::std::ios_base::out) - return pos_type(off_type(-1)); - off_type size = static_cast(this->egptr() - this->eback()); - charT* g = this->eback(); - if(off_type(sp) <= size) - { - this->setg(g, g + off_type(sp), g + size); - } - return pos_type(off_type(-1)); -} - -// -// class cpp_regex_traits_base: -// acts as a container for locale and the facets we are using. -// -template -struct cpp_regex_traits_base -{ - cpp_regex_traits_base(const std::locale& l) - { imbue(l); } - std::locale imbue(const std::locale& l); - - std::locale m_locale; - std::ctype const* m_pctype; -#ifndef BOOST_NO_STD_MESSAGES - std::messages const* m_pmessages; -#endif - std::collate const* m_pcollate; - - bool operator<(const cpp_regex_traits_base& b)const - { - if(m_pctype == b.m_pctype) - { -#ifndef BOOST_NO_STD_MESSAGES - if(m_pmessages == b.m_pmessages) - { - return m_pcollate < b.m_pcollate; - } - return m_pmessages < b.m_pmessages; -#else - return m_pcollate < b.m_pcollate; -#endif - } - return m_pctype < b.m_pctype; - } - bool operator==(const cpp_regex_traits_base& b)const - { - return (m_pctype == b.m_pctype) -#ifndef BOOST_NO_STD_MESSAGES - && (m_pmessages == b.m_pmessages) -#endif - && (m_pcollate == b.m_pcollate); - } -}; - -template -std::locale cpp_regex_traits_base::imbue(const std::locale& l) -{ - std::locale result(m_locale); - m_locale = l; - m_pctype = &BOOST_USE_FACET(std::ctype, l); -#ifndef BOOST_NO_STD_MESSAGES - m_pmessages = BOOST_HAS_FACET(std::messages, l) ? &BOOST_USE_FACET(std::messages, l) : 0; -#endif - m_pcollate = &BOOST_USE_FACET(std::collate, l); - return result; -} - -// -// class cpp_regex_traits_char_layer: -// implements methods that require specialisation for narrow characters: -// -template -class cpp_regex_traits_char_layer : public cpp_regex_traits_base -{ - typedef std::basic_string string_type; - typedef std::map map_type; - typedef typename map_type::const_iterator map_iterator_type; -public: - cpp_regex_traits_char_layer(const std::locale& l) - : cpp_regex_traits_base(l) - { - init(); - } - cpp_regex_traits_char_layer(const cpp_regex_traits_base& b) - : cpp_regex_traits_base(b) - { - init(); - } - void init(); - - regex_constants::syntax_type syntax_type(charT c)const - { - map_iterator_type i = m_char_map.find(c); - return ((i == m_char_map.end()) ? 0 : i->second); - } - regex_constants::escape_syntax_type escape_syntax_type(charT c) const - { - map_iterator_type i = m_char_map.find(c); - if(i == m_char_map.end()) - { - if(this->m_pctype->is(std::ctype_base::lower, c)) return regex_constants::escape_type_class; - if(this->m_pctype->is(std::ctype_base::upper, c)) return regex_constants::escape_type_not_class; - return 0; - } - return i->second; - } - -private: - string_type get_default_message(regex_constants::syntax_type); - // TODO: use a hash table when available! - map_type m_char_map; -}; - -template -void cpp_regex_traits_char_layer::init() -{ - // we need to start by initialising our syntax map so we know which - // character is used for which purpose: -#ifndef BOOST_NO_STD_MESSAGES -#ifndef __IBMCPP__ - typename std::messages::catalog cat = static_cast::catalog>(-1); -#else - typename std::messages::catalog cat = reinterpret_cast::catalog>(-1); -#endif - std::string cat_name(cpp_regex_traits::get_catalog_name()); - if(cat_name.size() && (this->m_pmessages != 0)) - { - cat = this->m_pmessages->open( - cat_name, - this->m_locale); - if((int)cat < 0) - { - std::string m("Unable to open message catalog: "); - std::runtime_error err(m + cat_name); - boost::BOOST_REGEX_DETAIL_NS::raise_runtime_error(err); - } - } - // - // if we have a valid catalog then load our messages: - // - if((int)cat >= 0) - { -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) - { - string_type mss = this->m_pmessages->get(cat, 0, i, get_default_message(i)); - for(typename string_type::size_type j = 0; j < mss.size(); ++j) - { - m_char_map[mss[j]] = i; - } - } - this->m_pmessages->close(cat); -#ifndef BOOST_NO_EXCEPTIONS - } - catch(...) - { - if(this->m_pmessages) - this->m_pmessages->close(cat); - throw; - } -#endif - } - else - { -#endif - for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) - { - const char* ptr = get_default_syntax(i); - while(ptr && *ptr) - { - m_char_map[this->m_pctype->widen(*ptr)] = i; - ++ptr; - } - } -#ifndef BOOST_NO_STD_MESSAGES - } -#endif -} - -template -typename cpp_regex_traits_char_layer::string_type - cpp_regex_traits_char_layer::get_default_message(regex_constants::syntax_type i) -{ - const char* ptr = get_default_syntax(i); - string_type result; - while(ptr && *ptr) - { - result.append(1, this->m_pctype->widen(*ptr)); - ++ptr; - } - return result; -} - -// -// specialised version for narrow characters: -// -template <> -class BOOST_REGEX_DECL cpp_regex_traits_char_layer : public cpp_regex_traits_base -{ - typedef std::string string_type; -public: - cpp_regex_traits_char_layer(const std::locale& l) - : cpp_regex_traits_base(l) - { - init(); - } - cpp_regex_traits_char_layer(const cpp_regex_traits_base& l) - : cpp_regex_traits_base(l) - { - init(); - } - - regex_constants::syntax_type syntax_type(char c)const - { - return m_char_map[static_cast(c)]; - } - regex_constants::escape_syntax_type escape_syntax_type(char c) const - { - return m_char_map[static_cast(c)]; - } - -private: - regex_constants::syntax_type m_char_map[1u << CHAR_BIT]; - void init(); -}; - -#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET -enum -{ - char_class_space=1<<0, - char_class_print=1<<1, - char_class_cntrl=1<<2, - char_class_upper=1<<3, - char_class_lower=1<<4, - char_class_alpha=1<<5, - char_class_digit=1<<6, - char_class_punct=1<<7, - char_class_xdigit=1<<8, - char_class_alnum=char_class_alpha|char_class_digit, - char_class_graph=char_class_alnum|char_class_punct, - char_class_blank=1<<9, - char_class_word=1<<10, - char_class_unicode=1<<11, - char_class_horizontal_space=1<<12, - char_class_vertical_space=1<<13 -}; - -#endif - -// -// class cpp_regex_traits_implementation: -// provides pimpl implementation for cpp_regex_traits. -// -template -class cpp_regex_traits_implementation : public cpp_regex_traits_char_layer -{ -public: - typedef typename cpp_regex_traits::char_class_type char_class_type; - typedef typename std::ctype::mask native_mask_type; - typedef typename boost::make_unsigned::type unsigned_native_mask_type; -#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET - BOOST_STATIC_CONSTANT(char_class_type, mask_blank = 1u << 24); - BOOST_STATIC_CONSTANT(char_class_type, mask_word = 1u << 25); - BOOST_STATIC_CONSTANT(char_class_type, mask_unicode = 1u << 26); - BOOST_STATIC_CONSTANT(char_class_type, mask_horizontal = 1u << 27); - BOOST_STATIC_CONSTANT(char_class_type, mask_vertical = 1u << 28); -#endif - - typedef std::basic_string string_type; - typedef charT char_type; - //cpp_regex_traits_implementation(); - cpp_regex_traits_implementation(const std::locale& l) - : cpp_regex_traits_char_layer(l) - { - init(); - } - cpp_regex_traits_implementation(const cpp_regex_traits_base& l) - : cpp_regex_traits_char_layer(l) - { - init(); - } - std::string error_string(regex_constants::error_type n) const - { - if(!m_error_strings.empty()) - { - std::map::const_iterator p = m_error_strings.find(n); - return (p == m_error_strings.end()) ? std::string(get_default_error_string(n)) : p->second; - } - return get_default_error_string(n); - } - char_class_type lookup_classname(const charT* p1, const charT* p2) const - { - char_class_type result = lookup_classname_imp(p1, p2); - if(result == 0) - { - string_type temp(p1, p2); - this->m_pctype->tolower(&*temp.begin(), &*temp.begin() + temp.size()); - result = lookup_classname_imp(&*temp.begin(), &*temp.begin() + temp.size()); - } - return result; - } - string_type lookup_collatename(const charT* p1, const charT* p2) const; - string_type transform_primary(const charT* p1, const charT* p2) const; - string_type transform(const charT* p1, const charT* p2) const; -private: - std::map m_error_strings; // error messages indexed by numberic ID - std::map m_custom_class_names; // character class names - std::map m_custom_collate_names; // collating element names - unsigned m_collate_type; // the form of the collation string - charT m_collate_delim; // the collation group delimiter - // - // helpers: - // - char_class_type lookup_classname_imp(const charT* p1, const charT* p2) const; - void init(); -#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET -public: - bool isctype(charT c, char_class_type m)const; -#endif -}; - -#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET -#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION) - -template -typename cpp_regex_traits_implementation::char_class_type const cpp_regex_traits_implementation::mask_blank; -template -typename cpp_regex_traits_implementation::char_class_type const cpp_regex_traits_implementation::mask_word; -template -typename cpp_regex_traits_implementation::char_class_type const cpp_regex_traits_implementation::mask_unicode; -template -typename cpp_regex_traits_implementation::char_class_type const cpp_regex_traits_implementation::mask_vertical; -template -typename cpp_regex_traits_implementation::char_class_type const cpp_regex_traits_implementation::mask_horizontal; - -#endif -#endif - -template -typename cpp_regex_traits_implementation::string_type - cpp_regex_traits_implementation::transform_primary(const charT* p1, const charT* p2) const -{ - // - // PRECONDITIONS: - // - // A bug in gcc 3.2 (and maybe other versions as well) treats - // p1 as a null terminated string, for efficiency reasons - // we work around this elsewhere, but just assert here that - // we adhere to gcc's (buggy) preconditions... - // - BOOST_ASSERT(*p2 == 0); - string_type result; -#if defined(_CPPLIB_VER) - // - // A bug in VC11 and 12 causes the program to hang if we pass a null-string - // to std::collate::transform, but only for certain locales :-( - // Probably effects Intel and Clang or any compiler using the VC std library (Dinkumware). - // - if(*p1 == 0) - { - return string_type(1, charT(0)); - } -#endif - // - // swallowing all exceptions here is a bad idea - // however at least one std lib will always throw - // std::bad_alloc for certain arguments... - // -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - // - // What we do here depends upon the format of the sort key returned by - // sort key returned by this->transform: - // - switch(m_collate_type) - { - case sort_C: - case sort_unknown: - // the best we can do is translate to lower case, then get a regular sort key: - { - result.assign(p1, p2); - this->m_pctype->tolower(&*result.begin(), &*result.begin() + result.size()); - result = this->m_pcollate->transform(&*result.begin(), &*result.begin() + result.size()); - break; - } - case sort_fixed: - { - // get a regular sort key, and then truncate it: - result.assign(this->m_pcollate->transform(p1, p2)); - result.erase(this->m_collate_delim); - break; - } - case sort_delim: - // get a regular sort key, and then truncate everything after the delim: - result.assign(this->m_pcollate->transform(p1, p2)); - std::size_t i; - for(i = 0; i < result.size(); ++i) - { - if(result[i] == m_collate_delim) - break; - } - result.erase(i); - break; - } -#ifndef BOOST_NO_EXCEPTIONS - }catch(...){} -#endif - while(result.size() && (charT(0) == *result.rbegin())) - result.erase(result.size() - 1); - if(result.empty()) - { - // character is ignorable at the primary level: - result = string_type(1, charT(0)); - } - return result; -} - -template -typename cpp_regex_traits_implementation::string_type - cpp_regex_traits_implementation::transform(const charT* p1, const charT* p2) const -{ - // - // PRECONDITIONS: - // - // A bug in gcc 3.2 (and maybe other versions as well) treats - // p1 as a null terminated string, for efficiency reasons - // we work around this elsewhere, but just assert here that - // we adhere to gcc's (buggy) preconditions... - // - BOOST_ASSERT(*p2 == 0); - // - // swallowing all exceptions here is a bad idea - // however at least one std lib will always throw - // std::bad_alloc for certain arguments... - // - string_type result, result2; -#if defined(_CPPLIB_VER) - // - // A bug in VC11 and 12 causes the program to hang if we pass a null-string - // to std::collate::transform, but only for certain locales :-( - // Probably effects Intel and Clang or any compiler using the VC std library (Dinkumware). - // - if(*p1 == 0) - { - return result; - } -#endif -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - result = this->m_pcollate->transform(p1, p2); - // - // Borland's STLPort version returns a NULL-terminated - // string that has garbage at the end - each call to - // std::collate::transform returns a different string! - // So as a workaround, we'll truncate the string at the first NULL - // which _seems_ to work.... -#if BOOST_WORKAROUND(__BORLANDC__, < 0x580) - result.erase(result.find(charT(0))); -#else - // - // some implementations (Dinkumware) append unnecessary trailing \0's: - while(result.size() && (charT(0) == *result.rbegin())) - result.erase(result.size() - 1); -#endif - // - // We may have NULL's used as separators between sections of the collate string, - // an example would be Boost.Locale. We have no way to detect this case via - // #defines since this can be used with any compiler/platform combination. - // Unfortunately our state machine (which was devised when all implementations - // used underlying C language API's) can't cope with that case. One workaround - // is to replace each character with 2, fortunately this code isn't used that - // much as this is now slower than before :-( - // - typedef typename make_unsigned::type uchar_type; - result2.reserve(result.size() * 2 + 2); - for(unsigned i = 0; i < result.size(); ++i) - { - if(static_cast(result[i]) == (std::numeric_limits::max)()) - { - result2.append(1, charT((std::numeric_limits::max)())).append(1, charT('b')); - } - else - { - result2.append(1, static_cast(1 + static_cast(result[i]))).append(1, charT('b') - 1); - } - } - BOOST_ASSERT(std::find(result2.begin(), result2.end(), charT(0)) == result2.end()); -#ifndef BOOST_NO_EXCEPTIONS - } - catch(...) - { - } -#endif - return result2; -} - - -template -typename cpp_regex_traits_implementation::string_type - cpp_regex_traits_implementation::lookup_collatename(const charT* p1, const charT* p2) const -{ - typedef typename std::map::const_iterator iter_type; - if(m_custom_collate_names.size()) - { - iter_type pos = m_custom_collate_names.find(string_type(p1, p2)); - if(pos != m_custom_collate_names.end()) - return pos->second; - } -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ - && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) - std::string name(p1, p2); -#else - std::string name; - const charT* p0 = p1; - while(p0 != p2) - name.append(1, char(*p0++)); -#endif - name = lookup_default_collate_name(name); -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ - && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) - if(name.size()) - return string_type(name.begin(), name.end()); -#else - if(name.size()) - { - string_type result; - typedef std::string::const_iterator iter; - iter b = name.begin(); - iter e = name.end(); - while(b != e) - result.append(1, charT(*b++)); - return result; - } -#endif - if(p2 - p1 == 1) - return string_type(1, *p1); - return string_type(); -} - -template -void cpp_regex_traits_implementation::init() -{ -#ifndef BOOST_NO_STD_MESSAGES -#ifndef __IBMCPP__ - typename std::messages::catalog cat = static_cast::catalog>(-1); -#else - typename std::messages::catalog cat = reinterpret_cast::catalog>(-1); -#endif - std::string cat_name(cpp_regex_traits::get_catalog_name()); - if(cat_name.size() && (this->m_pmessages != 0)) - { - cat = this->m_pmessages->open( - cat_name, - this->m_locale); - if((int)cat < 0) - { - std::string m("Unable to open message catalog: "); - std::runtime_error err(m + cat_name); - boost::BOOST_REGEX_DETAIL_NS::raise_runtime_error(err); - } - } - // - // if we have a valid catalog then load our messages: - // - if((int)cat >= 0) - { - // - // Error messages: - // - for(boost::regex_constants::error_type i = static_cast(0); - i <= boost::regex_constants::error_unknown; - i = static_cast(i + 1)) - { - const char* p = get_default_error_string(i); - string_type default_message; - while(*p) - { - default_message.append(1, this->m_pctype->widen(*p)); - ++p; - } - string_type s = this->m_pmessages->get(cat, 0, i+200, default_message); - std::string result; - for(std::string::size_type j = 0; j < s.size(); ++j) - { - result.append(1, this->m_pctype->narrow(s[j], 0)); - } - m_error_strings[i] = result; - } - // - // Custom class names: - // -#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET - static const char_class_type masks[16] = - { - static_cast(std::ctype::alnum), - static_cast(std::ctype::alpha), - static_cast(std::ctype::cntrl), - static_cast(std::ctype::digit), - static_cast(std::ctype::graph), - cpp_regex_traits_implementation::mask_horizontal, - static_cast(std::ctype::lower), - static_cast(std::ctype::print), - static_cast(std::ctype::punct), - static_cast(std::ctype::space), - static_cast(std::ctype::upper), - cpp_regex_traits_implementation::mask_vertical, - static_cast(std::ctype::xdigit), - cpp_regex_traits_implementation::mask_blank, - cpp_regex_traits_implementation::mask_word, - cpp_regex_traits_implementation::mask_unicode, - }; -#else - static const char_class_type masks[16] = - { - ::boost::BOOST_REGEX_DETAIL_NS::char_class_alnum, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_alpha, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_cntrl, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_digit, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_graph, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_horizontal_space, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_lower, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_print, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_punct, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_space, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_upper, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_vertical_space, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_xdigit, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_blank, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_word, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_unicode, - }; -#endif - static const string_type null_string; - for(unsigned int j = 0; j <= 13; ++j) - { - string_type s(this->m_pmessages->get(cat, 0, j+300, null_string)); - if(s.size()) - this->m_custom_class_names[s] = masks[j]; - } - } -#endif - // - // get the collation format used by m_pcollate: - // - m_collate_type = BOOST_REGEX_DETAIL_NS::find_sort_syntax(this, &m_collate_delim); -} - -template -typename cpp_regex_traits_implementation::char_class_type - cpp_regex_traits_implementation::lookup_classname_imp(const charT* p1, const charT* p2) const -{ -#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET - static const char_class_type masks[22] = - { - 0, - static_cast(std::ctype::alnum), - static_cast(std::ctype::alpha), - cpp_regex_traits_implementation::mask_blank, - static_cast(std::ctype::cntrl), - static_cast(std::ctype::digit), - static_cast(std::ctype::digit), - static_cast(std::ctype::graph), - cpp_regex_traits_implementation::mask_horizontal, - static_cast(std::ctype::lower), - static_cast(std::ctype::lower), - static_cast(std::ctype::print), - static_cast(std::ctype::punct), - static_cast(std::ctype::space), - static_cast(std::ctype::space), - static_cast(std::ctype::upper), - cpp_regex_traits_implementation::mask_unicode, - static_cast(std::ctype::upper), - cpp_regex_traits_implementation::mask_vertical, - static_cast(std::ctype::alnum) | cpp_regex_traits_implementation::mask_word, - static_cast(std::ctype::alnum) | cpp_regex_traits_implementation::mask_word, - static_cast(std::ctype::xdigit), - }; -#else - static const char_class_type masks[22] = - { - 0, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_alnum, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_alpha, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_blank, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_cntrl, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_digit, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_digit, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_graph, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_horizontal_space, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_lower, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_lower, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_print, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_punct, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_space, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_space, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_upper, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_unicode, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_upper, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_vertical_space, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_alnum | ::boost::BOOST_REGEX_DETAIL_NS::char_class_word, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_alnum | ::boost::BOOST_REGEX_DETAIL_NS::char_class_word, - ::boost::BOOST_REGEX_DETAIL_NS::char_class_xdigit, - }; -#endif - if(m_custom_class_names.size()) - { - typedef typename std::map, char_class_type>::const_iterator map_iter; - map_iter pos = m_custom_class_names.find(string_type(p1, p2)); - if(pos != m_custom_class_names.end()) - return pos->second; - } - std::size_t state_id = 1 + BOOST_REGEX_DETAIL_NS::get_default_class_id(p1, p2); - BOOST_ASSERT(state_id < sizeof(masks) / sizeof(masks[0])); - return masks[state_id]; -} - -#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET -template -bool cpp_regex_traits_implementation::isctype(const charT c, char_class_type mask) const -{ - return - ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_space) && (this->m_pctype->is(std::ctype::space, c))) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_print) && (this->m_pctype->is(std::ctype::print, c))) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_cntrl) && (this->m_pctype->is(std::ctype::cntrl, c))) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_upper) && (this->m_pctype->is(std::ctype::upper, c))) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_lower) && (this->m_pctype->is(std::ctype::lower, c))) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_alpha) && (this->m_pctype->is(std::ctype::alpha, c))) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_digit) && (this->m_pctype->is(std::ctype::digit, c))) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_punct) && (this->m_pctype->is(std::ctype::punct, c))) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_xdigit) && (this->m_pctype->is(std::ctype::xdigit, c))) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_blank) && (this->m_pctype->is(std::ctype::space, c)) && !::boost::BOOST_REGEX_DETAIL_NS::is_separator(c)) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_word) && (c == '_')) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_unicode) && ::boost::BOOST_REGEX_DETAIL_NS::is_extended(c)) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_vertical_space) && (is_separator(c) || (c == '\v'))) - || ((mask & ::boost::BOOST_REGEX_DETAIL_NS::char_class_horizontal_space) && this->m_pctype->is(std::ctype::space, c) && !(is_separator(c) || (c == '\v'))); -} -#endif - - -template -inline boost::shared_ptr > create_cpp_regex_traits(const std::locale& l) -{ - cpp_regex_traits_base key(l); - return ::boost::object_cache, cpp_regex_traits_implementation >::get(key, 5); -} - -} // BOOST_REGEX_DETAIL_NS - -template -class cpp_regex_traits -{ -private: - typedef std::ctype ctype_type; -public: - typedef charT char_type; - typedef std::size_t size_type; - typedef std::basic_string string_type; - typedef std::locale locale_type; - typedef boost::uint_least32_t char_class_type; - - struct boost_extensions_tag{}; - - cpp_regex_traits() - : m_pimpl(BOOST_REGEX_DETAIL_NS::create_cpp_regex_traits(std::locale())) - { } - static size_type length(const char_type* p) - { - return std::char_traits::length(p); - } - regex_constants::syntax_type syntax_type(charT c)const - { - return m_pimpl->syntax_type(c); - } - regex_constants::escape_syntax_type escape_syntax_type(charT c) const - { - return m_pimpl->escape_syntax_type(c); - } - charT translate(charT c) const - { - return c; - } - charT translate_nocase(charT c) const - { - return m_pimpl->m_pctype->tolower(c); - } - charT translate(charT c, bool icase) const - { - return icase ? m_pimpl->m_pctype->tolower(c) : c; - } - charT tolower(charT c) const - { - return m_pimpl->m_pctype->tolower(c); - } - charT toupper(charT c) const - { - return m_pimpl->m_pctype->toupper(c); - } - string_type transform(const charT* p1, const charT* p2) const - { - return m_pimpl->transform(p1, p2); - } - string_type transform_primary(const charT* p1, const charT* p2) const - { - return m_pimpl->transform_primary(p1, p2); - } - char_class_type lookup_classname(const charT* p1, const charT* p2) const - { - return m_pimpl->lookup_classname(p1, p2); - } - string_type lookup_collatename(const charT* p1, const charT* p2) const - { - return m_pimpl->lookup_collatename(p1, p2); - } - bool isctype(charT c, char_class_type f) const - { -#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET - typedef typename std::ctype::mask ctype_mask; - - static const ctype_mask mask_base = - static_cast( - std::ctype::alnum - | std::ctype::alpha - | std::ctype::cntrl - | std::ctype::digit - | std::ctype::graph - | std::ctype::lower - | std::ctype::print - | std::ctype::punct - | std::ctype::space - | std::ctype::upper - | std::ctype::xdigit); - - if((f & mask_base) - && (m_pimpl->m_pctype->is( - static_cast(f & mask_base), c))) - return true; - else if((f & BOOST_REGEX_DETAIL_NS::cpp_regex_traits_implementation::mask_unicode) && BOOST_REGEX_DETAIL_NS::is_extended(c)) - return true; - else if((f & BOOST_REGEX_DETAIL_NS::cpp_regex_traits_implementation::mask_word) && (c == '_')) - return true; - else if((f & BOOST_REGEX_DETAIL_NS::cpp_regex_traits_implementation::mask_blank) - && m_pimpl->m_pctype->is(std::ctype::space, c) - && !BOOST_REGEX_DETAIL_NS::is_separator(c)) - return true; - else if((f & BOOST_REGEX_DETAIL_NS::cpp_regex_traits_implementation::mask_vertical) - && (::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) || (c == '\v'))) - return true; - else if((f & BOOST_REGEX_DETAIL_NS::cpp_regex_traits_implementation::mask_horizontal) - && this->isctype(c, std::ctype::space) && !this->isctype(c, BOOST_REGEX_DETAIL_NS::cpp_regex_traits_implementation::mask_vertical)) - return true; -#ifdef __CYGWIN__ - // - // Cygwin has a buggy ctype facet, see https://www.cygwin.com/ml/cygwin/2012-08/msg00178.html: - // - else if((f & std::ctype::xdigit) == std::ctype::xdigit) - { - if((c >= 'a') && (c <= 'f')) - return true; - if((c >= 'A') && (c <= 'F')) - return true; - } -#endif - return false; -#else - return m_pimpl->isctype(c, f); -#endif - } - boost::intmax_t toi(const charT*& p1, const charT* p2, int radix)const; - int value(charT c, int radix)const - { - const charT* pc = &c; - return (int)toi(pc, pc + 1, radix); - } - locale_type imbue(locale_type l) - { - std::locale result(getloc()); - m_pimpl = BOOST_REGEX_DETAIL_NS::create_cpp_regex_traits(l); - return result; - } - locale_type getloc()const - { - return m_pimpl->m_locale; - } - std::string error_string(regex_constants::error_type n) const - { - return m_pimpl->error_string(n); - } - - // - // extension: - // set the name of the message catalog in use (defaults to "boost_regex"). - // - static std::string catalog_name(const std::string& name); - static std::string get_catalog_name(); - -private: - boost::shared_ptr > m_pimpl; - // - // catalog name handler: - // - static std::string& get_catalog_name_inst(); - -#ifdef BOOST_HAS_THREADS - static static_mutex& get_mutex_inst(); -#endif -}; - - -template -boost::intmax_t cpp_regex_traits::toi(const charT*& first, const charT* last, int radix)const -{ - BOOST_REGEX_DETAIL_NS::parser_buf sbuf; // buffer for parsing numbers. - std::basic_istream is(&sbuf); // stream for parsing numbers. - - // we do NOT want to parse any thousands separators inside the stream: - last = std::find(first, last, BOOST_USE_FACET(std::numpunct, is.getloc()).thousands_sep()); - - sbuf.pubsetbuf(const_cast(static_cast(first)), static_cast(last-first)); - is.clear(); - if(std::abs(radix) == 16) is >> std::hex; - else if(std::abs(radix) == 8) is >> std::oct; - else is >> std::dec; - boost::intmax_t val; - if(is >> val) - { - first = first + ((last - first) - sbuf.in_avail()); - return val; - } - else - return -1; -} - -template -std::string cpp_regex_traits::catalog_name(const std::string& name) -{ -#ifdef BOOST_HAS_THREADS - static_mutex::scoped_lock lk(get_mutex_inst()); -#endif - std::string result(get_catalog_name_inst()); - get_catalog_name_inst() = name; - return result; -} - -template -std::string& cpp_regex_traits::get_catalog_name_inst() -{ - static std::string s_name; - return s_name; -} - -template -std::string cpp_regex_traits::get_catalog_name() -{ -#ifdef BOOST_HAS_THREADS - static_mutex::scoped_lock lk(get_mutex_inst()); -#endif - std::string result(get_catalog_name_inst()); - return result; -} - -#ifdef BOOST_HAS_THREADS -template -static_mutex& cpp_regex_traits::get_mutex_inst() -{ - static static_mutex s_mutex = BOOST_STATIC_MUTEX_INIT; - return s_mutex; -} -#endif - - -} // boost - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - -#endif - - diff --git a/src/boost/boost/regex/v4/cregex.hpp b/src/boost/boost/regex/v4/cregex.hpp deleted file mode 100644 index 67a004525..000000000 --- a/src/boost/boost/regex/v4/cregex.hpp +++ /dev/null @@ -1,330 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE cregex.cpp - * VERSION see - * DESCRIPTION: Declares POSIX API functions - * + boost::RegEx high level wrapper. - */ - -#ifndef BOOST_RE_CREGEX_HPP_INCLUDED -#define BOOST_RE_CREGEX_HPP_INCLUDED - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif -#include -#include - -#ifdef __cplusplus -#include -#else -#include -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -/* include these defs only for POSIX compatablity */ -#ifdef __cplusplus -namespace boost{ -extern "C" { -#endif - -#if defined(__cplusplus) && !defined(BOOST_NO_STDC_NAMESPACE) -typedef std::ptrdiff_t regoff_t; -typedef std::size_t regsize_t; -#else -typedef ptrdiff_t regoff_t; -typedef size_t regsize_t; -#endif - -typedef struct -{ - unsigned int re_magic; -#ifdef __cplusplus - std::size_t re_nsub; /* number of parenthesized subexpressions */ -#else - size_t re_nsub; -#endif - const char* re_endp; /* end pointer for REG_PEND */ - void* guts; /* none of your business :-) */ - match_flag_type eflags; /* none of your business :-) */ -} regex_tA; - -#ifndef BOOST_NO_WREGEX -typedef struct -{ - unsigned int re_magic; -#ifdef __cplusplus - std::size_t re_nsub; /* number of parenthesized subexpressions */ -#else - size_t re_nsub; -#endif - const wchar_t* re_endp; /* end pointer for REG_PEND */ - void* guts; /* none of your business :-) */ - match_flag_type eflags; /* none of your business :-) */ -} regex_tW; -#endif - -typedef struct -{ - regoff_t rm_so; /* start of match */ - regoff_t rm_eo; /* end of match */ -} regmatch_t; - -/* regcomp() flags */ -typedef enum{ - REG_BASIC = 0000, - REG_EXTENDED = 0001, - REG_ICASE = 0002, - REG_NOSUB = 0004, - REG_NEWLINE = 0010, - REG_NOSPEC = 0020, - REG_PEND = 0040, - REG_DUMP = 0200, - REG_NOCOLLATE = 0400, - REG_ESCAPE_IN_LISTS = 01000, - REG_NEWLINE_ALT = 02000, - REG_PERLEX = 04000, - - REG_PERL = REG_EXTENDED | REG_NOCOLLATE | REG_ESCAPE_IN_LISTS | REG_PERLEX, - REG_AWK = REG_EXTENDED | REG_ESCAPE_IN_LISTS, - REG_GREP = REG_BASIC | REG_NEWLINE_ALT, - REG_EGREP = REG_EXTENDED | REG_NEWLINE_ALT, - - REG_ASSERT = 15, - REG_INVARG = 16, - REG_ATOI = 255, /* convert name to number (!) */ - REG_ITOA = 0400 /* convert number to name (!) */ -} reg_comp_flags; - -/* regexec() flags */ -typedef enum{ - REG_NOTBOL = 00001, - REG_NOTEOL = 00002, - REG_STARTEND = 00004 -} reg_exec_flags; - -/* - * POSIX error codes: - */ -typedef unsigned reg_error_t; -typedef reg_error_t reg_errcode_t; /* backwards compatibility */ - -static const reg_error_t REG_NOERROR = 0; /* Success. */ -static const reg_error_t REG_NOMATCH = 1; /* Didn't find a match (for regexec). */ - - /* POSIX regcomp return error codes. (In the order listed in the - standard.) */ -static const reg_error_t REG_BADPAT = 2; /* Invalid pattern. */ -static const reg_error_t REG_ECOLLATE = 3; /* Undefined collating element. */ -static const reg_error_t REG_ECTYPE = 4; /* Invalid character class name. */ -static const reg_error_t REG_EESCAPE = 5; /* Trailing backslash. */ -static const reg_error_t REG_ESUBREG = 6; /* Invalid back reference. */ -static const reg_error_t REG_EBRACK = 7; /* Unmatched left bracket. */ -static const reg_error_t REG_EPAREN = 8; /* Parenthesis imbalance. */ -static const reg_error_t REG_EBRACE = 9; /* Unmatched \{. */ -static const reg_error_t REG_BADBR = 10; /* Invalid contents of \{\}. */ -static const reg_error_t REG_ERANGE = 11; /* Invalid range end. */ -static const reg_error_t REG_ESPACE = 12; /* Ran out of memory. */ -static const reg_error_t REG_BADRPT = 13; /* No preceding re for repetition op. */ -static const reg_error_t REG_EEND = 14; /* unexpected end of expression */ -static const reg_error_t REG_ESIZE = 15; /* expression too big */ -static const reg_error_t REG_ERPAREN = 8; /* = REG_EPAREN : unmatched right parenthesis */ -static const reg_error_t REG_EMPTY = 17; /* empty expression */ -static const reg_error_t REG_E_MEMORY = 15; /* = REG_ESIZE : out of memory */ -static const reg_error_t REG_ECOMPLEXITY = 18; /* complexity too high */ -static const reg_error_t REG_ESTACK = 19; /* out of stack space */ -static const reg_error_t REG_E_PERL = 20; /* Perl (?...) error */ -static const reg_error_t REG_E_UNKNOWN = 21; /* unknown error */ -static const reg_error_t REG_ENOSYS = 21; /* = REG_E_UNKNOWN : Reserved. */ - -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompA(regex_tA*, const char*, int); -BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int, const regex_tA*, char*, regsize_t); -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecA(const regex_tA*, const char*, regsize_t, regmatch_t*, int); -BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeA(regex_tA*); - -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW*, const wchar_t*, int); -BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int, const regex_tW*, wchar_t*, regsize_t); -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecW(const regex_tW*, const wchar_t*, regsize_t, regmatch_t*, int); -BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeW(regex_tW*); -#endif - -#ifdef UNICODE -#define regcomp regcompW -#define regerror regerrorW -#define regexec regexecW -#define regfree regfreeW -#define regex_t regex_tW -#else -#define regcomp regcompA -#define regerror regerrorA -#define regexec regexecA -#define regfree regfreeA -#define regex_t regex_tA -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef __cplusplus -} /* extern "C" */ -} /* namespace */ -#endif - -#if defined(__cplusplus) -/* - * C++ high level wrapper goes here: - */ -#include -#include -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -class RegEx; - -namespace BOOST_REGEX_DETAIL_NS{ - -class RegExData; -struct pred1; -struct pred2; -struct pred3; -struct pred4; - -} /* namespace BOOST_REGEX_DETAIL_NS */ - -#if (defined(BOOST_MSVC) || defined(__BORLANDC__)) && !defined(BOOST_DISABLE_WIN32) -typedef bool (__cdecl *GrepCallback)(const RegEx& expression); -typedef bool (__cdecl *GrepFileCallback)(const char* file, const RegEx& expression); -typedef bool (__cdecl *FindFilesCallback)(const char* file); -#else -typedef bool (*GrepCallback)(const RegEx& expression); -typedef bool (*GrepFileCallback)(const char* file, const RegEx& expression); -typedef bool (*FindFilesCallback)(const char* file); -#endif - -class BOOST_REGEX_DECL RegEx -{ -private: - BOOST_REGEX_DETAIL_NS::RegExData* pdata; -public: - RegEx(); - RegEx(const RegEx& o); - ~RegEx(); - explicit RegEx(const char* c, bool icase = false); - explicit RegEx(const std::string& s, bool icase = false); - RegEx& operator=(const RegEx& o); - RegEx& operator=(const char* p); - RegEx& operator=(const std::string& s){ return this->operator=(s.c_str()); } - unsigned int SetExpression(const char* p, bool icase = false); - unsigned int SetExpression(const std::string& s, bool icase = false){ return SetExpression(s.c_str(), icase); } - std::string Expression()const; - unsigned int error_code()const; - /* - * now matching operators: - */ - bool Match(const char* p, match_flag_type flags = match_default); - bool Match(const std::string& s, match_flag_type flags = match_default) { return Match(s.c_str(), flags); } - bool Search(const char* p, match_flag_type flags = match_default); - bool Search(const std::string& s, match_flag_type flags = match_default) { return Search(s.c_str(), flags); } - unsigned int Grep(GrepCallback cb, const char* p, match_flag_type flags = match_default); - unsigned int Grep(GrepCallback cb, const std::string& s, match_flag_type flags = match_default) { return Grep(cb, s.c_str(), flags); } - unsigned int Grep(std::vector& v, const char* p, match_flag_type flags = match_default); - unsigned int Grep(std::vector& v, const std::string& s, match_flag_type flags = match_default) { return Grep(v, s.c_str(), flags); } - unsigned int Grep(std::vector& v, const char* p, match_flag_type flags = match_default); - unsigned int Grep(std::vector& v, const std::string& s, match_flag_type flags = match_default) { return Grep(v, s.c_str(), flags); } -#ifndef BOOST_REGEX_NO_FILEITER - unsigned int GrepFiles(GrepFileCallback cb, const char* files, bool recurse = false, match_flag_type flags = match_default); - unsigned int GrepFiles(GrepFileCallback cb, const std::string& files, bool recurse = false, match_flag_type flags = match_default) { return GrepFiles(cb, files.c_str(), recurse, flags); } - unsigned int FindFiles(FindFilesCallback cb, const char* files, bool recurse = false, match_flag_type flags = match_default); - unsigned int FindFiles(FindFilesCallback cb, const std::string& files, bool recurse = false, match_flag_type flags = match_default) { return FindFiles(cb, files.c_str(), recurse, flags); } -#endif - - std::string Merge(const std::string& in, const std::string& fmt, - bool copy = true, match_flag_type flags = match_default); - std::string Merge(const char* in, const char* fmt, - bool copy = true, match_flag_type flags = match_default); - - std::size_t Split(std::vector& v, std::string& s, match_flag_type flags = match_default, unsigned max_count = ~0); - /* - * now operators for returning what matched in more detail: - */ - std::size_t Position(int i = 0)const; - std::size_t Length(int i = 0)const; - bool Matched(int i = 0)const; - std::size_t Marks()const; - std::string What(int i = 0)const; - std::string operator[](int i)const { return What(i); } - - static const std::size_t npos; - - friend struct BOOST_REGEX_DETAIL_NS::pred1; - friend struct BOOST_REGEX_DETAIL_NS::pred2; - friend struct BOOST_REGEX_DETAIL_NS::pred3; - friend struct BOOST_REGEX_DETAIL_NS::pred4; -}; - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} /* namespace boost */ - -#endif /* __cplusplus */ - -#endif /* include guard */ - - - - - - - - - - diff --git a/src/boost/boost/regex/v4/error_type.hpp b/src/boost/boost/regex/v4/error_type.hpp deleted file mode 100644 index 397681c69..000000000 --- a/src/boost/boost/regex/v4/error_type.hpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - * Copyright (c) 2003-2005 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE error_type.hpp - * VERSION see - * DESCRIPTION: Declares regular expression error type enumerator. - */ - -#ifndef BOOST_REGEX_ERROR_TYPE_HPP -#define BOOST_REGEX_ERROR_TYPE_HPP - -#ifdef __cplusplus -namespace boost{ -#endif - -#ifdef __cplusplus -namespace regex_constants{ - -enum error_type{ - - error_ok = 0, /* not used */ - error_no_match = 1, /* not used */ - error_bad_pattern = 2, - error_collate = 3, - error_ctype = 4, - error_escape = 5, - error_backref = 6, - error_brack = 7, - error_paren = 8, - error_brace = 9, - error_badbrace = 10, - error_range = 11, - error_space = 12, - error_badrepeat = 13, - error_end = 14, /* not used */ - error_size = 15, - error_right_paren = 16, /* not used */ - error_empty = 17, - error_complexity = 18, - error_stack = 19, - error_perl_extension = 20, - error_unknown = 21 -}; - -} -} -#endif /* __cplusplus */ - -#endif diff --git a/src/boost/boost/regex/v4/fileiter.hpp b/src/boost/boost/regex/v4/fileiter.hpp deleted file mode 100644 index f1d97b3a2..000000000 --- a/src/boost/boost/regex/v4/fileiter.hpp +++ /dev/null @@ -1,452 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE fileiter.hpp - * VERSION see - * DESCRIPTION: Declares various platform independent file and - * directory iterators, plus binary file input in - * the form of class map_file. - */ - -#ifndef BOOST_RE_FILEITER_HPP_INCLUDED -#define BOOST_RE_FILEITER_HPP_INCLUDED - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif -#include - -#ifndef BOOST_REGEX_NO_FILEITER - -#if (defined(__CYGWIN__) || defined(__CYGWIN32__)) && !defined(BOOST_REGEX_NO_W32) -#error "Sorry, can't mix with STL code and gcc compiler: if you ran configure, try again with configure --disable-ms-windows" -#define BOOST_REGEX_FI_WIN32_MAP -#define BOOST_REGEX_FI_POSIX_DIR -#elif (defined(__WIN32__) || defined(_WIN32) || defined(WIN32)) && !defined(BOOST_REGEX_NO_W32) -#define BOOST_REGEX_FI_WIN32_MAP -#define BOOST_REGEX_FI_WIN32_DIR -#else -#define BOOST_REGEX_FI_POSIX_MAP -#define BOOST_REGEX_FI_POSIX_DIR -#endif - -#if defined(BOOST_REGEX_FI_WIN32_MAP)||defined(BOOST_REGEX_FI_WIN32_DIR) -#include -#endif - -#if defined(BOOST_REGEX_FI_WIN32_DIR) - -#include - -namespace boost{ - namespace BOOST_REGEX_DETAIL_NS{ - -#ifndef BOOST_NO_ANSI_APIS -typedef WIN32_FIND_DATAA _fi_find_data; -#else -typedef WIN32_FIND_DATAW _fi_find_data; -#endif -typedef HANDLE _fi_find_handle; - - } // namespace BOOST_REGEX_DETAIL_NS - -} // namespace boost - -#define _fi_invalid_handle INVALID_HANDLE_VALUE -#define _fi_dir FILE_ATTRIBUTE_DIRECTORY - -#elif defined(BOOST_REGEX_FI_POSIX_DIR) - -#include -#include -#include -#include -#include -#include -#include - -#if defined(__SUNPRO_CC) -using std::list; -#endif - -#ifndef MAX_PATH -#define MAX_PATH 256 -#endif - -namespace boost{ - namespace BOOST_REGEX_DETAIL_NS{ - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -struct _fi_find_data -{ - unsigned dwFileAttributes; - char cFileName[MAX_PATH]; -}; - -struct _fi_priv_data; - -typedef _fi_priv_data* _fi_find_handle; -#define _fi_invalid_handle 0 -#define _fi_dir 1 - -_fi_find_handle _fi_FindFirstFile(const char* lpFileName, _fi_find_data* lpFindFileData); -bool _fi_FindNextFile(_fi_find_handle hFindFile, _fi_find_data* lpFindFileData); -bool _fi_FindClose(_fi_find_handle hFindFile); - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - - } // namespace BOOST_REGEX_DETAIL_NS -} // namespace boost - -#ifdef FindFirstFile - #undef FindFirstFile -#endif -#ifdef FindNextFile - #undef FindNextFile -#endif -#ifdef FindClose - #undef FindClose -#endif - -#define FindFirstFileA _fi_FindFirstFile -#define FindNextFileA _fi_FindNextFile -#define FindClose _fi_FindClose - -#endif - -namespace boost{ - namespace BOOST_REGEX_DETAIL_NS{ - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifdef BOOST_REGEX_FI_WIN32_MAP // win32 mapfile - -class BOOST_REGEX_DECL mapfile -{ - HANDLE hfile; - HANDLE hmap; - const char* _first; - const char* _last; -public: - - typedef const char* iterator; - - mapfile(){ hfile = hmap = 0; _first = _last = 0; } - mapfile(const char* file){ hfile = hmap = 0; _first = _last = 0; open(file); } - ~mapfile(){ close(); } - void open(const char* file); - void close(); - const char* begin(){ return _first; } - const char* end(){ return _last; } - size_t size(){ return _last - _first; } - bool valid(){ return (hfile != 0) && (hfile != INVALID_HANDLE_VALUE); } -}; - - -#else - -class BOOST_REGEX_DECL mapfile_iterator; - -class BOOST_REGEX_DECL mapfile -{ - typedef char* pointer; - std::FILE* hfile; - long int _size; - pointer* _first; - pointer* _last; - mutable std::list condemed; - enum sizes - { - buf_size = 4096 - }; - void lock(pointer* node)const; - void unlock(pointer* node)const; -public: - - typedef mapfile_iterator iterator; - - mapfile(){ hfile = 0; _size = 0; _first = _last = 0; } - mapfile(const char* file){ hfile = 0; _size = 0; _first = _last = 0; open(file); } - ~mapfile(){ close(); } - void open(const char* file); - void close(); - iterator begin()const; - iterator end()const; - unsigned long size()const{ return _size; } - bool valid()const{ return hfile != 0; } - friend class mapfile_iterator; -}; - -class BOOST_REGEX_DECL mapfile_iterator -{ - typedef mapfile::pointer internal_pointer; - internal_pointer* node; - const mapfile* file; - unsigned long offset; - long position()const - { - return file ? ((node - file->_first) * mapfile::buf_size + offset) : 0; - } - void position(long pos) - { - if(file) - { - node = file->_first + (pos / mapfile::buf_size); - offset = pos % mapfile::buf_size; - } - } -public: - typedef std::ptrdiff_t difference_type; - typedef char value_type; - typedef const char* pointer; - typedef const char& reference; - typedef std::random_access_iterator_tag iterator_category; - - mapfile_iterator() { node = 0; file = 0; offset = 0; } - mapfile_iterator(const mapfile* f, long arg_position) - { - BOOST_ASSERT(f); - file = f; - node = f->_first + arg_position / mapfile::buf_size; - offset = arg_position % mapfile::buf_size; - file->lock(node); - } - mapfile_iterator(const mapfile_iterator& i) - { - file = i.file; - node = i.node; - offset = i.offset; - if(file) - file->lock(node); - } - ~mapfile_iterator() - { - if(file && node) - file->unlock(node); - } - mapfile_iterator& operator = (const mapfile_iterator& i); - char operator* ()const - { - BOOST_ASSERT(node >= file->_first); - BOOST_ASSERT(node < file->_last); - return file ? *(*node + sizeof(int) + offset) : char(0); - } - char operator[] (long off)const - { - mapfile_iterator tmp(*this); - tmp += off; - return *tmp; - } - mapfile_iterator& operator++ (); - mapfile_iterator operator++ (int); - mapfile_iterator& operator-- (); - mapfile_iterator operator-- (int); - - mapfile_iterator& operator += (long off) - { - position(position() + off); - return *this; - } - mapfile_iterator& operator -= (long off) - { - position(position() - off); - return *this; - } - - friend inline bool operator==(const mapfile_iterator& i, const mapfile_iterator& j) - { - return (i.file == j.file) && (i.node == j.node) && (i.offset == j.offset); - } - - friend inline bool operator!=(const mapfile_iterator& i, const mapfile_iterator& j) - { - return !(i == j); - } - - friend inline bool operator<(const mapfile_iterator& i, const mapfile_iterator& j) - { - return i.position() < j.position(); - } - friend inline bool operator>(const mapfile_iterator& i, const mapfile_iterator& j) - { - return i.position() > j.position(); - } - friend inline bool operator<=(const mapfile_iterator& i, const mapfile_iterator& j) - { - return i.position() <= j.position(); - } - friend inline bool operator>=(const mapfile_iterator& i, const mapfile_iterator& j) - { - return i.position() >= j.position(); - } - - friend mapfile_iterator operator + (const mapfile_iterator& i, long off); - friend mapfile_iterator operator + (long off, const mapfile_iterator& i) - { - mapfile_iterator tmp(i); - return tmp += off; - } - friend mapfile_iterator operator - (const mapfile_iterator& i, long off); - friend inline long operator - (const mapfile_iterator& i, const mapfile_iterator& j) - { - return i.position() - j.position(); - } -}; - -#endif - -// _fi_sep determines the directory separator, either '\\' or '/' -BOOST_REGEX_DECL extern const char* _fi_sep; - -struct file_iterator_ref -{ - _fi_find_handle hf; - _fi_find_data _data; - long count; -}; - - -class BOOST_REGEX_DECL file_iterator -{ - char* _root; - char* _path; - char* ptr; - file_iterator_ref* ref; - -public: - typedef std::ptrdiff_t difference_type; - typedef const char* value_type; - typedef const char** pointer; - typedef const char*& reference; - typedef std::input_iterator_tag iterator_category; - - file_iterator(); - file_iterator(const char* wild); - ~file_iterator(); - file_iterator(const file_iterator&); - file_iterator& operator=(const file_iterator&); - const char* root()const { return _root; } - const char* path()const { return _path; } - const char* name()const { return ptr; } - _fi_find_data* data() { return &(ref->_data); } - void next(); - file_iterator& operator++() { next(); return *this; } - file_iterator operator++(int); - const char* operator*() { return path(); } - - friend inline bool operator == (const file_iterator& f1, const file_iterator& f2) - { - return ((f1.ref->hf == _fi_invalid_handle) && (f2.ref->hf == _fi_invalid_handle)); - } - - friend inline bool operator != (const file_iterator& f1, const file_iterator& f2) - { - return !(f1 == f2); - } - -}; - -// dwa 9/13/00 - suppress unused parameter warning -inline bool operator < (const file_iterator&, const file_iterator&) -{ - return false; -} - - -class BOOST_REGEX_DECL directory_iterator -{ - char* _root; - char* _path; - char* ptr; - file_iterator_ref* ref; - -public: - typedef std::ptrdiff_t difference_type; - typedef const char* value_type; - typedef const char** pointer; - typedef const char*& reference; - typedef std::input_iterator_tag iterator_category; - - directory_iterator(); - directory_iterator(const char* wild); - ~directory_iterator(); - directory_iterator(const directory_iterator& other); - directory_iterator& operator=(const directory_iterator& other); - - const char* root()const { return _root; } - const char* path()const { return _path; } - const char* name()const { return ptr; } - _fi_find_data* data() { return &(ref->_data); } - void next(); - directory_iterator& operator++() { next(); return *this; } - directory_iterator operator++(int); - const char* operator*() { return path(); } - - static const char* separator() { return _fi_sep; } - - friend inline bool operator == (const directory_iterator& f1, const directory_iterator& f2) - { - return ((f1.ref->hf == _fi_invalid_handle) && (f2.ref->hf == _fi_invalid_handle)); - } - - - friend inline bool operator != (const directory_iterator& f1, const directory_iterator& f2) - { - return !(f1 == f2); - } - - }; - -inline bool operator < (const directory_iterator&, const directory_iterator&) -{ - return false; -} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - - -} // namespace BOOST_REGEX_DETAIL_NS -using boost::BOOST_REGEX_DETAIL_NS::directory_iterator; -using boost::BOOST_REGEX_DETAIL_NS::file_iterator; -using boost::BOOST_REGEX_DETAIL_NS::mapfile; -} // namespace boost - -#endif // BOOST_REGEX_NO_FILEITER -#endif // BOOST_RE_FILEITER_HPP - - - - - - - - - - - - - - - - - - diff --git a/src/boost/boost/regex/v4/instances.hpp b/src/boost/boost/regex/v4/instances.hpp deleted file mode 100644 index b99f95439..000000000 --- a/src/boost/boost/regex/v4/instances.hpp +++ /dev/null @@ -1,236 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE instances.cpp - * VERSION see - * DESCRIPTION: Defines those template instances that are placed in the - * library rather than in the users object files. - */ - -// -// note no include guard, we may include this multiple times: -// -#ifndef BOOST_REGEX_NO_EXTERNAL_TEMPLATES - -namespace boost{ - -// -// this header can be included multiple times, each time with -// a different character type, BOOST_REGEX_CHAR_T must be defined -// first: -// -#ifndef BOOST_REGEX_CHAR_T -# error "BOOST_REGEX_CHAR_T not defined" -#endif - -#ifndef BOOST_REGEX_TRAITS_T -# define BOOST_REGEX_TRAITS_T , boost::regex_traits -#endif - -// -// what follows is compiler specific: -// - -#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600) - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -# ifndef BOOST_REGEX_INSTANTIATE -# pragma option push -Jgx -# endif - -template class BOOST_REGEX_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >; -template class BOOST_REGEX_DECL match_results< const BOOST_REGEX_CHAR_T* >; -#ifndef BOOST_NO_STD_ALLOCATOR -template class BOOST_REGEX_DECL ::boost::BOOST_REGEX_DETAIL_NS::perl_matcher::allocator_type BOOST_REGEX_TRAITS_T >; -#endif - -# ifndef BOOST_REGEX_INSTANTIATE -# pragma option pop -# endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#elif defined(BOOST_MSVC) || defined(__ICL) - -# ifndef BOOST_REGEX_INSTANTIATE -# ifdef __GNUC__ -# define template __extension__ extern template -# else -# if BOOST_MSVC > 1310 -# define BOOST_REGEX_TEMPLATE_DECL -# endif -# define template extern template -# endif -# endif - -#ifndef BOOST_REGEX_TEMPLATE_DECL -# define BOOST_REGEX_TEMPLATE_DECL BOOST_REGEX_DECL -#endif - -# ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable : 4251) -#if BOOST_MSVC < 1700 -# pragma warning(disable : 4231) -#endif -# if BOOST_MSVC < 1600 -# pragma warning(disable : 4660) -# endif -# endif - -template class BOOST_REGEX_TEMPLATE_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >; - -template class BOOST_REGEX_TEMPLATE_DECL match_results< const BOOST_REGEX_CHAR_T* >; -#ifndef BOOST_NO_STD_ALLOCATOR -template class BOOST_REGEX_TEMPLATE_DECL ::boost::BOOST_REGEX_DETAIL_NS::perl_matcher::allocator_type BOOST_REGEX_TRAITS_T >; -#endif -#if !(defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB <= 1))\ - && !(defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 800))\ - && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))\ - && !defined(BOOST_REGEX_ICU_INSTANCES) -template class BOOST_REGEX_TEMPLATE_DECL match_results< std::basic_string::const_iterator >; -#ifndef BOOST_NO_STD_ALLOCATOR -template class BOOST_REGEX_TEMPLATE_DECL ::boost::BOOST_REGEX_DETAIL_NS::perl_matcher< std::basic_string::const_iterator, match_results< std::basic_string::const_iterator >::allocator_type, boost::regex_traits >; -#endif -#endif - - -# ifdef BOOST_MSVC -# pragma warning(pop) -# endif - -# ifdef template -# undef template -# endif - -#undef BOOST_REGEX_TEMPLATE_DECL - -#elif (defined(__GNUC__) && (__GNUC__ >= 3)) || !defined(BOOST_NO_CXX11_EXTERN_TEMPLATE) - -#if defined(__clang__) -# pragma clang diagnostic push -# if defined(__APPLE_CC__) -# if (__clang_major__ > 6) -# pragma clang diagnostic ignored "-Wkeyword-macro" -# endif -# else -# if (__clang_major__ > 3) || ((__clang_major__ == 3) && (__clang_minor__ > 5)) -# pragma clang diagnostic ignored "-Wkeyword-macro" -# endif -# endif -#endif - -# ifndef BOOST_REGEX_INSTANTIATE -# ifdef __GNUC__ -# define template __extension__ extern template -# else -# define template extern template -# endif -# endif - -#if !defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_REGEX_ICU_INSTANCES) -namespace BOOST_REGEX_DETAIL_NS{ -template BOOST_REGEX_DECL -std::locale cpp_regex_traits_base::imbue(const std::locale& l); - -template BOOST_REGEX_DECL -cpp_regex_traits_implementation::string_type - cpp_regex_traits_implementation::transform_primary(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const; -template BOOST_REGEX_DECL -cpp_regex_traits_implementation::string_type - cpp_regex_traits_implementation::transform(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const; -template BOOST_REGEX_DECL -cpp_regex_traits_implementation::string_type - cpp_regex_traits_implementation::lookup_collatename(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const; -template BOOST_REGEX_DECL -void cpp_regex_traits_implementation::init(); -template BOOST_REGEX_DECL -cpp_regex_traits_implementation::char_class_type - cpp_regex_traits_implementation::lookup_classname_imp(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const; -#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET -template BOOST_REGEX_DECL -bool cpp_regex_traits_implementation::isctype(const BOOST_REGEX_CHAR_T c, char_class_type mask) const; -#endif -} // namespace -template BOOST_REGEX_DECL -boost::intmax_t cpp_regex_traits::toi(const BOOST_REGEX_CHAR_T*& first, const BOOST_REGEX_CHAR_T* last, int radix)const; -template BOOST_REGEX_DECL -std::string cpp_regex_traits::catalog_name(const std::string& name); -template BOOST_REGEX_DECL -std::string& cpp_regex_traits::get_catalog_name_inst(); -template BOOST_REGEX_DECL -std::string cpp_regex_traits::get_catalog_name(); -#ifdef BOOST_HAS_THREADS -template BOOST_REGEX_DECL -static_mutex& cpp_regex_traits::get_mutex_inst(); -#endif -#endif - -template BOOST_REGEX_DECL basic_regex& - basic_regex::do_assign( - const BOOST_REGEX_CHAR_T* p1, - const BOOST_REGEX_CHAR_T* p2, - flag_type f); -template BOOST_REGEX_DECL basic_regex::locale_type BOOST_REGEX_CALL - basic_regex::imbue(locale_type l); - -template BOOST_REGEX_DECL void BOOST_REGEX_CALL - match_results::maybe_assign( - const match_results& m); - -namespace BOOST_REGEX_DETAIL_NS{ -template BOOST_REGEX_DECL void perl_matcher::allocator_type BOOST_REGEX_TRAITS_T >::construct_init( - const basic_regex& e, match_flag_type f); -template BOOST_REGEX_DECL bool perl_matcher::allocator_type BOOST_REGEX_TRAITS_T >::match(); -template BOOST_REGEX_DECL bool perl_matcher::allocator_type BOOST_REGEX_TRAITS_T >::find(); -} // namespace - -#if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) \ - && !defined(BOOST_REGEX_ICU_INSTANCES)\ - && !defined(__SGI_STL_PORT)\ - && !defined(_STLPORT_VERSION) -// std:basic_string<>::const_iterator instances as well: -template BOOST_REGEX_DECL void BOOST_REGEX_CALL - match_results::const_iterator>::maybe_assign( - const match_results::const_iterator>& m); - -namespace BOOST_REGEX_DETAIL_NS{ -template BOOST_REGEX_DECL void perl_matcher::const_iterator, match_results< std::basic_string::const_iterator >::allocator_type, boost::regex_traits >::construct_init( - const basic_regex& e, match_flag_type f); -template BOOST_REGEX_DECL bool perl_matcher::const_iterator, match_results< std::basic_string::const_iterator >::allocator_type, boost::regex_traits >::match(); -template BOOST_REGEX_DECL bool perl_matcher::const_iterator, match_results< std::basic_string::const_iterator >::allocator_type, boost::regex_traits >::find(); -} // namespace -#endif - -# ifdef template -# undef template -# endif - -#ifdef __clang__ -#pragma clang diagnostic pop -#endif -#endif - -} // namespace boost - -#endif // BOOST_REGEX_NO_EXTERNAL_TEMPLATES - - - - - diff --git a/src/boost/boost/regex/v4/iterator_category.hpp b/src/boost/boost/regex/v4/iterator_category.hpp deleted file mode 100644 index f428330d1..000000000 --- a/src/boost/boost/regex/v4/iterator_category.hpp +++ /dev/null @@ -1,91 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_match.hpp - * VERSION see - * DESCRIPTION: Iterator traits for selecting an iterator type as - * an integral constant expression. - */ - - -#ifndef BOOST_REGEX_ITERATOR_CATEGORY_HPP -#define BOOST_REGEX_ITERATOR_CATEGORY_HPP - -#include -#include -#include - -namespace boost{ -namespace detail{ - -template -struct is_random_imp -{ -#ifndef BOOST_NO_STD_ITERATOR_TRAITS -private: - typedef typename std::iterator_traits::iterator_category cat; -public: - BOOST_STATIC_CONSTANT(bool, value = (::boost::is_convertible::value)); -#else - BOOST_STATIC_CONSTANT(bool, value = false); -#endif -}; - -template -struct is_random_pointer_imp -{ - BOOST_STATIC_CONSTANT(bool, value = true); -}; - -template -struct is_random_imp_selector -{ - template - struct rebind - { - typedef is_random_imp type; - }; -}; - -template <> -struct is_random_imp_selector -{ - template - struct rebind - { - typedef is_random_pointer_imp type; - }; -}; - -} - -template -struct is_random_access_iterator -{ -private: - typedef detail::is_random_imp_selector< ::boost::is_pointer::value> selector; - typedef typename selector::template rebind bound_type; - typedef typename bound_type::type answer; -public: - BOOST_STATIC_CONSTANT(bool, value = answer::value); -}; - -#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template -const bool is_random_access_iterator::value; -#endif - -} - -#endif - diff --git a/src/boost/boost/regex/v4/iterator_traits.hpp b/src/boost/boost/regex/v4/iterator_traits.hpp deleted file mode 100644 index 9a1145cb9..000000000 --- a/src/boost/boost/regex/v4/iterator_traits.hpp +++ /dev/null @@ -1,135 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE iterator_traits.cpp - * VERSION see - * DESCRIPTION: Declares iterator traits workarounds. - */ - -#ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP -#define BOOST_REGEX_V4_ITERATOR_TRAITS_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -namespace BOOST_REGEX_DETAIL_NS{ - -#if defined(BOOST_NO_STD_ITERATOR_TRAITS) - -template -struct regex_iterator_traits -{ - typedef typename T::iterator_category iterator_category; - typedef typename T::value_type value_type; -#if !defined(BOOST_NO_STD_ITERATOR) - typedef typename T::difference_type difference_type; - typedef typename T::pointer pointer; - typedef typename T::reference reference; -#else - typedef std::ptrdiff_t difference_type; - typedef value_type* pointer; - typedef value_type& reference; -#endif -}; - -template -struct pointer_iterator_traits -{ - typedef std::ptrdiff_t difference_type; - typedef T value_type; - typedef T* pointer; - typedef T& reference; - typedef std::random_access_iterator_tag iterator_category; -}; -template -struct const_pointer_iterator_traits -{ - typedef std::ptrdiff_t difference_type; - typedef T value_type; - typedef const T* pointer; - typedef const T& reference; - typedef std::random_access_iterator_tag iterator_category; -}; - -template<> -struct regex_iterator_traits : pointer_iterator_traits{}; -template<> -struct regex_iterator_traits : const_pointer_iterator_traits{}; -template<> -struct regex_iterator_traits : pointer_iterator_traits{}; -template<> -struct regex_iterator_traits : const_pointer_iterator_traits{}; -// -// the follwoing are needed for ICU support: -// -template<> -struct regex_iterator_traits : pointer_iterator_traits{}; -template<> -struct regex_iterator_traits : const_pointer_iterator_traits{}; -template<> -struct regex_iterator_traits : pointer_iterator_traits{}; -template<> -struct regex_iterator_traits : const_pointer_iterator_traits{}; - -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -template<> -struct regex_iterator_traits : pointer_iterator_traits{}; -template<> -struct regex_iterator_traits : const_pointer_iterator_traits{}; -#endif - -#if defined(__SGI_STL_PORT) && defined(__STL_DEBUG) -template<> -struct regex_iterator_traits : pointer_iterator_traits{}; -template<> -struct regex_iterator_traits : const_pointer_iterator_traits{}; -#ifndef BOOST_NO_STD_WSTRING -template<> -struct regex_iterator_traits : pointer_iterator_traits{}; -template<> -struct regex_iterator_traits : const_pointer_iterator_traits{}; -#endif // BOOST_NO_WSTRING -#endif // stport - -#else - -template -struct regex_iterator_traits : public std::iterator_traits {}; - -#endif - -} // namespace BOOST_REGEX_DETAIL_NS -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/src/boost/boost/regex/v4/match_flags.hpp b/src/boost/boost/regex/v4/match_flags.hpp deleted file mode 100644 index 043a71904..000000000 --- a/src/boost/boost/regex/v4/match_flags.hpp +++ /dev/null @@ -1,149 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE match_flags.hpp - * VERSION see - * DESCRIPTION: Declares match_flags type. - */ - -#ifndef BOOST_REGEX_V4_MATCH_FLAGS -#define BOOST_REGEX_V4_MATCH_FLAGS - -#ifdef __cplusplus -# include -#endif - -#ifdef __cplusplus -namespace boost{ - namespace regex_constants{ -#endif - -typedef enum _match_flags -{ - match_default = 0, - match_not_bol = 1, /* first is not start of line */ - match_not_eol = match_not_bol << 1, /* last is not end of line */ - match_not_bob = match_not_eol << 1, /* first is not start of buffer */ - match_not_eob = match_not_bob << 1, /* last is not end of buffer */ - match_not_bow = match_not_eob << 1, /* first is not start of word */ - match_not_eow = match_not_bow << 1, /* last is not end of word */ - match_not_dot_newline = match_not_eow << 1, /* \n is not matched by '.' */ - match_not_dot_null = match_not_dot_newline << 1, /* '\0' is not matched by '.' */ - match_prev_avail = match_not_dot_null << 1, /* *--first is a valid expression */ - match_init = match_prev_avail << 1, /* internal use */ - match_any = match_init << 1, /* don't care what we match */ - match_not_null = match_any << 1, /* string can't be null */ - match_continuous = match_not_null << 1, /* each grep match must continue from */ - /* uninterupted from the previous one */ - match_partial = match_continuous << 1, /* find partial matches */ - - match_stop = match_partial << 1, /* stop after first match (grep) V3 only */ - match_not_initial_null = match_stop, /* don't match initial null, V4 only */ - match_all = match_stop << 1, /* must find the whole of input even if match_any is set */ - match_perl = match_all << 1, /* Use perl matching rules */ - match_posix = match_perl << 1, /* Use POSIX matching rules */ - match_nosubs = match_posix << 1, /* don't trap marked subs */ - match_extra = match_nosubs << 1, /* include full capture information for repeated captures */ - match_single_line = match_extra << 1, /* treat text as single line and ignor any \n's when matching ^ and $. */ - match_unused1 = match_single_line << 1, /* unused */ - match_unused2 = match_unused1 << 1, /* unused */ - match_unused3 = match_unused2 << 1, /* unused */ - match_max = match_unused3, - - format_perl = 0, /* perl style replacement */ - format_default = 0, /* ditto. */ - format_sed = match_max << 1, /* sed style replacement. */ - format_all = format_sed << 1, /* enable all extentions to sytax. */ - format_no_copy = format_all << 1, /* don't copy non-matching segments. */ - format_first_only = format_no_copy << 1, /* Only replace first occurance. */ - format_is_if = format_first_only << 1, /* internal use only. */ - format_literal = format_is_if << 1, /* treat string as a literal */ - - match_not_any = match_not_bol | match_not_eol | match_not_bob - | match_not_eob | match_not_bow | match_not_eow | match_not_dot_newline - | match_not_dot_null | match_prev_avail | match_init | match_not_null - | match_continuous | match_partial | match_stop | match_not_initial_null - | match_stop | match_all | match_perl | match_posix | match_nosubs - | match_extra | match_single_line | match_unused1 | match_unused2 - | match_unused3 | match_max | format_perl | format_default | format_sed - | format_all | format_no_copy | format_first_only | format_is_if - | format_literal - - -} match_flags; - -#if defined(__BORLANDC__) || (defined(_MSC_VER) && (_MSC_VER <= 1310)) -typedef unsigned long match_flag_type; -#else -typedef match_flags match_flag_type; - - -#ifdef __cplusplus -inline match_flags operator&(match_flags m1, match_flags m2) -{ return static_cast(static_cast(m1) & static_cast(m2)); } -inline match_flags operator|(match_flags m1, match_flags m2) -{ return static_cast(static_cast(m1) | static_cast(m2)); } -inline match_flags operator^(match_flags m1, match_flags m2) -{ return static_cast(static_cast(m1) ^ static_cast(m2)); } -inline match_flags operator~(match_flags m1) -{ return static_cast(~static_cast(m1)); } -inline match_flags& operator&=(match_flags& m1, match_flags m2) -{ m1 = m1&m2; return m1; } -inline match_flags& operator|=(match_flags& m1, match_flags m2) -{ m1 = m1|m2; return m1; } -inline match_flags& operator^=(match_flags& m1, match_flags m2) -{ m1 = m1^m2; return m1; } -#endif -#endif - -#ifdef __cplusplus -} /* namespace regex_constants */ -/* - * import names into boost for backwards compatiblity: - */ -using regex_constants::match_flag_type; -using regex_constants::match_default; -using regex_constants::match_not_bol; -using regex_constants::match_not_eol; -using regex_constants::match_not_bob; -using regex_constants::match_not_eob; -using regex_constants::match_not_bow; -using regex_constants::match_not_eow; -using regex_constants::match_not_dot_newline; -using regex_constants::match_not_dot_null; -using regex_constants::match_prev_avail; -/* using regex_constants::match_init; */ -using regex_constants::match_any; -using regex_constants::match_not_null; -using regex_constants::match_continuous; -using regex_constants::match_partial; -/*using regex_constants::match_stop; */ -using regex_constants::match_all; -using regex_constants::match_perl; -using regex_constants::match_posix; -using regex_constants::match_nosubs; -using regex_constants::match_extra; -using regex_constants::match_single_line; -/*using regex_constants::match_max; */ -using regex_constants::format_all; -using regex_constants::format_sed; -using regex_constants::format_perl; -using regex_constants::format_default; -using regex_constants::format_no_copy; -using regex_constants::format_first_only; -/*using regex_constants::format_is_if;*/ - -} /* namespace boost */ -#endif /* __cplusplus */ -#endif /* include guard */ - diff --git a/src/boost/boost/regex/v4/match_results.hpp b/src/boost/boost/regex/v4/match_results.hpp deleted file mode 100644 index 692c1b81a..000000000 --- a/src/boost/boost/regex/v4/match_results.hpp +++ /dev/null @@ -1,716 +0,0 @@ -/* - * - * Copyright (c) 1998-2009 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE match_results.cpp - * VERSION see - * DESCRIPTION: Declares template class match_results. - */ - -#ifndef BOOST_REGEX_V4_MATCH_RESULTS_HPP -#define BOOST_REGEX_V4_MATCH_RESULTS_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable : 4251) -#if BOOST_MSVC < 1700 -# pragma warning(disable : 4231) -#endif -# if BOOST_MSVC < 1600 -# pragma warning(disable : 4660) -# endif -#endif - -namespace BOOST_REGEX_DETAIL_NS{ - -class named_subexpressions; - -} - -template -class match_results -{ -private: -#ifndef BOOST_NO_STD_ALLOCATOR - typedef std::vector, Allocator> vector_type; -#else - typedef std::vector > vector_type; -#endif -public: - typedef sub_match value_type; -#ifndef BOOST_NO_CXX11_ALLOCATOR - typedef typename std::allocator_traits::value_type const & const_reference; -#elif !defined(BOOST_NO_STD_ALLOCATOR) && !(defined(BOOST_MSVC) && defined(_STLPORT_VERSION)) - typedef typename Allocator::const_reference const_reference; -#else - typedef const value_type& const_reference; -#endif - typedef const_reference reference; - typedef typename vector_type::const_iterator const_iterator; - typedef const_iterator iterator; - typedef typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits< - BidiIterator>::difference_type difference_type; -#ifdef BOOST_NO_CXX11_ALLOCATOR - typedef typename Allocator::size_type size_type; -#else - typedef typename std::allocator_traits::size_type size_type; -#endif - typedef Allocator allocator_type; - typedef typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits< - BidiIterator>::value_type char_type; - typedef std::basic_string string_type; - typedef BOOST_REGEX_DETAIL_NS::named_subexpressions named_sub_type; - - // construct/copy/destroy: - explicit match_results(const Allocator& a = Allocator()) -#ifndef BOOST_NO_STD_ALLOCATOR - : m_subs(a), m_base(), m_null(), m_last_closed_paren(0), m_is_singular(true) {} -#else - : m_subs(), m_base(), m_null(), m_last_closed_paren(0), m_is_singular(true) { (void)a; } -#endif - // - // IMPORTANT: in the code below, the crazy looking checks around m_is_singular are - // all required because it is illegal to copy a singular iterator. - // See https://svn.boost.org/trac/boost/ticket/3632. - // - match_results(const match_results& m) - : m_subs(m.m_subs), m_named_subs(m.m_named_subs), m_last_closed_paren(m.m_last_closed_paren), m_is_singular(m.m_is_singular) - { - if(!m_is_singular) - { - m_base = m.m_base; - m_null = m.m_null; - } - } - match_results& operator=(const match_results& m) - { - m_subs = m.m_subs; - m_named_subs = m.m_named_subs; - m_last_closed_paren = m.m_last_closed_paren; - m_is_singular = m.m_is_singular; - if(!m_is_singular) - { - m_base = m.m_base; - m_null = m.m_null; - } - return *this; - } - ~match_results(){} - - // size: - size_type size() const - { return empty() ? 0 : m_subs.size() - 2; } - size_type max_size() const - { return m_subs.max_size(); } - bool empty() const - { return m_subs.size() < 2; } - // element access: - difference_type length(int sub = 0) const - { - if(m_is_singular) - raise_logic_error(); - sub += 2; - if((sub < (int)m_subs.size()) && (sub > 0)) - return m_subs[sub].length(); - return 0; - } - difference_type length(const char_type* sub) const - { - if(m_is_singular) - raise_logic_error(); - const char_type* sub_end = sub; - while(*sub_end) ++sub_end; - return length(named_subexpression_index(sub, sub_end)); - } - template - difference_type length(const charT* sub) const - { - if(m_is_singular) - raise_logic_error(); - const charT* sub_end = sub; - while(*sub_end) ++sub_end; - return length(named_subexpression_index(sub, sub_end)); - } - template - difference_type length(const std::basic_string& sub) const - { - return length(sub.c_str()); - } - difference_type position(size_type sub = 0) const - { - if(m_is_singular) - raise_logic_error(); - sub += 2; - if(sub < m_subs.size()) - { - const sub_match& s = m_subs[sub]; - if(s.matched || (sub == 2)) - { - return ::boost::BOOST_REGEX_DETAIL_NS::distance((BidiIterator)(m_base), (BidiIterator)(s.first)); - } - } - return ~static_cast(0); - } - difference_type position(const char_type* sub) const - { - const char_type* sub_end = sub; - while(*sub_end) ++sub_end; - return position(named_subexpression_index(sub, sub_end)); - } - template - difference_type position(const charT* sub) const - { - const charT* sub_end = sub; - while(*sub_end) ++sub_end; - return position(named_subexpression_index(sub, sub_end)); - } - template - difference_type position(const std::basic_string& sub) const - { - return position(sub.c_str()); - } - string_type str(int sub = 0) const - { - if(m_is_singular) - raise_logic_error(); - sub += 2; - string_type result; - if(sub < (int)m_subs.size() && (sub > 0)) - { - const sub_match& s = m_subs[sub]; - if(s.matched) - { - result = s.str(); - } - } - return result; - } - string_type str(const char_type* sub) const - { - return (*this)[sub].str(); - } - template - string_type str(const std::basic_string& sub) const - { - return (*this)[sub].str(); - } - template - string_type str(const charT* sub) const - { - return (*this)[sub].str(); - } - template - string_type str(const std::basic_string& sub) const - { - return (*this)[sub].str(); - } - const_reference operator[](int sub) const - { - if(m_is_singular && m_subs.empty()) - raise_logic_error(); - sub += 2; - if(sub < (int)m_subs.size() && (sub >= 0)) - { - return m_subs[sub]; - } - return m_null; - } - // - // Named sub-expressions: - // - const_reference named_subexpression(const char_type* i, const char_type* j) const - { - // - // Scan for the leftmost *matched* subexpression with the specified named: - // - if(m_is_singular) - raise_logic_error(); - BOOST_REGEX_DETAIL_NS::named_subexpressions::range_type r = m_named_subs->equal_range(i, j); - while((r.first != r.second) && ((*this)[r.first->index].matched == false)) - ++r.first; - return r.first != r.second ? (*this)[r.first->index] : m_null; - } - template - const_reference named_subexpression(const charT* i, const charT* j) const - { - BOOST_STATIC_ASSERT(sizeof(charT) <= sizeof(char_type)); - if(i == j) - return m_null; - std::vector s; - while(i != j) - s.insert(s.end(), *i++); - return named_subexpression(&*s.begin(), &*s.begin() + s.size()); - } - int named_subexpression_index(const char_type* i, const char_type* j) const - { - // - // Scan for the leftmost *matched* subexpression with the specified named. - // If none found then return the leftmost expression with that name, - // otherwise an invalid index: - // - if(m_is_singular) - raise_logic_error(); - BOOST_REGEX_DETAIL_NS::named_subexpressions::range_type s, r; - s = r = m_named_subs->equal_range(i, j); - while((r.first != r.second) && ((*this)[r.first->index].matched == false)) - ++r.first; - if(r.first == r.second) - r = s; - return r.first != r.second ? r.first->index : -20; - } - template - int named_subexpression_index(const charT* i, const charT* j) const - { - BOOST_STATIC_ASSERT(sizeof(charT) <= sizeof(char_type)); - if(i == j) - return -20; - std::vector s; - while(i != j) - s.insert(s.end(), *i++); - return named_subexpression_index(&*s.begin(), &*s.begin() + s.size()); - } - template - const_reference operator[](const std::basic_string& s) const - { - return named_subexpression(s.c_str(), s.c_str() + s.size()); - } - const_reference operator[](const char_type* p) const - { - const char_type* e = p; - while(*e) ++e; - return named_subexpression(p, e); - } - - template - const_reference operator[](const charT* p) const - { - BOOST_STATIC_ASSERT(sizeof(charT) <= sizeof(char_type)); - if(*p == 0) - return m_null; - std::vector s; - while(*p) - s.insert(s.end(), *p++); - return named_subexpression(&*s.begin(), &*s.begin() + s.size()); - } - template - const_reference operator[](const std::basic_string& ns) const - { - BOOST_STATIC_ASSERT(sizeof(charT) <= sizeof(char_type)); - if(ns.empty()) - return m_null; - std::vector s; - for(unsigned i = 0; i < ns.size(); ++i) - s.insert(s.end(), ns[i]); - return named_subexpression(&*s.begin(), &*s.begin() + s.size()); - } - - const_reference prefix() const - { - if(m_is_singular) - raise_logic_error(); - return (*this)[-1]; - } - - const_reference suffix() const - { - if(m_is_singular) - raise_logic_error(); - return (*this)[-2]; - } - const_iterator begin() const - { - return (m_subs.size() > 2) ? (m_subs.begin() + 2) : m_subs.end(); - } - const_iterator end() const - { - return m_subs.end(); - } - // format: - template - OutputIterator format(OutputIterator out, - Functor fmt, - match_flag_type flags = format_default) const - { - if(m_is_singular) - raise_logic_error(); - typedef typename BOOST_REGEX_DETAIL_NS::compute_functor_type, OutputIterator>::type F; - F func(fmt); - return func(*this, out, flags); - } - template - string_type format(Functor fmt, match_flag_type flags = format_default) const - { - if(m_is_singular) - raise_logic_error(); - std::basic_string result; - BOOST_REGEX_DETAIL_NS::string_out_iterator > i(result); - - typedef typename BOOST_REGEX_DETAIL_NS::compute_functor_type, BOOST_REGEX_DETAIL_NS::string_out_iterator > >::type F; - F func(fmt); - - func(*this, i, flags); - return result; - } - // format with locale: - template - OutputIterator format(OutputIterator out, - Functor fmt, - match_flag_type flags, - const RegexT& re) const - { - if(m_is_singular) - raise_logic_error(); - typedef ::boost::regex_traits_wrapper traits_type; - typedef typename BOOST_REGEX_DETAIL_NS::compute_functor_type, OutputIterator, traits_type>::type F; - F func(fmt); - return func(*this, out, flags, re.get_traits()); - } - template - string_type format(Functor fmt, - match_flag_type flags, - const RegexT& re) const - { - if(m_is_singular) - raise_logic_error(); - typedef ::boost::regex_traits_wrapper traits_type; - std::basic_string result; - BOOST_REGEX_DETAIL_NS::string_out_iterator > i(result); - - typedef typename BOOST_REGEX_DETAIL_NS::compute_functor_type, BOOST_REGEX_DETAIL_NS::string_out_iterator >, traits_type >::type F; - F func(fmt); - - func(*this, i, flags, re.get_traits()); - return result; - } - - const_reference get_last_closed_paren()const - { - if(m_is_singular) - raise_logic_error(); - return m_last_closed_paren == 0 ? m_null : (*this)[m_last_closed_paren]; - } - - allocator_type get_allocator() const - { -#ifndef BOOST_NO_STD_ALLOCATOR - return m_subs.get_allocator(); -#else - return allocator_type(); -#endif - } - void swap(match_results& that) - { - std::swap(m_subs, that.m_subs); - std::swap(m_named_subs, that.m_named_subs); - std::swap(m_last_closed_paren, that.m_last_closed_paren); - if(m_is_singular) - { - if(!that.m_is_singular) - { - m_base = that.m_base; - m_null = that.m_null; - } - } - else if(that.m_is_singular) - { - that.m_base = m_base; - that.m_null = m_null; - } - else - { - std::swap(m_base, that.m_base); - std::swap(m_null, that.m_null); - } - std::swap(m_is_singular, that.m_is_singular); - } - bool operator==(const match_results& that)const - { - if(m_is_singular) - { - return that.m_is_singular; - } - else if(that.m_is_singular) - { - return false; - } - return (m_subs == that.m_subs) && (m_base == that.m_base) && (m_last_closed_paren == that.m_last_closed_paren); - } - bool operator!=(const match_results& that)const - { return !(*this == that); } - -#ifdef BOOST_REGEX_MATCH_EXTRA - typedef typename sub_match::capture_sequence_type capture_sequence_type; - - const capture_sequence_type& captures(int i)const - { - if(m_is_singular) - raise_logic_error(); - return (*this)[i].captures(); - } -#endif - - // - // private access functions: - void BOOST_REGEX_CALL set_second(BidiIterator i) - { - BOOST_ASSERT(m_subs.size() > 2); - m_subs[2].second = i; - m_subs[2].matched = true; - m_subs[0].first = i; - m_subs[0].matched = (m_subs[0].first != m_subs[0].second); - m_null.first = i; - m_null.second = i; - m_null.matched = false; - m_is_singular = false; - } - - void BOOST_REGEX_CALL set_second(BidiIterator i, size_type pos, bool m = true, bool escape_k = false) - { - if(pos) - m_last_closed_paren = static_cast(pos); - pos += 2; - BOOST_ASSERT(m_subs.size() > pos); - m_subs[pos].second = i; - m_subs[pos].matched = m; - if((pos == 2) && !escape_k) - { - m_subs[0].first = i; - m_subs[0].matched = (m_subs[0].first != m_subs[0].second); - m_null.first = i; - m_null.second = i; - m_null.matched = false; - m_is_singular = false; - } - } - void BOOST_REGEX_CALL set_size(size_type n, BidiIterator i, BidiIterator j) - { - value_type v(j); - size_type len = m_subs.size(); - if(len > n + 2) - { - m_subs.erase(m_subs.begin()+n+2, m_subs.end()); - std::fill(m_subs.begin(), m_subs.end(), v); - } - else - { - std::fill(m_subs.begin(), m_subs.end(), v); - if(n+2 != len) - m_subs.insert(m_subs.end(), n+2-len, v); - } - m_subs[1].first = i; - m_last_closed_paren = 0; - } - void BOOST_REGEX_CALL set_base(BidiIterator pos) - { - m_base = pos; - } - BidiIterator base()const - { - return m_base; - } - void BOOST_REGEX_CALL set_first(BidiIterator i) - { - BOOST_ASSERT(m_subs.size() > 2); - // set up prefix: - m_subs[1].second = i; - m_subs[1].matched = (m_subs[1].first != i); - // set up $0: - m_subs[2].first = i; - // zero out everything else: - for(size_type n = 3; n < m_subs.size(); ++n) - { - m_subs[n].first = m_subs[n].second = m_subs[0].second; - m_subs[n].matched = false; - } - } - void BOOST_REGEX_CALL set_first(BidiIterator i, size_type pos, bool escape_k = false) - { - BOOST_ASSERT(pos+2 < m_subs.size()); - if(pos || escape_k) - { - m_subs[pos+2].first = i; - if(escape_k) - { - m_subs[1].second = i; - m_subs[1].matched = (m_subs[1].first != m_subs[1].second); - } - } - else - set_first(i); - } - void BOOST_REGEX_CALL maybe_assign(const match_results& m); - - void BOOST_REGEX_CALL set_named_subs(boost::shared_ptr subs) - { - m_named_subs = subs; - } - -private: - // - // Error handler called when an uninitialized match_results is accessed: - // - static void raise_logic_error() - { - std::logic_error e("Attempt to access an uninitialized boost::match_results<> class."); - boost::throw_exception(e); - } - - - vector_type m_subs; // subexpressions - BidiIterator m_base; // where the search started from - sub_match m_null; // a null match - boost::shared_ptr m_named_subs; // Shared copy of named subs in the regex object - int m_last_closed_paren; // Last ) to be seen - used for formatting - bool m_is_singular; // True if our stored iterators are singular -}; - -template -void BOOST_REGEX_CALL match_results::maybe_assign(const match_results& m) -{ - if(m_is_singular) - { - *this = m; - return; - } - const_iterator p1, p2; - p1 = begin(); - p2 = m.begin(); - // - // Distances are measured from the start of *this* match, unless this isn't - // a valid match in which case we use the start of the whole sequence. Note that - // no subsequent match-candidate can ever be to the left of the first match found. - // This ensures that when we are using bidirectional iterators, that distances - // measured are as short as possible, and therefore as efficient as possible - // to compute. Finally note that we don't use the "matched" data member to test - // whether a sub-expression is a valid match, because partial matches set this - // to false for sub-expression 0. - // - BidiIterator l_end = this->suffix().second; - BidiIterator l_base = (p1->first == l_end) ? this->prefix().first : (*this)[0].first; - difference_type len1 = 0; - difference_type len2 = 0; - difference_type base1 = 0; - difference_type base2 = 0; - std::size_t i; - for(i = 0; i < size(); ++i, ++p1, ++p2) - { - // - // Leftmost takes priority over longest; handle special cases - // where distances need not be computed first (an optimisation - // for bidirectional iterators: ensure that we don't accidently - // compute the length of the whole sequence, as this can be really - // expensive). - // - if(p1->first == l_end) - { - if(p2->first != l_end) - { - // p2 must be better than p1, and no need to calculate - // actual distances: - base1 = 1; - base2 = 0; - break; - } - else - { - // *p1 and *p2 are either unmatched or match end-of sequence, - // either way no need to calculate distances: - if((p1->matched == false) && (p2->matched == true)) - break; - if((p1->matched == true) && (p2->matched == false)) - return; - continue; - } - } - else if(p2->first == l_end) - { - // p1 better than p2, and no need to calculate distances: - return; - } - base1 = ::boost::BOOST_REGEX_DETAIL_NS::distance(l_base, p1->first); - base2 = ::boost::BOOST_REGEX_DETAIL_NS::distance(l_base, p2->first); - BOOST_ASSERT(base1 >= 0); - BOOST_ASSERT(base2 >= 0); - if(base1 < base2) return; - if(base2 < base1) break; - - len1 = ::boost::BOOST_REGEX_DETAIL_NS::distance((BidiIterator)p1->first, (BidiIterator)p1->second); - len2 = ::boost::BOOST_REGEX_DETAIL_NS::distance((BidiIterator)p2->first, (BidiIterator)p2->second); - BOOST_ASSERT(len1 >= 0); - BOOST_ASSERT(len2 >= 0); - if((len1 != len2) || ((p1->matched == false) && (p2->matched == true))) - break; - if((p1->matched == true) && (p2->matched == false)) - return; - } - if(i == size()) - return; - if(base2 < base1) - *this = m; - else if((len2 > len1) || ((p1->matched == false) && (p2->matched == true)) ) - *this = m; -} - -template -void swap(match_results& a, match_results& b) -{ - a.swap(b); -} - -#ifndef BOOST_NO_STD_LOCALE -template -std::basic_ostream& - operator << (std::basic_ostream& os, - const match_results& s) -{ - return (os << s.str()); -} -#else -template -std::ostream& operator << (std::ostream& os, - const match_results& s) -{ - return (os << s.str()); -} -#endif - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - - diff --git a/src/boost/boost/regex/v4/mem_block_cache.hpp b/src/boost/boost/regex/v4/mem_block_cache.hpp deleted file mode 100644 index 778bf1da6..000000000 --- a/src/boost/boost/regex/v4/mem_block_cache.hpp +++ /dev/null @@ -1,145 +0,0 @@ - /* - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE mem_block_cache.hpp - * VERSION see - * DESCRIPTION: memory block cache used by the non-recursive matcher. - */ - -#ifndef BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP -#define BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP - -#include -#ifdef BOOST_HAS_THREADS -#include -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -#ifndef BOOST_NO_CXX11_HDR_ATOMIC - #include - #if ATOMIC_POINTER_LOCK_FREE == 2 - #define BOOST_REGEX_MEM_BLOCK_CACHE_LOCK_FREE - #define BOOST_REGEX_ATOMIC_POINTER std::atomic - #endif -#endif - -namespace boost{ -namespace BOOST_REGEX_DETAIL_NS{ - -#ifdef BOOST_REGEX_MEM_BLOCK_CACHE_LOCK_FREE /* lock free implementation */ -struct mem_block_cache -{ - std::atomic cache[BOOST_REGEX_MAX_CACHE_BLOCKS]; - - ~mem_block_cache() - { - for (size_t i = 0;i < BOOST_REGEX_MAX_CACHE_BLOCKS; ++i) { - if (cache[i].load()) ::operator delete(cache[i].load()); - } - } - void* get() - { - for (size_t i = 0;i < BOOST_REGEX_MAX_CACHE_BLOCKS; ++i) { - void* p = cache[i].load(); - if (p != NULL) { - if (cache[i].compare_exchange_strong(p, NULL)) return p; - } - } - return ::operator new(BOOST_REGEX_BLOCKSIZE); - } - void put(void* ptr) - { - for (size_t i = 0;i < BOOST_REGEX_MAX_CACHE_BLOCKS; ++i) { - void* p = cache[i].load(); - if (p == NULL) { - if (cache[i].compare_exchange_strong(p, ptr)) return; - } - } - ::operator delete(ptr); - } -}; - - -#else /* lock-based implementation */ - - -struct mem_block_node -{ - mem_block_node* next; -}; - -struct mem_block_cache -{ - // this member has to be statically initialsed: - mem_block_node* next; - unsigned cached_blocks; -#ifdef BOOST_HAS_THREADS - boost::static_mutex mut; -#endif - - ~mem_block_cache() - { - while(next) - { - mem_block_node* old = next; - next = next->next; - ::operator delete(old); - } - } - void* get() - { -#ifdef BOOST_HAS_THREADS - boost::static_mutex::scoped_lock g(mut); -#endif - if(next) - { - mem_block_node* result = next; - next = next->next; - --cached_blocks; - return result; - } - return ::operator new(BOOST_REGEX_BLOCKSIZE); - } - void put(void* p) - { -#ifdef BOOST_HAS_THREADS - boost::static_mutex::scoped_lock g(mut); -#endif - if(cached_blocks >= BOOST_REGEX_MAX_CACHE_BLOCKS) - { - ::operator delete(p); - } - else - { - mem_block_node* old = static_cast(p); - old->next = next; - next = old; - ++cached_blocks; - } - } -}; -#endif - -extern mem_block_cache block_cache; - -} -} // namespace boost - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif - diff --git a/src/boost/boost/regex/v4/perl_matcher.hpp b/src/boost/boost/regex/v4/perl_matcher.hpp deleted file mode 100644 index 4a107117b..000000000 --- a/src/boost/boost/regex/v4/perl_matcher.hpp +++ /dev/null @@ -1,626 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - -#ifndef BOOST_REGEX_MATCHER_HPP -#define BOOST_REGEX_MATCHER_HPP - -#include - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -# pragma warning(push) -#if BOOST_MSVC < 1910 -#pragma warning(disable:4800) -#endif -#endif - -namespace boost{ -namespace BOOST_REGEX_DETAIL_NS{ - -// -// error checking API: -// -BOOST_REGEX_DECL void BOOST_REGEX_CALL verify_options(boost::regex_constants::syntax_option_type ef, match_flag_type mf); -// -// function can_start: -// -template -inline bool can_start(charT c, const unsigned char* map, unsigned char mask) -{ - return ((c < static_cast(0)) ? true : ((c >= static_cast(1 << CHAR_BIT)) ? true : map[c] & mask)); -} -inline bool can_start(char c, const unsigned char* map, unsigned char mask) -{ - return map[(unsigned char)c] & mask; -} -inline bool can_start(signed char c, const unsigned char* map, unsigned char mask) -{ - return map[(unsigned char)c] & mask; -} -inline bool can_start(unsigned char c, const unsigned char* map, unsigned char mask) -{ - return map[c] & mask; -} -inline bool can_start(unsigned short c, const unsigned char* map, unsigned char mask) -{ - return ((c >= (1 << CHAR_BIT)) ? true : map[c] & mask); -} -#if !defined(__hpux) && !defined(__WINSCW__)// WCHAR_MIN not usable in pp-directives. -#if defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) -inline bool can_start(wchar_t c, const unsigned char* map, unsigned char mask) -{ - return ((c >= static_cast(1u << CHAR_BIT)) ? true : map[c] & mask); -} -#endif -#endif -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) -inline bool can_start(unsigned int c, const unsigned char* map, unsigned char mask) -{ - return (((c >= static_cast(1u << CHAR_BIT)) ? true : map[c] & mask)); -} -#endif - - -// -// Unfortunately Rogue Waves standard library appears to have a bug -// in std::basic_string::compare that results in eroneous answers -// in some cases (tested with Borland C++ 5.1, Rogue Wave lib version -// 0x020101) the test case was: -// {39135,0} < {0xff,0} -// which succeeds when it should not. -// -#ifndef _RWSTD_VER -template -inline int string_compare(const std::basic_string& s, const C* p) -{ - if(0 == *p) - { - if(s.empty() || ((s.size() == 1) && (s[0] == 0))) - return 0; - } - return s.compare(p); -} -#else -template -inline int string_compare(const std::basic_string& s, const C* p) -{ - if(0 == *p) - { - if(s.empty() || ((s.size() == 1) && (s[0] == 0))) - return 0; - } - return s.compare(p); -} -inline int string_compare(const std::string& s, const char* p) -{ return std::strcmp(s.c_str(), p); } -# ifndef BOOST_NO_WREGEX -inline int string_compare(const std::wstring& s, const wchar_t* p) -{ return std::wcscmp(s.c_str(), p); } -#endif -#endif -template -inline int string_compare(const Seq& s, const C* p) -{ - std::size_t i = 0; - while((i < s.size()) && (p[i] == s[i])) - { - ++i; - } - return (i == s.size()) ? -(int)p[i] : (int)s[i] - (int)p[i]; -} -# define STR_COMP(s,p) string_compare(s,p) - -template -inline const charT* re_skip_past_null(const charT* p) -{ - while (*p != static_cast(0)) ++p; - return ++p; -} - -template -iterator BOOST_REGEX_CALL re_is_set_member(iterator next, - iterator last, - const re_set_long* set_, - const regex_data& e, bool icase) -{ - const charT* p = reinterpret_cast(set_+1); - iterator ptr; - unsigned int i; - //bool icase = e.m_flags & regex_constants::icase; - - if(next == last) return next; - - typedef typename traits_type::string_type traits_string_type; - const ::boost::regex_traits_wrapper& traits_inst = *(e.m_ptraits); - - // dwa 9/13/00 suppress incorrect MSVC warning - it claims this is never - // referenced - (void)traits_inst; - - // try and match a single character, could be a multi-character - // collating element... - for(i = 0; i < set_->csingles; ++i) - { - ptr = next; - if(*p == static_cast(0)) - { - // treat null string as special case: - if(traits_inst.translate(*ptr, icase)) - { - ++p; - continue; - } - return set_->isnot ? next : (ptr == next) ? ++next : ptr; - } - else - { - while(*p && (ptr != last)) - { - if(traits_inst.translate(*ptr, icase) != *p) - break; - ++p; - ++ptr; - } - - if(*p == static_cast(0)) // if null we've matched - return set_->isnot ? next : (ptr == next) ? ++next : ptr; - - p = re_skip_past_null(p); // skip null - } - } - - charT col = traits_inst.translate(*next, icase); - - - if(set_->cranges || set_->cequivalents) - { - traits_string_type s1; - // - // try and match a range, NB only a single character can match - if(set_->cranges) - { - if((e.m_flags & regex_constants::collate) == 0) - s1.assign(1, col); - else - { - charT a[2] = { col, charT(0), }; - s1 = traits_inst.transform(a, a + 1); - } - for(i = 0; i < set_->cranges; ++i) - { - if(STR_COMP(s1, p) >= 0) - { - do{ ++p; }while(*p); - ++p; - if(STR_COMP(s1, p) <= 0) - return set_->isnot ? next : ++next; - } - else - { - // skip first string - do{ ++p; }while(*p); - ++p; - } - // skip second string - do{ ++p; }while(*p); - ++p; - } - } - // - // try and match an equivalence class, NB only a single character can match - if(set_->cequivalents) - { - charT a[2] = { col, charT(0), }; - s1 = traits_inst.transform_primary(a, a +1); - for(i = 0; i < set_->cequivalents; ++i) - { - if(STR_COMP(s1, p) == 0) - return set_->isnot ? next : ++next; - // skip string - do{ ++p; }while(*p); - ++p; - } - } - } - if(traits_inst.isctype(col, set_->cclasses) == true) - return set_->isnot ? next : ++next; - if((set_->cnclasses != 0) && (traits_inst.isctype(col, set_->cnclasses) == false)) - return set_->isnot ? next : ++next; - return set_->isnot ? ++next : next; -} - -template -class repeater_count -{ - repeater_count** stack; - repeater_count* next; - int state_id; - std::size_t count; // the number of iterations so far - BidiIterator start_pos; // where the last repeat started - - repeater_count* unwind_until(int n, repeater_count* p, int current_recursion_id) - { - while(p && (p->state_id != n)) - { - if(-2 - current_recursion_id == p->state_id) - return 0; - p = p->next; - if(p && (p->state_id < 0)) - { - p = unwind_until(p->state_id, p, current_recursion_id); - if(!p) - return p; - p = p->next; - } - } - return p; - } -public: - repeater_count(repeater_count** s) : stack(s), next(0), state_id(-1), count(0), start_pos() {} - - repeater_count(int i, repeater_count** s, BidiIterator start, int current_recursion_id) - : start_pos(start) - { - state_id = i; - stack = s; - next = *stack; - *stack = this; - if((state_id > next->state_id) && (next->state_id >= 0)) - count = 0; - else - { - repeater_count* p = next; - p = unwind_until(state_id, p, current_recursion_id); - if(p) - { - count = p->count; - start_pos = p->start_pos; - } - else - count = 0; - } - } - ~repeater_count() - { - if(next) - *stack = next; - } - std::size_t get_count() { return count; } - int get_id() { return state_id; } - std::size_t operator++() { return ++count; } - bool check_null_repeat(const BidiIterator& pos, std::size_t max) - { - // this is called when we are about to start a new repeat, - // if the last one was NULL move our count to max, - // otherwise save the current position. - bool result = (count == 0) ? false : (pos == start_pos); - if(result) - count = max; - else - start_pos = pos; - return result; - } -}; - -struct saved_state; - -enum saved_state_type -{ - saved_type_end = 0, - saved_type_paren = 1, - saved_type_recurse = 2, - saved_type_assertion = 3, - saved_state_alt = 4, - saved_state_repeater_count = 5, - saved_state_extra_block = 6, - saved_state_greedy_single_repeat = 7, - saved_state_rep_slow_dot = 8, - saved_state_rep_fast_dot = 9, - saved_state_rep_char = 10, - saved_state_rep_short_set = 11, - saved_state_rep_long_set = 12, - saved_state_non_greedy_long_repeat = 13, - saved_state_count = 14 -}; - -template -struct recursion_info -{ - typedef typename Results::value_type value_type; - typedef typename value_type::iterator iterator; - int idx; - const re_syntax_base* preturn_address; - Results results; - repeater_count* repeater_stack; - iterator location_of_start; -}; - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable : 4251) -#if BOOST_MSVC < 1700 -# pragma warning(disable : 4231) -#endif -# if BOOST_MSVC < 1600 -# pragma warning(disable : 4660) -# endif -#endif - -template -class perl_matcher -{ -public: - typedef typename traits::char_type char_type; - typedef perl_matcher self_type; - typedef bool (self_type::*matcher_proc_type)(void); - typedef std::size_t traits_size_type; - typedef typename is_byte::width_type width_type; - typedef typename regex_iterator_traits::difference_type difference_type; - typedef match_results results_type; - - perl_matcher(BidiIterator first, BidiIterator end, - match_results& what, - const basic_regex& e, - match_flag_type f, - BidiIterator l_base) - : m_result(what), base(first), last(end), - position(first), backstop(l_base), re(e), traits_inst(e.get_traits()), - m_independent(false), next_count(&rep_obj), rep_obj(&next_count) -#ifdef BOOST_REGEX_NON_RECURSIVE - , m_recursions(0) -#endif - { - construct_init(e, f); - } - - bool match(); - bool find(); - - void setf(match_flag_type f) - { m_match_flags |= f; } - void unsetf(match_flag_type f) - { m_match_flags &= ~f; } - -private: - void construct_init(const basic_regex& e, match_flag_type f); - - bool find_imp(); - bool match_imp(); -#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD - typedef bool (perl_matcher::*protected_proc_type)(); - bool protected_call(protected_proc_type); -#endif - void estimate_max_state_count(std::random_access_iterator_tag*); - void estimate_max_state_count(void*); - bool match_prefix(); - bool match_all_states(); - - // match procs, stored in s_match_vtable: - bool match_startmark(); - bool match_endmark(); - bool match_literal(); - bool match_start_line(); - bool match_end_line(); - bool match_wild(); - bool match_match(); - bool match_word_boundary(); - bool match_within_word(); - bool match_word_start(); - bool match_word_end(); - bool match_buffer_start(); - bool match_buffer_end(); - bool match_backref(); - bool match_long_set(); - bool match_set(); - bool match_jump(); - bool match_alt(); - bool match_rep(); - bool match_combining(); - bool match_soft_buffer_end(); - bool match_restart_continue(); - bool match_long_set_repeat(); - bool match_set_repeat(); - bool match_char_repeat(); - bool match_dot_repeat_fast(); - bool match_dot_repeat_slow(); - bool match_dot_repeat_dispatch() - { - return ::boost::is_random_access_iterator::value ? match_dot_repeat_fast() : match_dot_repeat_slow(); - } - bool match_backstep(); - bool match_assert_backref(); - bool match_toggle_case(); -#ifdef BOOST_REGEX_RECURSIVE - bool backtrack_till_match(std::size_t count); -#endif - bool match_recursion(); - bool match_fail(); - bool match_accept(); - bool match_commit(); - bool match_then(); - bool skip_until_paren(int index, bool match = true); - - // find procs stored in s_find_vtable: - bool find_restart_any(); - bool find_restart_word(); - bool find_restart_line(); - bool find_restart_buf(); - bool find_restart_lit(); - -private: - // final result structure to be filled in: - match_results& m_result; - // temporary result for POSIX matches: - scoped_ptr > m_temp_match; - // pointer to actual result structure to fill in: - match_results* m_presult; - // start of sequence being searched: - BidiIterator base; - // end of sequence being searched: - BidiIterator last; - // current character being examined: - BidiIterator position; - // where to restart next search after failed match attempt: - BidiIterator restart; - // where the current search started from, acts as base for $` during grep: - BidiIterator search_base; - // how far we can go back when matching lookbehind: - BidiIterator backstop; - // the expression being examined: - const basic_regex& re; - // the expression's traits class: - const ::boost::regex_traits_wrapper& traits_inst; - // the next state in the machine being matched: - const re_syntax_base* pstate; - // matching flags in use: - match_flag_type m_match_flags; - // how many states we have examined so far: - std::ptrdiff_t state_count; - // max number of states to examine before giving up: - std::ptrdiff_t max_state_count; - // whether we should ignore case or not: - bool icase; - // set to true when (position == last), indicates that we may have a partial match: - bool m_has_partial_match; - // set to true whenever we get a match: - bool m_has_found_match; - // set to true whenever we're inside an independent sub-expression: - bool m_independent; - // the current repeat being examined: - repeater_count* next_count; - // the first repeat being examined (top of linked list): - repeater_count rep_obj; - // the mask to pass when matching word boundaries: - typename traits::char_class_type m_word_mask; - // the bitmask to use when determining whether a match_any matches a newline or not: - unsigned char match_any_mask; - // recursion information: - std::vector > recursion_stack; -#ifdef BOOST_REGEX_RECURSIVE - // Set to false by a (*COMMIT): - bool m_can_backtrack; - bool m_have_accept; - bool m_have_then; -#endif -#ifdef BOOST_REGEX_NON_RECURSIVE - // - // additional members for non-recursive version: - // - typedef bool (self_type::*unwind_proc_type)(bool); - - void extend_stack(); - bool unwind(bool); - bool unwind_end(bool); - bool unwind_paren(bool); - bool unwind_recursion_stopper(bool); - bool unwind_assertion(bool); - bool unwind_alt(bool); - bool unwind_repeater_counter(bool); - bool unwind_extra_block(bool); - bool unwind_greedy_single_repeat(bool); - bool unwind_slow_dot_repeat(bool); - bool unwind_fast_dot_repeat(bool); - bool unwind_char_repeat(bool); - bool unwind_short_set_repeat(bool); - bool unwind_long_set_repeat(bool); - bool unwind_non_greedy_repeat(bool); - bool unwind_recursion(bool); - bool unwind_recursion_pop(bool); - bool unwind_commit(bool); - bool unwind_then(bool); - bool unwind_case(bool); - void destroy_single_repeat(); - void push_matched_paren(int index, const sub_match& sub); - void push_recursion_stopper(); - void push_assertion(const re_syntax_base* ps, bool positive); - void push_alt(const re_syntax_base* ps); - void push_repeater_count(int i, repeater_count** s); - void push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int state_id); - void push_non_greedy_repeat(const re_syntax_base* ps); - void push_recursion(int idx, const re_syntax_base* p, results_type* presults, results_type* presults2); - void push_recursion_pop(); - void push_case_change(bool); - - // pointer to base of stack: - saved_state* m_stack_base; - // pointer to current stack position: - saved_state* m_backup_state; - // how many memory blocks have we used up?: - unsigned used_block_count; - // determines what value to return when unwinding from recursion, - // allows for mixed recursive/non-recursive algorithm: - bool m_recursive_result; - // We have unwound to a lookahead/lookbehind, used by COMMIT/PRUNE/SKIP: - bool m_unwound_lookahead; - // We have unwound to an alternative, used by THEN: - bool m_unwound_alt; - // We are unwinding a commit - used by independent subs to determine whether to stop there or carry on unwinding: - //bool m_unwind_commit; - // Recursion limit: - unsigned m_recursions; -#endif - - // these operations aren't allowed, so are declared private, - // bodies are provided to keep explicit-instantiation requests happy: - perl_matcher& operator=(const perl_matcher&) - { - return *this; - } - perl_matcher(const perl_matcher& that) - : m_result(that.m_result), re(that.re), traits_inst(that.traits_inst), rep_obj(0) {} -}; - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace BOOST_REGEX_DETAIL_NS - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif - -// -// include the implementation of perl_matcher: -// -#ifdef BOOST_REGEX_RECURSIVE -#include -#else -#include -#endif -// this one has to be last: -#include - -#endif - diff --git a/src/boost/boost/regex/v4/perl_matcher_common.hpp b/src/boost/boost/regex/v4/perl_matcher_common.hpp deleted file mode 100644 index 01b00955b..000000000 --- a/src/boost/boost/regex/v4/perl_matcher_common.hpp +++ /dev/null @@ -1,1020 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE perl_matcher_common.cpp - * VERSION see - * DESCRIPTION: Definitions of perl_matcher member functions that are - * common to both the recursive and non-recursive versions. - */ - -#ifndef BOOST_REGEX_V4_PERL_MATCHER_COMMON_HPP -#define BOOST_REGEX_V4_PERL_MATCHER_COMMON_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef __BORLANDC__ -# pragma option push -w-8008 -w-8066 -#endif -#ifdef BOOST_MSVC -# pragma warning(push) -#if BOOST_MSVC < 1910 -#pragma warning(disable:4800) -#endif -#endif - -namespace boost{ -namespace BOOST_REGEX_DETAIL_NS{ - -template -void perl_matcher::construct_init(const basic_regex& e, match_flag_type f) -{ - typedef typename regex_iterator_traits::iterator_category category; - typedef typename basic_regex::flag_type expression_flag_type; - - if(e.empty()) - { - // precondition failure: e is not a valid regex. - std::invalid_argument ex("Invalid regular expression object"); - boost::throw_exception(ex); - } - pstate = 0; - m_match_flags = f; - estimate_max_state_count(static_cast(0)); - expression_flag_type re_f = re.flags(); - icase = re_f & regex_constants::icase; - if(!(m_match_flags & (match_perl|match_posix))) - { - if((re_f & (regbase::main_option_type|regbase::no_perl_ex)) == 0) - m_match_flags |= match_perl; - else if((re_f & (regbase::main_option_type|regbase::emacs_ex)) == (regbase::basic_syntax_group|regbase::emacs_ex)) - m_match_flags |= match_perl; - else if((re_f & (regbase::main_option_type|regbase::literal)) == (regbase::literal)) - m_match_flags |= match_perl; - else - m_match_flags |= match_posix; - } - if(m_match_flags & match_posix) - { - m_temp_match.reset(new match_results()); - m_presult = m_temp_match.get(); - } - else - m_presult = &m_result; -#ifdef BOOST_REGEX_NON_RECURSIVE - m_stack_base = 0; - m_backup_state = 0; -#elif defined(BOOST_REGEX_RECURSIVE) - m_can_backtrack = true; - m_have_accept = false; -#endif - // find the value to use for matching word boundaries: - m_word_mask = re.get_data().m_word_mask; - // find bitmask to use for matching '.': - match_any_mask = static_cast((f & match_not_dot_newline) ? BOOST_REGEX_DETAIL_NS::test_not_newline : BOOST_REGEX_DETAIL_NS::test_newline); - // Disable match_any if requested in the state machine: - if(e.get_data().m_disable_match_any) - m_match_flags &= regex_constants::match_not_any; -} - -template -void perl_matcher::estimate_max_state_count(std::random_access_iterator_tag*) -{ - // - // How many states should we allow our machine to visit before giving up? - // This is a heuristic: it takes the greater of O(N^2) and O(NS^2) - // where N is the length of the string, and S is the number of states - // in the machine. It's tempting to up this to O(N^2S) or even O(N^2S^2) - // but these take unreasonably amounts of time to bale out in pathological - // cases. - // - // Calculate NS^2 first: - // - static const std::ptrdiff_t k = 100000; - std::ptrdiff_t dist = boost::BOOST_REGEX_DETAIL_NS::distance(base, last); - if(dist == 0) - dist = 1; - std::ptrdiff_t states = re.size(); - if(states == 0) - states = 1; - if ((std::numeric_limits::max)() / states < states) - { - max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits::max)() - 2); - return; - } - states *= states; - if((std::numeric_limits::max)() / dist < states) - { - max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits::max)() - 2); - return; - } - states *= dist; - if((std::numeric_limits::max)() - k < states) - { - max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits::max)() - 2); - return; - } - states += k; - - max_state_count = states; - - // - // Now calculate N^2: - // - states = dist; - if((std::numeric_limits::max)() / dist < states) - { - max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits::max)() - 2); - return; - } - states *= dist; - if((std::numeric_limits::max)() - k < states) - { - max_state_count = (std::min)((std::ptrdiff_t)BOOST_REGEX_MAX_STATE_COUNT, (std::numeric_limits::max)() - 2); - return; - } - states += k; - // - // N^2 can be a very large number indeed, to prevent things getting out - // of control, cap the max states: - // - if(states > BOOST_REGEX_MAX_STATE_COUNT) - states = BOOST_REGEX_MAX_STATE_COUNT; - // - // If (the possibly capped) N^2 is larger than our first estimate, - // use this instead: - // - if(states > max_state_count) - max_state_count = states; -} - -template -inline void perl_matcher::estimate_max_state_count(void*) -{ - // we don't know how long the sequence is: - max_state_count = BOOST_REGEX_MAX_STATE_COUNT; -} - -#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD -template -inline bool perl_matcher::protected_call( - protected_proc_type proc) -{ - ::boost::BOOST_REGEX_DETAIL_NS::concrete_protected_call - > - obj(this, proc); - return obj.execute(); - -} -#endif - -template -inline bool perl_matcher::match() -{ -#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD - return protected_call(&perl_matcher::match_imp); -#else - return match_imp(); -#endif -} - -template -bool perl_matcher::match_imp() -{ - // initialise our stack if we are non-recursive: -#ifdef BOOST_REGEX_NON_RECURSIVE - save_state_init init(&m_stack_base, &m_backup_state); - used_block_count = BOOST_REGEX_MAX_BLOCKS; -#if !defined(BOOST_NO_EXCEPTIONS) - try{ -#endif -#endif - - // reset our state machine: - position = base; - search_base = base; - state_count = 0; - m_match_flags |= regex_constants::match_all; - m_presult->set_size((m_match_flags & match_nosubs) ? 1u : static_cast(1u + re.mark_count()), search_base, last); - m_presult->set_base(base); - m_presult->set_named_subs(this->re.get_named_subs()); - if(m_match_flags & match_posix) - m_result = *m_presult; - verify_options(re.flags(), m_match_flags); - if(0 == match_prefix()) - return false; - return (m_result[0].second == last) && (m_result[0].first == base); - -#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_NO_EXCEPTIONS) - } - catch(...) - { - // unwind all pushed states, apart from anything else this - // ensures that all the states are correctly destructed - // not just the memory freed. - while(unwind(true)){} - throw; - } -#endif -} - -template -inline bool perl_matcher::find() -{ -#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD - return protected_call(&perl_matcher::find_imp); -#else - return find_imp(); -#endif -} - -template -bool perl_matcher::find_imp() -{ - static matcher_proc_type const s_find_vtable[7] = - { - &perl_matcher::find_restart_any, - &perl_matcher::find_restart_word, - &perl_matcher::find_restart_line, - &perl_matcher::find_restart_buf, - &perl_matcher::match_prefix, - &perl_matcher::find_restart_lit, - &perl_matcher::find_restart_lit, - }; - - // initialise our stack if we are non-recursive: -#ifdef BOOST_REGEX_NON_RECURSIVE - save_state_init init(&m_stack_base, &m_backup_state); - used_block_count = BOOST_REGEX_MAX_BLOCKS; -#if !defined(BOOST_NO_EXCEPTIONS) - try{ -#endif -#endif - - state_count = 0; - if((m_match_flags & regex_constants::match_init) == 0) - { - // reset our state machine: - search_base = position = base; - pstate = re.get_first_state(); - m_presult->set_size((m_match_flags & match_nosubs) ? 1u : static_cast(1u + re.mark_count()), base, last); - m_presult->set_base(base); - m_presult->set_named_subs(this->re.get_named_subs()); - m_match_flags |= regex_constants::match_init; - } - else - { - // start again: - search_base = position = m_result[0].second; - // If last match was null and match_not_null was not set then increment - // our start position, otherwise we go into an infinite loop: - if(((m_match_flags & match_not_null) == 0) && (m_result.length() == 0)) - { - if(position == last) - return false; - else - ++position; - } - // reset $` start: - m_presult->set_size((m_match_flags & match_nosubs) ? 1u : static_cast(1u + re.mark_count()), search_base, last); - //if((base != search_base) && (base == backstop)) - // m_match_flags |= match_prev_avail; - } - if(m_match_flags & match_posix) - { - m_result.set_size(static_cast(1u + re.mark_count()), base, last); - m_result.set_base(base); - } - - verify_options(re.flags(), m_match_flags); - // find out what kind of expression we have: - unsigned type = (m_match_flags & match_continuous) ? - static_cast(regbase::restart_continue) - : static_cast(re.get_restart_type()); - - // call the appropriate search routine: - matcher_proc_type proc = s_find_vtable[type]; - return (this->*proc)(); - -#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_NO_EXCEPTIONS) - } - catch(...) - { - // unwind all pushed states, apart from anything else this - // ensures that all the states are correctly destructed - // not just the memory freed. - while(unwind(true)){} - throw; - } -#endif -} - -template -bool perl_matcher::match_prefix() -{ - m_has_partial_match = false; - m_has_found_match = false; - pstate = re.get_first_state(); - m_presult->set_first(position); - restart = position; - match_all_states(); - if(!m_has_found_match && m_has_partial_match && (m_match_flags & match_partial)) - { - m_has_found_match = true; - m_presult->set_second(last, 0, false); - position = last; - if((m_match_flags & match_posix) == match_posix) - { - m_result.maybe_assign(*m_presult); - } - } -#ifdef BOOST_REGEX_MATCH_EXTRA - if(m_has_found_match && (match_extra & m_match_flags)) - { - // - // we have a match, reverse the capture information: - // - for(unsigned i = 0; i < m_presult->size(); ++i) - { - typename sub_match::capture_sequence_type & seq = ((*m_presult)[i]).get_captures(); - std::reverse(seq.begin(), seq.end()); - } - } -#endif - if(!m_has_found_match) - position = restart; // reset search postion -#ifdef BOOST_REGEX_RECURSIVE - m_can_backtrack = true; // reset for further searches -#endif - return m_has_found_match; -} - -template -bool perl_matcher::match_literal() -{ - unsigned int len = static_cast(pstate)->length; - const char_type* what = reinterpret_cast(static_cast(pstate) + 1); - // - // compare string with what we stored in - // our records: - for(unsigned int i = 0; i < len; ++i, ++position) - { - if((position == last) || (traits_inst.translate(*position, icase) != what[i])) - return false; - } - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_start_line() -{ - if(position == backstop) - { - if((m_match_flags & match_prev_avail) == 0) - { - if((m_match_flags & match_not_bol) == 0) - { - pstate = pstate->next.p; - return true; - } - return false; - } - } - else if(m_match_flags & match_single_line) - return false; - - // check the previous value character: - BidiIterator t(position); - --t; - if(position != last) - { - if(is_separator(*t) && !((*t == static_cast('\r')) && (*position == static_cast('\n'))) ) - { - pstate = pstate->next.p; - return true; - } - } - else if(is_separator(*t)) - { - pstate = pstate->next.p; - return true; - } - return false; -} - -template -bool perl_matcher::match_end_line() -{ - if(position != last) - { - if(m_match_flags & match_single_line) - return false; - // we're not yet at the end so *first is always valid: - if(is_separator(*position)) - { - if((position != backstop) || (m_match_flags & match_prev_avail)) - { - // check that we're not in the middle of \r\n sequence - BidiIterator t(position); - --t; - if((*t == static_cast('\r')) && (*position == static_cast('\n'))) - { - return false; - } - } - pstate = pstate->next.p; - return true; - } - } - else if((m_match_flags & match_not_eol) == 0) - { - pstate = pstate->next.p; - return true; - } - return false; -} - -template -bool perl_matcher::match_wild() -{ - if(position == last) - return false; - if(is_separator(*position) && ((match_any_mask & static_cast(pstate)->mask) == 0)) - return false; - if((*position == char_type(0)) && (m_match_flags & match_not_dot_null)) - return false; - pstate = pstate->next.p; - ++position; - return true; -} - -template -bool perl_matcher::match_word_boundary() -{ - bool b; // indcates whether next character is a word character - if(position != last) - { - // prev and this character must be opposites: - b = traits_inst.isctype(*position, m_word_mask); - } - else - { - if (m_match_flags & match_not_eow) - return false; - b = false; - } - if((position == backstop) && ((m_match_flags & match_prev_avail) == 0)) - { - if(m_match_flags & match_not_bow) - return false; - else - b ^= false; - } - else - { - --position; - b ^= traits_inst.isctype(*position, m_word_mask); - ++position; - } - if(b) - { - pstate = pstate->next.p; - return true; - } - return false; // no match if we get to here... -} - -template -bool perl_matcher::match_within_word() -{ - if(position == last) - return false; - // both prev and this character must be m_word_mask: - bool prev = traits_inst.isctype(*position, m_word_mask); - { - bool b; - if((position == backstop) && ((m_match_flags & match_prev_avail) == 0)) - return false; - else - { - --position; - b = traits_inst.isctype(*position, m_word_mask); - ++position; - } - if(b == prev) - { - pstate = pstate->next.p; - return true; - } - } - return false; -} - -template -bool perl_matcher::match_word_start() -{ - if(position == last) - return false; // can't be starting a word if we're already at the end of input - if(!traits_inst.isctype(*position, m_word_mask)) - return false; // next character isn't a word character - if((position == backstop) && ((m_match_flags & match_prev_avail) == 0)) - { - if(m_match_flags & match_not_bow) - return false; // no previous input - } - else - { - // otherwise inside buffer: - BidiIterator t(position); - --t; - if(traits_inst.isctype(*t, m_word_mask)) - return false; // previous character not non-word - } - // OK we have a match: - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_word_end() -{ - if((position == backstop) && ((m_match_flags & match_prev_avail) == 0)) - return false; // start of buffer can't be end of word - BidiIterator t(position); - --t; - if(traits_inst.isctype(*t, m_word_mask) == false) - return false; // previous character wasn't a word character - - if(position == last) - { - if(m_match_flags & match_not_eow) - return false; // end of buffer but not end of word - } - else - { - // otherwise inside buffer: - if(traits_inst.isctype(*position, m_word_mask)) - return false; // next character is a word character - } - pstate = pstate->next.p; - return true; // if we fall through to here then we've succeeded -} - -template -bool perl_matcher::match_buffer_start() -{ - if((position != backstop) || (m_match_flags & match_not_bob)) - return false; - // OK match: - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_buffer_end() -{ - if((position != last) || (m_match_flags & match_not_eob)) - return false; - // OK match: - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_backref() -{ - // - // Compare with what we previously matched. - // Note that this succeeds if the backref did not partisipate - // in the match, this is in line with ECMAScript, but not Perl - // or PCRE. - // - int index = static_cast(pstate)->index; - if(index >= 10000) - { - named_subexpressions::range_type r = re.get_data().equal_range(index); - BOOST_ASSERT(r.first != r.second); - do - { - index = r.first->index; - ++r.first; - }while((r.first != r.second) && ((*m_presult)[index].matched != true)); - } - - if((m_match_flags & match_perl) && !(*m_presult)[index].matched) - return false; - - BidiIterator i = (*m_presult)[index].first; - BidiIterator j = (*m_presult)[index].second; - while(i != j) - { - if((position == last) || (traits_inst.translate(*position, icase) != traits_inst.translate(*i, icase))) - return false; - ++i; - ++position; - } - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_long_set() -{ - typedef typename traits::char_class_type char_class_type; - // let the traits class do the work: - if(position == last) - return false; - BidiIterator t = re_is_set_member(position, last, static_cast*>(pstate), re.get_data(), icase); - if(t != position) - { - pstate = pstate->next.p; - position = t; - return true; - } - return false; -} - -template -bool perl_matcher::match_set() -{ - if(position == last) - return false; - if(static_cast(pstate)->_map[static_cast(traits_inst.translate(*position, icase))]) - { - pstate = pstate->next.p; - ++position; - return true; - } - return false; -} - -template -bool perl_matcher::match_jump() -{ - pstate = static_cast(pstate)->alt.p; - return true; -} - -template -bool perl_matcher::match_combining() -{ - if(position == last) - return false; - if(is_combining(traits_inst.translate(*position, icase))) - return false; - ++position; - while((position != last) && is_combining(traits_inst.translate(*position, icase))) - ++position; - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_soft_buffer_end() -{ - if(m_match_flags & match_not_eob) - return false; - BidiIterator p(position); - while((p != last) && is_separator(traits_inst.translate(*p, icase)))++p; - if(p != last) - return false; - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_restart_continue() -{ - if(position == search_base) - { - pstate = pstate->next.p; - return true; - } - return false; -} - -template -bool perl_matcher::match_backstep() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif - if( ::boost::is_random_access_iterator::value) - { - std::ptrdiff_t maxlen = ::boost::BOOST_REGEX_DETAIL_NS::distance(backstop, position); - if(maxlen < static_cast(pstate)->index) - return false; - std::advance(position, -static_cast(pstate)->index); - } - else - { - int c = static_cast(pstate)->index; - while(c--) - { - if(position == backstop) - return false; - --position; - } - } - pstate = pstate->next.p; - return true; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -inline bool perl_matcher::match_assert_backref() -{ - // return true if marked sub-expression N has been matched: - int index = static_cast(pstate)->index; - bool result = false; - if(index == 9999) - { - // Magic value for a (DEFINE) block: - return false; - } - else if(index > 0) - { - // Have we matched subexpression "index"? - // Check if index is a hash value: - if(index >= 10000) - { - named_subexpressions::range_type r = re.get_data().equal_range(index); - while(r.first != r.second) - { - if((*m_presult)[r.first->index].matched) - { - result = true; - break; - } - ++r.first; - } - } - else - { - result = (*m_presult)[index].matched; - } - pstate = pstate->next.p; - } - else - { - // Have we recursed into subexpression "index"? - // If index == 0 then check for any recursion at all, otherwise for recursion to -index-1. - int idx = -(index+1); - if(idx >= 10000) - { - named_subexpressions::range_type r = re.get_data().equal_range(idx); - int stack_index = recursion_stack.empty() ? -1 : recursion_stack.back().idx; - while(r.first != r.second) - { - result |= (stack_index == r.first->index); - if(result)break; - ++r.first; - } - } - else - { - result = !recursion_stack.empty() && ((recursion_stack.back().idx == idx) || (index == 0)); - } - pstate = pstate->next.p; - } - return result; -} - -template -bool perl_matcher::match_fail() -{ - // Just force a backtrack: - return false; -} - -template -bool perl_matcher::match_accept() -{ - if(!recursion_stack.empty()) - { - return skip_until_paren(recursion_stack.back().idx); - } - else - { - return skip_until_paren(INT_MAX); - } -} - -template -bool perl_matcher::find_restart_any() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif - const unsigned char* _map = re.get_map(); - while(true) - { - // skip everything we can't match: - while((position != last) && !can_start(*position, _map, (unsigned char)mask_any) ) - ++position; - if(position == last) - { - // run out of characters, try a null match if possible: - if(re.can_be_null()) - return match_prefix(); - break; - } - // now try and obtain a match: - if(match_prefix()) - return true; - if(position == last) - return false; - ++position; - } - return false; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::find_restart_word() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif - // do search optimised for word starts: - const unsigned char* _map = re.get_map(); - if((m_match_flags & match_prev_avail) || (position != base)) - --position; - else if(match_prefix()) - return true; - do - { - while((position != last) && traits_inst.isctype(*position, m_word_mask)) - ++position; - while((position != last) && !traits_inst.isctype(*position, m_word_mask)) - ++position; - if(position == last) - break; - - if(can_start(*position, _map, (unsigned char)mask_any) ) - { - if(match_prefix()) - return true; - } - if(position == last) - break; - } while(true); - return false; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::find_restart_line() -{ - // do search optimised for line starts: - const unsigned char* _map = re.get_map(); - if(match_prefix()) - return true; - while(position != last) - { - while((position != last) && !is_separator(*position)) - ++position; - if(position == last) - return false; - ++position; - if(position == last) - { - if(re.can_be_null() && match_prefix()) - return true; - return false; - } - - if( can_start(*position, _map, (unsigned char)mask_any) ) - { - if(match_prefix()) - return true; - } - if(position == last) - return false; - //++position; - } - return false; -} - -template -bool perl_matcher::find_restart_buf() -{ - if((position == base) && ((m_match_flags & match_not_bob) == 0)) - return match_prefix(); - return false; -} - -template -bool perl_matcher::find_restart_lit() -{ -#if 0 - if(position == last) - return false; // can't possibly match if we're at the end already - - unsigned type = (m_match_flags & match_continuous) ? - static_cast(regbase::restart_continue) - : static_cast(re.get_restart_type()); - - const kmp_info* info = access::get_kmp(re); - int len = info->len; - const char_type* x = info->pstr; - int j = 0; - while (position != last) - { - while((j > -1) && (x[j] != traits_inst.translate(*position, icase))) - j = info->kmp_next[j]; - ++position; - ++j; - if(j >= len) - { - if(type == regbase::restart_fixed_lit) - { - std::advance(position, -j); - restart = position; - std::advance(restart, len); - m_result.set_first(position); - m_result.set_second(restart); - position = restart; - return true; - } - else - { - restart = position; - std::advance(position, -j); - if(match_prefix()) - return true; - else - { - for(int k = 0; (restart != position) && (k < j); ++k, --restart) - {} // dwa 10/20/2000 - warning suppression for MWCW - if(restart != last) - ++restart; - position = restart; - j = 0; //we could do better than this... - } - } - } - } - if((m_match_flags & match_partial) && (position == last) && j) - { - // we need to check for a partial match: - restart = position; - std::advance(position, -j); - return match_prefix(); - } -#endif - return false; -} - -} // namespace BOOST_REGEX_DETAIL_NS - -} // namespace boost - -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif - -#ifdef __BORLANDC__ -# pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/src/boost/boost/regex/v4/perl_matcher_non_recursive.hpp b/src/boost/boost/regex/v4/perl_matcher_non_recursive.hpp deleted file mode 100644 index 8fda60302..000000000 --- a/src/boost/boost/regex/v4/perl_matcher_non_recursive.hpp +++ /dev/null @@ -1,1948 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE perl_matcher_common.cpp - * VERSION see - * DESCRIPTION: Definitions of perl_matcher member functions that are - * specific to the non-recursive implementation. - */ - -#ifndef BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP -#define BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP - -#include - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable: 4706) -#if BOOST_MSVC < 1910 -#pragma warning(disable:4800) -#endif -#endif - -namespace boost{ -namespace BOOST_REGEX_DETAIL_NS{ - -template -inline void inplace_destroy(T* p) -{ - (void)p; // warning suppression - p->~T(); -} - -struct saved_state -{ - union{ - unsigned int state_id; - // this padding ensures correct alignment on 64-bit platforms: - std::size_t padding1; - std::ptrdiff_t padding2; - void* padding3; - }; - saved_state(unsigned i) : state_id(i) {} -}; - -template -struct saved_matched_paren : public saved_state -{ - int index; - sub_match sub; - saved_matched_paren(int i, const sub_match& s) : saved_state(1), index(i), sub(s){}; -}; - -template -struct saved_position : public saved_state -{ - const re_syntax_base* pstate; - BidiIterator position; - saved_position(const re_syntax_base* ps, BidiIterator pos, int i) : saved_state(i), pstate(ps), position(pos){}; -}; - -template -struct saved_assertion : public saved_position -{ - bool positive; - saved_assertion(bool p, const re_syntax_base* ps, BidiIterator pos) - : saved_position(ps, pos, saved_type_assertion), positive(p){}; -}; - -template -struct saved_repeater : public saved_state -{ - repeater_count count; - saved_repeater(int i, repeater_count** s, BidiIterator start, int current_recursion_id) - : saved_state(saved_state_repeater_count), count(i, s, start, current_recursion_id){} -}; - -struct saved_extra_block : public saved_state -{ - saved_state *base, *end; - saved_extra_block(saved_state* b, saved_state* e) - : saved_state(saved_state_extra_block), base(b), end(e) {} -}; - -struct save_state_init -{ - saved_state** stack; - save_state_init(saved_state** base, saved_state** end) - : stack(base) - { - *base = static_cast(get_mem_block()); - *end = reinterpret_cast(reinterpret_cast(*base)+BOOST_REGEX_BLOCKSIZE); - --(*end); - (void) new (*end)saved_state(0); - BOOST_ASSERT(*end > *base); - } - ~save_state_init() - { - put_mem_block(*stack); - *stack = 0; - } -}; - -template -struct saved_single_repeat : public saved_state -{ - std::size_t count; - const re_repeat* rep; - BidiIterator last_position; - saved_single_repeat(std::size_t c, const re_repeat* r, BidiIterator lp, int arg_id) - : saved_state(arg_id), count(c), rep(r), last_position(lp){} -}; - -template -struct saved_recursion : public saved_state -{ - saved_recursion(int idx, const re_syntax_base* p, Results* pr, Results* pr2) - : saved_state(14), recursion_id(idx), preturn_address(p), internal_results(*pr), prior_results(*pr2) {} - int recursion_id; - const re_syntax_base* preturn_address; - Results internal_results, prior_results; -}; - -struct saved_change_case : public saved_state -{ - bool icase; - saved_change_case(bool c) : saved_state(18), icase(c) {} -}; - -struct incrementer -{ - incrementer(unsigned* pu) : m_pu(pu) { ++*m_pu; } - ~incrementer() { --*m_pu; } - bool operator > (unsigned i) { return *m_pu > i; } -private: - unsigned* m_pu; -}; - -template -bool perl_matcher::match_all_states() -{ - static matcher_proc_type const s_match_vtable[34] = - { - (&perl_matcher::match_startmark), - &perl_matcher::match_endmark, - &perl_matcher::match_literal, - &perl_matcher::match_start_line, - &perl_matcher::match_end_line, - &perl_matcher::match_wild, - &perl_matcher::match_match, - &perl_matcher::match_word_boundary, - &perl_matcher::match_within_word, - &perl_matcher::match_word_start, - &perl_matcher::match_word_end, - &perl_matcher::match_buffer_start, - &perl_matcher::match_buffer_end, - &perl_matcher::match_backref, - &perl_matcher::match_long_set, - &perl_matcher::match_set, - &perl_matcher::match_jump, - &perl_matcher::match_alt, - &perl_matcher::match_rep, - &perl_matcher::match_combining, - &perl_matcher::match_soft_buffer_end, - &perl_matcher::match_restart_continue, - // Although this next line *should* be evaluated at compile time, in practice - // some compilers (VC++) emit run-time initialisation which breaks thread - // safety, so use a dispatch function instead: - //(::boost::is_random_access_iterator::value ? &perl_matcher::match_dot_repeat_fast : &perl_matcher::match_dot_repeat_slow), - &perl_matcher::match_dot_repeat_dispatch, - &perl_matcher::match_char_repeat, - &perl_matcher::match_set_repeat, - &perl_matcher::match_long_set_repeat, - &perl_matcher::match_backstep, - &perl_matcher::match_assert_backref, - &perl_matcher::match_toggle_case, - &perl_matcher::match_recursion, - &perl_matcher::match_fail, - &perl_matcher::match_accept, - &perl_matcher::match_commit, - &perl_matcher::match_then, - }; - incrementer inc(&m_recursions); - if(inc > 80) - raise_error(traits_inst, regex_constants::error_complexity); - push_recursion_stopper(); - do{ - while(pstate) - { - matcher_proc_type proc = s_match_vtable[pstate->type]; - ++state_count; - if(!(this->*proc)()) - { - if(state_count > max_state_count) - raise_error(traits_inst, regex_constants::error_complexity); - if((m_match_flags & match_partial) && (position == last) && (position != search_base)) - m_has_partial_match = true; - bool successful_unwind = unwind(false); - if((m_match_flags & match_partial) && (position == last) && (position != search_base)) - m_has_partial_match = true; - if(false == successful_unwind) - return m_recursive_result; - } - } - }while(unwind(true)); - return m_recursive_result; -} - -template -void perl_matcher::extend_stack() -{ - if(used_block_count) - { - --used_block_count; - saved_state* stack_base; - saved_state* backup_state; - stack_base = static_cast(get_mem_block()); - backup_state = reinterpret_cast(reinterpret_cast(stack_base)+BOOST_REGEX_BLOCKSIZE); - saved_extra_block* block = static_cast(backup_state); - --block; - (void) new (block) saved_extra_block(m_stack_base, m_backup_state); - m_stack_base = stack_base; - m_backup_state = block; - } - else - raise_error(traits_inst, regex_constants::error_stack); -} - -template -inline void perl_matcher::push_matched_paren(int index, const sub_match& sub) -{ - //BOOST_ASSERT(index); - saved_matched_paren* pmp = static_cast*>(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast*>(m_backup_state); - --pmp; - } - (void) new (pmp)saved_matched_paren(index, sub); - m_backup_state = pmp; -} - -template -inline void perl_matcher::push_case_change(bool c) -{ - //BOOST_ASSERT(index); - saved_change_case* pmp = static_cast(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast(m_backup_state); - --pmp; - } - (void) new (pmp)saved_change_case(c); - m_backup_state = pmp; -} - -template -inline void perl_matcher::push_recursion_stopper() -{ - saved_state* pmp = m_backup_state; - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = m_backup_state; - --pmp; - } - (void) new (pmp)saved_state(saved_type_recurse); - m_backup_state = pmp; -} - -template -inline void perl_matcher::push_assertion(const re_syntax_base* ps, bool positive) -{ - saved_assertion* pmp = static_cast*>(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast*>(m_backup_state); - --pmp; - } - (void) new (pmp)saved_assertion(positive, ps, position); - m_backup_state = pmp; -} - -template -inline void perl_matcher::push_alt(const re_syntax_base* ps) -{ - saved_position* pmp = static_cast*>(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast*>(m_backup_state); - --pmp; - } - (void) new (pmp)saved_position(ps, position, saved_state_alt); - m_backup_state = pmp; -} - -template -inline void perl_matcher::push_non_greedy_repeat(const re_syntax_base* ps) -{ - saved_position* pmp = static_cast*>(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast*>(m_backup_state); - --pmp; - } - (void) new (pmp)saved_position(ps, position, saved_state_non_greedy_long_repeat); - m_backup_state = pmp; -} - -template -inline void perl_matcher::push_repeater_count(int i, repeater_count** s) -{ - saved_repeater* pmp = static_cast*>(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast*>(m_backup_state); - --pmp; - } - (void) new (pmp)saved_repeater(i, s, position, this->recursion_stack.size() ? this->recursion_stack.back().idx : (INT_MIN + 3)); - m_backup_state = pmp; -} - -template -inline void perl_matcher::push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int state_id) -{ - saved_single_repeat* pmp = static_cast*>(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast*>(m_backup_state); - --pmp; - } - (void) new (pmp)saved_single_repeat(c, r, last_position, state_id); - m_backup_state = pmp; -} - -template -inline void perl_matcher::push_recursion(int idx, const re_syntax_base* p, results_type* presults, results_type* presults2) -{ - saved_recursion* pmp = static_cast*>(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast*>(m_backup_state); - --pmp; - } - (void) new (pmp)saved_recursion(idx, p, presults, presults2); - m_backup_state = pmp; -} - -template -bool perl_matcher::match_toggle_case() -{ - // change our case sensitivity: - push_case_change(this->icase); - this->icase = static_cast(pstate)->icase; - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_startmark() -{ - int index = static_cast(pstate)->index; - icase = static_cast(pstate)->icase; - switch(index) - { - case 0: - pstate = pstate->next.p; - break; - case -1: - case -2: - { - // forward lookahead assert: - const re_syntax_base* next_pstate = static_cast(pstate->next.p)->alt.p->next.p; - pstate = pstate->next.p->next.p; - push_assertion(next_pstate, index == -1); - break; - } - case -3: - { - // independent sub-expression, currently this is always recursive: - bool old_independent = m_independent; - m_independent = true; - const re_syntax_base* next_pstate = static_cast(pstate->next.p)->alt.p->next.p; - pstate = pstate->next.p->next.p; - bool r = false; -#if !defined(BOOST_NO_EXCEPTIONS) - try{ -#endif - r = match_all_states(); - if(!r && !m_independent) - { - // Must be unwinding from a COMMIT/SKIP/PRUNE and the independent - // sub failed, need to unwind everything else: - while(unwind(false)); - return false; - } -#if !defined(BOOST_NO_EXCEPTIONS) - } - catch(...) - { - pstate = next_pstate; - // unwind all pushed states, apart from anything else this - // ensures that all the states are correctly destructed - // not just the memory freed. - while(unwind(true)) {} - throw; - } -#endif - pstate = next_pstate; - m_independent = old_independent; -#ifdef BOOST_REGEX_MATCH_EXTRA - if(r && (m_match_flags & match_extra)) - { - // - // our captures have been stored in *m_presult - // we need to unpack them, and insert them - // back in the right order when we unwind the stack: - // - match_results temp_match(*m_presult); - unsigned i; - for(i = 0; i < temp_match.size(); ++i) - (*m_presult)[i].get_captures().clear(); - // match everything else: -#if !defined(BOOST_NO_EXCEPTIONS) - try{ -#endif - r = match_all_states(); -#if !defined(BOOST_NO_EXCEPTIONS) - } - catch(...) - { - pstate = next_pstate; - // unwind all pushed states, apart from anything else this - // ensures that all the states are correctly destructed - // not just the memory freed. - while(unwind(true)) {} - throw; - } -#endif - // now place the stored captures back: - for(i = 0; i < temp_match.size(); ++i) - { - typedef typename sub_match::capture_sequence_type seq; - seq& s1 = (*m_presult)[i].get_captures(); - const seq& s2 = temp_match[i].captures(); - s1.insert( - s1.end(), - s2.begin(), - s2.end()); - } - } -#endif - return r; - } - case -4: - { - // conditional expression: - const re_alt* alt = static_cast(pstate->next.p); - BOOST_ASSERT(alt->type == syntax_element_alt); - pstate = alt->next.p; - if(pstate->type == syntax_element_assert_backref) - { - if(!match_assert_backref()) - pstate = alt->alt.p; - break; - } - else - { - // zero width assertion, have to match this recursively: - BOOST_ASSERT(pstate->type == syntax_element_startmark); - bool negated = static_cast(pstate)->index == -2; - BidiIterator saved_position = position; - const re_syntax_base* next_pstate = static_cast(pstate->next.p)->alt.p->next.p; - pstate = pstate->next.p->next.p; -#if !defined(BOOST_NO_EXCEPTIONS) - try{ -#endif - bool r = match_all_states(); - position = saved_position; - if(negated) - r = !r; - if(r) - pstate = next_pstate; - else - pstate = alt->alt.p; -#if !defined(BOOST_NO_EXCEPTIONS) - } - catch(...) - { - pstate = next_pstate; - // unwind all pushed states, apart from anything else this - // ensures that all the states are correctly destructed - // not just the memory freed. - while(unwind(true)){} - throw; - } -#endif - break; - } - } - case -5: - { - push_matched_paren(0, (*m_presult)[0]); - m_presult->set_first(position, 0, true); - pstate = pstate->next.p; - break; - } - default: - { - BOOST_ASSERT(index > 0); - if((m_match_flags & match_nosubs) == 0) - { - push_matched_paren(index, (*m_presult)[index]); - m_presult->set_first(position, index); - } - pstate = pstate->next.p; - break; - } - } - return true; -} - -template -bool perl_matcher::match_alt() -{ - bool take_first, take_second; - const re_alt* jmp = static_cast(pstate); - - // find out which of these two alternatives we need to take: - if(position == last) - { - take_first = jmp->can_be_null & mask_take; - take_second = jmp->can_be_null & mask_skip; - } - else - { - take_first = can_start(*position, jmp->_map, (unsigned char)mask_take); - take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip); - } - - if(take_first) - { - // we can take the first alternative, - // see if we need to push next alternative: - if(take_second) - { - push_alt(jmp->alt.p); - } - pstate = pstate->next.p; - return true; - } - if(take_second) - { - pstate = jmp->alt.p; - return true; - } - return false; // neither option is possible -} - -template -bool perl_matcher::match_rep() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127 4244) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif - const re_repeat* rep = static_cast(pstate); - - // find out which of these two alternatives we need to take: - bool take_first, take_second; - if(position == last) - { - take_first = rep->can_be_null & mask_take; - take_second = rep->can_be_null & mask_skip; - } - else - { - take_first = can_start(*position, rep->_map, (unsigned char)mask_take); - take_second = can_start(*position, rep->_map, (unsigned char)mask_skip); - } - - if((m_backup_state->state_id != saved_state_repeater_count) - || (static_cast*>(m_backup_state)->count.get_id() != rep->state_id) - || (next_count->get_id() != rep->state_id)) - { - // we're moving to a different repeat from the last - // one, so set up a counter object: - push_repeater_count(rep->state_id, &next_count); - } - // - // If we've had at least one repeat already, and the last one - // matched the NULL string then set the repeat count to - // maximum: - // - next_count->check_null_repeat(position, rep->max); - - if(next_count->get_count() < rep->min) - { - // we must take the repeat: - if(take_first) - { - // increase the counter: - ++(*next_count); - pstate = rep->next.p; - return true; - } - return false; - } - - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - if(greedy) - { - // try and take the repeat if we can: - if((next_count->get_count() < rep->max) && take_first) - { - if(take_second) - { - // store position in case we fail: - push_alt(rep->alt.p); - } - // increase the counter: - ++(*next_count); - pstate = rep->next.p; - return true; - } - else if(take_second) - { - pstate = rep->alt.p; - return true; - } - return false; // can't take anything, fail... - } - else // non-greedy - { - // try and skip the repeat if we can: - if(take_second) - { - if((next_count->get_count() < rep->max) && take_first) - { - // store position in case we fail: - push_non_greedy_repeat(rep->next.p); - } - pstate = rep->alt.p; - return true; - } - if((next_count->get_count() < rep->max) && take_first) - { - // increase the counter: - ++(*next_count); - pstate = rep->next.p; - return true; - } - } - return false; -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::match_dot_repeat_slow() -{ - std::size_t count = 0; - const re_repeat* rep = static_cast(pstate); - re_syntax_base* psingle = rep->next.p; - // match compulsary repeats first: - while(count < rep->min) - { - pstate = psingle; - if(!match_wild()) - return false; - ++count; - } - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - if(greedy) - { - // repeat for as long as we can: - while(count < rep->max) - { - pstate = psingle; - if(!match_wild()) - break; - ++count; - } - // remember where we got to if this is a leading repeat: - if((rep->leading) && (count < rep->max)) - restart = position; - // push backtrack info if available: - if(count - rep->min) - push_single_repeat(count, rep, position, saved_state_greedy_single_repeat); - // jump to next state: - pstate = rep->alt.p; - return true; - } - else - { - // non-greedy, push state and return true if we can skip: - if(count < rep->max) - push_single_repeat(count, rep, position, saved_state_rep_slow_dot); - pstate = rep->alt.p; - return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip); - } -} - -template -bool perl_matcher::match_dot_repeat_fast() -{ - if(m_match_flags & match_not_dot_null) - return match_dot_repeat_slow(); - if((static_cast(pstate->next.p)->mask & match_any_mask) == 0) - return match_dot_repeat_slow(); - - const re_repeat* rep = static_cast(pstate); - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - std::size_t count = static_cast((std::min)(static_cast(::boost::BOOST_REGEX_DETAIL_NS::distance(position, last)), greedy ? rep->max : rep->min)); - if(rep->min > count) - { - position = last; - return false; // not enough text left to match - } - std::advance(position, count); - - if(greedy) - { - if((rep->leading) && (count < rep->max)) - restart = position; - // push backtrack info if available: - if(count - rep->min) - push_single_repeat(count, rep, position, saved_state_greedy_single_repeat); - // jump to next state: - pstate = rep->alt.p; - return true; - } - else - { - // non-greedy, push state and return true if we can skip: - if(count < rep->max) - push_single_repeat(count, rep, position, saved_state_rep_fast_dot); - pstate = rep->alt.p; - return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip); - } -} - -template -bool perl_matcher::match_char_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif - const re_repeat* rep = static_cast(pstate); - BOOST_ASSERT(1 == static_cast(rep->next.p)->length); - const char_type what = *reinterpret_cast(static_cast(rep->next.p) + 1); - std::size_t count = 0; - // - // start by working out how much we can skip: - // - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - std::size_t desired = greedy ? rep->max : rep->min; - if(::boost::is_random_access_iterator::value) - { - BidiIterator end = position; - // Move end forward by "desired", preferably without using distance or advance if we can - // as these can be slow for some iterator types. - std::size_t len = (desired == (std::numeric_limits::max)()) ? 0u : ::boost::BOOST_REGEX_DETAIL_NS::distance(position, last); - if(desired >= len) - end = last; - else - std::advance(end, desired); - BidiIterator origin(position); - while((position != end) && (traits_inst.translate(*position, icase) == what)) - { - ++position; - } - count = (unsigned)::boost::BOOST_REGEX_DETAIL_NS::distance(origin, position); - } - else - { - while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what)) - { - ++position; - ++count; - } - } - - if(count < rep->min) - return false; - - if(greedy) - { - if((rep->leading) && (count < rep->max)) - restart = position; - // push backtrack info if available: - if(count - rep->min) - push_single_repeat(count, rep, position, saved_state_greedy_single_repeat); - // jump to next state: - pstate = rep->alt.p; - return true; - } - else - { - // non-greedy, push state and return true if we can skip: - if(count < rep->max) - push_single_repeat(count, rep, position, saved_state_rep_char); - pstate = rep->alt.p; - return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip); - } -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::match_set_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif - const re_repeat* rep = static_cast(pstate); - const unsigned char* map = static_cast(rep->next.p)->_map; - std::size_t count = 0; - // - // start by working out how much we can skip: - // - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - std::size_t desired = greedy ? rep->max : rep->min; - if(::boost::is_random_access_iterator::value) - { - BidiIterator end = position; - // Move end forward by "desired", preferably without using distance or advance if we can - // as these can be slow for some iterator types. - std::size_t len = (desired == (std::numeric_limits::max)()) ? 0u : ::boost::BOOST_REGEX_DETAIL_NS::distance(position, last); - if(desired >= len) - end = last; - else - std::advance(end, desired); - BidiIterator origin(position); - while((position != end) && map[static_cast(traits_inst.translate(*position, icase))]) - { - ++position; - } - count = (unsigned)::boost::BOOST_REGEX_DETAIL_NS::distance(origin, position); - } - else - { - while((count < desired) && (position != last) && map[static_cast(traits_inst.translate(*position, icase))]) - { - ++position; - ++count; - } - } - - if(count < rep->min) - return false; - - if(greedy) - { - if((rep->leading) && (count < rep->max)) - restart = position; - // push backtrack info if available: - if(count - rep->min) - push_single_repeat(count, rep, position, saved_state_greedy_single_repeat); - // jump to next state: - pstate = rep->alt.p; - return true; - } - else - { - // non-greedy, push state and return true if we can skip: - if(count < rep->max) - push_single_repeat(count, rep, position, saved_state_rep_short_set); - pstate = rep->alt.p; - return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip); - } -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::match_long_set_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif - typedef typename traits::char_class_type m_type; - const re_repeat* rep = static_cast(pstate); - const re_set_long* set = static_cast*>(pstate->next.p); - std::size_t count = 0; - // - // start by working out how much we can skip: - // - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - std::size_t desired = greedy ? rep->max : rep->min; - if(::boost::is_random_access_iterator::value) - { - BidiIterator end = position; - // Move end forward by "desired", preferably without using distance or advance if we can - // as these can be slow for some iterator types. - std::size_t len = (desired == (std::numeric_limits::max)()) ? 0u : ::boost::BOOST_REGEX_DETAIL_NS::distance(position, last); - if(desired >= len) - end = last; - else - std::advance(end, desired); - BidiIterator origin(position); - while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase))) - { - ++position; - } - count = (unsigned)::boost::BOOST_REGEX_DETAIL_NS::distance(origin, position); - } - else - { - while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase))) - { - ++position; - ++count; - } - } - - if(count < rep->min) - return false; - - if(greedy) - { - if((rep->leading) && (count < rep->max)) - restart = position; - // push backtrack info if available: - if(count - rep->min) - push_single_repeat(count, rep, position, saved_state_greedy_single_repeat); - // jump to next state: - pstate = rep->alt.p; - return true; - } - else - { - // non-greedy, push state and return true if we can skip: - if(count < rep->max) - push_single_repeat(count, rep, position, saved_state_rep_long_set); - pstate = rep->alt.p; - return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip); - } -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::match_recursion() -{ - BOOST_ASSERT(pstate->type == syntax_element_recurse); - // - // See if we've seen this recursion before at this location, if we have then - // we need to prevent infinite recursion: - // - for(typename std::vector >::reverse_iterator i = recursion_stack.rbegin(); i != recursion_stack.rend(); ++i) - { - if(i->idx == static_cast(static_cast(pstate)->alt.p)->index) - { - if(i->location_of_start == position) - return false; - break; - } - } - // - // Backup call stack: - // - push_recursion_pop(); - // - // Set new call stack: - // - if(recursion_stack.capacity() == 0) - { - recursion_stack.reserve(50); - } - recursion_stack.push_back(recursion_info()); - recursion_stack.back().preturn_address = pstate->next.p; - recursion_stack.back().results = *m_presult; - pstate = static_cast(pstate)->alt.p; - recursion_stack.back().idx = static_cast(pstate)->index; - recursion_stack.back().location_of_start = position; - //if(static_cast(pstate)->state_id > 0) - { - push_repeater_count(-(2 + static_cast(pstate)->index), &next_count); - } - - return true; -} - -template -bool perl_matcher::match_endmark() -{ - int index = static_cast(pstate)->index; - icase = static_cast(pstate)->icase; - if(index > 0) - { - if((m_match_flags & match_nosubs) == 0) - { - m_presult->set_second(position, index); - } - if(!recursion_stack.empty()) - { - if(index == recursion_stack.back().idx) - { - pstate = recursion_stack.back().preturn_address; - *m_presult = recursion_stack.back().results; - push_recursion(recursion_stack.back().idx, recursion_stack.back().preturn_address, m_presult, &recursion_stack.back().results); - recursion_stack.pop_back(); - push_repeater_count(-(2 + index), &next_count); - } - } - } - else if((index < 0) && (index != -4)) - { - // matched forward lookahead: - pstate = 0; - return true; - } - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_match() -{ - if(!recursion_stack.empty()) - { - BOOST_ASSERT(0 == recursion_stack.back().idx); - pstate = recursion_stack.back().preturn_address; - push_recursion(recursion_stack.back().idx, recursion_stack.back().preturn_address, m_presult, &recursion_stack.back().results); - *m_presult = recursion_stack.back().results; - recursion_stack.pop_back(); - return true; - } - if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first)) - return false; - if((m_match_flags & match_all) && (position != last)) - return false; - if((m_match_flags & regex_constants::match_not_initial_null) && (position == search_base)) - return false; - m_presult->set_second(position); - pstate = 0; - m_has_found_match = true; - if((m_match_flags & match_posix) == match_posix) - { - m_result.maybe_assign(*m_presult); - if((m_match_flags & match_any) == 0) - return false; - } -#ifdef BOOST_REGEX_MATCH_EXTRA - if(match_extra & m_match_flags) - { - for(unsigned i = 0; i < m_presult->size(); ++i) - if((*m_presult)[i].matched) - ((*m_presult)[i]).get_captures().push_back((*m_presult)[i]); - } -#endif - return true; -} - -template -bool perl_matcher::match_commit() -{ - // Ideally we would just junk all the states that are on the stack, - // however we might not unwind correctly in that case, so for now, - // just mark that we don't backtrack into whatever is left (or rather - // we'll unwind it unconditionally without pausing to try other matches). - - switch(static_cast(pstate)->action) - { - case commit_commit: - restart = last; - break; - case commit_skip: - if(base != position) - { - restart = position; - // Have to decrement restart since it will get incremented again later: - --restart; - } - break; - case commit_prune: - break; - } - - saved_state* pmp = m_backup_state; - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = m_backup_state; - --pmp; - } - (void) new (pmp)saved_state(16); - m_backup_state = pmp; - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_then() -{ - // Just leave a mark that we need to skip to next alternative: - saved_state* pmp = m_backup_state; - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = m_backup_state; - --pmp; - } - (void) new (pmp)saved_state(17); - m_backup_state = pmp; - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::skip_until_paren(int index, bool have_match) -{ - while(pstate) - { - if(pstate->type == syntax_element_endmark) - { - if(static_cast(pstate)->index == index) - { - if(have_match) - return this->match_endmark(); - pstate = pstate->next.p; - return true; - } - else - { - // Unenclosed closing ), occurs when (*ACCEPT) is inside some other - // parenthesis which may or may not have other side effects associated with it. - const re_syntax_base* sp = pstate; - match_endmark(); - if(!pstate) - { - unwind(true); - // unwind may leave pstate NULL if we've unwound a forward lookahead, in which - // case just move to the next state and keep looking... - if (!pstate) - pstate = sp->next.p; - } - } - continue; - } - else if(pstate->type == syntax_element_match) - return true; - else if(pstate->type == syntax_element_startmark) - { - int idx = static_cast(pstate)->index; - pstate = pstate->next.p; - skip_until_paren(idx, false); - continue; - } - pstate = pstate->next.p; - } - return true; -} - -/**************************************************************************** - -Unwind and associated proceedures follow, these perform what normal stack -unwinding does in the recursive implementation. - -****************************************************************************/ - -template -bool perl_matcher::unwind(bool have_match) -{ - static unwind_proc_type const s_unwind_table[19] = - { - &perl_matcher::unwind_end, - &perl_matcher::unwind_paren, - &perl_matcher::unwind_recursion_stopper, - &perl_matcher::unwind_assertion, - &perl_matcher::unwind_alt, - &perl_matcher::unwind_repeater_counter, - &perl_matcher::unwind_extra_block, - &perl_matcher::unwind_greedy_single_repeat, - &perl_matcher::unwind_slow_dot_repeat, - &perl_matcher::unwind_fast_dot_repeat, - &perl_matcher::unwind_char_repeat, - &perl_matcher::unwind_short_set_repeat, - &perl_matcher::unwind_long_set_repeat, - &perl_matcher::unwind_non_greedy_repeat, - &perl_matcher::unwind_recursion, - &perl_matcher::unwind_recursion_pop, - &perl_matcher::unwind_commit, - &perl_matcher::unwind_then, - &perl_matcher::unwind_case, - }; - - m_recursive_result = have_match; - m_unwound_lookahead = false; - m_unwound_alt = false; - unwind_proc_type unwinder; - bool cont; - // - // keep unwinding our stack until we have something to do: - // - do - { - unwinder = s_unwind_table[m_backup_state->state_id]; - cont = (this->*unwinder)(m_recursive_result); - }while(cont); - // - // return true if we have more states to try: - // - return pstate ? true : false; -} - -template -bool perl_matcher::unwind_end(bool) -{ - pstate = 0; // nothing left to search - return false; // end of stack nothing more to search -} - -template -bool perl_matcher::unwind_case(bool) -{ - saved_change_case* pmp = static_cast(m_backup_state); - icase = pmp->icase; - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++); - m_backup_state = pmp; - return true; -} - -template -bool perl_matcher::unwind_paren(bool have_match) -{ - saved_matched_paren* pmp = static_cast*>(m_backup_state); - // restore previous values if no match was found: - if(have_match == false) - { - m_presult->set_first(pmp->sub.first, pmp->index, pmp->index == 0); - m_presult->set_second(pmp->sub.second, pmp->index, pmp->sub.matched, pmp->index == 0); - } -#ifdef BOOST_REGEX_MATCH_EXTRA - // - // we have a match, push the capture information onto the stack: - // - else if(pmp->sub.matched && (match_extra & m_match_flags)) - ((*m_presult)[pmp->index]).get_captures().push_back(pmp->sub); -#endif - // unwind stack: - m_backup_state = pmp+1; - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp); - return true; // keep looking -} - -template -bool perl_matcher::unwind_recursion_stopper(bool) -{ - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(m_backup_state++); - pstate = 0; // nothing left to search - return false; // end of stack nothing more to search -} - -template -bool perl_matcher::unwind_assertion(bool r) -{ - saved_assertion* pmp = static_cast*>(m_backup_state); - pstate = pmp->pstate; - position = pmp->position; - bool result = (r == pmp->positive); - m_recursive_result = pmp->positive ? r : !r; - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++); - m_backup_state = pmp; - m_unwound_lookahead = true; - return !result; // return false if the assertion was matched to stop search. -} - -template -bool perl_matcher::unwind_alt(bool r) -{ - saved_position* pmp = static_cast*>(m_backup_state); - if(!r) - { - pstate = pmp->pstate; - position = pmp->position; - } - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++); - m_backup_state = pmp; - m_unwound_alt = !r; - return r; -} - -template -bool perl_matcher::unwind_repeater_counter(bool) -{ - saved_repeater* pmp = static_cast*>(m_backup_state); - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++); - m_backup_state = pmp; - return true; // keep looking -} - -template -bool perl_matcher::unwind_extra_block(bool) -{ - saved_extra_block* pmp = static_cast(m_backup_state); - void* condemmed = m_stack_base; - m_stack_base = pmp->base; - m_backup_state = pmp->end; - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp); - put_mem_block(condemmed); - return true; // keep looking -} - -template -inline void perl_matcher::destroy_single_repeat() -{ - saved_single_repeat* p = static_cast*>(m_backup_state); - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(p++); - m_backup_state = p; -} - -template -bool perl_matcher::unwind_greedy_single_repeat(bool r) -{ - saved_single_repeat* pmp = static_cast*>(m_backup_state); - - // if we have a match, just discard this state: - if(r) - { - destroy_single_repeat(); - return true; - } - - const re_repeat* rep = pmp->rep; - std::size_t count = pmp->count; - BOOST_ASSERT(rep->next.p != 0); - BOOST_ASSERT(rep->alt.p != 0); - - count -= rep->min; - - if((m_match_flags & match_partial) && (position == last)) - m_has_partial_match = true; - - BOOST_ASSERT(count); - position = pmp->last_position; - - // backtrack till we can skip out: - do - { - --position; - --count; - ++state_count; - }while(count && !can_start(*position, rep->_map, mask_skip)); - - // if we've hit base, destroy this state: - if(count == 0) - { - destroy_single_repeat(); - if(!can_start(*position, rep->_map, mask_skip)) - return true; - } - else - { - pmp->count = count + rep->min; - pmp->last_position = position; - } - pstate = rep->alt.p; - return false; -} - -template -bool perl_matcher::unwind_slow_dot_repeat(bool r) -{ - saved_single_repeat* pmp = static_cast*>(m_backup_state); - - // if we have a match, just discard this state: - if(r) - { - destroy_single_repeat(); - return true; - } - - const re_repeat* rep = pmp->rep; - std::size_t count = pmp->count; - BOOST_ASSERT(rep->type == syntax_element_dot_rep); - BOOST_ASSERT(rep->next.p != 0); - BOOST_ASSERT(rep->alt.p != 0); - BOOST_ASSERT(rep->next.p->type == syntax_element_wild); - - BOOST_ASSERT(count < rep->max); - pstate = rep->next.p; - position = pmp->last_position; - - if(position != last) - { - // wind forward until we can skip out of the repeat: - do - { - if(!match_wild()) - { - // failed repeat match, discard this state and look for another: - destroy_single_repeat(); - return true; - } - ++count; - ++state_count; - pstate = rep->next.p; - }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip)); - } - if(position == last) - { - // can't repeat any more, remove the pushed state: - destroy_single_repeat(); - if((m_match_flags & match_partial) && (position == last) && (position != search_base)) - m_has_partial_match = true; - if(0 == (rep->can_be_null & mask_skip)) - return true; - } - else if(count == rep->max) - { - // can't repeat any more, remove the pushed state: - destroy_single_repeat(); - if(!can_start(*position, rep->_map, mask_skip)) - return true; - } - else - { - pmp->count = count; - pmp->last_position = position; - } - pstate = rep->alt.p; - return false; -} - -template -bool perl_matcher::unwind_fast_dot_repeat(bool r) -{ - saved_single_repeat* pmp = static_cast*>(m_backup_state); - - // if we have a match, just discard this state: - if(r) - { - destroy_single_repeat(); - return true; - } - - const re_repeat* rep = pmp->rep; - std::size_t count = pmp->count; - - BOOST_ASSERT(count < rep->max); - position = pmp->last_position; - if(position != last) - { - - // wind forward until we can skip out of the repeat: - do - { - ++position; - ++count; - ++state_count; - }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip)); - } - - // remember where we got to if this is a leading repeat: - if((rep->leading) && (count < rep->max)) - restart = position; - if(position == last) - { - // can't repeat any more, remove the pushed state: - destroy_single_repeat(); - if((m_match_flags & match_partial) && (position == last) && (position != search_base)) - m_has_partial_match = true; - if(0 == (rep->can_be_null & mask_skip)) - return true; - } - else if(count == rep->max) - { - // can't repeat any more, remove the pushed state: - destroy_single_repeat(); - if(!can_start(*position, rep->_map, mask_skip)) - return true; - } - else - { - pmp->count = count; - pmp->last_position = position; - } - pstate = rep->alt.p; - return false; -} - -template -bool perl_matcher::unwind_char_repeat(bool r) -{ - saved_single_repeat* pmp = static_cast*>(m_backup_state); - - // if we have a match, just discard this state: - if(r) - { - destroy_single_repeat(); - return true; - } - - const re_repeat* rep = pmp->rep; - std::size_t count = pmp->count; - pstate = rep->next.p; - const char_type what = *reinterpret_cast(static_cast(pstate) + 1); - position = pmp->last_position; - - BOOST_ASSERT(rep->type == syntax_element_char_rep); - BOOST_ASSERT(rep->next.p != 0); - BOOST_ASSERT(rep->alt.p != 0); - BOOST_ASSERT(rep->next.p->type == syntax_element_literal); - BOOST_ASSERT(count < rep->max); - - if(position != last) - { - // wind forward until we can skip out of the repeat: - do - { - if(traits_inst.translate(*position, icase) != what) - { - // failed repeat match, discard this state and look for another: - destroy_single_repeat(); - return true; - } - ++count; - ++ position; - ++state_count; - pstate = rep->next.p; - }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip)); - } - // remember where we got to if this is a leading repeat: - if((rep->leading) && (count < rep->max)) - restart = position; - if(position == last) - { - // can't repeat any more, remove the pushed state: - destroy_single_repeat(); - if((m_match_flags & match_partial) && (position == last) && (position != search_base)) - m_has_partial_match = true; - if(0 == (rep->can_be_null & mask_skip)) - return true; - } - else if(count == rep->max) - { - // can't repeat any more, remove the pushed state: - destroy_single_repeat(); - if(!can_start(*position, rep->_map, mask_skip)) - return true; - } - else - { - pmp->count = count; - pmp->last_position = position; - } - pstate = rep->alt.p; - return false; -} - -template -bool perl_matcher::unwind_short_set_repeat(bool r) -{ - saved_single_repeat* pmp = static_cast*>(m_backup_state); - - // if we have a match, just discard this state: - if(r) - { - destroy_single_repeat(); - return true; - } - - const re_repeat* rep = pmp->rep; - std::size_t count = pmp->count; - pstate = rep->next.p; - const unsigned char* map = static_cast(rep->next.p)->_map; - position = pmp->last_position; - - BOOST_ASSERT(rep->type == syntax_element_short_set_rep); - BOOST_ASSERT(rep->next.p != 0); - BOOST_ASSERT(rep->alt.p != 0); - BOOST_ASSERT(rep->next.p->type == syntax_element_set); - BOOST_ASSERT(count < rep->max); - - if(position != last) - { - // wind forward until we can skip out of the repeat: - do - { - if(!map[static_cast(traits_inst.translate(*position, icase))]) - { - // failed repeat match, discard this state and look for another: - destroy_single_repeat(); - return true; - } - ++count; - ++ position; - ++state_count; - pstate = rep->next.p; - }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip)); - } - // remember where we got to if this is a leading repeat: - if((rep->leading) && (count < rep->max)) - restart = position; - if(position == last) - { - // can't repeat any more, remove the pushed state: - destroy_single_repeat(); - if((m_match_flags & match_partial) && (position == last) && (position != search_base)) - m_has_partial_match = true; - if(0 == (rep->can_be_null & mask_skip)) - return true; - } - else if(count == rep->max) - { - // can't repeat any more, remove the pushed state: - destroy_single_repeat(); - if(!can_start(*position, rep->_map, mask_skip)) - return true; - } - else - { - pmp->count = count; - pmp->last_position = position; - } - pstate = rep->alt.p; - return false; -} - -template -bool perl_matcher::unwind_long_set_repeat(bool r) -{ - typedef typename traits::char_class_type m_type; - saved_single_repeat* pmp = static_cast*>(m_backup_state); - - // if we have a match, just discard this state: - if(r) - { - destroy_single_repeat(); - return true; - } - - const re_repeat* rep = pmp->rep; - std::size_t count = pmp->count; - pstate = rep->next.p; - const re_set_long* set = static_cast*>(pstate); - position = pmp->last_position; - - BOOST_ASSERT(rep->type == syntax_element_long_set_rep); - BOOST_ASSERT(rep->next.p != 0); - BOOST_ASSERT(rep->alt.p != 0); - BOOST_ASSERT(rep->next.p->type == syntax_element_long_set); - BOOST_ASSERT(count < rep->max); - - if(position != last) - { - // wind forward until we can skip out of the repeat: - do - { - if(position == re_is_set_member(position, last, set, re.get_data(), icase)) - { - // failed repeat match, discard this state and look for another: - destroy_single_repeat(); - return true; - } - ++position; - ++count; - ++state_count; - pstate = rep->next.p; - }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip)); - } - // remember where we got to if this is a leading repeat: - if((rep->leading) && (count < rep->max)) - restart = position; - if(position == last) - { - // can't repeat any more, remove the pushed state: - destroy_single_repeat(); - if((m_match_flags & match_partial) && (position == last) && (position != search_base)) - m_has_partial_match = true; - if(0 == (rep->can_be_null & mask_skip)) - return true; - } - else if(count == rep->max) - { - // can't repeat any more, remove the pushed state: - destroy_single_repeat(); - if(!can_start(*position, rep->_map, mask_skip)) - return true; - } - else - { - pmp->count = count; - pmp->last_position = position; - } - pstate = rep->alt.p; - return false; -} - -template -bool perl_matcher::unwind_non_greedy_repeat(bool r) -{ - saved_position* pmp = static_cast*>(m_backup_state); - if(!r) - { - position = pmp->position; - pstate = pmp->pstate; - ++(*next_count); - } - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++); - m_backup_state = pmp; - return r; -} - -template -bool perl_matcher::unwind_recursion(bool r) -{ - // We are backtracking back inside a recursion, need to push the info - // back onto the recursion stack, and do so unconditionally, otherwise - // we can get mismatched pushes and pops... - saved_recursion* pmp = static_cast*>(m_backup_state); - if (!r) - { - recursion_stack.push_back(recursion_info()); - recursion_stack.back().idx = pmp->recursion_id; - recursion_stack.back().preturn_address = pmp->preturn_address; - recursion_stack.back().results = pmp->prior_results; - recursion_stack.back().location_of_start = position; - *m_presult = pmp->internal_results; - } - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++); - m_backup_state = pmp; - return true; -} - -template -bool perl_matcher::unwind_recursion_pop(bool r) -{ - // Backtracking out of a recursion, we must pop state off the recursion - // stack unconditionally to ensure matched pushes and pops: - saved_state* pmp = static_cast(m_backup_state); - if (!r && !recursion_stack.empty()) - { - *m_presult = recursion_stack.back().results; - position = recursion_stack.back().location_of_start; - recursion_stack.pop_back(); - } - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++); - m_backup_state = pmp; - return true; -} - -template -void perl_matcher::push_recursion_pop() -{ - saved_state* pmp = static_cast(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast(m_backup_state); - --pmp; - } - (void) new (pmp)saved_state(15); - m_backup_state = pmp; -} - -template -bool perl_matcher::unwind_commit(bool b) -{ - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(m_backup_state++); - while(unwind(b) && !m_unwound_lookahead){} - if(m_unwound_lookahead && pstate) - { - // - // If we stop because we just unwound an assertion, put the - // commit state back on the stack again: - // - m_unwound_lookahead = false; - saved_state* pmp = m_backup_state; - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = m_backup_state; - --pmp; - } - (void) new (pmp)saved_state(16); - m_backup_state = pmp; - } - // This prevents us from stopping when we exit from an independent sub-expression: - m_independent = false; - return false; -} - -template -bool perl_matcher::unwind_then(bool b) -{ - // Unwind everything till we hit an alternative: - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(m_backup_state++); - bool result = false; - while((result = unwind(b)) && !m_unwound_alt){} - // We're now pointing at the next alternative, need one more backtrack - // since *all* the other alternatives must fail once we've reached a THEN clause: - if(result && m_unwound_alt) - unwind(b); - return false; -} - -/* -template -bool perl_matcher::unwind_parenthesis_pop(bool r) -{ - saved_state* pmp = static_cast(m_backup_state); - if(!r) - { - --parenthesis_stack_position; - } - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++); - m_backup_state = pmp; - return true; -} - -template -void perl_matcher::push_parenthesis_pop() -{ - saved_state* pmp = static_cast(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast(m_backup_state); - --pmp; - } - (void) new (pmp)saved_state(16); - m_backup_state = pmp; -} - -template -bool perl_matcher::unwind_parenthesis_push(bool r) -{ - saved_position* pmp = static_cast*>(m_backup_state); - if(!r) - { - parenthesis_stack[parenthesis_stack_position++] = pmp->position; - } - boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++); - m_backup_state = pmp; - return true; -} - -template -inline void perl_matcher::push_parenthesis_push(BidiIterator p) -{ - saved_position* pmp = static_cast*>(m_backup_state); - --pmp; - if(pmp < m_stack_base) - { - extend_stack(); - pmp = static_cast*>(m_backup_state); - --pmp; - } - (void) new (pmp)saved_position(0, p, 17); - m_backup_state = pmp; -} -*/ -} // namespace BOOST_REGEX_DETAIL_NS -} // namespace boost - -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - - diff --git a/src/boost/boost/regex/v4/perl_matcher_recursive.hpp b/src/boost/boost/regex/v4/perl_matcher_recursive.hpp deleted file mode 100644 index b76e4276e..000000000 --- a/src/boost/boost/regex/v4/perl_matcher_recursive.hpp +++ /dev/null @@ -1,1131 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE perl_matcher_common.cpp - * VERSION see - * DESCRIPTION: Definitions of perl_matcher member functions that are - * specific to the recursive implementation. - */ - -#ifndef BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP -#define BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4800) -#endif - -namespace boost{ -namespace BOOST_REGEX_DETAIL_NS{ - -template -class backup_subex -{ - int index; - sub_match sub; -public: - template - backup_subex(const match_results& w, int i) - : index(i), sub(w[i], false) {} - template - void restore(match_results& w) - { - w.set_first(sub.first, index, index == 0); - w.set_second(sub.second, index, sub.matched, index == 0); - } - const sub_match& get() { return sub; } -}; - -template -bool perl_matcher::match_all_states() -{ - static matcher_proc_type const s_match_vtable[34] = - { - (&perl_matcher::match_startmark), - &perl_matcher::match_endmark, - &perl_matcher::match_literal, - &perl_matcher::match_start_line, - &perl_matcher::match_end_line, - &perl_matcher::match_wild, - &perl_matcher::match_match, - &perl_matcher::match_word_boundary, - &perl_matcher::match_within_word, - &perl_matcher::match_word_start, - &perl_matcher::match_word_end, - &perl_matcher::match_buffer_start, - &perl_matcher::match_buffer_end, - &perl_matcher::match_backref, - &perl_matcher::match_long_set, - &perl_matcher::match_set, - &perl_matcher::match_jump, - &perl_matcher::match_alt, - &perl_matcher::match_rep, - &perl_matcher::match_combining, - &perl_matcher::match_soft_buffer_end, - &perl_matcher::match_restart_continue, - // Although this next line *should* be evaluated at compile time, in practice - // some compilers (VC++) emit run-time initialisation which breaks thread - // safety, so use a dispatch function instead: - //(::boost::is_random_access_iterator::value ? &perl_matcher::match_dot_repeat_fast : &perl_matcher::match_dot_repeat_slow), - &perl_matcher::match_dot_repeat_dispatch, - &perl_matcher::match_char_repeat, - &perl_matcher::match_set_repeat, - &perl_matcher::match_long_set_repeat, - &perl_matcher::match_backstep, - &perl_matcher::match_assert_backref, - &perl_matcher::match_toggle_case, - &perl_matcher::match_recursion, - &perl_matcher::match_fail, - &perl_matcher::match_accept, - &perl_matcher::match_commit, - &perl_matcher::match_then, - }; - - if(state_count > max_state_count) - raise_error(traits_inst, regex_constants::error_complexity); - while(pstate) - { - matcher_proc_type proc = s_match_vtable[pstate->type]; - ++state_count; - if(!(this->*proc)()) - { - if((m_match_flags & match_partial) && (position == last) && (position != search_base)) - m_has_partial_match = true; - return 0; - } - } - return true; -} - -template -bool perl_matcher::match_startmark() -{ - int index = static_cast(pstate)->index; - icase = static_cast(pstate)->icase; - bool r = true; - switch(index) - { - case 0: - pstate = pstate->next.p; - break; - case -1: - case -2: - { - // forward lookahead assert: - BidiIterator old_position(position); - const re_syntax_base* next_pstate = static_cast(pstate->next.p)->alt.p->next.p; - pstate = pstate->next.p->next.p; - r = match_all_states(); - pstate = next_pstate; - position = old_position; - if((r && (index != -1)) || (!r && (index != -2))) - r = false; - else - r = true; - if(r && m_have_accept) - r = skip_until_paren(INT_MAX); - break; - } - case -3: - { - // independent sub-expression: - bool old_independent = m_independent; - m_independent = true; - const re_syntax_base* next_pstate = static_cast(pstate->next.p)->alt.p->next.p; - pstate = pstate->next.p->next.p; - bool can_backtrack = m_can_backtrack; - r = match_all_states(); - if(r) - m_can_backtrack = can_backtrack; - pstate = next_pstate; - m_independent = old_independent; -#ifdef BOOST_REGEX_MATCH_EXTRA - if(r && (m_match_flags & match_extra)) - { - // - // our captures have been stored in *m_presult - // we need to unpack them, and insert them - // back in the right order when we unwind the stack: - // - unsigned i; - match_results tm(*m_presult); - for(i = 0; i < tm.size(); ++i) - (*m_presult)[i].get_captures().clear(); - // match everything else: - r = match_all_states(); - // now place the stored captures back: - for(i = 0; i < tm.size(); ++i) - { - typedef typename sub_match::capture_sequence_type seq; - seq& s1 = (*m_presult)[i].get_captures(); - const seq& s2 = tm[i].captures(); - s1.insert( - s1.end(), - s2.begin(), - s2.end()); - } - } -#endif - if(r && m_have_accept) - r = skip_until_paren(INT_MAX); - break; - } - case -4: - { - // conditional expression: - const re_alt* alt = static_cast(pstate->next.p); - BOOST_ASSERT(alt->type == syntax_element_alt); - pstate = alt->next.p; - if(pstate->type == syntax_element_assert_backref) - { - if(!match_assert_backref()) - pstate = alt->alt.p; - break; - } - else - { - // zero width assertion, have to match this recursively: - BOOST_ASSERT(pstate->type == syntax_element_startmark); - bool negated = static_cast(pstate)->index == -2; - BidiIterator saved_position = position; - const re_syntax_base* next_pstate = static_cast(pstate->next.p)->alt.p->next.p; - pstate = pstate->next.p->next.p; - bool res = match_all_states(); - position = saved_position; - if(negated) - res = !res; - if(res) - pstate = next_pstate; - else - pstate = alt->alt.p; - break; - } - } - case -5: - { - // Reset start of $0, since we have a \K escape - backup_subex sub(*m_presult, 0); - m_presult->set_first(position, 0, true); - pstate = pstate->next.p; - r = match_all_states(); - if(r == false) - sub.restore(*m_presult); - break; - } - default: - { - BOOST_ASSERT(index > 0); - if((m_match_flags & match_nosubs) == 0) - { - backup_subex sub(*m_presult, index); - m_presult->set_first(position, index); - pstate = pstate->next.p; - r = match_all_states(); - if(r == false) - sub.restore(*m_presult); -#ifdef BOOST_REGEX_MATCH_EXTRA - // - // we have a match, push the capture information onto the stack: - // - else if(sub.get().matched && (match_extra & m_match_flags)) - ((*m_presult)[index]).get_captures().push_back(sub.get()); -#endif - } - else - { - pstate = pstate->next.p; - } - break; - } - } - return r; -} - -template -bool perl_matcher::match_alt() -{ - bool take_first, take_second; - const re_alt* jmp = static_cast(pstate); - - // find out which of these two alternatives we need to take: - if(position == last) - { - take_first = jmp->can_be_null & mask_take; - take_second = jmp->can_be_null & mask_skip; - } - else - { - take_first = can_start(*position, jmp->_map, (unsigned char)mask_take); - take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip); - } - - if(take_first) - { - // we can take the first alternative, - // see if we need to push next alternative: - if(take_second) - { - BidiIterator oldposition(position); - const re_syntax_base* old_pstate = jmp->alt.p; - pstate = pstate->next.p; - bool oldcase = icase; - m_have_then = false; - if(!match_all_states()) - { - pstate = old_pstate; - position = oldposition; - icase = oldcase; - if(m_have_then) - { - m_can_backtrack = true; - m_have_then = false; - return false; - } - } - m_have_then = false; - return m_can_backtrack; - } - pstate = pstate->next.p; - return true; - } - if(take_second) - { - pstate = jmp->alt.p; - return true; - } - return false; // neither option is possible -} - -template -bool perl_matcher::match_rep() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127 4244) -#endif - const re_repeat* rep = static_cast(pstate); - // - // Always copy the repeat count, so that the state is restored - // when we exit this scope: - // - repeater_count r(rep->state_id, &next_count, position, this->recursion_stack.size() ? this->recursion_stack.back().idx : INT_MIN + 3); - // - // If we've had at least one repeat already, and the last one - // matched the NULL string then set the repeat count to - // maximum: - // - next_count->check_null_repeat(position, rep->max); - - // find out which of these two alternatives we need to take: - bool take_first, take_second; - if(position == last) - { - take_first = rep->can_be_null & mask_take; - take_second = rep->can_be_null & mask_skip; - } - else - { - take_first = can_start(*position, rep->_map, (unsigned char)mask_take); - take_second = can_start(*position, rep->_map, (unsigned char)mask_skip); - } - - if(next_count->get_count() < rep->min) - { - // we must take the repeat: - if(take_first) - { - // increase the counter: - ++(*next_count); - pstate = rep->next.p; - return match_all_states(); - } - return false; - } - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - if(greedy) - { - // try and take the repeat if we can: - if((next_count->get_count() < rep->max) && take_first) - { - // store position in case we fail: - BidiIterator pos = position; - // increase the counter: - ++(*next_count); - pstate = rep->next.p; - if(match_all_states()) - return true; - if(!m_can_backtrack) - return false; - // failed repeat, reset posistion and fall through for alternative: - position = pos; - } - if(take_second) - { - pstate = rep->alt.p; - return true; - } - return false; // can't take anything, fail... - } - else // non-greedy - { - // try and skip the repeat if we can: - if(take_second) - { - // store position in case we fail: - BidiIterator pos = position; - pstate = rep->alt.p; - if(match_all_states()) - return true; - if(!m_can_backtrack) - return false; - // failed alternative, reset posistion and fall through for repeat: - position = pos; - } - if((next_count->get_count() < rep->max) && take_first) - { - // increase the counter: - ++(*next_count); - pstate = rep->next.p; - return match_all_states(); - } - } - return false; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::match_dot_repeat_slow() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif - std::size_t count = 0; - const re_repeat* rep = static_cast(pstate); - re_syntax_base* psingle = rep->next.p; - // match compulsary repeats first: - while(count < rep->min) - { - pstate = psingle; - if(!match_wild()) - return false; - ++count; - } - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - if(greedy) - { - // normal repeat: - while(count < rep->max) - { - pstate = psingle; - if(!match_wild()) - break; - ++count; - } - if((rep->leading) && (count < rep->max)) - restart = position; - pstate = rep; - return backtrack_till_match(count - rep->min); - } - else - { - // non-greedy, keep trying till we get a match: - BidiIterator save_pos; - do - { - if((rep->leading) && (rep->max == UINT_MAX)) - restart = position; - pstate = rep->alt.p; - save_pos = position; - ++state_count; - if(match_all_states()) - return true; - if((count >= rep->max) || !m_can_backtrack) - return false; - ++count; - pstate = psingle; - position = save_pos; - if(!match_wild()) - return false; - }while(true); - } -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::match_dot_repeat_fast() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif - if(m_match_flags & match_not_dot_null) - return match_dot_repeat_slow(); - if((static_cast(pstate->next.p)->mask & match_any_mask) == 0) - return match_dot_repeat_slow(); - // - // start by working out how much we can skip: - // - const re_repeat* rep = static_cast(pstate); -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4267) -#endif - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - std::size_t count = (std::min)(static_cast(::boost::BOOST_REGEX_DETAIL_NS::distance(position, last)), greedy ? rep->max : rep->min); - if(rep->min > count) - { - position = last; - return false; // not enough text left to match - } - std::advance(position, count); -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - if((rep->leading) && (count < rep->max) && greedy) - restart = position; - if(greedy) - return backtrack_till_match(count - rep->min); - - // non-greedy, keep trying till we get a match: - BidiIterator save_pos; - do - { - while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip)) - { - ++position; - ++count; - } - if((rep->leading) && (rep->max == UINT_MAX)) - restart = position; - pstate = rep->alt.p; - save_pos = position; - ++state_count; - if(match_all_states()) - return true; - if((count >= rep->max) || !m_can_backtrack) - return false; - if(save_pos == last) - return false; - position = ++save_pos; - ++count; - }while(true); -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::match_char_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#pragma warning(disable:4267) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif - const re_repeat* rep = static_cast(pstate); - BOOST_ASSERT(1 == static_cast(rep->next.p)->length); - const char_type what = *reinterpret_cast(static_cast(rep->next.p) + 1); - // - // start by working out how much we can skip: - // - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - std::size_t count, desired; - if(::boost::is_random_access_iterator::value) - { - desired = - (std::min)( - (std::size_t)(greedy ? rep->max : rep->min), - (std::size_t)::boost::BOOST_REGEX_DETAIL_NS::distance(position, last)); - count = desired; - ++desired; - if(icase) - { - while(--desired && (traits_inst.translate_nocase(*position) == what)) - { - ++position; - } - } - else - { - while(--desired && (traits_inst.translate(*position) == what)) - { - ++position; - } - } - count = count - desired; - } - else - { - count = 0; - desired = greedy ? rep->max : rep->min; - while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what)) - { - ++position; - ++count; - } - } - if((rep->leading) && (count < rep->max) && greedy) - restart = position; - if(count < rep->min) - return false; - - if(greedy) - return backtrack_till_match(count - rep->min); - - // non-greedy, keep trying till we get a match: - BidiIterator save_pos; - do - { - while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip)) - { - if((traits_inst.translate(*position, icase) == what)) - { - ++position; - ++count; - } - else - return false; // counldn't repeat even though it was the only option - } - if((rep->leading) && (rep->max == UINT_MAX)) - restart = position; - pstate = rep->alt.p; - save_pos = position; - ++state_count; - if(match_all_states()) - return true; - if((count >= rep->max) || !m_can_backtrack) - return false; - position = save_pos; - if(position == last) - return false; - if(traits_inst.translate(*position, icase) == what) - { - ++position; - ++count; - } - else - { - return false; - } - }while(true); -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::match_set_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif - const re_repeat* rep = static_cast(pstate); - const unsigned char* map = static_cast(rep->next.p)->_map; - std::size_t count = 0; - // - // start by working out how much we can skip: - // - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - std::size_t desired = greedy ? rep->max : rep->min; - if(::boost::is_random_access_iterator::value) - { - BidiIterator end = position; - // Move end forward by "desired", preferably without using distance or advance if we can - // as these can be slow for some iterator types. - std::size_t len = (desired == (std::numeric_limits::max)()) ? 0u : ::boost::BOOST_REGEX_DETAIL_NS::distance(position, last); - if(desired >= len) - end = last; - else - std::advance(end, desired); - BidiIterator origin(position); - while((position != end) && map[static_cast(traits_inst.translate(*position, icase))]) - { - ++position; - } - count = (unsigned)::boost::BOOST_REGEX_DETAIL_NS::distance(origin, position); - } - else - { - while((count < desired) && (position != last) && map[static_cast(traits_inst.translate(*position, icase))]) - { - ++position; - ++count; - } - } - if((rep->leading) && (count < rep->max) && greedy) - restart = position; - if(count < rep->min) - return false; - - if(greedy) - return backtrack_till_match(count - rep->min); - - // non-greedy, keep trying till we get a match: - BidiIterator save_pos; - do - { - while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip)) - { - if(map[static_cast(traits_inst.translate(*position, icase))]) - { - ++position; - ++count; - } - else - return false; // counldn't repeat even though it was the only option - } - if((rep->leading) && (rep->max == UINT_MAX)) - restart = position; - pstate = rep->alt.p; - save_pos = position; - ++state_count; - if(match_all_states()) - return true; - if((count >= rep->max) || !m_can_backtrack) - return false; - position = save_pos; - if(position == last) - return false; - if(map[static_cast(traits_inst.translate(*position, icase))]) - { - ++position; - ++count; - } - else - { - return false; - } - }while(true); -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::match_long_set_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif - typedef typename traits::char_class_type char_class_type; - const re_repeat* rep = static_cast(pstate); - const re_set_long* set = static_cast*>(pstate->next.p); - std::size_t count = 0; - // - // start by working out how much we can skip: - // - bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent); - std::size_t desired = greedy ? rep->max : rep->min; - if(::boost::is_random_access_iterator::value) - { - BidiIterator end = position; - // Move end forward by "desired", preferably without using distance or advance if we can - // as these can be slow for some iterator types. - std::size_t len = (desired == (std::numeric_limits::max)()) ? 0u : ::boost::BOOST_REGEX_DETAIL_NS::distance(position, last); - if(desired >= len) - end = last; - else - std::advance(end, desired); - BidiIterator origin(position); - while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase))) - { - ++position; - } - count = (unsigned)::boost::BOOST_REGEX_DETAIL_NS::distance(origin, position); - } - else - { - while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase))) - { - ++position; - ++count; - } - } - if((rep->leading) && (count < rep->max) && greedy) - restart = position; - if(count < rep->min) - return false; - - if(greedy) - return backtrack_till_match(count - rep->min); - - // non-greedy, keep trying till we get a match: - BidiIterator save_pos; - do - { - while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip)) - { - if(position != re_is_set_member(position, last, set, re.get_data(), icase)) - { - ++position; - ++count; - } - else - return false; // counldn't repeat even though it was the only option - } - if((rep->leading) && (rep->max == UINT_MAX)) - restart = position; - pstate = rep->alt.p; - save_pos = position; - ++state_count; - if(match_all_states()) - return true; - if((count >= rep->max) || !m_can_backtrack) - return false; - position = save_pos; - if(position == last) - return false; - if(position != re_is_set_member(position, last, set, re.get_data(), icase)) - { - ++position; - ++count; - } - else - { - return false; - } - }while(true); -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::backtrack_till_match(std::size_t count) -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif - if(!m_can_backtrack) - return false; - if((m_match_flags & match_partial) && (position == last)) - m_has_partial_match = true; - - const re_repeat* rep = static_cast(pstate); - BidiIterator backtrack = position; - if(position == last) - { - if(rep->can_be_null & mask_skip) - { - pstate = rep->alt.p; - if(match_all_states()) - return true; - } - if(count) - { - position = --backtrack; - --count; - } - else - return false; - } - do - { - while(count && !can_start(*position, rep->_map, mask_skip)) - { - --position; - --count; - ++state_count; - } - pstate = rep->alt.p; - backtrack = position; - if(match_all_states()) - return true; - if(count == 0) - return false; - position = --backtrack; - ++state_count; - --count; - }while(true); -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template -bool perl_matcher::match_recursion() -{ - BOOST_ASSERT(pstate->type == syntax_element_recurse); - // - // Set new call stack: - // - if(recursion_stack.capacity() == 0) - { - recursion_stack.reserve(50); - } - // - // See if we've seen this recursion before at this location, if we have then - // we need to prevent infinite recursion: - // - for(typename std::vector >::reverse_iterator i = recursion_stack.rbegin(); i != recursion_stack.rend(); ++i) - { - if(i->idx == static_cast(static_cast(pstate)->alt.p)->index) - { - if(i->location_of_start == position) - return false; - break; - } - } - // - // Now get on with it: - // - recursion_stack.push_back(recursion_info()); - recursion_stack.back().preturn_address = pstate->next.p; - recursion_stack.back().results = *m_presult; - recursion_stack.back().repeater_stack = next_count; - recursion_stack.back().location_of_start = position; - pstate = static_cast(pstate)->alt.p; - recursion_stack.back().idx = static_cast(pstate)->index; - - repeater_count* saved = next_count; - repeater_count r(&next_count); // resets all repeat counts since we're recursing and starting fresh on those - next_count = &r; - bool can_backtrack = m_can_backtrack; - bool result = match_all_states(); - m_can_backtrack = can_backtrack; - next_count = saved; - - if(!result) - { - next_count = recursion_stack.back().repeater_stack; - *m_presult = recursion_stack.back().results; - recursion_stack.pop_back(); - return false; - } - return true; -} - -template -bool perl_matcher::match_endmark() -{ - int index = static_cast(pstate)->index; - icase = static_cast(pstate)->icase; - if(index > 0) - { - if((m_match_flags & match_nosubs) == 0) - { - m_presult->set_second(position, index); - } - if(!recursion_stack.empty()) - { - if(index == recursion_stack.back().idx) - { - recursion_info saved = recursion_stack.back(); - recursion_stack.pop_back(); - pstate = saved.preturn_address; - repeater_count* saved_count = next_count; - next_count = saved.repeater_stack; - *m_presult = saved.results; - if(!match_all_states()) - { - recursion_stack.push_back(saved); - next_count = saved_count; - return false; - } - } - } - } - else if((index < 0) && (index != -4)) - { - // matched forward lookahead: - pstate = 0; - return true; - } - pstate = pstate ? pstate->next.p : 0; - return true; -} - -template -bool perl_matcher::match_match() -{ - if(!recursion_stack.empty()) - { - BOOST_ASSERT(0 == recursion_stack.back().idx); - const re_syntax_base* saved_state = pstate = recursion_stack.back().preturn_address; - *m_presult = recursion_stack.back().results; - recursion_stack.pop_back(); - if(!match_all_states()) - { - recursion_stack.push_back(recursion_info()); - recursion_stack.back().preturn_address = saved_state; - recursion_stack.back().results = *m_presult; - recursion_stack.back().location_of_start = position; - return false; - } - return true; - } - if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first)) - return false; - if((m_match_flags & match_all) && (position != last)) - return false; - if((m_match_flags & regex_constants::match_not_initial_null) && (position == search_base)) - return false; - m_presult->set_second(position); - pstate = 0; - m_has_found_match = true; - if((m_match_flags & match_posix) == match_posix) - { - m_result.maybe_assign(*m_presult); - if((m_match_flags & match_any) == 0) - return false; - } -#ifdef BOOST_REGEX_MATCH_EXTRA - if(match_extra & m_match_flags) - { - for(unsigned i = 0; i < m_presult->size(); ++i) - if((*m_presult)[i].matched) - ((*m_presult)[i]).get_captures().push_back((*m_presult)[i]); - } -#endif - return true; -} - -template -bool perl_matcher::match_commit() -{ - m_can_backtrack = false; - int action = static_cast(pstate)->action; - switch(action) - { - case commit_commit: - restart = last; - break; - case commit_skip: - restart = position; - break; - } - pstate = pstate->next.p; - return true; -} - -template -bool perl_matcher::match_then() -{ - pstate = pstate->next.p; - if(match_all_states()) - return true; - m_can_backtrack = false; - m_have_then = true; - return false; -} - -template -bool perl_matcher::match_toggle_case() -{ - // change our case sensitivity: - bool oldcase = this->icase; - this->icase = static_cast(pstate)->icase; - pstate = pstate->next.p; - bool result = match_all_states(); - this->icase = oldcase; - return result; -} - - - -template -bool perl_matcher::skip_until_paren(int index, bool have_match) -{ - while(pstate) - { - if(pstate->type == syntax_element_endmark) - { - if(static_cast(pstate)->index == index) - { - if(have_match) - return this->match_endmark(); - pstate = pstate->next.p; - return true; - } - else - { - // Unenclosed closing ), occurs when (*ACCEPT) is inside some other - // parenthesis which may or may not have other side effects associated with it. - bool r = match_endmark(); - m_have_accept = true; - if(!pstate) - return r; - } - continue; - } - else if(pstate->type == syntax_element_match) - return true; - else if(pstate->type == syntax_element_startmark) - { - int idx = static_cast(pstate)->index; - pstate = pstate->next.p; - skip_until_paren(idx, false); - continue; - } - pstate = pstate->next.p; - } - return true; -} - - -} // namespace BOOST_REGEX_DETAIL_NS -} // namespace boost -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/src/boost/boost/regex/v4/primary_transform.hpp b/src/boost/boost/regex/v4/primary_transform.hpp deleted file mode 100644 index 8b3baaeb9..000000000 --- a/src/boost/boost/regex/v4/primary_transform.hpp +++ /dev/null @@ -1,146 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: primary_transform.hpp - * VERSION: see - * DESCRIPTION: Heuristically determines the sort string format in use - * by the current locale. - */ - -#ifndef BOOST_REGEX_PRIMARY_TRANSFORM -#define BOOST_REGEX_PRIMARY_TRANSFORM - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ - namespace BOOST_REGEX_DETAIL_NS{ - - -enum{ - sort_C, - sort_fixed, - sort_delim, - sort_unknown -}; - -template -unsigned count_chars(const S& s, charT c) -{ - // - // Count how many occurances of character c occur - // in string s: if c is a delimeter between collation - // fields, then this should be the same value for all - // sort keys: - // - unsigned int count = 0; - for(unsigned pos = 0; pos < s.size(); ++pos) - { - if(s[pos] == c) ++count; - } - return count; -} - - -template -unsigned find_sort_syntax(const traits* pt, charT* delim) -{ - // - // compare 'a' with 'A' to see how similar they are, - // should really use a-accute but we can't portably do that, - // - typedef typename traits::string_type string_type; - typedef typename traits::char_type char_type; - - // Suppress incorrect warning for MSVC - (void)pt; - - char_type a[2] = {'a', '\0', }; - string_type sa(pt->transform(a, a+1)); - if(sa == a) - { - *delim = 0; - return sort_C; - } - char_type A[2] = { 'A', '\0', }; - string_type sA(pt->transform(A, A+1)); - char_type c[2] = { ';', '\0', }; - string_type sc(pt->transform(c, c+1)); - - int pos = 0; - while((pos <= static_cast(sa.size())) && (pos <= static_cast(sA.size())) && (sa[pos] == sA[pos])) ++pos; - --pos; - if(pos < 0) - { - *delim = 0; - return sort_unknown; - } - // - // at this point sa[pos] is either the end of a fixed width field - // or the character that acts as a delimiter: - // - charT maybe_delim = sa[pos]; - if((pos != 0) && (count_chars(sa, maybe_delim) == count_chars(sA, maybe_delim)) && (count_chars(sa, maybe_delim) == count_chars(sc, maybe_delim))) - { - *delim = maybe_delim; - return sort_delim; - } - // - // OK doen't look like a delimiter, try for fixed width field: - // - if((sa.size() == sA.size()) && (sa.size() == sc.size())) - { - // note assumes that the fixed width field is less than - // (numeric_limits::max)(), should be true for all types - // I can't imagine 127 character fields... - *delim = static_cast(++pos); - return sort_fixed; - } - // - // don't know what it is: - // - *delim = 0; - return sort_unknown; -} - - - } // namespace BOOST_REGEX_DETAIL_NS -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - - - - - - - diff --git a/src/boost/boost/regex/v4/protected_call.hpp b/src/boost/boost/regex/v4/protected_call.hpp deleted file mode 100644 index 51f16b993..000000000 --- a/src/boost/boost/regex/v4/protected_call.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE basic_regex_creator.cpp - * VERSION see - * DESCRIPTION: Declares template class basic_regex_creator which fills in - * the data members of a regex_data object. - */ - -#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP -#define BOOST_REGEX_V4_PROTECTED_CALL_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -namespace BOOST_REGEX_DETAIL_NS{ - -class BOOST_REGEX_DECL abstract_protected_call -{ -public: - bool BOOST_REGEX_CALL execute()const; - // this stops gcc-4 from complaining: - virtual ~abstract_protected_call(){} -private: - virtual bool call()const = 0; -}; - -template -class concrete_protected_call - : public abstract_protected_call -{ -public: - typedef bool (T::*proc_type)(); - concrete_protected_call(T* o, proc_type p) - : obj(o), proc(p) {} -private: - virtual bool call()const; - T* obj; - proc_type proc; -}; - -template -bool concrete_protected_call::call()const -{ - return (obj->*proc)(); -} - -} -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif diff --git a/src/boost/boost/regex/v4/regbase.hpp b/src/boost/boost/regex/v4/regbase.hpp deleted file mode 100644 index 12f168dbd..000000000 --- a/src/boost/boost/regex/v4/regbase.hpp +++ /dev/null @@ -1,180 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regbase.cpp - * VERSION see - * DESCRIPTION: Declares class regbase. - */ - -#ifndef BOOST_REGEX_V4_REGBASE_HPP -#define BOOST_REGEX_V4_REGBASE_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -// -// class regbase -// handles error codes and flags -// -class BOOST_REGEX_DECL regbase -{ -public: - enum flag_type_ - { - // - // Divide the flags up into logical groups: - // bits 0-7 indicate main synatx type. - // bits 8-15 indicate syntax subtype. - // bits 16-31 indicate options that are common to all - // regex syntaxes. - // In all cases the default is 0. - // - // Main synatx group: - // - perl_syntax_group = 0, // default - basic_syntax_group = 1, // POSIX basic - literal = 2, // all characters are literals - main_option_type = literal | basic_syntax_group | perl_syntax_group, // everything! - // - // options specific to perl group: - // - no_bk_refs = 1 << 8, // \d not allowed - no_perl_ex = 1 << 9, // disable perl extensions - no_mod_m = 1 << 10, // disable Perl m modifier - mod_x = 1 << 11, // Perl x modifier - mod_s = 1 << 12, // force s modifier on (overrides match_not_dot_newline) - no_mod_s = 1 << 13, // force s modifier off (overrides match_not_dot_newline) - - // - // options specific to basic group: - // - no_char_classes = 1 << 8, // [[:CLASS:]] not allowed - no_intervals = 1 << 9, // {x,y} not allowed - bk_plus_qm = 1 << 10, // uses \+ and \? - bk_vbar = 1 << 11, // use \| for alternatives - emacs_ex = 1 << 12, // enables emacs extensions - - // - // options common to all groups: - // - no_escape_in_lists = 1 << 16, // '\' not special inside [...] - newline_alt = 1 << 17, // \n is the same as | - no_except = 1 << 18, // no exception on error - failbit = 1 << 19, // error flag - icase = 1 << 20, // characters are matched regardless of case - nocollate = 0, // don't use locale specific collation (deprecated) - collate = 1 << 21, // use locale specific collation - nosubs = 1 << 22, // don't mark sub-expressions - save_subexpression_location = 1 << 23, // save subexpression locations - no_empty_expressions = 1 << 24, // no empty expressions allowed - optimize = 0, // not really supported - - - - basic = basic_syntax_group | collate | no_escape_in_lists, - extended = no_bk_refs | collate | no_perl_ex | no_escape_in_lists, - normal = 0, - emacs = basic_syntax_group | collate | emacs_ex | bk_vbar, - awk = no_bk_refs | collate | no_perl_ex, - grep = basic | newline_alt, - egrep = extended | newline_alt, - sed = basic, - perl = normal, - ECMAScript = normal, - JavaScript = normal, - JScript = normal - }; - typedef unsigned int flag_type; - - enum restart_info - { - restart_any = 0, - restart_word = 1, - restart_line = 2, - restart_buf = 3, - restart_continue = 4, - restart_lit = 5, - restart_fixed_lit = 6, - restart_count = 7 - }; -}; - -// -// provide std lib proposal compatible constants: -// -namespace regex_constants{ - - enum flag_type_ - { - - no_except = ::boost::regbase::no_except, - failbit = ::boost::regbase::failbit, - literal = ::boost::regbase::literal, - icase = ::boost::regbase::icase, - nocollate = ::boost::regbase::nocollate, - collate = ::boost::regbase::collate, - nosubs = ::boost::regbase::nosubs, - optimize = ::boost::regbase::optimize, - bk_plus_qm = ::boost::regbase::bk_plus_qm, - bk_vbar = ::boost::regbase::bk_vbar, - no_intervals = ::boost::regbase::no_intervals, - no_char_classes = ::boost::regbase::no_char_classes, - no_escape_in_lists = ::boost::regbase::no_escape_in_lists, - no_mod_m = ::boost::regbase::no_mod_m, - mod_x = ::boost::regbase::mod_x, - mod_s = ::boost::regbase::mod_s, - no_mod_s = ::boost::regbase::no_mod_s, - save_subexpression_location = ::boost::regbase::save_subexpression_location, - no_empty_expressions = ::boost::regbase::no_empty_expressions, - - basic = ::boost::regbase::basic, - extended = ::boost::regbase::extended, - normal = ::boost::regbase::normal, - emacs = ::boost::regbase::emacs, - awk = ::boost::regbase::awk, - grep = ::boost::regbase::grep, - egrep = ::boost::regbase::egrep, - sed = basic, - perl = normal, - ECMAScript = normal, - JavaScript = normal, - JScript = normal - }; - typedef ::boost::regbase::flag_type syntax_option_type; - -} // namespace regex_constants - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/src/boost/boost/regex/v4/regex.hpp b/src/boost/boost/regex/v4/regex.hpp deleted file mode 100644 index 64f64fa3e..000000000 --- a/src/boost/boost/regex/v4/regex.hpp +++ /dev/null @@ -1,202 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex.cpp - * VERSION see - * DESCRIPTION: Declares boost::basic_regex<> and associated - * functions and classes. This header is the main - * entry point for the template regex code. - */ - -#ifndef BOOST_RE_REGEX_HPP_INCLUDED -#define BOOST_RE_REGEX_HPP_INCLUDED - -#ifdef __cplusplus - -// what follows is all C++ don't include in C builds!! - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif -#ifndef BOOST_REGEX_WORKAROUND_HPP -#include -#endif - -#ifndef BOOST_REGEX_FWD_HPP -#include -#endif -#ifndef BOOST_REGEX_TRAITS_HPP -#include -#endif -#ifndef BOOST_REGEX_RAW_BUFFER_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_MATCH_FLAGS -#include -#endif -#ifndef BOOST_REGEX_RAW_BUFFER_HPP -#include -#endif -#ifndef BOOST_RE_PAT_EXCEPT_HPP -#include -#endif - -#ifndef BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_STATES_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_REGBASE_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_SUB_MATCH_HPP -#include -#endif -#ifndef BOOST_REGEX_FORMAT_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_MATCH_RESULTS_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP -#include -#endif -#ifndef BOOST_REGEX_MATCHER_HPP -#include -#endif -// -// template instances: -// -#define BOOST_REGEX_CHAR_T char -#ifdef BOOST_REGEX_NARROW_INSTANTIATE -# define BOOST_REGEX_INSTANTIATE -#endif -#include -#undef BOOST_REGEX_CHAR_T -#ifdef BOOST_REGEX_INSTANTIATE -# undef BOOST_REGEX_INSTANTIATE -#endif - -#ifndef BOOST_NO_WREGEX -#define BOOST_REGEX_CHAR_T wchar_t -#ifdef BOOST_REGEX_WIDE_INSTANTIATE -# define BOOST_REGEX_INSTANTIATE -#endif -#include -#undef BOOST_REGEX_CHAR_T -#ifdef BOOST_REGEX_INSTANTIATE -# undef BOOST_REGEX_INSTANTIATE -#endif -#endif - -#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T) -#define BOOST_REGEX_CHAR_T unsigned short -#ifdef BOOST_REGEX_US_INSTANTIATE -# define BOOST_REGEX_INSTANTIATE -#endif -#include -#undef BOOST_REGEX_CHAR_T -#ifdef BOOST_REGEX_INSTANTIATE -# undef BOOST_REGEX_INSTANTIATE -#endif -#endif - - -namespace boost{ -#ifdef BOOST_REGEX_NO_FWD -typedef basic_regex > regex; -#ifndef BOOST_NO_WREGEX -typedef basic_regex > wregex; -#endif -#endif - -typedef match_results cmatch; -typedef match_results smatch; -#ifndef BOOST_NO_WREGEX -typedef match_results wcmatch; -typedef match_results wsmatch; -#endif - -} // namespace boost -#ifndef BOOST_REGEX_MATCH_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_REGEX_SEARCH_HPP -#include -#endif -#ifndef BOOST_REGEX_ITERATOR_HPP -#include -#endif -#ifndef BOOST_REGEX_TOKEN_ITERATOR_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_REGEX_GREP_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP -#include -#endif -#ifndef BOOST_REGEX_V4_REGEX_MERGE_HPP -#include -#endif -#ifndef BOOST_REGEX_SPLIT_HPP -#include -#endif - -#endif // __cplusplus - -#endif // include - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/boost/boost/regex/v4/regex_format.hpp b/src/boost/boost/regex/v4/regex_format.hpp deleted file mode 100644 index 15dc5449f..000000000 --- a/src/boost/boost/regex/v4/regex_format.hpp +++ /dev/null @@ -1,1151 +0,0 @@ -/* - * - * Copyright (c) 1998-2009 John Maddock - * Copyright 2008 Eric Niebler. - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_format.hpp - * VERSION see - * DESCRIPTION: Provides formatting output routines for search and replace - * operations. Note this is an internal header file included - * by regex.hpp, do not include on its own. - */ - -#ifndef BOOST_REGEX_FORMAT_HPP -#define BOOST_REGEX_FORMAT_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef BOOST_NO_SFINAE -#include -#endif -#include - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -// -// Forward declaration: -// - template >::allocator_type > -class match_results; - -namespace BOOST_REGEX_DETAIL_NS{ - -// -// struct trivial_format_traits: -// defines minimum localisation support for formatting -// in the case that the actual regex traits is unavailable. -// -template -struct trivial_format_traits -{ - typedef charT char_type; - - static std::ptrdiff_t length(const charT* p) - { - return global_length(p); - } - static charT tolower(charT c) - { - return ::boost::BOOST_REGEX_DETAIL_NS::global_lower(c); - } - static charT toupper(charT c) - { - return ::boost::BOOST_REGEX_DETAIL_NS::global_upper(c); - } - static int value(const charT c, int radix) - { - int result = global_value(c); - return result >= radix ? -1 : result; - } - int toi(const charT*& p1, const charT* p2, int radix)const - { - return (int)global_toi(p1, p2, radix, *this); - } -}; - -template -class basic_regex_formatter -{ -public: - typedef typename traits::char_type char_type; - basic_regex_formatter(OutputIterator o, const Results& r, const traits& t) - : m_traits(t), m_results(r), m_out(o), m_position(), m_end(), m_flags(), m_state(output_copy), m_restore_state(output_copy), m_have_conditional(false) {} - OutputIterator format(ForwardIter p1, ForwardIter p2, match_flag_type f); - OutputIterator format(ForwardIter p1, match_flag_type f) - { - return format(p1, p1 + m_traits.length(p1), f); - } -private: - typedef typename Results::value_type sub_match_type; - enum output_state - { - output_copy, - output_next_lower, - output_next_upper, - output_lower, - output_upper, - output_none - }; - - void put(char_type c); - void put(const sub_match_type& sub); - void format_all(); - void format_perl(); - void format_escape(); - void format_conditional(); - void format_until_scope_end(); - bool handle_perl_verb(bool have_brace); - - inline typename Results::value_type const& get_named_sub(ForwardIter i, ForwardIter j, const mpl::false_&) - { - std::vector v(i, j); - return (i != j) ? this->m_results.named_subexpression(&v[0], &v[0] + v.size()) - : this->m_results.named_subexpression(static_cast(0), static_cast(0)); - } - inline typename Results::value_type const& get_named_sub(ForwardIter i, ForwardIter j, const mpl::true_&) - { - return this->m_results.named_subexpression(i, j); - } - inline typename Results::value_type const& get_named_sub(ForwardIter i, ForwardIter j) - { - typedef typename boost::is_convertible::type tag_type; - return get_named_sub(i, j, tag_type()); - } - inline int get_named_sub_index(ForwardIter i, ForwardIter j, const mpl::false_&) - { - std::vector v(i, j); - return (i != j) ? this->m_results.named_subexpression_index(&v[0], &v[0] + v.size()) - : this->m_results.named_subexpression_index(static_cast(0), static_cast(0)); - } - inline int get_named_sub_index(ForwardIter i, ForwardIter j, const mpl::true_&) - { - return this->m_results.named_subexpression_index(i, j); - } - inline int get_named_sub_index(ForwardIter i, ForwardIter j) - { - typedef typename boost::is_convertible::type tag_type; - return get_named_sub_index(i, j, tag_type()); - } -#ifdef BOOST_MSVC - // msvc-8.0 issues a spurious warning on the call to std::advance here: -#pragma warning(push) -#pragma warning(disable:4244) -#endif - inline int toi(ForwardIter& i, ForwardIter j, int base, const boost::mpl::false_&) - { - if(i != j) - { - std::vector v(i, j); - const char_type* start = &v[0]; - const char_type* pos = start; - int r = (int)m_traits.toi(pos, &v[0] + v.size(), base); - std::advance(i, pos - start); - return r; - } - return -1; - } -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - inline int toi(ForwardIter& i, ForwardIter j, int base, const boost::mpl::true_&) - { - return m_traits.toi(i, j, base); - } - inline int toi(ForwardIter& i, ForwardIter j, int base) - { -#if defined(_MSC_VER) && defined(__INTEL_COMPILER) && ((__INTEL_COMPILER == 9999) || (__INTEL_COMPILER == 1210)) - // Workaround for Intel support issue #656654. - // See also https://svn.boost.org/trac/boost/ticket/6359 - return toi(i, j, base, mpl::false_()); -#else - typedef typename boost::is_convertible::type tag_type; - return toi(i, j, base, tag_type()); -#endif - } - - const traits& m_traits; // the traits class for localised formatting operations - const Results& m_results; // the match_results being used. - OutputIterator m_out; // where to send output. - ForwardIter m_position; // format string, current position - ForwardIter m_end; // format string end - match_flag_type m_flags; // format flags to use - output_state m_state; // what to do with the next character - output_state m_restore_state; // what state to restore to. - bool m_have_conditional; // we are parsing a conditional -private: - basic_regex_formatter(const basic_regex_formatter&); - basic_regex_formatter& operator=(const basic_regex_formatter&); -}; - -template -OutputIterator basic_regex_formatter::format(ForwardIter p1, ForwardIter p2, match_flag_type f) -{ - m_position = p1; - m_end = p2; - m_flags = f; - format_all(); - return m_out; -} - -template -void basic_regex_formatter::format_all() -{ - // over and over: - while(m_position != m_end) - { - switch(*m_position) - { - case '&': - if(m_flags & ::boost::regex_constants::format_sed) - { - ++m_position; - put(m_results[0]); - break; - } - put(*m_position++); - break; - case '\\': - format_escape(); - break; - case '(': - if(m_flags & boost::regex_constants::format_all) - { - ++m_position; - bool have_conditional = m_have_conditional; - m_have_conditional = false; - format_until_scope_end(); - m_have_conditional = have_conditional; - if(m_position == m_end) - return; - BOOST_ASSERT(*m_position == static_cast(')')); - ++m_position; // skip the closing ')' - break; - } - put(*m_position); - ++m_position; - break; - case ')': - if(m_flags & boost::regex_constants::format_all) - { - return; - } - put(*m_position); - ++m_position; - break; - case ':': - if((m_flags & boost::regex_constants::format_all) && m_have_conditional) - { - return; - } - put(*m_position); - ++m_position; - break; - case '?': - if(m_flags & boost::regex_constants::format_all) - { - ++m_position; - format_conditional(); - break; - } - put(*m_position); - ++m_position; - break; - case '$': - if((m_flags & format_sed) == 0) - { - format_perl(); - break; - } - // not a special character: - BOOST_FALLTHROUGH; - default: - put(*m_position); - ++m_position; - break; - } - } -} - -template -void basic_regex_formatter::format_perl() -{ - // - // On entry *m_position points to a '$' character - // output the information that goes with it: - // - BOOST_ASSERT(*m_position == '$'); - // - // see if this is a trailing '$': - // - if(++m_position == m_end) - { - --m_position; - put(*m_position); - ++m_position; - return; - } - // - // OK find out what kind it is: - // - bool have_brace = false; - ForwardIter save_position = m_position; - switch(*m_position) - { - case '&': - ++m_position; - put(this->m_results[0]); - break; - case '`': - ++m_position; - put(this->m_results.prefix()); - break; - case '\'': - ++m_position; - put(this->m_results.suffix()); - break; - case '$': - put(*m_position++); - break; - case '+': - if((++m_position != m_end) && (*m_position == '{')) - { - ForwardIter base = ++m_position; - while((m_position != m_end) && (*m_position != '}')) ++m_position; - if(m_position != m_end) - { - // Named sub-expression: - put(get_named_sub(base, m_position)); - ++m_position; - break; - } - else - { - m_position = --base; - } - } - put((this->m_results)[this->m_results.size() > 1 ? static_cast(this->m_results.size() - 1) : 1]); - break; - case '{': - have_brace = true; - ++m_position; - BOOST_FALLTHROUGH; - default: - // see if we have a number: - { - std::ptrdiff_t len = ::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end); - //len = (std::min)(static_cast(2), len); - int v = this->toi(m_position, m_position + len, 10); - if((v < 0) || (have_brace && ((m_position == m_end) || (*m_position != '}')))) - { - // Look for a Perl-5.10 verb: - if(!handle_perl_verb(have_brace)) - { - // leave the $ as is, and carry on: - m_position = --save_position; - put(*m_position); - ++m_position; - } - break; - } - // otherwise output sub v: - put(this->m_results[v]); - if(have_brace) - ++m_position; - } - } -} - -template -bool basic_regex_formatter::handle_perl_verb(bool have_brace) -{ - // - // We may have a capitalised string containing a Perl action: - // - static const char_type MATCH[] = { 'M', 'A', 'T', 'C', 'H' }; - static const char_type PREMATCH[] = { 'P', 'R', 'E', 'M', 'A', 'T', 'C', 'H' }; - static const char_type POSTMATCH[] = { 'P', 'O', 'S', 'T', 'M', 'A', 'T', 'C', 'H' }; - static const char_type LAST_PAREN_MATCH[] = { 'L', 'A', 'S', 'T', '_', 'P', 'A', 'R', 'E', 'N', '_', 'M', 'A', 'T', 'C', 'H' }; - static const char_type LAST_SUBMATCH_RESULT[] = { 'L', 'A', 'S', 'T', '_', 'S', 'U', 'B', 'M', 'A', 'T', 'C', 'H', '_', 'R', 'E', 'S', 'U', 'L', 'T' }; - static const char_type LAST_SUBMATCH_RESULT_ALT[] = { '^', 'N' }; - - if(m_position == m_end) - return false; - if(have_brace && (*m_position == '^')) - ++m_position; - - std::ptrdiff_t max_len = m_end - m_position; - - if((max_len >= 5) && std::equal(m_position, m_position + 5, MATCH)) - { - m_position += 5; - if(have_brace) - { - if((m_position != m_end) && (*m_position == '}')) - ++m_position; - else - { - m_position -= 5; - return false; - } - } - put(this->m_results[0]); - return true; - } - if((max_len >= 8) && std::equal(m_position, m_position + 8, PREMATCH)) - { - m_position += 8; - if(have_brace) - { - if((m_position != m_end) && (*m_position == '}')) - ++m_position; - else - { - m_position -= 8; - return false; - } - } - put(this->m_results.prefix()); - return true; - } - if((max_len >= 9) && std::equal(m_position, m_position + 9, POSTMATCH)) - { - m_position += 9; - if(have_brace) - { - if((m_position != m_end) && (*m_position == '}')) - ++m_position; - else - { - m_position -= 9; - return false; - } - } - put(this->m_results.suffix()); - return true; - } - if((max_len >= 16) && std::equal(m_position, m_position + 16, LAST_PAREN_MATCH)) - { - m_position += 16; - if(have_brace) - { - if((m_position != m_end) && (*m_position == '}')) - ++m_position; - else - { - m_position -= 16; - return false; - } - } - put((this->m_results)[this->m_results.size() > 1 ? static_cast(this->m_results.size() - 1) : 1]); - return true; - } - if((max_len >= 20) && std::equal(m_position, m_position + 20, LAST_SUBMATCH_RESULT)) - { - m_position += 20; - if(have_brace) - { - if((m_position != m_end) && (*m_position == '}')) - ++m_position; - else - { - m_position -= 20; - return false; - } - } - put(this->m_results.get_last_closed_paren()); - return true; - } - if((max_len >= 2) && std::equal(m_position, m_position + 2, LAST_SUBMATCH_RESULT_ALT)) - { - m_position += 2; - if(have_brace) - { - if((m_position != m_end) && (*m_position == '}')) - ++m_position; - else - { - m_position -= 2; - return false; - } - } - put(this->m_results.get_last_closed_paren()); - return true; - } - return false; -} - -template -void basic_regex_formatter::format_escape() -{ - // skip the escape and check for trailing escape: - if(++m_position == m_end) - { - put(static_cast('\\')); - return; - } - // now switch on the escape type: - switch(*m_position) - { - case 'a': - put(static_cast('\a')); - ++m_position; - break; - case 'f': - put(static_cast('\f')); - ++m_position; - break; - case 'n': - put(static_cast('\n')); - ++m_position; - break; - case 'r': - put(static_cast('\r')); - ++m_position; - break; - case 't': - put(static_cast('\t')); - ++m_position; - break; - case 'v': - put(static_cast('\v')); - ++m_position; - break; - case 'x': - if(++m_position == m_end) - { - put(static_cast('x')); - return; - } - // maybe have \x{ddd} - if(*m_position == static_cast('{')) - { - ++m_position; - int val = this->toi(m_position, m_end, 16); - if(val < 0) - { - // invalid value treat everything as literals: - put(static_cast('x')); - put(static_cast('{')); - return; - } - if((m_position == m_end) || (*m_position != static_cast('}'))) - { - --m_position; - while(*m_position != static_cast('\\')) - --m_position; - ++m_position; - put(*m_position++); - return; - } - ++m_position; - put(static_cast(val)); - return; - } - else - { - std::ptrdiff_t len = ::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end); - len = (std::min)(static_cast(2), len); - int val = this->toi(m_position, m_position + len, 16); - if(val < 0) - { - --m_position; - put(*m_position++); - return; - } - put(static_cast(val)); - } - break; - case 'c': - if(++m_position == m_end) - { - --m_position; - put(*m_position++); - return; - } - put(static_cast(*m_position++ % 32)); - break; - case 'e': - put(static_cast(27)); - ++m_position; - break; - default: - // see if we have a perl specific escape: - if((m_flags & boost::regex_constants::format_sed) == 0) - { - bool breakout = false; - switch(*m_position) - { - case 'l': - ++m_position; - m_restore_state = m_state; - m_state = output_next_lower; - breakout = true; - break; - case 'L': - ++m_position; - m_state = output_lower; - breakout = true; - break; - case 'u': - ++m_position; - m_restore_state = m_state; - m_state = output_next_upper; - breakout = true; - break; - case 'U': - ++m_position; - m_state = output_upper; - breakout = true; - break; - case 'E': - ++m_position; - m_state = output_copy; - breakout = true; - break; - } - if(breakout) - break; - } - // see if we have a \n sed style backreference: - std::ptrdiff_t len = ::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end); - len = (std::min)(static_cast(1), len); - int v = this->toi(m_position, m_position+len, 10); - if((v > 0) || ((v == 0) && (m_flags & ::boost::regex_constants::format_sed))) - { - put(m_results[v]); - break; - } - else if(v == 0) - { - // octal ecape sequence: - --m_position; - len = ::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end); - len = (std::min)(static_cast(4), len); - v = this->toi(m_position, m_position + len, 8); - BOOST_ASSERT(v >= 0); - put(static_cast(v)); - break; - } - // Otherwise output the character "as is": - put(*m_position++); - break; - } -} - -template -void basic_regex_formatter::format_conditional() -{ - if(m_position == m_end) - { - // oops trailing '?': - put(static_cast('?')); - return; - } - int v; - if(*m_position == '{') - { - ForwardIter base = m_position; - ++m_position; - v = this->toi(m_position, m_end, 10); - if(v < 0) - { - // Try a named subexpression: - while((m_position != m_end) && (*m_position != '}')) - ++m_position; - v = this->get_named_sub_index(base + 1, m_position); - } - if((v < 0) || (*m_position != '}')) - { - m_position = base; - // oops trailing '?': - put(static_cast('?')); - return; - } - // Skip trailing '}': - ++m_position; - } - else - { - std::ptrdiff_t len = ::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end); - len = (std::min)(static_cast(2), len); - v = this->toi(m_position, m_position + len, 10); - } - if(v < 0) - { - // oops not a number: - put(static_cast('?')); - return; - } - - // output varies depending upon whether sub-expression v matched or not: - if(m_results[v].matched) - { - m_have_conditional = true; - format_all(); - m_have_conditional = false; - if((m_position != m_end) && (*m_position == static_cast(':'))) - { - // skip the ':': - ++m_position; - // save output state, then turn it off: - output_state saved_state = m_state; - m_state = output_none; - // format the rest of this scope: - format_until_scope_end(); - // restore output state: - m_state = saved_state; - } - } - else - { - // save output state, then turn it off: - output_state saved_state = m_state; - m_state = output_none; - // format until ':' or ')': - m_have_conditional = true; - format_all(); - m_have_conditional = false; - // restore state: - m_state = saved_state; - if((m_position != m_end) && (*m_position == static_cast(':'))) - { - // skip the ':': - ++m_position; - // format the rest of this scope: - format_until_scope_end(); - } - } -} - -template -void basic_regex_formatter::format_until_scope_end() -{ - do - { - format_all(); - if((m_position == m_end) || (*m_position == static_cast(')'))) - return; - put(*m_position++); - }while(m_position != m_end); -} - -template -void basic_regex_formatter::put(char_type c) -{ - // write a single character to output - // according to which case translation mode we are in: - switch(this->m_state) - { - case output_none: - return; - case output_next_lower: - c = m_traits.tolower(c); - this->m_state = m_restore_state; - break; - case output_next_upper: - c = m_traits.toupper(c); - this->m_state = m_restore_state; - break; - case output_lower: - c = m_traits.tolower(c); - break; - case output_upper: - c = m_traits.toupper(c); - break; - default: - break; - } - *m_out = c; - ++m_out; -} - -template -void basic_regex_formatter::put(const sub_match_type& sub) -{ - typedef typename sub_match_type::iterator iterator_type; - iterator_type i = sub.first; - while(i != sub.second) - { - put(*i); - ++i; - } -} - -template -class string_out_iterator -{ - S* out; -public: - string_out_iterator(S& s) : out(&s) {} - string_out_iterator& operator++() { return *this; } - string_out_iterator& operator++(int) { return *this; } - string_out_iterator& operator*() { return *this; } - string_out_iterator& operator=(typename S::value_type v) - { - out->append(1, v); - return *this; - } - - typedef std::ptrdiff_t difference_type; - typedef typename S::value_type value_type; - typedef value_type* pointer; - typedef value_type& reference; - typedef std::output_iterator_tag iterator_category; -}; - -template -OutputIterator regex_format_imp(OutputIterator out, - const match_results& m, - ForwardIter p1, ForwardIter p2, - match_flag_type flags, - const traits& t - ) -{ - if(flags & regex_constants::format_literal) - { - return BOOST_REGEX_DETAIL_NS::copy(p1, p2, out); - } - - BOOST_REGEX_DETAIL_NS::basic_regex_formatter< - OutputIterator, - match_results, - traits, ForwardIter> f(out, m, t); - return f.format(p1, p2, flags); -} - -#ifndef BOOST_NO_SFINAE - -BOOST_MPL_HAS_XXX_TRAIT_DEF(const_iterator) - -struct any_type -{ - template - any_type(const T&); - template - any_type(const T&, const U&); - template - any_type(const T&, const U&, const V&); -}; -typedef char no_type; -typedef char (&unary_type)[2]; -typedef char (&binary_type)[3]; -typedef char (&ternary_type)[4]; - -no_type check_is_formatter(unary_type, binary_type, ternary_type); -template -unary_type check_is_formatter(T const &, binary_type, ternary_type); -template -binary_type check_is_formatter(unary_type, T const &, ternary_type); -template -binary_type check_is_formatter(T const &, U const &, ternary_type); -template -ternary_type check_is_formatter(unary_type, binary_type, T const &); -template -ternary_type check_is_formatter(T const &, binary_type, U const &); -template -ternary_type check_is_formatter(unary_type, T const &, U const &); -template -ternary_type check_is_formatter(T const &, U const &, V const &); - -struct unary_binary_ternary -{ - typedef unary_type (*unary_fun)(any_type); - typedef binary_type (*binary_fun)(any_type, any_type); - typedef ternary_type (*ternary_fun)(any_type, any_type, any_type); - operator unary_fun(); - operator binary_fun(); - operator ternary_fun(); -}; - -template::value> -struct formatter_wrapper - : Formatter - , unary_binary_ternary -{ - formatter_wrapper(){} -}; - -template -struct formatter_wrapper - : unary_binary_ternary -{ - operator Formatter *(); -}; - -template -struct formatter_wrapper - : unary_binary_ternary -{ - operator Formatter *(); -}; - -template -struct format_traits_imp -{ -private: - // - // F must be a pointer, a function, or a class with a function call operator: - // - BOOST_STATIC_ASSERT((::boost::is_pointer::value || ::boost::is_function::value || ::boost::is_class::value)); - static formatter_wrapper::type> f; - static M m; - static O out; - static boost::regex_constants::match_flag_type flags; -public: - BOOST_STATIC_CONSTANT(int, value = sizeof(check_is_formatter(f(m), f(m, out), f(m, out, flags)))); -}; - -template -struct format_traits -{ -public: - // - // Type is mpl::int_ where N is one of: - // - // 0 : F is a pointer to a presumably null-terminated string. - // 1 : F is a character-container such as a std::string. - // 2 : F is a Unary Functor. - // 3 : F is a Binary Functor. - // 4 : F is a Ternary Functor. - // - typedef typename boost::mpl::if_< - boost::mpl::and_, boost::mpl::not_::type> > >, - boost::mpl::int_<0>, - typename boost::mpl::if_< - has_const_iterator, - boost::mpl::int_<1>, - boost::mpl::int_::value> - >::type - >::type type; - // - // This static assertion will fail if the functor passed does not accept - // the same type of arguments passed. - // - BOOST_STATIC_ASSERT( boost::is_class::value && !has_const_iterator::value ? (type::value > 1) : true); -}; - -#else // BOOST_NO_SFINAE - -template -struct format_traits -{ -public: - // - // Type is mpl::int_ where N is one of: - // - // 0 : F is a pointer to a presumably null-terminated string. - // 1 : F is a character-container such as a std::string. - // - // Other options such as F being a Functor are not supported without - // SFINAE support. - // - typedef typename boost::mpl::if_< - boost::is_pointer, - boost::mpl::int_<0>, - boost::mpl::int_<1> - >::type type; -}; - -#endif // BOOST_NO_SFINAE - -template -struct format_functor3 -{ - format_functor3(Base b) : func(b) {} - template - OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f) - { - return boost::unwrap_ref(func)(m, i, f); - } - template - OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&) - { - return (*this)(m, i, f); - } -private: - Base func; - format_functor3(const format_functor3&); - format_functor3& operator=(const format_functor3&); -}; - -template -struct format_functor2 -{ - format_functor2(Base b) : func(b) {} - template - OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type /*f*/) - { - return boost::unwrap_ref(func)(m, i); - } - template - OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&) - { - return (*this)(m, i, f); - } -private: - Base func; - format_functor2(const format_functor2&); - format_functor2& operator=(const format_functor2&); -}; - -template -struct format_functor1 -{ - format_functor1(Base b) : func(b) {} - - template - OutputIter do_format_string(const S& s, OutputIter i) - { - return BOOST_REGEX_DETAIL_NS::copy(s.begin(), s.end(), i); - } - template - inline OutputIter do_format_string(const S* s, OutputIter i) - { - while(s && *s) - { - *i = *s; - ++i; - ++s; - } - return i; - } - template - OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type /*f*/) - { - return do_format_string(boost::unwrap_ref(func)(m), i); - } - template - OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&) - { - return (*this)(m, i, f); - } -private: - Base func; - format_functor1(const format_functor1&); - format_functor1& operator=(const format_functor1&); -}; - -template -struct format_functor_c_string -{ - format_functor_c_string(const charT* ps) : func(ps) {} - - template - OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits& t = Traits()) - { - //typedef typename Match::char_type char_type; - const charT* end = func; - while(*end) ++end; - return regex_format_imp(i, m, func, end, f, t); - } -private: - const charT* func; - format_functor_c_string(const format_functor_c_string&); - format_functor_c_string& operator=(const format_functor_c_string&); -}; - -template -struct format_functor_container -{ - format_functor_container(const Container& c) : func(c) {} - - template - OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits& t = Traits()) - { - //typedef typename Match::char_type char_type; - return BOOST_REGEX_DETAIL_NS::regex_format_imp(i, m, func.begin(), func.end(), f, t); - } -private: - const Container& func; - format_functor_container(const format_functor_container&); - format_functor_container& operator=(const format_functor_container&); -}; - -template > -struct compute_functor_type -{ - typedef typename format_traits::type tag; - typedef typename boost::remove_cv< typename boost::remove_pointer::type>::type maybe_char_type; - - typedef typename mpl::if_< - ::boost::is_same >, format_functor_c_string, - typename mpl::if_< - ::boost::is_same >, format_functor_container, - typename mpl::if_< - ::boost::is_same >, format_functor1, - typename mpl::if_< - ::boost::is_same >, format_functor2, - format_functor3 - >::type - >::type - >::type - >::type type; -}; - -} // namespace BOOST_REGEX_DETAIL_NS - -template -inline OutputIterator regex_format(OutputIterator out, - const match_results& m, - Functor fmt, - match_flag_type flags = format_all - ) -{ - return m.format(out, fmt, flags); -} - -template -inline std::basic_string::char_type> regex_format(const match_results& m, - Functor fmt, - match_flag_type flags = format_all) -{ - return m.format(fmt, flags); -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif // BOOST_REGEX_FORMAT_HPP - - - - - - diff --git a/src/boost/boost/regex/v4/regex_fwd.hpp b/src/boost/boost/regex/v4/regex_fwd.hpp deleted file mode 100644 index 540ecab3e..000000000 --- a/src/boost/boost/regex/v4/regex_fwd.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_fwd.cpp - * VERSION see - * DESCRIPTION: Forward declares boost::basic_regex<> and - * associated typedefs. - */ - -#ifndef BOOST_REGEX_FWD_HPP_INCLUDED -#define BOOST_REGEX_FWD_HPP_INCLUDED - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif - -// -// define BOOST_REGEX_NO_FWD if this -// header doesn't work! -// -#ifdef BOOST_REGEX_NO_FWD -# ifndef BOOST_RE_REGEX_HPP -# include -# endif -#else - -namespace boost{ - -template -class cpp_regex_traits; -template -struct c_regex_traits; -template -class w32_regex_traits; - -#ifdef BOOST_REGEX_USE_WIN32_LOCALE -template > -struct regex_traits; -#elif defined(BOOST_REGEX_USE_CPP_LOCALE) -template > -struct regex_traits; -#else -template > -struct regex_traits; -#endif - -template > -class basic_regex; - -typedef basic_regex > regex; -#ifndef BOOST_NO_WREGEX -typedef basic_regex > wregex; -#endif - -} // namespace boost - -#endif // BOOST_REGEX_NO_FWD - -#endif - - - - diff --git a/src/boost/boost/regex/v4/regex_grep.hpp b/src/boost/boost/regex/v4/regex_grep.hpp deleted file mode 100644 index 8f62f2dfd..000000000 --- a/src/boost/boost/regex/v4/regex_grep.hpp +++ /dev/null @@ -1,155 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_grep.hpp - * VERSION see - * DESCRIPTION: Provides regex_grep implementation. - */ - -#ifndef BOOST_REGEX_V4_REGEX_GREP_HPP -#define BOOST_REGEX_V4_REGEX_GREP_HPP - - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -// -// regex_grep: -// find all non-overlapping matches within the sequence first last: -// -template -inline unsigned int regex_grep(Predicate foo, - BidiIterator first, - BidiIterator last, - const basic_regex& e, - match_flag_type flags = match_default) -{ - if(e.flags() & regex_constants::failbit) - return false; - - typedef typename match_results::allocator_type match_allocator_type; - - match_results m; - BOOST_REGEX_DETAIL_NS::perl_matcher matcher(first, last, m, e, flags, first); - unsigned int count = 0; - while(matcher.find()) - { - ++count; - if(0 == foo(m)) - return count; // caller doesn't want to go on - if(m[0].second == last) - return count; // we've reached the end, don't try and find an extra null match. - if(m.length() == 0) - { - if(m[0].second == last) - return count; - // we found a NULL-match, now try to find - // a non-NULL one at the same position: - match_results m2(m); - matcher.setf(match_not_null | match_continuous); - if(matcher.find()) - { - ++count; - if(0 == foo(m)) - return count; - } - else - { - // reset match back to where it was: - m = m2; - } - matcher.unsetf((match_not_null | match_continuous) & ~flags); - } - } - return count; -} - -// -// regex_grep convenience interfaces: -#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -// -// this isn't really a partial specialisation, but template function -// overloading - if the compiler doesn't support partial specialisation -// then it really won't support this either: -template -inline unsigned int regex_grep(Predicate foo, const charT* str, - const basic_regex& e, - match_flag_type flags = match_default) -{ - return regex_grep(foo, str, str + traits::length(str), e, flags); -} - -template -inline unsigned int regex_grep(Predicate foo, const std::basic_string& s, - const basic_regex& e, - match_flag_type flags = match_default) -{ - return regex_grep(foo, s.begin(), s.end(), e, flags); -} -#else // partial specialisation -inline unsigned int regex_grep(bool (*foo)(const cmatch&), const char* str, - const regex& e, - match_flag_type flags = match_default) -{ - return regex_grep(foo, str, str + regex::traits_type::length(str), e, flags); -} -#ifndef BOOST_NO_WREGEX -inline unsigned int regex_grep(bool (*foo)(const wcmatch&), const wchar_t* str, - const wregex& e, - match_flag_type flags = match_default) -{ - return regex_grep(foo, str, str + wregex::traits_type::length(str), e, flags); -} -#endif -inline unsigned int regex_grep(bool (*foo)(const match_results&), const std::string& s, - const regex& e, - match_flag_type flags = match_default) -{ - return regex_grep(foo, s.begin(), s.end(), e, flags); -} -#if !defined(BOOST_NO_WREGEX) -inline unsigned int regex_grep(bool (*foo)(const match_results::const_iterator>&), - const std::basic_string& s, - const wregex& e, - match_flag_type flags = match_default) -{ - return regex_grep(foo, s.begin(), s.end(), e, flags); -} -#endif -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_GREP_HPP - diff --git a/src/boost/boost/regex/v4/regex_iterator.hpp b/src/boost/boost/regex/v4/regex_iterator.hpp deleted file mode 100644 index f3cb1e210..000000000 --- a/src/boost/boost/regex/v4/regex_iterator.hpp +++ /dev/null @@ -1,193 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_iterator.hpp - * VERSION see - * DESCRIPTION: Provides regex_iterator implementation. - */ - -#ifndef BOOST_REGEX_V4_REGEX_ITERATOR_HPP -#define BOOST_REGEX_V4_REGEX_ITERATOR_HPP - -#include - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template -class regex_iterator_implementation -{ - typedef basic_regex regex_type; - - match_results what; // current match - BidirectionalIterator base; // start of sequence - BidirectionalIterator end; // end of sequence - const regex_type re; // the expression - match_flag_type flags; // flags for matching - -public: - regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f) - : base(), end(last), re(*p), flags(f){} - bool init(BidirectionalIterator first) - { - base = first; - return regex_search(first, end, what, re, flags); - } - bool compare(const regex_iterator_implementation& that) - { - if(this == &that) return true; - return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second); - } - const match_results& get() - { return what; } - bool next() - { - //if(what.prefix().first != what[0].second) - // flags |= match_prev_avail; - BidirectionalIterator next_start = what[0].second; - match_flag_type f(flags); - if(!what.length() || (f & regex_constants::match_posix)) - f |= regex_constants::match_not_initial_null; - //if(base != next_start) - // f |= regex_constants::match_not_bob; - bool result = regex_search(next_start, end, what, re, f, base); - if(result) - what.set_base(base); - return result; - } -private: - regex_iterator_implementation& operator=(const regex_iterator_implementation&); -}; - -template ::value_type, - class traits = regex_traits > -class regex_iterator -{ -private: - typedef regex_iterator_implementation impl; - typedef shared_ptr pimpl; -public: - typedef basic_regex regex_type; - typedef match_results value_type; - typedef typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::difference_type - difference_type; - typedef const value_type* pointer; - typedef const value_type& reference; - typedef std::forward_iterator_tag iterator_category; - - regex_iterator(){} - regex_iterator(BidirectionalIterator a, BidirectionalIterator b, - const regex_type& re, - match_flag_type m = match_default) - : pdata(new impl(&re, b, m)) - { - if(!pdata->init(a)) - { - pdata.reset(); - } - } - regex_iterator(const regex_iterator& that) - : pdata(that.pdata) {} - regex_iterator& operator=(const regex_iterator& that) - { - pdata = that.pdata; - return *this; - } - bool operator==(const regex_iterator& that)const - { - if((pdata.get() == 0) || (that.pdata.get() == 0)) - return pdata.get() == that.pdata.get(); - return pdata->compare(*(that.pdata.get())); - } - bool operator!=(const regex_iterator& that)const - { return !(*this == that); } - const value_type& operator*()const - { return pdata->get(); } - const value_type* operator->()const - { return &(pdata->get()); } - regex_iterator& operator++() - { - cow(); - if(0 == pdata->next()) - { - pdata.reset(); - } - return *this; - } - regex_iterator operator++(int) - { - regex_iterator result(*this); - ++(*this); - return result; - } -private: - - pimpl pdata; - - void cow() - { - // copy-on-write - if(pdata.get() && !pdata.unique()) - { - pdata.reset(new impl(*(pdata.get()))); - } - } -}; - -typedef regex_iterator cregex_iterator; -typedef regex_iterator sregex_iterator; -#ifndef BOOST_NO_WREGEX -typedef regex_iterator wcregex_iterator; -typedef regex_iterator wsregex_iterator; -#endif - -// make_regex_iterator: -template -inline regex_iterator make_regex_iterator(const charT* p, const basic_regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return regex_iterator(p, p+traits::length(p), e, m); -} -template -inline regex_iterator::const_iterator, charT, traits> make_regex_iterator(const std::basic_string& p, const basic_regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return regex_iterator::const_iterator, charT, traits>(p.begin(), p.end(), e, m); -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_ITERATOR_HPP - diff --git a/src/boost/boost/regex/v4/regex_match.hpp b/src/boost/boost/regex/v4/regex_match.hpp deleted file mode 100644 index cdc585fa1..000000000 --- a/src/boost/boost/regex/v4/regex_match.hpp +++ /dev/null @@ -1,382 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_match.hpp - * VERSION see - * DESCRIPTION: Regular expression matching algorithms. - * Note this is an internal header file included - * by regex.hpp, do not include on its own. - */ - - -#ifndef BOOST_REGEX_MATCH_HPP -#define BOOST_REGEX_MATCH_HPP - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -// -// proc regex_match -// returns true if the specified regular expression matches -// the whole of the input. Fills in what matched in m. -// -template -bool regex_match(BidiIterator first, BidiIterator last, - match_results& m, - const basic_regex& e, - match_flag_type flags = match_default) -{ - BOOST_REGEX_DETAIL_NS::perl_matcher matcher(first, last, m, e, flags, first); - return matcher.match(); -} -template -bool regex_match(iterator first, iterator last, - const basic_regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(first, last, m, e, flags | regex_constants::match_any); -} -// -// query_match convenience interfaces: -#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -// -// this isn't really a partial specialisation, but template function -// overloading - if the compiler doesn't support partial specialisation -// then it really won't support this either: -template -inline bool regex_match(const charT* str, - match_results& m, - const basic_regex& e, - match_flag_type flags = match_default) -{ - return regex_match(str, str + traits::length(str), m, e, flags); -} - -template -inline bool regex_match(const std::basic_string& s, - match_results::const_iterator, Allocator>& m, - const basic_regex& e, - match_flag_type flags = match_default) -{ - return regex_match(s.begin(), s.end(), m, e, flags); -} -template -inline bool regex_match(const charT* str, - const basic_regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(str, str + traits::length(str), m, e, flags | regex_constants::match_any); -} - -template -inline bool regex_match(const std::basic_string& s, - const basic_regex& e, - match_flag_type flags = match_default) -{ - typedef typename std::basic_string::const_iterator iterator; - match_results m; - return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#else // partial ordering -inline bool regex_match(const char* str, - cmatch& m, - const regex& e, - match_flag_type flags = match_default) -{ - return regex_match(str, str + regex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const char* str, - const regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#ifndef BOOST_NO_STD_LOCALE -inline bool regex_match(const char* str, - cmatch& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(str, str + regex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const char* str, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_match(const char* str, - cmatch& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(str, str + regex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const char* str, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) -inline bool regex_match(const char* str, - cmatch& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(str, str + regex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const char* str, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#endif -#ifndef BOOST_NO_WREGEX -inline bool regex_match(const wchar_t* str, - wcmatch& m, - const wregex& e, - match_flag_type flags = match_default) -{ - return regex_match(str, str + wregex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const wchar_t* str, - const wregex& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#ifndef BOOST_NO_STD_LOCALE -inline bool regex_match(const wchar_t* str, - wcmatch& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(str, str + wregex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const wchar_t* str, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_match(const wchar_t* str, - wcmatch& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(str, str + wregex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const wchar_t* str, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) -inline bool regex_match(const wchar_t* str, - wcmatch& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(str, str + wregex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const wchar_t* str, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#endif -#endif -inline bool regex_match(const std::string& s, - smatch& m, - const regex& e, - match_flag_type flags = match_default) -{ - return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::string& s, - const regex& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#ifndef BOOST_NO_STD_LOCALE -inline bool regex_match(const std::string& s, - smatch& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::string& s, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_match(const std::string& s, - smatch& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::string& s, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) -inline bool regex_match(const std::string& s, - smatch& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::string& s, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results m; - return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#endif -#if !defined(BOOST_NO_WREGEX) -inline bool regex_match(const std::basic_string& s, - match_results::const_iterator>& m, - const wregex& e, - match_flag_type flags = match_default) -{ - return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::basic_string& s, - const wregex& e, - match_flag_type flags = match_default) -{ - match_results::const_iterator> m; - return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#ifndef BOOST_NO_STD_LOCALE -inline bool regex_match(const std::basic_string& s, - match_results::const_iterator>& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::basic_string& s, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results::const_iterator> m; - return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_match(const std::basic_string& s, - match_results::const_iterator>& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::basic_string& s, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results::const_iterator> m; - return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) -inline bool regex_match(const std::basic_string& s, - match_results::const_iterator>& m, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::basic_string& s, - const basic_regex >& e, - match_flag_type flags = match_default) -{ - match_results::const_iterator> m; - return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#endif -#endif - -#endif - - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif // BOOST_REGEX_MATCH_HPP - - - - - - - - - - - - - - - - - - diff --git a/src/boost/boost/regex/v4/regex_merge.hpp b/src/boost/boost/regex/v4/regex_merge.hpp deleted file mode 100644 index 2e99b5e82..000000000 --- a/src/boost/boost/regex/v4/regex_merge.hpp +++ /dev/null @@ -1,93 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_format.hpp - * VERSION see - * DESCRIPTION: Provides formatting output routines for search and replace - * operations. Note this is an internal header file included - * by regex.hpp, do not include on its own. - */ - -#ifndef BOOST_REGEX_V4_REGEX_MERGE_HPP -#define BOOST_REGEX_V4_REGEX_MERGE_HPP - - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template -inline OutputIterator regex_merge(OutputIterator out, - Iterator first, - Iterator last, - const basic_regex& e, - const charT* fmt, - match_flag_type flags = match_default) -{ - return regex_replace(out, first, last, e, fmt, flags); -} - -template -inline OutputIterator regex_merge(OutputIterator out, - Iterator first, - Iterator last, - const basic_regex& e, - const std::basic_string& fmt, - match_flag_type flags = match_default) -{ - return regex_merge(out, first, last, e, fmt.c_str(), flags); -} - -template -inline std::basic_string regex_merge(const std::basic_string& s, - const basic_regex& e, - const charT* fmt, - match_flag_type flags = match_default) -{ - return regex_replace(s, e, fmt, flags); -} - -template -inline std::basic_string regex_merge(const std::basic_string& s, - const basic_regex& e, - const std::basic_string& fmt, - match_flag_type flags = match_default) -{ - return regex_replace(s, e, fmt, flags); -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_MERGE_HPP - - diff --git a/src/boost/boost/regex/v4/regex_raw_buffer.hpp b/src/boost/boost/regex/v4/regex_raw_buffer.hpp deleted file mode 100644 index 12f961b87..000000000 --- a/src/boost/boost/regex/v4/regex_raw_buffer.hpp +++ /dev/null @@ -1,210 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_raw_buffer.hpp - * VERSION see - * DESCRIPTION: Raw character buffer for regex code. - * Note this is an internal header file included - * by regex.hpp, do not include on its own. - */ - -#ifndef BOOST_REGEX_RAW_BUFFER_HPP -#define BOOST_REGEX_RAW_BUFFER_HPP - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif - -#include -#include - -namespace boost{ - namespace BOOST_REGEX_DETAIL_NS{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -struct empty_padding{}; - -union padding -{ - void* p; - unsigned int i; -}; - -template -struct padding3 -{ - enum{ - padding_size = 8, - padding_mask = 7 - }; -}; - -template<> -struct padding3<2> -{ - enum{ - padding_size = 2, - padding_mask = 1 - }; -}; - -template<> -struct padding3<4> -{ - enum{ - padding_size = 4, - padding_mask = 3 - }; -}; - -template<> -struct padding3<8> -{ - enum{ - padding_size = 8, - padding_mask = 7 - }; -}; - -template<> -struct padding3<16> -{ - enum{ - padding_size = 16, - padding_mask = 15 - }; -}; - -enum{ - padding_size = padding3::padding_size, - padding_mask = padding3::padding_mask -}; - -// -// class raw_storage -// basically this is a simplified vector -// this is used by basic_regex for expression storage -// - -class BOOST_REGEX_DECL raw_storage -{ -public: - typedef std::size_t size_type; - typedef unsigned char* pointer; -private: - pointer last, start, end; -public: - - raw_storage(); - raw_storage(size_type n); - - ~raw_storage() - { - ::operator delete(start); - } - - void BOOST_REGEX_CALL resize(size_type n); - - void* BOOST_REGEX_CALL extend(size_type n) - { - if(size_type(last - end) < n) - resize(n + (end - start)); - pointer result = end; - end += n; - return result; - } - - void* BOOST_REGEX_CALL insert(size_type pos, size_type n); - - size_type BOOST_REGEX_CALL size() - { - return size_type(end - start); - } - - size_type BOOST_REGEX_CALL capacity() - { - return size_type(last - start); - } - - void* BOOST_REGEX_CALL data()const - { - return start; - } - - size_type BOOST_REGEX_CALL index(void* ptr) - { - return size_type(static_cast(ptr) - static_cast(data())); - } - - void BOOST_REGEX_CALL clear() - { - end = start; - } - - void BOOST_REGEX_CALL align() - { - // move end up to a boundary: - end = start + (((end - start) + padding_mask) & ~padding_mask); - } - void swap(raw_storage& that) - { - std::swap(start, that.start); - std::swap(end, that.end); - std::swap(last, that.last); - } -}; - -inline raw_storage::raw_storage() -{ - last = start = end = 0; -} - -inline raw_storage::raw_storage(size_type n) -{ - start = end = static_cast(::operator new(n)); - BOOST_REGEX_NOEH_ASSERT(start) - last = start + n; -} - - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace BOOST_REGEX_DETAIL_NS -} // namespace boost - -#endif - - - - - - diff --git a/src/boost/boost/regex/v4/regex_replace.hpp b/src/boost/boost/regex/v4/regex_replace.hpp deleted file mode 100644 index d3577f948..000000000 --- a/src/boost/boost/regex/v4/regex_replace.hpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - * - * Copyright (c) 1998-2009 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_format.hpp - * VERSION see - * DESCRIPTION: Provides formatting output routines for search and replace - * operations. Note this is an internal header file included - * by regex.hpp, do not include on its own. - */ - -#ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP -#define BOOST_REGEX_V4_REGEX_REPLACE_HPP - - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template -OutputIterator regex_replace(OutputIterator out, - BidirectionalIterator first, - BidirectionalIterator last, - const basic_regex& e, - Formatter fmt, - match_flag_type flags = match_default) -{ - regex_iterator i(first, last, e, flags); - regex_iterator j; - if(i == j) - { - if(!(flags & regex_constants::format_no_copy)) - out = BOOST_REGEX_DETAIL_NS::copy(first, last, out); - } - else - { - BidirectionalIterator last_m(first); - while(i != j) - { - if(!(flags & regex_constants::format_no_copy)) - out = BOOST_REGEX_DETAIL_NS::copy(i->prefix().first, i->prefix().second, out); - out = i->format(out, fmt, flags, e); - last_m = (*i)[0].second; - if(flags & regex_constants::format_first_only) - break; - ++i; - } - if(!(flags & regex_constants::format_no_copy)) - out = BOOST_REGEX_DETAIL_NS::copy(last_m, last, out); - } - return out; -} - -template -std::basic_string regex_replace(const std::basic_string& s, - const basic_regex& e, - Formatter fmt, - match_flag_type flags = match_default) -{ - std::basic_string result; - BOOST_REGEX_DETAIL_NS::string_out_iterator > i(result); - regex_replace(i, s.begin(), s.end(), e, fmt, flags); - return result; -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_REPLACE_HPP - - diff --git a/src/boost/boost/regex/v4/regex_search.hpp b/src/boost/boost/regex/v4/regex_search.hpp deleted file mode 100644 index a4a88c920..000000000 --- a/src/boost/boost/regex/v4/regex_search.hpp +++ /dev/null @@ -1,217 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_search.hpp - * VERSION see - * DESCRIPTION: Provides regex_search implementation. - */ - -#ifndef BOOST_REGEX_V4_REGEX_SEARCH_HPP -#define BOOST_REGEX_V4_REGEX_SEARCH_HPP - - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template -bool regex_search(BidiIterator first, BidiIterator last, - match_results& m, - const basic_regex& e, - match_flag_type flags = match_default) -{ - return regex_search(first, last, m, e, flags, first); -} - -template -bool regex_search(BidiIterator first, BidiIterator last, - match_results& m, - const basic_regex& e, - match_flag_type flags, - BidiIterator base) -{ - if(e.flags() & regex_constants::failbit) - return false; - - BOOST_REGEX_DETAIL_NS::perl_matcher matcher(first, last, m, e, flags, base); - return matcher.find(); -} - -// -// regex_search convenience interfaces: -#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -// -// this isn't really a partial specialisation, but template function -// overloading - if the compiler doesn't support partial specialisation -// then it really won't support this either: -template -inline bool regex_search(const charT* str, - match_results& m, - const basic_regex& e, - match_flag_type flags = match_default) -{ - return regex_search(str, str + traits::length(str), m, e, flags); -} - -template -inline bool regex_search(const std::basic_string& s, - match_results::const_iterator, Allocator>& m, - const basic_regex& e, - match_flag_type flags = match_default) -{ - return regex_search(s.begin(), s.end(), m, e, flags); -} -#else // partial overloads: -inline bool regex_search(const char* str, - cmatch& m, - const regex& e, - match_flag_type flags = match_default) -{ - return regex_search(str, str + regex::traits_type::length(str), m, e, flags); -} -inline bool regex_search(const char* first, const char* last, - const regex& e, - match_flag_type flags = match_default) -{ - cmatch m; - return regex_search(first, last, m, e, flags | regex_constants::match_any); -} - -#ifndef BOOST_NO_WREGEX -inline bool regex_search(const wchar_t* str, - wcmatch& m, - const wregex& e, - match_flag_type flags = match_default) -{ - return regex_search(str, str + wregex::traits_type::length(str), m, e, flags); -} -inline bool regex_search(const wchar_t* first, const wchar_t* last, - const wregex& e, - match_flag_type flags = match_default) -{ - wcmatch m; - return regex_search(first, last, m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_search(const std::string& s, - smatch& m, - const regex& e, - match_flag_type flags = match_default) -{ - return regex_search(s.begin(), s.end(), m, e, flags); -} -#if !defined(BOOST_NO_WREGEX) -inline bool regex_search(const std::basic_string& s, - wsmatch& m, - const wregex& e, - match_flag_type flags = match_default) -{ - return regex_search(s.begin(), s.end(), m, e, flags); -} -#endif - -#endif - -template -bool regex_search(BidiIterator first, BidiIterator last, - const basic_regex& e, - match_flag_type flags = match_default) -{ - if(e.flags() & regex_constants::failbit) - return false; - - match_results m; - typedef typename match_results::allocator_type match_alloc_type; - BOOST_REGEX_DETAIL_NS::perl_matcher matcher(first, last, m, e, flags | regex_constants::match_any, first); - return matcher.find(); -} - -#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - -template -inline bool regex_search(const charT* str, - const basic_regex& e, - match_flag_type flags = match_default) -{ - return regex_search(str, str + traits::length(str), e, flags); -} - -template -inline bool regex_search(const std::basic_string& s, - const basic_regex& e, - match_flag_type flags = match_default) -{ - return regex_search(s.begin(), s.end(), e, flags); -} -#else // non-template function overloads -inline bool regex_search(const char* str, - const regex& e, - match_flag_type flags = match_default) -{ - cmatch m; - return regex_search(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#ifndef BOOST_NO_WREGEX -inline bool regex_search(const wchar_t* str, - const wregex& e, - match_flag_type flags = match_default) -{ - wcmatch m; - return regex_search(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_search(const std::string& s, - const regex& e, - match_flag_type flags = match_default) -{ - smatch m; - return regex_search(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#if !defined(BOOST_NO_WREGEX) -inline bool regex_search(const std::basic_string& s, - const wregex& e, - match_flag_type flags = match_default) -{ - wsmatch m; - return regex_search(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} - -#endif // BOOST_NO_WREGEX - -#endif // partial overload - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_SEARCH_HPP - - diff --git a/src/boost/boost/regex/v4/regex_split.hpp b/src/boost/boost/regex/v4/regex_split.hpp deleted file mode 100644 index 356bb67e0..000000000 --- a/src/boost/boost/regex/v4/regex_split.hpp +++ /dev/null @@ -1,174 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_split.hpp - * VERSION see - * DESCRIPTION: Implements regex_split and associated functions. - * Note this is an internal header file included - * by regex.hpp, do not include on its own. - */ - -#ifndef BOOST_REGEX_SPLIT_HPP -#define BOOST_REGEX_SPLIT_HPP - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -# pragma warning(push) -#if BOOST_MSVC < 1910 -#pragma warning(disable:4800) -#endif -#endif - -namespace BOOST_REGEX_DETAIL_NS{ - -template -const basic_regex& get_default_expression(charT) -{ - static const charT expression_text[4] = { '\\', 's', '+', '\00', }; - static const basic_regex e(expression_text); - return e; -} - -template -class split_pred -{ - typedef std::basic_string string_type; - typedef typename string_type::const_iterator iterator_type; - iterator_type* p_last; - OutputIterator* p_out; - std::size_t* p_max; - std::size_t initial_max; -public: - split_pred(iterator_type* a, OutputIterator* b, std::size_t* c) - : p_last(a), p_out(b), p_max(c), initial_max(*c) {} - - bool operator()(const match_results& what); -}; - -template -bool split_pred::operator() - (const match_results& what) -{ - *p_last = what[0].second; - if(what.size() > 1) - { - // output sub-expressions only: - for(unsigned i = 1; i < what.size(); ++i) - { - *(*p_out) = what.str(i); - ++(*p_out); - if(0 == --*p_max) return false; - } - return *p_max != 0; - } - else - { - // output $` only if it's not-null or not at the start of the input: - const sub_match& sub = what[-1]; - if((sub.first != sub.second) || (*p_max != initial_max)) - { - *(*p_out) = sub.str(); - ++(*p_out); - return --*p_max; - } - } - // - // initial null, do nothing: - return true; -} - -} // namespace BOOST_REGEX_DETAIL_NS - -template -std::size_t regex_split(OutputIterator out, - std::basic_string& s, - const basic_regex& e, - match_flag_type flags, - std::size_t max_split) -{ - typedef typename std::basic_string::const_iterator ci_t; - //typedef typename match_results::allocator_type match_allocator; - ci_t last = s.begin(); - std::size_t init_size = max_split; - BOOST_REGEX_DETAIL_NS::split_pred pred(&last, &out, &max_split); - ci_t i, j; - i = s.begin(); - j = s.end(); - regex_grep(pred, i, j, e, flags); - // - // if there is still input left, do a final push as long as max_split - // is not exhausted, and we're not splitting sub-expressions rather - // than whitespace: - if(max_split && (last != s.end()) && (e.mark_count() == 0)) - { - *out = std::basic_string((ci_t)last, (ci_t)s.end()); - ++out; - last = s.end(); - --max_split; - } - // - // delete from the string everything that has been processed so far: - s.erase(0, last - s.begin()); - // - // return the number of new records pushed: - return init_size - max_split; -} - -template -inline std::size_t regex_split(OutputIterator out, - std::basic_string& s, - const basic_regex& e, - match_flag_type flags = match_default) -{ - return regex_split(out, s, e, flags, UINT_MAX); -} - -template -inline std::size_t regex_split(OutputIterator out, - std::basic_string& s) -{ - return regex_split(out, s, BOOST_REGEX_DETAIL_NS::get_default_expression(charT(0)), match_default, UINT_MAX); -} - -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif - - diff --git a/src/boost/boost/regex/v4/regex_token_iterator.hpp b/src/boost/boost/regex/v4/regex_token_iterator.hpp deleted file mode 100644 index 3d8a2ca9a..000000000 --- a/src/boost/boost/regex/v4/regex_token_iterator.hpp +++ /dev/null @@ -1,325 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_token_iterator.hpp - * VERSION see - * DESCRIPTION: Provides regex_token_iterator implementation. - */ - -#ifndef BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP -#define BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP - -#include -#include -#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ - || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) -// -// Borland C++ Builder 6, and Visual C++ 6, -// can't cope with the array template constructor -// so we have a template member that will accept any type as -// argument, and then assert that is really is an array: -// -#include -#include -#endif - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#pragma warning(push) -#pragma warning(disable:4700) -#endif - -template -class regex_token_iterator_implementation -{ - typedef basic_regex regex_type; - typedef sub_match value_type; - - match_results what; // current match - BidirectionalIterator base; // start of search area - BidirectionalIterator end; // end of search area - const regex_type re; // the expression - match_flag_type flags; // match flags - value_type result; // the current string result - int N; // the current sub-expression being enumerated - std::vector subs; // the sub-expressions to enumerate - -public: - regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, int sub, match_flag_type f) - : end(last), re(*p), flags(f){ subs.push_back(sub); } - regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector& v, match_flag_type f) - : end(last), re(*p), flags(f), subs(v){} -#if !BOOST_WORKAROUND(__HP_aCC, < 60700) -#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ - || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ - || BOOST_WORKAROUND(__HP_aCC, < 60700) - template - regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const T& submatches, match_flag_type f) - : end(last), re(*p), flags(f) - { - // assert that T really is an array: - BOOST_STATIC_ASSERT(::boost::is_array::value); - const std::size_t array_size = sizeof(T) / sizeof(submatches[0]); - for(std::size_t i = 0; i < array_size; ++i) - { - subs.push_back(submatches[i]); - } - } -#else - template - regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const int (&submatches)[CN], match_flag_type f) - : end(last), re(*p), flags(f) - { - for(std::size_t i = 0; i < CN; ++i) - { - subs.push_back(submatches[i]); - } - } -#endif -#endif - bool init(BidirectionalIterator first) - { - N = 0; - base = first; - if(regex_search(first, end, what, re, flags, base) == true) - { - N = 0; - result = ((subs[N] == -1) ? what.prefix() : what[(int)subs[N]]); - return true; - } - else if((subs[N] == -1) && (first != end)) - { - result.first = first; - result.second = end; - result.matched = (first != end); - N = -1; - return true; - } - return false; - } - bool compare(const regex_token_iterator_implementation& that) - { - if(this == &that) return true; - return (&re.get_data() == &that.re.get_data()) - && (end == that.end) - && (flags == that.flags) - && (N == that.N) - && (what[0].first == that.what[0].first) - && (what[0].second == that.what[0].second); - } - const value_type& get() - { return result; } - bool next() - { - if(N == -1) - return false; - if(N+1 < (int)subs.size()) - { - ++N; - result =((subs[N] == -1) ? what.prefix() : what[subs[N]]); - return true; - } - //if(what.prefix().first != what[0].second) - // flags |= /*match_prev_avail |*/ regex_constants::match_not_bob; - BidirectionalIterator last_end(what[0].second); - if(regex_search(last_end, end, what, re, ((what[0].first == what[0].second) ? flags | regex_constants::match_not_initial_null : flags), base)) - { - N =0; - result =((subs[N] == -1) ? what.prefix() : what[subs[N]]); - return true; - } - else if((last_end != end) && (subs[0] == -1)) - { - N =-1; - result.first = last_end; - result.second = end; - result.matched = (last_end != end); - return true; - } - return false; - } -private: - regex_token_iterator_implementation& operator=(const regex_token_iterator_implementation&); -}; - -template ::value_type, - class traits = regex_traits > -class regex_token_iterator -{ -private: - typedef regex_token_iterator_implementation impl; - typedef shared_ptr pimpl; -public: - typedef basic_regex regex_type; - typedef sub_match value_type; - typedef typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::difference_type - difference_type; - typedef const value_type* pointer; - typedef const value_type& reference; - typedef std::forward_iterator_tag iterator_category; - - regex_token_iterator(){} - regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, - int submatch = 0, match_flag_type m = match_default) - : pdata(new impl(&re, b, submatch, m)) - { - if(!pdata->init(a)) - pdata.reset(); - } - regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, - const std::vector& submatches, match_flag_type m = match_default) - : pdata(new impl(&re, b, submatches, m)) - { - if(!pdata->init(a)) - pdata.reset(); - } -#if !BOOST_WORKAROUND(__HP_aCC, < 60700) -#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ - || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ - || BOOST_WORKAROUND(__HP_aCC, < 60700) - template - regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, - const T& submatches, match_flag_type m = match_default) - : pdata(new impl(&re, b, submatches, m)) - { - if(!pdata->init(a)) - pdata.reset(); - } -#else - template - regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, - const int (&submatches)[N], match_flag_type m = match_default) - : pdata(new impl(&re, b, submatches, m)) - { - if(!pdata->init(a)) - pdata.reset(); - } -#endif -#endif - regex_token_iterator(const regex_token_iterator& that) - : pdata(that.pdata) {} - regex_token_iterator& operator=(const regex_token_iterator& that) - { - pdata = that.pdata; - return *this; - } - bool operator==(const regex_token_iterator& that)const - { - if((pdata.get() == 0) || (that.pdata.get() == 0)) - return pdata.get() == that.pdata.get(); - return pdata->compare(*(that.pdata.get())); - } - bool operator!=(const regex_token_iterator& that)const - { return !(*this == that); } - const value_type& operator*()const - { return pdata->get(); } - const value_type* operator->()const - { return &(pdata->get()); } - regex_token_iterator& operator++() - { - cow(); - if(0 == pdata->next()) - { - pdata.reset(); - } - return *this; - } - regex_token_iterator operator++(int) - { - regex_token_iterator result(*this); - ++(*this); - return result; - } -private: - - pimpl pdata; - - void cow() - { - // copy-on-write - if(pdata.get() && !pdata.unique()) - { - pdata.reset(new impl(*(pdata.get()))); - } - } -}; - -typedef regex_token_iterator cregex_token_iterator; -typedef regex_token_iterator sregex_token_iterator; -#ifndef BOOST_NO_WREGEX -typedef regex_token_iterator wcregex_token_iterator; -typedef regex_token_iterator wsregex_token_iterator; -#endif - -template -inline regex_token_iterator make_regex_token_iterator(const charT* p, const basic_regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return regex_token_iterator(p, p+traits::length(p), e, submatch, m); -} -template -inline regex_token_iterator::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string& p, const basic_regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return regex_token_iterator::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m); -} -template -inline regex_token_iterator make_regex_token_iterator(const charT* p, const basic_regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ - return regex_token_iterator(p, p+traits::length(p), e, submatch, m); -} -template -inline regex_token_iterator::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string& p, const basic_regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ - return regex_token_iterator::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m); -} -template -inline regex_token_iterator make_regex_token_iterator(const charT* p, const basic_regex& e, const std::vector& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return regex_token_iterator(p, p+traits::length(p), e, submatch, m); -} -template -inline regex_token_iterator::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string& p, const basic_regex& e, const std::vector& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return regex_token_iterator::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m); -} - -#ifdef BOOST_MSVC -#pragma warning(pop) -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP - - - - diff --git a/src/boost/boost/regex/v4/regex_traits.hpp b/src/boost/boost/regex/v4/regex_traits.hpp deleted file mode 100644 index 1e95284ec..000000000 --- a/src/boost/boost/regex/v4/regex_traits.hpp +++ /dev/null @@ -1,189 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_traits.hpp - * VERSION see - * DESCRIPTION: Declares regular expression traits classes. - */ - -#ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED -#define BOOST_REGEX_TRAITS_HPP_INCLUDED - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif -#ifndef BOOST_REGEX_WORKAROUND_HPP -#include -#endif -#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP -#include -#endif -#ifndef BOOST_REGEX_ERROR_TYPE_HPP -#include -#endif -#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED -#include -#endif -#ifndef BOOST_NO_STD_LOCALE -# ifndef BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED -# include -# endif -#endif -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560) -# ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED -# include -# endif -#endif -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) -# ifndef BOOST_W32_REGEX_TRAITS_HPP_INCLUDED -# include -# endif -#endif -#ifndef BOOST_REGEX_FWD_HPP_INCLUDED -#include -#endif - -#include "boost/mpl/has_xxx.hpp" -#include - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ - -template -struct regex_traits : public implementationT -{ - regex_traits() : implementationT() {} -}; - -// -// class regex_traits_wrapper. -// this is what our implementation will actually store; -// it provides default implementations of the "optional" -// interfaces that we support, in addition to the -// required "standard" ones: -// -namespace BOOST_REGEX_DETAIL_NS{ -#if !BOOST_WORKAROUND(__HP_aCC, < 60000) -BOOST_MPL_HAS_XXX_TRAIT_DEF(boost_extensions_tag) -#else -template -struct has_boost_extensions_tag -{ - BOOST_STATIC_CONSTANT(bool, value = false); -}; -#endif - -template -struct default_wrapper : public BaseT -{ - typedef typename BaseT::char_type char_type; - std::string error_string(::boost::regex_constants::error_type e)const - { - return ::boost::BOOST_REGEX_DETAIL_NS::get_default_error_string(e); - } - ::boost::regex_constants::syntax_type syntax_type(char_type c)const - { - return ((c & 0x7f) == c) ? get_default_syntax_type(static_cast(c)) : ::boost::regex_constants::syntax_char; - } - ::boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c)const - { - return ((c & 0x7f) == c) ? get_default_escape_syntax_type(static_cast(c)) : ::boost::regex_constants::escape_type_identity; - } - boost::intmax_t toi(const char_type*& p1, const char_type* p2, int radix)const - { - return ::boost::BOOST_REGEX_DETAIL_NS::global_toi(p1, p2, radix, *this); - } - char_type translate(char_type c, bool icase)const - { - return (icase ? this->translate_nocase(c) : this->translate(c)); - } - char_type translate(char_type c)const - { - return BaseT::translate(c); - } - char_type tolower(char_type c)const - { - return ::boost::BOOST_REGEX_DETAIL_NS::global_lower(c); - } - char_type toupper(char_type c)const - { - return ::boost::BOOST_REGEX_DETAIL_NS::global_upper(c); - } -}; - -template -struct compute_wrapper_base -{ - typedef BaseT type; -}; -#if !BOOST_WORKAROUND(__HP_aCC, < 60000) -template -struct compute_wrapper_base -{ - typedef default_wrapper type; -}; -#else -template <> -struct compute_wrapper_base, false> -{ - typedef default_wrapper > type; -}; -#ifndef BOOST_NO_WREGEX -template <> -struct compute_wrapper_base, false> -{ - typedef default_wrapper > type; -}; -#endif -#endif - -} // namespace BOOST_REGEX_DETAIL_NS - -template -struct regex_traits_wrapper - : public ::boost::BOOST_REGEX_DETAIL_NS::compute_wrapper_base< - BaseT, - ::boost::BOOST_REGEX_DETAIL_NS::has_boost_extensions_tag::value - >::type -{ - regex_traits_wrapper(){} -private: - regex_traits_wrapper(const regex_traits_wrapper&); - regex_traits_wrapper& operator=(const regex_traits_wrapper&); -}; - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif // include - diff --git a/src/boost/boost/regex/v4/regex_traits_defaults.hpp b/src/boost/boost/regex/v4/regex_traits_defaults.hpp deleted file mode 100644 index 900b9b4e7..000000000 --- a/src/boost/boost/regex/v4/regex_traits_defaults.hpp +++ /dev/null @@ -1,381 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_traits_defaults.hpp - * VERSION see - * DESCRIPTION: Declares API's for access to regex_traits default properties. - */ - -#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED -#define BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#include - -#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP -#include -#endif -#ifndef BOOST_REGEX_ERROR_TYPE_HPP -#include -#endif -#include -#include - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std{ - using ::strlen; -} -#endif - -namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ - - -// -// helpers to suppress warnings: -// -template -inline bool is_extended(charT c) -{ - typedef typename make_unsigned::type unsigned_type; - return (sizeof(charT) > 1) && (static_cast(c) >= 256u); -} -inline bool is_extended(char) -{ return false; } - - -BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n); -BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n); -BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c); -BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c); - -// is charT c a combining character? -BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(uint_least16_t s); - -template -inline bool is_combining(charT c) -{ - return (c <= static_cast(0)) ? false : ((c >= static_cast((std::numeric_limits::max)())) ? false : is_combining_implementation(static_cast(c))); -} -template <> -inline bool is_combining(char) -{ - return false; -} -template <> -inline bool is_combining(signed char) -{ - return false; -} -template <> -inline bool is_combining(unsigned char) -{ - return false; -} -#if !defined(__hpux) && !defined(__WINSCW__) // can't use WCHAR_MAX/MIN in pp-directives -#ifdef _MSC_VER -template<> -inline bool is_combining(wchar_t c) -{ - return is_combining_implementation(static_cast(c)); -} -#elif !defined(__DECCXX) && !defined(__osf__) && !defined(__OSF__) && defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) -#if defined(WCHAR_MAX) && (WCHAR_MAX <= USHRT_MAX) -template<> -inline bool is_combining(wchar_t c) -{ - return is_combining_implementation(static_cast(c)); -} -#else -template<> -inline bool is_combining(wchar_t c) -{ - return (c >= (std::numeric_limits::max)()) ? false : is_combining_implementation(static_cast(c)); -} -#endif -#endif -#endif - -// -// is a charT c a line separator? -// -template -inline bool is_separator(charT c) -{ - return BOOST_REGEX_MAKE_BOOL( - (c == static_cast('\n')) - || (c == static_cast('\r')) - || (c == static_cast('\f')) - || (static_cast(c) == 0x2028u) - || (static_cast(c) == 0x2029u) - || (static_cast(c) == 0x85u)); -} -template <> -inline bool is_separator(char c) -{ - return BOOST_REGEX_MAKE_BOOL((c == '\n') || (c == '\r') || (c == '\f')); -} - -// -// get a default collating element: -// -BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name); - -// -// get the state_id of a character clasification, the individual -// traits classes then transform that state_id into a bitmask: -// -template -struct character_pointer_range -{ - const charT* p1; - const charT* p2; - - bool operator < (const character_pointer_range& r)const - { - return std::lexicographical_compare(p1, p2, r.p1, r.p2); - } - bool operator == (const character_pointer_range& r)const - { - // Not only do we check that the ranges are of equal size before - // calling std::equal, but there is no other algorithm available: - // not even a non-standard MS one. So forward to unchecked_equal - // in the MS case. - return ((p2 - p1) == (r.p2 - r.p1)) && BOOST_REGEX_DETAIL_NS::equal(p1, p2, r.p1); - } -}; -template -int get_default_class_id(const charT* p1, const charT* p2) -{ - static const charT data[73] = { - 'a', 'l', 'n', 'u', 'm', - 'a', 'l', 'p', 'h', 'a', - 'b', 'l', 'a', 'n', 'k', - 'c', 'n', 't', 'r', 'l', - 'd', 'i', 'g', 'i', 't', - 'g', 'r', 'a', 'p', 'h', - 'l', 'o', 'w', 'e', 'r', - 'p', 'r', 'i', 'n', 't', - 'p', 'u', 'n', 'c', 't', - 's', 'p', 'a', 'c', 'e', - 'u', 'n', 'i', 'c', 'o', 'd', 'e', - 'u', 'p', 'p', 'e', 'r', - 'v', - 'w', 'o', 'r', 'd', - 'x', 'd', 'i', 'g', 'i', 't', - }; - - static const character_pointer_range ranges[21] = - { - {data+0, data+5,}, // alnum - {data+5, data+10,}, // alpha - {data+10, data+15,}, // blank - {data+15, data+20,}, // cntrl - {data+20, data+21,}, // d - {data+20, data+25,}, // digit - {data+25, data+30,}, // graph - {data+29, data+30,}, // h - {data+30, data+31,}, // l - {data+30, data+35,}, // lower - {data+35, data+40,}, // print - {data+40, data+45,}, // punct - {data+45, data+46,}, // s - {data+45, data+50,}, // space - {data+57, data+58,}, // u - {data+50, data+57,}, // unicode - {data+57, data+62,}, // upper - {data+62, data+63,}, // v - {data+63, data+64,}, // w - {data+63, data+67,}, // word - {data+67, data+73,}, // xdigit - }; - static const character_pointer_range* ranges_begin = ranges; - static const character_pointer_range* ranges_end = ranges + (sizeof(ranges)/sizeof(ranges[0])); - - character_pointer_range t = { p1, p2, }; - const character_pointer_range* p = std::lower_bound(ranges_begin, ranges_end, t); - if((p != ranges_end) && (t == *p)) - return static_cast(p - ranges); - return -1; -} - -// -// helper functions: -// -template -std::ptrdiff_t global_length(const charT* p) -{ - std::ptrdiff_t n = 0; - while(*p) - { - ++p; - ++n; - } - return n; -} -template<> -inline std::ptrdiff_t global_length(const char* p) -{ - return (std::strlen)(p); -} -#ifndef BOOST_NO_WREGEX -template<> -inline std::ptrdiff_t global_length(const wchar_t* p) -{ - return (std::ptrdiff_t)(std::wcslen)(p); -} -#endif -template -inline charT BOOST_REGEX_CALL global_lower(charT c) -{ - return c; -} -template -inline charT BOOST_REGEX_CALL global_upper(charT c) -{ - return c; -} - -BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c); -BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c); -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c); -#endif -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c); -BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c); -#endif -// -// This sucks: declare template specialisations of global_lower/global_upper -// that just forward to the non-template implementation functions. We do -// this because there is one compiler (Compaq Tru64 C++) that doesn't seem -// to differentiate between templates and non-template overloads.... -// what's more, the primary template, plus all overloads have to be -// defined in the same translation unit (if one is inline they all must be) -// otherwise the "local template instantiation" compiler option can pick -// the wrong instantiation when linking: -// -template<> inline char BOOST_REGEX_CALL global_lower(char c){ return do_global_lower(c); } -template<> inline char BOOST_REGEX_CALL global_upper(char c){ return do_global_upper(c); } -#ifndef BOOST_NO_WREGEX -template<> inline wchar_t BOOST_REGEX_CALL global_lower(wchar_t c){ return do_global_lower(c); } -template<> inline wchar_t BOOST_REGEX_CALL global_upper(wchar_t c){ return do_global_upper(c); } -#endif -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -template<> inline unsigned short BOOST_REGEX_CALL global_lower(unsigned short c){ return do_global_lower(c); } -template<> inline unsigned short BOOST_REGEX_CALL global_upper(unsigned short c){ return do_global_upper(c); } -#endif - -template -int global_value(charT c) -{ - static const charT zero = '0'; - static const charT nine = '9'; - static const charT a = 'a'; - static const charT f = 'f'; - static const charT A = 'A'; - static const charT F = 'F'; - - if(c > f) return -1; - if(c >= a) return 10 + (c - a); - if(c > F) return -1; - if(c >= A) return 10 + (c - A); - if(c > nine) return -1; - if(c >= zero) return c - zero; - return -1; -} -template -boost::intmax_t global_toi(const charT*& p1, const charT* p2, int radix, const traits& t) -{ - (void)t; // warning suppression - boost::intmax_t limit = (std::numeric_limits::max)() / radix; - boost::intmax_t next_value = t.value(*p1, radix); - if((p1 == p2) || (next_value < 0) || (next_value >= radix)) - return -1; - boost::intmax_t result = 0; - while(p1 != p2) - { - next_value = t.value(*p1, radix); - if((next_value < 0) || (next_value >= radix)) - break; - result *= radix; - result += next_value; - ++p1; - if (result > limit) - return -1; - } - return result; -} - -template -inline typename boost::enable_if_c<(sizeof(charT) > 1), const charT*>::type get_escape_R_string() -{ -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable:4309 4245) -#endif - static const charT e1[] = { '(', '?', '-', 'x', ':', '(', '?', '>', '\x0D', '\x0A', '?', - '|', '[', '\x0A', '\x0B', '\x0C', static_cast(0x85), static_cast(0x2028), - static_cast(0x2029), ']', ')', ')', '\0' }; - static const charT e2[] = { '(', '?', '-', 'x', ':', '(', '?', '>', '\x0D', '\x0A', '?', - '|', '[', '\x0A', '\x0B', '\x0C', static_cast(0x85), ']', ')', ')', '\0' }; - - charT c = static_cast(0x2029u); - bool b = (static_cast(c) == 0x2029u); - - return (b ? e1 : e2); -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif -} - -template -inline typename boost::disable_if_c<(sizeof(charT) > 1), const charT*>::type get_escape_R_string() -{ -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable:4309) -#endif - static const charT e2[] = { '(', '?', '-', 'x', ':', '(', '?', '>', '\x0D', '\x0A', '?', - '|', '[', '\x0A', '\x0B', '\x0C', '\x85', ']', ')', ')', '\0' }; - return e2; -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif -} - -} // BOOST_REGEX_DETAIL_NS -} // boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif diff --git a/src/boost/boost/regex/v4/regex_workaround.hpp b/src/boost/boost/regex/v4/regex_workaround.hpp deleted file mode 100644 index 0667b46a1..000000000 --- a/src/boost/boost/regex/v4/regex_workaround.hpp +++ /dev/null @@ -1,237 +0,0 @@ -/* - * - * Copyright (c) 1998-2005 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_workarounds.cpp - * VERSION see - * DESCRIPTION: Declares Misc workarounds. - */ - -#ifndef BOOST_REGEX_WORKAROUND_HPP -#define BOOST_REGEX_WORKAROUND_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef BOOST_NO_STD_LOCALE -# include -#endif - -#if defined(BOOST_NO_STDC_NAMESPACE) -namespace std{ - using ::sprintf; using ::strcpy; using ::strcat; using ::strlen; -} -#endif - -namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ -#ifdef BOOST_NO_STD_DISTANCE -template -std::ptrdiff_t distance(const T& x, const T& y) -{ return y - x; } -#else -using std::distance; -#endif -}} - - -#ifdef BOOST_REGEX_NO_BOOL -# define BOOST_REGEX_MAKE_BOOL(x) static_cast((x) ? true : false) -#else -# define BOOST_REGEX_MAKE_BOOL(x) static_cast(x) -#endif - -/***************************************************************************** - * - * Fix broken namespace support: - * - ****************************************************************************/ - -#if defined(BOOST_NO_STDC_NAMESPACE) && defined(__cplusplus) - -namespace std{ - using ::ptrdiff_t; - using ::size_t; - using ::abs; - using ::memset; - using ::memcpy; -} - -#endif - -/***************************************************************************** - * - * helper functions pointer_construct/pointer_destroy: - * - ****************************************************************************/ - -#ifdef __cplusplus -namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ - -#ifdef BOOST_MSVC -#pragma warning (push) -#pragma warning (disable : 4100) -#endif - -template -inline void pointer_destroy(T* p) -{ p->~T(); (void)p; } - -#ifdef BOOST_MSVC -#pragma warning (pop) -#endif - -template -inline void pointer_construct(T* p, const T& t) -{ new (p) T(t); } - -}} // namespaces -#endif - -/***************************************************************************** - * - * helper function copy: - * - ****************************************************************************/ - -#ifdef __cplusplus -namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ -#if BOOST_WORKAROUND(BOOST_MSVC,>=1400) && BOOST_WORKAROUND(BOOST_MSVC, <1600) && defined(_CPPLIB_VER) && defined(BOOST_DINKUMWARE_STDLIB) && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) - // - // MSVC 8 will either emit warnings or else refuse to compile - // code that makes perfectly legitimate use of std::copy, when - // the OutputIterator type is a user-defined class (apparently all user - // defined iterators are "unsafe"). This code works around that: - // - template - inline OutputIterator copy( - InputIterator first, - InputIterator last, - OutputIterator dest - ) - { - return stdext::unchecked_copy(first, last, dest); - } - template - inline bool equal( - InputIterator1 first, - InputIterator1 last, - InputIterator2 with - ) - { - return stdext::unchecked_equal(first, last, with); - } -#elif BOOST_WORKAROUND(BOOST_MSVC, > 1500) - // - // MSVC 10 will either emit warnings or else refuse to compile - // code that makes perfectly legitimate use of std::copy, when - // the OutputIterator type is a user-defined class (apparently all user - // defined iterators are "unsafe"). What's more Microsoft have removed their - // non-standard "unchecked" versions, even though their still in the MS - // documentation!! Work around this as best we can: - // - template - inline OutputIterator copy( - InputIterator first, - InputIterator last, - OutputIterator dest - ) - { - while(first != last) - *dest++ = *first++; - return dest; - } - template - inline bool equal( - InputIterator1 first, - InputIterator1 last, - InputIterator2 with - ) - { - while(first != last) - if(*first++ != *with++) return false; - return true; - } -#else - using std::copy; - using std::equal; -#endif -#if BOOST_WORKAROUND(BOOST_MSVC,>=1400) && defined(__STDC_WANT_SECURE_LIB__) && __STDC_WANT_SECURE_LIB__ - - // use safe versions of strcpy etc: - using ::strcpy_s; - using ::strcat_s; -#else - inline std::size_t strcpy_s( - char *strDestination, - std::size_t sizeInBytes, - const char *strSource - ) - { - std::size_t lenSourceWithNull = std::strlen(strSource) + 1; - if (lenSourceWithNull > sizeInBytes) - return 1; - std::memcpy(strDestination, strSource, lenSourceWithNull); - return 0; - } - inline std::size_t strcat_s( - char *strDestination, - std::size_t sizeInBytes, - const char *strSource - ) - { - std::size_t lenSourceWithNull = std::strlen(strSource) + 1; - std::size_t lenDestination = std::strlen(strDestination); - if (lenSourceWithNull + lenDestination > sizeInBytes) - return 1; - std::memcpy(strDestination + lenDestination, strSource, lenSourceWithNull); - return 0; - } - -#endif - - inline void overflow_error_if_not_zero(std::size_t i) - { - if(i) - { - std::overflow_error e("String buffer too small"); - boost::throw_exception(e); - } - } - -}} // namespaces - -#endif // __cplusplus - -#endif // include guard - diff --git a/src/boost/boost/regex/v4/states.hpp b/src/boost/boost/regex/v4/states.hpp deleted file mode 100644 index 82feb6067..000000000 --- a/src/boost/boost/regex/v4/states.hpp +++ /dev/null @@ -1,321 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE states.cpp - * VERSION see - * DESCRIPTION: Declares internal state machine structures. - */ - -#ifndef BOOST_REGEX_V4_STATES_HPP -#define BOOST_REGEX_V4_STATES_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -namespace BOOST_REGEX_DETAIL_NS{ - -/*** mask_type ******************************************************* -Whenever we have a choice of two alternatives, we use an array of bytes -to indicate which of the two alternatives it is possible to take for any -given input character. If mask_take is set, then we can take the next -state, and if mask_skip is set then we can take the alternative. -***********************************************************************/ -enum mask_type -{ - mask_take = 1, - mask_skip = 2, - mask_init = 4, - mask_any = mask_skip | mask_take, - mask_all = mask_any -}; - -/*** helpers ********************************************************** -These helpers let us use function overload resolution to detect whether -we have narrow or wide character strings: -***********************************************************************/ -struct _narrow_type{}; -struct _wide_type{}; -template struct is_byte; -template<> struct is_byte { typedef _narrow_type width_type; }; -template<> struct is_byte{ typedef _narrow_type width_type; }; -template<> struct is_byte { typedef _narrow_type width_type; }; -template struct is_byte { typedef _wide_type width_type; }; - -/*** enum syntax_element_type ****************************************** -Every record in the state machine falls into one of the following types: -***********************************************************************/ -enum syntax_element_type -{ - // start of a marked sub-expression, or perl-style (?...) extension - syntax_element_startmark = 0, - // end of a marked sub-expression, or perl-style (?...) extension - syntax_element_endmark = syntax_element_startmark + 1, - // any sequence of literal characters - syntax_element_literal = syntax_element_endmark + 1, - // start of line assertion: ^ - syntax_element_start_line = syntax_element_literal + 1, - // end of line assertion $ - syntax_element_end_line = syntax_element_start_line + 1, - // match any character: . - syntax_element_wild = syntax_element_end_line + 1, - // end of expression: we have a match when we get here - syntax_element_match = syntax_element_wild + 1, - // perl style word boundary: \b - syntax_element_word_boundary = syntax_element_match + 1, - // perl style within word boundary: \B - syntax_element_within_word = syntax_element_word_boundary + 1, - // start of word assertion: \< - syntax_element_word_start = syntax_element_within_word + 1, - // end of word assertion: \> - syntax_element_word_end = syntax_element_word_start + 1, - // start of buffer assertion: \` - syntax_element_buffer_start = syntax_element_word_end + 1, - // end of buffer assertion: \' - syntax_element_buffer_end = syntax_element_buffer_start + 1, - // backreference to previously matched sub-expression - syntax_element_backref = syntax_element_buffer_end + 1, - // either a wide character set [..] or one with multicharacter collating elements: - syntax_element_long_set = syntax_element_backref + 1, - // narrow character set: [...] - syntax_element_set = syntax_element_long_set + 1, - // jump to a new state in the machine: - syntax_element_jump = syntax_element_set + 1, - // choose between two production states: - syntax_element_alt = syntax_element_jump + 1, - // a repeat - syntax_element_rep = syntax_element_alt + 1, - // match a combining character sequence - syntax_element_combining = syntax_element_rep + 1, - // perl style soft buffer end: \z - syntax_element_soft_buffer_end = syntax_element_combining + 1, - // perl style continuation: \G - syntax_element_restart_continue = syntax_element_soft_buffer_end + 1, - // single character repeats: - syntax_element_dot_rep = syntax_element_restart_continue + 1, - syntax_element_char_rep = syntax_element_dot_rep + 1, - syntax_element_short_set_rep = syntax_element_char_rep + 1, - syntax_element_long_set_rep = syntax_element_short_set_rep + 1, - // a backstep for lookbehind repeats: - syntax_element_backstep = syntax_element_long_set_rep + 1, - // an assertion that a mark was matched: - syntax_element_assert_backref = syntax_element_backstep + 1, - syntax_element_toggle_case = syntax_element_assert_backref + 1, - // a recursive expression: - syntax_element_recurse = syntax_element_toggle_case + 1, - // Verbs: - syntax_element_fail = syntax_element_recurse + 1, - syntax_element_accept = syntax_element_fail + 1, - syntax_element_commit = syntax_element_accept + 1, - syntax_element_then = syntax_element_commit + 1 -}; - -#ifdef BOOST_REGEX_DEBUG -// dwa 09/26/00 - This is needed to suppress warnings about an ambiguous conversion -std::ostream& operator<<(std::ostream&, syntax_element_type); -#endif - -struct re_syntax_base; - -/*** union offset_type ************************************************ -Points to another state in the machine. During machine construction -we use integral offsets, but these are converted to pointers before -execution of the machine. -***********************************************************************/ -union offset_type -{ - re_syntax_base* p; - std::ptrdiff_t i; -}; - -/*** struct re_syntax_base ******************************************** -Base class for all states in the machine. -***********************************************************************/ -struct re_syntax_base -{ - syntax_element_type type; // what kind of state this is - offset_type next; // next state in the machine -}; - -/*** struct re_brace ************************************************** -A marked parenthesis. -***********************************************************************/ -struct re_brace : public re_syntax_base -{ - // The index to match, can be zero (don't mark the sub-expression) - // or negative (for perl style (?...) extentions): - int index; - bool icase; -}; - -/*** struct re_dot ************************************************** -Match anything. -***********************************************************************/ -enum -{ - dont_care = 1, - force_not_newline = 0, - force_newline = 2, - - test_not_newline = 2, - test_newline = 3 -}; -struct re_dot : public re_syntax_base -{ - unsigned char mask; -}; - -/*** struct re_literal ************************************************ -A string of literals, following this structure will be an -array of characters: charT[length] -***********************************************************************/ -struct re_literal : public re_syntax_base -{ - unsigned int length; -}; - -/*** struct re_case ************************************************ -Indicates whether we are moving to a case insensive block or not -***********************************************************************/ -struct re_case : public re_syntax_base -{ - bool icase; -}; - -/*** struct re_set_long *********************************************** -A wide character set of characters, following this structure will be -an array of type charT: -First csingles null-terminated strings -Then 2 * cranges NULL terminated strings -Then cequivalents NULL terminated strings -***********************************************************************/ -template -struct re_set_long : public re_syntax_base -{ - unsigned int csingles, cranges, cequivalents; - mask_type cclasses; - mask_type cnclasses; - bool isnot; - bool singleton; -}; - -/*** struct re_set **************************************************** -A set of narrow-characters, matches any of _map which is none-zero -***********************************************************************/ -struct re_set : public re_syntax_base -{ - unsigned char _map[1 << CHAR_BIT]; -}; - -/*** struct re_jump *************************************************** -Jump to a new location in the machine (not next). -***********************************************************************/ -struct re_jump : public re_syntax_base -{ - offset_type alt; // location to jump to -}; - -/*** struct re_alt *************************************************** -Jump to a new location in the machine (possibly next). -***********************************************************************/ -struct re_alt : public re_jump -{ - unsigned char _map[1 << CHAR_BIT]; // which characters can take the jump - unsigned int can_be_null; // true if we match a NULL string -}; - -/*** struct re_repeat ************************************************* -Repeat a section of the machine -***********************************************************************/ -struct re_repeat : public re_alt -{ - std::size_t min, max; // min and max allowable repeats - int state_id; // Unique identifier for this repeat - bool leading; // True if this repeat is at the start of the machine (lets us optimize some searches) - bool greedy; // True if this is a greedy repeat -}; - -/*** struct re_recurse ************************************************ -Recurse to a particular subexpression. -**********************************************************************/ -struct re_recurse : public re_jump -{ - int state_id; // identifier of first nested repeat within the recursion. -}; - -/*** struct re_commit ************************************************* -Used for the PRUNE, SKIP and COMMIT verbs which basically differ only in what happens -if no match is found and we start searching forward. -**********************************************************************/ -enum commit_type -{ - commit_prune, - commit_skip, - commit_commit -}; -struct re_commit : public re_syntax_base -{ - commit_type action; -}; - -/*** enum re_jump_size_type ******************************************* -Provides compiled size of re_jump structure (allowing for trailing alignment). -We provide this so we know how manybytes to insert when constructing the machine -(The value of padding_mask is defined in regex_raw_buffer.hpp). -***********************************************************************/ -enum re_jump_size_type -{ - re_jump_size = (sizeof(re_jump) + padding_mask) & ~(padding_mask), - re_repeater_size = (sizeof(re_repeat) + padding_mask) & ~(padding_mask), - re_alt_size = (sizeof(re_alt) + padding_mask) & ~(padding_mask) -}; - -/*** proc re_is_set_member ********************************************* -Forward declaration: we'll need this one later... -***********************************************************************/ - -template -struct regex_data; - -template -iterator BOOST_REGEX_CALL re_is_set_member(iterator next, - iterator last, - const re_set_long* set_, - const regex_data& e, bool icase); - -} // namespace BOOST_REGEX_DETAIL_NS - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - - diff --git a/src/boost/boost/regex/v4/sub_match.hpp b/src/boost/boost/regex/v4/sub_match.hpp deleted file mode 100644 index 0eabf2ef7..000000000 --- a/src/boost/boost/regex/v4/sub_match.hpp +++ /dev/null @@ -1,516 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE sub_match.cpp - * VERSION see - * DESCRIPTION: Declares template class sub_match. - */ - -#ifndef BOOST_REGEX_V4_SUB_MATCH_HPP -#define BOOST_REGEX_V4_SUB_MATCH_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ - -template -struct sub_match : public std::pair -{ - typedef typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type value_type; -#if defined(BOOST_NO_STD_ITERATOR_TRAITS) - typedef std::ptrdiff_t difference_type; -#else - typedef typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::difference_type difference_type; -#endif - typedef BidiIterator iterator_type; - typedef BidiIterator iterator; - typedef BidiIterator const_iterator; - - bool matched; - - sub_match() : std::pair(), matched(false) {} - sub_match(BidiIterator i) : std::pair(i, i), matched(false) {} -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ - && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)\ - && !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) - template - operator std::basic_string ()const - { - return matched ? std::basic_string(this->first, this->second) : std::basic_string(); - } -#else - operator std::basic_string ()const - { - return str(); - } -#endif - difference_type BOOST_REGEX_CALL length()const - { - difference_type n = matched ? ::boost::BOOST_REGEX_DETAIL_NS::distance((BidiIterator)this->first, (BidiIterator)this->second) : 0; - return n; - } - std::basic_string str()const - { - std::basic_string result; - if(matched) - { - std::size_t len = ::boost::BOOST_REGEX_DETAIL_NS::distance((BidiIterator)this->first, (BidiIterator)this->second); - result.reserve(len); - BidiIterator i = this->first; - while(i != this->second) - { - result.append(1, *i); - ++i; - } - } - return result; - } - int compare(const sub_match& s)const - { - if(matched != s.matched) - return static_cast(matched) - static_cast(s.matched); - return str().compare(s.str()); - } - int compare(const std::basic_string& s)const - { - return str().compare(s); - } - int compare(const value_type* p)const - { - return str().compare(p); - } - - bool operator==(const sub_match& that)const - { return compare(that) == 0; } - bool BOOST_REGEX_CALL operator !=(const sub_match& that)const - { return compare(that) != 0; } - bool operator<(const sub_match& that)const - { return compare(that) < 0; } - bool operator>(const sub_match& that)const - { return compare(that) > 0; } - bool operator<=(const sub_match& that)const - { return compare(that) <= 0; } - bool operator>=(const sub_match& that)const - { return compare(that) >= 0; } - -#ifdef BOOST_REGEX_MATCH_EXTRA - typedef std::vector > capture_sequence_type; - - const capture_sequence_type& captures()const - { - if(!m_captures) - m_captures.reset(new capture_sequence_type()); - return *m_captures; - } - // - // Private implementation API: DO NOT USE! - // - capture_sequence_type& get_captures()const - { - if(!m_captures) - m_captures.reset(new capture_sequence_type()); - return *m_captures; - } - -private: - mutable boost::scoped_ptr m_captures; -public: - -#endif - sub_match(const sub_match& that, bool -#ifdef BOOST_REGEX_MATCH_EXTRA - deep_copy -#endif - = true - ) - : std::pair(that), - matched(that.matched) - { -#ifdef BOOST_REGEX_MATCH_EXTRA - if(that.m_captures) - if(deep_copy) - m_captures.reset(new capture_sequence_type(*(that.m_captures))); -#endif - } - sub_match& operator=(const sub_match& that) - { - this->first = that.first; - this->second = that.second; - matched = that.matched; -#ifdef BOOST_REGEX_MATCH_EXTRA - if(that.m_captures) - get_captures() = *(that.m_captures); -#endif - return *this; - } - // - // Make this type a range, for both Boost.Range, and C++11: - // - BidiIterator begin()const { return this->first; } - BidiIterator end()const { return this->second; } - - -#ifdef BOOST_OLD_REGEX_H - // - // the following are deprecated, do not use!! - // - operator int()const; - operator unsigned int()const; - operator short()const - { - return (short)(int)(*this); - } - operator unsigned short()const - { - return (unsigned short)(unsigned int)(*this); - } -#endif -}; - -typedef sub_match csub_match; -typedef sub_match ssub_match; -#ifndef BOOST_NO_WREGEX -typedef sub_match wcsub_match; -typedef sub_match wssub_match; -#endif - -// comparison to std::basic_string<> part 1: -template -inline bool operator == (const std::basic_string::value_type, traits, Allocator>& s, - const sub_match& m) -{ return s.compare(m.str()) == 0; } -template -inline bool operator != (const std::basic_string::value_type, traits, Allocator>& s, - const sub_match& m) -{ return s.compare(m.str()) != 0; } -template -inline bool operator < (const std::basic_string::value_type, traits, Allocator>& s, - const sub_match& m) -{ return s.compare(m.str()) < 0; } -template -inline bool operator <= (const std::basic_string::value_type, traits, Allocator>& s, - const sub_match& m) -{ return s.compare(m.str()) <= 0; } -template -inline bool operator >= (const std::basic_string::value_type, traits, Allocator>& s, - const sub_match& m) -{ return s.compare(m.str()) >= 0; } -template -inline bool operator > (const std::basic_string::value_type, traits, Allocator>& s, - const sub_match& m) -{ return s.compare(m.str()) > 0; } -// comparison to std::basic_string<> part 2: -template -inline bool operator == (const sub_match& m, - const std::basic_string::value_type, traits, Allocator>& s) -{ return m.str().compare(s) == 0; } -template -inline bool operator != (const sub_match& m, - const std::basic_string::value_type, traits, Allocator>& s) -{ return m.str().compare(s) != 0; } -template -inline bool operator < (const sub_match& m, - const std::basic_string::value_type, traits, Allocator>& s) -{ return m.str().compare(s) < 0; } -template -inline bool operator > (const sub_match& m, - const std::basic_string::value_type, traits, Allocator>& s) -{ return m.str().compare(s) > 0; } -template -inline bool operator <= (const sub_match& m, - const std::basic_string::value_type, traits, Allocator>& s) -{ return m.str().compare(s) <= 0; } -template -inline bool operator >= (const sub_match& m, - const std::basic_string::value_type, traits, Allocator>& s) -{ return m.str().compare(s) >= 0; } -// comparison to const charT* part 1: -template -inline bool operator == (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s) -{ return m.str().compare(s) == 0; } -template -inline bool operator != (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s) -{ return m.str().compare(s) != 0; } -template -inline bool operator > (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s) -{ return m.str().compare(s) > 0; } -template -inline bool operator < (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s) -{ return m.str().compare(s) < 0; } -template -inline bool operator >= (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s) -{ return m.str().compare(s) >= 0; } -template -inline bool operator <= (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s) -{ return m.str().compare(s) <= 0; } -// comparison to const charT* part 2: -template -inline bool operator == (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s, - const sub_match& m) -{ return m.str().compare(s) == 0; } -template -inline bool operator != (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s, - const sub_match& m) -{ return m.str().compare(s) != 0; } -template -inline bool operator < (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s, - const sub_match& m) -{ return m.str().compare(s) > 0; } -template -inline bool operator > (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s, - const sub_match& m) -{ return m.str().compare(s) < 0; } -template -inline bool operator <= (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s, - const sub_match& m) -{ return m.str().compare(s) >= 0; } -template -inline bool operator >= (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s, - const sub_match& m) -{ return m.str().compare(s) <= 0; } - -// comparison to const charT& part 1: -template -inline bool operator == (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) == 0; } -template -inline bool operator != (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) != 0; } -template -inline bool operator > (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) > 0; } -template -inline bool operator < (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) < 0; } -template -inline bool operator >= (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) >= 0; } -template -inline bool operator <= (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) <= 0; } -// comparison to const charT* part 2: -template -inline bool operator == (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s, - const sub_match& m) -{ return m.str().compare(0, m.length(), &s, 1) == 0; } -template -inline bool operator != (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s, - const sub_match& m) -{ return m.str().compare(0, m.length(), &s, 1) != 0; } -template -inline bool operator < (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s, - const sub_match& m) -{ return m.str().compare(0, m.length(), &s, 1) > 0; } -template -inline bool operator > (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s, - const sub_match& m) -{ return m.str().compare(0, m.length(), &s, 1) < 0; } -template -inline bool operator <= (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s, - const sub_match& m) -{ return m.str().compare(0, m.length(), &s, 1) >= 0; } -template -inline bool operator >= (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s, - const sub_match& m) -{ return m.str().compare(0, m.length(), &s, 1) <= 0; } - -// addition operators: -template -inline std::basic_string::value_type, traits, Allocator> -operator + (const std::basic_string::value_type, traits, Allocator>& s, - const sub_match& m) -{ - std::basic_string::value_type, traits, Allocator> result; - result.reserve(s.size() + m.length() + 1); - return result.append(s).append(m.first, m.second); -} -template -inline std::basic_string::value_type, traits, Allocator> -operator + (const sub_match& m, - const std::basic_string::value_type, traits, Allocator>& s) -{ - std::basic_string::value_type, traits, Allocator> result; - result.reserve(s.size() + m.length() + 1); - return result.append(m.first, m.second).append(s); -} -#if !(defined(__GNUC__) && defined(BOOST_NO_STD_LOCALE)) -template -inline std::basic_string::value_type> -operator + (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s, - const sub_match& m) -{ - std::basic_string::value_type> result; - result.reserve(std::char_traits::value_type>::length(s) + m.length() + 1); - return result.append(s).append(m.first, m.second); -} -template -inline std::basic_string::value_type> -operator + (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const * s) -{ - std::basic_string::value_type> result; - result.reserve(std::char_traits::value_type>::length(s) + m.length() + 1); - return result.append(m.first, m.second).append(s); -} -#else -// worwaround versions: -template -inline std::basic_string::value_type> -operator + (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const* s, - const sub_match& m) -{ - return s + m.str(); -} -template -inline std::basic_string::value_type> -operator + (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const * s) -{ - return m.str() + s; -} -#endif -template -inline std::basic_string::value_type> -operator + (typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s, - const sub_match& m) -{ - std::basic_string::value_type> result; - result.reserve(m.length() + 2); - return result.append(1, s).append(m.first, m.second); -} -template -inline std::basic_string::value_type> -operator + (const sub_match& m, - typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::value_type const& s) -{ - std::basic_string::value_type> result; - result.reserve(m.length() + 2); - return result.append(m.first, m.second).append(1, s); -} -template -inline std::basic_string::value_type> -operator + (const sub_match& m1, - const sub_match& m2) -{ - std::basic_string::value_type> result; - result.reserve(m1.length() + m2.length() + 1); - return result.append(m1.first, m1.second).append(m2.first, m2.second); -} -#ifndef BOOST_NO_STD_LOCALE -template -std::basic_ostream& - operator << (std::basic_ostream& os, - const sub_match& s) -{ - return (os << s.str()); -} -#else -template -std::ostream& operator << (std::ostream& os, - const sub_match& s) -{ - return (os << s.str()); -} -#endif - -#ifdef BOOST_OLD_REGEX_H -namespace BOOST_REGEX_DETAIL_NS{ -template -int do_toi(BidiIterator i, BidiIterator j, char c, int radix) -{ - std::string s(i, j); - char* p; - int result = std::strtol(s.c_str(), &p, radix); - if(*p)raise_regex_exception("Bad sub-expression"); - return result; -} - -// -// helper: -template -int do_toi(I& i, I j, charT c) -{ - int result = 0; - while((i != j) && (isdigit(*i))) - { - result = result*10 + (*i - '0'); - ++i; - } - return result; -} -} - - -template -sub_match::operator int()const -{ - BidiIterator i = first; - BidiIterator j = second; - if(i == j)raise_regex_exception("Bad sub-expression"); - int neg = 1; - if((i != j) && (*i == '-')) - { - neg = -1; - ++i; - } - neg *= BOOST_REGEX_DETAIL_NS::do_toi(i, j, *i); - if(i != j)raise_regex_exception("Bad sub-expression"); - return neg; -} -template -sub_match::operator unsigned int()const -{ - BidiIterator i = first; - BidiIterator j = second; - if(i == j) - raise_regex_exception("Bad sub-expression"); - return BOOST_REGEX_DETAIL_NS::do_toi(i, j, *first); -} -#endif - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/src/boost/boost/regex/v4/syntax_type.hpp b/src/boost/boost/regex/v4/syntax_type.hpp deleted file mode 100644 index e44c2466d..000000000 --- a/src/boost/boost/regex/v4/syntax_type.hpp +++ /dev/null @@ -1,105 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE syntax_type.hpp - * VERSION see - * DESCRIPTION: Declares regular expression synatx type enumerator. - */ - -#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP -#define BOOST_REGEX_SYNTAX_TYPE_HPP - -namespace boost{ -namespace regex_constants{ - -typedef unsigned char syntax_type; - -// -// values chosen are binary compatible with previous version: -// -static const syntax_type syntax_char = 0; -static const syntax_type syntax_open_mark = 1; -static const syntax_type syntax_close_mark = 2; -static const syntax_type syntax_dollar = 3; -static const syntax_type syntax_caret = 4; -static const syntax_type syntax_dot = 5; -static const syntax_type syntax_star = 6; -static const syntax_type syntax_plus = 7; -static const syntax_type syntax_question = 8; -static const syntax_type syntax_open_set = 9; -static const syntax_type syntax_close_set = 10; -static const syntax_type syntax_or = 11; -static const syntax_type syntax_escape = 12; -static const syntax_type syntax_dash = 14; -static const syntax_type syntax_open_brace = 15; -static const syntax_type syntax_close_brace = 16; -static const syntax_type syntax_digit = 17; -static const syntax_type syntax_comma = 27; -static const syntax_type syntax_equal = 37; -static const syntax_type syntax_colon = 36; -static const syntax_type syntax_not = 53; - -// extensions: - -static const syntax_type syntax_hash = 13; -static const syntax_type syntax_newline = 26; - -// escapes: - -typedef syntax_type escape_syntax_type; - -static const escape_syntax_type escape_type_word_assert = 18; -static const escape_syntax_type escape_type_not_word_assert = 19; -static const escape_syntax_type escape_type_control_f = 29; -static const escape_syntax_type escape_type_control_n = 30; -static const escape_syntax_type escape_type_control_r = 31; -static const escape_syntax_type escape_type_control_t = 32; -static const escape_syntax_type escape_type_control_v = 33; -static const escape_syntax_type escape_type_ascii_control = 35; -static const escape_syntax_type escape_type_hex = 34; -static const escape_syntax_type escape_type_unicode = 0; // not used -static const escape_syntax_type escape_type_identity = 0; // not used -static const escape_syntax_type escape_type_backref = syntax_digit; -static const escape_syntax_type escape_type_decimal = syntax_digit; // not used -static const escape_syntax_type escape_type_class = 22; -static const escape_syntax_type escape_type_not_class = 23; - -// extensions: - -static const escape_syntax_type escape_type_left_word = 20; -static const escape_syntax_type escape_type_right_word = 21; -static const escape_syntax_type escape_type_start_buffer = 24; // for \` -static const escape_syntax_type escape_type_end_buffer = 25; // for \' -static const escape_syntax_type escape_type_control_a = 28; // for \a -static const escape_syntax_type escape_type_e = 38; // for \e -static const escape_syntax_type escape_type_E = 47; // for \Q\E -static const escape_syntax_type escape_type_Q = 48; // for \Q\E -static const escape_syntax_type escape_type_X = 49; // for \X -static const escape_syntax_type escape_type_C = 50; // for \C -static const escape_syntax_type escape_type_Z = 51; // for \Z -static const escape_syntax_type escape_type_G = 52; // for \G - -static const escape_syntax_type escape_type_property = 54; // for \p -static const escape_syntax_type escape_type_not_property = 55; // for \P -static const escape_syntax_type escape_type_named_char = 56; // for \N -static const escape_syntax_type escape_type_extended_backref = 57; // for \g -static const escape_syntax_type escape_type_reset_start_mark = 58; // for \K -static const escape_syntax_type escape_type_line_ending = 59; // for \R - -static const escape_syntax_type syntax_max = 60; - -} -} - - -#endif diff --git a/src/boost/boost/regex/v4/u32regex_iterator.hpp b/src/boost/boost/regex/v4/u32regex_iterator.hpp deleted file mode 100644 index d3b0bf2b3..000000000 --- a/src/boost/boost/regex/v4/u32regex_iterator.hpp +++ /dev/null @@ -1,185 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE u32regex_iterator.hpp - * VERSION see - * DESCRIPTION: Provides u32regex_iterator implementation. - */ - -#ifndef BOOST_REGEX_V4_U32REGEX_ITERATOR_HPP -#define BOOST_REGEX_V4_U32REGEX_ITERATOR_HPP - -namespace boost{ - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -template -class u32regex_iterator_implementation -{ - typedef u32regex regex_type; - - match_results what; // current match - BidirectionalIterator base; // start of sequence - BidirectionalIterator end; // end of sequence - const regex_type re; // the expression - match_flag_type flags; // flags for matching - -public: - u32regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f) - : base(), end(last), re(*p), flags(f){} - bool init(BidirectionalIterator first) - { - base = first; - return u32regex_search(first, end, what, re, flags, base); - } - bool compare(const u32regex_iterator_implementation& that) - { - if(this == &that) return true; - return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second); - } - const match_results& get() - { return what; } - bool next() - { - //if(what.prefix().first != what[0].second) - // flags |= match_prev_avail; - BidirectionalIterator next_start = what[0].second; - match_flag_type f(flags); - if(!what.length()) - f |= regex_constants::match_not_initial_null; - //if(base != next_start) - // f |= regex_constants::match_not_bob; - bool result = u32regex_search(next_start, end, what, re, f, base); - if(result) - what.set_base(base); - return result; - } -private: - u32regex_iterator_implementation& operator=(const u32regex_iterator_implementation&); -}; - -template -class u32regex_iterator -{ -private: - typedef u32regex_iterator_implementation impl; - typedef shared_ptr pimpl; -public: - typedef u32regex regex_type; - typedef match_results value_type; - typedef typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::difference_type - difference_type; - typedef const value_type* pointer; - typedef const value_type& reference; - typedef std::forward_iterator_tag iterator_category; - - u32regex_iterator(){} - u32regex_iterator(BidirectionalIterator a, BidirectionalIterator b, - const regex_type& re, - match_flag_type m = match_default) - : pdata(new impl(&re, b, m)) - { - if(!pdata->init(a)) - { - pdata.reset(); - } - } - u32regex_iterator(const u32regex_iterator& that) - : pdata(that.pdata) {} - u32regex_iterator& operator=(const u32regex_iterator& that) - { - pdata = that.pdata; - return *this; - } - bool operator==(const u32regex_iterator& that)const - { - if((pdata.get() == 0) || (that.pdata.get() == 0)) - return pdata.get() == that.pdata.get(); - return pdata->compare(*(that.pdata.get())); - } - bool operator!=(const u32regex_iterator& that)const - { return !(*this == that); } - const value_type& operator*()const - { return pdata->get(); } - const value_type* operator->()const - { return &(pdata->get()); } - u32regex_iterator& operator++() - { - cow(); - if(0 == pdata->next()) - { - pdata.reset(); - } - return *this; - } - u32regex_iterator operator++(int) - { - u32regex_iterator result(*this); - ++(*this); - return result; - } -private: - - pimpl pdata; - - void cow() - { - // copy-on-write - if(pdata.get() && !pdata.unique()) - { - pdata.reset(new impl(*(pdata.get()))); - } - } -}; - -typedef u32regex_iterator utf8regex_iterator; -typedef u32regex_iterator utf16regex_iterator; -typedef u32regex_iterator utf32regex_iterator; - -inline u32regex_iterator make_u32regex_iterator(const char* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_iterator(p, p+std::strlen(p), e, m); -} -#ifndef BOOST_NO_WREGEX -inline u32regex_iterator make_u32regex_iterator(const wchar_t* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_iterator(p, p+std::wcslen(p), e, m); -} -#endif -#if !defined(BOOST_REGEX_UCHAR_IS_WCHAR_T) -inline u32regex_iterator make_u32regex_iterator(const UChar* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_iterator(p, p+u_strlen(p), e, m); -} -#endif -template -inline u32regex_iterator::const_iterator> make_u32regex_iterator(const std::basic_string& p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ - typedef typename std::basic_string::const_iterator iter_type; - return u32regex_iterator(p.begin(), p.end(), e, m); -} -inline u32regex_iterator make_u32regex_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_iterator(s.getBuffer(), s.getBuffer() + s.length(), e, m); -} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_ITERATOR_HPP - diff --git a/src/boost/boost/regex/v4/u32regex_token_iterator.hpp b/src/boost/boost/regex/v4/u32regex_token_iterator.hpp deleted file mode 100644 index b659f7328..000000000 --- a/src/boost/boost/regex/v4/u32regex_token_iterator.hpp +++ /dev/null @@ -1,360 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE u32regex_token_iterator.hpp - * VERSION see - * DESCRIPTION: Provides u32regex_token_iterator implementation. - */ - -#ifndef BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP -#define BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP - -#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ - || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) -// -// Borland C++ Builder 6, and Visual C++ 6, -// can't cope with the array template constructor -// so we have a template member that will accept any type as -// argument, and then assert that is really is an array: -// -#include -#include -#endif - -namespace boost{ - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable:4700) -#endif - -template -class u32regex_token_iterator_implementation -{ - typedef u32regex regex_type; - typedef sub_match value_type; - - match_results what; // current match - BidirectionalIterator end; // end of search area - BidirectionalIterator base; // start of search area - const regex_type re; // the expression - match_flag_type flags; // match flags - value_type result; // the current string result - int N; // the current sub-expression being enumerated - std::vector subs; // the sub-expressions to enumerate - -public: - u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, int sub, match_flag_type f) - : end(last), re(*p), flags(f){ subs.push_back(sub); } - u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector& v, match_flag_type f) - : end(last), re(*p), flags(f), subs(v){} -#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ - || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ - || BOOST_WORKAROUND(__HP_aCC, < 60700) - template - u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const T& submatches, match_flag_type f) - : end(last), re(*p), flags(f) - { - // assert that T really is an array: - BOOST_STATIC_ASSERT(::boost::is_array::value); - const std::size_t array_size = sizeof(T) / sizeof(submatches[0]); - for(std::size_t i = 0; i < array_size; ++i) - { - subs.push_back(submatches[i]); - } - } -#else - template - u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const int (&submatches)[CN], match_flag_type f) - : end(last), re(*p), flags(f) - { - for(std::size_t i = 0; i < CN; ++i) - { - subs.push_back(submatches[i]); - } - } -#endif - - bool init(BidirectionalIterator first) - { - base = first; - N = 0; - if(u32regex_search(first, end, what, re, flags, base) == true) - { - N = 0; - result = ((subs[N] == -1) ? what.prefix() : what[(int)subs[N]]); - return true; - } - else if((subs[N] == -1) && (first != end)) - { - result.first = first; - result.second = end; - result.matched = (first != end); - N = -1; - return true; - } - return false; - } - bool compare(const u32regex_token_iterator_implementation& that) - { - if(this == &that) return true; - return (&re.get_data() == &that.re.get_data()) - && (end == that.end) - && (flags == that.flags) - && (N == that.N) - && (what[0].first == that.what[0].first) - && (what[0].second == that.what[0].second); - } - const value_type& get() - { return result; } - bool next() - { - if(N == -1) - return false; - if(N+1 < (int)subs.size()) - { - ++N; - result =((subs[N] == -1) ? what.prefix() : what[subs[N]]); - return true; - } - //if(what.prefix().first != what[0].second) - // flags |= match_prev_avail | regex_constants::match_not_bob; - BidirectionalIterator last_end(what[0].second); - if(u32regex_search(last_end, end, what, re, ((what[0].first == what[0].second) ? flags | regex_constants::match_not_initial_null : flags), base)) - { - N =0; - result =((subs[N] == -1) ? what.prefix() : what[subs[N]]); - return true; - } - else if((last_end != end) && (subs[0] == -1)) - { - N =-1; - result.first = last_end; - result.second = end; - result.matched = (last_end != end); - return true; - } - return false; - } -private: - u32regex_token_iterator_implementation& operator=(const u32regex_token_iterator_implementation&); -}; - -template -class u32regex_token_iterator -{ -private: - typedef u32regex_token_iterator_implementation impl; - typedef shared_ptr pimpl; -public: - typedef u32regex regex_type; - typedef sub_match value_type; - typedef typename BOOST_REGEX_DETAIL_NS::regex_iterator_traits::difference_type - difference_type; - typedef const value_type* pointer; - typedef const value_type& reference; - typedef std::forward_iterator_tag iterator_category; - - u32regex_token_iterator(){} - u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, - int submatch = 0, match_flag_type m = match_default) - : pdata(new impl(&re, b, submatch, m)) - { - if(!pdata->init(a)) - pdata.reset(); - } - u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, - const std::vector& submatches, match_flag_type m = match_default) - : pdata(new impl(&re, b, submatches, m)) - { - if(!pdata->init(a)) - pdata.reset(); - } -#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ - || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ - || BOOST_WORKAROUND(__HP_aCC, < 60700) - template - u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, - const T& submatches, match_flag_type m = match_default) - : pdata(new impl(&re, b, submatches, m)) - { - if(!pdata->init(a)) - pdata.reset(); - } -#else - template - u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, - const int (&submatches)[N], match_flag_type m = match_default) - : pdata(new impl(&re, b, submatches, m)) - { - if(!pdata->init(a)) - pdata.reset(); - } -#endif - u32regex_token_iterator(const u32regex_token_iterator& that) - : pdata(that.pdata) {} - u32regex_token_iterator& operator=(const u32regex_token_iterator& that) - { - pdata = that.pdata; - return *this; - } - bool operator==(const u32regex_token_iterator& that)const - { - if((pdata.get() == 0) || (that.pdata.get() == 0)) - return pdata.get() == that.pdata.get(); - return pdata->compare(*(that.pdata.get())); - } - bool operator!=(const u32regex_token_iterator& that)const - { return !(*this == that); } - const value_type& operator*()const - { return pdata->get(); } - const value_type* operator->()const - { return &(pdata->get()); } - u32regex_token_iterator& operator++() - { - cow(); - if(0 == pdata->next()) - { - pdata.reset(); - } - return *this; - } - u32regex_token_iterator operator++(int) - { - u32regex_token_iterator result(*this); - ++(*this); - return result; - } -private: - - pimpl pdata; - - void cow() - { - // copy-on-write - if(pdata.get() && !pdata.unique()) - { - pdata.reset(new impl(*(pdata.get()))); - } - } -}; - -typedef u32regex_token_iterator utf8regex_token_iterator; -typedef u32regex_token_iterator utf16regex_token_iterator; -typedef u32regex_token_iterator utf32regex_token_iterator; - -// construction from an integral sub_match state_id: -inline u32regex_token_iterator make_u32regex_token_iterator(const char* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(p, p+std::strlen(p), e, submatch, m); -} -#ifndef BOOST_NO_WREGEX -inline u32regex_token_iterator make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(p, p+std::wcslen(p), e, submatch, m); -} -#endif -#if !defined(BOOST_REGEX_UCHAR_IS_WCHAR_T) -inline u32regex_token_iterator make_u32regex_token_iterator(const UChar* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(p, p+u_strlen(p), e, submatch, m); -} -#endif -template -inline u32regex_token_iterator::const_iterator> make_u32regex_token_iterator(const std::basic_string& p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ - typedef typename std::basic_string::const_iterator iter_type; - return u32regex_token_iterator(p.begin(), p.end(), e, submatch, m); -} -inline u32regex_token_iterator make_u32regex_token_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m); -} - -// construction from a reference to an array: -template -inline u32regex_token_iterator make_u32regex_token_iterator(const char* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(p, p+std::strlen(p), e, submatch, m); -} -#ifndef BOOST_NO_WREGEX -template -inline u32regex_token_iterator make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(p, p+std::wcslen(p), e, submatch, m); -} -#endif -#if !defined(BOOST_REGEX_UCHAR_IS_WCHAR_T) -template -inline u32regex_token_iterator make_u32regex_token_iterator(const UChar* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(p, p+u_strlen(p), e, submatch, m); -} -#endif -template -inline u32regex_token_iterator::const_iterator> make_u32regex_token_iterator(const std::basic_string& p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ - typedef typename std::basic_string::const_iterator iter_type; - return u32regex_token_iterator(p.begin(), p.end(), e, submatch, m); -} -template -inline u32regex_token_iterator make_u32regex_token_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m); -} - -// construction from a vector of sub_match state_id's: -inline u32regex_token_iterator make_u32regex_token_iterator(const char* p, const u32regex& e, const std::vector& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(p, p+std::strlen(p), e, submatch, m); -} -#ifndef BOOST_NO_WREGEX -inline u32regex_token_iterator make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, const std::vector& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(p, p+std::wcslen(p), e, submatch, m); -} -#endif -#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) -inline u32regex_token_iterator make_u32regex_token_iterator(const UChar* p, const u32regex& e, const std::vector& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(p, p+u_strlen(p), e, submatch, m); -} -#endif -template -inline u32regex_token_iterator::const_iterator> make_u32regex_token_iterator(const std::basic_string& p, const u32regex& e, const std::vector& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ - typedef typename std::basic_string::const_iterator iter_type; - return u32regex_token_iterator(p.begin(), p.end(), e, submatch, m); -} -inline u32regex_token_iterator make_u32regex_token_iterator(const U_NAMESPACE_QUALIFIER UnicodeString& s, const u32regex& e, const std::vector& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ - return u32regex_token_iterator(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m); -} - -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP - - - - diff --git a/src/boost/boost/regex/v4/w32_regex_traits.hpp b/src/boost/boost/regex/v4/w32_regex_traits.hpp deleted file mode 100644 index e526df59c..000000000 --- a/src/boost/boost/regex/v4/w32_regex_traits.hpp +++ /dev/null @@ -1,745 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE w32_regex_traits.hpp - * VERSION see - * DESCRIPTION: Declares regular expression traits class w32_regex_traits. - */ - -#ifndef BOOST_W32_REGEX_TRAITS_HPP_INCLUDED -#define BOOST_W32_REGEX_TRAITS_HPP_INCLUDED - -#ifndef BOOST_REGEX_NO_WIN32_LOCALE - -#ifndef BOOST_RE_PAT_EXCEPT_HPP -#include -#endif -#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED -#include -#endif -#ifdef BOOST_HAS_THREADS -#include -#endif -#ifndef BOOST_REGEX_PRIMARY_TRANSFORM -#include -#endif -#ifndef BOOST_REGEX_OBJECT_CACHE_HPP -#include -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4786) -#if BOOST_MSVC < 1910 -#pragma warning(disable:4800) -#endif -#endif - -namespace boost{ - -// -// forward declaration is needed by some compilers: -// -template -class w32_regex_traits; - -namespace BOOST_REGEX_DETAIL_NS{ - -// -// start by typedeffing the types we'll need: -// -typedef ::boost::uint32_t lcid_type; // placeholder for LCID. -typedef ::boost::shared_ptr cat_type; // placeholder for dll HANDLE. - -// -// then add wrappers around the actual Win32 API's (ie implementation hiding): -// -BOOST_REGEX_DECL lcid_type BOOST_REGEX_CALL w32_get_default_locale(); -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char, lcid_type); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t, lcid_type); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type state_id); -#endif -#endif -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char, lcid_type); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t, lcid_type); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type state_id); -#endif -#endif -BOOST_REGEX_DECL cat_type BOOST_REGEX_CALL w32_cat_open(const std::string& name); -BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type state_id, int i, const std::string& def); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type state_id, int i, const std::wstring& def); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL std::basic_string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::basic_string& def); -#endif -#endif -BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type state_id, const char* p1, const char* p2); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type state_id, const wchar_t* p1, const wchar_t* p2); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL std::basic_string BOOST_REGEX_CALL w32_transform(lcid_type state_id, const unsigned short* p1, const unsigned short* p2); -#endif -#endif -BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type state_id); -#endif -#endif -BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type); -#endif -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type, boost::uint32_t mask, char c); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type, boost::uint32_t mask, wchar_t c); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type state_id, boost::uint32_t m, unsigned short c); -#endif -#endif -// -// class w32_regex_traits_base: -// acts as a container for locale and the facets we are using. -// -template -struct w32_regex_traits_base -{ - w32_regex_traits_base(lcid_type l) - { imbue(l); } - lcid_type imbue(lcid_type l); - - lcid_type m_locale; -}; - -template -inline lcid_type w32_regex_traits_base::imbue(lcid_type l) -{ - lcid_type result(m_locale); - m_locale = l; - return result; -} - -// -// class w32_regex_traits_char_layer: -// implements methods that require specialisation for narrow characters: -// -template -class w32_regex_traits_char_layer : public w32_regex_traits_base -{ - typedef std::basic_string string_type; - typedef std::map map_type; - typedef typename map_type::const_iterator map_iterator_type; -public: - w32_regex_traits_char_layer(const lcid_type l); - - regex_constants::syntax_type syntax_type(charT c)const - { - map_iterator_type i = m_char_map.find(c); - return ((i == m_char_map.end()) ? 0 : i->second); - } - regex_constants::escape_syntax_type escape_syntax_type(charT c) const - { - map_iterator_type i = m_char_map.find(c); - if(i == m_char_map.end()) - { - if(::boost::BOOST_REGEX_DETAIL_NS::w32_is_lower(c, this->m_locale)) return regex_constants::escape_type_class; - if(::boost::BOOST_REGEX_DETAIL_NS::w32_is_upper(c, this->m_locale)) return regex_constants::escape_type_not_class; - return 0; - } - return i->second; - } - charT tolower(charT c)const - { - return ::boost::BOOST_REGEX_DETAIL_NS::w32_tolower(c, this->m_locale); - } - bool isctype(boost::uint32_t mask, charT c)const - { - return ::boost::BOOST_REGEX_DETAIL_NS::w32_is(this->m_locale, mask, c); - } - -private: - string_type get_default_message(regex_constants::syntax_type); - // TODO: use a hash table when available! - map_type m_char_map; -}; - -template -w32_regex_traits_char_layer::w32_regex_traits_char_layer(::boost::BOOST_REGEX_DETAIL_NS::lcid_type l) - : w32_regex_traits_base(l) -{ - // we need to start by initialising our syntax map so we know which - // character is used for which purpose: - cat_type cat; - std::string cat_name(w32_regex_traits::get_catalog_name()); - if(cat_name.size()) - { - cat = ::boost::BOOST_REGEX_DETAIL_NS::w32_cat_open(cat_name); - if(!cat) - { - std::string m("Unable to open message catalog: "); - std::runtime_error err(m + cat_name); - boost::BOOST_REGEX_DETAIL_NS::raise_runtime_error(err); - } - } - // - // if we have a valid catalog then load our messages: - // - if(cat) - { - for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) - { - string_type mss = ::boost::BOOST_REGEX_DETAIL_NS::w32_cat_get(cat, this->m_locale, i, get_default_message(i)); - for(typename string_type::size_type j = 0; j < mss.size(); ++j) - { - this->m_char_map[mss[j]] = i; - } - } - } - else - { - for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) - { - const char* ptr = get_default_syntax(i); - while(ptr && *ptr) - { - this->m_char_map[static_cast(*ptr)] = i; - ++ptr; - } - } - } -} - -template -typename w32_regex_traits_char_layer::string_type - w32_regex_traits_char_layer::get_default_message(regex_constants::syntax_type i) -{ - const char* ptr = get_default_syntax(i); - string_type result; - while(ptr && *ptr) - { - result.append(1, static_cast(*ptr)); - ++ptr; - } - return result; -} - -// -// specialised version for narrow characters: -// -template <> -class BOOST_REGEX_DECL w32_regex_traits_char_layer : public w32_regex_traits_base -{ - typedef std::string string_type; -public: - w32_regex_traits_char_layer(::boost::BOOST_REGEX_DETAIL_NS::lcid_type l) - : w32_regex_traits_base(l) - { - init(); - } - - regex_constants::syntax_type syntax_type(char c)const - { - return m_char_map[static_cast(c)]; - } - regex_constants::escape_syntax_type escape_syntax_type(char c) const - { - return m_char_map[static_cast(c)]; - } - char tolower(char c)const - { - return m_lower_map[static_cast(c)]; - } - bool isctype(boost::uint32_t mask, char c)const - { - return m_type_map[static_cast(c)] & mask; - } - -private: - regex_constants::syntax_type m_char_map[1u << CHAR_BIT]; - char m_lower_map[1u << CHAR_BIT]; - boost::uint16_t m_type_map[1u << CHAR_BIT]; - void init(); -}; - -// -// class w32_regex_traits_implementation: -// provides pimpl implementation for w32_regex_traits. -// -template -class w32_regex_traits_implementation : public w32_regex_traits_char_layer -{ -public: - typedef typename w32_regex_traits::char_class_type char_class_type; - BOOST_STATIC_CONSTANT(char_class_type, mask_word = 0x0400); // must be C1_DEFINED << 1 - BOOST_STATIC_CONSTANT(char_class_type, mask_unicode = 0x0800); // must be C1_DEFINED << 2 - BOOST_STATIC_CONSTANT(char_class_type, mask_horizontal = 0x1000); // must be C1_DEFINED << 3 - BOOST_STATIC_CONSTANT(char_class_type, mask_vertical = 0x2000); // must be C1_DEFINED << 4 - BOOST_STATIC_CONSTANT(char_class_type, mask_base = 0x3ff); // all the masks used by the CT_CTYPE1 group - - typedef std::basic_string string_type; - typedef charT char_type; - w32_regex_traits_implementation(::boost::BOOST_REGEX_DETAIL_NS::lcid_type l); - std::string error_string(regex_constants::error_type n) const - { - if(!m_error_strings.empty()) - { - std::map::const_iterator p = m_error_strings.find(n); - return (p == m_error_strings.end()) ? std::string(get_default_error_string(n)) : p->second; - } - return get_default_error_string(n); - } - char_class_type lookup_classname(const charT* p1, const charT* p2) const - { - char_class_type result = lookup_classname_imp(p1, p2); - if(result == 0) - { - typedef typename string_type::size_type size_type; - string_type temp(p1, p2); - for(size_type i = 0; i < temp.size(); ++i) - temp[i] = this->tolower(temp[i]); - result = lookup_classname_imp(&*temp.begin(), &*temp.begin() + temp.size()); - } - return result; - } - string_type lookup_collatename(const charT* p1, const charT* p2) const; - string_type transform_primary(const charT* p1, const charT* p2) const; - string_type transform(const charT* p1, const charT* p2) const - { - return ::boost::BOOST_REGEX_DETAIL_NS::w32_transform(this->m_locale, p1, p2); - } -private: - std::map m_error_strings; // error messages indexed by numberic ID - std::map m_custom_class_names; // character class names - std::map m_custom_collate_names; // collating element names - unsigned m_collate_type; // the form of the collation string - charT m_collate_delim; // the collation group delimiter - // - // helpers: - // - char_class_type lookup_classname_imp(const charT* p1, const charT* p2) const; -}; - -template -typename w32_regex_traits_implementation::string_type - w32_regex_traits_implementation::transform_primary(const charT* p1, const charT* p2) const -{ - string_type result; - // - // What we do here depends upon the format of the sort key returned by - // sort key returned by this->transform: - // - switch(m_collate_type) - { - case sort_C: - case sort_unknown: - // the best we can do is translate to lower case, then get a regular sort key: - { - result.assign(p1, p2); - typedef typename string_type::size_type size_type; - for(size_type i = 0; i < result.size(); ++i) - result[i] = this->tolower(result[i]); - result = this->transform(&*result.begin(), &*result.begin() + result.size()); - break; - } - case sort_fixed: - { - // get a regular sort key, and then truncate it: - result.assign(this->transform(p1, p2)); - result.erase(this->m_collate_delim); - break; - } - case sort_delim: - // get a regular sort key, and then truncate everything after the delim: - result.assign(this->transform(p1, p2)); - std::size_t i; - for(i = 0; i < result.size(); ++i) - { - if(result[i] == m_collate_delim) - break; - } - result.erase(i); - break; - } - if(result.empty()) - result = string_type(1, charT(0)); - return result; -} - -template -typename w32_regex_traits_implementation::string_type - w32_regex_traits_implementation::lookup_collatename(const charT* p1, const charT* p2) const -{ - typedef typename std::map::const_iterator iter_type; - if(m_custom_collate_names.size()) - { - iter_type pos = m_custom_collate_names.find(string_type(p1, p2)); - if(pos != m_custom_collate_names.end()) - return pos->second; - } -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ - && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) - std::string name(p1, p2); -#else - std::string name; - const charT* p0 = p1; - while(p0 != p2) - name.append(1, char(*p0++)); -#endif - name = lookup_default_collate_name(name); -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ - && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) - if(name.size()) - return string_type(name.begin(), name.end()); -#else - if(name.size()) - { - string_type result; - typedef std::string::const_iterator iter; - iter b = name.begin(); - iter e = name.end(); - while(b != e) - result.append(1, charT(*b++)); - return result; - } -#endif - if(p2 - p1 == 1) - return string_type(1, *p1); - return string_type(); -} - -template -w32_regex_traits_implementation::w32_regex_traits_implementation(::boost::BOOST_REGEX_DETAIL_NS::lcid_type l) -: w32_regex_traits_char_layer(l) -{ - cat_type cat; - std::string cat_name(w32_regex_traits::get_catalog_name()); - if(cat_name.size()) - { - cat = ::boost::BOOST_REGEX_DETAIL_NS::w32_cat_open(cat_name); - if(!cat) - { - std::string m("Unable to open message catalog: "); - std::runtime_error err(m + cat_name); - boost::BOOST_REGEX_DETAIL_NS::raise_runtime_error(err); - } - } - // - // if we have a valid catalog then load our messages: - // - if(cat) - { - // - // Error messages: - // - for(boost::regex_constants::error_type i = static_cast(0); - i <= boost::regex_constants::error_unknown; - i = static_cast(i + 1)) - { - const char* p = get_default_error_string(i); - string_type default_message; - while(*p) - { - default_message.append(1, static_cast(*p)); - ++p; - } - string_type s = ::boost::BOOST_REGEX_DETAIL_NS::w32_cat_get(cat, this->m_locale, i+200, default_message); - std::string result; - for(std::string::size_type j = 0; j < s.size(); ++j) - { - result.append(1, static_cast(s[j])); - } - m_error_strings[i] = result; - } - // - // Custom class names: - // - static const char_class_type masks[14] = - { - 0x0104u, // C1_ALPHA | C1_DIGIT - 0x0100u, // C1_ALPHA - 0x0020u, // C1_CNTRL - 0x0004u, // C1_DIGIT - (~(0x0020u|0x0008u) & 0x01ffu) | 0x0400u, // not C1_CNTRL or C1_SPACE - 0x0002u, // C1_LOWER - (~0x0020u & 0x01ffu) | 0x0400, // not C1_CNTRL - 0x0010u, // C1_PUNCT - 0x0008u, // C1_SPACE - 0x0001u, // C1_UPPER - 0x0080u, // C1_XDIGIT - 0x0040u, // C1_BLANK - w32_regex_traits_implementation::mask_word, - w32_regex_traits_implementation::mask_unicode, - }; - static const string_type null_string; - for(unsigned int j = 0; j <= 13; ++j) - { - string_type s(::boost::BOOST_REGEX_DETAIL_NS::w32_cat_get(cat, this->m_locale, j+300, null_string)); - if(s.size()) - this->m_custom_class_names[s] = masks[j]; - } - } - // - // get the collation format used by m_pcollate: - // - m_collate_type = BOOST_REGEX_DETAIL_NS::find_sort_syntax(this, &m_collate_delim); -} - -template -typename w32_regex_traits_implementation::char_class_type - w32_regex_traits_implementation::lookup_classname_imp(const charT* p1, const charT* p2) const -{ - static const char_class_type masks[22] = - { - 0, - 0x0104u, // C1_ALPHA | C1_DIGIT - 0x0100u, // C1_ALPHA - 0x0040u, // C1_BLANK - 0x0020u, // C1_CNTRL - 0x0004u, // C1_DIGIT - 0x0004u, // C1_DIGIT - (~(0x0020u|0x0008u|0x0040) & 0x01ffu) | 0x0400u, // not C1_CNTRL or C1_SPACE or C1_BLANK - w32_regex_traits_implementation::mask_horizontal, - 0x0002u, // C1_LOWER - 0x0002u, // C1_LOWER - (~0x0020u & 0x01ffu) | 0x0400, // not C1_CNTRL - 0x0010u, // C1_PUNCT - 0x0008u, // C1_SPACE - 0x0008u, // C1_SPACE - 0x0001u, // C1_UPPER - w32_regex_traits_implementation::mask_unicode, - 0x0001u, // C1_UPPER - w32_regex_traits_implementation::mask_vertical, - 0x0104u | w32_regex_traits_implementation::mask_word, - 0x0104u | w32_regex_traits_implementation::mask_word, - 0x0080u, // C1_XDIGIT - }; - if(m_custom_class_names.size()) - { - typedef typename std::map, char_class_type>::const_iterator map_iter; - map_iter pos = m_custom_class_names.find(string_type(p1, p2)); - if(pos != m_custom_class_names.end()) - return pos->second; - } - std::size_t state_id = 1 + BOOST_REGEX_DETAIL_NS::get_default_class_id(p1, p2); - if(state_id < sizeof(masks) / sizeof(masks[0])) - return masks[state_id]; - return masks[0]; -} - - -template -boost::shared_ptr > create_w32_regex_traits(::boost::BOOST_REGEX_DETAIL_NS::lcid_type l) -{ - // TODO: create a cache for previously constructed objects. - return boost::object_cache< ::boost::BOOST_REGEX_DETAIL_NS::lcid_type, w32_regex_traits_implementation >::get(l, 5); -} - -} // BOOST_REGEX_DETAIL_NS - -template -class w32_regex_traits -{ -public: - typedef charT char_type; - typedef std::size_t size_type; - typedef std::basic_string string_type; - typedef ::boost::BOOST_REGEX_DETAIL_NS::lcid_type locale_type; - typedef boost::uint_least32_t char_class_type; - - struct boost_extensions_tag{}; - - w32_regex_traits() - : m_pimpl(BOOST_REGEX_DETAIL_NS::create_w32_regex_traits(::boost::BOOST_REGEX_DETAIL_NS::w32_get_default_locale())) - { } - static size_type length(const char_type* p) - { - return std::char_traits::length(p); - } - regex_constants::syntax_type syntax_type(charT c)const - { - return m_pimpl->syntax_type(c); - } - regex_constants::escape_syntax_type escape_syntax_type(charT c) const - { - return m_pimpl->escape_syntax_type(c); - } - charT translate(charT c) const - { - return c; - } - charT translate_nocase(charT c) const - { - return this->m_pimpl->tolower(c); - } - charT translate(charT c, bool icase) const - { - return icase ? this->m_pimpl->tolower(c) : c; - } - charT tolower(charT c) const - { - return this->m_pimpl->tolower(c); - } - charT toupper(charT c) const - { - return ::boost::BOOST_REGEX_DETAIL_NS::w32_toupper(c, this->m_pimpl->m_locale); - } - string_type transform(const charT* p1, const charT* p2) const - { - return ::boost::BOOST_REGEX_DETAIL_NS::w32_transform(this->m_pimpl->m_locale, p1, p2); - } - string_type transform_primary(const charT* p1, const charT* p2) const - { - return m_pimpl->transform_primary(p1, p2); - } - char_class_type lookup_classname(const charT* p1, const charT* p2) const - { - return m_pimpl->lookup_classname(p1, p2); - } - string_type lookup_collatename(const charT* p1, const charT* p2) const - { - return m_pimpl->lookup_collatename(p1, p2); - } - bool isctype(charT c, char_class_type f) const - { - if((f & BOOST_REGEX_DETAIL_NS::w32_regex_traits_implementation::mask_base) - && (this->m_pimpl->isctype(f & BOOST_REGEX_DETAIL_NS::w32_regex_traits_implementation::mask_base, c))) - return true; - else if((f & BOOST_REGEX_DETAIL_NS::w32_regex_traits_implementation::mask_unicode) && BOOST_REGEX_DETAIL_NS::is_extended(c)) - return true; - else if((f & BOOST_REGEX_DETAIL_NS::w32_regex_traits_implementation::mask_word) && (c == '_')) - return true; - else if((f & BOOST_REGEX_DETAIL_NS::w32_regex_traits_implementation::mask_vertical) - && (::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) || (c == '\v'))) - return true; - else if((f & BOOST_REGEX_DETAIL_NS::w32_regex_traits_implementation::mask_horizontal) - && this->isctype(c, 0x0008u) && !this->isctype(c, BOOST_REGEX_DETAIL_NS::w32_regex_traits_implementation::mask_vertical)) - return true; - return false; - } - boost::intmax_t toi(const charT*& p1, const charT* p2, int radix)const - { - return ::boost::BOOST_REGEX_DETAIL_NS::global_toi(p1, p2, radix, *this); - } - int value(charT c, int radix)const - { - int result = (int)::boost::BOOST_REGEX_DETAIL_NS::global_value(c); - return result < radix ? result : -1; - } - locale_type imbue(locale_type l) - { - ::boost::BOOST_REGEX_DETAIL_NS::lcid_type result(getloc()); - m_pimpl = BOOST_REGEX_DETAIL_NS::create_w32_regex_traits(l); - return result; - } - locale_type getloc()const - { - return m_pimpl->m_locale; - } - std::string error_string(regex_constants::error_type n) const - { - return m_pimpl->error_string(n); - } - - // - // extension: - // set the name of the message catalog in use (defaults to "boost_regex"). - // - static std::string catalog_name(const std::string& name); - static std::string get_catalog_name(); - -private: - boost::shared_ptr > m_pimpl; - // - // catalog name handler: - // - static std::string& get_catalog_name_inst(); - -#ifdef BOOST_HAS_THREADS - static static_mutex& get_mutex_inst(); -#endif -}; - -template -std::string w32_regex_traits::catalog_name(const std::string& name) -{ -#ifdef BOOST_HAS_THREADS - static_mutex::scoped_lock lk(get_mutex_inst()); -#endif - std::string result(get_catalog_name_inst()); - get_catalog_name_inst() = name; - return result; -} - -template -std::string& w32_regex_traits::get_catalog_name_inst() -{ - static std::string s_name; - return s_name; -} - -template -std::string w32_regex_traits::get_catalog_name() -{ -#ifdef BOOST_HAS_THREADS - static_mutex::scoped_lock lk(get_mutex_inst()); -#endif - std::string result(get_catalog_name_inst()); - return result; -} - -#ifdef BOOST_HAS_THREADS -template -static_mutex& w32_regex_traits::get_mutex_inst() -{ - static static_mutex s_mutex = BOOST_STATIC_MUTEX_INIT; - return s_mutex; -} -#endif - - -} // boost - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif // BOOST_REGEX_NO_WIN32_LOCALE - -#endif diff --git a/src/boost/boost/regex_fwd.hpp b/src/boost/boost/regex_fwd.hpp deleted file mode 100644 index f852bb897..000000000 --- a/src/boost/boost/regex_fwd.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org/libs/regex for documentation. - * FILE regex_fwd.cpp - * VERSION see - * DESCRIPTION: Forward declares boost::basic_regex<> and - * associated typedefs. - */ - -#ifndef BOOST_REGEX_FWD_HPP -#define BOOST_REGEX_FWD_HPP - -#ifndef BOOST_REGEX_CONFIG_HPP -#include -#endif - -#include - -#endif - - - - diff --git a/src/boost/boost/smart_ptr/bad_weak_ptr.hpp b/src/boost/boost/smart_ptr/bad_weak_ptr.hpp index 34216836e..6c8adafb0 100644 --- a/src/boost/boost/smart_ptr/bad_weak_ptr.hpp +++ b/src/boost/boost/smart_ptr/bad_weak_ptr.hpp @@ -20,7 +20,7 @@ #include #include -#ifdef __BORLANDC__ +#ifdef BOOST_BORLANDC # pragma warn -8026 // Functions with excep. spec. are not expanded inline #endif @@ -33,7 +33,7 @@ namespace boost // is compiled with -ps, the compiler issues an error. // Hence, the temporary #pragma option -pc below. -#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564 +#if defined(BOOST_BORLANDC) && BOOST_BORLANDC <= 0x564 # pragma option push -pc #endif @@ -47,7 +47,7 @@ class bad_weak_ptr: public std::exception { public: - virtual char const * what() const throw() + char const * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return "tr1::bad_weak_ptr"; } @@ -57,13 +57,13 @@ class bad_weak_ptr: public std::exception # pragma clang diagnostic pop #endif -#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564 +#if defined(BOOST_BORLANDC) && BOOST_BORLANDC <= 0x564 # pragma option pop #endif } // namespace boost -#ifdef __BORLANDC__ +#ifdef BOOST_BORLANDC # pragma warn .8026 // Functions with excep. spec. are not expanded inline #endif diff --git a/src/boost/boost/smart_ptr/detail/atomic_count.hpp b/src/boost/boost/smart_ptr/detail/atomic_count.hpp new file mode 100644 index 000000000..4a87ca696 --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/atomic_count.hpp @@ -0,0 +1,103 @@ +#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// boost/detail/atomic_count.hpp - thread/SMP safe reference counter +// +// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. +// Copyright (c) 2013 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 +// +// typedef boost::detail::atomic_count; +// +// atomic_count a(n); +// +// (n is convertible to long) +// +// Effects: Constructs an atomic_count with an initial value of n +// +// a; +// +// Returns: (long) the current value of a +// Memory Ordering: acquire +// +// ++a; +// +// Effects: Atomically increments the value of a +// Returns: (long) the new value of a +// Memory Ordering: acquire/release +// +// --a; +// +// Effects: Atomically decrements the value of a +// Returns: (long) the new value of a +// Memory Ordering: acquire/release +// + +#include +#include +#include + +#if defined( BOOST_AC_DISABLE_THREADS ) +# include + +#elif defined( BOOST_AC_USE_STD_ATOMIC ) +# include + +#elif defined( BOOST_AC_USE_SPINLOCK ) +# include + +#elif defined( BOOST_AC_USE_PTHREADS ) +# include + +#elif defined( BOOST_SP_DISABLE_THREADS ) +# include + +#elif defined( BOOST_SP_USE_STD_ATOMIC ) +# include + +#elif defined( BOOST_SP_USE_SPINLOCK ) +# include + +#elif defined( BOOST_SP_USE_PTHREADS ) +# include + +#elif defined( BOOST_DISABLE_THREADS ) && !defined( BOOST_SP_ENABLE_THREADS ) && !defined( BOOST_DISABLE_WIN32 ) +# include + +#elif defined( BOOST_SP_HAS_GCC_INTRINSICS ) +# include + +#elif !defined( BOOST_NO_CXX11_HDR_ATOMIC ) +# include + +#elif defined( BOOST_SP_HAS_SYNC_INTRINSICS ) +# include + +#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) ) && !defined( __PATHSCALE__ ) +# include + +#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# include + +#elif defined(__GLIBCPP__) || defined(__GLIBCXX__) +# include + +#elif !defined( BOOST_HAS_THREADS ) +# include + +#else +# include + +#endif + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/atomic_count_gcc.hpp b/src/boost/boost/smart_ptr/detail/atomic_count_gcc.hpp new file mode 100644 index 000000000..122e302f8 --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/atomic_count_gcc.hpp @@ -0,0 +1,79 @@ +#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED + +// +// boost/detail/atomic_count_gcc.hpp +// +// atomic_count for GNU libstdc++ v3 +// +// http://gcc.gnu.org/onlinedocs/porting/Thread-safety.html +// +// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. +// Copyright (c) 2002 Lars Gullik Bjønnes +// Copyright 2003-2005 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) +// + +#if __GNUC__ * 100 + __GNUC_MINOR__ >= 402 +# include +#else +# include +#endif + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using libstdc++ atomic_count") + +#endif + +namespace boost +{ + +namespace detail +{ + +#if defined(__GLIBCXX__) // g++ 3.4+ + +using __gnu_cxx::__atomic_add; +using __gnu_cxx::__exchange_and_add; + +#endif + +class atomic_count +{ +public: + + explicit atomic_count( long v ) : value_( v ) {} + + long operator++() + { + return __exchange_and_add( &value_, +1 ) + 1; + } + + long operator--() + { + return __exchange_and_add( &value_, -1 ) - 1; + } + + operator long() const + { + return __exchange_and_add( &value_, 0 ); + } + +private: + + atomic_count(atomic_count const &); + atomic_count & operator=(atomic_count const &); + + mutable _Atomic_word value_; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp b/src/boost/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp new file mode 100644 index 000000000..e4dd224e1 --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp @@ -0,0 +1,63 @@ +#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_ATOMIC_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_ATOMIC_HPP_INCLUDED + +// boost/detail/atomic_count_gcc_atomic.hpp +// +// atomic_count for g++ 4.7+ +// +// Copyright 2007, 2020 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using __atomic atomic_count") + +#endif + +namespace boost +{ + +namespace detail +{ + +class atomic_count +{ +public: + + explicit atomic_count( long v ): value_( static_cast< boost::int_least32_t >( v ) ) + { + } + + long operator++() + { + return __atomic_add_fetch( &value_, +1, __ATOMIC_ACQ_REL ); + } + + long operator--() + { + return __atomic_add_fetch( &value_, -1, __ATOMIC_ACQ_REL ); + } + + operator long() const + { + return __atomic_load_n( &value_, __ATOMIC_ACQUIRE ); + } + +private: + + atomic_count(atomic_count const &); + atomic_count & operator=(atomic_count const &); + + boost::int_least32_t value_; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_ATOMIC_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp b/src/boost/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp new file mode 100644 index 000000000..520e1dc8a --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp @@ -0,0 +1,88 @@ +#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED + +// +// boost/detail/atomic_count_gcc_x86.hpp +// +// atomic_count for g++ on 486+/AMD64 +// +// Copyright 2007 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) +// + +#include + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using g++/x86 atomic_count") + +#endif + +BOOST_SP_OBSOLETE() + +namespace boost +{ + +namespace detail +{ + +class atomic_count +{ +public: + + explicit atomic_count( long v ) : value_( static_cast< int >( v ) ) {} + + long operator++() + { + return atomic_exchange_and_add( &value_, +1 ) + 1; + } + + long operator--() + { + return atomic_exchange_and_add( &value_, -1 ) - 1; + } + + operator long() const + { + return atomic_exchange_and_add( &value_, 0 ); + } + +private: + + atomic_count(atomic_count const &); + atomic_count & operator=(atomic_count const &); + + mutable int value_; + +private: + + static int atomic_exchange_and_add( int * pw, int dv ) + { + // int r = *pw; + // *pw += dv; + // return r; + + int r; + + __asm__ __volatile__ + ( + "lock\n\t" + "xadd %1, %0": + "+m"( *pw ), "=r"( r ): // outputs (%0, %1) + "1"( dv ): // inputs (%2 == %1) + "memory", "cc" // clobbers + ); + + return r; + } +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/atomic_count_nt.hpp b/src/boost/boost/smart_ptr/detail/atomic_count_nt.hpp new file mode 100644 index 000000000..31626667e --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/atomic_count_nt.hpp @@ -0,0 +1,66 @@ +#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_NT_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_NT_HPP_INCLUDED + +// +// boost/detail/atomic_count_nt.hpp +// +// Trivial atomic_count for the single-threaded case +// +// http://gcc.gnu.org/onlinedocs/porting/Thread-safety.html +// +// Copyright 2013 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 +// + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using single-threaded, non-atomic atomic_count") + +#endif + +namespace boost +{ + +namespace detail +{ + +class atomic_count +{ +public: + + explicit atomic_count( long v ): value_( v ) + { + } + + long operator++() + { + return ++value_; + } + + long operator--() + { + return --value_; + } + + operator long() const + { + return value_; + } + +private: + + atomic_count(atomic_count const &); + atomic_count & operator=(atomic_count const &); + + long value_; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_NT_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/atomic_count_pt.hpp b/src/boost/boost/smart_ptr/detail/atomic_count_pt.hpp new file mode 100644 index 000000000..627455ead --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/atomic_count_pt.hpp @@ -0,0 +1,104 @@ +#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED + +// +// boost/detail/atomic_count_pthreads.hpp +// +// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. +// +// 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) +// + +#include +#include + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using pthread_mutex atomic_count") + +#endif + +// +// The generic pthread_mutex-based implementation sometimes leads to +// inefficiencies. Example: a class with two atomic_count members +// can get away with a single mutex. +// +// Users can detect this situation by checking BOOST_AC_USE_PTHREADS. +// + +namespace boost +{ + +namespace detail +{ + +class atomic_count +{ +private: + + class scoped_lock + { + public: + + scoped_lock(pthread_mutex_t & m): m_(m) + { + BOOST_VERIFY( pthread_mutex_lock( &m_ ) == 0 ); + } + + ~scoped_lock() + { + BOOST_VERIFY( pthread_mutex_unlock( &m_ ) == 0 ); + } + + private: + + pthread_mutex_t & m_; + }; + +public: + + explicit atomic_count(long v): value_(v) + { + BOOST_VERIFY( pthread_mutex_init( &mutex_, 0 ) == 0 ); + } + + ~atomic_count() + { + BOOST_VERIFY( pthread_mutex_destroy( &mutex_ ) == 0 ); + } + + long operator++() + { + scoped_lock lock(mutex_); + return ++value_; + } + + long operator--() + { + scoped_lock lock(mutex_); + return --value_; + } + + operator long() const + { + scoped_lock lock(mutex_); + return value_; + } + +private: + + atomic_count(atomic_count const &); + atomic_count & operator=(atomic_count const &); + + mutable pthread_mutex_t mutex_; + long value_; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/atomic_count_spin.hpp b/src/boost/boost/smart_ptr/detail/atomic_count_spin.hpp new file mode 100644 index 000000000..5fd11390d --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/atomic_count_spin.hpp @@ -0,0 +1,69 @@ +#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SPIN_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SPIN_HPP_INCLUDED + +// +// boost/detail/atomic_count_spin.hpp +// +// Copyright (c) 2013 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 +// + +#include + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using spinlock-based atomic_count") + +#endif + +namespace boost +{ + +namespace detail +{ + +class atomic_count +{ +private: + +public: + + explicit atomic_count( long v ): value_( v ) + { + } + + long operator++() + { + spinlock_pool<0>::scoped_lock lock( &value_ ); + return ++value_; + } + + long operator--() + { + spinlock_pool<0>::scoped_lock lock( &value_ ); + return --value_; + } + + operator long() const + { + spinlock_pool<0>::scoped_lock lock( &value_ ); + return value_; + } + +private: + + atomic_count(atomic_count const &); + atomic_count & operator=(atomic_count const &); + + long value_; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SPIN_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/atomic_count_std_atomic.hpp b/src/boost/boost/smart_ptr/detail/atomic_count_std_atomic.hpp new file mode 100644 index 000000000..f96a3cfdf --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/atomic_count_std_atomic.hpp @@ -0,0 +1,67 @@ +#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_STD_ATOMIC_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_STD_ATOMIC_HPP_INCLUDED + +// +// boost/detail/atomic_count_std_atomic.hpp +// +// atomic_count for std::atomic +// +// Copyright 2013 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 +// + +#include +#include + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using std::atomic atomic_count") + +#endif + +namespace boost +{ + +namespace detail +{ + +class atomic_count +{ +public: + + explicit atomic_count( long v ): value_( static_cast< std::int_least32_t >( v ) ) + { + } + + long operator++() + { + return value_.fetch_add( 1, std::memory_order_acq_rel ) + 1; + } + + long operator--() + { + return value_.fetch_sub( 1, std::memory_order_acq_rel ) - 1; + } + + operator long() const + { + return value_.load( std::memory_order_acquire ); + } + +private: + + atomic_count(atomic_count const &); + atomic_count & operator=(atomic_count const &); + + std::atomic_int_least32_t value_; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_STD_ATOMIC_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/atomic_count_sync.hpp b/src/boost/boost/smart_ptr/detail/atomic_count_sync.hpp new file mode 100644 index 000000000..b67843dca --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/atomic_count_sync.hpp @@ -0,0 +1,72 @@ +#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED + +// +// boost/detail/atomic_count_sync.hpp +// +// atomic_count for g++ 4.1+ +// +// http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Atomic-Builtins.html +// +// Copyright 2007 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) +// + +#include + +#if defined( __ia64__ ) && defined( __INTEL_COMPILER ) +# include +#endif + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using __sync atomic_count") + +#endif + +namespace boost +{ + +namespace detail +{ + +class atomic_count +{ +public: + + explicit atomic_count( long v ): value_( static_cast< boost::int_least32_t >( v ) ) + { + } + + long operator++() + { + return __sync_add_and_fetch( &value_, 1 ); + } + + long operator--() + { + return __sync_add_and_fetch( &value_, -1 ); + } + + operator long() const + { + return __sync_fetch_and_add( &value_, 0 ); + } + +private: + + atomic_count(atomic_count const &); + atomic_count & operator=(atomic_count const &); + + mutable boost::int_least32_t value_; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/atomic_count_win32.hpp b/src/boost/boost/smart_ptr/detail/atomic_count_win32.hpp new file mode 100644 index 000000000..41f77835c --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/atomic_count_win32.hpp @@ -0,0 +1,70 @@ +#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// boost/detail/atomic_count_win32.hpp +// +// Copyright (c) 2001-2005 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) +// + +#include + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using Win32 atomic_count") + +#endif + +namespace boost +{ + +namespace detail +{ + +class atomic_count +{ +public: + + explicit atomic_count( long v ): value_( v ) + { + } + + long operator++() + { + return BOOST_SP_INTERLOCKED_INCREMENT( &value_ ); + } + + long operator--() + { + return BOOST_SP_INTERLOCKED_DECREMENT( &value_ ); + } + + operator long() const + { + return static_cast( value_ ); + } + +private: + + atomic_count( atomic_count const & ); + atomic_count & operator=( atomic_count const & ); + + long value_; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/lightweight_mutex.hpp b/src/boost/boost/smart_ptr/detail/lightweight_mutex.hpp index f6c159e6a..6bea5e3ba 100644 --- a/src/boost/boost/smart_ptr/detail/lightweight_mutex.hpp +++ b/src/boost/boost/smart_ptr/detail/lightweight_mutex.hpp @@ -28,15 +28,12 @@ #include -#if !defined(BOOST_HAS_THREADS) -# include -#elif defined(BOOST_HAS_PTHREADS) -# include -#elif defined(BOOST_HAS_WINTHREADS) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +#if !defined(BOOST_NO_CXX11_HDR_MUTEX ) +# include +#elif defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # include #else -// Use #define BOOST_DISABLE_THREADS to avoid the error -# error Unrecognized threading platform +# include #endif #endif // #ifndef BOOST_SMART_PTR_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/local_counted_base.hpp b/src/boost/boost/smart_ptr/detail/local_counted_base.hpp index 63facab6c..fcbdf77e9 100644 --- a/src/boost/boost/smart_ptr/detail/local_counted_base.hpp +++ b/src/boost/boost/smart_ptr/detail/local_counted_base.hpp @@ -101,24 +101,24 @@ class BOOST_SYMBOL_VISIBLE local_counted_impl: public local_counted_base public: - explicit local_counted_impl( shared_count const& pn ): pn_( pn ) + explicit local_counted_impl( shared_count const& pn ) BOOST_SP_NOEXCEPT: pn_( pn ) { } #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) - explicit local_counted_impl( shared_count && pn ): pn_( std::move(pn) ) + explicit local_counted_impl( shared_count && pn ) BOOST_SP_NOEXCEPT: pn_( std::move(pn) ) { } #endif - virtual void local_cb_destroy() BOOST_SP_NOEXCEPT + void local_cb_destroy() BOOST_SP_NOEXCEPT BOOST_OVERRIDE { delete this; } - virtual boost::detail::shared_count local_cb_get_shared_count() const BOOST_SP_NOEXCEPT + boost::detail::shared_count local_cb_get_shared_count() const BOOST_SP_NOEXCEPT BOOST_OVERRIDE { return pn_; } @@ -130,12 +130,12 @@ class BOOST_SYMBOL_VISIBLE local_counted_impl_em: public local_counted_base shared_count pn_; - virtual void local_cb_destroy() BOOST_SP_NOEXCEPT + void local_cb_destroy() BOOST_SP_NOEXCEPT BOOST_OVERRIDE { shared_count().swap( pn_ ); } - virtual boost::detail::shared_count local_cb_get_shared_count() const BOOST_SP_NOEXCEPT + boost::detail::shared_count local_cb_get_shared_count() const BOOST_SP_NOEXCEPT BOOST_OVERRIDE { return pn_; } diff --git a/src/boost/boost/smart_ptr/detail/local_sp_deleter.hpp b/src/boost/boost/smart_ptr/detail/local_sp_deleter.hpp index f1b8c5bce..e67afb7be 100644 --- a/src/boost/boost/smart_ptr/detail/local_sp_deleter.hpp +++ b/src/boost/boost/smart_ptr/detail/local_sp_deleter.hpp @@ -50,7 +50,7 @@ template class local_sp_deleter: public local_counted_impl_em #endif - D& deleter() + D& deleter() BOOST_SP_NOEXCEPT { return d_; } @@ -74,12 +74,12 @@ template<> class local_sp_deleter { }; -template D * get_local_deleter( local_sp_deleter * p ) +template D * get_local_deleter( local_sp_deleter * p ) BOOST_SP_NOEXCEPT { return &p->deleter(); } -inline void * get_local_deleter( local_sp_deleter * /*p*/ ) +inline void * get_local_deleter( local_sp_deleter * /*p*/ ) BOOST_SP_NOEXCEPT { return 0; } diff --git a/src/boost/boost/smart_ptr/detail/lwm_nop.hpp b/src/boost/boost/smart_ptr/detail/lwm_nop.hpp deleted file mode 100644 index cc1e97fd9..000000000 --- a/src/boost/boost/smart_ptr/detail/lwm_nop.hpp +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef BOOST_SMART_PTR_DETAIL_LWM_NOP_HPP_INCLUDED -#define BOOST_SMART_PTR_DETAIL_LWM_NOP_HPP_INCLUDED - -// MS compatible compilers support #pragma once - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -// -// boost/detail/lwm_nop.hpp -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// 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) -// - -namespace boost -{ - -namespace detail -{ - -class lightweight_mutex -{ -public: - - typedef lightweight_mutex scoped_lock; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_SMART_PTR_DETAIL_LWM_NOP_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/lwm_std_mutex.hpp b/src/boost/boost/smart_ptr/detail/lwm_std_mutex.hpp new file mode 100644 index 000000000..57ff51234 --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/lwm_std_mutex.hpp @@ -0,0 +1,62 @@ +#ifndef BOOST_SMART_PTR_DETAIL_LWM_STD_MUTEX_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_LWM_STD_MUTEX_HPP_INCLUDED + +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +namespace boost +{ + +namespace detail +{ + +class lightweight_mutex +{ +private: + + std::mutex m_; + + lightweight_mutex(lightweight_mutex const &); + lightweight_mutex & operator=(lightweight_mutex const &); + +public: + + lightweight_mutex() + { + } + + class scoped_lock; + friend class scoped_lock; + + class scoped_lock + { + private: + + std::mutex & m_; + + scoped_lock(scoped_lock const &); + scoped_lock & operator=(scoped_lock const &); + + public: + + scoped_lock( lightweight_mutex & m ): m_( m.m_ ) + { + m_.lock(); + } + + ~scoped_lock() + { + m_.unlock(); + } + }; +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_LWM_STD_MUTEX_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/lwm_win32_cs.hpp b/src/boost/boost/smart_ptr/detail/lwm_win32_cs.hpp index c6f0798df..b9bdc5978 100644 --- a/src/boost/boost/smart_ptr/detail/lwm_win32_cs.hpp +++ b/src/boost/boost/smart_ptr/detail/lwm_win32_cs.hpp @@ -11,15 +11,12 @@ // boost/detail/lwm_win32_cs.hpp // // Copyright (c) 2002, 2003 Peter Dimov -// Copyright (c) Microsoft Corporation 2014 // // 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) // -#include - #ifdef BOOST_USE_WINDOWS_H #include @@ -52,11 +49,7 @@ struct critical_section #endif }; -#if BOOST_PLAT_WINDOWS_RUNTIME -extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSectionEx(::_RTL_CRITICAL_SECTION *, unsigned long, unsigned long); -#else extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(::_RTL_CRITICAL_SECTION *); -#endif extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(::_RTL_CRITICAL_SECTION *); extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(::_RTL_CRITICAL_SECTION *); extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(::_RTL_CRITICAL_SECTION *); @@ -67,11 +60,7 @@ typedef ::_RTL_CRITICAL_SECTION rtl_critical_section; typedef ::CRITICAL_SECTION critical_section; -#if BOOST_PLAT_WINDOWS_RUNTIME -using ::InitializeCriticalSectionEx; -#else using ::InitializeCriticalSection; -#endif using ::EnterCriticalSection; using ::LeaveCriticalSection; using ::DeleteCriticalSection; @@ -93,11 +82,7 @@ class lightweight_mutex lightweight_mutex() { -#if BOOST_PLAT_WINDOWS_RUNTIME - boost::detail::InitializeCriticalSectionEx(reinterpret_cast< rtl_critical_section* >(&cs_), 4000, 0); -#else boost::detail::InitializeCriticalSection(reinterpret_cast< rtl_critical_section* >(&cs_)); -#endif } ~lightweight_mutex() diff --git a/src/boost/boost/smart_ptr/detail/requires_cxx11.hpp b/src/boost/boost/smart_ptr/detail/requires_cxx11.hpp new file mode 100644 index 000000000..5bf74345d --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/requires_cxx11.hpp @@ -0,0 +1,23 @@ +#ifndef BOOST_SMART_PTR_DETAIL_REQUIRES_CXX11_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_REQUIRES_CXX11_HPP_INCLUDED + +// Copyright 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include + +#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || \ + defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + defined(BOOST_NO_CXX11_DECLTYPE) || \ + defined(BOOST_NO_CXX11_CONSTEXPR) || \ + defined(BOOST_NO_CXX11_NOEXCEPT) || \ + defined(BOOST_NO_CXX11_NULLPTR) || \ + defined(BOOST_NO_CXX11_SMART_PTR) + +BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.SmartPtr 1.82 and will be removed in Boost.SmartPtr 1.84. Please open an issue in https://github.com/boostorg/smart_ptr if you want it retained.") + +#endif + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_REQUIRES_CXX11_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/shared_count.hpp b/src/boost/boost/smart_ptr/detail/shared_count.hpp index 9e31c1352..4d8e6f125 100644 --- a/src/boost/boost/smart_ptr/detail/shared_count.hpp +++ b/src/boost/boost/smart_ptr/detail/shared_count.hpp @@ -18,31 +18,29 @@ // http://www.boost.org/LICENSE_1_0.txt) // -#ifdef __BORLANDC__ +#if defined(__BORLANDC__) && !defined(__clang__) # pragma warn -8027 // Functions containing try are not expanded inline #endif -#include -#include -#include #include #include #include #include -#include -// In order to avoid circular dependencies with Boost.TR1 -// we make sure that our include of doesn't try to -// pull in the TR1 headers: that's why we use this header -// rather than including directly: -#include // std::auto_ptr -#include // std::less +#include +#include +#include +#include +#include +#include +#include +#include // std::auto_ptr +#include // std::less +#include // std::size_t #ifdef BOOST_NO_EXCEPTIONS # include // std::bad_alloc #endif -#include - #if defined( BOOST_SP_DISABLE_DEPRECATED ) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" @@ -102,6 +100,14 @@ template< class D > struct sp_convert_reference< D& > typedef sp_reference_wrapper< D > type; }; +template std::size_t sp_hash_pointer( T* p ) BOOST_NOEXCEPT +{ + boost::uintptr_t v = reinterpret_cast( p ); + + // match boost::hash + return static_cast( v + ( v >> 3 ) ); +} + class weak_count; class shared_count @@ -118,14 +124,14 @@ class shared_count public: - BOOST_CONSTEXPR shared_count(): pi_(0) // nothrow + BOOST_CONSTEXPR shared_count() BOOST_SP_NOEXCEPT: pi_(0) #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) , id_(shared_count_id) #endif { } - BOOST_CONSTEXPR explicit shared_count( sp_counted_base * pi ): pi_( pi ) // nothrow + BOOST_CONSTEXPR explicit shared_count( sp_counted_base * pi ) BOOST_SP_NOEXCEPT: pi_( pi ) #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) , id_(shared_count_id) #endif @@ -381,7 +387,7 @@ class shared_count { typedef typename sp_convert_reference::type D2; - D2 d2( r.get_deleter() ); + D2 d2( static_cast( r.get_deleter() ) ); pi_ = new sp_counted_impl_pd< typename std::unique_ptr::pointer, D2 >( r.get(), d2 ); #ifdef BOOST_NO_EXCEPTIONS @@ -421,7 +427,7 @@ class shared_count r.release(); } - ~shared_count() // nothrow + ~shared_count() /*BOOST_SP_NOEXCEPT*/ { if( pi_ != 0 ) pi_->release(); #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) @@ -429,7 +435,7 @@ class shared_count #endif } - shared_count(shared_count const & r): pi_(r.pi_) // nothrow + shared_count(shared_count const & r) BOOST_SP_NOEXCEPT: pi_(r.pi_) #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) , id_(shared_count_id) #endif @@ -439,7 +445,7 @@ class shared_count #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) - shared_count(shared_count && r): pi_(r.pi_) // nothrow + shared_count(shared_count && r) BOOST_SP_NOEXCEPT: pi_(r.pi_) #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) , id_(shared_count_id) #endif @@ -450,9 +456,9 @@ class shared_count #endif explicit shared_count(weak_count const & r); // throws bad_weak_ptr when r.use_count() == 0 - shared_count( weak_count const & r, sp_nothrow_tag ); // constructs an empty *this when r.use_count() == 0 + shared_count( weak_count const & r, sp_nothrow_tag ) BOOST_SP_NOEXCEPT; // constructs an empty *this when r.use_count() == 0 - shared_count & operator= (shared_count const & r) // nothrow + shared_count & operator= (shared_count const & r) BOOST_SP_NOEXCEPT { sp_counted_base * tmp = r.pi_; @@ -466,52 +472,61 @@ class shared_count return *this; } - void swap(shared_count & r) // nothrow + void swap(shared_count & r) BOOST_SP_NOEXCEPT { sp_counted_base * tmp = r.pi_; r.pi_ = pi_; pi_ = tmp; } - long use_count() const // nothrow + long use_count() const BOOST_SP_NOEXCEPT { return pi_ != 0? pi_->use_count(): 0; } - bool unique() const // nothrow + bool unique() const BOOST_SP_NOEXCEPT { return use_count() == 1; } - bool empty() const // nothrow + bool empty() const BOOST_SP_NOEXCEPT { return pi_ == 0; } - friend inline bool operator==(shared_count const & a, shared_count const & b) + bool operator==( shared_count const & r ) const BOOST_SP_NOEXCEPT { - return a.pi_ == b.pi_; + return pi_ == r.pi_; } - friend inline bool operator<(shared_count const & a, shared_count const & b) + bool operator==( weak_count const & r ) const BOOST_SP_NOEXCEPT; + + bool operator<( shared_count const & r ) const BOOST_SP_NOEXCEPT { - return std::less()( a.pi_, b.pi_ ); + return std::less()( pi_, r.pi_ ); } - void * get_deleter( sp_typeinfo const & ti ) const + bool operator<( weak_count const & r ) const BOOST_SP_NOEXCEPT; + + void * get_deleter( sp_typeinfo_ const & ti ) const BOOST_SP_NOEXCEPT { return pi_? pi_->get_deleter( ti ): 0; } - void * get_local_deleter( sp_typeinfo const & ti ) const + void * get_local_deleter( sp_typeinfo_ const & ti ) const BOOST_SP_NOEXCEPT { return pi_? pi_->get_local_deleter( ti ): 0; } - void * get_untyped_deleter() const + void * get_untyped_deleter() const BOOST_SP_NOEXCEPT { return pi_? pi_->get_untyped_deleter(): 0; } + + std::size_t hash_value() const BOOST_SP_NOEXCEPT + { + return sp_hash_pointer( pi_ ); + } }; @@ -529,14 +544,14 @@ class weak_count public: - BOOST_CONSTEXPR weak_count(): pi_(0) // nothrow + BOOST_CONSTEXPR weak_count() BOOST_SP_NOEXCEPT: pi_(0) #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) , id_(weak_count_id) #endif { } - weak_count(shared_count const & r): pi_(r.pi_) // nothrow + weak_count(shared_count const & r) BOOST_SP_NOEXCEPT: pi_(r.pi_) #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) , id_(weak_count_id) #endif @@ -544,7 +559,7 @@ class weak_count if(pi_ != 0) pi_->weak_add_ref(); } - weak_count(weak_count const & r): pi_(r.pi_) // nothrow + weak_count(weak_count const & r) BOOST_SP_NOEXCEPT: pi_(r.pi_) #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) , id_(weak_count_id) #endif @@ -556,7 +571,7 @@ class weak_count #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) - weak_count(weak_count && r): pi_(r.pi_) // nothrow + weak_count(weak_count && r) BOOST_SP_NOEXCEPT: pi_(r.pi_) #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) , id_(weak_count_id) #endif @@ -566,7 +581,7 @@ class weak_count #endif - ~weak_count() // nothrow + ~weak_count() /*BOOST_SP_NOEXCEPT*/ { if(pi_ != 0) pi_->weak_release(); #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) @@ -574,7 +589,7 @@ class weak_count #endif } - weak_count & operator= (shared_count const & r) // nothrow + weak_count & operator= (shared_count const & r) BOOST_SP_NOEXCEPT { sp_counted_base * tmp = r.pi_; @@ -588,7 +603,7 @@ class weak_count return *this; } - weak_count & operator= (weak_count const & r) // nothrow + weak_count & operator= (weak_count const & r) BOOST_SP_NOEXCEPT { sp_counted_base * tmp = r.pi_; @@ -602,31 +617,46 @@ class weak_count return *this; } - void swap(weak_count & r) // nothrow + void swap(weak_count & r) BOOST_SP_NOEXCEPT { sp_counted_base * tmp = r.pi_; r.pi_ = pi_; pi_ = tmp; } - long use_count() const // nothrow + long use_count() const BOOST_SP_NOEXCEPT { return pi_ != 0? pi_->use_count(): 0; } - bool empty() const // nothrow + bool empty() const BOOST_SP_NOEXCEPT { return pi_ == 0; } - friend inline bool operator==(weak_count const & a, weak_count const & b) + bool operator==( weak_count const & r ) const BOOST_SP_NOEXCEPT + { + return pi_ == r.pi_; + } + + bool operator==( shared_count const & r ) const BOOST_SP_NOEXCEPT + { + return pi_ == r.pi_; + } + + bool operator<( weak_count const & r ) const BOOST_SP_NOEXCEPT + { + return std::less()( pi_, r.pi_ ); + } + + bool operator<( shared_count const & r ) const BOOST_SP_NOEXCEPT { - return a.pi_ == b.pi_; + return std::less()( pi_, r.pi_ ); } - friend inline bool operator<(weak_count const & a, weak_count const & b) + std::size_t hash_value() const BOOST_SP_NOEXCEPT { - return std::less()(a.pi_, b.pi_); + return sp_hash_pointer( pi_ ); } }; @@ -641,7 +671,7 @@ inline shared_count::shared_count( weak_count const & r ): pi_( r.pi_ ) } } -inline shared_count::shared_count( weak_count const & r, sp_nothrow_tag ): pi_( r.pi_ ) +inline shared_count::shared_count( weak_count const & r, sp_nothrow_tag ) BOOST_SP_NOEXCEPT: pi_( r.pi_ ) #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) , id_(shared_count_id) #endif @@ -652,6 +682,16 @@ inline shared_count::shared_count( weak_count const & r, sp_nothrow_tag ): pi_( } } +inline bool shared_count::operator==( weak_count const & r ) const BOOST_SP_NOEXCEPT +{ + return pi_ == r.pi_; +} + +inline bool shared_count::operator<( weak_count const & r ) const BOOST_SP_NOEXCEPT +{ + return std::less()( pi_, r.pi_ ); +} + } // namespace detail } // namespace boost @@ -660,7 +700,7 @@ inline shared_count::shared_count( weak_count const & r, sp_nothrow_tag ): pi_( #pragma GCC diagnostic pop #endif -#ifdef __BORLANDC__ +#if defined(__BORLANDC__) && !defined(__clang__) # pragma warn .8027 // Functions containing try are not expanded inline #endif diff --git a/src/boost/boost/smart_ptr/detail/sp_convertible.hpp b/src/boost/boost/smart_ptr/detail/sp_convertible.hpp index cea72818b..1024fdd87 100644 --- a/src/boost/boost/smart_ptr/detail/sp_convertible.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_convertible.hpp @@ -26,7 +26,7 @@ # define BOOST_SP_NO_SP_CONVERTIBLE #endif -#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x630 ) +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( BOOST_BORLANDC ) && ( BOOST_BORLANDC < 0x630 ) # define BOOST_SP_NO_SP_CONVERTIBLE #endif diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base.hpp index f2f49deab..30da0b788 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base.hpp @@ -17,14 +17,9 @@ // http://www.boost.org/LICENSE_1_0.txt) // +#include +#include #include -#include - -#if !defined( __c2__ ) && defined( __clang__ ) && defined( __has_extension ) -# if __has_extension( __c_atomic__ ) -# define BOOST_SP_HAS_CLANG_C11_ATOMICS -# endif -#endif #if defined( BOOST_SP_DISABLE_THREADS ) # include @@ -41,18 +36,24 @@ #elif defined( BOOST_DISABLE_THREADS ) && !defined( BOOST_SP_ENABLE_THREADS ) && !defined( BOOST_DISABLE_WIN32 ) # include -#elif defined( BOOST_SP_HAS_CLANG_C11_ATOMICS ) -# include +#elif defined( BOOST_SP_HAS_GCC_INTRINSICS ) +# include #elif !defined( BOOST_NO_CXX11_HDR_ATOMIC ) # include -#elif defined( __SNC__ ) -# include +#elif defined( __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 ) +# include #elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) ) && !defined(__PATHSCALE__) # include +#elif defined( BOOST_SP_HAS_SYNC_INTRINSICS ) +# include + +#elif defined( __SNC__ ) +# include + #elif defined(__HP_aCC) && defined(__ia64) # include @@ -71,9 +72,6 @@ #elif defined( __GNUC__ ) && ( defined( __mips__ ) || defined( _mips ) ) && !defined(__PATHSCALE__) && !defined( __mips16 ) # include -#elif defined( BOOST_SP_HAS_SYNC ) -# include - #elif defined(__GNUC__) && ( defined( __sparcv9 ) || ( defined( __sparcv8 ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 402 ) ) ) # include @@ -91,6 +89,4 @@ #endif -#undef BOOST_SP_HAS_CLANG_C11_ATOMICS - #endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp index 4d1d416c1..560a524c0 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp @@ -15,10 +15,20 @@ // Lock-free algorithm by Alexander Terekhov // -#include +#include +#include #include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using HP aCC++/HP-UX/IA64 sp_counted_base") + +#endif + +BOOST_SP_OBSOLETE() + namespace boost { @@ -104,8 +114,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_aix.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_aix.hpp index 25e3b91a2..b0c9c3b99 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_aix.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_aix.hpp @@ -20,11 +20,18 @@ // formulation // -#include +#include #include #include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using AIX sp_counted_base") + +#endif + namespace boost { @@ -96,8 +103,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_clang.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_clang.hpp deleted file mode 100644 index 5704900ce..000000000 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_clang.hpp +++ /dev/null @@ -1,151 +0,0 @@ -#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CLANG_HPP_INCLUDED -#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CLANG_HPP_INCLUDED - -// MS compatible compilers support #pragma once - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -// detail/sp_counted_base_clang.hpp - __c11 clang intrinsics -// -// Copyright (c) 2007, 2013, 2015 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 - -#include -#include -#include - -namespace boost -{ - -namespace detail -{ - -typedef _Atomic( boost::int_least32_t ) atomic_int_least32_t; - -inline void atomic_increment( atomic_int_least32_t * pw ) -{ - __c11_atomic_fetch_add( pw, 1, __ATOMIC_RELAXED ); -} - -inline boost::int_least32_t atomic_decrement( atomic_int_least32_t * pw ) -{ - return __c11_atomic_fetch_sub( pw, 1, __ATOMIC_ACQ_REL ); -} - -inline boost::int_least32_t atomic_conditional_increment( atomic_int_least32_t * pw ) -{ - // long r = *pw; - // if( r != 0 ) ++*pw; - // return r; - - boost::int_least32_t r = __c11_atomic_load( pw, __ATOMIC_RELAXED ); - - for( ;; ) - { - if( r == 0 ) - { - return r; - } - - if( __c11_atomic_compare_exchange_weak( pw, &r, r + 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED ) ) - { - return r; - } - } -} - -#if defined(__clang__) -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wweak-vtables" -#endif - -class BOOST_SYMBOL_VISIBLE sp_counted_base -{ -private: - - sp_counted_base( sp_counted_base const & ); - sp_counted_base & operator= ( sp_counted_base const & ); - - atomic_int_least32_t use_count_; // #shared - atomic_int_least32_t weak_count_; // #weak + (#shared != 0) - -public: - - sp_counted_base() - { - __c11_atomic_init( &use_count_, 1 ); - __c11_atomic_init( &weak_count_, 1 ); - } - - virtual ~sp_counted_base() // nothrow - { - } - - // dispose() is called when use_count_ drops to zero, to release - // the resources managed by *this. - - virtual void dispose() = 0; // nothrow - - // destroy() is called when weak_count_ drops to zero. - - virtual void destroy() // nothrow - { - delete this; - } - - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_untyped_deleter() = 0; - - void add_ref_copy() - { - atomic_increment( &use_count_ ); - } - - bool add_ref_lock() // true on success - { - return atomic_conditional_increment( &use_count_ ) != 0; - } - - void release() // nothrow - { - if( atomic_decrement( &use_count_ ) == 1 ) - { - dispose(); - weak_release(); - } - } - - void weak_add_ref() // nothrow - { - atomic_increment( &weak_count_ ); - } - - void weak_release() // nothrow - { - if( atomic_decrement( &weak_count_ ) == 1 ) - { - destroy(); - } - } - - long use_count() const // nothrow - { - return __c11_atomic_load( const_cast< atomic_int_least32_t* >( &use_count_ ), __ATOMIC_ACQUIRE ); - } -}; - -#if defined(__clang__) -# pragma clang diagnostic pop -#endif - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CLANG_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp index cb161e5c2..b9b19b265 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp @@ -24,9 +24,17 @@ // formulation // -#include +#include +#include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using CodeWarrior/PowerPC sp_counted_base") + +#endif + namespace boost { @@ -54,7 +62,11 @@ inline long atomic_decrement( register long * pw ) asm { +#if defined(__PPCZen__) || defined(__PPCe500__) || defined(__PPCe500v2__) + msync +#else sync +#endif loop: @@ -124,8 +136,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp new file mode 100644 index 000000000..26f001c16 --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp @@ -0,0 +1,148 @@ +#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_ATOMIC_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_ATOMIC_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// detail/sp_counted_base_gcc_atomic.hpp - g++ 4.7+ __atomic intrinsics +// +// Copyright 2007, 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using __atomic sp_counted_base") + +#endif + +namespace boost +{ + +namespace detail +{ + +inline void atomic_increment( boost::uint_least32_t * pw ) +{ + __atomic_fetch_add( pw, 1, __ATOMIC_RELAXED ); +} + +inline boost::uint_least32_t atomic_decrement( boost::uint_least32_t * pw ) +{ + return __atomic_fetch_sub( pw, 1, __ATOMIC_ACQ_REL ); +} + +inline boost::uint_least32_t atomic_conditional_increment( boost::uint_least32_t * pw ) +{ + // long r = *pw; + // if( r != 0 ) ++*pw; + // return r; + + boost::uint_least32_t r = __atomic_load_n( pw, __ATOMIC_RELAXED ); + + for( ;; ) + { + if( r == 0 ) + { + return r; + } + + if( __atomic_compare_exchange_n( pw, &r, r + 1, true, __ATOMIC_RELAXED, __ATOMIC_RELAXED ) ) + { + return r; + } + } +} + +inline boost::uint_least32_t atomic_load( boost::uint_least32_t const * pw ) +{ + return __atomic_load_n( pw, __ATOMIC_ACQUIRE ); +} + +class BOOST_SYMBOL_VISIBLE sp_counted_base +{ +private: + + sp_counted_base( sp_counted_base const & ); + sp_counted_base & operator= ( sp_counted_base const & ); + + boost::uint_least32_t use_count_; // #shared + boost::uint_least32_t weak_count_; // #weak + (#shared != 0) + +public: + + sp_counted_base(): use_count_( 1 ), weak_count_( 1 ) + { + } + + virtual ~sp_counted_base() // nothrow + { + } + + // dispose() is called when use_count_ drops to zero, to release + // the resources managed by *this. + + virtual void dispose() = 0; // nothrow + + // destroy() is called when weak_count_ drops to zero. + + virtual void destroy() // nothrow + { + delete this; + } + + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_untyped_deleter() = 0; + + void add_ref_copy() + { + atomic_increment( &use_count_ ); + } + + bool add_ref_lock() // true on success + { + return atomic_conditional_increment( &use_count_ ) != 0; + } + + void release() // nothrow + { + if( atomic_decrement( &use_count_ ) == 1 ) + { + dispose(); + weak_release(); + } + } + + void weak_add_ref() // nothrow + { + atomic_increment( &weak_count_ ); + } + + void weak_release() // nothrow + { + if( atomic_decrement( &weak_count_ ) == 1 ) + { + destroy(); + } + } + + long use_count() const // nothrow + { + return static_cast( atomic_load( &use_count_ ) ); + } +}; + +} // namespace detail + +} // namespace boost + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp index 3f49e14fc..acc5a3c57 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp @@ -16,9 +16,19 @@ // Lock-free algorithm by Alexander Terekhov // -#include +#include +#include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using g++/IA64 sp_counted_base") + +#endif + +BOOST_SP_OBSOLETE() + namespace boost { @@ -111,8 +121,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp index 7587f1b43..f3c9c2f1e 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp @@ -20,9 +20,19 @@ // Lock-free algorithm by Alexander Terekhov // -#include +#include +#include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using g++/MIPS sp_counted_base") + +#endif + +BOOST_SP_OBSOLETE() + namespace boost { @@ -141,8 +151,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp index 0de7d4786..0ac945dec 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp @@ -24,9 +24,19 @@ // formulation // -#include +#include +#include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using g++/PowerPC sp_counted_base") + +#endif + +BOOST_SP_OBSOLETE() + namespace boost { @@ -135,8 +145,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp index e9f6ccbf8..3d8ff41db 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp @@ -19,10 +19,20 @@ // // Thanks to Michael van der Westhuizen -#include +#include +#include #include #include // int32_t +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using g++/Sparc sp_counted_base") + +#endif + +BOOST_SP_OBSOLETE() + namespace boost { @@ -120,8 +130,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp index 639bcc806..983c9da71 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp @@ -24,9 +24,19 @@ // formulation // -#include +#include +#include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using g++/x86 sp_counted_base") + +#endif + +BOOST_SP_OBSOLETE() + namespace boost { @@ -127,8 +137,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_nt.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_nt.hpp index 32ac06add..989677759 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_nt.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_nt.hpp @@ -18,8 +18,17 @@ // http://www.boost.org/LICENSE_1_0.txt) // -#include +#include +#include #include +#include + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using single-threaded, non-atomic sp_counted_base") + +#endif namespace boost { @@ -34,48 +43,48 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base sp_counted_base( sp_counted_base const & ); sp_counted_base & operator= ( sp_counted_base const & ); - long use_count_; // #shared - long weak_count_; // #weak + (#shared != 0) + boost::int_least32_t use_count_; // #shared + boost::int_least32_t weak_count_; // #weak + (#shared != 0) public: - sp_counted_base(): use_count_( 1 ), weak_count_( 1 ) + sp_counted_base() BOOST_SP_NOEXCEPT: use_count_( 1 ), weak_count_( 1 ) { } - virtual ~sp_counted_base() // nothrow + virtual ~sp_counted_base() /*BOOST_SP_NOEXCEPT*/ { } // dispose() is called when use_count_ drops to zero, to release // the resources managed by *this. - virtual void dispose() = 0; // nothrow + virtual void dispose() BOOST_SP_NOEXCEPT = 0; // nothrow // destroy() is called when weak_count_ drops to zero. - virtual void destroy() // nothrow + virtual void destroy() BOOST_SP_NOEXCEPT // nothrow { delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_untyped_deleter() = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) BOOST_SP_NOEXCEPT = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) BOOST_SP_NOEXCEPT = 0; + virtual void * get_untyped_deleter() BOOST_SP_NOEXCEPT = 0; - void add_ref_copy() + void add_ref_copy() BOOST_SP_NOEXCEPT { ++use_count_; } - bool add_ref_lock() // true on success + bool add_ref_lock() BOOST_SP_NOEXCEPT // true on success { if( use_count_ == 0 ) return false; ++use_count_; return true; } - void release() // nothrow + void release() BOOST_SP_NOEXCEPT { if( --use_count_ == 0 ) { @@ -84,12 +93,12 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base } } - void weak_add_ref() // nothrow + void weak_add_ref() BOOST_SP_NOEXCEPT { ++weak_count_; } - void weak_release() // nothrow + void weak_release() BOOST_SP_NOEXCEPT { if( --weak_count_ == 0 ) { @@ -97,7 +106,7 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base } } - long use_count() const // nothrow + long use_count() const BOOST_SP_NOEXCEPT { return use_count_; } diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_pt.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_pt.hpp index 88097b03c..d0d3c9f74 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_pt.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_pt.hpp @@ -18,11 +18,19 @@ // http://www.boost.org/LICENSE_1_0.txt) // -#include +#include #include #include +#include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using pthread_mutex sp_counted_base") + +#endif + namespace boost { @@ -36,8 +44,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base sp_counted_base( sp_counted_base const & ); sp_counted_base & operator= ( sp_counted_base const & ); - long use_count_; // #shared - long weak_count_; // #weak + (#shared != 0) + boost::int_least32_t use_count_; // #shared + boost::int_least32_t weak_count_; // #weak + (#shared != 0) mutable pthread_mutex_t m_; @@ -71,8 +79,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() @@ -93,7 +101,7 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base void release() // nothrow { BOOST_VERIFY( pthread_mutex_lock( &m_ ) == 0 ); - long new_use_count = --use_count_; + boost::int_least32_t new_use_count = --use_count_; BOOST_VERIFY( pthread_mutex_unlock( &m_ ) == 0 ); if( new_use_count == 0 ) @@ -113,7 +121,7 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base void weak_release() // nothrow { BOOST_VERIFY( pthread_mutex_lock( &m_ ) == 0 ); - long new_weak_count = --weak_count_; + boost::int_least32_t new_weak_count = --weak_count_; BOOST_VERIFY( pthread_mutex_unlock( &m_ ) == 0 ); if( new_weak_count == 0 ) @@ -125,7 +133,7 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base long use_count() const // nothrow { BOOST_VERIFY( pthread_mutex_lock( &m_ ) == 0 ); - long r = use_count_; + boost::int_least32_t r = use_count_; BOOST_VERIFY( pthread_mutex_unlock( &m_ ) == 0 ); return r; diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp index e9a54e3f0..a09d5240b 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp @@ -6,7 +6,7 @@ # pragma once #endif -// detail/sp_counted_base_gcc_sparc.hpp - g++ on Sparc V8+ +// detail/sp_counted_base_gcc_snc_ps3.hpp - PS3 Cell // // Copyright (c) 2006 Piotr Wyderski // Copyright (c) 2006 Tomas Puverle @@ -19,10 +19,20 @@ // // Thanks to Michael van der Westhuizen -#include +#include +#include #include #include // uint32_t +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using PS3 sp_counted_base") + +#endif + +BOOST_SP_OBSOLETE() + namespace boost { @@ -115,8 +125,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_spin.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_spin.hpp index aedfc3dd1..ecf0bed49 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_spin.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_spin.hpp @@ -18,10 +18,17 @@ // http://www.boost.org/LICENSE_1_0.txt) // -#include +#include #include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using spinlock-based sp_counted_base") + +#endif + namespace boost { @@ -84,8 +91,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp index 2ac9207da..ed6081f38 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp @@ -15,28 +15,36 @@ // See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt -#include +#include +#include #include #include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using std::atomic sp_counted_base") + +#endif + namespace boost { namespace detail { -inline void atomic_increment( std::atomic_int_least32_t * pw ) +inline void atomic_increment( std::atomic_int_least32_t * pw ) BOOST_SP_NOEXCEPT { pw->fetch_add( 1, std::memory_order_relaxed ); } -inline std::int_least32_t atomic_decrement( std::atomic_int_least32_t * pw ) +inline std::int_least32_t atomic_decrement( std::atomic_int_least32_t * pw ) BOOST_SP_NOEXCEPT { return pw->fetch_sub( 1, std::memory_order_acq_rel ); } -inline std::int_least32_t atomic_conditional_increment( std::atomic_int_least32_t * pw ) +inline std::int_least32_t atomic_conditional_increment( std::atomic_int_least32_t * pw ) BOOST_SP_NOEXCEPT { // long r = *pw; // if( r != 0 ) ++*pw; @@ -70,41 +78,41 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base public: - sp_counted_base(): use_count_( 1 ), weak_count_( 1 ) + sp_counted_base() BOOST_SP_NOEXCEPT: use_count_( 1 ), weak_count_( 1 ) { } - virtual ~sp_counted_base() // nothrow + virtual ~sp_counted_base() /*BOOST_SP_NOEXCEPT*/ { } // dispose() is called when use_count_ drops to zero, to release // the resources managed by *this. - virtual void dispose() = 0; // nothrow + virtual void dispose() BOOST_SP_NOEXCEPT = 0; // destroy() is called when weak_count_ drops to zero. - virtual void destroy() // nothrow + virtual void destroy() BOOST_SP_NOEXCEPT { delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_untyped_deleter() = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) BOOST_SP_NOEXCEPT = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) BOOST_SP_NOEXCEPT = 0; + virtual void * get_untyped_deleter() BOOST_SP_NOEXCEPT = 0; - void add_ref_copy() + void add_ref_copy() BOOST_SP_NOEXCEPT { atomic_increment( &use_count_ ); } - bool add_ref_lock() // true on success + bool add_ref_lock() BOOST_SP_NOEXCEPT // true on success { return atomic_conditional_increment( &use_count_ ) != 0; } - void release() // nothrow + void release() BOOST_SP_NOEXCEPT { if( atomic_decrement( &use_count_ ) == 1 ) { @@ -113,12 +121,12 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base } } - void weak_add_ref() // nothrow + void weak_add_ref() BOOST_SP_NOEXCEPT { atomic_increment( &weak_count_ ); } - void weak_release() // nothrow + void weak_release() BOOST_SP_NOEXCEPT { if( atomic_decrement( &weak_count_ ) == 1 ) { @@ -126,7 +134,7 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base } } - long use_count() const // nothrow + long use_count() const BOOST_SP_NOEXCEPT { return use_count_.load( std::memory_order_acquire ); } diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_sync.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_sync.hpp index 1bf57ed50..dddcbbf4c 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_sync.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_sync.hpp @@ -15,7 +15,7 @@ // See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt -#include +#include #include #include @@ -23,6 +23,13 @@ # include #endif +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using __sync sp_counted_base") + +#endif + namespace boost { @@ -109,8 +116,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp index b694a6dfc..69d726775 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp @@ -21,9 +21,19 @@ // formulation // -#include +#include +#include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using xlC/PowerPC sp_counted_base") + +#endif + +BOOST_SP_OBSOLETE() + extern "builtin" void __lwsync(void); extern "builtin" void __isync(void); extern "builtin" int __fetch_and_add(volatile int* addr, int val); @@ -104,8 +114,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_base_w32.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_base_w32.hpp index 5362141a5..68e80ad16 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_base_w32.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_base_w32.hpp @@ -25,10 +25,17 @@ // #include -#include -#include +#include +#include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using Win32 sp_counted_base") + +#endif + namespace boost { @@ -67,8 +74,8 @@ class BOOST_SYMBOL_VISIBLE sp_counted_base delete this; } - virtual void * get_deleter( sp_typeinfo const & ti ) = 0; - virtual void * get_local_deleter( sp_typeinfo const & ti ) = 0; + virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0; + virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() diff --git a/src/boost/boost/smart_ptr/detail/sp_counted_impl.hpp b/src/boost/boost/smart_ptr/detail/sp_counted_impl.hpp index 2f7816e3d..88e104a65 100644 --- a/src/boost/boost/smart_ptr/detail/sp_counted_impl.hpp +++ b/src/boost/boost/smart_ptr/detail/sp_counted_impl.hpp @@ -18,24 +18,21 @@ // http://www.boost.org/LICENSE_1_0.txt) // -#include - #if defined(BOOST_SP_USE_STD_ALLOCATOR) && defined(BOOST_SP_USE_QUICK_ALLOCATOR) # error BOOST_SP_USE_STD_ALLOCATOR and BOOST_SP_USE_QUICK_ALLOCATOR are incompatible. #endif -#include #include +#include +#include #include +#include #if defined(BOOST_SP_USE_QUICK_ALLOCATOR) #include #endif -#if defined(BOOST_SP_USE_STD_ALLOCATOR) -#include // std::allocator -#endif - +#include // std::allocator, std::allocator_traits #include // std::size_t namespace boost @@ -55,12 +52,12 @@ namespace detail template class local_sp_deleter; -template D * get_local_deleter( D * /*p*/ ) +template D * get_local_deleter( D * /*p*/ ) BOOST_SP_NOEXCEPT { return 0; } -template D * get_local_deleter( local_sp_deleter * p ); +template D * get_local_deleter( local_sp_deleter * p ) BOOST_SP_NOEXCEPT; // @@ -84,7 +81,7 @@ template class BOOST_SYMBOL_VISIBLE sp_counted_impl_p: public sp_counte #endif } - virtual void dispose() // nothrow + void dispose() BOOST_SP_NOEXCEPT BOOST_OVERRIDE { #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) boost::sp_scalar_destructor_hook( px_, sizeof(X), this ); @@ -92,17 +89,17 @@ template class BOOST_SYMBOL_VISIBLE sp_counted_impl_p: public sp_counte boost::checked_delete( px_ ); } - virtual void * get_deleter( sp_typeinfo const & ) + void * get_deleter( sp_typeinfo_ const & ) BOOST_SP_NOEXCEPT BOOST_OVERRIDE { return 0; } - virtual void * get_local_deleter( sp_typeinfo const & ) + void * get_local_deleter( sp_typeinfo_ const & ) BOOST_SP_NOEXCEPT BOOST_OVERRIDE { return 0; } - virtual void * get_untyped_deleter() + void * get_untyped_deleter() BOOST_SP_NOEXCEPT BOOST_OVERRIDE { return 0; } @@ -148,7 +145,7 @@ template class BOOST_SYMBOL_VISIBLE sp_counted_impl_pd: public private: P ptr; // copy constructor must not throw - D del; // copy constructor must not throw + D del; // copy/move constructor must not throw sp_counted_impl_pd( sp_counted_impl_pd const & ); sp_counted_impl_pd & operator= ( sp_counted_impl_pd const & ); @@ -159,30 +156,40 @@ template class BOOST_SYMBOL_VISIBLE sp_counted_impl_pd: public // pre: d(p) must not throw +#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) + + sp_counted_impl_pd( P p, D & d ): ptr( p ), del( static_cast< D&& >( d ) ) + { + } + +#else + sp_counted_impl_pd( P p, D & d ): ptr( p ), del( d ) { } +#endif + sp_counted_impl_pd( P p ): ptr( p ), del() { } - virtual void dispose() // nothrow + void dispose() BOOST_SP_NOEXCEPT BOOST_OVERRIDE { del( ptr ); } - virtual void * get_deleter( sp_typeinfo const & ti ) + void * get_deleter( sp_typeinfo_ const & ti ) BOOST_SP_NOEXCEPT BOOST_OVERRIDE { - return ti == BOOST_SP_TYPEID(D)? &reinterpret_cast( del ): 0; + return ti == BOOST_SP_TYPEID_(D)? &reinterpret_cast( del ): 0; } - virtual void * get_local_deleter( sp_typeinfo const & ti ) + void * get_local_deleter( sp_typeinfo_ const & ti ) BOOST_SP_NOEXCEPT BOOST_OVERRIDE { - return ti == BOOST_SP_TYPEID(D)? boost::detail::get_local_deleter( boost::addressof( del ) ): 0; + return ti == BOOST_SP_TYPEID_(D)? boost::detail::get_local_deleter( boost::addressof( del ) ): 0; } - virtual void * get_untyped_deleter() + void * get_untyped_deleter() BOOST_SP_NOEXCEPT BOOST_OVERRIDE { return &reinterpret_cast( del ); } @@ -221,7 +228,7 @@ template class BOOST_SYMBOL_VISIBLE sp_counted_impl_p private: P p_; // copy constructor must not throw - D d_; // copy constructor must not throw + D d_; // copy/move constructor must not throw A a_; // copy constructor must not throw sp_counted_impl_pda( sp_counted_impl_pda const & ); @@ -233,20 +240,30 @@ template class BOOST_SYMBOL_VISIBLE sp_counted_impl_p // pre: d( p ) must not throw +#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) + + sp_counted_impl_pda( P p, D & d, A a ): p_( p ), d_( static_cast< D&& >( d ) ), a_( a ) + { + } + +#else + sp_counted_impl_pda( P p, D & d, A a ): p_( p ), d_( d ), a_( a ) { } +#endif + sp_counted_impl_pda( P p, A a ): p_( p ), d_( a ), a_( a ) { } - virtual void dispose() // nothrow + void dispose() BOOST_SP_NOEXCEPT BOOST_OVERRIDE { d_( p_ ); } - virtual void destroy() // nothrow + void destroy() BOOST_SP_NOEXCEPT BOOST_OVERRIDE { #if !defined( BOOST_NO_CXX11_ALLOCATOR ) @@ -265,17 +282,17 @@ template class BOOST_SYMBOL_VISIBLE sp_counted_impl_p a2.deallocate( this, 1 ); } - virtual void * get_deleter( sp_typeinfo const & ti ) + void * get_deleter( sp_typeinfo_ const & ti ) BOOST_SP_NOEXCEPT BOOST_OVERRIDE { - return ti == BOOST_SP_TYPEID( D )? &reinterpret_cast( d_ ): 0; + return ti == BOOST_SP_TYPEID_( D )? &reinterpret_cast( d_ ): 0; } - virtual void * get_local_deleter( sp_typeinfo const & ti ) + void * get_local_deleter( sp_typeinfo_ const & ti ) BOOST_SP_NOEXCEPT BOOST_OVERRIDE { - return ti == BOOST_SP_TYPEID(D)? boost::detail::get_local_deleter( boost::addressof( d_ ) ): 0; + return ti == BOOST_SP_TYPEID_( D )? boost::detail::get_local_deleter( boost::addressof( d_ ) ): 0; } - virtual void * get_untyped_deleter() + void * get_untyped_deleter() BOOST_SP_NOEXCEPT BOOST_OVERRIDE { return &reinterpret_cast( d_ ); } diff --git a/src/boost/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp b/src/boost/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp new file mode 100644 index 000000000..1410a966a --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp @@ -0,0 +1,27 @@ +#ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_GCC_INTRINSICS_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_SP_HAS_GCC_INTRINSICS_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + + +// boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +// +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt +// +// Defines the BOOST_SP_HAS_GCC_INTRINSICS macro if the __atomic_* +// intrinsics are available. + + +#if defined( __ATOMIC_RELAXED ) && defined( __ATOMIC_ACQUIRE ) && defined( __ATOMIC_RELEASE ) && defined( __ATOMIC_ACQ_REL ) + +# define BOOST_SP_HAS_GCC_INTRINSICS + +#endif + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_GCC_INTRINSICS_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/sp_has_sync.hpp b/src/boost/boost/smart_ptr/detail/sp_has_sync.hpp deleted file mode 100644 index 882ba66d5..000000000 --- a/src/boost/boost/smart_ptr/detail/sp_has_sync.hpp +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED -#define BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED - -// MS compatible compilers support #pragma once - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -// -// boost/smart_ptr/detail/sp_has_sync.hpp -// -// Copyright (c) 2008, 2009 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) -// -// Defines the BOOST_SP_HAS_SYNC macro if the __sync_* intrinsics -// are available. -// - -#ifndef BOOST_SP_NO_SYNC - -#if !defined( __c2__ ) && defined( __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 ) - -# define BOOST_SP_HAS_SYNC - -#elif defined( __IBMCPP__ ) && ( __IBMCPP__ >= 1210 ) && !defined( __COMPILER_VER__ ) - -# define BOOST_SP_HAS_SYNC - -#elif !defined( __c2__ ) && defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) - -#define BOOST_SP_HAS_SYNC - -#if defined( __arm__ ) || defined( __armel__ ) -#undef BOOST_SP_HAS_SYNC -#endif - -#if defined( __hppa ) || defined( __hppa__ ) -#undef BOOST_SP_HAS_SYNC -#endif - -#if defined( __m68k__ ) -#undef BOOST_SP_HAS_SYNC -#endif - -#if defined( __sh__ ) -#undef BOOST_SP_HAS_SYNC -#endif - -#if defined( __sparc__ ) -#undef BOOST_SP_HAS_SYNC -#endif - -#if defined( __INTEL_COMPILER ) && !defined( __ia64__ ) && ( __INTEL_COMPILER < 1110 ) -#undef BOOST_SP_HAS_SYNC -#endif - -#if defined(__PATHSCALE__) && ((__PATHCC__ == 4) && (__PATHCC_MINOR__ < 9)) -#undef BOOST_SP_HAS_SYNC -#endif - -#endif - -#endif // #ifndef BOOST_SP_NO_SYNC - -#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp b/src/boost/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp new file mode 100644 index 000000000..aaa801b14 --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp @@ -0,0 +1,69 @@ +#ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_INTRINSICS_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_INTRINSICS_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +// +// Copyright (c) 2008, 2009 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) +// +// Defines the BOOST_SP_HAS_SYNC_INTRINSICS macro if the __sync_* intrinsics +// are available. +// + +#if !defined( BOOST_SP_NO_SYNC_INTRINSICS ) && !defined( BOOST_SP_NO_SYNC ) + +#if defined( __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 ) && !defined( __c2__ ) + +# define BOOST_SP_HAS_SYNC_INTRINSICS + +#elif defined( __IBMCPP__ ) && ( __IBMCPP__ >= 1210 ) && !defined( __COMPILER_VER__ ) + +# define BOOST_SP_HAS_SYNC_INTRINSICS + +#elif defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) && !defined( __c2__ ) + +#define BOOST_SP_HAS_SYNC_INTRINSICS + +#if defined( __arm__ ) || defined( __armel__ ) +#undef BOOST_SP_HAS_SYNC_INTRINSICS +#endif + +#if defined( __hppa ) || defined( __hppa__ ) +#undef BOOST_SP_HAS_SYNC_INTRINSICS +#endif + +#if defined( __m68k__ ) +#undef BOOST_SP_HAS_SYNC_INTRINSICS +#endif + +#if defined( __sh__ ) +#undef BOOST_SP_HAS_SYNC_INTRINSICS +#endif + +#if defined( __sparc__ ) +#undef BOOST_SP_HAS_SYNC_INTRINSICS +#endif + +#if defined( __INTEL_COMPILER ) && !defined( __ia64__ ) && ( __INTEL_COMPILER < 1110 ) +#undef BOOST_SP_HAS_SYNC_INTRINSICS +#endif + +#if defined(__PATHSCALE__) && ((__PATHCC__ == 4) && (__PATHCC_MINOR__ < 9)) +#undef BOOST_SP_HAS_SYNC_INTRINSICS +#endif + +#endif + +#endif // #if !defined( BOOST_SP_NO_SYNC_INTRINSICS ) && !defined( BOOST_SP_NO_SYNC ) + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_INTRINSICS_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/sp_obsolete.hpp b/src/boost/boost/smart_ptr/detail/sp_obsolete.hpp new file mode 100644 index 000000000..b0e115678 --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/sp_obsolete.hpp @@ -0,0 +1,32 @@ +#ifndef BOOST_SMART_PTR_DETAIL_SP_OBSOLETE_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_SP_OBSOLETE_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + + +// boost/smart_ptr/detail/sp_obsolete.hpp +// +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt +// +// Defines the BOOST_SP_OBSOLETE macro that emits a deprecation +// message. + +#include + +#if !defined( BOOST_SP_NO_OBSOLETE_MESSAGE ) + +#define BOOST_SP_OBSOLETE() BOOST_PRAGMA_MESSAGE("This platform-specific implementation is presumed obsolete and is slated for removal. If you want it retained, please open an issue in https://github.com/boostorg/smart_ptr.") + +#else + +#define BOOST_SP_OBSOLETE() + +#endif + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_OBSOLETE_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/sp_typeinfo_.hpp b/src/boost/boost/smart_ptr/detail/sp_typeinfo_.hpp new file mode 100644 index 000000000..b86023e1b --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/sp_typeinfo_.hpp @@ -0,0 +1,58 @@ +#ifndef BOOST_SMART_PTR_DETAIL_SP_TYPEINFO_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_SP_TYPEINFO_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// smart_ptr/detail/sp_typeinfo_.hpp +// +// Copyright 2007, 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) + +#include + +#if defined( BOOST_NO_TYPEID ) || defined( BOOST_NO_STD_TYPEINFO ) + +#include + +namespace boost +{ + +namespace detail +{ + +typedef boost::core::typeinfo sp_typeinfo_; + +} // namespace detail + +} // namespace boost + +#define BOOST_SP_TYPEID_(T) BOOST_CORE_TYPEID(T) + +#else // defined( BOOST_NO_TYPEID ) || defined( BOOST_NO_STD_TYPEINFO ) + +#include + +namespace boost +{ + +namespace detail +{ + +typedef std::type_info sp_typeinfo_; + +} // namespace detail + +} // namespace boost + +#define BOOST_SP_TYPEID_(T) typeid(T) + +#endif // defined( BOOST_NO_TYPEID ) || defined( BOOST_NO_STD_TYPEINFO ) + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_TYPEINFO_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/spinlock.hpp b/src/boost/boost/smart_ptr/detail/spinlock.hpp index df2d39721..d48471184 100644 --- a/src/boost/boost/smart_ptr/detail/spinlock.hpp +++ b/src/boost/boost/smart_ptr/detail/spinlock.hpp @@ -28,28 +28,26 @@ // #define BOOST_DETAIL_SPINLOCK_INIT // +#include +#include #include -#include #if defined( BOOST_SP_USE_STD_ATOMIC ) -# if !defined( __clang__ ) -# include -# else -// Clang (at least up to 3.4) can't compile spinlock_pool when -// using std::atomic, so substitute the __sync implementation instead. -# include -# endif +# include #elif defined( BOOST_SP_USE_PTHREADS ) # include +#elif defined( BOOST_SP_HAS_GCC_INTRINSICS ) +# include + #elif !defined( BOOST_NO_CXX11_HDR_ATOMIC ) # include #elif defined(__GNUC__) && defined( __arm__ ) && !defined( __thumb__ ) # include -#elif defined( BOOST_SP_HAS_SYNC ) +#elif defined( BOOST_SP_HAS_SYNC_INTRINSICS ) # include #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) diff --git a/src/boost/boost/smart_ptr/detail/spinlock_gcc_arm.hpp b/src/boost/boost/smart_ptr/detail/spinlock_gcc_arm.hpp index cd68af53d..93352b9f6 100644 --- a/src/boost/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +++ b/src/boost/boost/smart_ptr/detail/spinlock_gcc_arm.hpp @@ -11,6 +11,13 @@ #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using g++/ARM spinlock") + +#endif + #if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7S__) # define BOOST_SP_ARM_BARRIER "dmb" diff --git a/src/boost/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp b/src/boost/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp new file mode 100644 index 000000000..849e46f8e --- /dev/null +++ b/src/boost/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp @@ -0,0 +1,94 @@ +#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ATOMIC_HPP_INCLUDED +#define BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ATOMIC_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// Copyright 2008, 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include + +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using __atomic spinlock") + +#endif + +namespace boost +{ + +namespace detail +{ + +class spinlock +{ +public: + + // `bool` alignment is required for Apple PPC32 + // https://github.com/boostorg/smart_ptr/issues/105 + // https://github.com/PurpleI2P/i2pd/issues/1726 + // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107590 + + union + { + unsigned char v_; + bool align_; + }; + +public: + + bool try_lock() + { + return __atomic_test_and_set( &v_, __ATOMIC_ACQUIRE ) == 0; + } + + void lock() + { + for( unsigned k = 0; !try_lock(); ++k ) + { + boost::detail::yield( k ); + } + } + + void unlock() + { + __atomic_clear( &v_, __ATOMIC_RELEASE ); + } + +public: + + class scoped_lock + { + private: + + spinlock & sp_; + + scoped_lock( scoped_lock const & ); + scoped_lock & operator=( scoped_lock const & ); + + public: + + explicit scoped_lock( spinlock & sp ): sp_( sp ) + { + sp.lock(); + } + + ~scoped_lock() + { + sp_.unlock(); + } + }; +}; + +} // namespace detail +} // namespace boost + +#define BOOST_DETAIL_SPINLOCK_INIT {{0}} + +#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ATOMIC_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/detail/spinlock_nt.hpp b/src/boost/boost/smart_ptr/detail/spinlock_nt.hpp index 920d67e16..cb987d461 100644 --- a/src/boost/boost/smart_ptr/detail/spinlock_nt.hpp +++ b/src/boost/boost/smart_ptr/detail/spinlock_nt.hpp @@ -17,6 +17,13 @@ #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using single-threaded spinlock emulation") + +#endif + namespace boost { diff --git a/src/boost/boost/smart_ptr/detail/spinlock_pt.hpp b/src/boost/boost/smart_ptr/detail/spinlock_pt.hpp index f55e61f6b..d4072fc3e 100644 --- a/src/boost/boost/smart_ptr/detail/spinlock_pt.hpp +++ b/src/boost/boost/smart_ptr/detail/spinlock_pt.hpp @@ -17,6 +17,13 @@ #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using pthread_mutex spinlock emulation") + +#endif + namespace boost { diff --git a/src/boost/boost/smart_ptr/detail/spinlock_std_atomic.hpp b/src/boost/boost/smart_ptr/detail/spinlock_std_atomic.hpp index 6e46229c1..c1b237f5b 100644 --- a/src/boost/boost/smart_ptr/detail/spinlock_std_atomic.hpp +++ b/src/boost/boost/smart_ptr/detail/spinlock_std_atomic.hpp @@ -16,8 +16,16 @@ // #include +#include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using std::atomic spinlock") + +#endif + namespace boost { @@ -32,12 +40,12 @@ class spinlock public: - bool try_lock() + bool try_lock() BOOST_NOEXCEPT { return !v_.test_and_set( std::memory_order_acquire ); } - void lock() + void lock() BOOST_NOEXCEPT { for( unsigned k = 0; !try_lock(); ++k ) { @@ -45,7 +53,7 @@ class spinlock } } - void unlock() + void unlock() BOOST_NOEXCEPT { v_ .clear( std::memory_order_release ); } @@ -63,12 +71,12 @@ class spinlock public: - explicit scoped_lock( spinlock & sp ): sp_( sp ) + explicit scoped_lock( spinlock & sp ) BOOST_NOEXCEPT: sp_( sp ) { sp.lock(); } - ~scoped_lock() + ~scoped_lock() /*BOOST_NOEXCEPT*/ { sp_.unlock(); } diff --git a/src/boost/boost/smart_ptr/detail/spinlock_sync.hpp b/src/boost/boost/smart_ptr/detail/spinlock_sync.hpp index f948306a3..898dc3323 100644 --- a/src/boost/boost/smart_ptr/detail/spinlock_sync.hpp +++ b/src/boost/boost/smart_ptr/detail/spinlock_sync.hpp @@ -21,6 +21,13 @@ # include #endif +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using __sync spinlock") + +#endif + namespace boost { @@ -31,7 +38,7 @@ class spinlock { public: - int v_; + unsigned char v_; public: diff --git a/src/boost/boost/smart_ptr/detail/spinlock_w32.hpp b/src/boost/boost/smart_ptr/detail/spinlock_w32.hpp index 71243ab6f..a571333fb 100644 --- a/src/boost/boost/smart_ptr/detail/spinlock_w32.hpp +++ b/src/boost/boost/smart_ptr/detail/spinlock_w32.hpp @@ -18,6 +18,13 @@ #include #include +#if defined(BOOST_SP_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE("Using Win32 spinlock") + +#endif + // BOOST_COMPILER_FENCE #if defined(__INTEL_COMPILER) diff --git a/src/boost/boost/smart_ptr/detail/yield_k.hpp b/src/boost/boost/smart_ptr/detail/yield_k.hpp index 97e7baae3..721eb5457 100644 --- a/src/boost/boost/smart_ptr/detail/yield_k.hpp +++ b/src/boost/boost/smart_ptr/detail/yield_k.hpp @@ -7,51 +7,19 @@ # pragma once #endif +// boost/smart_ptr/detail/yield_k.hpp // -// yield_k.hpp +// Copyright 2008, 2020 Peter Dimov // -// Copyright (c) 2008 Peter Dimov -// Copyright (c) Microsoft Corporation 2014 +// inline void boost::detail::yield( unsigned k ); // -// void yield( unsigned k ); +// Typical use: +// for( unsigned k = 0; !try_lock(); ++k ) yield( k ); // -// Typical use: -// -// for( unsigned k = 0; !try_lock(); ++k ) yield( k ); -// -// 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 -// - -#include -#include - -#if BOOST_PLAT_WINDOWS_RUNTIME -#include -#endif - -// BOOST_SMT_PAUSE - -#if defined(_MSC_VER) && _MSC_VER >= 1310 && ( defined(_M_IX86) || defined(_M_X64) ) && !defined(__c2__) - -extern "C" void _mm_pause(); - -#define BOOST_SMT_PAUSE _mm_pause(); +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt -#elif defined(__GNUC__) && ( defined(__i386__) || defined(__x86_64__) ) - -#define BOOST_SMT_PAUSE __asm__ __volatile__( "rep; nop" : : : "memory" ); - -#endif - -// - -#if defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ ) - -#if defined( BOOST_USE_WINDOWS_H ) -# include -#endif +#include namespace boost { @@ -59,102 +27,18 @@ namespace boost namespace detail { -#if !defined( BOOST_USE_WINDOWS_H ) && !BOOST_PLAT_WINDOWS_RUNTIME - -#if defined(__clang__) && defined(__x86_64__) -// clang x64 warns that __stdcall is ignored -# define BOOST_SP_STDCALL -#else -# define BOOST_SP_STDCALL __stdcall -#endif - -#if defined(__LP64__) // Cygwin 64 - extern "C" __declspec(dllimport) void BOOST_SP_STDCALL Sleep( unsigned int ms ); -#else - extern "C" __declspec(dllimport) void BOOST_SP_STDCALL Sleep( unsigned long ms ); -#endif - -#undef BOOST_SP_STDCALL - -#endif // !defined( BOOST_USE_WINDOWS_H ) && !BOOST_PLAT_WINDOWS_RUNTIME - inline void yield( unsigned k ) { - if( k < 4 ) - { - } -#if defined( BOOST_SMT_PAUSE ) - else if( k < 16 ) - { - BOOST_SMT_PAUSE - } -#endif -#if !BOOST_PLAT_WINDOWS_RUNTIME - else if( k < 32 ) - { - Sleep( 0 ); - } - else - { - Sleep( 1 ); - } -#else - else - { - // Sleep isn't supported on the Windows Runtime. - std::this_thread::yield(); - } -#endif -} - -} // namespace detail - -} // namespace boost - -#elif defined( BOOST_HAS_PTHREADS ) - -#ifndef _AIX -#include -#else - // AIX's sched.h defines ::var which sometimes conflicts with Lambda's var - extern "C" int sched_yield(void); -#endif - -#include - -namespace boost -{ + // Experiments on Windows and Fedora 32 show that a single pause, + // followed by an immediate sp_thread_sleep(), is best. -namespace detail -{ - -inline void yield( unsigned k ) -{ - if( k < 4 ) - { - } -#if defined( BOOST_SMT_PAUSE ) - else if( k < 16 ) - { - BOOST_SMT_PAUSE - } -#endif - else if( k < 32 || k & 1 ) + if( k & 1 ) { - sched_yield(); + boost::core::sp_thread_sleep(); } else { - // g++ -Wextra warns on {} or {0} - struct timespec rqtp = { 0, 0 }; - - // POSIX says that timespec has tv_sec and tv_nsec - // But it doesn't guarantee order or placement - - rqtp.tv_sec = 0; - rqtp.tv_nsec = 1000; - - nanosleep( &rqtp, 0 ); + boost::core::sp_thread_pause(); } } @@ -162,22 +46,4 @@ inline void yield( unsigned k ) } // namespace boost -#else - -namespace boost -{ - -namespace detail -{ - -inline void yield( unsigned ) -{ -} - -} // namespace detail - -} // namespace boost - -#endif - #endif // #ifndef BOOST_SMART_PTR_DETAIL_YIELD_K_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/intrusive_ptr.hpp b/src/boost/boost/smart_ptr/intrusive_ptr.hpp new file mode 100644 index 000000000..c41d47ec0 --- /dev/null +++ b/src/boost/boost/smart_ptr/intrusive_ptr.hpp @@ -0,0 +1,409 @@ +#ifndef BOOST_SMART_PTR_INTRUSIVE_PTR_HPP_INCLUDED +#define BOOST_SMART_PTR_INTRUSIVE_PTR_HPP_INCLUDED + +// +// intrusive_ptr.hpp +// +// Copyright (c) 2001, 2002 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) +// +// See http://www.boost.org/libs/smart_ptr/ for documentation. +// + +#include + +#include + +#include +#include +#include +#include +#include + +#include // for std::less + +#if !defined(BOOST_NO_IOSTREAM) +#if !defined(BOOST_NO_IOSFWD) +#include // for std::basic_ostream +#else +#include +#endif +#endif + + +namespace boost +{ + +// +// intrusive_ptr +// +// A smart pointer that uses intrusive reference counting. +// +// Relies on unqualified calls to +// +// void intrusive_ptr_add_ref(T * p); +// void intrusive_ptr_release(T * p); +// +// (p != 0) +// +// The object is responsible for destroying itself. +// + +template class intrusive_ptr +{ +private: + + typedef intrusive_ptr this_type; + +public: + + typedef T element_type; + + BOOST_CONSTEXPR intrusive_ptr() BOOST_SP_NOEXCEPT : px( 0 ) + { + } + + intrusive_ptr( T * p, bool add_ref = true ): px( p ) + { + if( px != 0 && add_ref ) intrusive_ptr_add_ref( px ); + } + +#if !defined(BOOST_NO_MEMBER_TEMPLATES) || defined(BOOST_MSVC6_MEMBER_TEMPLATES) + + template +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) + + intrusive_ptr( intrusive_ptr const & rhs, typename boost::detail::sp_enable_if_convertible::type = boost::detail::sp_empty() ) + +#else + + intrusive_ptr( intrusive_ptr const & rhs ) + +#endif + : px( rhs.get() ) + { + if( px != 0 ) intrusive_ptr_add_ref( px ); + } + +#endif + + intrusive_ptr(intrusive_ptr const & rhs): px( rhs.px ) + { + if( px != 0 ) intrusive_ptr_add_ref( px ); + } + + ~intrusive_ptr() + { + if( px != 0 ) intrusive_ptr_release( px ); + } + +#if !defined(BOOST_NO_MEMBER_TEMPLATES) || defined(BOOST_MSVC6_MEMBER_TEMPLATES) + + template intrusive_ptr & operator=(intrusive_ptr const & rhs) + { + this_type(rhs).swap(*this); + return *this; + } + +#endif + +// Move support + +#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) + + intrusive_ptr(intrusive_ptr && rhs) BOOST_SP_NOEXCEPT : px( rhs.px ) + { + rhs.px = 0; + } + + intrusive_ptr & operator=(intrusive_ptr && rhs) BOOST_SP_NOEXCEPT + { + this_type( static_cast< intrusive_ptr && >( rhs ) ).swap(*this); + return *this; + } + + template friend class intrusive_ptr; + + template +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) + + intrusive_ptr(intrusive_ptr && rhs, typename boost::detail::sp_enable_if_convertible::type = boost::detail::sp_empty()) + +#else + + intrusive_ptr(intrusive_ptr && rhs) + +#endif + : px( rhs.px ) + { + rhs.px = 0; + } + + template + intrusive_ptr & operator=(intrusive_ptr && rhs) BOOST_SP_NOEXCEPT + { + this_type( static_cast< intrusive_ptr && >( rhs ) ).swap(*this); + return *this; + } + +#endif + + intrusive_ptr & operator=(intrusive_ptr const & rhs) + { + this_type(rhs).swap(*this); + return *this; + } + + intrusive_ptr & operator=(T * rhs) + { + this_type(rhs).swap(*this); + return *this; + } + + void reset() + { + this_type().swap( *this ); + } + + void reset( T * rhs ) + { + this_type( rhs ).swap( *this ); + } + + void reset( T * rhs, bool add_ref ) + { + this_type( rhs, add_ref ).swap( *this ); + } + + T * get() const BOOST_SP_NOEXCEPT + { + return px; + } + + T * detach() BOOST_SP_NOEXCEPT + { + T * ret = px; + px = 0; + return ret; + } + + T & operator*() const BOOST_SP_NOEXCEPT_WITH_ASSERT + { + BOOST_ASSERT( px != 0 ); + return *px; + } + + T * operator->() const BOOST_SP_NOEXCEPT_WITH_ASSERT + { + BOOST_ASSERT( px != 0 ); + return px; + } + +// implicit conversion to "bool" +#include + + void swap(intrusive_ptr & rhs) BOOST_SP_NOEXCEPT + { + T * tmp = px; + px = rhs.px; + rhs.px = tmp; + } + +private: + + T * px; +}; + +template inline bool operator==(intrusive_ptr const & a, intrusive_ptr const & b) BOOST_SP_NOEXCEPT +{ + return a.get() == b.get(); +} + +template inline bool operator!=(intrusive_ptr const & a, intrusive_ptr const & b) BOOST_SP_NOEXCEPT +{ + return a.get() != b.get(); +} + +template inline bool operator==(intrusive_ptr const & a, U * b) BOOST_SP_NOEXCEPT +{ + return a.get() == b; +} + +template inline bool operator!=(intrusive_ptr const & a, U * b) BOOST_SP_NOEXCEPT +{ + return a.get() != b; +} + +template inline bool operator==(T * a, intrusive_ptr const & b) BOOST_SP_NOEXCEPT +{ + return a == b.get(); +} + +template inline bool operator!=(T * a, intrusive_ptr const & b) BOOST_SP_NOEXCEPT +{ + return a != b.get(); +} + +#if defined(__GNUC__) && __GNUC__ == 2 && __GNUC_MINOR__ <= 96 + +// Resolve the ambiguity between our op!= and the one in rel_ops + +template inline bool operator!=(intrusive_ptr const & a, intrusive_ptr const & b) BOOST_SP_NOEXCEPT +{ + return a.get() != b.get(); +} + +#endif + +#if !defined( BOOST_NO_CXX11_NULLPTR ) + +template inline bool operator==( intrusive_ptr const & p, boost::detail::sp_nullptr_t ) BOOST_SP_NOEXCEPT +{ + return p.get() == 0; +} + +template inline bool operator==( boost::detail::sp_nullptr_t, intrusive_ptr const & p ) BOOST_SP_NOEXCEPT +{ + return p.get() == 0; +} + +template inline bool operator!=( intrusive_ptr const & p, boost::detail::sp_nullptr_t ) BOOST_SP_NOEXCEPT +{ + return p.get() != 0; +} + +template inline bool operator!=( boost::detail::sp_nullptr_t, intrusive_ptr const & p ) BOOST_SP_NOEXCEPT +{ + return p.get() != 0; +} + +#endif + +template inline bool operator<(intrusive_ptr const & a, intrusive_ptr const & b) BOOST_SP_NOEXCEPT +{ + return std::less()(a.get(), b.get()); +} + +template void swap(intrusive_ptr & lhs, intrusive_ptr & rhs) BOOST_SP_NOEXCEPT +{ + lhs.swap(rhs); +} + +// mem_fn support + +template T * get_pointer(intrusive_ptr const & p) BOOST_SP_NOEXCEPT +{ + return p.get(); +} + +// pointer casts + +template intrusive_ptr static_pointer_cast(intrusive_ptr const & p) +{ + return static_cast(p.get()); +} + +template intrusive_ptr const_pointer_cast(intrusive_ptr const & p) +{ + return const_cast(p.get()); +} + +template intrusive_ptr dynamic_pointer_cast(intrusive_ptr const & p) +{ + return dynamic_cast(p.get()); +} + +#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) + +template intrusive_ptr static_pointer_cast( intrusive_ptr && p ) BOOST_SP_NOEXCEPT +{ + return intrusive_ptr( static_cast( p.detach() ), false ); +} + +template intrusive_ptr const_pointer_cast( intrusive_ptr && p ) BOOST_SP_NOEXCEPT +{ + return intrusive_ptr( const_cast( p.detach() ), false ); +} + +template intrusive_ptr dynamic_pointer_cast( intrusive_ptr && p ) BOOST_SP_NOEXCEPT +{ + T * p2 = dynamic_cast( p.get() ); + + intrusive_ptr r( p2, false ); + + if( p2 ) p.detach(); + + return r; +} + +#endif // defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) + +// operator<< + +#if !defined(BOOST_NO_IOSTREAM) + +#if defined(BOOST_NO_TEMPLATED_IOSTREAMS) || ( defined(__GNUC__) && (__GNUC__ < 3) ) + +template std::ostream & operator<< (std::ostream & os, intrusive_ptr const & p) +{ + os << p.get(); + return os; +} + +#else + +// in STLport's no-iostreams mode no iostream symbols can be used +#ifndef _STLP_NO_IOSTREAMS + +# if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, < 1300 && __SGI_STL_PORT) +// MSVC6 has problems finding std::basic_ostream through the using declaration in namespace _STL +using std::basic_ostream; +template basic_ostream & operator<< (basic_ostream & os, intrusive_ptr const & p) +# else +template std::basic_ostream & operator<< (std::basic_ostream & os, intrusive_ptr const & p) +# endif +{ + os << p.get(); + return os; +} + +#endif // _STLP_NO_IOSTREAMS + +#endif // __GNUC__ < 3 + +#endif // !defined(BOOST_NO_IOSTREAM) + +// hash_value + +template< class T > struct hash; + +template< class T > std::size_t hash_value( boost::intrusive_ptr const & p ) BOOST_SP_NOEXCEPT +{ + return boost::hash< T* >()( p.get() ); +} + +} // namespace boost + +// std::hash + +#if !defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) + +namespace std +{ + +template struct hash< ::boost::intrusive_ptr > +{ + std::size_t operator()( ::boost::intrusive_ptr const & p ) const BOOST_SP_NOEXCEPT + { + return std::hash< T* >()( p.get() ); + } +}; + +} // namespace std + +#endif // #if !defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) + +#endif // #ifndef BOOST_SMART_PTR_INTRUSIVE_PTR_HPP_INCLUDED diff --git a/src/boost/boost/smart_ptr/intrusive_ref_counter.hpp b/src/boost/boost/smart_ptr/intrusive_ref_counter.hpp new file mode 100644 index 000000000..d3beb4574 --- /dev/null +++ b/src/boost/boost/smart_ptr/intrusive_ref_counter.hpp @@ -0,0 +1,188 @@ +/* + * Copyright Andrey Semashev 2007 - 2013. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +/*! + * \file intrusive_ref_counter.hpp + * \author Andrey Semashev + * \date 12.03.2009 + * + * This header contains a reference counter class for \c intrusive_ptr. + */ + +#ifndef BOOST_SMART_PTR_INTRUSIVE_REF_COUNTER_HPP_INCLUDED_ +#define BOOST_SMART_PTR_INTRUSIVE_REF_COUNTER_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(_MSC_VER) +#pragma warning(push) +// This is a bogus MSVC warning, which is flagged by friend declarations of intrusive_ptr_add_ref and intrusive_ptr_release in intrusive_ref_counter: +// 'name' : the inline specifier cannot be used when a friend declaration refers to a specialization of a function template +// Note that there is no inline specifier in the declarations. +#pragma warning(disable: 4396) +#endif + +namespace boost { + +namespace sp_adl_block { + +/*! + * \brief Thread unsafe reference counter policy for \c intrusive_ref_counter + * + * The policy instructs the \c intrusive_ref_counter base class to implement + * a reference counter suitable for single threaded use only. Pointers to the same + * object with this kind of reference counter must not be used by different threads. + */ +struct thread_unsafe_counter +{ + typedef unsigned int type; + + static unsigned int load(unsigned int const& counter) BOOST_SP_NOEXCEPT + { + return counter; + } + + static void increment(unsigned int& counter) BOOST_SP_NOEXCEPT + { + ++counter; + } + + static unsigned int decrement(unsigned int& counter) BOOST_SP_NOEXCEPT + { + return --counter; + } +}; + +/*! + * \brief Thread safe reference counter policy for \c intrusive_ref_counter + * + * The policy instructs the \c intrusive_ref_counter base class to implement + * a thread-safe reference counter, if the target platform supports multithreading. + */ +struct thread_safe_counter +{ + typedef boost::detail::atomic_count type; + + static unsigned int load(boost::detail::atomic_count const& counter) BOOST_SP_NOEXCEPT + { + return static_cast< unsigned int >(static_cast< long >(counter)); + } + + static void increment(boost::detail::atomic_count& counter) BOOST_SP_NOEXCEPT + { + ++counter; + } + + static unsigned int decrement(boost::detail::atomic_count& counter) BOOST_SP_NOEXCEPT + { + return static_cast< unsigned int >(--counter); + } +}; + +template< typename DerivedT, typename CounterPolicyT = thread_safe_counter > +class intrusive_ref_counter; + +template< typename DerivedT, typename CounterPolicyT > +void intrusive_ptr_add_ref(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) BOOST_SP_NOEXCEPT; +template< typename DerivedT, typename CounterPolicyT > +void intrusive_ptr_release(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) BOOST_SP_NOEXCEPT; + +/*! + * \brief A reference counter base class + * + * This base class can be used with user-defined classes to add support + * for \c intrusive_ptr. The class contains a reference counter defined by the \c CounterPolicyT. + * Upon releasing the last \c intrusive_ptr referencing the object + * derived from the \c intrusive_ref_counter class, operator \c delete + * is automatically called on the pointer to the object. + * + * The other template parameter, \c DerivedT, is the user's class that derives from \c intrusive_ref_counter. + */ +template< typename DerivedT, typename CounterPolicyT > +class intrusive_ref_counter +{ +private: + //! Reference counter type + typedef typename CounterPolicyT::type counter_type; + //! Reference counter + mutable counter_type m_ref_counter; + +public: + /*! + * Default constructor + * + * \post use_count() == 0 + */ + intrusive_ref_counter() BOOST_SP_NOEXCEPT : m_ref_counter(0) + { + } + + /*! + * Copy constructor + * + * \post use_count() == 0 + */ + intrusive_ref_counter(intrusive_ref_counter const&) BOOST_SP_NOEXCEPT : m_ref_counter(0) + { + } + + /*! + * Assignment + * + * \post The reference counter is not modified after assignment + */ + intrusive_ref_counter& operator= (intrusive_ref_counter const&) BOOST_SP_NOEXCEPT { return *this; } + + /*! + * \return The reference counter + */ + unsigned int use_count() const BOOST_SP_NOEXCEPT + { + return CounterPolicyT::load(m_ref_counter); + } + +protected: + /*! + * Destructor + */ + BOOST_DEFAULTED_FUNCTION(~intrusive_ref_counter(), {}) + + friend void intrusive_ptr_add_ref< DerivedT, CounterPolicyT >(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) BOOST_SP_NOEXCEPT; + friend void intrusive_ptr_release< DerivedT, CounterPolicyT >(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) BOOST_SP_NOEXCEPT; +}; + +template< typename DerivedT, typename CounterPolicyT > +inline void intrusive_ptr_add_ref(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) BOOST_SP_NOEXCEPT +{ + CounterPolicyT::increment(p->m_ref_counter); +} + +template< typename DerivedT, typename CounterPolicyT > +inline void intrusive_ptr_release(const intrusive_ref_counter< DerivedT, CounterPolicyT >* p) BOOST_SP_NOEXCEPT +{ + if (CounterPolicyT::decrement(p->m_ref_counter) == 0) + delete static_cast< const DerivedT* >(p); +} + +} // namespace sp_adl_block + +using sp_adl_block::intrusive_ref_counter; +using sp_adl_block::thread_unsafe_counter; +using sp_adl_block::thread_safe_counter; + +} // namespace boost + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif + +#endif // BOOST_SMART_PTR_INTRUSIVE_REF_COUNTER_HPP_INCLUDED_ diff --git a/src/boost/boost/smart_ptr/scoped_array.hpp b/src/boost/boost/smart_ptr/scoped_array.hpp index b3d300707..5c2a3606f 100644 --- a/src/boost/boost/smart_ptr/scoped_array.hpp +++ b/src/boost/boost/smart_ptr/scoped_array.hpp @@ -10,13 +10,14 @@ // // See http://www.boost.org/libs/smart_ptr/ for documentation. +#include #include #include -#include +#include #include #include -#include +#include #include // for std::ptrdiff_t diff --git a/src/boost/boost/smart_ptr/scoped_ptr.hpp b/src/boost/boost/smart_ptr/scoped_ptr.hpp index c80dc6252..a38368d65 100644 --- a/src/boost/boost/smart_ptr/scoped_ptr.hpp +++ b/src/boost/boost/smart_ptr/scoped_ptr.hpp @@ -10,13 +10,14 @@ // // See http://www.boost.org/libs/smart_ptr/ for documentation. +#include #include #include -#include +#include #include #include #include -#include +#include #ifndef BOOST_NO_AUTO_PTR # include // for std::auto_ptr diff --git a/src/boost/boost/smart_ptr/shared_ptr.hpp b/src/boost/boost/smart_ptr/shared_ptr.hpp index 08cb08ce5..5c69af880 100644 --- a/src/boost/boost/smart_ptr/shared_ptr.hpp +++ b/src/boost/boost/smart_ptr/shared_ptr.hpp @@ -14,23 +14,17 @@ // See http://www.boost.org/libs/smart_ptr/ for documentation. // -#include // for broken compiler workarounds - -// In order to avoid circular dependencies with Boost.TR1 -// we make sure that our include of doesn't try to -// pull in the TR1 headers: that's why we use this header -// rather than including directly: -#include // std::auto_ptr - -#include -#include -#include +#include #include -#include #include #include #include #include +#include +#include +#include +#include +#include #if !defined(BOOST_SP_NO_ATOMIC_ACCESS) #include @@ -40,6 +34,7 @@ #include // for std::less #include // for std::bad_cast #include // for std::size_t +#include // for std::auto_ptr #if !defined(BOOST_NO_IOSTREAM) #if !defined(BOOST_NO_IOSFWD) @@ -86,7 +81,7 @@ template< class T > struct sp_element< T[] > typedef T type; }; -#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 ) +#if !defined( BOOST_BORLANDC ) || !BOOST_WORKAROUND( BOOST_BORLANDC, < 0x600 ) template< class T, std::size_t N > struct sp_element< T[N] > { @@ -135,7 +130,7 @@ template< class T > struct sp_dereference< T[] > typedef void type; }; -#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 ) +#if !defined( BOOST_BORLANDC ) || !BOOST_WORKAROUND( BOOST_BORLANDC, < 0x600 ) template< class T, std::size_t N > struct sp_dereference< T[N] > { @@ -160,7 +155,7 @@ template< class T > struct sp_member_access< T[] > typedef void type; }; -#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 ) +#if !defined( BOOST_BORLANDC ) || !BOOST_WORKAROUND( BOOST_BORLANDC, < 0x600 ) template< class T, std::size_t N > struct sp_member_access< T[N] > { @@ -185,7 +180,7 @@ template< class T > struct sp_array_access< T[] > typedef T & type; }; -#if !defined( __BORLANDC__ ) || !BOOST_WORKAROUND( __BORLANDC__, < 0x600 ) +#if !defined( BOOST_BORLANDC ) || !BOOST_WORKAROUND( BOOST_BORLANDC, < 0x600 ) template< class T, std::size_t N > struct sp_array_access< T[N] > { @@ -380,39 +375,81 @@ template class shared_ptr } // - // Requirements: D's copy constructor must not throw + // Requirements: D's copy/move constructors must not throw // // shared_ptr will release p by calling d(p) // +#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) + + template shared_ptr( Y * p, D d ): px( p ), pn( p, static_cast< D&& >( d ) ) + { + boost::detail::sp_deleter_construct( this, p ); + } + +#else + template shared_ptr( Y * p, D d ): px( p ), pn( p, d ) { boost::detail::sp_deleter_construct( this, p ); } +#endif + #if !defined( BOOST_NO_CXX11_NULLPTR ) +#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) + + template shared_ptr( boost::detail::sp_nullptr_t p, D d ): px( p ), pn( p, static_cast< D&& >( d ) ) + { + } + +#else + template shared_ptr( boost::detail::sp_nullptr_t p, D d ): px( p ), pn( p, d ) { } +#endif + #endif // As above, but with allocator. A's copy constructor shall not throw. +#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) + + template shared_ptr( Y * p, D d, A a ): px( p ), pn( p, static_cast< D&& >( d ), a ) + { + boost::detail::sp_deleter_construct( this, p ); + } + +#else + template shared_ptr( Y * p, D d, A a ): px( p ), pn( p, d, a ) { boost::detail::sp_deleter_construct( this, p ); } +#endif + #if !defined( BOOST_NO_CXX11_NULLPTR ) +#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) + + template shared_ptr( boost::detail::sp_nullptr_t p, D d, A a ): px( p ), pn( p, static_cast< D&& >( d ), a ) + { + } + +#else + template shared_ptr( boost::detail::sp_nullptr_t p, D d, A a ): px( p ), pn( p, d, a ) { } #endif +#endif + // generated copy constructor, destructor are fine... #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) @@ -631,9 +668,8 @@ template class shared_ptr #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) - shared_ptr( shared_ptr && r ) BOOST_SP_NOEXCEPT : px( r.px ), pn() + shared_ptr( shared_ptr && r ) BOOST_SP_NOEXCEPT : px( r.px ), pn( static_cast< boost::detail::shared_count && >( r.pn ) ) { - pn.swap( r.pn ); r.px = 0; } @@ -647,11 +683,9 @@ template class shared_ptr shared_ptr( shared_ptr && r ) #endif - BOOST_SP_NOEXCEPT : px( r.px ), pn() + BOOST_SP_NOEXCEPT : px( r.px ), pn( static_cast< boost::detail::shared_count && >( r.pn ) ) { boost::detail::sp_assert_convertible< Y, T >(); - - pn.swap( r.pn ); r.px = 0; } @@ -699,6 +733,20 @@ template class shared_ptr this_type( p ).swap( *this ); } +#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) + + template void reset( Y * p, D d ) + { + this_type( p, static_cast< D&& >( d ) ).swap( *this ); + } + + template void reset( Y * p, D d, A a ) + { + this_type( p, static_cast< D&& >( d ), a ).swap( *this ); + } + +#else + template void reset( Y * p, D d ) { this_type( p, d ).swap( *this ); @@ -709,6 +757,8 @@ template class shared_ptr this_type( p, d, a ).swap( *this ); } +#endif + template void reset( shared_ptr const & r, element_type * p ) BOOST_SP_NOEXCEPT { this_type( r, p ).swap( *this ); @@ -777,12 +827,27 @@ template class shared_ptr return pn < rhs.pn; } - void * _internal_get_deleter( boost::detail::sp_typeinfo const & ti ) const BOOST_SP_NOEXCEPT + template bool owner_equals( shared_ptr const & rhs ) const BOOST_SP_NOEXCEPT + { + return pn == rhs.pn; + } + + template bool owner_equals( weak_ptr const & rhs ) const BOOST_SP_NOEXCEPT + { + return pn == rhs.pn; + } + + std::size_t owner_hash_value() const BOOST_SP_NOEXCEPT + { + return pn.hash_value(); + } + + void * _internal_get_deleter( boost::detail::sp_typeinfo_ const & ti ) const BOOST_SP_NOEXCEPT { return pn.get_deleter( ti ); } - void * _internal_get_local_deleter( boost::detail::sp_typeinfo const & ti ) const BOOST_SP_NOEXCEPT + void * _internal_get_local_deleter( boost::detail::sp_typeinfo_ const & ti ) const BOOST_SP_NOEXCEPT { return pn.get_local_deleter( ti ); } @@ -797,7 +862,7 @@ template class shared_ptr return px == r.px && pn == r.pn; } - boost::detail::shared_count _internal_count() const BOOST_NOEXCEPT + boost::detail::shared_count _internal_count() const BOOST_SP_NOEXCEPT { return pn; } @@ -1008,7 +1073,7 @@ namespace detail template D * basic_get_deleter( shared_ptr const & p ) BOOST_SP_NOEXCEPT { - return static_cast( p._internal_get_deleter(BOOST_SP_TYPEID(D)) ); + return static_cast( p._internal_get_deleter(BOOST_SP_TYPEID_(D)) ); } template D * basic_get_local_deleter( D *, shared_ptr const & p ) BOOST_SP_NOEXCEPT; @@ -1022,7 +1087,7 @@ class esft2_deleter_wrapper public: - esft2_deleter_wrapper() + esft2_deleter_wrapper() BOOST_SP_NOEXCEPT { } @@ -1155,6 +1220,25 @@ template< class T > std::size_t hash_value( boost::shared_ptr const & p ) BOO } // namespace boost +// std::hash + +#if !defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) + +namespace std +{ + +template struct hash< ::boost::shared_ptr > +{ + std::size_t operator()( ::boost::shared_ptr const & p ) const BOOST_SP_NOEXCEPT + { + return std::hash< typename ::boost::shared_ptr::element_type* >()( p.get() ); + } +}; + +} // namespace std + +#endif // #if !defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) + #include namespace boost @@ -1165,16 +1249,23 @@ namespace detail template D * basic_get_local_deleter( D *, shared_ptr const & p ) BOOST_SP_NOEXCEPT { - return static_cast( p._internal_get_local_deleter( BOOST_SP_TYPEID(local_sp_deleter) ) ); + return static_cast( p._internal_get_local_deleter( BOOST_SP_TYPEID_(local_sp_deleter) ) ); } template D const * basic_get_local_deleter( D const *, shared_ptr const & p ) BOOST_SP_NOEXCEPT { - return static_cast( p._internal_get_local_deleter( BOOST_SP_TYPEID(local_sp_deleter) ) ); + return static_cast( p._internal_get_local_deleter( BOOST_SP_TYPEID_(local_sp_deleter) ) ); } } // namespace detail +#if defined(__cpp_deduction_guides) + +template shared_ptr( weak_ptr ) -> shared_ptr; +template shared_ptr( std::unique_ptr ) -> shared_ptr; + +#endif + } // namespace boost #if defined( BOOST_SP_DISABLE_DEPRECATED ) diff --git a/src/boost/boost/static_assert.hpp b/src/boost/boost/static_assert.hpp index 158b1db28..f8e59cfb4 100644 --- a/src/boost/boost/static_assert.hpp +++ b/src/boost/boost/static_assert.hpp @@ -16,6 +16,7 @@ #include #include +#include //for std::size_t #if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) // @@ -36,7 +37,7 @@ # define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B ) #endif -#ifdef __BORLANDC__ +#ifdef BOOST_BORLANDC // // workaround for buggy integral-constant expression support: #define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS @@ -53,9 +54,9 @@ // #if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))) # ifndef BOOST_NO_CXX11_VARIADIC_MACROS -# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) ((__VA_ARGS__) == 0 ? false : true) +# define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) ((__VA_ARGS__) != 0) # else -# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) == 0 ? false : true) +# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) != 0) # endif #else # ifndef BOOST_NO_CXX11_VARIADIC_MACROS @@ -81,7 +82,7 @@ template struct STATIC_ASSERTION_FAILURE; template <> struct STATIC_ASSERTION_FAILURE { enum { value = 1 }; }; // HP aCC cannot deal with missing names for template value parameters -template struct static_assert_test{}; +template struct static_assert_test{}; } diff --git a/src/boost/boost/swap.hpp b/src/boost/boost/swap.hpp deleted file mode 100644 index 17243c69a..000000000 --- a/src/boost/boost/swap.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2014 Glen Fernandes - * - * Distributed under the Boost Software License, Version 1.0. (See - * accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -#ifndef BOOST_SWAP_HPP -#define BOOST_SWAP_HPP - -// The header file at this path is deprecated; -// use boost/core/swap.hpp instead. - -#include - -#endif diff --git a/src/boost/boost/system/config.hpp b/src/boost/boost/system/config.hpp deleted file mode 100644 index 99f446d05..000000000 --- a/src/boost/boost/system/config.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// boost/system/config.hpp -----------------------------------------------------------// - -// Copyright Beman Dawes 2003, 2006 - -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/system for documentation. - -#ifndef BOOST_SYSTEM_CONFIG_HPP -#define BOOST_SYSTEM_CONFIG_HPP - -#include -#include // for BOOST_POSIX_API or BOOST_WINDOWS_API - -// This header implemented separate compilation features as described in -// http://www.boost.org/more/separate_compilation.html -// -// It's only retained for compatibility now that the library is header-only. - -// normalize macros ------------------------------------------------------------------// - -#if !defined(BOOST_SYSTEM_DYN_LINK) && !defined(BOOST_SYSTEM_STATIC_LINK) \ - && !defined(BOOST_ALL_DYN_LINK) && !defined(BOOST_ALL_STATIC_LINK) -# define BOOST_SYSTEM_STATIC_LINK -#endif - -#if defined(BOOST_ALL_DYN_LINK) && !defined(BOOST_SYSTEM_DYN_LINK) -# define BOOST_SYSTEM_DYN_LINK -#elif defined(BOOST_ALL_STATIC_LINK) && !defined(BOOST_SYSTEM_STATIC_LINK) -# define BOOST_SYSTEM_STATIC_LINK -#endif - -#if defined(BOOST_SYSTEM_DYN_LINK) && defined(BOOST_SYSTEM_STATIC_LINK) -# error Must not define both BOOST_SYSTEM_DYN_LINK and BOOST_SYSTEM_STATIC_LINK -#endif - -// enable dynamic or static linking as requested --------------------------------------// - -#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SYSTEM_DYN_LINK) -# if defined(BOOST_SYSTEM_SOURCE) -# define BOOST_SYSTEM_DECL BOOST_SYMBOL_EXPORT -# else -# define BOOST_SYSTEM_DECL BOOST_SYMBOL_IMPORT -# endif -#else -# define BOOST_SYSTEM_DECL -#endif - -#endif // BOOST_SYSTEM_CONFIG_HPP diff --git a/src/boost/boost/system/detail/append_int.hpp b/src/boost/boost/system/detail/append_int.hpp new file mode 100644 index 000000000..c9c25c769 --- /dev/null +++ b/src/boost/boost/system/detail/append_int.hpp @@ -0,0 +1,32 @@ +#ifndef BOOST_SYSTEM_DETAIL_APPEND_INT_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_APPEND_INT_HPP_INCLUDED + +// Copyright 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +// + +namespace boost +{ +namespace system +{ +namespace detail +{ + +inline void append_int( std::string& s, int v ) +{ + char buffer[ 32 ]; + detail::snprintf( buffer, sizeof( buffer ), ":%d", v ); + + s += buffer; +} + +} // namespace detail +} // namespace system +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_APPEND_INT_HPP_INCLUDED diff --git a/src/boost/boost/cerrno.hpp b/src/boost/boost/system/detail/cerrno.hpp similarity index 88% rename from src/boost/boost/cerrno.hpp rename to src/boost/boost/system/detail/cerrno.hpp index d5d79b110..c0009a030 100644 --- a/src/boost/boost/cerrno.hpp +++ b/src/boost/boost/system/detail/cerrno.hpp @@ -1,5 +1,3 @@ -// Boost cerrno.hpp header -------------------------------------------------// - // Copyright Beman Dawes 2005. // Use, modification, and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -7,8 +5,8 @@ // See library home page at http://www.boost.org/libs/system -#ifndef BOOST_SYSTEM_CERRNO_HPP -#define BOOST_SYSTEM_CERRNO_HPP +#ifndef BOOST_SYSTEM_DETAIL_CERRNO_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_CERRNO_HPP_INCLUDED #include @@ -328,4 +326,4 @@ #define EMLINK 9979 #endif -#endif // include guard +#endif // #ifndef BOOST_SYSTEM_DETAIL_CERRNO_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/config.hpp b/src/boost/boost/system/detail/config.hpp index c282b4adf..8e1aa39cb 100644 --- a/src/boost/boost/system/detail/config.hpp +++ b/src/boost/boost/system/detail/config.hpp @@ -1,27 +1,29 @@ #ifndef BOOST_SYSTEM_DETAIL_CONFIG_HPP_INCLUDED #define BOOST_SYSTEM_DETAIL_CONFIG_HPP_INCLUDED -// Copyright 2018 Peter Dimov +// Copyright 2018-2022 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) // // See http://www.boost.org/libs/system for documentation. +#include #include #include // BOOST_SYSTEM_HAS_SYSTEM_ERROR +// +// The macro BOOST_SYSTEM_DISABLE_THREADS can be defined on configurations +// that provide and , but not , such as the +// single-threaded libstdc++. +// +// https://github.com/boostorg/system/issues/92 -#if !defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) +#if !defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) && !defined(BOOST_NO_CXX11_HDR_ATOMIC) && ( !defined(BOOST_NO_CXX11_HDR_MUTEX) || defined(BOOST_SYSTEM_DISABLE_THREADS) ) # define BOOST_SYSTEM_HAS_SYSTEM_ERROR #endif -#if BOOST_WORKAROUND(BOOST_GCC, < 40600) -// g++ 4.4's is not good enough -# undef BOOST_SYSTEM_HAS_SYSTEM_ERROR -#endif - // BOOST_SYSTEM_NOEXCEPT // Retained for backward compatibility @@ -43,15 +45,46 @@ # define BOOST_SYSTEM_CONSTEXPR #endif -// BOOST_SYSTEM_REQUIRE_CONST_INIT +// BOOST_SYSTEM_DEPRECATED + +#if defined(__clang__) +# define BOOST_SYSTEM_DEPRECATED(msg) __attribute__((deprecated(msg))) +#elif defined(__GNUC__) +# if __GNUC__ * 100 + __GNUC_MINOR__ >= 405 +# define BOOST_SYSTEM_DEPRECATED(msg) __attribute__((deprecated(msg))) +# else +# define BOOST_SYSTEM_DEPRECATED(msg) __attribute__((deprecated)) +# endif +#elif defined(_MSC_VER) +# define BOOST_SYSTEM_DEPRECATED(msg) __declspec(deprecated(msg)) +#elif defined(__sun) +# define BOOST_SYSTEM_DEPRECATED(msg) __attribute__((deprecated(msg))) +#else +# define BOOST_SYSTEM_DEPRECATED(msg) +#endif + +// BOOST_SYSTEM_CLANG_6 + +// Android NDK r18b has Clang 7.0.2 that still needs the workaround +// https://github.com/boostorg/system/issues/100 +#if defined(__clang__) && (__clang_major__ < 7 || (defined(__APPLE__) && __clang_major__ < 11) || (defined(__ANDROID__) && __clang_major__ == 7)) +# define BOOST_SYSTEM_CLANG_6 +#endif -#define BOOST_SYSTEM_REQUIRE_CONST_INIT +// -#if defined(__has_cpp_attribute) -#if __has_cpp_attribute(clang::require_constant_initialization) -# undef BOOST_SYSTEM_REQUIRE_CONST_INIT -# define BOOST_SYSTEM_REQUIRE_CONST_INIT [[clang::require_constant_initialization]] +#if defined(BOOST_LIBSTDCXX_VERSION) && BOOST_LIBSTDCXX_VERSION < 50000 +# define BOOST_SYSTEM_AVOID_STD_GENERIC_CATEGORY #endif + +#if defined(__CYGWIN__) || defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER == 1800) || (defined(BOOST_LIBSTDCXX_VERSION) && BOOST_LIBSTDCXX_VERSION < 90000) + +// Under Cygwin (and MinGW!), std::system_category() is POSIX +// Under VS2013, std::system_category() isn't quite right +// Under libstdc++ before 7.4, before 8.3, before 9.1, default_error_condition +// for the system category returns a condition from the system category + +# define BOOST_SYSTEM_AVOID_STD_SYSTEM_CATEGORY #endif #endif // BOOST_SYSTEM_DETAIL_CONFIG_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/enable_if.hpp b/src/boost/boost/system/detail/enable_if.hpp new file mode 100644 index 000000000..12b4de60e --- /dev/null +++ b/src/boost/boost/system/detail/enable_if.hpp @@ -0,0 +1,32 @@ +#ifndef BOOST_SYSTEM_DETAIL_ENABLE_IF_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_ENABLE_IF_HPP_INCLUDED + +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0 +// http://www.boost.org/LICENSE_1_0.txt + +namespace boost +{ + +namespace system +{ + +namespace detail +{ + +template struct enable_if +{ + typedef T type; +}; + +template struct enable_if +{ +}; + +} // namespace detail + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_ENABLE_IF_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/errc.hpp b/src/boost/boost/system/detail/errc.hpp new file mode 100644 index 000000000..ca773a9c6 --- /dev/null +++ b/src/boost/boost/system/detail/errc.hpp @@ -0,0 +1,126 @@ +#ifndef BOOST_SYSTEM_DETAIL_ERRC_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_ERRC_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018, 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 library home page at http://www.boost.org/libs/system + +#include +#include + +namespace boost +{ + +namespace system +{ + +namespace errc +{ + +enum errc_t +{ + success = 0, + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + bad_message = EBADMSG, + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + identifier_removed = EIDRM, + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + no_link = ENOLINK, + no_lock_available = ENOLCK, + no_message_available = ENODATA, + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + no_stream_resources = ENOSR, + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + not_a_stream = ENOSTR, + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + not_supported = ENOTSUP, + operation_canceled = ECANCELED, + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + owner_dead = EOWNERDEAD, + permission_denied = EACCES, + protocol_error = EPROTO, + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + state_not_recoverable = ENOTRECOVERABLE, + stream_timeout = ETIME, + text_file_busy = ETXTBSY, + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + value_too_large = EOVERFLOW, + wrong_protocol_type = EPROTOTYPE +}; + +} // namespace errc + +#ifdef BOOST_SYSTEM_ENABLE_DEPRECATED + +namespace posix = errc; +namespace posix_error = errc; + +#endif + +template<> struct is_error_condition_enum +{ + static const bool value = true; +}; + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_ERRC_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/error_category.hpp b/src/boost/boost/system/detail/error_category.hpp new file mode 100644 index 000000000..be6167f63 --- /dev/null +++ b/src/boost/boost/system/detail/error_category.hpp @@ -0,0 +1,227 @@ +#ifndef BOOST_SYSTEM_DETAIL_ERROR_CATEGORY_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_ERROR_CATEGORY_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See library home page at http://www.boost.org/libs/system + +#include +#include +#include +#include +#include +#include +#include + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) +# include +# include +#endif + +namespace boost +{ + +namespace system +{ + +class error_category; +class error_code; +class error_condition; + +std::size_t hash_value( error_code const & ec ); + +namespace detail +{ + +BOOST_SYSTEM_CONSTEXPR bool failed_impl( int ev, error_category const & cat ); + +class std_category; + +} // namespace detail + +#if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#endif + +#if defined(BOOST_MSVC) && BOOST_MSVC < 1900 +#pragma warning(push) +#pragma warning(disable: 4351) // new behavior: elements of array will be default initialized +#endif + +class BOOST_SYMBOL_VISIBLE error_category +{ +private: + + friend std::size_t hash_value( error_code const & ec ); + friend BOOST_SYSTEM_CONSTEXPR bool detail::failed_impl( int ev, error_category const & cat ); + + friend class error_code; + friend class error_condition; + +#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) +public: + + error_category( error_category const & ) = delete; + error_category& operator=( error_category const & ) = delete; + +#else +private: + + error_category( error_category const & ); + error_category& operator=( error_category const & ); + +#endif + +private: + + boost::ulong_long_type id_; + + static std::size_t const stdcat_size_ = 4 * sizeof( void const* ); + + union + { + mutable unsigned char stdcat_[ stdcat_size_ ]; + void const* stdcat_align_; + }; + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + mutable std::atomic< unsigned > sc_init_; + +#else + + unsigned sc_init_; + +#endif + +protected: + +#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS) + + ~error_category() = default; + +#else + + // We'd like to make the destructor protected, to make code that deletes + // an error_category* not compile; unfortunately, doing the below makes + // the destructor user-provided and hence breaks use after main, as the + // categories may get destroyed before code that uses them + + // ~error_category() {} + +#endif + +#if !BOOST_WORKAROUND(BOOST_GCC, < 40800) + BOOST_CONSTEXPR +#endif + error_category() BOOST_NOEXCEPT: id_( 0 ), stdcat_(), sc_init_() + { + } + + explicit +#if !BOOST_WORKAROUND(BOOST_GCC, < 40800) + BOOST_CONSTEXPR +#endif + error_category( boost::ulong_long_type id ) BOOST_NOEXCEPT: id_( id ), stdcat_(), sc_init_() + { + } + +public: + + virtual const char * name() const BOOST_NOEXCEPT = 0; + + virtual error_condition default_error_condition( int ev ) const BOOST_NOEXCEPT; + virtual bool equivalent( int code, const error_condition & condition ) const BOOST_NOEXCEPT; + virtual bool equivalent( const error_code & code, int condition ) const BOOST_NOEXCEPT; + + virtual std::string message( int ev ) const = 0; + virtual char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT; + + virtual bool failed( int ev ) const BOOST_NOEXCEPT + { + return ev != 0; + } + + friend BOOST_SYSTEM_CONSTEXPR bool operator==( error_category const & lhs, error_category const & rhs ) BOOST_NOEXCEPT + { + return rhs.id_ == 0? &lhs == &rhs: lhs.id_ == rhs.id_; + } + + friend BOOST_SYSTEM_CONSTEXPR bool operator!=( error_category const & lhs, error_category const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + friend BOOST_SYSTEM_CONSTEXPR bool operator<( error_category const & lhs, error_category const & rhs ) BOOST_NOEXCEPT + { + if( lhs.id_ < rhs.id_ ) + { + return true; + } + + if( lhs.id_ > rhs.id_ ) + { + return false; + } + + if( rhs.id_ != 0 ) + { + return false; // equal + } + + return std::less()( &lhs, &rhs ); + } + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + void init_stdcat() const; + +# if defined(__SUNPRO_CC) // trailing __global is not supported + operator std::error_category const & () const; +# else + operator std::error_category const & () const BOOST_SYMBOL_VISIBLE; +# endif + +#endif +}; + +#if defined(BOOST_MSVC) && BOOST_MSVC < 1900 +#pragma warning(pop) +#endif + +#if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) +#pragma GCC diagnostic pop +#endif + +namespace detail +{ + +static const boost::ulong_long_type generic_category_id = ( boost::ulong_long_type( 0xB2AB117A ) << 32 ) + 0x257EDFD0; +static const boost::ulong_long_type system_category_id = generic_category_id + 1; +static const boost::ulong_long_type interop_category_id = generic_category_id + 2; + +BOOST_SYSTEM_CONSTEXPR inline bool failed_impl( int ev, error_category const & cat ) +{ + if( cat.id_ == system_category_id || cat.id_ == generic_category_id ) + { + return ev != 0; + } + else + { + return cat.failed( ev ); + } +} + +} // namespace detail + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_ERROR_CATEGORY_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/error_category_impl.hpp b/src/boost/boost/system/detail/error_category_impl.hpp new file mode 100644 index 000000000..0d11e5ae3 --- /dev/null +++ b/src/boost/boost/system/detail/error_category_impl.hpp @@ -0,0 +1,190 @@ +#ifndef BOOST_SYSTEM_DETAIL_ERROR_CATEGORY_IMPL_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_ERROR_CATEGORY_IMPL_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See library home page at http://www.boost.org/libs/system + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost +{ +namespace system +{ + +// error_category default implementation + +inline error_condition error_category::default_error_condition( int ev ) const BOOST_NOEXCEPT +{ + return error_condition( ev, *this ); +} + +inline bool error_category::equivalent( int code, const error_condition & condition ) const BOOST_NOEXCEPT +{ + return default_error_condition( code ) == condition; +} + +inline bool error_category::equivalent( const error_code & code, int condition ) const BOOST_NOEXCEPT +{ + return code.equals( condition, *this ); +} + +inline char const * error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT +{ + if( len == 0 ) + { + return buffer; + } + + if( len == 1 ) + { + buffer[0] = 0; + return buffer; + } + +#if !defined(BOOST_NO_EXCEPTIONS) + try +#endif + { + std::string m = this->message( ev ); + +# if defined( BOOST_MSVC ) +# pragma warning( push ) +# pragma warning( disable: 4996 ) +# elif defined(__clang__) && defined(__has_warning) +# pragma clang diagnostic push +# if __has_warning("-Wdeprecated-declarations") +# pragma clang diagnostic ignored "-Wdeprecated-declarations" +# endif +# endif + + std::strncpy( buffer, m.c_str(), len - 1 ); + buffer[ len-1 ] = 0; + +# if defined( BOOST_MSVC ) +# pragma warning( pop ) +# elif defined(__clang__) && defined(__has_warning) +# pragma clang diagnostic pop +# endif + + return buffer; + } +#if !defined(BOOST_NO_EXCEPTIONS) + catch( ... ) + { + detail::snprintf( buffer, len, "No message text available for error %d", ev ); + return buffer; + } +#endif +} + +} // namespace system +} // namespace boost + +// interoperability with std::error_code, std::error_condition + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + +#include +#include +#include + +namespace boost +{ +namespace system +{ + +inline void error_category::init_stdcat() const +{ + static_assert( sizeof( stdcat_ ) >= sizeof( boost::system::detail::std_category ), "sizeof(stdcat_) is not enough for std_category" ); + +#if defined(BOOST_MSVC) && BOOST_MSVC < 1900 + // no alignof +#else + + static_assert( alignof( decltype(stdcat_align_) ) >= alignof( boost::system::detail::std_category ), "alignof(stdcat_) is not enough for std_category" ); + +#endif + + // detail::mutex has a constexpr default constructor, + // and therefore guarantees static initialization, on + // everything except VS 2013 (msvc-12.0) + + static system::detail::mutex mx_; + + system::detail::lock_guard lk( mx_ ); + + if( sc_init_.load( std::memory_order_acquire ) == 0 ) + { + ::new( static_cast( stdcat_ ) ) boost::system::detail::std_category( this, system::detail::id_wrapper<0>() ); + sc_init_.store( 1, std::memory_order_release ); + } +} + +#if defined( BOOST_GCC ) && BOOST_GCC >= 40800 && BOOST_GCC < 70000 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif + +inline BOOST_NOINLINE error_category::operator std::error_category const & () const +{ + if( id_ == detail::generic_category_id ) + { +// This condition must be the same as the one in error_condition.hpp +#if defined(BOOST_SYSTEM_AVOID_STD_GENERIC_CATEGORY) + + static const boost::system::detail::std_category generic_instance( this, system::detail::id_wrapper<0x1F4D3>() ); + return generic_instance; + +#else + + return std::generic_category(); + +#endif + } + + if( id_ == detail::system_category_id ) + { +// This condition must be the same as the one in error_code.hpp +#if defined(BOOST_SYSTEM_AVOID_STD_SYSTEM_CATEGORY) + + static const boost::system::detail::std_category system_instance( this, system::detail::id_wrapper<0x1F4D7>() ); + return system_instance; + +#else + + return std::system_category(); + +#endif + } + + if( sc_init_.load( std::memory_order_acquire ) == 0 ) + { + init_stdcat(); + } + + return *static_cast( static_cast( stdcat_ ) ); +} + +#if defined( BOOST_GCC ) && BOOST_GCC >= 40800 && BOOST_GCC < 70000 +#pragma GCC diagnostic pop +#endif + +} // namespace system +} // namespace boost + +#endif // #if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + +#endif // #ifndef BOOST_SYSTEM_DETAIL_ERROR_CATEGORY_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/error_code.hpp b/src/boost/boost/system/detail/error_code.hpp new file mode 100644 index 000000000..401bb538a --- /dev/null +++ b/src/boost/boost/system/detail/error_code.hpp @@ -0,0 +1,732 @@ +#ifndef BOOST_SYSTEM_DETAIL_ERROR_CODE_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_ERROR_CODE_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017-2021 +// +// 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 library home page at http://www.boost.org/libs/system + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) +# include +#endif + +#include +#include +#include +#include +#include +#include +#include + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) +# include +#endif + +#if defined(BOOST_GCC) && BOOST_GCC >= 40600 && BOOST_GCC < 70000 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif + +namespace boost +{ + +namespace system +{ + +// class error_code + +// We want error_code to be a value type that can be copied without slicing +// and without requiring heap allocation, but we also want it to have +// polymorphic behavior based on the error category. This is achieved by +// abstract base class error_category supplying the polymorphic behavior, +// and error_code containing a pointer to an object of a type derived +// from error_category. + +bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT; +std::size_t hash_value( error_code const & ec ); + +class error_code +{ +private: + + friend bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT; + friend std::size_t hash_value( error_code const & ec ); + +private: + + struct data + { + int val_; + const error_category * cat_; + }; + + union + { + data d1_; +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + unsigned char d2_[ sizeof(std::error_code) ]; +#endif + }; + + // 0: default constructed, d1_ value initialized + // 1: holds std::error_code in d2_ + // 2: holds error code in d1_, failed == false + // 3: holds error code in d1_, failed == true + // >3: pointer to source_location, failed_ in lsb + boost::uintptr_t lc_flags_; + +private: + + char const* category_name() const BOOST_NOEXCEPT + { + // return category().name(); + + if( lc_flags_ == 0 ) + { + // must match detail::system_error_category::name() + return "system"; + } + else if( lc_flags_ == 1 ) + { + // must match detail::interop_error_category::name() + return "std:unknown"; + } + else + { + return d1_.cat_->name(); + } + } + +public: + + // constructors: + +#if !BOOST_WORKAROUND(BOOST_GCC, < 40800) + BOOST_CONSTEXPR +#endif + error_code() BOOST_NOEXCEPT: + d1_(), lc_flags_( 0 ) + { + } + + BOOST_SYSTEM_CONSTEXPR error_code( int val, const error_category & cat ) BOOST_NOEXCEPT: + d1_(), lc_flags_( 2 + detail::failed_impl( val, cat ) ) + { + d1_.val_ = val; + d1_.cat_ = &cat; + } + + error_code( int val, const error_category & cat, source_location const * loc ) BOOST_NOEXCEPT: + d1_(), lc_flags_( ( loc? reinterpret_cast( loc ): 2 ) | +detail::failed_impl( val, cat ) ) + { + d1_.val_ = val; + d1_.cat_ = &cat; + } + + template BOOST_SYSTEM_CONSTEXPR error_code( ErrorCodeEnum e, + typename detail::enable_if< + is_error_code_enum::value +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + || std::is_error_code_enum::value +#endif + >::type* = 0 ) BOOST_NOEXCEPT: d1_(), lc_flags_( 0 ) + { + *this = make_error_code( e ); + } + + error_code( error_code const& ec, source_location const * loc ) BOOST_NOEXCEPT: + d1_(), lc_flags_( 0 ) + { + *this = ec; + + if( ec.lc_flags_ != 0 && ec.lc_flags_ != 1 ) + { + lc_flags_ = ( loc? reinterpret_cast( loc ): 2 ) | ( ec.lc_flags_ & 1 ); + } + } + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + error_code( std::error_code const& ec ) BOOST_NOEXCEPT: + d1_(), lc_flags_( 0 ) + { +#ifndef BOOST_NO_RTTI + + if( detail::std_category const* pc2 = dynamic_cast< detail::std_category const* >( &ec.category() ) ) + { + *this = boost::system::error_code( ec.value(), pc2->original_category() ); + } + else + +#endif + { + ::new( d2_ ) std::error_code( ec ); + lc_flags_ = 1; + } + } + +#endif + + // modifiers: + + BOOST_SYSTEM_CONSTEXPR void assign( int val, const error_category & cat ) BOOST_NOEXCEPT + { + *this = error_code( val, cat ); + } + + void assign( int val, const error_category & cat, source_location const * loc ) BOOST_NOEXCEPT + { + *this = error_code( val, cat, loc ); + } + + void assign( error_code const& ec, source_location const * loc ) BOOST_NOEXCEPT + { + *this = error_code( ec, loc ); + } + + template + BOOST_SYSTEM_CONSTEXPR typename detail::enable_if::value, error_code>::type & + operator=( ErrorCodeEnum val ) BOOST_NOEXCEPT + { + *this = make_error_code( val ); + return *this; + } + + BOOST_SYSTEM_CONSTEXPR void clear() BOOST_NOEXCEPT + { + *this = error_code(); + } + + // observers: + + BOOST_SYSTEM_CONSTEXPR int value() const BOOST_NOEXCEPT + { + if( lc_flags_ != 1 ) + { + return d1_.val_; + } + else + { +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + std::error_code const& ec = *reinterpret_cast( d2_ ); + + unsigned cv = static_cast( ec.value() ); + unsigned ch = static_cast( reinterpret_cast( &ec.category() ) % 2097143 ); // 2^21-9, prime + + return static_cast( cv + 1000 * ch ); +#else + + return -1; +#endif + } + } + + BOOST_SYSTEM_CONSTEXPR const error_category & category() const BOOST_NOEXCEPT + { + if( lc_flags_ == 0 ) + { + return system_category(); + } + else if( lc_flags_ == 1 ) + { + return detail::interop_category(); + } + else + { + return *d1_.cat_; + } + } + + // deprecated? + error_condition default_error_condition() const BOOST_NOEXCEPT + { + return category().default_error_condition( value() ); + } + + std::string message() const + { +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + if( lc_flags_ == 1 ) + { + std::error_code const& ec = *reinterpret_cast( d2_ ); + return ec.message(); + } + +#endif + + if( lc_flags_ == 0 ) + { + return detail::system_error_category_message( value() ); + } + else + { + return category().message( value() ); + } + } + + char const * message( char * buffer, std::size_t len ) const BOOST_NOEXCEPT + { +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + if( lc_flags_ == 1 ) + { + std::error_code const& ec = *reinterpret_cast( d2_ ); + +#if !defined(BOOST_NO_EXCEPTIONS) + try +#endif + { + detail::snprintf( buffer, len, "%s", ec.message().c_str() ); + return buffer; + } +#if !defined(BOOST_NO_EXCEPTIONS) + catch( ... ) + { + detail::snprintf( buffer, len, "No message text available for error std:%s:%d", ec.category().name(), ec.value() ); + return buffer; + } +#endif + } +#endif + + if( lc_flags_ == 0 ) + { + return detail::system_error_category_message( value(), buffer, len ); + } + else + { + return category().message( value(), buffer, len ); + } + } + + BOOST_SYSTEM_CONSTEXPR bool failed() const BOOST_NOEXCEPT + { + if( lc_flags_ & 1 ) + { +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + if( lc_flags_ == 1 ) + { + std::error_code const& ec = *reinterpret_cast( d2_ ); + return ec.value() != 0; + } +#endif + return true; + } + else + { + return false; + } + } + +#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) + + BOOST_SYSTEM_CONSTEXPR explicit operator bool() const BOOST_NOEXCEPT // true if error + { + return failed(); + } + +#else + + typedef void (*unspecified_bool_type)(); + static void unspecified_bool_true() {} + + BOOST_SYSTEM_CONSTEXPR operator unspecified_bool_type() const BOOST_NOEXCEPT // true if error + { + return failed()? unspecified_bool_true: 0; + } + + BOOST_SYSTEM_CONSTEXPR bool operator!() const BOOST_NOEXCEPT // true if no error + { + return !failed(); + } + +#endif + + bool has_location() const BOOST_NOEXCEPT + { + return lc_flags_ >= 4; + } + + source_location const & location() const BOOST_NOEXCEPT + { + BOOST_STATIC_CONSTEXPR source_location loc; + return lc_flags_ >= 4? *reinterpret_cast( lc_flags_ &~ static_cast( 1 ) ): loc; + } + + // relationals: + +private: + + // private equality for use in error_category::equivalent + + friend class error_category; + + BOOST_SYSTEM_CONSTEXPR bool equals( int val, error_category const& cat ) const BOOST_NOEXCEPT + { + if( lc_flags_ == 0 ) + { + return val == 0 && cat.id_ == detail::system_category_id; + } + else if( lc_flags_ == 1 ) + { + return cat.id_ == detail::interop_category_id && val == value(); + } + else + { + return val == d1_.val_ && cat == *d1_.cat_; + } + } + +public: + + // the more symmetrical non-member syntax allows enum + // conversions work for both rhs and lhs. + + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( const error_code & lhs, const error_code & rhs ) BOOST_NOEXCEPT + { +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + bool s1 = lhs.lc_flags_ == 1; + bool s2 = rhs.lc_flags_ == 1; + + if( s1 != s2 ) return false; + + if( s1 && s2 ) + { + std::error_code const& e1 = *reinterpret_cast( lhs.d2_ ); + std::error_code const& e2 = *reinterpret_cast( rhs.d2_ ); + + return e1 == e2; + } + else +#endif + { + return lhs.value() == rhs.value() && lhs.category() == rhs.category(); + } + } + + BOOST_SYSTEM_CONSTEXPR inline friend bool operator<( const error_code & lhs, const error_code & rhs ) BOOST_NOEXCEPT + { +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + bool s1 = lhs.lc_flags_ == 1; + bool s2 = rhs.lc_flags_ == 1; + + if( s1 < s2 ) return true; + if( s2 < s1 ) return false; + + if( s1 && s2 ) + { + std::error_code const& e1 = *reinterpret_cast( lhs.d2_ ); + std::error_code const& e2 = *reinterpret_cast( rhs.d2_ ); + + return e1 < e2; + } + else +#endif + { + return lhs.category() < rhs.category() || (lhs.category() == rhs.category() && lhs.value() < rhs.value()); + } + } + + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( const error_code & lhs, const error_code & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + inline friend bool operator==( std::error_code const & lhs, error_code const & rhs ) BOOST_NOEXCEPT + { + return lhs == static_cast< std::error_code >( rhs ); + } + + inline friend bool operator==( error_code const & lhs, std::error_code const & rhs ) BOOST_NOEXCEPT + { + return static_cast< std::error_code >( lhs ) == rhs; + } + + inline friend bool operator!=( std::error_code const & lhs, error_code const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + inline friend bool operator!=( error_code const & lhs, std::error_code const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + // + + template::value>::type> + inline friend bool operator==( error_code const & lhs, E rhs ) BOOST_NOEXCEPT + { + return lhs == make_error_condition( rhs ); + } + + template::value>::type> + inline friend bool operator==( E lhs, error_code const & rhs ) BOOST_NOEXCEPT + { + return make_error_condition( lhs ) == rhs; + } + + template::value>::type> + inline friend bool operator!=( error_code const & lhs, E rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + template::value>::type> + inline friend bool operator!=( E lhs, error_code const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + // + + template::value>::type> + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( error_code const & lhs, E rhs ) BOOST_NOEXCEPT + { + return lhs == make_error_code( rhs ); + } + + template::value>::type> + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( E lhs, error_code const & rhs ) BOOST_NOEXCEPT + { + return make_error_code( lhs ) == rhs; + } + + template::value>::type> + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( error_code const & lhs, E rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + template::value>::type> + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( E lhs, error_code const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + +#if defined(BOOST_SYSTEM_CLANG_6) + + inline friend bool operator==( error_code const & lhs, std::error_condition const & rhs ) BOOST_NOEXCEPT + { + return static_cast< std::error_code >( lhs ) == rhs; + } + + inline friend bool operator==( std::error_condition const & lhs, error_code const & rhs ) BOOST_NOEXCEPT + { + return lhs == static_cast< std::error_code >( rhs ); + } + + inline friend bool operator!=( error_code const & lhs, std::error_condition const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + inline friend bool operator!=( std::error_condition const & lhs, error_code const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + +#endif + + // conversions + + operator std::error_code () const + { + if( lc_flags_ == 1 ) + { + return *reinterpret_cast( d2_ ); + } + else if( lc_flags_ == 0 ) + { +// This condition must be the same as the one in error_category_impl.hpp +#if defined(BOOST_SYSTEM_AVOID_STD_SYSTEM_CATEGORY) + + return std::error_code( 0, boost::system::system_category() ); + +#else + + return std::error_code(); + +#endif + } + else + { + return std::error_code( d1_.val_, *d1_.cat_ ); + } + } + + operator std::error_code () + { + return const_cast( *this ); + } + + template::value>::type> + operator T& () + { + if( lc_flags_ != 1 ) + { + std::error_code e2( *this ); + ::new( d2_ ) std::error_code( e2 ); + lc_flags_ = 1; + } + + return *reinterpret_cast( d2_ ); + } + +#if defined(BOOST_SYSTEM_CLANG_6) + + template::value>::type> + operator T const& () = delete; + +#endif + +#endif + + std::string to_string() const + { +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + if( lc_flags_ == 1 ) + { + std::error_code const& e2 = *reinterpret_cast( d2_ ); + + std::string r( "std:" ); + r += e2.category().name(); + detail::append_int( r, e2.value() ); + + return r; + } + else +#endif + { + std::string r = category_name(); + detail::append_int( r, value() ); + return r; + } + } + + template + inline friend std::basic_ostream& + operator<< (std::basic_ostream& os, error_code const & ec) + { + return os << ec.to_string().c_str(); + } + + std::string what() const + { + std::string r = message(); + + r += " ["; + r += to_string(); + + if( has_location() ) + { + r += " at "; + r += location().to_string(); + } + + r += "]"; + return r; + } +}; + +inline bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT +{ +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + if( code.lc_flags_ == 1 ) + { + return static_cast( code ) == static_cast( condition ); + } + else + +#endif + { + return code.category().equivalent( code.value(), condition ) || condition.category().equivalent( code, condition.value() ); + } +} + +inline bool operator==( const error_condition & condition, const error_code & code ) BOOST_NOEXCEPT +{ + return code == condition; +} + +inline bool operator!=( const error_code & lhs, const error_condition & rhs ) BOOST_NOEXCEPT +{ + return !( lhs == rhs ); +} + +inline bool operator!=( const error_condition & lhs, const error_code & rhs ) BOOST_NOEXCEPT +{ + return !( lhs == rhs ); +} + +inline std::size_t hash_value( error_code const & ec ) +{ +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + if( ec.lc_flags_ == 1 ) + { + std::error_code const& e2 = *reinterpret_cast( ec.d2_ ); + return std::hash()( e2 ); + } + +#endif + + error_category const & cat = ec.category(); + + boost::ulong_long_type id_ = cat.id_; + + if( id_ == 0 ) + { + id_ = reinterpret_cast( &cat ); + } + + boost::ulong_long_type hv = ( boost::ulong_long_type( 0xCBF29CE4 ) << 32 ) + 0x84222325; + boost::ulong_long_type const prime = ( boost::ulong_long_type( 0x00000100 ) << 32 ) + 0x000001B3; + + // id + + hv ^= id_; + hv *= prime; + + // value + + hv ^= static_cast( ec.value() ); + hv *= prime; + + return static_cast( hv ); +} + +} // namespace system + +} // namespace boost + +#if defined(BOOST_GCC) && BOOST_GCC >= 40600 && BOOST_GCC < 70000 +# pragma GCC diagnostic pop +#endif + +#endif // #ifndef BOOST_SYSTEM_DETAIL_ERROR_CODE_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/error_condition.hpp b/src/boost/boost/system/detail/error_condition.hpp new file mode 100644 index 000000000..44c847dce --- /dev/null +++ b/src/boost/boost/system/detail/error_condition.hpp @@ -0,0 +1,349 @@ +#ifndef BOOST_SYSTEM_DETAIL_ERROR_CONDITION_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_ERROR_CONDITION_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017-2021 +// +// 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 library home page at http://www.boost.org/libs/system + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost +{ + +namespace system +{ + +// class error_condition + +// error_conditions are portable, error_codes are system or library specific + +namespace detail +{ + +struct generic_value_tag +{ + int value; + BOOST_SYSTEM_CONSTEXPR explicit generic_value_tag( int v ): value( v ) {} +}; + +} // namespace detail + +class error_condition +{ +private: + + int val_; + error_category const * cat_; + +private: + + boost::ulong_long_type cat_id() const BOOST_NOEXCEPT + { + return cat_? cat_->id_: detail::generic_category_id; + } + +public: + + // constructors: + + BOOST_SYSTEM_CONSTEXPR error_condition() BOOST_NOEXCEPT: + val_( 0 ), cat_( 0 ) + { + } + + BOOST_SYSTEM_CONSTEXPR error_condition( int val, const error_category & cat ) BOOST_NOEXCEPT: + val_( val ), cat_( &cat ) + { + } + + BOOST_SYSTEM_CONSTEXPR explicit error_condition( boost::system::detail::generic_value_tag vt ) BOOST_NOEXCEPT: + val_( vt.value ), cat_( 0 ) + { + } + + template BOOST_SYSTEM_CONSTEXPR error_condition( ErrorConditionEnum e, + typename detail::enable_if< + is_error_condition_enum::value && !boost::system::detail::is_same::value + >::type* = 0) BOOST_NOEXCEPT + { + *this = make_error_condition( e ); + } + + template BOOST_SYSTEM_CONSTEXPR error_condition( ErrorConditionEnum e, + typename detail::enable_if::value>::type* = 0) BOOST_NOEXCEPT: + val_( e ), cat_( 0 ) + { + } + + // modifiers: + + BOOST_SYSTEM_CONSTEXPR void assign( int val, const error_category & cat ) BOOST_NOEXCEPT + { + val_ = val; + cat_ = &cat; + } + + template + BOOST_SYSTEM_CONSTEXPR typename detail::enable_if::value, error_condition>::type & + operator=( ErrorConditionEnum val ) BOOST_NOEXCEPT + { + *this = error_condition( val ); + return *this; + } + + BOOST_SYSTEM_CONSTEXPR void clear() BOOST_NOEXCEPT + { + val_ = 0; + cat_ = 0; + } + + // observers: + + BOOST_SYSTEM_CONSTEXPR int value() const BOOST_NOEXCEPT + { + return val_; + } + + BOOST_SYSTEM_CONSTEXPR const error_category & category() const BOOST_NOEXCEPT + { + return cat_? *cat_: generic_category(); + } + + std::string message() const + { + if( cat_ ) + { + return cat_->message( value() ); + } + else + { + return detail::generic_error_category_message( value() ); + } + } + + char const * message( char * buffer, std::size_t len ) const BOOST_NOEXCEPT + { + if( cat_ ) + { + return cat_->message( value(), buffer, len ); + } + else + { + return detail::generic_error_category_message( value(), buffer, len ); + } + } + + BOOST_SYSTEM_CONSTEXPR bool failed() const BOOST_NOEXCEPT + { + if( cat_ ) + { + return detail::failed_impl( val_, *cat_ ); + } + else + { + return val_ != 0; + } + } + +#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) + + BOOST_SYSTEM_CONSTEXPR explicit operator bool() const BOOST_NOEXCEPT // true if error + { + return failed(); + } + +#else + + typedef void (*unspecified_bool_type)(); + static void unspecified_bool_true() {} + + BOOST_SYSTEM_CONSTEXPR operator unspecified_bool_type() const BOOST_NOEXCEPT // true if error + { + return failed()? unspecified_bool_true: 0; + } + + BOOST_SYSTEM_CONSTEXPR bool operator!() const BOOST_NOEXCEPT // true if no error + { + return !failed(); + } + +#endif + + // relationals: + // the more symmetrical non-member syntax allows enum + // conversions work for both rhs and lhs. + + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( const error_condition & lhs, const error_condition & rhs ) BOOST_NOEXCEPT + { + if( lhs.val_ != rhs.val_ ) + { + return false; + } + else if( lhs.cat_ == 0 ) + { + return rhs.cat_id() == detail::generic_category_id; + } + else if( rhs.cat_ == 0 ) + { + return lhs.cat_id() == detail::generic_category_id; + } + else + { + return *lhs.cat_ == *rhs.cat_; + } + } + + BOOST_SYSTEM_CONSTEXPR inline friend bool operator<( const error_condition & lhs, const error_condition & rhs ) BOOST_NOEXCEPT + { + error_category const& lcat = lhs.category(); + error_category const& rcat = rhs.category(); + return lcat < rcat || ( lcat == rcat && lhs.val_ < rhs.val_ ); + } + + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( const error_condition & lhs, const error_condition & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + + operator std::error_condition () const + { +// This condition must be the same as the one in error_category_impl.hpp +#if defined(BOOST_SYSTEM_AVOID_STD_GENERIC_CATEGORY) + + return std::error_condition( value(), category() ); + +#else + + if( cat_ ) + { + return std::error_condition( val_, *cat_ ); + } + else + { + return std::error_condition( val_, std::generic_category() ); + } + +#endif + } + + inline friend bool operator==( std::error_code const & lhs, error_condition const & rhs ) BOOST_NOEXCEPT + { + return lhs == static_cast< std::error_condition >( rhs ); + } + + inline friend bool operator==( error_condition const & lhs, std::error_code const & rhs ) BOOST_NOEXCEPT + { + return static_cast< std::error_condition >( lhs ) == rhs; + } + + inline friend bool operator!=( std::error_code const & lhs, error_condition const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + inline friend bool operator!=( error_condition const & lhs, std::error_code const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + // + + template::value>::type> + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( error_condition const & lhs, E rhs ) BOOST_NOEXCEPT + { + return lhs == make_error_condition( rhs ); + } + + template::value>::type> + BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( E lhs, error_condition const & rhs ) BOOST_NOEXCEPT + { + return make_error_condition( lhs ) == rhs; + } + + template::value>::type> + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( error_condition const & lhs, E rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + template::value>::type> + BOOST_SYSTEM_CONSTEXPR inline friend bool operator!=( E lhs, error_condition const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + // + + template::value>::type> + inline friend bool operator==( error_condition const & lhs, E rhs ) BOOST_NOEXCEPT + { + return lhs == make_error_code( rhs ); + } + + template::value>::type> + inline friend bool operator==( E lhs, error_condition const & rhs ) BOOST_NOEXCEPT + { + return make_error_code( lhs ) == rhs; + } + + template::value>::type> + inline friend bool operator!=( error_condition const & lhs, E rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + + template::value>::type> + inline friend bool operator!=( E lhs, error_condition const & rhs ) BOOST_NOEXCEPT + { + return !( lhs == rhs ); + } + +#endif + + std::string to_string() const + { + std::string r( "cond:" ); + + if( cat_ ) + { + r += cat_->name(); + } + else + { + r += "generic"; + } + + detail::append_int( r, value() ); + + return r; + } + + template + inline friend std::basic_ostream& + operator<< (std::basic_ostream& os, error_condition const & en) + { + os << en.to_string(); + return os; + } +}; + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_ERROR_CONDITION_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/generic_category.hpp b/src/boost/boost/system/detail/generic_category.hpp index 02d7a260b..57e558da8 100644 --- a/src/boost/boost/system/detail/generic_category.hpp +++ b/src/boost/boost/system/detail/generic_category.hpp @@ -1,13 +1,19 @@ -// Implementation details of generic_error_category -// -// Copyright 2018 Peter Dimov +#ifndef BOOST_SYSTEM_DETAIL_GENERIC_CATEGORY_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_GENERIC_CATEGORY_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018 // -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// 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 library home page at http://www.boost.org/libs/system +// See library home page at http://www.boost.org/libs/system -#include +#include +#include +#include +#include namespace boost { @@ -18,84 +24,100 @@ namespace system namespace detail { -#if defined(__GLIBC__) +// generic_error_category -// glibc has two incompatible strerror_r definitions +#if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#endif -inline char const * strerror_r_helper( char const * r, char const * ) BOOST_NOEXCEPT +class BOOST_SYMBOL_VISIBLE generic_error_category: public error_category { - return r; -} +public: -inline char const * strerror_r_helper( int r, char const * buffer ) BOOST_NOEXCEPT -{ - return r == 0? buffer: "Unknown error"; -} + BOOST_SYSTEM_CONSTEXPR generic_error_category() BOOST_NOEXCEPT: + error_category( detail::generic_category_id ) + { + } + + const char * name() const BOOST_NOEXCEPT BOOST_OVERRIDE + { + return "generic"; + } + + std::string message( int ev ) const BOOST_OVERRIDE; + char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT BOOST_OVERRIDE; +}; + +#if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) +#pragma GCC diagnostic pop +#endif -inline char const * generic_error_category_message( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +// generic_error_category::message + +inline char const * generic_error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT { - return strerror_r_helper( strerror_r( ev, buffer, len ), buffer ); + return generic_error_category_message( ev, buffer, len ); } -inline std::string generic_error_category_message( int ev ) +inline std::string generic_error_category::message( int ev ) const { - char buffer[ 128 ]; - return generic_error_category_message( ev, buffer, sizeof( buffer ) ); + return generic_error_category_message( ev ); } -#else +} // namespace detail -// std::strerror is thread-safe on everything else, incl. Windows +// generic_category() -# if defined( BOOST_MSVC ) -# pragma warning( push ) -# pragma warning( disable: 4996 ) -# elif defined(__clang__) && defined(__has_warning) -# pragma clang diagnostic push -# if __has_warning("-Wdeprecated-declarations") -# pragma clang diagnostic ignored "-Wdeprecated-declarations" -# endif -# endif +#if defined(BOOST_SYSTEM_HAS_CONSTEXPR) -inline std::string generic_error_category_message( int ev ) +namespace detail { - char const * m = std::strerror( ev ); - return m? m: "Unknown error"; -} -inline char const * generic_error_category_message( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +template struct BOOST_SYMBOL_VISIBLE generic_cat_holder { - if( len == 0 ) - { - return buffer; - } + static constexpr generic_error_category instance{}; +}; - if( len == 1 ) - { - buffer[0] = 0; - return buffer; - } +// Before C++17 it was mandatory to redeclare all static constexpr +#if defined(BOOST_NO_CXX17_INLINE_VARIABLES) +template constexpr generic_error_category generic_cat_holder::instance; +#endif - char const * m = std::strerror( ev ); +} // namespace detail - if( m == 0 ) return "Unknown error"; +constexpr error_category const & generic_category() BOOST_NOEXCEPT +{ + return detail::generic_cat_holder::instance; +} - std::strncpy( buffer, m, len - 1 ); - buffer[ len-1 ] = 0; +#else // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) - return buffer; +#if !defined(__SUNPRO_CC) // trailing __global is not supported +inline error_category const & generic_category() BOOST_NOEXCEPT BOOST_SYMBOL_VISIBLE; +#endif + +inline error_category const & generic_category() BOOST_NOEXCEPT +{ + static const detail::generic_error_category instance; + return instance; } -# if defined( BOOST_MSVC ) -# pragma warning( pop ) -# elif defined(__clang__) && defined(__has_warning) -# pragma clang diagnostic pop -# endif +#endif // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) -#endif +// deprecated synonyms -} // namespace detail +#ifdef BOOST_SYSTEM_ENABLE_DEPRECATED + +BOOST_SYSTEM_DEPRECATED("please use generic_category()") inline const error_category & get_generic_category() { return generic_category(); } +BOOST_SYSTEM_DEPRECATED("please use generic_category()") inline const error_category & get_posix_category() { return generic_category(); } +BOOST_SYSTEM_DEPRECATED("please use generic_category()") static const error_category & posix_category BOOST_ATTRIBUTE_UNUSED = generic_category(); +BOOST_SYSTEM_DEPRECATED("please use generic_category()") static const error_category & errno_ecat BOOST_ATTRIBUTE_UNUSED = generic_category(); + +#endif } // namespace system } // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_GENERIC_CATEGORY_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/generic_category_message.hpp b/src/boost/boost/system/detail/generic_category_message.hpp new file mode 100644 index 000000000..0b2eafad4 --- /dev/null +++ b/src/boost/boost/system/detail/generic_category_message.hpp @@ -0,0 +1,108 @@ +#ifndef BOOST_SYSTEM_DETAIL_GENERIC_CATEGORY_MESSAGE_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_GENERIC_CATEGORY_MESSAGE_HPP_INCLUDED + +// Implementation of generic_error_category_message +// +// Copyright 2018 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) +// +// See library home page at http://www.boost.org/libs/system + +#include +#include +#include + +namespace boost +{ + +namespace system +{ + +namespace detail +{ + +#if defined(__GLIBC__) + +// glibc has two incompatible strerror_r definitions + +inline char const * strerror_r_helper( char const * r, char const * ) BOOST_NOEXCEPT +{ + return r; +} + +inline char const * strerror_r_helper( int r, char const * buffer ) BOOST_NOEXCEPT +{ + return r == 0? buffer: "Unknown error"; +} + +inline char const * generic_error_category_message( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +{ + return strerror_r_helper( strerror_r( ev, buffer, len ), buffer ); +} + +inline std::string generic_error_category_message( int ev ) +{ + char buffer[ 128 ]; + return generic_error_category_message( ev, buffer, sizeof( buffer ) ); +} + +#else // #if defined(__GLIBC__) + +// std::strerror is thread-safe on everything else, incl. Windows + +# if defined( BOOST_MSVC ) +# pragma warning( push ) +# pragma warning( disable: 4996 ) +# elif defined(__clang__) && defined(__has_warning) +# pragma clang diagnostic push +# if __has_warning("-Wdeprecated-declarations") +# pragma clang diagnostic ignored "-Wdeprecated-declarations" +# endif +# endif + +inline std::string generic_error_category_message( int ev ) +{ + char const * m = std::strerror( ev ); + return m? m: "Unknown error"; +} + +inline char const * generic_error_category_message( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +{ + if( len == 0 ) + { + return buffer; + } + + if( len == 1 ) + { + buffer[0] = 0; + return buffer; + } + + char const * m = std::strerror( ev ); + + if( m == 0 ) return "Unknown error"; + + std::strncpy( buffer, m, len - 1 ); + buffer[ len-1 ] = 0; + + return buffer; +} + +# if defined( BOOST_MSVC ) +# pragma warning( pop ) +# elif defined(__clang__) && defined(__has_warning) +# pragma clang diagnostic pop +# endif + +#endif // #if defined(__GLIBC__) + +} // namespace detail + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_GENERIC_CATEGORY_MESSAGE_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/interop_category.hpp b/src/boost/boost/system/detail/interop_category.hpp new file mode 100644 index 000000000..c62b90f5f --- /dev/null +++ b/src/boost/boost/system/detail/interop_category.hpp @@ -0,0 +1,107 @@ +#ifndef BOOST_SYSTEM_DETAIL_INTEROP_CATEGORY_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_INTEROP_CATEGORY_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018, 2021 +// +// 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 library home page at http://www.boost.org/libs/system + +#include +#include +#include +#include + +namespace boost +{ + +namespace system +{ + +namespace detail +{ + +// interop_error_category, used for std::error_code + +#if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#endif + +class BOOST_SYMBOL_VISIBLE interop_error_category: public error_category +{ +public: + + BOOST_SYSTEM_CONSTEXPR interop_error_category() BOOST_NOEXCEPT: + error_category( detail::interop_category_id ) + { + } + + const char * name() const BOOST_NOEXCEPT BOOST_OVERRIDE + { + return "std:unknown"; + } + + std::string message( int ev ) const BOOST_OVERRIDE; + char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT BOOST_OVERRIDE; +}; + +#if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) +#pragma GCC diagnostic pop +#endif + +inline char const * interop_error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT +{ + detail::snprintf( buffer, len, "Unknown interop error %d", ev ); + return buffer; +} + +inline std::string interop_error_category::message( int ev ) const +{ + char buffer[ 48 ]; + return message( ev, buffer, sizeof( buffer ) ); +} + +// interop_category() + +#if defined(BOOST_SYSTEM_HAS_CONSTEXPR) + +template struct BOOST_SYMBOL_VISIBLE interop_cat_holder +{ + static constexpr interop_error_category instance{}; +}; + +// Before C++17 it was mandatory to redeclare all static constexpr +#if defined(BOOST_NO_CXX17_INLINE_VARIABLES) +template constexpr interop_error_category interop_cat_holder::instance; +#endif + +constexpr error_category const & interop_category() BOOST_NOEXCEPT +{ + return interop_cat_holder::instance; +} + +#else // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) + +#if !defined(__SUNPRO_CC) // trailing __global is not supported +inline error_category const & interop_category() BOOST_NOEXCEPT BOOST_SYMBOL_VISIBLE; +#endif + +inline error_category const & interop_category() BOOST_NOEXCEPT +{ + static const detail::interop_error_category instance; + return instance; +} + +#endif // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) + +} // namespace detail + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_INTEROP_CATEGORY_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/is_same.hpp b/src/boost/boost/system/detail/is_same.hpp new file mode 100644 index 000000000..2c52c609b --- /dev/null +++ b/src/boost/boost/system/detail/is_same.hpp @@ -0,0 +1,33 @@ +#ifndef BOOST_SYSTEM_DETAIL_IS_SAME_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_IS_SAME_HPP_INCLUDED + +// Copyright 2021 Peter Dimov +// Distributed under the Boost Software License, Version 1.0 +// http://www.boost.org/LICENSE_1_0.txt + +namespace boost +{ + +namespace system +{ + +namespace detail +{ + +template struct is_same +{ + enum _vt { value = 0 }; +}; + +template struct is_same +{ + enum _vt { value = 1 }; +}; + +} // namespace detail + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_IS_SAME_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/mutex.hpp b/src/boost/boost/system/detail/mutex.hpp new file mode 100644 index 000000000..37451b7c1 --- /dev/null +++ b/src/boost/boost/system/detail/mutex.hpp @@ -0,0 +1,121 @@ +#ifndef BOOST_SYSTEM_DETAIL_MUTEX_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_MUTEX_HPP_INCLUDED + +// Copyright 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt) + +#include + +#if defined(BOOST_SYSTEM_DISABLE_THREADS) + +namespace boost +{ +namespace system +{ +namespace detail +{ + +struct mutex +{ + void lock() + { + } + + void unlock() + { + } +}; + +} // namespace detail +} // namespace system +} // namespace boost + +#else // defined(BOOST_SYSTEM_DISABLE_THREADS) + +#if defined(BOOST_MSSTL_VERSION) && BOOST_MSSTL_VERSION >= 140 + +// Under the MS STL, std::mutex::mutex() is not constexpr, as is +// required by the standard, which leads to initialization order +// issues. However, shared_mutex is based on SRWLock and its +// default constructor is constexpr, so we use that instead. + +#include + +#if BOOST_MSSTL_VERSION >= 142 || _HAS_SHARED_MUTEX +# define BOOST_SYSTEM_HAS_MSSTL_SHARED_MUTEX +#endif + +#endif + +#if defined(BOOST_SYSTEM_HAS_MSSTL_SHARED_MUTEX) + +namespace boost +{ +namespace system +{ +namespace detail +{ + +typedef std::shared_mutex mutex; + +} // namespace detail +} // namespace system +} // namespace boost + +#else // defined(BOOST_SYSTEM_HAS_MSSTL_SHARED_MUTEX) + +#include + +namespace boost +{ +namespace system +{ +namespace detail +{ + +using std::mutex; + +} // namespace detail +} // namespace system +} // namespace boost + +#endif // defined(BOOST_SYSTEM_HAS_MSSTL_SHARED_MUTEX) +#endif // defined(BOOST_SYSTEM_DISABLE_THREADS) + +namespace boost +{ +namespace system +{ +namespace detail +{ + +template class lock_guard +{ +private: + + Mtx& mtx_; + +private: + + lock_guard( lock_guard const& ); + lock_guard& operator=( lock_guard const& ); + +public: + + explicit lock_guard( Mtx& mtx ): mtx_( mtx ) + { + mtx_.lock(); + } + + ~lock_guard() + { + mtx_.unlock(); + } +}; + +} // namespace detail +} // namespace system +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_MUTEX_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/requires_cxx11.hpp b/src/boost/boost/system/detail/requires_cxx11.hpp new file mode 100644 index 000000000..078697711 --- /dev/null +++ b/src/boost/boost/system/detail/requires_cxx11.hpp @@ -0,0 +1,21 @@ +#ifndef BOOST_SYSTEM_DETAIL_REQUIRES_CXX11_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_REQUIRES_CXX11_HPP_INCLUDED + +// Copyright 2023 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include + +#if defined(BOOST_NO_CXX11_CONSTEXPR) || \ + defined(BOOST_NO_CXX11_NOEXCEPT) || \ + defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) || \ + defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || \ + defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) + +BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.System 1.82 and will be removed in Boost.System 1.84. Please open an issue in https://github.com/boostorg/system if you want it retained.") + +#endif + +#endif // #ifndef BOOST_SYSTEM_DETAIL_REQUIRES_CXX11_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/snprintf.hpp b/src/boost/boost/system/detail/snprintf.hpp new file mode 100644 index 000000000..bdb153748 --- /dev/null +++ b/src/boost/boost/system/detail/snprintf.hpp @@ -0,0 +1,73 @@ +#ifndef BOOST_SYSTEM_DETAIL_SNPRINTF_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_SNPRINTF_HPP_INCLUDED + +// Copyright 2018, 2020, 2021 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) +// +// See library home page at http://www.boost.org/libs/system + +#include +#include +#include + +// + +namespace boost +{ + +namespace system +{ + +namespace detail +{ + +#if ( defined(_MSC_VER) && _MSC_VER < 1900 ) || ( defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) ) + +inline void snprintf( char * buffer, std::size_t len, char const * format, ... ) +{ +# if defined( BOOST_MSVC ) +# pragma warning( push ) +# pragma warning( disable: 4996 ) +# endif + + if( len == 0 ) return; + + va_list args; + va_start( args, format ); + + _vsnprintf( buffer, len - 1, format, args ); + buffer[ len - 1 ] = 0; + + va_end( args ); + +# if defined( BOOST_MSVC ) +# pragma warning( pop ) +# endif +} + +#else + +#if defined(__GNUC__) && __GNUC__ >= 3 +__attribute__((__format__ (__printf__, 3, 4))) +#endif +inline void snprintf( char * buffer, std::size_t len, char const * format, ... ) +{ + va_list args; + va_start( args, format ); + + std::vsnprintf( buffer, len, format, args ); + + va_end( args ); +} + +#endif + +} // namespace detail + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_SNPRINTF_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/std_category.hpp b/src/boost/boost/system/detail/std_category.hpp new file mode 100644 index 000000000..8205f2801 --- /dev/null +++ b/src/boost/boost/system/detail/std_category.hpp @@ -0,0 +1,88 @@ +#ifndef BOOST_SYSTEM_DETAIL_STD_CATEGORY_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_STD_CATEGORY_HPP_INCLUDED + +// Support for interoperability between Boost.System and +// +// Copyright 2018, 2021 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) +// +// See library home page at http://www.boost.org/libs/system + +#include +#include +#include + +// + +namespace boost +{ + +namespace system +{ + +namespace detail +{ + +template struct id_wrapper {}; + +class BOOST_SYMBOL_VISIBLE std_category: public std::error_category +{ +private: + + boost::system::error_category const * pc_; + +public: + + boost::system::error_category const & original_category() const BOOST_NOEXCEPT + { + return *pc_; + } + +public: + + template + explicit std_category( boost::system::error_category const * pc, id_wrapper ): pc_( pc ) + { +#if defined(_MSC_VER) && defined(_CPPLIB_VER) && _MSC_VER >= 1900 && _MSC_VER < 2000 + + // We used to assign to the protected _Addr member of std::error_category + // here when Id != 0, but this should never happen now because this code + // path is no longer used + +#if !defined(BOOST_NO_CXX11_STATIC_ASSERT) + + static_assert( Id == 0, "This constructor should only be called with Id == 0 under MS STL 14.0+" ); + +#endif + +#endif + } + + const char * name() const BOOST_NOEXCEPT BOOST_OVERRIDE + { + return pc_->name(); + } + + std::string message( int ev ) const BOOST_OVERRIDE + { + return pc_->message( ev ); + } + + std::error_condition default_error_condition( int ev ) const BOOST_NOEXCEPT BOOST_OVERRIDE + { + return pc_->default_error_condition( ev ); + } + + inline bool equivalent( int code, const std::error_condition & condition ) const BOOST_NOEXCEPT BOOST_OVERRIDE; + inline bool equivalent( const std::error_code & code, int condition ) const BOOST_NOEXCEPT BOOST_OVERRIDE; +}; + +} // namespace detail + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_STD_CATEGORY_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/std_category_impl.hpp b/src/boost/boost/system/detail/std_category_impl.hpp new file mode 100644 index 000000000..d805b8a7a --- /dev/null +++ b/src/boost/boost/system/detail/std_category_impl.hpp @@ -0,0 +1,97 @@ +#ifndef BOOST_SYSTEM_DETAIL_STD_CATEGORY_IMPL_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_STD_CATEGORY_IMPL_HPP_INCLUDED + +// Support for interoperability between Boost.System and +// +// Copyright 2018, 2021 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) +// +// See library home page at http://www.boost.org/libs/system + +#include +#include +#include +#include + +// + +namespace boost +{ + +namespace system +{ + +namespace detail +{ + +inline bool std_category::equivalent( int code, const std::error_condition & condition ) const BOOST_NOEXCEPT +{ + if( condition.category() == *this ) + { + boost::system::error_condition bn( condition.value(), *pc_ ); + return pc_->equivalent( code, bn ); + } + else if( condition.category() == std::generic_category() || condition.category() == boost::system::generic_category() ) + { + boost::system::error_condition bn( condition.value(), boost::system::generic_category() ); + return pc_->equivalent( code, bn ); + } + +#ifndef BOOST_NO_RTTI + + else if( std_category const* pc2 = dynamic_cast< std_category const* >( &condition.category() ) ) + { + boost::system::error_condition bn( condition.value(), *pc2->pc_ ); + return pc_->equivalent( code, bn ); + } + +#endif + + else + { + return default_error_condition( code ) == condition; + } +} + +inline bool std_category::equivalent( const std::error_code & code, int condition ) const BOOST_NOEXCEPT +{ + if( code.category() == *this ) + { + boost::system::error_code bc( code.value(), *pc_ ); + return pc_->equivalent( bc, condition ); + } + else if( code.category() == std::generic_category() || code.category() == boost::system::generic_category() ) + { + boost::system::error_code bc( code.value(), boost::system::generic_category() ); + return pc_->equivalent( bc, condition ); + } + +#ifndef BOOST_NO_RTTI + + else if( std_category const* pc2 = dynamic_cast< std_category const* >( &code.category() ) ) + { + boost::system::error_code bc( code.value(), *pc2->pc_ ); + return pc_->equivalent( bc, condition ); + } + +#endif + + else if( *pc_ == boost::system::generic_category() ) + { + return std::generic_category().equivalent( code, condition ); + } + else + { + return false; + } +} + +} // namespace detail + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_STD_CATEGORY_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/std_interoperability.hpp b/src/boost/boost/system/detail/std_interoperability.hpp deleted file mode 100644 index 1c33a23ae..000000000 --- a/src/boost/boost/system/detail/std_interoperability.hpp +++ /dev/null @@ -1,141 +0,0 @@ -// Support for interoperability between Boost.System and -// -// Copyright 2018 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) -// -// See library home page at http://www.boost.org/libs/system - -#include -#include -#include - -// - -namespace boost -{ - -namespace system -{ - -namespace detail -{ - -class BOOST_SYMBOL_VISIBLE std_category: public std::error_category -{ -private: - - boost::system::error_category const * pc_; - -public: - - explicit std_category( boost::system::error_category const * pc ): pc_( pc ) - { - } - - virtual const char * name() const BOOST_NOEXCEPT - { - return pc_->name(); - } - - virtual std::string message( int ev ) const - { - return pc_->message( ev ); - } - - virtual std::error_condition default_error_condition( int ev ) const BOOST_NOEXCEPT - { - return pc_->default_error_condition( ev ); - } - - virtual bool equivalent( int code, const std::error_condition & condition ) const BOOST_NOEXCEPT; - virtual bool equivalent( const std::error_code & code, int condition ) const BOOST_NOEXCEPT; -}; - -inline std::error_category const & to_std_category( boost::system::error_category const & cat ) -{ - typedef std::map< boost::system::error_category const *, std::unique_ptr > map_type; - - static map_type map_; - - map_type::iterator i = map_.find( &cat ); - - if( i == map_.end() ) - { - std::unique_ptr p( new std_category( &cat ) ); - - std::pair r = map_.insert( map_type::value_type( &cat, std::move( p ) ) ); - - i = r.first; - } - - return *i->second; -} - -inline bool std_category::equivalent( int code, const std::error_condition & condition ) const BOOST_NOEXCEPT -{ - if( condition.category() == *this ) - { - boost::system::error_condition bn( condition.value(), *pc_ ); - return pc_->equivalent( code, bn ); - } - else if( condition.category() == std::generic_category() || condition.category() == boost::system::generic_category() ) - { - boost::system::error_condition bn( condition.value(), boost::system::generic_category() ); - return pc_->equivalent( code, bn ); - } - -#ifndef BOOST_NO_RTTI - - else if( std_category const* pc2 = dynamic_cast< std_category const* >( &condition.category() ) ) - { - boost::system::error_condition bn( condition.value(), *pc2->pc_ ); - return pc_->equivalent( code, bn ); - } - -#endif - - else - { - return default_error_condition( code ) == condition; - } -} - -inline bool std_category::equivalent( const std::error_code & code, int condition ) const BOOST_NOEXCEPT -{ - if( code.category() == *this ) - { - boost::system::error_code bc( code.value(), *pc_ ); - return pc_->equivalent( bc, condition ); - } - else if( code.category() == std::generic_category() || code.category() == boost::system::generic_category() ) - { - boost::system::error_code bc( code.value(), boost::system::generic_category() ); - return pc_->equivalent( bc, condition ); - } - -#ifndef BOOST_NO_RTTI - - else if( std_category const* pc2 = dynamic_cast< std_category const* >( &code.category() ) ) - { - boost::system::error_code bc( code.value(), *pc2->pc_ ); - return pc_->equivalent( bc, condition ); - } -#endif - - else if( *pc_ == boost::system::generic_category() ) - { - return std::generic_category().equivalent( code, condition ); - } - else - { - return false; - } -} - -} // namespace detail - -} // namespace system - -} // namespace boost diff --git a/src/boost/boost/system/detail/system_category.hpp b/src/boost/boost/system/detail/system_category.hpp new file mode 100644 index 000000000..918902f55 --- /dev/null +++ b/src/boost/boost/system/detail/system_category.hpp @@ -0,0 +1,110 @@ +#ifndef BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See library home page at http://www.boost.org/libs/system + +#include +#include +#include + +namespace boost +{ + +namespace system +{ + +namespace detail +{ + +// system_error_category + +#if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#endif + +class BOOST_SYMBOL_VISIBLE system_error_category: public error_category +{ +public: + + BOOST_SYSTEM_CONSTEXPR system_error_category() BOOST_NOEXCEPT: + error_category( detail::system_category_id ) + { + } + + const char * name() const BOOST_NOEXCEPT BOOST_OVERRIDE + { + return "system"; + } + + error_condition default_error_condition( int ev ) const BOOST_NOEXCEPT BOOST_OVERRIDE; + + std::string message( int ev ) const BOOST_OVERRIDE; + char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT BOOST_OVERRIDE; +}; + +#if ( defined( BOOST_GCC ) && BOOST_GCC >= 40600 ) || defined( BOOST_CLANG ) +#pragma GCC diagnostic pop +#endif + +} // namespace detail + +// system_category() + +#if defined(BOOST_SYSTEM_HAS_CONSTEXPR) + +namespace detail +{ + +template struct BOOST_SYMBOL_VISIBLE system_cat_holder +{ + static constexpr system_error_category instance{}; +}; + +// Before C++17 it was mandatory to redeclare all static constexpr +#if defined(BOOST_NO_CXX17_INLINE_VARIABLES) +template constexpr system_error_category system_cat_holder::instance; +#endif + +} // namespace detail + +constexpr error_category const & system_category() BOOST_NOEXCEPT +{ + return detail::system_cat_holder::instance; +} + +#else // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) + +#if !defined(__SUNPRO_CC) // trailing __global is not supported +inline error_category const & system_category() BOOST_NOEXCEPT BOOST_SYMBOL_VISIBLE; +#endif + +inline error_category const & system_category() BOOST_NOEXCEPT +{ + static const detail::system_error_category instance; + return instance; +} + +#endif // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) + +// deprecated synonyms + +#ifdef BOOST_SYSTEM_ENABLE_DEPRECATED + +BOOST_SYSTEM_DEPRECATED("please use system_category()") inline const error_category & get_system_category() { return system_category(); } +BOOST_SYSTEM_DEPRECATED("please use system_category()") static const error_category & native_ecat BOOST_ATTRIBUTE_UNUSED = system_category(); + +#endif + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/system_category_condition_win32.hpp b/src/boost/boost/system/detail/system_category_condition_win32.hpp new file mode 100644 index 000000000..4e7db0ff2 --- /dev/null +++ b/src/boost/boost/system/detail/system_category_condition_win32.hpp @@ -0,0 +1,157 @@ +#ifndef BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_CONDITION_WIN32_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_CONDITION_WIN32_HPP_INCLUDED + +// Copyright Beman Dawes 2002, 2006 +// Copyright (c) Microsoft Corporation 2014 +// Copyright 2018 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) +// +// See library home page at http://www.boost.org/libs/system + +#include +#include +#include + +// + +namespace boost +{ + +namespace system +{ + +namespace detail +{ + +inline int system_category_condition_win32( int ev ) BOOST_NOEXCEPT +{ + // When using the Windows Runtime, most system errors are reported as HRESULTs. + // We want to map the common Win32 errors to their equivalent error condition, + // whether or not they are reported via an HRESULT. + +#define BOOST_SYSTEM_FAILED(hr) ((hr) < 0) +#define BOOST_SYSTEM_HRESULT_FACILITY(hr) (((hr) >> 16) & 0x1fff) +#define BOOST_SYSTEM_HRESULT_CODE(hr) ((hr) & 0xFFFF) +#define BOOST_SYSTEM_FACILITY_WIN32 7 + + if( BOOST_SYSTEM_FAILED( ev ) && BOOST_SYSTEM_HRESULT_FACILITY( ev ) == BOOST_SYSTEM_FACILITY_WIN32 ) + { + ev = BOOST_SYSTEM_HRESULT_CODE( ev ); + } + +#undef BOOST_SYSTEM_FAILED +#undef BOOST_SYSTEM_HRESULT_FACILITY +#undef BOOST_SYSTEM_HRESULT_CODE +#undef BOOST_SYSTEM_FACILITY_WIN32 + + using namespace boost::winapi; + using namespace errc; + + // Windows system -> posix_errno decode table + // see WinError.h comments for descriptions of errors + + switch ( ev ) + { + case 0: return success; + + case ERROR_ACCESS_DENIED_: return permission_denied; + case ERROR_ALREADY_EXISTS_: return file_exists; + case ERROR_BAD_NETPATH_: return no_such_file_or_directory; + case ERROR_BAD_NET_NAME_: return no_such_file_or_directory; + case ERROR_BAD_UNIT_: return no_such_device; + case ERROR_BROKEN_PIPE_: return broken_pipe; + case ERROR_BUFFER_OVERFLOW_: return filename_too_long; + case ERROR_BUSY_: return device_or_resource_busy; + case ERROR_BUSY_DRIVE_: return device_or_resource_busy; + case ERROR_CANNOT_MAKE_: return permission_denied; + case ERROR_CANTOPEN_: return io_error; + case ERROR_CANTREAD_: return io_error; + case ERROR_CANTWRITE_: return io_error; + case ERROR_CONNECTION_ABORTED_: return connection_aborted; + case ERROR_CURRENT_DIRECTORY_: return permission_denied; + case ERROR_DEV_NOT_EXIST_: return no_such_device; + case ERROR_DEVICE_IN_USE_: return device_or_resource_busy; + case ERROR_DIR_NOT_EMPTY_: return directory_not_empty; + case ERROR_DIRECTORY_: return invalid_argument; // WinError.h: "The directory name is invalid" + case ERROR_DISK_FULL_: return no_space_on_device; + case ERROR_FILENAME_EXCED_RANGE_: return filename_too_long; + case ERROR_FILE_EXISTS_: return file_exists; + case ERROR_FILE_NOT_FOUND_: return no_such_file_or_directory; + case ERROR_HANDLE_DISK_FULL_: return no_space_on_device; + case ERROR_INVALID_ACCESS_: return permission_denied; + case ERROR_INVALID_DRIVE_: return no_such_device; + case ERROR_INVALID_FUNCTION_: return function_not_supported; + case ERROR_INVALID_HANDLE_: return invalid_argument; + case ERROR_INVALID_NAME_: return no_such_file_or_directory; + case ERROR_INVALID_PARAMETER_: return invalid_argument; + case ERROR_LOCK_VIOLATION_: return no_lock_available; + case ERROR_LOCKED_: return no_lock_available; + case ERROR_NEGATIVE_SEEK_: return invalid_argument; + case ERROR_NOACCESS_: return permission_denied; + case ERROR_NOT_ENOUGH_MEMORY_: return not_enough_memory; + case ERROR_NOT_READY_: return resource_unavailable_try_again; + case ERROR_NOT_SAME_DEVICE_: return cross_device_link; + case ERROR_OPEN_FAILED_: return io_error; + case ERROR_OPEN_FILES_: return device_or_resource_busy; + case ERROR_OPERATION_ABORTED_: return operation_canceled; + case ERROR_OUTOFMEMORY_: return not_enough_memory; + case ERROR_PATH_NOT_FOUND_: return no_such_file_or_directory; + case ERROR_READ_FAULT_: return io_error; + case ERROR_REPARSE_TAG_INVALID_: return invalid_argument; + case ERROR_RETRY_: return resource_unavailable_try_again; + case ERROR_SEEK_: return io_error; + case ERROR_SEM_TIMEOUT_: return timed_out; + case ERROR_SHARING_VIOLATION_: return permission_denied; + case ERROR_NOT_SUPPORTED_: return not_supported; // WinError.h: "The request is not supported." + case ERROR_TIMEOUT_: return timed_out; + case ERROR_TOO_MANY_OPEN_FILES_: return too_many_files_open; + case ERROR_WRITE_FAULT_: return io_error; + case ERROR_WRITE_PROTECT_: return permission_denied; + + case 258: return timed_out; // WAIT_TIMEOUT + + case WSAEACCES_: return permission_denied; + case WSAEADDRINUSE_: return address_in_use; + case WSAEADDRNOTAVAIL_: return address_not_available; + case WSAEAFNOSUPPORT_: return address_family_not_supported; + case WSAEALREADY_: return connection_already_in_progress; + case WSAEBADF_: return bad_file_descriptor; + case WSAECONNABORTED_: return connection_aborted; + case WSAECONNREFUSED_: return connection_refused; + case WSAECONNRESET_: return connection_reset; + case WSAEDESTADDRREQ_: return destination_address_required; + case WSAEFAULT_: return bad_address; + case WSAEHOSTUNREACH_: return host_unreachable; + case WSAEINPROGRESS_: return operation_in_progress; + case WSAEINTR_: return interrupted; + case WSAEINVAL_: return invalid_argument; + case WSAEISCONN_: return already_connected; + case WSAEMFILE_: return too_many_files_open; + case WSAEMSGSIZE_: return message_size; + case WSAENAMETOOLONG_: return filename_too_long; + case WSAENETDOWN_: return network_down; + case WSAENETRESET_: return network_reset; + case WSAENETUNREACH_: return network_unreachable; + case WSAENOBUFS_: return no_buffer_space; + case WSAENOPROTOOPT_: return no_protocol_option; + case WSAENOTCONN_: return not_connected; + case WSAENOTSOCK_: return not_a_socket; + case WSAEOPNOTSUPP_: return operation_not_supported; + case WSAEPROTONOSUPPORT_: return protocol_not_supported; + case WSAEPROTOTYPE_: return wrong_protocol_type; + case WSAETIMEDOUT_: return timed_out; + case WSAEWOULDBLOCK_: return operation_would_block; + + default: return -1; + } +} + +} // namespace detail + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_CONDITION_WIN32_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/system_category_impl.hpp b/src/boost/boost/system/detail/system_category_impl.hpp new file mode 100644 index 000000000..3bb34c26c --- /dev/null +++ b/src/boost/boost/system/detail/system_category_impl.hpp @@ -0,0 +1,61 @@ +#ifndef BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_IMPL_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_IMPL_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018, 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 library home page at http://www.boost.org/libs/system + +#include +#include +#include +#include + +#if !defined(BOOST_POSIX_API) && !defined(BOOST_WINDOWS_API) +# error BOOST_POSIX_API or BOOST_WINDOWS_API must be defined +#endif + +// system_error_category implementation + +#if defined(BOOST_WINDOWS_API) + +#include + +inline boost::system::error_condition boost::system::detail::system_error_category::default_error_condition( int ev ) const BOOST_NOEXCEPT +{ + int e2 = system_category_condition_win32( ev ); + + if( e2 == -1 ) + { + return error_condition( ev, *this ); + } + else + { + return error_condition( boost::system::detail::generic_value_tag( e2 ) ); + } +} + +#else // #if defined(BOOST_WINDOWS_API) + +inline boost::system::error_condition boost::system::detail::system_error_category::default_error_condition( int ev ) const BOOST_NOEXCEPT +{ + return error_condition( boost::system::detail::generic_value_tag( ev ) ); +} + +#endif // #if defined(BOOST_WINDOWS_API) + +inline std::string boost::system::detail::system_error_category::message( int ev ) const +{ + return system_error_category_message( ev ); +} + +inline char const * boost::system::detail::system_error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT +{ + return system_error_category_message( ev, buffer, len ); +} + +#endif // #ifndef BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_IMPL_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/system_category_message.hpp b/src/boost/boost/system/detail/system_category_message.hpp new file mode 100644 index 000000000..11f7cd07d --- /dev/null +++ b/src/boost/boost/system/detail/system_category_message.hpp @@ -0,0 +1,71 @@ +#ifndef BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_MESSAGE_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_MESSAGE_HPP_INCLUDED + +// Implementation of system_error_category_message +// +// Copyright 2018, 2022 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) +// +// See library home page at http://www.boost.org/libs/system + +#include + +#if !defined(BOOST_POSIX_API) && !defined(BOOST_WINDOWS_API) +# error BOOST_POSIX_API or BOOST_WINDOWS_API must be defined +#endif + +#if defined(BOOST_WINDOWS_API) + +#include + +namespace boost +{ +namespace system +{ +namespace detail +{ + +inline std::string system_error_category_message( int ev ) +{ + return system_category_message_win32( ev ); +} + +inline char const * system_error_category_message( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +{ + return system_category_message_win32( ev, buffer, len ); +} + +} // namespace detail +} // namespace system +} // namespace boost + +#else // #if defined(BOOST_WINDOWS_API) + +#include + +namespace boost +{ +namespace system +{ +namespace detail +{ + +inline std::string system_error_category_message( int ev ) +{ + return generic_error_category_message( ev ); +} + +inline char const * system_error_category_message( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +{ + return generic_error_category_message( ev, buffer, len ); +} + +} // namespace detail +} // namespace system +} // namespace boost + +#endif // #if defined(BOOST_WINDOWS_API) + +#endif // #ifndef BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_MESSAGE_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/system_category_message_win32.hpp b/src/boost/boost/system/detail/system_category_message_win32.hpp new file mode 100644 index 000000000..35a4c7e37 --- /dev/null +++ b/src/boost/boost/system/detail/system_category_message_win32.hpp @@ -0,0 +1,211 @@ +#ifndef BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_MESSAGE_WIN32_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_MESSAGE_WIN32_HPP_INCLUDED + +// Copyright Beman Dawes 2002, 2006 +// Copyright (c) Microsoft Corporation 2014 +// Copyright 2018, 2020 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) +// +// See library home page at http://www.boost.org/libs/system + +#include +#include +#include +#include +#include +#include + +// + +namespace boost +{ + +namespace system +{ + +namespace detail +{ + +inline char const * unknown_message_win32( int ev, char * buffer, std::size_t len ) +{ + detail::snprintf( buffer, len, "Unknown error (%d)", ev ); + return buffer; +} + +inline boost::winapi::UINT_ message_cp_win32() +{ +#if defined(BOOST_SYSTEM_USE_UTF8) + + return boost::winapi::CP_UTF8_; + +#else + + return boost::winapi::CP_ACP_; + +#endif +} + +inline char const * system_category_message_win32( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT +{ + if( len == 0 ) + { + return buffer; + } + + if( len == 1 ) + { + buffer[0] = 0; + return buffer; + } + + boost::winapi::UINT_ const code_page = message_cp_win32(); + + int r = 0; + +#if !defined(BOOST_NO_ANSI_APIS) + + if( code_page == boost::winapi::CP_ACP_ ) + { + using namespace boost::winapi; + + DWORD_ retval = boost::winapi::FormatMessageA( + FORMAT_MESSAGE_FROM_SYSTEM_ | FORMAT_MESSAGE_IGNORE_INSERTS_, + NULL, + ev, + MAKELANGID_( LANG_NEUTRAL_, SUBLANG_DEFAULT_ ), // Default language + buffer, + static_cast( len ), + NULL + ); + + r = static_cast( retval ); + } + else + +#endif + + { + using namespace boost::winapi; + + wchar_t * lpMsgBuf = 0; + + DWORD_ retval = boost::winapi::FormatMessageW( + FORMAT_MESSAGE_ALLOCATE_BUFFER_ | FORMAT_MESSAGE_FROM_SYSTEM_ | FORMAT_MESSAGE_IGNORE_INSERTS_, + NULL, + ev, + MAKELANGID_( LANG_NEUTRAL_, SUBLANG_DEFAULT_ ), // Default language + (LPWSTR_) &lpMsgBuf, + 0, + NULL + ); + + if( retval != 0 ) + { + r = boost::winapi::WideCharToMultiByte( code_page, 0, lpMsgBuf, -1, buffer, static_cast( len ), NULL, NULL ); + boost::winapi::LocalFree( lpMsgBuf ); + if ( r != 0 ) --r; // exclude null terminator + } + } + + if( r == 0 ) + { + return unknown_message_win32( ev, buffer, len ); + } + + while( r > 0 && ( buffer[ r-1 ] == '\n' || buffer[ r-1 ] == '\r' ) ) + { + buffer[ --r ] = 0; + } + + if( r > 0 && buffer[ r-1 ] == '.' ) + { + buffer[ --r ] = 0; + } + + return buffer; +} + +struct local_free +{ + void * p_; + + ~local_free() + { + boost::winapi::LocalFree( p_ ); + } +}; + +inline std::string unknown_message_win32( int ev ) +{ + char buffer[ 38 ]; + return unknown_message_win32( ev, buffer, sizeof( buffer ) ); +} + +inline std::string system_category_message_win32( int ev ) +{ + using namespace boost::winapi; + + wchar_t * lpMsgBuf = 0; + + DWORD_ retval = boost::winapi::FormatMessageW( + FORMAT_MESSAGE_ALLOCATE_BUFFER_ | FORMAT_MESSAGE_FROM_SYSTEM_ | FORMAT_MESSAGE_IGNORE_INSERTS_, + NULL, + ev, + MAKELANGID_( LANG_NEUTRAL_, SUBLANG_DEFAULT_ ), // Default language + (LPWSTR_) &lpMsgBuf, + 0, + NULL + ); + + if( retval == 0 ) + { + return unknown_message_win32( ev ); + } + + local_free lf_ = { lpMsgBuf }; + (void)lf_; + + UINT_ const code_page = message_cp_win32(); + + int r = boost::winapi::WideCharToMultiByte( code_page, 0, lpMsgBuf, -1, 0, 0, NULL, NULL ); + + if( r == 0 ) + { + return unknown_message_win32( ev ); + } + + std::string buffer( r, char() ); + + r = boost::winapi::WideCharToMultiByte( code_page, 0, lpMsgBuf, -1, &buffer[0], r, NULL, NULL ); + + if( r == 0 ) + { + return unknown_message_win32( ev ); + } + + --r; // exclude null terminator + + while( r > 0 && ( buffer[ r-1 ] == '\n' || buffer[ r-1 ] == '\r' ) ) + { + --r; + } + + if( r > 0 && buffer[ r-1 ] == '.' ) + { + --r; + } + + buffer.resize( r ); + + return buffer; +} + +} // namespace detail + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_SYSTEM_CATEGORY_MESSAGE_WIN32_HPP_INCLUDED diff --git a/src/boost/boost/system/detail/system_category_posix.hpp b/src/boost/boost/system/detail/system_category_posix.hpp deleted file mode 100644 index 6250dd5ac..000000000 --- a/src/boost/boost/system/detail/system_category_posix.hpp +++ /dev/null @@ -1,132 +0,0 @@ -// POSIX-specific implementation details of system_error_category -// -// Copyright 2018 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) -// -// See library home page at http://www.boost.org/libs/system - -namespace boost -{ - -namespace system -{ - -namespace detail -{ - -inline bool is_generic_value( int ev ) BOOST_NOEXCEPT -{ - using namespace errc; - - static int const gen[] = - { - success, - address_family_not_supported, - address_in_use, - address_not_available, - already_connected, - argument_list_too_long, - argument_out_of_domain, - bad_address, - bad_file_descriptor, - bad_message, - broken_pipe, - connection_aborted, - connection_already_in_progress, - connection_refused, - connection_reset, - cross_device_link, - destination_address_required, - device_or_resource_busy, - directory_not_empty, - executable_format_error, - file_exists, - file_too_large, - filename_too_long, - function_not_supported, - host_unreachable, - identifier_removed, - illegal_byte_sequence, - inappropriate_io_control_operation, - interrupted, - invalid_argument, - invalid_seek, - io_error, - is_a_directory, - message_size, - network_down, - network_reset, - network_unreachable, - no_buffer_space, - no_child_process, - no_link, - no_lock_available, - no_message_available, - no_message, - no_protocol_option, - no_space_on_device, - no_stream_resources, - no_such_device_or_address, - no_such_device, - no_such_file_or_directory, - no_such_process, - not_a_directory, - not_a_socket, - not_a_stream, - not_connected, - not_enough_memory, - not_supported, - operation_canceled, - operation_in_progress, - operation_not_permitted, - operation_not_supported, - operation_would_block, - owner_dead, - permission_denied, - protocol_error, - protocol_not_supported, - read_only_file_system, - resource_deadlock_would_occur, - resource_unavailable_try_again, - result_out_of_range, - state_not_recoverable, - stream_timeout, - text_file_busy, - timed_out, - too_many_files_open_in_system, - too_many_files_open, - too_many_links, - too_many_symbolic_link_levels, - value_too_large, - wrong_protocol_type - }; - - int const n = sizeof( gen ) / sizeof( gen[0] ); - - for( int i = 0; i < n; ++i ) - { - if( ev == gen[ i ] ) return true; - } - - return false; -} - -inline error_condition system_category_default_error_condition_posix( int ev ) BOOST_NOEXCEPT -{ - if( is_generic_value( ev ) ) - { - return error_condition( ev, generic_category() ); - } - else - { - return error_condition( ev, system_category() ); - } -} - -} // namespace detail - -} // namespace system - -} // namespace boost diff --git a/src/boost/boost/system/detail/system_category_win32.hpp b/src/boost/boost/system/detail/system_category_win32.hpp deleted file mode 100644 index bbbdc60e4..000000000 --- a/src/boost/boost/system/detail/system_category_win32.hpp +++ /dev/null @@ -1,324 +0,0 @@ -// Windows implementation of system_error_category -// -// Copyright Beman Dawes 2002, 2006 -// Copyright (c) Microsoft Corporation 2014 -// Copyright 2018 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) -// -// See library home page at http://www.boost.org/libs/system - -#include -#include -#include -#include -#include - -// - -namespace boost -{ - -namespace system -{ - -namespace detail -{ - -#if ( defined(_MSC_VER) && _MSC_VER < 1900 ) || ( defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) ) - -inline char const * unknown_message_win32( int ev, char * buffer, std::size_t len ) -{ -# if defined( BOOST_MSVC ) -# pragma warning( push ) -# pragma warning( disable: 4996 ) -# endif - - _snprintf( buffer, len - 1, "Unknown error (%d)", ev ); - - buffer[ len - 1 ] = 0; - return buffer; - -# if defined( BOOST_MSVC ) -# pragma warning( pop ) -# endif -} - -#else - -inline char const * unknown_message_win32( int ev, char * buffer, std::size_t len ) -{ - std::snprintf( buffer, len, "Unknown error (%d)", ev ); - return buffer; -} - -#endif - -inline boost::winapi::UINT_ message_cp_win32() -{ -#if defined(BOOST_SYSTEM_USE_UTF8) - - return boost::winapi::CP_UTF8_; - -#else - - return boost::winapi::CP_ACP_; - -#endif -} - -inline char const * system_category_message_win32( int ev, char * buffer, std::size_t len ) BOOST_NOEXCEPT -{ - if( len == 0 ) - { - return buffer; - } - - if( len == 1 ) - { - buffer[0] = 0; - return buffer; - } - -#if defined(__GNUC__) -# define BOOST_SYSTEM_ALLOCA __builtin_alloca -#else -# define BOOST_SYSTEM_ALLOCA _alloca -#endif - - wchar_t * wbuffer = static_cast( BOOST_SYSTEM_ALLOCA( len * sizeof( wchar_t ) ) ); - -#undef BOOST_SYSTEM_ALLOCA - - using namespace boost::winapi; - - DWORD_ retval = boost::winapi::FormatMessageW( - FORMAT_MESSAGE_FROM_SYSTEM_ | FORMAT_MESSAGE_IGNORE_INSERTS_, - NULL, - ev, - MAKELANGID_( LANG_NEUTRAL_, SUBLANG_DEFAULT_ ), // Default language - wbuffer, - static_cast( len ), - NULL - ); - - if( retval == 0 ) - { - return unknown_message_win32( ev, buffer, len ); - } - - UINT_ const code_page = message_cp_win32(); - - int r = boost::winapi::WideCharToMultiByte( code_page, 0, wbuffer, -1, buffer, static_cast( len ), NULL, NULL ); - - if( r == 0 ) - { - return unknown_message_win32( ev, buffer, len ); - } - - --r; // exclude null terminator - - while( r > 0 && ( buffer[ r-1 ] == '\n' || buffer[ r-1 ] == '\r' ) ) - { - buffer[ --r ] = 0; - } - - if( r > 0 && buffer[ r-1 ] == '.' ) - { - buffer[ --r ] = 0; - } - - return buffer; -} - -struct local_free -{ - void * p_; - - ~local_free() - { - boost::winapi::LocalFree( p_ ); - } -}; - -inline std::string unknown_message_win32( int ev ) -{ - char buffer[ 38 ]; - return unknown_message_win32( ev, buffer, sizeof( buffer ) ); -} - -inline std::string system_category_message_win32( int ev ) -{ - using namespace boost::winapi; - - wchar_t * lpMsgBuf = 0; - - DWORD_ retval = boost::winapi::FormatMessageW( - FORMAT_MESSAGE_ALLOCATE_BUFFER_ | FORMAT_MESSAGE_FROM_SYSTEM_ | FORMAT_MESSAGE_IGNORE_INSERTS_, - NULL, - ev, - MAKELANGID_( LANG_NEUTRAL_, SUBLANG_DEFAULT_ ), // Default language - (LPWSTR_) &lpMsgBuf, - 0, - NULL - ); - - if( retval == 0 ) - { - return unknown_message_win32( ev ); - } - - local_free lf_ = { lpMsgBuf }; - (void)lf_; - - UINT_ const code_page = message_cp_win32(); - - int r = boost::winapi::WideCharToMultiByte( code_page, 0, lpMsgBuf, -1, 0, 0, NULL, NULL ); - - if( r == 0 ) - { - return unknown_message_win32( ev ); - } - - std::string buffer( r, char() ); - - r = boost::winapi::WideCharToMultiByte( code_page, 0, lpMsgBuf, -1, &buffer[0], r, NULL, NULL ); - - if( r == 0 ) - { - return unknown_message_win32( ev ); - } - - --r; // exclude null terminator - - while( r > 0 && ( buffer[ r-1 ] == '\n' || buffer[ r-1 ] == '\r' ) ) - { - --r; - } - - if( r > 0 && buffer[ r-1 ] == '.' ) - { - --r; - } - - buffer.resize( r ); - - return buffer; -} - -inline error_condition system_category_default_error_condition_win32( int ev ) BOOST_NOEXCEPT -{ - // When using the Windows Runtime, most system errors are reported as HRESULTs. - // We want to map the common Win32 errors to their equivalent error condition, - // whether or not they are reported via an HRESULT. - -#define BOOST_SYSTEM_FAILED(hr) ((hr) < 0) -#define BOOST_SYSTEM_HRESULT_FACILITY(hr) (((hr) >> 16) & 0x1fff) -#define BOOST_SYSTEM_HRESULT_CODE(hr) ((hr) & 0xFFFF) -#define BOOST_SYSTEM_FACILITY_WIN32 7 - - if( BOOST_SYSTEM_FAILED( ev ) && BOOST_SYSTEM_HRESULT_FACILITY( ev ) == BOOST_SYSTEM_FACILITY_WIN32 ) - { - ev = BOOST_SYSTEM_HRESULT_CODE( ev ); - } - -#undef BOOST_SYSTEM_FAILED -#undef BOOST_SYSTEM_HRESULT_FACILITY -#undef BOOST_SYSTEM_HRESULT_CODE -#undef BOOST_SYSTEM_FACILITY_WIN32 - - using namespace boost::winapi; - using namespace errc; - - // Windows system -> posix_errno decode table - // see WinError.h comments for descriptions of errors - - switch ( ev ) - { - case 0: return make_error_condition( success ); - - case ERROR_ACCESS_DENIED_: return make_error_condition( permission_denied ); - case ERROR_ALREADY_EXISTS_: return make_error_condition( file_exists ); - case ERROR_BAD_UNIT_: return make_error_condition( no_such_device ); - case ERROR_BUFFER_OVERFLOW_: return make_error_condition( filename_too_long ); - case ERROR_BUSY_: return make_error_condition( device_or_resource_busy ); - case ERROR_BUSY_DRIVE_: return make_error_condition( device_or_resource_busy ); - case ERROR_CANNOT_MAKE_: return make_error_condition( permission_denied ); - case ERROR_CANTOPEN_: return make_error_condition( io_error ); - case ERROR_CANTREAD_: return make_error_condition( io_error ); - case ERROR_CANTWRITE_: return make_error_condition( io_error ); - case ERROR_CURRENT_DIRECTORY_: return make_error_condition( permission_denied ); - case ERROR_DEV_NOT_EXIST_: return make_error_condition( no_such_device ); - case ERROR_DEVICE_IN_USE_: return make_error_condition( device_or_resource_busy ); - case ERROR_DIR_NOT_EMPTY_: return make_error_condition( directory_not_empty ); - case ERROR_DIRECTORY_: return make_error_condition( invalid_argument ); // WinError.h: "The directory name is invalid" - case ERROR_DISK_FULL_: return make_error_condition( no_space_on_device ); - case ERROR_FILE_EXISTS_: return make_error_condition( file_exists ); - case ERROR_FILE_NOT_FOUND_: return make_error_condition( no_such_file_or_directory ); - case ERROR_HANDLE_DISK_FULL_: return make_error_condition( no_space_on_device ); - case ERROR_INVALID_ACCESS_: return make_error_condition( permission_denied ); - case ERROR_INVALID_DRIVE_: return make_error_condition( no_such_device ); - case ERROR_INVALID_FUNCTION_: return make_error_condition( function_not_supported ); - case ERROR_INVALID_HANDLE_: return make_error_condition( invalid_argument ); - case ERROR_INVALID_NAME_: return make_error_condition( invalid_argument ); - case ERROR_LOCK_VIOLATION_: return make_error_condition( no_lock_available ); - case ERROR_LOCKED_: return make_error_condition( no_lock_available ); - case ERROR_NEGATIVE_SEEK_: return make_error_condition( invalid_argument ); - case ERROR_NOACCESS_: return make_error_condition( permission_denied ); - case ERROR_NOT_ENOUGH_MEMORY_: return make_error_condition( not_enough_memory ); - case ERROR_NOT_READY_: return make_error_condition( resource_unavailable_try_again ); - case ERROR_NOT_SAME_DEVICE_: return make_error_condition( cross_device_link ); - case ERROR_OPEN_FAILED_: return make_error_condition( io_error ); - case ERROR_OPEN_FILES_: return make_error_condition( device_or_resource_busy ); - case ERROR_OPERATION_ABORTED_: return make_error_condition( operation_canceled ); - case ERROR_OUTOFMEMORY_: return make_error_condition( not_enough_memory ); - case ERROR_PATH_NOT_FOUND_: return make_error_condition( no_such_file_or_directory ); - case ERROR_READ_FAULT_: return make_error_condition( io_error ); - case ERROR_RETRY_: return make_error_condition( resource_unavailable_try_again ); - case ERROR_SEEK_: return make_error_condition( io_error ); - case ERROR_SHARING_VIOLATION_: return make_error_condition( permission_denied ); - case ERROR_TOO_MANY_OPEN_FILES_: return make_error_condition( too_many_files_open ); - case ERROR_WRITE_FAULT_: return make_error_condition( io_error ); - case ERROR_WRITE_PROTECT_: return make_error_condition( permission_denied ); - case WSAEACCES_: return make_error_condition( permission_denied ); - case WSAEADDRINUSE_: return make_error_condition( address_in_use ); - case WSAEADDRNOTAVAIL_: return make_error_condition( address_not_available ); - case WSAEAFNOSUPPORT_: return make_error_condition( address_family_not_supported ); - case WSAEALREADY_: return make_error_condition( connection_already_in_progress ); - case WSAEBADF_: return make_error_condition( bad_file_descriptor ); - case WSAECONNABORTED_: return make_error_condition( connection_aborted ); - case WSAECONNREFUSED_: return make_error_condition( connection_refused ); - case WSAECONNRESET_: return make_error_condition( connection_reset ); - case WSAEDESTADDRREQ_: return make_error_condition( destination_address_required ); - case WSAEFAULT_: return make_error_condition( bad_address ); - case WSAEHOSTUNREACH_: return make_error_condition( host_unreachable ); - case WSAEINPROGRESS_: return make_error_condition( operation_in_progress ); - case WSAEINTR_: return make_error_condition( interrupted ); - case WSAEINVAL_: return make_error_condition( invalid_argument ); - case WSAEISCONN_: return make_error_condition( already_connected ); - case WSAEMFILE_: return make_error_condition( too_many_files_open ); - case WSAEMSGSIZE_: return make_error_condition( message_size ); - case WSAENAMETOOLONG_: return make_error_condition( filename_too_long ); - case WSAENETDOWN_: return make_error_condition( network_down ); - case WSAENETRESET_: return make_error_condition( network_reset ); - case WSAENETUNREACH_: return make_error_condition( network_unreachable ); - case WSAENOBUFS_: return make_error_condition( no_buffer_space ); - case WSAENOPROTOOPT_: return make_error_condition( no_protocol_option ); - case WSAENOTCONN_: return make_error_condition( not_connected ); - case WSAENOTSOCK_: return make_error_condition( not_a_socket ); - case WSAEOPNOTSUPP_: return make_error_condition( operation_not_supported ); - case WSAEPROTONOSUPPORT_: return make_error_condition( protocol_not_supported ); - case WSAEPROTOTYPE_: return make_error_condition( wrong_protocol_type ); - case WSAETIMEDOUT_: return make_error_condition( timed_out ); - case WSAEWOULDBLOCK_: return make_error_condition( operation_would_block ); - - default: return error_condition( ev, system_category() ); - } -} - -} // namespace detail - -} // namespace system - -} // namespace boost diff --git a/src/boost/boost/system/detail/throws.hpp b/src/boost/boost/system/detail/throws.hpp new file mode 100644 index 000000000..0d24baaba --- /dev/null +++ b/src/boost/boost/system/detail/throws.hpp @@ -0,0 +1,59 @@ +#ifndef BOOST_SYSTEM_DETAIL_THROWS_HPP_INCLUDED +#define BOOST_SYSTEM_DETAIL_THROWS_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See library home page at http://www.boost.org/libs/system + +namespace boost +{ + +namespace system +{ + +class error_code; + +} // namespace system + +// boost::throws() + +namespace detail +{ + +// Misuse of the error_code object is turned into a noisy failure by +// poisoning the reference. This particular implementation doesn't +// produce warnings or errors from popular compilers, is very efficient +// (as determined by inspecting generated code), and does not suffer +// from order of initialization problems. In practice, it also seems +// cause user function error handling implementation errors to be detected +// very early in the development cycle. + +inline system::error_code* throws() +{ + // See github.com/boostorg/system/pull/12 by visigoth for why the return + // is poisoned with nonzero rather than (0). A test, test_throws_usage(), + // has been added to error_code_test.cpp, and as visigoth mentioned it + // fails on clang for release builds with a return of 0 but works fine + // with (1). + // Since the undefined behavior sanitizer (-fsanitize=undefined) does not + // allow a reference to be formed to the unaligned address of (1), we use + // (8) instead. + + return reinterpret_cast(8); +} + +} // namespace detail + +inline system::error_code& throws() +{ + return *detail::throws(); +} + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_DETAIL_THROWS_HPP_INCLUDED diff --git a/src/boost/boost/system/errc.hpp b/src/boost/boost/system/errc.hpp new file mode 100644 index 000000000..7da70425f --- /dev/null +++ b/src/boost/boost/system/errc.hpp @@ -0,0 +1,57 @@ +#ifndef BOOST_SYSTEM_ERRC_HPP_INCLUDED +#define BOOST_SYSTEM_ERRC_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018, 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 library home page at http://www.boost.org/libs/system + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost +{ + +namespace system +{ + +// make_* functions for errc::errc_t + +namespace errc +{ + +// explicit conversion: +BOOST_SYSTEM_CONSTEXPR inline error_code make_error_code( errc_t e ) BOOST_NOEXCEPT +{ + return error_code( e, generic_category() ); +} + +// explicit conversion: +inline error_code make_error_code( errc_t e, boost::source_location const * loc ) BOOST_NOEXCEPT +{ + return error_code( e, generic_category(), loc ); +} + +// implicit conversion: +BOOST_SYSTEM_CONSTEXPR inline error_condition make_error_condition( errc_t e ) BOOST_NOEXCEPT +{ + return error_condition( e, generic_category() ); +} + +} // namespace errc + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_ERRC_HPP_INCLUDED diff --git a/src/boost/boost/system/error_category.hpp b/src/boost/boost/system/error_category.hpp new file mode 100644 index 000000000..c5b87b49a --- /dev/null +++ b/src/boost/boost/system/error_category.hpp @@ -0,0 +1,13 @@ +#ifndef BOOST_SYSTEM_ERROR_CATEGORY_HPP_INCLUDED +#define BOOST_SYSTEM_ERROR_CATEGORY_HPP_INCLUDED + +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0 +// http://www.boost.org/LICENSE_1_0.txt +// +// See library home page at http://www.boost.org/libs/system + +#include +#include + +#endif // #ifndef BOOST_SYSTEM_ERROR_CATEGORY_HPP_INCLUDED diff --git a/src/boost/boost/system/error_code.hpp b/src/boost/boost/system/error_code.hpp index e38afc245..721f92ae4 100644 --- a/src/boost/boost/system/error_code.hpp +++ b/src/boost/boost/system/error_code.hpp @@ -10,947 +10,12 @@ // // See library home page at http://www.boost.org/libs/system -#include -#include -#include -#include -#include -#include -#include -#include - -// TODO: undef these macros if not already defined -#include - -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) -# include -#endif - -#if !defined(BOOST_POSIX_API) && !defined(BOOST_WINDOWS_API) -# error BOOST_POSIX_API or BOOST_WINDOWS_API must be defined -#endif - -namespace boost -{ - -namespace system -{ - -class error_code; // values defined by the operating system -class error_condition; // portable generic values defined below, but ultimately - // based on the POSIX standard - -// "Concept" helpers - -template struct is_error_code_enum -{ - static const bool value = false; -}; - -template struct is_error_condition_enum -{ - static const bool value = false; -}; - -// Generic error_conditions - -namespace errc -{ - -enum errc_t -{ - success = 0, - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - bad_message = EBADMSG, - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - identifier_removed = EIDRM, - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - no_link = ENOLINK, - no_lock_available = ENOLCK, - no_message_available = ENODATA, - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - no_stream_resources = ENOSR, - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - not_a_stream = ENOSTR, - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - not_supported = ENOTSUP, - operation_canceled = ECANCELED, - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - owner_dead = EOWNERDEAD, - permission_denied = EACCES, - protocol_error = EPROTO, - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - state_not_recoverable = ENOTRECOVERABLE, - stream_timeout = ETIME, - text_file_busy = ETXTBSY, - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - value_too_large = EOVERFLOW, - wrong_protocol_type = EPROTOTYPE -}; - -} // namespace errc - -#ifdef BOOST_SYSTEM_ENABLE_DEPRECATED - -namespace posix = errc; -namespace posix_error = errc; - -#endif - -template<> struct is_error_condition_enum -{ - static const bool value = true; -}; - -// class error_category - -#ifdef BOOST_MSVC -#pragma warning( push ) -// 'this' : used in base member initializer list -#pragma warning( disable: 4355 ) -#endif - -std::size_t hash_value( error_code const & ec ); - -class BOOST_SYMBOL_VISIBLE error_category -{ -private: - - friend std::size_t hash_value( error_code const & ec ); - -#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) -public: - - error_category( error_category const & ) = delete; - error_category& operator=( error_category const & ) = delete; - -#else -private: - - error_category( error_category const & ); - error_category& operator=( error_category const & ); - -#endif - -private: - - boost::ulong_long_type id_; - -protected: - -#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS) - - ~error_category() = default; - -#else - - // We'd like to make the destructor protected, to make code that deletes - // an error_category* not compile; unfortunately, doing the below makes - // the destructor user-provided and hence breaks use after main, as the - // categories may get destroyed before code that uses them - - // ~error_category() {} - -#endif - - BOOST_SYSTEM_CONSTEXPR error_category() BOOST_NOEXCEPT: id_( 0 ) - { - } - - explicit BOOST_SYSTEM_CONSTEXPR error_category( boost::ulong_long_type id ) BOOST_NOEXCEPT: id_( id ) - { - } - -public: - - virtual const char * name() const BOOST_NOEXCEPT = 0; - - virtual error_condition default_error_condition( int ev ) const BOOST_NOEXCEPT; - virtual bool equivalent( int code, const error_condition & condition ) const BOOST_NOEXCEPT; - virtual bool equivalent( const error_code & code, int condition ) const BOOST_NOEXCEPT; - - virtual std::string message( int ev ) const = 0; - virtual char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT; - - virtual bool failed( int ev ) const BOOST_NOEXCEPT; - - BOOST_SYSTEM_CONSTEXPR bool operator==( const error_category & rhs ) const BOOST_NOEXCEPT - { - return rhs.id_ == 0? this == &rhs: id_ == rhs.id_; - } - - BOOST_SYSTEM_CONSTEXPR bool operator!=( const error_category & rhs ) const BOOST_NOEXCEPT - { - return !( *this == rhs ); - } - - BOOST_SYSTEM_CONSTEXPR bool operator<( const error_category & rhs ) const BOOST_NOEXCEPT - { - if( id_ < rhs.id_ ) - { - return true; - } - - if( id_ > rhs.id_ ) - { - return false; - } - - if( rhs.id_ != 0 ) - { - return false; // equal - } - - return std::less()( this, &rhs ); - } - -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - - operator std::error_category const & () const; - -#endif -}; - -#ifdef BOOST_MSVC -#pragma warning( pop ) -#endif - -// predefined error categories - -namespace detail -{ - -class BOOST_SYMBOL_VISIBLE generic_error_category: public error_category -{ -public: - - // clang++ 3.8 and below: initialization of const object - // requires a user-provided default constructor - BOOST_SYSTEM_CONSTEXPR generic_error_category() BOOST_NOEXCEPT: - error_category( ( boost::ulong_long_type( 0xB2AB117A ) << 32 ) + 0x257EDF0D ) - { - } - - const char * name() const BOOST_NOEXCEPT - { - return "generic"; - } - - std::string message( int ev ) const; - char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT; -}; - -class BOOST_SYMBOL_VISIBLE system_error_category: public error_category -{ -public: - - BOOST_SYSTEM_CONSTEXPR system_error_category() BOOST_NOEXCEPT: - error_category( ( boost::ulong_long_type( 0x8FAFD21E ) << 32 ) + 0x25C5E09B ) - { - } - - const char * name() const BOOST_NOEXCEPT - { - return "system"; - } - - error_condition default_error_condition( int ev ) const BOOST_NOEXCEPT; - - std::string message( int ev ) const; - char const * message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT; -}; - -} // namespace detail - -// generic_category(), system_category() - -#if defined(BOOST_SYSTEM_HAS_CONSTEXPR) - -namespace detail -{ - -template struct cat_holder -{ - BOOST_SYSTEM_REQUIRE_CONST_INIT static constexpr system_error_category system_category_instance{}; - BOOST_SYSTEM_REQUIRE_CONST_INIT static constexpr generic_error_category generic_category_instance{}; -}; - -template BOOST_SYSTEM_REQUIRE_CONST_INIT constexpr system_error_category cat_holder::system_category_instance; -template BOOST_SYSTEM_REQUIRE_CONST_INIT constexpr generic_error_category cat_holder::generic_category_instance; - -} // namespace detail - -constexpr error_category const & system_category() BOOST_NOEXCEPT -{ - return detail::cat_holder::system_category_instance; -} - -constexpr error_category const & generic_category() BOOST_NOEXCEPT -{ - return detail::cat_holder::generic_category_instance; -} - -#else // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) - -inline error_category const & system_category() BOOST_NOEXCEPT -{ - static const detail::system_error_category system_category_instance; - return system_category_instance; -} - -inline error_category const & generic_category() BOOST_NOEXCEPT -{ - static const detail::generic_error_category generic_category_instance; - return generic_category_instance; -} - -#endif // #if defined(BOOST_SYSTEM_HAS_CONSTEXPR) - -// deprecated synonyms - -#ifdef BOOST_SYSTEM_ENABLE_DEPRECATED - -inline const error_category & get_system_category() { return system_category(); } -inline const error_category & get_generic_category() { return generic_category(); } -inline const error_category & get_posix_category() { return generic_category(); } -static const error_category & posix_category BOOST_ATTRIBUTE_UNUSED = generic_category(); -static const error_category & errno_ecat BOOST_ATTRIBUTE_UNUSED = generic_category(); -static const error_category & native_ecat BOOST_ATTRIBUTE_UNUSED = system_category(); - -#endif - -// enable_if - -namespace detail -{ - -template struct enable_if -{ - typedef T type; -}; - -template struct enable_if -{ -}; - -// failed_impl - -#if !defined(BOOST_SYSTEM_HAS_CONSTEXPR) - -inline bool failed_impl( int ev, error_category const & cat ) -{ - return cat.failed( ev ); -} - -#else - -BOOST_SYSTEM_CONSTEXPR inline bool failed_impl( int ev, error_category const & cat ) -{ - if( cat == system_category() || cat == generic_category() ) - { - return ev != 0; - } - else - { - return cat.failed( ev ); - } -} - -#endif - -} // namespace detail - -// class error_condition - -// error_conditions are portable, error_codes are system or library specific - -class error_condition -{ -private: - - int val_; - bool failed_; - error_category const * cat_; - -public: - - // constructors: - - BOOST_SYSTEM_CONSTEXPR error_condition() BOOST_NOEXCEPT: - val_( 0 ), failed_( false ), cat_( &generic_category() ) - { - } - - BOOST_SYSTEM_CONSTEXPR error_condition( int val, const error_category & cat ) BOOST_NOEXCEPT: - val_( val ), failed_( detail::failed_impl( val, cat ) ), cat_( &cat ) - { - } - - template BOOST_SYSTEM_CONSTEXPR error_condition( ErrorConditionEnum e, - typename detail::enable_if::value>::type* = 0) BOOST_NOEXCEPT - { - *this = make_error_condition( e ); - } - - // modifiers: - - BOOST_SYSTEM_CONSTEXPR void assign( int val, const error_category & cat ) BOOST_NOEXCEPT - { - val_ = val; - failed_ = detail::failed_impl( val, cat ); - cat_ = &cat; - } - - template - BOOST_SYSTEM_CONSTEXPR typename detail::enable_if::value, error_condition>::type & - operator=( ErrorConditionEnum val ) BOOST_NOEXCEPT - { - *this = make_error_condition( val ); - return *this; - } - - BOOST_SYSTEM_CONSTEXPR void clear() BOOST_NOEXCEPT - { - val_ = 0; - failed_ = false; - cat_ = &generic_category(); - } - - // observers: - - BOOST_SYSTEM_CONSTEXPR int value() const BOOST_NOEXCEPT - { - return val_; - } - - BOOST_SYSTEM_CONSTEXPR const error_category & category() const BOOST_NOEXCEPT - { - return *cat_; - } - - std::string message() const - { - return cat_->message( value() ); - } - - char const * message( char * buffer, std::size_t len ) const BOOST_NOEXCEPT - { - return cat_->message( value(), buffer, len ); - } - - BOOST_SYSTEM_CONSTEXPR bool failed() const BOOST_NOEXCEPT - { - return failed_; - } - -#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) - - BOOST_SYSTEM_CONSTEXPR explicit operator bool() const BOOST_NOEXCEPT // true if error - { - return failed_; - } - -#else - - typedef void (*unspecified_bool_type)(); - static void unspecified_bool_true() {} - - BOOST_SYSTEM_CONSTEXPR operator unspecified_bool_type() const BOOST_NOEXCEPT // true if error - { - return failed_? unspecified_bool_true: 0; - } - - BOOST_SYSTEM_CONSTEXPR bool operator!() const BOOST_NOEXCEPT // true if no error - { - return !failed_; - } - -#endif - - // relationals: - // the more symmetrical non-member syntax allows enum - // conversions work for both rhs and lhs. - - BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( const error_condition & lhs, const error_condition & rhs ) BOOST_NOEXCEPT - { - return lhs.val_ == rhs.val_ && *lhs.cat_ == *rhs.cat_; - } - - BOOST_SYSTEM_CONSTEXPR inline friend bool operator<( const error_condition & lhs, const error_condition & rhs ) BOOST_NOEXCEPT - { - return *lhs.cat_ < *rhs.cat_ || ( *lhs.cat_ == *rhs.cat_ && lhs.val_ < rhs.val_ ); - } - -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - - operator std::error_condition () const - { - return std::error_condition( value(), category() ); - } - -#endif -}; - -// class error_code - -// We want error_code to be a value type that can be copied without slicing -// and without requiring heap allocation, but we also want it to have -// polymorphic behavior based on the error category. This is achieved by -// abstract base class error_category supplying the polymorphic behavior, -// and error_code containing a pointer to an object of a type derived -// from error_category. - -class error_code -{ -private: - - int val_; - bool failed_; - const error_category * cat_; - -public: - - // constructors: - - BOOST_SYSTEM_CONSTEXPR error_code() BOOST_NOEXCEPT: - val_( 0 ), failed_( false ), cat_( &system_category() ) - { - } - - BOOST_SYSTEM_CONSTEXPR error_code( int val, const error_category & cat ) BOOST_NOEXCEPT: - val_( val ), failed_( detail::failed_impl( val, cat ) ), cat_( &cat ) - { - } - - template BOOST_SYSTEM_CONSTEXPR error_code( ErrorCodeEnum e, - typename detail::enable_if::value>::type* = 0 ) BOOST_NOEXCEPT - { - *this = make_error_code( e ); - } - - // modifiers: - - BOOST_SYSTEM_CONSTEXPR void assign( int val, const error_category & cat ) BOOST_NOEXCEPT - { - val_ = val; - failed_ = detail::failed_impl( val, cat ); - cat_ = &cat; - } - - template - BOOST_SYSTEM_CONSTEXPR typename detail::enable_if::value, error_code>::type & - operator=( ErrorCodeEnum val ) BOOST_NOEXCEPT - { - *this = make_error_code( val ); - return *this; - } - - BOOST_SYSTEM_CONSTEXPR void clear() BOOST_NOEXCEPT - { - val_ = 0; - failed_ = false; - cat_ = &system_category(); - } - - // observers: - - BOOST_SYSTEM_CONSTEXPR int value() const BOOST_NOEXCEPT - { - return val_; - } - - BOOST_SYSTEM_CONSTEXPR const error_category & category() const BOOST_NOEXCEPT - { - return *cat_; - } - - error_condition default_error_condition() const BOOST_NOEXCEPT - { - return cat_->default_error_condition( value() ); - } - - std::string message() const - { - return cat_->message( value() ); - } - - char const * message( char * buffer, std::size_t len ) const BOOST_NOEXCEPT - { - return cat_->message( value(), buffer, len ); - } - - BOOST_SYSTEM_CONSTEXPR bool failed() const BOOST_NOEXCEPT - { - return failed_; - } - -#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) - - BOOST_SYSTEM_CONSTEXPR explicit operator bool() const BOOST_NOEXCEPT // true if error - { - return failed_; - } - -#else - - typedef void (*unspecified_bool_type)(); - static void unspecified_bool_true() {} - - BOOST_SYSTEM_CONSTEXPR operator unspecified_bool_type() const BOOST_NOEXCEPT // true if error - { - return failed_? unspecified_bool_true: 0; - } - - BOOST_SYSTEM_CONSTEXPR bool operator!() const BOOST_NOEXCEPT // true if no error - { - return !failed_; - } - -#endif - - // relationals: - - // the more symmetrical non-member syntax allows enum - // conversions work for both rhs and lhs. - - BOOST_SYSTEM_CONSTEXPR inline friend bool operator==( const error_code & lhs, const error_code & rhs ) BOOST_NOEXCEPT - { - return lhs.val_ == rhs.val_ && *lhs.cat_ == *rhs.cat_; - } - - BOOST_SYSTEM_CONSTEXPR inline friend bool operator<( const error_code & lhs, const error_code & rhs ) BOOST_NOEXCEPT - { - return *lhs.cat_ < *rhs.cat_ || ( *lhs.cat_ == *rhs.cat_ && lhs.val_ < rhs.val_ ); - } - -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - - operator std::error_code () const - { - return std::error_code( value(), category() ); - } - -#endif -}; - -} // namespace system - -// boost::throws() - -namespace detail -{ - -// Misuse of the error_code object is turned into a noisy failure by -// poisoning the reference. This particular implementation doesn't -// produce warnings or errors from popular compilers, is very efficient -// (as determined by inspecting generated code), and does not suffer -// from order of initialization problems. In practice, it also seems -// cause user function error handling implementation errors to be detected -// very early in the development cycle. - -inline system::error_code* throws() -{ - // See github.com/boostorg/system/pull/12 by visigoth for why the return - // is poisoned with nonzero rather than (0). A test, test_throws_usage(), - // has been added to error_code_test.cpp, and as visigoth mentioned it - // fails on clang for release builds with a return of 0 but works fine - // with (1). - // Since the undefined behavior sanitizer (-fsanitize=undefined) does not - // allow a reference to be formed to the unaligned address of (1), we use - // (8) instead. - - return reinterpret_cast(8); -} - -} // namespace detail - -inline system::error_code& throws() -{ - return *detail::throws(); -} - -// non-member functions of error_code and error_condition - -namespace system -{ - -BOOST_SYSTEM_CONSTEXPR inline bool operator!=( const error_code & lhs, const error_code & rhs ) BOOST_NOEXCEPT -{ - return !( lhs == rhs ); -} - -BOOST_SYSTEM_CONSTEXPR inline bool operator!=( const error_condition & lhs, const error_condition & rhs ) BOOST_NOEXCEPT -{ - return !( lhs == rhs ); -} - -inline bool operator==( const error_code & code, const error_condition & condition ) BOOST_NOEXCEPT -{ - return code.category().equivalent( code.value(), condition ) || condition.category().equivalent( code, condition.value() ); -} - -inline bool operator!=( const error_code & lhs, const error_condition & rhs ) BOOST_NOEXCEPT -{ - return !( lhs == rhs ); -} - -inline bool operator==( const error_condition & condition, const error_code & code ) BOOST_NOEXCEPT -{ - return code.category().equivalent( code.value(), condition ) || condition.category().equivalent( code, condition.value() ); -} - -inline bool operator!=( const error_condition & lhs, const error_code & rhs ) BOOST_NOEXCEPT -{ - return !( lhs == rhs ); -} - -template - inline std::basic_ostream& - operator<< (std::basic_ostream& os, error_code ec) -{ - os << ec.category().name() << ':' << ec.value(); - return os; -} - -inline std::size_t hash_value( error_code const & ec ) -{ - error_category const & cat = ec.category(); - - boost::ulong_long_type id = cat.id_; - - if( id == 0 ) - { - id = reinterpret_cast( &cat ); - } - - boost::ulong_long_type hv = ( boost::ulong_long_type( 0xCBF29CE4 ) << 32 ) + 0x84222325; - boost::ulong_long_type const prime = ( boost::ulong_long_type( 0x00000100 ) << 32 ) + 0x000001B3; - - // id - - hv ^= id; - hv *= prime; - - // value - - hv ^= static_cast( ec.value() ); - hv *= prime; - - return static_cast( hv ); -} - -// make_* functions for errc::errc_t - -namespace errc -{ - -// explicit conversion: -BOOST_SYSTEM_CONSTEXPR inline error_code make_error_code( errc_t e ) BOOST_NOEXCEPT -{ - return error_code( e, generic_category() ); -} - -// implicit conversion: -BOOST_SYSTEM_CONSTEXPR inline error_condition make_error_condition( errc_t e ) BOOST_NOEXCEPT -{ - return error_condition( e, generic_category() ); -} - -} // namespace errc - -// error_category default implementation - -inline error_condition error_category::default_error_condition( int ev ) const BOOST_NOEXCEPT -{ - return error_condition( ev, *this ); -} - -inline bool error_category::equivalent( int code, const error_condition & condition ) const BOOST_NOEXCEPT -{ - return default_error_condition( code ) == condition; -} - -inline bool error_category::equivalent( const error_code & code, int condition ) const BOOST_NOEXCEPT -{ - return *this == code.category() && code.value() == condition; -} - -inline char const * error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT -{ - if( len == 0 ) - { - return buffer; - } - - if( len == 1 ) - { - buffer[0] = 0; - return buffer; - } - -#if !defined(BOOST_NO_EXCEPTIONS) - try -#endif - { - std::string m = this->message( ev ); - -# if defined( BOOST_MSVC ) -# pragma warning( push ) -# pragma warning( disable: 4996 ) -# elif defined(__clang__) && defined(__has_warning) -# pragma clang diagnostic push -# if __has_warning("-Wdeprecated-declarations") -# pragma clang diagnostic ignored "-Wdeprecated-declarations" -# endif -# endif - - std::strncpy( buffer, m.c_str(), len - 1 ); - buffer[ len-1 ] = 0; - -# if defined( BOOST_MSVC ) -# pragma warning( pop ) -# elif defined(__clang__) && defined(__has_warning) -# pragma clang diagnostic pop -# endif - - return buffer; - } -#if !defined(BOOST_NO_EXCEPTIONS) - catch( ... ) - { - return "Message text unavailable"; - } -#endif -} - -inline bool error_category::failed( int ev ) const BOOST_NOEXCEPT -{ - return ev != 0; -} - -} // namespace system - -} // namespace boost - -// generic_error_category implementation - -#include - -inline std::string boost::system::detail::generic_error_category::message( int ev ) const -{ - return generic_error_category_message( ev ); -} - -inline char const * boost::system::detail::generic_error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT -{ - return generic_error_category_message( ev, buffer, len ); -} - -// system_error_category implementation - -#if defined(BOOST_WINDOWS_API) - -#include - -inline boost::system::error_condition boost::system::detail::system_error_category::default_error_condition( int ev ) const BOOST_NOEXCEPT -{ - return system_category_default_error_condition_win32( ev ); -} - -inline std::string boost::system::detail::system_error_category::message( int ev ) const -{ - return system_category_message_win32( ev ); -} - -inline char const * boost::system::detail::system_error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT -{ - return system_category_message_win32( ev, buffer, len ); -} - -#else // #if defined(BOOST_WINDOWS_API) - -#include - -inline boost::system::error_condition boost::system::detail::system_error_category::default_error_condition( int ev ) const BOOST_NOEXCEPT -{ - return system_category_default_error_condition_posix( ev ); -} - -inline std::string boost::system::detail::system_error_category::message( int ev ) const -{ - return generic_error_category_message( ev ); -} - -inline char const * boost::system::detail::system_error_category::message( int ev, char * buffer, std::size_t len ) const BOOST_NOEXCEPT -{ - return generic_error_category_message( ev, buffer, len ); -} - -#endif // #if defined(BOOST_WINDOWS_API) - -// interoperability with std::error_code, std::error_condition - -#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) - -#include - -inline boost::system::error_category::operator std::error_category const & () const -{ - return boost::system::detail::to_std_category( *this ); -} - -#endif // #if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) +#include +#include +#include +#include +#include +#include +#include #endif // BOOST_SYSTEM_ERROR_CODE_HPP_INCLUDED diff --git a/src/boost/boost/system/error_condition.hpp b/src/boost/boost/system/error_condition.hpp new file mode 100644 index 000000000..a9a42e50c --- /dev/null +++ b/src/boost/boost/system/error_condition.hpp @@ -0,0 +1,13 @@ +#ifndef BOOST_SYSTEM_ERROR_CONDITION_HPP_INCLUDED +#define BOOST_SYSTEM_ERROR_CONDITION_HPP_INCLUDED + +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0 +// http://www.boost.org/LICENSE_1_0.txt +// +// See library home page at http://www.boost.org/libs/system + +#include +#include + +#endif // #ifndef BOOST_SYSTEM_ERROR_CONDITION_HPP_INCLUDED diff --git a/src/boost/boost/system/generic_category.hpp b/src/boost/boost/system/generic_category.hpp new file mode 100644 index 000000000..343044af6 --- /dev/null +++ b/src/boost/boost/system/generic_category.hpp @@ -0,0 +1,13 @@ +#ifndef BOOST_SYSTEM_GENERIC_CATEGORY_HPP_INCLUDED +#define BOOST_SYSTEM_GENERIC_CATEGORY_HPP_INCLUDED + +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0 +// http://www.boost.org/LICENSE_1_0.txt +// +// See library home page at http://www.boost.org/libs/system + +#include +#include + +#endif // #ifndef BOOST_SYSTEM_GENERIC_CATEGORY_HPP_INCLUDED diff --git a/src/boost/boost/system/is_error_code_enum.hpp b/src/boost/boost/system/is_error_code_enum.hpp new file mode 100644 index 000000000..82af35fff --- /dev/null +++ b/src/boost/boost/system/is_error_code_enum.hpp @@ -0,0 +1,30 @@ +#ifndef BOOST_SYSTEM_IS_ERROR_CODE_ENUM_HPP_INCLUDED +#define BOOST_SYSTEM_IS_ERROR_CODE_ENUM_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See library home page at http://www.boost.org/libs/system + +namespace boost +{ + +namespace system +{ + +class error_code; + +template struct is_error_code_enum +{ + static const bool value = false; +}; + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_IS_ERROR_CODE_ENUM_HPP_INCLUDED diff --git a/src/boost/boost/system/is_error_condition_enum.hpp b/src/boost/boost/system/is_error_condition_enum.hpp new file mode 100644 index 000000000..4cc5f0fbc --- /dev/null +++ b/src/boost/boost/system/is_error_condition_enum.hpp @@ -0,0 +1,30 @@ +#ifndef BOOST_SYSTEM_IS_ERROR_CONDITION_ENUM_HPP_INCLUDED +#define BOOST_SYSTEM_IS_ERROR_CONDITION_ENUM_HPP_INCLUDED + +// Copyright Beman Dawes 2006, 2007 +// Copyright Christoper Kohlhoff 2007 +// Copyright Peter Dimov 2017, 2018 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See library home page at http://www.boost.org/libs/system + +namespace boost +{ + +namespace system +{ + +class error_condition; + +template struct is_error_condition_enum +{ + static const bool value = false; +}; + +} // namespace system + +} // namespace boost + +#endif // #ifndef BOOST_SYSTEM_IS_ERROR_CONDITION_ENUM_HPP_INCLUDED diff --git a/src/boost/boost/system/system_category.hpp b/src/boost/boost/system/system_category.hpp new file mode 100644 index 000000000..efdacf4af --- /dev/null +++ b/src/boost/boost/system/system_category.hpp @@ -0,0 +1,14 @@ +#ifndef BOOST_SYSTEM_SYSTEM_CATEGORY_HPP_INCLUDED +#define BOOST_SYSTEM_SYSTEM_CATEGORY_HPP_INCLUDED + +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0 +// http://www.boost.org/LICENSE_1_0.txt +// +// See library home page at http://www.boost.org/libs/system + +#include +#include +#include + +#endif // #ifndef BOOST_SYSTEM_SYSTEM_CATEGORY_HPP_INCLUDED diff --git a/src/boost/boost/system/system_error.hpp b/src/boost/boost/system/system_error.hpp index 06d8b8e6a..1c70d2b37 100644 --- a/src/boost/boost/system/system_error.hpp +++ b/src/boost/boost/system/system_error.hpp @@ -1,84 +1,55 @@ -// Boost system_error.hpp --------------------------------------------------// - -// Copyright Beman Dawes 2006 - -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - #ifndef BOOST_SYSTEM_SYSTEM_ERROR_HPP #define BOOST_SYSTEM_SYSTEM_ERROR_HPP -#include +// Copyright Beman Dawes 2006 +// Copyright Peter Dimov 2021 +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include #include #include #include namespace boost { - namespace system - { - // class system_error ------------------------------------------------------------// - - class BOOST_SYMBOL_VISIBLE system_error : public std::runtime_error - // BOOST_SYMBOL_VISIBLE is needed by GCC to ensure system_error thrown from a shared - // library can be caught. See svn.boost.org/trac/boost/ticket/3697 - { - public: - explicit system_error( error_code ec ) - : std::runtime_error(""), m_error_code(ec) {} +namespace system +{ - system_error( error_code ec, const std::string & what_arg ) - : std::runtime_error(what_arg), m_error_code(ec) {} +class BOOST_SYMBOL_VISIBLE system_error: public std::runtime_error +{ +private: - system_error( error_code ec, const char* what_arg ) - : std::runtime_error(what_arg), m_error_code(ec) {} + error_code code_; - system_error( int ev, const error_category & ecat ) - : std::runtime_error(""), m_error_code(ev,ecat) {} +public: - system_error( int ev, const error_category & ecat, - const std::string & what_arg ) - : std::runtime_error(what_arg), m_error_code(ev,ecat) {} + explicit system_error( error_code const & ec ): + std::runtime_error( ec.what() ), code_( ec ) {} - system_error( int ev, const error_category & ecat, - const char * what_arg ) - : std::runtime_error(what_arg), m_error_code(ev,ecat) {} + system_error( error_code const & ec, std::string const & prefix ): + std::runtime_error( prefix + ": " + ec.what() ), code_( ec ) {} - virtual ~system_error() BOOST_NOEXCEPT_OR_NOTHROW {} + system_error( error_code const & ec, char const * prefix ): + std::runtime_error( std::string( prefix ) + ": " + ec.what() ), code_( ec ) {} - error_code code() const BOOST_NOEXCEPT { return m_error_code; } - const char * what() const BOOST_NOEXCEPT_OR_NOTHROW; + system_error( int ev, error_category const & ecat ): + std::runtime_error( error_code( ev, ecat ).what() ), code_( ev, ecat ) {} - private: - error_code m_error_code; - mutable std::string m_what; - }; + system_error( int ev, error_category const & ecat, std::string const & prefix ): + std::runtime_error( prefix + ": " + error_code( ev, ecat ).what() ), code_( ev, ecat ) {} - // implementation ------------------------------------------------------// + system_error( int ev, error_category const & ecat, char const * prefix ): + std::runtime_error( std::string( prefix ) + ": " + error_code( ev, ecat ).what() ), code_( ev, ecat ) {} - inline const char * system_error::what() const BOOST_NOEXCEPT_OR_NOTHROW - // see http://www.boost.org/more/error_handling.html for lazy build rationale + error_code code() const BOOST_NOEXCEPT { - if ( m_what.empty() ) - { -#ifndef BOOST_NO_EXCEPTIONS - try -#endif - { - m_what = this->std::runtime_error::what(); - if ( !m_what.empty() ) m_what += ": "; - m_what += m_error_code.message(); - } -#ifndef BOOST_NO_EXCEPTIONS - catch (...) { return std::runtime_error::what(); } -#endif - } - return m_what.c_str(); + return code_; } +}; - } // namespace system +} // namespace system } // namespace boost #endif // BOOST_SYSTEM_SYSTEM_ERROR_HPP - - diff --git a/src/boost/boost/throw_exception.hpp b/src/boost/boost/throw_exception.hpp index 6a540aa27..64c90c4d8 100644 --- a/src/boost/boost/throw_exception.hpp +++ b/src/boost/boost/throw_exception.hpp @@ -1,5 +1,5 @@ -#ifndef UUID_AA15E74A856F11E08B8D93F24824019B -#define UUID_AA15E74A856F11E08B8D93F24824019B +#ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED +#define BOOST_THROW_EXCEPTION_HPP_INCLUDED // MS compatible compilers support #pragma once @@ -7,97 +7,272 @@ # pragma once #endif -// // boost/throw_exception.hpp // -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. +// Copyright (c) 2002, 2018-2022 Peter Dimov // Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc. // // 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) // -// http://www.boost.org/libs/utility/throw_exception.html -// +// http://www.boost.org/libs/throw_exception +#include +#include #include -#include +#include #include - -#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x593) ) -# define BOOST_EXCEPTION_DISABLE +#include +#include +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#include #endif -#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, < 1310 ) +#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( BOOST_BORLANDC ) && BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x593) ) # define BOOST_EXCEPTION_DISABLE #endif -#if !defined( BOOST_EXCEPTION_DISABLE ) -# include -#if !defined(BOOST_THROW_EXCEPTION_CURRENT_FUNCTION) -# include -# define BOOST_THROW_EXCEPTION_CURRENT_FUNCTION BOOST_CURRENT_FUNCTION +namespace boost +{ + +#if defined( BOOST_NO_EXCEPTIONS ) + +BOOST_NORETURN void throw_exception( std::exception const & e ); // user defined +BOOST_NORETURN void throw_exception( std::exception const & e, boost::source_location const & loc ); // user defined + #endif -# define BOOST_THROW_EXCEPTION(x) ::boost::exception_detail::throw_exception_(x,BOOST_THROW_EXCEPTION_CURRENT_FUNCTION,__FILE__,__LINE__) + +// boost::wrapexcept + +namespace detail +{ + +typedef char (&wrapexcept_s1)[ 1 ]; +typedef char (&wrapexcept_s2)[ 2 ]; + +template wrapexcept_s1 wrapexcept_is_convertible( T* ); +template wrapexcept_s2 wrapexcept_is_convertible( void* ); + +template( static_cast< E* >( BOOST_NULLPTR ) ) ) > struct wrapexcept_add_base; + +template struct wrapexcept_add_base +{ + struct type {}; +}; + +template struct wrapexcept_add_base +{ + typedef B type; +}; + +} // namespace detail + +template struct BOOST_SYMBOL_VISIBLE wrapexcept: + public detail::wrapexcept_add_base::type, + public E, + public detail::wrapexcept_add_base::type +{ +private: + + struct deleter + { + wrapexcept * p_; + ~deleter() { delete p_; } + }; + +private: + + void copy_from( void const* ) + { + } + + void copy_from( boost::exception const* p ) + { + static_cast( *this ) = *p; + } + +public: + + explicit wrapexcept( E const & e ): E( e ) + { + copy_from( &e ); + } + + explicit wrapexcept( E const & e, boost::source_location const & loc ): E( e ) + { + copy_from( &e ); + + set_info( *this, throw_file( loc.file_name() ) ); + set_info( *this, throw_line( static_cast( loc.line() ) ) ); + set_info( *this, throw_function( loc.function_name() ) ); + set_info( *this, throw_column( static_cast( loc.column() ) ) ); + } + + virtual boost::exception_detail::clone_base const * clone() const BOOST_OVERRIDE + { + wrapexcept * p = new wrapexcept( *this ); + deleter del = { p }; + + boost::exception_detail::copy_boost_exception( p, this ); + + del.p_ = BOOST_NULLPTR; + return p; + } + + virtual void rethrow() const BOOST_OVERRIDE + { +#if defined( BOOST_NO_EXCEPTIONS ) + + boost::throw_exception( *this ); + #else -# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x) -#endif -#if defined(__GNUC__) && (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) -#pragma GCC system_header -#endif -#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) -#pragma warning(push,1) + throw *this; + #endif + } +}; + +// All boost exceptions are required to derive from std::exception, +// to ensure compatibility with BOOST_NO_EXCEPTIONS. + +inline void throw_exception_assert_compatibility( std::exception const & ) {} + +// boost::throw_exception + +#if !defined( BOOST_NO_EXCEPTIONS ) + +#if defined( BOOST_EXCEPTION_DISABLE ) + +template BOOST_NORETURN void throw_exception( E const & e ) +{ + throw_exception_assert_compatibility( e ); + throw e; +} + +template BOOST_NORETURN void throw_exception( E const & e, boost::source_location const & ) +{ + throw_exception_assert_compatibility( e ); + throw e; +} + +#else // defined( BOOST_EXCEPTION_DISABLE ) + +template BOOST_NORETURN void throw_exception( E const & e ) +{ + throw_exception_assert_compatibility( e ); + throw wrapexcept( e ); +} + +template BOOST_NORETURN void throw_exception( E const & e, boost::source_location const & loc ) +{ + throw_exception_assert_compatibility( e ); + throw wrapexcept( e, loc ); +} + +#endif // defined( BOOST_EXCEPTION_DISABLE ) + +#endif // !defined( BOOST_NO_EXCEPTIONS ) + +} // namespace boost + +// BOOST_THROW_EXCEPTION + +#define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x, BOOST_CURRENT_LOCATION) namespace boost { -#ifdef BOOST_NO_EXCEPTIONS -void throw_exception( std::exception const & e ); // user defined +// throw_with_location -#else +namespace detail +{ + +struct BOOST_SYMBOL_VISIBLE throw_location +{ + boost::source_location location_; -inline void throw_exception_assert_compatibility( std::exception const & ) { } + explicit throw_location( boost::source_location const & loc ): location_( loc ) + { + } +}; -template BOOST_NORETURN inline void throw_exception( E const & e ) +template class BOOST_SYMBOL_VISIBLE with_throw_location: public E, public throw_location { - //All boost exceptions are required to derive from std::exception, - //to ensure compatibility with BOOST_NO_EXCEPTIONS. - throw_exception_assert_compatibility(e); +public: + + with_throw_location( E const & e, boost::source_location const & loc ): E( e ), throw_location( loc ) + { + } + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + + with_throw_location( E && e, boost::source_location const & loc ): E( std::move( e ) ), throw_location( loc ) + { + } + +#endif +}; + +} // namespace detail + +#if !defined(BOOST_NO_EXCEPTIONS) + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) + +template BOOST_NORETURN void throw_with_location( E && e, boost::source_location const & loc = BOOST_CURRENT_LOCATION ) +{ + throw_exception_assert_compatibility( e ); + throw detail::with_throw_location::type>( std::forward( e ), loc ); +} -#ifndef BOOST_EXCEPTION_DISABLE - throw exception_detail::enable_both( e ); #else - throw e; + +template BOOST_NORETURN void throw_with_location( E const & e, boost::source_location const & loc = BOOST_CURRENT_LOCATION ) +{ + throw_exception_assert_compatibility( e ); + throw detail::with_throw_location( e, loc ); +} + #endif + +#else + +template BOOST_NORETURN void throw_with_location( E const & e, boost::source_location const & loc = BOOST_CURRENT_LOCATION ) +{ + boost::throw_exception( e, loc ); } #endif -#if !defined( BOOST_EXCEPTION_DISABLE ) - namespace - exception_detail +// get_throw_location + +template boost::source_location get_throw_location( E const & e ) +{ +#if defined(BOOST_NO_RTTI) + + (void)e; + return boost::source_location(); + +#else + + if( detail::throw_location const* pl = dynamic_cast< detail::throw_location const* >( &e ) ) + { + return pl->location_; + } + else if( boost::exception const* px = dynamic_cast< boost::exception const* >( &e ) ) { - template - BOOST_NORETURN - void - throw_exception_( E const & x, char const * current_function, char const * file, int line ) - { - boost::throw_exception( - set_info( - set_info( - set_info( - enable_error_info(x), - throw_function(current_function)), - throw_file(file)), - throw_line(line))); - } + return exception_detail::get_exception_throw_location( *px ); } + else + { + return boost::source_location(); + } + #endif +} + } // namespace boost -#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) -#pragma warning(pop) -#endif -#endif +#endif // #ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED diff --git a/src/boost/boost/token_functions.hpp b/src/boost/boost/token_functions.hpp index 0846a9432..1e60bfcfd 100644 --- a/src/boost/boost/token_functions.hpp +++ b/src/boost/boost/token_functions.hpp @@ -38,9 +38,9 @@ #include // for find_if #include #include +#include #include #include -#include #include #if !defined(BOOST_NO_CWCTYPE) #include @@ -324,7 +324,7 @@ namespace boost{ // This portably gets the iterator_tag without partial template specialization template struct get_iterator_category{ - typedef typename mpl::if_, + typedef typename conditional::value, pointer_iterator_category, class_iterator_category >::type cat; diff --git a/src/boost/boost/type_traits/add_pointer.hpp b/src/boost/boost/type_traits/add_pointer.hpp index bbee70dda..d7ae8e4e4 100644 --- a/src/boost/boost/type_traits/add_pointer.hpp +++ b/src/boost/boost/type_traits/add_pointer.hpp @@ -13,7 +13,7 @@ namespace boost { -#if defined(__BORLANDC__) && (__BORLANDC__ < 0x5A0) +#if defined(BOOST_BORLANDC) && (BOOST_BORLANDC < 0x5A0) // // For some reason this implementation stops Borlands compiler // from dropping cv-qualifiers, it still fails with references diff --git a/src/boost/boost/type_traits/aligned_storage.hpp b/src/boost/boost/type_traits/aligned_storage.hpp index d9b10691b..7f0e9d966 100644 --- a/src/boost/boost/type_traits/aligned_storage.hpp +++ b/src/boost/boost/type_traits/aligned_storage.hpp @@ -73,7 +73,7 @@ template < , std::size_t alignment_ = std::size_t(-1) > class aligned_storage : -#ifndef __BORLANDC__ +#ifndef BOOST_BORLANDC private #else public diff --git a/src/boost/boost/type_traits/alignment_of.hpp b/src/boost/boost/type_traits/alignment_of.hpp index 0dcf435ee..f156c5e14 100644 --- a/src/boost/boost/type_traits/alignment_of.hpp +++ b/src/boost/boost/type_traits/alignment_of.hpp @@ -19,7 +19,7 @@ # pragma warning(push) # pragma warning(disable: 4121 4512) // alignment is sensitive to packing #endif -#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600) +#if defined(BOOST_BORLANDC) && (BOOST_BORLANDC < 0x600) #pragma option push -Vx- -Ve- #endif @@ -91,7 +91,7 @@ template struct alignment_of : public integral_constant struct alignment_of : public alignment_of{}; -#ifdef __BORLANDC__ +#ifdef BOOST_BORLANDC // long double gives an incorrect value of 10 (!) // unless we do this... struct long_double_wrapper{ long double ld; }; @@ -108,7 +108,7 @@ template<> struct alignment_of : integral_constant +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) +#include +#endif + +namespace boost { + +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) +template +struct conjunction + : true_type { }; + +template +struct conjunction + : T { }; + +template +struct conjunction + : conditional, T>::type { }; +#else +template +struct conjunction + : conditional::type { }; +#endif + +} /* boost */ + +#endif diff --git a/src/boost/boost/type_traits/decay.hpp b/src/boost/boost/type_traits/decay.hpp deleted file mode 100644 index 4d847787a..000000000 --- a/src/boost/boost/type_traits/decay.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// (C) Copyright John Maddock & Thorsten Ottosen 2005. -// Use, modification and distribution are subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt). -// -// See http://www.boost.org/libs/type_traits for most recent version including documentation. - - -#ifndef BOOST_TT_DECAY_HPP_INCLUDED -#define BOOST_TT_DECAY_HPP_INCLUDED - -#include -#include -#include -#include -#include -#include - -namespace boost -{ - - namespace detail - { - - template struct decay_imp { typedef typename remove_cv::type type; }; - template struct decay_imp { typedef typename remove_bounds::type* type; }; - template struct decay_imp { typedef T* type; }; - - } - - template< class T > - struct decay - { - private: - typedef typename remove_reference::type Ty; - public: - typedef typename boost::detail::decay_imp::value, boost::is_function::value>::type type; - }; - -#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) - - template using decay_t = typename decay::type; - -#endif - -} // namespace boost - - -#endif // BOOST_TT_DECAY_HPP_INCLUDED diff --git a/src/boost/boost/type_traits/detail/config.hpp b/src/boost/boost/type_traits/detail/config.hpp index cb9cb94c2..2da414ed2 100644 --- a/src/boost/boost/type_traits/detail/config.hpp +++ b/src/boost/boost/type_traits/detail/config.hpp @@ -20,7 +20,7 @@ // it needs to be declared __cdecl to suppress compiler // warnings from MS and Borland compilers (this *must* // appear before we include is_same.hpp below): -#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32)) +#if defined(BOOST_MSVC) || (defined(BOOST_BORLANDC) && !defined(BOOST_DISABLE_WIN32)) # define BOOST_TT_DECL __cdecl #else # define BOOST_TT_DECL /**/ @@ -28,7 +28,7 @@ # if (BOOST_WORKAROUND(__MWERKS__, < 0x3000) \ || BOOST_WORKAROUND(__IBMCPP__, < 600 ) \ - || BOOST_WORKAROUND(__BORLANDC__, < 0x5A0) \ + || BOOST_WORKAROUND(BOOST_BORLANDC, < 0x5A0) \ || defined(__ghs) \ || BOOST_WORKAROUND(__HP_aCC, < 60700) \ || BOOST_WORKAROUND(MPW_CPLUS, BOOST_TESTED_AT(0x890)) \ @@ -48,7 +48,7 @@ // when we want to test __stdcall etc function types with is_function etc // (Note, does not work with Borland, even though it does support __stdcall etc): // -#if defined(_MSC_EXTENSIONS) && !defined(__BORLANDC__) +#if defined(_MSC_EXTENSIONS) && !defined(BOOST_BORLANDC) # define BOOST_TT_TEST_MS_FUNC_SIGS #endif @@ -81,11 +81,35 @@ // // Can we implement accurate is_function/is_member_function_pointer (post C++03)? // -#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !BOOST_WORKAROUND(BOOST_GCC, < 40900)\ +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !BOOST_WORKAROUND(BOOST_GCC, < 40805)\ && !BOOST_WORKAROUND(BOOST_MSVC, < 1900) && !BOOST_WORKAROUND(__clang_major__, <= 4) -# define BOOST_TT_HAS_ASCCURATE_IS_FUNCTION +# define BOOST_TT_HAS_ACCURATE_IS_FUNCTION #endif +#if defined(_MSVC_LANG) && (_MSVC_LANG >= 201703) +# define BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM +#endif +#if defined(__APPLE_CC__) && defined(__clang_major__) && (__clang_major__ == 9) && (__clang_minor__ == 0) +# define BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM +# define BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE +#endif +// +// If we have the SD6 macros (check for C++11's __cpp_rvalue_references), and we don't have __cpp_noexcept_function_type +// set, then don't treat noexcept functions as seperate types. This is a fix for msvc with the /Zc:noexceptTypes- flag set. +// +#if defined(__cpp_rvalue_references) && !defined(__cpp_noexcept_function_type) && !defined(BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE) +# define BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE +#endif +// +// Check MSVC specific macro on older msvc compilers that don't support the SD6 macros, we don't rely on this +// if the SD6 macros *are* available as it appears to be undocumented. +// +#if defined(BOOST_MSVC) && !defined(__cpp_rvalue_references) && !defined(BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE) && !defined(_NOEXCEPT_TYPES_SUPPORTED) +# define BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE +#endif +#if defined(__cpp_rvalue_references) && defined(__NVCC__) && defined(__CUDACC__) && !defined(BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE) +# define BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE +#endif #endif // BOOST_TT_CONFIG_HPP_INCLUDED diff --git a/src/boost/boost/type_traits/detail/has_binary_operator.hpp b/src/boost/boost/type_traits/detail/has_binary_operator.hpp index e743e9430..0ff5b288e 100644 --- a/src/boost/boost/type_traits/detail/has_binary_operator.hpp +++ b/src/boost/boost/type_traits/detail/has_binary_operator.hpp @@ -47,25 +47,25 @@ namespace boost struct dont_care; - template > + template struct BOOST_JOIN(BOOST_TT_TRAIT_NAME, _ret_imp) : public boost::false_type {}; template - struct BOOST_JOIN(BOOST_TT_TRAIT_NAME, _ret_imp)::type>() BOOST_TT_TRAIT_OP std::declval::type>())> > + struct BOOST_JOIN(BOOST_TT_TRAIT_NAME, _ret_imp)::type>() BOOST_TT_TRAIT_OP std::declval::type>())>::type> : public boost::integral_constant::type>() BOOST_TT_TRAIT_OP std::declval::type>()), Ret>::value> {}; - template > + template struct BOOST_JOIN(BOOST_TT_TRAIT_NAME, _void_imp) : public boost::false_type {}; template - struct BOOST_JOIN(BOOST_TT_TRAIT_NAME, _void_imp)::type>() BOOST_TT_TRAIT_OP std::declval::type>())> > + struct BOOST_JOIN(BOOST_TT_TRAIT_NAME, _void_imp)::type>() BOOST_TT_TRAIT_OP std::declval::type>())>::type> : public boost::integral_constant::type>() BOOST_TT_TRAIT_OP std::declval::type>())>::value> {}; - template > + template struct BOOST_JOIN(BOOST_TT_TRAIT_NAME, _dc_imp) : public boost::false_type {}; template - struct BOOST_JOIN(BOOST_TT_TRAIT_NAME, _dc_imp)::type>() BOOST_TT_TRAIT_OP std::declval::type>())> > + struct BOOST_JOIN(BOOST_TT_TRAIT_NAME, _dc_imp)::type>() BOOST_TT_TRAIT_OP std::declval::type>())>::type> : public boost::true_type {}; } diff --git a/src/boost/boost/type_traits/detail/is_function_cxx_03.hpp b/src/boost/boost/type_traits/detail/is_function_cxx_03.hpp index dcd0d1e27..77e03f83c 100644 --- a/src/boost/boost/type_traits/detail/is_function_cxx_03.hpp +++ b/src/boost/boost/type_traits/detail/is_function_cxx_03.hpp @@ -28,7 +28,7 @@ namespace boost { -#if !defined( __CODEGEARC__ ) +#if !defined( BOOST_CODEGEARC ) namespace detail { @@ -86,9 +86,9 @@ struct is_function_impl : public false_type } // namespace detail -#endif // !defined( __CODEGEARC__ ) +#endif // !defined( BOOST_CODEGEARC ) -#if defined( __CODEGEARC__ ) +#if defined( BOOST_CODEGEARC ) template struct is_function : integral_constant {}; #else template struct is_function : integral_constant::value> {}; diff --git a/src/boost/boost/type_traits/detail/is_function_cxx_11.hpp b/src/boost/boost/type_traits/detail/is_function_cxx_11.hpp index b87a33d79..74f165127 100644 --- a/src/boost/boost/type_traits/detail/is_function_cxx_11.hpp +++ b/src/boost/boost/type_traits/detail/is_function_cxx_11.hpp @@ -18,7 +18,7 @@ namespace boost { template struct is_function : public false_type {}; -#if defined(__cpp_noexcept_function_type) && !defined(_MSC_VER) +#if defined(__cpp_noexcept_function_type) && !defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM) #define BOOST_TT_NOEXCEPT_PARAM , bool NE #define BOOST_TT_NOEXCEPT_DECL noexcept(NE) #else @@ -32,462 +32,637 @@ namespace boost { #define BOOST_TT_DEF_CALL #endif +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: + +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: + +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // Reference qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // rvalue reference qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; -#ifdef _MSC_VER -#ifdef __CLR_VER + +#if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) + +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_X64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const: -#ifdef __CLR_VER + +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // reference qualified: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // rvalue reference qualified: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif #endif // _MSC_VER // All over again for msvc with noexcept: -#if defined(_MSVC_LANG) && (_MSVC_LANG >= 201703) +#if defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM) && !defined(BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE) #undef BOOST_TT_NOEXCEPT_DECL #define BOOST_TT_NOEXCEPT_DECL noexcept +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // Reference qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // rvalue reference qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const qualified: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // volatile: +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; // const volatile +#if !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template struct is_function : public true_type {}; +#endif template struct is_function : public true_type {}; -#ifdef _MSC_VER -#ifdef __CLR_VER + +#if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) + +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // reference qualified: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // rvalue reference qualified: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_function : public true_type {}; + struct is_function : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_function : public true_type {}; + struct is_function : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_function : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_function : public true_type {}; +#endif +#endif -#endif // _MSC_VER +#endif // defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) #endif diff --git a/src/boost/boost/type_traits/detail/is_function_ptr_helper.hpp b/src/boost/boost/type_traits/detail/is_function_ptr_helper.hpp index c6ca3398e..d47fea5e5 100644 --- a/src/boost/boost/type_traits/detail/is_function_ptr_helper.hpp +++ b/src/boost/boost/type_traits/detail/is_function_ptr_helper.hpp @@ -49,7 +49,7 @@ struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -63,7 +63,7 @@ struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = tr template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -77,7 +77,7 @@ struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -91,7 +91,7 @@ struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, va template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -105,7 +105,7 @@ struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -119,7 +119,7 @@ struct is_function_ptr_helper { BOOST_STATIC_CONSTANT( template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -133,7 +133,7 @@ struct is_function_ptr_helper { BOOST_STATIC_CONST template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -147,7 +147,7 @@ struct is_function_ptr_helper { BOOST_STATIC_C template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -161,7 +161,7 @@ struct is_function_ptr_helper { BOOST_STAT template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -175,7 +175,7 @@ struct is_function_ptr_helper { BOOST_ template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -189,7 +189,7 @@ struct is_function_ptr_helper { BO template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -203,7 +203,7 @@ struct is_function_ptr_helper template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -217,7 +217,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -231,7 +231,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -245,7 +245,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -259,7 +259,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -273,7 +273,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -287,7 +287,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -301,7 +301,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -315,7 +315,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -329,7 +329,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -343,7 +343,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -357,7 +357,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -371,7 +371,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -385,7 +385,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -399,7 +399,7 @@ struct is_function_ptr_helper struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -432,7 +432,7 @@ struct is_function_ptr_helper { template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; @#endif -@#if __cpp_noexcept_function_type +@#ifdef __cpp_noexcept_function_type template struct is_function_ptr_helper { BOOST_STATIC_CONSTANT(bool, value = true); }; @#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING diff --git a/src/boost/boost/type_traits/detail/is_function_ptr_tester.hpp b/src/boost/boost/type_traits/detail/is_function_ptr_tester.hpp index 3b61db08d..6e6e66a35 100644 --- a/src/boost/boost/type_traits/detail/is_function_ptr_tester.hpp +++ b/src/boost/boost/type_traits/detail/is_function_ptr_tester.hpp @@ -44,368 +44,524 @@ no_type BOOST_TT_DECL is_function_ptr_tester(...); // cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename template -yes_type is_function_ptr_tester(R (*)()); +yes_type is_function_ptr_tester(R(*)()); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING template -yes_type is_function_ptr_tester(R (*)( ...)); +yes_type is_function_ptr_tester(R(*)(...)); +#endif #ifdef BOOST_TT_TEST_MS_FUNC_SIGS template -yes_type is_function_ptr_tester(R (__stdcall*)()); +yes_type is_function_ptr_tester(R(__stdcall*)()); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)()); +#endif #ifndef _MANAGED template -yes_type is_function_ptr_tester(R (__fastcall*)()); +yes_type is_function_ptr_tester(R(__fastcall*)()); #endif template -yes_type is_function_ptr_tester(R (__cdecl*)()); +yes_type is_function_ptr_tester(R(__cdecl*)()); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0)); -template -yes_type is_function_ptr_tester(R (*)( T0 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)); +#endif +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)); +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)); +#endif +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...)); #endif -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)); -template -yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...)); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)); +template +yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)); +#endif #ifndef _MANAGED -template -yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)); +template +yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)); #endif -template -yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)); +template +yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)); #endif #else @@ -437,6 +593,10 @@ yes_type is_function_ptr_tester(R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) . @#ifdef BOOST_TT_TEST_MS_FUNC_SIGS template yes_type is_function_ptr_tester(R (__stdcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T))); +@#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_function_ptr_tester(R(__vectorcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T))); +@#endif @#ifndef _MANAGED template yes_type is_function_ptr_tester(R (__fastcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T))); diff --git a/src/boost/boost/type_traits/detail/is_likely_lambda.hpp b/src/boost/boost/type_traits/detail/is_likely_lambda.hpp index 7cb46bb5a..e65fd2e07 100644 --- a/src/boost/boost/type_traits/detail/is_likely_lambda.hpp +++ b/src/boost/boost/type_traits/detail/is_likely_lambda.hpp @@ -27,7 +27,8 @@ struct is_likely_stateless_lambda : public false_type {}; }} -#elif !defined(BOOST_NO_CXX11_LAMBDAS) && !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) && !BOOST_WORKAROUND(BOOST_MSVC, < 1900) +#elif !defined(BOOST_NO_CXX11_LAMBDAS) && !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) && !BOOST_WORKAROUND(BOOST_MSVC, < 1900)\ + && !(BOOST_WORKAROUND(BOOST_MSVC, == 1900) && defined(_MANAGED)) #include #include diff --git a/src/boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp b/src/boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp index 2886d6420..a53815203 100644 --- a/src/boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +++ b/src/boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp @@ -67,7 +67,7 @@ template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -113,7 +113,7 @@ template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -159,7 +159,7 @@ template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -205,7 +205,7 @@ template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -251,7 +251,7 @@ template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -297,7 +297,7 @@ template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -343,7 +343,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -389,7 +389,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -435,7 +435,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -481,7 +481,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -527,7 +527,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -573,7 +573,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -619,7 +619,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -665,7 +665,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -711,7 +711,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -757,7 +757,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -803,7 +803,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -849,7 +849,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -895,7 +895,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -941,7 +941,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -987,7 +987,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -1033,7 +1033,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -1079,7 +1079,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -1125,7 +1125,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -1171,7 +1171,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -1217,7 +1217,7 @@ template { BOOST_STATIC_CONSTANT(bool, value = true); }; #endif #endif -#if __cpp_noexcept_function_type +#ifdef __cpp_noexcept_function_type template struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; #ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING @@ -1290,7 +1290,7 @@ struct is_mem_fun_pointer_impl struct is_mem_fun_pointer_impl { BOOST_STATIC_CONSTANT(bool, value = true); }; diff --git a/src/boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp b/src/boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp index 3e924d938..802fbb76a 100644 --- a/src/boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +++ b/src/boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp @@ -43,1669 +43,1460 @@ no_type BOOST_TT_DECL is_mem_fun_pointer_tester(...); // cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)()); - +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)()); template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() const); - +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)() const); template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() volatile); - +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)() volatile); template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() const volatile); - +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)() const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...)); - +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(...)); template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) const); - +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(...) const); template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) volatile); - +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(...) volatile); template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) const volatile); +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(...) const volatile); +#endif #ifdef BOOST_TT_TEST_MS_FUNC_SIGS template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)()); - +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)()); template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() const); - +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)() const); template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() volatile); - +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)() volatile); template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() const volatile); - +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)() const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)()); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)() const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)() volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)() const volatile); +#endif #ifndef _MANAGED template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)()); - +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)()); template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() const); - +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)() const); template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() volatile); - +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)() volatile); template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() const volatile); - +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)() const volatile); #endif - template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)()); - +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)()); template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() const); - +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)() const); template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() volatile); - +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)() volatile); template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() const volatile); - +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)() const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile); - #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile); - -#ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile); - +#ifndef _MANAGED +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile); +#endif +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile); +#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...)); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) const); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) volatile); +template +yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) const volatile); #endif -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...)); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile); #ifdef BOOST_TT_TEST_MS_FUNC_SIGS -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile); +#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile); +#endif #ifndef _MANAGED -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile); #endif - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile); - -template -yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile); - +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile); +template +yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile); #endif #else @@ -1766,7 +1557,19 @@ yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_EN template yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile); +@#if (_MSC_VER >= 1800) && !defined(_MANAGED) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)) +template +yes_type is_mem_fun_pointer_tester(R (__vectorcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T))); + +template +yes_type is_mem_fun_pointer_tester(R (__vectorcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const); +template +yes_type is_mem_fun_pointer_tester(R (__vectorcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile); + +template +yes_type is_mem_fun_pointer_tester(R (__vectorcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile); +@#endif @#ifndef _MANAGED template yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T))); diff --git a/src/boost/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp b/src/boost/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp index ae7839acb..765335801 100644 --- a/src/boost/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +++ b/src/boost/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp @@ -11,7 +11,7 @@ #ifndef BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_03_HPP_INCLUDED #define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_03_HPP_INCLUDED -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS) // // Note: we use the "workaround" version for MSVC because it works for // __stdcall etc function types, where as the partial specialisation @@ -29,9 +29,9 @@ namespace boost { -#if defined( __CODEGEARC__ ) +#if defined( BOOST_CODEGEARC ) template struct is_member_function_pointer : public integral_constant {}; -#elif !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS) +#elif !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS) template struct is_member_function_pointer : public ::boost::integral_constant::type>::value>{}; @@ -40,7 +40,7 @@ template struct is_member_function_pointer namespace detail { -#ifndef __BORLANDC__ +#ifndef BOOST_BORLANDC template struct is_mem_fun_pointer_select diff --git a/src/boost/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp b/src/boost/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp index c4fc6ccfa..f4582f468 100644 --- a/src/boost/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +++ b/src/boost/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp @@ -31,7 +31,7 @@ namespace boost { template struct is_member_function_pointer : public is_member_function_pointer {}; -#if defined(_MSVC_LANG) && (_MSVC_LANG >= 201703) +#if defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM) // MSVC can't handle noexcept(b) as a deduced template parameter // so we will have to write everything out :( #define BOOST_TT_NOEXCEPT_PARAM @@ -108,192 +108,262 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; -#ifdef _MSC_VER -#ifdef __CLR_VER +#if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif // reference qualified: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif // rvalue reference qualified: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; #endif +#endif + +#endif -#if defined(_MSVC_LANG) && (_MSVC_LANG >= 201703) +#if defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM) && !defined(BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE) #undef BOOST_TT_NOEXCEPT_DECL #define BOOST_TT_NOEXCEPT_DECL noexcept @@ -362,189 +432,259 @@ namespace boost { template struct is_member_function_pointer : public true_type {}; -#ifdef _MSC_VER -#ifdef __CLR_VER +#if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif // reference qualified: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif // rvalue reference qualified: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; + template + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; +#endif +#endif + // const volatile: -#ifdef __CLR_VER +#if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE) + template + struct is_member_function_pointer : public true_type {}; template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; #endif -#ifndef _M_AMD64 +#ifdef _MANAGED template - struct is_member_function_pointer : public true_type {}; + struct is_member_function_pointer : public true_type {}; +#else +#ifndef _M_AMD64 template struct is_member_function_pointer : public true_type {}; - template - struct is_member_function_pointer : public true_type {}; #endif +#if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64) template struct is_member_function_pointer : public true_type {}; #endif +#endif + +#endif // defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64) #endif diff --git a/src/boost/boost/type_traits/disjunction.hpp b/src/boost/boost/type_traits/disjunction.hpp new file mode 100644 index 000000000..6a7000450 --- /dev/null +++ b/src/boost/boost/type_traits/disjunction.hpp @@ -0,0 +1,40 @@ +/* +Copyright 2020 Glen Joseph Fernandes +(glenjofe@gmail.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) +*/ + +#ifndef BOOST_TT_DISJUNCTION_HPP_INCLUDED +#define BOOST_TT_DISJUNCTION_HPP_INCLUDED + +#include +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) +#include +#endif + +namespace boost { + +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) +template +struct disjunction + : false_type { }; + +template +struct disjunction + : T { }; + +template +struct disjunction + : conditional >::type { }; +#else +template +struct disjunction + : conditional::type { }; +#endif + +} /* boost */ + +#endif diff --git a/src/boost/boost/type_traits/has_minus.hpp b/src/boost/boost/type_traits/has_minus.hpp index 4cf2c811f..18879e51e 100644 --- a/src/boost/boost/type_traits/has_minus.hpp +++ b/src/boost/boost/type_traits/has_minus.hpp @@ -52,25 +52,25 @@ namespace boost struct dont_care; - template > + template struct has_minus_ret_imp : public boost::false_type {}; template - struct has_minus_ret_imp::type>() - std::declval::type>())> > + struct has_minus_ret_imp::type>() - std::declval::type>())>::type> : public boost::integral_constant::type>() - std::declval::type>()), Ret>::value> {}; - template > + template struct has_minus_void_imp : public boost::false_type {}; template - struct has_minus_void_imp::type>() - std::declval::type>())> > + struct has_minus_void_imp::type>() - std::declval::type>())>::type> : public boost::integral_constant::type>() - std::declval::type>())>::value> {}; - template > + template struct has_minus_dc_imp : public boost::false_type {}; template - struct has_minus_dc_imp::type>() - std::declval::type>())> > + struct has_minus_dc_imp::type>() - std::declval::type>())>::type> : public boost::true_type {}; template diff --git a/src/boost/boost/type_traits/has_minus_assign.hpp b/src/boost/boost/type_traits/has_minus_assign.hpp index 7fb876233..1edf2ab4c 100644 --- a/src/boost/boost/type_traits/has_minus_assign.hpp +++ b/src/boost/boost/type_traits/has_minus_assign.hpp @@ -53,25 +53,25 @@ namespace boost struct dont_care; - template > + template struct has_minus_assign_ret_imp : public boost::false_type {}; template - struct has_minus_assign_ret_imp::type>() -= std::declval::type>())> > + struct has_minus_assign_ret_imp::type>() -= std::declval::type>())>::type> : public boost::integral_constant::type>() -= std::declval::type>()), Ret>::value> {}; - template > + template struct has_minus_assign_void_imp : public boost::false_type {}; template - struct has_minus_assign_void_imp::type>() -= std::declval::type>())> > + struct has_minus_assign_void_imp::type>() -= std::declval::type>())>::type> : public boost::integral_constant::type>() -= std::declval::type>())>::value> {}; - template > + template struct has_minus_assign_dc_imp : public boost::false_type {}; template - struct has_minus_assign_dc_imp::type>() -= std::declval::type>())> > + struct has_minus_assign_dc_imp::type>() -= std::declval::type>())>::type> : public boost::true_type {}; template diff --git a/src/boost/boost/type_traits/has_nothrow_constructor.hpp b/src/boost/boost/type_traits/has_nothrow_constructor.hpp new file mode 100644 index 000000000..433821abb --- /dev/null +++ b/src/boost/boost/type_traits/has_nothrow_constructor.hpp @@ -0,0 +1,73 @@ + +// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + +#ifndef BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED +#define BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED + +#include // size_t +#include +#include + +#ifdef BOOST_HAS_NOTHROW_CONSTRUCTOR + +#if defined(BOOST_MSVC) || defined(BOOST_INTEL) +#include +#endif +#if defined(__GNUC__ ) || defined(__SUNPRO_CC) || defined(__clang__) +#include +#endif + +namespace boost { + +template struct has_nothrow_constructor : public integral_constant{}; + +#elif !defined(BOOST_NO_CXX11_NOEXCEPT) + +#include +#include + +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4197) // top-level volatile in cast is ignored +#endif + +namespace boost { namespace detail{ + + template struct has_nothrow_constructor_imp : public boost::integral_constant{}; + template struct has_nothrow_constructor_imp : public boost::integral_constant{}; + template struct has_nothrow_constructor_imp : public has_nothrow_constructor_imp {}; +} + +template struct has_nothrow_constructor : public detail::has_nothrow_constructor_imp::value>{}; + +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + +#else + +#include + +namespace boost { + +template struct has_nothrow_constructor : public ::boost::has_trivial_constructor {}; + +#endif + +template<> struct has_nothrow_constructor : public false_type {}; +#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS +template<> struct has_nothrow_constructor : public false_type{}; +template<> struct has_nothrow_constructor : public false_type{}; +template<> struct has_nothrow_constructor : public false_type{}; +#endif + +template struct has_nothrow_default_constructor : public has_nothrow_constructor{}; + +} // namespace boost + +#endif // BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED diff --git a/src/boost/boost/type_traits/has_plus_assign.hpp b/src/boost/boost/type_traits/has_plus_assign.hpp index fac6e6047..acf32d852 100644 --- a/src/boost/boost/type_traits/has_plus_assign.hpp +++ b/src/boost/boost/type_traits/has_plus_assign.hpp @@ -56,25 +56,25 @@ namespace boost struct dont_care; - template > + template struct has_plus_assign_ret_imp : public boost::false_type {}; template - struct has_plus_assign_ret_imp::type>() += std::declval::type>())> > + struct has_plus_assign_ret_imp::type>() += std::declval::type>())>::type> : public boost::integral_constant::type>() += std::declval::type>()), Ret>::value> {}; - template > + template struct has_plus_assign_void_imp : public boost::false_type {}; template - struct has_plus_assign_void_imp::type>() += std::declval::type>())> > + struct has_plus_assign_void_imp::type>() += std::declval::type>())>::type> : public boost::integral_constant::type>() += std::declval::type>())>::value> {}; - template > + template struct has_plus_assign_dc_imp : public boost::false_type {}; template - struct has_plus_assign_dc_imp::type>() += std::declval::type>())> > + struct has_plus_assign_dc_imp::type>() += std::declval::type>())>::type> : public boost::true_type {}; template diff --git a/src/boost/boost/type_traits/has_trivial_constructor.hpp b/src/boost/boost/type_traits/has_trivial_constructor.hpp new file mode 100644 index 000000000..4b42925cc --- /dev/null +++ b/src/boost/boost/type_traits/has_trivial_constructor.hpp @@ -0,0 +1,57 @@ + +// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + +#ifndef BOOST_TT_HAS_TRIVIAL_CONSTRUCTOR_HPP_INCLUDED +#define BOOST_TT_HAS_TRIVIAL_CONSTRUCTOR_HPP_INCLUDED + +#include +#include +#include + +#ifdef BOOST_HAS_TRIVIAL_CONSTRUCTOR +#ifdef BOOST_HAS_SGI_TYPE_TRAITS +#include +#elif defined(__GNUC__) || defined(__SUNPRO_CC) +#include +#ifdef BOOST_INTEL +#include +#endif +#endif +#endif + + +#if (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 409)) || defined(BOOST_CLANG) || (defined(__SUNPRO_CC) && defined(BOOST_HAS_TRIVIAL_CONSTRUCTOR)) +#include +#define BOOST_TT_TRIVIAL_CONSTRUCT_FIX && is_default_constructible::value +#else +// +// Mot all compilers, particularly older GCC versions can handle the fix above. +#define BOOST_TT_TRIVIAL_CONSTRUCT_FIX +#endif + +namespace boost { + +template struct has_trivial_constructor +#ifdef BOOST_HAS_TRIVIAL_CONSTRUCTOR + : public integral_constant ::value || BOOST_HAS_TRIVIAL_CONSTRUCTOR(T)) BOOST_TT_TRIVIAL_CONSTRUCT_FIX)>{}; +#else + : public integral_constant ::value>{}; +#endif + +template <> struct has_trivial_constructor : public boost::false_type{}; +template <> struct has_trivial_constructor : public boost::false_type{}; +template <> struct has_trivial_constructor : public boost::false_type{}; +template <> struct has_trivial_constructor : public boost::false_type{}; + +template struct has_trivial_default_constructor : public has_trivial_constructor {}; + +#undef BOOST_TT_TRIVIAL_CONSTRUCT_FIX + +} // namespace boost + +#endif // BOOST_TT_HAS_TRIVIAL_CONSTRUCTOR_HPP_INCLUDED diff --git a/src/boost/boost/type_traits/integral_constant.hpp b/src/boost/boost/type_traits/integral_constant.hpp index 6bd8d712f..d59dfadcf 100644 --- a/src/boost/boost/type_traits/integral_constant.hpp +++ b/src/boost/boost/type_traits/integral_constant.hpp @@ -10,7 +10,7 @@ #include #if (BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ + || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \ || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) )\ diff --git a/src/boost/boost/type_traits/intrinsics.hpp b/src/boost/boost/type_traits/intrinsics.hpp index 9d5d8e1aa..c0049768c 100644 --- a/src/boost/boost/type_traits/intrinsics.hpp +++ b/src/boost/boost/type_traits/intrinsics.hpp @@ -160,7 +160,7 @@ # define BOOST_HAS_TYPE_TRAITS_INTRINSICS #endif -#if defined(BOOST_CLANG) && defined(__has_feature) && !defined(__CUDACC__) +#if defined(BOOST_CLANG) && defined(__has_feature) && defined(__has_builtin) && (!(defined(__CUDACC__) && (__CUDACC_VER_MAJOR__ < 11)) || defined(__CUDA__)) // // Note that these intrinsics are disabled for the CUDA meta-compiler as it appears // to not support them, even though the underlying clang compiler does so. @@ -183,25 +183,39 @@ # if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_empty) # define BOOST_IS_EMPTY(T) __is_empty(T) # endif -# if __has_feature(has_trivial_constructor) +# if __has_builtin(__is_trivially_constructible) +# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __is_trivially_constructible(T) +# elif __has_feature(has_trivial_constructor) # define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T) # endif -# if __has_feature(has_trivial_copy) +# if __has_builtin(__is_trivially_copyable) +# define BOOST_HAS_TRIVIAL_COPY(T) (__is_trivially_copyable(T) && !is_reference::value) +# elif __has_feature(has_trivial_copy) # define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference::value) # endif -# if __has_feature(has_trivial_assign) +# if __has_builtin(__is_trivially_assignable) +# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__is_trivially_assignable(T&, const T&) && !is_volatile::value && is_assignable::value) +# elif __has_feature(has_trivial_assign) # define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile::value && is_assignable::value) # endif -# if __has_feature(has_trivial_destructor) +# if __has_builtin(__is_trivially_destructible) +# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__is_trivially_destructible(T) && is_destructible::value) +# elif __has_feature(has_trivial_destructor) # define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) && is_destructible::value) # endif -# if __has_feature(has_nothrow_constructor) +# if __has_builtin(__is_nothrow_constructible) +# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__is_nothrow_constructible(T) && is_default_constructible::value) +# elif __has_feature(has_nothrow_constructor) # define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) && is_default_constructible::value) # endif -# if __has_feature(has_nothrow_copy) +# if __has_builtin(__is_nothrow_constructible) +# define BOOST_HAS_NOTHROW_COPY(T) (__is_nothrow_constructible(T, const T&) && !is_volatile::value && !is_reference::value && is_copy_constructible::value) +# elif __has_feature(has_nothrow_copy) # define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile::value && !is_reference::value && is_copy_constructible::value) # endif -# if __has_feature(has_nothrow_assign) +# if __has_builtin(__is_nothrow_assignable) +# define BOOST_HAS_NOTHROW_ASSIGN(T) (__is_nothrow_assignable(T&, const T&) && !is_volatile::value && is_assignable::value) +# elif __has_feature(has_nothrow_assign) # define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile::value && is_assignable::value) # endif # if __has_feature(has_virtual_destructor) @@ -356,7 +370,7 @@ # define BOOST_HAS_TYPE_TRAITS_INTRINSICS #endif -# if defined(__CODEGEARC__) +# if defined(BOOST_CODEGEARC) # include # include # include diff --git a/src/boost/boost/type_traits/is_array.hpp b/src/boost/boost/type_traits/is_array.hpp index 5ee465035..95b7652c3 100644 --- a/src/boost/boost/type_traits/is_array.hpp +++ b/src/boost/boost/type_traits/is_array.hpp @@ -19,7 +19,7 @@ namespace boost { -#if defined( __CODEGEARC__ ) +#if defined( BOOST_CODEGEARC ) template struct is_array : public integral_constant {}; #else template struct is_array : public false_type {}; @@ -28,7 +28,7 @@ namespace boost { template struct is_array : public true_type{}; template struct is_array : public true_type{}; template struct is_array : public true_type{}; -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) template struct is_array : public true_type{}; template struct is_array : public true_type{}; template struct is_array : public true_type{}; diff --git a/src/boost/boost/type_traits/is_base_and_derived.hpp b/src/boost/boost/type_traits/is_base_and_derived.hpp index 28cc5fcf9..45019ee93 100644 --- a/src/boost/boost/type_traits/is_base_and_derived.hpp +++ b/src/boost/boost/type_traits/is_base_and_derived.hpp @@ -26,7 +26,7 @@ namespace boost { namespace detail { #ifndef BOOST_IS_BASE_OF -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581)) \ +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x581)) \ && !BOOST_WORKAROUND(__SUNPRO_CC , <= 0x540) \ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 243) \ && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) @@ -235,7 +235,7 @@ template struct is_base_and_derived template struct is_base_and_derived : public false_type{}; template struct is_base_and_derived : public false_type{}; -#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610)) +#if BOOST_WORKAROUND(BOOST_CODEGEARC, BOOST_TESTED_AT(0x610)) template struct is_base_and_derived : public true_type{}; #endif diff --git a/src/boost/boost/type_traits/is_complete.hpp b/src/boost/boost/type_traits/is_complete.hpp index 31fa280ba..bc3ba12e1 100644 --- a/src/boost/boost/type_traits/is_complete.hpp +++ b/src/boost/boost/type_traits/is_complete.hpp @@ -15,6 +15,7 @@ #include #include #include +#include /* * CAUTION: @@ -40,7 +41,7 @@ namespace boost { namespace detail{ - template + template struct ok_tag { double d; char c[N]; }; template @@ -50,7 +51,7 @@ namespace boost { } template struct is_complete - : public integral_constant::type>::value || (sizeof(detail::check_is_complete(0)) != sizeof(char))> {}; + : public integral_constant::type>::value || (sizeof(boost::detail::check_is_complete(0)) != sizeof(char))> {}; #elif !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500) diff --git a/src/boost/boost/type_traits/is_const.hpp b/src/boost/boost/type_traits/is_const.hpp index e0253adb8..eade4c37d 100644 --- a/src/boost/boost/type_traits/is_const.hpp +++ b/src/boost/boost/type_traits/is_const.hpp @@ -26,7 +26,7 @@ namespace boost { -#if defined( __CODEGEARC__ ) +#if defined( BOOST_CODEGEARC ) template struct is_const : public integral_constant {}; diff --git a/src/boost/boost/type_traits/is_convertible.hpp b/src/boost/boost/type_traits/is_convertible.hpp index 9eca73327..b4991a0a9 100644 --- a/src/boost/boost/type_traits/is_convertible.hpp +++ b/src/boost/boost/type_traits/is_convertible.hpp @@ -96,7 +96,7 @@ namespace detail { static const bool value = sizeof(test(0)) == 1; }; -#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x560) +#elif defined(BOOST_BORLANDC) && (BOOST_BORLANDC < 0x560) // // special version for Borland compilers // this version breaks when used for some @@ -120,7 +120,7 @@ struct is_convertible_impl #pragma option pop }; -#elif defined(__GNUC__) || defined(__BORLANDC__) && (__BORLANDC__ < 0x600) +#elif defined(__GNUC__) || defined(BOOST_BORLANDC) && (BOOST_BORLANDC < 0x600) // special version for gcc compiler + recent Borland versions // note that this does not pass UDT's through (...) @@ -358,7 +358,7 @@ struct is_convertible_impl value = ( ::boost::detail::is_convertible_basic_impl::value && ! ::boost::is_array::value && ! ::boost::is_function::value) }; }; -#elif !defined(__BORLANDC__) || __BORLANDC__ > 0x551 +#elif !defined(BOOST_BORLANDC) || BOOST_BORLANDC > 0x551 template struct is_convertible_impl { @@ -489,7 +489,7 @@ struct is_convertible : public integral_constant struct is_convertible : public integral_constant { -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1900) +#if defined(BOOST_MSVC) BOOST_STATIC_ASSERT_MSG(boost::is_complete::value || boost::is_void::value || boost::is_array::value || boost::is_reference::value, "From argument type to is_convertible must be a complete type"); #endif #if defined(__clang__) diff --git a/src/boost/boost/type_traits/is_default_constructible.hpp b/src/boost/boost/type_traits/is_default_constructible.hpp new file mode 100644 index 000000000..a151dae76 --- /dev/null +++ b/src/boost/boost/type_traits/is_default_constructible.hpp @@ -0,0 +1,98 @@ + +// (C) Copyright John Maddock 2015. +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + +#ifndef BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED +#define BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED + +#include // size_t +#include +#include +#include +#include + +#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700) +#include +#endif +#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ <= 5)) || (defined(BOOST_MSVC) && (BOOST_MSVC == 1800)) +#include // std::pair +#endif + +#if !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500) + +#include + +namespace boost{ + + namespace detail{ + + struct is_default_constructible_imp + { + template + static boost::type_traits::yes_type test(int); + + template + static boost::type_traits::no_type test(...); + }; +#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700) + template + struct is_default_constructible_abstract_filter + { + static const bool value = sizeof(is_default_constructible_imp::test(0)) == sizeof(boost::type_traits::yes_type); + }; + template + struct is_default_constructible_abstract_filter + { + static const bool value = false; + }; +#endif + } + +#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700) + template struct is_default_constructible : public integral_constant::value>::value> + { + BOOST_STATIC_ASSERT_MSG(boost::is_complete::value, "Arguments to is_default_constructible must be complete types"); + }; +#else + template struct is_default_constructible : public integral_constant(0)) == sizeof(boost::type_traits::yes_type)> + { + BOOST_STATIC_ASSERT_MSG(boost::is_complete::value, "Arguments to is_default_constructible must be complete types"); + }; +#endif + template struct is_default_constructible : public is_default_constructible{}; + template struct is_default_constructible : public is_default_constructible{}; + template struct is_default_constructible : public integral_constant{}; +#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ <= 5))|| (defined(BOOST_MSVC) && (BOOST_MSVC == 1800)) + template struct is_default_constructible > : public integral_constant::value && is_default_constructible::value>{}; +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template struct is_default_constructible : public integral_constant{}; +#endif + template <> struct is_default_constructible : public integral_constant{}; + template <> struct is_default_constructible : public integral_constant{}; + template <> struct is_default_constructible : public integral_constant{}; + template <> struct is_default_constructible : public integral_constant{}; + +#else + +#include + +namespace boost{ + + // We don't know how to implement this, note we can not use has_trivial_constructor here + // because the correct implementation of that trait requires this one: + template struct is_default_constructible : public is_pod{}; + template <> struct is_default_constructible : public integral_constant{}; + template <> struct is_default_constructible : public integral_constant{}; + template <> struct is_default_constructible : public integral_constant{}; + template <> struct is_default_constructible : public integral_constant{}; + +#endif + +} // namespace boost + +#endif // BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED diff --git a/src/boost/boost/type_traits/is_enum.hpp b/src/boost/boost/type_traits/is_enum.hpp index 2bdf90470..b639cd906 100644 --- a/src/boost/boost/type_traits/is_enum.hpp +++ b/src/boost/boost/type_traits/is_enum.hpp @@ -32,7 +32,7 @@ namespace boost { #ifndef BOOST_IS_ENUM -#if !(defined(__BORLANDC__) && (__BORLANDC__ <= 0x551)) +#if !(defined(BOOST_BORLANDC) && (BOOST_BORLANDC <= 0x551)) namespace detail { @@ -49,7 +49,7 @@ struct is_class_or_union template struct is_class_or_union { -# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581))// we simply can't detect it this way. +# if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x581))// we simply can't detect it this way. BOOST_STATIC_CONSTANT(bool, value = false); # else template static ::boost::type_traits::yes_type is_class_or_union_tester(void(U::*)(void)); @@ -131,7 +131,7 @@ template struct is_enum_impl #endif -#if BOOST_WORKAROUND(__BORLANDC__, < 0x600) +#if BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) typedef ::boost::detail::is_enum_helper< ::boost::detail::is_enum_impl::selector > se_t; @@ -147,7 +147,7 @@ template struct is_enum_impl template struct is_enum : public integral_constant::value> {}; -#else // __BORLANDC__ +#else // BOOST_BORLANDC // // buggy is_convertible prevents working // implementation of is_enum: diff --git a/src/boost/boost/type_traits/is_function.hpp b/src/boost/boost/type_traits/is_function.hpp index 2306f4e89..3a2522c34 100644 --- a/src/boost/boost/type_traits/is_function.hpp +++ b/src/boost/boost/type_traits/is_function.hpp @@ -14,7 +14,7 @@ #include #include -#ifdef BOOST_TT_HAS_ASCCURATE_IS_FUNCTION +#ifdef BOOST_TT_HAS_ACCURATE_IS_FUNCTION #include diff --git a/src/boost/boost/type_traits/is_fundamental.hpp b/src/boost/boost/type_traits/is_fundamental.hpp index f955bfa7b..f0ad89983 100644 --- a/src/boost/boost/type_traits/is_fundamental.hpp +++ b/src/boost/boost/type_traits/is_fundamental.hpp @@ -15,7 +15,7 @@ namespace boost { //* is a type T a fundamental type described in the standard (3.9.1) -#if defined( __CODEGEARC__ ) +#if defined( BOOST_CODEGEARC ) template struct is_fundamental : public integral_constant {}; #else template struct is_fundamental : public integral_constant::value || ::boost::is_void::value> {}; diff --git a/src/boost/boost/type_traits/is_integral.hpp b/src/boost/boost/type_traits/is_integral.hpp index a2f5ec247..d7af1859f 100644 --- a/src/boost/boost/type_traits/is_integral.hpp +++ b/src/boost/boost/type_traits/is_integral.hpp @@ -14,7 +14,7 @@ namespace boost { -#if defined( __CODEGEARC__ ) +#if defined( BOOST_CODEGEARC ) template struct is_integral : public integral_constant {}; #else @@ -50,14 +50,14 @@ template<> struct is_integral : public true_type{}; // Same set of integral types as in boost/type_traits/integral_promotion.hpp. // Please, keep in sync. -- Alexander Nasonov #if (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \ - || (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER < 1300)) + || (defined(BOOST_BORLANDC) && (BOOST_BORLANDC == 0x600) && (_MSC_VER < 1300)) template<> struct is_integral : public true_type{}; template<> struct is_integral : public true_type{}; template<> struct is_integral : public true_type{}; template<> struct is_integral<__int8> : public true_type{}; template<> struct is_integral<__int16> : public true_type{}; template<> struct is_integral<__int32> : public true_type{}; -#ifdef __BORLANDC__ +#ifdef BOOST_BORLANDC template<> struct is_integral : public true_type{}; template<> struct is_integral<__int64> : public true_type{}; #endif @@ -81,6 +81,9 @@ template<> struct is_integral : public true_type{}; #ifndef BOOST_NO_CXX11_CHAR32_T template<> struct is_integral : public true_type{}; #endif +#if defined(__cpp_char8_t) && __cpp_char8_t >= 201811L +template<> struct is_integral : public true_type{}; +#endif #endif // non-CodeGear implementation diff --git a/src/boost/boost/type_traits/is_lvalue_reference.hpp b/src/boost/boost/type_traits/is_lvalue_reference.hpp index af5e1d072..bbab4597a 100644 --- a/src/boost/boost/type_traits/is_lvalue_reference.hpp +++ b/src/boost/boost/type_traits/is_lvalue_reference.hpp @@ -25,7 +25,7 @@ namespace boost { -#if defined( __CODEGEARC__ ) +#if defined( BOOST_CODEGEARC ) template struct is_lvalue_reference : public integral_constant{}; #else diff --git a/src/boost/boost/type_traits/is_member_function_pointer.hpp b/src/boost/boost/type_traits/is_member_function_pointer.hpp index 59860e6e6..3dd010672 100644 --- a/src/boost/boost/type_traits/is_member_function_pointer.hpp +++ b/src/boost/boost/type_traits/is_member_function_pointer.hpp @@ -13,7 +13,7 @@ #include -#ifdef BOOST_TT_HAS_ASCCURATE_IS_FUNCTION +#ifdef BOOST_TT_HAS_ACCURATE_IS_FUNCTION #include diff --git a/src/boost/boost/type_traits/is_member_pointer.hpp b/src/boost/boost/type_traits/is_member_pointer.hpp index 8fbdf7702..d026112fb 100644 --- a/src/boost/boost/type_traits/is_member_pointer.hpp +++ b/src/boost/boost/type_traits/is_member_pointer.hpp @@ -26,7 +26,7 @@ namespace boost { -#if defined( __CODEGEARC__ ) +#if defined( BOOST_CODEGEARC ) template struct is_member_pointer : public integral_constant{}; #else template struct is_member_pointer : public integral_constant::value>{}; diff --git a/src/boost/boost/type_traits/is_pointer.hpp b/src/boost/boost/type_traits/is_pointer.hpp index 25f810a16..b6e844c9e 100644 --- a/src/boost/boost/type_traits/is_pointer.hpp +++ b/src/boost/boost/type_traits/is_pointer.hpp @@ -25,7 +25,7 @@ namespace boost { -#if defined( __CODEGEARC__ ) +#if defined( BOOST_CODEGEARC ) template struct is_pointer : public integral_constant{}; #else template struct is_pointer : public false_type{}; diff --git a/src/boost/boost/type_traits/is_same.hpp b/src/boost/boost/type_traits/is_same.hpp index 8292274c9..aa87b1353 100644 --- a/src/boost/boost/type_traits/is_same.hpp +++ b/src/boost/boost/type_traits/is_same.hpp @@ -28,7 +28,7 @@ namespace boost { template struct is_same : public false_type {}; template struct is_same : public true_type {}; -#if BOOST_WORKAROUND(__BORLANDC__, < 0x600) +#if BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) // without this, Borland's compiler gives the wrong answer for // references to arrays: template struct is_same : public true_type{}; diff --git a/src/boost/boost/type_traits/is_signed.hpp b/src/boost/boost/type_traits/is_signed.hpp index e516f2c9a..c4ee871c3 100644 --- a/src/boost/boost/type_traits/is_signed.hpp +++ b/src/boost/boost/type_traits/is_signed.hpp @@ -17,7 +17,7 @@ namespace boost { -#if !defined( __CODEGEARC__ ) +#if !defined( BOOST_CODEGEARC ) #if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1310) && \ !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) &&\ @@ -84,7 +84,7 @@ template struct is_signed : public false_type{}; #endif -#else //defined( __CODEGEARC__ ) +#else //defined( BOOST_CODEGEARC ) template struct is_signed : public integral_constant{}; #endif diff --git a/src/boost/boost/type_traits/is_unsigned.hpp b/src/boost/boost/type_traits/is_unsigned.hpp index 766f2966b..1e8f118d7 100644 --- a/src/boost/boost/type_traits/is_unsigned.hpp +++ b/src/boost/boost/type_traits/is_unsigned.hpp @@ -18,7 +18,7 @@ namespace boost { -#if !defined( __CODEGEARC__ ) +#if !defined( BOOST_CODEGEARC ) #if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1310) &&\ !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) &&\ @@ -84,7 +84,7 @@ template struct is_unsigned : public false_type{}; #endif -#else // defined( __CODEGEARC__ ) +#else // defined( BOOST_CODEGEARC ) template struct is_unsigned : public integral_constant {}; #endif diff --git a/src/boost/boost/type_traits/is_volatile.hpp b/src/boost/boost/type_traits/is_volatile.hpp index 4ead1acc2..db2f46344 100644 --- a/src/boost/boost/type_traits/is_volatile.hpp +++ b/src/boost/boost/type_traits/is_volatile.hpp @@ -26,7 +26,7 @@ namespace boost { -#if defined( __CODEGEARC__ ) +#if defined( BOOST_CODEGEARC ) template struct is_volatile : public integral_constant {}; diff --git a/src/boost/boost/type_traits/make_signed.hpp b/src/boost/boost/type_traits/make_signed.hpp new file mode 100644 index 000000000..508f45e56 --- /dev/null +++ b/src/boost/boost/type_traits/make_signed.hpp @@ -0,0 +1,137 @@ + +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + +#ifndef BOOST_TT_MAKE_SIGNED_HPP_INCLUDED +#define BOOST_TT_MAKE_SIGNED_HPP_INCLUDED + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { + +template +struct make_signed +{ +private: + BOOST_STATIC_ASSERT_MSG(( ::boost::is_integral::value || ::boost::is_enum::value), "The template argument to make_signed must be an integer or enum type."); + BOOST_STATIC_ASSERT_MSG(!(::boost::is_same::type, bool>::value), "The template argument to make_signed must not be the type bool."); + + typedef typename remove_cv::type t_no_cv; + typedef typename conditional< + (::boost::is_signed::value + && ::boost::is_integral::value + && ! ::boost::is_same::value + && ! ::boost::is_same::value + && ! ::boost::is_same::value), + T, + typename conditional< + (::boost::is_integral::value + && ! ::boost::is_same::value + && ! ::boost::is_same::value + && ! ::boost::is_same::value), + typename conditional< + is_same::value, + signed char, + typename conditional< + is_same::value, + signed short, + typename conditional< + is_same::value, + int, + typename conditional< + is_same::value, + long, +#if defined(BOOST_HAS_LONG_LONG) +#ifdef BOOST_HAS_INT128 + typename conditional< + sizeof(t_no_cv) == sizeof(boost::long_long_type), + boost::long_long_type, + boost::int128_type + >::type +#else + boost::long_long_type +#endif +#elif defined(BOOST_HAS_MS_INT64) + __int64 +#else + long +#endif + >::type + >::type + >::type + >::type, + // Not a regular integer type: + typename conditional< + sizeof(t_no_cv) == sizeof(unsigned char), + signed char, + typename conditional< + sizeof(t_no_cv) == sizeof(unsigned short), + signed short, + typename conditional< + sizeof(t_no_cv) == sizeof(unsigned int), + int, + typename conditional< + sizeof(t_no_cv) == sizeof(unsigned long), + long, +#if defined(BOOST_HAS_LONG_LONG) +#ifdef BOOST_HAS_INT128 + typename conditional< + sizeof(t_no_cv) == sizeof(boost::long_long_type), + boost::long_long_type, + boost::int128_type + >::type +#else + boost::long_long_type +#endif +#elif defined(BOOST_HAS_MS_INT64) + __int64 +#else + long +#endif + >::type + >::type + >::type + >::type + >::type + >::type base_integer_type; + + // Add back any const qualifier: + typedef typename conditional< + is_const::value, + typename add_const::type, + base_integer_type + >::type const_base_integer_type; +public: + // Add back any volatile qualifier: + typedef typename conditional< + is_volatile::value, + typename add_volatile::type, + const_base_integer_type + >::type type; +}; + +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using make_signed_t = typename make_signed::type; + +#endif + +} // namespace boost + +#endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED + diff --git a/src/boost/boost/type_traits/negation.hpp b/src/boost/boost/type_traits/negation.hpp new file mode 100644 index 000000000..814f83d5d --- /dev/null +++ b/src/boost/boost/type_traits/negation.hpp @@ -0,0 +1,23 @@ +/* +Copyright 2020 Glen Joseph Fernandes +(glenjofe@gmail.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) +*/ + +#ifndef BOOST_TT_NEGATION_HPP_INCLUDED +#define BOOST_TT_NEGATION_HPP_INCLUDED + +#include + +namespace boost { + +template +struct negation + : integral_constant { }; + +} /* boost */ + +#endif diff --git a/src/boost/boost/type_traits/remove_all_extents.hpp b/src/boost/boost/type_traits/remove_all_extents.hpp new file mode 100644 index 000000000..07790747e --- /dev/null +++ b/src/boost/boost/type_traits/remove_all_extents.hpp @@ -0,0 +1,41 @@ + +// (C) Copyright John Maddock 2005. +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + +#ifndef BOOST_TT_REMOVE_ALL_EXTENTS_HPP_INCLUDED +#define BOOST_TT_REMOVE_ALL_EXTENTS_HPP_INCLUDED + +#include +#include // size_t +#include + +namespace boost { + +template struct remove_all_extents{ typedef T type; }; + +#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS) +template struct remove_all_extents : public remove_all_extents{}; +template struct remove_all_extents : public remove_all_extents{}; +template struct remove_all_extents : public remove_all_extents{}; +template struct remove_all_extents : public remove_all_extents{}; +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) +template struct remove_all_extents : public remove_all_extents{}; +template struct remove_all_extents : public remove_all_extents{}; +template struct remove_all_extents : public remove_all_extents{}; +template struct remove_all_extents : public remove_all_extents{}; +#endif +#endif + +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using remove_all_extents_t = typename remove_all_extents::type; + +#endif + +} // namespace boost + +#endif // BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED diff --git a/src/boost/boost/type_traits/remove_bounds.hpp b/src/boost/boost/type_traits/remove_bounds.hpp deleted file mode 100644 index a5d312025..000000000 --- a/src/boost/boost/type_traits/remove_bounds.hpp +++ /dev/null @@ -1,28 +0,0 @@ - -// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. -// Use, modification and distribution are subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt). -// -// See http://www.boost.org/libs/type_traits for most recent version including documentation. - -#ifndef BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED -#define BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED - -#include - -namespace boost -{ - -template struct remove_bounds : public remove_extent {}; - -#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) - -template using remove_bounds_t = typename remove_bounds::type; - -#endif - - -} // namespace boost - -#endif // BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED diff --git a/src/boost/boost/type_traits/remove_const.hpp b/src/boost/boost/type_traits/remove_const.hpp index 507cb10c6..3b475801a 100644 --- a/src/boost/boost/type_traits/remove_const.hpp +++ b/src/boost/boost/type_traits/remove_const.hpp @@ -23,7 +23,7 @@ namespace boost { #if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS) template struct remove_const{ typedef T type[N]; }; -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) template struct remove_const{ typedef T type[]; }; #endif #endif diff --git a/src/boost/boost/type_traits/remove_cv.hpp b/src/boost/boost/type_traits/remove_cv.hpp index ea76f8bae..ad46d8182 100644 --- a/src/boost/boost/type_traits/remove_cv.hpp +++ b/src/boost/boost/type_traits/remove_cv.hpp @@ -27,7 +27,7 @@ template struct remove_cv{ typedef T type; }; template struct remove_cv{ typedef T type[N]; }; template struct remove_cv{ typedef T type[N]; }; template struct remove_cv{ typedef T type[N]; }; -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) template struct remove_cv{ typedef T type[]; }; template struct remove_cv{ typedef T type[]; }; template struct remove_cv{ typedef T type[]; }; diff --git a/src/boost/boost/type_traits/remove_extent.hpp b/src/boost/boost/type_traits/remove_extent.hpp deleted file mode 100644 index 373609742..000000000 --- a/src/boost/boost/type_traits/remove_extent.hpp +++ /dev/null @@ -1,41 +0,0 @@ - -// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000-2005. -// Use, modification and distribution are subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt). -// -// See http://www.boost.org/libs/type_traits for most recent version including documentation. - -#ifndef BOOST_TT_REMOVE_EXTENT_HPP_INCLUDED -#define BOOST_TT_REMOVE_EXTENT_HPP_INCLUDED - -#include -#include -#include // size_t - -namespace boost { - -template struct remove_extent{ typedef T type; }; - -#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS) -template struct remove_extent { typedef T type; }; -template struct remove_extent { typedef T const type; }; -template struct remove_extent { typedef T volatile type; }; -template struct remove_extent { typedef T const volatile type; }; -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) -template struct remove_extent { typedef T type; }; -template struct remove_extent { typedef T const type; }; -template struct remove_extent { typedef T volatile type; }; -template struct remove_extent { typedef T const volatile type; }; -#endif -#endif - -#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) - - template using remove_extent_t = typename remove_extent::type; - -#endif - -} // namespace boost - -#endif // BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED diff --git a/src/boost/boost/type_traits/remove_volatile.hpp b/src/boost/boost/type_traits/remove_volatile.hpp new file mode 100644 index 000000000..3d96b2991 --- /dev/null +++ b/src/boost/boost/type_traits/remove_volatile.hpp @@ -0,0 +1,39 @@ + +// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard +// Hinnant & John Maddock 2000. +// Use, modification and distribution are subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + + +#ifndef BOOST_TT_REMOVE_VOLATILE_HPP_INCLUDED +#define BOOST_TT_REMOVE_VOLATILE_HPP_INCLUDED + +#include +#include +#include // size_t + +namespace boost { + + // convert a type T to a non-cv-qualified type - remove_volatile + template struct remove_volatile{ typedef T type; }; + template struct remove_volatile{ typedef T type; }; + +#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS) + template struct remove_volatile{ typedef T type[N]; }; +#if !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) + template struct remove_volatile{ typedef T type[]; }; +#endif +#endif + +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using remove_volatile_t = typename remove_volatile::type; + +#endif + +} // namespace boost + +#endif // BOOST_TT_REMOVE_VOLATILE_HPP_INCLUDED diff --git a/src/boost/boost/type_traits/type_with_alignment.hpp b/src/boost/boost/type_traits/type_with_alignment.hpp index 2342882ff..bb44f1e7e 100644 --- a/src/boost/boost/type_traits/type_with_alignment.hpp +++ b/src/boost/boost/type_traits/type_with_alignment.hpp @@ -25,7 +25,7 @@ #endif namespace boost { -#ifndef __BORLANDC__ +#ifndef BOOST_BORLANDC namespace detail{ union max_align @@ -120,7 +120,7 @@ template<> struct is_pod< ::boost::tt_align_ns::a128> : public true_type{}; // registers. Therefore we extend type_with_alignment<> to support // such types, however, we have to be careful to use a builtin type // whenever possible otherwise we break previously working code: -// see http://article.gmane.org/gmane.comp.lib.boost.devel/173011 +// see https://lists.boost.org/Archives/boost/2014/03/212391.php // for an example and test case. Thus types like a8 below will // be used *only* if the existing implementation can't provide a type // with suitable alignment. This does mean however, that type_with_alignment<> @@ -227,7 +227,7 @@ namespace detail { typedef ::boost::tt_align_ns::a16 max_align; } -//#if ! BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610)) +//#if ! BOOST_WORKAROUND(BOOST_CODEGEARC, BOOST_TESTED_AT(0x610)) template <> struct is_pod< ::boost::tt_align_ns::a2> : public true_type{}; template <> struct is_pod< ::boost::tt_align_ns::a4> : public true_type{}; template <> struct is_pod< ::boost::tt_align_ns::a8> : public true_type{}; diff --git a/src/boost/boost/utility/addressof.hpp b/src/boost/boost/utility/addressof.hpp deleted file mode 100644 index eb4ab2db9..000000000 --- a/src/boost/boost/utility/addressof.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2014 Glen Fernandes - * - * Distributed under the Boost Software License, Version 1.0. (See - * accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -#ifndef BOOST_UTILITY_ADDRESSOF_HPP -#define BOOST_UTILITY_ADDRESSOF_HPP - -// The header file at this path is deprecated; -// use boost/core/addressof.hpp instead. - -#include - -#endif diff --git a/src/boost/boost/utility/base_from_member.hpp b/src/boost/boost/utility/base_from_member.hpp index 2b2e06710..fbeba96ad 100644 --- a/src/boost/boost/utility/base_from_member.hpp +++ b/src/boost/boost/utility/base_from_member.hpp @@ -47,13 +47,14 @@ // {} // This macro should only persist within this file. +#ifndef BOOST_UTILITY_DOCS #define BOOST_PRIVATE_CTR_DEF( z, n, data ) \ template < BOOST_PP_ENUM_PARAMS(n, typename T) > \ base_from_member( BOOST_PP_ENUM_BINARY_PARAMS(n, T, x) ) \ : member( BOOST_PP_ENUM_PARAMS(n, x) ) \ {} \ /**/ - +#endif // BOOST_UTILITY_DOCS namespace boost { diff --git a/src/boost/boost/utility/binary.hpp b/src/boost/boost/utility/binary.hpp index b05b6b959..3744d6fd9 100644 --- a/src/boost/boost/utility/binary.hpp +++ b/src/boost/boost/utility/binary.hpp @@ -68,6 +68,7 @@ ( (0) BOOST_DETAIL_CREATE_BINARY_LITERAL_OCTAL_SEQUENCE( d, bit_groupings ) \ ) +#ifndef BOOST_UTILITY_DOCS #define BOOST_DETAIL_CREATE_BINARY_LITERAL_OCTAL_SEQUENCE( d, bit_groupings ) \ BOOST_PP_SEQ_TRANSFORM \ ( BOOST_DETAIL_TRIPLE_TO_OCTAL_OPERATION \ @@ -703,6 +704,6 @@ #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111100 (1)(1)(1)(1)(1)(1)(0)(0), #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111101 (1)(1)(1)(1)(1)(1)(0)(1), #define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111110 (1)(1)(1)(1)(1)(1)(1)(0), -#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111111 (1)(1)(1)(1)(1)(1)(1)(1), - +#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111111 (1)(1)(1)(1)(1)(1)(1)(1), +#endif // BOOST_UTILITY_DOCS #endif diff --git a/src/boost/boost/utility/detail/result_of_iterate.hpp b/src/boost/boost/utility/detail/result_of_iterate.hpp index dad901280..8d05c8003 100644 --- a/src/boost/boost/utility/detail/result_of_iterate.hpp +++ b/src/boost/boost/utility/detail/result_of_iterate.hpp @@ -22,7 +22,7 @@ # define BOOST_RESULT_OF_ARGS BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(),T) #endif -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551)) +#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x551)) template struct tr1_result_of : conditional< @@ -151,7 +151,7 @@ struct cpp0x_result_of_impl struct result_of : tr1_result_of { }; @@ -177,7 +177,7 @@ struct tr1_result_of_impl struct tr1_result_of_impl +struct tr1_result_of + : conditional< + is_pointer::value || is_member_function_pointer::value + , boost::detail::tr1_result_of_impl< + typename remove_cv::type, + typename remove_cv::type(Args...), + (boost::detail::result_of_has_result_type::value)> + , boost::detail::tr1_result_of_impl< + F, + F(Args...), + (boost::detail::result_of_has_result_type::value)> >::type { }; + +#ifdef BOOST_RESULT_OF_USE_DECLTYPE +template +struct result_of + : detail::cpp0x_result_of { }; +#endif // BOOST_RESULT_OF_USE_DECLTYPE + +#ifdef BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK +template +struct result_of + : conditional::value || detail::result_of_has_result::value, + tr1_result_of, + detail::cpp0x_result_of >::type { }; +#endif // BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK + +#if defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK) + +namespace detail { + +template +struct cpp0x_result_of + : conditional< + is_member_function_pointer::value + , detail::tr1_result_of_impl< + typename remove_cv::type, + typename remove_cv::type(Args...), false + > + , detail::cpp0x_result_of_impl< + F(Args...) + > + >::type +{}; + +#ifdef BOOST_NO_SFINAE_EXPR + +template +struct result_of_callable_fun_2; + +template +struct result_of_callable_fun_2 { + R operator()(Args...) const; + typedef result_of_private_type const &(*pfn_t)(...); + operator pfn_t() const volatile; +}; + +template +struct result_of_callable_fun + : result_of_callable_fun_2 +{}; + +template +struct result_of_callable_fun + : result_of_callable_fun_2 +{}; + +template +struct result_of_select_call_wrapper_type + : conditional< + is_class::type>::value, + result_of_wrap_callable_class, + type_identity::type>::type> > + >::type +{}; + +template +struct result_of_is_callable { + typedef typename result_of_select_call_wrapper_type::type wrapper_t; + static const bool value = ( + sizeof(result_of_no_type) == sizeof(detail::result_of_is_private_type( + (boost::declval()(boost::declval()...), result_of_weird_type()) + )) + ); + typedef integral_constant type; +}; + +template +struct cpp0x_result_of_impl + : lazy_enable_if< + result_of_is_callable + , cpp0x_result_of_impl + > +{}; + +template +struct cpp0x_result_of_impl +{ + typedef decltype( + boost::declval()( + boost::declval()... + ) + ) type; +}; + +#else // BOOST_NO_SFINAE_EXPR + +template +struct cpp0x_result_of_impl()( + boost::declval()... + ) + )>::type> { + typedef decltype( + boost::declval()( + boost::declval()... + ) + ) type; +}; + +#endif // BOOST_NO_SFINAE_EXPR + +} // namespace detail + +#else // defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK) + +template +struct result_of + : tr1_result_of { }; + +#endif // defined(BOOST_RESULT_OF_USE_DECLTYPE) + +namespace detail { + +template +struct tr1_result_of_impl +{ + typedef R type; +}; + +template +struct tr1_result_of_impl +{ + typedef R type; +}; + +template +struct tr1_result_of_impl +{ + typedef R type; +}; + +template +struct tr1_result_of_impl +{ + typedef R type; +}; + +template +struct tr1_result_of_impl +{ + typedef R type; +}; + +template +struct tr1_result_of_impl +{ + typedef R type; +}; + +} diff --git a/src/boost/boost/utility/result_of.hpp b/src/boost/boost/utility/result_of.hpp index 2ab665289..5e67ac0ef 100644 --- a/src/boost/boost/utility/result_of.hpp +++ b/src/boost/boost/utility/result_of.hpp @@ -10,13 +10,6 @@ #define BOOST_RESULT_OF_HPP #include -#include -#include -#include -#include -#include -#include -#include #include #include #include @@ -29,9 +22,25 @@ #include #include +#ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES +# undef BOOST_RESULT_OF_NO_VARIADIC_TEMPLATES +# define BOOST_RESULT_OF_NO_VARIADIC_TEMPLATES +#endif +#ifdef BOOST_RESULT_OF_NO_VARIADIC_TEMPLATES +# include +# include +# include +# include +# include +# include +# include +#endif + +#ifndef BOOST_UTILITY_DOCS #ifndef BOOST_RESULT_OF_NUM_ARGS # define BOOST_RESULT_OF_NUM_ARGS 16 #endif +#endif // BOOST_UTILITY_DOCS // Use the decltype-based version of result_of by default if the compiler // supports N3276 . @@ -44,6 +53,7 @@ BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK cannot be defined at the same time. #endif +#ifndef BOOST_UTILITY_DOCS #ifndef BOOST_RESULT_OF_USE_TR1 # ifndef BOOST_RESULT_OF_USE_DECLTYPE # ifndef BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK @@ -55,6 +65,7 @@ # endif # endif #endif +#endif // BOOST_UTILITY_DOCS namespace boost { @@ -108,8 +119,8 @@ template struct cpp0x_result_of; // There doesn't seem to be any other way to turn this off such that the presence of // the user-defined operator,() below doesn't cause spurious warning all over the place, -// so unconditionally turn it off. -#if BOOST_MSVC +// so unconditionally and globally turn it off. (https://svn.boost.org/trac10/ticket/7663) +#ifdef BOOST_MSVC # pragma warning(disable: 4913) // user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used #endif @@ -123,12 +134,19 @@ template result_of_no_type result_of_is_private_type(T const &); result_of_yes_type result_of_is_private_type(result_of_private_type); +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif template struct result_of_callable_class : C { result_of_callable_class(); typedef result_of_private_type const &(*pfn_t)(...); operator pfn_t() const volatile; }; +#ifdef BOOST_MSVC +# pragma warning(pop) +#endif template struct result_of_wrap_callable_class { @@ -217,8 +235,12 @@ struct tr1_result_of_impl } // end namespace detail -#define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_RESULT_OF_NUM_ARGS,)) -#include BOOST_PP_ITERATE() +#ifndef BOOST_RESULT_OF_NO_VARIADIC_TEMPLATES +# include +#else +# define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_RESULT_OF_NUM_ARGS,)) +# include BOOST_PP_ITERATE() +#endif #if 0 // inform dependency trackers, as they can't see through macro includes diff --git a/src/boost/boost/version.hpp b/src/boost/boost/version.hpp index ab8f92278..a517ee1ce 100644 --- a/src/boost/boost/version.hpp +++ b/src/boost/boost/version.hpp @@ -19,7 +19,7 @@ // BOOST_VERSION / 100 % 1000 is the minor version // BOOST_VERSION / 100000 is the major version -#define BOOST_VERSION 106900 +#define BOOST_VERSION 108300 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,6 +27,6 @@ // number, y is the minor version number, and z is the patch level if not 0. // This is used by to select which library version to link to. -#define BOOST_LIB_VERSION "1_69" +#define BOOST_LIB_VERSION "1_83" #endif diff --git a/src/boost/boost/winapi/basic_types.hpp b/src/boost/boost/winapi/basic_types.hpp index 7c9a384ca..79d87d0ca 100644 --- a/src/boost/boost/winapi/basic_types.hpp +++ b/src/boost/boost/winapi/basic_types.hpp @@ -17,8 +17,7 @@ #if defined(BOOST_USE_WINDOWS_H) # include -#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) -# include +#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # ifdef UNDER_CE # ifndef WINAPI # ifndef _WIN32_WCE_EMULATION @@ -31,12 +30,16 @@ typedef int BOOL; typedef unsigned long DWORD; typedef void* HANDLE; +typedef HANDLE HGLOBAL; +typedef void* LPVOID; # include # endif // UNDER_CE #else # error "Win32 functions not available" #endif +#include + #if defined(_M_IX86) || defined(__i386__) #define BOOST_WINAPI_DETAIL_STDCALL __stdcall #else @@ -156,13 +159,6 @@ typedef ::LPCWSTR LPCWSTR_; #else // defined( BOOST_USE_WINDOWS_H ) -#if defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) \ - && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 -#pragma GCC diagnostic push -// ISO C++ 1998 does not support 'long long' -#pragma GCC diagnostic ignored "-Wlong-long" -#endif - typedef int BOOL_; typedef BOOL_* PBOOL_; typedef BOOL_* LPBOOL_; @@ -244,24 +240,14 @@ typedef wchar_t WCHAR_; typedef WCHAR_ *LPWSTR_; typedef const WCHAR_ *LPCWSTR_; -#if defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) \ - && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 -#pragma GCC diagnostic pop -#endif - #endif // defined( BOOST_USE_WINDOWS_H ) -// ::NTSTATUS is defined in ntdef.h, which is not included by windows.h by default, so alwaus use LONG_ +// ::NTSTATUS is defined in ntdef.h or winternl.h in different Windows SDKs, and is not included by windows.h by default, so always use LONG_ typedef LONG_ NTSTATUS_; typedef NTSTATUS_ *PNTSTATUS_; typedef ::HMODULE HMODULE_; -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4201) // nonstandard extension used : nameless struct/union -#endif - typedef union BOOST_MAY_ALIAS _LARGE_INTEGER { BOOST_WINAPI_DETAIL_EXTENSION struct { DWORD_ LowPart; @@ -274,10 +260,6 @@ typedef union BOOST_MAY_ALIAS _LARGE_INTEGER { LONGLONG_ QuadPart; } LARGE_INTEGER_, *PLARGE_INTEGER_; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - typedef struct BOOST_MAY_ALIAS _SECURITY_ATTRIBUTES { DWORD_ nLength; LPVOID_ lpSecurityDescriptor; @@ -287,4 +269,6 @@ typedef struct BOOST_MAY_ALIAS _SECURITY_ATTRIBUTES { } } +#include + #endif // BOOST_WINAPI_BASIC_TYPES_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/bcrypt.hpp b/src/boost/boost/winapi/bcrypt.hpp new file mode 100644 index 000000000..42e2c592a --- /dev/null +++ b/src/boost/boost/winapi/bcrypt.hpp @@ -0,0 +1,89 @@ +/* + * Copyright 2017 James E. King, III + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_BCRYPT_HPP_INCLUDED_ +#define BOOST_WINAPI_BCRYPT_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM + +#if defined(BOOST_USE_WINDOWS_H) +#include +#endif + +#include + +#if defined(BOOST_USE_WINDOWS_H) + +namespace boost { namespace winapi { +typedef ::BCRYPT_ALG_HANDLE BCRYPT_ALG_HANDLE_; +}} + +#else // defined(BOOST_USE_WINDOWS_H) + +namespace boost { namespace winapi { +typedef PVOID_ BCRYPT_ALG_HANDLE_; +}} + +extern "C" { + +boost::winapi::NTSTATUS_ BOOST_WINAPI_WINAPI_CC +BCryptCloseAlgorithmProvider( + boost::winapi::BCRYPT_ALG_HANDLE_ hAlgorithm, + boost::winapi::ULONG_ dwFlags +); + +boost::winapi::NTSTATUS_ BOOST_WINAPI_WINAPI_CC +BCryptGenRandom( + boost::winapi::BCRYPT_ALG_HANDLE_ hAlgorithm, + boost::winapi::PUCHAR_ pbBuffer, + boost::winapi::ULONG_ cbBuffer, + boost::winapi::ULONG_ dwFlags +); + +boost::winapi::NTSTATUS_ BOOST_WINAPI_WINAPI_CC +BCryptOpenAlgorithmProvider( + boost::winapi::BCRYPT_ALG_HANDLE_ *phAlgorithm, + boost::winapi::LPCWSTR_ pszAlgId, + boost::winapi::LPCWSTR_ pszImplementation, + boost::winapi::DWORD_ dwFlags +); + +} // extern "C" + +#endif // defined(BOOST_USE_WINDOWS_H) + +namespace boost { +namespace winapi { + +#if defined(BOOST_USE_WINDOWS_H) +const WCHAR_ BCRYPT_RNG_ALGORITHM_[] = BCRYPT_RNG_ALGORITHM; +#else +const WCHAR_ BCRYPT_RNG_ALGORITHM_[] = L"RNG"; +#endif + +using ::BCryptCloseAlgorithmProvider; +using ::BCryptGenRandom; +using ::BCryptOpenAlgorithmProvider; + +} // winapi +} // boost + +#include + +#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM + +#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + +#endif // BOOST_WINAPI_BCRYPT_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/character_code_conversion.hpp b/src/boost/boost/winapi/character_code_conversion.hpp index b45956eca..e26eec2cb 100644 --- a/src/boost/boost/winapi/character_code_conversion.hpp +++ b/src/boost/boost/winapi/character_code_conversion.hpp @@ -9,6 +9,7 @@ #define BOOST_WINAPI_CHARACTER_CODE_CONVERSION_HPP_INCLUDED_ #include +#include #ifdef BOOST_HAS_PRAGMA_ONCE #pragma once @@ -17,7 +18,7 @@ #if !defined( BOOST_USE_WINDOWS_H ) extern "C" { -BOOST_SYMBOL_IMPORT int BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT_EXCEPT_WM int BOOST_WINAPI_WINAPI_CC MultiByteToWideChar( boost::winapi::UINT_ CodePage, boost::winapi::DWORD_ dwFlags, @@ -26,7 +27,7 @@ MultiByteToWideChar( boost::winapi::LPWSTR_ lpWideCharStr, int cchWideChar); -BOOST_SYMBOL_IMPORT int BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT_EXCEPT_WM int BOOST_WINAPI_WINAPI_CC WideCharToMultiByte( boost::winapi::UINT_ CodePage, boost::winapi::DWORD_ dwFlags, @@ -102,4 +103,6 @@ using ::WideCharToMultiByte; } // namespace winapi } // namespace boost +#include + #endif // BOOST_WINAPI_CHARACTER_CODE_CONVERSION_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/condition_variable.hpp b/src/boost/boost/winapi/condition_variable.hpp new file mode 100644 index 000000000..ef90b19f4 --- /dev/null +++ b/src/boost/boost/winapi/condition_variable.hpp @@ -0,0 +1,123 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_CONDITION_VARIABLE_HPP_INCLUDED_ +#define BOOST_WINAPI_CONDITION_VARIABLE_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + +#include +#include + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +struct _RTL_CONDITION_VARIABLE; +struct _RTL_CRITICAL_SECTION; +struct _RTL_SRWLOCK; + +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +InitializeConditionVariable(::_RTL_CONDITION_VARIABLE* ConditionVariable); + +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +WakeConditionVariable(::_RTL_CONDITION_VARIABLE* ConditionVariable); + +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +WakeAllConditionVariable(::_RTL_CONDITION_VARIABLE* ConditionVariable); + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +SleepConditionVariableCS( + ::_RTL_CONDITION_VARIABLE* ConditionVariable, + ::_RTL_CRITICAL_SECTION* CriticalSection, + boost::winapi::DWORD_ dwMilliseconds); + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +SleepConditionVariableSRW( + ::_RTL_CONDITION_VARIABLE* ConditionVariable, + ::_RTL_SRWLOCK* SRWLock, + boost::winapi::DWORD_ dwMilliseconds, + boost::winapi::ULONG_ Flags); +} +#endif + +namespace boost { +namespace winapi { + +typedef struct BOOST_MAY_ALIAS _RTL_CONDITION_VARIABLE { + PVOID_ Ptr; +} CONDITION_VARIABLE_, *PCONDITION_VARIABLE_; + +#if defined( BOOST_USE_WINDOWS_H ) +#define BOOST_WINAPI_CONDITION_VARIABLE_INIT CONDITION_VARIABLE_INIT +#else +#define BOOST_WINAPI_CONDITION_VARIABLE_INIT {0} +#endif + +struct _RTL_CRITICAL_SECTION; +struct _RTL_SRWLOCK; + +BOOST_FORCEINLINE VOID_ InitializeConditionVariable(PCONDITION_VARIABLE_ ConditionVariable) +{ + ::InitializeConditionVariable(reinterpret_cast< ::_RTL_CONDITION_VARIABLE* >(ConditionVariable)); +} + +BOOST_FORCEINLINE VOID_ WakeConditionVariable(PCONDITION_VARIABLE_ ConditionVariable) +{ + ::WakeConditionVariable(reinterpret_cast< ::_RTL_CONDITION_VARIABLE* >(ConditionVariable)); +} + +BOOST_FORCEINLINE VOID_ WakeAllConditionVariable(PCONDITION_VARIABLE_ ConditionVariable) +{ + ::WakeAllConditionVariable(reinterpret_cast< ::_RTL_CONDITION_VARIABLE* >(ConditionVariable)); +} + +BOOST_FORCEINLINE BOOL_ SleepConditionVariableCS( + PCONDITION_VARIABLE_ ConditionVariable, + _RTL_CRITICAL_SECTION* CriticalSection, + DWORD_ dwMilliseconds) +{ + return ::SleepConditionVariableCS( + reinterpret_cast< ::_RTL_CONDITION_VARIABLE* >(ConditionVariable), + reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(CriticalSection), + dwMilliseconds); +} + +BOOST_FORCEINLINE BOOL_ SleepConditionVariableSRW( + PCONDITION_VARIABLE_ ConditionVariable, + _RTL_SRWLOCK* SRWLock, + DWORD_ dwMilliseconds, + ULONG_ Flags) +{ + return ::SleepConditionVariableSRW( + reinterpret_cast< ::_RTL_CONDITION_VARIABLE* >(ConditionVariable), + reinterpret_cast< ::_RTL_SRWLOCK* >(SRWLock), + dwMilliseconds, + Flags); +} + +#if defined( BOOST_USE_WINDOWS_H ) +BOOST_CONSTEXPR_OR_CONST ULONG_ CONDITION_VARIABLE_LOCKMODE_SHARED_ = CONDITION_VARIABLE_LOCKMODE_SHARED; +#else // defined( BOOST_USE_WINDOWS_H ) +BOOST_CONSTEXPR_OR_CONST ULONG_ CONDITION_VARIABLE_LOCKMODE_SHARED_ = 0x00000001; +#endif // defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST ULONG_ condition_variable_lockmode_shared = CONDITION_VARIABLE_LOCKMODE_SHARED_; + +} +} + +#include + +#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + +#endif // BOOST_WINAPI_CONDITION_VARIABLE_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/config.hpp b/src/boost/boost/winapi/config.hpp index 5ca64c0b1..942a82dc0 100644 --- a/src/boost/boost/winapi/config.hpp +++ b/src/boost/boost/winapi/config.hpp @@ -16,6 +16,10 @@ // the header defines the macro unconditionally and if the user includes both Boost.WinAPI and Cygwin WinAPI headers there will be conflict. #include <_cygwin.h> #endif +#if defined(__MINGW32__) +// MinGW and MinGW-w64 define __MINGW32_VERSION_MAJOR/MINOR and __MINGW64_VERSION_MAJOR/MINOR macros in a private header. +#include <_mingw.h> +#endif // BOOST_WINAPI_IS_MINGW indicates that the target Windows SDK is provided by MinGW (http://mingw.org/). // BOOST_WINAPI_IS_MINGW_W64 indicates that the target Windows SDK is provided by MinGW-w64 (http://mingw-w64.org). @@ -221,6 +225,17 @@ #endif #endif +#if defined (WIN32_PLATFORM_PSPC) +#define BOOST_WINAPI_IMPORT BOOST_SYMBOL_IMPORT +#define BOOST_WINAPI_IMPORT_EXCEPT_WM +#elif defined (_WIN32_WCE) +#define BOOST_WINAPI_IMPORT +#define BOOST_WINAPI_IMPORT_EXCEPT_WM +#else +#define BOOST_WINAPI_IMPORT BOOST_SYMBOL_IMPORT +#define BOOST_WINAPI_IMPORT_EXCEPT_WM BOOST_SYMBOL_IMPORT +#endif + #include #ifdef BOOST_HAS_PRAGMA_ONCE diff --git a/src/boost/boost/winapi/critical_section.hpp b/src/boost/boost/winapi/critical_section.hpp new file mode 100644 index 000000000..4c8e32ee6 --- /dev/null +++ b/src/boost/boost/winapi/critical_section.hpp @@ -0,0 +1,240 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_CRITICAL_SECTION_HPP_INCLUDED_ +#define BOOST_WINAPI_CRITICAL_SECTION_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined( BOOST_USE_WINDOWS_H ) + +extern "C" { +#if !defined( BOOST_WINAPI_IS_MINGW ) + +// Windows CE uses a different name for the structure +#if defined (_WIN32_WCE) +struct CRITICAL_SECTION; +namespace boost { +namespace winapi { +namespace detail { + typedef CRITICAL_SECTION winsdk_critical_section; +} +} +} +#else +struct _RTL_CRITICAL_SECTION; +namespace boost { +namespace winapi { +namespace detail { + typedef _RTL_CRITICAL_SECTION winsdk_critical_section; +} +} +} +#endif + +#else +// MinGW uses a different name for the structure +struct _CRITICAL_SECTION; + +namespace boost { +namespace winapi { +namespace detail { + typedef _CRITICAL_SECTION winapi_critical_section; +} +} +} +#endif + +#if !defined( BOOST_WINAPI_IS_MINGW ) + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +InitializeCriticalSection(boost::winapi::detail::winsdk_critical_section* lpCriticalSection); +#endif + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +EnterCriticalSection(boost::winapi::detail::winsdk_critical_section* lpCriticalSection); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +LeaveCriticalSection(boost::winapi::detail::winsdk_critical_section* lpCriticalSection); + +#if BOOST_USE_WINAPI_VERSION >= 0x0403 +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +InitializeCriticalSectionAndSpinCount( + boost::winapi::detail::winsdk_critical_section* lpCriticalSection, + boost::winapi::DWORD_ dwSpinCount); + +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +SetCriticalSectionSpinCount( + boost::winapi::detail::winsdk_critical_section* lpCriticalSection, + boost::winapi::DWORD_ dwSpinCount); +#endif + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +InitializeCriticalSectionEx( + boost::winapi::detail::winsdk_critical_section* lpCriticalSection, + boost::winapi::DWORD_ dwSpinCount, + boost::winapi::DWORD_ Flags); +#endif +#endif + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4 +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +TryEnterCriticalSection(boost::winapi::detail::winsdk_critical_section* lpCriticalSection); +#endif + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +DeleteCriticalSection(boost::winapi::detail::winsdk_critical_section* lpCriticalSection); + +#else // defined( BOOST_WINAPI_IS_MINGW ) + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +InitializeCriticalSection(boost::winapi::detail::winapi_critical_section* lpCriticalSection); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +EnterCriticalSection(boost::winapi::detail::winapi_critical_section* lpCriticalSection); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +LeaveCriticalSection(boost::winapi::detail::winapi_critical_section* lpCriticalSection); + +#if BOOST_USE_WINAPI_VERSION >= 0x0403 +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +InitializeCriticalSectionAndSpinCount( + boost::winapi::detail::winapi_critical_section* lpCriticalSection, + boost::winapi::DWORD_ dwSpinCount); + +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +SetCriticalSectionSpinCount( + boost::winapi::detail::winapi_critical_section* lpCriticalSection, + boost::winapi::DWORD_ dwSpinCount); +#endif + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +InitializeCriticalSectionEx( + boost::winapi::detail::winapi_critical_section* lpCriticalSection, + boost::winapi::DWORD_ dwSpinCount, + boost::winapi::DWORD_ Flags); +#endif + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4 +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +TryEnterCriticalSection(boost::winapi::detail::winapi_critical_section* lpCriticalSection); +#endif + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +DeleteCriticalSection(boost::winapi::detail::winapi_critical_section* lpCriticalSection); + +#endif // defined( BOOST_WINAPI_IS_MINGW ) +} // extern "C" +#endif + +namespace boost { +namespace winapi { + + +#pragma pack(push, 8) + +#if !defined(_WIN32_WCE) + +struct _RTL_CRITICAL_SECTION_DEBUG; + +typedef struct BOOST_MAY_ALIAS _RTL_CRITICAL_SECTION { + _RTL_CRITICAL_SECTION_DEBUG* DebugInfo; + LONG_ LockCount; + LONG_ RecursionCount; + HANDLE_ OwningThread; + HANDLE_ LockSemaphore; + ULONG_PTR_ SpinCount; +} CRITICAL_SECTION_, *PCRITICAL_SECTION_; + +#else + +// Windows CE has different layout +typedef struct BOOST_MAY_ALIAS CRITICAL_SECTION { + unsigned int LockCount; + HANDLE OwnerThread; + HANDLE hCrit; + DWORD needtrap; + DWORD dwContentions; +} CRITICAL_SECTION_, *LPCRITICAL_SECTION_; + +#endif + +#pragma pack(pop) + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_FORCEINLINE VOID_ InitializeCriticalSection(CRITICAL_SECTION_* lpCriticalSection) +{ + ::InitializeCriticalSection(winapi::detail::cast_ptr(lpCriticalSection)); +} +#endif + +BOOST_FORCEINLINE VOID_ EnterCriticalSection(CRITICAL_SECTION_* lpCriticalSection) +{ + ::EnterCriticalSection(winapi::detail::cast_ptr(lpCriticalSection)); +} + +BOOST_FORCEINLINE VOID_ LeaveCriticalSection(CRITICAL_SECTION_* lpCriticalSection) +{ + ::LeaveCriticalSection(winapi::detail::cast_ptr(lpCriticalSection)); +} + +#if BOOST_USE_WINAPI_VERSION >= 0x0403 +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_FORCEINLINE BOOL_ InitializeCriticalSectionAndSpinCount(CRITICAL_SECTION_* lpCriticalSection, DWORD_ dwSpinCount) +{ + return ::InitializeCriticalSectionAndSpinCount(winapi::detail::cast_ptr(lpCriticalSection), dwSpinCount); +} + +BOOST_FORCEINLINE DWORD_ SetCriticalSectionSpinCount(CRITICAL_SECTION_* lpCriticalSection, DWORD_ dwSpinCount) +{ + return ::SetCriticalSectionSpinCount(winapi::detail::cast_ptr(lpCriticalSection), dwSpinCount); +} +#endif + +// CRITICAL_SECTION_NO_DEBUG_INFO is defined for WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) +BOOST_CONSTEXPR_OR_CONST DWORD_ CRITICAL_SECTION_NO_DEBUG_INFO_ = 0x01000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ CRITICAL_SECTION_FLAG_NO_DEBUG_INFO_ = CRITICAL_SECTION_NO_DEBUG_INFO_; +BOOST_CONSTEXPR_OR_CONST DWORD_ CRITICAL_SECTION_FLAG_DYNAMIC_SPIN_ = 0x02000000; // undocumented +BOOST_CONSTEXPR_OR_CONST DWORD_ CRITICAL_SECTION_FLAG_STATIC_INIT_ = 0x04000000; // undocumented + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_FORCEINLINE BOOL_ InitializeCriticalSectionEx(CRITICAL_SECTION_* lpCriticalSection, DWORD_ dwSpinCount, DWORD_ Flags) +{ + return ::InitializeCriticalSectionEx(winapi::detail::cast_ptr(lpCriticalSection), dwSpinCount, Flags); +} +#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +#endif // BOOST_USE_WINAPI_VERSION >= 0x0403 + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4 +BOOST_FORCEINLINE BOOL_ TryEnterCriticalSection(CRITICAL_SECTION_* lpCriticalSection) +{ + return ::TryEnterCriticalSection(winapi::detail::cast_ptr(lpCriticalSection)); +} +#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4 + +BOOST_FORCEINLINE VOID_ DeleteCriticalSection(CRITICAL_SECTION_* lpCriticalSection) +{ + ::DeleteCriticalSection(winapi::detail::cast_ptr(lpCriticalSection)); +} + +} +} + +#include + +#endif // BOOST_WINAPI_CRITICAL_SECTION_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/crypt.hpp b/src/boost/boost/winapi/crypt.hpp new file mode 100644 index 000000000..0268fc065 --- /dev/null +++ b/src/boost/boost/winapi/crypt.hpp @@ -0,0 +1,191 @@ +/* + * Copyright 2014 Antony Polukhin + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_CRYPT_HPP_INCLUDED_ +#define BOOST_WINAPI_CRYPT_HPP_INCLUDED_ + +#include +#if defined( BOOST_USE_WINDOWS_H ) +// This header is not always included as part of windows.h +#include +#endif +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined( BOOST_USE_WINDOWS_H ) +namespace boost { namespace winapi { +typedef ULONG_PTR_ HCRYPTPROV_; +}} + +extern "C" { +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +CryptEnumProvidersA( + boost::winapi::DWORD_ dwIndex, + boost::winapi::DWORD_ *pdwReserved, + boost::winapi::DWORD_ dwFlags, + boost::winapi::DWORD_ *pdwProvType, + boost::winapi::LPSTR_ szProvName, + boost::winapi::DWORD_ *pcbProvName); + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +CryptAcquireContextA( + boost::winapi::HCRYPTPROV_ *phProv, + boost::winapi::LPCSTR_ pszContainer, + boost::winapi::LPCSTR_ pszProvider, + boost::winapi::DWORD_ dwProvType, + boost::winapi::DWORD_ dwFlags); +#endif // !defined( BOOST_NO_ANSI_APIS ) + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +CryptEnumProvidersW( + boost::winapi::DWORD_ dwIndex, + boost::winapi::DWORD_ *pdwReserved, + boost::winapi::DWORD_ dwFlags, + boost::winapi::DWORD_ *pdwProvType, + boost::winapi::LPWSTR_ szProvName, + boost::winapi::DWORD_ *pcbProvName); + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +CryptAcquireContextW( + boost::winapi::HCRYPTPROV_ *phProv, + boost::winapi::LPCWSTR_ szContainer, + boost::winapi::LPCWSTR_ szProvider, + boost::winapi::DWORD_ dwProvType, + boost::winapi::DWORD_ dwFlags); + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +CryptGenRandom( + boost::winapi::HCRYPTPROV_ hProv, + boost::winapi::DWORD_ dwLen, + boost::winapi::BYTE_ *pbBuffer); +#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +#if defined(_MSC_VER) && (_MSC_VER+0) >= 1500 && (_MSC_VER+0) < 1900 && BOOST_USE_NTDDI_VERSION < BOOST_WINAPI_NTDDI_WINXP +// Standalone MS Windows SDK 6.0A and later until 10.0 provide a different declaration of CryptReleaseContext for Windows 2000 and older. +// This is not the case for (a) MinGW and MinGW-w64, (b) MSVC 7.1 and 8, which are shipped with their own Windows SDK, +// and (c) MSVC 14.0 and later, which are used with Windows SDK 10. +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +CryptReleaseContext( + boost::winapi::HCRYPTPROV_ hProv, + boost::winapi::ULONG_PTR_ dwFlags); +#else +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +CryptReleaseContext( + boost::winapi::HCRYPTPROV_ hProv, + boost::winapi::DWORD_ dwFlags); +#endif +#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM +} +#endif // !defined( BOOST_USE_WINDOWS_H ) + +namespace boost { +namespace winapi { + +#if defined( BOOST_USE_WINDOWS_H ) + +typedef ::HCRYPTPROV HCRYPTPROV_; + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_CONSTEXPR_OR_CONST DWORD_ PROV_RSA_FULL_ = PROV_RSA_FULL; + +BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_VERIFYCONTEXT_ = CRYPT_VERIFYCONTEXT; +BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_NEWKEYSET_ = CRYPT_NEWKEYSET; +BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_DELETEKEYSET_ = CRYPT_DELETEKEYSET; +BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_MACHINE_KEYSET_ = CRYPT_MACHINE_KEYSET; +BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_SILENT_ = CRYPT_SILENT; +#endif + +#else + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_CONSTEXPR_OR_CONST DWORD_ PROV_RSA_FULL_ = 1; + +BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_VERIFYCONTEXT_ = 0xF0000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_NEWKEYSET_ = 8; +BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_DELETEKEYSET_ = 16; +BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_MACHINE_KEYSET_ = 32; +BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_SILENT_ = 64; +#endif + +#endif + +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +#if !defined( BOOST_NO_ANSI_APIS ) +using ::CryptEnumProvidersA; +using ::CryptAcquireContextA; +#endif +using ::CryptEnumProvidersW; +using ::CryptAcquireContextW; +using ::CryptGenRandom; + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_FORCEINLINE BOOL_ crypt_enum_providers( + DWORD_ dwIndex, + DWORD_ *pdwReserved, + DWORD_ dwFlags, + DWORD_ *pdwProvType, + LPSTR_ szProvName, + DWORD_ *pcbProvName) +{ + return ::CryptEnumProvidersA(dwIndex, pdwReserved, dwFlags, pdwProvType, szProvName, pcbProvName); +} + +BOOST_FORCEINLINE BOOL_ crypt_acquire_context( + HCRYPTPROV_ *phProv, + LPCSTR_ pszContainer, + LPCSTR_ pszProvider, + DWORD_ dwProvType, + DWORD_ dwFlags) +{ + return ::CryptAcquireContextA(phProv, pszContainer, pszProvider, dwProvType, dwFlags); +} +#endif + +BOOST_FORCEINLINE BOOL_ crypt_enum_providers( + DWORD_ dwIndex, + DWORD_ *pdwReserved, + DWORD_ dwFlags, + DWORD_ *pdwProvType, + LPWSTR_ szProvName, + DWORD_ *pcbProvName) +{ + return ::CryptEnumProvidersW(dwIndex, pdwReserved, dwFlags, pdwProvType, szProvName, pcbProvName); +} + +BOOST_FORCEINLINE BOOL_ crypt_acquire_context( + HCRYPTPROV_ *phProv, + LPCWSTR_ szContainer, + LPCWSTR_ szProvider, + DWORD_ dwProvType, + DWORD_ dwFlags) +{ + return ::CryptAcquireContextW(phProv, szContainer, szProvider, dwProvType, dwFlags); +} + +#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_FORCEINLINE BOOL_ CryptReleaseContext(HCRYPTPROV_ hProv, DWORD_ dwFlags) +{ + return ::CryptReleaseContext(hProv, dwFlags); +} +#endif + +} +} + +#include + +#endif // BOOST_WINAPI_CRYPT_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/detail/cast_ptr.hpp b/src/boost/boost/winapi/detail/cast_ptr.hpp new file mode 100644 index 000000000..851d1bb68 --- /dev/null +++ b/src/boost/boost/winapi/detail/cast_ptr.hpp @@ -0,0 +1,40 @@ +/* + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_DETAIL_CAST_PTR_HPP_INCLUDED_ +#define BOOST_WINAPI_DETAIL_CAST_PTR_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace winapi { +namespace detail { + +//! This class is used to automatically cast pointers to the type used in the current Windows SDK function declarations +class cast_ptr +{ +private: + const void* m_p; + +public: + explicit BOOST_FORCEINLINE cast_ptr(const void* p) BOOST_NOEXCEPT : m_p(p) {} + template< typename T > + BOOST_FORCEINLINE operator T* () const BOOST_NOEXCEPT { return (T*)m_p; } +}; + +} +} +} + +#include + +#endif // BOOST_WINAPI_DETAIL_CAST_PTR_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/detail/footer.hpp b/src/boost/boost/winapi/detail/footer.hpp new file mode 100644 index 000000000..5a0b53396 --- /dev/null +++ b/src/boost/boost/winapi/detail/footer.hpp @@ -0,0 +1,21 @@ +/* + * Copyright Andrey Semashev 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) + */ + +#if !defined(BOOST_WINAPI_ENABLE_WARNINGS) + +#if defined(_MSC_VER) && !(defined(__INTEL_COMPILER) || defined(__clang__)) + +#pragma warning(pop) + +#elif defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) \ + && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 + +#pragma GCC diagnostic pop + +#endif + +#endif // !defined(BOOST_WINAPI_ENABLE_WARNINGS) diff --git a/src/boost/boost/winapi/detail/header.hpp b/src/boost/boost/winapi/detail/header.hpp new file mode 100644 index 000000000..027a1d085 --- /dev/null +++ b/src/boost/boost/winapi/detail/header.hpp @@ -0,0 +1,27 @@ +/* + * Copyright Andrey Semashev 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) + */ + +#if !defined(BOOST_WINAPI_ENABLE_WARNINGS) + +#if defined(_MSC_VER) && !(defined(__INTEL_COMPILER) || defined(__clang__)) + +#pragma warning(push, 3) +// nonstandard extension used : nameless struct/union +#pragma warning(disable: 4201) +// Inconsistent annotation for 'X' +#pragma warning(disable: 28251) + +#elif defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) \ + && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 + +#pragma GCC diagnostic push +// ISO C++ 1998 does not support 'long long' +#pragma GCC diagnostic ignored "-Wlong-long" + +#endif + +#endif // !defined(BOOST_WINAPI_ENABLE_WARNINGS) diff --git a/src/boost/boost/winapi/directory_management.hpp b/src/boost/boost/winapi/directory_management.hpp new file mode 100644 index 000000000..4cb5799c7 --- /dev/null +++ b/src/boost/boost/winapi/directory_management.hpp @@ -0,0 +1,106 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_DIRECTORY_MANAGEMENT_HPP_INCLUDED_ +#define BOOST_WINAPI_DIRECTORY_MANAGEMENT_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC + CreateDirectoryA(boost::winapi::LPCSTR_, ::_SECURITY_ATTRIBUTES*); +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC + GetTempPathA(boost::winapi::DWORD_ length, boost::winapi::LPSTR_ buffer); +#endif +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC + RemoveDirectoryA(boost::winapi::LPCSTR_); +#endif +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC + CreateDirectoryW(boost::winapi::LPCWSTR_, ::_SECURITY_ATTRIBUTES*); +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC + GetTempPathW(boost::winapi::DWORD_ length, boost::winapi::LPWSTR_ buffer); +#endif +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC + RemoveDirectoryW(boost::winapi::LPCWSTR_); +} // extern "C" +#endif + +namespace boost { +namespace winapi { + +#if !defined( BOOST_NO_ANSI_APIS ) +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +using ::GetTempPathA; +#endif +using ::RemoveDirectoryA; +#endif +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +using ::GetTempPathW; +#endif +using ::RemoveDirectoryW; + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_FORCEINLINE BOOL_ CreateDirectoryA(LPCSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes) +{ + return ::CreateDirectoryA(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes)); +} +#endif + +BOOST_FORCEINLINE BOOL_ CreateDirectoryW(LPCWSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes) +{ + return ::CreateDirectoryW(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes)); +} + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_FORCEINLINE BOOL_ create_directory(LPCSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes) +{ + return ::CreateDirectoryA(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes)); +} +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_FORCEINLINE DWORD_ get_temp_path(DWORD_ length, LPSTR_ buffer) +{ + return ::GetTempPathA(length, buffer); +} +#endif +BOOST_FORCEINLINE BOOL_ remove_directory(LPCSTR_ pPathName) +{ + return ::RemoveDirectoryA(pPathName); +} +#endif + +BOOST_FORCEINLINE BOOL_ create_directory(LPCWSTR_ pPathName, PSECURITY_ATTRIBUTES_ pSecurityAttributes) +{ + return ::CreateDirectoryW(pPathName, reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(pSecurityAttributes)); +} +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_FORCEINLINE DWORD_ get_temp_path(DWORD_ length, LPWSTR_ buffer) +{ + return ::GetTempPathW(length, buffer); +} +#endif +BOOST_FORCEINLINE BOOL_ remove_directory(LPCWSTR_ pPathName) +{ + return ::RemoveDirectoryW(pPathName); +} + +} // namespace winapi +} // namespace boost + +#include + +#endif // BOOST_WINAPI_DIRECTORY_MANAGEMENT_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/dll.hpp b/src/boost/boost/winapi/dll.hpp new file mode 100644 index 000000000..52f063dad --- /dev/null +++ b/src/boost/boost/winapi/dll.hpp @@ -0,0 +1,199 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2014 Renato Tegon Forti, Antony Polukhin + * Copyright 2015, 2020 Andrey Semashev + * Copyright 2015 Antony Polukhin + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_DLL_HPP_INCLUDED_ +#define BOOST_WINAPI_DLL_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_WINAPI_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC +LoadLibraryA(boost::winapi::LPCSTR_ lpFileName); + +BOOST_WINAPI_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC +LoadLibraryExA( + boost::winapi::LPCSTR_ lpFileName, + boost::winapi::HANDLE_ hFile, + boost::winapi::DWORD_ dwFlags +); + +BOOST_WINAPI_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC +GetModuleHandleA(boost::winapi::LPCSTR_ lpFileName); + +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +GetModuleFileNameA( + boost::winapi::HMODULE_ hModule, + boost::winapi::LPSTR_ lpFilename, + boost::winapi::DWORD_ nSize +); +#endif + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC +LoadLibraryW(boost::winapi::LPCWSTR_ lpFileName); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC +LoadLibraryExW( + boost::winapi::LPCWSTR_ lpFileName, + boost::winapi::HANDLE_ hFile, + boost::winapi::DWORD_ dwFlags +); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC +GetModuleHandleW(boost::winapi::LPCWSTR_ lpFileName); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +GetModuleFileNameW( + boost::winapi::HMODULE_ hModule, + boost::winapi::LPWSTR_ lpFilename, + boost::winapi::DWORD_ nSize +); + +struct _MEMORY_BASIC_INFORMATION; + +#if !defined( BOOST_WINAPI_IS_MINGW ) +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::SIZE_T_ BOOST_WINAPI_WINAPI_CC +VirtualQuery( + boost::winapi::LPCVOID_ lpAddress, + ::_MEMORY_BASIC_INFORMATION* lpBuffer, + boost::winapi::SIZE_T_ dwLength +); +#else // !defined( BOOST_WINAPI_IS_MINGW ) +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +VirtualQuery( + boost::winapi::LPCVOID_ lpAddress, + ::_MEMORY_BASIC_INFORMATION* lpBuffer, + boost::winapi::DWORD_ dwLength +); +#endif // !defined( BOOST_WINAPI_IS_MINGW ) +} // extern "C" +#endif // #if !defined( BOOST_USE_WINDOWS_H ) + +namespace boost { +namespace winapi { + +typedef struct BOOST_MAY_ALIAS MEMORY_BASIC_INFORMATION_ { + PVOID_ BaseAddress; + PVOID_ AllocationBase; + DWORD_ AllocationProtect; + SIZE_T_ RegionSize; + DWORD_ State; + DWORD_ Protect; + DWORD_ Type; +} *PMEMORY_BASIC_INFORMATION_; + +#if defined( BOOST_USE_WINDOWS_H ) +BOOST_CONSTEXPR_OR_CONST DWORD_ DONT_RESOLVE_DLL_REFERENCES_ = DONT_RESOLVE_DLL_REFERENCES; +BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_WITH_ALTERED_SEARCH_PATH_ = LOAD_WITH_ALTERED_SEARCH_PATH; +#else // defined( BOOST_USE_WINDOWS_H ) +BOOST_CONSTEXPR_OR_CONST DWORD_ DONT_RESOLVE_DLL_REFERENCES_ = 0x00000001; +BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_WITH_ALTERED_SEARCH_PATH_ = 0x00000008; +#endif // defined( BOOST_USE_WINDOWS_H ) + +// This one is not defined by MinGW +BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_IGNORE_CODE_AUTHZ_LEVEL_ = 0x00000010; + +#if !defined( BOOST_NO_ANSI_APIS ) +using ::LoadLibraryA; +using ::LoadLibraryExA; +using ::GetModuleHandleA; +using ::GetModuleFileNameA; +#endif // !defined( BOOST_NO_ANSI_APIS ) +using ::LoadLibraryW; +using ::LoadLibraryExW; +using ::GetModuleHandleW; +using ::GetModuleFileNameW; + +BOOST_FORCEINLINE SIZE_T_ VirtualQuery(LPCVOID_ lpAddress, MEMORY_BASIC_INFORMATION_* lpBuffer, SIZE_T_ dwLength) +{ + return ::VirtualQuery(lpAddress, reinterpret_cast< ::_MEMORY_BASIC_INFORMATION* >(lpBuffer), dwLength); +} + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_FORCEINLINE HMODULE_ load_library(LPCSTR_ lpFileName) +{ + return ::LoadLibraryA(lpFileName); +} + +BOOST_FORCEINLINE HMODULE_ load_library_ex(LPCSTR_ lpFileName, HANDLE_ hFile, DWORD_ dwFlags) +{ + return ::LoadLibraryExA(lpFileName, hFile, dwFlags); +} + +BOOST_FORCEINLINE HMODULE_ get_module_handle(LPCSTR_ lpFileName) +{ + return ::GetModuleHandleA(lpFileName); +} + +BOOST_FORCEINLINE DWORD_ get_module_file_name(HMODULE_ hModule, LPSTR_ lpFilename, DWORD_ nSize) +{ + return ::GetModuleFileNameA(hModule, lpFilename, nSize); +} +#endif // #if !defined( BOOST_NO_ANSI_APIS ) + +BOOST_FORCEINLINE HMODULE_ load_library(LPCWSTR_ lpFileName) +{ + return ::LoadLibraryW(lpFileName); +} + +BOOST_FORCEINLINE HMODULE_ load_library_ex(LPCWSTR_ lpFileName, HANDLE_ hFile, DWORD_ dwFlags) +{ + return ::LoadLibraryExW(lpFileName, hFile, dwFlags); +} + +BOOST_FORCEINLINE HMODULE_ get_module_handle(LPCWSTR_ lpFileName) +{ + return ::GetModuleHandleW(lpFileName); +} + +BOOST_FORCEINLINE DWORD_ get_module_file_name(HMODULE_ hModule, LPWSTR_ lpFilename, DWORD_ nSize) +{ + return ::GetModuleFileNameW(hModule, lpFilename, nSize); +} + +} // namespace winapi +} // namespace boost + +#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +// +// FreeLibrary is in a different partition set (slightly) +// + +#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM + +#if !defined(BOOST_USE_WINDOWS_H) +extern "C" { +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +FreeLibrary(boost::winapi::HMODULE_ hModule); +} +#endif + +namespace boost { +namespace winapi { +using ::FreeLibrary; +} +} + +#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM + +#include + +#endif // BOOST_WINAPI_DLL_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/error_codes.hpp b/src/boost/boost/winapi/error_codes.hpp index 3aa434979..912b00700 100644 --- a/src/boost/boost/winapi/error_codes.hpp +++ b/src/boost/boost/winapi/error_codes.hpp @@ -9,6 +9,7 @@ #define BOOST_WINAPI_ERROR_CODES_HPP_INCLUDED_ #include +#include #ifdef BOOST_HAS_PRAGMA_ONCE #pragma once @@ -3175,4 +3176,6 @@ BOOST_CONSTEXPR_OR_CONST DWORD_ STORE_ERROR_LICENSE_REVOKED_ = 15864; } // namespace winapi } // namespace boost +#include + #endif // BOOST_WINAPI_ERROR_CODES_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/error_handling.hpp b/src/boost/boost/winapi/error_handling.hpp index a0da36cc4..40a0a445a 100644 --- a/src/boost/boost/winapi/error_handling.hpp +++ b/src/boost/boost/winapi/error_handling.hpp @@ -13,6 +13,7 @@ #include #include #include +#include #ifdef BOOST_HAS_PRAGMA_ONCE #pragma once @@ -21,7 +22,7 @@ #if !defined( BOOST_USE_WINDOWS_H ) extern "C" { #if !defined( BOOST_NO_ANSI_APIS ) -BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC FormatMessageA( boost::winapi::DWORD_ dwFlags, boost::winapi::LPCVOID_ lpSource, @@ -32,7 +33,7 @@ FormatMessageA( va_list *Arguments); #endif -BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC FormatMessageW( boost::winapi::DWORD_ dwFlags, boost::winapi::LPCVOID_ lpSource, @@ -43,7 +44,7 @@ FormatMessageW( va_list *Arguments); #if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM -BOOST_SYMBOL_IMPORT boost::winapi::UINT_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT boost::winapi::UINT_ BOOST_WINAPI_WINAPI_CC SetErrorMode(boost::winapi::UINT_ uMode); #endif } // extern "C" @@ -72,7 +73,7 @@ BOOST_CONSTEXPR_OR_CONST WORD_ SUBLANG_DEFAULT_= SUBLANG_DEFAULT; BOOST_FORCEINLINE BOOST_CONSTEXPR WORD_ MAKELANGID_(WORD_ p, WORD_ s) BOOST_NOEXCEPT { - return MAKELANGID(p,s); + return static_cast< WORD_ >(MAKELANGID(p, s)); } #if BOOST_WINAPI_PARTITION_DESKTOP @@ -101,7 +102,7 @@ BOOST_CONSTEXPR_OR_CONST WORD_ SUBLANG_DEFAULT_= 0x01; // user BOOST_FORCEINLINE BOOST_CONSTEXPR WORD_ MAKELANGID_(WORD_ p, WORD_ s) BOOST_NOEXCEPT { - return (WORD_)((((WORD_)(s)) << 10) | (WORD_)(p)); + return static_cast< WORD_ >((static_cast< DWORD_ >(s) << 10u) | p); } #if BOOST_WINAPI_PARTITION_DESKTOP @@ -150,4 +151,6 @@ BOOST_FORCEINLINE DWORD_ format_message( } } +#include + #endif // BOOST_WINAPI_ERROR_HANDLING_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/file_management.hpp b/src/boost/boost/winapi/file_management.hpp new file mode 100644 index 000000000..4c151a79d --- /dev/null +++ b/src/boost/boost/winapi/file_management.hpp @@ -0,0 +1,597 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * Copyright 2016 Jorge Lodos + * Copyright 2017 James E. King, III + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_FILE_MANAGEMENT_HPP_INCLUDED_ +#define BOOST_WINAPI_FILE_MANAGEMENT_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +/* + * UWP: + * API SDK 8 SDK 10 _WIN32_WINNT + * AreFileApisANSI DESKTOP - DESKTOP | SYSTEM + * CreateFile DESKTOP - DESKTOP | SYSTEM + * DeleteFile APP - APP | SYSTEM + * FindClose APP - APP | SYSTEM + * FindFirstFile DESKTOP > APP | SYSTEM + * FindNextFile DESKTOP > APP | SYSTEM + * GetFileAttributes DESKTOP > APP | SYSTEM + * GetFileInformationByHandle DESKTOP - DESKTOP | SYSTEM + * GetFileSizeEx DESKTOP > APP | SYSTEM + * LockFile DESKTOP - DESKTOP | SYSTEM + * MoveFileEx APP - APP | SYSTEM + * ReadFile APP - APP | SYSTEM + * SetEndOfFile APP - APP | SYSTEM + * SetFilePointer DESKTOP > APP | SYSTEM + * SetFileValidData DESKTOP - DESKTOP | SYSTEM >= 0x0501 + * UnlockFile DESKTOP - DESKTOP | SYSTEM + * WriteFile APP - APP | SYSTEM + */ + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { + +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +AreFileApisANSI(BOOST_WINAPI_DETAIL_VOID); + +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateFileA( + boost::winapi::LPCSTR_ lpFileName, + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::DWORD_ dwShareMode, + ::_SECURITY_ATTRIBUTES* lpSecurityAttributes, + boost::winapi::DWORD_ dwCreationDisposition, + boost::winapi::DWORD_ dwFlagsAndAttributes, + boost::winapi::HANDLE_ hTemplateFile); + +struct _WIN32_FIND_DATAA; +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +FindFirstFileA(boost::winapi::LPCSTR_ lpFileName, ::_WIN32_FIND_DATAA* lpFindFileData); + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +FindNextFileA(boost::winapi::HANDLE_ hFindFile, ::_WIN32_FIND_DATAA* lpFindFileData); +#endif + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateFileW( + boost::winapi::LPCWSTR_ lpFileName, + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::DWORD_ dwShareMode, + ::_SECURITY_ATTRIBUTES* lpSecurityAttributes, + boost::winapi::DWORD_ dwCreationDisposition, + boost::winapi::DWORD_ dwFlagsAndAttributes, + boost::winapi::HANDLE_ hTemplateFile); + +struct _WIN32_FIND_DATAW; +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +FindFirstFileW(boost::winapi::LPCWSTR_ lpFileName, ::_WIN32_FIND_DATAW* lpFindFileData); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +FindNextFileW(boost::winapi::HANDLE_ hFindFile, ::_WIN32_FIND_DATAW* lpFindFileData); + +struct _BY_HANDLE_FILE_INFORMATION; +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +GetFileInformationByHandle( + boost::winapi::HANDLE_ hFile, + ::_BY_HANDLE_FILE_INFORMATION* lpFileInformation); + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +LockFile( + boost::winapi::HANDLE_ hFile, + boost::winapi::DWORD_ dwFileOffsetLow, + boost::winapi::DWORD_ dwFileOffsetHigh, + boost::winapi::DWORD_ nNumberOfBytesToLockLow, + boost::winapi::DWORD_ nNumberOfBytesToLockHigh); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +LockFileEx( + boost::winapi::HANDLE_ hFile, + boost::winapi::DWORD_ dwFlags, + boost::winapi::DWORD_ dwReserved, + boost::winapi::DWORD_ nNumberOfBytesToLockLow, + boost::winapi::DWORD_ nNumberOfBytesToLockHigh, + ::_OVERLAPPED* lpOverlapped); + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +SetFileValidData( + boost::winapi::HANDLE_ hFile, + boost::winapi::LONGLONG_ ValidDataLength); +#endif + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +UnlockFile( + boost::winapi::HANDLE_ hFile, + boost::winapi::DWORD_ dwFileOffsetLow, + boost::winapi::DWORD_ dwFileOffsetHigh, + boost::winapi::DWORD_ nNumberOfBytesToUnlockLow, + boost::winapi::DWORD_ nNumberOfBytesToUnlockHigh); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +UnlockFileEx( + boost::winapi::HANDLE_ hFile, + boost::winapi::DWORD_ dwReserved, + boost::winapi::DWORD_ nNumberOfBytesToUnlockLow, + boost::winapi::DWORD_ nNumberOfBytesToUnlockHigh, + ::_OVERLAPPED* lpOverlapped); +#endif + +#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +DeleteFileA(boost::winapi::LPCSTR_ lpFileName); + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +MoveFileExA( + boost::winapi::LPCSTR_ lpExistingFileName, + boost::winapi::LPCSTR_ lpNewFileName, + boost::winapi::DWORD_ dwFlags); +#endif + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +DeleteFileW(boost::winapi::LPCWSTR_ lpFileName); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +FindClose(boost::winapi::HANDLE_ hFindFile); + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +MoveFileExW( + boost::winapi::LPCWSTR_ lpExistingFileName, + boost::winapi::LPCWSTR_ lpNewFileName, + boost::winapi::DWORD_ dwFlags); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +ReadFile( + boost::winapi::HANDLE_ hFile, + boost::winapi::LPVOID_ lpBuffer, + boost::winapi::DWORD_ nNumberOfBytesToRead, + boost::winapi::LPDWORD_ lpNumberOfBytesRead, + ::_OVERLAPPED* lpOverlapped); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +SetEndOfFile(boost::winapi::HANDLE_ hFile); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +WriteFile( + boost::winapi::HANDLE_ hFile, + boost::winapi::LPCVOID_ lpBuffer, + boost::winapi::DWORD_ nNumberOfBytesToWrite, + boost::winapi::LPDWORD_ lpNumberOfBytesWritten, + ::_OVERLAPPED* lpOverlapped); +#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +GetFileAttributesA(boost::winapi::LPCSTR_ lpFileName); +#endif + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +GetFileAttributesW(boost::winapi::LPCWSTR_ lpFileName); + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +GetFileSizeEx(boost::winapi::HANDLE_ hFile, ::_LARGE_INTEGER* lpFileSize); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +SetFilePointer( + boost::winapi::HANDLE_ hFile, + boost::winapi::LONG_ lpDistanceToMove, + boost::winapi::PLONG_ lpDistanceToMoveHigh, + boost::winapi::DWORD_ dwMoveMethod); +#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM + +} // extern "C" +#endif // !defined(BOOST_USE_WINDOWS_H) + +namespace boost { +namespace winapi { + +#if defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_SIZE_ = INVALID_FILE_SIZE; +BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_SET_FILE_POINTER_ = INVALID_SET_FILE_POINTER; +BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_ATTRIBUTES_ = INVALID_FILE_ATTRIBUTES; + +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_READONLY_ = FILE_ATTRIBUTE_READONLY; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_HIDDEN_ = FILE_ATTRIBUTE_HIDDEN; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SYSTEM_ = FILE_ATTRIBUTE_SYSTEM; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DIRECTORY_ = FILE_ATTRIBUTE_DIRECTORY; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ARCHIVE_ = FILE_ATTRIBUTE_ARCHIVE; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DEVICE_ = FILE_ATTRIBUTE_DEVICE; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NORMAL_ = FILE_ATTRIBUTE_NORMAL; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_TEMPORARY_ = FILE_ATTRIBUTE_TEMPORARY; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SPARSE_FILE_ = FILE_ATTRIBUTE_SPARSE_FILE; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_REPARSE_POINT_ = FILE_ATTRIBUTE_REPARSE_POINT; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_COMPRESSED_ = FILE_ATTRIBUTE_COMPRESSED; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_OFFLINE_ = FILE_ATTRIBUTE_OFFLINE; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED_ = FILE_ATTRIBUTE_NOT_CONTENT_INDEXED; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ENCRYPTED_ = FILE_ATTRIBUTE_ENCRYPTED; + +BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NEW_ = CREATE_NEW; +BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_ALWAYS_ = CREATE_ALWAYS; +BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_EXISTING_ = OPEN_EXISTING; +BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_ALWAYS_ = OPEN_ALWAYS; +BOOST_CONSTEXPR_OR_CONST DWORD_ TRUNCATE_EXISTING_ = TRUNCATE_EXISTING; + +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_READ_ = FILE_SHARE_READ; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_WRITE_ = FILE_SHARE_WRITE; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_DELETE_ = FILE_SHARE_DELETE; + +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_BEGIN_ = FILE_BEGIN; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_CURRENT_ = FILE_CURRENT; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_END_ = FILE_END; + +#else // defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_SIZE_ = ((DWORD_)0xFFFFFFFF); +BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_SET_FILE_POINTER_ = ((DWORD_)-1); +BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_ATTRIBUTES_ = ((DWORD_)-1); + +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_READONLY_ = 0x00000001; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_HIDDEN_ = 0x00000002; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SYSTEM_ = 0x00000004; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DIRECTORY_ = 0x00000010; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ARCHIVE_ = 0x00000020; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DEVICE_ = 0x00000040; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NORMAL_ = 0x00000080; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_TEMPORARY_ = 0x00000100; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SPARSE_FILE_ = 0x00000200; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_REPARSE_POINT_ = 0x00000400; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_COMPRESSED_ = 0x00000800; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_OFFLINE_ = 0x00001000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED_ = 0x00002000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ENCRYPTED_ = 0x00004000; + +BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NEW_ = 1; +BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_ALWAYS_ = 2; +BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_EXISTING_ = 3; +BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_ALWAYS_ = 4; +BOOST_CONSTEXPR_OR_CONST DWORD_ TRUNCATE_EXISTING_ = 5; + +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_READ_ = 0x00000001; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_WRITE_ = 0x00000002; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_DELETE_ = 0x00000004; + +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_BEGIN_ = 0; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_CURRENT_ = 1; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_END_ = 2; + +#endif // defined( BOOST_USE_WINDOWS_H ) + +// Some of these constants are not defined by Windows SDK in MinGW or older MSVC +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_WRITE_THROUGH_ = 0x80000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OVERLAPPED_ = 0x40000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_NO_BUFFERING_ = 0x20000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_RANDOM_ACCESS_ = 0x10000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_SEQUENTIAL_SCAN_ = 0x08000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_DELETE_ON_CLOSE_ = 0x04000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_BACKUP_SEMANTICS_ = 0x02000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_POSIX_SEMANTICS_ = 0x01000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_SESSION_AWARE_ = 0x00800000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OPEN_REPARSE_POINT_ = 0x00200000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OPEN_NO_RECALL_ = 0x00100000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_FIRST_PIPE_INSTANCE_ = 0x00080000; + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN8 +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OPEN_REQUIRING_OPLOCK_ = 0x00040000; +#endif + +// This constant is not defined in Windows SDK up until 6.0A +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_VIRTUAL_ = 0x00010000; + +// These constants are not defined in Windows SDK up until 8.0 and MinGW/MinGW-w64 (as of 2016-02-14). +// They are documented to be supported only since Windows 8/Windows Server 2012 +// but defined unconditionally. +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_INTEGRITY_STREAM_ = 0x00008000; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NO_SCRUB_DATA_ = 0x00020000; +// Undocumented +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_EA_ = 0x00040000; + +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM +#if !defined( BOOST_NO_ANSI_APIS ) +using ::AreFileApisANSI; + +BOOST_FORCEINLINE HANDLE_ CreateFileA( + LPCSTR_ lpFileName, + DWORD_ dwDesiredAccess, + DWORD_ dwShareMode, + SECURITY_ATTRIBUTES_* lpSecurityAttributes, + DWORD_ dwCreationDisposition, + DWORD_ dwFlagsAndAttributes, + HANDLE_ hTemplateFile) +{ + return ::CreateFileA( + lpFileName, + dwDesiredAccess, + dwShareMode, + reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes), + dwCreationDisposition, + dwFlagsAndAttributes, + hTemplateFile); +} + +BOOST_FORCEINLINE HANDLE_ create_file( + LPCSTR_ lpFileName, + DWORD_ dwDesiredAccess, + DWORD_ dwShareMode, + SECURITY_ATTRIBUTES_* lpSecurityAttributes, + DWORD_ dwCreationDisposition, + DWORD_ dwFlagsAndAttributes, + HANDLE_ hTemplateFile) +{ + return ::CreateFileA( + lpFileName, + dwDesiredAccess, + dwShareMode, + reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes), + dwCreationDisposition, + dwFlagsAndAttributes, + hTemplateFile); +} + +typedef struct BOOST_MAY_ALIAS _WIN32_FIND_DATAA { + DWORD_ dwFileAttributes; + FILETIME_ ftCreationTime; + FILETIME_ ftLastAccessTime; + FILETIME_ ftLastWriteTime; + DWORD_ nFileSizeHigh; + DWORD_ nFileSizeLow; + DWORD_ dwReserved0; + DWORD_ dwReserved1; + CHAR_ cFileName[MAX_PATH_]; + CHAR_ cAlternateFileName[14]; +#ifdef _MAC + DWORD_ dwFileType; + DWORD_ dwCreatorType; + WORD_ wFinderFlags; +#endif +} WIN32_FIND_DATAA_, *PWIN32_FIND_DATAA_, *LPWIN32_FIND_DATAA_; + +BOOST_FORCEINLINE HANDLE_ FindFirstFileA(LPCSTR_ lpFileName, WIN32_FIND_DATAA_* lpFindFileData) +{ + return ::FindFirstFileA(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData)); +} + +BOOST_FORCEINLINE HANDLE_ find_first_file(LPCSTR_ lpFileName, WIN32_FIND_DATAA_* lpFindFileData) +{ + return ::FindFirstFileA(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData)); +} + +BOOST_FORCEINLINE BOOL_ FindNextFileA(HANDLE_ hFindFile, WIN32_FIND_DATAA_* lpFindFileData) +{ + return ::FindNextFileA(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData)); +} + +BOOST_FORCEINLINE BOOL_ find_next_file(HANDLE_ hFindFile, WIN32_FIND_DATAA_* lpFindFileData) +{ + return ::FindNextFileA(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData)); +} + +#endif // !defined( BOOST_NO_ANSI_APIS ) + +BOOST_FORCEINLINE HANDLE_ CreateFileW( + LPCWSTR_ lpFileName, + DWORD_ dwDesiredAccess, + DWORD_ dwShareMode, + SECURITY_ATTRIBUTES_* lpSecurityAttributes, + DWORD_ dwCreationDisposition, + DWORD_ dwFlagsAndAttributes, + HANDLE_ hTemplateFile) +{ + return ::CreateFileW( + lpFileName, + dwDesiredAccess, + dwShareMode, + reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes), + dwCreationDisposition, + dwFlagsAndAttributes, + hTemplateFile); +} + +BOOST_FORCEINLINE HANDLE_ create_file( + LPCWSTR_ lpFileName, + DWORD_ dwDesiredAccess, + DWORD_ dwShareMode, + SECURITY_ATTRIBUTES_* lpSecurityAttributes, + DWORD_ dwCreationDisposition, + DWORD_ dwFlagsAndAttributes, + HANDLE_ hTemplateFile) +{ + return ::CreateFileW( + lpFileName, + dwDesiredAccess, + dwShareMode, + reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes), + dwCreationDisposition, + dwFlagsAndAttributes, + hTemplateFile); +} + +typedef struct BOOST_MAY_ALIAS _WIN32_FIND_DATAW { + DWORD_ dwFileAttributes; + FILETIME_ ftCreationTime; + FILETIME_ ftLastAccessTime; + FILETIME_ ftLastWriteTime; + DWORD_ nFileSizeHigh; + DWORD_ nFileSizeLow; + DWORD_ dwReserved0; + DWORD_ dwReserved1; + WCHAR_ cFileName[MAX_PATH_]; + WCHAR_ cAlternateFileName[14]; +#ifdef _MAC + DWORD_ dwFileType; + DWORD_ dwCreatorType; + WORD_ wFinderFlags; +#endif +} WIN32_FIND_DATAW_, *PWIN32_FIND_DATAW_, *LPWIN32_FIND_DATAW_; + +typedef struct BOOST_MAY_ALIAS _BY_HANDLE_FILE_INFORMATION { + DWORD_ dwFileAttributes; + FILETIME_ ftCreationTime; + FILETIME_ ftLastAccessTime; + FILETIME_ ftLastWriteTime; + DWORD_ dwVolumeSerialNumber; + DWORD_ nFileSizeHigh; + DWORD_ nFileSizeLow; + DWORD_ nNumberOfLinks; + DWORD_ nFileIndexHigh; + DWORD_ nFileIndexLow; +} BY_HANDLE_FILE_INFORMATION_, *PBY_HANDLE_FILE_INFORMATION_, *LPBY_HANDLE_FILE_INFORMATION_; + +BOOST_FORCEINLINE HANDLE_ FindFirstFileW(LPCWSTR_ lpFileName, WIN32_FIND_DATAW_* lpFindFileData) +{ + return ::FindFirstFileW(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData)); +} + +BOOST_FORCEINLINE HANDLE_ find_first_file(LPCWSTR_ lpFileName, WIN32_FIND_DATAW_* lpFindFileData) +{ + return ::FindFirstFileW(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData)); +} + +BOOST_FORCEINLINE BOOL_ FindNextFileW(HANDLE_ hFindFile, WIN32_FIND_DATAW_* lpFindFileData) +{ + return ::FindNextFileW(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData)); +} + +BOOST_FORCEINLINE BOOL_ find_next_file(HANDLE_ hFindFile, WIN32_FIND_DATAW_* lpFindFileData) +{ + return ::FindNextFileW(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData)); +} + +BOOST_FORCEINLINE BOOL_ GetFileInformationByHandle(HANDLE_ h, BY_HANDLE_FILE_INFORMATION_* info) +{ + return ::GetFileInformationByHandle(h, reinterpret_cast< ::_BY_HANDLE_FILE_INFORMATION* >(info)); +} + +using ::LockFile; + +BOOST_FORCEINLINE BOOL_ LockFileEx( + HANDLE_ hFile, + DWORD_ dwFlags, + DWORD_ dwReserved, + DWORD_ nNumberOfBytesToLockLow, + DWORD_ nNumberOfBytesToLockHigh, + OVERLAPPED_* lpOverlapped) +{ + return ::LockFileEx(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped)); +} + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP +using ::SetFileValidData; +#endif + +using ::UnlockFile; + +BOOST_FORCEINLINE BOOL_ UnlockFileEx( + HANDLE_ hFile, + DWORD_ dwReserved, + DWORD_ nNumberOfBytesToUnlockLow, + DWORD_ nNumberOfBytesToUnlockHigh, + OVERLAPPED_* lpOverlapped) +{ + return ::UnlockFileEx(hFile, dwReserved, nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped)); +} +#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM +#if !defined( BOOST_NO_ANSI_APIS ) +using ::DeleteFileA; + +BOOST_FORCEINLINE BOOL_ delete_file(LPCSTR_ lpFileName) +{ + return ::DeleteFileA(lpFileName); +} + +using ::MoveFileExA; + +BOOST_FORCEINLINE BOOL_ move_file(LPCSTR_ lpExistingFileName, LPCSTR_ lpNewFileName, DWORD_ dwFlags) +{ + return ::MoveFileExA(lpExistingFileName, lpNewFileName, dwFlags); +} + +#endif +using ::DeleteFileW; + +BOOST_FORCEINLINE BOOL_ delete_file(LPCWSTR_ lpFileName) +{ + return ::DeleteFileW(lpFileName); +} + +using ::FindClose; +using ::MoveFileExW; + +BOOST_FORCEINLINE BOOL_ move_file(LPCWSTR_ lpExistingFileName, LPCWSTR_ lpNewFileName, DWORD_ dwFlags) +{ + return ::MoveFileExW(lpExistingFileName, lpNewFileName, dwFlags); +} + +BOOST_FORCEINLINE BOOL_ ReadFile( + HANDLE_ hFile, + LPVOID_ lpBuffer, + DWORD_ nNumberOfBytesToWrite, + LPDWORD_ lpNumberOfBytesWritten, + OVERLAPPED_* lpOverlapped) +{ + return ::ReadFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped)); +} + +using ::SetEndOfFile; + +BOOST_FORCEINLINE BOOL_ WriteFile( + HANDLE_ hFile, + LPCVOID_ lpBuffer, + DWORD_ nNumberOfBytesToWrite, + LPDWORD_ lpNumberOfBytesWritten, + OVERLAPPED_* lpOverlapped) +{ + return ::WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped)); +} +#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +#if !defined( BOOST_NO_ANSI_APIS ) +using ::GetFileAttributesA; + +BOOST_FORCEINLINE DWORD_ get_file_attributes(LPCSTR_ lpFileName) +{ + return ::GetFileAttributesA(lpFileName); +} +#endif +using ::GetFileAttributesW; + +BOOST_FORCEINLINE DWORD_ get_file_attributes(LPCWSTR_ lpFileName) +{ + return ::GetFileAttributesW(lpFileName); +} + +BOOST_FORCEINLINE BOOL_ GetFileSizeEx(HANDLE_ hFile, LARGE_INTEGER_* lpFileSize) +{ + return ::GetFileSizeEx(hFile, reinterpret_cast< ::_LARGE_INTEGER* >(lpFileSize)); +} + +using ::SetFilePointer; +#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM + +} +} + +#include + +#endif // BOOST_WINAPI_FILE_MANAGEMENT_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/file_mapping.hpp b/src/boost/boost/winapi/file_mapping.hpp new file mode 100644 index 000000000..cb2030c96 --- /dev/null +++ b/src/boost/boost/winapi/file_mapping.hpp @@ -0,0 +1,262 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * Copyright 2016 Jorge Lodos + * Copyright 2017 James E. King, III + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_FILE_MAPPING_HPP_INCLUDED_ +#define BOOST_WINAPI_FILE_MAPPING_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +/* + * UWP: + * API SDK 8 SDK 10 + * CreateFileMapping DESKTOP - DESKTOP | SYSTEM + * FlushViewOfFile APP - APP | SYSTEM + * MapViewOfFile DESKTOP - DESKTOP | SYSTEM + * MapViewOfFileEx DESKTOP - DESKTOP | SYSTEM + * OpenFileMapping DESKTOP - DESKTOP | SYSTEM + * UnmapViewOfFile APP - APP | SYSTEM + */ + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { + +#if BOOST_WINAPI_PARTITION_DESKTOP +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateFileMappingA( + boost::winapi::HANDLE_ hFile, + ::_SECURITY_ATTRIBUTES* lpFileMappingAttributes, + boost::winapi::DWORD_ flProtect, + boost::winapi::DWORD_ dwMaximumSizeHigh, + boost::winapi::DWORD_ dwMaximumSizeLow, + boost::winapi::LPCSTR_ lpName); + +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +OpenFileMappingA( + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::BOOL_ bInheritHandle, + boost::winapi::LPCSTR_ lpName); +#endif // !defined( BOOST_NO_ANSI_APIS ) +#endif // BOOST_WINAPI_PARTITION_DESKTOP + +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateFileMappingW( + boost::winapi::HANDLE_ hFile, + ::_SECURITY_ATTRIBUTES* lpFileMappingAttributes, + boost::winapi::DWORD_ flProtect, + boost::winapi::DWORD_ dwMaximumSizeHigh, + boost::winapi::DWORD_ dwMaximumSizeLow, + boost::winapi::LPCWSTR_ lpName); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::LPVOID_ BOOST_WINAPI_WINAPI_CC +MapViewOfFile( + boost::winapi::HANDLE_ hFileMappingObject, + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::DWORD_ dwFileOffsetHigh, + boost::winapi::DWORD_ dwFileOffsetLow, + boost::winapi::SIZE_T_ dwNumberOfBytesToMap); + +BOOST_WINAPI_IMPORT boost::winapi::LPVOID_ BOOST_WINAPI_WINAPI_CC +MapViewOfFileEx( + boost::winapi::HANDLE_ hFileMappingObject, + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::DWORD_ dwFileOffsetHigh, + boost::winapi::DWORD_ dwFileOffsetLow, + boost::winapi::SIZE_T_ dwNumberOfBytesToMap, + boost::winapi::LPVOID_ lpBaseAddress); + +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +OpenFileMappingW( + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::BOOL_ bInheritHandle, + boost::winapi::LPCWSTR_ lpName); +#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +FlushViewOfFile( + boost::winapi::LPCVOID_ lpBaseAddress, + boost::winapi::SIZE_T_ dwNumberOfBytesToFlush); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +UnmapViewOfFile(boost::winapi::LPCVOID_ lpBaseAddress); +#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM + +} // extern "C" +#endif // !defined( BOOST_USE_WINDOWS_H ) + +namespace boost { +namespace winapi { + +#if defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_FILE_ = SEC_FILE; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_IMAGE_ = SEC_IMAGE; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_RESERVE_ = SEC_RESERVE; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_COMMIT_ = SEC_COMMIT; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_NOCACHE_ = SEC_NOCACHE; + +// These permission flags are undocumented and some of them are equivalent to the FILE_MAP_* flags. +// SECTION_QUERY enables NtQuerySection. +// http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FSection%2FNtQuerySection.html +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_QUERY_ = SECTION_QUERY; +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_MAP_WRITE_ = SECTION_MAP_WRITE; +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_MAP_READ_ = SECTION_MAP_READ; +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_MAP_EXECUTE_ = SECTION_MAP_EXECUTE; +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_EXTEND_SIZE_ = SECTION_EXTEND_SIZE; +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_ALL_ACCESS_ = SECTION_ALL_ACCESS; + +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_MAP_COPY_ = FILE_MAP_COPY; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_MAP_WRITE_ = FILE_MAP_WRITE; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_MAP_READ_ = FILE_MAP_READ; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_MAP_ALL_ACCESS_ = FILE_MAP_ALL_ACCESS; + +#else // defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_FILE_ = 0x800000; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_IMAGE_ = 0x1000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_RESERVE_ = 0x4000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_COMMIT_ = 0x8000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_NOCACHE_ = 0x10000000; + +// These permission flags are undocumented and some of them are equivalent to the FILE_MAP_* flags. +// SECTION_QUERY enables NtQuerySection. +// http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FSection%2FNtQuerySection.html +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_QUERY_ = 0x00000001; +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_MAP_WRITE_ = 0x00000002; +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_MAP_READ_ = 0x00000004; +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_MAP_EXECUTE_ = 0x00000008; +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_EXTEND_SIZE_ = 0x00000010; +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_ALL_ACCESS_ = 0x000F001F; // STANDARD_RIGHTS_REQUIRED | SECTION_* + +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_MAP_COPY_ = SECTION_QUERY_; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_MAP_WRITE_ = SECTION_MAP_WRITE_; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_MAP_READ_ = SECTION_MAP_READ_; +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_MAP_ALL_ACCESS_ = SECTION_ALL_ACCESS_; + +#endif // defined( BOOST_USE_WINDOWS_H ) + +// These constants are not defined in Windows SDK up until the one shipped with MSVC 8 and MinGW (as of 2016-02-14) +BOOST_CONSTEXPR_OR_CONST DWORD_ SECTION_MAP_EXECUTE_EXPLICIT_ = 0x00000020; // not included in SECTION_ALL_ACCESS +BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_MAP_EXECUTE_ = SECTION_MAP_EXECUTE_EXPLICIT_; // not included in FILE_MAP_ALL_ACCESS + +// These constants are not defined in Windows SDK up until 6.0A and MinGW (as of 2016-02-14) +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_PROTECTED_IMAGE_ = 0x2000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_WRITECOMBINE_ = 0x40000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_LARGE_PAGES_ = 0x80000000; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEC_IMAGE_NO_EXECUTE_ = (SEC_IMAGE_ | SEC_NOCACHE_); + +#if BOOST_WINAPI_PARTITION_DESKTOP +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_FORCEINLINE HANDLE_ CreateFileMappingA( + HANDLE_ hFile, + SECURITY_ATTRIBUTES_* lpFileMappingAttributes, + DWORD_ flProtect, + DWORD_ dwMaximumSizeHigh, + DWORD_ dwMaximumSizeLow, + LPCSTR_ lpName) +{ + return ::CreateFileMappingA( + hFile, + reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpFileMappingAttributes), + flProtect, + dwMaximumSizeHigh, + dwMaximumSizeLow, + lpName); +} + +BOOST_FORCEINLINE HANDLE_ create_file_mapping( + HANDLE_ hFile, + SECURITY_ATTRIBUTES_* lpFileMappingAttributes, + DWORD_ flProtect, + DWORD_ dwMaximumSizeHigh, + DWORD_ dwMaximumSizeLow, + LPCSTR_ lpName) +{ + return ::CreateFileMappingA( + hFile, + reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpFileMappingAttributes), + flProtect, + dwMaximumSizeHigh, + dwMaximumSizeLow, + lpName); +} + +using ::OpenFileMappingA; + +BOOST_FORCEINLINE HANDLE_ open_file_mapping(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCSTR_ lpName) +{ + return ::OpenFileMappingA(dwDesiredAccess, bInheritHandle, lpName); +} +#endif +#endif // BOOST_WINAPI_PARTITION_DESKTOP + +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM +BOOST_FORCEINLINE HANDLE_ CreateFileMappingW( + HANDLE_ hFile, + SECURITY_ATTRIBUTES_* lpFileMappingAttributes, + DWORD_ flProtect, + DWORD_ dwMaximumSizeHigh, + DWORD_ dwMaximumSizeLow, + LPCWSTR_ lpName) +{ + return ::CreateFileMappingW( + hFile, + reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpFileMappingAttributes), + flProtect, + dwMaximumSizeHigh, + dwMaximumSizeLow, + lpName); +} + +BOOST_FORCEINLINE HANDLE_ create_file_mapping( + HANDLE_ hFile, + SECURITY_ATTRIBUTES_* lpFileMappingAttributes, + DWORD_ flProtect, + DWORD_ dwMaximumSizeHigh, + DWORD_ dwMaximumSizeLow, + LPCWSTR_ lpName) +{ + return ::CreateFileMappingW( + hFile, + reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpFileMappingAttributes), + flProtect, + dwMaximumSizeHigh, + dwMaximumSizeLow, + lpName); +} + +using ::MapViewOfFile; +using ::MapViewOfFileEx; +using ::OpenFileMappingW; + +BOOST_FORCEINLINE HANDLE_ open_file_mapping(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCWSTR_ lpName) +{ + return ::OpenFileMappingW(dwDesiredAccess, bInheritHandle, lpName); +} +#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM +using ::FlushViewOfFile; +using ::UnmapViewOfFile; +#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM + +} +} + +#include + +#endif // BOOST_WINAPI_FILE_MAPPING_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/get_current_process.hpp b/src/boost/boost/winapi/get_current_process.hpp new file mode 100644 index 000000000..73deff566 --- /dev/null +++ b/src/boost/boost/winapi/get_current_process.hpp @@ -0,0 +1,34 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_GET_CURRENT_PROCESS_HPP_INCLUDED_ +#define BOOST_WINAPI_GET_CURRENT_PROCESS_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// Windows CE define GetCurrentProcess as an inline function in kfuncs.h +#if !defined( BOOST_USE_WINDOWS_H ) && !defined( UNDER_CE ) +extern "C" { +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC GetCurrentProcess(BOOST_WINAPI_DETAIL_VOID); +} +#endif + +namespace boost { +namespace winapi { +using ::GetCurrentProcess; +} +} + +#include + +#endif // BOOST_WINAPI_GET_CURRENT_PROCESS_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/get_current_process_id.hpp b/src/boost/boost/winapi/get_current_process_id.hpp new file mode 100644 index 000000000..3eb26ac25 --- /dev/null +++ b/src/boost/boost/winapi/get_current_process_id.hpp @@ -0,0 +1,33 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_GET_CURRENT_PROCESS_ID_HPP_INCLUDED_ +#define BOOST_WINAPI_GET_CURRENT_PROCESS_ID_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// Windows CE define GetCurrentProcessId as an inline function in kfuncs.h +#if !defined( BOOST_USE_WINDOWS_H ) && !defined( UNDER_CE ) +extern "C" { +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC GetCurrentProcessId(BOOST_WINAPI_DETAIL_VOID); +} +#endif + +namespace boost { +namespace winapi { +using ::GetCurrentProcessId; +} +} + +#include + +#endif // BOOST_WINAPI_GET_CURRENT_PROCESS_ID_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/get_current_thread.hpp b/src/boost/boost/winapi/get_current_thread.hpp new file mode 100644 index 000000000..75c72ac07 --- /dev/null +++ b/src/boost/boost/winapi/get_current_thread.hpp @@ -0,0 +1,34 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_GET_CURRENT_THREAD_HPP_INCLUDED_ +#define BOOST_WINAPI_GET_CURRENT_THREAD_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// Windows CE define GetCurrentThread as an inline function in kfuncs.h +#if !defined( BOOST_USE_WINDOWS_H ) && !defined( UNDER_CE ) +extern "C" { +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC GetCurrentThread(BOOST_WINAPI_DETAIL_VOID); +} +#endif + +namespace boost { +namespace winapi { +using ::GetCurrentThread; +} +} + +#include + +#endif // BOOST_WINAPI_GET_CURRENT_THREAD_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/get_current_thread_id.hpp b/src/boost/boost/winapi/get_current_thread_id.hpp new file mode 100644 index 000000000..2f19cc10d --- /dev/null +++ b/src/boost/boost/winapi/get_current_thread_id.hpp @@ -0,0 +1,34 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_GET_CURRENT_THREAD_ID_HPP_INCLUDED_ +#define BOOST_WINAPI_GET_CURRENT_THREAD_ID_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// Windows CE define GetCurrentThreadId as an inline function in kfuncs.h +#if !defined( BOOST_USE_WINDOWS_H ) && !defined( UNDER_CE ) +extern "C" { +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC GetCurrentThreadId(BOOST_WINAPI_DETAIL_VOID); +} +#endif + +namespace boost { +namespace winapi { +using ::GetCurrentThreadId; +} +} + +#include + +#endif // BOOST_WINAPI_GET_CURRENT_THREAD_ID_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/get_last_error.hpp b/src/boost/boost/winapi/get_last_error.hpp index 7852cc74a..696335ff4 100644 --- a/src/boost/boost/winapi/get_last_error.hpp +++ b/src/boost/boost/winapi/get_last_error.hpp @@ -10,6 +10,7 @@ #define BOOST_WINAPI_GET_LAST_ERROR_HPP_INCLUDED_ #include +#include #ifdef BOOST_HAS_PRAGMA_ONCE #pragma once @@ -17,7 +18,7 @@ #if !defined( BOOST_USE_WINDOWS_H ) extern "C" { -BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC GetLastError(BOOST_WINAPI_DETAIL_VOID); +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC GetLastError(BOOST_WINAPI_DETAIL_VOID); } #endif @@ -27,4 +28,6 @@ using ::GetLastError; } } +#include + #endif // BOOST_WINAPI_GET_LAST_ERROR_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/get_proc_address.hpp b/src/boost/boost/winapi/get_proc_address.hpp new file mode 100644 index 000000000..874d1468b --- /dev/null +++ b/src/boost/boost/winapi/get_proc_address.hpp @@ -0,0 +1,81 @@ +/* + * Copyright 2020 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_GET_PROC_ADDRESS_HPP_INCLUDED_ +#define BOOST_WINAPI_GET_PROC_ADDRESS_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +#include + +#if !defined(BOOST_USE_WINDOWS_H) +namespace boost { namespace winapi { +#ifdef _WIN64 +typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *FARPROC_)(); +typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *NEARPROC_)(); +typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *PROC_)(); +#else +typedef int (BOOST_WINAPI_WINAPI_CC *FARPROC_)(); +typedef int (BOOST_WINAPI_WINAPI_CC *NEARPROC_)(); +typedef int (BOOST_WINAPI_WINAPI_CC *PROC_)(); +#endif // _WIN64 +}} // namespace boost::winapi + +extern "C" { +#if !defined(UNDER_CE) +BOOST_WINAPI_IMPORT boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC +GetProcAddress(boost::winapi::HMODULE_ hModule, boost::winapi::LPCSTR_ lpProcName); +#else +// On Windows CE there are two functions: GetProcAddressA (since Windows CE 3.0) and GetProcAddressW. +// GetProcAddress is a macro that is _always_ defined to GetProcAddressW. +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC +GetProcAddressA(boost::winapi::HMODULE_ hModule, boost::winapi::LPCSTR_ lpProcName); +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC +GetProcAddressW(boost::winapi::HMODULE_ hModule, boost::winapi::LPCWSTR_ lpProcName); +#endif +} // extern "C" +#endif // !defined(BOOST_USE_WINDOWS_H) + +namespace boost { +namespace winapi { + +#if defined(BOOST_USE_WINDOWS_H) +typedef ::FARPROC FARPROC_; +typedef ::NEARPROC NEARPROC_; +typedef ::PROC PROC_; +#endif // defined(BOOST_USE_WINDOWS_H) + +#if !defined(UNDER_CE) +// For backward compatibility, don't use directly. Use get_proc_address instead. +using ::GetProcAddress; +#else +using ::GetProcAddressA; +using ::GetProcAddressW; +#endif + +BOOST_FORCEINLINE FARPROC_ get_proc_address(HMODULE_ hModule, LPCSTR_ lpProcName) +{ +#if !defined(UNDER_CE) + return ::GetProcAddress(hModule, lpProcName); +#else + return ::GetProcAddressA(hModule, lpProcName); +#endif +} + +} // namespace winapi +} // namespace boost + +#include + +#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM +#endif // BOOST_WINAPI_GET_PROC_ADDRESS_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/get_process_times.hpp b/src/boost/boost/winapi/get_process_times.hpp new file mode 100644 index 000000000..d0d7c9215 --- /dev/null +++ b/src/boost/boost/winapi/get_process_times.hpp @@ -0,0 +1,63 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_GET_PROCESS_TIMES_HPP_INCLUDED_ +#define BOOST_WINAPI_GET_PROCESS_TIMES_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// Windows CE does not define GetProcessTimes +#if !defined( UNDER_CE ) + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM + +#include +#include +#include + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +GetProcessTimes( + boost::winapi::HANDLE_ hProcess, + ::_FILETIME* lpCreationTime, + ::_FILETIME* lpExitTime, + ::_FILETIME* lpKernelTime, + ::_FILETIME* lpUserTime); +} +#endif + +namespace boost { +namespace winapi { + +BOOST_FORCEINLINE BOOL_ GetProcessTimes( + HANDLE_ hProcess, + LPFILETIME_ lpCreationTime, + LPFILETIME_ lpExitTime, + LPFILETIME_ lpKernelTime, + LPFILETIME_ lpUserTime) +{ + return ::GetProcessTimes( + hProcess, + reinterpret_cast< ::_FILETIME* >(lpCreationTime), + reinterpret_cast< ::_FILETIME* >(lpExitTime), + reinterpret_cast< ::_FILETIME* >(lpKernelTime), + reinterpret_cast< ::_FILETIME* >(lpUserTime)); +} + +} +} + +#include + +#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM +#endif // !defined( UNDER_CE ) +#endif // BOOST_WINAPI_GET_PROCESS_TIMES_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/get_system_directory.hpp b/src/boost/boost/winapi/get_system_directory.hpp new file mode 100644 index 000000000..98b9291e9 --- /dev/null +++ b/src/boost/boost/winapi/get_system_directory.hpp @@ -0,0 +1,64 @@ +/* + * Copyright 2016 Klemens D. Morgenstern + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_GET_SYSTEM_DIRECTORY_HPP_INCLUDED_ +#define BOOST_WINAPI_GET_SYSTEM_DIRECTORY_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if BOOST_WINAPI_PARTITION_DESKTOP + +#include + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_WINAPI_IMPORT boost::winapi::UINT_ BOOST_WINAPI_WINAPI_CC +GetSystemDirectoryA( + boost::winapi::LPSTR_ lpBuffer, + boost::winapi::UINT_ uSize); +#endif + +BOOST_WINAPI_IMPORT boost::winapi::UINT_ BOOST_WINAPI_WINAPI_CC +GetSystemDirectoryW( + boost::winapi::LPWSTR_ lpBuffer, + boost::winapi::UINT_ uSize); +} // extern "C" +#endif + +namespace boost { +namespace winapi { + +#if !defined( BOOST_NO_ANSI_APIS ) +using ::GetSystemDirectoryA; +#endif +using ::GetSystemDirectoryW; + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_FORCEINLINE UINT_ get_system_directory(LPSTR_ lpBuffer, UINT_ uSize) +{ + return ::GetSystemDirectoryA(lpBuffer, uSize); +} +#endif + +BOOST_FORCEINLINE UINT_ get_system_directory(LPWSTR_ lpBuffer, UINT_ uSize) +{ + return ::GetSystemDirectoryW(lpBuffer, uSize); +} + +} +} + +#include + +#endif // BOOST_WINAPI_PARTITION_DESKTOP + +#endif // BOOST_WINAPI_GET_SYSTEM_DIRECTORY_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/handles.hpp b/src/boost/boost/winapi/handles.hpp new file mode 100644 index 000000000..04a911f5d --- /dev/null +++ b/src/boost/boost/winapi/handles.hpp @@ -0,0 +1,75 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_HANDLES_HPP_INCLUDED_ +#define BOOST_WINAPI_HANDLES_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +CloseHandle(boost::winapi::HANDLE_ handle); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +DuplicateHandle( + boost::winapi::HANDLE_ hSourceProcessHandle, + boost::winapi::HANDLE_ hSourceHandle, + boost::winapi::HANDLE_ hTargetProcessHandle, + boost::winapi::HANDLE_* lpTargetHandle, + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::BOOL_ bInheritHandle, + boost::winapi::DWORD_ dwOptions); + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN10 +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +CompareObjectHandles( + boost::winapi::HANDLE_ hFirstObjectHandle, + boost::winapi::HANDLE_ hSecondObjectHandle); +#endif +} // extern "C" +#endif + +namespace boost { +namespace winapi { + +using ::CloseHandle; +using ::DuplicateHandle; + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN10 +using ::CompareObjectHandles; +#endif + +// Note: MSVC-14.1 does not interpret INVALID_HANDLE_VALUE_ initializer as a constant expression +#if defined( BOOST_USE_WINDOWS_H ) +BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_CLOSE_SOURCE_ = DUPLICATE_CLOSE_SOURCE; +BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_SAME_ACCESS_ = DUPLICATE_SAME_ACCESS; +const HANDLE_ INVALID_HANDLE_VALUE_ = INVALID_HANDLE_VALUE; +#else +BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_CLOSE_SOURCE_ = 1; +BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_SAME_ACCESS_ = 2; +const HANDLE_ INVALID_HANDLE_VALUE_ = (HANDLE_)(-1); +#endif + +BOOST_CONSTEXPR_OR_CONST DWORD_ duplicate_close_source = DUPLICATE_CLOSE_SOURCE_; +BOOST_CONSTEXPR_OR_CONST DWORD_ duplicate_same_access = DUPLICATE_SAME_ACCESS_; +// Note: The "unused" attribute here should not be necessary because the variable is a constant. +// However, MinGW gcc 5.3 spams warnings about this particular constant. +const HANDLE_ invalid_handle_value BOOST_ATTRIBUTE_UNUSED = INVALID_HANDLE_VALUE_; + +} +} + +#include + +#endif // BOOST_WINAPI_HANDLES_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/limits.hpp b/src/boost/boost/winapi/limits.hpp new file mode 100644 index 000000000..2ea4504fb --- /dev/null +++ b/src/boost/boost/winapi/limits.hpp @@ -0,0 +1,52 @@ +/* + * Copyright 2016 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_LIMITS_HPP_INCLUDED_ +#define BOOST_WINAPI_LIMITS_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace winapi { + +#if defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ MAX_PATH_ = MAX_PATH; + +#else + +BOOST_CONSTEXPR_OR_CONST DWORD_ MAX_PATH_ = 260; + +#endif + +#if defined( BOOST_USE_WINDOWS_H ) && !defined( BOOST_WINAPI_IS_MINGW ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ UNICODE_STRING_MAX_BYTES_ = UNICODE_STRING_MAX_BYTES; +BOOST_CONSTEXPR_OR_CONST DWORD_ UNICODE_STRING_MAX_CHARS_ = UNICODE_STRING_MAX_CHARS; + +#else + +BOOST_CONSTEXPR_OR_CONST DWORD_ UNICODE_STRING_MAX_BYTES_ = 65534; +BOOST_CONSTEXPR_OR_CONST DWORD_ UNICODE_STRING_MAX_CHARS_ = 32767; + +#endif + +BOOST_CONSTEXPR_OR_CONST DWORD_ max_path = MAX_PATH_; +BOOST_CONSTEXPR_OR_CONST DWORD_ unicode_string_max_bytes = UNICODE_STRING_MAX_BYTES_; +BOOST_CONSTEXPR_OR_CONST DWORD_ unicode_string_max_chars = UNICODE_STRING_MAX_CHARS_; + +} +} + +#include + +#endif // BOOST_WINAPI_LIMITS_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/local_memory.hpp b/src/boost/boost/winapi/local_memory.hpp index e80be4f15..1aef7356e 100644 --- a/src/boost/boost/winapi/local_memory.hpp +++ b/src/boost/boost/winapi/local_memory.hpp @@ -17,24 +17,40 @@ #if BOOST_WINAPI_PARTITION_APP_SYSTEM +#include + #if !defined( BOOST_USE_WINDOWS_H ) namespace boost { namespace winapi { typedef HANDLE_ HLOCAL_; }} extern "C" { -BOOST_SYMBOL_IMPORT boost::winapi::HLOCAL_ BOOST_WINAPI_WINAPI_CC + +#if defined (_WIN32_WCE ) +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HLOCAL_ BOOST_WINAPI_WINAPI_CC +LocalAlloc( + boost::winapi::UINT_ uFlags, + boost::winapi::UINT_ uBytes); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HLOCAL_ BOOST_WINAPI_WINAPI_CC +LocalReAlloc( + boost::winapi::HLOCAL_ hMem, + boost::winapi::UINT_ uBytes, + boost::winapi::UINT_ uFlags); +#else +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HLOCAL_ BOOST_WINAPI_WINAPI_CC LocalAlloc( boost::winapi::UINT_ uFlags, boost::winapi::SIZE_T_ uBytes); -BOOST_SYMBOL_IMPORT boost::winapi::HLOCAL_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HLOCAL_ BOOST_WINAPI_WINAPI_CC LocalReAlloc( boost::winapi::HLOCAL_ hMem, boost::winapi::SIZE_T_ uBytes, boost::winapi::UINT_ uFlags); +#endif -BOOST_SYMBOL_IMPORT boost::winapi::HLOCAL_ BOOST_WINAPI_WINAPI_CC LocalFree(boost::winapi::HLOCAL_ hMem); +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HLOCAL_ BOOST_WINAPI_WINAPI_CC LocalFree(boost::winapi::HLOCAL_ hMem); } // extern "C" #endif @@ -49,5 +65,7 @@ using ::LocalFree; } } +#include + #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM #endif // BOOST_WINAPI_LOCAL_MEMORY_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/mutex.hpp b/src/boost/boost/winapi/mutex.hpp new file mode 100644 index 000000000..6c066b413 --- /dev/null +++ b/src/boost/boost/winapi/mutex.hpp @@ -0,0 +1,185 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015, 2017 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_MUTEX_HPP_INCLUDED_ +#define BOOST_WINAPI_MUTEX_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined( BOOST_USE_WINDOWS_H ) && BOOST_WINAPI_PARTITION_APP_SYSTEM +extern "C" { +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateMutexA( + ::_SECURITY_ATTRIBUTES* lpMutexAttributes, + boost::winapi::BOOL_ bInitialOwner, + boost::winapi::LPCSTR_ lpName); +#endif + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateMutexW( + ::_SECURITY_ATTRIBUTES* lpMutexAttributes, + boost::winapi::BOOL_ bInitialOwner, + boost::winapi::LPCWSTR_ lpName); +} // extern "C" +#endif // !defined( BOOST_USE_WINDOWS_H ) && BOOST_WINAPI_PARTITION_APP_SYSTEM + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +#if !defined( BOOST_NO_ANSI_APIS ) +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateMutexExA( + ::_SECURITY_ATTRIBUTES* lpMutexAttributes, + boost::winapi::LPCSTR_ lpName, + boost::winapi::DWORD_ dwFlags, + boost::winapi::DWORD_ dwDesiredAccess); +#endif + +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +OpenMutexA( + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::BOOL_ bInheritHandle, + boost::winapi::LPCSTR_ lpName); +#endif // !defined( BOOST_NO_ANSI_APIS ) + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateMutexExW( + ::_SECURITY_ATTRIBUTES* lpMutexAttributes, + boost::winapi::LPCWSTR_ lpName, + boost::winapi::DWORD_ dwFlags, + boost::winapi::DWORD_ dwDesiredAccess); +#endif + +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +OpenMutexW( + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::BOOL_ bInheritHandle, + boost::winapi::LPCWSTR_ lpName); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +ReleaseMutex(boost::winapi::HANDLE_ hMutex); +} // extern "C" +#endif + +namespace boost { +namespace winapi { + +#if !defined( BOOST_NO_ANSI_APIS ) +using ::OpenMutexA; +#endif +using ::OpenMutexW; +using ::ReleaseMutex; + +#if defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ MUTEX_ALL_ACCESS_ = MUTEX_ALL_ACCESS; +BOOST_CONSTEXPR_OR_CONST DWORD_ MUTEX_MODIFY_STATE_ = MUTEX_MODIFY_STATE; +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_MUTEX_INITIAL_OWNER_ = CREATE_MUTEX_INITIAL_OWNER; +#endif + +#else // defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ MUTEX_ALL_ACCESS_ = 0x001F0001; +BOOST_CONSTEXPR_OR_CONST DWORD_ MUTEX_MODIFY_STATE_ = 0x00000001; +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_MUTEX_INITIAL_OWNER_ = 0x00000001; +#endif + +#endif // defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ mutex_all_access = MUTEX_ALL_ACCESS_; +BOOST_CONSTEXPR_OR_CONST DWORD_ mutex_modify_state = MUTEX_MODIFY_STATE_; +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_CONSTEXPR_OR_CONST DWORD_ create_mutex_initial_owner = CREATE_MUTEX_INITIAL_OWNER_; +#endif + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_FORCEINLINE HANDLE_ CreateMutexA(SECURITY_ATTRIBUTES_* lpMutexAttributes, BOOL_ bInitialOwner, LPCSTR_ lpName) +{ +#if !BOOST_WINAPI_PARTITION_APP_SYSTEM && BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + const DWORD_ flags = bInitialOwner ? create_mutex_initial_owner : 0u; + return ::CreateMutexExA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpMutexAttributes), lpName, flags, mutex_all_access); +#else + return ::CreateMutexA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpMutexAttributes), bInitialOwner, lpName); +#endif +} + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_FORCEINLINE HANDLE_ CreateMutexExA( + SECURITY_ATTRIBUTES_* lpMutexAttributes, + LPCSTR_ lpName, + DWORD_ dwFlags, + DWORD_ dwDesiredAccess) +{ + return ::CreateMutexExA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpMutexAttributes), lpName, dwFlags, dwDesiredAccess); +} +#endif +#endif + +BOOST_FORCEINLINE HANDLE_ CreateMutexW(SECURITY_ATTRIBUTES_* lpMutexAttributes, BOOL_ bInitialOwner, LPCWSTR_ lpName) +{ +#if !BOOST_WINAPI_PARTITION_APP_SYSTEM && BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + const DWORD_ flags = bInitialOwner ? create_mutex_initial_owner : 0u; + return ::CreateMutexExW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpMutexAttributes), lpName, flags, mutex_all_access); +#else + return ::CreateMutexW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpMutexAttributes), bInitialOwner, lpName); +#endif +} + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_FORCEINLINE HANDLE_ CreateMutexExW( + SECURITY_ATTRIBUTES_* lpMutexAttributes, + LPCWSTR_ lpName, + DWORD_ dwFlags, + DWORD_ dwDesiredAccess) +{ + return ::CreateMutexExW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpMutexAttributes), lpName, dwFlags, dwDesiredAccess); +} +#endif + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_FORCEINLINE HANDLE_ create_mutex(SECURITY_ATTRIBUTES_* lpAttributes, BOOL_ bInitialOwner, LPCSTR_ lpName) +{ + return winapi::CreateMutexA(lpAttributes, bInitialOwner, lpName); +} + +BOOST_FORCEINLINE HANDLE_ open_mutex(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCSTR_ lpName) +{ + return ::OpenMutexA(dwDesiredAccess, bInheritHandle, lpName); +} +#endif + +BOOST_FORCEINLINE HANDLE_ create_mutex(SECURITY_ATTRIBUTES_* lpAttributes, BOOL_ bInitialOwner, LPCWSTR_ lpName) +{ + return winapi::CreateMutexW(lpAttributes, bInitialOwner, lpName); +} + +BOOST_FORCEINLINE HANDLE_ open_mutex(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCWSTR_ lpName) +{ + return ::OpenMutexW(dwDesiredAccess, bInheritHandle, lpName); +} + +BOOST_FORCEINLINE HANDLE_ create_anonymous_mutex(SECURITY_ATTRIBUTES_* lpAttributes, BOOL_ bInitialOwner) +{ + return winapi::CreateMutexW(lpAttributes, bInitialOwner, 0); +} + +} +} + +#include + +#endif // BOOST_WINAPI_MUTEX_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/overlapped.hpp b/src/boost/boost/winapi/overlapped.hpp new file mode 100644 index 000000000..2240d77ac --- /dev/null +++ b/src/boost/boost/winapi/overlapped.hpp @@ -0,0 +1,45 @@ +/* + * Copyright 2016 Klemens D. Morgenstern + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_OVERLAPPED_HPP_INCLUDED_ +#define BOOST_WINAPI_OVERLAPPED_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +struct _OVERLAPPED; +} +#endif + +namespace boost { +namespace winapi { + +typedef struct BOOST_MAY_ALIAS _OVERLAPPED { + ULONG_PTR_ Internal; + ULONG_PTR_ InternalHigh; + union { + BOOST_WINAPI_DETAIL_EXTENSION struct { + DWORD_ Offset; + DWORD_ OffsetHigh; + }; + PVOID_ Pointer; + }; + HANDLE_ hEvent; +} OVERLAPPED_, *LPOVERLAPPED_; + +} // namespace winapi +} // namespace boost + +#include + +#endif // BOOST_WINAPI_OVERLAPPED_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/security.hpp b/src/boost/boost/winapi/security.hpp new file mode 100644 index 000000000..0d984a665 --- /dev/null +++ b/src/boost/boost/winapi/security.hpp @@ -0,0 +1,89 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_SECURITY_HPP_INCLUDED_ +#define BOOST_WINAPI_SECURITY_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM + +#include + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +struct _ACL; +struct _SECURITY_DESCRIPTOR; +#if defined( BOOST_WINAPI_IS_MINGW ) +typedef _SECURITY_DESCRIPTOR *PSECURITY_DESCRIPTOR; +#else +typedef boost::winapi::PVOID_ PSECURITY_DESCRIPTOR; +#endif + +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +InitializeSecurityDescriptor( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + boost::winapi::DWORD_ dwRevision); +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +SetSecurityDescriptorDacl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + boost::winapi::BOOL_ bDaclPresent, + ::_ACL* pDacl, + boost::winapi::BOOL_ bDaclDefaulted); +} +#endif + +namespace boost { +namespace winapi { + +typedef PVOID_ PSID_; +typedef WORD_ SECURITY_DESCRIPTOR_CONTROL_, *PSECURITY_DESCRIPTOR_CONTROL_; + +typedef struct BOOST_MAY_ALIAS _ACL { + BYTE_ AclRevision; + BYTE_ Sbz1; + WORD_ AclSize; + WORD_ AceCount; + WORD_ Sbz2; +} ACL_, *PACL_; + +typedef struct BOOST_MAY_ALIAS _SECURITY_DESCRIPTOR { + BYTE_ Revision; + BYTE_ Sbz1; + SECURITY_DESCRIPTOR_CONTROL_ Control; + PSID_ Owner; + PSID_ Group; + PACL_ Sacl; + PACL_ Dacl; +} SECURITY_DESCRIPTOR_, *PISECURITY_DESCRIPTOR_; + +// To abstract away the different ::PSECURITY_DESCRIPTOR on MinGW, we use PVOID_ universally here +// and cast the pointers to ::PSECURITY_DESCRIPTOR in wrapper functions. +typedef PVOID_ PSECURITY_DESCRIPTOR_; + +BOOST_FORCEINLINE BOOL_ InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR_ pSecurityDescriptor, DWORD_ dwRevision) +{ + return ::InitializeSecurityDescriptor(reinterpret_cast< ::PSECURITY_DESCRIPTOR >(pSecurityDescriptor), dwRevision); +} + +BOOST_FORCEINLINE BOOL_ SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR_ pSecurityDescriptor, BOOL_ bDaclPresent, PACL_ pDacl, BOOL_ bDaclDefaulted) +{ + return ::SetSecurityDescriptorDacl(reinterpret_cast< ::PSECURITY_DESCRIPTOR >(pSecurityDescriptor), bDaclPresent, reinterpret_cast< ::_ACL* >(pDacl), bDaclDefaulted); +} + +} +} + +#include + +#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM +#endif // BOOST_WINAPI_SECURITY_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/semaphore.hpp b/src/boost/boost/winapi/semaphore.hpp new file mode 100644 index 000000000..badb302a3 --- /dev/null +++ b/src/boost/boost/winapi/semaphore.hpp @@ -0,0 +1,189 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_SEMAPHORE_HPP_INCLUDED_ +#define BOOST_WINAPI_SEMAPHORE_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +#if !defined( BOOST_NO_ANSI_APIS ) + +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateSemaphoreA( + ::_SECURITY_ATTRIBUTES* lpSemaphoreAttributes, + boost::winapi::LONG_ lInitialCount, + boost::winapi::LONG_ lMaximumCount, + boost::winapi::LPCSTR_ lpName); + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateSemaphoreExA( + ::_SECURITY_ATTRIBUTES* lpSemaphoreAttributes, + boost::winapi::LONG_ lInitialCount, + boost::winapi::LONG_ lMaximumCount, + boost::winapi::LPCSTR_ lpName, + boost::winapi::DWORD_ dwFlags, + boost::winapi::DWORD_ dwDesiredAccess); +#endif + +#endif // !defined( BOOST_NO_ANSI_APIS ) + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateSemaphoreW( + ::_SECURITY_ATTRIBUTES* lpSemaphoreAttributes, + boost::winapi::LONG_ lInitialCount, + boost::winapi::LONG_ lMaximumCount, + boost::winapi::LPCWSTR_ lpName); + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +CreateSemaphoreExW( + ::_SECURITY_ATTRIBUTES* lpSemaphoreAttributes, + boost::winapi::LONG_ lInitialCount, + boost::winapi::LONG_ lMaximumCount, + boost::winapi::LPCWSTR_ lpName, + boost::winapi::DWORD_ dwFlags, + boost::winapi::DWORD_ dwDesiredAccess); +#endif + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +ReleaseSemaphore( + boost::winapi::HANDLE_ hSemaphore, + boost::winapi::LONG_ lReleaseCount, + boost::winapi::LPLONG_ lpPreviousCount); + +#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM + +#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +OpenSemaphoreA( + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::BOOL_ bInheritHandle, + boost::winapi::LPCSTR_ lpName); +#endif // !defined( BOOST_NO_ANSI_APIS ) + +BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC +OpenSemaphoreW( + boost::winapi::DWORD_ dwDesiredAccess, + boost::winapi::BOOL_ bInheritHandle, + boost::winapi::LPCWSTR_ lpName); + +#endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM + +} // extern "C" +#endif // !defined( BOOST_USE_WINDOWS_H ) + +namespace boost { +namespace winapi { + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM + +using ::ReleaseSemaphore; + +#if defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ SEMAPHORE_ALL_ACCESS_ = SEMAPHORE_ALL_ACCESS; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEMAPHORE_MODIFY_STATE_ = SEMAPHORE_MODIFY_STATE; + +#else // defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ SEMAPHORE_ALL_ACCESS_ = 0x001F0003; +BOOST_CONSTEXPR_OR_CONST DWORD_ SEMAPHORE_MODIFY_STATE_ = 0x00000002; + +#endif // defined( BOOST_USE_WINDOWS_H ) + +// Undocumented and not present in Windows SDK. Enables NtQuerySemaphore. +// http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FEvent%2FNtQueryEvent.html +BOOST_CONSTEXPR_OR_CONST DWORD_ SEMAPHORE_QUERY_STATE_ = 0x00000001; + +BOOST_CONSTEXPR_OR_CONST DWORD_ semaphore_all_access = SEMAPHORE_ALL_ACCESS_; +BOOST_CONSTEXPR_OR_CONST DWORD_ semaphore_modify_state = SEMAPHORE_MODIFY_STATE_; + + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_FORCEINLINE HANDLE_ CreateSemaphoreA(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCSTR_ lpName) +{ + return ::CreateSemaphoreA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSemaphoreAttributes), lInitialCount, lMaximumCount, lpName); +} + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_FORCEINLINE HANDLE_ CreateSemaphoreExA(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCSTR_ lpName, DWORD_ dwFlags, DWORD_ dwDesiredAccess) +{ + return ::CreateSemaphoreExA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSemaphoreAttributes), lInitialCount, lMaximumCount, lpName, dwFlags, dwDesiredAccess); +} +#endif +#endif // !defined( BOOST_NO_ANSI_APIS ) + +BOOST_FORCEINLINE HANDLE_ CreateSemaphoreW(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCWSTR_ lpName) +{ + return ::CreateSemaphoreW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSemaphoreAttributes), lInitialCount, lMaximumCount, lpName); +} + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +BOOST_FORCEINLINE HANDLE_ CreateSemaphoreExW(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCWSTR_ lpName, DWORD_ dwFlags, DWORD_ dwDesiredAccess) +{ + return ::CreateSemaphoreExW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSemaphoreAttributes), lInitialCount, lMaximumCount, lpName, dwFlags, dwDesiredAccess); +} +#endif + +#if !defined( BOOST_NO_ANSI_APIS ) +BOOST_FORCEINLINE HANDLE_ create_semaphore(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCSTR_ lpName) +{ + return winapi::CreateSemaphoreA(lpSemaphoreAttributes, lInitialCount, lMaximumCount, lpName); +} +#endif + +BOOST_FORCEINLINE HANDLE_ create_semaphore(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCWSTR_ lpName) +{ + return winapi::CreateSemaphoreW(lpSemaphoreAttributes, lInitialCount, lMaximumCount, lpName); +} + +BOOST_FORCEINLINE HANDLE_ create_anonymous_semaphore(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount) +{ + return winapi::CreateSemaphoreW(lpSemaphoreAttributes, lInitialCount, lMaximumCount, 0); +} + +#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM + +#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM + +#if !defined( BOOST_NO_ANSI_APIS ) +using ::OpenSemaphoreA; + +BOOST_FORCEINLINE HANDLE_ open_semaphore(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCSTR_ lpName) +{ + return ::OpenSemaphoreA(dwDesiredAccess, bInheritHandle, lpName); +} +#endif // !defined( BOOST_NO_ANSI_APIS ) + +using ::OpenSemaphoreW; + +BOOST_FORCEINLINE HANDLE_ open_semaphore(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCWSTR_ lpName) +{ + return ::OpenSemaphoreW(dwDesiredAccess, bInheritHandle, lpName); +} + +#endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM + +} +} + +#include + +#endif // BOOST_WINAPI_SEMAPHORE_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/srw_lock.hpp b/src/boost/boost/winapi/srw_lock.hpp new file mode 100644 index 000000000..4f21de42c --- /dev/null +++ b/src/boost/boost/winapi/srw_lock.hpp @@ -0,0 +1,116 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_SRW_LOCK_HPP_INCLUDED_ +#define BOOST_WINAPI_SRW_LOCK_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if BOOST_USE_WINAPI_VERSION < BOOST_WINAPI_VERSION_WIN6 \ + || (defined(_MSC_VER) && _MSC_VER < 1600) +// Windows SDK 6.0A, which is used by MSVC 9, does not have TryAcquireSRWLock* neither in headers nor in .lib files, +// although the functions are present in later SDKs since Windows API version 6. +#define BOOST_WINAPI_NO_TRY_ACQUIRE_SRWLOCK +#endif + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + +#include +#include + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +struct _RTL_SRWLOCK; + +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +InitializeSRWLock(::_RTL_SRWLOCK* SRWLock); + +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +ReleaseSRWLockExclusive(::_RTL_SRWLOCK* SRWLock); + +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +ReleaseSRWLockShared(::_RTL_SRWLOCK* SRWLock); + +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +AcquireSRWLockExclusive(::_RTL_SRWLOCK* SRWLock); + +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +AcquireSRWLockShared(::_RTL_SRWLOCK* SRWLock); + +#if !defined( BOOST_WINAPI_NO_TRY_ACQUIRE_SRWLOCK ) +BOOST_WINAPI_IMPORT boost::winapi::BOOLEAN_ BOOST_WINAPI_WINAPI_CC +TryAcquireSRWLockExclusive(::_RTL_SRWLOCK* SRWLock); + +BOOST_WINAPI_IMPORT boost::winapi::BOOLEAN_ BOOST_WINAPI_WINAPI_CC +TryAcquireSRWLockShared(::_RTL_SRWLOCK* SRWLock); +#endif +} // extern "C" +#endif + +namespace boost { +namespace winapi { + +typedef struct BOOST_MAY_ALIAS _RTL_SRWLOCK { + PVOID_ Ptr; +} SRWLOCK_, *PSRWLOCK_; + +#if defined( BOOST_USE_WINDOWS_H ) +#define BOOST_WINAPI_SRWLOCK_INIT SRWLOCK_INIT +#else +#define BOOST_WINAPI_SRWLOCK_INIT {0} +#endif + +BOOST_FORCEINLINE VOID_ InitializeSRWLock(PSRWLOCK_ SRWLock) +{ + ::InitializeSRWLock(reinterpret_cast< ::_RTL_SRWLOCK* >(SRWLock)); +} + +BOOST_FORCEINLINE VOID_ ReleaseSRWLockExclusive(PSRWLOCK_ SRWLock) +{ + ::ReleaseSRWLockExclusive(reinterpret_cast< ::_RTL_SRWLOCK* >(SRWLock)); +} + +BOOST_FORCEINLINE VOID_ ReleaseSRWLockShared(PSRWLOCK_ SRWLock) +{ + ::ReleaseSRWLockShared(reinterpret_cast< ::_RTL_SRWLOCK* >(SRWLock)); +} + +BOOST_FORCEINLINE VOID_ AcquireSRWLockExclusive(PSRWLOCK_ SRWLock) +{ + ::AcquireSRWLockExclusive(reinterpret_cast< ::_RTL_SRWLOCK* >(SRWLock)); +} + +BOOST_FORCEINLINE VOID_ AcquireSRWLockShared(PSRWLOCK_ SRWLock) +{ + ::AcquireSRWLockShared(reinterpret_cast< ::_RTL_SRWLOCK* >(SRWLock)); +} + +#if !defined( BOOST_WINAPI_NO_TRY_ACQUIRE_SRWLOCK ) +BOOST_FORCEINLINE BOOLEAN_ TryAcquireSRWLockExclusive(PSRWLOCK_ SRWLock) +{ + return ::TryAcquireSRWLockExclusive(reinterpret_cast< ::_RTL_SRWLOCK* >(SRWLock)); +} + +BOOST_FORCEINLINE BOOLEAN_ TryAcquireSRWLockShared(PSRWLOCK_ SRWLock) +{ + return ::TryAcquireSRWLockShared(reinterpret_cast< ::_RTL_SRWLOCK* >(SRWLock)); +} +#endif + +} +} + +#include + +#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + +#endif // BOOST_WINAPI_SRW_LOCK_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/system.hpp b/src/boost/boost/winapi/system.hpp new file mode 100644 index 000000000..1157ebf09 --- /dev/null +++ b/src/boost/boost/winapi/system.hpp @@ -0,0 +1,80 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright (c) Microsoft Corporation 2014 + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_SYSTEM_HPP_INCLUDED_ +#define BOOST_WINAPI_SYSTEM_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +struct _SYSTEM_INFO; + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +GetSystemInfo(::_SYSTEM_INFO* lpSystemInfo); +#endif + +#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +GetNativeSystemInfo(::_SYSTEM_INFO* lpSystemInfo); +#endif +#endif +} +#endif + +namespace boost { +namespace winapi { + +typedef struct BOOST_MAY_ALIAS _SYSTEM_INFO { + BOOST_WINAPI_DETAIL_EXTENSION union { + DWORD_ dwOemId; + BOOST_WINAPI_DETAIL_EXTENSION struct { + WORD_ wProcessorArchitecture; + WORD_ wReserved; + }; + }; + DWORD_ dwPageSize; + LPVOID_ lpMinimumApplicationAddress; + LPVOID_ lpMaximumApplicationAddress; + DWORD_PTR_ dwActiveProcessorMask; + DWORD_ dwNumberOfProcessors; + DWORD_ dwProcessorType; + DWORD_ dwAllocationGranularity; + WORD_ wProcessorLevel; + WORD_ wProcessorRevision; +} SYSTEM_INFO_, *LPSYSTEM_INFO_; + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_FORCEINLINE VOID_ GetSystemInfo(LPSYSTEM_INFO_ lpSystemInfo) +{ + ::GetSystemInfo(reinterpret_cast< ::_SYSTEM_INFO* >(lpSystemInfo)); +} +#endif + +#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP +BOOST_FORCEINLINE VOID_ GetNativeSystemInfo(LPSYSTEM_INFO_ lpSystemInfo) +{ + ::GetNativeSystemInfo(reinterpret_cast< ::_SYSTEM_INFO* >(lpSystemInfo)); +} +#endif +#endif +} +} + +#include + +#endif // BOOST_WINAPI_SYSTEM_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/thread.hpp b/src/boost/boost/winapi/thread.hpp new file mode 100644 index 000000000..67d35e84a --- /dev/null +++ b/src/boost/boost/winapi/thread.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_THREAD_HPP_INCLUDED_ +#define BOOST_WINAPI_THREAD_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM + +#include + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +SleepEx( + boost::winapi::DWORD_ dwMilliseconds, + boost::winapi::BOOL_ bAlertable); +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC Sleep(boost::winapi::DWORD_ dwMilliseconds); +BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC SwitchToThread(BOOST_WINAPI_DETAIL_VOID); +} // extern "C" +#endif + +namespace boost { +namespace winapi { +using ::SleepEx; +using ::Sleep; +using ::SwitchToThread; +} +} + +#include + +#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM +#endif // BOOST_WINAPI_THREAD_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/time.hpp b/src/boost/boost/winapi/time.hpp index 04882dd22..bfb3affe6 100644 --- a/src/boost/boost/winapi/time.hpp +++ b/src/boost/boost/winapi/time.hpp @@ -11,6 +11,7 @@ #define BOOST_WINAPI_TIME_HPP_INCLUDED_ #include +#include #ifdef BOOST_HAS_PRAGMA_ONCE #pragma once @@ -21,32 +22,32 @@ extern "C" { struct _FILETIME; struct _SYSTEMTIME; -BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC GetSystemTime(::_SYSTEMTIME* lpSystemTime); #ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME // Windows CE does not define GetSystemTimeAsFileTime -BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC GetSystemTimeAsFileTime(::_FILETIME* lpSystemTimeAsFileTime); #endif -BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC SystemTimeToFileTime( const ::_SYSTEMTIME* lpSystemTime, ::_FILETIME* lpFileTime); -BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC FileTimeToSystemTime( const ::_FILETIME* lpFileTime, ::_SYSTEMTIME* lpSystemTime); #if BOOST_WINAPI_PARTITION_APP_SYSTEM -BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC FileTimeToLocalFileTime( const ::_FILETIME* lpFileTime, ::_FILETIME* lpLocalFileTime); -BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC LocalFileTimeToFileTime( const ::_FILETIME* lpLocalFileTime, ::_FILETIME* lpFileTime); @@ -54,12 +55,12 @@ LocalFileTimeToFileTime( #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM -BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC GetTickCount(BOOST_WINAPI_DETAIL_VOID); #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 -BOOST_SYMBOL_IMPORT boost::winapi::ULONGLONG_ BOOST_WINAPI_WINAPI_CC +BOOST_WINAPI_IMPORT boost::winapi::ULONGLONG_ BOOST_WINAPI_WINAPI_CC GetTickCount64(BOOST_WINAPI_DETAIL_VOID); #endif @@ -137,4 +138,6 @@ BOOST_FORCEINLINE VOID_ GetSystemTimeAsFileTime(FILETIME_* lpFileTime) } } +#include + #endif // BOOST_WINAPI_TIME_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/timers.hpp b/src/boost/boost/winapi/timers.hpp new file mode 100644 index 000000000..562328437 --- /dev/null +++ b/src/boost/boost/winapi/timers.hpp @@ -0,0 +1,48 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_TIMERS_HPP_INCLUDED_ +#define BOOST_WINAPI_TIMERS_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +QueryPerformanceCounter(::_LARGE_INTEGER* lpPerformanceCount); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +QueryPerformanceFrequency(::_LARGE_INTEGER* lpFrequency); +} // extern "C" +#endif + + +namespace boost { +namespace winapi { + +BOOST_FORCEINLINE BOOL_ QueryPerformanceCounter(LARGE_INTEGER_* lpPerformanceCount) +{ + return ::QueryPerformanceCounter(reinterpret_cast< ::_LARGE_INTEGER* >(lpPerformanceCount)); +} + +BOOST_FORCEINLINE BOOL_ QueryPerformanceFrequency(LARGE_INTEGER_* lpFrequency) +{ + return ::QueryPerformanceFrequency(reinterpret_cast< ::_LARGE_INTEGER* >(lpFrequency)); +} + +} +} + +#include + +#endif // BOOST_WINAPI_TIMERS_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/wait.hpp b/src/boost/boost/winapi/wait.hpp new file mode 100644 index 000000000..e71aab2e5 --- /dev/null +++ b/src/boost/boost/winapi/wait.hpp @@ -0,0 +1,91 @@ +/* + * Copyright 2010 Vicente J. Botet Escriba + * Copyright 2015 Andrey Semashev + * Copyright 2017 James E. King, III + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_WAIT_HPP_INCLUDED_ +#define BOOST_WINAPI_WAIT_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined( BOOST_USE_WINDOWS_H ) +extern "C" { + +#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +WaitForSingleObjectEx( + boost::winapi::HANDLE_ hHandle, + boost::winapi::DWORD_ dwMilliseconds, + boost::winapi::BOOL_ bAlertable); +#endif + +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4 +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +SignalObjectAndWait( + boost::winapi::HANDLE_ hObjectToSignal, + boost::winapi::HANDLE_ hObjectToWaitOn, + boost::winapi::DWORD_ dwMilliseconds, + boost::winapi::BOOL_ bAlertable); +#endif +#endif + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +WaitForSingleObject( + boost::winapi::HANDLE_ hHandle, + boost::winapi::DWORD_ dwMilliseconds); + +BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +WaitForMultipleObjects( + boost::winapi::DWORD_ nCount, + boost::winapi::HANDLE_ const* lpHandles, + boost::winapi::BOOL_ bWaitAll, + boost::winapi::DWORD_ dwMilliseconds); + +BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC +WaitForMultipleObjectsEx( + boost::winapi::DWORD_ nCount, + boost::winapi::HANDLE_ const* lpHandles, + boost::winapi::BOOL_ bWaitAll, + boost::winapi::DWORD_ dwMilliseconds, + boost::winapi::BOOL_ bAlertable); +#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM + +} // extern "C" +#endif + +namespace boost { +namespace winapi { + +#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM +using ::WaitForSingleObjectEx; +#endif +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4 +using ::SignalObjectAndWait; +#endif +#endif + +#if BOOST_WINAPI_PARTITION_APP_SYSTEM +using ::WaitForMultipleObjects; +using ::WaitForMultipleObjectsEx; +using ::WaitForSingleObject; +#endif + +} +} + +#include + +#endif // BOOST_WINAPI_WAIT_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/wait_constants.hpp b/src/boost/boost/winapi/wait_constants.hpp new file mode 100644 index 000000000..075deeb64 --- /dev/null +++ b/src/boost/boost/winapi/wait_constants.hpp @@ -0,0 +1,52 @@ +/* + * Copyright 2020 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_WAIT_CONSTANTS_HPP_INCLUDED_ +#define BOOST_WINAPI_WAIT_CONSTANTS_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace winapi { + +#if defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ INFINITE_ = INFINITE; +BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_ABANDONED_ = WAIT_ABANDONED; +BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_OBJECT_0_ = WAIT_OBJECT_0; +BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_TIMEOUT_ = WAIT_TIMEOUT; +BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_FAILED_ = WAIT_FAILED; + +#else // defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ INFINITE_ = (DWORD_)0xFFFFFFFF; +BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_ABANDONED_ = 0x00000080L; +BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_OBJECT_0_ = 0x00000000L; +BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_TIMEOUT_ = 0x00000102L; +BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_FAILED_ = (DWORD_)0xFFFFFFFF; + +#endif // defined( BOOST_USE_WINDOWS_H ) + +BOOST_CONSTEXPR_OR_CONST DWORD_ infinite = INFINITE_; +BOOST_CONSTEXPR_OR_CONST DWORD_ wait_abandoned = WAIT_ABANDONED_; +BOOST_CONSTEXPR_OR_CONST DWORD_ wait_object_0 = WAIT_OBJECT_0_; +BOOST_CONSTEXPR_OR_CONST DWORD_ wait_timeout = WAIT_TIMEOUT_; +BOOST_CONSTEXPR_OR_CONST DWORD_ wait_failed = WAIT_FAILED_; + +BOOST_CONSTEXPR_OR_CONST DWORD_ max_non_infinite_wait = (DWORD_)0xFFFFFFFE; + +} +} + +#include + +#endif // BOOST_WINAPI_WAIT_CONSTANTS_HPP_INCLUDED_ diff --git a/src/boost/boost/winapi/wait_on_address.hpp b/src/boost/boost/winapi/wait_on_address.hpp new file mode 100644 index 000000000..ae7b7b44f --- /dev/null +++ b/src/boost/boost/winapi/wait_on_address.hpp @@ -0,0 +1,56 @@ +/* + * Copyright 2020 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. + * See http://www.boost.org/LICENSE_1_0.txt + */ + +#ifndef BOOST_WINAPI_WAIT_ON_ADDRESS_HPP_INCLUDED_ +#define BOOST_WINAPI_WAIT_ON_ADDRESS_HPP_INCLUDED_ + +#include + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN8 && (BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM) + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined(BOOST_USE_WINDOWS_H) +extern "C" { + +// Note: These functions are not dllimport +boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC +WaitOnAddress( + volatile boost::winapi::VOID_* addr, + boost::winapi::PVOID_ compare_addr, + boost::winapi::SIZE_T_ size, + boost::winapi::DWORD_ timeout_ms); + +boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +WakeByAddressSingle(boost::winapi::PVOID_ addr); + +boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC +WakeByAddressAll(boost::winapi::PVOID_ addr); + +} // extern "C" +#endif // !defined(BOOST_USE_WINDOWS_H) + +namespace boost { +namespace winapi { + +using ::WaitOnAddress; +using ::WakeByAddressSingle; +using ::WakeByAddressAll; + +} +} + +#include + +#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN8 && (BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM) + +#endif // BOOST_WINAPI_WAIT_ON_ADDRESS_HPP_INCLUDED_ diff --git a/src/boost/libs/atomic/config/Jamfile.v2 b/src/boost/libs/atomic/config/Jamfile.v2 new file mode 100644 index 000000000..2ef3494c9 --- /dev/null +++ b/src/boost/libs/atomic/config/Jamfile.v2 @@ -0,0 +1,20 @@ +# +# Copyright Andrey Semashev 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) +# + +import atomic-arch-config ; + +lib synchronization ; +explicit synchronization ; + +exe has_synchronization_lib : has_synchronization_lib.cpp : synchronization ; +explicit has_synchronization_lib ; + +obj has_sse2 : has_sse2.cpp : @atomic-arch-config.sse2-flags ; +explicit has_sse2 ; + +obj has_sse41 : has_sse41.cpp : @atomic-arch-config.sse41-flags ; +explicit has_sse41 ; diff --git a/src/boost/libs/atomic/config/has_sse2.cpp b/src/boost/libs/atomic/config/has_sse2.cpp new file mode 100644 index 000000000..9160fb847 --- /dev/null +++ b/src/boost/libs/atomic/config/has_sse2.cpp @@ -0,0 +1,17 @@ +/* + * Copyright Andrey Semashev 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) + */ + +#include + +int main(int, char*[]) +{ + __m128i mm = _mm_setzero_si128(); + mm = _mm_cmpeq_epi32(mm, mm); + mm = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm), _mm_castsi128_ps(mm), _MM_SHUFFLE(2, 0, 2, 0))); + mm = _mm_packs_epi32(mm, mm); + return _mm_movemask_epi8(mm); +} diff --git a/src/boost/libs/atomic/config/has_sse41.cpp b/src/boost/libs/atomic/config/has_sse41.cpp new file mode 100644 index 000000000..f4436ecfe --- /dev/null +++ b/src/boost/libs/atomic/config/has_sse41.cpp @@ -0,0 +1,17 @@ +/* + * Copyright Andrey Semashev 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) + */ + +#include + +int main(int, char*[]) +{ + __m128i mm = _mm_setzero_si128(); + mm = _mm_cmpeq_epi64(mm, mm); + mm = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm), _mm_castsi128_ps(mm), _MM_SHUFFLE(2, 0, 2, 0))); + mm = _mm_packs_epi32(mm, mm); + return _mm_movemask_epi8(mm); +} diff --git a/src/boost/libs/atomic/config/has_synchronization_lib.cpp b/src/boost/libs/atomic/config/has_synchronization_lib.cpp new file mode 100644 index 000000000..c5c4089ed --- /dev/null +++ b/src/boost/libs/atomic/config/has_synchronization_lib.cpp @@ -0,0 +1,33 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ + +#define BOOST_USE_WINAPI_VERSION 0x0602 + +// Include Boost.Predef first so that windows.h is guaranteed to be not included +#include +#include +#if !BOOST_OS_WINDOWS && !BOOST_OS_CYGWIN +#error "This config test is for Windows only" +#endif + +#include +#include +#if !(BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN8 && (BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM)) +#error "No WaitOnAddress API" +#endif + +#include +#include +#include + +int main() +{ + unsigned int n = 0u, compare = 0u; + boost::winapi::WaitOnAddress(&n, &compare, sizeof(n), 0); + return 0; +} diff --git a/src/boost/libs/atomic/src/bit_operation_tools.hpp b/src/boost/libs/atomic/src/bit_operation_tools.hpp new file mode 100644 index 000000000..f5d937c52 --- /dev/null +++ b/src/boost/libs/atomic/src/bit_operation_tools.hpp @@ -0,0 +1,82 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file bit_operation_tools.hpp + * + * This file contains bit operation tools + */ + +#ifndef BOOST_ATOMIC_BIT_OPERATION_TOOLS_HPP_INCLUDED_ +#define BOOST_ATOMIC_BIT_OPERATION_TOOLS_HPP_INCLUDED_ + +#include + +#if BOOST_ARCH_X86 + +#include +#include + +#if defined(_MSC_VER) +extern "C" unsigned char _BitScanForward(unsigned long* index, unsigned long x); +#if defined(BOOST_MSVC) +#pragma intrinsic(_BitScanForward) +#endif +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! Counts trailing zero bits +BOOST_FORCEINLINE unsigned int count_trailing_zeros(unsigned int x) +{ +#if defined(__GNUC__) + return __builtin_ctz(x); +#elif defined(_MSC_VER) + unsigned long index; + _BitScanForward(&index, x); + return static_cast< unsigned int >(index); +#else + unsigned int index = 0u; + if ((x & 0xFFFF) == 0u) + { + x >>= 16; + index += 16u; + } + if ((x & 0xFF) == 0u) + { + x >>= 8; + index += 8u; + } + if ((x & 0xF) == 0u) + { + x >>= 4; + index += 4u; + } + if ((x & 0x3) == 0u) + { + x >>= 2; + index += 2u; + } + if ((x & 0x1) == 0u) + { + index += 1u; + } + return index; +#endif +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ARCH_X86 + +#endif // BOOST_ATOMIC_BIT_OPERATION_TOOLS_HPP_INCLUDED_ diff --git a/src/boost/libs/atomic/src/cpuid.hpp b/src/boost/libs/atomic/src/cpuid.hpp new file mode 100644 index 000000000..25d728791 --- /dev/null +++ b/src/boost/libs/atomic/src/cpuid.hpp @@ -0,0 +1,86 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file cpuid.hpp + * + * This file contains declaration of \c cpuid function + */ + +#ifndef BOOST_ATOMIC_CPUID_HPP_INCLUDED_ +#define BOOST_ATOMIC_CPUID_HPP_INCLUDED_ + +#include + +#if BOOST_ARCH_X86 + +#if defined(_MSC_VER) +#include // __cpuid +#endif +#include +#include + +#include + +namespace boost { +namespace atomics { +namespace detail { + +//! The function invokes x86 cpuid instruction +inline void cpuid(uint32_t& eax, uint32_t& ebx, uint32_t& ecx, uint32_t& edx) +{ +#if defined(__GNUC__) +#if (defined(__i386__) || defined(__VXWORKS__)) && (defined(__PIC__) || defined(__PIE__)) && !(defined(__clang__) || (defined(BOOST_GCC) && BOOST_GCC >= 50100)) + // Unless the compiler can do it automatically, we have to backup ebx in 32-bit PIC/PIE code because it is reserved by the ABI. + // For VxWorks ebx is reserved on 64-bit as well. +#if defined(__x86_64__) + uint64_t rbx = ebx; + __asm__ __volatile__ + ( + "xchgq %%rbx, %0\n\t" + "cpuid\n\t" + "xchgq %%rbx, %0\n\t" + : "+DS" (rbx), "+a" (eax), "+c" (ecx), "+d" (edx) + ); + ebx = static_cast< uint32_t >(rbx); +#else // defined(__x86_64__) + __asm__ __volatile__ + ( + "xchgl %%ebx, %0\n\t" + "cpuid\n\t" + "xchgl %%ebx, %0\n\t" + : "+DS" (ebx), "+a" (eax), "+c" (ecx), "+d" (edx) + ); +#endif // defined(__x86_64__) +#else + __asm__ __volatile__ + ( + "cpuid\n\t" + : "+a" (eax), "+b" (ebx), "+c" (ecx), "+d" (edx) + ); +#endif +#elif defined(_MSC_VER) + int regs[4] = {}; + __cpuid(regs, eax); + eax = regs[0]; + ebx = regs[1]; + ecx = regs[2]; + edx = regs[3]; +#else +#error "Boost.Atomic: Unsupported compiler, cpuid instruction cannot be generated" +#endif +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ARCH_X86 + +#endif // BOOST_ATOMIC_CPUID_HPP_INCLUDED_ diff --git a/src/boost/libs/atomic/src/find_address.hpp b/src/boost/libs/atomic/src/find_address.hpp new file mode 100644 index 000000000..e1e4654a2 --- /dev/null +++ b/src/boost/libs/atomic/src/find_address.hpp @@ -0,0 +1,45 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file find_address.hpp + * + * This file contains declaration of \c find_address algorithm + */ + +#ifndef BOOST_ATOMIC_FIND_ADDRESS_HPP_INCLUDED_ +#define BOOST_ATOMIC_FIND_ADDRESS_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +namespace boost { +namespace atomics { +namespace detail { + +//! \c find_address signature +typedef std::size_t (find_address_t)(const volatile void* addr, const volatile void* const* addrs, std::size_t size); + +extern find_address_t find_address_generic; + +#if BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 || BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4) +extern find_address_t find_address_sse2; +#if BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 +extern find_address_t find_address_sse41; +#endif // BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 +#endif // BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 || BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ATOMIC_FIND_ADDRESS_HPP_INCLUDED_ diff --git a/src/boost/libs/atomic/src/find_address_sse2.cpp b/src/boost/libs/atomic/src/find_address_sse2.cpp new file mode 100644 index 000000000..c733ebe11 --- /dev/null +++ b/src/boost/libs/atomic/src/find_address_sse2.cpp @@ -0,0 +1,289 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file find_address_sse2.cpp + * + * This file contains SSE2 implementation of the \c find_address algorithm + */ + +#include +#include + +#if BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 || BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4) + +#include +#include + +#include +#include +#include +#include "find_address.hpp" +#include "x86_vector_tools.hpp" +#include "bit_operation_tools.hpp" + +#include + +namespace boost { +namespace atomics { +namespace detail { + +#if BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 +namespace { + +BOOST_FORCEINLINE __m128i mm_pand_si128(__m128i mm1, __m128i mm2) +{ + // As of 2020, gcc, clang and icc prefer to generate andps instead of pand if the surrounding + // instructions pertain to FP domain, even if we use the _mm_and_si128 intrinsic. In our + // algorithm implementation, the FP instruction happen to be shufps, which is not actually + // restricted to FP domain (it is actually implemented in a separate MMX EU in Pentium 4 or + // a shuffle EU in INT domain in Core 2; on AMD K8/K10 all SSE instructions are implemented in + // FADD, FMUL and FMISC EUs regardless of INT/FP data types, and shufps is implemented in FADD/FMUL). + // In other words, there should be no domain bypass penalty between shufps and pand. + // + // This would usually not pose a problem since andps and pand have the same latency and throughput + // on most architectures of that age (before SSE4.1). However, it is possible that a newer architecture + // runs the SSE2 code path (e.g. because some weird compiler doesn't support SSE4.1 or because + // a hypervisor blocks SSE4.1 detection), and there pand may have a better throughput. For example, + // Sandy Bridge can execute 3 pand instructions per cycle, but only one andps. For this reason + // we prefer to generate pand and not andps. +#if defined(__GNUC__) +#if defined(__AVX__) + // Generate VEX-coded variant if the code is compiled for AVX and later. + __asm__("vpand %1, %0, %0\n\t" : "+x" (mm1) : "x" (mm2)); +#else + __asm__("pand %1, %0\n\t" : "+x" (mm1) : "x" (mm2)); +#endif +#else + mm1 = _mm_and_si128(mm1, mm2); +#endif + return mm1; +} + +} // namespace +#endif // BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 + +//! SSE2 implementation of the \c find_address algorithm +std::size_t find_address_sse2(const volatile void* addr, const volatile void* const* addrs, std::size_t size) +{ +#if BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 + + if (size < 12u) + return find_address_generic(addr, addrs, size); + + const __m128i mm_addr = mm_set1_epiptr((uintptr_t)addr); + std::size_t pos = 0u; + const std::size_t n = (size + 1u) & ~static_cast< std::size_t >(1u); + for (std::size_t m = n & ~static_cast< std::size_t >(15u); pos < m; pos += 16u) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + __m128i mm2 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 2u)); + __m128i mm3 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 4u)); + __m128i mm4 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 6u)); + __m128i mm5 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 8u)); + __m128i mm6 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 10u)); + __m128i mm7 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 12u)); + __m128i mm8 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 14u)); + + mm1 = _mm_cmpeq_epi32(mm1, mm_addr); + mm2 = _mm_cmpeq_epi32(mm2, mm_addr); + mm3 = _mm_cmpeq_epi32(mm3, mm_addr); + mm4 = _mm_cmpeq_epi32(mm4, mm_addr); + mm5 = _mm_cmpeq_epi32(mm5, mm_addr); + mm6 = _mm_cmpeq_epi32(mm6, mm_addr); + mm7 = _mm_cmpeq_epi32(mm7, mm_addr); + mm8 = _mm_cmpeq_epi32(mm8, mm_addr); + + __m128i mm_mask1_lo = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm1), _mm_castsi128_ps(mm2), _MM_SHUFFLE(2, 0, 2, 0))); + __m128i mm_mask1_hi = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm1), _mm_castsi128_ps(mm2), _MM_SHUFFLE(3, 1, 3, 1))); + + __m128i mm_mask2_lo = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm3), _mm_castsi128_ps(mm4), _MM_SHUFFLE(2, 0, 2, 0))); + __m128i mm_mask2_hi = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm3), _mm_castsi128_ps(mm4), _MM_SHUFFLE(3, 1, 3, 1))); + + __m128i mm_mask3_lo = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm5), _mm_castsi128_ps(mm6), _MM_SHUFFLE(2, 0, 2, 0))); + __m128i mm_mask3_hi = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm5), _mm_castsi128_ps(mm6), _MM_SHUFFLE(3, 1, 3, 1))); + + __m128i mm_mask4_lo = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm7), _mm_castsi128_ps(mm8), _MM_SHUFFLE(2, 0, 2, 0))); + __m128i mm_mask4_hi = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm7), _mm_castsi128_ps(mm8), _MM_SHUFFLE(3, 1, 3, 1))); + + mm_mask1_lo = mm_pand_si128(mm_mask1_lo, mm_mask1_hi); + mm_mask2_lo = mm_pand_si128(mm_mask2_lo, mm_mask2_hi); + mm_mask3_lo = mm_pand_si128(mm_mask3_lo, mm_mask3_hi); + mm_mask4_lo = mm_pand_si128(mm_mask4_lo, mm_mask4_hi); + + mm_mask1_lo = _mm_packs_epi32(mm_mask1_lo, mm_mask2_lo); + mm_mask3_lo = _mm_packs_epi32(mm_mask3_lo, mm_mask4_lo); + + mm_mask1_lo = _mm_packs_epi16(mm_mask1_lo, mm_mask3_lo); + + uint32_t mask = _mm_movemask_epi8(mm_mask1_lo); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask); + goto done; + } + } + + if ((n - pos) >= 8u) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + __m128i mm2 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 2u)); + __m128i mm3 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 4u)); + __m128i mm4 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 6u)); + + mm1 = _mm_cmpeq_epi32(mm1, mm_addr); + mm2 = _mm_cmpeq_epi32(mm2, mm_addr); + mm3 = _mm_cmpeq_epi32(mm3, mm_addr); + mm4 = _mm_cmpeq_epi32(mm4, mm_addr); + + __m128i mm_mask1_lo = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm1), _mm_castsi128_ps(mm2), _MM_SHUFFLE(2, 0, 2, 0))); + __m128i mm_mask1_hi = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm1), _mm_castsi128_ps(mm2), _MM_SHUFFLE(3, 1, 3, 1))); + + __m128i mm_mask2_lo = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm3), _mm_castsi128_ps(mm4), _MM_SHUFFLE(2, 0, 2, 0))); + __m128i mm_mask2_hi = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm3), _mm_castsi128_ps(mm4), _MM_SHUFFLE(3, 1, 3, 1))); + + mm_mask1_lo = mm_pand_si128(mm_mask1_lo, mm_mask1_hi); + mm_mask2_lo = mm_pand_si128(mm_mask2_lo, mm_mask2_hi); + + mm_mask1_lo = _mm_packs_epi32(mm_mask1_lo, mm_mask2_lo); + + uint32_t mask = _mm_movemask_epi8(mm_mask1_lo); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask) / 2u; + goto done; + } + + pos += 8u; + } + + if ((n - pos) >= 4u) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + __m128i mm2 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 2u)); + + mm1 = _mm_cmpeq_epi32(mm1, mm_addr); + mm2 = _mm_cmpeq_epi32(mm2, mm_addr); + + __m128i mm_mask1_lo = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm1), _mm_castsi128_ps(mm2), _MM_SHUFFLE(2, 0, 2, 0))); + __m128i mm_mask1_hi = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm1), _mm_castsi128_ps(mm2), _MM_SHUFFLE(3, 1, 3, 1))); + + mm_mask1_lo = mm_pand_si128(mm_mask1_lo, mm_mask1_hi); + + uint32_t mask = _mm_movemask_ps(_mm_castsi128_ps(mm_mask1_lo)); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask); + goto done; + } + + pos += 4u; + } + + if (pos < n) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + + mm1 = _mm_cmpeq_epi32(mm1, mm_addr); + __m128i mm_mask = _mm_shuffle_epi32(mm1, _MM_SHUFFLE(2, 3, 0, 1)); + mm_mask = mm_pand_si128(mm_mask, mm1); + + uint32_t mask = _mm_movemask_pd(_mm_castsi128_pd(mm_mask)); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask); + goto done; + } + + pos += 2u; + } + +done: + return pos; + +#else // BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 + + if (size < 10u) + return find_address_generic(addr, addrs, size); + + const __m128i mm_addr = _mm_set1_epi32((uintptr_t)addr); + std::size_t pos = 0u; + const std::size_t n = (size + 3u) & ~static_cast< std::size_t >(3u); + for (std::size_t m = n & ~static_cast< std::size_t >(15u); pos < m; pos += 16u) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + __m128i mm2 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 4u)); + __m128i mm3 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 8u)); + __m128i mm4 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 12u)); + + mm1 = _mm_cmpeq_epi32(mm1, mm_addr); + mm2 = _mm_cmpeq_epi32(mm2, mm_addr); + mm3 = _mm_cmpeq_epi32(mm3, mm_addr); + mm4 = _mm_cmpeq_epi32(mm4, mm_addr); + + mm1 = _mm_packs_epi32(mm1, mm2); + mm3 = _mm_packs_epi32(mm3, mm4); + + mm1 = _mm_packs_epi16(mm1, mm3); + + uint32_t mask = _mm_movemask_epi8(mm1); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask); + goto done; + } + } + + if ((n - pos) >= 8u) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + __m128i mm2 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 4u)); + + mm1 = _mm_cmpeq_epi32(mm1, mm_addr); + mm2 = _mm_cmpeq_epi32(mm2, mm_addr); + + mm1 = _mm_packs_epi32(mm1, mm2); + + uint32_t mask = _mm_movemask_epi8(mm1); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask) / 2u; + goto done; + } + + pos += 8u; + } + + if (pos < n) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + + mm1 = _mm_cmpeq_epi32(mm1, mm_addr); + + uint32_t mask = _mm_movemask_ps(_mm_castsi128_ps(mm1)); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask); + goto done; + } + + pos += 4u; + } + +done: + return pos; + +#endif // BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 || BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4) diff --git a/src/boost/libs/atomic/src/find_address_sse41.cpp b/src/boost/libs/atomic/src/find_address_sse41.cpp new file mode 100644 index 000000000..6ac208a15 --- /dev/null +++ b/src/boost/libs/atomic/src/find_address_sse41.cpp @@ -0,0 +1,154 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file find_address_sse41.cpp + * + * This file contains SSE4.1 implementation of the \c find_address algorithm + */ + +#include +#include + +#if BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8) + +#include +#include + +#include +#include +#include +#include "find_address.hpp" +#include "x86_vector_tools.hpp" +#include "bit_operation_tools.hpp" + +#include + +namespace boost { +namespace atomics { +namespace detail { + +//! SSE4.1 implementation of the \c find_address algorithm +std::size_t find_address_sse41(const volatile void* addr, const volatile void* const* addrs, std::size_t size) +{ + if (size < 12u) + return find_address_generic(addr, addrs, size); + + const __m128i mm_addr = mm_set1_epiptr((uintptr_t)addr); + std::size_t pos = 0u; + const std::size_t n = (size + 1u) & ~static_cast< std::size_t >(1u); + for (std::size_t m = n & ~static_cast< std::size_t >(15u); pos < m; pos += 16u) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + __m128i mm2 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 2u)); + __m128i mm3 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 4u)); + __m128i mm4 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 6u)); + __m128i mm5 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 8u)); + __m128i mm6 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 10u)); + __m128i mm7 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 12u)); + __m128i mm8 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 14u)); + + mm1 = _mm_cmpeq_epi64(mm1, mm_addr); + mm2 = _mm_cmpeq_epi64(mm2, mm_addr); + mm3 = _mm_cmpeq_epi64(mm3, mm_addr); + mm4 = _mm_cmpeq_epi64(mm4, mm_addr); + mm5 = _mm_cmpeq_epi64(mm5, mm_addr); + mm6 = _mm_cmpeq_epi64(mm6, mm_addr); + mm7 = _mm_cmpeq_epi64(mm7, mm_addr); + mm8 = _mm_cmpeq_epi64(mm8, mm_addr); + + mm1 = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm1), _mm_castsi128_ps(mm2), _MM_SHUFFLE(2, 0, 2, 0))); + mm3 = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm3), _mm_castsi128_ps(mm4), _MM_SHUFFLE(2, 0, 2, 0))); + mm5 = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm5), _mm_castsi128_ps(mm6), _MM_SHUFFLE(2, 0, 2, 0))); + mm7 = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm7), _mm_castsi128_ps(mm8), _MM_SHUFFLE(2, 0, 2, 0))); + + mm1 = _mm_packs_epi32(mm1, mm3); + mm5 = _mm_packs_epi32(mm5, mm7); + + mm1 = _mm_packs_epi16(mm1, mm5); + + uint32_t mask = _mm_movemask_epi8(mm1); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask); + goto done; + } + } + + if ((n - pos) >= 8u) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + __m128i mm2 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 2u)); + __m128i mm3 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 4u)); + __m128i mm4 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 6u)); + + mm1 = _mm_cmpeq_epi64(mm1, mm_addr); + mm2 = _mm_cmpeq_epi64(mm2, mm_addr); + mm3 = _mm_cmpeq_epi64(mm3, mm_addr); + mm4 = _mm_cmpeq_epi64(mm4, mm_addr); + + mm1 = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm1), _mm_castsi128_ps(mm2), _MM_SHUFFLE(2, 0, 2, 0))); + mm3 = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm3), _mm_castsi128_ps(mm4), _MM_SHUFFLE(2, 0, 2, 0))); + + mm1 = _mm_packs_epi32(mm1, mm3); + + uint32_t mask = _mm_movemask_epi8(mm1); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask) / 2u; + goto done; + } + + pos += 8u; + } + + if ((n - pos) >= 4u) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + __m128i mm2 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos + 2u)); + + mm1 = _mm_cmpeq_epi64(mm1, mm_addr); + mm2 = _mm_cmpeq_epi64(mm2, mm_addr); + + mm1 = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(mm1), _mm_castsi128_ps(mm2), _MM_SHUFFLE(2, 0, 2, 0))); + + uint32_t mask = _mm_movemask_ps(_mm_castsi128_ps(mm1)); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask); + goto done; + } + + pos += 4u; + } + + if (pos < n) + { + __m128i mm1 = _mm_load_si128(reinterpret_cast< const __m128i* >(addrs + pos)); + + mm1 = _mm_cmpeq_epi64(mm1, mm_addr); + uint32_t mask = _mm_movemask_pd(_mm_castsi128_pd(mm1)); + if (mask) + { + pos += atomics::detail::count_trailing_zeros(mask); + goto done; + } + + pos += 2u; + } + +done: + return pos; +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8) diff --git a/src/boost/libs/atomic/src/lock_pool.cpp b/src/boost/libs/atomic/src/lock_pool.cpp new file mode 100644 index 000000000..aacfa5853 --- /dev/null +++ b/src/boost/libs/atomic/src/lock_pool.cpp @@ -0,0 +1,1414 @@ +/* + * 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) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013-2014, 2020 Andrey Semashev + */ +/*! + * \file lock_pool.cpp + * + * This file contains implementation of the lock pool used to emulate atomic ops. + */ + +#include +#if BOOST_OS_WINDOWS +// Include boost/winapi/config.hpp first to make sure target Windows version is selected by Boost.WinAPI +#include +#include +#endif +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#if BOOST_OS_WINDOWS +#include +#include +#include +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +#include +#include +#else // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +#include +#include +#include +#include +#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +#define BOOST_ATOMIC_USE_WINAPI +#else // BOOST_OS_WINDOWS +#include +#if defined(BOOST_ATOMIC_DETAIL_HAS_FUTEX) && BOOST_ATOMIC_INT32_LOCK_FREE == 2 +#define BOOST_ATOMIC_USE_FUTEX +#else // BOOST_OS_LINUX +#include +#define BOOST_ATOMIC_USE_PTHREAD +#endif // BOOST_OS_LINUX +#include +#endif // BOOST_OS_WINDOWS + +#include "find_address.hpp" + +#if BOOST_ARCH_X86 && (defined(BOOST_ATOMIC_USE_SSE2) || defined(BOOST_ATOMIC_USE_SSE41)) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && \ + (\ + (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 && BOOST_HW_SIMD_X86 < BOOST_HW_SIMD_X86_SSE4_1_VERSION) || \ + (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4 && BOOST_HW_SIMD_X86 < BOOST_HW_SIMD_X86_SSE2_VERSION) \ + ) +#include "cpuid.hpp" +#define BOOST_ATOMIC_DETAIL_X86_USE_RUNTIME_DISPATCH +#endif + +#include + +// Cache line size, in bytes +// NOTE: This constant is made as a macro because some compilers (gcc 4.4 for one) don't allow enums or namespace scope constants in alignment attributes +#if defined(__s390__) || defined(__s390x__) +#define BOOST_ATOMIC_CACHE_LINE_SIZE 256 +#elif defined(powerpc) || defined(__powerpc__) || defined(__ppc__) +#define BOOST_ATOMIC_CACHE_LINE_SIZE 128 +#else +#define BOOST_ATOMIC_CACHE_LINE_SIZE 64 +#endif + +namespace boost { +namespace atomics { +namespace detail { + +//! \c find_address generic implementation +std::size_t find_address_generic(const volatile void* addr, const volatile void* const* addrs, std::size_t size) +{ + for (std::size_t i = 0u; i < size; ++i) + { + if (addrs[i] == addr) + return i; + } + + return size; +} + +namespace lock_pool { + +namespace { + +#if BOOST_ARCH_X86 && (defined(BOOST_ATOMIC_USE_SSE2) || defined(BOOST_ATOMIC_USE_SSE41)) && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 || BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4) + +typedef atomics::detail::core_operations< sizeof(find_address_t*), false, false > func_ptr_operations; +BOOST_STATIC_ASSERT_MSG(func_ptr_operations::is_always_lock_free, "Boost.Atomic unsupported target platform: native atomic operations not implemented for function pointers"); + +#if defined(BOOST_ATOMIC_DETAIL_X86_USE_RUNTIME_DISPATCH) +std::size_t find_address_dispatch(const volatile void* addr, const volatile void* const* addrs, std::size_t size); +#endif + +union find_address_ptr +{ + find_address_t* as_ptr; + func_ptr_operations::storage_type as_storage; +} +g_find_address = +{ +#if defined(BOOST_ATOMIC_USE_SSE41) && BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 && BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE4_1_VERSION + &find_address_sse41 +#elif defined(BOOST_ATOMIC_USE_SSE2) && BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4 && BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE2_VERSION + &find_address_sse2 +#else + &find_address_dispatch +#endif +}; + +#if defined(BOOST_ATOMIC_DETAIL_X86_USE_RUNTIME_DISPATCH) + +std::size_t find_address_dispatch(const volatile void* addr, const volatile void* const* addrs, std::size_t size) +{ + find_address_t* find_addr = &find_address_generic; + +#if defined(BOOST_ATOMIC_USE_SSE2) + // First, check the max available cpuid function + uint32_t eax = 0u, ebx = 0u, ecx = 0u, edx = 0u; + atomics::detail::cpuid(eax, ebx, ecx, edx); + + const uint32_t max_cpuid_function = eax; + if (max_cpuid_function >= 1u) + { + // Obtain CPU features + eax = 1u; + ebx = ecx = edx = 0u; + atomics::detail::cpuid(eax, ebx, ecx, edx); + + if ((edx & (1u << 26)) != 0u) + find_addr = &find_address_sse2; + +#if defined(BOOST_ATOMIC_USE_SSE41) && BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 + if ((ecx & (1u << 19)) != 0u) + find_addr = &find_address_sse41; +#endif + } +#endif // defined(BOOST_ATOMIC_USE_SSE2) + + find_address_ptr ptr = {}; + ptr.as_ptr = find_addr; + func_ptr_operations::store(g_find_address.as_storage, ptr.as_storage, boost::memory_order_relaxed); + + return find_addr(addr, addrs, size); +} + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_USE_RUNTIME_DISPATCH) + +inline std::size_t find_address(const volatile void* addr, const volatile void* const* addrs, std::size_t size) +{ + find_address_ptr ptr; + ptr.as_storage = func_ptr_operations::load(g_find_address.as_storage, boost::memory_order_relaxed); + return ptr.as_ptr(addr, addrs, size); +} + +#else // BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 || BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4) + +inline std::size_t find_address(const volatile void* addr, const volatile void* const* addrs, std::size_t size) +{ + return atomics::detail::find_address_generic(addr, addrs, size); +} + +#endif // BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8 || BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 4) + +struct wait_state; +struct lock_state; + +//! Base class for a wait state +struct wait_state_base +{ + //! Number of waiters referencing this state + std::size_t m_ref_count; + //! Index of this wait state in the list + std::size_t m_index; + + explicit wait_state_base(std::size_t index) BOOST_NOEXCEPT : + m_ref_count(0u), + m_index(index) + { + } + + BOOST_DELETED_FUNCTION(wait_state_base(wait_state_base const&)) + BOOST_DELETED_FUNCTION(wait_state_base& operator= (wait_state_base const&)) +}; + +//! List of wait states. Must be a POD structure. +struct wait_state_list +{ + //! List header + struct header + { + //! List size + std::size_t size; + //! List capacity + std::size_t capacity; + }; + + /*! + * \brief Pointer to the list header + * + * The list buffer consists of three adjacent areas: header object, array of atomic pointers and array of pointers to the wait_state structures. + * Each of the arrays have header.capacity elements, of which the first header.size elements correspond to the currently ongoing wait operations + * and the rest are spare elements. Spare wait_state structures may still be allocated (in which case the wait_state pointer is not null) and + * can be reused on future requests. Spare atomic pointers are null and unused. + * + * This memory layout was designed to optimize wait state lookup by atomic address and also support memory pooling to reduce dynamic memory allocations. + */ + header* m_header; + //! The flag indicates that memory pooling is disabled. Set on process cleanup. + bool m_free_memory; + + //! Buffer alignment, in bytes + static BOOST_CONSTEXPR_OR_CONST std::size_t buffer_alignment = 16u; + //! Alignment of pointer arrays in the buffer, in bytes. This should align atomic pointers to the vector size used in \c find_address implementation. + static BOOST_CONSTEXPR_OR_CONST std::size_t entries_alignment = atomics::detail::alignment_of< void* >::value < 16u ? 16u : atomics::detail::alignment_of< void* >::value; + //! Offset from the list header to the beginning of the array of atomic pointers in the buffer, in bytes + static BOOST_CONSTEXPR_OR_CONST std::size_t entries_offset = (sizeof(header) + entries_alignment - 1u) & ~static_cast< std::size_t >(entries_alignment - 1u); + //! Initial buffer capacity, in elements. This should be at least as large as a vector size used in \c find_address implementation. + static BOOST_CONSTEXPR_OR_CONST std::size_t initial_capacity = (16u / sizeof(void*)) < 2u ? 2u : (16u / sizeof(void*)); + + //! Returns a pointer to the array of atomic pointers + static const volatile void** get_atomic_pointers(header* p) BOOST_NOEXCEPT + { + BOOST_ASSERT(p != NULL); + return reinterpret_cast< const volatile void** >(reinterpret_cast< unsigned char* >(p) + entries_offset); + } + + //! Returns a pointer to the array of atomic pointers + const volatile void** get_atomic_pointers() const BOOST_NOEXCEPT + { + return get_atomic_pointers(m_header); + } + + //! Returns a pointer to the array of pointers to the wait states + static wait_state** get_wait_states(const volatile void** ptrs, std::size_t capacity) BOOST_NOEXCEPT + { + return reinterpret_cast< wait_state** >(const_cast< void** >(ptrs + capacity)); + } + + //! Returns a pointer to the array of pointers to the wait states + static wait_state** get_wait_states(header* p) BOOST_NOEXCEPT + { + return get_wait_states(get_atomic_pointers(p), p->capacity); + } + + //! Returns a pointer to the array of pointers to the wait states + wait_state** get_wait_states() const BOOST_NOEXCEPT + { + return get_wait_states(m_header); + } + + //! Finds an element with the given pointer to the atomic object + wait_state* find(const volatile void* addr) const BOOST_NOEXCEPT + { + wait_state* ws = NULL; + if (BOOST_LIKELY(m_header != NULL)) + { + const volatile void* const* addrs = get_atomic_pointers(); + const std::size_t size = m_header->size; + std::size_t pos = find_address(addr, addrs, size); + if (pos < size) + ws = get_wait_states()[pos]; + } + + return ws; + } + + //! Finds an existing element with the given pointer to the atomic object or allocates a new one. Returns NULL in case of failure. + wait_state* find_or_create(const volatile void* addr) BOOST_NOEXCEPT; + //! Releases the previously created wait state + void erase(wait_state* w) BOOST_NOEXCEPT; + + //! Deallocates spare entries and the list buffer if no allocated entries are left + void free_spare() BOOST_NOEXCEPT; + //! Allocates new buffer for the list entries. Returns NULL in case of failure. + static header* allocate_buffer(std::size_t new_capacity, header* old_header = NULL) BOOST_NOEXCEPT; +}; + +#define BOOST_ATOMIC_WAIT_STATE_LIST_INIT { NULL, false } + +// In the platform-specific definitions below, lock_state must be a POD structure and wait_state must derive from wait_state_base. + +#if defined(BOOST_ATOMIC_USE_PTHREAD) + +//! State of a wait operation associated with an atomic object +struct wait_state : + public wait_state_base +{ + //! Condition variable + pthread_cond_t m_cond; + + explicit wait_state(std::size_t index) BOOST_NOEXCEPT : + wait_state_base(index) + { + BOOST_VERIFY(pthread_cond_init(&m_cond, NULL) == 0); + } + + ~wait_state() BOOST_NOEXCEPT + { + pthread_cond_destroy(&m_cond); + } + + //! Blocks in the wait operation until notified + void wait(lock_state& state) BOOST_NOEXCEPT; + + //! Wakes up one thread blocked in the wait operation + void notify_one(lock_state&) BOOST_NOEXCEPT + { + BOOST_VERIFY(pthread_cond_signal(&m_cond) == 0); + } + //! Wakes up all threads blocked in the wait operation + void notify_all(lock_state&) BOOST_NOEXCEPT + { + BOOST_VERIFY(pthread_cond_broadcast(&m_cond) == 0); + } +}; + +//! Lock pool entry +struct lock_state +{ + //! Mutex + pthread_mutex_t m_mutex; + //! Wait states + wait_state_list m_wait_states; + + //! Locks the mutex for a short duration + void short_lock() BOOST_NOEXCEPT + { + long_lock(); + } + + //! Locks the mutex for a long duration + void long_lock() BOOST_NOEXCEPT + { + for (unsigned int i = 0u; i < 5u; ++i) + { + if (BOOST_LIKELY(pthread_mutex_trylock(&m_mutex) == 0)) + return; + + atomics::detail::pause(); + } + + BOOST_VERIFY(pthread_mutex_lock(&m_mutex) == 0); + } + + //! Unlocks the mutex + void unlock() BOOST_NOEXCEPT + { + BOOST_VERIFY(pthread_mutex_unlock(&m_mutex) == 0); + } +}; + +#define BOOST_ATOMIC_LOCK_STATE_INIT { PTHREAD_MUTEX_INITIALIZER, BOOST_ATOMIC_WAIT_STATE_LIST_INIT } + +//! Blocks in the wait operation until notified +inline void wait_state::wait(lock_state& state) BOOST_NOEXCEPT +{ + BOOST_VERIFY(pthread_cond_wait(&m_cond, &state.m_mutex) == 0); +} + +#elif defined(BOOST_ATOMIC_USE_FUTEX) + +typedef atomics::detail::core_operations< 4u, false, false > futex_operations; +// The storage type must be a 32-bit object, as required by futex API +BOOST_STATIC_ASSERT_MSG(futex_operations::is_always_lock_free && sizeof(futex_operations::storage_type) == 4u, "Boost.Atomic unsupported target platform: native atomic operations not implemented for 32-bit integers"); +typedef atomics::detail::extra_operations< futex_operations, futex_operations::storage_size, futex_operations::is_signed > futex_extra_operations; + +namespace mutex_bits { + +//! The bit indicates a locked mutex +BOOST_CONSTEXPR_OR_CONST futex_operations::storage_type locked = 1u; +//! The bit indicates that there is at least one thread blocked waiting for the mutex to be released +BOOST_CONSTEXPR_OR_CONST futex_operations::storage_type contended = 1u << 1; +//! The lowest bit of the counter bits used to mitigate ABA problem. This and any higher bits in the mutex state constitute the counter. +BOOST_CONSTEXPR_OR_CONST futex_operations::storage_type counter_one = 1u << 2; + +} // namespace mutex_bits + +//! State of a wait operation associated with an atomic object +struct wait_state : + public wait_state_base +{ + //! Condition variable futex. Used as the counter of notify calls. + BOOST_ATOMIC_DETAIL_ALIGNED_VAR(futex_operations::storage_alignment, futex_operations::storage_type, m_cond); + //! Number of currently blocked waiters + futex_operations::storage_type m_waiter_count; + + explicit wait_state(std::size_t index) BOOST_NOEXCEPT : + wait_state_base(index), + m_cond(0u), + m_waiter_count(0u) + { + } + + //! Blocks in the wait operation until notified + void wait(lock_state& state) BOOST_NOEXCEPT; + + //! Wakes up one thread blocked in the wait operation + void notify_one(lock_state& state) BOOST_NOEXCEPT; + //! Wakes up all threads blocked in the wait operation + void notify_all(lock_state& state) BOOST_NOEXCEPT; +}; + +//! Lock pool entry +struct lock_state +{ + //! Mutex futex + BOOST_ATOMIC_DETAIL_ALIGNED_VAR(futex_operations::storage_alignment, futex_operations::storage_type, m_mutex); + //! Wait states + wait_state_list m_wait_states; + + //! Locks the mutex for a short duration + void short_lock() BOOST_NOEXCEPT + { + long_lock(); + } + + //! Locks the mutex for a long duration + void long_lock() BOOST_NOEXCEPT + { + for (unsigned int i = 0u; i < 10u; ++i) + { + futex_operations::storage_type prev_state = futex_operations::load(m_mutex, boost::memory_order_relaxed); + if (BOOST_LIKELY((prev_state & mutex_bits::locked) == 0u)) + { + futex_operations::storage_type new_state = prev_state | mutex_bits::locked; + if (BOOST_LIKELY(futex_operations::compare_exchange_strong(m_mutex, prev_state, new_state, boost::memory_order_acquire, boost::memory_order_relaxed))) + return; + } + + atomics::detail::pause(); + } + + lock_slow_path(); + } + + //! Locks the mutex for a long duration + void lock_slow_path() BOOST_NOEXCEPT + { + futex_operations::storage_type prev_state = futex_operations::load(m_mutex, boost::memory_order_relaxed); + while (true) + { + if (BOOST_LIKELY((prev_state & mutex_bits::locked) == 0u)) + { + futex_operations::storage_type new_state = prev_state | mutex_bits::locked; + if (BOOST_LIKELY(futex_operations::compare_exchange_weak(m_mutex, prev_state, new_state, boost::memory_order_acquire, boost::memory_order_relaxed))) + return; + } + else + { + futex_operations::storage_type new_state = prev_state | mutex_bits::contended; + if (BOOST_LIKELY(futex_operations::compare_exchange_weak(m_mutex, prev_state, new_state, boost::memory_order_relaxed, boost::memory_order_relaxed))) + { + atomics::detail::futex_wait_private(&m_mutex, new_state); + prev_state = futex_operations::load(m_mutex, boost::memory_order_relaxed); + } + } + } + } + + //! Unlocks the mutex + void unlock() BOOST_NOEXCEPT + { + futex_operations::storage_type prev_state = futex_operations::load(m_mutex, boost::memory_order_relaxed); + futex_operations::storage_type new_state; + while (true) + { + new_state = (prev_state & (~mutex_bits::locked)) + mutex_bits::counter_one; + if (BOOST_LIKELY(futex_operations::compare_exchange_weak(m_mutex, prev_state, new_state, boost::memory_order_release, boost::memory_order_relaxed))) + break; + } + + if ((prev_state & mutex_bits::contended) != 0u) + { + int woken_count = atomics::detail::futex_signal_private(&m_mutex); + if (woken_count == 0) + { + prev_state = new_state; + new_state &= ~mutex_bits::contended; + futex_operations::compare_exchange_strong(m_mutex, prev_state, new_state, boost::memory_order_relaxed, boost::memory_order_relaxed); + } + } + } +}; + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_ALIGNAS) +#define BOOST_ATOMIC_LOCK_STATE_INIT { 0u, BOOST_ATOMIC_WAIT_STATE_LIST_INIT } +#else +#define BOOST_ATOMIC_LOCK_STATE_INIT { { 0u }, BOOST_ATOMIC_WAIT_STATE_LIST_INIT } +#endif + +//! Blocks in the wait operation until notified +inline void wait_state::wait(lock_state& state) BOOST_NOEXCEPT +{ + const futex_operations::storage_type prev_cond = m_cond; + ++m_waiter_count; + + state.unlock(); + + while (true) + { + int err = atomics::detail::futex_wait_private(&m_cond, prev_cond); + if (BOOST_LIKELY(err != EINTR)) + break; + } + + state.long_lock(); + + --m_waiter_count; +} + +//! Wakes up one thread blocked in the wait operation +inline void wait_state::notify_one(lock_state& state) BOOST_NOEXCEPT +{ + ++m_cond; + + if (BOOST_LIKELY(m_waiter_count > 0u)) + { + // Move one blocked thread to the mutex futex and mark the mutex contended so that the thread is unblocked on unlock() + atomics::detail::futex_requeue_private(&m_cond, &state.m_mutex, 0u, 1u); + futex_extra_operations::opaque_or(state.m_mutex, mutex_bits::contended, boost::memory_order_relaxed); + } +} + +//! Wakes up all threads blocked in the wait operation +inline void wait_state::notify_all(lock_state& state) BOOST_NOEXCEPT +{ + ++m_cond; + + if (BOOST_LIKELY(m_waiter_count > 0u)) + { + // Move blocked threads to the mutex futex and mark the mutex contended so that a thread is unblocked on unlock() + atomics::detail::futex_requeue_private(&m_cond, &state.m_mutex, 0u); + futex_extra_operations::opaque_or(state.m_mutex, mutex_bits::contended, boost::memory_order_relaxed); + } +} + +#else + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + +//! State of a wait operation associated with an atomic object +struct wait_state : + public wait_state_base +{ + //! Condition variable + boost::winapi::CONDITION_VARIABLE_ m_cond; + + explicit wait_state(std::size_t index) BOOST_NOEXCEPT : + wait_state_base(index) + { + boost::winapi::InitializeConditionVariable(&m_cond); + } + + //! Blocks in the wait operation until notified + void wait(lock_state& state) BOOST_NOEXCEPT; + + //! Wakes up one thread blocked in the wait operation + void notify_one(lock_state&) BOOST_NOEXCEPT + { + boost::winapi::WakeConditionVariable(&m_cond); + } + //! Wakes up all threads blocked in the wait operation + void notify_all(lock_state&) BOOST_NOEXCEPT + { + boost::winapi::WakeAllConditionVariable(&m_cond); + } +}; + +//! Lock pool entry +struct lock_state +{ + //! Mutex + boost::winapi::SRWLOCK_ m_mutex; + //! Wait states + wait_state_list m_wait_states; + + //! Locks the mutex for a short duration + void short_lock() BOOST_NOEXCEPT + { + long_lock(); + } + + //! Locks the mutex for a long duration + void long_lock() BOOST_NOEXCEPT + { + // Presumably, AcquireSRWLockExclusive already implements spinning internally, so there's no point in doing this ourselves. + boost::winapi::AcquireSRWLockExclusive(&m_mutex); + } + + //! Unlocks the mutex + void unlock() BOOST_NOEXCEPT + { + boost::winapi::ReleaseSRWLockExclusive(&m_mutex); + } +}; + +#define BOOST_ATOMIC_LOCK_STATE_INIT { BOOST_WINAPI_SRWLOCK_INIT, BOOST_ATOMIC_WAIT_STATE_LIST_INIT } + +//! Blocks in the wait operation until notified +inline void wait_state::wait(lock_state& state) BOOST_NOEXCEPT +{ + boost::winapi::SleepConditionVariableSRW(&m_cond, &state.m_mutex, boost::winapi::infinite, 0u); +} + +#else // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + +typedef atomics::detail::core_operations< 4u, false, false > mutex_operations; +BOOST_STATIC_ASSERT_MSG(mutex_operations::is_always_lock_free, "Boost.Atomic unsupported target platform: native atomic operations not implemented for 32-bit integers"); + +namespace fallback_mutex_bits { + +//! The bit indicates a locked mutex +BOOST_CONSTEXPR_OR_CONST mutex_operations::storage_type locked = 1u; +//! The bit indicates that the critical section is initialized and should be used instead of the fallback mutex +BOOST_CONSTEXPR_OR_CONST mutex_operations::storage_type critical_section_initialized = 1u << 1; + +} // namespace mutex_bits + +//! State of a wait operation associated with an atomic object +struct wait_state : + public wait_state_base +{ + /*! + * \brief A semaphore used to block one or more threads + * + * A semaphore can be used to block a thread if it has no ongoing notifications (i.e. \c m_notify_count is 0). + * If there is no such semaphore, the thread has to allocate a new one to block on. This is to guarantee + * that a thread that is blocked after a notification is not immediately released by the semaphore while + * there are previously blocked threads. + * + * Semaphores are organized in a circular doubly linked list. A single semaphore object represents a list + * of one semaphore and is said to be "singular". + */ + struct semaphore + { + //! Pointer to the next semaphore in the list + semaphore* m_next; + //! Pointer to the previous semaphore in the list + semaphore* m_prev; + + //! Semaphore handle + boost::winapi::HANDLE_ m_semaphore; + //! Number of threads blocked on the semaphore + boost::winapi::ULONG_ m_waiter_count; + //! Number of threads released by notifications + boost::winapi::ULONG_ m_notify_count; + + semaphore() BOOST_NOEXCEPT : + m_semaphore(boost::winapi::create_anonymous_semaphore(NULL, 0, (std::numeric_limits< boost::winapi::LONG_ >::max)())), + m_waiter_count(0u), + m_notify_count(0u) + { + m_next = m_prev = this; + } + + ~semaphore() BOOST_NOEXCEPT + { + BOOST_ASSERT(is_singular()); + + if (BOOST_LIKELY(m_semaphore != boost::winapi::invalid_handle_value)) + boost::winapi::CloseHandle(m_semaphore); + } + + //! Creates a new semaphore or returns null in case of failure + static semaphore* create() BOOST_NOEXCEPT + { + semaphore* p = new (std::nothrow) semaphore(); + if (BOOST_UNLIKELY(p != NULL && p->m_semaphore == boost::winapi::invalid_handle_value)) + { + delete p; + p = NULL; + } + return p; + } + + //! Returns \c true if the semaphore is the single element of the list + bool is_singular() const BOOST_NOEXCEPT + { + return m_next == this /* && m_prev == this */; + } + + //! Inserts the semaphore list after the specified other semaphore + void link_after(semaphore* that) BOOST_NOEXCEPT + { + link_before(that->m_next); + } + + //! Inserts the semaphore list before the specified other semaphore + void link_before(semaphore* that) BOOST_NOEXCEPT + { + semaphore* prev = that->m_prev; + that->m_prev = m_prev; + m_prev->m_next = that; + m_prev = prev; + prev->m_next = this; + } + + //! Removes the semaphore from the list + void unlink() BOOST_NOEXCEPT + { + // Load pointers beforehand, in case we are the only element in the list + semaphore* next = m_next; + semaphore* prev = m_prev; + prev->m_next = next; + next->m_prev = prev; + m_next = m_prev = this; + } + + BOOST_DELETED_FUNCTION(semaphore(semaphore const&)) + BOOST_DELETED_FUNCTION(semaphore& operator= (semaphore const&)) + }; + + //! Doubly linked circular list of semaphores + class semaphore_list + { + private: + semaphore* m_head; + + public: + semaphore_list() BOOST_NOEXCEPT : + m_head(NULL) + { + } + + //! Returns \c true if the list is empty + bool empty() const BOOST_NOEXCEPT + { + return m_head == NULL; + } + + //! Returns the first semaphore in the list + semaphore* front() const BOOST_NOEXCEPT + { + return m_head; + } + + //! Returns the first semaphore in the list and leaves the list empty + semaphore* eject() BOOST_NOEXCEPT + { + semaphore* sem = m_head; + m_head = NULL; + return sem; + } + + //! Inserts the semaphore at the beginning of the list + void push_front(semaphore* sem) BOOST_NOEXCEPT + { + if (m_head) + sem->link_before(m_head); + + m_head = sem; + } + + //! Removes the first semaphore from the beginning of the list + semaphore* pop_front() BOOST_NOEXCEPT + { + BOOST_ASSERT(!empty()); + semaphore* sem = m_head; + erase(sem); + return sem; + } + + //! Removes the semaphore from the list + void erase(semaphore* sem) BOOST_NOEXCEPT + { + if (sem->is_singular()) + { + BOOST_ASSERT(m_head == sem); + m_head = NULL; + } + else + { + if (m_head == sem) + m_head = sem->m_next; + sem->unlink(); + } + } + + BOOST_DELETED_FUNCTION(semaphore_list(semaphore_list const&)) + BOOST_DELETED_FUNCTION(semaphore_list& operator= (semaphore_list const&)) + }; + + //! List of semaphores used for notifying. Here, every semaphore has m_notify_count > 0 && m_waiter_count > 0. + semaphore_list m_notify_semaphores; + //! List of semaphores used for waiting. Here, every semaphore has m_notify_count == 0 && m_waiter_count > 0. + semaphore_list m_wait_semaphores; + //! List of free semaphores. Here, every semaphore has m_notify_count == 0 && m_waiter_count == 0. + semaphore_list m_free_semaphores; + + explicit wait_state(std::size_t index) BOOST_NOEXCEPT : + wait_state_base(index) + { + } + + ~wait_state() BOOST_NOEXCEPT + { + // All wait and notification operations must have been completed + BOOST_ASSERT(m_notify_semaphores.empty()); + BOOST_ASSERT(m_wait_semaphores.empty()); + + semaphore* sem = m_free_semaphores.eject(); + if (sem) + { + while (true) + { + bool was_last = sem->is_singular(); + semaphore* next = sem->m_next; + sem->unlink(); + + delete sem; + + if (was_last) + break; + + sem = next; + } + } + } + + //! Blocks in the wait operation until notified + void wait(lock_state& state) BOOST_NOEXCEPT; + //! Fallback implementation of wait + void wait_fallback(lock_state& state) BOOST_NOEXCEPT; + + //! Wakes up one thread blocked in the wait operation + void notify_one(lock_state&) BOOST_NOEXCEPT + { + if (m_notify_semaphores.empty()) + { + if (m_wait_semaphores.empty()) + return; + + // Move the semaphore with waiters to the notify list + m_notify_semaphores.push_front(m_wait_semaphores.pop_front()); + } + + semaphore* sem = m_notify_semaphores.front(); + ++sem->m_notify_count; + + if (sem->m_notify_count == sem->m_waiter_count) + { + // Remove this semaphore from the list. The waiter will re-insert it into the waiter or free list once there are no more pending notifications in it. + m_notify_semaphores.erase(sem); + } + + boost::winapi::ReleaseSemaphore(sem->m_semaphore, 1, NULL); + } + + //! Wakes up all threads blocked in the wait operation + void notify_all(lock_state&) BOOST_NOEXCEPT + { + // Combine all notify and waiter semaphores in one list + semaphore* sem = m_notify_semaphores.eject(); + if (sem) + { + if (!m_wait_semaphores.empty()) + { + m_wait_semaphores.eject()->link_before(sem); + } + } + else + { + sem = m_wait_semaphores.eject(); + } + + if (sem) + { + while (true) + { + bool was_last = sem->is_singular(); + semaphore* next = sem->m_next; + sem->unlink(); + + boost::winapi::ULONG_ count = sem->m_waiter_count - sem->m_notify_count; + sem->m_notify_count += count; + + boost::winapi::ReleaseSemaphore(sem->m_semaphore, count, NULL); + + if (was_last) + break; + + sem = next; + } + } + } +}; + +//! Lock pool entry +struct lock_state +{ + //! Mutex + boost::winapi::CRITICAL_SECTION_ m_mutex; + //! Fallback mutex. Used as indicator of critical section initialization state and a fallback mutex, if critical section cannot be initialized. + BOOST_ATOMIC_DETAIL_ALIGNED_VAR(mutex_operations::storage_alignment, mutex_operations::storage_type, m_mutex_fallback); + //! Wait states + wait_state_list m_wait_states; + + //! Locks the mutex for a short duration + void short_lock() BOOST_NOEXCEPT + { + long_lock(); + } + + //! Locks the mutex for a long duration + void long_lock() BOOST_NOEXCEPT + { + mutex_operations::storage_type fallback_state = mutex_operations::load(m_mutex_fallback, boost::memory_order_relaxed); + while (true) + { + if (BOOST_LIKELY(fallback_state == fallback_mutex_bits::critical_section_initialized)) + { + lock_cs: + boost::winapi::EnterCriticalSection(&m_mutex); + return; + } + + while (fallback_state == 0u) + { + if (!mutex_operations::compare_exchange_weak(m_mutex_fallback, fallback_state, fallback_mutex_bits::locked, boost::memory_order_acquire, boost::memory_order_relaxed)) + continue; + + if (BOOST_LIKELY(!!boost::winapi::InitializeCriticalSectionAndSpinCount(&m_mutex, 100u))) + { + mutex_operations::store(m_mutex_fallback, fallback_mutex_bits::critical_section_initialized, boost::memory_order_release); + goto lock_cs; + } + + // We failed to init the critical section, leave the fallback mutex locked and return + return; + } + + if (fallback_state == fallback_mutex_bits::locked) + { + // Wait intil the fallback mutex is unlocked + boost::winapi::SwitchToThread(); + fallback_state = mutex_operations::load(m_mutex_fallback, boost::memory_order_relaxed); + } + } + } + + //! Unlocks the mutex + void unlock() BOOST_NOEXCEPT + { + mutex_operations::storage_type fallback_state = mutex_operations::load(m_mutex_fallback, boost::memory_order_relaxed); + if (BOOST_LIKELY(fallback_state == fallback_mutex_bits::critical_section_initialized)) + { + boost::winapi::LeaveCriticalSection(&m_mutex); + return; + } + + mutex_operations::store(m_mutex_fallback, 0u, boost::memory_order_release); + } +}; + +#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_ALIGNAS) +#define BOOST_ATOMIC_LOCK_STATE_INIT { {}, 0u, BOOST_ATOMIC_WAIT_STATE_LIST_INIT } +#else +#define BOOST_ATOMIC_LOCK_STATE_INIT { {}, { 0u }, BOOST_ATOMIC_WAIT_STATE_LIST_INIT } +#endif + +//! Blocks in the wait operation until notified +inline void wait_state::wait(lock_state& state) BOOST_NOEXCEPT +{ + // Find a semaphore to block on + semaphore* sem = m_wait_semaphores.front(); + if (sem) + { + while (sem->m_waiter_count >= static_cast< boost::winapi::ULONG_ >((std::numeric_limits< boost::winapi::LONG_ >::max)())) + { + if (sem->m_next == m_wait_semaphores.front()) + { + sem = NULL; + break; + } + + sem = sem->m_next; + } + } + + if (!sem) + { + if (BOOST_LIKELY(!m_free_semaphores.empty())) + { + sem = m_free_semaphores.pop_front(); + } + else + { + sem = semaphore::create(); + if (BOOST_UNLIKELY(!sem)) + { + wait_fallback(state); + return; + } + } + + m_wait_semaphores.push_front(sem); + } + + ++sem->m_waiter_count; + + state.unlock(); + + boost::winapi::WaitForSingleObject(sem->m_semaphore, boost::winapi::infinite); + + state.long_lock(); + + --sem->m_waiter_count; + + if (sem->m_notify_count > 0u) + { + // This semaphore is either in the notify list or not in a list at all + if (--sem->m_notify_count == 0u) + { + if (!sem->is_singular() || sem == m_notify_semaphores.front()) + m_notify_semaphores.erase(sem); + + semaphore_list* list = sem->m_waiter_count == 0u ? &m_free_semaphores : &m_wait_semaphores; + list->push_front(sem); + } + } + else if (sem->m_waiter_count == 0u) + { + // Move the semaphore to the free list + m_wait_semaphores.erase(sem); + m_free_semaphores.push_front(sem); + } +} + +//! Fallback implementation of wait +inline void wait_state::wait_fallback(lock_state& state) BOOST_NOEXCEPT +{ + state.unlock(); + + boost::winapi::Sleep(0); + + state.long_lock(); +} + +#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + +#endif + +enum +{ + tail_size = sizeof(lock_state) % BOOST_ATOMIC_CACHE_LINE_SIZE, + padding_size = tail_size > 0 ? BOOST_ATOMIC_CACHE_LINE_SIZE - tail_size : 0u +}; + +template< unsigned int PaddingSize > +struct BOOST_ALIGNMENT(BOOST_ATOMIC_CACHE_LINE_SIZE) padded_lock_state +{ + lock_state state; + // The additional padding is needed to avoid false sharing between locks + char padding[PaddingSize]; +}; + +template< > +struct BOOST_ALIGNMENT(BOOST_ATOMIC_CACHE_LINE_SIZE) padded_lock_state< 0u > +{ + lock_state state; +}; + +typedef padded_lock_state< padding_size > padded_lock_state_t; + +#if !defined(BOOST_ATOMIC_LOCK_POOL_SIZE_LOG2) +#define BOOST_ATOMIC_LOCK_POOL_SIZE_LOG2 8 +#endif +#if (BOOST_ATOMIC_LOCK_POOL_SIZE_LOG2) < 0 +#error "Boost.Atomic: BOOST_ATOMIC_LOCK_POOL_SIZE_LOG2 macro value is negative" +#endif +#define BOOST_ATOMIC_DETAIL_LOCK_POOL_SIZE (1ull << (BOOST_ATOMIC_LOCK_POOL_SIZE_LOG2)) + +//! Lock pool size. Must be a power of two. +BOOST_CONSTEXPR_OR_CONST std::size_t lock_pool_size = static_cast< std::size_t >(1u) << (BOOST_ATOMIC_LOCK_POOL_SIZE_LOG2); + +static padded_lock_state_t g_lock_pool[lock_pool_size] = +{ +#if BOOST_ATOMIC_DETAIL_LOCK_POOL_SIZE > 256u +#if (BOOST_ATOMIC_DETAIL_LOCK_POOL_SIZE / 256u) > BOOST_PP_LIMIT_ITERATION +#error "Boost.Atomic: BOOST_ATOMIC_LOCK_POOL_SIZE_LOG2 macro value is too large" +#endif +#define BOOST_PP_ITERATION_PARAMS_1 (3, (1, (BOOST_ATOMIC_DETAIL_LOCK_POOL_SIZE / 256u), "lock_pool_init256.ipp")) +#else // BOOST_ATOMIC_DETAIL_LOCK_POOL_SIZE > 256u +#define BOOST_PP_ITERATION_PARAMS_1 (3, (1, BOOST_ATOMIC_DETAIL_LOCK_POOL_SIZE, "lock_pool_init1.ipp")) +#endif // BOOST_ATOMIC_DETAIL_LOCK_POOL_SIZE > 256u +#include BOOST_PP_ITERATE() +#undef BOOST_PP_ITERATION_PARAMS_1 +}; + +//! Pool cleanup function +void cleanup_lock_pool() +{ + for (std::size_t i = 0u; i < lock_pool_size; ++i) + { + lock_state& state = g_lock_pool[i].state; + state.long_lock(); + state.m_wait_states.m_free_memory = true; + state.m_wait_states.free_spare(); + state.unlock(); + } +} + +BOOST_STATIC_ASSERT_MSG(once_flag_operations::is_always_lock_free, "Boost.Atomic unsupported target platform: native atomic operations not implemented for bytes"); +static once_flag g_pool_cleanup_registered = {}; + +//! Returns index of the lock pool entry for the given pointer value +BOOST_FORCEINLINE std::size_t get_lock_index(atomics::detail::uintptr_t h) BOOST_NOEXCEPT +{ + return h & (lock_pool_size - 1u); +} + +//! Finds an existing element with the given pointer to the atomic object or allocates a new one +inline wait_state* wait_state_list::find_or_create(const volatile void* addr) BOOST_NOEXCEPT +{ + if (BOOST_UNLIKELY(m_header == NULL)) + { + m_header = allocate_buffer(initial_capacity); + if (BOOST_UNLIKELY(m_header == NULL)) + return NULL; + } + else + { + wait_state* ws = this->find(addr); + if (BOOST_LIKELY(ws != NULL)) + return ws; + + if (BOOST_UNLIKELY(m_header->size == m_header->capacity)) + { + header* new_header = allocate_buffer(m_header->capacity * 2u, m_header); + if (BOOST_UNLIKELY(new_header == NULL)) + return NULL; + boost::alignment::aligned_free(static_cast< void* >(m_header)); + m_header = new_header; + } + } + + const std::size_t index = m_header->size; + BOOST_ASSERT(index < m_header->capacity); + + wait_state** pw = get_wait_states() + index; + wait_state* w = *pw; + if (BOOST_UNLIKELY(w == NULL)) + { + w = new (std::nothrow) wait_state(index); + if (BOOST_UNLIKELY(w == NULL)) + return NULL; + *pw = w; + } + + get_atomic_pointers()[index] = addr; + + ++m_header->size; + + return w; +} + +//! Releases the previously created wait state +inline void wait_state_list::erase(wait_state* w) BOOST_NOEXCEPT +{ + BOOST_ASSERT(m_header != NULL); + + const volatile void** pa = get_atomic_pointers(); + wait_state** pw = get_wait_states(); + + std::size_t index = w->m_index; + + BOOST_ASSERT(index < m_header->size); + BOOST_ASSERT(pw[index] == w); + + std::size_t last_index = m_header->size - 1u; + + if (index != last_index) + { + pa[index] = pa[last_index]; + pa[last_index] = NULL; + + wait_state* last_w = pw[last_index]; + pw[index] = last_w; + pw[last_index] = w; + + last_w->m_index = index; + w->m_index = last_index; + } + else + { + pa[index] = NULL; + } + + --m_header->size; + + if (BOOST_UNLIKELY(m_free_memory)) + free_spare(); +} + +//! Allocates new buffer for the list entries +wait_state_list::header* wait_state_list::allocate_buffer(std::size_t new_capacity, header* old_header) BOOST_NOEXCEPT +{ + if (BOOST_UNLIKELY(once_flag_operations::load(g_pool_cleanup_registered.m_flag, boost::memory_order_relaxed) == 0u)) + { + if (once_flag_operations::exchange(g_pool_cleanup_registered.m_flag, 1u, boost::memory_order_relaxed) == 0u) + std::atexit(&cleanup_lock_pool); + } + + const std::size_t new_buffer_size = entries_offset + new_capacity * sizeof(void*) * 2u; + + void* p = boost::alignment::aligned_alloc(buffer_alignment, new_buffer_size); + if (BOOST_UNLIKELY(p == NULL)) + return NULL; + + header* h = new (p) header; + const volatile void** a = new (get_atomic_pointers(h)) const volatile void*[new_capacity]; + wait_state** w = new (get_wait_states(a, new_capacity)) wait_state*[new_capacity]; + + if (BOOST_LIKELY(old_header != NULL)) + { + BOOST_ASSERT(new_capacity >= old_header->capacity); + + h->size = old_header->size; + + const volatile void** old_a = get_atomic_pointers(old_header); + std::memcpy(a, old_a, old_header->size * sizeof(const volatile void*)); + std::memset(a + old_header->size * sizeof(const volatile void*), 0, (new_capacity - old_header->size) * sizeof(const volatile void*)); + + wait_state** old_w = get_wait_states(old_a, old_header->capacity); + std::memcpy(w, old_w, old_header->capacity * sizeof(wait_state*)); // copy spare wait state pointers + std::memset(w + old_header->capacity * sizeof(wait_state*), 0, (new_capacity - old_header->capacity) * sizeof(wait_state*)); + } + else + { + std::memset(p, 0, new_buffer_size); + } + + h->capacity = new_capacity; + + return h; +} + +//! Deallocates spare entries and the list buffer if no allocated entries are left +void wait_state_list::free_spare() BOOST_NOEXCEPT +{ + if (BOOST_LIKELY(m_header != NULL)) + { + wait_state** ws = get_wait_states(); + for (std::size_t i = m_header->size, n = m_header->capacity; i < n; ++i) + { + wait_state* w = ws[i]; + if (!w) + break; + + delete w; + ws[i] = NULL; + } + + if (m_header->size == 0u) + { + boost::alignment::aligned_free(static_cast< void* >(m_header)); + m_header = NULL; + } + } +} + +} // namespace + + +BOOST_ATOMIC_DECL void* short_lock(atomics::detail::uintptr_t h) BOOST_NOEXCEPT +{ + lock_state& ls = g_lock_pool[get_lock_index(h)].state; + ls.short_lock(); + return &ls; +} + +BOOST_ATOMIC_DECL void* long_lock(atomics::detail::uintptr_t h) BOOST_NOEXCEPT +{ + lock_state& ls = g_lock_pool[get_lock_index(h)].state; + ls.long_lock(); + return &ls; +} + +BOOST_ATOMIC_DECL void unlock(void* vls) BOOST_NOEXCEPT +{ + static_cast< lock_state* >(vls)->unlock(); +} + + +BOOST_ATOMIC_DECL void* allocate_wait_state(void* vls, const volatile void* addr) BOOST_NOEXCEPT +{ + BOOST_ASSERT(vls != NULL); + + lock_state* ls = static_cast< lock_state* >(vls); + + // Note: find_or_create may fail to allocate memory. However, C++20 specifies that wait/notify operations + // are noexcept, so allocate_wait_state must succeed. To implement this we return NULL in case of failure and test for NULL + // in other wait/notify functions so that all of them become nop (which is a conforming, though inefficient behavior). + wait_state* ws = ls->m_wait_states.find_or_create(addr); + + if (BOOST_LIKELY(ws != NULL)) + ++ws->m_ref_count; + + return ws; +} + +BOOST_ATOMIC_DECL void free_wait_state(void* vls, void* vws) BOOST_NOEXCEPT +{ + BOOST_ASSERT(vls != NULL); + + wait_state* ws = static_cast< wait_state* >(vws); + if (BOOST_LIKELY(ws != NULL)) + { + if (--ws->m_ref_count == 0u) + { + lock_state* ls = static_cast< lock_state* >(vls); + ls->m_wait_states.erase(ws); + } + } +} + +BOOST_ATOMIC_DECL void wait(void* vls, void* vws) BOOST_NOEXCEPT +{ + BOOST_ASSERT(vls != NULL); + + lock_state* ls = static_cast< lock_state* >(vls); + wait_state* ws = static_cast< wait_state* >(vws); + if (BOOST_LIKELY(ws != NULL)) + { + ws->wait(*ls); + } + else + { + // A conforming wait operation must unlock and lock the mutex to allow a notify to complete + ls->unlock(); + atomics::detail::wait_some(); + ls->long_lock(); + } +} + +BOOST_ATOMIC_DECL void notify_one(void* vls, const volatile void* addr) BOOST_NOEXCEPT +{ + BOOST_ASSERT(vls != NULL); + + lock_state* ls = static_cast< lock_state* >(vls); + wait_state* ws = ls->m_wait_states.find(addr); + if (BOOST_LIKELY(ws != NULL)) + ws->notify_one(*ls); +} + +BOOST_ATOMIC_DECL void notify_all(void* vls, const volatile void* addr) BOOST_NOEXCEPT +{ + BOOST_ASSERT(vls != NULL); + + lock_state* ls = static_cast< lock_state* >(vls); + wait_state* ws = ls->m_wait_states.find(addr); + if (BOOST_LIKELY(ws != NULL)) + ws->notify_all(*ls); +} + + +BOOST_ATOMIC_DECL void thread_fence() BOOST_NOEXCEPT +{ +#if BOOST_ATOMIC_THREAD_FENCE == 2 + atomics::detail::fence_operations::thread_fence(memory_order_seq_cst); +#else + // Emulate full fence by locking/unlocking a mutex + lock_pool::unlock(lock_pool::short_lock(0u)); +#endif +} + +BOOST_ATOMIC_DECL void signal_fence() BOOST_NOEXCEPT +{ + // This function is intentionally non-inline, even if empty. This forces the compiler to treat its call as a compiler barrier. +#if BOOST_ATOMIC_SIGNAL_FENCE == 2 + atomics::detail::fence_operations::signal_fence(memory_order_seq_cst); +#endif +} + +} // namespace lock_pool +} // namespace detail +} // namespace atomics +} // namespace boost + +#include diff --git a/src/boost/libs/atomic/src/lock_pool_init1.ipp b/src/boost/libs/atomic/src/lock_pool_init1.ipp new file mode 100644 index 000000000..305b70347 --- /dev/null +++ b/src/boost/libs/atomic/src/lock_pool_init1.ipp @@ -0,0 +1,13 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ + +#if BOOST_PP_ITERATION() > 1 +, +#endif + +{ BOOST_ATOMIC_LOCK_STATE_INIT } diff --git a/src/boost/libs/atomic/src/lock_pool_init256.ipp b/src/boost/libs/atomic/src/lock_pool_init256.ipp new file mode 100644 index 000000000..e39c54f7e --- /dev/null +++ b/src/boost/libs/atomic/src/lock_pool_init256.ipp @@ -0,0 +1,79 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ + +#if BOOST_PP_ITERATION() > 1 +, +#endif + +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, + +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, + +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, + +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, +{ BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT }, { BOOST_ATOMIC_LOCK_STATE_INIT } diff --git a/src/boost/libs/atomic/src/wait_on_address.cpp b/src/boost/libs/atomic/src/wait_on_address.cpp new file mode 100644 index 000000000..9abb05377 --- /dev/null +++ b/src/boost/libs/atomic/src/wait_on_address.cpp @@ -0,0 +1,113 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file wait_on_address.cpp + * + * This file contains implementation of runtime detection of \c WaitOnAddress and related APIs on Windows. + * + * https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-waitonaddress + * https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-wakebyaddresssingle + * https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-wakebyaddressall + */ + +// Include boost/winapi/config.hpp first to make sure target Windows version is selected by Boost.WinAPI +#include + +#include + +#include +#include +#include +#include + +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +#include +#include +#include +#include +#include + +#include + +#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +#include + +namespace boost { +namespace atomics { +namespace detail { + +BOOST_ATOMIC_DECL wait_on_address_t* wait_on_address = NULL; +BOOST_ATOMIC_DECL wake_by_address_t* wake_by_address_single = NULL; +BOOST_ATOMIC_DECL wake_by_address_t* wake_by_address_all = NULL; + +#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +BOOST_ATOMIC_DECL once_flag wait_functions_once_flag = { 2u }; + +BOOST_ATOMIC_DECL void initialize_wait_functions() BOOST_NOEXCEPT +{ + BOOST_STATIC_ASSERT_MSG(once_flag_operations::is_always_lock_free, "Boost.Atomic unsupported target platform: native atomic operations not implemented for bytes"); + + once_flag_operations::storage_type old_val = once_flag_operations::load(wait_functions_once_flag.m_flag, boost::memory_order_acquire); + while (true) + { + if (old_val == 2u) + { + if (BOOST_UNLIKELY(!once_flag_operations::compare_exchange_strong(wait_functions_once_flag.m_flag, old_val, 1u, boost::memory_order_relaxed, boost::memory_order_relaxed))) + continue; + + boost::winapi::HMODULE_ kernel_base = boost::winapi::get_module_handle(L"api-ms-win-core-synch-l1-2-0.dll"); + if (BOOST_LIKELY(kernel_base != NULL)) + { + wait_on_address_t* woa = (wait_on_address_t*)boost::winapi::get_proc_address(kernel_base, "WaitOnAddress"); + if (BOOST_LIKELY(woa != NULL)) + { + wake_by_address_t* wbas = (wake_by_address_t*)boost::winapi::get_proc_address(kernel_base, "WakeByAddressSingle"); + wake_by_address_t* wbaa = (wake_by_address_t*)boost::winapi::get_proc_address(kernel_base, "WakeByAddressAll"); + + if (BOOST_LIKELY(wbas != NULL && wbaa != NULL)) + { + wait_on_address = woa; + wake_by_address_single = wbas; + wake_by_address_all = wbaa; + } + } + } + + once_flag_operations::store(wait_functions_once_flag.m_flag, 0u, boost::memory_order_release); + break; + } + else if (old_val == 1u) + { + boost::winapi::SwitchToThread(); + old_val = once_flag_operations::load(wait_functions_once_flag.m_flag, boost::memory_order_acquire); + } + else + { + break; + } + } +} + +#else // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +BOOST_ATOMIC_DECL once_flag wait_functions_once_flag = { 0u }; + +BOOST_ATOMIC_DECL void initialize_wait_functions() BOOST_NOEXCEPT +{ +} + +#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include diff --git a/src/boost/libs/atomic/src/x86_vector_tools.hpp b/src/boost/libs/atomic/src/x86_vector_tools.hpp new file mode 100644 index 000000000..2aaef7664 --- /dev/null +++ b/src/boost/libs/atomic/src/x86_vector_tools.hpp @@ -0,0 +1,52 @@ +/* + * 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) + * + * Copyright (c) 2020 Andrey Semashev + */ +/*! + * \file x86_vector_tools.hpp + * + * This file contains common tools for x86 vectorization + */ + +#ifndef BOOST_ATOMIC_X86_VECTOR_TOOLS_HPP_INCLUDED_ +#define BOOST_ATOMIC_X86_VECTOR_TOOLS_HPP_INCLUDED_ + +#include +#include + +#if BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8) + +#include +#include +#include +#include + +#include + +namespace boost { +namespace atomics { +namespace detail { + +BOOST_FORCEINLINE __m128i mm_set1_epiptr(uintptr_t ptr) +{ +#if !defined(_MSC_VER) || _MSC_FULL_VER >= 190024210 + return _mm_set1_epi64x(ptr); +#else + // MSVC up until 14.0 update 3 doesn't provide _mm_set1_epi64x + uint32_t lo = static_cast< uint32_t >(ptr), hi = static_cast< uint32_t >(ptr >> 32); + return _mm_set_epi32(hi, lo, hi, lo); +#endif +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#include + +#endif // BOOST_ARCH_X86 && defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER == 8) + +#endif // BOOST_ATOMIC_X86_VECTOR_TOOLS_HPP_INCLUDED_ diff --git a/src/boost/libs/filesystem/config/Jamfile.v2 b/src/boost/libs/filesystem/config/Jamfile.v2 new file mode 100644 index 000000000..98a22fd72 --- /dev/null +++ b/src/boost/libs/filesystem/config/Jamfile.v2 @@ -0,0 +1,48 @@ +# +# Copyright Andrey Semashev 2020 - 2021. +# 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) +# + +obj has_attribute_init_priority : has_attribute_init_priority.cpp : ../src ; +explicit has_attribute_init_priority ; +obj has_cxx20_atomic_ref : has_cxx20_atomic_ref.cpp : ../src ; +explicit has_cxx20_atomic_ref ; +obj has_stat_st_blksize : has_stat_st_blksize.cpp : ../src ; +explicit has_stat_st_blksize ; +obj has_stat_st_mtim : has_stat_st_mtim.cpp : ../src ; +explicit has_stat_st_mtim ; +obj has_stat_st_mtimensec : has_stat_st_mtimensec.cpp : ../src ; +explicit has_stat_st_mtimensec ; +obj has_stat_st_mtimespec : has_stat_st_mtimespec.cpp : ../src ; +explicit has_stat_st_mtimespec ; +obj has_statx : has_statx.cpp : ../src ; +explicit has_statx ; +obj has_statx_syscall : has_statx_syscall.cpp : ../src ; +explicit has_statx_syscall ; +obj has_stat_st_birthtim : has_stat_st_birthtim.cpp : ../src ; +explicit has_stat_st_birthtim ; +obj has_stat_st_birthtimensec : has_stat_st_birthtimensec.cpp : ../src ; +explicit has_stat_st_birthtimensec ; +obj has_stat_st_birthtimespec : has_stat_st_birthtimespec.cpp : ../src ; +explicit has_stat_st_birthtimespec ; +obj has_fdopendir_nofollow : has_fdopendir_nofollow.cpp : ../src ; +explicit has_fdopendir_nofollow ; +obj has_dirent_d_type : has_dirent_d_type.cpp : ../src ; +explicit has_dirent_d_type ; +obj has_posix_at_apis : has_posix_at_apis.cpp : ../src ; +explicit has_posix_at_apis ; + +lib bcrypt ; +explicit bcrypt ; + +exe has_bcrypt : has_bcrypt.cpp : ../src bcrypt ; +explicit has_bcrypt ; +obj is_windows_ce : is_windows_ce.cpp ; +explicit is_windows_ce ; + +lib has_linkflag_no_undefined : has_linkflag_no_undefined.cpp : shared "-Wl,--no-undefined" ; +explicit has_linkflag_no_undefined ; +lib has_linkflag_undefined_error : has_linkflag_no_undefined.cpp : shared "-Wl,-undefined,error" ; +explicit has_linkflag_undefined_error ; diff --git a/src/boost/libs/filesystem/config/has_attribute_init_priority.cpp b/src/boost/libs/filesystem/config/has_attribute_init_priority.cpp new file mode 100644 index 000000000..ba847f026 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_attribute_init_priority.cpp @@ -0,0 +1,20 @@ +// Copyright 2021 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +struct global_class +{ + global_class() {} + ~global_class() {} +}; + +__attribute__ ((init_priority(32767))) +global_class g_object; + +int main() +{ + return 0; +} diff --git a/src/boost/libs/filesystem/config/has_bcrypt.cpp b/src/boost/libs/filesystem/config/has_bcrypt.cpp new file mode 100644 index 000000000..28038d60f --- /dev/null +++ b/src/boost/libs/filesystem/config/has_bcrypt.cpp @@ -0,0 +1,34 @@ +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +// Include platform_config.hpp first so that windows.h is guaranteed to be not included +#include "platform_config.hpp" + +#include +#include +#if !BOOST_OS_WINDOWS && !BOOST_OS_CYGWIN +#error "This config test is for Windows only" +#endif + +#include +#include +#if !(BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 && BOOST_WINAPI_PARTITION_APP_SYSTEM) +#error "No BCrypt API" +#endif + +#include +#include +#include + +int main() +{ + unsigned char buf[16] = {}; + boost::winapi::BCRYPT_ALG_HANDLE_ handle; + boost::winapi::NTSTATUS_ status = boost::winapi::BCryptOpenAlgorithmProvider(&handle, boost::winapi::BCRYPT_RNG_ALGORITHM_, NULL, 0); + status = boost::winapi::BCryptGenRandom(handle, reinterpret_cast< boost::winapi::PUCHAR_ >(static_cast< unsigned char* >(buf)), static_cast< boost::winapi::ULONG_ >(sizeof(buf)), 0); + boost::winapi::BCryptCloseAlgorithmProvider(handle, 0); +} diff --git a/src/boost/libs/filesystem/config/has_cxx20_atomic_ref.cpp b/src/boost/libs/filesystem/config/has_cxx20_atomic_ref.cpp new file mode 100644 index 000000000..2de6daaf8 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_cxx20_atomic_ref.cpp @@ -0,0 +1,19 @@ +// Copyright 2021 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include + +typedef void func_t(); + +int main() +{ + func_t* func = 0; + std::atomic_ref< func_t* > ref(func); + ref.load(std::memory_order_relaxed); + ref.store((func_t*)0, std::memory_order_relaxed); + return 0; +} diff --git a/src/boost/libs/filesystem/config/has_dirent_d_type.cpp b/src/boost/libs/filesystem/config/has_dirent_d_type.cpp new file mode 100644 index 000000000..5c0ad3a52 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_dirent_d_type.cpp @@ -0,0 +1,39 @@ +// Copyright 2023 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include + +int main() +{ + DIR* dir = opendir("."); + dirent* ent = readdir(dir); + switch (ent->d_type) + { + case DT_REG: + break; + case DT_DIR: + break; + case DT_LNK: + break; + case DT_SOCK: + break; + case DT_FIFO: + break; + case DT_BLK: + break; + case DT_CHR: + break; + case DT_UNKNOWN: + break; + default: + break; + } + return 0; +} diff --git a/src/boost/libs/filesystem/config/has_fdopendir_nofollow.cpp b/src/boost/libs/filesystem/config/has_fdopendir_nofollow.cpp new file mode 100644 index 000000000..411bde444 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_fdopendir_nofollow.cpp @@ -0,0 +1,20 @@ +// Copyright 2022 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include +#include + +int main() +{ + int fd = open(".", O_DIRECTORY | O_RDONLY | O_NOFOLLOW); + DIR* dir = fdopendir(fd); + return dir != 0; +} diff --git a/src/boost/libs/filesystem/config/has_linkflag_no_undefined.cpp b/src/boost/libs/filesystem/config/has_linkflag_no_undefined.cpp new file mode 100644 index 000000000..b2115d15b --- /dev/null +++ b/src/boost/libs/filesystem/config/has_linkflag_no_undefined.cpp @@ -0,0 +1,27 @@ +// Copyright 2023 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#if defined(_MSC_VER) +// MSVC's link.exe does not support -Wl,... flags, but doesn't fail the linking. +// The linker may be used by different compilers, not only MSVC. +// Luckily, those compilers all pretend to be MSVC. +#error "MSVC and compatible compilers don't support -Wl,... flags" +#endif + +#if defined(__OpenBSD__) +// On OpenBSD, shared libraries are not linked to libc, as there are multiple +// libc versions installed, and loading multiple different versions into the +// process is considered dangerous. Only the main executable is linked against +// one of them, which will be used by all shared libraries loaded into the +// process. This renders -Wl,--no-undefined unusable for shared libraries. +#error "-Wl,--no-undefined is broken for shared libraries on OpenBSD" +#endif + +int main() +{ + return 0; +} diff --git a/src/boost/libs/filesystem/config/has_posix_at_apis.cpp b/src/boost/libs/filesystem/config/has_posix_at_apis.cpp new file mode 100644 index 000000000..1c7fd9b26 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_posix_at_apis.cpp @@ -0,0 +1,41 @@ +// Copyright 2022 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include +#include +#include + +int main() +{ + int fd1 = openat(AT_FDCWD, "foo", O_DIRECTORY | O_RDONLY); + int fd2 = openat(fd1, "bar", O_DIRECTORY | O_RDONLY); + int res = unlinkat(fd2, "zoo", 0); + res |= unlinkat(fd1, "bar", AT_REMOVEDIR); + res |= renameat(AT_FDCWD, "x", fd1, "y"); + + struct stat st; + res |= fstatat(fd1, "y", &st, AT_NO_AUTOMOUNT | AT_SYMLINK_NOFOLLOW); + + res |= linkat(fd1, "y", fd1, "z", 0); + res |= symlinkat("foo/z", fd1, "sz"); + + char buf[128u]; + res |= readlinkat(fd1, "sz", buf, sizeof(buf)); + + res |= mkdirat(fd1, "dir", S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH); + + res |= fchmodat(fd1, "x", S_IRUSR | S_IWUSR, 0); + + struct timespec times[2] = {}; + res |= utimensat(fd1, "x", times, AT_SYMLINK_NOFOLLOW); + + return res != 0; +} diff --git a/src/boost/libs/filesystem/config/has_stat_st_birthtim.cpp b/src/boost/libs/filesystem/config/has_stat_st_birthtim.cpp new file mode 100644 index 000000000..653c98945 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_stat_st_birthtim.cpp @@ -0,0 +1,19 @@ +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include + +int main() +{ + struct stat st; + st.st_birthtim.tv_sec = 1; + st.st_birthtim.tv_nsec = 10; +} diff --git a/src/boost/libs/filesystem/config/has_stat_st_birthtimensec.cpp b/src/boost/libs/filesystem/config/has_stat_st_birthtimensec.cpp new file mode 100644 index 000000000..c6cc9e363 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_stat_st_birthtimensec.cpp @@ -0,0 +1,19 @@ +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include + +int main() +{ + struct stat st; + st.st_birthtime = 1; + st.st_birthtimensec = 10; +} diff --git a/src/boost/libs/filesystem/config/has_stat_st_birthtimespec.cpp b/src/boost/libs/filesystem/config/has_stat_st_birthtimespec.cpp new file mode 100644 index 000000000..f18b5b1e0 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_stat_st_birthtimespec.cpp @@ -0,0 +1,19 @@ +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include + +int main() +{ + struct stat st; + st.st_birthtimespec.tv_sec = 1; + st.st_birthtimespec.tv_nsec = 10; +} diff --git a/src/boost/libs/filesystem/config/has_stat_st_blksize.cpp b/src/boost/libs/filesystem/config/has_stat_st_blksize.cpp new file mode 100644 index 000000000..d770cdc6b --- /dev/null +++ b/src/boost/libs/filesystem/config/has_stat_st_blksize.cpp @@ -0,0 +1,18 @@ +// Copyright 2021 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include + +int main() +{ + struct stat st; + st.st_blksize = 10; +} diff --git a/src/boost/libs/filesystem/config/has_stat_st_mtim.cpp b/src/boost/libs/filesystem/config/has_stat_st_mtim.cpp new file mode 100644 index 000000000..dcce2c18f --- /dev/null +++ b/src/boost/libs/filesystem/config/has_stat_st_mtim.cpp @@ -0,0 +1,18 @@ +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include + +int main() +{ + struct stat st; + st.st_mtim.tv_nsec = 10; +} diff --git a/src/boost/libs/filesystem/config/has_stat_st_mtimensec.cpp b/src/boost/libs/filesystem/config/has_stat_st_mtimensec.cpp new file mode 100644 index 000000000..e916b72e7 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_stat_st_mtimensec.cpp @@ -0,0 +1,18 @@ +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include + +int main() +{ + struct stat st; + st.st_mtimensec = 10; +} diff --git a/src/boost/libs/filesystem/config/has_stat_st_mtimespec.cpp b/src/boost/libs/filesystem/config/has_stat_st_mtimespec.cpp new file mode 100644 index 000000000..801914e40 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_stat_st_mtimespec.cpp @@ -0,0 +1,18 @@ +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include + +int main() +{ + struct stat st; + st.st_mtimespec.tv_nsec = 10; +} diff --git a/src/boost/libs/filesystem/config/has_statx.cpp b/src/boost/libs/filesystem/config/has_statx.cpp new file mode 100644 index 000000000..027e0815c --- /dev/null +++ b/src/boost/libs/filesystem/config/has_statx.cpp @@ -0,0 +1,21 @@ +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include +#include + +int main() +{ + struct statx st; + int res = statx(AT_FDCWD, ".", AT_SYMLINK_NOFOLLOW | AT_NO_AUTOMOUNT, STATX_BTIME, &st); + st.stx_btime.tv_sec = 1; + st.stx_btime.tv_nsec = 10; +} diff --git a/src/boost/libs/filesystem/config/has_statx_syscall.cpp b/src/boost/libs/filesystem/config/has_statx_syscall.cpp new file mode 100644 index 000000000..605c46ec6 --- /dev/null +++ b/src/boost/libs/filesystem/config/has_statx_syscall.cpp @@ -0,0 +1,35 @@ +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include + +// Note: Include other libc headers for stat() as well to ensure there is no conflict between +// Linux kernel headers and libc headers. +#include +#include +#include +#include + +#if defined(__ANDROID__) && (__ANDROID_API__ < 30) +// Even though statx syscall number is defined, it is blacklisted by seccomp in runtime until Android 11 +#error "statx syscall is not supported until Android 11" +#endif + +#if !defined(__NR_statx) +#error "No statx syscall" +#endif + +int main() +{ + struct statx st; + int res = syscall(__NR_statx, AT_FDCWD, ".", AT_SYMLINK_NOFOLLOW | AT_NO_AUTOMOUNT, STATX_BTIME, &st); + st.stx_btime.tv_sec = 1; + st.stx_btime.tv_nsec = 10; +} diff --git a/src/boost/libs/filesystem/config/is_windows_ce.cpp b/src/boost/libs/filesystem/config/is_windows_ce.cpp new file mode 100644 index 000000000..c4c2500fc --- /dev/null +++ b/src/boost/libs/filesystem/config/is_windows_ce.cpp @@ -0,0 +1,14 @@ +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#if !defined(_WIN32_WCE) +#error "This is not Windows CE" +#endif + +int main() +{ +} diff --git a/src/boost/libs/filesystem/src/atomic_ref.hpp b/src/boost/libs/filesystem/src/atomic_ref.hpp new file mode 100644 index 000000000..d117e11f4 --- /dev/null +++ b/src/boost/libs/filesystem/src/atomic_ref.hpp @@ -0,0 +1,32 @@ +// atomic.hpp ------------------------------------------------------------------------// + +// Copyright 2021 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +//--------------------------------------------------------------------------------------// + +#ifndef BOOST_FILESYSTEM_SRC_ATOMIC_REF_HPP_ +#define BOOST_FILESYSTEM_SRC_ATOMIC_REF_HPP_ + +#include + +#if !defined(BOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF) + +#include + +namespace atomic_ns = std; + +#else // !defined(BOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF) + +#include +#include + +namespace atomic_ns = boost; + +#endif // !defined(BOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF) + +#endif // BOOST_FILESYSTEM_SRC_ATOMIC_REF_HPP_ diff --git a/src/boost/libs/filesystem/src/atomic_tools.hpp b/src/boost/libs/filesystem/src/atomic_tools.hpp new file mode 100644 index 000000000..37fd11684 --- /dev/null +++ b/src/boost/libs/filesystem/src/atomic_tools.hpp @@ -0,0 +1,69 @@ +// atomic_tools.hpp ------------------------------------------------------------------// + +// Copyright 2021 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +//--------------------------------------------------------------------------------------// + +#ifndef BOOST_FILESYSTEM_SRC_ATOMIC_TOOLS_HPP_ +#define BOOST_FILESYSTEM_SRC_ATOMIC_TOOLS_HPP_ + +#include + +#if !defined(BOOST_FILESYSTEM_SINGLE_THREADED) + +#include "atomic_ref.hpp" + +namespace boost { +namespace filesystem { +namespace detail { + +//! Atomically loads the value +template< typename T > +BOOST_FORCEINLINE T atomic_load_relaxed(T& a) +{ + return atomic_ns::atomic_ref< T >(a).load(atomic_ns::memory_order_relaxed); +} + +//! Atomically stores the value +template< typename T > +BOOST_FORCEINLINE void atomic_store_relaxed(T& a, T val) +{ + atomic_ns::atomic_ref< T >(a).store(val, atomic_ns::memory_order_relaxed); +} + +} // namespace detail +} // namespace filesystem +} // namespace boost + +#else // !defined(BOOST_FILESYSTEM_SINGLE_THREADED) + +namespace boost { +namespace filesystem { +namespace detail { + +//! Atomically loads the value +template< typename T > +BOOST_FORCEINLINE T atomic_load_relaxed(T const& a) +{ + return a; +} + +//! Atomically stores the value +template< typename T > +BOOST_FORCEINLINE void atomic_store_relaxed(T& a, T val) +{ + a = val; +} + +} // namespace detail +} // namespace filesystem +} // namespace boost + +#endif // !defined(BOOST_FILESYSTEM_SINGLE_THREADED) + +#endif // BOOST_FILESYSTEM_SRC_ATOMIC_TOOLS_HPP_ diff --git a/src/boost/libs/filesystem/src/codecvt_error_category.cpp b/src/boost/libs/filesystem/src/codecvt_error_category.cpp index e2a486382..196a20b5d 100644 --- a/src/boost/libs/filesystem/src/codecvt_error_category.cpp +++ b/src/boost/libs/filesystem/src/codecvt_error_category.cpp @@ -1,6 +1,7 @@ // codecvt_error_category implementation file ----------------------------------------// -// Copyright Beman Dawes 2009 +// Copyright 2009 Beman Dawes +// Copyright 2022 Andrey Semashev // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt) @@ -9,76 +10,111 @@ //--------------------------------------------------------------------------------------// -#include - -// define BOOST_FILESYSTEM_SOURCE so that knows -// the library is being built (possibly exporting rather than importing code) -#define BOOST_FILESYSTEM_SOURCE +#include "platform_config.hpp" -#ifndef BOOST_SYSTEM_NO_DEPRECATED -# define BOOST_SYSTEM_NO_DEPRECATED -#endif +#include #include -#include -#include +#include +#include #include -#include -#include -#include +#include + +#include "private_config.hpp" + +#include // must be the last #include //--------------------------------------------------------------------------------------// -namespace +namespace boost { +namespace filesystem { + +namespace { + +#if (defined(BOOST_GCC) && BOOST_GCC >= 40600) || defined(BOOST_CLANG) +#pragma GCC diagnostic push +// '(anonymous namespace)::codecvt_error_cat' has virtual functions but non-virtual destructor +// This is not a problem as instances of codecvt_error_cat are never destroyed through a pointer to base. +#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#endif + +class codecvt_error_cat BOOST_FINAL : + public boost::system::error_category +{ +public: + // clang up to version 3.8 requires a user-defined default constructor in order to be able to declare a static constant of the error category. + BOOST_SYSTEM_CONSTEXPR codecvt_error_cat() BOOST_NOEXCEPT {} + const char* name() const BOOST_NOEXCEPT BOOST_OVERRIDE; + std::string message(int ev) const BOOST_OVERRIDE; +}; + +const char* codecvt_error_cat::name() const BOOST_NOEXCEPT { - class codecvt_error_cat : public boost::system::error_category - { - public: - codecvt_error_cat(){} - const char* name() const BOOST_SYSTEM_NOEXCEPT; - std::string message(int ev) const; - }; - - const char* codecvt_error_cat::name() const BOOST_SYSTEM_NOEXCEPT - { return "codecvt"; - } +} - std::string codecvt_error_cat::message(int ev) const - { +std::string codecvt_error_cat::message(int ev) const +{ std::string str; switch (ev) { case std::codecvt_base::ok: - str = "ok"; - break; + str = "ok"; + break; case std::codecvt_base::partial: - str = "partial"; - break; + str = "partial"; + break; case std::codecvt_base::error: - str = "error"; - break; + str = "error"; + break; case std::codecvt_base::noconv: - str = "noconv"; - break; + str = "noconv"; + break; default: - str = "unknown error"; + str = "unknown error"; + break; } return str; - } +} + +#if (defined(BOOST_GCC) && BOOST_GCC >= 40600) || defined(BOOST_CLANG) +#pragma GCC diagnostic pop +#endif } // unnamed namespace -namespace boost +BOOST_FILESYSTEM_DECL boost::system::error_category const& codecvt_error_category() BOOST_NOEXCEPT { - namespace filesystem - { + static +#if defined(BOOST_SYSTEM_HAS_CONSTEXPR) + constexpr +#else + const +#endif + codecvt_error_cat codecvt_error_cat_const; + return codecvt_error_cat_const; +} - BOOST_FILESYSTEM_DECL const boost::system::error_category& codecvt_error_category() - { - static const codecvt_error_cat codecvt_error_cat_const; - return codecvt_error_cat_const; - } +// Try to initialize the error category instance as early as possible to make sure it is +// available during global deinitialization stage. For MSVC, codecvt_error_category() will +// be called early by MSVC-specific initialization routine in path.cpp. +#if !defined(BOOST_SYSTEM_HAS_CONSTEXPR) && !defined(_MSC_VER) + +namespace { - } // namespace filesystem +struct codecvt_error_category_initializer +{ + codecvt_error_category_initializer() { boost::filesystem::codecvt_error_category(); } +}; + +BOOST_FILESYSTEM_INIT_PRIORITY(BOOST_FILESYSTEM_PATH_GLOBALS_INIT_PRIORITY) BOOST_ATTRIBUTE_UNUSED BOOST_FILESYSTEM_ATTRIBUTE_RETAIN +const codecvt_error_category_initializer g_codecvt_error_category_initializer; + +} // namespace + +#endif // !defined(BOOST_SYSTEM_HAS_CONSTEXPR) && !defined(_MSC_VER) + +} // namespace filesystem } // namespace boost + +#include diff --git a/src/boost/libs/filesystem/src/directory.cpp b/src/boost/libs/filesystem/src/directory.cpp new file mode 100644 index 000000000..b2ffe507c --- /dev/null +++ b/src/boost/libs/filesystem/src/directory.cpp @@ -0,0 +1,1510 @@ +// directory.cpp --------------------------------------------------------------------// + +// Copyright 2002-2009, 2014 Beman Dawes +// Copyright 2001 Dietmar Kuehl +// Copyright 2019, 2022 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +//--------------------------------------------------------------------------------------// + +#include "platform_config.hpp" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include // std::malloc, std::free +#include // std::nothrow, std::bad_alloc +#include +#include +#include // std::move +#include +#include +#include + +#ifdef BOOST_POSIX_API + +#include +#include +#include +#include +#include + +#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) && (_POSIX_THREAD_SAFE_FUNCTIONS >= 0) && defined(_SC_THREAD_SAFE_FUNCTIONS) && \ + !defined(__CYGWIN__) && \ + !(defined(linux) || defined(__linux) || defined(__linux__)) && \ + !defined(__ANDROID__) && \ + (!defined(__hpux) || defined(_REENTRANT)) && \ + (!defined(_AIX) || defined(__THREAD_SAFE)) && \ + !defined(__wasm) +#define BOOST_FILESYSTEM_USE_READDIR_R +#endif + +// At least Mac OS X 10.6 and older doesn't support O_CLOEXEC +#ifndef O_CLOEXEC +#define O_CLOEXEC 0 +#define BOOST_FILESYSTEM_NO_O_CLOEXEC +#endif + +#include "posix_tools.hpp" + +#else // BOOST_WINDOWS_API + +#include +#include +#include // NTSTATUS_ + +#include "windows_tools.hpp" + +#endif // BOOST_WINDOWS_API + +#include "atomic_tools.hpp" +#include "error_handling.hpp" +#include "private_config.hpp" + +#include // must be the last #include + +namespace fs = boost::filesystem; +using boost::system::error_code; +using boost::system::system_category; + +namespace boost { +namespace filesystem { + +//--------------------------------------------------------------------------------------// +// // +// directory_entry // +// // +//--------------------------------------------------------------------------------------// + +BOOST_FILESYSTEM_DECL void directory_entry::refresh_impl(system::error_code* ec) const +{ + system::error_code local_ec; + m_symlink_status = detail::symlink_status(m_path, &local_ec); + + if (!filesystem::is_symlink(m_symlink_status)) + { + // Also works if symlink_status fails - set m_status to status_error as well + m_status = m_symlink_status; + + if (BOOST_UNLIKELY(!!local_ec)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::directory_entry::refresh", m_path, local_ec)); + + *ec = local_ec; + return; + } + + if (ec) + ec->clear(); + } + else + { + m_status = detail::status(m_path, ec); + } +} + +//--------------------------------------------------------------------------------------// +// // +// directory_iterator // +// // +//--------------------------------------------------------------------------------------// + +namespace detail { + +BOOST_CONSTEXPR_OR_CONST std::size_t dir_itr_imp_extra_data_alignment = 16u; + +BOOST_FILESYSTEM_DECL void* dir_itr_imp::operator new(std::size_t class_size, std::size_t extra_size) BOOST_NOEXCEPT +{ + if (extra_size > 0) + class_size = (class_size + dir_itr_imp_extra_data_alignment - 1u) & ~(dir_itr_imp_extra_data_alignment - 1u); + std::size_t total_size = class_size + extra_size; + + // Return NULL on OOM + void* p = std::malloc(total_size); + if (BOOST_LIKELY(p != NULL)) + std::memset(p, 0, total_size); + return p; +} + +BOOST_FILESYSTEM_DECL void dir_itr_imp::operator delete(void* p, std::size_t extra_size) BOOST_NOEXCEPT +{ + std::free(p); +} + +BOOST_FILESYSTEM_DECL void dir_itr_imp::operator delete(void* p) BOOST_NOEXCEPT +{ + std::free(p); +} + +namespace { + +inline void* get_dir_itr_imp_extra_data(dir_itr_imp* imp) BOOST_NOEXCEPT +{ + BOOST_CONSTEXPR_OR_CONST std::size_t extra_data_offset = (sizeof(dir_itr_imp) + dir_itr_imp_extra_data_alignment - 1u) & ~(dir_itr_imp_extra_data_alignment - 1u); + return reinterpret_cast< unsigned char* >(imp) + extra_data_offset; +} + +#ifdef BOOST_POSIX_API + +inline system::error_code dir_itr_close(dir_itr_imp& imp) BOOST_NOEXCEPT +{ + if (imp.handle != NULL) + { + DIR* h = static_cast< DIR* >(imp.handle); + imp.handle = NULL; + int err = 0; + if (BOOST_UNLIKELY(::closedir(h) != 0)) + { + err = errno; + return error_code(err, system_category()); + } + } + + return error_code(); +} + +#if defined(BOOST_FILESYSTEM_USE_READDIR_R) + +// Obtains maximum length of a path, not including the terminating zero +inline std::size_t get_path_max() +{ + // this code is based on Stevens and Rago, Advanced Programming in the + // UNIX envirnment, 2nd Ed., ISBN 0-201-43307-9, page 49 + std::size_t max = 0; + errno = 0; + long res = ::pathconf("/", _PC_PATH_MAX); + if (res < 0) + { +#if defined(PATH_MAX) + max = PATH_MAX; +#else + max = 4096; +#endif + } + else + { + max = static_cast< std::size_t >(res); // relative root +#if defined(PATH_MAX) + if (max < PATH_MAX) + max = PATH_MAX; +#endif + } + + if ((max + 1) < sizeof(dirent().d_name)) + max = sizeof(dirent().d_name) - 1; + + return max; +} + +// Returns maximum length of a path, not including the terminating zero +inline std::size_t path_max() +{ + static const std::size_t max = get_path_max(); + return max; +} + +#endif // BOOST_FILESYSTEM_USE_READDIR_R + +// *result set to NULL on end of directory +#if !defined(BOOST_FILESYSTEM_USE_READDIR_R) +inline +#endif +int readdir_impl(dir_itr_imp& imp, struct dirent** result) +{ + errno = 0; + + struct dirent* p = ::readdir(static_cast< DIR* >(imp.handle)); + *result = p; + if (!p) + return errno; + return 0; +} + +#if !defined(BOOST_FILESYSTEM_USE_READDIR_R) + +inline int invoke_readdir(dir_itr_imp& imp, struct dirent** result) +{ + return readdir_impl(imp, result); +} + +#else // !defined(BOOST_FILESYSTEM_USE_READDIR_R) + +int readdir_r_impl(dir_itr_imp& imp, struct dirent** result) +{ + return ::readdir_r + ( + static_cast< DIR* >(imp.handle), + static_cast< struct dirent* >(get_dir_itr_imp_extra_data(&imp)), + result + ); +} + +int readdir_select_impl(dir_itr_imp& imp, struct dirent** result); + +typedef int readdir_impl_t(dir_itr_imp& imp, struct dirent** result); + +//! Pointer to the actual implementation of the copy_file_data implementation +readdir_impl_t* readdir_impl_ptr = &readdir_select_impl; + +void init_readdir_impl() +{ + readdir_impl_t* impl = &readdir_impl; + if (::sysconf(_SC_THREAD_SAFE_FUNCTIONS) >= 0) + impl = &readdir_r_impl; + + filesystem::detail::atomic_store_relaxed(readdir_impl_ptr, impl); +} + +struct readdir_initializer +{ + readdir_initializer() + { + init_readdir_impl(); + } +}; + +BOOST_FILESYSTEM_INIT_PRIORITY(BOOST_FILESYSTEM_FUNC_PTR_INIT_PRIORITY) BOOST_ATTRIBUTE_UNUSED BOOST_FILESYSTEM_ATTRIBUTE_RETAIN +const readdir_initializer readdir_init; + +int readdir_select_impl(dir_itr_imp& imp, struct dirent** result) +{ + init_readdir_impl(); + return filesystem::detail::atomic_load_relaxed(readdir_impl_ptr)(imp, result); +} + +inline int invoke_readdir(dir_itr_imp& imp, struct dirent** result) +{ + return filesystem::detail::atomic_load_relaxed(readdir_impl_ptr)(imp, result); +} + +#endif // !defined(BOOST_FILESYSTEM_USE_READDIR_R) + +error_code dir_itr_increment(dir_itr_imp& imp, fs::path& filename, fs::file_status& sf, fs::file_status& symlink_sf) +{ + dirent* result = NULL; + int err = invoke_readdir(imp, &result); + if (BOOST_UNLIKELY(err != 0)) + return error_code(err, system_category()); + if (result == NULL) + return dir_itr_close(imp); + + filename = result->d_name; + +#if defined(BOOST_FILESYSTEM_HAS_DIRENT_D_TYPE) + if (result->d_type == DT_UNKNOWN) // filesystem does not supply d_type value + { + sf = symlink_sf = fs::file_status(fs::status_error); + } + else // filesystem supplies d_type value + { + if (result->d_type == DT_REG) + sf = symlink_sf = fs::file_status(fs::regular_file); + else if (result->d_type == DT_DIR) + sf = symlink_sf = fs::file_status(fs::directory_file); + else if (result->d_type == DT_LNK) + { + sf = fs::file_status(fs::status_error); + symlink_sf = fs::file_status(fs::symlink_file); + } + else + { + switch (result->d_type) + { + case DT_SOCK: + sf = symlink_sf = fs::file_status(fs::socket_file); + break; + case DT_FIFO: + sf = symlink_sf = fs::file_status(fs::fifo_file); + break; + case DT_BLK: + sf = symlink_sf = fs::file_status(fs::block_file); + break; + case DT_CHR: + sf = symlink_sf = fs::file_status(fs::character_file); + break; + default: + sf = symlink_sf = fs::file_status(fs::status_error); + break; + } + } + } +#else + sf = symlink_sf = fs::file_status(fs::status_error); +#endif + return error_code(); +} + +error_code dir_itr_create(boost::intrusive_ptr< detail::dir_itr_imp >& imp, fs::path const& dir, unsigned int opts, directory_iterator_params* params, fs::path& first_filename, fs::file_status&, fs::file_status&) +{ + std::size_t extra_size = 0u; +#if defined(BOOST_FILESYSTEM_USE_READDIR_R) + { + readdir_impl_t* rdimpl = filesystem::detail::atomic_load_relaxed(readdir_impl_ptr); + if (BOOST_UNLIKELY(rdimpl == &readdir_select_impl)) + { + init_readdir_impl(); + rdimpl = filesystem::detail::atomic_load_relaxed(readdir_impl_ptr); + } + + if (rdimpl == &readdir_r_impl) + { + // According to readdir description, there's no reliable way to predict the length of the d_name string. + // It may exceed NAME_MAX and pathconf(_PC_NAME_MAX) limits. We are being conservative here and allocate + // buffer that is enough for PATH_MAX as the directory name. Still, this doesn't guarantee there won't be + // a buffer overrun. The readdir_r API is fundamentally flawed and we should avoid it as much as possible + // in favor of readdir. + extra_size = (sizeof(dirent) - sizeof(dirent().d_name)) + path_max() + 1u; // + 1 for "\0" + } + } +#endif // defined(BOOST_FILESYSTEM_USE_READDIR_R) + + boost::intrusive_ptr< detail::dir_itr_imp > pimpl(new (extra_size) detail::dir_itr_imp()); + if (BOOST_UNLIKELY(!pimpl)) + return make_error_code(system::errc::not_enough_memory); + +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) + int flags = O_DIRECTORY | O_RDONLY | O_NONBLOCK | O_CLOEXEC; + if ((opts & static_cast< unsigned int >(directory_options::_detail_no_follow)) != 0u) + flags |= O_NOFOLLOW; + +#if defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + int fd = ::openat(params ? params->basedir_fd : AT_FDCWD, dir.c_str(), flags); +#else + int fd = ::open(dir.c_str(), flags); +#endif + if (BOOST_UNLIKELY(fd < 0)) + { + const int err = errno; + return error_code(err, system_category()); + } + +#if defined(BOOST_FILESYSTEM_NO_O_CLOEXEC) && defined(FD_CLOEXEC) + int res = ::fcntl(fd, F_SETFD, FD_CLOEXEC); + if (BOOST_UNLIKELY(res < 0)) + { + const int err = errno; + close_fd(fd); + return error_code(err, system_category()); + } +#endif + + pimpl->handle = ::fdopendir(fd); + if (BOOST_UNLIKELY(!pimpl->handle)) + { + const int err = errno; + close_fd(fd); + return error_code(err, system_category()); + } +#else // defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) + pimpl->handle = ::opendir(dir.c_str()); + if (BOOST_UNLIKELY(!pimpl->handle)) + { + const int err = errno; + return error_code(err, system_category()); + } +#endif // defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) + + // Force initial readdir call by the caller. This will initialize the actual first filename and statuses. + first_filename.assign("."); + +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) + if (params) + params->iterator_fd = fd; +#endif + + imp.swap(pimpl); + return error_code(); +} + +BOOST_CONSTEXPR_OR_CONST err_t not_found_error_code = ENOENT; + +#else // BOOST_WINDOWS_API + +inline void set_file_statuses(DWORD attrs, const ULONG* reparse_point_tag, fs::path const& filename, fs::file_status& sf, fs::file_status& symlink_sf) +{ + if ((attrs & FILE_ATTRIBUTE_REPARSE_POINT) != 0u) + { + // Reparse points are complex, so don't try to resolve them here; instead just mark + // them as status_error which causes directory_entry caching to call status() + // and symlink_status() which do handle reparse points fully + if (reparse_point_tag) + { + // If we have a reparse point tag we can at least populate the symlink status, + // consistent with symlink_status() behavior + symlink_sf.type(is_reparse_point_tag_a_symlink(*reparse_point_tag) ? fs::symlink_file : fs::reparse_file); + symlink_sf.permissions(make_permissions(filename, attrs)); + } + else + { + symlink_sf.type(fs::status_error); + } + + sf.type(fs::status_error); + } + else + { + if ((attrs & FILE_ATTRIBUTE_DIRECTORY) != 0u) + { + sf.type(fs::directory_file); + symlink_sf.type(fs::directory_file); + } + else + { + sf.type(fs::regular_file); + symlink_sf.type(fs::regular_file); + } + + sf.permissions(make_permissions(filename, attrs)); + symlink_sf.permissions(sf.permissions()); + } +} + +#if !defined(UNDER_CE) + +//! FILE_ID_128 definition from Windows SDK +struct file_id_128 +{ + BYTE Identifier[16]; +}; + +//! FILE_DIRECTORY_INFORMATION definition from Windows DDK. Used by NtQueryDirectoryFile, supported since Windows NT 4.0 (probably). +struct file_directory_information +{ + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + WCHAR FileName[1]; +}; + +//! FILE_ID_BOTH_DIR_INFO definition from Windows SDK. Basic support for directory iteration using GetFileInformationByHandleEx, supported since Windows Vista. +struct file_id_both_dir_info +{ + DWORD NextEntryOffset; + DWORD FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + DWORD FileAttributes; + DWORD FileNameLength; + DWORD EaSize; + CCHAR ShortNameLength; + WCHAR ShortName[12]; + LARGE_INTEGER FileId; + WCHAR FileName[1]; +}; + +//! FILE_FULL_DIR_INFO definition from Windows SDK. More lightweight than FILE_ID_BOTH_DIR_INFO, supported since Windows 8. +struct file_full_dir_info +{ + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + WCHAR FileName[1]; +}; + +//! FILE_ID_EXTD_DIR_INFO definition from Windows SDK. Provides reparse point tag, which saves us querying it with a few separate syscalls. Supported since Windows 8. +struct file_id_extd_dir_info +{ + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + ULONG ReparsePointTag; + file_id_128 FileId; + WCHAR FileName[1]; +}; + +//! Indicates format of the extra data in the directory iterator +enum extra_data_format +{ + file_directory_information_format, + file_id_both_dir_info_format, + file_full_dir_info_format, + file_id_extd_dir_info_format +}; + +//! Indicates extra data format that should be used by directory iterator by default +extra_data_format g_extra_data_format = file_directory_information_format; + +/*! + * \brief Extra buffer size for GetFileInformationByHandleEx-based or NtQueryDirectoryFile-based directory iterator. + * + * Must be large enough to accommodate at least one FILE_DIRECTORY_INFORMATION or *_DIR_INFO struct and one filename. + * NTFS, VFAT, exFAT and ReFS support filenames up to 255 UTF-16/UCS-2 characters. (For ReFS, there is no information + * on the on-disk format, and it is possible that it supports longer filenames, up to 32768 UTF-16/UCS-2 characters.) + * The buffer cannot be larger than 64k, because up to Windows 8.1, NtQueryDirectoryFile and GetFileInformationByHandleEx + * fail with ERROR_INVALID_PARAMETER when trying to retrieve the filenames from a network share. + */ +BOOST_CONSTEXPR_OR_CONST std::size_t dir_itr_extra_size = 65536u; + +inline system::error_code dir_itr_close(dir_itr_imp& imp) BOOST_NOEXCEPT +{ + imp.extra_data_format = 0u; + imp.current_offset = 0u; + + if (imp.handle != NULL) + { + if (BOOST_LIKELY(imp.close_handle)) + ::CloseHandle(imp.handle); + imp.handle = NULL; + } + + return error_code(); +} + +error_code dir_itr_increment(dir_itr_imp& imp, fs::path& filename, fs::file_status& sf, fs::file_status& symlink_sf) +{ + void* extra_data = get_dir_itr_imp_extra_data(&imp); + const void* current_data = static_cast< const unsigned char* >(extra_data) + imp.current_offset; + switch (imp.extra_data_format) + { + case file_id_extd_dir_info_format: + { + const file_id_extd_dir_info* data = static_cast< const file_id_extd_dir_info* >(current_data); + if (data->NextEntryOffset == 0u) + { + if (!filesystem::detail::atomic_load_relaxed(get_file_information_by_handle_ex_api)(imp.handle, file_id_extd_directory_info_class, extra_data, dir_itr_extra_size)) + { + DWORD error = ::GetLastError(); + + dir_itr_close(imp); + if (error == ERROR_NO_MORE_FILES) + goto done; + + return error_code(error, system_category()); + } + + imp.current_offset = 0u; + data = static_cast< const file_id_extd_dir_info* >(extra_data); + } + else + { + imp.current_offset += data->NextEntryOffset; + data = reinterpret_cast< const file_id_extd_dir_info* >(static_cast< const unsigned char* >(current_data) + data->NextEntryOffset); + } + + filename.assign(data->FileName, data->FileName + data->FileNameLength / sizeof(WCHAR)); + set_file_statuses(data->FileAttributes, &data->ReparsePointTag, filename, sf, symlink_sf); + } + break; + + case file_full_dir_info_format: + { + const file_full_dir_info* data = static_cast< const file_full_dir_info* >(current_data); + if (data->NextEntryOffset == 0u) + { + if (!filesystem::detail::atomic_load_relaxed(get_file_information_by_handle_ex_api)(imp.handle, file_full_directory_info_class, extra_data, dir_itr_extra_size)) + { + DWORD error = ::GetLastError(); + + dir_itr_close(imp); + if (error == ERROR_NO_MORE_FILES) + goto done; + + return error_code(error, system_category()); + } + + imp.current_offset = 0u; + data = static_cast< const file_full_dir_info* >(extra_data); + } + else + { + imp.current_offset += data->NextEntryOffset; + data = reinterpret_cast< const file_full_dir_info* >(static_cast< const unsigned char* >(current_data) + data->NextEntryOffset); + } + + filename.assign(data->FileName, data->FileName + data->FileNameLength / sizeof(WCHAR)); + set_file_statuses(data->FileAttributes, NULL, filename, sf, symlink_sf); + } + break; + + case file_id_both_dir_info_format: + { + const file_id_both_dir_info* data = static_cast< const file_id_both_dir_info* >(current_data); + if (data->NextEntryOffset == 0u) + { + if (!filesystem::detail::atomic_load_relaxed(get_file_information_by_handle_ex_api)(imp.handle, file_id_both_directory_info_class, extra_data, dir_itr_extra_size)) + { + DWORD error = ::GetLastError(); + + dir_itr_close(imp); + if (error == ERROR_NO_MORE_FILES) + goto done; + + return error_code(error, system_category()); + } + + imp.current_offset = 0u; + data = static_cast< const file_id_both_dir_info* >(extra_data); + } + else + { + imp.current_offset += data->NextEntryOffset; + data = reinterpret_cast< const file_id_both_dir_info* >(static_cast< const unsigned char* >(current_data) + data->NextEntryOffset); + } + + filename.assign(data->FileName, data->FileName + data->FileNameLength / sizeof(WCHAR)); + set_file_statuses(data->FileAttributes, NULL, filename, sf, symlink_sf); + } + break; + + default: + { + const file_directory_information* data = static_cast< const file_directory_information* >(current_data); + if (data->NextEntryOffset == 0u) + { + io_status_block iosb; + boost::winapi::NTSTATUS_ status = filesystem::detail::atomic_load_relaxed(nt_query_directory_file_api) + ( + imp.handle, + NULL, // Event + NULL, // ApcRoutine + NULL, // ApcContext + &iosb, + extra_data, + dir_itr_extra_size, + file_directory_information_class, + FALSE, // ReturnSingleEntry + NULL, // FileName + FALSE // RestartScan + ); + + if (!NT_SUCCESS(status)) + { + dir_itr_close(imp); + if (status == STATUS_NO_MORE_FILES) + goto done; + + return error_code(translate_ntstatus(status), system_category()); + } + + imp.current_offset = 0u; + data = static_cast< const file_directory_information* >(extra_data); + } + else + { + imp.current_offset += data->NextEntryOffset; + data = reinterpret_cast< const file_directory_information* >(static_cast< const unsigned char* >(current_data) + data->NextEntryOffset); + } + + filename.assign(data->FileName, data->FileName + data->FileNameLength / sizeof(WCHAR)); + set_file_statuses(data->FileAttributes, NULL, filename, sf, symlink_sf); + } + break; + } + +done: + return error_code(); +} + +//! Returns \c true if the error code indicates that the OS or the filesystem does not support a particular directory info class +inline bool is_dir_info_class_not_supported(DWORD error) +{ + // Some mounted filesystems may not support FILE_ID_128 identifiers, which will cause + // GetFileInformationByHandleEx(FileIdExtdDirectoryRestartInfo) return ERROR_INVALID_PARAMETER, + // even though in general the operation is supported by the kernel. SMBv1 returns a special error + // code ERROR_INVALID_LEVEL in this case. + // Some other filesystems also don't implement other info classes and return ERROR_INVALID_PARAMETER + // (e.g. see https://github.com/boostorg/filesystem/issues/266), ERROR_GEN_FAILURE, ERROR_INVALID_FUNCTION + // or ERROR_INTERNAL_ERROR (https://github.com/boostorg/filesystem/issues/286). Treat these error codes + // as "non-permanent", even though ERROR_INVALID_PARAMETER is also returned if GetFileInformationByHandleEx + // in general does not support a certain info class. Worst case, we will make extra syscalls on directory + // iterator construction. + // Also note that Wine returns ERROR_CALL_NOT_IMPLEMENTED for unimplemented info classes, and + // up until 7.21 it didn't implement FileIdExtdDirectoryRestartInfo and FileFullDirectoryRestartInfo. + // (https://bugs.winehq.org/show_bug.cgi?id=53590) + return error == ERROR_NOT_SUPPORTED || error == ERROR_INVALID_PARAMETER || + error == ERROR_INVALID_LEVEL || error == ERROR_CALL_NOT_IMPLEMENTED || + error == ERROR_GEN_FAILURE || error == ERROR_INVALID_FUNCTION || + error == ERROR_INTERNAL_ERROR; +} + +error_code dir_itr_create(boost::intrusive_ptr< detail::dir_itr_imp >& imp, fs::path const& dir, unsigned int opts, directory_iterator_params* params, fs::path& first_filename, fs::file_status& sf, fs::file_status& symlink_sf) +{ + boost::intrusive_ptr< detail::dir_itr_imp > pimpl(new (dir_itr_extra_size) detail::dir_itr_imp()); + if (BOOST_UNLIKELY(!pimpl)) + return make_error_code(system::errc::not_enough_memory); + + GetFileInformationByHandleEx_t* get_file_information_by_handle_ex = filesystem::detail::atomic_load_relaxed(get_file_information_by_handle_ex_api); + + handle_wrapper h; + HANDLE iterator_handle; + bool close_handle = true; + if (params != NULL && params->use_handle != INVALID_HANDLE_VALUE) + { + // Operate on externally provided handle, which must be a directory handle + iterator_handle = params->use_handle; + close_handle = params->close_handle; + } + else + { + DWORD flags = FILE_FLAG_BACKUP_SEMANTICS; + if ((opts & static_cast< unsigned int >(directory_options::_detail_no_follow)) != 0u) + flags |= FILE_FLAG_OPEN_REPARSE_POINT; + + iterator_handle = h.handle = create_file_handle(dir, FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, flags); + if (BOOST_UNLIKELY(iterator_handle == INVALID_HANDLE_VALUE)) + { + return_last_error: + DWORD error = ::GetLastError(); + return error_code(error, system_category()); + } + + if (BOOST_LIKELY(get_file_information_by_handle_ex != NULL)) + { + file_attribute_tag_info info; + BOOL res = get_file_information_by_handle_ex(iterator_handle, file_attribute_tag_info_class, &info, sizeof(info)); + if (BOOST_UNLIKELY(!res)) + { + // On FAT/exFAT filesystems requesting FILE_ATTRIBUTE_TAG_INFO returns ERROR_INVALID_PARAMETER. See the comment in symlink_status. + DWORD error = ::GetLastError(); + if (error == ERROR_INVALID_PARAMETER || error == ERROR_NOT_SUPPORTED) + goto use_get_file_information_by_handle; + + return error_code(error, system_category()); + } + + if (BOOST_UNLIKELY((info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0u)) + return make_error_code(system::errc::not_a_directory); + + if ((opts & static_cast< unsigned int >(directory_options::_detail_no_follow)) != 0u) + { + if ((info.FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) != 0u && is_reparse_point_tag_a_symlink(info.ReparseTag)) + return make_error_code(system::errc::too_many_symbolic_link_levels); + } + } + else + { + use_get_file_information_by_handle: + BY_HANDLE_FILE_INFORMATION info; + BOOL res = ::GetFileInformationByHandle(iterator_handle, &info); + if (BOOST_UNLIKELY(!res)) + goto return_last_error; + + if (BOOST_UNLIKELY((info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0u)) + return make_error_code(system::errc::not_a_directory); + + if ((opts & static_cast< unsigned int >(directory_options::_detail_no_follow)) != 0u && (info.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) != 0u) + { + error_code ec; + const ULONG reparse_point_tag = detail::get_reparse_point_tag_ioctl(h.handle, dir, &ec); + if (BOOST_UNLIKELY(!!ec)) + return ec; + + if (detail::is_reparse_point_tag_a_symlink(reparse_point_tag)) + return make_error_code(system::errc::too_many_symbolic_link_levels); + } + } + } + + void* extra_data = get_dir_itr_imp_extra_data(pimpl.get()); + switch (filesystem::detail::atomic_load_relaxed(g_extra_data_format)) + { + case file_id_extd_dir_info_format: + { + if (!get_file_information_by_handle_ex(iterator_handle, file_id_extd_directory_restart_info_class, extra_data, dir_itr_extra_size)) + { + DWORD error = ::GetLastError(); + + if (is_dir_info_class_not_supported(error)) + { + // Fall back to file_full_dir_info_format. + if (error == ERROR_NOT_SUPPORTED || error == ERROR_CALL_NOT_IMPLEMENTED) + filesystem::detail::atomic_store_relaxed(g_extra_data_format, file_full_dir_info_format); + goto fallback_to_file_full_dir_info_format; + } + + if (error == ERROR_NO_MORE_FILES || error == ERROR_FILE_NOT_FOUND) + goto done; + + return error_code(error, system_category()); + } + + pimpl->extra_data_format = file_id_extd_dir_info_format; + + const file_id_extd_dir_info* data = static_cast< const file_id_extd_dir_info* >(extra_data); + first_filename.assign(data->FileName, data->FileName + data->FileNameLength / sizeof(WCHAR)); + + set_file_statuses(data->FileAttributes, &data->ReparsePointTag, first_filename, sf, symlink_sf); + } + break; + + case file_full_dir_info_format: + fallback_to_file_full_dir_info_format: + { + if (!get_file_information_by_handle_ex(iterator_handle, file_full_directory_restart_info_class, extra_data, dir_itr_extra_size)) + { + DWORD error = ::GetLastError(); + + if (is_dir_info_class_not_supported(error)) + { + // Fall back to file_id_both_dir_info + if (error == ERROR_NOT_SUPPORTED || error == ERROR_CALL_NOT_IMPLEMENTED) + filesystem::detail::atomic_store_relaxed(g_extra_data_format, file_id_both_dir_info_format); + goto fallback_to_file_id_both_dir_info_format; + } + + if (error == ERROR_NO_MORE_FILES || error == ERROR_FILE_NOT_FOUND) + goto done; + + return error_code(error, system_category()); + } + + pimpl->extra_data_format = file_full_dir_info_format; + + const file_full_dir_info* data = static_cast< const file_full_dir_info* >(extra_data); + first_filename.assign(data->FileName, data->FileName + data->FileNameLength / sizeof(WCHAR)); + + set_file_statuses(data->FileAttributes, NULL, first_filename, sf, symlink_sf); + } + break; + + case file_id_both_dir_info_format: + fallback_to_file_id_both_dir_info_format: + { + if (!get_file_information_by_handle_ex(iterator_handle, file_id_both_directory_restart_info_class, extra_data, dir_itr_extra_size)) + { + DWORD error = ::GetLastError(); + + if (is_dir_info_class_not_supported(error)) + { + // Fall back to file_directory_information + if (error == ERROR_NOT_SUPPORTED || error == ERROR_CALL_NOT_IMPLEMENTED) + filesystem::detail::atomic_store_relaxed(g_extra_data_format, file_directory_information_format); + goto fallback_to_file_directory_information_format; + } + + if (error == ERROR_NO_MORE_FILES || error == ERROR_FILE_NOT_FOUND) + goto done; + + return error_code(error, system_category()); + } + + pimpl->extra_data_format = file_id_both_dir_info_format; + + const file_id_both_dir_info* data = static_cast< const file_id_both_dir_info* >(extra_data); + first_filename.assign(data->FileName, data->FileName + data->FileNameLength / sizeof(WCHAR)); + + set_file_statuses(data->FileAttributes, NULL, first_filename, sf, symlink_sf); + } + break; + + default: + fallback_to_file_directory_information_format: + { + NtQueryDirectoryFile_t* nt_query_directory_file = filesystem::detail::atomic_load_relaxed(boost::filesystem::detail::nt_query_directory_file_api); + if (BOOST_UNLIKELY(!nt_query_directory_file)) + return error_code(ERROR_NOT_SUPPORTED, system_category()); + + io_status_block iosb; + boost::winapi::NTSTATUS_ status = nt_query_directory_file + ( + iterator_handle, + NULL, // Event + NULL, // ApcRoutine + NULL, // ApcContext + &iosb, + extra_data, + dir_itr_extra_size, + file_directory_information_class, + FALSE, // ReturnSingleEntry + NULL, // FileName + TRUE // RestartScan + ); + + if (!NT_SUCCESS(status)) + { + // Note: an empty root directory has no "." or ".." entries, so this + // causes a ERROR_FILE_NOT_FOUND error returned from FindFirstFileW + // (which is presumably equivalent to STATUS_NO_SUCH_FILE) which we + // do not consider an error. It is treated as eof instead. + if (status == STATUS_NO_MORE_FILES || status == STATUS_NO_SUCH_FILE) + goto done; + + return error_code(translate_ntstatus(status), system_category()); + } + + pimpl->extra_data_format = file_directory_information_format; + + const file_directory_information* data = static_cast< const file_directory_information* >(extra_data); + first_filename.assign(data->FileName, data->FileName + data->FileNameLength / sizeof(WCHAR)); + + set_file_statuses(data->FileAttributes, NULL, first_filename, sf, symlink_sf); + } + break; + } + + + pimpl->handle = iterator_handle; + h.handle = INVALID_HANDLE_VALUE; + pimpl->close_handle = close_handle; + +done: + imp.swap(pimpl); + return error_code(); +} + +#else // !defined(UNDER_CE) + +inline system::error_code dir_itr_close(dir_itr_imp& imp) BOOST_NOEXCEPT +{ + if (imp.handle != NULL) + { + if (BOOST_LIKELY(imp.close_handle)) + ::FindClose(imp.handle); + imp.handle = NULL; + } + + return error_code(); +} + +error_code dir_itr_increment(dir_itr_imp& imp, fs::path& filename, fs::file_status& sf, fs::file_status& symlink_sf) +{ + WIN32_FIND_DATAW data; + if (::FindNextFileW(imp.handle, &data) == 0) // fails + { + DWORD error = ::GetLastError(); + dir_itr_close(imp); + if (error == ERROR_NO_MORE_FILES) + goto done; + return error_code(error, system_category()); + } + + filename = data.cFileName; + set_file_statuses(data.dwFileAttributes, NULL, filename, sf, symlink_sf); + +done: + return error_code(); +} + +error_code dir_itr_create(boost::intrusive_ptr< detail::dir_itr_imp >& imp, fs::path const& dir, unsigned int opts, directory_iterator_params*, fs::path& first_filename, fs::file_status& sf, fs::file_status& symlink_sf) +{ + boost::intrusive_ptr< detail::dir_itr_imp > pimpl(new (static_cast< std::size_t >(0u)) detail::dir_itr_imp()); + if (BOOST_UNLIKELY(!pimpl)) + return make_error_code(system::errc::not_enough_memory); + + // use a form of search Sebastian Martel reports will work with Win98 + fs::path dirpath(dir); + dirpath.make_preferred(); + dirpath /= L"*"; + + WIN32_FIND_DATAW data; + pimpl->handle = ::FindFirstFileW(dirpath.c_str(), &data); + if (BOOST_UNLIKELY(pimpl->handle == INVALID_HANDLE_VALUE)) + { + pimpl->handle = NULL; // signal eof + + // Note: an empty root directory has no "." or ".." entries, so this + // causes a ERROR_FILE_NOT_FOUND error which we do not consider an + // error. It is treated as eof instead. + // Windows Mobile returns ERROR_NO_MORE_FILES; see ticket #3551 + DWORD error = ::GetLastError(); + if (error == ERROR_FILE_NOT_FOUND || error == ERROR_NO_MORE_FILES) + goto done; + + return error_code(error, system_category()); + } + + pimpl->close_handle = true; + + first_filename = data.cFileName; + set_file_statuses(data.dwFileAttributes, NULL, first_filename, sf, symlink_sf); + +done: + imp.swap(pimpl); + return error_code(); +} + +#endif // !defined(UNDER_CE) + +BOOST_CONSTEXPR_OR_CONST err_t not_found_error_code = ERROR_PATH_NOT_FOUND; + +#endif // BOOST_WINDOWS_API + +} // namespace + +#if defined(BOOST_WINDOWS_API) && !defined(UNDER_CE) + +//! Initializes directory iterator implementation +void init_directory_iterator_impl() BOOST_NOEXCEPT +{ + if (filesystem::detail::atomic_load_relaxed(get_file_information_by_handle_ex_api) != NULL) + { + // Enable the latest format we support. It will get downgraded, if needed, as we attempt + // to create the directory iterator the first time. + filesystem::detail::atomic_store_relaxed(g_extra_data_format, file_id_extd_dir_info_format); + } +} + +#endif // defined(BOOST_WINDOWS_API) && !defined(UNDER_CE) + +BOOST_FILESYSTEM_DECL +dir_itr_imp::~dir_itr_imp() BOOST_NOEXCEPT +{ + dir_itr_close(*this); +} + +BOOST_FILESYSTEM_DECL +void directory_iterator_construct(directory_iterator& it, path const& p, unsigned int opts, directory_iterator_params* params, system::error_code* ec) +{ + if (BOOST_UNLIKELY(p.empty())) + { + emit_error(not_found_error_code, p, ec, "boost::filesystem::directory_iterator::construct"); + return; + } + + if (ec) + ec->clear(); + + try + { + boost::intrusive_ptr< detail::dir_itr_imp > imp; + path filename; + file_status file_stat, symlink_file_stat; + system::error_code result = dir_itr_create(imp, p, opts, params, filename, file_stat, symlink_file_stat); + + while (true) + { + if (result) + { + if (result != make_error_condition(system::errc::permission_denied) || + (opts & static_cast< unsigned int >(directory_options::skip_permission_denied)) == 0u) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::directory_iterator::construct", p, result)); + *ec = result; + } + + return; + } + + if (imp->handle == NULL) // eof, make end + return; + + // Not eof + const path::string_type::value_type* filename_str = filename.c_str(); + if (!(filename_str[0] == path::dot // dot or dot-dot + && (filename_str[1] == static_cast< path::string_type::value_type >('\0') || + (filename_str[1] == path::dot && filename_str[2] == static_cast< path::string_type::value_type >('\0'))))) + { + path full_path(p); + path_algorithms::append_v4(full_path, filename); + imp->dir_entry.assign_with_status + ( +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + static_cast< path&& >(full_path), +#else + full_path, +#endif + file_stat, + symlink_file_stat + ); + it.m_imp.swap(imp); + return; + } + + // If dot or dot-dot name produced by the underlying API, skip it until the first actual file + result = dir_itr_increment(*imp, filename, file_stat, symlink_file_stat); + } + } + catch (std::bad_alloc&) + { + if (!ec) + throw; + + *ec = make_error_code(system::errc::not_enough_memory); + it.m_imp.reset(); + } +} + +BOOST_FILESYSTEM_DECL +void directory_iterator_increment(directory_iterator& it, system::error_code* ec) +{ + BOOST_ASSERT_MSG(!it.is_end(), "attempt to increment end iterator"); + + if (ec) + ec->clear(); + + try + { + path filename; + file_status file_stat, symlink_file_stat; + system::error_code increment_ec; + + while (true) + { + increment_ec = dir_itr_increment(*it.m_imp, filename, file_stat, symlink_file_stat); + + if (BOOST_UNLIKELY(!!increment_ec)) // happens if filesystem is corrupt, such as on a damaged optical disc + { + boost::intrusive_ptr< detail::dir_itr_imp > imp; + imp.swap(it.m_imp); + path error_path(imp->dir_entry.path().parent_path()); // fix ticket #5900 + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::directory_iterator::operator++", error_path, increment_ec)); + + *ec = increment_ec; + return; + } + + if (it.m_imp->handle == NULL) // eof, make end + { + it.m_imp.reset(); + return; + } + + const path::string_type::value_type* filename_str = filename.c_str(); + if (!(filename_str[0] == path::dot // !(dot or dot-dot) + && (filename_str[1] == static_cast< path::string_type::value_type >('\0') || + (filename_str[1] == path::dot && filename_str[2] == static_cast< path::string_type::value_type >('\0'))))) + { + it.m_imp->dir_entry.replace_filename_with_status(filename, file_stat, symlink_file_stat); + return; + } + } + } + catch (std::bad_alloc&) + { + if (!ec) + throw; + + it.m_imp.reset(); + *ec = make_error_code(system::errc::not_enough_memory); + } +} + +//--------------------------------------------------------------------------------------// +// // +// recursive_directory_iterator // +// // +//--------------------------------------------------------------------------------------// + +BOOST_FILESYSTEM_DECL +void recursive_directory_iterator_construct(recursive_directory_iterator& it, path const& dir_path, unsigned int opts, system::error_code* ec) +{ + if (ec) + ec->clear(); + + directory_iterator dir_it; + detail::directory_iterator_construct(dir_it, dir_path, opts, NULL, ec); + if ((ec && *ec) || dir_it == directory_iterator()) + return; + + boost::intrusive_ptr< detail::recur_dir_itr_imp > imp; + if (!ec) + { + imp = new detail::recur_dir_itr_imp(opts); + } + else + { + imp = new (std::nothrow) detail::recur_dir_itr_imp(opts); + if (BOOST_UNLIKELY(!imp)) + { + *ec = make_error_code(system::errc::not_enough_memory); + return; + } + } + + try + { +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + imp->m_stack.push_back(std::move(dir_it)); +#else + imp->m_stack.push_back(dir_it); +#endif + + it.m_imp.swap(imp); + } + catch (std::bad_alloc&) + { + if (ec) + { + *ec = make_error_code(system::errc::not_enough_memory); + return; + } + + throw; + } +} + +namespace { + +void recursive_directory_iterator_pop_on_error(detail::recur_dir_itr_imp* imp) +{ + imp->m_stack.pop_back(); + + while (!imp->m_stack.empty()) + { + directory_iterator& dir_it = imp->m_stack.back(); + system::error_code increment_ec; + detail::directory_iterator_increment(dir_it, &increment_ec); + if (!increment_ec && dir_it != directory_iterator()) + break; + + imp->m_stack.pop_back(); + } +} + +} // namespace + +BOOST_FILESYSTEM_DECL +void recursive_directory_iterator_pop(recursive_directory_iterator& it, system::error_code* ec) +{ + BOOST_ASSERT_MSG(!it.is_end(), "pop() on end recursive_directory_iterator"); + detail::recur_dir_itr_imp* const imp = it.m_imp.get(); + + if (ec) + ec->clear(); + + imp->m_stack.pop_back(); + + while (true) + { + if (imp->m_stack.empty()) + { + it.m_imp.reset(); // done, so make end iterator + break; + } + + directory_iterator& dir_it = imp->m_stack.back(); + system::error_code increment_ec; + detail::directory_iterator_increment(dir_it, &increment_ec); + if (BOOST_UNLIKELY(!!increment_ec)) + { + if ((imp->m_options & static_cast< unsigned int >(directory_options::pop_on_error)) == 0u) + { + // Make an end iterator on errors + it.m_imp.reset(); + } + else + { + recursive_directory_iterator_pop_on_error(imp); + + if (imp->m_stack.empty()) + it.m_imp.reset(); // done, so make end iterator + } + + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::recursive_directory_iterator::pop", increment_ec)); + + *ec = increment_ec; + return; + } + + if (dir_it != directory_iterator()) + break; + + imp->m_stack.pop_back(); + } +} + +namespace { + +enum push_directory_result +{ + directory_not_pushed = 0u, + directory_pushed = 1u, + keep_depth = 1u << 1 +}; + +// Returns: true if push occurs, otherwise false. Always returns false on error. +inline push_directory_result recursive_directory_iterator_push_directory(detail::recur_dir_itr_imp* imp, system::error_code& ec) BOOST_NOEXCEPT +{ + push_directory_result result = directory_not_pushed; + try + { + // Discover if the iterator is for a directory that needs to be recursed into, + // taking symlinks and options into account. + + if ((imp->m_options & static_cast< unsigned int >(directory_options::_detail_no_push)) != 0u) + { + imp->m_options &= ~static_cast< unsigned int >(directory_options::_detail_no_push); + return result; + } + + file_type symlink_ft = status_error; + + // If we are not recursing into symlinks, we are going to have to know if the + // stack top is a symlink, so get symlink_status and verify no error occurred. + if ((imp->m_options & static_cast< unsigned int >(directory_options::follow_directory_symlink)) == 0u || + (imp->m_options & static_cast< unsigned int >(directory_options::skip_dangling_symlinks)) != 0u) + { + symlink_ft = imp->m_stack.back()->symlink_file_type(ec); + if (ec) + return result; + } + + // Logic for following predicate was contributed by Daniel Aarno to handle cyclic + // symlinks correctly and efficiently, fixing ticket #5652. + // if (((m_options & directory_options::follow_directory_symlink) == directory_options::follow_directory_symlink + // || !is_symlink(m_stack.back()->symlink_status())) + // && is_directory(m_stack.back()->status())) ... + // The predicate code has since been rewritten to pass error_code arguments, + // per ticket #5653. + + if ((imp->m_options & static_cast< unsigned int >(directory_options::follow_directory_symlink)) != 0u || symlink_ft != symlink_file) + { + file_type ft = imp->m_stack.back()->file_type(ec); + if (BOOST_UNLIKELY(!!ec)) + { + if (ec == make_error_condition(system::errc::no_such_file_or_directory) && symlink_ft == symlink_file && + (imp->m_options & static_cast< unsigned int >(directory_options::follow_directory_symlink | directory_options::skip_dangling_symlinks)) == static_cast< unsigned int >(directory_options::follow_directory_symlink | directory_options::skip_dangling_symlinks)) + { + // Skip dangling symlink and continue iteration on the current depth level + ec = error_code(); + } + + return result; + } + + if (ft != directory_file) + return result; + + if (BOOST_UNLIKELY((imp->m_stack.size() - 1u) >= static_cast< std::size_t >((std::numeric_limits< int >::max)()))) + { + // We cannot let depth to overflow + ec = make_error_code(system::errc::value_too_large); + // When depth overflow happens, avoid popping the current directory iterator + // and attempt to continue iteration on the current depth. + result = keep_depth; + return result; + } + + directory_iterator next(imp->m_stack.back()->path(), static_cast< BOOST_SCOPED_ENUM_NATIVE(directory_options) >(imp->m_options), ec); + if (!ec && next != directory_iterator()) + { +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + imp->m_stack.push_back(std::move(next)); // may throw +#else + imp->m_stack.push_back(next); // may throw +#endif + return directory_pushed; + } + } + } + catch (std::bad_alloc&) + { + ec = make_error_code(system::errc::not_enough_memory); + } + + return result; +} + +} // namespace + +BOOST_FILESYSTEM_DECL +void recursive_directory_iterator_increment(recursive_directory_iterator& it, system::error_code* ec) +{ + BOOST_ASSERT_MSG(!it.is_end(), "increment() on end recursive_directory_iterator"); + detail::recur_dir_itr_imp* const imp = it.m_imp.get(); + + if (ec) + ec->clear(); + + system::error_code local_ec; + + // if various conditions are met, push a directory_iterator into the iterator stack + push_directory_result push_result = recursive_directory_iterator_push_directory(imp, local_ec); + if (push_result == directory_pushed) + return; + + // report errors if any + if (BOOST_UNLIKELY(!!local_ec)) + { + on_error: + if ((imp->m_options & static_cast< unsigned int >(directory_options::pop_on_error)) == 0u) + { + // Make an end iterator on errors + it.m_imp.reset(); + } + else + { + if ((push_result & keep_depth) != 0u) + { + system::error_code increment_ec; + directory_iterator& dir_it = imp->m_stack.back(); + detail::directory_iterator_increment(dir_it, &increment_ec); + if (!increment_ec && dir_it != directory_iterator()) + goto on_error_return; + } + + recursive_directory_iterator_pop_on_error(imp); + + if (imp->m_stack.empty()) + it.m_imp.reset(); // done, so make end iterator + } + + on_error_return: + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("filesystem::recursive_directory_iterator increment error", local_ec)); + + *ec = local_ec; + return; + } + + // Do the actual increment operation on the top iterator in the iterator + // stack, popping the stack if necessary, until either the stack is empty or a + // non-end iterator is reached. + while (true) + { + if (imp->m_stack.empty()) + { + it.m_imp.reset(); // done, so make end iterator + break; + } + + directory_iterator& dir_it = imp->m_stack.back(); + detail::directory_iterator_increment(dir_it, &local_ec); + if (BOOST_UNLIKELY(!!local_ec)) + goto on_error; + + if (dir_it != directory_iterator()) + break; + + imp->m_stack.pop_back(); + } +} + +} // namespace detail + +} // namespace filesystem +} // namespace boost + +#include diff --git a/src/boost/libs/filesystem/src/error_handling.hpp b/src/boost/libs/filesystem/src/error_handling.hpp new file mode 100644 index 000000000..541da416a --- /dev/null +++ b/src/boost/libs/filesystem/src/error_handling.hpp @@ -0,0 +1,220 @@ +// error_handling.hpp --------------------------------------------------------------------// + +// Copyright 2002-2009, 2014 Beman Dawes +// Copyright 2019 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +//--------------------------------------------------------------------------------------// + +#ifndef BOOST_FILESYSTEM_SRC_ERROR_HANDLING_HPP_ +#define BOOST_FILESYSTEM_SRC_ERROR_HANDLING_HPP_ + +#include +#include +#include +#include + +#if defined(BOOST_WINDOWS_API) +#include +#include +#include +#endif + +#include // must be the last #include + +namespace boost { +namespace filesystem { + +#if defined(BOOST_POSIX_API) + +typedef int err_t; + +// POSIX uses a 0 return to indicate success +#define BOOST_ERRNO errno + +#define BOOST_ERROR_FILE_NOT_FOUND ENOENT +#define BOOST_ERROR_ALREADY_EXISTS EEXIST +#define BOOST_ERROR_NOT_SUPPORTED ENOSYS + +#else + +typedef boost::winapi::DWORD_ err_t; + +// Windows uses a non-0 return to indicate success +#define BOOST_ERRNO boost::winapi::GetLastError() + +#define BOOST_ERROR_FILE_NOT_FOUND boost::winapi::ERROR_FILE_NOT_FOUND_ +#define BOOST_ERROR_ALREADY_EXISTS boost::winapi::ERROR_ALREADY_EXISTS_ +#define BOOST_ERROR_NOT_SUPPORTED boost::winapi::ERROR_NOT_SUPPORTED_ + +// Note: Legacy MinGW doesn't have ntstatus.h and doesn't define NTSTATUS error codes other than STATUS_SUCCESS. +#if !defined(NT_SUCCESS) +#define NT_SUCCESS(Status) (((boost::winapi::NTSTATUS_)(Status)) >= 0) +#endif +#if !defined(STATUS_SUCCESS) +#define STATUS_SUCCESS ((boost::winapi::NTSTATUS_)0x00000000l) +#endif +#if !defined(STATUS_NOT_IMPLEMENTED) +#define STATUS_NOT_IMPLEMENTED ((boost::winapi::NTSTATUS_)0xC0000002l) +#endif +#if !defined(STATUS_INVALID_INFO_CLASS) +#define STATUS_INVALID_INFO_CLASS ((boost::winapi::NTSTATUS_)0xC0000003l) +#endif +#if !defined(STATUS_INVALID_HANDLE) +#define STATUS_INVALID_HANDLE ((boost::winapi::NTSTATUS_)0xC0000008l) +#endif +#if !defined(STATUS_INVALID_PARAMETER) +#define STATUS_INVALID_PARAMETER ((boost::winapi::NTSTATUS_)0xC000000Dl) +#endif +#if !defined(STATUS_NO_SUCH_DEVICE) +#define STATUS_NO_SUCH_DEVICE ((boost::winapi::NTSTATUS_)0xC000000El) +#endif +#if !defined(STATUS_NO_SUCH_FILE) +#define STATUS_NO_SUCH_FILE ((boost::winapi::NTSTATUS_)0xC000000Fl) +#endif +#if !defined(STATUS_NO_MORE_FILES) +#define STATUS_NO_MORE_FILES ((boost::winapi::NTSTATUS_)0x80000006l) +#endif +#if !defined(STATUS_BUFFER_OVERFLOW) +#define STATUS_BUFFER_OVERFLOW ((boost::winapi::NTSTATUS_)0x80000005l) +#endif +#if !defined(STATUS_NO_MEMORY) +#define STATUS_NO_MEMORY ((boost::winapi::NTSTATUS_)0xC0000017l) +#endif +#if !defined(STATUS_ACCESS_DENIED) +#define STATUS_ACCESS_DENIED ((boost::winapi::NTSTATUS_)0xC0000022l) +#endif +#if !defined(STATUS_OBJECT_NAME_NOT_FOUND) +#define STATUS_OBJECT_NAME_NOT_FOUND ((boost::winapi::NTSTATUS_)0xC0000034l) +#endif +#if !defined(STATUS_OBJECT_PATH_NOT_FOUND) +#define STATUS_OBJECT_PATH_NOT_FOUND ((boost::winapi::NTSTATUS_)0xC000003Al) +#endif +#if !defined(STATUS_NOT_SUPPORTED) +#define STATUS_NOT_SUPPORTED ((boost::winapi::NTSTATUS_)0xC00000BBl) +#endif +#if !defined(STATUS_BAD_NETWORK_PATH) +#define STATUS_BAD_NETWORK_PATH ((boost::winapi::NTSTATUS_)0xC00000BEl) +#endif +#if !defined(STATUS_DEVICE_DOES_NOT_EXIST) +#define STATUS_DEVICE_DOES_NOT_EXIST ((boost::winapi::NTSTATUS_)0xC00000C0l) +#endif +#if !defined(STATUS_BAD_NETWORK_NAME) +#define STATUS_BAD_NETWORK_NAME ((boost::winapi::NTSTATUS_)0xC00000CCl) +#endif +#if !defined(STATUS_DIRECTORY_NOT_EMPTY) +#define STATUS_DIRECTORY_NOT_EMPTY ((boost::winapi::NTSTATUS_)0xC0000101l) +#endif +#if !defined(STATUS_NOT_A_DIRECTORY) +#define STATUS_NOT_A_DIRECTORY ((boost::winapi::NTSTATUS_)0xC0000103l) +#endif +#if !defined(STATUS_NOT_FOUND) +#define STATUS_NOT_FOUND ((boost::winapi::NTSTATUS_)0xC0000225l) +#endif + +//! Converts NTSTATUS error codes to Win32 error codes for reporting +inline boost::winapi::DWORD_ translate_ntstatus(boost::winapi::NTSTATUS_ status) +{ + // We have to cast to unsigned integral type to avoid signed overflow and narrowing conversion in the constants. + switch (static_cast< boost::winapi::ULONG_ >(status)) + { + case static_cast< boost::winapi::ULONG_ >(STATUS_NO_MEMORY): + return boost::winapi::ERROR_OUTOFMEMORY_; + case static_cast< boost::winapi::ULONG_ >(STATUS_BUFFER_OVERFLOW): + return boost::winapi::ERROR_BUFFER_OVERFLOW_; + case static_cast< boost::winapi::ULONG_ >(STATUS_INVALID_HANDLE): + return boost::winapi::ERROR_INVALID_HANDLE_; + case static_cast< boost::winapi::ULONG_ >(STATUS_INVALID_PARAMETER): + return boost::winapi::ERROR_INVALID_PARAMETER_; + case static_cast< boost::winapi::ULONG_ >(STATUS_NO_MORE_FILES): + return boost::winapi::ERROR_NO_MORE_FILES_; + case static_cast< boost::winapi::ULONG_ >(STATUS_NO_SUCH_DEVICE): + case static_cast< boost::winapi::ULONG_ >(STATUS_DEVICE_DOES_NOT_EXIST): + return boost::winapi::ERROR_DEV_NOT_EXIST_; + case static_cast< boost::winapi::ULONG_ >(STATUS_NO_SUCH_FILE): + case static_cast< boost::winapi::ULONG_ >(STATUS_OBJECT_NAME_NOT_FOUND): + case static_cast< boost::winapi::ULONG_ >(STATUS_OBJECT_PATH_NOT_FOUND): + return boost::winapi::ERROR_FILE_NOT_FOUND_; + case static_cast< boost::winapi::ULONG_ >(STATUS_ACCESS_DENIED): + return boost::winapi::ERROR_ACCESS_DENIED_; + case static_cast< boost::winapi::ULONG_ >(STATUS_BAD_NETWORK_PATH): + return boost::winapi::ERROR_BAD_NETPATH_; + case static_cast< boost::winapi::ULONG_ >(STATUS_BAD_NETWORK_NAME): + return boost::winapi::ERROR_BAD_NET_NAME_; + case static_cast< boost::winapi::ULONG_ >(STATUS_DIRECTORY_NOT_EMPTY): + return boost::winapi::ERROR_DIR_NOT_EMPTY_; + case static_cast< boost::winapi::ULONG_ >(STATUS_NOT_A_DIRECTORY): + return boost::winapi::ERROR_DIRECTORY_; // The directory name is invalid + case static_cast< boost::winapi::ULONG_ >(STATUS_NOT_FOUND): + return boost::winapi::ERROR_NOT_FOUND_; + // map "invalid info class" to "not supported" as this error likely indicates that the kernel does not support what we request + case static_cast< boost::winapi::ULONG_ >(STATUS_INVALID_INFO_CLASS): + default: + return boost::winapi::ERROR_NOT_SUPPORTED_; + } +} + +#endif + +// error handling helpers ----------------------------------------------------------// + +// Implemented in exception.cpp +void emit_error(err_t error_num, system::error_code* ec, const char* message); +void emit_error(err_t error_num, path const& p, system::error_code* ec, const char* message); +void emit_error(err_t error_num, path const& p1, path const& p2, system::error_code* ec, const char* message); + +inline bool error(err_t error_num, system::error_code* ec, const char* message) +{ + if (BOOST_LIKELY(!error_num)) + { + if (ec) + ec->clear(); + return false; + } + else + { // error + filesystem::emit_error(error_num, ec, message); + return true; + } +} + +inline bool error(err_t error_num, path const& p, system::error_code* ec, const char* message) +{ + if (BOOST_LIKELY(!error_num)) + { + if (ec) + ec->clear(); + return false; + } + else + { // error + filesystem::emit_error(error_num, p, ec, message); + return true; + } +} + +inline bool error(err_t error_num, path const& p1, path const& p2, system::error_code* ec, const char* message) +{ + if (BOOST_LIKELY(!error_num)) + { + if (ec) + ec->clear(); + return false; + } + else + { // error + filesystem::emit_error(error_num, p1, p2, ec, message); + return true; + } +} + +} // namespace filesystem +} // namespace boost + +#include + +#endif // BOOST_FILESYSTEM_SRC_ERROR_HANDLING_HPP_ diff --git a/src/boost/libs/filesystem/src/exception.cpp b/src/boost/libs/filesystem/src/exception.cpp new file mode 100644 index 000000000..c8f7dee50 --- /dev/null +++ b/src/boost/libs/filesystem/src/exception.cpp @@ -0,0 +1,188 @@ +// boost/filesystem/exception.hpp -----------------------------------------------------// + +// Copyright Beman Dawes 2003 +// Copyright Andrey Semashev 2019 + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// Library home page: http://www.boost.org/libs/filesystem + +#include "platform_config.hpp" + +#include +#include +#include +#include +#include +#include + +#include "error_handling.hpp" + +#include // must be the last #include + +namespace boost { +namespace filesystem { + +BOOST_FILESYSTEM_DECL filesystem_error::filesystem_error(const char* what_arg, system::error_code ec) : + system::system_error(ec, what_arg) +{ + try + { + m_imp_ptr.reset(new impl()); + } + catch (...) + { + m_imp_ptr.reset(); + } +} + +BOOST_FILESYSTEM_DECL filesystem_error::filesystem_error(std::string const& what_arg, system::error_code ec) : + system::system_error(ec, what_arg) +{ + try + { + m_imp_ptr.reset(new impl()); + } + catch (...) + { + m_imp_ptr.reset(); + } +} + +BOOST_FILESYSTEM_DECL filesystem_error::filesystem_error(const char* what_arg, path const& path1_arg, system::error_code ec) : + system::system_error(ec, what_arg) +{ + try + { + m_imp_ptr.reset(new impl(path1_arg)); + } + catch (...) + { + m_imp_ptr.reset(); + } +} + +BOOST_FILESYSTEM_DECL filesystem_error::filesystem_error(std::string const& what_arg, path const& path1_arg, system::error_code ec) : + system::system_error(ec, what_arg) +{ + try + { + m_imp_ptr.reset(new impl(path1_arg)); + } + catch (...) + { + m_imp_ptr.reset(); + } +} + +BOOST_FILESYSTEM_DECL filesystem_error::filesystem_error(const char* what_arg, path const& path1_arg, path const& path2_arg, system::error_code ec) : + system::system_error(ec, what_arg) +{ + try + { + m_imp_ptr.reset(new impl(path1_arg, path2_arg)); + } + catch (...) + { + m_imp_ptr.reset(); + } +} + +BOOST_FILESYSTEM_DECL filesystem_error::filesystem_error(std::string const& what_arg, path const& path1_arg, path const& path2_arg, system::error_code ec) : + system::system_error(ec, what_arg) +{ + try + { + m_imp_ptr.reset(new impl(path1_arg, path2_arg)); + } + catch (...) + { + m_imp_ptr.reset(); + } +} + +BOOST_FILESYSTEM_DECL filesystem_error::filesystem_error(filesystem_error const& that) : + system::system_error(static_cast< system::system_error const& >(that)), + m_imp_ptr(that.m_imp_ptr) +{ +} + +BOOST_FILESYSTEM_DECL filesystem_error& filesystem_error::operator=(filesystem_error const& that) +{ + static_cast< system::system_error& >(*this) = static_cast< system::system_error const& >(that); + m_imp_ptr = that.m_imp_ptr; + return *this; +} + +BOOST_FILESYSTEM_DECL filesystem_error::~filesystem_error() BOOST_NOEXCEPT_OR_NOTHROW +{ +} + +BOOST_FILESYSTEM_DECL const char* filesystem_error::what() const BOOST_NOEXCEPT_OR_NOTHROW +{ + if (m_imp_ptr.get()) try + { + if (m_imp_ptr->m_what.empty()) + { + m_imp_ptr->m_what = system::system_error::what(); + if (!m_imp_ptr->m_path1.empty()) + { + m_imp_ptr->m_what += ": \""; + m_imp_ptr->m_what += m_imp_ptr->m_path1.string(); + m_imp_ptr->m_what += "\""; + } + if (!m_imp_ptr->m_path2.empty()) + { + m_imp_ptr->m_what += ", \""; + m_imp_ptr->m_what += m_imp_ptr->m_path2.string(); + m_imp_ptr->m_what += "\""; + } + } + + return m_imp_ptr->m_what.c_str(); + } + catch (...) + { + m_imp_ptr->m_what.clear(); + } + + return system::system_error::what(); +} + +BOOST_FILESYSTEM_DECL path const& filesystem_error::get_empty_path() BOOST_NOEXCEPT +{ + static const path empty_path; + return empty_path; +} + +// error handling helpers declared in error_handling.hpp -----------------------------------------------------// + +void emit_error(err_t error_num, system::error_code* ec, const char* message) +{ + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error(message, system::error_code(error_num, system::system_category()))); + else + ec->assign(error_num, system::system_category()); +} + +void emit_error(err_t error_num, path const& p, system::error_code* ec, const char* message) +{ + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error(message, p, system::error_code(error_num, system::system_category()))); + else + ec->assign(error_num, system::system_category()); +} + +void emit_error(err_t error_num, path const& p1, path const& p2, system::error_code* ec, const char* message) +{ + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error(message, p1, p2, system::error_code(error_num, system::system_category()))); + else + ec->assign(error_num, system::system_category()); +} + +} // namespace filesystem +} // namespace boost + +#include diff --git a/src/boost/libs/filesystem/src/operations.cpp b/src/boost/libs/filesystem/src/operations.cpp index f37245d61..e32a7f3fe 100644 --- a/src/boost/libs/filesystem/src/operations.cpp +++ b/src/boost/libs/filesystem/src/operations.cpp @@ -2,224 +2,215 @@ // Copyright 2002-2009, 2014 Beman Dawes // Copyright 2001 Dietmar Kuehl +// Copyright 2018-2022 Andrey Semashev // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt // See library home page at http://www.boost.org/libs/filesystem -//--------------------------------------------------------------------------------------// - -// define 64-bit offset macros BEFORE including boost/config.hpp (see ticket #5355) -#if defined(__ANDROID__) && defined(__ANDROID_API__) && __ANDROID_API__ < 24 -// Android fully supports 64-bit file offsets only for API 24 and above. -// -// Trying to define _FILE_OFFSET_BITS=64 for APIs below 24 -// leads to compilation failure for one or another reason, -// depending on target Android API level, Android NDK version, -// used STL, order of include paths and more. -// For more information, please see: -// - https://github.com/boostorg/filesystem/issues/65 -// - https://github.com/boostorg/filesystem/pull/69 -// -// Android NDK developers consider it the expected behavior. -// See their official position here: -// - https://github.com/android-ndk/ndk/issues/501#issuecomment-326447479 -// - https://android.googlesource.com/platform/bionic/+/a34817457feee026e8702a1d2dffe9e92b51d7d1/docs/32-bit-abi.md#32_bit-abi-bugs -// -// Thus we do not define _FILE_OFFSET_BITS in such case. -#else -// Defining _FILE_OFFSET_BITS=64 should kick in 64-bit off_t's -// (and thus st_size) on 32-bit systems that provide the Large File -// Support (LFS) interface, such as Linux, Solaris, and IRIX. -// -// At the time of this comment writing (March 2018), on most systems -// _FILE_OFFSET_BITS=64 definition is harmless: -// either the definition is supported and enables 64-bit off_t, -// or the definition is not supported and is ignored, in which case -// off_t does not change its default size for the target system -// (which may be 32-bit or 64-bit already). -// Thus it makes sense to have _FILE_OFFSET_BITS=64 defined by default, -// instead of listing every system that supports the definition. -// Those few systems, on which _FILE_OFFSET_BITS=64 is harmful, -// for example this definition causes compilation failure on those systems, -// should be exempt from defining _FILE_OFFSET_BITS by adding -// an appropriate #elif block above with the appropriate comment. -// -// _FILE_OFFSET_BITS must be defined before any headers are included -// to ensure that the definition is available to all included headers. -// That is required at least on Solaris, and possibly on other -// systems as well. -#define _FILE_OFFSET_BITS 64 -#endif - -// define BOOST_FILESYSTEM_SOURCE so that knows -// the library is being built (possibly exporting rather than importing code) -#define BOOST_FILESYSTEM_SOURCE - -#ifndef BOOST_SYSTEM_NO_DEPRECATED -# define BOOST_SYSTEM_NO_DEPRECATED -#endif - -#ifndef _POSIX_PTHREAD_SEMANTICS -# define _POSIX_PTHREAD_SEMANTICS // Sun readdir_r()needs this -#endif +//--------------------------------------------------------------------------------------// + +#include "platform_config.hpp" +#include +#include #include -#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include // std::bad_alloc, std::nothrow #include -#include -#include // for malloc, free +#include +#include +#include // for malloc, free #include -#include // for remove, rename -#if defined(__QNXNTO__) // see ticket #5355 -# include -#endif #include +#include // for rename + +// Default to POSIX under Emscripten +// If BOOST_FILESYSTEM_EMSCRIPTEN_USE_WASI is set, use WASI instead +#if defined(__wasm) && (!defined(__EMSCRIPTEN__) || defined(BOOST_FILESYSTEM_EMSCRIPTEN_USE_WASI)) +#define BOOST_FILESYSTEM_USE_WASI +#endif + +#ifdef BOOST_POSIX_API + +#include +#include + +#if defined(BOOST_FILESYSTEM_USE_WASI) +// WASI does not have statfs or statvfs. +#elif !defined(__APPLE__) && \ + (!defined(__OpenBSD__) || BOOST_OS_BSD_OPEN >= BOOST_VERSION_NUMBER(4, 4, 0)) && \ + !defined(__ANDROID__) && \ + !defined(__VXWORKS__) +#include +#define BOOST_STATVFS statvfs +#define BOOST_STATVFS_F_FRSIZE vfs.f_frsize +#else +#ifdef __OpenBSD__ +#include +#elif defined(__ANDROID__) +#include +#endif +#if !defined(__VXWORKS__) +#include +#endif +#define BOOST_STATVFS statfs +#define BOOST_STATVFS_F_FRSIZE static_cast< uintmax_t >(vfs.f_bsize) +#endif // BOOST_STATVFS definition + +#include +#include +#if !defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) +#include +#endif +#include + +#if defined(linux) || defined(__linux) || defined(__linux__) + +#include +#include +#include +#include +#if !defined(BOOST_FILESYSTEM_DISABLE_SENDFILE) +#include +#define BOOST_FILESYSTEM_USE_SENDFILE +#endif // !defined(BOOST_FILESYSTEM_DISABLE_SENDFILE) +#if !defined(BOOST_FILESYSTEM_DISABLE_COPY_FILE_RANGE) && defined(__NR_copy_file_range) +#define BOOST_FILESYSTEM_USE_COPY_FILE_RANGE +#endif // !defined(BOOST_FILESYSTEM_DISABLE_COPY_FILE_RANGE) && defined(__NR_copy_file_range) +#if !defined(BOOST_FILESYSTEM_DISABLE_STATX) && (defined(BOOST_FILESYSTEM_HAS_STATX) || defined(BOOST_FILESYSTEM_HAS_STATX_SYSCALL)) +#if !defined(BOOST_FILESYSTEM_HAS_STATX) && defined(BOOST_FILESYSTEM_HAS_STATX_SYSCALL) +#include +#endif +#define BOOST_FILESYSTEM_USE_STATX +#endif // !defined(BOOST_FILESYSTEM_DISABLE_STATX) && (defined(BOOST_FILESYSTEM_HAS_STATX) || defined(BOOST_FILESYSTEM_HAS_STATX_SYSCALL)) + +#if defined(__has_include) +#if __has_include() +// This header was introduced in Linux kernel 2.6.19 +#include +#endif +#endif + +// Some filesystem type magic constants are not defined in older kernel headers +#ifndef PROC_SUPER_MAGIC +#define PROC_SUPER_MAGIC 0x9fa0 +#endif +#ifndef SYSFS_MAGIC +#define SYSFS_MAGIC 0x62656572 +#endif +#ifndef TRACEFS_MAGIC +#define TRACEFS_MAGIC 0x74726163 +#endif +#ifndef DEBUGFS_MAGIC +#define DEBUGFS_MAGIC 0x64626720 +#endif + +#endif // defined(linux) || defined(__linux) || defined(__linux__) + +#if defined(POSIX_FADV_SEQUENTIAL) && (!defined(__ANDROID__) || __ANDROID_API__ >= 21) +#define BOOST_FILESYSTEM_HAS_POSIX_FADVISE +#endif + +#if defined(BOOST_FILESYSTEM_HAS_STAT_ST_MTIM) +#define BOOST_FILESYSTEM_STAT_ST_MTIMENSEC st_mtim.tv_nsec +#elif defined(BOOST_FILESYSTEM_HAS_STAT_ST_MTIMESPEC) +#define BOOST_FILESYSTEM_STAT_ST_MTIMENSEC st_mtimespec.tv_nsec +#elif defined(BOOST_FILESYSTEM_HAS_STAT_ST_MTIMENSEC) +#define BOOST_FILESYSTEM_STAT_ST_MTIMENSEC st_mtimensec +#endif + +#if defined(BOOST_FILESYSTEM_HAS_STAT_ST_BIRTHTIM) +#define BOOST_FILESYSTEM_STAT_ST_BIRTHTIME st_birthtim.tv_sec +#define BOOST_FILESYSTEM_STAT_ST_BIRTHTIMENSEC st_birthtim.tv_nsec +#elif defined(BOOST_FILESYSTEM_HAS_STAT_ST_BIRTHTIMESPEC) +#define BOOST_FILESYSTEM_STAT_ST_BIRTHTIME st_birthtimespec.tv_sec +#define BOOST_FILESYSTEM_STAT_ST_BIRTHTIMENSEC st_birthtimespec.tv_nsec +#elif defined(BOOST_FILESYSTEM_HAS_STAT_ST_BIRTHTIMENSEC) +#define BOOST_FILESYSTEM_STAT_ST_BIRTHTIME st_birthtime +#define BOOST_FILESYSTEM_STAT_ST_BIRTHTIMENSEC st_birthtimensec +#endif + +#include "posix_tools.hpp" + +#else // BOOST_WINDOWS_API -#ifdef BOOST_FILEYSTEM_INCLUDE_IOSTREAM -# include +#include // get_proc_address, GetModuleHandleW +#include +#include +#include +#include +#if defined(__BORLANDC__) || defined(__MWERKS__) +#if defined(BOOST_BORLANDC) +using std::time_t; #endif +#include +#else +#include +#endif + +#include "windows_tools.hpp" + +#endif // BOOST_WINDOWS_API + +#include "atomic_tools.hpp" +#include "error_handling.hpp" +#include "private_config.hpp" + +#include // must be the last #include namespace fs = boost::filesystem; using boost::filesystem::path; using boost::filesystem::filesystem_error; using boost::filesystem::perms; using boost::system::error_code; -using boost::system::error_category; using boost::system::system_category; -using std::string; -using std::wstring; - -# ifdef BOOST_POSIX_API - -# include -# include -# if !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__ANDROID__) \ - && !defined(__VXWORKS__) -# include -# define BOOST_STATVFS statvfs -# define BOOST_STATVFS_F_FRSIZE vfs.f_frsize -# else -# ifdef __OpenBSD__ -# include -# elif defined(__ANDROID__) -# include -# endif -# if !defined(__VXWORKS__) -# include -# endif -# define BOOST_STATVFS statfs -# define BOOST_STATVFS_F_FRSIZE static_cast(vfs.f_bsize) -# endif -# include -# include -# include -# include -# include "limits.h" - -# else // BOOST_WINDOW_API - -# if (defined(__MINGW32__) || defined(__CYGWIN__)) && !defined(WINVER) - // Versions of MinGW or Cygwin that support Filesystem V3 support at least WINVER 0x501. - // See MinGW's windef.h -# define WINVER 0x501 -# endif -# include -# include -# include -# include -# if !defined(_WIN32_WINNT) -# define _WIN32_WINNT 0x0500 -# endif -# if defined(__BORLANDC__) || defined(__MWERKS__) -# if defined(__BORLANDC__) - using std::time_t; -# endif -# include -# else -# include -# endif - -// REPARSE_DATA_BUFFER related definitions are found in ntifs.h, which is part of the -// Windows Device Driver Kit. Since that's inconvenient, the definitions are provided -// here. See http://msdn.microsoft.com/en-us/library/ms791514.aspx -#if !defined(REPARSE_DATA_BUFFER_HEADER_SIZE) // mingw winnt.h does provide the defs +#if defined(BOOST_POSIX_API) -#define SYMLINK_FLAG_RELATIVE 1 - -typedef struct _REPARSE_DATA_BUFFER { - ULONG ReparseTag; - USHORT ReparseDataLength; - USHORT Reserved; - union { - struct { - USHORT SubstituteNameOffset; - USHORT SubstituteNameLength; - USHORT PrintNameOffset; - USHORT PrintNameLength; - ULONG Flags; - WCHAR PathBuffer[1]; - /* Example of distinction between substitute and print names: - mklink /d ldrive c:\ - SubstituteName: c:\\??\ - PrintName: c:\ - */ - } SymbolicLinkReparseBuffer; - struct { - USHORT SubstituteNameOffset; - USHORT SubstituteNameLength; - USHORT PrintNameOffset; - USHORT PrintNameLength; - WCHAR PathBuffer[1]; - } MountPointReparseBuffer; - struct { - UCHAR DataBuffer[1]; - } GenericReparseBuffer; - }; -} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER; - -#define REPARSE_DATA_BUFFER_HEADER_SIZE \ - FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer) +// At least Mac OS X 10.6 and older doesn't support O_CLOEXEC +#ifndef O_CLOEXEC +#define O_CLOEXEC 0 +#endif +#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 +#define BOOST_FILESYSTEM_HAS_FDATASYNC #endif +#else // defined(BOOST_POSIX_API) + #ifndef MAXIMUM_REPARSE_DATA_BUFFER_SIZE -#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE ( 16 * 1024 ) +#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE (16 * 1024) #endif -# ifndef FSCTL_GET_REPARSE_POINT -# define FSCTL_GET_REPARSE_POINT 0x900a8 -# endif - -# ifndef IO_REPARSE_TAG_SYMLINK -# define IO_REPARSE_TAG_SYMLINK (0xA000000CL) -# endif +#ifndef FSCTL_GET_REPARSE_POINT +#define FSCTL_GET_REPARSE_POINT 0x900a8 +#endif -inline std::wstring wgetenv(const wchar_t* name) -{ - // use vector since for C++03 basic_string is not required to be contiguous - std::vector buf(::GetEnvironmentVariableW(name, NULL, 0)); +#ifndef SYMLINK_FLAG_RELATIVE +#define SYMLINK_FLAG_RELATIVE 1 +#endif - // C++03 vector does not have data() so use &buf[0] - return (buf.empty() - || ::GetEnvironmentVariableW(name, &buf[0], static_cast(buf.size())) == 0) - ? std::wstring() : std::wstring(&buf[0]); -} +// Fallback for MinGW/Cygwin +#ifndef SYMBOLIC_LINK_FLAG_DIRECTORY +#define SYMBOLIC_LINK_FLAG_DIRECTORY 0x1 +#endif -# endif // BOOST_WINDOWS_API +#ifndef SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE +#define SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE 0x2 +#endif -// BOOST_FILESYSTEM_STATUS_CACHE enables file_status cache in -// dir_itr_increment. The config tests are placed here because some of the -// macros being tested come from dirent.h. -// -// TODO: find out what macros indicate dirent::d_type present in more libraries -# if defined(BOOST_WINDOWS_API)\ - || defined(_DIRENT_HAVE_D_TYPE)// defined by GNU C library if d_type present -# define BOOST_FILESYSTEM_STATUS_CACHE -# endif +#endif // defined(BOOST_POSIX_API) // POSIX/Windows macros ----------------------------------------------------// @@ -230,49 +221,33 @@ inline std::wstring wgetenv(const wchar_t* name) // order of arguments, and meaning of return were followed initially, but // found to be less clear and cause more coding errors.] -# if defined(BOOST_POSIX_API) - -typedef int err_t; - -// POSIX uses a 0 return to indicate success -# define BOOST_ERRNO errno -# define BOOST_SET_CURRENT_DIRECTORY(P)(::chdir(P)== 0) -# define BOOST_CREATE_DIRECTORY(P)(::mkdir(P, S_IRWXU|S_IRWXG|S_IRWXO)== 0) -# define BOOST_CREATE_HARD_LINK(F,T)(::link(T, F)== 0) -# define BOOST_CREATE_SYMBOLIC_LINK(F,T,Flag)(::symlink(T, F)== 0) -# define BOOST_REMOVE_DIRECTORY(P)(::rmdir(P)== 0) -# define BOOST_DELETE_FILE(P)(::unlink(P)== 0) -# define BOOST_COPY_DIRECTORY(F,T)(!(::stat(from.c_str(), &from_stat)!= 0\ - || ::mkdir(to.c_str(),from_stat.st_mode)!= 0)) -# define BOOST_COPY_FILE(F,T,FailIfExistsBool)copy_file_api(F, T, FailIfExistsBool) -# define BOOST_MOVE_FILE(OLD,NEW)(::rename(OLD, NEW)== 0) -# define BOOST_RESIZE_FILE(P,SZ)(::truncate(P, SZ)== 0) - -# define BOOST_ERROR_NOT_SUPPORTED ENOSYS -# define BOOST_ERROR_ALREADY_EXISTS EEXIST - -# else // BOOST_WINDOWS_API - -typedef DWORD err_t; - -// Windows uses a non-0 return to indicate success -# define BOOST_ERRNO ::GetLastError() -# define BOOST_SET_CURRENT_DIRECTORY(P)(::SetCurrentDirectoryW(P)!= 0) -# define BOOST_CREATE_DIRECTORY(P)(::CreateDirectoryW(P, 0)!= 0) -# define BOOST_CREATE_HARD_LINK(F,T)(create_hard_link_api(F, T, 0)!= 0) -# define BOOST_CREATE_SYMBOLIC_LINK(F,T,Flag)(create_symbolic_link_api(F, T, Flag)!= 0) -# define BOOST_REMOVE_DIRECTORY(P)(::RemoveDirectoryW(P)!= 0) -# define BOOST_DELETE_FILE(P)(::DeleteFileW(P)!= 0) -# define BOOST_COPY_DIRECTORY(F,T)(::CreateDirectoryExW(F, T, 0)!= 0) -# define BOOST_COPY_FILE(F,T,FailIfExistsBool)(::CopyFileW(F, T, FailIfExistsBool)!= 0) -# define BOOST_MOVE_FILE(OLD,NEW)(::MoveFileExW(OLD, NEW, MOVEFILE_REPLACE_EXISTING|MOVEFILE_COPY_ALLOWED)!= 0) -# define BOOST_RESIZE_FILE(P,SZ)(resize_file_api(P, SZ)!= 0) -# define BOOST_READ_SYMLINK(P,T) - -# define BOOST_ERROR_ALREADY_EXISTS ERROR_ALREADY_EXISTS -# define BOOST_ERROR_NOT_SUPPORTED ERROR_NOT_SUPPORTED - -# endif +#if defined(BOOST_POSIX_API) + +#define BOOST_SET_CURRENT_DIRECTORY(P) (::chdir(P) == 0) +#define BOOST_MOVE_FILE(OLD, NEW) (::rename(OLD, NEW) == 0) +#define BOOST_RESIZE_FILE(P, SZ) (::truncate(P, SZ) == 0) + +#else // BOOST_WINDOWS_API + +#define BOOST_SET_CURRENT_DIRECTORY(P) (::SetCurrentDirectoryW(P) != 0) +#define BOOST_MOVE_FILE(OLD, NEW) (::MoveFileExW(OLD, NEW, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED) != 0) +#define BOOST_RESIZE_FILE(P, SZ) (resize_file_impl(P, SZ) != 0) + +#endif + +namespace boost { +namespace filesystem { +namespace detail { + +#if defined(linux) || defined(__linux) || defined(__linux__) +//! Initializes fill_random implementation pointer. Implemented in unique_path.cpp. +void init_fill_random_impl(unsigned int major_ver, unsigned int minor_ver, unsigned int patch_ver); +#endif // defined(linux) || defined(__linux) || defined(__linux__) + +#if defined(BOOST_WINDOWS_API) && !defined(UNDER_CE) +//! Initializes directory iterator implementation. Implemented in directory.cpp. +void init_directory_iterator_impl() BOOST_NOEXCEPT; +#endif // defined(BOOST_WINDOWS_API) && !defined(UNDER_CE) //--------------------------------------------------------------------------------------// // // @@ -280,170 +255,47 @@ typedef DWORD err_t; // // //--------------------------------------------------------------------------------------// -namespace -{ - - fs::file_type query_file_type(const path& p, error_code* ec); - - boost::filesystem::directory_iterator end_dir_itr; - - // error handling helpers ----------------------------------------------------------// - - bool error(err_t error_num, error_code* ec, const char* message); - bool error(err_t error_num, const path& p, error_code* ec, const char* message); - bool error(err_t error_num, const path& p1, const path& p2, error_code* ec, - const char* message); - - const error_code ok; - - // error_num is value of errno on POSIX, error code (from ::GetLastError()) on Windows. - // Interface changed 30 Jan 15 to have caller supply error_num as ::SetLastError() - // values were apparently getting cleared before they could be retrieved by error(). - - bool error(err_t error_num, error_code* ec, const char* message) - { - if (!error_num) - { - if (ec != 0) ec->clear(); - } - else - { // error - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error(message, - error_code(error_num, system_category()))); - else - ec->assign(error_num, system_category()); - } - return error_num != 0; - } - - bool error(err_t error_num, const path& p, error_code* ec, const char* message) - { - if (!error_num) - { - if (ec != 0) ec->clear(); - } - else - { // error - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error(message, - p, error_code(error_num, system_category()))); - else - ec->assign(error_num, system_category()); - } - return error_num != 0; - } - - bool error(err_t error_num, const path& p1, const path& p2, error_code* ec, - const char* message) - { - if (!error_num) - { - if (ec != 0) ec->clear(); - } - else - { // error - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error(message, - p1, p2, error_code(error_num, system_category()))); - else - ec->assign(error_num, system_category()); - } - return error_num != 0; - } - - // general helpers -----------------------------------------------------------------// - - bool is_empty_directory(const path& p, error_code* ec) - { - return (ec != 0 ? fs::directory_iterator(p, *ec) : fs::directory_iterator(p)) - == end_dir_itr; - } - - bool not_found_error(int errval); // forward declaration - - // only called if directory exists - bool remove_directory(const path& p) // true if succeeds or not found - { - return BOOST_REMOVE_DIRECTORY(p.c_str()) - || not_found_error(BOOST_ERRNO); // mitigate possible file system race. See #11166 - } - - // only called if file exists - bool remove_file(const path& p) // true if succeeds or not found - { - return BOOST_DELETE_FILE(p.c_str()) - || not_found_error(BOOST_ERRNO); // mitigate possible file system race. See #11166 - } - - // called by remove and remove_all_aux - bool remove_file_or_directory(const path& p, fs::file_type type, error_code* ec) - // return true if file removed, false if not removed - { - if (type == fs::file_not_found) - { - if (ec != 0) ec->clear(); - return false; - } +namespace { - if (type == fs::directory_file -# ifdef BOOST_WINDOWS_API - || type == fs::_detail_directory_symlink -# endif - ) - { - if (error(!remove_directory(p) ? BOOST_ERRNO : 0, p, ec, - "boost::filesystem::remove")) - return false; - } - else - { - if (error(!remove_file(p) ? BOOST_ERRNO : 0, p, ec, - "boost::filesystem::remove")) - return false; - } - return true; - } +// The number of retries remove_all should make if it detects that the directory it is about to enter has been replaced with a symlink or a regular file +BOOST_CONSTEXPR_OR_CONST unsigned int remove_all_directory_replaced_retry_count = 5u; - boost::uintmax_t remove_all_aux(const path& p, fs::file_type type, - error_code* ec) - { - boost::uintmax_t count = 0; +#if defined(BOOST_POSIX_API) - if (type == fs::directory_file) // but not a directory symlink - { - fs::directory_iterator itr; - if (ec != 0) - { - itr = fs::directory_iterator(p, *ec); - if (*ec) - return count; - } - else - itr = fs::directory_iterator(p); +// Size of a small buffer for a path that can be placed on stack, in character code units +BOOST_CONSTEXPR_OR_CONST std::size_t small_path_size = 1024u; - while(itr != end_dir_itr) - { - fs::file_type tmp_type = query_file_type(itr->path(), ec); - if (ec != 0 && *ec) - return count; +// Absolute maximum path length, in character code units, that we're willing to accept from various system calls. +// This value is arbitrary, it is supposed to be a hard limit to avoid memory exhaustion +// in some of the algorithms below in case of some corrupted or maliciously broken filesystem. +// A few examples of path size limits: +// - Windows: 32767 UTF-16 code units or 260 bytes for legacy multibyte APIs. +// - Linux: 4096 bytes +// - IRIX, HP-UX, Mac OS, QNX, FreeBSD, OpenBSD: 1024 bytes +// - GNU/Hurd: no hard limit +BOOST_CONSTEXPR_OR_CONST std::size_t absolute_path_max = 32u * 1024u; - count += remove_all_aux(itr->path(), tmp_type, ec); - if (ec != 0 && *ec) - return count; +#endif // defined(BOOST_POSIX_API) - fs::detail::directory_iterator_increment(itr, ec); - if (ec != 0 && *ec) - return count; - } - } +// Maximum number of resolved symlinks before we register a loop +BOOST_CONSTEXPR_OR_CONST unsigned int symloop_max = +#if defined(SYMLOOP_MAX) + SYMLOOP_MAX < 40 ? 40 : SYMLOOP_MAX +#else + 40 +#endif +; - remove_file_or_directory(p, type, ec); - if (ec != 0 && *ec) - return count; +// general helpers -----------------------------------------------------------------// + +bool is_empty_directory(path const& p, error_code* ec) +{ + fs::directory_iterator itr; + detail::directory_iterator_construct(itr, p, static_cast< unsigned int >(directory_options::none), NULL, ec); + return itr == fs::directory_iterator(); +} - return ++count; - } +bool not_found_error(int errval) BOOST_NOEXCEPT; // forward declaration #ifdef BOOST_POSIX_API @@ -453,1028 +305,3661 @@ namespace // // //--------------------------------------------------------------------------------------// - const char dot = '.'; - - bool not_found_error(int errval) - { - return errno == ENOENT || errno == ENOTDIR; - } - - bool // true if ok - copy_file_api(const std::string& from_p, - const std::string& to_p, bool fail_if_exists) - { - const std::size_t buf_sz = 32768; - boost::scoped_array buf(new char [buf_sz]); - int infile=-1, outfile=-1; // -1 means not open - - // bug fixed: code previously did a stat()on the from_file first, but that - // introduced a gratuitous race condition; the stat()is now done after the open() - - if ((infile = ::open(from_p.c_str(), O_RDONLY))< 0) - { return false; } - - struct stat from_stat; - if (::stat(from_p.c_str(), &from_stat)!= 0) - { - ::close(infile); - return false; - } - - int oflag = O_CREAT | O_WRONLY | O_TRUNC; - if (fail_if_exists) - oflag |= O_EXCL; - if ((outfile = ::open(to_p.c_str(), oflag, from_stat.st_mode))< 0) - { - int open_errno = errno; - BOOST_ASSERT(infile >= 0); - ::close(infile); - errno = open_errno; - return false; - } - - ssize_t sz, sz_read=1, sz_write; - while (sz_read > 0 - && (sz_read = ::read(infile, buf.get(), buf_sz)) > 0) - { - // Allow for partial writes - see Advanced Unix Programming (2nd Ed.), - // Marc Rochkind, Addison-Wesley, 2004, page 94 - sz_write = 0; - do - { - BOOST_ASSERT(sz_read - sz_write > 0); // #1 - // ticket 4438 claimed possible infinite loop if write returns 0. My analysis - // is that POSIX specifies 0 return only if 3rd arg is 0, and that will never - // happen due to loop entry and coninuation conditions. BOOST_ASSERT #1 above - // and #2 below added to verify that analysis. - if ((sz = ::write(outfile, buf.get() + sz_write, - sz_read - sz_write)) < 0) - { - sz_read = sz; // cause read loop termination - break; // and error reported after closes - } - BOOST_ASSERT(sz > 0); // #2 - sz_write += sz; - } while (sz_write < sz_read); - } - - if (::close(infile)< 0) - sz_read = -1; - if (::close(outfile)< 0) - sz_read = -1; - - return sz_read >= 0; - } - - inline fs::file_type query_file_type(const path& p, error_code* ec) - { - return fs::detail::symlink_status(p, ec).type(); - } - -# else +struct fd_wrapper +{ + int fd; -//--------------------------------------------------------------------------------------// -// // -// Windows-specific helpers // -// // -//--------------------------------------------------------------------------------------// + fd_wrapper() BOOST_NOEXCEPT : fd(-1) {} + explicit fd_wrapper(int fd) BOOST_NOEXCEPT : fd(fd) {} + ~fd_wrapper() BOOST_NOEXCEPT + { + if (fd >= 0) + close_fd(fd); + } + BOOST_DELETED_FUNCTION(fd_wrapper(fd_wrapper const&)) + BOOST_DELETED_FUNCTION(fd_wrapper& operator=(fd_wrapper const&)) +}; - const std::size_t buf_size=128; - - const wchar_t dot = L'.'; - - bool not_found_error(int errval) - { - return errval == ERROR_FILE_NOT_FOUND - || errval == ERROR_PATH_NOT_FOUND - || errval == ERROR_INVALID_NAME // "tools/jam/src/:sys:stat.h", "//foo" - || errval == ERROR_INVALID_DRIVE // USB card reader with no card inserted - || errval == ERROR_NOT_READY // CD/DVD drive with no disc inserted - || errval == ERROR_INVALID_PARAMETER // ":sys:stat.h" - || errval == ERROR_BAD_PATHNAME // "//nosuch" on Win64 - || errval == ERROR_BAD_NETPATH; // "//nosuch" on Win32 - } - - static bool equal_extension( wchar_t const* p, wchar_t const (&x1)[ 5 ], wchar_t const (&x2)[ 5 ] ) - { - return - (p[0] == x1[0] || p[0] == x2[0]) && - (p[1] == x1[1] || p[1] == x2[1]) && - (p[2] == x1[2] || p[2] == x2[2]) && - (p[3] == x1[3] || p[3] == x2[3]) && - p[4] == 0; - } - - perms make_permissions(const path& p, DWORD attr) - { - perms prms = fs::owner_read | fs::group_read | fs::others_read; - if ((attr & FILE_ATTRIBUTE_READONLY) == 0) - prms |= fs::owner_write | fs::group_write | fs::others_write; - path ext = p.extension(); - wchar_t const* q = ext.c_str(); - if (equal_extension(q, L".exe", L".EXE") - || equal_extension(q, L".com", L".COM") - || equal_extension(q, L".bat", L".BAT") - || equal_extension(q, L".cmd", L".CMD")) - prms |= fs::owner_exe | fs::group_exe | fs::others_exe; - return prms; - } - - // these constants come from inspecting some Microsoft sample code - std::time_t to_time_t(const FILETIME & ft) - { - __int64 t = (static_cast<__int64>(ft.dwHighDateTime)<< 32) - + ft.dwLowDateTime; -# if !defined(BOOST_MSVC) || BOOST_MSVC > 1300 // > VC++ 7.0 - t -= 116444736000000000LL; -# else - t -= 116444736000000000; -# endif - t /= 10000000; - return static_cast(t); - } - - void to_FILETIME(std::time_t t, FILETIME & ft) - { - __int64 temp = t; - temp *= 10000000; -# if !defined(BOOST_MSVC) || BOOST_MSVC > 1300 // > VC++ 7.0 - temp += 116444736000000000LL; -# else - temp += 116444736000000000; -# endif - ft.dwLowDateTime = static_cast(temp); - ft.dwHighDateTime = static_cast(temp >> 32); - } - - // Thanks to Jeremy Maitin-Shepard for much help and for permission to - // base the equivalent()implementation on portions of his - // file-equivalence-win32.cpp experimental code. - - struct handle_wrapper - { - HANDLE handle; - handle_wrapper(HANDLE h) - : handle(h){} - ~handle_wrapper() - { - if (handle != INVALID_HANDLE_VALUE) - ::CloseHandle(handle); - } - }; - - HANDLE create_file_handle(const path& p, DWORD dwDesiredAccess, - DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, - DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, - HANDLE hTemplateFile) - { - return ::CreateFileW(p.c_str(), dwDesiredAccess, dwShareMode, - lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, - hTemplateFile); - } - - bool is_reparse_point_a_symlink(const path& p) - { - handle_wrapper h(create_file_handle(p, FILE_READ_EA, - FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, NULL)); - if (h.handle == INVALID_HANDLE_VALUE) - return false; +inline bool not_found_error(int errval) BOOST_NOEXCEPT +{ + return errval == ENOENT || errval == ENOTDIR; +} - boost::scoped_array buf(new char [MAXIMUM_REPARSE_DATA_BUFFER_SIZE]); - - // Query the reparse data - DWORD dwRetLen; - BOOL result = ::DeviceIoControl(h.handle, FSCTL_GET_REPARSE_POINT, NULL, 0, buf.get(), - MAXIMUM_REPARSE_DATA_BUFFER_SIZE, &dwRetLen, NULL); - if (!result) return false; - - return reinterpret_cast(buf.get())->ReparseTag - == IO_REPARSE_TAG_SYMLINK - // Issue 9016 asked that NTFS directory junctions be recognized as directories. - // That is equivalent to recognizing them as symlinks, and then the normal symlink - // mechanism will take care of recognizing them as directories. - // - // Directory junctions are very similar to symlinks, but have some performance - // and other advantages over symlinks. They can be created from the command line - // with "mklink /j junction-name target-path". - || reinterpret_cast(buf.get())->ReparseTag - == IO_REPARSE_TAG_MOUNT_POINT; // aka "directory junction" or "junction" - } - - inline std::size_t get_full_path_name( - const path& src, std::size_t len, wchar_t* buf, wchar_t** p) - { - return static_cast( - ::GetFullPathNameW(src.c_str(), static_cast(len), buf, p)); - } - - fs::file_status process_status_failure(const path& p, error_code* ec) - { - int errval(::GetLastError()); - if (ec != 0) // always report errval, even though some - ec->assign(errval, system_category()); // errval values are not status_errors +#if defined(BOOST_FILESYSTEM_HAS_STATX) - if (not_found_error(errval)) - { - return fs::file_status(fs::file_not_found, fs::no_perms); - } - else if (errval == ERROR_SHARING_VIOLATION) - { - return fs::file_status(fs::type_unknown); - } - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::status", - p, error_code(errval, system_category()))); - return fs::file_status(fs::status_error); - } +//! A wrapper for statx libc function. Disable MSAN since at least on clang 10 it doesn't +//! know which fields of struct statx are initialized by the syscall and misdetects errors. +BOOST_FILESYSTEM_NO_SANITIZE_MEMORY +BOOST_FORCEINLINE int invoke_statx(int dirfd, const char* path, int flags, unsigned int mask, struct ::statx* stx) +{ + return ::statx(dirfd, path, flags, mask, stx); +} - // differs from symlink_status() in that directory symlinks are reported as - // _detail_directory_symlink, as required on Windows by remove() and its helpers. - fs::file_type query_file_type(const path& p, error_code* ec) - { - DWORD attr(::GetFileAttributesW(p.c_str())); - if (attr == 0xFFFFFFFF) +#elif defined(BOOST_FILESYSTEM_HAS_STATX_SYSCALL) + +//! statx emulation through fstatat +int statx_fstatat(int dirfd, const char* path, int flags, unsigned int mask, struct ::statx* stx) +{ + struct ::stat st; + flags &= AT_EMPTY_PATH | AT_NO_AUTOMOUNT | AT_SYMLINK_NOFOLLOW; + int res = ::fstatat(dirfd, path, &st, flags); + if (BOOST_LIKELY(res == 0)) { - return process_status_failure(p, ec).type(); + std::memset(stx, 0, sizeof(*stx)); + stx->stx_mask = STATX_BASIC_STATS; + stx->stx_blksize = st.st_blksize; + stx->stx_nlink = st.st_nlink; + stx->stx_uid = st.st_uid; + stx->stx_gid = st.st_gid; + stx->stx_mode = st.st_mode; + stx->stx_ino = st.st_ino; + stx->stx_size = st.st_size; + stx->stx_blocks = st.st_blocks; + stx->stx_atime.tv_sec = st.st_atim.tv_sec; + stx->stx_atime.tv_nsec = st.st_atim.tv_nsec; + stx->stx_ctime.tv_sec = st.st_ctim.tv_sec; + stx->stx_ctime.tv_nsec = st.st_ctim.tv_nsec; + stx->stx_mtime.tv_sec = st.st_mtim.tv_sec; + stx->stx_mtime.tv_nsec = st.st_mtim.tv_nsec; + stx->stx_rdev_major = major(st.st_rdev); + stx->stx_rdev_minor = minor(st.st_rdev); + stx->stx_dev_major = major(st.st_dev); + stx->stx_dev_minor = minor(st.st_dev); } - if (ec != 0) ec->clear(); + return res; +} + +typedef int statx_t(int dirfd, const char* path, int flags, unsigned int mask, struct ::statx* stx); + +//! Pointer to the actual implementation of the statx implementation +statx_t* statx_ptr = &statx_fstatat; + +inline int invoke_statx(int dirfd, const char* path, int flags, unsigned int mask, struct ::statx* stx) BOOST_NOEXCEPT +{ + return filesystem::detail::atomic_load_relaxed(statx_ptr)(dirfd, path, flags, mask, stx); +} - if (attr & FILE_ATTRIBUTE_REPARSE_POINT) +//! A wrapper for the statx syscall. Disable MSAN since at least on clang 10 it doesn't +//! know which fields of struct statx are initialized by the syscall and misdetects errors. +BOOST_FILESYSTEM_NO_SANITIZE_MEMORY +int statx_syscall(int dirfd, const char* path, int flags, unsigned int mask, struct ::statx* stx) +{ + int res = ::syscall(__NR_statx, dirfd, path, flags, mask, stx); + if (res < 0) { - if (is_reparse_point_a_symlink(p)) - return (attr & FILE_ATTRIBUTE_DIRECTORY) - ? fs::_detail_directory_symlink - : fs::symlink_file; - return fs::reparse_file; + const int err = errno; + if (BOOST_UNLIKELY(err == ENOSYS)) + { + filesystem::detail::atomic_store_relaxed(statx_ptr, &statx_fstatat); + return statx_fstatat(dirfd, path, flags, mask, stx); + } } - return (attr & FILE_ATTRIBUTE_DIRECTORY) - ? fs::directory_file - : fs::regular_file; - } + return res; +} - BOOL resize_file_api(const wchar_t* p, boost::uintmax_t size) - { - handle_wrapper h(CreateFileW(p, GENERIC_WRITE, 0, 0, OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, 0)); - LARGE_INTEGER sz; - sz.QuadPart = size; - return h.handle != INVALID_HANDLE_VALUE - && ::SetFilePointerEx(h.handle, sz, 0, FILE_BEGIN) - && ::SetEndOfFile(h.handle); - } +#endif // defined(BOOST_FILESYSTEM_HAS_STATX) - // Windows kernel32.dll functions that may or may not be present - // must be accessed through pointers +#if defined(linux) || defined(__linux) || defined(__linux__) - typedef BOOL (WINAPI *PtrCreateHardLinkW)( - /*__in*/ LPCWSTR lpFileName, - /*__in*/ LPCWSTR lpExistingFileName, - /*__reserved*/ LPSECURITY_ATTRIBUTES lpSecurityAttributes - ); +//! Initializes statx implementation pointer +inline void init_statx_impl(unsigned int major_ver, unsigned int minor_ver, unsigned int patch_ver) +{ +#if !defined(BOOST_FILESYSTEM_HAS_STATX) && defined(BOOST_FILESYSTEM_HAS_STATX_SYSCALL) + statx_t* stx = &statx_fstatat; + if (major_ver > 4u || (major_ver == 4u && minor_ver >= 11u)) + stx = &statx_syscall; - PtrCreateHardLinkW create_hard_link_api = PtrCreateHardLinkW( - ::GetProcAddress( - ::GetModuleHandleW(L"kernel32.dll"), "CreateHardLinkW")); + filesystem::detail::atomic_store_relaxed(statx_ptr, stx); +#endif // !defined(BOOST_FILESYSTEM_HAS_STATX) && defined(BOOST_FILESYSTEM_HAS_STATX_SYSCALL) +} - typedef BOOLEAN (WINAPI *PtrCreateSymbolicLinkW)( - /*__in*/ LPCWSTR lpSymlinkFileName, - /*__in*/ LPCWSTR lpTargetFileName, - /*__in*/ DWORD dwFlags - ); +#endif // defined(linux) || defined(__linux) || defined(__linux__) - PtrCreateSymbolicLinkW create_symbolic_link_api = PtrCreateSymbolicLinkW( - ::GetProcAddress( - ::GetModuleHandleW(L"kernel32.dll"), "CreateSymbolicLinkW")); +#if defined(BOOST_FILESYSTEM_USE_STATX) -#endif +//! Returns \c true if the two \c statx structures refer to the same file +inline bool equivalent_stat(struct ::statx const& s1, struct ::statx const& s2) BOOST_NOEXCEPT +{ + return s1.stx_dev_major == s2.stx_dev_major && s1.stx_dev_minor == s2.stx_dev_minor && s1.stx_ino == s2.stx_ino; +} -//#ifdef BOOST_WINDOWS_API -// -// -// inline bool get_free_disk_space(const std::wstring& ph, -// PULARGE_INTEGER avail, PULARGE_INTEGER total, PULARGE_INTEGER free) -// { return ::GetDiskFreeSpaceExW(ph.c_str(), avail, total, free)!= 0; } -// -//#endif +//! Returns file type/access mode from \c statx structure +inline mode_t get_mode(struct ::statx const& st) BOOST_NOEXCEPT +{ + return st.stx_mode; +} -} // unnamed namespace +//! Returns file size from \c statx structure +inline uintmax_t get_size(struct ::statx const& st) BOOST_NOEXCEPT +{ + return st.stx_size; +} -//--------------------------------------------------------------------------------------// -// // -// operations functions declared in operations.hpp // -// in alphabetic order // -// // -//--------------------------------------------------------------------------------------// +//! Returns optimal block size from \c statx structure +inline std::size_t get_blksize(struct ::statx const& st) BOOST_NOEXCEPT +{ + return st.stx_blksize; +} -namespace boost -{ -namespace filesystem -{ - - BOOST_FILESYSTEM_DECL - path absolute(const path& p, const path& base) - { -// if ( p.empty() || p.is_absolute() ) -// return p; -// // recursively calling absolute is sub-optimal, but is simple -// path abs_base(base.is_absolute() ? base : absolute(base)); -//# ifdef BOOST_WINDOWS_API -// if (p.has_root_directory()) -// return abs_base.root_name() / p; -// // !p.has_root_directory -// if (p.has_root_name()) -// return p.root_name() -// / abs_base.root_directory() / abs_base.relative_path() / p.relative_path(); -// // !p.has_root_name() -//# endif -// return abs_base / p; +#else // defined(BOOST_FILESYSTEM_USE_STATX) - // recursively calling absolute is sub-optimal, but is sure and simple - path abs_base(base.is_absolute() ? base : absolute(base)); +//! Returns \c true if the two \c stat structures refer to the same file +inline bool equivalent_stat(struct ::stat const& s1, struct ::stat const& s2) BOOST_NOEXCEPT +{ + // According to the POSIX stat specs, "The st_ino and st_dev fields + // taken together uniquely identify the file within the system." + return s1.st_dev == s2.st_dev && s1.st_ino == s2.st_ino; +} - // store expensive to compute values that are needed multiple times - path p_root_name (p.root_name()); - path base_root_name (abs_base.root_name()); - path p_root_directory (p.root_directory()); +//! Returns file type/access mode from \c stat structure +inline mode_t get_mode(struct ::stat const& st) BOOST_NOEXCEPT +{ + return st.st_mode; +} - if (p.empty()) - return abs_base; +//! Returns file size from \c stat structure +inline uintmax_t get_size(struct ::stat const& st) BOOST_NOEXCEPT +{ + return st.st_size; +} - if (!p_root_name.empty()) // p.has_root_name() - { - if (p_root_directory.empty()) // !p.has_root_directory() - return p_root_name / abs_base.root_directory() - / abs_base.relative_path() / p.relative_path(); - // p is absolute, so fall through to return p at end of block - } +//! Returns optimal block size from \c stat structure +inline std::size_t get_blksize(struct ::stat const& st) BOOST_NOEXCEPT +{ +#if defined(BOOST_FILESYSTEM_HAS_STAT_ST_BLKSIZE) + return st.st_blksize; +#else + return 4096u; // a suitable default used on most modern SSDs/HDDs +#endif +} + +#endif // defined(BOOST_FILESYSTEM_USE_STATX) + +//! status() implementation +file_status status_impl +( + path const& p, + error_code* ec +#if defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) || defined(BOOST_FILESYSTEM_USE_STATX) + , int basedir_fd = AT_FDCWD +#endif +) +{ +#if defined(BOOST_FILESYSTEM_USE_STATX) + struct ::statx path_stat; + int err = invoke_statx(basedir_fd, p.c_str(), AT_NO_AUTOMOUNT, STATX_TYPE | STATX_MODE, &path_stat); +#elif defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + struct ::stat path_stat; + int err = ::fstatat(basedir_fd, p.c_str(), &path_stat, AT_NO_AUTOMOUNT); +#else + struct ::stat path_stat; + int err = ::stat(p.c_str(), &path_stat); +#endif - else if (!p_root_directory.empty()) // p.has_root_directory() + if (err != 0) { -# ifdef BOOST_POSIX_API - // POSIX can have root name it it is a network path - if (base_root_name.empty()) // !abs_base.has_root_name() - return p; -# endif - return base_root_name / p; + err = errno; + if (ec) // always report errno, even though some + ec->assign(err, system_category()); // errno values are not status_errors + + if (not_found_error(err)) + return fs::file_status(fs::file_not_found, fs::no_perms); + + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::status", p, error_code(err, system_category()))); + + return fs::file_status(fs::status_error); } - else +#if defined(BOOST_FILESYSTEM_USE_STATX) + if (BOOST_UNLIKELY((path_stat.stx_mask & (STATX_TYPE | STATX_MODE)) != (STATX_TYPE | STATX_MODE))) { - return abs_base / p; + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::status"); + return fs::file_status(fs::status_error); } +#endif + + const mode_t mode = get_mode(path_stat); + if (S_ISDIR(mode)) + return fs::file_status(fs::directory_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISREG(mode)) + return fs::file_status(fs::regular_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISBLK(mode)) + return fs::file_status(fs::block_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISCHR(mode)) + return fs::file_status(fs::character_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISFIFO(mode)) + return fs::file_status(fs::fifo_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISSOCK(mode)) + return fs::file_status(fs::socket_file, static_cast< perms >(mode) & fs::perms_mask); - return p; // p.is_absolute() is true - } + return fs::file_status(fs::type_unknown); +} -namespace detail +//! symlink_status() implementation +file_status symlink_status_impl +( + path const& p, + error_code* ec +#if defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) || defined(BOOST_FILESYSTEM_USE_STATX) + , int basedir_fd = AT_FDCWD +#endif +) { - BOOST_FILESYSTEM_DECL bool possible_large_file_size_support() - { -# ifdef BOOST_POSIX_API - struct stat lcl_stat; - return sizeof(lcl_stat.st_size)> 4; -# else - return true; -# endif - } +#if defined(BOOST_FILESYSTEM_USE_STATX) + struct ::statx path_stat; + int err = invoke_statx(basedir_fd, p.c_str(), AT_SYMLINK_NOFOLLOW | AT_NO_AUTOMOUNT, STATX_TYPE | STATX_MODE, &path_stat); +#elif defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + struct ::stat path_stat; + int err = ::fstatat(basedir_fd, p.c_str(), &path_stat, AT_SYMLINK_NOFOLLOW | AT_NO_AUTOMOUNT); +#else + struct ::stat path_stat; + int err = ::lstat(p.c_str(), &path_stat); +#endif - BOOST_FILESYSTEM_DECL - path canonical(const path& p, const path& base, system::error_code* ec) - { - path source (p.is_absolute() ? p : absolute(p, base)); - path root(source.root_path()); - path result; + if (err != 0) + { + err = errno; + if (ec) // always report errno, even though some + ec->assign(err, system_category()); // errno values are not status_errors - system::error_code local_ec; - file_status stat (status(source, local_ec)); + if (not_found_error(err)) // these are not errors + return fs::file_status(fs::file_not_found, fs::no_perms); - if (stat.type() == fs::file_not_found) - { - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error( - "boost::filesystem::canonical", source, - error_code(system::errc::no_such_file_or_directory, system::generic_category()))); - ec->assign(system::errc::no_such_file_or_directory, system::generic_category()); - return result; + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::symlink_status", p, error_code(err, system_category()))); + + return fs::file_status(fs::status_error); } - else if (local_ec) + +#if defined(BOOST_FILESYSTEM_USE_STATX) + if (BOOST_UNLIKELY((path_stat.stx_mask & (STATX_TYPE | STATX_MODE)) != (STATX_TYPE | STATX_MODE))) { - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error( - "boost::filesystem::canonical", source, local_ec)); - *ec = local_ec; - return result; + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::symlink_status"); + return fs::file_status(fs::status_error); } +#endif + + const mode_t mode = get_mode(path_stat); + if (S_ISREG(mode)) + return fs::file_status(fs::regular_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISDIR(mode)) + return fs::file_status(fs::directory_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISLNK(mode)) + return fs::file_status(fs::symlink_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISBLK(mode)) + return fs::file_status(fs::block_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISCHR(mode)) + return fs::file_status(fs::character_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISFIFO(mode)) + return fs::file_status(fs::fifo_file, static_cast< perms >(mode) & fs::perms_mask); + if (S_ISSOCK(mode)) + return fs::file_status(fs::socket_file, static_cast< perms >(mode) & fs::perms_mask); + + return fs::file_status(fs::type_unknown); +} - bool scan (true); - while (scan) +//! Flushes buffered data and attributes written to the file to permanent storage +inline int full_sync(int fd) +{ + while (true) { - scan = false; - result.clear(); - for (path::iterator itr = source.begin(); itr != source.end(); ++itr) - { - if (*itr == dot_path()) - continue; - if (*itr == dot_dot_path()) +#if defined(__APPLE__) && defined(__MACH__) && defined(F_FULLFSYNC) + // Mac OS does not flush data to physical storage with fsync() + int err = ::fcntl(fd, F_FULLFSYNC); +#else + int err = ::fsync(fd); +#endif + if (BOOST_UNLIKELY(err < 0)) { - if (result != root) - result.remove_filename(); - continue; + err = errno; + // POSIX says fsync can return EINTR (https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html). + // fcntl(F_FULLFSYNC) isn't documented to return EINTR, but it doesn't hurt to check. + if (err == EINTR) + continue; + + return err; } - result /= *itr; + break; + } - bool is_sym (is_symlink(detail::symlink_status(result, ec))); - if (ec && *ec) - return path(); + return 0; +} - if (is_sym) +//! Flushes buffered data written to the file to permanent storage +inline int data_sync(int fd) +{ +#if defined(BOOST_FILESYSTEM_HAS_FDATASYNC) && !(defined(__APPLE__) && defined(__MACH__) && defined(F_FULLFSYNC)) + while (true) + { + int err = ::fdatasync(fd); + if (BOOST_UNLIKELY(err != 0)) { - path link(detail::read_symlink(result, ec)); - if (ec && *ec) - return path(); - result.remove_filename(); - - if (link.is_absolute()) - { - for (++itr; itr != source.end(); ++itr) - link /= *itr; - source = link; - } - else // link is relative - { - path new_source(result); - new_source /= link; - for (++itr; itr != source.end(); ++itr) - new_source /= *itr; - source = new_source; - } - scan = true; // symlink causes scan to be restarted - break; - } - } - } - if (ec != 0) - ec->clear(); - BOOST_ASSERT_MSG(result.is_absolute(), "canonical() implementation error; please report"); - return result; - } + err = errno; + // POSIX says fsync can return EINTR (https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html). + // It doesn't say so for fdatasync, but it is reasonable to expect it as well. + if (err == EINTR) + continue; - BOOST_FILESYSTEM_DECL - void copy(const path& from, const path& to, system::error_code* ec) - { - file_status s(detail::symlink_status(from, ec)); - if (ec != 0 && *ec) return; + return err; + } - if(is_symlink(s)) - { - detail::copy_symlink(from, to, ec); - } - else if(is_directory(s)) - { - detail::copy_directory(from, to, ec); - } - else if(is_regular_file(s)) - { - detail::copy_file(from, to, detail::fail_if_exists, ec); + break; } - else - { - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::copy", - from, to, error_code(BOOST_ERROR_NOT_SUPPORTED, system_category()))); - ec->assign(BOOST_ERROR_NOT_SUPPORTED, system_category()); - } - } - - BOOST_FILESYSTEM_DECL - void copy_directory(const path& from, const path& to, system::error_code* ec) - { -# ifdef BOOST_POSIX_API - struct stat from_stat; -# endif - error(!BOOST_COPY_DIRECTORY(from.c_str(), to.c_str()) ? BOOST_ERRNO : 0, - from, to, ec, "boost::filesystem::copy_directory"); - } - - BOOST_FILESYSTEM_DECL - void copy_file(const path& from, const path& to, copy_option option, error_code* ec) - { - error(!BOOST_COPY_FILE(from.c_str(), to.c_str(), - option == fail_if_exists) ? BOOST_ERRNO : 0, - from, to, ec, "boost::filesystem::copy_file"); - } - - BOOST_FILESYSTEM_DECL - void copy_symlink(const path& existing_symlink, const path& new_symlink, - system::error_code* ec) - { -# if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0600 - error(BOOST_ERROR_NOT_SUPPORTED, new_symlink, existing_symlink, ec, - "boost::filesystem::copy_symlink"); - -# else // modern Windows or BOOST_POSIX_API - path p(read_symlink(existing_symlink, ec)); - if (ec != 0 && *ec) return; - create_symlink(p, new_symlink, ec); -# endif - } - - BOOST_FILESYSTEM_DECL - bool create_directories(const path& p, system::error_code* ec) - { - if (p.empty()) - { - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error( - "boost::filesystem::create_directories", p, - system::errc::make_error_code(system::errc::invalid_argument))); - else - ec->assign(system::errc::invalid_argument, system::generic_category()); - return false; - } - - if (p.filename_is_dot() || p.filename_is_dot_dot()) - return create_directories(p.parent_path(), ec); - - error_code local_ec; - file_status p_status = status(p, local_ec); + return 0; +#else + return full_sync(fd); +#endif +} - if (p_status.type() == directory_file) - { - if (ec != 0) - ec->clear(); - return false; - } +// Min and max buffer sizes are selected to minimize the overhead from system calls. +// The values are picked based on coreutils cp(1) benchmarking data described here: +// https://github.com/coreutils/coreutils/blob/d1b0257077c0b0f0ee25087efd46270345d1dd1f/src/ioblksize.h#L23-L72 +BOOST_CONSTEXPR_OR_CONST uint_least32_t min_read_write_buf_size = 8u * 1024u; +BOOST_CONSTEXPR_OR_CONST uint_least32_t max_read_write_buf_size = 256u * 1024u; + +//! copy_file read/write loop implementation +int copy_file_data_read_write_impl(int infile, int outfile, char* buf, std::size_t buf_size) +{ +#if defined(BOOST_FILESYSTEM_HAS_POSIX_FADVISE) + ::posix_fadvise(infile, 0, 0, POSIX_FADV_SEQUENTIAL); +#endif - path parent = p.parent_path(); - BOOST_ASSERT_MSG(parent != p, "internal error: p == p.parent_path()"); - if (!parent.empty()) + // Don't use file size to limit the amount of data to copy since some filesystems, like procfs or sysfs, + // provide files with generated content and indicate that their size is zero or 4096. Just copy as much data + // as we can read from the input file. + while (true) { - // determine if the parent exists - file_status parent_status = status(parent, local_ec); + ssize_t sz_read = ::read(infile, buf, buf_size); + if (sz_read == 0) + break; + if (BOOST_UNLIKELY(sz_read < 0)) + { + int err = errno; + if (err == EINTR) + continue; + return err; + } - // if the parent does not exist, create the parent - if (parent_status.type() == file_not_found) - { - create_directories(parent, local_ec); - if (local_ec) + // Allow for partial writes - see Advanced Unix Programming (2nd Ed.), + // Marc Rochkind, Addison-Wesley, 2004, page 94 + for (ssize_t sz_wrote = 0; sz_wrote < sz_read;) { - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error( - "boost::filesystem::create_directories", parent, local_ec)); - else - *ec = local_ec; - return false; + ssize_t sz = ::write(outfile, buf + sz_wrote, static_cast< std::size_t >(sz_read - sz_wrote)); + if (BOOST_UNLIKELY(sz < 0)) + { + int err = errno; + if (err == EINTR) + continue; + return err; + } + + sz_wrote += sz; } - } } - // create the directory - return create_directory(p, ec); - } - - BOOST_FILESYSTEM_DECL - bool create_directory(const path& p, error_code* ec) - { - if (BOOST_CREATE_DIRECTORY(p.c_str())) - { - if (ec != 0) - ec->clear(); - return true; - } + return 0; +} - // attempt to create directory failed - int errval(BOOST_ERRNO); // save reason for failure - error_code dummy; +//! copy_file implementation that uses read/write loop (fallback using a stack buffer) +int copy_file_data_read_write_stack_buf(int infile, int outfile) +{ + char stack_buf[min_read_write_buf_size]; + return copy_file_data_read_write_impl(infile, outfile, stack_buf, sizeof(stack_buf)); +} - if (is_directory(p, dummy)) +//! copy_file implementation that uses read/write loop +int copy_file_data_read_write(int infile, int outfile, uintmax_t size, std::size_t blksize) +{ { - if (ec != 0) - ec->clear(); - return false; - } - - // attempt to create directory failed && it doesn't already exist - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::create_directory", - p, error_code(errval, system_category()))); - else - ec->assign(errval, system_category()); - - return false; - } - - BOOST_FILESYSTEM_DECL - void create_directory_symlink(const path& to, const path& from, - system::error_code* ec) - { -# if defined(BOOST_WINDOWS_API) && _WIN32_WINNT < 0x0600 // SDK earlier than Vista and Server 2008 - - error(BOOST_ERROR_NOT_SUPPORTED, to, from, ec, - "boost::filesystem::create_directory_symlink"); -# else - -# if defined(BOOST_WINDOWS_API) && _WIN32_WINNT >= 0x0600 - // see if actually supported by Windows runtime dll - if (error(!create_symbolic_link_api ? BOOST_ERROR_NOT_SUPPORTED : 0, to, from, ec, - "boost::filesystem::create_directory_symlink")) - return; -# endif - - error(!BOOST_CREATE_SYMBOLIC_LINK(from.c_str(), to.c_str(), - SYMBOLIC_LINK_FLAG_DIRECTORY) ? BOOST_ERRNO : 0, - to, from, ec, "boost::filesystem::create_directory_symlink"); -# endif - } - - BOOST_FILESYSTEM_DECL - void create_hard_link(const path& to, const path& from, error_code* ec) - { - -# if defined(BOOST_WINDOWS_API) && _WIN32_WINNT < 0x0500 // SDK earlier than Win 2K - - error(BOOST_ERROR_NOT_SUPPORTED, to, from, ec, - "boost::filesystem::create_hard_link"); -# else - -# if defined(BOOST_WINDOWS_API) && _WIN32_WINNT >= 0x0500 - // see if actually supported by Windows runtime dll - if (error(!create_hard_link_api ? BOOST_ERROR_NOT_SUPPORTED : 0, to, from, ec, - "boost::filesystem::create_hard_link")) - return; -# endif - - error(!BOOST_CREATE_HARD_LINK(from.c_str(), to.c_str()) ? BOOST_ERRNO : 0, to, from, ec, - "boost::filesystem::create_hard_link"); -# endif - } - - BOOST_FILESYSTEM_DECL - void create_symlink(const path& to, const path& from, error_code* ec) - { -# if defined(BOOST_WINDOWS_API) && _WIN32_WINNT < 0x0600 // SDK earlier than Vista and Server 2008 - error(BOOST_ERROR_NOT_SUPPORTED, to, from, ec, - "boost::filesystem::create_directory_symlink"); -# else - -# if defined(BOOST_WINDOWS_API) && _WIN32_WINNT >= 0x0600 - // see if actually supported by Windows runtime dll - if (error(!create_symbolic_link_api ? BOOST_ERROR_NOT_SUPPORTED : 0, to, from, ec, - "boost::filesystem::create_symlink")) - return; -# endif - - error(!BOOST_CREATE_SYMBOLIC_LINK(from.c_str(), to.c_str(), 0) ? BOOST_ERRNO : 0, - to, from, ec, "boost::filesystem::create_symlink"); -# endif - } - - BOOST_FILESYSTEM_DECL - path current_path(error_code* ec) - { -# ifdef BOOST_POSIX_API - path cur; - for (long path_max = 128;; path_max *=2)// loop 'til buffer large enough - { - boost::scoped_array - buf(new char[static_cast(path_max)]); - if (::getcwd(buf.get(), static_cast(path_max))== 0) - { - if (error(errno != ERANGE ? errno : 0 - // bug in some versions of the Metrowerks C lib on the Mac: wrong errno set -# if defined(__MSL__) && (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)) - && errno != 0 -# endif - , ec, "boost::filesystem::current_path")) - { - break; - } - } - else - { - cur = buf.get(); - if (ec != 0) ec->clear(); - break; - } + uintmax_t buf_sz = size; + // Prefer the buffer to be larger than the file size so that we don't have + // to perform an extra read if the file fits in the buffer exactly. + buf_sz += (buf_sz < ~static_cast< uintmax_t >(0u)); + if (buf_sz < blksize) + buf_sz = blksize; + if (buf_sz < min_read_write_buf_size) + buf_sz = min_read_write_buf_size; + if (buf_sz > max_read_write_buf_size) + buf_sz = max_read_write_buf_size; + const std::size_t buf_size = static_cast< std::size_t >(boost::core::bit_ceil(static_cast< uint_least32_t >(buf_sz))); + boost::scoped_array< char > buf(new (std::nothrow) char[buf_size]); + if (BOOST_LIKELY(!!buf.get())) + return copy_file_data_read_write_impl(infile, outfile, buf.get(), buf_size); } - return cur; -# else - DWORD sz; - if ((sz = ::GetCurrentDirectoryW(0, NULL)) == 0)sz = 1; - boost::scoped_array buf(new path::value_type[sz]); - error(::GetCurrentDirectoryW(sz, buf.get()) == 0 ? BOOST_ERRNO : 0, ec, - "boost::filesystem::current_path"); - return path(buf.get()); -# endif - } + return copy_file_data_read_write_stack_buf(infile, outfile); +} +typedef int copy_file_data_t(int infile, int outfile, uintmax_t size, std::size_t blksize); - BOOST_FILESYSTEM_DECL - void current_path(const path& p, system::error_code* ec) - { - error(!BOOST_SET_CURRENT_DIRECTORY(p.c_str()) ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::current_path"); - } +//! Pointer to the actual implementation of the copy_file_data implementation +copy_file_data_t* copy_file_data = ©_file_data_read_write; - BOOST_FILESYSTEM_DECL - bool equivalent(const path& p1, const path& p2, system::error_code* ec) - { -# ifdef BOOST_POSIX_API - struct stat s2; - int e2(::stat(p2.c_str(), &s2)); - struct stat s1; - int e1(::stat(p1.c_str(), &s1)); +#if defined(BOOST_FILESYSTEM_USE_SENDFILE) || defined(BOOST_FILESYSTEM_USE_COPY_FILE_RANGE) - if (e1 != 0 || e2 != 0) - { - // if one is invalid and the other isn't then they aren't equivalent, - // but if both are invalid then it is an error - error (e1 != 0 && e2 != 0, p1, p2, ec, "boost::filesystem::equivalent"); - return false; - } +//! copy_file_data wrapper that tests if a read/write loop must be used for a given filesystem +template< typename CopyFileData > +int check_fs_type(int infile, int outfile, uintmax_t size, std::size_t blksize); - // both stats now known to be valid - return s1.st_dev == s2.st_dev && s1.st_ino == s2.st_ino - // According to the POSIX stat specs, "The st_ino and st_dev fields - // taken together uniquely identify the file within the system." - // Just to be sure, size and mod time are also checked. - && s1.st_size == s2.st_size && s1.st_mtime == s2.st_mtime; +#endif // defined(BOOST_FILESYSTEM_USE_SENDFILE) || defined(BOOST_FILESYSTEM_USE_COPY_FILE_RANGE) -# else // Windows +#if defined(BOOST_FILESYSTEM_USE_SENDFILE) - // Note well: Physical location on external media is part of the - // equivalence criteria. If there are no open handles, physical location - // can change due to defragmentation or other relocations. Thus handles - // must be held open until location information for both paths has - // been retrieved. +struct copy_file_data_sendfile +{ + //! copy_file implementation that uses sendfile loop. Requires sendfile to support file descriptors. + static int impl(int infile, int outfile, uintmax_t size, std::size_t blksize) + { + // sendfile will not send more than this amount of data in one call + BOOST_CONSTEXPR_OR_CONST std::size_t max_batch_size = 0x7ffff000u; + uintmax_t offset = 0u; + while (offset < size) + { + uintmax_t size_left = size - offset; + std::size_t size_to_copy = max_batch_size; + if (size_left < static_cast< uintmax_t >(max_batch_size)) + size_to_copy = static_cast< std::size_t >(size_left); + ssize_t sz = ::sendfile(outfile, infile, NULL, size_to_copy); + if (BOOST_UNLIKELY(sz < 0)) + { + int err = errno; + if (err == EINTR) + continue; + + if (offset == 0u) + { + // sendfile may fail with EINVAL if the underlying filesystem does not support it + if (err == EINVAL) + { + fallback_to_read_write: + return copy_file_data_read_write(infile, outfile, size, blksize); + } + + if (err == ENOSYS) + { + filesystem::detail::atomic_store_relaxed(copy_file_data, ©_file_data_read_write); + goto fallback_to_read_write; + } + } + + return err; + } + + offset += sz; + } - // p2 is done first, so any error reported is for p1 - handle_wrapper h2( - create_file_handle( - p2.c_str(), - 0, - FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, - 0, - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS, - 0)); - - handle_wrapper h1( - create_file_handle( - p1.c_str(), - 0, - FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, - 0, - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS, - 0)); - - if (h1.handle == INVALID_HANDLE_VALUE - || h2.handle == INVALID_HANDLE_VALUE) - { - // if one is invalid and the other isn't, then they aren't equivalent, - // but if both are invalid then it is an error - error((h1.handle == INVALID_HANDLE_VALUE - && h2.handle == INVALID_HANDLE_VALUE) ? BOOST_ERROR_NOT_SUPPORTED : 0, p1, p2, ec, - "boost::filesystem::equivalent"); - return false; + return 0; } +}; - // at this point, both handles are known to be valid +#endif // defined(BOOST_FILESYSTEM_USE_SENDFILE) + +#if defined(BOOST_FILESYSTEM_USE_COPY_FILE_RANGE) + +struct copy_file_data_copy_file_range +{ + //! copy_file implementation that uses copy_file_range loop. Requires copy_file_range to support cross-filesystem copying. + static int impl(int infile, int outfile, uintmax_t size, std::size_t blksize) + { + // Although copy_file_range does not document any particular upper limit of one transfer, still use some upper bound to guarantee + // that size_t is not overflown in case if off_t is larger and the file size does not fit in size_t. + BOOST_CONSTEXPR_OR_CONST std::size_t max_batch_size = 0x7ffff000u; + uintmax_t offset = 0u; + while (offset < size) + { + uintmax_t size_left = size - offset; + std::size_t size_to_copy = max_batch_size; + if (size_left < static_cast< uintmax_t >(max_batch_size)) + size_to_copy = static_cast< std::size_t >(size_left); + // Note: Use syscall directly to avoid depending on libc version. copy_file_range is added in glibc 2.27. + // uClibc-ng does not have copy_file_range as of the time of this writing (the latest uClibc-ng release is 1.0.33). + loff_t sz = ::syscall(__NR_copy_file_range, infile, (loff_t*)NULL, outfile, (loff_t*)NULL, size_to_copy, (unsigned int)0u); + if (BOOST_UNLIKELY(sz < 0)) + { + int err = errno; + if (err == EINTR) + continue; + + if (offset == 0u) + { + // copy_file_range may fail with EINVAL if the underlying filesystem does not support it. + // In some RHEL/CentOS 7.7-7.8 kernel versions, copy_file_range on NFSv4 is also known to return EOPNOTSUPP + // if the remote server does not support COPY, despite that it is not a documented error code. + // See https://patchwork.kernel.org/project/linux-nfs/patch/20190411183418.4510-1-olga.kornievskaia@gmail.com/ + // and https://bugzilla.redhat.com/show_bug.cgi?id=1783554. + if (err == EINVAL || err == EOPNOTSUPP) + { +#if !defined(BOOST_FILESYSTEM_USE_SENDFILE) + fallback_to_read_write: +#endif + return copy_file_data_read_write(infile, outfile, size, blksize); + } + + if (err == EXDEV) + { +#if defined(BOOST_FILESYSTEM_USE_SENDFILE) + fallback_to_sendfile: + return copy_file_data_sendfile::impl(infile, outfile, size, blksize); +#else + goto fallback_to_read_write; +#endif + } + + if (err == ENOSYS) + { +#if defined(BOOST_FILESYSTEM_USE_SENDFILE) + filesystem::detail::atomic_store_relaxed(copy_file_data, &check_fs_type< copy_file_data_sendfile >); + goto fallback_to_sendfile; +#else + filesystem::detail::atomic_store_relaxed(copy_file_data, ©_file_data_read_write); + goto fallback_to_read_write; +#endif + } + } + + return err; + } + + offset += sz; + } + + return 0; + } +}; + +#endif // defined(BOOST_FILESYSTEM_USE_COPY_FILE_RANGE) + +#if defined(BOOST_FILESYSTEM_USE_SENDFILE) || defined(BOOST_FILESYSTEM_USE_COPY_FILE_RANGE) + +//! copy_file_data wrapper that tests if a read/write loop must be used for a given filesystem +template< typename CopyFileData > +int check_fs_type(int infile, int outfile, uintmax_t size, std::size_t blksize) +{ + { + // Some filesystems have regular files with generated content. Such files have arbitrary size, including zero, + // but have actual content. Linux system calls sendfile or copy_file_range will not copy contents of such files, + // so we must use a read/write loop to handle them. + // https://lore.kernel.org/linux-fsdevel/20210212044405.4120619-1-drinkcat@chromium.org/T/ + struct statfs sfs; + while (true) + { + int err = ::fstatfs(infile, &sfs); + if (BOOST_UNLIKELY(err < 0)) + { + err = errno; + if (err == EINTR) + continue; + + goto fallback_to_read_write; + } + + break; + } + + if (BOOST_UNLIKELY(sfs.f_type == PROC_SUPER_MAGIC || + sfs.f_type == SYSFS_MAGIC || + sfs.f_type == TRACEFS_MAGIC || + sfs.f_type == DEBUGFS_MAGIC)) + { + fallback_to_read_write: + return copy_file_data_read_write(infile, outfile, size, blksize); + } + } + + return CopyFileData::impl(infile, outfile, size, blksize); +} + +#endif // defined(BOOST_FILESYSTEM_USE_SENDFILE) || defined(BOOST_FILESYSTEM_USE_COPY_FILE_RANGE) + +#if defined(linux) || defined(__linux) || defined(__linux__) + +//! Initializes copy_file_data implementation pointer +inline void init_copy_file_data_impl(unsigned int major_ver, unsigned int minor_ver, unsigned int patch_ver) +{ +#if defined(BOOST_FILESYSTEM_USE_SENDFILE) || defined(BOOST_FILESYSTEM_USE_COPY_FILE_RANGE) + copy_file_data_t* cfd = ©_file_data_read_write; + +#if defined(BOOST_FILESYSTEM_USE_SENDFILE) + // sendfile started accepting file descriptors as the target in Linux 2.6.33 + if (major_ver > 2u || (major_ver == 2u && (minor_ver > 6u || (minor_ver == 6u && patch_ver >= 33u)))) + cfd = &check_fs_type< copy_file_data_sendfile >; +#endif + +#if defined(BOOST_FILESYSTEM_USE_COPY_FILE_RANGE) + // Although copy_file_range appeared in Linux 4.5, it did not support cross-filesystem copying until 5.3. + // copy_file_data_copy_file_range will fallback to copy_file_data_sendfile if copy_file_range returns EXDEV. + if (major_ver > 4u || (major_ver == 4u && minor_ver >= 5u)) + cfd = &check_fs_type< copy_file_data_copy_file_range >; +#endif + + filesystem::detail::atomic_store_relaxed(copy_file_data, cfd); +#endif // defined(BOOST_FILESYSTEM_USE_SENDFILE) || defined(BOOST_FILESYSTEM_USE_COPY_FILE_RANGE) +} + +#endif // defined(linux) || defined(__linux) || defined(__linux__) + +#if defined(linux) || defined(__linux) || defined(__linux__) + +struct syscall_initializer +{ + syscall_initializer() + { + struct ::utsname system_info; + if (BOOST_UNLIKELY(::uname(&system_info) < 0)) + return; + + unsigned int major_ver = 0u, minor_ver = 0u, patch_ver = 0u; + int count = std::sscanf(system_info.release, "%u.%u.%u", &major_ver, &minor_ver, &patch_ver); + if (BOOST_UNLIKELY(count < 3)) + return; + + init_statx_impl(major_ver, minor_ver, patch_ver); + init_copy_file_data_impl(major_ver, minor_ver, patch_ver); + init_fill_random_impl(major_ver, minor_ver, patch_ver); + } +}; + +BOOST_FILESYSTEM_INIT_PRIORITY(BOOST_FILESYSTEM_FUNC_PTR_INIT_PRIORITY) BOOST_ATTRIBUTE_UNUSED BOOST_FILESYSTEM_ATTRIBUTE_RETAIN +const syscall_initializer syscall_init; + +#endif // defined(linux) || defined(__linux) || defined(__linux__) + +//! remove() implementation +inline bool remove_impl +( + path const& p, + fs::file_type type, + error_code* ec +#if defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + , int basedir_fd = AT_FDCWD +#endif +) +{ + if (type == fs::file_not_found) + return false; + + int res; +#if defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + res = ::unlinkat(basedir_fd, p.c_str(), type == fs::directory_file ? AT_REMOVEDIR : 0); +#else + if (type == fs::directory_file) + res = ::rmdir(p.c_str()); + else + res = ::unlink(p.c_str()); +#endif + + if (res != 0) + { + int err = errno; + if (BOOST_UNLIKELY(!not_found_error(err))) + emit_error(err, p, ec, "boost::filesystem::remove"); + + return false; + } + + return true; +} + +//! remove() implementation +inline bool remove_impl(path const& p, error_code* ec) +{ + // Since POSIX remove() is specified to work with either files or directories, in a + // perfect world it could just be called. But some important real-world operating + // systems (Windows, Mac OS, for example) don't implement the POSIX spec. So + // we have to distinguish between files and directories and call corresponding APIs + // to remove them. + + error_code local_ec; + fs::file_type type = fs::detail::symlink_status_impl(p, &local_ec).type(); + if (BOOST_UNLIKELY(type == fs::status_error)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::remove", p, local_ec)); + + *ec = local_ec; + return false; + } + + return fs::detail::remove_impl(p, type, ec); +} + +//! remove_all() implementation +uintmax_t remove_all_impl +( + path const& p, + error_code* ec +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) && defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + , int basedir_fd = AT_FDCWD +#endif +) +{ +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) && defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + fs::detail::directory_iterator_params params; + params.basedir_fd = basedir_fd; + params.iterator_fd = -1; +#endif + + error_code dit_create_ec; + for (unsigned int attempt = 0u; attempt < remove_all_directory_replaced_retry_count; ++attempt) + { + fs::file_type type; + { + error_code local_ec; + type = fs::detail::symlink_status_impl + ( + p, + &local_ec +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) && defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + , basedir_fd +#endif + ).type(); + + if (type == fs::file_not_found) + return 0u; + + if (BOOST_UNLIKELY(type == fs::status_error)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::remove_all", p, local_ec)); + + *ec = local_ec; + return static_cast< uintmax_t >(-1); + } + } + + uintmax_t count = 0u; + if (type == fs::directory_file) // but not a directory symlink + { + fs::directory_iterator itr; + fs::detail::directory_iterator_construct + ( + itr, + p, + static_cast< unsigned int >(directory_options::_detail_no_follow), +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) && defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + ¶ms, +#else + NULL, +#endif + &dit_create_ec + ); + + if (BOOST_UNLIKELY(!!dit_create_ec)) + { + if (dit_create_ec == error_code(ENOTDIR, system_category())) + continue; + +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) + // If open(2) with O_NOFOLLOW fails with ELOOP, this means that either the path contains a loop + // of symbolic links, or the last element of the path is a symbolic link. Given that lstat(2) above + // did not fail, most likely it is the latter case. I.e. between the lstat above and this open call + // the filesystem was modified so that the path no longer refers to a directory file (as opposed to a symlink). + if (dit_create_ec == error_code(ELOOP, system_category())) + continue; +#endif // defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) + + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::remove_all", p, dit_create_ec)); + + *ec = dit_create_ec; + return static_cast< uintmax_t >(-1); + } + + const fs::directory_iterator end_dit; + while (itr != end_dit) + { + count += fs::detail::remove_all_impl + ( +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) && defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + path_algorithms::filename_v4(itr->path()), +#else + itr->path(), +#endif + ec +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) && defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + , params.iterator_fd +#endif + ); + if (ec && *ec) + return static_cast< uintmax_t >(-1); + + fs::detail::directory_iterator_increment(itr, ec); + if (ec && *ec) + return static_cast< uintmax_t >(-1); + } + } + + count += fs::detail::remove_impl + ( + p, + type, + ec +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) && defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + , basedir_fd +#endif + ); + if (ec && *ec) + return static_cast< uintmax_t >(-1); + + return count; + } + + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::remove_all: path cannot be opened as a directory", p, dit_create_ec)); + + *ec = dit_create_ec; + return static_cast< uintmax_t >(-1); +} + +#else // defined(BOOST_POSIX_API) + +//--------------------------------------------------------------------------------------// +// // +// Windows-specific helpers // +// // +//--------------------------------------------------------------------------------------// + +//! FILE_BASIC_INFO definition from Windows SDK +struct file_basic_info +{ + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + DWORD FileAttributes; +}; + +//! FILE_DISPOSITION_INFO definition from Windows SDK +struct file_disposition_info +{ + BOOLEAN DeleteFile; +}; + +//! FILE_DISPOSITION_INFO_EX definition from Windows SDK +struct file_disposition_info_ex +{ + DWORD Flags; +}; + +#ifndef FILE_DISPOSITION_FLAG_DELETE +#define FILE_DISPOSITION_FLAG_DELETE 0x00000001 +#endif +// Available since Windows 10 1709 +#ifndef FILE_DISPOSITION_FLAG_POSIX_SEMANTICS +#define FILE_DISPOSITION_FLAG_POSIX_SEMANTICS 0x00000002 +#endif +// Available since Windows 10 1809 +#ifndef FILE_DISPOSITION_FLAG_IGNORE_READONLY_ATTRIBUTE +#define FILE_DISPOSITION_FLAG_IGNORE_READONLY_ATTRIBUTE 0x00000010 +#endif + +// REPARSE_DATA_BUFFER related definitions are found in ntifs.h, which is part of the +// Windows Device Driver Kit. Since that's inconvenient, the definitions are provided +// here. See http://msdn.microsoft.com/en-us/library/ms791514.aspx +struct reparse_data_buffer +{ + ULONG ReparseTag; + USHORT ReparseDataLength; + USHORT Reserved; + union + { + /* + * In SymbolicLink and MountPoint reparse points, there are two names. + * SubstituteName is the effective replacement path for the reparse point. + * This is what should be used for path traversal. + * PrintName is intended for presentation to the user and may omit some + * elements of the path or be absent entirely. + * + * Examples of substitute and print names: + * mklink /D ldrive c:\ + * SubstituteName: "\??\c:\" + * PrintName: "c:\" + * + * mklink /J ldrive c:\ + * SubstituteName: "\??\C:\" + * PrintName: "c:\" + * + * junction ldrive c:\ + * SubstituteName: "\??\C:\" + * PrintName: "" + * + * box.com mounted cloud storage + * SubstituteName: "\??\Volume{}\" + * PrintName: "" + */ + struct + { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + ULONG Flags; + WCHAR PathBuffer[1]; + } SymbolicLinkReparseBuffer; + struct + { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + WCHAR PathBuffer[1]; + } MountPointReparseBuffer; + struct + { + UCHAR DataBuffer[1]; + } GenericReparseBuffer; + }; +}; + +// Our convenience type for allocating REPARSE_DATA_BUFFER along with sufficient space after it +union reparse_data_buffer_with_storage +{ + reparse_data_buffer rdb; + unsigned char storage[MAXIMUM_REPARSE_DATA_BUFFER_SIZE]; +}; + +// Windows kernel32.dll functions that may or may not be present +// must be accessed through pointers + +typedef BOOL (WINAPI CreateHardLinkW_t)( + /*__in*/ LPCWSTR lpFileName, + /*__in*/ LPCWSTR lpExistingFileName, + /*__reserved*/ LPSECURITY_ATTRIBUTES lpSecurityAttributes); + +CreateHardLinkW_t* create_hard_link_api = NULL; + +typedef BOOLEAN (WINAPI CreateSymbolicLinkW_t)( + /*__in*/ LPCWSTR lpSymlinkFileName, + /*__in*/ LPCWSTR lpTargetFileName, + /*__in*/ DWORD dwFlags); + +CreateSymbolicLinkW_t* create_symbolic_link_api = NULL; + +//! SetFileInformationByHandle signature. Available since Windows Vista. +typedef BOOL (WINAPI SetFileInformationByHandle_t)( + /*_In_*/ HANDLE hFile, + /*_In_*/ file_info_by_handle_class FileInformationClass, // the actual type is FILE_INFO_BY_HANDLE_CLASS enum + /*_In_reads_bytes_(dwBufferSize)*/ LPVOID lpFileInformation, + /*_In_*/ DWORD dwBufferSize); + +SetFileInformationByHandle_t* set_file_information_by_handle_api = NULL; + +} // unnamed namespace + +GetFileInformationByHandleEx_t* get_file_information_by_handle_ex_api = NULL; + +#if !defined(UNDER_CE) +NtCreateFile_t* nt_create_file_api = NULL; +NtQueryDirectoryFile_t* nt_query_directory_file_api = NULL; +#endif // !defined(UNDER_CE) + +namespace { + +//! remove() implementation type +enum remove_impl_type +{ + remove_nt5, //!< Use Windows XP API + remove_disp, //!< Use FILE_DISPOSITION_INFO (Windows Vista and later) + remove_disp_ex_flag_posix_semantics, //!< Use FILE_DISPOSITION_INFO_EX with FILE_DISPOSITION_FLAG_POSIX_SEMANTICS + remove_disp_ex_flag_ignore_readonly //!< Use FILE_DISPOSITION_INFO_EX with FILE_DISPOSITION_FLAG_POSIX_SEMANTICS | FILE_DISPOSITION_FLAG_IGNORE_READONLY_ATTRIBUTE +}; + +remove_impl_type g_remove_impl_type = remove_nt5; + +//! Initializes WinAPI function pointers +BOOST_FILESYSTEM_INIT_FUNC init_winapi_func_ptrs() +{ + boost::winapi::HMODULE_ h = boost::winapi::GetModuleHandleW(L"kernel32.dll"); + if (BOOST_LIKELY(!!h)) + { + GetFileInformationByHandleEx_t* get_file_information_by_handle_ex = (GetFileInformationByHandleEx_t*)boost::winapi::get_proc_address(h, "GetFileInformationByHandleEx"); + filesystem::detail::atomic_store_relaxed(get_file_information_by_handle_ex_api, get_file_information_by_handle_ex); + SetFileInformationByHandle_t* set_file_information_by_handle = (SetFileInformationByHandle_t*)boost::winapi::get_proc_address(h, "SetFileInformationByHandle"); + filesystem::detail::atomic_store_relaxed(set_file_information_by_handle_api, set_file_information_by_handle); + filesystem::detail::atomic_store_relaxed(create_hard_link_api, (CreateHardLinkW_t*)boost::winapi::get_proc_address(h, "CreateHardLinkW")); + filesystem::detail::atomic_store_relaxed(create_symbolic_link_api, (CreateSymbolicLinkW_t*)boost::winapi::get_proc_address(h, "CreateSymbolicLinkW")); + + if (get_file_information_by_handle_ex && set_file_information_by_handle) + { + // Enable the most advanced implementation based on GetFileInformationByHandleEx/SetFileInformationByHandle. + // If certain flags are not supported by the OS, the remove() implementation will downgrade accordingly. + filesystem::detail::atomic_store_relaxed(g_remove_impl_type, remove_disp_ex_flag_ignore_readonly); + } + } + +#if !defined(UNDER_CE) + h = boost::winapi::GetModuleHandleW(L"ntdll.dll"); + if (BOOST_LIKELY(!!h)) + { + filesystem::detail::atomic_store_relaxed(nt_create_file_api, (NtCreateFile_t*)boost::winapi::get_proc_address(h, "NtCreateFile")); + filesystem::detail::atomic_store_relaxed(nt_query_directory_file_api, (NtQueryDirectoryFile_t*)boost::winapi::get_proc_address(h, "NtQueryDirectoryFile")); + } + + init_directory_iterator_impl(); +#endif // !defined(UNDER_CE) + + return BOOST_FILESYSTEM_INITRETSUCCESS_V; +} + +#if defined(_MSC_VER) + +#if _MSC_VER >= 1400 + +#pragma section(".CRT$XCL", long, read) +__declspec(allocate(".CRT$XCL")) BOOST_ATTRIBUTE_UNUSED BOOST_FILESYSTEM_ATTRIBUTE_RETAIN +extern const init_func_ptr_t p_init_winapi_func_ptrs = &init_winapi_func_ptrs; + +#else // _MSC_VER >= 1400 + +#if (_MSC_VER >= 1300) // 1300 == VC++ 7.0 +#pragma data_seg(push, old_seg) +#endif +#pragma data_seg(".CRT$XCL") +BOOST_ATTRIBUTE_UNUSED BOOST_FILESYSTEM_ATTRIBUTE_RETAIN +extern const init_func_ptr_t p_init_winapi_func_ptrs = &init_winapi_func_ptrs; +#pragma data_seg() +#if (_MSC_VER >= 1300) // 1300 == VC++ 7.0 +#pragma data_seg(pop, old_seg) +#endif + +#endif // _MSC_VER >= 1400 + +#if defined(BOOST_FILESYSTEM_NO_ATTRIBUTE_RETAIN) +//! Makes sure the global initializer pointers are referenced and not removed by linker +struct globals_retainer +{ + const init_func_ptr_t* volatile m_p_init_winapi_func_ptrs; + + globals_retainer() { m_p_init_winapi_func_ptrs = &p_init_winapi_func_ptrs; } +}; +BOOST_ATTRIBUTE_UNUSED +const globals_retainer g_globals_retainer; +#endif // defined(BOOST_FILESYSTEM_NO_ATTRIBUTE_RETAIN) + +#else // defined(_MSC_VER) + +//! Invokes WinAPI function pointers initialization +struct winapi_func_ptrs_initializer +{ + winapi_func_ptrs_initializer() { init_winapi_func_ptrs(); } +}; + +BOOST_FILESYSTEM_INIT_PRIORITY(BOOST_FILESYSTEM_FUNC_PTR_INIT_PRIORITY) BOOST_ATTRIBUTE_UNUSED BOOST_FILESYSTEM_ATTRIBUTE_RETAIN +const winapi_func_ptrs_initializer winapi_func_ptrs_init; + +#endif // defined(_MSC_VER) + + +// Windows CE has no environment variables +#if !defined(UNDER_CE) +inline std::wstring wgetenv(const wchar_t* name) +{ + // use a separate buffer since C++03 basic_string is not required to be contiguous + const DWORD size = ::GetEnvironmentVariableW(name, NULL, 0); + if (size > 0) + { + boost::scoped_array< wchar_t > buf(new wchar_t[size]); + if (BOOST_LIKELY(::GetEnvironmentVariableW(name, buf.get(), size) > 0)) + return std::wstring(buf.get()); + } + + return std::wstring(); +} +#endif // !defined(UNDER_CE) + +inline bool not_found_error(int errval) BOOST_NOEXCEPT +{ + return errval == ERROR_FILE_NOT_FOUND || errval == ERROR_PATH_NOT_FOUND || errval == ERROR_INVALID_NAME // "tools/jam/src/:sys:stat.h", "//foo" + || errval == ERROR_INVALID_DRIVE // USB card reader with no card inserted + || errval == ERROR_NOT_READY // CD/DVD drive with no disc inserted + || errval == ERROR_INVALID_PARAMETER // ":sys:stat.h" + || errval == ERROR_BAD_PATHNAME // "//no-host" on Win64 + || errval == ERROR_BAD_NETPATH // "//no-host" on Win32 + || errval == ERROR_BAD_NET_NAME; // "//no-host/no-share" on Win10 x64 +} + +// these constants come from inspecting some Microsoft sample code +inline std::time_t to_time_t(FILETIME const& ft) BOOST_NOEXCEPT +{ + uint64_t t = (static_cast< uint64_t >(ft.dwHighDateTime) << 32) | ft.dwLowDateTime; + t -= 116444736000000000ull; + t /= 10000000u; + return static_cast< std::time_t >(t); +} + +inline void to_FILETIME(std::time_t t, FILETIME& ft) BOOST_NOEXCEPT +{ + uint64_t temp = t; + temp *= 10000000u; + temp += 116444736000000000ull; + ft.dwLowDateTime = static_cast< DWORD >(temp); + ft.dwHighDateTime = static_cast< DWORD >(temp >> 32); +} + +} // unnamed namespace + +#if !defined(UNDER_CE) + +//! The flag indicates whether OBJ_DONT_REPARSE flag is not supported by the kernel +static bool g_no_obj_dont_reparse = false; + +//! Creates a file handle for a file relative to a previously opened base directory. The file path must be relative and in preferred format. +boost::winapi::NTSTATUS_ nt_create_file_handle_at(HANDLE& out, HANDLE basedir_handle, boost::filesystem::path const& p, ULONG FileAttributes, ACCESS_MASK DesiredAccess, ULONG ShareMode, ULONG CreateDisposition, ULONG CreateOptions) +{ + NtCreateFile_t* nt_create_file = filesystem::detail::atomic_load_relaxed(nt_create_file_api); + if (BOOST_UNLIKELY(!nt_create_file)) + return STATUS_NOT_IMPLEMENTED; + + unicode_string obj_name = {}; + obj_name.Buffer = const_cast< wchar_t* >(p.c_str()); + obj_name.Length = obj_name.MaximumLength = static_cast< USHORT >(p.size() * sizeof(wchar_t)); + + object_attributes obj_attrs = {}; + obj_attrs.Length = sizeof(obj_attrs); + obj_attrs.RootDirectory = basedir_handle; + obj_attrs.ObjectName = &obj_name; + + obj_attrs.Attributes = OBJ_CASE_INSENSITIVE; + if ((CreateOptions & FILE_OPEN_REPARSE_POINT) != 0u && !filesystem::detail::atomic_load_relaxed(g_no_obj_dont_reparse)) + obj_attrs.Attributes |= OBJ_DONT_REPARSE; + + io_status_block iosb; + boost::winapi::NTSTATUS_ status = nt_create_file + ( + &out, + DesiredAccess, + &obj_attrs, + &iosb, + NULL, // AllocationSize + FileAttributes, + ShareMode, + CreateDisposition, + CreateOptions, + NULL, // EaBuffer + 0u // EaLength + ); + + if (BOOST_UNLIKELY(status == STATUS_INVALID_PARAMETER && (obj_attrs.Attributes & OBJ_DONT_REPARSE) != 0u)) + { + // OBJ_DONT_REPARSE is supported since Windows 10, retry without it + filesystem::detail::atomic_store_relaxed(g_no_obj_dont_reparse, true); + obj_attrs.Attributes &= ~static_cast< ULONG >(OBJ_DONT_REPARSE); + + status = nt_create_file + ( + &out, + DesiredAccess, + &obj_attrs, + &iosb, + NULL, // AllocationSize + FileAttributes, + ShareMode, + CreateDisposition, + CreateOptions, + NULL, // EaBuffer + 0u // EaLength + ); + } + + return status; +} + +#endif // !defined(UNDER_CE) + +ULONG get_reparse_point_tag_ioctl(HANDLE h, path const& p, error_code* ec) +{ + boost::scoped_ptr< reparse_data_buffer_with_storage > buf(new (std::nothrow) reparse_data_buffer_with_storage); + if (BOOST_UNLIKELY(!buf.get())) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("Cannot allocate memory to query reparse point", p, make_error_code(system::errc::not_enough_memory))); + + *ec = make_error_code(system::errc::not_enough_memory); + return 0u; + } + + // Query the reparse data + DWORD dwRetLen = 0u; + BOOL result = ::DeviceIoControl(h, FSCTL_GET_REPARSE_POINT, NULL, 0, buf.get(), sizeof(*buf), &dwRetLen, NULL); + if (BOOST_UNLIKELY(!result)) + { + DWORD err = ::GetLastError(); + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("Failed to query reparse point", p, error_code(err, system_category()))); + + ec->assign(err, system_category()); + return 0u; + } + + return buf->rdb.ReparseTag; +} + +namespace { + +inline std::size_t get_full_path_name(path const& src, std::size_t len, wchar_t* buf, wchar_t** p) +{ + return static_cast< std::size_t >(::GetFullPathNameW(src.c_str(), static_cast< DWORD >(len), buf, p)); +} + +inline fs::file_status process_status_failure(DWORD errval, path const& p, error_code* ec) +{ + if (ec) // always report errval, even though some + ec->assign(errval, system_category()); // errval values are not status_errors + + if (not_found_error(errval)) + { + return fs::file_status(fs::file_not_found, fs::no_perms); + } + else if (errval == ERROR_SHARING_VIOLATION) + { + return fs::file_status(fs::type_unknown); + } + + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::status", p, error_code(errval, system_category()))); + + return fs::file_status(fs::status_error); +} + +inline fs::file_status process_status_failure(path const& p, error_code* ec) +{ + return process_status_failure(::GetLastError(), p, ec); +} + +//! (symlink_)status() by handle implementation +fs::file_status status_by_handle(HANDLE h, path const& p, error_code* ec) +{ + fs::file_type ftype; + DWORD attrs; + ULONG reparse_tag = 0u; + GetFileInformationByHandleEx_t* get_file_information_by_handle_ex = filesystem::detail::atomic_load_relaxed(get_file_information_by_handle_ex_api); + if (BOOST_LIKELY(get_file_information_by_handle_ex != NULL)) + { + file_attribute_tag_info info; + BOOL res = get_file_information_by_handle_ex(h, file_attribute_tag_info_class, &info, sizeof(info)); + if (BOOST_UNLIKELY(!res)) + { + // On FAT/exFAT filesystems requesting FILE_ATTRIBUTE_TAG_INFO returns ERROR_INVALID_PARAMETER. + // Presumably, this is because these filesystems don't support reparse points, so ReparseTag + // cannot be returned. Also check ERROR_NOT_SUPPORTED for good measure. Fall back to the legacy + // code path in this case. + DWORD err = ::GetLastError(); + if (err == ERROR_INVALID_PARAMETER || err == ERROR_NOT_SUPPORTED) + goto use_get_file_information_by_handle; + + return process_status_failure(err, p, ec); + } + + attrs = info.FileAttributes; + reparse_tag = info.ReparseTag; + } + else + { + use_get_file_information_by_handle: + BY_HANDLE_FILE_INFORMATION info; + BOOL res = ::GetFileInformationByHandle(h, &info); + if (BOOST_UNLIKELY(!res)) + return process_status_failure(p, ec); + + attrs = info.dwFileAttributes; + + if ((attrs & FILE_ATTRIBUTE_REPARSE_POINT) != 0u) + { + reparse_tag = get_reparse_point_tag_ioctl(h, p, ec); + if (ec) + { + if (BOOST_UNLIKELY(!!ec)) + return fs::file_status(fs::status_error); + } + } + } + + if ((attrs & FILE_ATTRIBUTE_REPARSE_POINT) != 0u) + { + if (reparse_tag == IO_REPARSE_TAG_DEDUP) + ftype = fs::regular_file; + else if (is_reparse_point_tag_a_symlink(reparse_tag)) + ftype = fs::symlink_file; + else + ftype = fs::reparse_file; + } + else if ((attrs & FILE_ATTRIBUTE_DIRECTORY) != 0u) + { + ftype = fs::directory_file; + } + else + { + ftype = fs::regular_file; + } + + return fs::file_status(ftype, make_permissions(p, attrs)); +} + +//! symlink_status() implementation +fs::file_status symlink_status_impl(path const& p, error_code* ec) +{ + // Normally, we only need FILE_READ_ATTRIBUTES access mode. But SMBv1 reports incorrect + // file attributes in GetFileInformationByHandleEx in this case (e.g. it reports FILE_ATTRIBUTE_NORMAL + // for a directory in a SMBv1 share), so we add FILE_READ_EA as a workaround. + // https://github.com/boostorg/filesystem/issues/282 + handle_wrapper h(create_file_handle( + p.c_str(), + FILE_READ_ATTRIBUTES | FILE_READ_EA, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + NULL, // lpSecurityAttributes + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT)); + + if (h.handle == INVALID_HANDLE_VALUE) + { + // For some system files and folders like "System Volume Information" CreateFileW fails + // with ERROR_ACCESS_DENIED. GetFileAttributesW succeeds for such files, so try that. + // Though this will only help if the file is not a reparse point (symlink or not). + DWORD err = ::GetLastError(); + if (err == ERROR_ACCESS_DENIED) + { + DWORD attrs = ::GetFileAttributesW(p.c_str()); + if (attrs != INVALID_FILE_ATTRIBUTES) + { + if ((attrs & FILE_ATTRIBUTE_REPARSE_POINT) == 0u) + return fs::file_status((attrs & FILE_ATTRIBUTE_DIRECTORY) ? fs::directory_file : fs::regular_file, make_permissions(p, attrs)); + } + else + { + err = ::GetLastError(); + } + } + + return process_status_failure(err, p, ec); + } + + return detail::status_by_handle(h.handle, p, ec); +} + +//! status() implementation +fs::file_status status_impl(path const& p, error_code* ec) +{ + // We should first test if the file is a symlink or a reparse point. Resolving some reparse + // points by opening the file may fail, and status() should return file_status(reparse_file) in this case. + // Which is what symlink_status() returns. + fs::file_status st(detail::symlink_status_impl(p, ec)); + if (st.type() == symlink_file) + { + // Resolve the symlink + handle_wrapper h(create_file_handle( + p.c_str(), + FILE_READ_ATTRIBUTES | FILE_READ_EA, // see the comment in symlink_status_impl re. access mode + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, // lpSecurityAttributes + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS)); + + if (h.handle == INVALID_HANDLE_VALUE) + return process_status_failure(p, ec); + + st = detail::status_by_handle(h.handle, p, ec); + } + + return st; +} + +//! remove() implementation for Windows XP and older +bool remove_nt5_impl(path const& p, DWORD attrs, error_code* ec) +{ + const bool is_directory = (attrs & FILE_ATTRIBUTE_DIRECTORY) != 0; + const bool is_read_only = (attrs & FILE_ATTRIBUTE_READONLY) != 0; + if (is_read_only) + { + // RemoveDirectoryW and DeleteFileW do not allow to remove a read-only file, so we have to drop the attribute + DWORD new_attrs = attrs & ~FILE_ATTRIBUTE_READONLY; + BOOL res = ::SetFileAttributesW(p.c_str(), new_attrs); + if (BOOST_UNLIKELY(!res)) + { + DWORD err = ::GetLastError(); + if (!not_found_error(err)) + emit_error(err, p, ec, "boost::filesystem::remove"); + + return false; + } + } + + BOOL res; + if (!is_directory) + { + // DeleteFileW works for file symlinks by removing the symlink, not the target. + res = ::DeleteFileW(p.c_str()); + } + else + { + // RemoveDirectoryW works for symlinks and junctions by removing the symlink, not the target, + // even if the target directory is not empty. + // Note that unlike opening the directory with FILE_FLAG_DELETE_ON_CLOSE flag, RemoveDirectoryW + // will fail if the directory is not empty. + res = ::RemoveDirectoryW(p.c_str()); + } + + if (BOOST_UNLIKELY(!res)) + { + DWORD err = ::GetLastError(); + if (!not_found_error(err)) + { + if (is_read_only) + { + // Try to restore the read-only attribute + ::SetFileAttributesW(p.c_str(), attrs); + } + + emit_error(err, p, ec, "boost::filesystem::remove"); + } + + return false; + } + + return true; +} + +//! remove() by handle implementation for Windows Vista and newer +DWORD remove_nt6_by_handle(HANDLE handle, remove_impl_type impl) +{ + GetFileInformationByHandleEx_t* get_file_information_by_handle_ex = filesystem::detail::atomic_load_relaxed(get_file_information_by_handle_ex_api); + SetFileInformationByHandle_t* set_file_information_by_handle = filesystem::detail::atomic_load_relaxed(set_file_information_by_handle_api); + DWORD err = 0u; + switch (impl) + { + case remove_disp_ex_flag_ignore_readonly: + { + file_disposition_info_ex info; + info.Flags = FILE_DISPOSITION_FLAG_DELETE | FILE_DISPOSITION_FLAG_POSIX_SEMANTICS | FILE_DISPOSITION_FLAG_IGNORE_READONLY_ATTRIBUTE; + BOOL res = set_file_information_by_handle(handle, file_disposition_info_ex_class, &info, sizeof(info)); + if (BOOST_LIKELY(!!res)) + break; + + err = ::GetLastError(); + if (BOOST_UNLIKELY(err == ERROR_INVALID_PARAMETER || err == ERROR_INVALID_FUNCTION || err == ERROR_NOT_SUPPORTED || err == ERROR_CALL_NOT_IMPLEMENTED)) + { + // Downgrade to the older implementation + impl = remove_disp_ex_flag_posix_semantics; + filesystem::detail::atomic_store_relaxed(g_remove_impl_type, impl); + } + else + { + break; + } + } + BOOST_FALLTHROUGH; + + case remove_disp_ex_flag_posix_semantics: + { + file_disposition_info_ex info; + info.Flags = FILE_DISPOSITION_FLAG_DELETE | FILE_DISPOSITION_FLAG_POSIX_SEMANTICS; + BOOL res = set_file_information_by_handle(handle, file_disposition_info_ex_class, &info, sizeof(info)); + if (BOOST_LIKELY(!!res)) + { + err = 0u; + break; + } + + err = ::GetLastError(); + if (err == ERROR_ACCESS_DENIED) + { + // Check if the file is read-only and reset the attribute + file_basic_info basic_info; + res = get_file_information_by_handle_ex(handle, file_basic_info_class, &basic_info, sizeof(basic_info)); + if (BOOST_UNLIKELY(!res || (basic_info.FileAttributes & FILE_ATTRIBUTE_READONLY) == 0)) + break; // return ERROR_ACCESS_DENIED + + basic_info.FileAttributes &= ~FILE_ATTRIBUTE_READONLY; + + res = set_file_information_by_handle(handle, file_basic_info_class, &basic_info, sizeof(basic_info)); + if (BOOST_UNLIKELY(!res)) + { + err = ::GetLastError(); + break; + } + + // Try to set the flag again + res = set_file_information_by_handle(handle, file_disposition_info_ex_class, &info, sizeof(info)); + if (BOOST_LIKELY(!!res)) + { + err = 0u; + break; + } + + err = ::GetLastError(); + + // Try to restore the read-only flag + basic_info.FileAttributes |= FILE_ATTRIBUTE_READONLY; + set_file_information_by_handle(handle, file_basic_info_class, &basic_info, sizeof(basic_info)); + + break; + } + else if (BOOST_UNLIKELY(err == ERROR_INVALID_PARAMETER || err == ERROR_INVALID_FUNCTION || err == ERROR_NOT_SUPPORTED || err == ERROR_CALL_NOT_IMPLEMENTED)) + { + // Downgrade to the older implementation + impl = remove_disp; + filesystem::detail::atomic_store_relaxed(g_remove_impl_type, impl); + } + else + { + break; + } + } + BOOST_FALLTHROUGH; + + default: + { + file_disposition_info info; + info.DeleteFile = true; + BOOL res = set_file_information_by_handle(handle, file_disposition_info_class, &info, sizeof(info)); + if (BOOST_LIKELY(!!res)) + { + err = 0u; + break; + } + + err = ::GetLastError(); + if (err == ERROR_ACCESS_DENIED) + { + // Check if the file is read-only and reset the attribute + file_basic_info basic_info; + res = get_file_information_by_handle_ex(handle, file_basic_info_class, &basic_info, sizeof(basic_info)); + if (BOOST_UNLIKELY(!res || (basic_info.FileAttributes & FILE_ATTRIBUTE_READONLY) == 0)) + break; // return ERROR_ACCESS_DENIED + + basic_info.FileAttributes &= ~FILE_ATTRIBUTE_READONLY; + + res = set_file_information_by_handle(handle, file_basic_info_class, &basic_info, sizeof(basic_info)); + if (BOOST_UNLIKELY(!res)) + { + err = ::GetLastError(); + break; + } + + // Try to set the flag again + res = set_file_information_by_handle(handle, file_disposition_info_class, &info, sizeof(info)); + if (BOOST_LIKELY(!!res)) + { + err = 0u; + break; + } + + err = ::GetLastError(); + + // Try to restore the read-only flag + basic_info.FileAttributes |= FILE_ATTRIBUTE_READONLY; + set_file_information_by_handle(handle, file_basic_info_class, &basic_info, sizeof(basic_info)); + } + + break; + } + } + + return err; +} + +//! remove() implementation for Windows Vista and newer +inline bool remove_nt6_impl(path const& p, remove_impl_type impl, error_code* ec) +{ + handle_wrapper h(create_file_handle( + p, + DELETE | FILE_READ_ATTRIBUTES | FILE_READ_EA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT)); + DWORD err = 0u; + if (BOOST_UNLIKELY(h.handle == INVALID_HANDLE_VALUE)) + { + err = ::GetLastError(); + + return_error: + if (!not_found_error(err)) + emit_error(err, p, ec, "boost::filesystem::remove"); + + return false; + } + + err = fs::detail::remove_nt6_by_handle(h.handle, impl); + if (BOOST_UNLIKELY(err != 0u)) + goto return_error; + + return true; +} + +//! remove() implementation +inline bool remove_impl(path const& p, error_code* ec) +{ + remove_impl_type impl = fs::detail::atomic_load_relaxed(g_remove_impl_type); + if (BOOST_LIKELY(impl != remove_nt5)) + { + return fs::detail::remove_nt6_impl(p, impl, ec); + } + else + { + const DWORD attrs = ::GetFileAttributesW(p.c_str()); + if (BOOST_UNLIKELY(attrs == INVALID_FILE_ATTRIBUTES)) + { + DWORD err = ::GetLastError(); + if (!not_found_error(err)) + emit_error(err, p, ec, "boost::filesystem::remove"); + + return false; + } + + return fs::detail::remove_nt5_impl(p, attrs, ec); + } +} + +#if !defined(UNDER_CE) + +//! remove_all() by handle implementation for Windows Vista and newer +uintmax_t remove_all_nt6_by_handle(HANDLE h, path const& p, error_code* ec) +{ + error_code local_ec; + fs::file_status st(fs::detail::status_by_handle(h, p, &local_ec)); + if (BOOST_UNLIKELY(st.type() == fs::status_error)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::remove_all", p, local_ec)); + + *ec = local_ec; + return static_cast< uintmax_t >(-1); + } + + uintmax_t count = 0u; + if (st.type() == fs::directory_file) + { + local_ec.clear(); + + fs::directory_iterator itr; + directory_iterator_params params; + params.use_handle = h; + params.close_handle = false; // the caller will close the handle + fs::detail::directory_iterator_construct(itr, p, static_cast< unsigned int >(directory_options::_detail_no_follow), ¶ms, &local_ec); + if (BOOST_UNLIKELY(!!local_ec)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::remove_all", p, local_ec)); + + *ec = local_ec; + return static_cast< uintmax_t >(-1); + } + + NtCreateFile_t* nt_create_file = filesystem::detail::atomic_load_relaxed(nt_create_file_api); + const fs::directory_iterator end_dit; + while (itr != end_dit) + { + fs::path nested_path(itr->path()); + handle_wrapper hh; + if (BOOST_LIKELY(nt_create_file != NULL)) + { + // Note: WinAPI methods like CreateFileW implicitly request SYNCHRONIZE access but NtCreateFile doesn't. + // Without SYNCHRONIZE access querying file attributes via GetFileInformationByHandleEx fails with ERROR_ACCESS_DENIED. + boost::winapi::NTSTATUS_ status = nt_create_file_handle_at + ( + hh.handle, + h, + path_algorithms::filename_v4(nested_path), + 0u, // FileAttributes + FILE_LIST_DIRECTORY | DELETE | FILE_READ_ATTRIBUTES | FILE_READ_EA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | SYNCHRONIZE, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + FILE_OPEN, + FILE_SYNCHRONOUS_IO_NONALERT | FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_REPARSE_POINT + ); + + if (!NT_SUCCESS(status)) + { + if (status == STATUS_NO_SUCH_FILE || + status == STATUS_OBJECT_NAME_NOT_FOUND || + status == STATUS_OBJECT_PATH_NOT_FOUND || + status == STATUS_BAD_NETWORK_PATH || + status == STATUS_BAD_NETWORK_NAME) + { + goto next_entry; + } + + DWORD err = translate_ntstatus(status); + emit_error(err, nested_path, ec, "boost::filesystem::remove_all"); + return static_cast< uintmax_t >(-1); + } + } + else + { + hh.handle = create_file_handle( + nested_path, + FILE_LIST_DIRECTORY | DELETE | FILE_READ_ATTRIBUTES | FILE_READ_EA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | SYNCHRONIZE, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT); + + if (BOOST_UNLIKELY(hh.handle == INVALID_HANDLE_VALUE)) + { + DWORD err = ::GetLastError(); + if (not_found_error(err)) + goto next_entry; + + emit_error(err, nested_path, ec, "boost::filesystem::remove_all"); + return static_cast< uintmax_t >(-1); + } + } + + count += fs::detail::remove_all_nt6_by_handle(hh.handle, nested_path, ec); + if (ec && *ec) + return static_cast< uintmax_t >(-1); + + next_entry: + fs::detail::directory_iterator_increment(itr, ec); + if (ec && *ec) + return static_cast< uintmax_t >(-1); + } + } + + DWORD err = fs::detail::remove_nt6_by_handle(h, fs::detail::atomic_load_relaxed(g_remove_impl_type)); + if (BOOST_UNLIKELY(err != 0u)) + { + emit_error(err, p, ec, "boost::filesystem::remove_all"); + return static_cast< uintmax_t >(-1); + } + + ++count; + return count; +} + +#endif // !defined(UNDER_CE) + +//! remove_all() implementation for Windows XP and older +uintmax_t remove_all_nt5_impl(path const& p, error_code* ec) +{ + error_code dit_create_ec; + for (unsigned int attempt = 0u; attempt < remove_all_directory_replaced_retry_count; ++attempt) + { + const DWORD attrs = ::GetFileAttributesW(p.c_str()); + if (BOOST_UNLIKELY(attrs == INVALID_FILE_ATTRIBUTES)) + { + DWORD err = ::GetLastError(); + if (not_found_error(err)) + return 0u; + + emit_error(err, p, ec, "boost::filesystem::remove_all"); + return static_cast< uintmax_t >(-1); + } + + // Recurse into directories, but not into junctions or directory symlinks + const bool recurse = (attrs & FILE_ATTRIBUTE_DIRECTORY) != 0 && (attrs & FILE_ATTRIBUTE_REPARSE_POINT) == 0; + uintmax_t count = 0u; + if (recurse) + { + fs::directory_iterator itr; + fs::detail::directory_iterator_construct(itr, p, static_cast< unsigned int >(directory_options::_detail_no_follow), NULL, &dit_create_ec); + if (BOOST_UNLIKELY(!!dit_create_ec)) + { + if (dit_create_ec == make_error_condition(system::errc::not_a_directory) || + dit_create_ec == make_error_condition(system::errc::too_many_symbolic_link_levels)) + { + continue; + } + + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::remove_all", p, dit_create_ec)); + + *ec = dit_create_ec; + return static_cast< uintmax_t >(-1); + } + + const fs::directory_iterator end_dit; + while (itr != end_dit) + { + count += fs::detail::remove_all_nt5_impl(itr->path(), ec); + if (ec && *ec) + return static_cast< uintmax_t >(-1); + + fs::detail::directory_iterator_increment(itr, ec); + if (ec && *ec) + return static_cast< uintmax_t >(-1); + } + } + + bool removed = fs::detail::remove_nt5_impl(p, attrs, ec); + if (ec && *ec) + return static_cast< uintmax_t >(-1); + + count += removed; + return count; + } + + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::remove_all: path cannot be opened as a directory", p, dit_create_ec)); + + *ec = dit_create_ec; + return static_cast< uintmax_t >(-1); +} + +//! remove_all() implementation +inline uintmax_t remove_all_impl(path const& p, error_code* ec) +{ +#if !defined(UNDER_CE) + remove_impl_type impl = fs::detail::atomic_load_relaxed(g_remove_impl_type); + if (BOOST_LIKELY(impl != remove_nt5)) + { + handle_wrapper h(create_file_handle( + p, + FILE_LIST_DIRECTORY | DELETE | FILE_READ_ATTRIBUTES | FILE_READ_EA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | SYNCHRONIZE, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT)); + + if (BOOST_UNLIKELY(h.handle == INVALID_HANDLE_VALUE)) + { + DWORD err = ::GetLastError(); + if (not_found_error(err)) + return 0u; + + emit_error(err, p, ec, "boost::filesystem::remove_all"); + return static_cast< uintmax_t >(-1); + } + + return fs::detail::remove_all_nt6_by_handle(h.handle, p, ec); + } +#endif // !defined(UNDER_CE) + + return fs::detail::remove_all_nt5_impl(p, ec); +} + +inline BOOL resize_file_impl(const wchar_t* p, uintmax_t size) +{ + handle_wrapper h(CreateFileW(p, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)); + LARGE_INTEGER sz; + sz.QuadPart = size; + return h.handle != INVALID_HANDLE_VALUE && ::SetFilePointerEx(h.handle, sz, 0, FILE_BEGIN) && ::SetEndOfFile(h.handle); +} + +//! Converts NT path to a Win32 path +inline path convert_nt_path_to_win32_path(const wchar_t* nt_path, std::size_t size) +{ + // https://googleprojectzero.blogspot.com/2016/02/the-definitive-guide-on-win32-to-nt.html + // https://stackoverflow.com/questions/23041983/path-prefixes-and + // + // NT paths can be used to identify practically any named objects, devices, files, local and remote shares, etc. + // The path starts with a leading backslash and consists of one or more path elements separated with backslashes. + // The set of characters allowed in NT path elements is significantly larger than that of Win32 paths - basically, + // any character except the backslash is allowed. Path elements are case-insensitive. + // + // NT paths that start with the "\??\" prefix are used to indicate the current user's session namespace. The prefix + // indicates to the NT object manager to lookup the object relative to "\Sessions\0\DosDevices\[Logon Authentication ID]". + // + // There is also a special "\Global??\" prefix that refers to the system logon. User's session directory shadows + // the system logon directory, so that when the referenced object is not found in the user's namespace, + // system logon is looked up instead. + // + // There is a symlink "Global" in the user's session namespace that refers to the global namespace, so "\??\Global" + // effectively resolves to "\Global??". This allows Win32 applications to directly refer to the system objects, + // even if shadowed by the current user's logon object. + // + // NT paths can be used to reference not only local filesystems, but also devices and remote shares identifiable via + // UNC paths. For this, there is a special "UNC" device (which is a symlink to "\Device\Mup") in the system logon + // namespace, so "\??\UNC\host\share" (or "\??\Global\UNC\host\share", or "\Global??\UNC\host\share") is equivalent + // to "\\host\share". + // + // NT paths are not universally accepted by Win32 applications and APIs. For example, Far supports paths starting + // with "\??\" and "\??\Global\" but not with "\Global??\". As of Win10 21H1, File Explorer, cmd.exe and PowerShell + // don't support any of these. Given this, and that NT paths have a different set of allowed characters from Win32 paths, + // we should normally avoid exposing NT paths to users that expect Win32 paths. + // + // In Boost.Filesystem we only deal with NT paths that come from reparse points, such as symlinks and mount points, + // including directory junctions. It was observed that reparse points created by junction.exe and mklink use the "\??\" + // prefix for directory junctions and absolute symlink and unqualified relative path for relative symlinks. + // Absolute paths are using drive letters for mounted drives (e.g. "\??\C:\directory"), although it is possible + // to create a junction to an directory using a different way of identifying the filesystem (e.g. + // "\??\Volume{00000000-0000-0000-0000-000000000000}\directory"). + // mklink does not support creating junctions pointing to a UNC path. junction.exe does create a junction that + // uses a seemingly invalid syntax like "\??\\\host\share", i.e. it basically does not expect an UNC path. It is not known + // if reparse points that refer to a UNC path are considered valid. + // There are reparse points created as mount points for local and remote filsystems (for example, a cloud storage mounted + // in the local filesystem). Such mount points have the form of "\??\Volume{00000000-0000-0000-0000-000000000000}\", + // "\??\Harddisk0Partition1\" or "\??\HarddiskVolume1\". + // Reparse points that refer directly to a global namespace (through "\??\Global\" or "\Global??\" prefixes) or + // devices (e.g. "\Device\HarddiskVolume1") have not been observed so far. + + path win32_path; + std::size_t pos = 0u; + bool global_namespace = false; + + // Check for the "\??\" prefix + if (size >= 4u && + nt_path[0] == path::preferred_separator && + nt_path[1] == questionmark && + nt_path[2] == questionmark && + nt_path[3] == path::preferred_separator) + { + pos = 4u; + + // Check "Global" + if ((size - pos) >= 6u && + (nt_path[pos] == L'G' || nt_path[pos] == L'g') && + (nt_path[pos + 1] == L'l' || nt_path[pos + 1] == L'L') && + (nt_path[pos + 2] == L'o' || nt_path[pos + 2] == L'O') && + (nt_path[pos + 3] == L'b' || nt_path[pos + 3] == L'B') && + (nt_path[pos + 4] == L'a' || nt_path[pos + 4] == L'A') && + (nt_path[pos + 5] == L'l' || nt_path[pos + 5] == L'L')) + { + if ((size - pos) == 6u) + { + pos += 6u; + global_namespace = true; + } + else if (detail::is_directory_separator(nt_path[pos + 6u])) + { + pos += 7u; + global_namespace = true; + } + } + } + // Check for the "\Global??\" prefix + else if (size >= 10u && + nt_path[0] == path::preferred_separator && + (nt_path[1] == L'G' || nt_path[1] == L'g') && + (nt_path[2] == L'l' || nt_path[2] == L'L') && + (nt_path[3] == L'o' || nt_path[3] == L'O') && + (nt_path[4] == L'b' || nt_path[4] == L'B') && + (nt_path[5] == L'a' || nt_path[5] == L'A') && + (nt_path[6] == L'l' || nt_path[6] == L'L') && + nt_path[7] == questionmark && + nt_path[8] == questionmark && + nt_path[9] == path::preferred_separator) + { + pos = 10u; + global_namespace = true; + } + + if (pos > 0u) + { + if ((size - pos) >= 2u && + ( + // Check if the following is a drive letter + ( + detail::is_letter(nt_path[pos]) && nt_path[pos + 1u] == colon && + ((size - pos) == 2u || detail::is_directory_separator(nt_path[pos + 2u])) + ) || + // Check for an "incorrect" syntax for UNC path junction points + ( + detail::is_directory_separator(nt_path[pos]) && detail::is_directory_separator(nt_path[pos + 1u]) && + ((size - pos) == 2u || !detail::is_directory_separator(nt_path[pos + 2u])) + ) + )) + { + // Strip the NT path prefix + goto done; + } + + static const wchar_t win32_path_prefix[4u] = { path::preferred_separator, path::preferred_separator, questionmark, path::preferred_separator }; + + // Check for a UNC path + if ((size - pos) >= 4u && + (nt_path[pos] == L'U' || nt_path[pos] == L'u') && + (nt_path[pos + 1] == L'N' || nt_path[pos + 1] == L'n') && + (nt_path[pos + 2] == L'C' || nt_path[pos + 2] == L'c') && + nt_path[pos + 3] == path::preferred_separator) + { + win32_path.assign(win32_path_prefix, win32_path_prefix + 2); + pos += 4u; + goto done; + } + + // This is some other NT path, possibly a volume mount point. Replace the NT prefix with a Win32 filesystem prefix "\\?\". + win32_path.assign(win32_path_prefix, win32_path_prefix + 4); + if (global_namespace) + { + static const wchar_t win32_path_global_prefix[7u] = { L'G', L'l', L'o', L'b', L'a', L'l', path::preferred_separator }; + win32_path.concat(win32_path_global_prefix, win32_path_global_prefix + 7); + } + } + +done: + win32_path.concat(nt_path + pos, nt_path + size); + return win32_path; +} + +#endif // defined(BOOST_POSIX_API) + +} // unnamed namespace +} // namespace detail + +//--------------------------------------------------------------------------------------// +// // +// operations functions declared in operations.hpp // +// // +//--------------------------------------------------------------------------------------// + +namespace detail { + +BOOST_FILESYSTEM_DECL bool possible_large_file_size_support() +{ +#ifdef BOOST_POSIX_API + typedef struct stat struct_stat; + return sizeof(struct_stat().st_size) > 4; +#else + return true; +#endif +} + +BOOST_FILESYSTEM_DECL +path absolute(path const& p, path const& base, system::error_code* ec) +{ + if (ec) + ec->clear(); + + if (p.is_absolute()) + return p; + + // recursively calling absolute is sub-optimal, but is sure and simple + path abs_base = base; + if (!base.is_absolute()) + { + if (ec) + { + abs_base = absolute(base, *ec); + if (*ec) + return path(); + } + else + { + abs_base = absolute(base); + } + } + + if (p.empty()) + return abs_base; + + path res; + if (p.has_root_name()) + res = p.root_name(); + else + res = abs_base.root_name(); + + if (p.has_root_directory()) + { + res.concat(p.root_directory()); + } + else + { + res.concat(abs_base.root_directory()); + path_algorithms::append_v4(res, abs_base.relative_path()); + } + + path p_relative_path(p.relative_path()); + if (!p_relative_path.empty()) + path_algorithms::append_v4(res, p_relative_path); + + return res; +} + +BOOST_FILESYSTEM_DECL +path canonical(path const& p, path const& base, system::error_code* ec) +{ + if (ec) + ec->clear(); + + path source(p); + if (!p.is_absolute()) + { + source = detail::absolute(p, base, ec); + if (ec && *ec) + { + return_empty_path: + return path(); + } + } + + system::error_code local_ec; + file_status st(detail::status_impl(source, &local_ec)); + + if (st.type() == fs::file_not_found) + { + local_ec = system::errc::make_error_code(system::errc::no_such_file_or_directory); + goto fail_local_ec; + } + else if (local_ec) + { + fail_local_ec: + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::canonical", source, local_ec)); + + *ec = local_ec; + goto return_empty_path; + } + + path root(source.root_path()); + path const& dot_p = dot_path(); + path const& dot_dot_p = dot_dot_path(); + unsigned int symlinks_allowed = symloop_max; + path result; + while (true) + { + for (path::iterator itr(source.begin()), end(source.end()); itr != end; path_algorithms::increment_v4(itr)) + { + if (path_algorithms::compare_v4(*itr, dot_p) == 0) + continue; + if (path_algorithms::compare_v4(*itr, dot_dot_p) == 0) + { + if (path_algorithms::compare_v4(result, root) != 0) + result.remove_filename_and_trailing_separators(); + continue; + } + + if (itr->size() == 1u && detail::is_directory_separator(itr->native()[0])) + { + // Convert generic separator returned by the iterator for the root directory to + // the preferred separator. This is important on Windows, as in some cases, + // like paths for network shares and cloud storage mount points GetFileAttributesW + // will return "file not found" if the path contains forward slashes. + result += path::preferred_separator; + // We don't need to check for a symlink after adding a separator. + continue; + } + + path_algorithms::append_v4(result, *itr); + + // If we don't have an absolute path yet then don't check symlink status. + // This avoids checking "C:" which is "the current directory on drive C" + // and hence not what we want to check/resolve here. + if (!result.is_absolute()) + continue; + + st = detail::symlink_status_impl(result, ec); + if (ec && *ec) + goto return_empty_path; + + if (is_symlink(st)) + { + if (symlinks_allowed == 0) + { + local_ec = system::errc::make_error_code(system::errc::too_many_symbolic_link_levels); + goto fail_local_ec; + } + + --symlinks_allowed; + + path link(detail::read_symlink(result, ec)); + if (ec && *ec) + goto return_empty_path; + result.remove_filename_and_trailing_separators(); + + if (link.is_absolute()) + { + for (path_algorithms::increment_v4(itr); itr != end; path_algorithms::increment_v4(itr)) + { + if (path_algorithms::compare_v4(*itr, dot_p) != 0) + path_algorithms::append_v4(link, *itr); + } + source = link; + root = source.root_path(); + } + else // link is relative + { + link.remove_trailing_separator(); + if (path_algorithms::compare_v4(link, dot_p) == 0) + continue; + + path new_source(result); + path_algorithms::append_v4(new_source, link); + for (path_algorithms::increment_v4(itr); itr != end; path_algorithms::increment_v4(itr)) + { + if (path_algorithms::compare_v4(*itr, dot_p) != 0) + path_algorithms::append_v4(new_source, *itr); + } + source = new_source; + } + + // symlink causes scan to be restarted + goto restart_scan; + } + } + + break; + + restart_scan: + result.clear(); + } + + BOOST_ASSERT_MSG(result.is_absolute(), "canonical() implementation error; please report"); + return result; +} + +BOOST_FILESYSTEM_DECL +void copy(path const& from, path const& to, unsigned int options, system::error_code* ec) +{ + BOOST_ASSERT((((options & static_cast< unsigned int >(copy_options::overwrite_existing)) != 0u) + + ((options & static_cast< unsigned int >(copy_options::skip_existing)) != 0u) + + ((options & static_cast< unsigned int >(copy_options::update_existing)) != 0u)) <= 1); + + BOOST_ASSERT((((options & static_cast< unsigned int >(copy_options::copy_symlinks)) != 0u) + + ((options & static_cast< unsigned int >(copy_options::skip_symlinks)) != 0u)) <= 1); + + BOOST_ASSERT((((options & static_cast< unsigned int >(copy_options::directories_only)) != 0u) + + ((options & static_cast< unsigned int >(copy_options::create_symlinks)) != 0u) + + ((options & static_cast< unsigned int >(copy_options::create_hard_links)) != 0u)) <= 1); + + if (ec) + ec->clear(); + + file_status from_stat; + if ((options & (static_cast< unsigned int >(copy_options::copy_symlinks) | + static_cast< unsigned int >(copy_options::skip_symlinks) | + static_cast< unsigned int >(copy_options::create_symlinks))) != 0u) + { + from_stat = detail::symlink_status_impl(from, ec); + } + else + { + from_stat = detail::status_impl(from, ec); + } + + if (ec && *ec) + return; + + if (!exists(from_stat)) + { + emit_error(BOOST_ERROR_FILE_NOT_FOUND, from, to, ec, "boost::filesystem::copy"); + return; + } + + if (is_symlink(from_stat)) + { + if ((options & static_cast< unsigned int >(copy_options::skip_symlinks)) != 0u) + return; + + if ((options & static_cast< unsigned int >(copy_options::copy_symlinks)) == 0u) + goto fail; + + detail::copy_symlink(from, to, ec); + } + else if (is_regular_file(from_stat)) + { + if ((options & static_cast< unsigned int >(copy_options::directories_only)) != 0u) + return; + + if ((options & static_cast< unsigned int >(copy_options::create_symlinks)) != 0u) + { + const path* pfrom = &from; + path relative_from; + if (!from.is_absolute()) + { + // Try to generate a relative path from the target location to the original file + path cur_dir = detail::current_path(ec); + if (ec && *ec) + return; + path abs_from = detail::absolute(from.parent_path(), cur_dir, ec); + if (ec && *ec) + return; + path abs_to = to.parent_path(); + if (!abs_to.is_absolute()) + { + abs_to = detail::absolute(abs_to, cur_dir, ec); + if (ec && *ec) + return; + } + relative_from = detail::relative(abs_from, abs_to, ec); + if (ec && *ec) + return; + if (path_algorithms::compare_v4(relative_from, dot_path()) != 0) + path_algorithms::append_v4(relative_from, path_algorithms::filename_v4(from)); + else + relative_from = path_algorithms::filename_v4(from); + pfrom = &relative_from; + } + detail::create_symlink(*pfrom, to, ec); + return; + } + + if ((options & static_cast< unsigned int >(copy_options::create_hard_links)) != 0u) + { + detail::create_hard_link(from, to, ec); + return; + } + + error_code local_ec; + file_status to_stat; + if ((options & (static_cast< unsigned int >(copy_options::skip_symlinks) | + static_cast< unsigned int >(copy_options::create_symlinks))) != 0u) + { + to_stat = detail::symlink_status_impl(to, &local_ec); + } + else + { + to_stat = detail::status_impl(to, &local_ec); + } + + // Note: local_ec may be set by (symlink_)status() even in some non-fatal situations, e.g. when the file does not exist. + // OTOH, when it returns status_error, then a real error have happened and it must have set local_ec. + if (to_stat.type() == fs::status_error) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::copy", from, to, local_ec)); + *ec = local_ec; + return; + } + + if (is_directory(to_stat)) + { + path target(to); + path_algorithms::append_v4(target, path_algorithms::filename_v4(from)); + detail::copy_file(from, target, options, ec); + } + else + detail::copy_file(from, to, options, ec); + } + else if (is_directory(from_stat)) + { + error_code local_ec; + if ((options & static_cast< unsigned int >(copy_options::create_symlinks)) != 0u) + { + local_ec = make_error_code(system::errc::is_a_directory); + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::copy", from, to, local_ec)); + *ec = local_ec; + return; + } + + file_status to_stat; + if ((options & (static_cast< unsigned int >(copy_options::skip_symlinks) | + static_cast< unsigned int >(copy_options::create_symlinks))) != 0u) + { + to_stat = detail::symlink_status_impl(to, &local_ec); + } + else + { + to_stat = detail::status_impl(to, &local_ec); + } + + // Note: ec may be set by (symlink_)status() even in some non-fatal situations, e.g. when the file does not exist. + // OTOH, when it returns status_error, then a real error have happened and it must have set local_ec. + if (to_stat.type() == fs::status_error) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::copy", from, to, local_ec)); + *ec = local_ec; + return; + } + + if (!exists(to_stat)) + { + detail::create_directory(to, &from, ec); + if (ec && *ec) + return; + } + + if ((options & static_cast< unsigned int >(copy_options::recursive)) != 0u || options == 0u) + { + fs::directory_iterator itr; + detail::directory_iterator_construct(itr, from, static_cast< unsigned int >(directory_options::none), NULL, ec); + if (ec && *ec) + return; + + const fs::directory_iterator end_dit; + while (itr != end_dit) + { + path const& p = itr->path(); + { + path target(to); + path_algorithms::append_v4(target, path_algorithms::filename_v4(p)); + // Set _detail_recursing flag so that we don't recurse more than for one level deeper into the directory if options are copy_options::none + detail::copy(p, target, options | static_cast< unsigned int >(copy_options::_detail_recursing), ec); + } + if (ec && *ec) + return; + + detail::directory_iterator_increment(itr, ec); + if (ec && *ec) + return; + } + } + } + else + { + fail: + emit_error(BOOST_ERROR_NOT_SUPPORTED, from, to, ec, "boost::filesystem::copy"); + } +} + +BOOST_FILESYSTEM_DECL +bool copy_file(path const& from, path const& to, unsigned int options, error_code* ec) +{ + BOOST_ASSERT((((options & static_cast< unsigned int >(copy_options::overwrite_existing)) != 0u) + + ((options & static_cast< unsigned int >(copy_options::skip_existing)) != 0u) + + ((options & static_cast< unsigned int >(copy_options::update_existing)) != 0u)) <= 1); + + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + + int err = 0; + + // Note: Declare fd_wrappers here so that errno is not clobbered by close() that may be called in fd_wrapper destructors + fd_wrapper infile, outfile; + + while (true) + { + infile.fd = ::open(from.c_str(), O_RDONLY | O_CLOEXEC); + if (BOOST_UNLIKELY(infile.fd < 0)) + { + err = errno; + if (err == EINTR) + continue; + + fail: + emit_error(err, from, to, ec, "boost::filesystem::copy_file"); + return false; + } + + break; + } + +#if defined(BOOST_FILESYSTEM_USE_STATX) + unsigned int statx_data_mask = STATX_TYPE | STATX_MODE | STATX_INO | STATX_SIZE; + if ((options & static_cast< unsigned int >(copy_options::update_existing)) != 0u) + statx_data_mask |= STATX_MTIME; + + struct ::statx from_stat; + if (BOOST_UNLIKELY(invoke_statx(infile.fd, "", AT_EMPTY_PATH | AT_NO_AUTOMOUNT, statx_data_mask, &from_stat) < 0)) + { + fail_errno: + err = errno; + goto fail; + } + + if (BOOST_UNLIKELY((from_stat.stx_mask & statx_data_mask) != statx_data_mask)) + { + err = ENOSYS; + goto fail; + } +#else + struct ::stat from_stat; + if (BOOST_UNLIKELY(::fstat(infile.fd, &from_stat) != 0)) + { + fail_errno: + err = errno; + goto fail; + } +#endif + + const mode_t from_mode = get_mode(from_stat); + if (BOOST_UNLIKELY(!S_ISREG(from_mode))) + { + err = ENOSYS; + goto fail; + } + + mode_t to_mode = from_mode; +#if !defined(BOOST_FILESYSTEM_USE_WASI) + // Enable writing for the newly created files. Having write permission set is important e.g. for NFS, + // which checks the file permission on the server, even if the client's file descriptor supports writing. + to_mode |= S_IWUSR; +#endif + int oflag = O_WRONLY | O_CLOEXEC; + + if ((options & static_cast< unsigned int >(copy_options::update_existing)) != 0u) + { + // Try opening the existing file without truncation to test the modification time later + while (true) + { + outfile.fd = ::open(to.c_str(), oflag, to_mode); + if (outfile.fd < 0) + { + err = errno; + if (err == EINTR) + continue; + + if (err == ENOENT) + goto create_outfile; + + goto fail; + } + + break; + } + } + else + { + create_outfile: + oflag |= O_CREAT | O_TRUNC; + if (((options & static_cast< unsigned int >(copy_options::overwrite_existing)) == 0u || + (options & static_cast< unsigned int >(copy_options::skip_existing)) != 0u) && + (options & static_cast< unsigned int >(copy_options::update_existing)) == 0u) + { + oflag |= O_EXCL; + } + + while (true) + { + outfile.fd = ::open(to.c_str(), oflag, to_mode); + if (outfile.fd < 0) + { + err = errno; + if (err == EINTR) + continue; + + if (err == EEXIST && (options & static_cast< unsigned int >(copy_options::skip_existing)) != 0u) + return false; + + goto fail; + } + + break; + } + } + +#if defined(BOOST_FILESYSTEM_USE_STATX) + statx_data_mask = STATX_TYPE | STATX_MODE | STATX_INO; + if ((oflag & O_TRUNC) == 0) + { + // O_TRUNC is not set if copy_options::update_existing is set and an existing file was opened. + statx_data_mask |= STATX_MTIME; + } + + struct ::statx to_stat; + if (BOOST_UNLIKELY(invoke_statx(outfile.fd, "", AT_EMPTY_PATH | AT_NO_AUTOMOUNT, statx_data_mask, &to_stat) < 0)) + goto fail_errno; + + if (BOOST_UNLIKELY((to_stat.stx_mask & statx_data_mask) != statx_data_mask)) + { + err = ENOSYS; + goto fail; + } +#else + struct ::stat to_stat; + if (BOOST_UNLIKELY(::fstat(outfile.fd, &to_stat) != 0)) + goto fail_errno; +#endif + + to_mode = get_mode(to_stat); + if (BOOST_UNLIKELY(!S_ISREG(to_mode))) + { + err = ENOSYS; + goto fail; + } + + if (BOOST_UNLIKELY(detail::equivalent_stat(from_stat, to_stat))) + { + err = EEXIST; + goto fail; + } + + if ((oflag & O_TRUNC) == 0) + { + // O_TRUNC is not set if copy_options::update_existing is set and an existing file was opened. + // We need to check the last write times. +#if defined(BOOST_FILESYSTEM_USE_STATX) + if (from_stat.stx_mtime.tv_sec < to_stat.stx_mtime.tv_sec || (from_stat.stx_mtime.tv_sec == to_stat.stx_mtime.tv_sec && from_stat.stx_mtime.tv_nsec <= to_stat.stx_mtime.tv_nsec)) + return false; +#elif defined(BOOST_FILESYSTEM_STAT_ST_MTIMENSEC) + // Modify time is available with nanosecond precision. + if (from_stat.st_mtime < to_stat.st_mtime || (from_stat.st_mtime == to_stat.st_mtime && from_stat.BOOST_FILESYSTEM_STAT_ST_MTIMENSEC <= to_stat.BOOST_FILESYSTEM_STAT_ST_MTIMENSEC)) + return false; +#else + if (from_stat.st_mtime <= to_stat.st_mtime) + return false; +#endif + + if (BOOST_UNLIKELY(::ftruncate(outfile.fd, 0) != 0)) + goto fail_errno; + } + + // Note: Use block size of the target file since it is most important for writing performance. + err = filesystem::detail::atomic_load_relaxed(filesystem::detail::copy_file_data)(infile.fd, outfile.fd, get_size(from_stat), get_blksize(to_stat)); + if (BOOST_UNLIKELY(err != 0)) + goto fail; // err already contains the error code + +#if !defined(BOOST_FILESYSTEM_USE_WASI) + // If we created a new file with an explicitly added S_IWUSR permission, + // we may need to update its mode bits to match the source file. + if (to_mode != from_mode) + { + if (BOOST_UNLIKELY(::fchmod(outfile.fd, from_mode) != 0)) + goto fail_errno; + } +#endif + + if ((options & (static_cast< unsigned int >(copy_options::synchronize_data) | static_cast< unsigned int >(copy_options::synchronize))) != 0u) + { + if ((options & static_cast< unsigned int >(copy_options::synchronize)) != 0u) + err = full_sync(outfile.fd); + else + err = data_sync(outfile.fd); + + if (BOOST_UNLIKELY(err != 0)) + goto fail; + } + + // We have to explicitly close the output file descriptor in order to handle a possible error returned from it. The error may indicate + // a failure of a prior write operation. + err = close_fd(outfile.fd); + outfile.fd = -1; + if (BOOST_UNLIKELY(err < 0)) + { + err = errno; + // EINPROGRESS is an allowed error code in future POSIX revisions, according to https://www.austingroupbugs.net/view.php?id=529#c1200. + if (err != EINTR && err != EINPROGRESS) + goto fail; + } + + return true; + +#else // defined(BOOST_POSIX_API) + + DWORD copy_flags = 0u; + if ((options & static_cast< unsigned int >(copy_options::overwrite_existing)) == 0u || + (options & static_cast< unsigned int >(copy_options::skip_existing)) != 0u) + { + copy_flags |= COPY_FILE_FAIL_IF_EXISTS; + } + + if ((options & static_cast< unsigned int >(copy_options::update_existing)) != 0u) + { + // Create handle_wrappers here so that CloseHandle calls don't clobber error code returned by GetLastError + handle_wrapper hw_from, hw_to; + + // See the comment in last_write_time regarding access rights used here for GetFileTime. + hw_from.handle = create_file_handle( + from.c_str(), + FILE_READ_ATTRIBUTES | FILE_READ_EA, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS); + + FILETIME lwt_from; + if (hw_from.handle == INVALID_HANDLE_VALUE) + { + fail_last_error: + DWORD err = ::GetLastError(); + emit_error(err, from, to, ec, "boost::filesystem::copy_file"); + return false; + } + + if (!::GetFileTime(hw_from.handle, NULL, NULL, &lwt_from)) + goto fail_last_error; + + hw_to.handle = create_file_handle( + to.c_str(), + FILE_READ_ATTRIBUTES | FILE_READ_EA, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS); + + if (hw_to.handle != INVALID_HANDLE_VALUE) + { + FILETIME lwt_to; + if (!::GetFileTime(hw_to.handle, NULL, NULL, &lwt_to)) + goto fail_last_error; + + ULONGLONG tfrom = (static_cast< ULONGLONG >(lwt_from.dwHighDateTime) << 32) | static_cast< ULONGLONG >(lwt_from.dwLowDateTime); + ULONGLONG tto = (static_cast< ULONGLONG >(lwt_to.dwHighDateTime) << 32) | static_cast< ULONGLONG >(lwt_to.dwLowDateTime); + if (tfrom <= tto) + return false; + } + + copy_flags &= ~static_cast< DWORD >(COPY_FILE_FAIL_IF_EXISTS); + } + + struct callback_context + { + DWORD flush_error; + }; + + struct local + { + //! Callback that is called to report progress of \c CopyFileExW + static DWORD WINAPI on_copy_file_progress( + LARGE_INTEGER total_file_size, + LARGE_INTEGER total_bytes_transferred, + LARGE_INTEGER stream_size, + LARGE_INTEGER stream_bytes_transferred, + DWORD stream_number, + DWORD callback_reason, + HANDLE from_handle, + HANDLE to_handle, + LPVOID ctx) + { + // For each stream, CopyFileExW will open a separate pair of file handles, so we need to flush each stream separately. + if (stream_bytes_transferred.QuadPart == stream_size.QuadPart) + { + BOOL res = ::FlushFileBuffers(to_handle); + if (BOOST_UNLIKELY(!res)) + { + callback_context* context = static_cast< callback_context* >(ctx); + if (BOOST_LIKELY(context->flush_error == 0u)) + context->flush_error = ::GetLastError(); + } + } + + return PROGRESS_CONTINUE; + } + }; + + callback_context cb_context = {}; + LPPROGRESS_ROUTINE cb = NULL; + LPVOID cb_ctx = NULL; + + if ((options & (static_cast< unsigned int >(copy_options::synchronize_data) | static_cast< unsigned int >(copy_options::synchronize))) != 0u) + { + cb = &local::on_copy_file_progress; + cb_ctx = &cb_context; + } + + BOOL cancelled = FALSE; + BOOL res = ::CopyFileExW(from.c_str(), to.c_str(), cb, cb_ctx, &cancelled, copy_flags); + DWORD err; + if (BOOST_UNLIKELY(!res)) + { + err = ::GetLastError(); + if ((err == ERROR_FILE_EXISTS || err == ERROR_ALREADY_EXISTS) && (options & static_cast< unsigned int >(copy_options::skip_existing)) != 0u) + return false; + + copy_failed: + emit_error(err, from, to, ec, "boost::filesystem::copy_file"); + return false; + } + + if (BOOST_UNLIKELY(cb_context.flush_error != 0u)) + { + err = cb_context.flush_error; + goto copy_failed; + } + + return true; + +#endif // defined(BOOST_POSIX_API) +} + +BOOST_FILESYSTEM_DECL +void copy_symlink(path const& existing_symlink, path const& new_symlink, system::error_code* ec) +{ + path p(read_symlink(existing_symlink, ec)); + if (ec && *ec) + return; + create_symlink(p, new_symlink, ec); +} + +BOOST_FILESYSTEM_DECL +bool create_directories(path const& p, system::error_code* ec) +{ + if (p.empty()) + { + if (!ec) + { + BOOST_FILESYSTEM_THROW(filesystem_error( + "boost::filesystem::create_directories", p, + system::errc::make_error_code(system::errc::invalid_argument))); + } + ec->assign(system::errc::invalid_argument, system::generic_category()); + return false; + } + + if (ec) + ec->clear(); + + path::const_iterator e(p.end()), it(e); + path parent(p); + path const& dot_p = dot_path(); + path const& dot_dot_p = dot_dot_path(); + error_code local_ec; + + // Find the initial part of the path that exists + for (path fname = path_algorithms::filename_v4(parent); parent.has_relative_path(); fname = path_algorithms::filename_v4(parent)) + { + if (!fname.empty() && path_algorithms::compare_v4(fname, dot_p) != 0 && path_algorithms::compare_v4(fname, dot_dot_p) != 0) + { + file_status existing_status = detail::status_impl(parent, &local_ec); + + if (existing_status.type() == directory_file) + { + break; + } + else if (BOOST_UNLIKELY(existing_status.type() == status_error)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::create_directories", p, parent, local_ec)); + *ec = local_ec; + return false; + } + } + + path_algorithms::decrement_v4(it); + parent.remove_filename_and_trailing_separators(); + } + + // Create missing directories + bool created = false; + for (; it != e; path_algorithms::increment_v4(it)) + { + path const& fname = *it; + path_algorithms::append_v4(parent, fname); + if (!fname.empty() && path_algorithms::compare_v4(fname, dot_p) != 0 && path_algorithms::compare_v4(fname, dot_dot_p) != 0) + { + created = detail::create_directory(parent, NULL, &local_ec); + if (BOOST_UNLIKELY(!!local_ec)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::create_directories", p, parent, local_ec)); + *ec = local_ec; + return false; + } + } + } + + return created; +} + +BOOST_FILESYSTEM_DECL +bool create_directory(path const& p, const path* existing, error_code* ec) +{ + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + + mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO; + if (existing) + { +#if defined(BOOST_FILESYSTEM_USE_STATX) + struct ::statx existing_stat; + if (BOOST_UNLIKELY(invoke_statx(AT_FDCWD, existing->c_str(), AT_NO_AUTOMOUNT, STATX_TYPE | STATX_MODE, &existing_stat) < 0)) + { + emit_error(errno, p, *existing, ec, "boost::filesystem::create_directory"); + return false; + } + + if (BOOST_UNLIKELY((existing_stat.stx_mask & (STATX_TYPE | STATX_MODE)) != (STATX_TYPE | STATX_MODE))) + { + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, *existing, ec, "boost::filesystem::create_directory"); + return false; + } +#else + struct ::stat existing_stat; + if (::stat(existing->c_str(), &existing_stat) < 0) + { + emit_error(errno, p, *existing, ec, "boost::filesystem::create_directory"); + return false; + } +#endif + + const mode_t existing_mode = get_mode(existing_stat); + if (!S_ISDIR(existing_mode)) + { + emit_error(ENOTDIR, p, *existing, ec, "boost::filesystem::create_directory"); + return false; + } + + mode = existing_mode; + } + + if (::mkdir(p.c_str(), mode) == 0) + return true; + +#else // defined(BOOST_POSIX_API) + + BOOL res; + if (existing) + res = ::CreateDirectoryExW(existing->c_str(), p.c_str(), NULL); + else + res = ::CreateDirectoryW(p.c_str(), NULL); + + if (res) + return true; + +#endif // defined(BOOST_POSIX_API) + + // attempt to create directory failed + err_t errval = BOOST_ERRNO; // save reason for failure + error_code dummy; + + if (is_directory(p, dummy)) + return false; + + // attempt to create directory failed && it doesn't already exist + emit_error(errval, p, ec, "boost::filesystem::create_directory"); + return false; +} + +// Deprecated, to be removed in a future release +BOOST_FILESYSTEM_DECL +void copy_directory(path const& from, path const& to, system::error_code* ec) +{ + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + +#if defined(BOOST_FILESYSTEM_USE_STATX) + int err; + struct ::statx from_stat; + if (BOOST_UNLIKELY(invoke_statx(AT_FDCWD, from.c_str(), AT_NO_AUTOMOUNT, STATX_TYPE | STATX_MODE, &from_stat) < 0)) + { + fail_errno: + err = errno; + fail: + emit_error(err, from, to, ec, "boost::filesystem::copy_directory"); + return; + } + + if (BOOST_UNLIKELY((from_stat.stx_mask & (STATX_TYPE | STATX_MODE)) != (STATX_TYPE | STATX_MODE))) + { + err = BOOST_ERROR_NOT_SUPPORTED; + goto fail; + } +#else + struct ::stat from_stat; + if (BOOST_UNLIKELY(::stat(from.c_str(), &from_stat) < 0)) + { + fail_errno: + emit_error(errno, from, to, ec, "boost::filesystem::copy_directory"); + return; + } +#endif + + if (BOOST_UNLIKELY(::mkdir(to.c_str(), get_mode(from_stat)) < 0)) + goto fail_errno; + +#else // defined(BOOST_POSIX_API) + + if (BOOST_UNLIKELY(!::CreateDirectoryExW(from.c_str(), to.c_str(), 0))) + emit_error(BOOST_ERRNO, from, to, ec, "boost::filesystem::copy_directory"); + +#endif // defined(BOOST_POSIX_API) +} + +BOOST_FILESYSTEM_DECL +void create_directory_symlink(path const& to, path const& from, system::error_code* ec) +{ + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + int err = ::symlink(to.c_str(), from.c_str()); + if (BOOST_UNLIKELY(err < 0)) + { + err = errno; + emit_error(err, to, from, ec, "boost::filesystem::create_directory_symlink"); + } +#else + // see if actually supported by Windows runtime dll + if (!create_symbolic_link_api) + { + emit_error(BOOST_ERROR_NOT_SUPPORTED, to, from, ec, "boost::filesystem::create_directory_symlink"); + return; + } + + if (!create_symbolic_link_api(from.c_str(), to.c_str(), SYMBOLIC_LINK_FLAG_DIRECTORY | SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE)) + { + emit_error(BOOST_ERRNO, to, from, ec, "boost::filesystem::create_directory_symlink"); + } +#endif +} + +BOOST_FILESYSTEM_DECL +void create_hard_link(path const& to, path const& from, error_code* ec) +{ + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + int err = ::link(to.c_str(), from.c_str()); + if (BOOST_UNLIKELY(err < 0)) + { + err = errno; + emit_error(err, to, from, ec, "boost::filesystem::create_hard_link"); + } +#else + // see if actually supported by Windows runtime dll + CreateHardLinkW_t* chl_api = filesystem::detail::atomic_load_relaxed(create_hard_link_api); + if (BOOST_UNLIKELY(!chl_api)) + { + emit_error(BOOST_ERROR_NOT_SUPPORTED, to, from, ec, "boost::filesystem::create_hard_link"); + return; + } + + if (BOOST_UNLIKELY(!chl_api(from.c_str(), to.c_str(), NULL))) + { + emit_error(BOOST_ERRNO, to, from, ec, "boost::filesystem::create_hard_link"); + } +#endif +} + +BOOST_FILESYSTEM_DECL +void create_symlink(path const& to, path const& from, error_code* ec) +{ + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + int err = ::symlink(to.c_str(), from.c_str()); + if (BOOST_UNLIKELY(err < 0)) + { + err = errno; + emit_error(err, to, from, ec, "boost::filesystem::create_symlink"); + } +#else + // see if actually supported by Windows runtime dll + CreateSymbolicLinkW_t* csl_api = filesystem::detail::atomic_load_relaxed(create_symbolic_link_api); + if (BOOST_UNLIKELY(!csl_api)) + { + emit_error(BOOST_ERROR_NOT_SUPPORTED, to, from, ec, "boost::filesystem::create_symlink"); + return; + } + + if (BOOST_UNLIKELY(!csl_api(from.c_str(), to.c_str(), SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE))) + { + emit_error(BOOST_ERRNO, to, from, ec, "boost::filesystem::create_symlink"); + } +#endif +} + +BOOST_FILESYSTEM_DECL +path current_path(error_code* ec) +{ +#if defined(UNDER_CE) || defined(BOOST_FILESYSTEM_USE_WASI) + // Windows CE has no current directory, so everything's relative to the root of the directory tree. + // WASI also does not support current path. + emit_error(BOOST_ERROR_NOT_SUPPORTED, ec, "boost::filesystem::current_path"); + return path(); +#elif defined(BOOST_POSIX_API) + struct local + { + static bool getcwd_error(error_code* ec) + { + const int err = errno; + return error((err != ERANGE +#if defined(__MSL__) && (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)) + // bug in some versions of the Metrowerks C lib on the Mac: wrong errno set + && err != 0 +#endif + ) ? err : 0, + ec, "boost::filesystem::current_path"); + } + }; + + path cur; + char small_buf[small_path_size]; + const char* p = ::getcwd(small_buf, sizeof(small_buf)); + if (BOOST_LIKELY(!!p)) + { + cur = p; + if (ec) + ec->clear(); + } + else if (BOOST_LIKELY(!local::getcwd_error(ec))) + { + for (std::size_t path_max = sizeof(small_buf) * 2u;; path_max *= 2u) // loop 'til buffer large enough + { + if (BOOST_UNLIKELY(path_max > absolute_path_max)) + { + emit_error(ENAMETOOLONG, ec, "boost::filesystem::current_path"); + break; + } + + boost::scoped_array< char > buf(new char[path_max]); + p = ::getcwd(buf.get(), path_max); + if (BOOST_LIKELY(!!p)) + { + cur = buf.get(); + if (ec) + ec->clear(); + break; + } + else if (BOOST_UNLIKELY(local::getcwd_error(ec))) + { + break; + } + } + } + + return cur; +#else + DWORD sz; + if ((sz = ::GetCurrentDirectoryW(0, NULL)) == 0) + sz = 1; + boost::scoped_array< path::value_type > buf(new path::value_type[sz]); + error(::GetCurrentDirectoryW(sz, buf.get()) == 0 ? BOOST_ERRNO : 0, ec, "boost::filesystem::current_path"); + return path(buf.get()); +#endif +} + +BOOST_FILESYSTEM_DECL +void current_path(path const& p, system::error_code* ec) +{ +#if defined(UNDER_CE) || defined(BOOST_FILESYSTEM_USE_WASI) + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::current_path"); +#else + error(!BOOST_SET_CURRENT_DIRECTORY(p.c_str()) ? BOOST_ERRNO : 0, p, ec, "boost::filesystem::current_path"); +#endif +} + +BOOST_FILESYSTEM_DECL +bool equivalent(path const& p1, path const& p2, system::error_code* ec) +{ +#if defined(BOOST_POSIX_API) + + // p2 is done first, so any error reported is for p1 +#if defined(BOOST_FILESYSTEM_USE_STATX) + struct ::statx s2; + int e2 = invoke_statx(AT_FDCWD, p2.c_str(), AT_NO_AUTOMOUNT, STATX_INO, &s2); + if (BOOST_LIKELY(e2 == 0)) + { + if (BOOST_UNLIKELY((s2.stx_mask & STATX_INO) != STATX_INO)) + { + fail_unsupported: + emit_error(BOOST_ERROR_NOT_SUPPORTED, p1, p2, ec, "boost::filesystem::equivalent"); + return false; + } + } + + struct ::statx s1; + int e1 = invoke_statx(AT_FDCWD, p1.c_str(), AT_NO_AUTOMOUNT, STATX_INO, &s1); + if (BOOST_LIKELY(e1 == 0)) + { + if (BOOST_UNLIKELY((s1.stx_mask & STATX_INO) != STATX_INO)) + goto fail_unsupported; + } +#else + struct ::stat s2; + int e2 = ::stat(p2.c_str(), &s2); + struct ::stat s1; + int e1 = ::stat(p1.c_str(), &s1); +#endif + + if (BOOST_UNLIKELY(e1 != 0 || e2 != 0)) + { + // if one is invalid and the other isn't then they aren't equivalent, + // but if both are invalid then it is an error + if (e1 != 0 && e2 != 0) + emit_error(errno, p1, p2, ec, "boost::filesystem::equivalent"); + return false; + } + + return equivalent_stat(s1, s2); + +#else // Windows + + // Thanks to Jeremy Maitin-Shepard for much help and for permission to + // base the equivalent() implementation on portions of his + // file-equivalence-win32.cpp experimental code. + + // Note well: Physical location on external media is part of the + // equivalence criteria. If there are no open handles, physical location + // can change due to defragmentation or other relocations. Thus handles + // must be held open until location information for both paths has + // been retrieved. + + // p2 is done first, so any error reported is for p1 + handle_wrapper h2(create_file_handle( + p2.c_str(), + FILE_READ_ATTRIBUTES, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS)); + + handle_wrapper h1(create_file_handle( + p1.c_str(), + FILE_READ_ATTRIBUTES, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS)); + + if (BOOST_UNLIKELY(h1.handle == INVALID_HANDLE_VALUE || h2.handle == INVALID_HANDLE_VALUE)) + { + // if one is invalid and the other isn't, then they aren't equivalent, + // but if both are invalid then it is an error + if (h1.handle == INVALID_HANDLE_VALUE && h2.handle == INVALID_HANDLE_VALUE) + error(BOOST_ERRNO, p1, p2, ec, "boost::filesystem::equivalent"); + return false; + } + + // at this point, both handles are known to be valid BY_HANDLE_FILE_INFORMATION info1, info2; - if (error(!::GetFileInformationByHandle(h1.handle, &info1) ? BOOST_ERRNO : 0, - p1, p2, ec, "boost::filesystem::equivalent")) - return false; + if (error(!::GetFileInformationByHandle(h1.handle, &info1) ? BOOST_ERRNO : 0, p1, p2, ec, "boost::filesystem::equivalent")) + return false; - if (error(!::GetFileInformationByHandle(h2.handle, &info2) ? BOOST_ERRNO : 0, - p1, p2, ec, "boost::filesystem::equivalent")) - return false; + if (error(!::GetFileInformationByHandle(h2.handle, &info2) ? BOOST_ERRNO : 0, p1, p2, ec, "boost::filesystem::equivalent")) + return false; // In theory, volume serial numbers are sufficient to distinguish between // devices, but in practice VSN's are sometimes duplicated, so last write // time and file size are also checked. - return - info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber - && info1.nFileIndexHigh == info2.nFileIndexHigh - && info1.nFileIndexLow == info2.nFileIndexLow - && info1.nFileSizeHigh == info2.nFileSizeHigh - && info1.nFileSizeLow == info2.nFileSizeLow - && info1.ftLastWriteTime.dwLowDateTime - == info2.ftLastWriteTime.dwLowDateTime - && info1.ftLastWriteTime.dwHighDateTime - == info2.ftLastWriteTime.dwHighDateTime; - -# endif - } - - BOOST_FILESYSTEM_DECL - boost::uintmax_t file_size(const path& p, error_code* ec) - { -# ifdef BOOST_POSIX_API - - struct stat path_stat; - if (error(::stat(p.c_str(), &path_stat)!= 0 ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::file_size")) - return static_cast(-1); - if (error(!S_ISREG(path_stat.st_mode) ? EPERM : 0, - p, ec, "boost::filesystem::file_size")) - return static_cast(-1); - - return static_cast(path_stat.st_size); - -# else // Windows + return info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber && + info1.nFileIndexHigh == info2.nFileIndexHigh && + info1.nFileIndexLow == info2.nFileIndexLow && + info1.nFileSizeHigh == info2.nFileSizeHigh && + info1.nFileSizeLow == info2.nFileSizeLow && + info1.ftLastWriteTime.dwLowDateTime == info2.ftLastWriteTime.dwLowDateTime && + info1.ftLastWriteTime.dwHighDateTime == info2.ftLastWriteTime.dwHighDateTime; + +#endif +} + +BOOST_FILESYSTEM_DECL +uintmax_t file_size(path const& p, error_code* ec) +{ + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + +#if defined(BOOST_FILESYSTEM_USE_STATX) + struct ::statx path_stat; + if (BOOST_UNLIKELY(invoke_statx(AT_FDCWD, p.c_str(), AT_NO_AUTOMOUNT, STATX_TYPE | STATX_SIZE, &path_stat) < 0)) + { + emit_error(errno, p, ec, "boost::filesystem::file_size"); + return static_cast< uintmax_t >(-1); + } + + if (BOOST_UNLIKELY((path_stat.stx_mask & (STATX_TYPE | STATX_SIZE)) != (STATX_TYPE | STATX_SIZE) || !S_ISREG(path_stat.stx_mode))) + { + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::file_size"); + return static_cast< uintmax_t >(-1); + } +#else + struct ::stat path_stat; + if (BOOST_UNLIKELY(::stat(p.c_str(), &path_stat) < 0)) + { + emit_error(errno, p, ec, "boost::filesystem::file_size"); + return static_cast< uintmax_t >(-1); + } + + if (BOOST_UNLIKELY(!S_ISREG(path_stat.st_mode))) + { + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::file_size"); + return static_cast< uintmax_t >(-1); + } +#endif + + return get_size(path_stat); + +#else // defined(BOOST_POSIX_API) // assume uintmax_t is 64-bits on all Windows compilers WIN32_FILE_ATTRIBUTE_DATA fad; - if (error(::GetFileAttributesExW(p.c_str(), ::GetFileExInfoStandard, &fad)== 0 - ? BOOST_ERRNO : 0, p, ec, "boost::filesystem::file_size")) - return static_cast(-1); + if (BOOST_UNLIKELY(!::GetFileAttributesExW(p.c_str(), ::GetFileExInfoStandard, &fad))) + { + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::file_size"); + return static_cast< uintmax_t >(-1); + } + + if (BOOST_UNLIKELY((fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)) + { + emit_error(ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::file_size"); + return static_cast< uintmax_t >(-1); + } + + return (static_cast< uintmax_t >(fad.nFileSizeHigh) + << (sizeof(fad.nFileSizeLow) * 8u)) | + fad.nFileSizeLow; + +#endif // defined(BOOST_POSIX_API) +} + +BOOST_FILESYSTEM_DECL +uintmax_t hard_link_count(path const& p, system::error_code* ec) +{ + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + +#if defined(BOOST_FILESYSTEM_USE_STATX) + struct ::statx path_stat; + if (BOOST_UNLIKELY(invoke_statx(AT_FDCWD, p.c_str(), AT_NO_AUTOMOUNT, STATX_NLINK, &path_stat) < 0)) + { + emit_error(errno, p, ec, "boost::filesystem::hard_link_count"); + return static_cast< uintmax_t >(-1); + } + + if (BOOST_UNLIKELY((path_stat.stx_mask & STATX_NLINK) != STATX_NLINK)) + { + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::hard_link_count"); + return static_cast< uintmax_t >(-1); + } - if (error((fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)!= 0 - ? ERROR_NOT_SUPPORTED : 0, p, ec, "boost::filesystem::file_size")) - return static_cast(-1); + return static_cast< uintmax_t >(path_stat.stx_nlink); +#else + struct ::stat path_stat; + if (BOOST_UNLIKELY(::stat(p.c_str(), &path_stat) < 0)) + { + emit_error(errno, p, ec, "boost::filesystem::hard_link_count"); + return static_cast< uintmax_t >(-1); + } - return (static_cast(fad.nFileSizeHigh) - << (sizeof(fad.nFileSizeLow)*8)) + fad.nFileSizeLow; -# endif - } + return static_cast< uintmax_t >(path_stat.st_nlink); +#endif - BOOST_FILESYSTEM_DECL - boost::uintmax_t hard_link_count(const path& p, system::error_code* ec) - { -# ifdef BOOST_POSIX_API +#else // defined(BOOST_POSIX_API) - struct stat path_stat; - return error(::stat(p.c_str(), &path_stat)!= 0 ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::hard_link_count") - ? 0 - : static_cast(path_stat.st_nlink); + handle_wrapper h(create_file_handle( + p.c_str(), + FILE_READ_ATTRIBUTES, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS)); -# else // Windows + if (BOOST_UNLIKELY(h.handle == INVALID_HANDLE_VALUE)) + { + fail_errno: + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::hard_link_count"); + return static_cast< uintmax_t >(-1); + } // Link count info is only available through GetFileInformationByHandle BY_HANDLE_FILE_INFORMATION info; - handle_wrapper h( - create_file_handle(p.c_str(), 0, - FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)); - return - !error(h.handle == INVALID_HANDLE_VALUE ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::hard_link_count") - && !error(::GetFileInformationByHandle(h.handle, &info)== 0 ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::hard_link_count") - ? info.nNumberOfLinks - : 0; -# endif - } - - BOOST_FILESYSTEM_DECL - path initial_path(error_code* ec) - { - static path init_path; - if (init_path.empty()) + if (BOOST_UNLIKELY(!::GetFileInformationByHandle(h.handle, &info))) + goto fail_errno; + + return static_cast< uintmax_t >(info.nNumberOfLinks); + +#endif // defined(BOOST_POSIX_API) +} + +BOOST_FILESYSTEM_DECL +path initial_path(error_code* ec) +{ + static path init_path; + if (init_path.empty()) init_path = current_path(ec); - else if (ec != 0) ec->clear(); - return init_path; - } - - BOOST_FILESYSTEM_DECL - bool is_empty(const path& p, system::error_code* ec) - { -# ifdef BOOST_POSIX_API - - struct stat path_stat; - if (error(::stat(p.c_str(), &path_stat)!= 0, - p, ec, "boost::filesystem::is_empty")) - return false; - return S_ISDIR(path_stat.st_mode) - ? is_empty_directory(p, ec) - : path_stat.st_size == 0; -# else + else if (ec) + ec->clear(); + return init_path; +} + +BOOST_FILESYSTEM_DECL +bool is_empty(path const& p, system::error_code* ec) +{ + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + +#if defined(BOOST_FILESYSTEM_USE_STATX) + struct ::statx path_stat; + if (BOOST_UNLIKELY(invoke_statx(AT_FDCWD, p.c_str(), AT_NO_AUTOMOUNT, STATX_TYPE | STATX_SIZE, &path_stat) < 0)) + { + emit_error(errno, p, ec, "boost::filesystem::is_empty"); + return false; + } + + if (BOOST_UNLIKELY((path_stat.stx_mask & STATX_TYPE) != STATX_TYPE)) + { + fail_unsupported: + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::is_empty"); + return false; + } + + if (S_ISDIR(get_mode(path_stat))) + return is_empty_directory(p, ec); + + if (BOOST_UNLIKELY((path_stat.stx_mask & STATX_SIZE) != STATX_SIZE)) + goto fail_unsupported; + + return get_size(path_stat) == 0u; +#else + struct ::stat path_stat; + if (BOOST_UNLIKELY(::stat(p.c_str(), &path_stat) < 0)) + { + emit_error(errno, p, ec, "boost::filesystem::is_empty"); + return false; + } + + return S_ISDIR(get_mode(path_stat)) ? is_empty_directory(p, ec) : get_size(path_stat) == 0u; +#endif + +#else // defined(BOOST_POSIX_API) WIN32_FILE_ATTRIBUTE_DATA fad; - if (error(::GetFileAttributesExW(p.c_str(), ::GetFileExInfoStandard, &fad)== 0 - ? BOOST_ERRNO : 0, p, ec, "boost::filesystem::is_empty")) + if (BOOST_UNLIKELY(!::GetFileAttributesExW(p.c_str(), ::GetFileExInfoStandard, &fad))) + { + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::is_empty"); return false; + } + + return (fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? is_empty_directory(p, ec) : (!fad.nFileSizeHigh && !fad.nFileSizeLow); - if (ec != 0) ec->clear(); - return - (fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) - ? is_empty_directory(p, ec) - : (!fad.nFileSizeHigh && !fad.nFileSizeLow); -# endif - } +#endif // defined(BOOST_POSIX_API) +} + +BOOST_FILESYSTEM_DECL +std::time_t creation_time(path const& p, system::error_code* ec) +{ + if (ec) + ec->clear(); - BOOST_FILESYSTEM_DECL - std::time_t last_write_time(const path& p, system::error_code* ec) - { -# ifdef BOOST_POSIX_API +#if defined(BOOST_POSIX_API) + +#if defined(BOOST_FILESYSTEM_USE_STATX) + struct ::statx stx; + if (BOOST_UNLIKELY(invoke_statx(AT_FDCWD, p.c_str(), AT_NO_AUTOMOUNT, STATX_BTIME, &stx) < 0)) + { + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::creation_time"); + return (std::numeric_limits< std::time_t >::min)(); + } + if (BOOST_UNLIKELY((stx.stx_mask & STATX_BTIME) != STATX_BTIME)) + { + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::creation_time"); + return (std::numeric_limits< std::time_t >::min)(); + } + return stx.stx_btime.tv_sec; +#elif defined(BOOST_FILESYSTEM_STAT_ST_BIRTHTIME) && defined(BOOST_FILESYSTEM_STAT_ST_BIRTHTIMENSEC) + struct ::stat st; + if (BOOST_UNLIKELY(::stat(p.c_str(), &st) < 0)) + { + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::creation_time"); + return (std::numeric_limits< std::time_t >::min)(); + } + return st.BOOST_FILESYSTEM_STAT_ST_BIRTHTIME; +#else + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::creation_time"); + return (std::numeric_limits< std::time_t >::min)(); +#endif - struct stat path_stat; - if (error(::stat(p.c_str(), &path_stat)!= 0 ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::last_write_time")) - return std::time_t(-1); - return path_stat.st_mtime; +#else // defined(BOOST_POSIX_API) -# else + // See the comment in last_write_time regarding access rights used here for GetFileTime. + handle_wrapper hw(create_file_handle( + p.c_str(), + FILE_READ_ATTRIBUTES | FILE_READ_EA, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS)); - handle_wrapper hw( - create_file_handle(p.c_str(), 0, - FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)); + if (BOOST_UNLIKELY(hw.handle == INVALID_HANDLE_VALUE)) + { + fail: + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::creation_time"); + return (std::numeric_limits< std::time_t >::min)(); + } - if (error(hw.handle == INVALID_HANDLE_VALUE ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::last_write_time")) - return std::time_t(-1); + FILETIME ct; + if (BOOST_UNLIKELY(!::GetFileTime(hw.handle, &ct, NULL, NULL))) + goto fail; - FILETIME lwt; + return to_time_t(ct); + +#endif // defined(BOOST_POSIX_API) +} + +BOOST_FILESYSTEM_DECL +std::time_t last_write_time(path const& p, system::error_code* ec) +{ + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + +#if defined(BOOST_FILESYSTEM_USE_STATX) + struct ::statx stx; + if (BOOST_UNLIKELY(invoke_statx(AT_FDCWD, p.c_str(), AT_NO_AUTOMOUNT, STATX_MTIME, &stx) < 0)) + { + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::last_write_time"); + return (std::numeric_limits< std::time_t >::min)(); + } + if (BOOST_UNLIKELY((stx.stx_mask & STATX_MTIME) != STATX_MTIME)) + { + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::last_write_time"); + return (std::numeric_limits< std::time_t >::min)(); + } + return stx.stx_mtime.tv_sec; +#else + struct ::stat st; + if (BOOST_UNLIKELY(::stat(p.c_str(), &st) < 0)) + { + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::last_write_time"); + return (std::numeric_limits< std::time_t >::min)(); + } + return st.st_mtime; +#endif + +#else // defined(BOOST_POSIX_API) - if (error(::GetFileTime(hw.handle, 0, 0, &lwt)== 0 ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::last_write_time")) - return std::time_t(-1); + // GetFileTime is documented to require GENERIC_READ access right, but this causes problems if the file + // is opened by another process without FILE_SHARE_READ. In practice, FILE_READ_ATTRIBUTES works, and + // FILE_READ_EA is also added for good measure, in case if it matters for SMBv1. + handle_wrapper hw(create_file_handle( + p.c_str(), + FILE_READ_ATTRIBUTES | FILE_READ_EA, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS)); + + if (BOOST_UNLIKELY(hw.handle == INVALID_HANDLE_VALUE)) + { + fail: + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::last_write_time"); + return (std::numeric_limits< std::time_t >::min)(); + } + + FILETIME lwt; + if (BOOST_UNLIKELY(!::GetFileTime(hw.handle, NULL, NULL, &lwt))) + goto fail; return to_time_t(lwt); -# endif - } - - BOOST_FILESYSTEM_DECL - void last_write_time(const path& p, const std::time_t new_time, - system::error_code* ec) - { -# ifdef BOOST_POSIX_API - - struct stat path_stat; - if (error(::stat(p.c_str(), &path_stat)!= 0, - p, ec, "boost::filesystem::last_write_time")) + +#endif // defined(BOOST_POSIX_API) +} + +BOOST_FILESYSTEM_DECL +void last_write_time(path const& p, const std::time_t new_time, system::error_code* ec) +{ + if (ec) + ec->clear(); + +#if defined(BOOST_POSIX_API) + +#if defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + + struct timespec times[2] = {}; + + // Keep the last access time unchanged + times[0].tv_nsec = UTIME_OMIT; + + times[1].tv_sec = new_time; + + if (BOOST_UNLIKELY(::utimensat(AT_FDCWD, p.c_str(), times, 0) != 0)) + { + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::last_write_time"); + return; + } + +#else // defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + + struct ::stat st; + if (BOOST_UNLIKELY(::stat(p.c_str(), &st) < 0)) + { + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::last_write_time"); return; + } + ::utimbuf buf; - buf.actime = path_stat.st_atime; // utime()updates access time too:-( + buf.actime = st.st_atime; // utime() updates access time too :-( buf.modtime = new_time; - error(::utime(p.c_str(), &buf)!= 0 ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::last_write_time"); + if (BOOST_UNLIKELY(::utime(p.c_str(), &buf) < 0)) + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::last_write_time"); -# else +#endif // defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) - handle_wrapper hw( - create_file_handle(p.c_str(), FILE_WRITE_ATTRIBUTES, - FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)); +#else // defined(BOOST_POSIX_API) - if (error(hw.handle == INVALID_HANDLE_VALUE ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::last_write_time")) + handle_wrapper hw(create_file_handle( + p.c_str(), + FILE_WRITE_ATTRIBUTES, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS)); + + if (BOOST_UNLIKELY(hw.handle == INVALID_HANDLE_VALUE)) + { + fail: + emit_error(BOOST_ERRNO, p, ec, "boost::filesystem::last_write_time"); return; + } FILETIME lwt; to_FILETIME(new_time, lwt); - error(::SetFileTime(hw.handle, 0, 0, &lwt)== 0 ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::last_write_time"); -# endif - } + if (BOOST_UNLIKELY(!::SetFileTime(hw.handle, NULL, NULL, &lwt))) + goto fail; + +#endif // defined(BOOST_POSIX_API) +} -# ifdef BOOST_POSIX_API - const perms active_bits(all_all | set_uid_on_exe | set_gid_on_exe | sticky_bit); - inline mode_t mode_cast(perms prms) { return prms & active_bits; } -# endif +#ifdef BOOST_POSIX_API +const perms active_bits(all_all | set_uid_on_exe | set_gid_on_exe | sticky_bit); +inline mode_t mode_cast(perms prms) +{ + return prms & active_bits; +} +#endif - BOOST_FILESYSTEM_DECL - void permissions(const path& p, perms prms, system::error_code* ec) - { - BOOST_ASSERT_MSG(!((prms & add_perms) && (prms & remove_perms)), - "add_perms and remove_perms are mutually exclusive"); +BOOST_FILESYSTEM_DECL +void permissions(path const& p, perms prms, system::error_code* ec) +{ + BOOST_ASSERT_MSG(!((prms & add_perms) && (prms & remove_perms)), "add_perms and remove_perms are mutually exclusive"); - if ((prms & add_perms) && (prms & remove_perms)) // precondition failed - return; + if ((prms & add_perms) && (prms & remove_perms)) // precondition failed + return; -# ifdef BOOST_POSIX_API +#if defined(BOOST_FILESYSTEM_USE_WASI) + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::permissions"); +#elif defined(BOOST_POSIX_API) error_code local_ec; - file_status current_status((prms & symlink_perms) - ? fs::symlink_status(p, local_ec) - : fs::status(p, local_ec)); + file_status current_status((prms & symlink_perms) ? detail::symlink_status_impl(p, &local_ec) : detail::status_impl(p, &local_ec)); if (local_ec) { - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error( - "boost::filesystem::permissions", p, local_ec)); - else + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::permissions", p, local_ec)); + *ec = local_ec; - return; + return; } if (prms & add_perms) - prms |= current_status.permissions(); + prms |= current_status.permissions(); else if (prms & remove_perms) - prms = current_status.permissions() & ~prms; + prms = current_status.permissions() & ~prms; // OS X <10.10, iOS <8.0 and some other platforms don't support fchmodat(). // Solaris (SunPro and gcc) only support fchmodat() on Solaris 11 and higher, @@ -1487,923 +3972,643 @@ namespace detail // "http://man7.org/linux/man-pages/man7/symlink.7.html" // - See the fchmodat() Linux man page: // "http://man7.org/linux/man-pages/man2/fchmodat.2.html" -# if defined(AT_FDCWD) && defined(AT_SYMLINK_NOFOLLOW) \ - && !(defined(__SUNPRO_CC) || defined(__sun) || defined(sun)) \ - && !(defined(linux) || defined(__linux) || defined(__linux__)) \ - && !(defined(__MAC_OS_X_VERSION_MIN_REQUIRED) \ - && __MAC_OS_X_VERSION_MIN_REQUIRED < 101000) \ - && !(defined(__IPHONE_OS_VERSION_MIN_REQUIRED) \ - && __IPHONE_OS_VERSION_MIN_REQUIRED < 80000) \ - && !(defined(__QNX__) && (_NTO_VERSION <= 700)) - if (::fchmodat(AT_FDCWD, p.c_str(), mode_cast(prms), - !(prms & symlink_perms) ? 0 : AT_SYMLINK_NOFOLLOW)) -# else // fallback if fchmodat() not supported - if (::chmod(p.c_str(), mode_cast(prms))) -# endif - { - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error( - "boost::filesystem::permissions", p, - error_code(errno, system::generic_category()))); - else - ec->assign(errno, system::generic_category()); - } - -# else // Windows +#if defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) && \ + !(defined(__SUNPRO_CC) || defined(__sun) || defined(sun)) && \ + !(defined(linux) || defined(__linux) || defined(__linux__)) && \ + !(defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101000) && \ + !(defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 80000) && \ + !(defined(__rtems__)) && \ + !(defined(__QNX__) && (_NTO_VERSION <= 700)) + if (::fchmodat(AT_FDCWD, p.c_str(), mode_cast(prms), !(prms & symlink_perms) ? 0 : AT_SYMLINK_NOFOLLOW)) +#else // fallback if fchmodat() not supported + if (::chmod(p.c_str(), mode_cast(prms))) +#endif + { + const int err = errno; + if (!ec) + { + BOOST_FILESYSTEM_THROW(filesystem_error( + "boost::filesystem::permissions", p, error_code(err, system::generic_category()))); + } + + ec->assign(err, system::generic_category()); + } + +#else // Windows // if not going to alter FILE_ATTRIBUTE_READONLY, just return - if (!(!((prms & (add_perms | remove_perms))) - || (prms & (owner_write|group_write|others_write)))) - return; + if (!(!((prms & (add_perms | remove_perms))) || (prms & (owner_write | group_write | others_write)))) + return; DWORD attr = ::GetFileAttributesW(p.c_str()); if (error(attr == 0 ? BOOST_ERRNO : 0, p, ec, "boost::filesystem::permissions")) - return; + return; if (prms & add_perms) - attr &= ~FILE_ATTRIBUTE_READONLY; + attr &= ~FILE_ATTRIBUTE_READONLY; else if (prms & remove_perms) - attr |= FILE_ATTRIBUTE_READONLY; - else if (prms & (owner_write|group_write|others_write)) - attr &= ~FILE_ATTRIBUTE_READONLY; + attr |= FILE_ATTRIBUTE_READONLY; + else if (prms & (owner_write | group_write | others_write)) + attr &= ~FILE_ATTRIBUTE_READONLY; else - attr |= FILE_ATTRIBUTE_READONLY; + attr |= FILE_ATTRIBUTE_READONLY; + + error(::SetFileAttributesW(p.c_str(), attr) == 0 ? BOOST_ERRNO : 0, p, ec, "boost::filesystem::permissions"); +#endif +} - error(::SetFileAttributesW(p.c_str(), attr) == 0 ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::permissions"); -# endif - } +BOOST_FILESYSTEM_DECL +path read_symlink(path const& p, system::error_code* ec) +{ + if (ec) + ec->clear(); - BOOST_FILESYSTEM_DECL - path read_symlink(const path& p, system::error_code* ec) - { path symlink_path; -# ifdef BOOST_POSIX_API +#ifdef BOOST_POSIX_API + const char* const path_str = p.c_str(); + char small_buf[small_path_size]; + ssize_t result = ::readlink(path_str, small_buf, sizeof(small_buf)); + if (BOOST_UNLIKELY(result < 0)) + { + fail: + const int err = errno; + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::read_symlink", p, error_code(err, system_category()))); - for (std::size_t path_max = 64;; path_max *= 2)// loop 'til buffer large enough + ec->assign(err, system_category()); + } + else if (BOOST_LIKELY(static_cast< std::size_t >(result) < sizeof(small_buf))) { - boost::scoped_array buf(new char[path_max]); - ssize_t result; - if ((result=::readlink(p.c_str(), buf.get(), path_max))== -1) - { - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::read_symlink", - p, error_code(errno, system_category()))); - else ec->assign(errno, system_category()); - break; - } - else - { - if(result != static_cast(path_max)) + symlink_path.assign(small_buf, small_buf + result); + } + else + { + for (std::size_t path_max = sizeof(small_buf) * 2u;; path_max *= 2u) // loop 'til buffer large enough { - symlink_path.assign(buf.get(), buf.get() + result); - if (ec != 0) ec->clear(); - break; + if (BOOST_UNLIKELY(path_max > absolute_path_max)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::read_symlink", p, error_code(ENAMETOOLONG, system_category()))); + + ec->assign(ENAMETOOLONG, system_category()); + break; + } + + boost::scoped_array< char > buf(new char[path_max]); + result = ::readlink(path_str, buf.get(), path_max); + if (BOOST_UNLIKELY(result < 0)) + { + goto fail; + } + else if (BOOST_LIKELY(static_cast< std::size_t >(result) < path_max)) + { + symlink_path.assign(buf.get(), buf.get() + result); + break; + } } - } } -# elif _WIN32_WINNT < 0x0600 // SDK earlier than Vista and Server 2008 - error(BOOST_ERROR_NOT_SUPPORTED, p, ec, - "boost::filesystem::read_symlink"); -# else // Vista and Server 2008 SDK, or later +#else + + handle_wrapper h(create_file_handle( + p.c_str(), + FILE_READ_ATTRIBUTES, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT)); + + DWORD error; + if (BOOST_UNLIKELY(h.handle == INVALID_HANDLE_VALUE)) + { + return_last_error: + error = ::GetLastError(); + emit_error(error, p, ec, "boost::filesystem::read_symlink"); + return symlink_path; + } + + boost::scoped_ptr< reparse_data_buffer_with_storage > buf(new reparse_data_buffer_with_storage); + DWORD sz = 0u; + if (BOOST_UNLIKELY(!::DeviceIoControl(h.handle, FSCTL_GET_REPARSE_POINT, NULL, 0, buf.get(), sizeof(*buf), &sz, NULL))) + goto return_last_error; - union info_t + const wchar_t* buffer; + std::size_t offset, len; + switch (buf->rdb.ReparseTag) { - char buf[REPARSE_DATA_BUFFER_HEADER_SIZE+MAXIMUM_REPARSE_DATA_BUFFER_SIZE]; - REPARSE_DATA_BUFFER rdb; - } info; + case IO_REPARSE_TAG_MOUNT_POINT: + buffer = buf->rdb.MountPointReparseBuffer.PathBuffer; + offset = buf->rdb.MountPointReparseBuffer.SubstituteNameOffset; + len = buf->rdb.MountPointReparseBuffer.SubstituteNameLength; + break; - handle_wrapper h( - create_file_handle(p.c_str(), GENERIC_READ, 0, 0, OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0)); + case IO_REPARSE_TAG_SYMLINK: + buffer = buf->rdb.SymbolicLinkReparseBuffer.PathBuffer; + offset = buf->rdb.SymbolicLinkReparseBuffer.SubstituteNameOffset; + len = buf->rdb.SymbolicLinkReparseBuffer.SubstituteNameLength; + // Note: iff info.rdb.SymbolicLinkReparseBuffer.Flags & SYMLINK_FLAG_RELATIVE + // -> resulting path is relative to the source + break; - if (error(h.handle == INVALID_HANDLE_VALUE ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::read_symlink")) + default: + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "Unknown ReparseTag in boost::filesystem::read_symlink"); return symlink_path; + } - DWORD sz; + symlink_path = convert_nt_path_to_win32_path(buffer + offset / sizeof(wchar_t), len / sizeof(wchar_t)); +#endif - if (!error(::DeviceIoControl(h.handle, FSCTL_GET_REPARSE_POINT, - 0, 0, info.buf, sizeof(info), &sz, 0) == 0 ? BOOST_ERRNO : 0, p, ec, - "boost::filesystem::read_symlink" )) - symlink_path.assign( - static_cast(info.rdb.SymbolicLinkReparseBuffer.PathBuffer) - + info.rdb.SymbolicLinkReparseBuffer.PrintNameOffset/sizeof(wchar_t), - static_cast(info.rdb.SymbolicLinkReparseBuffer.PathBuffer) - + info.rdb.SymbolicLinkReparseBuffer.PrintNameOffset/sizeof(wchar_t) - + info.rdb.SymbolicLinkReparseBuffer.PrintNameLength/sizeof(wchar_t)); -# endif return symlink_path; - } - - BOOST_FILESYSTEM_DECL - path relative(const path& p, const path& base, error_code* ec) - { - error_code tmp_ec; - path wc_base(weakly_canonical(base, &tmp_ec)); - if (error(tmp_ec.value(), base, ec, "boost::filesystem::relative")) - return path(); - path wc_p(weakly_canonical(p, &tmp_ec)); - if (error(tmp_ec.value(), base, ec, "boost::filesystem::relative")) - return path(); +} + +BOOST_FILESYSTEM_DECL +path relative(path const& p, path const& base, error_code* ec) +{ + if (ec) + ec->clear(); + + error_code local_ec; + path cur_path; + if (!p.is_absolute() || !base.is_absolute()) + { + cur_path = detail::current_path(&local_ec); + if (BOOST_UNLIKELY(!!local_ec)) + { + fail_local_ec: + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::relative", p, base, local_ec)); + + *ec = local_ec; + return path(); + } + } + + path wc_base(detail::weakly_canonical(base, cur_path, &local_ec)); + if (BOOST_UNLIKELY(!!local_ec)) + goto fail_local_ec; + path wc_p(detail::weakly_canonical(p, cur_path, &local_ec)); + if (BOOST_UNLIKELY(!!local_ec)) + goto fail_local_ec; return wc_p.lexically_relative(wc_base); - } - - BOOST_FILESYSTEM_DECL - bool remove(const path& p, error_code* ec) - { - error_code tmp_ec; - file_type type = query_file_type(p, &tmp_ec); - if (error(type == status_error ? tmp_ec.value() : 0, p, ec, - "boost::filesystem::remove")) - return false; +} - // Since POSIX remove() is specified to work with either files or directories, in a - // perfect world it could just be called. But some important real-world operating - // systems (Windows, Mac OS X, for example) don't implement the POSIX spec. So - // remove_file_or_directory() is always called to keep it simple. - return remove_file_or_directory(p, type, ec); - } - - BOOST_FILESYSTEM_DECL - boost::uintmax_t remove_all(const path& p, error_code* ec) - { - error_code tmp_ec; - file_type type = query_file_type(p, &tmp_ec); - if (error(type == status_error ? tmp_ec.value() : 0, p, ec, - "boost::filesystem::remove_all")) - return 0; - - return (type != status_error && type != file_not_found) // exists - ? remove_all_aux(p, type, ec) - : 0; - } - - BOOST_FILESYSTEM_DECL - void rename(const path& old_p, const path& new_p, error_code* ec) - { - error(!BOOST_MOVE_FILE(old_p.c_str(), new_p.c_str()) ? BOOST_ERRNO : 0, old_p, new_p, - ec, "boost::filesystem::rename"); - } - - BOOST_FILESYSTEM_DECL - void resize_file(const path& p, uintmax_t size, system::error_code* ec) - { -# if defined(BOOST_POSIX_API) - if (BOOST_UNLIKELY(size > static_cast< uintmax_t >((std::numeric_limits< off_t >::max)()))) { - error(system::errc::file_too_large, p, ec, "boost::filesystem::resize_file"); - return; - } -# endif - error(!BOOST_RESIZE_FILE(p.c_str(), size) ? BOOST_ERRNO : 0, p, ec, - "boost::filesystem::resize_file"); - } - - BOOST_FILESYSTEM_DECL - space_info space(const path& p, error_code* ec) - { -# ifdef BOOST_POSIX_API - struct BOOST_STATVFS vfs; - space_info info; - if (!error(::BOOST_STATVFS(p.c_str(), &vfs) ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::space")) +BOOST_FILESYSTEM_DECL +bool remove(path const& p, error_code* ec) +{ + if (ec) + ec->clear(); + + return detail::remove_impl(p, ec); +} + +BOOST_FILESYSTEM_DECL +uintmax_t remove_all(path const& p, error_code* ec) +{ + if (ec) + ec->clear(); + + return detail::remove_all_impl(p, ec); +} + +BOOST_FILESYSTEM_DECL +void rename(path const& old_p, path const& new_p, error_code* ec) +{ + error(!BOOST_MOVE_FILE(old_p.c_str(), new_p.c_str()) ? BOOST_ERRNO : 0, old_p, new_p, ec, "boost::filesystem::rename"); +} + +BOOST_FILESYSTEM_DECL +void resize_file(path const& p, uintmax_t size, system::error_code* ec) +{ +#if defined(BOOST_POSIX_API) + if (BOOST_UNLIKELY(size > static_cast< uintmax_t >((std::numeric_limits< off_t >::max)()))) { - info.capacity - = static_cast(vfs.f_blocks)* BOOST_STATVFS_F_FRSIZE; - info.free - = static_cast(vfs.f_bfree)* BOOST_STATVFS_F_FRSIZE; - info.available - = static_cast(vfs.f_bavail)* BOOST_STATVFS_F_FRSIZE; + emit_error(system::errc::file_too_large, p, ec, "boost::filesystem::resize_file"); + return; } +#endif + error(!BOOST_RESIZE_FILE(p.c_str(), size) ? BOOST_ERRNO : 0, p, ec, "boost::filesystem::resize_file"); +} -# else - ULARGE_INTEGER avail, total, free; +BOOST_FILESYSTEM_DECL +space_info space(path const& p, error_code* ec) +{ space_info info; + // Initialize members to -1, as required by C++20 [fs.op.space]/1 in case of error + info.capacity = static_cast< uintmax_t >(-1); + info.free = static_cast< uintmax_t >(-1); + info.available = static_cast< uintmax_t >(-1); + + if (ec) + ec->clear(); + +#if defined(BOOST_FILESYSTEM_USE_WASI) - if (!error(::GetDiskFreeSpaceExW(p.c_str(), &avail, &total, &free)== 0, - p, ec, "boost::filesystem::space")) + emit_error(BOOST_ERROR_NOT_SUPPORTED, p, ec, "boost::filesystem::space"); + +#elif defined(BOOST_POSIX_API) + + struct BOOST_STATVFS vfs; + if (!error(::BOOST_STATVFS(p.c_str(), &vfs) ? BOOST_ERRNO : 0, p, ec, "boost::filesystem::space")) { - info.capacity - = (static_cast(total.HighPart)<< 32) - + total.LowPart; - info.free - = (static_cast(free.HighPart)<< 32) - + free.LowPart; - info.available - = (static_cast(avail.HighPart)<< 32) - + avail.LowPart; + info.capacity = static_cast< uintmax_t >(vfs.f_blocks) * BOOST_STATVFS_F_FRSIZE; + info.free = static_cast< uintmax_t >(vfs.f_bfree) * BOOST_STATVFS_F_FRSIZE; + info.available = static_cast< uintmax_t >(vfs.f_bavail) * BOOST_STATVFS_F_FRSIZE; } -# endif +#else - else + // GetDiskFreeSpaceExW requires a directory path, which is unlike statvfs, which accepts any file. + // To work around this, test if the path refers to a directory and use the parent directory if not. + error_code local_ec; + file_status status = detail::status_impl(p, &local_ec); + if (status.type() == fs::status_error || status.type() == fs::file_not_found) { - info.capacity = info.free = info.available = 0; + fail_local_ec: + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::space", p, local_ec)); + *ec = local_ec; + return info; } - return info; - } - BOOST_FILESYSTEM_DECL - file_status status(const path& p, error_code* ec) - { -# ifdef BOOST_POSIX_API - - struct stat path_stat; - if (::stat(p.c_str(), &path_stat)!= 0) + path dir_path = p; + if (!is_directory(status)) { - if (ec != 0) // always report errno, even though some - ec->assign(errno, system_category()); // errno values are not status_errors + path cur_path = detail::current_path(ec); + if (ec && *ec) + return info; - if (not_found_error(errno)) - { - return fs::file_status(fs::file_not_found, fs::no_perms); - } - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::status", - p, error_code(errno, system_category()))); - return fs::file_status(fs::status_error); - } - if (ec != 0) ec->clear();; - if (S_ISDIR(path_stat.st_mode)) - return fs::file_status(fs::directory_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISREG(path_stat.st_mode)) - return fs::file_status(fs::regular_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISBLK(path_stat.st_mode)) - return fs::file_status(fs::block_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISCHR(path_stat.st_mode)) - return fs::file_status(fs::character_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISFIFO(path_stat.st_mode)) - return fs::file_status(fs::fifo_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISSOCK(path_stat.st_mode)) - return fs::file_status(fs::socket_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - return fs::file_status(fs::type_unknown); + status = detail::symlink_status_impl(p, &local_ec); + if (status.type() == fs::status_error) + goto fail_local_ec; + if (is_symlink(status)) + { + // We need to resolve the symlink so that we report the space for the symlink target + dir_path = detail::canonical(p, cur_path, ec); + if (ec && *ec) + return info; + } + + dir_path = dir_path.parent_path(); + if (dir_path.empty()) + { + // The original path was just a filename, which is a relative path wrt. current directory + dir_path = cur_path; + } + } -# else // Windows + // For UNC names, the path must also include a trailing slash. + path::string_type str = dir_path.native(); + if (str.size() >= 2u && detail::is_directory_separator(str[0]) && detail::is_directory_separator(str[1]) && !detail::is_directory_separator(*(str.end() - 1))) + str.push_back(path::preferred_separator); - DWORD attr(::GetFileAttributesW(p.c_str())); - if (attr == 0xFFFFFFFF) + ULARGE_INTEGER avail, total, free; + if (!error(::GetDiskFreeSpaceExW(str.c_str(), &avail, &total, &free) == 0, p, ec, "boost::filesystem::space")) { - return process_status_failure(p, ec); + info.capacity = static_cast< uintmax_t >(total.QuadPart); + info.free = static_cast< uintmax_t >(free.QuadPart); + info.available = static_cast< uintmax_t >(avail.QuadPart); } - // reparse point handling; - // since GetFileAttributesW does not resolve symlinks, try to open a file - // handle to discover if the file exists - if (attr & FILE_ATTRIBUTE_REPARSE_POINT) - { - handle_wrapper h( - create_file_handle( - p.c_str(), - 0, // dwDesiredAccess; attributes only - FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, - 0, // lpSecurityAttributes - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS, - 0)); // hTemplateFile - if (h.handle == INVALID_HANDLE_VALUE) - { - return process_status_failure(p, ec); - } +#endif - if (!is_reparse_point_a_symlink(p)) - return file_status(reparse_file, make_permissions(p, attr)); - } + return info; +} + +BOOST_FILESYSTEM_DECL +file_status status(path const& p, error_code* ec) +{ + if (ec) + ec->clear(); + + return detail::status_impl(p, ec); +} - if (ec != 0) ec->clear(); - return (attr & FILE_ATTRIBUTE_DIRECTORY) - ? file_status(directory_file, make_permissions(p, attr)) - : file_status(regular_file, make_permissions(p, attr)); +BOOST_FILESYSTEM_DECL +file_status symlink_status(path const& p, error_code* ec) +{ + if (ec) + ec->clear(); -# endif - } + return detail::symlink_status_impl(p, ec); +} - BOOST_FILESYSTEM_DECL - file_status symlink_status(const path& p, error_code* ec) - { -# ifdef BOOST_POSIX_API +// contributed by Jeff Flinn +BOOST_FILESYSTEM_DECL +path temp_directory_path(system::error_code* ec) +{ + if (ec) + ec->clear(); - struct stat path_stat; - if (::lstat(p.c_str(), &path_stat)!= 0) - { - if (ec != 0) // always report errno, even though some - ec->assign(errno, system_category()); // errno values are not status_errors +#ifdef BOOST_POSIX_API + const char* val = NULL; - if (errno == ENOENT || errno == ENOTDIR) // these are not errors - { - return fs::file_status(fs::file_not_found, fs::no_perms); - } - if (ec == 0) - BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::status", - p, error_code(errno, system_category()))); - return fs::file_status(fs::status_error); - } - if (ec != 0) ec->clear(); - if (S_ISREG(path_stat.st_mode)) - return fs::file_status(fs::regular_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISDIR(path_stat.st_mode)) - return fs::file_status(fs::directory_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISLNK(path_stat.st_mode)) - return fs::file_status(fs::symlink_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISBLK(path_stat.st_mode)) - return fs::file_status(fs::block_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISCHR(path_stat.st_mode)) - return fs::file_status(fs::character_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISFIFO(path_stat.st_mode)) - return fs::file_status(fs::fifo_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - if (S_ISSOCK(path_stat.st_mode)) - return fs::file_status(fs::socket_file, - static_cast(path_stat.st_mode) & fs::perms_mask); - return fs::file_status(fs::type_unknown); + (val = std::getenv("TMPDIR")) || + (val = std::getenv("TMP")) || + (val = std::getenv("TEMP")) || + (val = std::getenv("TEMPDIR")); + +#ifdef __ANDROID__ + const char* default_tmp = "/data/local/tmp"; +#else + const char* default_tmp = "/tmp"; +#endif + path p((val != NULL) ? val : default_tmp); -# else // Windows - - DWORD attr(::GetFileAttributesW(p.c_str())); - if (attr == 0xFFFFFFFF) - { - return process_status_failure(p, ec); - } - - if (ec != 0) ec->clear(); - - if (attr & FILE_ATTRIBUTE_REPARSE_POINT) - return is_reparse_point_a_symlink(p) - ? file_status(symlink_file, make_permissions(p, attr)) - : file_status(reparse_file, make_permissions(p, attr)); - - return (attr & FILE_ATTRIBUTE_DIRECTORY) - ? file_status(directory_file, make_permissions(p, attr)) - : file_status(regular_file, make_permissions(p, attr)); - -# endif - } - - // contributed by Jeff Flinn - BOOST_FILESYSTEM_DECL - path temp_directory_path(system::error_code* ec) - { -# ifdef BOOST_POSIX_API - const char* val = 0; - - (val = std::getenv("TMPDIR" )) || - (val = std::getenv("TMP" )) || - (val = std::getenv("TEMP" )) || - (val = std::getenv("TEMPDIR")); - -# ifdef __ANDROID__ - const char* default_tmp = "/data/local/tmp"; -# else - const char* default_tmp = "/tmp"; -# endif - path p((val!=0) ? val : default_tmp); - - if (p.empty() || (ec&&!is_directory(p, *ec))||(!ec&&!is_directory(p))) - { + if (BOOST_UNLIKELY(p.empty())) + { + fail_not_dir: error(ENOTDIR, p, ec, "boost::filesystem::temp_directory_path"); return p; - } - - return p; - -# else // Windows - - const wchar_t* tmp_env = L"TMP"; - const wchar_t* temp_env = L"TEMP"; - const wchar_t* localappdata_env = L"LOCALAPPDATA"; - const wchar_t* userprofile_env = L"USERPROFILE"; - const wchar_t* env_list[] - = {tmp_env, temp_env, localappdata_env, userprofile_env, 0}; - - path p; - for (int i = 0; env_list[i]; ++i) - { + } + + file_status status = detail::status_impl(p, ec); + if (BOOST_UNLIKELY(ec && *ec)) + return path(); + if (BOOST_UNLIKELY(!is_directory(status))) + goto fail_not_dir; + + return p; + +#else // Windows +#if !defined(UNDER_CE) + + static const wchar_t* env_list[] = { L"TMP", L"TEMP", L"LOCALAPPDATA", L"USERPROFILE" }; + static const wchar_t temp_dir[] = L"Temp"; + + path p; + for (unsigned int i = 0; i < sizeof(env_list) / sizeof(*env_list); ++i) + { std::wstring env = wgetenv(env_list[i]); if (!env.empty()) { - p = env; - if (i >= 2) - p /= L"Temp"; - error_code lcl_ec; - if (exists(p, lcl_ec) && !lcl_ec && is_directory(p, lcl_ec) && !lcl_ec) - break; - p.clear(); + p = env; + if (i >= 2) + path_algorithms::append_v4(p, temp_dir, temp_dir + (sizeof(temp_dir) / sizeof(*temp_dir) - 1u)); + error_code lcl_ec; + if (exists(p, lcl_ec) && !lcl_ec && is_directory(p, lcl_ec) && !lcl_ec) + break; + p.clear(); } - } - - if (p.empty()) - { - // use vector since in C++03 a string is not required to be contiguous - std::vector buf(::GetWindowsDirectoryW(NULL, 0)); + } - if (buf.empty() - || ::GetWindowsDirectoryW(&buf[0], static_cast(buf.size())) == 0) + if (p.empty()) + { + // use a separate buffer since in C++03 a string is not required to be contiguous + const UINT size = ::GetWindowsDirectoryW(NULL, 0); + if (BOOST_UNLIKELY(size == 0)) { - error(::GetLastError(), ec, "boost::filesystem::temp_directory_path"); - return path(); + getwindir_error: + int errval = ::GetLastError(); + error(errval, ec, "boost::filesystem::temp_directory_path"); + return path(); } - p = &*buf.begin(); // do not depend on buf.size(); see ticket #10388 - p /= L"Temp"; - } - return p; -# endif - } - - BOOST_FILESYSTEM_DECL - path system_complete(const path& p, system::error_code* ec) - { -# ifdef BOOST_POSIX_API - return (p.empty() || p.is_absolute()) - ? p : current_path()/ p; + boost::scoped_array< wchar_t > buf(new wchar_t[size]); + if (BOOST_UNLIKELY(::GetWindowsDirectoryW(buf.get(), size) == 0)) + goto getwindir_error; + + p = buf.get(); // do not depend on initial buf size, see ticket #10388 + path_algorithms::append_v4(p, temp_dir, temp_dir + (sizeof(temp_dir) / sizeof(*temp_dir) - 1u)); + } + + return p; + +#else // Windows CE + + // Windows CE has no environment variables, so the same code as used for + // regular Windows, above, doesn't work. + + DWORD size = ::GetTempPathW(0, NULL); + if (size == 0u) + { + fail: + int errval = ::GetLastError(); + error(errval, ec, "boost::filesystem::temp_directory_path"); + return path(); + } + + boost::scoped_array< wchar_t > buf(new wchar_t[size]); + if (::GetTempPathW(size, buf.get()) == 0) + goto fail; + + path p(buf.get()); + p.remove_trailing_separator(); + + file_status status = detail::status_impl(p, ec); + if (ec && *ec) + return path(); + if (!is_directory(status)) + { + error(ERROR_PATH_NOT_FOUND, p, ec, "boost::filesystem::temp_directory_path"); + return path(); + } + + return p; + +#endif // !defined(UNDER_CE) +#endif +} + +BOOST_FILESYSTEM_DECL +path system_complete(path const& p, system::error_code* ec) +{ +#ifdef BOOST_POSIX_API + + if (p.empty() || p.is_absolute()) + return p; -# else + path res(current_path()); + path_algorithms::append_v4(res, p); + return res; + +#else if (p.empty()) { - if (ec != 0) ec->clear(); - return p; + if (ec) + ec->clear(); + return p; } + + BOOST_CONSTEXPR_OR_CONST std::size_t buf_size = 128u; wchar_t buf[buf_size]; wchar_t* pfn; std::size_t len = get_full_path_name(p, buf_size, buf, &pfn); if (error(len == 0 ? BOOST_ERRNO : 0, p, ec, "boost::filesystem::system_complete")) - return path(); + return path(); - if (len < buf_size)// len does not include null termination character - return path(&buf[0]); + if (len < buf_size) // len does not include null termination character + return path(&buf[0]); - boost::scoped_array big_buf(new wchar_t[len]); + boost::scoped_array< wchar_t > big_buf(new wchar_t[len]); - return error(get_full_path_name(p, len , big_buf.get(), &pfn)== 0 ? BOOST_ERRNO : 0, - p, ec, "boost::filesystem::system_complete") - ? path() - : path(big_buf.get()); -# endif - } + return error(get_full_path_name(p, len, big_buf.get(), &pfn) == 0 ? BOOST_ERRNO : 0, p, ec, "boost::filesystem::system_complete") ? path() : path(big_buf.get()); +#endif +} - BOOST_FILESYSTEM_DECL - path weakly_canonical(const path& p, system::error_code* ec) - { - path head(p); - path tail; - system::error_code tmp_ec; - path::iterator itr = p.end(); +BOOST_FILESYSTEM_DECL +path weakly_canonical(path const& p, path const& base, system::error_code* ec) +{ + system::error_code local_ec; + const path::iterator p_end(p.end()); + +#if defined(BOOST_POSIX_API) - for (; !head.empty(); --itr) + path::iterator itr(p_end); + path head(p); + for (; !head.empty(); path_algorithms::decrement_v4(itr)) { - file_status head_status = status(head, tmp_ec); - if (error(head_status.type() == fs::status_error, - head, ec, "boost::filesystem::weakly_canonical")) - return path(); - if (head_status.type() != fs::file_not_found) - break; - head.remove_filename(); + file_status head_status(detail::status_impl(head, &local_ec)); + if (BOOST_UNLIKELY(head_status.type() == fs::status_error)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::weakly_canonical", head, local_ec)); + + *ec = local_ec; + return path(); + } + + if (head_status.type() != fs::file_not_found) + break; + + head.remove_filename_and_trailing_separators(); } - bool tail_has_dots = false; - for (; itr != p.end(); ++itr) - { - tail /= *itr; - // for a later optimization, track if any dot or dot-dot elements are present - if (itr->native().size() <= 2 - && itr->native()[0] == dot - && (itr->native().size() == 1 || itr->native()[1] == dot)) - tail_has_dots = true; - } - if (head.empty()) - return p.lexically_normal(); - head = canonical(head, tmp_ec); - if (error(tmp_ec.value(), head, ec, "boost::filesystem::weakly_canonical")) - return path(); - return tail.empty() - ? head - : (tail_has_dots // optimization: only normalize if tail had dot or dot-dot element - ? (head/tail).lexically_normal() - : head/tail); - } -} // namespace detail + return path_algorithms::lexically_normal_v4(p); -//--------------------------------------------------------------------------------------// -// // -// directory_entry // -// // -//--------------------------------------------------------------------------------------// + path const& dot_p = dot_path(); + path const& dot_dot_p = dot_dot_path(); - file_status - directory_entry::m_get_status(system::error_code* ec) const - { - if (!status_known(m_status)) - { - // optimization: if the symlink status is known, and it isn't a symlink, - // then status and symlink_status are identical so just copy the - // symlink status to the regular status. - if (status_known(m_symlink_status) - && !is_symlink(m_symlink_status)) - { - m_status = m_symlink_status; - if (ec != 0) ec->clear(); - } - else m_status = detail::status(m_path, ec); - } - else if (ec != 0) ec->clear(); - return m_status; - } - - file_status - directory_entry::m_get_symlink_status(system::error_code* ec) const - { - if (!status_known(m_symlink_status)) - m_symlink_status = detail::symlink_status(m_path, ec); - else if (ec != 0) ec->clear(); - return m_symlink_status; - } - -// dispatch directory_entry supplied here rather than in -// , thus avoiding header circularity. -// test cases are in operations_unit_test.cpp - -namespace path_traits -{ - void dispatch(const directory_entry & de, -# ifdef BOOST_WINDOWS_API - std::wstring& to, -# else - std::string& to, -# endif - const codecvt_type &) - { - to = de.path().native(); - } - - void dispatch(const directory_entry & de, -# ifdef BOOST_WINDOWS_API - std::wstring& to -# else - std::string& to -# endif - ) - { - to = de.path().native(); - } -} // namespace path_traits -} // namespace filesystem -} // namespace boost +#else -//--------------------------------------------------------------------------------------// -// // -// directory_iterator // -// // -//--------------------------------------------------------------------------------------// + // On Windows, filesystem APIs such as GetFileAttributesW and CreateFileW perform lexical path normalization + // internally. As a result, a path like "c:\a\.." can be reported as present even if "c:\a" is not. This would + // break canonical, as symlink_status that it calls internally would report an error that the file at the + // intermediate path does not exist. To avoid this, scan the initial path in the forward direction. + // Also, operate on paths with preferred separators. This can be important on Windows since GetFileAttributesW + // or CreateFileW, which is called in status() may return "file not found" for paths to network shares and + // mounted cloud storages that have forward slashes as separators. + // Also, avoid querying status of the root name such as \\?\c: as CreateFileW returns ERROR_INVALID_FUNCTION for + // such path. Querying the status of a root name such as c: is also not right as this path refers to the current + // directory on drive C:, which is not what we want to test for existence anyway. + path::iterator itr(p.begin()); + path head; + if (p.has_root_name()) + { + BOOST_ASSERT(itr != p_end); + head = *itr; + path_algorithms::increment_v4(itr); + } -namespace -{ -# ifdef BOOST_POSIX_API - - error_code path_max(std::size_t & result) - // this code is based on Stevens and Rago, Advanced Programming in the - // UNIX envirnment, 2nd Ed., ISBN 0-201-43307-9, page 49 - { -# ifdef PATH_MAX - static std::size_t max = PATH_MAX; -# else - static std::size_t max = 0; -# endif - if (max == 0) - { - errno = 0; - long tmp = ::pathconf("/", _PC_NAME_MAX); - if (tmp < 0) - { - if (errno == 0)// indeterminate - max = 4096; // guess - else return error_code(errno, system_category()); - } - else max = static_cast(tmp + 1); // relative root - } - result = max; - return ok; - } - - error_code dir_itr_first(void *& handle, void *& buffer, - const char* dir, string& target, - fs::file_status &, fs::file_status &) - { - if ((handle = ::opendir(dir))== 0) - return error_code(errno, system_category()); - target = string("."); // string was static but caused trouble - // when iteration called from dtor, after - // static had already been destroyed - std::size_t path_size (0); // initialization quiets gcc warning (ticket #3509) - error_code ec = path_max(path_size); - if (ec)return ec; - dirent de; - buffer = std::malloc((sizeof(dirent) - sizeof(de.d_name)) - + path_size + 1); // + 1 for "/0" - return ok; - } - - // warning: the only dirent member updated is d_name - inline int readdir_r_simulator(DIR * dirp, struct dirent * entry, - struct dirent ** result)// *result set to 0 on end of directory - { -# if !defined(__CYGWIN__)\ - && defined(_POSIX_THREAD_SAFE_FUNCTIONS)\ - && defined(_SC_THREAD_SAFE_FUNCTIONS)\ - && (_POSIX_THREAD_SAFE_FUNCTIONS+0 >= 0)\ - && !(defined(linux) || defined(__linux) || defined(__linux__))\ - && !defined(__ANDROID__)\ - && (!defined(__hpux) || defined(_REENTRANT)) \ - && (!defined(_AIX) || defined(__THREAD_SAFE)) - - errno = 0; - - if (::sysconf(_SC_THREAD_SAFE_FUNCTIONS)>= 0) - { return ::readdir_r(dirp, entry, result); } -# endif - - errno = 0; - - struct dirent * p; - *result = 0; - if ((p = ::readdir(dirp))== 0) - return errno; - std::strcpy(entry->d_name, p->d_name); - *result = entry; - return 0; - } - - error_code dir_itr_increment(void *& handle, void *& buffer, - string& target, fs::file_status & sf, fs::file_status & symlink_sf) - { - BOOST_ASSERT(buffer != 0); - dirent * entry(static_cast(buffer)); - dirent * result; - int return_code; - if ((return_code = readdir_r_simulator(static_cast(handle), entry, &result))!= 0) - return error_code(errno, system_category()); - if (result == 0) - return fs::detail::dir_itr_close(handle, buffer); - target = entry->d_name; -# ifdef BOOST_FILESYSTEM_STATUS_CACHE - if (entry->d_type == DT_UNKNOWN) // filesystem does not supply d_type value - { - sf = symlink_sf = fs::file_status(fs::status_error); - } - else // filesystem supplies d_type value - { - if (entry->d_type == DT_DIR) - sf = symlink_sf = fs::file_status(fs::directory_file); - else if (entry->d_type == DT_REG) - sf = symlink_sf = fs::file_status(fs::regular_file); - else if (entry->d_type == DT_LNK) - { - sf = fs::file_status(fs::status_error); - symlink_sf = fs::file_status(fs::symlink_file); - } - else sf = symlink_sf = fs::file_status(fs::status_error); - } -# else - sf = symlink_sf = fs::file_status(fs::status_error); -# endif - return ok; - } - -# else // BOOST_WINDOWS_API - - error_code dir_itr_first(void *& handle, const fs::path& dir, - wstring& target, fs::file_status & sf, fs::file_status & symlink_sf) - // Note: an empty root directory has no "." or ".." entries, so this - // causes a ERROR_FILE_NOT_FOUND error which we do not considered an - // error. It is treated as eof instead. - { - // use a form of search Sebastian Martel reports will work with Win98 - wstring dirpath(dir.wstring()); - dirpath += (dirpath.empty() - || (dirpath[dirpath.size()-1] != L'\\' - && dirpath[dirpath.size()-1] != L'/' - && dirpath[dirpath.size()-1] != L':'))? L"\\*" : L"*"; - - WIN32_FIND_DATAW data; - if ((handle = ::FindFirstFileW(dirpath.c_str(), &data)) - == INVALID_HANDLE_VALUE) - { - handle = 0; // signal eof - return error_code( (::GetLastError() == ERROR_FILE_NOT_FOUND - // Windows Mobile returns ERROR_NO_MORE_FILES; see ticket #3551 - || ::GetLastError() == ERROR_NO_MORE_FILES) - ? 0 : ::GetLastError(), system_category() ); - } - target = data.cFileName; - if (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) - // reparse points are complex, so don't try to handle them here; instead just mark - // them as status_error which causes directory_entry caching to call status() - // and symlink_status() which do handle reparse points fully - { - sf.type(fs::status_error); - symlink_sf.type(fs::status_error); + if (p.has_root_directory()) + { + BOOST_ASSERT(itr != p_end); + // Convert generic separator returned by the iterator for the root directory to + // the preferred separator. + head += path::preferred_separator; + path_algorithms::increment_v4(itr); } - else + + if (!head.empty()) { - if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) - { - sf.type(fs::directory_file); - symlink_sf.type(fs::directory_file); - } - else - { - sf.type(fs::regular_file); - symlink_sf.type(fs::regular_file); - } - sf.permissions(make_permissions(data.cFileName, data.dwFileAttributes)); - symlink_sf.permissions(sf.permissions()); - } - return error_code(); - } - - error_code dir_itr_increment(void *& handle, wstring& target, - fs::file_status & sf, fs::file_status & symlink_sf) - { - WIN32_FIND_DATAW data; - if (::FindNextFileW(handle, &data)== 0)// fails - { - int error = ::GetLastError(); - fs::detail::dir_itr_close(handle); - return error_code(error == ERROR_NO_MORE_FILES ? 0 : error, system_category()); - } - target = data.cFileName; - if (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) - // reparse points are complex, so don't try to handle them here; instead just mark - // them as status_error which causes directory_entry caching to call status() - // and symlink_status() which do handle reparse points fully - { - sf.type(fs::status_error); - symlink_sf.type(fs::status_error); + file_status head_status(detail::status_impl(head, &local_ec)); + if (BOOST_UNLIKELY(head_status.type() == fs::status_error)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::weakly_canonical", head, local_ec)); + + *ec = local_ec; + return path(); + } + + if (head_status.type() == fs::file_not_found) + { + // If the root path does not exist then no path element exists + return path_algorithms::lexically_normal_v4(p); + } } - else + + path const& dot_p = dot_path(); + path const& dot_dot_p = dot_dot_path(); + for (; itr != p_end; path_algorithms::increment_v4(itr)) { - if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) - { - sf.type(fs::directory_file); - symlink_sf.type(fs::directory_file); - } - else - { - sf.type(fs::regular_file); - symlink_sf.type(fs::regular_file); - } - sf.permissions(make_permissions(data.cFileName, data.dwFileAttributes)); - symlink_sf.permissions(sf.permissions()); - } - return error_code(); - } -#endif - - const error_code not_found_error_code ( -# ifdef BOOST_WINDOWS_API - ERROR_PATH_NOT_FOUND -# else - ENOENT -# endif - , system_category()); - -} // unnamed namespace - -namespace boost -{ -namespace filesystem -{ - -namespace detail -{ - // dir_itr_close is called both from the ~dir_itr_imp()destructor - // and dir_itr_increment() - BOOST_FILESYSTEM_DECL - system::error_code dir_itr_close( // never throws - void *& handle -# if defined(BOOST_POSIX_API) - , void *& buffer -# endif - ) - { -# ifdef BOOST_POSIX_API - std::free(buffer); - buffer = 0; - if (handle == 0)return ok; - DIR * h(static_cast(handle)); - handle = 0; - return error_code(::closedir(h)== 0 ? 0 : errno, system_category()); - -# else - if (handle != 0) - { - ::FindClose(handle); - handle = 0; - } - return ok; - -# endif - } - - void directory_iterator_construct(directory_iterator& it, - const path& p, system::error_code* ec) - { - if (error(p.empty() ? not_found_error_code.value() : 0, p, ec, - "boost::filesystem::directory_iterator::construct")) - return; - - path::string_type filename; - file_status file_stat, symlink_file_stat; - error_code result = dir_itr_first(it.m_imp->handle, -# if defined(BOOST_POSIX_API) - it.m_imp->buffer, -# endif - p.c_str(), filename, file_stat, symlink_file_stat); - - if (result) - { - it.m_imp.reset(); - error(result.value(), p, - ec, "boost::filesystem::directory_iterator::construct"); - return; - } - - if (it.m_imp->handle == 0) - it.m_imp.reset(); // eof, so make end iterator - else // not eof - { - it.m_imp->dir_entry.assign(p / filename, file_stat, symlink_file_stat); - if (filename[0] == dot // dot or dot-dot - && (filename.size()== 1 - || (filename[1] == dot - && filename.size()== 2))) - { detail::directory_iterator_increment(it, ec); } - } - } - - void directory_iterator_increment(directory_iterator& it, - system::error_code* ec) - { - BOOST_ASSERT_MSG(it.m_imp.get(), "attempt to increment end iterator"); - BOOST_ASSERT_MSG(it.m_imp->handle != 0, "internal program error"); - - path::string_type filename; - file_status file_stat, symlink_file_stat; - system::error_code temp_ec; - - for (;;) - { - temp_ec = dir_itr_increment(it.m_imp->handle, -# if defined(BOOST_POSIX_API) - it.m_imp->buffer, -# endif - filename, file_stat, symlink_file_stat); - - if (temp_ec) // happens if filesystem is corrupt, such as on a damaged optical disc - { - path error_path(it.m_imp->dir_entry.path().parent_path()); // fix ticket #5900 - it.m_imp.reset(); - if (ec == 0) - BOOST_FILESYSTEM_THROW( - filesystem_error("boost::filesystem::directory_iterator::operator++", - error_path, - error_code(BOOST_ERRNO, system_category()))); - ec->assign(BOOST_ERRNO, system_category()); - return; - } - else if (ec != 0) ec->clear(); + path const& p_elem = *itr; - if (it.m_imp->handle == 0) // eof, make end - { - it.m_imp.reset(); - return; - } - - if (!(filename[0] == dot // !(dot or dot-dot) - && (filename.size()== 1 - || (filename[1] == dot - && filename.size()== 2)))) - { - it.m_imp->dir_entry.replace_filename( - filename, file_stat, symlink_file_stat); - return; - } + // Avoid querying status of paths containing dot and dot-dot elements, as this will break + // if the root name starts with "\\?\". + if (path_algorithms::compare_v4(p_elem, dot_p) == 0) + continue; + + if (path_algorithms::compare_v4(p_elem, dot_dot_p) == 0) + { + if (head.has_relative_path()) + head.remove_filename_and_trailing_separators(); + + continue; + } + + path_algorithms::append_v4(head, p_elem); + + file_status head_status(detail::status_impl(head, &local_ec)); + if (BOOST_UNLIKELY(head_status.type() == fs::status_error)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::weakly_canonical", head, local_ec)); + + *ec = local_ec; + return path(); + } + + if (head_status.type() == fs::file_not_found) + { + head.remove_filename_and_trailing_separators(); + break; + } + } + + if (head.empty()) + return path_algorithms::lexically_normal_v4(p); + +#endif + + path tail; + bool tail_has_dots = false; + for (; itr != p_end; path_algorithms::increment_v4(itr)) + { + path const& tail_elem = *itr; + path_algorithms::append_v4(tail, tail_elem); + // for a later optimization, track if any dot or dot-dot elements are present + if (!tail_has_dots && (path_algorithms::compare_v4(tail_elem, dot_p) == 0 || path_algorithms::compare_v4(tail_elem, dot_dot_p) == 0)) + tail_has_dots = true; + } + + head = detail::canonical(head, base, &local_ec); + if (BOOST_UNLIKELY(!!local_ec)) + { + if (!ec) + BOOST_FILESYSTEM_THROW(filesystem_error("boost::filesystem::weakly_canonical", head, local_ec)); + + *ec = local_ec; + return path(); } - } -} // namespace detail + + if (BOOST_LIKELY(!tail.empty())) + { + path_algorithms::append_v4(head, tail); + + // optimization: only normalize if tail had dot or dot-dot element + if (tail_has_dots) + return path_algorithms::lexically_normal_v4(head); + } + + return head; +} + +} // namespace detail } // namespace filesystem } // namespace boost + +#include diff --git a/src/boost/libs/filesystem/src/path.cpp b/src/boost/libs/filesystem/src/path.cpp index 30ca30776..70a1eed22 100644 --- a/src/boost/libs/filesystem/src/path.cpp +++ b/src/boost/libs/filesystem/src/path.cpp @@ -1,59 +1,50 @@ // filesystem path.cpp ------------------------------------------------------------- // // Copyright Beman Dawes 2008 +// Copyright Andrey Semashev 2021-2023 // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt // Library home page: http://www.boost.org/libs/filesystem -// Old standard library configurations, particularly MingGW, don't support wide strings. -// Report this with an explicit error message. -#include -# if defined( BOOST_NO_STD_WSTRING ) -# error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support -# endif - -// define BOOST_FILESYSTEM_SOURCE so that knows -// the library is being built (possibly exporting rather than importing code) -#define BOOST_FILESYSTEM_SOURCE - -#ifndef BOOST_SYSTEM_NO_DEPRECATED -# define BOOST_SYSTEM_NO_DEPRECATED -#endif +#include "platform_config.hpp" #include #include -#include // for filesystem_error +#include // codecvt_error_category() #include -#include +#include // for BOOST_SYSTEM_HAS_CONSTEXPR #include #include +#include +#include +#include #include #include -#include +#include // std::atexit #ifdef BOOST_WINDOWS_API -# include "windows_file_codecvt.hpp" -# include -#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \ - || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__HAIKU__) -# include +#include "windows_file_codecvt.hpp" +#include "windows_tools.hpp" +#include +#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__HAIKU__) +#include #endif #ifdef BOOST_FILESYSTEM_DEBUG -# include -# include +#include +#include #endif -namespace fs = boost::filesystem; +#include "atomic_tools.hpp" +#include "private_config.hpp" -using boost::filesystem::path; +#include // must be the last #include -using std::string; -using std::wstring; +namespace fs = boost::filesystem; -using boost::system::error_code; +using boost::filesystem::path; //--------------------------------------------------------------------------------------// // // @@ -61,59 +52,95 @@ using boost::system::error_code; // // //--------------------------------------------------------------------------------------// -namespace -{ - //------------------------------------------------------------------------------------// - // miscellaneous class path helpers // - //------------------------------------------------------------------------------------// +namespace { +//------------------------------------------------------------------------------------// +// miscellaneous class path helpers // +//------------------------------------------------------------------------------------// - typedef path::value_type value_type; - typedef path::string_type string_type; - typedef string_type::size_type size_type; +typedef path::value_type value_type; +typedef path::string_type string_type; +typedef string_type::size_type size_type; -# ifdef BOOST_WINDOWS_API +#ifdef BOOST_WINDOWS_API - const wchar_t* const separators = L"/\\"; - const wchar_t* separator_string = L"/"; - const wchar_t* preferred_separator_string = L"\\"; - const wchar_t colon = L':'; - const wchar_t questionmark = L'?'; +const wchar_t dot_path_literal[] = L"."; +const wchar_t dot_dot_path_literal[] = L".."; +const wchar_t separators[] = L"/\\"; +using boost::filesystem::detail::colon; +using boost::filesystem::detail::questionmark; - inline bool is_letter(wchar_t c) - { - return (c >= L'a' && c <=L'z') || (c >= L'A' && c <=L'Z'); - } +inline bool is_alnum(wchar_t c) +{ + return boost::filesystem::detail::is_letter(c) || (c >= L'0' && c <= L'9'); +} -# else +inline bool is_device_name_char(wchar_t c) +{ + // https://googleprojectzero.blogspot.com/2016/02/the-definitive-guide-on-win32-to-nt.html + // Device names are: + // + // - PRN + // - AUX + // - NUL + // - CON + // - LPT[1-9] + // - COM[1-9] + // - CONIN$ + // - CONOUT$ + return is_alnum(c) || c == L'$'; +} + +//! Returns position of the first directory separator in the \a size initial characters of \a p, or \a size if not found +inline size_type find_separator(const wchar_t* p, size_type size) BOOST_NOEXCEPT +{ + size_type pos = 0u; + for (; pos < size; ++pos) + { + const wchar_t c = p[pos]; + if (boost::filesystem::detail::is_directory_separator(c)) + break; + } + return pos; +} - const char* const separators = "/"; - const char* separator_string = "/"; - const char* preferred_separator_string = "/"; +#else // BOOST_WINDOWS_API -# endif +const char dot_path_literal[] = "."; +const char dot_dot_path_literal[] = ".."; +const char separators[] = "/"; - bool is_root_separator(const string_type& str, size_type pos); - // pos is position of the separator +//! Returns position of the first directory separator in the \a size initial characters of \a p, or \a size if not found +inline size_type find_separator(const char* p, size_type size) BOOST_NOEXCEPT +{ + const char* sep = static_cast< const char* >(std::memchr(p, '/', size)); + size_type pos = size; + if (BOOST_LIKELY(!!sep)) + pos = sep - p; + return pos; +} + +#endif // BOOST_WINDOWS_API - size_type filename_pos(const string_type& str, - size_type end_pos); // end_pos is past-the-end position - // Returns: 0 if str itself is filename (or empty) +// pos is position of the separator +bool is_root_separator(string_type const& str, size_type root_dir_pos, size_type pos); - size_type root_directory_start(const string_type& path, size_type size); - // Returns: npos if no root_directory found +// Returns: Size of the filename element that ends at end_pos (which is past-the-end position). 0 if no filename found. +size_type find_filename_size(string_type const& str, size_type root_name_size, size_type end_pos); - void first_element( - const string_type& src, - size_type& element_pos, - size_type& element_size, -# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1310) // VC++ 7.1 - size_type size = string_type::npos -# else - size_type size = -1 -# endif - ); +// Returns: starting position of root directory or size if not found. Sets root_name_size to length +// of the root name if the characters before the returned position (if any) are considered a root name. +size_type find_root_directory_start(const value_type* path, size_type size, size_type& root_name_size); -} // unnamed namespace +// Finds position and size of the first element of the path +void first_element(string_type const& src, size_type& element_pos, size_type& element_size, size_type size); + +// Finds position and size of the first element of the path +inline void first_element(string_type const& src, size_type& element_pos, size_type& element_size) +{ + first_element(src, element_pos, element_size, src.size()); +} + +} // unnamed namespace //--------------------------------------------------------------------------------------// // // @@ -121,601 +148,841 @@ namespace // // //--------------------------------------------------------------------------------------// -namespace boost +namespace boost { +namespace filesystem { +namespace detail { + +// C++14 provides a mismatch algorithm with four iterator arguments(), but earlier +// standard libraries didn't, so provide this needed functionality. +inline std::pair< path::iterator, path::iterator > mismatch(path::iterator it1, path::iterator it1end, path::iterator it2, path::iterator it2end) { -namespace filesystem + for (; it1 != it1end && it2 != it2end && path_algorithms::compare_v4(*it1, *it2) == 0;) + { + path_algorithms::increment_v4(it1); + path_algorithms::increment_v4(it2); + } + return std::make_pair(it1, it2); +} + +// normal --------------------------------------------------------------------------// + +BOOST_FILESYSTEM_DECL path path_algorithms::lexically_normal_v3(path const& p) { - path& path::operator/=(const path& p) - { - if (p.empty()) - return *this; - if (this == &p) // self-append + const value_type* const pathname = p.m_pathname.c_str(); + const size_type pathname_size = p.m_pathname.size(); + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(pathname, pathname_size, root_name_size); + path normal(pathname, pathname + root_name_size); + +#if defined(BOOST_WINDOWS_API) + for (size_type i = 0; i < root_name_size; ++i) { - path rhs(p); - if (!detail::is_directory_separator(rhs.m_pathname[0])) - m_append_separator_if_needed(); - m_pathname += rhs.m_pathname; + if (normal.m_pathname[i] == path::separator) + normal.m_pathname[i] = path::preferred_separator; } - else +#endif + + size_type root_path_size = root_name_size; + if (root_dir_pos < pathname_size) { - if (!detail::is_directory_separator(*p.m_pathname.begin())) - m_append_separator_if_needed(); - m_pathname += p.m_pathname; + root_path_size = root_dir_pos + 1; + normal.m_pathname.push_back(path::preferred_separator); } - return *this; - } - path& path::operator/=(const value_type* ptr) - { - if (!*ptr) - return *this; - if (ptr >= m_pathname.data() - && ptr < m_pathname.data() + m_pathname.size()) // overlapping source + size_type i = root_path_size; + + // Skip redundant directory separators after the root directory + while (i < pathname_size && detail::is_directory_separator(pathname[i])) + ++i; + + if (i < pathname_size) { - path rhs(ptr); - if (!detail::is_directory_separator(rhs.m_pathname[0])) - m_append_separator_if_needed(); - m_pathname += rhs.m_pathname; + bool last_element_was_dot = false; + while (true) + { + { + const size_type start_pos = i; + + // Find next separator + i += find_separator(pathname + i, pathname_size - i); + + const size_type size = i - start_pos; + + // Skip dot elements + if (size == 1u && pathname[start_pos] == path::dot) + { + last_element_was_dot = true; + goto skip_append; + } + + last_element_was_dot = false; + + // Process dot dot elements + if (size == 2u && pathname[start_pos] == path::dot && pathname[start_pos + 1] == path::dot && normal.m_pathname.size() > root_path_size) + { + // Don't remove previous dot dot elements + const size_type normal_size = normal.m_pathname.size(); + size_type filename_size = find_filename_size(normal.m_pathname, root_path_size, normal_size); + size_type pos = normal_size - filename_size; + if (filename_size != 2u || normal.m_pathname[pos] != path::dot || normal.m_pathname[pos + 1] != path::dot) + { + if (pos > root_path_size && detail::is_directory_separator(normal.m_pathname[pos - 1])) + --pos; + normal.m_pathname.erase(normal.m_pathname.begin() + pos , normal.m_pathname.end()); + goto skip_append; + } + } + + // Append the element + path_algorithms::append_separator_if_needed(normal); + normal.m_pathname.append(pathname + start_pos, size); + } + + skip_append: + if (i == pathname_size) + break; + + // Skip directory separators, including duplicates + while (i < pathname_size && detail::is_directory_separator(pathname[i])) + ++i; + + if (i == pathname_size) + { + // If a path ends with a separator, add a trailing dot element + goto append_trailing_dot; + } + } + + if (normal.empty() || last_element_was_dot) + { + append_trailing_dot: + path_algorithms::append_separator_if_needed(normal); + normal.m_pathname.push_back(path::dot); + } } - else + + return normal; +} + +BOOST_FILESYSTEM_DECL path path_algorithms::lexically_normal_v4(path const& p) +{ + const value_type* const pathname = p.m_pathname.c_str(); + const size_type pathname_size = p.m_pathname.size(); + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(pathname, pathname_size, root_name_size); + path normal(pathname, pathname + root_name_size); + +#if defined(BOOST_WINDOWS_API) + for (size_type i = 0; i < root_name_size; ++i) { - if (!detail::is_directory_separator(*ptr)) - m_append_separator_if_needed(); - m_pathname += ptr; + if (normal.m_pathname[i] == path::separator) + normal.m_pathname[i] = path::preferred_separator; + } +#endif + + size_type root_path_size = root_name_size; + if (root_dir_pos < pathname_size) + { + root_path_size = root_dir_pos + 1; + normal.m_pathname.push_back(path::preferred_separator); } - return *this; - } - int path::compare(const path& p) const BOOST_NOEXCEPT - { - return detail::lex_compare(begin(), end(), p.begin(), p.end()); - } + size_type i = root_path_size; -# ifdef BOOST_WINDOWS_API + // Skip redundant directory separators after the root directory + while (i < pathname_size && detail::is_directory_separator(pathname[i])) + ++i; - const std::string path::generic_string() const - { - path tmp(*this); - std::replace(tmp.m_pathname.begin(), tmp.m_pathname.end(), L'\\', L'/'); - return tmp.string(); - } + if (i < pathname_size) + { + while (true) + { + bool last_element_was_dot = false; + { + const size_type start_pos = i; + + // Find next separator + i += find_separator(pathname + i, pathname_size - i); + + const size_type size = i - start_pos; + + // Skip dot elements + if (size == 1u && pathname[start_pos] == path::dot) + { + last_element_was_dot = true; + goto skip_append; + } + + // Process dot dot elements + if (size == 2u && pathname[start_pos] == path::dot && pathname[start_pos + 1] == path::dot && normal.m_pathname.size() > root_path_size) + { + // Don't remove previous dot dot elements + const size_type normal_size = normal.m_pathname.size(); + size_type filename_size = find_filename_size(normal.m_pathname, root_path_size, normal_size); + size_type pos = normal_size - filename_size; + if (filename_size != 2u || normal.m_pathname[pos] != path::dot || normal.m_pathname[pos + 1] != path::dot) + { + if (pos > root_path_size && detail::is_directory_separator(normal.m_pathname[pos - 1])) + --pos; + normal.m_pathname.erase(normal.m_pathname.begin() + pos, normal.m_pathname.end()); + goto skip_append; + } + } + + // Append the element + path_algorithms::append_separator_if_needed(normal); + normal.m_pathname.append(pathname + start_pos, size); + } + + skip_append: + if (i == pathname_size) + { + // If a path ends with a trailing dot after a directory element, add a trailing separator + if (last_element_was_dot && !normal.empty() && !normal.filename_is_dot_dot()) + path_algorithms::append_separator_if_needed(normal); + + break; + } + + // Skip directory separators, including duplicates + while (i < pathname_size && detail::is_directory_separator(pathname[i])) + ++i; + + if (i == pathname_size) + { + // If a path ends with a separator, add a trailing separator + if (!normal.empty() && !normal.filename_is_dot_dot()) + path_algorithms::append_separator_if_needed(normal); + break; + } + } - const std::string path::generic_string(const codecvt_type& cvt) const - { - path tmp(*this); - std::replace(tmp.m_pathname.begin(), tmp.m_pathname.end(), L'\\', L'/'); - return tmp.string(cvt); - } + // If the original path was not empty and normalized ended up being empty, make it a dot + if (normal.empty()) + normal.m_pathname.push_back(path::dot); + } - const std::wstring path::generic_wstring() const - { - path tmp(*this); - std::replace(tmp.m_pathname.begin(), tmp.m_pathname.end(), L'\\', L'/'); - return tmp.wstring(); - } + return normal; +} + +// append --------------------------------------------------------------------------// + +BOOST_FILESYSTEM_DECL void path_algorithms::append_v3(path& p, const value_type* begin, const value_type* end) +{ + if (begin != end) + { + if (BOOST_LIKELY(begin < p.m_pathname.data() || begin >= (p.m_pathname.data() + p.m_pathname.size()))) + { + if (!detail::is_directory_separator(*begin)) + path_algorithms::append_separator_if_needed(p); + p.m_pathname.append(begin, end); + } + else + { + // overlapping source + string_type rhs(begin, end); + path_algorithms::append_v3(p, rhs.data(), rhs.data() + rhs.size()); + } + } +} -# endif // BOOST_WINDOWS_API +BOOST_FILESYSTEM_DECL void path_algorithms::append_v4(path& p, const value_type* begin, const value_type* end) +{ + if (begin != end) + { + if (BOOST_LIKELY(begin < p.m_pathname.data() || begin >= (p.m_pathname.data() + p.m_pathname.size()))) + { + const size_type that_size = end - begin; + size_type that_root_name_size = 0; + size_type that_root_dir_pos = find_root_directory_start(begin, that_size, that_root_name_size); + + // if (p.is_absolute()) + if + ( +#if defined(BOOST_WINDOWS_API) && !defined(UNDER_CE) + that_root_name_size > 0 && +#endif + that_root_dir_pos < that_size + ) + { + return_assign: + p.assign(begin, end); + return; + } + + size_type this_root_name_size = 0; + find_root_directory_start(p.m_pathname.c_str(), p.m_pathname.size(), this_root_name_size); + + if + ( + that_root_name_size > 0 && + (that_root_name_size != this_root_name_size || std::memcmp(p.m_pathname.c_str(), begin, this_root_name_size * sizeof(value_type)) != 0) + ) + { + goto return_assign; + } + + if (that_root_dir_pos < that_size) + { + // Remove root directory (if any) and relative path to replace with those from p + p.m_pathname.erase(p.m_pathname.begin() + this_root_name_size, p.m_pathname.end()); + } + + const value_type* const that_path = begin + that_root_name_size; + if (!detail::is_directory_separator(*that_path)) + path_algorithms::append_separator_if_needed(p); + p.m_pathname.append(that_path, end); + } + else + { + // overlapping source + string_type rhs(begin, end); + path_algorithms::append_v4(p, rhs.data(), rhs.data() + rhs.size()); + } + } + else if (path_algorithms::has_filename_v4(p)) + { + p.m_pathname.push_back(path::preferred_separator); + } +} - // m_append_separator_if_needed ----------------------------------------------------// +// compare -------------------------------------------------------------------------// + +BOOST_FILESYSTEM_DECL int path_algorithms::lex_compare_v3 +( + path_detail::path_iterator first1, path_detail::path_iterator const& last1, + path_detail::path_iterator first2, path_detail::path_iterator const& last2 +) +{ + for (; first1 != last1 && first2 != last2;) + { + if (first1->native() < first2->native()) + return -1; + if (first2->native() < first1->native()) + return 1; + BOOST_ASSERT(first2->native() == first1->native()); + path_algorithms::increment_v3(first1); + path_algorithms::increment_v3(first2); + } + if (first1 == last1 && first2 == last2) + return 0; + return first1 == last1 ? -1 : 1; +} - path::string_type::size_type path::m_append_separator_if_needed() - { - if (!m_pathname.empty() && -# ifdef BOOST_WINDOWS_API - *(m_pathname.end()-1) != colon && -# endif - !detail::is_directory_separator(*(m_pathname.end()-1))) +BOOST_FILESYSTEM_DECL int path_algorithms::lex_compare_v4 +( + path_detail::path_iterator first1, path_detail::path_iterator const& last1, + path_detail::path_iterator first2, path_detail::path_iterator const& last2 +) +{ + for (; first1 != last1 && first2 != last2;) { - string_type::size_type tmp(m_pathname.size()); - m_pathname += preferred_separator; - return tmp; + if (first1->native() < first2->native()) + return -1; + if (first2->native() < first1->native()) + return 1; + BOOST_ASSERT(first2->native() == first1->native()); + path_algorithms::increment_v4(first1); + path_algorithms::increment_v4(first2); + } + if (first1 == last1 && first2 == last2) + return 0; + return first1 == last1 ? -1 : 1; +} + +BOOST_FILESYSTEM_DECL int path_algorithms::compare_v3(path const& left, path const& right) +{ + return path_algorithms::lex_compare_v3(left.begin(), left.end(), right.begin(), right.end()); +} + +BOOST_FILESYSTEM_DECL int path_algorithms::compare_v4(path const& left, path const& right) +{ + return path_algorithms::lex_compare_v4(left.begin(), left.end(), right.begin(), right.end()); +} + +// append_separator_if_needed ------------------------------------------------------// + +BOOST_FILESYSTEM_DECL path_algorithms::string_type::size_type path_algorithms::append_separator_if_needed(path& p) +{ + if (!p.m_pathname.empty() && +#ifdef BOOST_WINDOWS_API + *(p.m_pathname.end() - 1) != colon && +#endif + !detail::is_directory_separator(*(p.m_pathname.end() - 1))) + { + string_type::size_type tmp(p.m_pathname.size()); + p.m_pathname.push_back(path::preferred_separator); + return tmp; } return 0; - } - - // m_erase_redundant_separator -----------------------------------------------------// - - void path::m_erase_redundant_separator(string_type::size_type sep_pos) - { - if (sep_pos // a separator was added - && sep_pos < m_pathname.size() // and something was appended - && (m_pathname[sep_pos+1] == separator // and it was also separator -# ifdef BOOST_WINDOWS_API - || m_pathname[sep_pos+1] == preferred_separator // or preferred_separator -# endif -)) { m_pathname.erase(sep_pos, 1); } // erase the added separator - } - - // modifiers -----------------------------------------------------------------------// - -# ifdef BOOST_WINDOWS_API - path & path::make_preferred() - { - std::replace(m_pathname.begin(), m_pathname.end(), L'/', L'\\'); - return *this; - } -# endif +} - path& path::remove_filename() - { - m_pathname.erase(m_parent_path_end()); - return *this; - } +// erase_redundant_separator -------------------------------------------------------// - path& path::remove_trailing_separator() - { - if (!m_pathname.empty() - && detail::is_directory_separator(m_pathname[m_pathname.size() - 1])) - m_pathname.erase(m_pathname.size() - 1); - return *this; - } +BOOST_FILESYSTEM_DECL void path_algorithms::erase_redundant_separator(path& p, string_type::size_type sep_pos) +{ + if (sep_pos // a separator was added + && sep_pos < p.m_pathname.size() // and something was appended + && (p.m_pathname[sep_pos + 1] == path::separator // and it was also separator +#ifdef BOOST_WINDOWS_API + || p.m_pathname[sep_pos + 1] == path::preferred_separator // or preferred_separator +#endif + )) + { + p.m_pathname.erase(p.m_pathname.begin() + sep_pos); // erase the added separator + } +} + +// modifiers -----------------------------------------------------------------------// + +BOOST_FILESYSTEM_DECL void path_algorithms::remove_filename_v3(path& p) +{ + p.remove_filename_and_trailing_separators(); +} + +BOOST_FILESYSTEM_DECL void path_algorithms::remove_filename_v4(path& p) +{ + size_type filename_size = path_algorithms::find_filename_v4_size(p); + p.m_pathname.erase(p.m_pathname.begin() + (p.m_pathname.size() - filename_size), p.m_pathname.end()); +} - path& path::replace_extension(const path& new_extension) - { +BOOST_FILESYSTEM_DECL void path_algorithms::replace_extension_v3(path& p, path const& new_extension) +{ // erase existing extension, including the dot, if any - m_pathname.erase(m_pathname.size()-extension().m_pathname.size()); + size_type ext_pos = p.m_pathname.size() - path_algorithms::extension_v3(p).m_pathname.size(); + p.m_pathname.erase(p.m_pathname.begin() + ext_pos, p.m_pathname.end()); if (!new_extension.empty()) { - // append new_extension, adding the dot if necessary - if (new_extension.m_pathname[0] != dot) - m_pathname.push_back(dot); - m_pathname.append(new_extension.m_pathname); + // append new_extension, adding the dot if necessary + if (new_extension.m_pathname[0] != path::dot) + p.m_pathname.push_back(path::dot); + p.m_pathname.append(new_extension.m_pathname); } +} - return *this; - } - - // decomposition -------------------------------------------------------------------// - - path path::root_path() const - { - path temp(root_name()); - if (!root_directory().empty()) temp.m_pathname += root_directory().c_str(); - return temp; - } - - path path::root_name() const - { - iterator itr(begin()); - - return (itr.m_pos != m_pathname.size() - && ( - (itr.m_element.m_pathname.size() > 1 - && detail::is_directory_separator(itr.m_element.m_pathname[0]) - && detail::is_directory_separator(itr.m_element.m_pathname[1]) - ) -# ifdef BOOST_WINDOWS_API - || itr.m_element.m_pathname[itr.m_element.m_pathname.size()-1] == colon -# endif - )) - ? itr.m_element - : path(); - } - - path path::root_directory() const - { - size_type pos(root_directory_start(m_pathname, m_pathname.size())); - - return pos == string_type::npos - ? path() - : path(m_pathname.c_str() + pos, m_pathname.c_str() + pos + 1); - } - - path path::relative_path() const - { - iterator itr(begin()); - - for (; itr.m_pos != m_pathname.size() - && (detail::is_directory_separator(itr.m_element.m_pathname[0]) -# ifdef BOOST_WINDOWS_API - || itr.m_element.m_pathname[itr.m_element.m_pathname.size()-1] == colon -# endif - ); ++itr) {} - - return path(m_pathname.c_str() + itr.m_pos); - } - - string_type::size_type path::m_parent_path_end() const - { - size_type end_pos(filename_pos(m_pathname, m_pathname.size())); - - bool filename_was_separator(m_pathname.size() - && detail::is_directory_separator(m_pathname[end_pos])); +BOOST_FILESYSTEM_DECL void path_algorithms::replace_extension_v4(path& p, path const& new_extension) +{ + // erase existing extension, including the dot, if any + size_type ext_pos = p.m_pathname.size() - path_algorithms::find_extension_v4_size(p); + p.m_pathname.erase(p.m_pathname.begin() + ext_pos, p.m_pathname.end()); - // skip separators unless root directory - size_type root_dir_pos(root_directory_start(m_pathname, end_pos)); - for (; - end_pos > 0 - && (end_pos-1) != root_dir_pos - && detail::is_directory_separator(m_pathname[end_pos-1]) - ; - --end_pos) {} - - return (end_pos == 1 && root_dir_pos == 0 && filename_was_separator) - ? string_type::npos - : end_pos; - } - - path path::parent_path() const - { - size_type end_pos(m_parent_path_end()); - return end_pos == string_type::npos - ? path() - : path(m_pathname.c_str(), m_pathname.c_str() + end_pos); - } - - path path::filename() const - { - size_type pos(filename_pos(m_pathname, m_pathname.size())); - return (m_pathname.size() - && pos - && detail::is_directory_separator(m_pathname[pos]) - && !is_root_separator(m_pathname, pos)) - ? detail::dot_path() - : path(m_pathname.c_str() + pos); - } - - path path::stem() const - { - path name(filename()); - if (name == detail::dot_path() || name == detail::dot_dot_path()) return name; - size_type pos(name.m_pathname.rfind(dot)); - return pos == string_type::npos - ? name - : path(name.m_pathname.c_str(), name.m_pathname.c_str() + pos); - } - - path path::extension() const - { - path name(filename()); - if (name == detail::dot_path() || name == detail::dot_dot_path()) return path(); - size_type pos(name.m_pathname.rfind(dot)); - return pos == string_type::npos - ? path() - : path(name.m_pathname.c_str() + pos); - } - - // lexical operations --------------------------------------------------------------// - - namespace detail - { - // C++14 provide a mismatch algorithm with four iterator arguments(), but earlier - // standard libraries didn't, so provide this needed functionality. - inline - std::pair mismatch(path::iterator it1, - path::iterator it1end, path::iterator it2, path::iterator it2end) - { - for (; it1 != it1end && it2 != it2end && *it1 == *it2;) - { - ++it1; - ++it2; - } - return std::make_pair(it1, it2); - } - } - - path path::lexically_relative(const path& base) const - { - std::pair mm - = detail::mismatch(begin(), end(), base.begin(), base.end()); - if (mm.first == begin() && mm.second == base.begin()) - return path(); - if (mm.first == end() && mm.second == base.end()) - return detail::dot_path(); - path tmp; - for (; mm.second != base.end(); ++mm.second) - tmp /= detail::dot_dot_path(); - for (; mm.first != end(); ++mm.first) - tmp /= *mm.first; - return tmp; - } - - // normal --------------------------------------------------------------------------// - - path path::lexically_normal() const - { - if (m_pathname.empty()) - return *this; - - path temp; - iterator start(begin()); - iterator last(end()); - iterator stop(last--); - for (iterator itr(start); itr != stop; ++itr) - { - // ignore "." except at start and last - if (itr->native().size() == 1 - && (itr->native())[0] == dot - && itr != start - && itr != last) continue; - - // ignore a name and following ".." - if (!temp.empty() - && itr->native().size() == 2 - && (itr->native())[0] == dot - && (itr->native())[1] == dot) // dot dot - { - string_type lf(temp.filename().native()); - if (lf.size() > 0 - && (lf.size() != 1 - || (lf[0] != dot - && lf[0] != separator)) - && (lf.size() != 2 - || (lf[0] != dot - && lf[1] != dot -# ifdef BOOST_WINDOWS_API - && lf[1] != colon -# endif - ) - ) - ) + if (!new_extension.empty()) + { + // append new_extension, adding the dot if necessary + if (new_extension.m_pathname[0] != path::dot) + p.m_pathname.push_back(path::dot); + p.m_pathname.append(new_extension.m_pathname); + } +} + +// decomposition -------------------------------------------------------------------// + +BOOST_FILESYSTEM_DECL size_type path_algorithms::find_root_name_size(path const& p) +{ + size_type root_name_size = 0; + find_root_directory_start(p.m_pathname.c_str(), p.m_pathname.size(), root_name_size); + return root_name_size; +} + +BOOST_FILESYSTEM_DECL size_type path_algorithms::find_root_path_size(path const& p) +{ + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(p.m_pathname.c_str(), p.m_pathname.size(), root_name_size); + + size_type size = root_name_size; + if (root_dir_pos < p.m_pathname.size()) + size = root_dir_pos + 1; + + return size; +} + +BOOST_FILESYSTEM_DECL path_algorithms::substring path_algorithms::find_root_directory(path const& p) +{ + substring root_dir; + size_type root_name_size = 0; + root_dir.pos = find_root_directory_start(p.m_pathname.c_str(), p.m_pathname.size(), root_name_size); + root_dir.size = static_cast< std::size_t >(root_dir.pos < p.m_pathname.size()); + return root_dir; +} + +BOOST_FILESYSTEM_DECL path_algorithms::substring path_algorithms::find_relative_path(path const& p) +{ + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(p.m_pathname.c_str(), p.m_pathname.size(), root_name_size); + + // Skip root name, root directory and any duplicate separators + size_type size = root_name_size; + if (root_dir_pos < p.m_pathname.size()) + { + size = root_dir_pos + 1; + + for (size_type n = p.m_pathname.size(); size < n; ++size) { - temp.remove_filename(); - //// if not root directory, must also remove "/" if any - //if (temp.native().size() > 0 - // && temp.native()[temp.native().size()-1] - // == separator) - //{ - // string_type::size_type rds( - // root_directory_start(temp.native(), temp.native().size())); - // if (rds == string_type::npos - // || rds != temp.native().size()-1) - // { - // temp.m_pathname.erase(temp.native().size()-1); - // } - //} - - iterator next(itr); - if (temp.empty() && ++next != stop - && next == last && *last == detail::dot_path()) - { - temp /= detail::dot_path(); - } - continue; + if (!detail::is_directory_separator(p.m_pathname[size])) + break; } - } + } - temp /= *itr; - }; + substring rel_path; + rel_path.pos = size; + rel_path.size = p.m_pathname.size() - size; - if (temp.empty()) - temp /= detail::dot_path(); - return temp; - } + return rel_path; +} -} // namespace filesystem -} // namespace boost - -//--------------------------------------------------------------------------------------// -// // -// class path helpers implementation // -// // -//--------------------------------------------------------------------------------------// +BOOST_FILESYSTEM_DECL path_algorithms::string_type::size_type path_algorithms::find_parent_path_size(path const& p) +{ + const size_type size = p.m_pathname.size(); + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(p.m_pathname.c_str(), size, root_name_size); -namespace -{ - - // is_root_separator ---------------------------------------------------------------// - - bool is_root_separator(const string_type & str, size_type pos) - // pos is position of the separator - { - BOOST_ASSERT_MSG(!str.empty() && fs::detail::is_directory_separator(str[pos]), - "precondition violation"); - - // subsequent logic expects pos to be for leftmost slash of a set - while (pos > 0 && fs::detail::is_directory_separator(str[pos-1])) - --pos; - - // "/" [...] - if (pos == 0) - return true; - -# ifdef BOOST_WINDOWS_API - // "c:/" [...] - if (pos == 2 && is_letter(str[0]) && str[1] == colon) - return true; -# endif - - // "//" name "/" - if (pos < 3 || !fs::detail::is_directory_separator(str[0]) - || !fs::detail::is_directory_separator(str[1])) - return false; - - return str.find_first_of(separators, 2) == pos; - } - - // filename_pos --------------------------------------------------------------------// - - size_type filename_pos(const string_type & str, - size_type end_pos) // end_pos is past-the-end position - // return 0 if str itself is filename (or empty) - { - // case: "//" - if (end_pos == 2 - && fs::detail::is_directory_separator(str[0]) - && fs::detail::is_directory_separator(str[1])) return 0; - - // case: ends in "/" - if (end_pos && fs::detail::is_directory_separator(str[end_pos-1])) - return end_pos-1; - - // set pos to start of last element - size_type pos(str.find_last_of(separators, end_pos-1)); - -# ifdef BOOST_WINDOWS_API - if (pos == string_type::npos && end_pos > 1) - pos = str.find_last_of(colon, end_pos-2); -# endif - - return (pos == string_type::npos // path itself must be a filename (or empty) - || (pos == 1 && fs::detail::is_directory_separator(str[0]))) // or net - ? 0 // so filename is entire string - : pos + 1; // or starts after delimiter - } - - // root_directory_start ------------------------------------------------------------// - - size_type root_directory_start(const string_type & path, size_type size) - // return npos if no root_directory found - { - -# ifdef BOOST_WINDOWS_API - // case "c:/" - if (size > 2 - && path[1] == colon - && fs::detail::is_directory_separator(path[2])) return 2; -# endif - - // case "//" - if (size == 2 - && fs::detail::is_directory_separator(path[0]) - && fs::detail::is_directory_separator(path[1])) return string_type::npos; - -# ifdef BOOST_WINDOWS_API - // case "\\?\" - if (size > 4 - && fs::detail::is_directory_separator(path[0]) - && fs::detail::is_directory_separator(path[1]) - && path[2] == questionmark - && fs::detail::is_directory_separator(path[3])) - { - string_type::size_type pos(path.find_first_of(separators, 4)); - return pos < size ? pos : string_type::npos; - } -# endif - - // case "//net {/}" - if (size > 3 - && fs::detail::is_directory_separator(path[0]) - && fs::detail::is_directory_separator(path[1]) - && !fs::detail::is_directory_separator(path[2])) - { - string_type::size_type pos(path.find_first_of(separators, 2)); - return pos < size ? pos : string_type::npos; - } - - // case "/" - if (size > 0 && fs::detail::is_directory_separator(path[0])) return 0; - - return string_type::npos; - } - - // first_element --------------------------------------------------------------------// - // sets pos and len of first element, excluding extra separators - // if src.empty(), sets pos,len, to 0,0. - - void first_element( - const string_type & src, - size_type & element_pos, - size_type & element_size, - size_type size -) - { - if (size == string_type::npos) size = src.size(); - element_pos = 0; - element_size = 0; - if (src.empty()) return; + size_type filename_size = find_filename_size(p.m_pathname, root_name_size, size); + size_type end_pos = size - filename_size; + while (true) + { + if (end_pos <= root_name_size) + { + // Keep the root name as the parent path if there was a filename + if (filename_size == 0) + end_pos = 0u; + break; + } + + --end_pos; + + if (!detail::is_directory_separator(p.m_pathname[end_pos])) + { + ++end_pos; + break; + } - string_type::size_type cur(0); - - // deal with // [network] - if (size >= 2 && fs::detail::is_directory_separator(src[0]) - && fs::detail::is_directory_separator(src[1]) - && (size == 2 - || !fs::detail::is_directory_separator(src[2]))) - { - cur += 2; - element_size += 2; + if (end_pos == root_dir_pos) + { + // Keep the trailing root directory if there was a filename + end_pos += filename_size > 0; + break; + } } - // leading (not non-network) separator - else if (fs::detail::is_directory_separator(src[0])) + return end_pos; +} + +BOOST_FILESYSTEM_DECL path path_algorithms::filename_v3(path const& p) +{ + const size_type size = p.m_pathname.size(); + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(p.m_pathname.c_str(), size, root_name_size); + size_type filename_size, pos; + if (root_dir_pos < size && detail::is_directory_separator(p.m_pathname[size - 1]) && is_root_separator(p.m_pathname, root_dir_pos, size - 1)) + { + // Return root directory + pos = root_dir_pos; + filename_size = 1u; + } + else if (root_name_size == size) + { + // Return root name + pos = 0u; + filename_size = root_name_size; + } + else { - ++element_size; - // bypass extra leading separators - while (cur+1 < size - && fs::detail::is_directory_separator(src[cur+1])) - { - ++cur; - ++element_pos; - } - return; + filename_size = find_filename_size(p.m_pathname, root_name_size, size); + pos = size - filename_size; + if (filename_size == 0u && pos > root_name_size && detail::is_directory_separator(p.m_pathname[pos - 1]) && !is_root_separator(p.m_pathname, root_dir_pos, pos - 1)) + return detail::dot_path(); } - // at this point, we have either a plain name, a network name, - // or (on Windows only) a device name + const value_type* ptr = p.m_pathname.c_str() + pos; + return path(ptr, ptr + filename_size); +} + +BOOST_FILESYSTEM_DECL path_algorithms::string_type::size_type path_algorithms::find_filename_v4_size(path const& p) +{ + const size_type size = p.m_pathname.size(); + size_type root_name_size = 0; + find_root_directory_start(p.m_pathname.c_str(), size, root_name_size); + return find_filename_size(p.m_pathname, root_name_size, size); +} - // find the end - while (cur < size -# ifdef BOOST_WINDOWS_API - && src[cur] != colon -# endif - && !fs::detail::is_directory_separator(src[cur])) +BOOST_FILESYSTEM_DECL path path_algorithms::stem_v3(path const& p) +{ + path name(path_algorithms::filename_v3(p)); + if (path_algorithms::compare_v4(name, detail::dot_path()) != 0 && path_algorithms::compare_v4(name, detail::dot_dot_path()) != 0) { - ++cur; - ++element_size; + size_type pos = name.m_pathname.rfind(path::dot); + if (pos != string_type::npos) + name.m_pathname.erase(name.m_pathname.begin() + pos, name.m_pathname.end()); } + return name; +} -# ifdef BOOST_WINDOWS_API - if (cur == size) return; - // include device delimiter - if (src[cur] == colon) - { ++element_size; } -# endif +BOOST_FILESYSTEM_DECL path path_algorithms::stem_v4(path const& p) +{ + path name(path_algorithms::filename_v4(p)); + if (path_algorithms::compare_v4(name, detail::dot_path()) != 0 && path_algorithms::compare_v4(name, detail::dot_dot_path()) != 0) + { + size_type pos = name.m_pathname.rfind(path::dot); + if (pos != 0 && pos != string_type::npos) + name.m_pathname.erase(name.m_pathname.begin() + pos, name.m_pathname.end()); + } + return name; +} - return; - } +BOOST_FILESYSTEM_DECL path path_algorithms::extension_v3(path const& p) +{ + path name(path_algorithms::filename_v3(p)); + if (path_algorithms::compare_v4(name, detail::dot_path()) == 0 || path_algorithms::compare_v4(name, detail::dot_dot_path()) == 0) + return path(); + size_type pos(name.m_pathname.rfind(path::dot)); + return pos == string_type::npos ? path() : path(name.m_pathname.c_str() + pos); +} + +BOOST_FILESYSTEM_DECL path_algorithms::string_type::size_type path_algorithms::find_extension_v4_size(path const& p) +{ + const size_type size = p.m_pathname.size(); + size_type root_name_size = 0; + find_root_directory_start(p.m_pathname.c_str(), size, root_name_size); + size_type filename_size = find_filename_size(p.m_pathname, root_name_size, size); + size_type filename_pos = size - filename_size; + if + ( + filename_size > 0u && + // Check for "." and ".." filenames + !(p.m_pathname[filename_pos] == path::dot && + (filename_size == 1u || (filename_size == 2u && p.m_pathname[filename_pos + 1u] == path::dot))) + ) + { + size_type ext_pos = size; + while (ext_pos > filename_pos) + { + --ext_pos; + if (p.m_pathname[ext_pos] == path::dot) + break; + } -} // unnamed namespace + if (ext_pos > filename_pos) + return size - ext_pos; + } + return 0u; +} -namespace boost +} // namespace detail + +BOOST_FILESYSTEM_DECL path& path::remove_filename_and_trailing_separators() +{ + size_type end_pos = detail::path_algorithms::find_parent_path_size(*this); + m_pathname.erase(m_pathname.begin() + end_pos, m_pathname.end()); + return *this; +} + +BOOST_FILESYSTEM_DECL path& path::remove_trailing_separator() +{ + if (!m_pathname.empty() && detail::is_directory_separator(m_pathname[m_pathname.size() - 1])) + m_pathname.erase(m_pathname.end() - 1); + return *this; +} + +BOOST_FILESYSTEM_DECL path& path::replace_filename(path const& replacement) { -namespace filesystem + detail::path_algorithms::remove_filename_v4(*this); + detail::path_algorithms::append_v4(*this, replacement.m_pathname.data(), replacement.m_pathname.data() + replacement.m_pathname.size()); + return *this; +} + +// lexical operations --------------------------------------------------------------// + +BOOST_FILESYSTEM_DECL path path::lexically_relative(path const& base) const { - namespace detail - { - BOOST_FILESYSTEM_DECL - int lex_compare(path::iterator first1, path::iterator last1, - path::iterator first2, path::iterator last2) + path::iterator b = begin(), e = end(), base_b = base.begin(), base_e = base.end(); + std::pair< path::iterator, path::iterator > mm = detail::mismatch(b, e, base_b, base_e); + if (mm.first == b && mm.second == base_b) + return path(); + if (mm.first == e && mm.second == base_e) + return detail::dot_path(); + + std::ptrdiff_t n = 0; + for (; mm.second != base_e; detail::path_algorithms::increment_v4(mm.second)) { - for (; first1 != last1 && first2 != last2;) - { - if (first1->native() < first2->native()) return -1; - if (first2->native() < first1->native()) return 1; - BOOST_ASSERT(first2->native() == first1->native()); - ++first1; - ++first2; - } - if (first1 == last1 && first2 == last2) - return 0; - return first1 == last1 ? -1 : 1; + path const& p = *mm.second; + if (detail::path_algorithms::compare_v4(p, detail::dot_dot_path()) == 0) + --n; + else if (!p.empty() && detail::path_algorithms::compare_v4(p, detail::dot_path()) != 0) + ++n; + } + if (n < 0) + return path(); + if (n == 0 && (mm.first == e || mm.first->empty())) + return detail::dot_path(); + + path tmp; + for (; n > 0; --n) + detail::path_algorithms::append_v4(tmp, detail::dot_dot_path()); + for (; mm.first != e; detail::path_algorithms::increment_v4(mm.first)) + detail::path_algorithms::append_v4(tmp, *mm.first); + return tmp; +} + +#if defined(BOOST_WINDOWS_API) + +BOOST_FILESYSTEM_DECL path path::generic_path() const +{ + path tmp(*this); + std::replace(tmp.m_pathname.begin(), tmp.m_pathname.end(), L'\\', L'/'); + return tmp; +} + +BOOST_FILESYSTEM_DECL path& path::make_preferred() +{ + std::replace(m_pathname.begin(), m_pathname.end(), L'/', L'\\'); + return *this; +} + +#endif // defined(BOOST_WINDOWS_API) + +} // namespace filesystem +} // namespace boost + +//--------------------------------------------------------------------------------------// +// // +// class path helpers implementation // +// // +//--------------------------------------------------------------------------------------// + +namespace { + +// is_root_separator ---------------------------------------------------------------// + +// pos is position of the separator +inline bool is_root_separator(string_type const& str, size_type root_dir_pos, size_type pos) +{ + BOOST_ASSERT_MSG(pos < str.size() && fs::detail::is_directory_separator(str[pos]), "precondition violation"); + + // root_dir_pos points at the leftmost separator, we need to skip any duplicate separators right of root dir + while (pos > root_dir_pos && fs::detail::is_directory_separator(str[pos - 1])) + --pos; + + return pos == root_dir_pos; +} + +// find_filename_size --------------------------------------------------------------// + +// Returns: Size of the filename element that ends at end_pos (which is past-the-end position). 0 if no filename found. +inline size_type find_filename_size(string_type const& str, size_type root_name_size, size_type end_pos) +{ + size_type pos = end_pos; + while (pos > root_name_size) + { + --pos; + + if (fs::detail::is_directory_separator(str[pos])) + { + ++pos; // filename starts past the separator + break; + } } - BOOST_FILESYSTEM_DECL - const path& dot_path() + return end_pos - pos; +} + +// find_root_directory_start -------------------------------------------------------// + +// Returns: starting position of root directory or size if not found +size_type find_root_directory_start(const value_type* path, size_type size, size_type& root_name_size) +{ + root_name_size = 0; + if (size == 0) + return 0; + + bool parsing_root_name = false; + size_type pos = 0; + + // case "//", possibly followed by more characters + if (fs::detail::is_directory_separator(path[0])) { -# ifdef BOOST_WINDOWS_API - static const fs::path dot_pth(L"."); -# else - static const fs::path dot_pth("."); -# endif - return dot_pth; + if (size >= 2 && fs::detail::is_directory_separator(path[1])) + { + if (size == 2) + { + // The whole path is just a pair of separators + root_name_size = 2; + return 2; + } +#ifdef BOOST_WINDOWS_API + // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file + // cases "\\?\" and "\\.\" + else if (size >= 4 && (path[2] == questionmark || path[2] == fs::path::dot) && fs::detail::is_directory_separator(path[3])) + { + parsing_root_name = true; + pos += 4; + } +#endif + else if (fs::detail::is_directory_separator(path[2])) + { + // The path starts with three directory separators, which is interpreted as a root directory followed by redundant separators + return 0; + } + else + { + // case "//net {/}" + parsing_root_name = true; + pos += 2; + goto find_next_separator; + } + } +#ifdef BOOST_WINDOWS_API + // https://stackoverflow.com/questions/23041983/path-prefixes-and + // case "\??\" (NT path prefix) + else if (size >= 4 && path[1] == questionmark && path[2] == questionmark && fs::detail::is_directory_separator(path[3])) + { + parsing_root_name = true; + pos += 4; + } +#endif + else + { + // The path starts with a separator, possibly followed by a non-separator character + return 0; + } } - BOOST_FILESYSTEM_DECL - const path& dot_dot_path() +#ifdef BOOST_WINDOWS_API + // case "c:" or "prn:" + // Note: There is ambiguity in a "c:x" path interpretation. It could either mean a file "x" located at the current directory for drive C:, + // or an alternative stream "x" of a file "c". Windows API resolve this as the former, and so do we. + if ((size - pos) >= 2 && fs::detail::is_letter(path[pos])) { -# ifdef BOOST_WINDOWS_API - static const fs::path dot_dot(L".."); -# else - static const fs::path dot_dot(".."); -# endif - return dot_dot; + size_type i = pos + 1; + for (; i < size; ++i) + { + if (!is_device_name_char(path[i])) + break; + } + + if (i < size && path[i] == colon) + { + pos = i + 1; + root_name_size = pos; + parsing_root_name = false; + + if (pos < size && fs::detail::is_directory_separator(path[pos])) + return pos; + } } - } +#endif + + if (!parsing_root_name) + return size; + +find_next_separator: + pos += find_separator(path + pos, size - pos); + if (parsing_root_name) + root_name_size = pos; + + return pos; +} //--------------------------------------------------------------------------------------// // // @@ -723,153 +990,346 @@ namespace filesystem // // //--------------------------------------------------------------------------------------// - path::iterator path::begin() const - { - iterator itr; - itr.m_path_ptr = this; - size_type element_size; - first_element(m_pathname, itr.m_pos, element_size); - itr.m_element = m_pathname.substr(itr.m_pos, element_size); - if (itr.m_element.m_pathname == preferred_separator_string) - itr.m_element.m_pathname = separator_string; // needed for Windows, harmless on POSIX - return itr; - } +// first_element ----------------------------------------------------------------------// - path::iterator path::end() const - { - iterator itr; - itr.m_path_ptr = this; - itr.m_pos = m_pathname.size(); - return itr; - } +// sets pos and len of first element, excluding extra separators +// if src.empty(), sets pos,len, to 0,0. +void first_element(string_type const& src, size_type& element_pos, size_type& element_size, size_type size) +{ + element_pos = 0; + element_size = 0; + if (src.empty()) + return; + + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(src.c_str(), size, root_name_size); + + // First element is the root name, if there is one + if (root_name_size > 0) + { + element_size = root_name_size; + return; + } + + // Otherwise, the root directory + if (root_dir_pos < size) + { + element_pos = root_dir_pos; + element_size = 1u; + return; + } + + // Otherwise, the first filename or directory name in a relative path + size_type end_pos = src.find_first_of(separators); + if (end_pos == string_type::npos) + end_pos = src.size(); + element_size = end_pos; +} + +} // unnamed namespace - void path::m_path_iterator_increment(path::iterator & it) - { - BOOST_ASSERT_MSG(it.m_pos < it.m_path_ptr->m_pathname.size(), - "path::basic_iterator increment past end()"); +namespace boost { +namespace filesystem { +namespace detail { + +BOOST_FILESYSTEM_DECL void path_algorithms::increment_v3(path_detail::path_iterator& it) +{ + const size_type size = it.m_path_ptr->m_pathname.size(); + BOOST_ASSERT_MSG(it.m_pos < size, "path::iterator increment past end()"); // increment to position past current element; if current element is implicit dot, - // this will cause it.m_pos to represent the end iterator + // this will cause m_pos to represent the end iterator it.m_pos += it.m_element.m_pathname.size(); // if the end is reached, we are done - if (it.m_pos == it.m_path_ptr->m_pathname.size()) + if (it.m_pos >= size) { - it.m_element.clear(); // aids debugging, may release unneeded memory - return; + BOOST_ASSERT_MSG(it.m_pos == size, "path::iterator increment after the referenced path was modified"); + it.m_element.clear(); // aids debugging + return; } - // both POSIX and Windows treat paths that begin with exactly two separators specially - bool was_net(it.m_element.m_pathname.size() > 2 - && detail::is_directory_separator(it.m_element.m_pathname[0]) - && detail::is_directory_separator(it.m_element.m_pathname[1]) - && !detail::is_directory_separator(it.m_element.m_pathname[2])); - // process separator (Windows drive spec is only case not a separator) if (detail::is_directory_separator(it.m_path_ptr->m_pathname[it.m_pos])) { - // detect root directory - if (was_net -# ifdef BOOST_WINDOWS_API - // case "c:/" - || it.m_element.m_pathname[it.m_element.m_pathname.size()-1] == colon -# endif - ) - { - it.m_element.m_pathname = separator; // generic format; see docs + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(it.m_path_ptr->m_pathname.c_str(), size, root_name_size); + + // detect root directory and set iterator value to the separator if it is + if (it.m_pos == root_dir_pos && it.m_element.m_pathname.size() == root_name_size) + { + it.m_element.m_pathname = path::separator; // generic format; see docs + return; + } + + // skip separators until m_pos points to the start of the next element + while (it.m_pos != size && detail::is_directory_separator(it.m_path_ptr->m_pathname[it.m_pos])) + { + ++it.m_pos; + } + + // detect trailing separator, and treat it as ".", per POSIX spec + if (it.m_pos == size && + !is_root_separator(it.m_path_ptr->m_pathname, root_dir_pos, it.m_pos - 1)) + { + --it.m_pos; + it.m_element = detail::dot_path(); + return; + } + } + + // get m_element + size_type end_pos = it.m_path_ptr->m_pathname.find_first_of(separators, it.m_pos); + if (end_pos == string_type::npos) + end_pos = size; + const path::value_type* p = it.m_path_ptr->m_pathname.c_str(); + it.m_element.m_pathname.assign(p + it.m_pos, p + end_pos); +} + +BOOST_FILESYSTEM_DECL void path_algorithms::increment_v4(path_detail::path_iterator& it) +{ + const size_type size = it.m_path_ptr->m_pathname.size(); + BOOST_ASSERT_MSG(it.m_pos <= size, "path::iterator increment past end()"); + + if (it.m_element.m_pathname.empty() && (it.m_pos + 1) == size && detail::is_directory_separator(it.m_path_ptr->m_pathname[it.m_pos])) + { + // The iterator was pointing to the last empty element of the path; set to end. + it.m_pos = size; return; - } + } - // skip separators until it.m_pos points to the start of the next element - while (it.m_pos != it.m_path_ptr->m_pathname.size() - && detail::is_directory_separator(it.m_path_ptr->m_pathname[it.m_pos])) - { ++it.m_pos; } + // increment to position past current element; if current element is implicit dot, + // this will cause m_pos to represent the end iterator + it.m_pos += it.m_element.m_pathname.size(); - // detect trailing separator, and treat it as ".", per POSIX spec - if (it.m_pos == it.m_path_ptr->m_pathname.size() - && !is_root_separator(it.m_path_ptr->m_pathname, it.m_pos-1)) - { - --it.m_pos; - it.m_element = detail::dot_path(); + // if the end is reached, we are done + if (it.m_pos >= size) + { + BOOST_ASSERT_MSG(it.m_pos == size, "path::iterator increment after the referenced path was modified"); + it.m_element.clear(); // aids debugging return; - } + } + + // process separator (Windows drive spec is only case not a separator) + if (detail::is_directory_separator(it.m_path_ptr->m_pathname[it.m_pos])) + { + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(it.m_path_ptr->m_pathname.c_str(), size, root_name_size); + + // detect root directory and set iterator value to the separator if it is + if (it.m_pos == root_dir_pos && it.m_element.m_pathname.size() == root_name_size) + { + it.m_element.m_pathname = path::separator; // generic format; see docs + return; + } + + // skip separators until m_pos points to the start of the next element + while (it.m_pos != size && detail::is_directory_separator(it.m_path_ptr->m_pathname[it.m_pos])) + { + ++it.m_pos; + } + + // detect trailing separator + if (it.m_pos == size && + !is_root_separator(it.m_path_ptr->m_pathname, root_dir_pos, it.m_pos - 1)) + { + --it.m_pos; + it.m_element.m_pathname.clear(); + return; + } } // get m_element - size_type end_pos(it.m_path_ptr->m_pathname.find_first_of(separators, it.m_pos)); + size_type end_pos = it.m_path_ptr->m_pathname.find_first_of(separators, it.m_pos); if (end_pos == string_type::npos) - end_pos = it.m_path_ptr->m_pathname.size(); - it.m_element = it.m_path_ptr->m_pathname.substr(it.m_pos, end_pos - it.m_pos); - } + end_pos = size; + const path::value_type* p = it.m_path_ptr->m_pathname.c_str(); + it.m_element.m_pathname.assign(p + it.m_pos, p + end_pos); +} - void path::m_path_iterator_decrement(path::iterator & it) - { - BOOST_ASSERT_MSG(it.m_pos, "path::iterator decrement past begin()"); +BOOST_FILESYSTEM_DECL void path_algorithms::decrement_v3(path_detail::path_iterator& it) +{ + const size_type size = it.m_path_ptr->m_pathname.size(); + BOOST_ASSERT_MSG(it.m_pos > 0, "path::iterator decrement past begin()"); + BOOST_ASSERT_MSG(it.m_pos <= size, "path::iterator decrement after the referenced path was modified"); - size_type end_pos(it.m_pos); + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(it.m_path_ptr->m_pathname.c_str(), size, root_name_size); + + if (root_dir_pos < size && it.m_pos == root_dir_pos) + { + // Was pointing at root directory, decrement to root name + set_to_root_name: + it.m_pos = 0u; + const path::value_type* p = it.m_path_ptr->m_pathname.c_str(); + it.m_element.m_pathname.assign(p, p + root_name_size); + return; + } // if at end and there was a trailing non-root '/', return "." - if (it.m_pos == it.m_path_ptr->m_pathname.size() - && it.m_path_ptr->m_pathname.size() > 1 - && detail::is_directory_separator(it.m_path_ptr->m_pathname[it.m_pos-1]) - && !is_root_separator(it.m_path_ptr->m_pathname, it.m_pos-1) - ) + if (it.m_pos == size && + size > 1 && + detail::is_directory_separator(it.m_path_ptr->m_pathname[it.m_pos - 1]) && + !is_root_separator(it.m_path_ptr->m_pathname, root_dir_pos, it.m_pos - 1)) + { + --it.m_pos; + it.m_element = detail::dot_path(); + return; + } + + // skip separators unless root directory + size_type end_pos = it.m_pos; + while (end_pos > root_name_size) { - --it.m_pos; - it.m_element = detail::dot_path(); - return; + --end_pos; + + if (end_pos == root_dir_pos) + { + // Decremented to the root directory + it.m_pos = end_pos; + it.m_element.m_pathname = path::separator; // generic format; see docs + return; + } + + if (!detail::is_directory_separator(it.m_path_ptr->m_pathname[end_pos])) + { + ++end_pos; + break; + } } - size_type root_dir_pos(root_directory_start(it.m_path_ptr->m_pathname, end_pos)); + if (end_pos <= root_name_size) + goto set_to_root_name; + + size_type filename_size = find_filename_size(it.m_path_ptr->m_pathname, root_name_size, end_pos); + it.m_pos = end_pos - filename_size; + const path::value_type* p = it.m_path_ptr->m_pathname.c_str(); + it.m_element.m_pathname.assign(p + it.m_pos, p + end_pos); +} + +BOOST_FILESYSTEM_DECL void path_algorithms::decrement_v4(path_detail::path_iterator& it) +{ + const size_type size = it.m_path_ptr->m_pathname.size(); + BOOST_ASSERT_MSG(it.m_pos > 0, "path::iterator decrement past begin()"); + BOOST_ASSERT_MSG(it.m_pos <= size, "path::iterator decrement after the referenced path was modified"); + + size_type root_name_size = 0; + size_type root_dir_pos = find_root_directory_start(it.m_path_ptr->m_pathname.c_str(), size, root_name_size); + + if (root_dir_pos < size && it.m_pos == root_dir_pos) + { + // Was pointing at root directory, decrement to root name + set_to_root_name: + it.m_pos = 0u; + const path::value_type* p = it.m_path_ptr->m_pathname.c_str(); + it.m_element.m_pathname.assign(p, p + root_name_size); + return; + } + + // if at end and there was a trailing '/', return "" + if (it.m_pos == size && + size > 1 && + detail::is_directory_separator(it.m_path_ptr->m_pathname[it.m_pos - 1]) && + !is_root_separator(it.m_path_ptr->m_pathname, root_dir_pos, it.m_pos - 1)) + { + --it.m_pos; + it.m_element.m_pathname.clear(); + return; + } // skip separators unless root directory - for ( - ; - end_pos > 0 - && (end_pos-1) != root_dir_pos - && detail::is_directory_separator(it.m_path_ptr->m_pathname[end_pos-1]) - ; - --end_pos) {} - - it.m_pos = filename_pos(it.m_path_ptr->m_pathname, end_pos); - it.m_element = it.m_path_ptr->m_pathname.substr(it.m_pos, end_pos - it.m_pos); - if (it.m_element.m_pathname == preferred_separator_string) // needed for Windows, harmless on POSIX - it.m_element.m_pathname = separator_string; // generic format; see docs - } - -} // namespace filesystem -} // namespace boost - -namespace -{ - - //------------------------------------------------------------------------------------// - // locale helpers // - //------------------------------------------------------------------------------------// - - // Prior versions of these locale and codecvt implementations tried to take advantage - // of static initialization where possible, kept a local copy of the current codecvt - // facet (to avoid codecvt() having to call use_facet()), and was not multi-threading - // safe (again for efficiency). - // - // This was error prone, and required different implementation techniques depending - // on the compiler and also whether static or dynamic linking was used. Furthermore, - // users could not easily provide their multi-threading safe wrappers because the - // path interface requires the implementation itself to call codecvt() to obtain the - // default facet, and the initialization of the static within path_locale() could race. - // - // The code below is portable to all platforms, is much simpler, and hopefully will be - // much more robust. Timing tests (on Windows, using a Visual C++ release build) - // indicated the current code is roughly 9% slower than the previous code, and that - // seems a small price to pay for better code that is easier to use. - - std::locale default_locale() - { -# if defined(BOOST_WINDOWS_API) + size_type end_pos = it.m_pos; + while (end_pos > root_name_size) + { + --end_pos; + + if (end_pos == root_dir_pos) + { + // Decremented to the root directory + it.m_pos = end_pos; + it.m_element.m_pathname = path::separator; // generic format; see docs + return; + } + + if (!detail::is_directory_separator(it.m_path_ptr->m_pathname[end_pos])) + { + ++end_pos; + break; + } + } + + if (end_pos <= root_name_size) + goto set_to_root_name; + + size_type filename_size = find_filename_size(it.m_path_ptr->m_pathname, root_name_size, end_pos); + it.m_pos = end_pos - filename_size; + const path::value_type* p = it.m_path_ptr->m_pathname.c_str(); + it.m_element.m_pathname.assign(p + it.m_pos, p + end_pos); +} + +} // namespace detail + +// path iterators ------------------------------------------------------------------// + +BOOST_FILESYSTEM_DECL path::iterator path::begin() const +{ + iterator itr; + itr.m_path_ptr = this; + + size_type element_size; + first_element(m_pathname, itr.m_pos, element_size); + + if (element_size > 0) + { + itr.m_element = m_pathname.substr(itr.m_pos, element_size); +#ifdef BOOST_WINDOWS_API + if (itr.m_element.m_pathname.size() == 1u && itr.m_element.m_pathname[0] == path::preferred_separator) + itr.m_element.m_pathname[0] = path::separator; +#endif + } + + return itr; +} + +BOOST_FILESYSTEM_DECL path::iterator path::end() const +{ + iterator itr; + itr.m_path_ptr = this; + itr.m_pos = m_pathname.size(); + return itr; +} + +} // namespace filesystem +} // namespace boost + +namespace { + +//------------------------------------------------------------------------------------// +// locale helpers // +//------------------------------------------------------------------------------------// + +// Prior versions of these locale and codecvt implementations tried to take advantage +// of static initialization where possible, kept a local copy of the current codecvt +// facet (to avoid codecvt() having to call use_facet()), and was not multi-threading +// safe (again for efficiency). +// +// This was error prone, and required different implementation techniques depending +// on the compiler and also whether static or dynamic linking was used. Furthermore, +// users could not easily provide their multi-threading safe wrappers because the +// path interface requires the implementation itself to call codecvt() to obtain the +// default facet, and the initialization of the static within path_locale() could race. +// +// The code below is portable to all platforms, is much simpler, and hopefully will be +// much more robust. Timing tests (on Windows, using a Visual C++ release build) +// indicated the current code is roughly 9% slower than the previous code, and that +// seems a small price to pay for better code that is easier to use. + +std::locale default_locale() +{ +#if defined(BOOST_WINDOWS_API) std::locale global_loc = std::locale(); - return std::locale(global_loc, new windows_file_codecvt); -# elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \ - || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__HAIKU__) + return std::locale(global_loc, new boost::filesystem::detail::windows_file_codecvt()); +#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__HAIKU__) // "All BSD system functions expect their string parameters to be in UTF-8 encoding // and nothing else." See // http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPInternational/Articles/FileEncodings.html @@ -890,64 +1350,284 @@ namespace // Many thanks to Peter Dimov for digging out the above references! std::locale global_loc = std::locale(); - return std::locale(global_loc, new boost::filesystem::detail::utf8_codecvt_facet); -# else // Other POSIX + return std::locale(global_loc, new boost::filesystem::detail::utf8_codecvt_facet()); +#else // Other POSIX // ISO C calls std::locale("") "the locale-specific native environment", and this // locale is the default for many POSIX-based operating systems such as Linux. return std::locale(""); -# endif - } - - std::locale& path_locale() - // std::locale("") construction, needed on non-Apple POSIX systems, can throw - // (if environmental variables LC_MESSAGES or LANG are wrong, for example), so - // path_locale() provides lazy initialization via a local static to ensure that any - // exceptions occur after main() starts and so can be caught. Furthermore, - // path_locale() is only called if path::codecvt() or path::imbue() are themselves - // actually called, ensuring that an exception will only be thrown if std::locale("") - // is really needed. - { - // [locale] paragraph 6: Once a facet reference is obtained from a locale object by - // calling use_facet<>, that reference remains usable, and the results from member - // functions of it may be cached and re-used, as long as some locale object refers - // to that facet. - static std::locale loc(default_locale()); -#ifdef BOOST_FILESYSTEM_DEBUG - std::cout << "***** path_locale() called" << std::endl; #endif - return loc; - } -} // unnamed namespace +} + +std::locale* g_path_locale = NULL; + +void schedule_path_locale_cleanup() BOOST_NOEXCEPT; + +// std::locale("") construction, needed on non-Apple POSIX systems, can throw +// (if environmental variables LC_MESSAGES or LANG are wrong, for example), so +// get_path_locale() provides lazy initialization to ensure that any +// exceptions occur after main() starts and so can be caught. Furthermore, +// g_path_locale is only initialized if path::codecvt() or path::imbue() are themselves +// actually called, ensuring that an exception will only be thrown if std::locale("") +// is really needed. +inline std::locale& get_path_locale() +{ +#if !defined(BOOST_FILESYSTEM_SINGLE_THREADED) + atomic_ns::atomic_ref< std::locale* > a(g_path_locale); + std::locale* p = a.load(atomic_ns::memory_order_acquire); + if (BOOST_UNLIKELY(!p)) + { + std::locale* new_p = new std::locale(default_locale()); + if (a.compare_exchange_strong(p, new_p, atomic_ns::memory_order_acq_rel, atomic_ns::memory_order_acquire)) + { + p = new_p; + schedule_path_locale_cleanup(); + } + else + { + delete new_p; + } + } + return *p; +#else // !defined(BOOST_FILESYSTEM_SINGLE_THREADED) + std::locale* p = g_path_locale; + if (BOOST_UNLIKELY(!p)) + { + g_path_locale = p = new std::locale(default_locale()); + schedule_path_locale_cleanup(); + } + return *p; +#endif // !defined(BOOST_FILESYSTEM_SINGLE_THREADED) +} + +inline std::locale* replace_path_locale(std::locale const& loc) +{ + std::locale* new_p = new std::locale(loc); +#if !defined(BOOST_FILESYSTEM_SINGLE_THREADED) + std::locale* p = atomic_ns::atomic_ref< std::locale* >(g_path_locale).exchange(new_p, atomic_ns::memory_order_acq_rel); +#else + std::locale* p = g_path_locale; + g_path_locale = new_p; +#endif + if (!p) + schedule_path_locale_cleanup(); + return p; +} + +#if defined(_MSC_VER) + +const boost::filesystem::path* g_dot_path = NULL; +const boost::filesystem::path* g_dot_dot_path = NULL; + +inline void schedule_path_locale_cleanup() BOOST_NOEXCEPT +{ +} + +inline boost::filesystem::path const& get_dot_path() +{ +#if !defined(BOOST_FILESYSTEM_SINGLE_THREADED) + atomic_ns::atomic_ref< const boost::filesystem::path* > a(g_dot_path); + const boost::filesystem::path* p = a.load(atomic_ns::memory_order_acquire); + if (BOOST_UNLIKELY(!p)) + { + const boost::filesystem::path* new_p = new boost::filesystem::path(dot_path_literal); + if (a.compare_exchange_strong(p, new_p, atomic_ns::memory_order_acq_rel, atomic_ns::memory_order_acquire)) + p = new_p; + else + delete new_p; + } + return *p; +#else // !defined(BOOST_FILESYSTEM_SINGLE_THREADED) + const boost::filesystem::path* p = g_dot_path; + if (BOOST_UNLIKELY(!p)) + g_dot_path = p = new boost::filesystem::path(dot_path_literal); + return *p; +#endif // !defined(BOOST_FILESYSTEM_SINGLE_THREADED) +} + +inline boost::filesystem::path const& get_dot_dot_path() +{ +#if !defined(BOOST_FILESYSTEM_SINGLE_THREADED) + atomic_ns::atomic_ref< const boost::filesystem::path* > a(g_dot_dot_path); + const boost::filesystem::path* p = a.load(atomic_ns::memory_order_acquire); + if (BOOST_UNLIKELY(!p)) + { + const boost::filesystem::path* new_p = new boost::filesystem::path(dot_dot_path_literal); + if (a.compare_exchange_strong(p, new_p, atomic_ns::memory_order_acq_rel, atomic_ns::memory_order_acquire)) + p = new_p; + else + delete new_p; + } + return *p; +#else // !defined(BOOST_FILESYSTEM_SINGLE_THREADED) + const boost::filesystem::path* p = g_dot_dot_path; + if (BOOST_UNLIKELY(!p)) + g_dot_dot_path = p = new boost::filesystem::path(dot_dot_path_literal); + return *p; +#endif // !defined(BOOST_FILESYSTEM_SINGLE_THREADED) +} + +void __cdecl destroy_path_globals() +{ + delete g_dot_dot_path; + g_dot_dot_path = NULL; + delete g_dot_path; + g_dot_path = NULL; + delete g_path_locale; + g_path_locale = NULL; +} + +BOOST_FILESYSTEM_INIT_FUNC init_path_globals() +{ +#if !defined(BOOST_SYSTEM_HAS_CONSTEXPR) + // codecvt_error_category needs to be called early to dynamic-initialize the error category instance + boost::filesystem::codecvt_error_category(); +#endif + std::atexit(&destroy_path_globals); + return BOOST_FILESYSTEM_INITRETSUCCESS_V; +} + +#if _MSC_VER >= 1400 + +#pragma section(".CRT$XCM", long, read) +__declspec(allocate(".CRT$XCM")) BOOST_ATTRIBUTE_UNUSED BOOST_FILESYSTEM_ATTRIBUTE_RETAIN +extern const init_func_ptr_t p_init_path_globals = &init_path_globals; + +#else // _MSC_VER >= 1400 + +#if (_MSC_VER >= 1300) // 1300 == VC++ 7.0 +#pragma data_seg(push, old_seg) +#endif +#pragma data_seg(".CRT$XCM") +BOOST_ATTRIBUTE_UNUSED BOOST_FILESYSTEM_ATTRIBUTE_RETAIN +extern const init_func_ptr_t p_init_path_globals = &init_path_globals; +#pragma data_seg() +#if (_MSC_VER >= 1300) // 1300 == VC++ 7.0 +#pragma data_seg(pop, old_seg) +#endif + +#endif // _MSC_VER >= 1400 + +#if defined(BOOST_FILESYSTEM_NO_ATTRIBUTE_RETAIN) +//! Makes sure the global initializer pointers are referenced and not removed by linker +struct globals_retainer +{ + const init_func_ptr_t* volatile m_p_init_path_globals; + + globals_retainer() { m_p_init_path_globals = &p_init_path_globals; } +}; +BOOST_ATTRIBUTE_UNUSED +static const globals_retainer g_globals_retainer; +#endif // defined(BOOST_FILESYSTEM_NO_ATTRIBUTE_RETAIN) + +#else // defined(_MSC_VER) + +struct path_locale_deleter +{ + ~path_locale_deleter() + { + delete g_path_locale; + g_path_locale = NULL; + } +}; + +#if defined(BOOST_FILESYSTEM_HAS_INIT_PRIORITY) + +BOOST_FILESYSTEM_INIT_PRIORITY(BOOST_FILESYSTEM_PATH_GLOBALS_INIT_PRIORITY) BOOST_ATTRIBUTE_UNUSED +const path_locale_deleter g_path_locale_deleter = {}; +BOOST_FILESYSTEM_INIT_PRIORITY(BOOST_FILESYSTEM_PATH_GLOBALS_INIT_PRIORITY) +const boost::filesystem::path g_dot_path(dot_path_literal); +BOOST_FILESYSTEM_INIT_PRIORITY(BOOST_FILESYSTEM_PATH_GLOBALS_INIT_PRIORITY) +const boost::filesystem::path g_dot_dot_path(dot_dot_path_literal); + +inline void schedule_path_locale_cleanup() BOOST_NOEXCEPT +{ +} + +inline boost::filesystem::path const& get_dot_path() +{ + return g_dot_path; +} + +inline boost::filesystem::path const& get_dot_dot_path() +{ + return g_dot_dot_path; +} + +#else // defined(BOOST_FILESYSTEM_HAS_INIT_PRIORITY) + +inline void schedule_path_locale_cleanup() BOOST_NOEXCEPT +{ + BOOST_ATTRIBUTE_UNUSED static const path_locale_deleter g_path_locale_deleter; +} + +inline boost::filesystem::path const& get_dot_path() +{ + static const boost::filesystem::path g_dot_path(dot_path_literal); + return g_dot_path; +} + +inline boost::filesystem::path const& get_dot_dot_path() +{ + static const boost::filesystem::path g_dot_dot_path(dot_dot_path_literal); + return g_dot_dot_path; +} + +#endif // defined(BOOST_FILESYSTEM_HAS_INIT_PRIORITY) + +#endif // defined(_MSC_VER) + +} // unnamed namespace //--------------------------------------------------------------------------------------// // path::codecvt() and path::imbue() implementation // //--------------------------------------------------------------------------------------// -namespace boost -{ -namespace filesystem -{ - // See comments above +namespace boost { +namespace filesystem { - const path::codecvt_type& path::codecvt() - { +BOOST_FILESYSTEM_DECL path::codecvt_type const& path::codecvt() +{ #ifdef BOOST_FILESYSTEM_DEBUG std::cout << "***** path::codecvt() called" << std::endl; #endif - BOOST_ASSERT_MSG(&path_locale(), "boost::filesystem::path locale initialization error"); + return std::use_facet< std::codecvt< wchar_t, char, std::mbstate_t > >(get_path_locale()); +} - return std::use_facet >(path_locale()); - } - - std::locale path::imbue(const std::locale& loc) - { +BOOST_FILESYSTEM_DECL std::locale path::imbue(std::locale const& loc) +{ #ifdef BOOST_FILESYSTEM_DEBUG std::cout << "***** path::imbue() called" << std::endl; #endif - std::locale temp(path_locale()); - path_locale() = loc; - return temp; - } + std::locale* p = replace_path_locale(loc); + if (BOOST_LIKELY(p != NULL)) + { + // Note: copying/moving std::locale does not throw +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + std::locale temp(std::move(*p)); +#else + std::locale temp(*p); +#endif + delete p; + return temp; + } + + return default_locale(); +} + +namespace detail { + +BOOST_FILESYSTEM_DECL path const& dot_path() +{ + return get_dot_path(); +} + +BOOST_FILESYSTEM_DECL path const& dot_dot_path() +{ + return get_dot_dot_path(); +} + +} // namespace detail +} // namespace filesystem +} // namespace boost -} // namespace filesystem -} // namespace boost +#include diff --git a/src/boost/libs/filesystem/src/path_traits.cpp b/src/boost/libs/filesystem/src/path_traits.cpp index db51d576a..30a85e274 100644 --- a/src/boost/libs/filesystem/src/path_traits.cpp +++ b/src/boost/libs/filesystem/src/path_traits.cpp @@ -9,23 +9,22 @@ //--------------------------------------------------------------------------------------// -// define BOOST_FILESYSTEM_SOURCE so that knows -// the library is being built (possibly exporting rather than importing code) -#define BOOST_FILESYSTEM_SOURCE - -#ifndef BOOST_SYSTEM_NO_DEPRECATED -# define BOOST_SYSTEM_NO_DEPRECATED -#endif +#include "platform_config.hpp" #include -#include +#include +#include #include -#include -#include // for codecvt_base::result -#include // for strlen -#include // for wcslen +#include +#include +#include +#include // for codecvt_base::result +#include // for mbstate_t +#include + +#include // must be the last #include -namespace pt = boost::filesystem::path_traits; +namespace pt = boost::filesystem::detail::path_traits; namespace fs = boost::filesystem; namespace bs = boost::system; @@ -34,13 +33,12 @@ namespace bs = boost::system; //--------------------------------------------------------------------------------------// #ifndef BOOST_FILESYSTEM_CODECVT_BUF_SIZE -# define BOOST_FILESYSTEM_CODECVT_BUF_SIZE 256 +#define BOOST_FILESYSTEM_CODECVT_BUF_SIZE 256 #endif namespace { - const std::size_t default_codecvt_buf_size = BOOST_FILESYSTEM_CODECVT_BUF_SIZE; - +BOOST_CONSTEXPR_OR_CONST std::size_t default_codecvt_buf_size = BOOST_FILESYSTEM_CODECVT_BUF_SIZE; //--------------------------------------------------------------------------------------// // // @@ -53,13 +51,8 @@ namespace { // convert_aux const char* to wstring // //--------------------------------------------------------------------------------------// - void convert_aux( - const char* from, - const char* from_end, - wchar_t* to, wchar_t* to_end, - std::wstring & target, - const pt::codecvt_type & cvt) - { +void convert_aux(const char* from, const char* from_end, wchar_t* to, wchar_t* to_end, std::wstring& target, pt::codecvt_type const& cvt) +{ //std::cout << std::hex // << " from=" << std::size_t(from) // << " from_end=" << std::size_t(from_end) @@ -67,33 +60,26 @@ namespace { // << " to_end=" << std::size_t(to_end) // << std::endl; - std::mbstate_t state = std::mbstate_t(); // perhaps unneeded, but cuts bug reports + std::mbstate_t state = std::mbstate_t(); // perhaps unneeded, but cuts bug reports const char* from_next; wchar_t* to_next; std::codecvt_base::result res; - if ((res=cvt.in(state, from, from_end, from_next, - to, to_end, to_next)) != std::codecvt_base::ok) + if ((res = cvt.in(state, from, from_end, from_next, to, to_end, to_next)) != std::codecvt_base::ok) { - //std::cout << " result is " << static_cast(res) << std::endl; - BOOST_FILESYSTEM_THROW(bs::system_error(res, fs::codecvt_error_category(), - "boost::filesystem::path codecvt to wstring")); + //std::cout << " result is " << static_cast(res) << std::endl; + BOOST_FILESYSTEM_THROW(bs::system_error(res, fs::codecvt_error_category(), "boost::filesystem::path codecvt to wstring")); } - target.append(to, to_next); - } + target.append(to, to_next); +} //--------------------------------------------------------------------------------------// // convert_aux const wchar_t* to string // //--------------------------------------------------------------------------------------// - void convert_aux( - const wchar_t* from, - const wchar_t* from_end, - char* to, char* to_end, - std::string & target, - const pt::codecvt_type & cvt) - { +void convert_aux(const wchar_t* from, const wchar_t* from_end, char* to, char* to_end, std::string& target, pt::codecvt_type const& cvt) +{ //std::cout << std::hex // << " from=" << std::size_t(from) // << " from_end=" << std::size_t(from_end) @@ -101,100 +87,101 @@ namespace { // << " to_end=" << std::size_t(to_end) // << std::endl; - std::mbstate_t state = std::mbstate_t(); // perhaps unneeded, but cuts bug reports + std::mbstate_t state = std::mbstate_t(); // perhaps unneeded, but cuts bug reports const wchar_t* from_next; char* to_next; std::codecvt_base::result res; - if ((res=cvt.out(state, from, from_end, from_next, - to, to_end, to_next)) != std::codecvt_base::ok) + if ((res = cvt.out(state, from, from_end, from_next, to, to_end, to_next)) != std::codecvt_base::ok) { - //std::cout << " result is " << static_cast(res) << std::endl; - BOOST_FILESYSTEM_THROW(bs::system_error(res, fs::codecvt_error_category(), - "boost::filesystem::path codecvt to string")); + //std::cout << " result is " << static_cast(res) << std::endl; + BOOST_FILESYSTEM_THROW(bs::system_error(res, fs::codecvt_error_category(), "boost::filesystem::path codecvt to string")); } - target.append(to, to_next); - } - -} // unnamed namespace + target.append(to, to_next); +} + +} // unnamed namespace //--------------------------------------------------------------------------------------// // path_traits // //--------------------------------------------------------------------------------------// -namespace boost { namespace filesystem { namespace path_traits { +namespace boost { +namespace filesystem { +namespace detail { +namespace path_traits { //--------------------------------------------------------------------------------------// // convert const char* to wstring // //--------------------------------------------------------------------------------------// - BOOST_FILESYSTEM_DECL - void convert(const char* from, - const char* from_end, // 0 for null terminated MBCS - std::wstring & to, - const codecvt_type & cvt) - { - BOOST_ASSERT(from); +BOOST_FILESYSTEM_DECL +void convert(const char* from, const char* from_end, std::wstring& to, const codecvt_type* cvt) +{ + if (from == from_end) + return; - if (!from_end) // null terminated - { - from_end = from + std::strlen(from); - } + BOOST_ASSERT(from != NULL); + BOOST_ASSERT(from_end != NULL); - if (from == from_end) return; + if (!cvt) + cvt = &fs::path::codecvt(); - std::size_t buf_size = (from_end - from) * 3; // perhaps too large, but that's OK + std::size_t buf_size = (from_end - from) * 3; // perhaps too large, but that's OK // dynamically allocate a buffer only if source is unusually large if (buf_size > default_codecvt_buf_size) { - boost::scoped_array< wchar_t > buf(new wchar_t [buf_size]); - convert_aux(from, from_end, buf.get(), buf.get()+buf_size, to, cvt); + boost::scoped_array< wchar_t > buf(new wchar_t[buf_size]); + convert_aux(from, from_end, buf.get(), buf.get() + buf_size, to, *cvt); } else { - wchar_t buf[default_codecvt_buf_size]; - convert_aux(from, from_end, buf, buf+default_codecvt_buf_size, to, cvt); + wchar_t buf[default_codecvt_buf_size]; + convert_aux(from, from_end, buf, buf + default_codecvt_buf_size, to, *cvt); } - } +} //--------------------------------------------------------------------------------------// // convert const wchar_t* to string // //--------------------------------------------------------------------------------------// - BOOST_FILESYSTEM_DECL - void convert(const wchar_t* from, - const wchar_t* from_end, // 0 for null terminated MBCS - std::string & to, - const codecvt_type & cvt) - { - BOOST_ASSERT(from); +BOOST_FILESYSTEM_DECL +void convert(const wchar_t* from, const wchar_t* from_end, std::string& to, const codecvt_type* cvt) +{ + if (from == from_end) + return; - if (!from_end) // null terminated - { - from_end = from + std::wcslen(from); - } + BOOST_ASSERT(from != NULL); + BOOST_ASSERT(from_end != NULL); - if (from == from_end) return; + if (!cvt) + cvt = &fs::path::codecvt(); // The codecvt length functions may not be implemented, and I don't really // understand them either. Thus this code is just a guess; if it turns // out the buffer is too small then an error will be reported and the code // will have to be fixed. - std::size_t buf_size = (from_end - from) * 4; // perhaps too large, but that's OK - buf_size += 4; // encodings like shift-JIS need some prefix space + std::size_t buf_size = (from_end - from) * 4; // perhaps too large, but that's OK + buf_size += 4; // encodings like shift-JIS need some prefix space // dynamically allocate a buffer only if source is unusually large if (buf_size > default_codecvt_buf_size) { - boost::scoped_array< char > buf(new char [buf_size]); - convert_aux(from, from_end, buf.get(), buf.get()+buf_size, to, cvt); + boost::scoped_array< char > buf(new char[buf_size]); + convert_aux(from, from_end, buf.get(), buf.get() + buf_size, to, *cvt); } else { - char buf[default_codecvt_buf_size]; - convert_aux(from, from_end, buf, buf+default_codecvt_buf_size, to, cvt); + char buf[default_codecvt_buf_size]; + convert_aux(from, from_end, buf, buf + default_codecvt_buf_size, to, *cvt); } - } -}}} // namespace boost::filesystem::path_traits +} + +} // namespace path_traits +} // namespace detail +} // namespace filesystem +} // namespace boost + +#include diff --git a/src/boost/libs/filesystem/src/platform_config.hpp b/src/boost/libs/filesystem/src/platform_config.hpp new file mode 100644 index 000000000..acc10a8ac --- /dev/null +++ b/src/boost/libs/filesystem/src/platform_config.hpp @@ -0,0 +1,83 @@ +// platform_config.hpp --------------------------------------------------------------------// + +// Copyright 2020 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +#ifndef BOOST_FILESYSTEM_PLATFORM_CONFIG_HPP_ +#define BOOST_FILESYSTEM_PLATFORM_CONFIG_HPP_ + +// define 64-bit offset macros BEFORE including boost/config.hpp (see ticket #5355) +#if defined(__ANDROID__) && defined(__ANDROID_API__) && __ANDROID_API__ < 24 +// Android fully supports 64-bit file offsets only for API 24 and above. +// +// Trying to define _FILE_OFFSET_BITS=64 for APIs below 24 +// leads to compilation failure for one or another reason, +// depending on target Android API level, Android NDK version, +// used STL, order of include paths and more. +// For more information, please see: +// - https://github.com/boostorg/filesystem/issues/65 +// - https://github.com/boostorg/filesystem/pull/69 +// +// Android NDK developers consider it the expected behavior. +// See their official position here: +// - https://github.com/android-ndk/ndk/issues/501#issuecomment-326447479 +// - https://android.googlesource.com/platform/bionic/+/a34817457feee026e8702a1d2dffe9e92b51d7d1/docs/32-bit-abi.md#32_bit-abi-bugs +// +// Thus we do not define _FILE_OFFSET_BITS in such case. +#else +// Defining _FILE_OFFSET_BITS=64 should kick in 64-bit off_t's +// (and thus st_size) on 32-bit systems that provide the Large File +// Support (LFS) interface, such as Linux, Solaris, and IRIX. +// +// At the time of this comment writing (March 2018), on most systems +// _FILE_OFFSET_BITS=64 definition is harmless: +// either the definition is supported and enables 64-bit off_t, +// or the definition is not supported and is ignored, in which case +// off_t does not change its default size for the target system +// (which may be 32-bit or 64-bit already). +// Thus it makes sense to have _FILE_OFFSET_BITS=64 defined by default, +// instead of listing every system that supports the definition. +// Those few systems, on which _FILE_OFFSET_BITS=64 is harmful, +// for example this definition causes compilation failure on those systems, +// should be exempt from defining _FILE_OFFSET_BITS by adding +// an appropriate #elif block above with the appropriate comment. +// +// _FILE_OFFSET_BITS must be defined before any headers are included +// to ensure that the definition is available to all included headers. +// That is required at least on Solaris, and possibly on other +// systems as well. +#define _FILE_OFFSET_BITS 64 +#endif + +#if defined(__APPLE__) || defined(__MACH__) +// Enable newer ABI on Mac OS 10.5 and later, which is needed for struct stat to have birthtime members +#define _DARWIN_USE_64_BIT_INODE 1 +#endif + +#ifndef _POSIX_PTHREAD_SEMANTICS +#define _POSIX_PTHREAD_SEMANTICS // Sun readdir_r() needs this +#endif + +#if !defined(_INCLUDE_STDCSOURCE_199901) && (defined(hpux) || defined(_hpux) || defined(__hpux)) +// For HP-UX, request that WCHAR_MAX and WCHAR_MIN be defined as macros, +// not casts. See ticket 5048 +#define _INCLUDE_STDCSOURCE_199901 +#endif + +#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(__TOS_WIN__) || defined(__WINDOWS__) || \ + defined(__CYGWIN__) +// Define target Windows version macros before including any other headers +#include +#endif + +#ifndef BOOST_SYSTEM_NO_DEPRECATED +#define BOOST_SYSTEM_NO_DEPRECATED +#endif + +#include + +#endif // BOOST_FILESYSTEM_PLATFORM_CONFIG_HPP_ diff --git a/src/boost/libs/filesystem/src/portability.cpp b/src/boost/libs/filesystem/src/portability.cpp index 5389a4e4b..3b28f072d 100644 --- a/src/boost/libs/filesystem/src/portability.cpp +++ b/src/boost/libs/filesystem/src/portability.cpp @@ -7,113 +7,77 @@ // See library home page at http://www.boost.org/libs/filesystem -//--------------------------------------------------------------------------------------// - -// define BOOST_FILESYSTEM_SOURCE so that knows -// the library is being built (possibly exporting rather than importing code) -#define BOOST_FILESYSTEM_SOURCE +//--------------------------------------------------------------------------------------// -#ifndef BOOST_SYSTEM_NO_DEPRECATED -# define BOOST_SYSTEM_NO_DEPRECATED -#endif +#include "platform_config.hpp" #include #include -namespace fs = boost::filesystem; - #include // SGI MIPSpro compilers need this +#include -# ifdef BOOST_NO_STDC_NAMESPACE - namespace std { using ::strerror; } -# endif +#include // must be the last #include -//--------------------------------------------------------------------------------------// +namespace boost { +namespace filesystem { -namespace -{ - const char invalid_chars[] = +namespace { + +BOOST_CONSTEXPR_OR_CONST char windows_invalid_chars[] = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F" "<>:\"/\\|"; - // note that the terminating '\0' is part of the string - thus the size below - // is sizeof(invalid_chars) rather than sizeof(invalid_chars)-1. I - const std::string windows_invalid_chars(invalid_chars, sizeof(invalid_chars)); - const std::string valid_posix( - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-"); +BOOST_CONSTEXPR_OR_CONST char posix_valid_chars[] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-"; } // unnamed namespace -namespace boost +// name_check functions ----------------------------------------------// + +#ifdef BOOST_WINDOWS +BOOST_FILESYSTEM_DECL bool native(std::string const& name) +{ + return windows_name(name); +} +#else +BOOST_FILESYSTEM_DECL bool native(std::string const& name) +{ + return !name.empty() && name[0] != ' ' && name.find('/') == std::string::npos; +} +#endif + +BOOST_FILESYSTEM_DECL bool portable_posix_name(std::string const& name) +{ + return !name.empty() && name.find_first_not_of(posix_valid_chars, 0, sizeof(posix_valid_chars) - 1) == std::string::npos; +} + +BOOST_FILESYSTEM_DECL bool windows_name(std::string const& name) { - namespace filesystem - { - - // name_check functions ----------------------------------------------// - -# ifdef BOOST_WINDOWS - BOOST_FILESYSTEM_DECL bool native(const std::string & name) - { - return windows_name(name); - } -# else - BOOST_FILESYSTEM_DECL bool native(const std::string & name) - { - return name.size() != 0 - && name[0] != ' ' - && name.find('/') == std::string::npos; - } -# endif - - BOOST_FILESYSTEM_DECL bool portable_posix_name(const std::string & name) - { - return name.size() != 0 - && name.find_first_not_of(valid_posix) == std::string::npos; - } - - BOOST_FILESYSTEM_DECL bool windows_name(const std::string & name) - { - return name.size() != 0 - && name[0] != ' ' - && name.find_first_of(windows_invalid_chars) == std::string::npos - && *(name.end()-1) != ' ' - && (*(name.end()-1) != '.' - || name.length() == 1 || name == ".."); - } - - BOOST_FILESYSTEM_DECL bool portable_name(const std::string & name) - { - return - name.size() != 0 - && (name == "." - || name == ".." - || (windows_name(name) - && portable_posix_name(name) - && name[0] != '.' && name[0] != '-')); - } - - BOOST_FILESYSTEM_DECL bool portable_directory_name(const std::string & name) - { - return - name == "." - || name == ".." - || (portable_name(name) - && name.find('.') == std::string::npos); - } - - BOOST_FILESYSTEM_DECL bool portable_file_name(const std::string & name) - { - std::string::size_type pos; - return - portable_name(name) - && name != "." - && name != ".." - && ((pos = name.find('.')) == std::string::npos - || (name.find('.', pos+1) == std::string::npos - && (pos + 5) > name.length())) - ; - } - - } // namespace filesystem + // note that the terminating '\0' is part of the string - thus the size below + // is sizeof(windows_invalid_chars) rather than sizeof(windows_invalid_chars)-1. + return !name.empty() && name[0] != ' ' && name.find_first_of(windows_invalid_chars, 0, sizeof(windows_invalid_chars)) == std::string::npos + && *(name.end() - 1) != ' ' && (*(name.end() - 1) != '.' || name.size() == 1 || name == ".."); +} + +BOOST_FILESYSTEM_DECL bool portable_name(std::string const& name) +{ + return !name.empty() && (name == "." || name == ".." || (windows_name(name) && portable_posix_name(name) && name[0] != '.' && name[0] != '-')); +} + +BOOST_FILESYSTEM_DECL bool portable_directory_name(std::string const& name) +{ + return name == "." || name == ".." || (portable_name(name) && name.find('.') == std::string::npos); +} + +BOOST_FILESYSTEM_DECL bool portable_file_name(std::string const& name) +{ + std::string::size_type pos; + return portable_name(name) && name != "." && name != ".." && ((pos = name.find('.')) == std::string::npos || (name.find('.', pos + 1) == std::string::npos && (pos + 5) > name.size())); +} + +} // namespace filesystem } // namespace boost + +#include diff --git a/src/boost/libs/filesystem/src/posix_tools.hpp b/src/boost/libs/filesystem/src/posix_tools.hpp new file mode 100644 index 000000000..48e925c7a --- /dev/null +++ b/src/boost/libs/filesystem/src/posix_tools.hpp @@ -0,0 +1,81 @@ +// posix_tools.hpp -------------------------------------------------------------------// + +// Copyright 2021 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +//--------------------------------------------------------------------------------------// + +#ifndef BOOST_FILESYSTEM_SRC_POSIX_TOOLS_HPP_ +#define BOOST_FILESYSTEM_SRC_POSIX_TOOLS_HPP_ + +#include "platform_config.hpp" +#include +#include +#ifdef BOOST_HAS_UNISTD_H +#include +#endif + +#include // must be the last #include + +namespace boost { +namespace filesystem { +namespace detail { + +//! Platform-specific parameters for directory iterator construction +struct directory_iterator_params +{ +#if defined(BOOST_FILESYSTEM_HAS_POSIX_AT_APIS) + //! File descriptor of the base directory relative to which to interpret relative paths + int basedir_fd; +#endif +#if defined(BOOST_FILESYSTEM_HAS_FDOPENDIR_NOFOLLOW) + //! File descriptor of the directory over which the iterator iterates + int iterator_fd; +#endif +}; + +/*! + * Closes a file descriptor and returns the result, similar to close(2). Unlike close(2), guarantees that the file descriptor is closed even if EINTR error happens. + * + * Some systems don't close the file descriptor in case if the thread is interrupted by a signal and close(2) returns EINTR. + * Other (most) systems do close the file descriptor even when when close(2) returns EINTR, and attempting to close it + * again could close a different file descriptor that was opened by a different thread. This function hides this difference in behavior. + * + * Future POSIX standards will likely fix this by introducing posix_close (see https://www.austingroupbugs.net/view.php?id=529) + * and prohibiting returning EINTR from close(2), but we still have to support older systems where this new behavior is not available and close(2) + * behaves differently between systems. + */ +inline int close_fd(int fd) +{ +#if defined(hpux) || defined(_hpux) || defined(__hpux) + int res; + while (true) + { + res = ::close(fd); + if (BOOST_UNLIKELY(res < 0)) + { + int err = errno; + if (err == EINTR) + continue; + } + + break; + } + + return res; +#else + return ::close(fd); +#endif +} + +} // namespace detail +} // namespace filesystem +} // namespace boost + +#include + +#endif // BOOST_FILESYSTEM_SRC_POSIX_TOOLS_HPP_ diff --git a/src/boost/libs/filesystem/src/private_config.hpp b/src/boost/libs/filesystem/src/private_config.hpp new file mode 100644 index 000000000..63e10f8a4 --- /dev/null +++ b/src/boost/libs/filesystem/src/private_config.hpp @@ -0,0 +1,74 @@ +// private_config.hpp ----------------------------------------------------------------// + +// Copyright 2021 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +//--------------------------------------------------------------------------------------// + +#ifndef BOOST_FILESYSTEM_SRC_PRIVATE_CONFIG_HPP_ +#define BOOST_FILESYSTEM_SRC_PRIVATE_CONFIG_HPP_ + +#include + +#if defined(BOOST_FILESYSTEM_HAS_INIT_PRIORITY) +#define BOOST_FILESYSTEM_INIT_PRIORITY(n) __attribute__ ((init_priority(n))) +#else +#define BOOST_FILESYSTEM_INIT_PRIORITY(n) +#endif + +// According to https://gcc.gnu.org/bugzilla//show_bug.cgi?id=65115, +// the default C++ object initializers priority is 65535. We would like to +// initialize function pointers earlier than that (with lower priority values), +// before the other global objects initializers are run. Other than this, +// these priority values are arbitrary. +#define BOOST_FILESYSTEM_FUNC_PTR_INIT_PRIORITY 32767 + +// Path globals initialization priority +#define BOOST_FILESYSTEM_PATH_GLOBALS_INIT_PRIORITY 32768 + +#if defined(__has_feature) && defined(__has_attribute) +#if __has_feature(memory_sanitizer) && __has_attribute(no_sanitize) +#define BOOST_FILESYSTEM_NO_SANITIZE_MEMORY __attribute__ ((no_sanitize("memory"))) +#endif +#endif // defined(__has_feature) && defined(__has_attribute) + +#ifndef BOOST_FILESYSTEM_NO_SANITIZE_MEMORY +#define BOOST_FILESYSTEM_NO_SANITIZE_MEMORY +#endif + +#if defined(_MSC_VER) +#if _MSC_VER < 1300 || _MSC_VER > 1900 // 1300 == VC++ 7.0, 1900 == VC++ 14.0 +typedef void (__cdecl* init_func_ptr_t)(); +#define BOOST_FILESYSTEM_INITRETSUCCESS_V +#define BOOST_FILESYSTEM_INIT_FUNC void __cdecl +#else +typedef int (__cdecl* init_func_ptr_t)(); +#define BOOST_FILESYSTEM_INITRETSUCCESS_V 0 +#define BOOST_FILESYSTEM_INIT_FUNC int __cdecl +#endif +#else // defined(_MSC_VER) +typedef void (*init_func_ptr_t)(); +#define BOOST_FILESYSTEM_INITRETSUCCESS_V +#define BOOST_FILESYSTEM_INIT_FUNC void +#endif // defined(_MSC_VER) + +#if defined(__has_attribute) +#if __has_attribute(__used__) +#define BOOST_FILESYSTEM_ATTRIBUTE_RETAIN __attribute__ ((__used__)) +#endif +#endif + +#if !defined(BOOST_FILESYSTEM_ATTRIBUTE_RETAIN) && defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 402 +#define BOOST_FILESYSTEM_ATTRIBUTE_RETAIN __attribute__ ((__used__)) +#endif + +#if !defined(BOOST_FILESYSTEM_ATTRIBUTE_RETAIN) +#define BOOST_FILESYSTEM_NO_ATTRIBUTE_RETAIN +#define BOOST_FILESYSTEM_ATTRIBUTE_RETAIN +#endif + +#endif // BOOST_FILESYSTEM_SRC_PRIVATE_CONFIG_HPP_ diff --git a/src/boost/libs/filesystem/src/unique_path.cpp b/src/boost/libs/filesystem/src/unique_path.cpp index 5147b7d7d..1b719ab1f 100644 --- a/src/boost/libs/filesystem/src/unique_path.cpp +++ b/src/boost/libs/filesystem/src/unique_path.cpp @@ -1,177 +1,331 @@ // filesystem unique_path.cpp --------------------------------------------------------// // Copyright Beman Dawes 2010 +// Copyright Andrey Semashev 2020 // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt // Library home page: http://www.boost.org/libs/filesystem -//--------------------------------------------------------------------------------------// +//--------------------------------------------------------------------------------------// -// define BOOST_FILESYSTEM_SOURCE so that knows -// the library is being built (possibly exporting rather than importing code) -#define BOOST_FILESYSTEM_SOURCE +#include "platform_config.hpp" -#ifndef BOOST_SYSTEM_NO_DEPRECATED -# define BOOST_SYSTEM_NO_DEPRECATED +#include +#include +#include + +#ifdef BOOST_POSIX_API + +#include +#include +#include +#ifdef BOOST_HAS_UNISTD_H +#include +#endif + +#if !defined(BOOST_FILESYSTEM_DISABLE_ARC4RANDOM) +#if BOOST_OS_BSD_OPEN >= BOOST_VERSION_NUMBER(2, 1, 0) || \ + BOOST_OS_BSD_FREE >= BOOST_VERSION_NUMBER(8, 0, 0) || \ + BOOST_LIB_C_CLOUDABI +#include +#define BOOST_FILESYSTEM_HAS_ARC4RANDOM +#endif +#endif // !defined(BOOST_FILESYSTEM_DISABLE_ARC4RANDOM) + +#if !defined(BOOST_FILESYSTEM_DISABLE_GETRANDOM) +#if (defined(__linux__) || defined(__linux) || defined(linux)) && \ + (!defined(__ANDROID__) || __ANDROID_API__ >= 28) +#include +#if defined(SYS_getrandom) +#define BOOST_FILESYSTEM_HAS_GETRANDOM_SYSCALL +#endif // defined(SYS_getrandom) +#if defined(__has_include) +#if __has_include() +#define BOOST_FILESYSTEM_HAS_GETRANDOM +#endif +#elif defined(__GLIBC__) +#if __GLIBC_PREREQ(2, 25) +#define BOOST_FILESYSTEM_HAS_GETRANDOM +#endif +#endif // BOOST_FILESYSTEM_HAS_GETRANDOM definition +#if defined(BOOST_FILESYSTEM_HAS_GETRANDOM) +#include +#endif +#endif // (defined(__linux__) || defined(__linux) || defined(linux)) && (!defined(__ANDROID__) || __ANDROID_API__ >= 28) +#endif // !defined(BOOST_FILESYSTEM_DISABLE_GETRANDOM) + +#include "posix_tools.hpp" + +#else // BOOST_WINDOWS_API + +// We use auto-linking below to help users of static builds of Boost.Filesystem to link to whatever Windows SDK library we selected. +// The dependency information is currently not exposed in CMake config files generated by Boost.Build (https://github.com/boostorg/boost_install/issues/18), +// which makes it non-trivial for users to discover the libraries they need. This feature is deprecated and may be removed in the future, +// when the situation with CMake config files improves. +// Note that the library build system is the principal source of linking the library, which must work regardless of auto-linking. +#include +#include + +#if defined(BOOST_FILESYSTEM_HAS_BCRYPT) // defined on the command line by the project +#include +#include +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) && defined(_MSC_VER) +#pragma comment(lib, "bcrypt.lib") +#endif // !defined(BOOST_FILESYSTEM_NO_DEPRECATED) && defined(_MSC_VER) +#else // defined(BOOST_FILESYSTEM_HAS_BCRYPT) +#include +#include +#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) && defined(_MSC_VER) +#if !defined(_WIN32_WCE) +#pragma comment(lib, "advapi32.lib") +#else +#pragma comment(lib, "coredll.lib") #endif +#endif // !defined(BOOST_FILESYSTEM_NO_DEPRECATED) && defined(_MSC_VER) +#endif // defined(BOOST_FILESYSTEM_HAS_BCRYPT) + +#endif // BOOST_POSIX_API +#include +#include #include -#include - -# ifdef BOOST_POSIX_API -# include -# ifdef BOOST_HAS_UNISTD_H -# include -# endif -# else // BOOST_WINDOWS_API -# include -# include -# ifdef _MSC_VER -# pragma comment(lib, "Advapi32.lib") -# endif -# endif +#include "private_config.hpp" +#include "atomic_tools.hpp" +#include "error_handling.hpp" + +#include // must be the last #include + +#if defined(BOOST_POSIX_API) +// At least Mac OS X 10.6 and older doesn't support O_CLOEXEC +#ifndef O_CLOEXEC +#define O_CLOEXEC 0 +#endif +#endif // defined(BOOST_POSIX_API) + +namespace boost { +namespace filesystem { +namespace detail { namespace { -void fail(int err, boost::system::error_code* ec) +#if defined(BOOST_POSIX_API) && !defined(BOOST_FILESYSTEM_HAS_ARC4RANDOM) + +//! Fills buffer with cryptographically random data obtained from /dev/(u)random +int fill_random_dev_random(void* buf, std::size_t len) { - if (ec == 0) - BOOST_FILESYSTEM_THROW( boost::system::system_error(err, - boost::system::system_category(), - "boost::filesystem::unique_path")); + int file = ::open("/dev/urandom", O_RDONLY | O_CLOEXEC); + if (file == -1) + { + file = ::open("/dev/random", O_RDONLY | O_CLOEXEC); + if (file == -1) + return errno; + } + + std::size_t bytes_read = 0u; + while (bytes_read < len) + { + ssize_t n = ::read(file, buf, len - bytes_read); + if (BOOST_UNLIKELY(n == -1)) + { + int err = errno; + if (err == EINTR) + continue; + close_fd(file); + return err; + } + bytes_read += n; + buf = static_cast< char* >(buf) + n; + } - ec->assign(err, boost::system::system_category()); - return; + close_fd(file); + return 0; } -#ifdef BOOST_WINDOWS_API +#if defined(BOOST_FILESYSTEM_HAS_GETRANDOM) || defined(BOOST_FILESYSTEM_HAS_GETRANDOM_SYSCALL) + +typedef int fill_random_t(void* buf, std::size_t len); -int acquire_crypt_handle(HCRYPTPROV& handle) +//! Pointer to the implementation of fill_random. +fill_random_t* fill_random = &fill_random_dev_random; + +//! Fills buffer with cryptographically random data obtained from getrandom() +int fill_random_getrandom(void* buf, std::size_t len) { - if (::CryptAcquireContextW(&handle, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) + std::size_t bytes_read = 0u; + while (bytes_read < len) + { +#if defined(BOOST_FILESYSTEM_HAS_GETRANDOM) + ssize_t n = ::getrandom(buf, len - bytes_read, 0u); +#else + ssize_t n = ::syscall(SYS_getrandom, buf, len - bytes_read, 0u); +#endif + if (BOOST_UNLIKELY(n < 0)) + { + const int err = errno; + if (err == EINTR) + continue; + + if (err == ENOSYS && bytes_read == 0u) + { + filesystem::detail::atomic_store_relaxed(fill_random, &fill_random_dev_random); + return fill_random_dev_random(buf, len); + } + + return err; + } + + bytes_read += n; + buf = static_cast< char* >(buf) + n; + } + return 0; +} - int errval = ::GetLastError(); - if (errval != NTE_BAD_KEYSET) - return errval; +#endif // defined(BOOST_FILESYSTEM_HAS_GETRANDOM) || defined(BOOST_FILESYSTEM_HAS_GETRANDOM_SYSCALL) - if (::CryptAcquireContextW(&handle, 0, 0, PROV_RSA_FULL, CRYPT_NEWKEYSET | CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) - return 0; +#endif // defined(BOOST_POSIX_API) && !defined(BOOST_FILESYSTEM_HAS_ARC4RANDOM) - errval = ::GetLastError(); - // Another thread could have attempted to create the keyset at the same time. - if (errval != NTE_EXISTS) - return errval; +void system_crypt_random(void* buf, std::size_t len, boost::system::error_code* ec) +{ +#if defined(BOOST_POSIX_API) - if (::CryptAcquireContextW(&handle, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) - return 0; +#if defined(BOOST_FILESYSTEM_HAS_GETRANDOM) || defined(BOOST_FILESYSTEM_HAS_GETRANDOM_SYSCALL) - return ::GetLastError(); -} + int err = filesystem::detail::atomic_load_relaxed(fill_random)(buf, len); + if (BOOST_UNLIKELY(err != 0)) + emit_error(err, ec, "boost::filesystem::unique_path"); + +#elif defined(BOOST_FILESYSTEM_HAS_ARC4RANDOM) + + arc4random_buf(buf, len); + +#else + + int err = fill_random_dev_random(buf, len); + if (BOOST_UNLIKELY(err != 0)) + emit_error(err, ec, "boost::filesystem::unique_path"); #endif -void system_crypt_random(void* buf, std::size_t len, boost::system::error_code* ec) -{ -# ifdef BOOST_POSIX_API +#else // defined(BOOST_POSIX_API) - int file = open("/dev/urandom", O_RDONLY); - if (file == -1) - { - file = open("/dev/random", O_RDONLY); - if (file == -1) +#if defined(BOOST_FILESYSTEM_HAS_BCRYPT) + + boost::winapi::BCRYPT_ALG_HANDLE_ handle; + boost::winapi::NTSTATUS_ status = boost::winapi::BCryptOpenAlgorithmProvider(&handle, boost::winapi::BCRYPT_RNG_ALGORITHM_, NULL, 0); + if (BOOST_UNLIKELY(status != 0)) { - fail(errno, ec); - return; + fail: + emit_error(translate_ntstatus(status), ec, "boost::filesystem::unique_path"); + return; } - } - size_t bytes_read = 0; - while (bytes_read < len) - { - ssize_t n = read(file, buf, len - bytes_read); - if (n == -1) + status = boost::winapi::BCryptGenRandom(handle, static_cast< boost::winapi::PUCHAR_ >(buf), static_cast< boost::winapi::ULONG_ >(len), 0); + + boost::winapi::BCryptCloseAlgorithmProvider(handle, 0); + + if (BOOST_UNLIKELY(status != 0)) + goto fail; + +#else // defined(BOOST_FILESYSTEM_HAS_BCRYPT) + + boost::winapi::HCRYPTPROV_ handle; + boost::winapi::DWORD_ err = 0u; + if (BOOST_UNLIKELY(!boost::winapi::CryptAcquireContextW(&handle, NULL, NULL, boost::winapi::PROV_RSA_FULL_, boost::winapi::CRYPT_VERIFYCONTEXT_ | boost::winapi::CRYPT_SILENT_))) { - close(file); - fail(errno, ec); - return; + err = boost::winapi::GetLastError(); + + fail: + emit_error(err, ec, "boost::filesystem::unique_path"); + return; } - bytes_read += n; - buf = static_cast(buf) + n; - } - close(file); + boost::winapi::BOOL_ gen_ok = boost::winapi::CryptGenRandom(handle, static_cast< boost::winapi::DWORD_ >(len), static_cast< boost::winapi::BYTE_* >(buf)); -# else // BOOST_WINDOWS_API + if (BOOST_UNLIKELY(!gen_ok)) + err = boost::winapi::GetLastError(); - HCRYPTPROV handle; - int errval = acquire_crypt_handle(handle); + boost::winapi::CryptReleaseContext(handle, 0); - if (!errval) - { - BOOL gen_ok = ::CryptGenRandom(handle, static_cast(len), static_cast(buf)); - if (!gen_ok) - errval = ::GetLastError(); - ::CryptReleaseContext(handle, 0); - } + if (BOOST_UNLIKELY(!gen_ok)) + goto fail; - if (!errval) return; +#endif // defined(BOOST_FILESYSTEM_HAS_BCRYPT) - fail(errval, ec); -# endif +#endif // defined(BOOST_POSIX_API) } -} // unnamed namespace +#ifdef BOOST_WINDOWS_API +BOOST_CONSTEXPR_OR_CONST wchar_t hex[] = L"0123456789abcdef"; +BOOST_CONSTEXPR_OR_CONST wchar_t percent = L'%'; +#else +BOOST_CONSTEXPR_OR_CONST char hex[] = "0123456789abcdef"; +BOOST_CONSTEXPR_OR_CONST char percent = '%'; +#endif + +} // unnamed namespace -namespace boost { namespace filesystem { namespace detail { +#if defined(linux) || defined(__linux) || defined(__linux__) -BOOST_FILESYSTEM_DECL -path unique_path(const path& model, system::error_code* ec) +//! Initializes fill_random implementation pointer +void init_fill_random_impl(unsigned int major_ver, unsigned int minor_ver, unsigned int patch_ver) { - // This function used wstring for fear of misidentifying - // a part of a multibyte character as a percent sign. - // However, double byte encodings only have 80-FF as lead - // bytes and 40-7F as trailing bytes, whereas % is 25. - // So, use string on POSIX and avoid conversions. +#if defined(BOOST_FILESYSTEM_HAS_INIT_PRIORITY) && \ + (defined(BOOST_FILESYSTEM_HAS_GETRANDOM) || defined(BOOST_FILESYSTEM_HAS_GETRANDOM_SYSCALL)) + fill_random_t* fr = &fill_random_dev_random; - path::string_type s( model.native() ); + if (major_ver > 3u || (major_ver == 3u && minor_ver >= 17u)) + fr = &fill_random_getrandom; -#ifdef BOOST_WINDOWS_API - const wchar_t hex[] = L"0123456789abcdef"; - const wchar_t percent = L'%'; -#else - const char hex[] = "0123456789abcdef"; - const char percent = '%'; + filesystem::detail::atomic_store_relaxed(fill_random, fr); #endif +} + +#endif // defined(linux) || defined(__linux) || defined(__linux__) + +BOOST_FILESYSTEM_DECL +path unique_path(path const& model, system::error_code* ec) +{ + // This function used wstring for fear of misidentifying + // a part of a multibyte character as a percent sign. + // However, double byte encodings only have 80-FF as lead + // bytes and 40-7F as trailing bytes, whereas % is 25. + // So, use string on POSIX and avoid conversions. - char ran[] = "123456789abcdef"; // init to avoid clang static analyzer message - // see ticket #8954 - assert(sizeof(ran) == 16); - const int max_nibbles = 2 * sizeof(ran); // 4-bits per nibble + path::string_type s(model.native()); - int nibbles_used = max_nibbles; - for(path::string_type::size_type i=0; i < s.size(); ++i) - { - if (s[i] == percent) // digit request + char ran[16] = {}; // init to avoid clang static analyzer message + // see ticket #8954 + BOOST_CONSTEXPR_OR_CONST unsigned int max_nibbles = 2u * sizeof(ran); // 4-bits per nibble + + unsigned int nibbles_used = max_nibbles; + for (path::string_type::size_type i = 0, n = s.size(); i < n; ++i) { - if (nibbles_used == max_nibbles) - { - system_crypt_random(ran, sizeof(ran), ec); - if (ec != 0 && *ec) - return ""; - nibbles_used = 0; - } - int c = ran[nibbles_used/2]; - c >>= 4 * (nibbles_used++ & 1); // if odd, shift right 1 nibble - s[i] = hex[c & 0xf]; // convert to hex digit and replace + if (s[i] == percent) // digit request + { + if (nibbles_used == max_nibbles) + { + system_crypt_random(ran, sizeof(ran), ec); + if (ec && *ec) + return path(); + nibbles_used = 0; + } + unsigned int c = ran[nibbles_used / 2u]; + c >>= 4u * (nibbles_used++ & 1u); // if odd, shift right 1 nibble + s[i] = hex[c & 0xf]; // convert to hex digit and replace + } } - } - if (ec != 0) ec->clear(); + if (ec) + ec->clear(); - return s; + return s; } -}}} +} // namespace detail +} // namespace filesystem +} // namespace boost + +#include diff --git a/src/boost/libs/filesystem/src/utf8_codecvt_facet.cpp b/src/boost/libs/filesystem/src/utf8_codecvt_facet.cpp index 30bc76741..e19be69e9 100644 --- a/src/boost/libs/filesystem/src/utf8_codecvt_facet.cpp +++ b/src/boost/libs/filesystem/src/utf8_codecvt_facet.cpp @@ -3,21 +3,21 @@ // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) -// For HP-UX, request that WCHAR_MAX and WCHAR_MIN be defined as macros, -// not casts. See ticket 5048 -#define _INCLUDE_STDCSOURCE_199901 +#include "platform_config.hpp" -#ifndef BOOST_SYSTEM_NO_DEPRECATED -# define BOOST_SYSTEM_NO_DEPRECATED -#endif - -#define BOOST_FILESYSTEM_SOURCE #include +#include + #define BOOST_UTF8_BEGIN_NAMESPACE \ - namespace boost { namespace filesystem { namespace detail { + namespace boost { \ + namespace filesystem { \ + namespace detail { -#define BOOST_UTF8_END_NAMESPACE }}} +#define BOOST_UTF8_END_NAMESPACE \ + } \ + } \ + } #define BOOST_UTF8_DECL BOOST_FILESYSTEM_DECL #include @@ -25,3 +25,5 @@ #undef BOOST_UTF8_BEGIN_NAMESPACE #undef BOOST_UTF8_END_NAMESPACE #undef BOOST_UTF8_DECL + +#include diff --git a/src/boost/libs/filesystem/src/windows_file_codecvt.cpp b/src/boost/libs/filesystem/src/windows_file_codecvt.cpp index 1f52c260d..9f9629603 100644 --- a/src/boost/libs/filesystem/src/windows_file_codecvt.cpp +++ b/src/boost/libs/filesystem/src/windows_file_codecvt.cpp @@ -7,69 +7,66 @@ // Library home page: http://www.boost.org/libs/filesystem -//--------------------------------------------------------------------------------------// +//--------------------------------------------------------------------------------------// -// define BOOST_FILESYSTEM_SOURCE so that knows -// the library is being built (possibly exporting rather than importing code) -#define BOOST_FILESYSTEM_SOURCE +#include "platform_config.hpp" -#ifndef BOOST_SYSTEM_NO_DEPRECATED -# define BOOST_SYSTEM_NO_DEPRECATED -#endif - -#include -#include // for mbstate_t +#include // for mbstate_t #ifdef BOOST_WINDOWS_API #include "windows_file_codecvt.hpp" -// Versions of MinGW prior to GCC 4.6 requires this -#ifndef WINVER -# define WINVER 0x0500 -#endif - #include - std::codecvt_base::result windows_file_codecvt::do_in( - std::mbstate_t &, +#include // must be the last #include + +namespace boost { +namespace filesystem { +namespace detail { + +std::codecvt_base::result windows_file_codecvt::do_in( + std::mbstate_t&, const char* from, const char* from_end, const char*& from_next, wchar_t* to, wchar_t* to_end, wchar_t*& to_next) const - { +{ UINT codepage = AreFileApisANSI() ? CP_ACP : CP_OEMCP; int count; - if ((count = ::MultiByteToWideChar(codepage, MB_PRECOMPOSED, from, - static_cast(from_end - from), to, static_cast(to_end - to))) == 0) + if ((count = ::MultiByteToWideChar(codepage, MB_PRECOMPOSED, from, static_cast< int >(from_end - from), to, static_cast< int >(to_end - to))) == 0) { - return error; // conversion failed + return error; // conversion failed } from_next = from_end; to_next = to + count; *to_next = L'\0'; return ok; - } +} - std::codecvt_base::result windows_file_codecvt::do_out( - std::mbstate_t &, - const wchar_t* from, const wchar_t* from_end, const wchar_t* & from_next, - char* to, char* to_end, char* & to_next) const - { +std::codecvt_base::result windows_file_codecvt::do_out( + std::mbstate_t&, + const wchar_t* from, const wchar_t* from_end, const wchar_t*& from_next, + char* to, char* to_end, char*& to_next) const +{ UINT codepage = AreFileApisANSI() ? CP_ACP : CP_OEMCP; int count; - if ((count = ::WideCharToMultiByte(codepage, WC_NO_BEST_FIT_CHARS, from, - static_cast(from_end - from), to, static_cast(to_end - to), 0, 0)) == 0) + if ((count = ::WideCharToMultiByte(codepage, WC_NO_BEST_FIT_CHARS, from, static_cast< int >(from_end - from), to, static_cast< int >(to_end - to), 0, 0)) == 0) { - return error; // conversion failed + return error; // conversion failed } from_next = from_end; to_next = to + count; *to_next = '\0'; return ok; - } +} + +} // namespace detail +} // namespace filesystem +} // namespace boost - # endif // BOOST_WINDOWS_API +#include +#endif // BOOST_WINDOWS_API diff --git a/src/boost/libs/filesystem/src/windows_file_codecvt.hpp b/src/boost/libs/filesystem/src/windows_file_codecvt.hpp index 1a42fce18..36f8ca5e9 100644 --- a/src/boost/libs/filesystem/src/windows_file_codecvt.hpp +++ b/src/boost/libs/filesystem/src/windows_file_codecvt.hpp @@ -7,50 +7,66 @@ // Library home page: http://www.boost.org/libs/filesystem -#ifndef BOOST_FILESYSTEM3_WIN_FILE_CODECVT_HPP -#define BOOST_FILESYSTEM3_WIN_FILE_CODECVT_HPP +#ifndef BOOST_FILESYSTEM_WINDOWS_FILE_CODECVT_HPP +#define BOOST_FILESYSTEM_WINDOWS_FILE_CODECVT_HPP #include -#include - - //------------------------------------------------------------------------------------// - // // - // class windows_file_codecvt // - // // - // Warning: partial implementation; even do_in and do_out only partially meet the // - // standard library specifications as the "to" buffer must hold the entire result. // - // // - //------------------------------------------------------------------------------------// - - class BOOST_FILESYSTEM_DECL windows_file_codecvt - : public std::codecvt< wchar_t, char, std::mbstate_t > - { - public: - explicit windows_file_codecvt(std::size_t refs = 0) - : std::codecvt(refs) {} - protected: - - virtual bool do_always_noconv() const throw() { return false; } - // seems safest to assume variable number of characters since we don't - // actually know what codepage is active - virtual int do_encoding() const throw() { return 0; } +#ifdef BOOST_WINDOWS_API + +#include +#include +#include // std::mbstate_t +#include + +#include // must be the last #include + +namespace boost { +namespace filesystem { +namespace detail { - virtual std::codecvt_base::result do_in(std::mbstate_t& state, - const char* from, const char* from_end, const char*& from_next, - wchar_t* to, wchar_t* to_end, wchar_t*& to_next) const; +//------------------------------------------------------------------------------------// +// // +// class windows_file_codecvt // +// // +// Warning: partial implementation; even do_in and do_out only partially meet the // +// standard library specifications as the "to" buffer must hold the entire result. // +// // +//------------------------------------------------------------------------------------// - virtual std::codecvt_base::result do_out(std::mbstate_t & state, - const wchar_t* from, const wchar_t* from_end, const wchar_t*& from_next, - char* to, char* to_end, char*& to_next) const; +class BOOST_SYMBOL_VISIBLE windows_file_codecvt BOOST_FINAL : + public std::codecvt< wchar_t, char, std::mbstate_t > +{ +public: + explicit windows_file_codecvt(std::size_t refs = 0) : + std::codecvt< wchar_t, char, std::mbstate_t >(refs) + { + } + +protected: + bool do_always_noconv() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return false; } + + // seems safest to assume variable number of characters since we don't + // actually know what codepage is active + int do_encoding() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return 0; } + std::codecvt_base::result do_in(std::mbstate_t& state, const char* from, const char* from_end, const char*& from_next, wchar_t* to, wchar_t* to_end, wchar_t*& to_next) const BOOST_OVERRIDE; + std::codecvt_base::result do_out(std::mbstate_t& state, const wchar_t* from, const wchar_t* from_end, const wchar_t*& from_next, char* to, char* to_end, char*& to_next) const BOOST_OVERRIDE; + std::codecvt_base::result do_unshift(std::mbstate_t&, char* /*from*/, char* /*to*/, char*& /*next*/) const BOOST_OVERRIDE { return ok; } + int do_length(std::mbstate_t&, const char* /*from*/, const char* /*from_end*/, std::size_t /*max*/) const +#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) + throw() +#endif + BOOST_OVERRIDE + { return 0; } + int do_max_length() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return 0; } +}; - virtual std::codecvt_base::result do_unshift(std::mbstate_t&, - char* /*from*/, char* /*to*/, char* & /*next*/) const { return ok; } +} // namespace detail +} // namespace filesystem +} // namespace boost - virtual int do_length(std::mbstate_t&, - const char* /*from*/, const char* /*from_end*/, std::size_t /*max*/) const { return 0; } +#include - virtual int do_max_length() const throw () { return 0; } - }; +#endif // BOOST_WINDOWS_API -#endif // BOOST_FILESYSTEM3_WIN_FILE_CODECVT_HPP +#endif // BOOST_FILESYSTEM_WINDOWS_FILE_CODECVT_HPP diff --git a/src/boost/libs/filesystem/src/windows_tools.hpp b/src/boost/libs/filesystem/src/windows_tools.hpp new file mode 100644 index 000000000..b2ba741d0 --- /dev/null +++ b/src/boost/libs/filesystem/src/windows_tools.hpp @@ -0,0 +1,281 @@ +// windows_tools.hpp -----------------------------------------------------------------// + +// Copyright 2001 Dietmar Kuehl +// Copyright 2002-2009, 2014 Beman Dawes +// Copyright 2021-2022 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +// See library home page at http://www.boost.org/libs/filesystem + +//--------------------------------------------------------------------------------------// + +#ifndef BOOST_FILESYSTEM_SRC_WINDOWS_TOOLS_HPP_ +#define BOOST_FILESYSTEM_SRC_WINDOWS_TOOLS_HPP_ + +#include +#include +#include +#include +#include // NTSTATUS_ + +#include + +#include // must be the last #include + +#ifndef IO_REPARSE_TAG_DEDUP +#define IO_REPARSE_TAG_DEDUP (0x80000013L) +#endif + +#ifndef IO_REPARSE_TAG_MOUNT_POINT +#define IO_REPARSE_TAG_MOUNT_POINT (0xA0000003L) +#endif + +#ifndef IO_REPARSE_TAG_SYMLINK +#define IO_REPARSE_TAG_SYMLINK (0xA000000CL) +#endif + +namespace boost { +namespace filesystem { +namespace detail { + +BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST wchar_t colon = L':'; +BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST wchar_t questionmark = L'?'; + +inline bool is_letter(wchar_t c) +{ + return (c >= L'A' && c <= L'Z') || (c >= L'a' && c <= L'z'); +} + +inline bool equal_extension(wchar_t const* p, wchar_t const (&x1)[5], wchar_t const (&x2)[5]) +{ + return (p[0] == x1[0] || p[0] == x2[0]) && + (p[1] == x1[1] || p[1] == x2[1]) && + (p[2] == x1[2] || p[2] == x2[2]) && + (p[3] == x1[3] || p[3] == x2[3]) && + p[4] == 0; +} + +inline boost::filesystem::perms make_permissions(boost::filesystem::path const& p, DWORD attr) +{ + boost::filesystem::perms prms = boost::filesystem::owner_read | boost::filesystem::group_read | boost::filesystem::others_read; + if ((attr & FILE_ATTRIBUTE_READONLY) == 0u) + prms |= boost::filesystem::owner_write | boost::filesystem::group_write | boost::filesystem::others_write; + boost::filesystem::path ext = detail::path_algorithms::extension_v4(p); + wchar_t const* q = ext.c_str(); + if (equal_extension(q, L".exe", L".EXE") || equal_extension(q, L".com", L".COM") || equal_extension(q, L".bat", L".BAT") || equal_extension(q, L".cmd", L".CMD")) + prms |= boost::filesystem::owner_exe | boost::filesystem::group_exe | boost::filesystem::others_exe; + return prms; +} + +ULONG get_reparse_point_tag_ioctl(HANDLE h, boost::filesystem::path const& p, boost::system::error_code* ec); + +inline bool is_reparse_point_tag_a_symlink(ULONG reparse_point_tag) +{ + return reparse_point_tag == IO_REPARSE_TAG_SYMLINK + // Issue 9016 asked that NTFS directory junctions be recognized as directories. + // That is equivalent to recognizing them as symlinks, and then the normal symlink + // mechanism will take care of recognizing them as directories. + // + // Directory junctions are very similar to symlinks, but have some performance + // and other advantages over symlinks. They can be created from the command line + // with "mklink /J junction-name target-path". + // + // Note that mounted filesystems also have the same repartse point tag, which makes + // them look like directory symlinks in terms of Boost.Filesystem. read_symlink() + // may return a volume path or NT path for such symlinks. + || reparse_point_tag == IO_REPARSE_TAG_MOUNT_POINT; // aka "directory junction" or "junction" +} + +#if !defined(UNDER_CE) + +//! Platform-specific parameters for directory iterator construction +struct directory_iterator_params +{ + //! Handle of the directory to iterate over. If not \c INVALID_HANDLE_VALUE, the directory path is ignored. + HANDLE use_handle; + /*! + * If \c use_handle is not \c INVALID_HANDLE_VALUE, specifies whether the directory iterator should close the handle upon destruction. + * If \c false, the handle must remain valid for the lifetime of the iterator. + */ + bool close_handle; +}; + +//! IO_STATUS_BLOCK definition from Windows SDK. +struct io_status_block +{ + union + { + boost::winapi::NTSTATUS_ Status; + PVOID Pointer; + }; + ULONG_PTR Information; +}; + +//! UNICODE_STRING definition from Windows SDK +struct unicode_string +{ + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +}; + +//! OBJECT_ATTRIBUTES definition from Windows SDK +struct object_attributes +{ + ULONG Length; + HANDLE RootDirectory; + unicode_string* ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +}; + +#ifndef OBJ_CASE_INSENSITIVE +#define OBJ_CASE_INSENSITIVE 0x00000040 +#endif +#ifndef OBJ_DONT_REPARSE +#define OBJ_DONT_REPARSE 0x00001000 +#endif + +#ifndef FILE_SUPERSEDE +#define FILE_SUPERSEDE 0x00000000 +#endif +#ifndef FILE_OPEN +#define FILE_OPEN 0x00000001 +#endif +#ifndef FILE_CREATE +#define FILE_CREATE 0x00000002 +#endif +#ifndef FILE_OPEN_IF +#define FILE_OPEN_IF 0x00000003 +#endif +#ifndef FILE_OVERWRITE +#define FILE_OVERWRITE 0x00000004 +#endif +#ifndef FILE_OVERWRITE_IF +#define FILE_OVERWRITE_IF 0x00000005 +#endif + +#ifndef FILE_DIRECTORY_FILE +#define FILE_DIRECTORY_FILE 0x00000001 +#endif +#ifndef FILE_SYNCHRONOUS_IO_NONALERT +#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 +#endif +#ifndef FILE_OPEN_FOR_BACKUP_INTENT +#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 +#endif +#ifndef FILE_OPEN_REPARSE_POINT +#define FILE_OPEN_REPARSE_POINT 0x00200000 +#endif + +//! NtCreateFile signature. Available since Windows 2000 (probably). +typedef boost::winapi::NTSTATUS_ (NTAPI NtCreateFile_t)( + /*out*/ PHANDLE FileHandle, + /*in*/ ACCESS_MASK DesiredAccess, + /*in*/ object_attributes* ObjectAttributes, + /*out*/ io_status_block* IoStatusBlock, + /*in, optional*/ PLARGE_INTEGER AllocationSize, + /*in*/ ULONG FileAttributes, + /*in*/ ULONG ShareAccess, + /*in*/ ULONG CreateDisposition, + /*in*/ ULONG CreateOptions, + /*in, optional*/ PVOID EaBuffer, + /*in*/ ULONG EaLength); + +extern NtCreateFile_t* nt_create_file_api; + +//! PIO_APC_ROUTINE definition from Windows SDK +typedef VOID (NTAPI* pio_apc_routine) (PVOID ApcContext, io_status_block* IoStatusBlock, ULONG Reserved); + +//! FILE_INFORMATION_CLASS enum entries +enum file_information_class +{ + file_directory_information_class = 1 +}; + +//! NtQueryDirectoryFile signature. Available since Windows NT 4.0 (probably). +typedef boost::winapi::NTSTATUS_ (NTAPI NtQueryDirectoryFile_t)( + /*in*/ HANDLE FileHandle, + /*in, optional*/ HANDLE Event, + /*in, optional*/ pio_apc_routine ApcRoutine, + /*in, optional*/ PVOID ApcContext, + /*out*/ io_status_block* IoStatusBlock, + /*out*/ PVOID FileInformation, + /*in*/ ULONG Length, + /*in*/ file_information_class FileInformationClass, + /*in*/ BOOLEAN ReturnSingleEntry, + /*in, optional*/ unicode_string* FileName, + /*in*/ BOOLEAN RestartScan); + +extern NtQueryDirectoryFile_t* nt_query_directory_file_api; + +#endif // !defined(UNDER_CE) + +//! FILE_INFO_BY_HANDLE_CLASS enum entries +enum file_info_by_handle_class +{ + file_basic_info_class = 0, + file_disposition_info_class = 4, + file_attribute_tag_info_class = 9, + file_id_both_directory_info_class = 10, + file_id_both_directory_restart_info_class = 11, + file_full_directory_info_class = 14, + file_full_directory_restart_info_class = 15, + file_id_extd_directory_info_class = 19, + file_id_extd_directory_restart_info_class = 20, + file_disposition_info_ex_class = 21 +}; + +//! FILE_ATTRIBUTE_TAG_INFO definition from Windows SDK +struct file_attribute_tag_info +{ + DWORD FileAttributes; + DWORD ReparseTag; +}; + +//! GetFileInformationByHandleEx signature. Available since Windows Vista. +typedef BOOL (WINAPI GetFileInformationByHandleEx_t)( + /*__in*/ HANDLE hFile, + /*__in*/ file_info_by_handle_class FileInformationClass, // the actual type is FILE_INFO_BY_HANDLE_CLASS enum + /*__out_bcount(dwBufferSize)*/ LPVOID lpFileInformation, + /*__in*/ DWORD dwBufferSize); + +extern GetFileInformationByHandleEx_t* get_file_information_by_handle_ex_api; + +//! HANDLE wrapper that automatically closes the handle +struct handle_wrapper +{ + HANDLE handle; + + handle_wrapper() BOOST_NOEXCEPT : handle(INVALID_HANDLE_VALUE) {} + explicit handle_wrapper(HANDLE h) BOOST_NOEXCEPT : handle(h) {} + ~handle_wrapper() BOOST_NOEXCEPT + { + if (handle != INVALID_HANDLE_VALUE) + ::CloseHandle(handle); + } + BOOST_DELETED_FUNCTION(handle_wrapper(handle_wrapper const&)) + BOOST_DELETED_FUNCTION(handle_wrapper& operator=(handle_wrapper const&)) +}; + +//! Creates a file handle +inline HANDLE create_file_handle(boost::filesystem::path const& p, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile = NULL) +{ + return ::CreateFileW(p.c_str(), dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); +} + +#if !defined(UNDER_CE) +//! Creates a file handle for a file relative to a previously opened base directory. The file path must be relative and in preferred format. +boost::winapi::NTSTATUS_ nt_create_file_handle_at(HANDLE& out, HANDLE basedir_handle, boost::filesystem::path const& p, ULONG FileAttributes, ACCESS_MASK DesiredAccess, ULONG ShareMode, ULONG CreateDisposition, ULONG CreateOptions); +#endif // !defined(UNDER_CE) + +} // namespace detail +} // namespace filesystem +} // namespace boost + +#include + +#endif // BOOST_FILESYSTEM_SRC_WINDOWS_TOOLS_HPP_ diff --git a/src/boost/libs/iostreams/src/file_descriptor.cpp b/src/boost/libs/iostreams/src/file_descriptor.cpp index 5d5549263..1226cfc65 100644 --- a/src/boost/libs/iostreams/src/file_descriptor.cpp +++ b/src/boost/libs/iostreams/src/file_descriptor.cpp @@ -259,18 +259,20 @@ void file_descriptor_impl::close() void file_descriptor_impl::close_impl(bool close_flag, bool throw_) { if (handle_ != invalid_handle()) { + bool success = true; + if (close_flag) { - bool success = - #ifdef BOOST_IOSTREAMS_WINDOWS - ::CloseHandle(handle_) == 1; - #else - BOOST_IOSTREAMS_FD_CLOSE(handle_) != -1; - #endif - if (!success && throw_) - throw_system_failure("failed closing file"); +#ifdef BOOST_IOSTREAMS_WINDOWS + success = ::CloseHandle(handle_) == 1; +#else + success = BOOST_IOSTREAMS_FD_CLOSE(handle_) != -1; +#endif } + // Even if the close fails, we want nothing more to do with the handle handle_ = invalid_handle(); flags_ = 0; + if (!success && throw_) + throw_system_failure("failed closing file"); } } diff --git a/src/boost/libs/regex/src/c_regex_traits.cpp b/src/boost/libs/regex/src/c_regex_traits.cpp deleted file mode 100644 index f6ec3d03a..000000000 --- a/src/boost/libs/regex/src/c_regex_traits.cpp +++ /dev/null @@ -1,206 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: c_regex_traits.cpp - * VERSION: see - * DESCRIPTION: Implements out of line c_regex_traits members - */ - - -#define BOOST_REGEX_SOURCE - -#include -#include -#include "internals.hpp" - -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560) - -#include -#include -#include - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std{ - using ::strxfrm; using ::isspace; - using ::ispunct; using ::isalpha; - using ::isalnum; using ::iscntrl; - using ::isprint; using ::isupper; - using ::islower; using ::isdigit; - using ::isxdigit; using ::strtol; -} -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost{ - -c_regex_traits::string_type BOOST_REGEX_CALL c_regex_traits::transform(const char* p1, const char* p2) -{ - std::string result(10, ' '); - std::size_t s = result.size(); - std::size_t r; - std::string src(p1, p2); - while(s < (r = std::strxfrm(&*result.begin(), src.c_str(), s))) - { -#if defined(_CPPLIB_VER) - // - // A bug in VC11 and 12 causes the program to hang if we pass a null-string - // to std::strxfrm, but only for certain locales :-( - // Probably effects Intel and Clang or any compiler using the VC std library (Dinkumware). - // - if(r == INT_MAX) - { - result.erase(); - result.insert(result.begin(), static_cast(0)); - return result; - } -#endif - result.append(r - s + 3, ' '); - s = result.size(); - } - result.erase(r); - return result; -} - -c_regex_traits::string_type BOOST_REGEX_CALL c_regex_traits::transform_primary(const char* p1, const char* p2) -{ - static char s_delim; - static const int s_collate_type = ::boost::BOOST_REGEX_DETAIL_NS::find_sort_syntax(static_cast*>(0), &s_delim); - std::string result; - // - // What we do here depends upon the format of the sort key returned by - // sort key returned by this->transform: - // - switch(s_collate_type) - { - case ::boost::BOOST_REGEX_DETAIL_NS::sort_C: - case ::boost::BOOST_REGEX_DETAIL_NS::sort_unknown: - // the best we can do is translate to lower case, then get a regular sort key: - { - result.assign(p1, p2); - for(std::string::size_type i = 0; i < result.size(); ++i) - result[i] = static_cast((std::tolower)(static_cast(result[i]))); - result = transform(&*result.begin(), &*result.begin() + result.size()); - break; - } - case ::boost::BOOST_REGEX_DETAIL_NS::sort_fixed: - { - // get a regular sort key, and then truncate it: - result = transform(p1, p2); - result.erase(s_delim); - break; - } - case ::boost::BOOST_REGEX_DETAIL_NS::sort_delim: - // get a regular sort key, and then truncate everything after the delim: - result = transform(p1, p2); - if(result.size() && (result[0] == s_delim)) - break; - std::size_t i; - for(i = 0; i < result.size(); ++i) - { - if(result[i] == s_delim) - break; - } - result.erase(i); - break; - } - if(result.empty()) - result = std::string(1, char(0)); - return result; -} - -c_regex_traits::char_class_type BOOST_REGEX_CALL c_regex_traits::lookup_classname(const char* p1, const char* p2) -{ - static const char_class_type masks[] = - { - 0, - char_class_alnum, - char_class_alpha, - char_class_blank, - char_class_cntrl, - char_class_digit, - char_class_digit, - char_class_graph, - char_class_horizontal, - char_class_lower, - char_class_lower, - char_class_print, - char_class_punct, - char_class_space, - char_class_space, - char_class_upper, - char_class_unicode, - char_class_upper, - char_class_vertical, - char_class_alnum | char_class_word, - char_class_alnum | char_class_word, - char_class_xdigit, - }; - - int idx = ::boost::BOOST_REGEX_DETAIL_NS::get_default_class_id(p1, p2); - if(idx < 0) - { - std::string s(p1, p2); - for(std::string::size_type i = 0; i < s.size(); ++i) - s[i] = static_cast((std::tolower)(static_cast(s[i]))); - idx = ::boost::BOOST_REGEX_DETAIL_NS::get_default_class_id(&*s.begin(), &*s.begin() + s.size()); - } - BOOST_ASSERT(std::size_t(idx+1) < sizeof(masks) / sizeof(masks[0])); - return masks[idx+1]; -} - -bool BOOST_REGEX_CALL c_regex_traits::isctype(char c, char_class_type mask) -{ - return - ((mask & char_class_space) && (std::isspace)(static_cast(c))) - || ((mask & char_class_print) && (std::isprint)(static_cast(c))) - || ((mask & char_class_cntrl) && (std::iscntrl)(static_cast(c))) - || ((mask & char_class_upper) && (std::isupper)(static_cast(c))) - || ((mask & char_class_lower) && (std::islower)(static_cast(c))) - || ((mask & char_class_alpha) && (std::isalpha)(static_cast(c))) - || ((mask & char_class_digit) && (std::isdigit)(static_cast(c))) - || ((mask & char_class_punct) && (std::ispunct)(static_cast(c))) - || ((mask & char_class_xdigit) && (std::isxdigit)(static_cast(c))) - || ((mask & char_class_blank) && (std::isspace)(static_cast(c)) && !::boost::BOOST_REGEX_DETAIL_NS::is_separator(c)) - || ((mask & char_class_word) && (c == '_')) - || ((mask & char_class_vertical) && (::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) || (c == '\v'))) - || ((mask & char_class_horizontal) && (std::isspace)(static_cast(c)) && !::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) && (c != '\v')); -} - -c_regex_traits::string_type BOOST_REGEX_CALL c_regex_traits::lookup_collatename(const char* p1, const char* p2) -{ - std::string s(p1, p2); - s = ::boost::BOOST_REGEX_DETAIL_NS::lookup_default_collate_name(s); - if(s.empty() && (p2-p1 == 1)) - s.append(1, *p1); - return s; -} - -int BOOST_REGEX_CALL c_regex_traits::value(char c, int radix) -{ - char b[2] = { c, '\0', }; - char* ep; - int result = std::strtol(b, &ep, radix); - if(ep == b) - return -1; - return result; -} - -} -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif diff --git a/src/boost/libs/regex/src/cpp_regex_traits.cpp b/src/boost/libs/regex/src/cpp_regex_traits.cpp deleted file mode 100644 index 88510d617..000000000 --- a/src/boost/libs/regex/src/cpp_regex_traits.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE cpp_regex_traits.cpp - * VERSION see - * DESCRIPTION: Implements cpp_regex_traits (and associated helper classes). - */ - -#define BOOST_REGEX_SOURCE -#include -#ifndef BOOST_NO_STD_LOCALE -#include -#include - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std{ - using ::memset; -} -#endif - -namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ - -void cpp_regex_traits_char_layer::init() -{ - // we need to start by initialising our syntax map so we know which - // character is used for which purpose: - std::memset(m_char_map, 0, sizeof(m_char_map)); -#ifndef BOOST_NO_STD_MESSAGES -#ifndef __IBMCPP__ - std::messages::catalog cat = static_cast::catalog>(-1); -#else - std::messages::catalog cat = reinterpret_cast::catalog>(-1); -#endif - std::string cat_name(cpp_regex_traits::get_catalog_name()); - if(cat_name.size() && (m_pmessages != 0)) - { - cat = this->m_pmessages->open( - cat_name, - this->m_locale); - if((int)cat < 0) - { - std::string m("Unable to open message catalog: "); - std::runtime_error err(m + cat_name); - boost::BOOST_REGEX_DETAIL_NS::raise_runtime_error(err); - } - } - // - // if we have a valid catalog then load our messages: - // - if((int)cat >= 0) - { -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) - { - string_type mss = this->m_pmessages->get(cat, 0, i, get_default_syntax(i)); - for(string_type::size_type j = 0; j < mss.size(); ++j) - { - m_char_map[static_cast(mss[j])] = i; - } - } - this->m_pmessages->close(cat); -#ifndef BOOST_NO_EXCEPTIONS - } - catch(...) - { - this->m_pmessages->close(cat); - throw; - } -#endif - } - else - { -#endif - for(regex_constants::syntax_type j = 1; j < regex_constants::syntax_max; ++j) - { - const char* ptr = get_default_syntax(j); - while(ptr && *ptr) - { - m_char_map[static_cast(*ptr)] = j; - ++ptr; - } - } -#ifndef BOOST_NO_STD_MESSAGES - } -#endif - // - // finish off by calculating our escape types: - // - unsigned char i = 'A'; - do - { - if(m_char_map[i] == 0) - { - if(this->m_pctype->is(std::ctype_base::lower, i)) - m_char_map[i] = regex_constants::escape_type_class; - else if(this->m_pctype->is(std::ctype_base::upper, i)) - m_char_map[i] = regex_constants::escape_type_not_class; - } - }while(0xFF != i++); -} - -} // BOOST_REGEX_DETAIL_NS -} // boost -#endif - diff --git a/src/boost/libs/regex/src/cregex.cpp b/src/boost/libs/regex/src/cregex.cpp deleted file mode 100644 index 4cfcad6b2..000000000 --- a/src/boost/libs/regex/src/cregex.cpp +++ /dev/null @@ -1,660 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: cregex.cpp - * VERSION: see - * DESCRIPTION: Implements high level class boost::RexEx - */ - - -#define BOOST_REGEX_SOURCE - -#include -#include -#if !defined(BOOST_NO_STD_STRING) -#include -#include -#include -typedef boost::match_flag_type match_flag_type; -#include - -#ifdef BOOST_MSVC -#pragma warning(disable:4309) -#endif -#ifdef BOOST_INTEL -#pragma warning(disable:981 383) -#endif - -namespace boost{ - -#ifdef __BORLANDC__ -#if __BORLANDC__ < 0x530 -// -// we need to instantiate the vector classes we use -// since declaring a reference to type doesn't seem to -// do the job... -std::vector inst1; -std::vector inst2; -#endif -#endif - -namespace{ - -template -std::string to_string(iterator i, iterator j) -{ - std::string s; - while(i != j) - { - s.append(1, *i); - ++i; - } - return s; -} - -inline std::string to_string(const char* i, const char* j) -{ - return std::string(i, j); -} - -} -namespace BOOST_REGEX_DETAIL_NS{ - -class RegExData -{ -public: - enum type - { - type_pc, - type_pf, - type_copy - }; - regex e; - cmatch m; -#ifndef BOOST_REGEX_NO_FILEITER - match_results fm; -#endif - type t; - const char* pbase; -#ifndef BOOST_REGEX_NO_FILEITER - mapfile::iterator fbase; -#endif - std::map > strings; - std::map > positions; - void update(); - void clean(); - RegExData() : e(), m(), -#ifndef BOOST_REGEX_NO_FILEITER - fm(), -#endif - t(type_copy), pbase(0), -#ifndef BOOST_REGEX_NO_FILEITER - fbase(), -#endif - strings(), positions() {} -}; - -void RegExData::update() -{ - strings.erase(strings.begin(), strings.end()); - positions.erase(positions.begin(), positions.end()); - if(t == type_pc) - { - for(unsigned int i = 0; i < m.size(); ++i) - { - if(m[i].matched) strings[i] = std::string(m[i].first, m[i].second); - positions[i] = m[i].matched ? m[i].first - pbase : -1; - } - } -#ifndef BOOST_REGEX_NO_FILEITER - else - { - for(unsigned int i = 0; i < fm.size(); ++i) - { - if(fm[i].matched) strings[i] = to_string(fm[i].first, fm[i].second); - positions[i] = fm[i].matched ? fm[i].first - fbase : -1; - } - } -#endif - t = type_copy; -} - -void RegExData::clean() -{ -#ifndef BOOST_REGEX_NO_FILEITER - fbase = mapfile::iterator(); - fm = match_results(); -#endif -} - -} // namespace - -RegEx::RegEx() -{ - pdata = new BOOST_REGEX_DETAIL_NS::RegExData(); -} - -RegEx::RegEx(const RegEx& o) -{ - pdata = new BOOST_REGEX_DETAIL_NS::RegExData(*(o.pdata)); -} - -RegEx::~RegEx() -{ - delete pdata; -} - -RegEx::RegEx(const char* c, bool icase) -{ - pdata = new BOOST_REGEX_DETAIL_NS::RegExData(); - SetExpression(c, icase); -} - -RegEx::RegEx(const std::string& s, bool icase) -{ - pdata = new BOOST_REGEX_DETAIL_NS::RegExData(); - SetExpression(s.c_str(), icase); -} - -RegEx& RegEx::operator=(const RegEx& o) -{ - *pdata = *(o.pdata); - return *this; -} - -RegEx& RegEx::operator=(const char* p) -{ - SetExpression(p, false); - return *this; -} - -unsigned int RegEx::SetExpression(const char* p, bool icase) -{ - boost::uint_fast32_t f = icase ? regex::normal | regex::icase : regex::normal; - return pdata->e.set_expression(p, f); -} - -unsigned int RegEx::error_code()const -{ - return pdata->e.error_code(); -} - - -std::string RegEx::Expression()const -{ - return pdata->e.expression(); -} - -// -// now matching operators: -// -bool RegEx::Match(const char* p, match_flag_type flags) -{ - pdata->t = BOOST_REGEX_DETAIL_NS::RegExData::type_pc; - pdata->pbase = p; - const char* end = p; - while(*end)++end; - - if(regex_match(p, end, pdata->m, pdata->e, flags)) - { - pdata->update(); - return true; - } - return false; -} - -bool RegEx::Search(const char* p, match_flag_type flags) -{ - pdata->t = BOOST_REGEX_DETAIL_NS::RegExData::type_pc; - pdata->pbase = p; - const char* end = p; - while(*end)++end; - - if(regex_search(p, end, pdata->m, pdata->e, flags)) - { - pdata->update(); - return true; - } - return false; -} -namespace BOOST_REGEX_DETAIL_NS{ -struct pred1 -{ - GrepCallback cb; - RegEx* pe; - pred1(GrepCallback c, RegEx* i) : cb(c), pe(i) {} - bool operator()(const cmatch& m) - { - pe->pdata->m = m; - return cb(*pe); - } -}; -} -unsigned int RegEx::Grep(GrepCallback cb, const char* p, match_flag_type flags) -{ - pdata->t = BOOST_REGEX_DETAIL_NS::RegExData::type_pc; - pdata->pbase = p; - const char* end = p; - while(*end)++end; - - unsigned int result = regex_grep(BOOST_REGEX_DETAIL_NS::pred1(cb, this), p, end, pdata->e, flags); - if(result) - pdata->update(); - return result; -} -namespace BOOST_REGEX_DETAIL_NS{ -struct pred2 -{ - std::vector& v; - RegEx* pe; - pred2(std::vector& o, RegEx* e) : v(o), pe(e) {} - bool operator()(const cmatch& m) - { - pe->pdata->m = m; - v.push_back(std::string(m[0].first, m[0].second)); - return true; - } -private: - pred2& operator=(const pred2&); -}; -} - -unsigned int RegEx::Grep(std::vector& v, const char* p, match_flag_type flags) -{ - pdata->t = BOOST_REGEX_DETAIL_NS::RegExData::type_pc; - pdata->pbase = p; - const char* end = p; - while(*end)++end; - - unsigned int result = regex_grep(BOOST_REGEX_DETAIL_NS::pred2(v, this), p, end, pdata->e, flags); - if(result) - pdata->update(); - return result; -} -namespace BOOST_REGEX_DETAIL_NS{ -struct pred3 -{ - std::vector& v; - const char* base; - RegEx* pe; - pred3(std::vector& o, const char* pb, RegEx* p) : v(o), base(pb), pe(p) {} - bool operator()(const cmatch& m) - { - pe->pdata->m = m; - v.push_back(static_cast(m[0].first - base)); - return true; - } -private: - pred3& operator=(const pred3&); -}; -} -unsigned int RegEx::Grep(std::vector& v, const char* p, match_flag_type flags) -{ - pdata->t = BOOST_REGEX_DETAIL_NS::RegExData::type_pc; - pdata->pbase = p; - const char* end = p; - while(*end)++end; - - unsigned int result = regex_grep(BOOST_REGEX_DETAIL_NS::pred3(v, p, this), p, end, pdata->e, flags); - if(result) - pdata->update(); - return result; -} -#ifndef BOOST_REGEX_NO_FILEITER -namespace BOOST_REGEX_DETAIL_NS{ -struct pred4 -{ - GrepFileCallback cb; - RegEx* pe; - const char* file; - bool ok; - pred4(GrepFileCallback c, RegEx* i, const char* f) : cb(c), pe(i), file(f), ok(true) {} - bool operator()(const match_results& m) - { - pe->pdata->t = RegExData::type_pf; - pe->pdata->fm = m; - pe->pdata->update(); - ok = cb(file, *pe); - return ok; - } -}; -} -namespace{ -void BuildFileList(std::list* pl, const char* files, bool recurse) -{ - file_iterator start(files); - file_iterator end; - if(recurse) - { - // go through sub directories: - char buf[MAX_PATH]; - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(buf, MAX_PATH, start.root())); - if(*buf == 0) - { - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(buf, MAX_PATH, ".")); - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcat_s(buf, MAX_PATH, directory_iterator::separator())); - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcat_s(buf, MAX_PATH, "*")); - } - else - { - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcat_s(buf, MAX_PATH, directory_iterator::separator())); - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcat_s(buf, MAX_PATH, "*")); - } - directory_iterator dstart(buf); - directory_iterator dend; - - // now get the file mask bit of "files": - const char* ptr = files; - while(*ptr) ++ptr; - while((ptr != files) && (*ptr != *directory_iterator::separator()) && (*ptr != '/'))--ptr; - if(ptr != files) ++ptr; - - while(dstart != dend) - { - // Verify that sprintf will not overflow: - if(std::strlen(dstart.path()) + std::strlen(directory_iterator::separator()) + std::strlen(ptr) >= MAX_PATH) - { - // Oops overflow, skip this item: - ++dstart; - continue; - } -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE) - int r = (::sprintf_s)(buf, sizeof(buf), "%s%s%s", dstart.path(), directory_iterator::separator(), ptr); -#else - int r = (std::sprintf)(buf, "%s%s%s", dstart.path(), directory_iterator::separator(), ptr); -#endif - if(r < 0) - { - // sprintf failed, skip this item: - ++dstart; - continue; - } - BuildFileList(pl, buf, recurse); - ++dstart; - } - } - while(start != end) - { - pl->push_back(*start); - ++start; - } -} -} - -unsigned int RegEx::GrepFiles(GrepFileCallback cb, const char* files, bool recurse, match_flag_type flags) -{ - unsigned int result = 0; - std::list file_list; - BuildFileList(&file_list, files, recurse); - std::list::iterator start, end; - start = file_list.begin(); - end = file_list.end(); - - while(start != end) - { - mapfile map((*start).c_str()); - pdata->t = BOOST_REGEX_DETAIL_NS::RegExData::type_pf; - pdata->fbase = map.begin(); - BOOST_REGEX_DETAIL_NS::pred4 pred(cb, this, (*start).c_str()); - int r = regex_grep(pred, map.begin(), map.end(), pdata->e, flags); - result += r; - ++start; - pdata->clean(); - if(pred.ok == false) - return result; - } - - return result; -} - - -unsigned int RegEx::FindFiles(FindFilesCallback cb, const char* files, bool recurse, match_flag_type flags) -{ - unsigned int result = 0; - std::list file_list; - BuildFileList(&file_list, files, recurse); - std::list::iterator start, end; - start = file_list.begin(); - end = file_list.end(); - - while(start != end) - { - mapfile map((*start).c_str()); - pdata->t = BOOST_REGEX_DETAIL_NS::RegExData::type_pf; - pdata->fbase = map.begin(); - - if(regex_search(map.begin(), map.end(), pdata->fm, pdata->e, flags)) - { - ++result; - if(false == cb((*start).c_str())) - return result; - } - //pdata->update(); - ++start; - //pdata->clean(); - } - - return result; -} -#endif - -#ifdef BOOST_REGEX_V3 -#define regex_replace regex_merge -#endif - -std::string RegEx::Merge(const std::string& in, const std::string& fmt, - bool copy, match_flag_type flags) -{ - std::string result; - BOOST_REGEX_DETAIL_NS::string_out_iterator i(result); - if(!copy) flags |= format_no_copy; - regex_replace(i, in.begin(), in.end(), pdata->e, fmt.c_str(), flags); - return result; -} - -std::string RegEx::Merge(const char* in, const char* fmt, - bool copy, match_flag_type flags) -{ - std::string result; - if(!copy) flags |= format_no_copy; - BOOST_REGEX_DETAIL_NS::string_out_iterator i(result); - regex_replace(i, in, in + std::strlen(in), pdata->e, fmt, flags); - return result; -} - -std::size_t RegEx::Split(std::vector& v, - std::string& s, - match_flag_type flags, - unsigned max_count) -{ - return regex_split(std::back_inserter(v), s, pdata->e, flags, max_count); -} - - - -// -// now operators for returning what matched in more detail: -// -std::size_t RegEx::Position(int i)const -{ - switch(pdata->t) - { - case BOOST_REGEX_DETAIL_NS::RegExData::type_pc: - return pdata->m[i].matched ? pdata->m[i].first - pdata->pbase : RegEx::npos; - case BOOST_REGEX_DETAIL_NS::RegExData::type_pf: -#ifndef BOOST_REGEX_NO_FILEITER - return pdata->fm[i].matched ? pdata->fm[i].first - pdata->fbase : RegEx::npos; -#endif - case BOOST_REGEX_DETAIL_NS::RegExData::type_copy: - { - std::map >::iterator pos = pdata->positions.find(i); - if(pos == pdata->positions.end()) - return RegEx::npos; - return (*pos).second; - } - } - return RegEx::npos; -} - -std::size_t RegEx::Marks()const -{ - return pdata->e.mark_count(); -} - - -std::size_t RegEx::Length(int i)const -{ - switch(pdata->t) - { - case BOOST_REGEX_DETAIL_NS::RegExData::type_pc: - return pdata->m[i].matched ? pdata->m[i].second - pdata->m[i].first : RegEx::npos; - case BOOST_REGEX_DETAIL_NS::RegExData::type_pf: -#ifndef BOOST_REGEX_NO_FILEITER - return pdata->fm[i].matched ? pdata->fm[i].second - pdata->fm[i].first : RegEx::npos; -#endif - case BOOST_REGEX_DETAIL_NS::RegExData::type_copy: - { - std::map >::iterator pos = pdata->strings.find(i); - if(pos == pdata->strings.end()) - return RegEx::npos; - return (*pos).second.size(); - } - } - return RegEx::npos; -} - -bool RegEx::Matched(int i)const -{ - switch(pdata->t) - { - case BOOST_REGEX_DETAIL_NS::RegExData::type_pc: - return pdata->m[i].matched; - case BOOST_REGEX_DETAIL_NS::RegExData::type_pf: -#ifndef BOOST_REGEX_NO_FILEITER - return pdata->fm[i].matched; -#endif - case BOOST_REGEX_DETAIL_NS::RegExData::type_copy: - { - std::map >::iterator pos = pdata->strings.find(i); - if(pos == pdata->strings.end()) - return false; - return true; - } - } - return false; -} - - -std::string RegEx::What(int i)const -{ - std::string result; - switch(pdata->t) - { - case BOOST_REGEX_DETAIL_NS::RegExData::type_pc: - if(pdata->m[i].matched) - result.assign(pdata->m[i].first, pdata->m[i].second); - break; - case BOOST_REGEX_DETAIL_NS::RegExData::type_pf: - if(pdata->m[i].matched) - result.assign(to_string(pdata->m[i].first, pdata->m[i].second)); - break; - case BOOST_REGEX_DETAIL_NS::RegExData::type_copy: - { - std::map >::iterator pos = pdata->strings.find(i); - if(pos != pdata->strings.end()) - result = (*pos).second; - break; - } - } - return result; -} - -const std::size_t RegEx::npos = ~static_cast(0); - -} // namespace boost - -#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x550) && (__BORLANDC__ <= 0x551) && !defined(_RWSTD_COMPILE_INSTANTIATE) -// -// this is an ugly hack to work around an ugly problem: -// by default this file will produce unresolved externals during -// linking unless _RWSTD_COMPILE_INSTANTIATE is defined (Borland bug). -// However if _RWSTD_COMPILE_INSTANTIATE is defined then we get separate -// copies of basic_string's static data in the RTL and this DLL, this messes -// with basic_string's memory management and results in run-time crashes, -// Oh sweet joy of Catch 22.... -// -namespace std{ -template<> template<> -basic_string& BOOST_REGEX_DECL -basic_string::replace(char* f1, char* f2, const char* i1, const char* i2) -{ - unsigned insert_pos = f1 - begin(); - unsigned remove_len = f2 - f1; - unsigned insert_len = i2 - i1; - unsigned org_size = size(); - if(insert_len > remove_len) - { - append(insert_len-remove_len, ' '); - std::copy_backward(begin() + insert_pos + remove_len, begin() + org_size, end()); - std::copy(i1, i2, begin() + insert_pos); - } - else - { - std::copy(begin() + insert_pos + remove_len, begin() + org_size, begin() + insert_pos + insert_len); - std::copy(i1, i2, begin() + insert_pos); - erase(size() + insert_len - remove_len); - } - return *this; -} -template<> template<> -basic_string& BOOST_REGEX_DECL -basic_string::replace(wchar_t* f1, wchar_t* f2, const wchar_t* i1, const wchar_t* i2) -{ - unsigned insert_pos = f1 - begin(); - unsigned remove_len = f2 - f1; - unsigned insert_len = i2 - i1; - unsigned org_size = size(); - if(insert_len > remove_len) - { - append(insert_len-remove_len, ' '); - std::copy_backward(begin() + insert_pos + remove_len, begin() + org_size, end()); - std::copy(i1, i2, begin() + insert_pos); - } - else - { - std::copy(begin() + insert_pos + remove_len, begin() + org_size, begin() + insert_pos + insert_len); - std::copy(i1, i2, begin() + insert_pos); - erase(size() + insert_len - remove_len); - } - return *this; -} -} // namespace std -#endif - -#endif - - - - - - - - - - - - - - - - diff --git a/src/boost/libs/regex/src/fileiter.cpp b/src/boost/libs/regex/src/fileiter.cpp deleted file mode 100644 index f9e919c84..000000000 --- a/src/boost/libs/regex/src/fileiter.cpp +++ /dev/null @@ -1,928 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: fileiter.cpp - * VERSION: see - * DESCRIPTION: Implements file io primitives + directory searching for class boost::RegEx. - */ - - -#define BOOST_REGEX_SOURCE - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#if defined(BOOST_NO_STDC_NAMESPACE) -namespace std{ - using ::sprintf; - using ::fseek; - using ::fread; - using ::ftell; - using ::fopen; - using ::fclose; - using ::FILE; - using ::strcpy; - using ::strcpy; - using ::strcat; - using ::strcmp; - using ::strlen; -} -#endif - - -#ifndef BOOST_REGEX_NO_FILEITER - -#if defined(__CYGWIN__) || defined(__CYGWIN32__) -#include -#endif - -#ifdef BOOST_MSVC -# pragma warning(disable: 4800) -#endif - -namespace boost{ - namespace BOOST_REGEX_DETAIL_NS{ -// start with the operating system specific stuff: - -#if (defined(__BORLANDC__) || defined(BOOST_REGEX_FI_WIN32_DIR) || defined(BOOST_MSVC)) && !defined(BOOST_RE_NO_WIN32) - -// platform is DOS or Windows -// directories are separated with '\\' -// and names are insensitive of case - -BOOST_REGEX_DECL const char* _fi_sep = "\\"; -const char* _fi_sep_alt = "/"; -#define BOOST_REGEX_FI_TRANSLATE(c) std::tolower(c) - -#else - -// platform is not DOS or Windows -// directories are separated with '/' -// and names are sensitive of case - -BOOST_REGEX_DECL const char* _fi_sep = "/"; -const char* _fi_sep_alt = _fi_sep; -#define BOOST_REGEX_FI_TRANSLATE(c) c - -#endif - -#ifdef BOOST_REGEX_FI_WIN32_MAP - -void mapfile::open(const char* file) -{ -#if defined(BOOST_NO_ANSI_APIS) - int filename_size = strlen(file); - LPWSTR wide_file = (LPWSTR)_alloca( (filename_size + 1) * sizeof(WCHAR) ); - if(::MultiByteToWideChar(CP_ACP, 0, file, filename_size, wide_file, filename_size + 1) == 0) - hfile = INVALID_HANDLE_VALUE; - else - hfile = CreateFileW(wide_file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); -#elif defined(__CYGWIN__)||defined(__CYGWIN32__) - char win32file[ MAX_PATH ]; - cygwin_conv_to_win32_path( file, win32file ); - hfile = CreateFileA(win32file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); -#else - hfile = CreateFileA(file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); -#endif - if(hfile != INVALID_HANDLE_VALUE) - { - hmap = CreateFileMapping(hfile, 0, PAGE_READONLY, 0, 0, 0); - if((hmap == INVALID_HANDLE_VALUE) || (hmap == NULL)) - { - CloseHandle(hfile); - hmap = 0; - hfile = 0; - std::runtime_error err("Unable to create file mapping."); - boost::BOOST_REGEX_DETAIL_NS::raise_runtime_error(err); - } - _first = static_cast(MapViewOfFile(hmap, FILE_MAP_READ, 0, 0, 0)); - if(_first == 0) - { - CloseHandle(hmap); - CloseHandle(hfile); - hmap = 0; - hfile = 0; - std::runtime_error err("Unable to create file mapping."); - } - _last = _first + GetFileSize(hfile, 0); - } - else - { - hfile = 0; -#ifndef BOOST_NO_EXCEPTIONS - throw std::runtime_error("Unable to open file."); -#else - BOOST_REGEX_NOEH_ASSERT(hfile != INVALID_HANDLE_VALUE); -#endif - } -} - -void mapfile::close() -{ - if(hfile != INVALID_HANDLE_VALUE) - { - UnmapViewOfFile((void*)_first); - CloseHandle(hmap); - CloseHandle(hfile); - hmap = hfile = 0; - _first = _last = 0; - } -} - -#elif !defined(BOOST_RE_NO_STL) - -mapfile_iterator& mapfile_iterator::operator = (const mapfile_iterator& i) -{ - if(file && node) - file->unlock(node); - file = i.file; - node = i.node; - offset = i.offset; - if(file) - file->lock(node); - return *this; -} - -mapfile_iterator& mapfile_iterator::operator++ () -{ - if((++offset == mapfile::buf_size) && file) - { - ++node; - offset = 0; - file->lock(node); - file->unlock(node-1); - } - return *this; -} - -mapfile_iterator mapfile_iterator::operator++ (int) -{ - mapfile_iterator temp(*this); - if((++offset == mapfile::buf_size) && file) - { - ++node; - offset = 0; - file->lock(node); - file->unlock(node-1); - } - return temp; -} - -mapfile_iterator& mapfile_iterator::operator-- () -{ - if((offset == 0) && file) - { - --node; - offset = mapfile::buf_size - 1; - file->lock(node); - file->unlock(node + 1); - } - else - --offset; - return *this; -} - -mapfile_iterator mapfile_iterator::operator-- (int) -{ - mapfile_iterator temp(*this); - if((offset == 0) && file) - { - --node; - offset = mapfile::buf_size - 1; - file->lock(node); - file->unlock(node + 1); - } - else - --offset; - return temp; -} - -mapfile_iterator operator + (const mapfile_iterator& i, long off) -{ - mapfile_iterator temp(i); - temp += off; - return temp; -} - -mapfile_iterator operator - (const mapfile_iterator& i, long off) -{ - mapfile_iterator temp(i); - temp -= off; - return temp; -} - -mapfile::iterator mapfile::begin()const -{ - return mapfile_iterator(this, 0); -} - -mapfile::iterator mapfile::end()const -{ - return mapfile_iterator(this, _size); -} - -void mapfile::lock(pointer* node)const -{ - BOOST_ASSERT(node >= _first); - BOOST_ASSERT(node <= _last); - if(node < _last) - { - if(*node == 0) - { - if(condemed.empty()) - { - *node = new char[sizeof(int) + buf_size]; - *(reinterpret_cast(*node)) = 1; - } - else - { - pointer* p = condemed.front(); - condemed.pop_front(); - *node = *p; - *p = 0; - *(reinterpret_cast(*node)) = 1; - } - - std::size_t read_size = 0; - int read_pos = std::fseek(hfile, (node - _first) * buf_size, SEEK_SET); - - if(0 == read_pos && node == _last - 1) - read_size = std::fread(*node + sizeof(int), _size % buf_size, 1, hfile); - else - read_size = std::fread(*node + sizeof(int), buf_size, 1, hfile); - if((read_size == 0) || (std::ferror(hfile))) - { -#ifndef BOOST_NO_EXCEPTIONS - unlock(node); - throw std::runtime_error("Unable to read file."); -#else - BOOST_REGEX_NOEH_ASSERT((0 == std::ferror(hfile)) && (read_size != 0)); -#endif - } - } - else - { - if(*reinterpret_cast(*node) == 0) - { - *reinterpret_cast(*node) = 1; - condemed.remove(node); - } - else - ++(*reinterpret_cast(*node)); - } - } -} - -void mapfile::unlock(pointer* node)const -{ - BOOST_ASSERT(node >= _first); - BOOST_ASSERT(node <= _last); - if(node < _last) - { - if(--(*reinterpret_cast(*node)) == 0) - { - condemed.push_back(node); - } - } -} - -long int get_file_length(std::FILE* hfile) -{ - long int result; - std::fseek(hfile, 0, SEEK_END); - result = std::ftell(hfile); - std::fseek(hfile, 0, SEEK_SET); - return result; -} - - -void mapfile::open(const char* file) -{ - hfile = std::fopen(file, "rb"); -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - if(hfile != 0) - { - _size = get_file_length(hfile); - long cnodes = (_size + buf_size - 1) / buf_size; - - // check that number of nodes is not too high: - if(cnodes > (long)((INT_MAX) / sizeof(pointer*))) - { - std::fclose(hfile); - hfile = 0; - _size = 0; - return; - } - - _first = new pointer[(int)cnodes]; - _last = _first + cnodes; - std::memset(_first, 0, cnodes*sizeof(pointer)); - } - else - { - std::runtime_error err("Unable to open file."); - } -#ifndef BOOST_NO_EXCEPTIONS - }catch(...) - { close(); throw; } -#endif -} - -void mapfile::close() -{ - if(hfile != 0) - { - pointer* p = _first; - while(p != _last) - { - if(*p) - delete[] *p; - ++p; - } - delete[] _first; - _size = 0; - _first = _last = 0; - std::fclose(hfile); - hfile = 0; - condemed.erase(condemed.begin(), condemed.end()); - } -} - - -#endif - -inline _fi_find_handle find_first_file(const char* wild, _fi_find_data& data) -{ -#ifdef BOOST_NO_ANSI_APIS - std::size_t wild_size = std::strlen(wild); - LPWSTR wide_wild = (LPWSTR)_alloca( (wild_size + 1) * sizeof(WCHAR) ); - if (::MultiByteToWideChar(CP_ACP, 0, wild, wild_size, wide_wild, wild_size + 1) == 0) - return _fi_invalid_handle; - - return FindFirstFileW(wide_wild, &data); -#else - return FindFirstFileA(wild, &data); -#endif -} - -inline bool find_next_file(_fi_find_handle hf, _fi_find_data& data) -{ -#ifdef BOOST_NO_ANSI_APIS - return FindNextFileW(hf, &data); -#else - return FindNextFileA(hf, &data); -#endif -} - -inline void copy_find_file_result_with_overflow_check(const _fi_find_data& data, char* path, size_t max_size) -{ -#ifdef BOOST_NO_ANSI_APIS - if (::WideCharToMultiByte(CP_ACP, 0, data.cFileName, -1, path, max_size, NULL, NULL) == 0) - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(1); -#else - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(path, max_size, data.cFileName)); -#endif -} - -inline bool is_not_current_or_parent_path_string(const _fi_find_data& data) -{ -#ifdef BOOST_NO_ANSI_APIS - return (std::wcscmp(data.cFileName, L".") && std::wcscmp(data.cFileName, L"..")); -#else - return (std::strcmp(data.cFileName, ".") && std::strcmp(data.cFileName, "..")); -#endif -} - - -file_iterator::file_iterator() -{ - _root = _path = 0; - ref = 0; -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - _root = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_root) - _path = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_path) - ptr = _path; - *_path = 0; - *_root = 0; - ref = new file_iterator_ref(); - BOOST_REGEX_NOEH_ASSERT(ref) - ref->hf = _fi_invalid_handle; - ref->count = 1; -#ifndef BOOST_NO_EXCEPTIONS - } - catch(...) - { - delete[] _root; - delete[] _path; - delete ref; - throw; - } -#endif -} - -file_iterator::file_iterator(const char* wild) -{ - _root = _path = 0; - ref = 0; -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - _root = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_root) - _path = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_path) - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_root, MAX_PATH, wild)); - ptr = _root; - while(*ptr)++ptr; - while((ptr > _root) && (*ptr != *_fi_sep) && (*ptr != *_fi_sep_alt))--ptr; - if((ptr == _root) && ( (*ptr== *_fi_sep) || (*ptr==*_fi_sep_alt) ) ) - { - _root[1]='\0'; - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_path, MAX_PATH, _root)); - } - else - { - *ptr = 0; - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_path, MAX_PATH, _root)); - if(*_path == 0) - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_path, MAX_PATH, ".")); - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcat_s(_path, MAX_PATH, _fi_sep)); - } - ptr = _path + std::strlen(_path); - - ref = new file_iterator_ref(); - BOOST_REGEX_NOEH_ASSERT(ref) - ref->hf = find_first_file(wild, ref->_data); - ref->count = 1; - - if(ref->hf == _fi_invalid_handle) - { - *_path = 0; - ptr = _path; - } - else - { - copy_find_file_result_with_overflow_check(ref->_data, ptr, (MAX_PATH - (ptr - _path))); - if(ref->_data.dwFileAttributes & _fi_dir) - next(); - } -#ifndef BOOST_NO_EXCEPTIONS - } - catch(...) - { - delete[] _root; - delete[] _path; - delete ref; - throw; - } -#endif -} - -file_iterator::file_iterator(const file_iterator& other) -{ - _root = _path = 0; - ref = 0; -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - _root = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_root) - _path = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_path) - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_root, MAX_PATH, other._root)); - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_path, MAX_PATH, other._path)); - ptr = _path + (other.ptr - other._path); - ref = other.ref; -#ifndef BOOST_NO_EXCEPTIONS - } - catch(...) - { - delete[] _root; - delete[] _path; - throw; - } -#endif - ++(ref->count); -} - -file_iterator& file_iterator::operator=(const file_iterator& other) -{ - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_root, MAX_PATH, other._root)); - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_path, MAX_PATH, other._path)); - ptr = _path + (other.ptr - other._path); - if(--(ref->count) == 0) - { - if(ref->hf != _fi_invalid_handle) - FindClose(ref->hf); - delete ref; - } - ref = other.ref; - ++(ref->count); - return *this; -} - - -file_iterator::~file_iterator() -{ - delete[] _root; - delete[] _path; - if(--(ref->count) == 0) - { - if(ref->hf != _fi_invalid_handle) - FindClose(ref->hf); - delete ref; - } -} - -file_iterator file_iterator::operator++(int) -{ - file_iterator temp(*this); - next(); - return temp; -} - - -void file_iterator::next() -{ - if(ref->hf != _fi_invalid_handle) - { - bool cont = true; - while(cont) - { - cont = find_next_file(ref->hf, ref->_data); - if(cont && ((ref->_data.dwFileAttributes & _fi_dir) == 0)) - break; - } - if(!cont) - { - // end of sequence - FindClose(ref->hf); - ref->hf = _fi_invalid_handle; - *_path = 0; - ptr = _path; - } - else - copy_find_file_result_with_overflow_check(ref->_data, ptr, MAX_PATH - (ptr - _path)); - } -} - - - -directory_iterator::directory_iterator() -{ - _root = _path = 0; - ref = 0; -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - _root = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_root) - _path = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_path) - ptr = _path; - *_path = 0; - *_root = 0; - ref = new file_iterator_ref(); - BOOST_REGEX_NOEH_ASSERT(ref) - ref->hf = _fi_invalid_handle; - ref->count = 1; -#ifndef BOOST_NO_EXCEPTIONS - } - catch(...) - { - delete[] _root; - delete[] _path; - delete ref; - throw; - } -#endif -} - -directory_iterator::directory_iterator(const char* wild) -{ - _root = _path = 0; - ref = 0; -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - _root = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_root) - _path = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_path) - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_root, MAX_PATH, wild)); - ptr = _root; - while(*ptr)++ptr; - while((ptr > _root) && (*ptr != *_fi_sep) && (*ptr != *_fi_sep_alt))--ptr; - - if((ptr == _root) && ( (*ptr== *_fi_sep) || (*ptr==*_fi_sep_alt) ) ) - { - _root[1]='\0'; - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_path, MAX_PATH, _root)); - } - else - { - *ptr = 0; - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_path, MAX_PATH, _root)); - if(*_path == 0) - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_path, MAX_PATH, ".")); - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcat_s(_path, MAX_PATH, _fi_sep)); - } - ptr = _path + std::strlen(_path); - - ref = new file_iterator_ref(); - BOOST_REGEX_NOEH_ASSERT(ref) - ref->count = 1; - ref->hf = find_first_file(wild, ref->_data); - if(ref->hf == _fi_invalid_handle) - { - *_path = 0; - ptr = _path; - } - else - { - copy_find_file_result_with_overflow_check(ref->_data, ptr, MAX_PATH - (ptr - _path)); - if(((ref->_data.dwFileAttributes & _fi_dir) == 0) || (std::strcmp(ptr, ".") == 0) || (std::strcmp(ptr, "..") == 0)) - next(); - } -#ifndef BOOST_NO_EXCEPTIONS - } - catch(...) - { - delete[] _root; - delete[] _path; - delete ref; - throw; - } -#endif -} - -directory_iterator::~directory_iterator() -{ - delete[] _root; - delete[] _path; - if(--(ref->count) == 0) - { - if(ref->hf != _fi_invalid_handle) - FindClose(ref->hf); - delete ref; - } -} - -directory_iterator::directory_iterator(const directory_iterator& other) -{ - _root = _path = 0; - ref = 0; -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - _root = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_root) - _path = new char[MAX_PATH]; - BOOST_REGEX_NOEH_ASSERT(_path) - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_root, MAX_PATH, other._root)); - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_path, MAX_PATH, other._path)); - ptr = _path + (other.ptr - other._path); - ref = other.ref; -#ifndef BOOST_NO_EXCEPTIONS - } - catch(...) - { - delete[] _root; - delete[] _path; - throw; - } -#endif - ++(ref->count); -} - -directory_iterator& directory_iterator::operator=(const directory_iterator& other) -{ - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_root, MAX_PATH, other._root)); - BOOST_REGEX_DETAIL_NS::overflow_error_if_not_zero(BOOST_REGEX_DETAIL_NS::strcpy_s(_path, MAX_PATH, other._path)); - ptr = _path + (other.ptr - other._path); - if(--(ref->count) == 0) - { - if(ref->hf != _fi_invalid_handle) - FindClose(ref->hf); - delete ref; - } - ref = other.ref; - ++(ref->count); - return *this; -} - -directory_iterator directory_iterator::operator++(int) -{ - directory_iterator temp(*this); - next(); - return temp; -} - -void directory_iterator::next() -{ - if(ref->hf != _fi_invalid_handle) - { - bool cont = true; - while(cont) - { - cont = find_next_file(ref->hf, ref->_data); - if(cont && (ref->_data.dwFileAttributes & _fi_dir)) - { - if(is_not_current_or_parent_path_string(ref->_data)) - break; - } - } - if(!cont) - { - // end of sequence - FindClose(ref->hf); - ref->hf = _fi_invalid_handle; - *_path = 0; - ptr = _path; - } - else - copy_find_file_result_with_overflow_check(ref->_data, ptr, MAX_PATH - (ptr - _path)); - } -} - - -#ifdef BOOST_REGEX_FI_POSIX_DIR - -struct _fi_priv_data -{ - char root[MAX_PATH]; - char* mask; - DIR* d; - _fi_priv_data(const char* p); -}; - -_fi_priv_data::_fi_priv_data(const char* p) -{ - std::strcpy(root, p); - mask = root; - while(*mask) ++mask; - while((mask > root) && (*mask != *_fi_sep) && (*mask != *_fi_sep_alt)) --mask; - if(mask == root && ((*mask== *_fi_sep) || (*mask == *_fi_sep_alt)) ) - { - root[1] = '\0'; - std::strcpy(root+2, p+1); - mask = root+2; - } - else if(mask == root) - { - root[0] = '.'; - root[1] = '\0'; - std::strcpy(root+2, p); - mask = root+2; - } - else - { - *mask = 0; - ++mask; - } -} - -bool iswild(const char* mask, const char* name) -{ - while(*mask && *name) - { - switch(*mask) - { - case '?': - ++name; - ++mask; - continue; - case '*': - ++mask; - if(*mask == 0) - return true; - while(*name) - { - if(iswild(mask, name)) - return true; - ++name; - } - return false; - case '.': - if(0 == *name) - { - ++mask; - continue; - } - // fall through - default: - if(BOOST_REGEX_FI_TRANSLATE(*mask) != BOOST_REGEX_FI_TRANSLATE(*name)) - return false; - ++mask; - ++name; - continue; - } - } - if(*mask != *name) - return false; - return true; -} - -unsigned _fi_attributes(const char* root, const char* name) -{ - char buf[MAX_PATH]; - // verify that we can not overflow: - if(std::strlen(root) + std::strlen(_fi_sep) + std::strlen(name) >= MAX_PATH) - return 0; - int r; - if( ( (root[0] == *_fi_sep) || (root[0] == *_fi_sep_alt) ) && (root[1] == '\0') ) - r = (std::sprintf)(buf, "%s%s", root, name); - else - r = (std::sprintf)(buf, "%s%s%s", root, _fi_sep, name); - if(r < 0) - return 0; // sprintf failed - DIR* d = opendir(buf); - if(d) - { - closedir(d); - return _fi_dir; - } - return 0; -} - -_fi_find_handle _fi_FindFirstFile(const char* lpFileName, _fi_find_data* lpFindFileData) -{ - _fi_find_handle dat = new _fi_priv_data(lpFileName); - - DIR* h = opendir(dat->root); - dat->d = h; - if(h != 0) - { - if(_fi_FindNextFile(dat, lpFindFileData)) - return dat; - closedir(h); - } - delete dat; - return 0; -} - -bool _fi_FindNextFile(_fi_find_handle dat, _fi_find_data* lpFindFileData) -{ - dirent* d; - do - { - d = readdir(dat->d); - } while(d && !iswild(dat->mask, d->d_name)); - - if(d) - { - std::strcpy(lpFindFileData->cFileName, d->d_name); - lpFindFileData->dwFileAttributes = _fi_attributes(dat->root, d->d_name); - return true; - } - return false; -} - -bool _fi_FindClose(_fi_find_handle dat) -{ - closedir(dat->d); - delete dat; - return true; -} - -#endif - -} // namespace BOOST_REGEX_DETAIL_NS -} // namspace boost - -#endif // BOOST_REGEX_NO_FILEITER - - - - - - - - - - - - diff --git a/src/boost/libs/regex/src/icu.cpp b/src/boost/libs/regex/src/icu.cpp deleted file mode 100644 index 0307f2c75..000000000 --- a/src/boost/libs/regex/src/icu.cpp +++ /dev/null @@ -1,511 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE icu.cpp - * VERSION see - * DESCRIPTION: Unicode regular expressions on top of the ICU Library. - */ -#define BOOST_REGEX_SOURCE - -#include -#ifdef BOOST_HAS_ICU -#define BOOST_REGEX_ICU_INSTANTIATE -#include - -#ifdef BOOST_INTEL -#pragma warning(disable:981 2259 383) -#endif - -namespace boost{ - -namespace BOOST_REGEX_DETAIL_NS{ - -icu_regex_traits_implementation::string_type icu_regex_traits_implementation::do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const -{ - // TODO make thread safe!!!! : - typedef u32_to_u16_iterator itt; - itt i(p1), j(p2); -#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS - std::vector< ::UChar> t(i, j); -#else - std::vector< ::UChar> t; - while(i != j) - t.push_back(*i++); -#endif - ::uint8_t result[100]; - ::int32_t len; - if(t.size()) - len = pcoll->getSortKey(&*t.begin(), static_cast< ::int32_t>(t.size()), result, sizeof(result)); - else - len = pcoll->getSortKey(static_cast(0), static_cast< ::int32_t>(0), result, sizeof(result)); - if(std::size_t(len) > sizeof(result)) - { - scoped_array< ::uint8_t> presult(new ::uint8_t[len+1]); - if(t.size()) - len = pcoll->getSortKey(&*t.begin(), static_cast< ::int32_t>(t.size()), presult.get(), len+1); - else - len = pcoll->getSortKey(static_cast(0), static_cast< ::int32_t>(0), presult.get(), len+1); - if((0 == presult[len-1]) && (len > 1)) - --len; -#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS - return string_type(presult.get(), presult.get()+len); -#else - string_type sresult; - ::uint8_t const* ia = presult.get(); - ::uint8_t const* ib = presult.get()+len; - while(ia != ib) - sresult.push_back(*ia++); - return sresult; -#endif - } - if((0 == result[len-1]) && (len > 1)) - --len; -#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS - return string_type(result, result+len); -#else - string_type sresult; - ::uint8_t const* ia = result; - ::uint8_t const* ib = result+len; - while(ia != ib) - sresult.push_back(*ia++); - return sresult; -#endif -} - -} - -icu_regex_traits::size_type icu_regex_traits::length(const char_type* p) -{ - size_type result = 0; - while(*p) - { - ++p; - ++result; - } - return result; -} - -// -// define our bitmasks: -// -const icu_regex_traits::char_class_type icu_regex_traits::mask_blank = icu_regex_traits::char_class_type(1) << offset_blank; -const icu_regex_traits::char_class_type icu_regex_traits::mask_space = icu_regex_traits::char_class_type(1) << offset_space; -const icu_regex_traits::char_class_type icu_regex_traits::mask_xdigit = icu_regex_traits::char_class_type(1) << offset_xdigit; -const icu_regex_traits::char_class_type icu_regex_traits::mask_underscore = icu_regex_traits::char_class_type(1) << offset_underscore; -const icu_regex_traits::char_class_type icu_regex_traits::mask_unicode = icu_regex_traits::char_class_type(1) << offset_unicode; -const icu_regex_traits::char_class_type icu_regex_traits::mask_any = icu_regex_traits::char_class_type(1) << offset_any; -const icu_regex_traits::char_class_type icu_regex_traits::mask_ascii = icu_regex_traits::char_class_type(1) << offset_ascii; -const icu_regex_traits::char_class_type icu_regex_traits::mask_horizontal = icu_regex_traits::char_class_type(1) << offset_horizontal; -const icu_regex_traits::char_class_type icu_regex_traits::mask_vertical = icu_regex_traits::char_class_type(1) << offset_vertical; - -icu_regex_traits::char_class_type icu_regex_traits::lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2) -{ - static const ::UChar32 prop_name_table[] = { - /* any */ 'a', 'n', 'y', - /* ascii */ 'a', 's', 'c', 'i', 'i', - /* assigned */ 'a', 's', 's', 'i', 'g', 'n', 'e', 'd', - /* c* */ 'c', '*', - /* cc */ 'c', 'c', - /* cf */ 'c', 'f', - /* closepunctuation */ 'c', 'l', 'o', 's', 'e', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n', - /* cn */ 'c', 'n', - /* co */ 'c', 'o', - /* connectorpunctuation */ 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n', - /* control */ 'c', 'o', 'n', 't', 'r', 'o', 'l', - /* cs */ 'c', 's', - /* currencysymbol */ 'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', 's', 'y', 'm', 'b', 'o', 'l', - /* dashpunctuation */ 'd', 'a', 's', 'h', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n', - /* decimaldigitnumber */ 'd', 'e', 'c', 'i', 'm', 'a', 'l', 'd', 'i', 'g', 'i', 't', 'n', 'u', 'm', 'b', 'e', 'r', - /* enclosingmark */ 'e', 'n', 'c', 'l', 'o', 's', 'i', 'n', 'g', 'm', 'a', 'r', 'k', - /* finalpunctuation */ 'f', 'i', 'n', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n', - /* format */ 'f', 'o', 'r', 'm', 'a', 't', - /* initialpunctuation */ 'i', 'n', 'i', 't', 'i', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n', - /* l* */ 'l', '*', - /* letter */ 'l', 'e', 't', 't', 'e', 'r', - /* letternumber */ 'l', 'e', 't', 't', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r', - /* lineseparator */ 'l', 'i', 'n', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r', - /* ll */ 'l', 'l', - /* lm */ 'l', 'm', - /* lo */ 'l', 'o', - /* lowercaseletter */ 'l', 'o', 'w', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r', - /* lt */ 'l', 't', - /* lu */ 'l', 'u', - /* m* */ 'm', '*', - /* mark */ 'm', 'a', 'r', 'k', - /* mathsymbol */ 'm', 'a', 't', 'h', 's', 'y', 'm', 'b', 'o', 'l', - /* mc */ 'm', 'c', - /* me */ 'm', 'e', - /* mn */ 'm', 'n', - /* modifierletter */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r', - /* modifiersymbol */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l', - /* n* */ 'n', '*', - /* nd */ 'n', 'd', - /* nl */ 'n', 'l', - /* no */ 'n', 'o', - /* nonspacingmark */ 'n', 'o', 'n', 's', 'p', 'a', 'c', 'i', 'n', 'g', 'm', 'a', 'r', 'k', - /* notassigned */ 'n', 'o', 't', 'a', 's', 's', 'i', 'g', 'n', 'e', 'd', - /* number */ 'n', 'u', 'm', 'b', 'e', 'r', - /* openpunctuation */ 'o', 'p', 'e', 'n', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n', - /* other */ 'o', 't', 'h', 'e', 'r', - /* otherletter */ 'o', 't', 'h', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r', - /* othernumber */ 'o', 't', 'h', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r', - /* otherpunctuation */ 'o', 't', 'h', 'e', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n', - /* othersymbol */ 'o', 't', 'h', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l', - /* p* */ 'p', '*', - /* paragraphseparator */ 'p', 'a', 'r', 'a', 'g', 'r', 'a', 'p', 'h', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r', - /* pc */ 'p', 'c', - /* pd */ 'p', 'd', - /* pe */ 'p', 'e', - /* pf */ 'p', 'f', - /* pi */ 'p', 'i', - /* po */ 'p', 'o', - /* privateuse */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'u', 's', 'e', - /* ps */ 'p', 's', - /* punctuation */ 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n', - /* s* */ 's', '*', - /* sc */ 's', 'c', - /* separator */ 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r', - /* sk */ 's', 'k', - /* sm */ 's', 'm', - /* so */ 's', 'o', - /* spaceseparator */ 's', 'p', 'a', 'c', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r', - /* spacingcombiningmark */ 's', 'p', 'a', 'c', 'i', 'n', 'g', 'c', 'o', 'm', 'b', 'i', 'n', 'i', 'n', 'g', 'm', 'a', 'r', 'k', - /* surrogate */ 's', 'u', 'r', 'r', 'o', 'g', 'a', 't', 'e', - /* symbol */ 's', 'y', 'm', 'b', 'o', 'l', - /* titlecase */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e', - /* titlecaseletter */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r', - /* uppercaseletter */ 'u', 'p', 'p', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r', - /* z* */ 'z', '*', - /* zl */ 'z', 'l', - /* zp */ 'z', 'p', - /* zs */ 'z', 's', - }; - - static const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32> range_data[] = { - { prop_name_table+0, prop_name_table+3, }, // any - { prop_name_table+3, prop_name_table+8, }, // ascii - { prop_name_table+8, prop_name_table+16, }, // assigned - { prop_name_table+16, prop_name_table+18, }, // c* - { prop_name_table+18, prop_name_table+20, }, // cc - { prop_name_table+20, prop_name_table+22, }, // cf - { prop_name_table+22, prop_name_table+38, }, // closepunctuation - { prop_name_table+38, prop_name_table+40, }, // cn - { prop_name_table+40, prop_name_table+42, }, // co - { prop_name_table+42, prop_name_table+62, }, // connectorpunctuation - { prop_name_table+62, prop_name_table+69, }, // control - { prop_name_table+69, prop_name_table+71, }, // cs - { prop_name_table+71, prop_name_table+85, }, // currencysymbol - { prop_name_table+85, prop_name_table+100, }, // dashpunctuation - { prop_name_table+100, prop_name_table+118, }, // decimaldigitnumber - { prop_name_table+118, prop_name_table+131, }, // enclosingmark - { prop_name_table+131, prop_name_table+147, }, // finalpunctuation - { prop_name_table+147, prop_name_table+153, }, // format - { prop_name_table+153, prop_name_table+171, }, // initialpunctuation - { prop_name_table+171, prop_name_table+173, }, // l* - { prop_name_table+173, prop_name_table+179, }, // letter - { prop_name_table+179, prop_name_table+191, }, // letternumber - { prop_name_table+191, prop_name_table+204, }, // lineseparator - { prop_name_table+204, prop_name_table+206, }, // ll - { prop_name_table+206, prop_name_table+208, }, // lm - { prop_name_table+208, prop_name_table+210, }, // lo - { prop_name_table+210, prop_name_table+225, }, // lowercaseletter - { prop_name_table+225, prop_name_table+227, }, // lt - { prop_name_table+227, prop_name_table+229, }, // lu - { prop_name_table+229, prop_name_table+231, }, // m* - { prop_name_table+231, prop_name_table+235, }, // mark - { prop_name_table+235, prop_name_table+245, }, // mathsymbol - { prop_name_table+245, prop_name_table+247, }, // mc - { prop_name_table+247, prop_name_table+249, }, // me - { prop_name_table+249, prop_name_table+251, }, // mn - { prop_name_table+251, prop_name_table+265, }, // modifierletter - { prop_name_table+265, prop_name_table+279, }, // modifiersymbol - { prop_name_table+279, prop_name_table+281, }, // n* - { prop_name_table+281, prop_name_table+283, }, // nd - { prop_name_table+283, prop_name_table+285, }, // nl - { prop_name_table+285, prop_name_table+287, }, // no - { prop_name_table+287, prop_name_table+301, }, // nonspacingmark - { prop_name_table+301, prop_name_table+312, }, // notassigned - { prop_name_table+312, prop_name_table+318, }, // number - { prop_name_table+318, prop_name_table+333, }, // openpunctuation - { prop_name_table+333, prop_name_table+338, }, // other - { prop_name_table+338, prop_name_table+349, }, // otherletter - { prop_name_table+349, prop_name_table+360, }, // othernumber - { prop_name_table+360, prop_name_table+376, }, // otherpunctuation - { prop_name_table+376, prop_name_table+387, }, // othersymbol - { prop_name_table+387, prop_name_table+389, }, // p* - { prop_name_table+389, prop_name_table+407, }, // paragraphseparator - { prop_name_table+407, prop_name_table+409, }, // pc - { prop_name_table+409, prop_name_table+411, }, // pd - { prop_name_table+411, prop_name_table+413, }, // pe - { prop_name_table+413, prop_name_table+415, }, // pf - { prop_name_table+415, prop_name_table+417, }, // pi - { prop_name_table+417, prop_name_table+419, }, // po - { prop_name_table+419, prop_name_table+429, }, // privateuse - { prop_name_table+429, prop_name_table+431, }, // ps - { prop_name_table+431, prop_name_table+442, }, // punctuation - { prop_name_table+442, prop_name_table+444, }, // s* - { prop_name_table+444, prop_name_table+446, }, // sc - { prop_name_table+446, prop_name_table+455, }, // separator - { prop_name_table+455, prop_name_table+457, }, // sk - { prop_name_table+457, prop_name_table+459, }, // sm - { prop_name_table+459, prop_name_table+461, }, // so - { prop_name_table+461, prop_name_table+475, }, // spaceseparator - { prop_name_table+475, prop_name_table+495, }, // spacingcombiningmark - { prop_name_table+495, prop_name_table+504, }, // surrogate - { prop_name_table+504, prop_name_table+510, }, // symbol - { prop_name_table+510, prop_name_table+519, }, // titlecase - { prop_name_table+519, prop_name_table+534, }, // titlecaseletter - { prop_name_table+534, prop_name_table+549, }, // uppercaseletter - { prop_name_table+549, prop_name_table+551, }, // z* - { prop_name_table+551, prop_name_table+553, }, // zl - { prop_name_table+553, prop_name_table+555, }, // zp - { prop_name_table+555, prop_name_table+557, }, // zs - }; - - static const icu_regex_traits::char_class_type icu_class_map[] = { - icu_regex_traits::mask_any, // any - icu_regex_traits::mask_ascii, // ascii - (0x3FFFFFFFu) & ~(U_GC_CN_MASK), // assigned - U_GC_C_MASK, // c* - U_GC_CC_MASK, // cc - U_GC_CF_MASK, // cf - U_GC_PE_MASK, // closepunctuation - U_GC_CN_MASK, // cn - U_GC_CO_MASK, // co - U_GC_PC_MASK, // connectorpunctuation - U_GC_CC_MASK, // control - U_GC_CS_MASK, // cs - U_GC_SC_MASK, // currencysymbol - U_GC_PD_MASK, // dashpunctuation - U_GC_ND_MASK, // decimaldigitnumber - U_GC_ME_MASK, // enclosingmark - U_GC_PF_MASK, // finalpunctuation - U_GC_CF_MASK, // format - U_GC_PI_MASK, // initialpunctuation - U_GC_L_MASK, // l* - U_GC_L_MASK, // letter - U_GC_NL_MASK, // letternumber - U_GC_ZL_MASK, // lineseparator - U_GC_LL_MASK, // ll - U_GC_LM_MASK, // lm - U_GC_LO_MASK, // lo - U_GC_LL_MASK, // lowercaseletter - U_GC_LT_MASK, // lt - U_GC_LU_MASK, // lu - U_GC_M_MASK, // m* - U_GC_M_MASK, // mark - U_GC_SM_MASK, // mathsymbol - U_GC_MC_MASK, // mc - U_GC_ME_MASK, // me - U_GC_MN_MASK, // mn - U_GC_LM_MASK, // modifierletter - U_GC_SK_MASK, // modifiersymbol - U_GC_N_MASK, // n* - U_GC_ND_MASK, // nd - U_GC_NL_MASK, // nl - U_GC_NO_MASK, // no - U_GC_MN_MASK, // nonspacingmark - U_GC_CN_MASK, // notassigned - U_GC_N_MASK, // number - U_GC_PS_MASK, // openpunctuation - U_GC_C_MASK, // other - U_GC_LO_MASK, // otherletter - U_GC_NO_MASK, // othernumber - U_GC_PO_MASK, // otherpunctuation - U_GC_SO_MASK, // othersymbol - U_GC_P_MASK, // p* - U_GC_ZP_MASK, // paragraphseparator - U_GC_PC_MASK, // pc - U_GC_PD_MASK, // pd - U_GC_PE_MASK, // pe - U_GC_PF_MASK, // pf - U_GC_PI_MASK, // pi - U_GC_PO_MASK, // po - U_GC_CO_MASK, // privateuse - U_GC_PS_MASK, // ps - U_GC_P_MASK, // punctuation - U_GC_S_MASK, // s* - U_GC_SC_MASK, // sc - U_GC_Z_MASK, // separator - U_GC_SK_MASK, // sk - U_GC_SM_MASK, // sm - U_GC_SO_MASK, // so - U_GC_ZS_MASK, // spaceseparator - U_GC_MC_MASK, // spacingcombiningmark - U_GC_CS_MASK, // surrogate - U_GC_S_MASK, // symbol - U_GC_LT_MASK, // titlecase - U_GC_LT_MASK, // titlecaseletter - U_GC_LU_MASK, // uppercaseletter - U_GC_Z_MASK, // z* - U_GC_ZL_MASK, // zl - U_GC_ZP_MASK, // zp - U_GC_ZS_MASK, // zs - }; - - - static const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32>* ranges_begin = range_data; - static const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32>* ranges_end = range_data + (sizeof(range_data)/sizeof(range_data[0])); - - BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32> t = { p1, p2, }; - const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32>* p = std::lower_bound(ranges_begin, ranges_end, t); - if((p != ranges_end) && (t == *p)) - return icu_class_map[p - ranges_begin]; - return 0; -} - -icu_regex_traits::char_class_type icu_regex_traits::lookup_classname(const char_type* p1, const char_type* p2) const -{ - static const char_class_type masks[] = - { - 0, - U_GC_L_MASK | U_GC_ND_MASK, - U_GC_L_MASK, - mask_blank, - U_GC_CC_MASK | U_GC_CF_MASK | U_GC_ZL_MASK | U_GC_ZP_MASK, - U_GC_ND_MASK, - U_GC_ND_MASK, - (0x3FFFFFFFu) & ~(U_GC_CC_MASK | U_GC_CF_MASK | U_GC_CS_MASK | U_GC_CN_MASK | U_GC_Z_MASK), - mask_horizontal, - U_GC_LL_MASK, - U_GC_LL_MASK, - ~(U_GC_C_MASK), - U_GC_P_MASK, - char_class_type(U_GC_Z_MASK) | mask_space, - char_class_type(U_GC_Z_MASK) | mask_space, - U_GC_LU_MASK, - mask_unicode, - U_GC_LU_MASK, - mask_vertical, - char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore, - char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore, - char_class_type(U_GC_ND_MASK) | mask_xdigit, - }; - - int idx = ::boost::BOOST_REGEX_DETAIL_NS::get_default_class_id(p1, p2); - if(idx >= 0) - return masks[idx+1]; - char_class_type result = lookup_icu_mask(p1, p2); - if(result != 0) - return result; - - if(idx < 0) - { - string_type s(p1, p2); - string_type::size_type i = 0; - while(i < s.size()) - { - s[i] = static_cast((::u_tolower)(s[i])); - if(::u_isspace(s[i]) || (s[i] == '-') || (s[i] == '_')) - s.erase(s.begin()+i, s.begin()+i+1); - else - { - s[i] = static_cast((::u_tolower)(s[i])); - ++i; - } - } - if(s.size()) - idx = ::boost::BOOST_REGEX_DETAIL_NS::get_default_class_id(&*s.begin(), &*s.begin() + s.size()); - if(idx >= 0) - return masks[idx+1]; - if(s.size()) - result = lookup_icu_mask(&*s.begin(), &*s.begin() + s.size()); - if(result != 0) - return result; - } - BOOST_ASSERT(std::size_t(idx+1) < sizeof(masks) / sizeof(masks[0])); - return masks[idx+1]; -} - -icu_regex_traits::string_type icu_regex_traits::lookup_collatename(const char_type* p1, const char_type* p2) const -{ - string_type result; -#ifdef BOOST_NO_CXX98_BINDERS - if(std::find_if(p1, p2, std::bind(std::greater< ::UChar32>(), std::placeholders::_1, 0x7f)) == p2) -#else - if(std::find_if(p1, p2, std::bind2nd(std::greater< ::UChar32>(), 0x7f)) == p2) -#endif - { -#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS - std::string s(p1, p2); -#else - std::string s; - const char_type* p3 = p1; - while(p3 != p2) - s.append(1, *p3++); -#endif - // Try Unicode name: - UErrorCode err = U_ZERO_ERROR; - UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, s.c_str(), &err); - if(U_SUCCESS(err)) - { - result.push_back(c); - return result; - } - // Try Unicode-extended name: - err = U_ZERO_ERROR; - c = ::u_charFromName(U_EXTENDED_CHAR_NAME, s.c_str(), &err); - if(U_SUCCESS(err)) - { - result.push_back(c); - return result; - } - // try POSIX name: - s = ::boost::BOOST_REGEX_DETAIL_NS::lookup_default_collate_name(s); -#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS - result.assign(s.begin(), s.end()); -#else - result.clear(); - std::string::const_iterator si, sj; - si = s.begin(); - sj = s.end(); - while(si != sj) - result.push_back(*si++); -#endif - } - if(result.empty() && (p2-p1 == 1)) - result.push_back(*p1); - return result; -} - -bool icu_regex_traits::isctype(char_type c, char_class_type f) const -{ - // check for standard catagories first: - char_class_type m = char_class_type(static_cast(1) << u_charType(c)); - if((m & f) != 0) - return true; - // now check for special cases: - if(((f & mask_blank) != 0) && u_isblank(c)) - return true; - if(((f & mask_space) != 0) && u_isspace(c)) - return true; - if(((f & mask_xdigit) != 0) && (u_digit(c, 16) >= 0)) - return true; - if(((f & mask_unicode) != 0) && (c >= 0x100)) - return true; - if(((f & mask_underscore) != 0) && (c == '_')) - return true; - if(((f & mask_any) != 0) && (c <= 0x10FFFF)) - return true; - if(((f & mask_ascii) != 0) && (c <= 0x7F)) - return true; - if(((f & mask_vertical) != 0) && (::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) || (c == static_cast('\v')) || (m == U_GC_ZL_MASK) || (m == U_GC_ZP_MASK))) - return true; - if(((f & mask_horizontal) != 0) && !::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) && u_isspace(c) && (c != static_cast('\v'))) - return true; - return false; -} - -} - -#endif // BOOST_HAS_ICU diff --git a/src/boost/libs/regex/src/instances.cpp b/src/boost/libs/regex/src/instances.cpp deleted file mode 100644 index 6b8f3660a..000000000 --- a/src/boost/libs/regex/src/instances.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: instances.cpp - * VERSION: see - * DESCRIPTION: regex narrow character template instances. - */ - -#define BOOST_REGEX_SOURCE - -#include - -#if !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES) -#define BOOST_REGEX_NARROW_INSTANTIATE - -#ifdef __BORLANDC__ -#pragma hrdstop -#endif - -#include - -#endif diff --git a/src/boost/libs/regex/src/internals.hpp b/src/boost/libs/regex/src/internals.hpp deleted file mode 100644 index d6247a61d..000000000 --- a/src/boost/libs/regex/src/internals.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - * Copyright (c) 2011 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - -#ifndef BOOST_REGEX_SRC_INTERNALS_HPP -#define BOOST_REGEX_SRC_INTERNALS_HPP - -enum -{ - char_class_space=1<<0, - char_class_print=1<<1, - char_class_cntrl=1<<2, - char_class_upper=1<<3, - char_class_lower=1<<4, - char_class_alpha=1<<5, - char_class_digit=1<<6, - char_class_punct=1<<7, - char_class_xdigit=1<<8, - char_class_alnum=char_class_alpha|char_class_digit, - char_class_graph=char_class_alnum|char_class_punct, - char_class_blank=1<<9, - char_class_word=1<<10, - char_class_unicode=1<<11, - char_class_horizontal=1<<12, - char_class_vertical=1<<13 -}; - -#endif // BOOST_REGEX_SRC_INTERNALS_HPP diff --git a/src/boost/libs/regex/src/posix_api.cpp b/src/boost/libs/regex/src/posix_api.cpp deleted file mode 100644 index d023e71e1..000000000 --- a/src/boost/libs/regex/src/posix_api.cpp +++ /dev/null @@ -1,295 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: posix_api.cpp - * VERSION: see - * DESCRIPTION: Implements the Posix API wrappers. - */ - -#define BOOST_REGEX_SOURCE - -#include -#include -#include -#include - -#if defined(BOOST_NO_STDC_NAMESPACE) -namespace std{ - using ::sprintf; - using ::strcpy; - using ::strcmp; -} -#endif - - -namespace boost{ - -namespace{ - -unsigned int magic_value = 25631; - -const char* names[] = { - "REG_NOERROR", - "REG_NOMATCH", - "REG_BADPAT", - "REG_ECOLLATE", - "REG_ECTYPE", - "REG_EESCAPE", - "REG_ESUBREG", - "REG_EBRACK", - "REG_EPAREN", - "REG_EBRACE", - "REG_BADBR", - "REG_ERANGE", - "REG_ESPACE", - "REG_BADRPT", - "REG_EEND", - "REG_ESIZE", - "REG_ERPAREN", - "REG_EMPTY", - "REG_ECOMPLEXITY", - "REG_ESTACK", - "REG_E_PERL", - "REG_E_UNKNOWN", -}; -} // namespace - -typedef boost::basic_regex > c_regex_type; - -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompA(regex_tA* expression, const char* ptr, int f) -{ -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - expression->guts = new c_regex_type(); -#ifndef BOOST_NO_EXCEPTIONS - } catch(...) - { - expression->guts = 0; - return REG_ESPACE; - } -#else - if(0 == expression->guts) - return REG_E_MEMORY; -#endif - // set default flags: - boost::uint_fast32_t flags = (f & REG_PERLEX) ? 0 : ((f & REG_EXTENDED) ? regex::extended : regex::basic); - expression->eflags = (f & REG_NEWLINE) ? match_not_dot_newline : match_default; - // and translate those that are actually set: - - if(f & REG_NOCOLLATE) - { - flags |= regex::nocollate; -#ifndef BOOST_REGEX_V3 - flags &= ~regex::collate; -#endif - } - - if(f & REG_NOSUB) - { - //expression->eflags |= match_any; - flags |= regex::nosubs; - } - - if(f & REG_NOSPEC) - flags |= regex::literal; - if(f & REG_ICASE) - flags |= regex::icase; - if(f & REG_ESCAPE_IN_LISTS) - flags &= ~regex::no_escape_in_lists; - if(f & REG_NEWLINE_ALT) - flags |= regex::newline_alt; - - const char* p2; - if(f & REG_PEND) - p2 = expression->re_endp; - else p2 = ptr + std::strlen(ptr); - - int result; - -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - expression->re_magic = magic_value; - static_cast(expression->guts)->set_expression(ptr, p2, flags); - expression->re_nsub = static_cast(expression->guts)->mark_count(); - result = static_cast(expression->guts)->error_code(); -#ifndef BOOST_NO_EXCEPTIONS - } - catch(const boost::regex_error& be) - { - result = be.code(); - } - catch(...) - { - result = REG_E_UNKNOWN; - } -#endif - if(result) - regfreeA(expression); - return result; - -} - -BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int code, const regex_tA* e, char* buf, regsize_t buf_size) -{ - std::size_t result = 0; - if(code & REG_ITOA) - { - code &= ~REG_ITOA; - if(code <= (int)REG_E_UNKNOWN) - { - result = std::strlen(names[code]) + 1; - if(buf_size >= result) - BOOST_REGEX_DETAIL_NS::strcpy_s(buf, buf_size, names[code]); - return result; - } - return result; - } - if(code == REG_ATOI) - { - char localbuf[5]; - if(e == 0) - return 0; - for(int i = 0; i <= (int)REG_E_UNKNOWN; ++i) - { - if(std::strcmp(e->re_endp, names[i]) == 0) - { - // - // We're converting an integer i to a string, and since i <= REG_E_UNKNOWN - // a five character string is *always* large enough: - // -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE) - int r = (::sprintf_s)(localbuf, 5, "%d", i); -#else - int r = (std::sprintf)(localbuf, "%d", i); -#endif - if(r < 0) - return 0; // sprintf failed - if(std::strlen(localbuf) < buf_size) - BOOST_REGEX_DETAIL_NS::strcpy_s(buf, buf_size, localbuf); - return std::strlen(localbuf) + 1; - } - } -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE) - int r = (::sprintf_s)(localbuf, 5, "%d", 0); -#else - int r = (std::sprintf)(localbuf, "%d", 0); -#endif - if(r < 0) - return 0; // sprintf failed - if(std::strlen(localbuf) < buf_size) - BOOST_REGEX_DETAIL_NS::strcpy_s(buf, buf_size, localbuf); - return std::strlen(localbuf) + 1; - } - if(code <= (int)REG_E_UNKNOWN) - { - std::string p; - if((e) && (e->re_magic == magic_value)) - p = static_cast(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code)); - else - { - p = BOOST_REGEX_DETAIL_NS::get_default_error_string(static_cast< ::boost::regex_constants::error_type>(code)); - } - std::size_t len = p.size(); - if(len < buf_size) - { - BOOST_REGEX_DETAIL_NS::strcpy_s(buf, buf_size, p.c_str()); - } - return len + 1; - } - if(buf_size) - *buf = 0; - return 0; -} - -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecA(const regex_tA* expression, const char* buf, regsize_t n, regmatch_t* array, int eflags) -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4267) -#endif - bool result = false; - match_flag_type flags = match_default | expression->eflags; - const char* end; - const char* start; - cmatch m; - - if(eflags & REG_NOTBOL) - flags |= match_not_bol; - if(eflags & REG_NOTEOL) - flags |= match_not_eol; - if(eflags & REG_STARTEND) - { - start = buf + array[0].rm_so; - end = buf + array[0].rm_eo; - } - else - { - start = buf; - end = buf + std::strlen(buf); - } - -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - if(expression->re_magic == magic_value) - { - result = regex_search(start, end, m, *static_cast(expression->guts), flags); - } - else - return result; -#ifndef BOOST_NO_EXCEPTIONS - } catch(...) - { - return REG_E_UNKNOWN; - } -#endif - - if(result) - { - // extract what matched: - std::size_t i; - for(i = 0; (i < n) && (i < expression->re_nsub + 1); ++i) - { - array[i].rm_so = (m[i].matched == false) ? -1 : (m[i].first - buf); - array[i].rm_eo = (m[i].matched == false) ? -1 : (m[i].second - buf); - } - // and set anything else to -1: - for(i = expression->re_nsub + 1; i < n; ++i) - { - array[i].rm_so = -1; - array[i].rm_eo = -1; - } - return 0; - } - return REG_NOMATCH; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeA(regex_tA* expression) -{ - if(expression->re_magic == magic_value) - { - delete static_cast(expression->guts); - } - expression->re_magic = 0; -} - -} // namespace boost - - - - diff --git a/src/boost/libs/regex/src/regex.cpp b/src/boost/libs/regex/src/regex.cpp deleted file mode 100644 index fbd609210..000000000 --- a/src/boost/libs/regex/src/regex.cpp +++ /dev/null @@ -1,229 +0,0 @@ -/* - * - * Copyright (c) 1998-2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: regex.cpp - * VERSION: see - * DESCRIPTION: Misc boost::regbase member funnctions. - */ - - -#define BOOST_REGEX_SOURCE - -#include -#include -#include -#include - -#if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && defined(_MSC_VER) && (_MSC_VER >= 1300) -# include -#endif -#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD -#define WIN32_LEAN_AND_MEAN -#ifndef NOMINMAX -# define NOMINMAX -#endif -#define NOGDI -#define NOUSER -#include -#endif - -#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_REGEX_V3) -#if BOOST_REGEX_MAX_CACHE_BLOCKS == 0 -#include -#else -#include -#endif -#endif - -#ifdef BOOST_INTEL -#pragma warning(disable:383) -#endif - -namespace boost{ - -// -// fix: these are declared out of line here to ensure -// that dll builds contain the Virtual table for these -// types - this ensures that exceptions can be thrown -// from the dll and caught in an exe. -regex_error::regex_error(const std::string& s, regex_constants::error_type err, std::ptrdiff_t pos) - : std::runtime_error(s) - , m_error_code(err) - , m_position(pos) -{ -} - -regex_error::regex_error(regex_constants::error_type err) - : std::runtime_error(::boost::BOOST_REGEX_DETAIL_NS::get_default_error_string(err)) - , m_error_code(err) - , m_position(0) -{ -} - -regex_error::~regex_error() throw() -{ -} - -void regex_error::raise()const -{ -#ifndef BOOST_NO_EXCEPTIONS - ::boost::throw_exception(*this); -#endif -} - - - -namespace BOOST_REGEX_DETAIL_NS{ - -BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex) -{ - ::boost::throw_exception(ex); -} -// -// error checking API: -// -BOOST_REGEX_DECL void BOOST_REGEX_CALL verify_options(boost::regex::flag_type /*ef*/, match_flag_type mf) -{ -#ifndef BOOST_REGEX_V3 - // - // can't mix match_extra with POSIX matching rules: - // - if((mf & match_extra) && (mf & match_posix)) - { - std::logic_error msg("Usage Error: Can't mix regular expression captures with POSIX matching rules"); - throw_exception(msg); - } -#endif -} - -#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD - -static void execute_eror() -{ - // we only get here after a stack overflow, - // this has to be a separate proceedure because we - // can't mix __try{}__except block with local objects - // that have destructors: - reset_stack_guard_page(); - std::runtime_error err("Out of stack space, while attempting to match a regular expression."); - raise_runtime_error(err); -} - -bool BOOST_REGEX_CALL abstract_protected_call::execute()const -{ - __try{ - return this->call(); - }__except(EXCEPTION_STACK_OVERFLOW == GetExceptionCode()) - { - execute_eror(); - } - // We never really get here at all: - return false; -} - -BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page() -{ -#if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && defined(_MSC_VER) && (_MSC_VER >= 1300) - _resetstkoflw(); -#else - // - // We need to locate the current page being used by the stack, - // move to the page below it and then deallocate and protect - // that page. Note that ideally we would protect only the lowest - // stack page that has been allocated: in practice there - // seems to be no easy way to locate this page, in any case as - // long as the next page is protected, then Windows will figure - // the rest out for us... - // - SYSTEM_INFO si; - GetSystemInfo(&si); - MEMORY_BASIC_INFORMATION mi; - DWORD previous_protection_status; - // - // this is an address in our stack space: - // - LPBYTE page = (LPBYTE)&page; - // - // Get the current memory page in use: - // - VirtualQuery(page, &mi, sizeof(mi)); - // - // Go to the page one below this: - // - page = (LPBYTE)(mi.BaseAddress)-si.dwPageSize; - // - // Free and protect everything from the start of the - // allocation range, to the end of the page below the - // one in use: - // - if (!VirtualFree(mi.AllocationBase, (LPBYTE)page - (LPBYTE)mi.AllocationBase, MEM_DECOMMIT) - || !VirtualProtect(page, si.dwPageSize, PAGE_GUARD | PAGE_READWRITE, &previous_protection_status)) - { - throw std::bad_exception(); - } -#endif -} -#endif - -#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_REGEX_V3) - -#if BOOST_REGEX_MAX_CACHE_BLOCKS == 0 - -BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block() -{ - return ::operator new(BOOST_REGEX_BLOCKSIZE); -} - -BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void* p) -{ - ::operator delete(p); -} - -#else - -#if defined(BOOST_REGEX_MEM_BLOCK_CACHE_LOCK_FREE) -mem_block_cache block_cache = { { {nullptr} } } ; -#elif defined(BOOST_HAS_THREADS) -mem_block_cache block_cache = { 0, 0, BOOST_STATIC_MUTEX_INIT, }; -#else -mem_block_cache block_cache = { 0, 0, }; -#endif - -BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block() -{ - return block_cache.get(); -} - -BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void* p) -{ - block_cache.put(p); -} - -#endif - -#endif - -} // namespace BOOST_REGEX_DETAIL_NS - - - -} // namespace boost - -#if defined(BOOST_RE_USE_VCL) && defined(BOOST_REGEX_DYN_LINK) - -int WINAPI DllEntryPoint(HINSTANCE , unsigned long , void*) -{ - return 1; -} -#endif - diff --git a/src/boost/libs/regex/src/regex_debug.cpp b/src/boost/libs/regex/src/regex_debug.cpp deleted file mode 100644 index 447430608..000000000 --- a/src/boost/libs/regex/src/regex_debug.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - * Copyright (c) 1998-2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: regex_debug.cpp - * VERSION: see - * DESCRIPTION: Misc. debugging helpers. - */ - - -#define BOOST_REGEX_SOURCE - -#include - - -// -// regex configuration information: this prints out the settings used -// when the library was built - include in debugging builds only: -// -#ifdef BOOST_REGEX_CONFIG_INFO - -#define print_macro regex_lib_print_macro -#define print_expression regex_lib_print_expression -#define print_byte_order regex_lib_print_byte_order -#define print_sign regex_lib_print_sign -#define print_compiler_macros regex_lib_print_compiler_macros -#define print_stdlib_macros regex_lib_print_stdlib_macros -#define print_platform_macros regex_lib_print_platform_macros -#define print_boost_macros regex_lib_print_boost_macros -#define print_separator regex_lib_print_separator -#define OLD_MAIN regex_lib_main -#define NEW_MAIN regex_lib_main2 -#define NO_RECURSE - -#include - -BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info() -{ - std::cout << "\n\n"; - print_separator(); - std::cout << "Regex library build configuration:\n\n"; - regex_lib_main2(); -} - -#endif - - - - - diff --git a/src/boost/libs/regex/src/regex_raw_buffer.cpp b/src/boost/libs/regex/src/regex_raw_buffer.cpp deleted file mode 100644 index 020436e7a..000000000 --- a/src/boost/libs/regex/src/regex_raw_buffer.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_raw_buffer.cpp - * VERSION see - * DESCRIPTION: Member functions for class raw_storage. - */ - - -#define BOOST_REGEX_SOURCE -#include -#include -#include -#include -#include - -#if defined(BOOST_NO_STDC_NAMESPACE) -namespace std{ - using ::memcpy; - using ::memmove; -} -#endif - - -namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ - -void BOOST_REGEX_CALL raw_storage::resize(size_type n) -{ - size_type newsize = start ? last - start : 1024; - while(newsize < n) - newsize *= 2; - size_type datasize = end - start; - // extend newsize to WORD/DWORD boundary: - newsize = (newsize + padding_mask) & ~(padding_mask); - - // allocate and copy data: - pointer ptr = static_cast(::operator new(newsize)); - BOOST_REGEX_NOEH_ASSERT(ptr) - if(start) - std::memcpy(ptr, start, datasize); - - // get rid of old buffer: - ::operator delete(start); - - // and set up pointers: - start = ptr; - end = ptr + datasize; - last = ptr + newsize; -} - -void* BOOST_REGEX_CALL raw_storage::insert(size_type pos, size_type n) -{ - BOOST_ASSERT(pos <= size_type(end - start)); - if(size_type(last - end) < n) - resize(n + (end - start)); - void* result = start + pos; - std::memmove(start + pos + n, start + pos, (end - start) - pos); - end += n; - return result; -} - -}} // namespaces diff --git a/src/boost/libs/regex/src/regex_traits_defaults.cpp b/src/boost/libs/regex/src/regex_traits_defaults.cpp deleted file mode 100644 index 0a97c7d48..000000000 --- a/src/boost/libs/regex/src/regex_traits_defaults.cpp +++ /dev/null @@ -1,692 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE regex_traits_defaults.cpp - * VERSION see - * DESCRIPTION: Declares API's for access to regex_traits default properties. - */ - -#define BOOST_REGEX_SOURCE -#include - -#include -#ifndef BOOST_NO_WREGEX -#include -#endif - -#if defined(BOOST_NO_STDC_NAMESPACE) -namespace std{ - using ::tolower; - using ::toupper; -#ifndef BOOST_NO_WREGEX - using ::towlower; - using ::towupper; -#endif -} -#endif - - -namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ - -BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n) -{ - // if the user hasn't supplied a message catalog, then this supplies - // default "messages" for us to load in the range 1-100. - const char* messages[] = { - "", - "(", - ")", - "$", - "^", - ".", - "*", - "+", - "?", - "[", - "]", - "|", - "\\", - "#", - "-", - "{", - "}", - "0123456789", - "b", - "B", - "<", - ">", - "", - "", - "A`", - "z'", - "\n", - ",", - "a", - "f", - "n", - "r", - "t", - "v", - "x", - "c", - ":", - "=", - "e", - "", - "", - "", - "", - "", - "", - "", - "", - "E", - "Q", - "X", - "C", - "Z", - "G", - "!", - "p", - "P", - "N", - "gk", - "K", - "R", - }; - - return ((n >= (sizeof(messages) / sizeof(messages[1]))) ? "" : messages[n]); -} - -BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n) -{ - static const char* const s_default_error_messages[] = { - "Success", /* REG_NOERROR 0 error_ok */ - "No match", /* REG_NOMATCH 1 error_no_match */ - "Invalid regular expression.", /* REG_BADPAT 2 error_bad_pattern */ - "Invalid collation character.", /* REG_ECOLLATE 3 error_collate */ - "Invalid character class name, collating name, or character range.", /* REG_ECTYPE 4 error_ctype */ - "Invalid or unterminated escape sequence.", /* REG_EESCAPE 5 error_escape */ - "Invalid back reference: specified capturing group does not exist.", /* REG_ESUBREG 6 error_backref */ - "Unmatched [ or [^ in character class declaration.", /* REG_EBRACK 7 error_brack */ - "Unmatched marking parenthesis ( or \\(.", /* REG_EPAREN 8 error_paren */ - "Unmatched quantified repeat operator { or \\{.", /* REG_EBRACE 9 error_brace */ - "Invalid content of repeat range.", /* REG_BADBR 10 error_badbrace */ - "Invalid range end in character class", /* REG_ERANGE 11 error_range */ - "Out of memory.", /* REG_ESPACE 12 error_space NOT USED */ - "Invalid preceding regular expression prior to repetition operator.", /* REG_BADRPT 13 error_badrepeat */ - "Premature end of regular expression", /* REG_EEND 14 error_end NOT USED */ - "Regular expression is too large.", /* REG_ESIZE 15 error_size NOT USED */ - "Unmatched ) or \\)", /* REG_ERPAREN 16 error_right_paren NOT USED */ - "Empty regular expression.", /* REG_EMPTY 17 error_empty */ - "The complexity of matching the regular expression exceeded predefined bounds. " - "Try refactoring the regular expression to make each choice made by the state machine unambiguous. " - "This exception is thrown to prevent \"eternal\" matches that take an " - "indefinite period time to locate.", /* REG_ECOMPLEXITY 18 error_complexity */ - "Ran out of stack space trying to match the regular expression.", /* REG_ESTACK 19 error_stack */ - "Invalid or unterminated Perl (?...) sequence.", /* REG_E_PERL 20 error_perl */ - "Unknown error.", /* REG_E_UNKNOWN 21 error_unknown */ - }; - - return (n > ::boost::regex_constants::error_unknown) ? s_default_error_messages[ ::boost::regex_constants::error_unknown] : s_default_error_messages[n]; -} - -BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(boost::uint_least16_t c) -{ - const boost::uint_least16_t combining_ranges[] = { 0x0300, 0x0361, - 0x0483, 0x0486, - 0x0903, 0x0903, - 0x093E, 0x0940, - 0x0949, 0x094C, - 0x0982, 0x0983, - 0x09BE, 0x09C0, - 0x09C7, 0x09CC, - 0x09D7, 0x09D7, - 0x0A3E, 0x0A40, - 0x0A83, 0x0A83, - 0x0ABE, 0x0AC0, - 0x0AC9, 0x0ACC, - 0x0B02, 0x0B03, - 0x0B3E, 0x0B3E, - 0x0B40, 0x0B40, - 0x0B47, 0x0B4C, - 0x0B57, 0x0B57, - 0x0B83, 0x0B83, - 0x0BBE, 0x0BBF, - 0x0BC1, 0x0BCC, - 0x0BD7, 0x0BD7, - 0x0C01, 0x0C03, - 0x0C41, 0x0C44, - 0x0C82, 0x0C83, - 0x0CBE, 0x0CBE, - 0x0CC0, 0x0CC4, - 0x0CC7, 0x0CCB, - 0x0CD5, 0x0CD6, - 0x0D02, 0x0D03, - 0x0D3E, 0x0D40, - 0x0D46, 0x0D4C, - 0x0D57, 0x0D57, - 0x0F7F, 0x0F7F, - 0x20D0, 0x20E1, - 0x3099, 0x309A, - 0xFE20, 0xFE23, - 0xffff, 0xffff, }; - - const boost::uint_least16_t* p = combining_ranges + 1; - while(*p < c) p += 2; - --p; - if((c >= *p) && (c <= *(p+1))) - return true; - return false; -} - -// -// these are the POSIX collating names: -// -BOOST_REGEX_DECL const char* def_coll_names[] = { -"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "alert", "backspace", "tab", "newline", -"vertical-tab", "form-feed", "carriage-return", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", -"SYN", "ETB", "CAN", "EM", "SUB", "ESC", "IS4", "IS3", "IS2", "IS1", "space", "exclamation-mark", -"quotation-mark", "number-sign", "dollar-sign", "percent-sign", "ampersand", "apostrophe", -"left-parenthesis", "right-parenthesis", "asterisk", "plus-sign", "comma", "hyphen", -"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", -"colon", "semicolon", "less-than-sign", "equals-sign", "greater-than-sign", -"question-mark", "commercial-at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", -"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "left-square-bracket", "backslash", -"right-square-bracket", "circumflex", "underscore", "grave-accent", "a", "b", "c", "d", "e", "f", -"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "left-curly-bracket", -"vertical-line", "right-curly-bracket", "tilde", "DEL", "", -}; - -// these multi-character collating elements -// should keep most Western-European locales -// happy - we should really localise these a -// little more - but this will have to do for -// now: - -BOOST_REGEX_DECL const char* def_multi_coll[] = { - "ae", - "Ae", - "AE", - "ch", - "Ch", - "CH", - "ll", - "Ll", - "LL", - "ss", - "Ss", - "SS", - "nj", - "Nj", - "NJ", - "dz", - "Dz", - "DZ", - "lj", - "Lj", - "LJ", - "", -}; - - - -BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name) -{ - unsigned int i = 0; - while(*def_coll_names[i]) - { - if(def_coll_names[i] == name) - { - return std::string(1, char(i)); - } - ++i; - } - i = 0; - while(*def_multi_coll[i]) - { - if(def_multi_coll[i] == name) - { - return def_multi_coll[i]; - } - ++i; - } - return std::string(); -} - -BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c) -{ - return static_cast((std::tolower)((unsigned char)c)); -} - -BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c) -{ - return static_cast((std::toupper)((unsigned char)c)); -} -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c) -{ - return (std::towlower)(c); -} - -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c) -{ - return (std::towupper)(c); -} -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c) -{ - return (std::towlower)(c); -} - -BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c) -{ - return (std::towupper)(c); -} -#endif - -#endif - -BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c) -{ - // - // char_syntax determines how the compiler treats a given character - // in a regular expression. - // - static regex_constants::escape_syntax_type char_syntax[] = { - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /* */ // 32 - regex_constants::escape_type_identity, /*!*/ - regex_constants::escape_type_identity, /*"*/ - regex_constants::escape_type_identity, /*#*/ - regex_constants::escape_type_identity, /*$*/ - regex_constants::escape_type_identity, /*%*/ - regex_constants::escape_type_identity, /*&*/ - regex_constants::escape_type_end_buffer, /*'*/ - regex_constants::syntax_open_mark, /*(*/ - regex_constants::syntax_close_mark, /*)*/ - regex_constants::escape_type_identity, /***/ - regex_constants::syntax_plus, /*+*/ - regex_constants::escape_type_identity, /*,*/ - regex_constants::escape_type_identity, /*-*/ - regex_constants::escape_type_identity, /*.*/ - regex_constants::escape_type_identity, /*/*/ - regex_constants::escape_type_decimal, /*0*/ - regex_constants::escape_type_backref, /*1*/ - regex_constants::escape_type_backref, /*2*/ - regex_constants::escape_type_backref, /*3*/ - regex_constants::escape_type_backref, /*4*/ - regex_constants::escape_type_backref, /*5*/ - regex_constants::escape_type_backref, /*6*/ - regex_constants::escape_type_backref, /*7*/ - regex_constants::escape_type_backref, /*8*/ - regex_constants::escape_type_backref, /*9*/ - regex_constants::escape_type_identity, /*:*/ - regex_constants::escape_type_identity, /*;*/ - regex_constants::escape_type_left_word, /*<*/ - regex_constants::escape_type_identity, /*=*/ - regex_constants::escape_type_right_word, /*>*/ - regex_constants::syntax_question, /*?*/ - regex_constants::escape_type_identity, /*@*/ - regex_constants::escape_type_start_buffer, /*A*/ - regex_constants::escape_type_not_word_assert, /*B*/ - regex_constants::escape_type_C, /*C*/ - regex_constants::escape_type_not_class, /*D*/ - regex_constants::escape_type_E, /*E*/ - regex_constants::escape_type_not_class, /*F*/ - regex_constants::escape_type_G, /*G*/ - regex_constants::escape_type_not_class, /*H*/ - regex_constants::escape_type_not_class, /*I*/ - regex_constants::escape_type_not_class, /*J*/ - regex_constants::escape_type_reset_start_mark, /*K*/ - regex_constants::escape_type_not_class, /*L*/ - regex_constants::escape_type_not_class, /*M*/ - regex_constants::escape_type_named_char, /*N*/ - regex_constants::escape_type_not_class, /*O*/ - regex_constants::escape_type_not_property, /*P*/ - regex_constants::escape_type_Q, /*Q*/ - regex_constants::escape_type_line_ending, /*R*/ - regex_constants::escape_type_not_class, /*S*/ - regex_constants::escape_type_not_class, /*T*/ - regex_constants::escape_type_not_class, /*U*/ - regex_constants::escape_type_not_class, /*V*/ - regex_constants::escape_type_not_class, /*W*/ - regex_constants::escape_type_X, /*X*/ - regex_constants::escape_type_not_class, /*Y*/ - regex_constants::escape_type_Z, /*Z*/ - regex_constants::escape_type_identity, /*[*/ - regex_constants::escape_type_identity, /*\*/ - regex_constants::escape_type_identity, /*]*/ - regex_constants::escape_type_identity, /*^*/ - regex_constants::escape_type_identity, /*_*/ - regex_constants::escape_type_start_buffer, /*`*/ - regex_constants::escape_type_control_a, /*a*/ - regex_constants::escape_type_word_assert, /*b*/ - regex_constants::escape_type_ascii_control, /*c*/ - regex_constants::escape_type_class, /*d*/ - regex_constants::escape_type_e, /*e*/ - regex_constants::escape_type_control_f, /*f*/ - regex_constants::escape_type_extended_backref, /*g*/ - regex_constants::escape_type_class, /*h*/ - regex_constants::escape_type_class, /*i*/ - regex_constants::escape_type_class, /*j*/ - regex_constants::escape_type_extended_backref, /*k*/ - regex_constants::escape_type_class, /*l*/ - regex_constants::escape_type_class, /*m*/ - regex_constants::escape_type_control_n, /*n*/ - regex_constants::escape_type_class, /*o*/ - regex_constants::escape_type_property, /*p*/ - regex_constants::escape_type_class, /*q*/ - regex_constants::escape_type_control_r, /*r*/ - regex_constants::escape_type_class, /*s*/ - regex_constants::escape_type_control_t, /*t*/ - regex_constants::escape_type_class, /*u*/ - regex_constants::escape_type_control_v, /*v*/ - regex_constants::escape_type_class, /*w*/ - regex_constants::escape_type_hex, /*x*/ - regex_constants::escape_type_class, /*y*/ - regex_constants::escape_type_end_buffer, /*z*/ - regex_constants::syntax_open_brace, /*{*/ - regex_constants::syntax_or, /*|*/ - regex_constants::syntax_close_brace, /*}*/ - regex_constants::escape_type_identity, /*~*/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - regex_constants::escape_type_identity, /**/ - }; - - return char_syntax[(unsigned char)c]; -} - -BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c) -{ - // - // char_syntax determines how the compiler treats a given character - // in a regular expression. - // - static regex_constants::syntax_type char_syntax[] = { - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_newline, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /* */ // 32 - regex_constants::syntax_not, /*!*/ - regex_constants::syntax_char, /*"*/ - regex_constants::syntax_hash, /*#*/ - regex_constants::syntax_dollar, /*$*/ - regex_constants::syntax_char, /*%*/ - regex_constants::syntax_char, /*&*/ - regex_constants::escape_type_end_buffer, /*'*/ - regex_constants::syntax_open_mark, /*(*/ - regex_constants::syntax_close_mark, /*)*/ - regex_constants::syntax_star, /***/ - regex_constants::syntax_plus, /*+*/ - regex_constants::syntax_comma, /*,*/ - regex_constants::syntax_dash, /*-*/ - regex_constants::syntax_dot, /*.*/ - regex_constants::syntax_char, /*/*/ - regex_constants::syntax_digit, /*0*/ - regex_constants::syntax_digit, /*1*/ - regex_constants::syntax_digit, /*2*/ - regex_constants::syntax_digit, /*3*/ - regex_constants::syntax_digit, /*4*/ - regex_constants::syntax_digit, /*5*/ - regex_constants::syntax_digit, /*6*/ - regex_constants::syntax_digit, /*7*/ - regex_constants::syntax_digit, /*8*/ - regex_constants::syntax_digit, /*9*/ - regex_constants::syntax_colon, /*:*/ - regex_constants::syntax_char, /*;*/ - regex_constants::escape_type_left_word, /*<*/ - regex_constants::syntax_equal, /*=*/ - regex_constants::escape_type_right_word, /*>*/ - regex_constants::syntax_question, /*?*/ - regex_constants::syntax_char, /*@*/ - regex_constants::syntax_char, /*A*/ - regex_constants::syntax_char, /*B*/ - regex_constants::syntax_char, /*C*/ - regex_constants::syntax_char, /*D*/ - regex_constants::syntax_char, /*E*/ - regex_constants::syntax_char, /*F*/ - regex_constants::syntax_char, /*G*/ - regex_constants::syntax_char, /*H*/ - regex_constants::syntax_char, /*I*/ - regex_constants::syntax_char, /*J*/ - regex_constants::syntax_char, /*K*/ - regex_constants::syntax_char, /*L*/ - regex_constants::syntax_char, /*M*/ - regex_constants::syntax_char, /*N*/ - regex_constants::syntax_char, /*O*/ - regex_constants::syntax_char, /*P*/ - regex_constants::syntax_char, /*Q*/ - regex_constants::syntax_char, /*R*/ - regex_constants::syntax_char, /*S*/ - regex_constants::syntax_char, /*T*/ - regex_constants::syntax_char, /*U*/ - regex_constants::syntax_char, /*V*/ - regex_constants::syntax_char, /*W*/ - regex_constants::syntax_char, /*X*/ - regex_constants::syntax_char, /*Y*/ - regex_constants::syntax_char, /*Z*/ - regex_constants::syntax_open_set, /*[*/ - regex_constants::syntax_escape, /*\*/ - regex_constants::syntax_close_set, /*]*/ - regex_constants::syntax_caret, /*^*/ - regex_constants::syntax_char, /*_*/ - regex_constants::syntax_char, /*`*/ - regex_constants::syntax_char, /*a*/ - regex_constants::syntax_char, /*b*/ - regex_constants::syntax_char, /*c*/ - regex_constants::syntax_char, /*d*/ - regex_constants::syntax_char, /*e*/ - regex_constants::syntax_char, /*f*/ - regex_constants::syntax_char, /*g*/ - regex_constants::syntax_char, /*h*/ - regex_constants::syntax_char, /*i*/ - regex_constants::syntax_char, /*j*/ - regex_constants::syntax_char, /*k*/ - regex_constants::syntax_char, /*l*/ - regex_constants::syntax_char, /*m*/ - regex_constants::syntax_char, /*n*/ - regex_constants::syntax_char, /*o*/ - regex_constants::syntax_char, /*p*/ - regex_constants::syntax_char, /*q*/ - regex_constants::syntax_char, /*r*/ - regex_constants::syntax_char, /*s*/ - regex_constants::syntax_char, /*t*/ - regex_constants::syntax_char, /*u*/ - regex_constants::syntax_char, /*v*/ - regex_constants::syntax_char, /*w*/ - regex_constants::syntax_char, /*x*/ - regex_constants::syntax_char, /*y*/ - regex_constants::syntax_char, /*z*/ - regex_constants::syntax_open_brace, /*{*/ - regex_constants::syntax_or, /*|*/ - regex_constants::syntax_close_brace, /*}*/ - regex_constants::syntax_char, /*~*/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - regex_constants::syntax_char, /**/ - }; - - return char_syntax[(unsigned char)c]; -} - - -} // BOOST_REGEX_DETAIL_NS -} // boost diff --git a/src/boost/libs/regex/src/static_mutex.cpp b/src/boost/libs/regex/src/static_mutex.cpp deleted file mode 100644 index d213085b0..000000000 --- a/src/boost/libs/regex/src/static_mutex.cpp +++ /dev/null @@ -1,183 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE static_mutex.cpp - * VERSION see - * DESCRIPTION: Declares static_mutex lock type. - */ - -#define BOOST_REGEX_SOURCE -#include -#include - -#ifdef BOOST_HAS_THREADS - -#include - -#if defined(BOOST_HAS_WINTHREADS) -#ifndef NOMINMAX -# define NOMINMAX -#endif -#define WIN32_LEAN_AND_MEAN -#include -#include -#endif - - -namespace boost{ - -#if defined(BOOST_HAS_PTHREADS) && defined(PTHREAD_MUTEX_INITIALIZER) - -scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& m, bool lk) -: m_mutex(m), m_have_lock(false) -{ - if(lk) - lock(); -} - -scoped_static_mutex_lock::~scoped_static_mutex_lock() -{ - if(m_have_lock) - unlock(); -} - -void scoped_static_mutex_lock::lock() -{ - if(0 == m_have_lock) - { - // Client code will throw if this fails: - m_have_lock = (pthread_mutex_lock(&(m_mutex.m_mutex)) == 0); - } -} - -void scoped_static_mutex_lock::unlock() -{ - if(m_have_lock) - { - // If this fails there's nothing we can do except assert, - // exceptions are out of the question as this code is called - // from the lock's destructor: - BOOST_VERIFY(pthread_mutex_unlock(&(m_mutex.m_mutex)) == 0); - m_have_lock = false; - } -} - -#elif defined(BOOST_HAS_WINTHREADS) - -BOOST_STATIC_ASSERT(sizeof(LONG) == sizeof(boost::int32_t)); - -scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& m, bool lk) -: m_mutex(m), m_have_lock(false) -{ - if(lk) - lock(); -} - -scoped_static_mutex_lock::~scoped_static_mutex_lock() -{ - if(m_have_lock) - unlock(); -} - -void scoped_static_mutex_lock::lock() -{ - if(0 == m_have_lock) - { -#if !defined(InterlockedCompareExchangePointer) - while(0 != InterlockedCompareExchange(reinterpret_cast((boost::uint_least16_t*)&(m_mutex.m_mutex)), (void*)1, 0)) -#else - while(0 != InterlockedCompareExchange(reinterpret_cast(&(m_mutex.m_mutex)), 1, 0)) -#endif - { - Sleep(0); - } - m_have_lock = true; - } -} - -void scoped_static_mutex_lock::unlock() -{ - if(m_have_lock) - { -#if !defined(InterlockedCompareExchangePointer) - InterlockedExchange((LONG*)&(m_mutex.m_mutex), 0); -#else - InterlockedExchange(reinterpret_cast(&(m_mutex.m_mutex)), 0); -#endif - m_have_lock = false; - } -} - -#else -// -// Portable version of a static mutex based on Boost.Thread library: -// -#include -#include - -boost::recursive_mutex* static_mutex::m_pmutex = 0; -boost::once_flag static_mutex::m_once = BOOST_ONCE_INIT; - -extern "C" BOOST_REGEX_DECL void boost_regex_free_static_mutex() -{ - delete static_mutex::m_pmutex; - static_mutex::m_pmutex = 0; -} - -void static_mutex::init() -{ - m_pmutex = new boost::recursive_mutex(); - int r = atexit(boost_regex_free_static_mutex); - BOOST_ASSERT(0 == r); -} - -scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& , bool lk) -: m_plock(0), m_have_lock(false) -{ - if(lk) - lock(); -} - -scoped_static_mutex_lock::~scoped_static_mutex_lock() -{ - if(m_have_lock) - unlock(); - delete m_plock; -} - -void scoped_static_mutex_lock::lock() -{ - if(0 == m_have_lock) - { - boost::call_once(static_mutex::m_once,&static_mutex::init); - if(0 == m_plock) - m_plock = new boost::unique_lock(*static_mutex::m_pmutex, boost::defer_lock); - m_plock->lock(); - m_have_lock = true; - } -} - -void scoped_static_mutex_lock::unlock() -{ - if(m_have_lock) - { - m_plock->unlock(); - m_have_lock = false; - } -} - -#endif - -} - -#endif // BOOST_HAS_THREADS diff --git a/src/boost/libs/regex/src/usinstances.cpp b/src/boost/libs/regex/src/usinstances.cpp deleted file mode 100644 index d023b09b1..000000000 --- a/src/boost/libs/regex/src/usinstances.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: winstances.cpp - * VERSION: see - * DESCRIPTION: regex unsigned short template instances (MSVC only). - */ - -#define BOOST_REGEX_SOURCE -#ifdef _MSC_VER -#pragma warning(disable:4506) // 'no definition for inline function' -#endif - -#include -#include -#include - -#if defined(_DLL_CPPLIB) && !defined(_M_CEE_PURE) && defined(_NATIVE_WCHAR_T_DEFINED) \ - && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))\ - && BOOST_WORKAROUND(BOOST_MSVC, <1600) -// -// This is a horrible workaround, but without declaring these symbols extern we get -// duplicate symbol errors when linking if the application is built without -// /Zc:wchar_t -// -#ifdef _CRTIMP2_PURE -# define BOOST_REGEX_STDLIB_DECL _CRTIMP2_PURE -#else -# define BOOST_REGEX_STDLIB_DECL _CRTIMP2 -#endif - -namespace std{ - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -template class BOOST_REGEX_STDLIB_DECL allocator; -template class BOOST_REGEX_STDLIB_DECL _String_val >; -template class BOOST_REGEX_STDLIB_DECL basic_string, allocator >; -#endif - -#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) -template<> BOOST_REGEX_STDLIB_DECL std::size_t __cdecl char_traits::length(unsigned short const*); -#endif - -template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==( - const basic_string, allocator >&, - const basic_string, allocator >&); -template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==( - const unsigned short *, - const basic_string, allocator >&); -template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==( - const basic_string, allocator >&, - const unsigned short *); -template BOOST_REGEX_STDLIB_DECL bool __cdecl operator<( - const basic_string, allocator >&, - const basic_string, allocator >&); -template BOOST_REGEX_STDLIB_DECL bool __cdecl operator>( - const basic_string, allocator >&, - const basic_string, allocator >&); -} -#endif - -#include - -#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES) -#define BOOST_REGEX_US_INSTANTIATE - -#include - -#endif - - diff --git a/src/boost/libs/regex/src/w32_regex_traits.cpp b/src/boost/libs/regex/src/w32_regex_traits.cpp deleted file mode 100644 index dac5920bd..000000000 --- a/src/boost/libs/regex/src/w32_regex_traits.cpp +++ /dev/null @@ -1,652 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE w32_regex_traits.cpp - * VERSION see - * DESCRIPTION: Implements w32_regex_traits (and associated helper classes). - */ - -#define BOOST_REGEX_SOURCE -#include - -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) && !defined(BOOST_REGEX_NO_WIN32_LOCALE) -#include -#include - -#define WIN32_LEAN_AND_MEAN -#ifndef NOMINMAX -# define NOMINMAX -#endif -#define NOGDI -#include - -#if defined(_MSC_VER) && !defined(_WIN32_WCE) && !defined(UNDER_CE) -#pragma comment(lib, "user32.lib") -#endif - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std{ - using ::memset; -} -#endif - -namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ - -#ifdef BOOST_NO_ANSI_APIS -UINT get_code_page_for_locale_id(lcid_type idx) -{ - WCHAR code_page_string[7]; - if (::GetLocaleInfoW(idx, LOCALE_IDEFAULTANSICODEPAGE, code_page_string, 7) == 0) - return 0; - - return static_cast(_wtol(code_page_string)); -} -#endif - - -void w32_regex_traits_char_layer::init() -{ - // we need to start by initialising our syntax map so we know which - // character is used for which purpose: - std::memset(m_char_map, 0, sizeof(m_char_map)); - cat_type cat; - std::string cat_name(w32_regex_traits::get_catalog_name()); - if(cat_name.size()) - { - cat = ::boost::BOOST_REGEX_DETAIL_NS::w32_cat_open(cat_name); - if(!cat) - { - std::string m("Unable to open message catalog: "); - std::runtime_error err(m + cat_name); - ::boost::BOOST_REGEX_DETAIL_NS::raise_runtime_error(err); - } - } - // - // if we have a valid catalog then load our messages: - // - if(cat) - { - for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) - { - string_type mss = ::boost::BOOST_REGEX_DETAIL_NS::w32_cat_get(cat, this->m_locale, i, get_default_syntax(i)); - for(string_type::size_type j = 0; j < mss.size(); ++j) - { - m_char_map[static_cast(mss[j])] = i; - } - } - } - else - { - for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) - { - const char* ptr = get_default_syntax(i); - while(ptr && *ptr) - { - m_char_map[static_cast(*ptr)] = i; - ++ptr; - } - } - } - // - // finish off by calculating our escape types: - // - unsigned char i = 'A'; - do - { - if(m_char_map[i] == 0) - { - if(::boost::BOOST_REGEX_DETAIL_NS::w32_is(this->m_locale, 0x0002u, (char)i)) - m_char_map[i] = regex_constants::escape_type_class; - else if(::boost::BOOST_REGEX_DETAIL_NS::w32_is(this->m_locale, 0x0001u, (char)i)) - m_char_map[i] = regex_constants::escape_type_not_class; - } - }while(0xFF != i++); - - // - // fill in lower case map: - // - char char_map[1 << CHAR_BIT]; - for(int ii = 0; ii < (1 << CHAR_BIT); ++ii) - char_map[ii] = static_cast(ii); -#ifndef BOOST_NO_ANSI_APIS - int r = ::LCMapStringA(this->m_locale, LCMAP_LOWERCASE, char_map, 1 << CHAR_BIT, this->m_lower_map, 1 << CHAR_BIT); - BOOST_ASSERT(r != 0); -#else - UINT code_page = get_code_page_for_locale_id(this->m_locale); - BOOST_ASSERT(code_page != 0); - - WCHAR wide_char_map[1 << CHAR_BIT]; - int conv_r = ::MultiByteToWideChar(code_page, 0, char_map, 1 << CHAR_BIT, wide_char_map, 1 << CHAR_BIT); - BOOST_ASSERT(conv_r != 0); - - WCHAR wide_lower_map[1 << CHAR_BIT]; - int r = ::LCMapStringW(this->m_locale, LCMAP_LOWERCASE, wide_char_map, 1 << CHAR_BIT, wide_lower_map, 1 << CHAR_BIT); - BOOST_ASSERT(r != 0); - - conv_r = ::WideCharToMultiByte(code_page, 0, wide_lower_map, r, this->m_lower_map, 1 << CHAR_BIT, NULL, NULL); - BOOST_ASSERT(conv_r != 0); -#endif - if(r < (1 << CHAR_BIT)) - { - // if we have multibyte characters then not all may have been given - // a lower case mapping: - for(int jj = r; jj < (1 << CHAR_BIT); ++jj) - this->m_lower_map[jj] = static_cast(jj); - } - -#ifndef BOOST_NO_ANSI_APIS - r = ::GetStringTypeExA(this->m_locale, CT_CTYPE1, char_map, 1 << CHAR_BIT, this->m_type_map); -#else - r = ::GetStringTypeExW(this->m_locale, CT_CTYPE1, wide_char_map, 1 << CHAR_BIT, this->m_type_map); -#endif - BOOST_ASSERT(0 != r); -} - -BOOST_REGEX_DECL lcid_type BOOST_REGEX_CALL w32_get_default_locale() -{ - return ::GetUserDefaultLCID(); -} - -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char c, lcid_type idx) -{ -#ifndef BOOST_NO_ANSI_APIS - WORD mask; - if(::GetStringTypeExA(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER)) - return true; - return false; -#else - UINT code_page = get_code_page_for_locale_id(idx); - if (code_page == 0) - return false; - - WCHAR wide_c; - if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0) - return false; - - WORD mask; - if(::GetStringTypeExW(idx, CT_CTYPE1, &wide_c, 1, &mask) && (mask & C1_LOWER)) - return true; - return false; -#endif -} - -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t c, lcid_type idx) -{ - WORD mask; - if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER)) - return true; - return false; -} -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type idx) -{ - WORD mask; - wchar_t c = ca; - if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER)) - return true; - return false; -} -#endif - -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char c, lcid_type idx) -{ -#ifndef BOOST_NO_ANSI_APIS - WORD mask; - if(::GetStringTypeExA(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER)) - return true; - return false; -#else - UINT code_page = get_code_page_for_locale_id(idx); - if (code_page == 0) - return false; - - WCHAR wide_c; - if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0) - return false; - - WORD mask; - if(::GetStringTypeExW(idx, CT_CTYPE1, &wide_c, 1, &mask) && (mask & C1_UPPER)) - return true; - return false; -#endif -} - -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t c, lcid_type idx) -{ - WORD mask; - if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER)) - return true; - return false; -} -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type idx) -{ - WORD mask; - wchar_t c = ca; - if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER)) - return true; - return false; -} -#endif - -void free_module(void* mod) -{ - ::FreeLibrary(static_cast(mod)); -} - -BOOST_REGEX_DECL cat_type BOOST_REGEX_CALL w32_cat_open(const std::string& name) -{ -#ifndef BOOST_NO_ANSI_APIS - cat_type result(::LoadLibraryA(name.c_str()), &free_module); - return result; -#else - LPWSTR wide_name = (LPWSTR)_alloca( (name.size() + 1) * sizeof(WCHAR) ); - if (::MultiByteToWideChar(CP_ACP, 0, name.c_str(), name.size(), wide_name, name.size() + 1) == 0) - return cat_type(); - - cat_type result(::LoadLibraryW(wide_name), &free_module); - return result; -#endif -} - -BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::string& def) -{ -#ifndef BOOST_NO_ANSI_APIS - char buf[256]; - if(0 == ::LoadStringA( - static_cast(cat.get()), - i, - buf, - 256 - )) - { - return def; - } -#else - WCHAR wbuf[256]; - int r = ::LoadStringW( - static_cast(cat.get()), - i, - wbuf, - 256 - ); - if (r == 0) - return def; - - - int buf_size = 1 + ::WideCharToMultiByte(CP_ACP, 0, wbuf, r, NULL, 0, NULL, NULL); - LPSTR buf = (LPSTR)_alloca(buf_size); - if (::WideCharToMultiByte(CP_ACP, 0, wbuf, r, buf, buf_size, NULL, NULL) == 0) - return def; // failed conversion. -#endif - return std::string(buf); -} - -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::wstring& def) -{ - wchar_t buf[256]; - if(0 == ::LoadStringW( - static_cast(cat.get()), - i, - buf, - 256 - )) - { - return def; - } - return std::wstring(buf); -} -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL std::basic_string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::basic_string& def) -{ - unsigned short buf[256]; - if(0 == ::LoadStringW( - static_cast(cat.get()), - i, - (LPWSTR)buf, - 256 - )) - { - return def; - } - return std::basic_string(buf); -} -#endif -#endif -BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type idx, const char* p1, const char* p2) -{ -#ifndef BOOST_NO_ANSI_APIS - int bytes = ::LCMapStringA( - idx, // locale identifier - LCMAP_SORTKEY, // mapping transformation type - p1, // source string - static_cast(p2 - p1), // number of characters in source string - 0, // destination buffer - 0 // size of destination buffer - ); - if(!bytes) - return std::string(p1, p2); - std::string result(++bytes, '\0'); - bytes = ::LCMapStringA( - idx, // locale identifier - LCMAP_SORTKEY, // mapping transformation type - p1, // source string - static_cast(p2 - p1), // number of characters in source string - &*result.begin(), // destination buffer - bytes // size of destination buffer - ); -#else - UINT code_page = get_code_page_for_locale_id(idx); - if(code_page == 0) - return std::string(p1, p2); - - int src_len = static_cast(p2 - p1); - LPWSTR wide_p1 = (LPWSTR)_alloca( (src_len + 1) * 2 ); - if(::MultiByteToWideChar(code_page, 0, p1, src_len, wide_p1, src_len + 1) == 0) - return std::string(p1, p2); - - int bytes = ::LCMapStringW( - idx, // locale identifier - LCMAP_SORTKEY, // mapping transformation type - wide_p1, // source string - src_len, // number of characters in source string - 0, // destination buffer - 0 // size of destination buffer - ); - if(!bytes) - return std::string(p1, p2); - std::string result(++bytes, '\0'); - bytes = ::LCMapStringW( - idx, // locale identifier - LCMAP_SORTKEY, // mapping transformation type - wide_p1, // source string - src_len, // number of characters in source string - (LPWSTR)&*result.begin(), // destination buffer - bytes // size of destination buffer - ); -#endif - if(bytes > static_cast(result.size())) - return std::string(p1, p2); - while(result.size() && result[result.size()-1] == '\0') - { - result.erase(result.size()-1); - } - return result; -} - -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type idx, const wchar_t* p1, const wchar_t* p2) -{ - int bytes = ::LCMapStringW( - idx, // locale identifier - LCMAP_SORTKEY, // mapping transformation type - p1, // source string - static_cast(p2 - p1), // number of characters in source string - 0, // destination buffer - 0 // size of destination buffer - ); - if(!bytes) - return std::wstring(p1, p2); - std::string result(++bytes, '\0'); - bytes = ::LCMapStringW( - idx, // locale identifier - LCMAP_SORTKEY, // mapping transformation type - p1, // source string - static_cast(p2 - p1), // number of characters in source string - reinterpret_cast(&*result.begin()), // destination buffer *of bytes* - bytes // size of destination buffer - ); - if(bytes > static_cast(result.size())) - return std::wstring(p1, p2); - while(result.size() && result[result.size()-1] == L'\0') - { - result.erase(result.size()-1); - } - std::wstring r2; - for(std::string::size_type i = 0; i < result.size(); ++i) - r2.append(1, static_cast(static_cast(result[i]))); - return r2; -} -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL std::basic_string BOOST_REGEX_CALL w32_transform(lcid_type idx, const unsigned short* p1, const unsigned short* p2) -{ - int bytes = ::LCMapStringW( - idx, // locale identifier - LCMAP_SORTKEY, // mapping transformation type - (LPCWSTR)p1, // source string - static_cast(p2 - p1), // number of characters in source string - 0, // destination buffer - 0 // size of destination buffer - ); - if(!bytes) - return std::basic_string(p1, p2); - std::string result(++bytes, '\0'); - bytes = ::LCMapStringW( - idx, // locale identifier - LCMAP_SORTKEY, // mapping transformation type - (LPCWSTR)p1, // source string - static_cast(p2 - p1), // number of characters in source string - reinterpret_cast(&*result.begin()), // destination buffer *of bytes* - bytes // size of destination buffer - ); - if(bytes > static_cast(result.size())) - return std::basic_string(p1, p2); - while(result.size() && result[result.size()-1] == L'\0') - { - result.erase(result.size()-1); - } - std::basic_string r2; - for(std::string::size_type i = 0; i < result.size(); ++i) - r2.append(1, static_cast(static_cast(result[i]))); - return r2; -} -#endif -#endif -BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type idx) -{ - char result[2]; -#ifndef BOOST_NO_ANSI_APIS - int b = ::LCMapStringA( - idx, // locale identifier - LCMAP_LOWERCASE, // mapping transformation type - &c, // source string - 1, // number of characters in source string - result, // destination buffer - 1); // size of destination buffer - if(b == 0) - return c; -#else - UINT code_page = get_code_page_for_locale_id(idx); - if (code_page == 0) - return c; - - WCHAR wide_c; - if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0) - return c; - - WCHAR wide_result; - int b = ::LCMapStringW( - idx, // locale identifier - LCMAP_LOWERCASE, // mapping transformation type - &wide_c, // source string - 1, // number of characters in source string - &wide_result, // destination buffer - 1); // size of destination buffer - if(b == 0) - return c; - - if (::WideCharToMultiByte(code_page, 0, &wide_result, 1, result, 2, NULL, NULL) == 0) - return c; // No single byte lower case equivalent available -#endif - return result[0]; -} - -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type idx) -{ - wchar_t result[2]; - int b = ::LCMapStringW( - idx, // locale identifier - LCMAP_LOWERCASE, // mapping transformation type - &c, // source string - 1, // number of characters in source string - result, // destination buffer - 1); // size of destination buffer - if(b == 0) - return c; - return result[0]; -} -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type idx) -{ - wchar_t result[2]; - int b = ::LCMapStringW( - idx, // locale identifier - LCMAP_LOWERCASE, // mapping transformation type - (wchar_t const*)&c, // source string - 1, // number of characters in source string - result, // destination buffer - 1); // size of destination buffer - if(b == 0) - return c; - return result[0]; -} -#endif -#endif -BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type idx) -{ - char result[2]; -#ifndef BOOST_NO_ANSI_APIS - int b = ::LCMapStringA( - idx, // locale identifier - LCMAP_UPPERCASE, // mapping transformation type - &c, // source string - 1, // number of characters in source string - result, // destination buffer - 1); // size of destination buffer - if(b == 0) - return c; -#else - UINT code_page = get_code_page_for_locale_id(idx); - if(code_page == 0) - return c; - - WCHAR wide_c; - if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0) - return c; - - WCHAR wide_result; - int b = ::LCMapStringW( - idx, // locale identifier - LCMAP_UPPERCASE, // mapping transformation type - &wide_c, // source string - 1, // number of characters in source string - &wide_result, // destination buffer - 1); // size of destination buffer - if(b == 0) - return c; - - if (::WideCharToMultiByte(code_page, 0, &wide_result, 1, result, 2, NULL, NULL) == 0) - return c; // No single byte upper case equivalent available. -#endif - return result[0]; -} - -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type idx) -{ - wchar_t result[2]; - int b = ::LCMapStringW( - idx, // locale identifier - LCMAP_UPPERCASE, // mapping transformation type - &c, // source string - 1, // number of characters in source string - result, // destination buffer - 1); // size of destination buffer - if(b == 0) - return c; - return result[0]; -} -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_toupper(unsigned short c, lcid_type idx) -{ - wchar_t result[2]; - int b = ::LCMapStringW( - idx, // locale identifier - LCMAP_UPPERCASE, // mapping transformation type - (wchar_t const*)&c, // source string - 1, // number of characters in source string - result, // destination buffer - 1); // size of destination buffer - if(b == 0) - return c; - return result[0]; -} -#endif -#endif -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type idx, boost::uint32_t m, char c) -{ - WORD mask; -#ifndef BOOST_NO_ANSI_APIS - if(::GetStringTypeExA(idx, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation::mask_base)) - return true; -#else - UINT code_page = get_code_page_for_locale_id(idx); - if(code_page == 0) - return false; - - WCHAR wide_c; - if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0) - return false; - - if(::GetStringTypeExW(idx, CT_CTYPE1, &wide_c, 1, &mask) && (mask & m & w32_regex_traits_implementation::mask_base)) - return true; -#endif - if((m & w32_regex_traits_implementation::mask_word) && (c == '_')) - return true; - return false; -} - -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type idx, boost::uint32_t m, wchar_t c) -{ - WORD mask; - if(::GetStringTypeExW(idx, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation::mask_base)) - return true; - if((m & w32_regex_traits_implementation::mask_word) && (c == '_')) - return true; - if((m & w32_regex_traits_implementation::mask_unicode) && (c > 0xff)) - return true; - return false; -} -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type idx, boost::uint32_t m, unsigned short c) -{ - WORD mask; - if(::GetStringTypeExW(idx, CT_CTYPE1, (wchar_t const*)&c, 1, &mask) && (mask & m & w32_regex_traits_implementation::mask_base)) - return true; - if((m & w32_regex_traits_implementation::mask_word) && (c == '_')) - return true; - if((m & w32_regex_traits_implementation::mask_unicode) && (c > 0xff)) - return true; - return false; -} -#endif -#endif - -} // BOOST_REGEX_DETAIL_NS -} // boost - -#endif - diff --git a/src/boost/libs/regex/src/wc_regex_traits.cpp b/src/boost/libs/regex/src/wc_regex_traits.cpp deleted file mode 100644 index 9fef1f992..000000000 --- a/src/boost/libs/regex/src/wc_regex_traits.cpp +++ /dev/null @@ -1,314 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: wc_regex_traits.cpp - * VERSION: see - * DESCRIPTION: Implements out of line members for c_regex_traits - */ - - -#define BOOST_REGEX_SOURCE - -#include -#include -#include -#include "internals.hpp" - -#if defined(_DLL_CPPLIB) && !defined(_M_CEE_PURE) && defined(_NATIVE_WCHAR_T_DEFINED) \ - && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))\ - && BOOST_WORKAROUND(BOOST_MSVC, <1600) -// -// This is a horrible workaround, but without declaring these symbols extern we get -// duplicate symbol errors when linking if the application is built without -// /Zc:wchar_t -// -#ifdef _CRTIMP2_PURE -# define BOOST_REGEX_STDLIB_DECL _CRTIMP2_PURE -#else -# define BOOST_REGEX_STDLIB_DECL _CRTIMP2 -#endif - -namespace std{ - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -template class BOOST_REGEX_STDLIB_DECL allocator; -template class BOOST_REGEX_STDLIB_DECL _String_val >; -template class BOOST_REGEX_STDLIB_DECL basic_string, allocator >; -#endif - -#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) -template<> BOOST_REGEX_STDLIB_DECL std::size_t __cdecl char_traits::length(unsigned short const*); -#endif - -template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==( - const basic_string, allocator >&, - const basic_string, allocator >&); -template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==( - const unsigned short *, - const basic_string, allocator >&); -template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==( - const basic_string, allocator >&, - const unsigned short *); -template BOOST_REGEX_STDLIB_DECL bool __cdecl operator<( - const basic_string, allocator >&, - const basic_string, allocator >&); -template BOOST_REGEX_STDLIB_DECL bool __cdecl operator>( - const basic_string, allocator >&, - const basic_string, allocator >&); -} -#endif - -#include -#include - -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560) - -#include -#ifndef BOOST_NO_WREGEX -#include -#include - -#if defined(BOOST_NO_STDC_NAMESPACE) -namespace std{ - using ::wcstol; -} -#endif - -namespace boost{ - -c_regex_traits::string_type BOOST_REGEX_CALL c_regex_traits::transform(const wchar_t* p1, const wchar_t* p2) -{ - std::size_t r; - std::size_t s = 10; - std::wstring src(p1, p2); - std::wstring result(s, L' '); - while(s < (r = std::wcsxfrm(&*result.begin(), src.c_str(), s))) - { -#if defined(_CPPLIB_VER) - // - // A bug in VC11 and 12 causes the program to hang if we pass a null-string - // to std::strxfrm, but only for certain locales :-( - // Probably effects Intel and Clang or any compiler using the VC std library (Dinkumware). - // - if(r == INT_MAX) - { - result.erase(); - result.insert(result.begin(), static_cast(0)); - return result; - } -#endif - result.append(r - s + 3, L' '); - s = result.size(); - } - result.erase(r); - return result; -} - -c_regex_traits::string_type BOOST_REGEX_CALL c_regex_traits::transform_primary(const wchar_t* p1, const wchar_t* p2) -{ - static wchar_t s_delim; - static const int s_collate_type = ::boost::BOOST_REGEX_DETAIL_NS::find_sort_syntax(static_cast*>(0), &s_delim); - std::wstring result; - // - // What we do here depends upon the format of the sort key returned by - // sort key returned by this->transform: - // - switch(s_collate_type) - { - case ::boost::BOOST_REGEX_DETAIL_NS::sort_C: - case ::boost::BOOST_REGEX_DETAIL_NS::sort_unknown: - // the best we can do is translate to lower case, then get a regular sort key: - { - result.assign(p1, p2); - for(std::wstring::size_type i = 0; i < result.size(); ++i) - result[i] = (std::towlower)(result[i]); - result = c_regex_traits::transform(&*result.begin(), &*result.begin() + result.size()); - break; - } - case ::boost::BOOST_REGEX_DETAIL_NS::sort_fixed: - { - // get a regular sort key, and then truncate it: - result = c_regex_traits::transform(&*result.begin(), &*result.begin() + result.size()); - result.erase(s_delim); - break; - } - case ::boost::BOOST_REGEX_DETAIL_NS::sort_delim: - // get a regular sort key, and then truncate everything after the delim: - result = c_regex_traits::transform(&*result.begin(), &*result.begin() + result.size()); - if(result.size() && (result[0] == s_delim)) - break; - std::size_t i; - for(i = 0; i < result.size(); ++i) - { - if(result[i] == s_delim) - break; - } - result.erase(i); - break; - } - if(result.empty()) - result = std::wstring(1, char(0)); - return result; -} - -c_regex_traits::char_class_type BOOST_REGEX_CALL c_regex_traits::lookup_classname(const wchar_t* p1, const wchar_t* p2) -{ - static const char_class_type masks[] = - { - 0, - char_class_alnum, - char_class_alpha, - char_class_blank, - char_class_cntrl, - char_class_digit, - char_class_digit, - char_class_graph, - char_class_horizontal, - char_class_lower, - char_class_lower, - char_class_print, - char_class_punct, - char_class_space, - char_class_space, - char_class_upper, - char_class_unicode, - char_class_upper, - char_class_vertical, - char_class_alnum | char_class_word, - char_class_alnum | char_class_word, - char_class_xdigit, - }; - - int idx = ::boost::BOOST_REGEX_DETAIL_NS::get_default_class_id(p1, p2); - if(idx < 0) - { - std::wstring s(p1, p2); - for(std::wstring::size_type i = 0; i < s.size(); ++i) - s[i] = (std::towlower)(s[i]); - idx = ::boost::BOOST_REGEX_DETAIL_NS::get_default_class_id(&*s.begin(), &*s.begin() + s.size()); - } - BOOST_ASSERT(idx+1 < static_cast(sizeof(masks) / sizeof(masks[0]))); - return masks[idx+1]; -} - -bool BOOST_REGEX_CALL c_regex_traits::isctype(wchar_t c, char_class_type mask) -{ - return - ((mask & char_class_space) && (std::iswspace)(c)) - || ((mask & char_class_print) && (std::iswprint)(c)) - || ((mask & char_class_cntrl) && (std::iswcntrl)(c)) - || ((mask & char_class_upper) && (std::iswupper)(c)) - || ((mask & char_class_lower) && (std::iswlower)(c)) - || ((mask & char_class_alpha) && (std::iswalpha)(c)) - || ((mask & char_class_digit) && (std::iswdigit)(c)) - || ((mask & char_class_punct) && (std::iswpunct)(c)) - || ((mask & char_class_xdigit) && (std::iswxdigit)(c)) - || ((mask & char_class_blank) && (std::iswspace)(c) && !::boost::BOOST_REGEX_DETAIL_NS::is_separator(c)) - || ((mask & char_class_word) && (c == '_')) - || ((mask & char_class_unicode) && (c & ~static_cast(0xff))) - || ((mask & char_class_vertical) && (::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) || (c == L'\v'))) - || ((mask & char_class_horizontal) && (std::iswspace)(c) && !::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) && (c != L'\v')); -} - -c_regex_traits::string_type BOOST_REGEX_CALL c_regex_traits::lookup_collatename(const wchar_t* p1, const wchar_t* p2) -{ -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ - && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\ - && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) - std::string name(p1, p2); -#else - std::string name; - const wchar_t* p0 = p1; - while(p0 != p2) - name.append(1, char(*p0++)); -#endif - name = ::boost::BOOST_REGEX_DETAIL_NS::lookup_default_collate_name(name); -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ - && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\ - && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) - if(name.size()) - return string_type(name.begin(), name.end()); -#else - if(name.size()) - { - string_type result; - typedef std::string::const_iterator iter; - iter b = name.begin(); - iter e = name.end(); - while(b != e) - result.append(1, wchar_t(*b++)); - return result; - } -#endif - if(p2 - p1 == 1) - return string_type(1, *p1); - return string_type(); -} - -int BOOST_REGEX_CALL c_regex_traits::value(wchar_t c, int radix) -{ -#ifdef __BORLANDC__ - // workaround for broken wcstol: - if((std::iswxdigit)(c) == 0) - return -1; -#endif - wchar_t b[2] = { c, '\0', }; - wchar_t* ep; - int result = std::wcstol(b, &ep, radix); - if(ep == b) - return -1; - return result; -} - -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -c_regex_traits::string_type BOOST_REGEX_CALL c_regex_traits::transform(const unsigned short* p1, const unsigned short* p2) -{ - std::wstring result = c_regex_traits::transform((const wchar_t*)p1, (const wchar_t*)p2); - return string_type(result.begin(), result.end()); -} - -c_regex_traits::string_type BOOST_REGEX_CALL c_regex_traits::transform_primary(const unsigned short* p1, const unsigned short* p2) -{ - std::wstring result = c_regex_traits::transform_primary((const wchar_t*)p1, (const wchar_t*)p2); - return string_type(result.begin(), result.end()); -} - -c_regex_traits::char_class_type BOOST_REGEX_CALL c_regex_traits::lookup_classname(const unsigned short* p1, const unsigned short* p2) -{ - return c_regex_traits::lookup_classname((const wchar_t*)p1, (const wchar_t*)p2); -} - -c_regex_traits::string_type BOOST_REGEX_CALL c_regex_traits::lookup_collatename(const unsigned short* p1, const unsigned short* p2) -{ - std::wstring result = c_regex_traits::lookup_collatename((const wchar_t*)p1, (const wchar_t*)p2); - return string_type(result.begin(), result.end()); -} - -bool BOOST_REGEX_CALL c_regex_traits::isctype(unsigned short c, char_class_type m) -{ - return c_regex_traits::isctype(c, m); -} - -int BOOST_REGEX_CALL c_regex_traits::value(unsigned short c, int radix) -{ - return c_regex_traits::value(c, radix); -} - -#endif - -} - -#endif // BOOST_NO_WREGEX - -#endif // __BORLANDC__ - diff --git a/src/boost/libs/regex/src/wide_posix_api.cpp b/src/boost/libs/regex/src/wide_posix_api.cpp deleted file mode 100644 index d91440041..000000000 --- a/src/boost/libs/regex/src/wide_posix_api.cpp +++ /dev/null @@ -1,312 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: wide_posix_api.cpp - * VERSION: see - * DESCRIPTION: Implements the wide character POSIX API wrappers. - */ - -#define BOOST_REGEX_SOURCE - -#include - -#ifndef BOOST_NO_WREGEX - -#include -#include - -#include -#include -#include - -#ifdef BOOST_INTEL -#pragma warning(disable:981) -#endif - -#if defined(BOOST_NO_STDC_NAMESPACE) || defined(__NetBSD__) -namespace std{ -# ifndef BOOST_NO_SWPRINTF - using ::swprintf; -# endif -} -#endif - - -namespace boost{ - -namespace { - -unsigned int wmagic_value = 28631; - -const wchar_t* wnames[] = { - L"REG_NOERROR", - L"REG_NOMATCH", - L"REG_BADPAT", - L"REG_ECOLLATE", - L"REG_ECTYPE", - L"REG_EESCAPE", - L"REG_ESUBREG", - L"REG_EBRACK", - L"REG_EPAREN", - L"REG_EBRACE", - L"REG_BADBR", - L"REG_ERANGE", - L"REG_ESPACE", - L"REG_BADRPT", - L"REG_EEND", - L"REG_ESIZE", - L"REG_ERPAREN", - L"REG_EMPTY", - L"REG_ECOMPLEXITY", - L"REG_ESTACK", - L"REG_E_PERL", - L"REG_E_UNKNOWN", -}; -} - -typedef boost::basic_regex > wc_regex_type; - -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW* expression, const wchar_t* ptr, int f) -{ -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - expression->guts = new wc_regex_type(); -#ifndef BOOST_NO_EXCEPTIONS - } catch(...) - { - expression->guts = 0; - return REG_ESPACE; - } -#else - if(0 == expression->guts) - return REG_E_MEMORY; -#endif - // set default flags: - boost::uint_fast32_t flags = (f & REG_PERLEX) ? 0 : ((f & REG_EXTENDED) ? wregex::extended : wregex::basic); - expression->eflags = (f & REG_NEWLINE) ? match_not_dot_newline : match_default; - - // and translate those that are actually set: - if(f & REG_NOCOLLATE) - { - flags |= wregex::nocollate; -#ifndef BOOST_REGEX_V3 - flags &= ~wregex::collate; -#endif - } - - if(f & REG_NOSUB) - { - //expression->eflags |= match_any; - flags |= wregex::nosubs; - } - - if(f & REG_NOSPEC) - flags |= wregex::literal; - if(f & REG_ICASE) - flags |= wregex::icase; - if(f & REG_ESCAPE_IN_LISTS) - flags &= ~wregex::no_escape_in_lists; - if(f & REG_NEWLINE_ALT) - flags |= wregex::newline_alt; - - const wchar_t* p2; - if(f & REG_PEND) - p2 = expression->re_endp; - else p2 = ptr + std::wcslen(ptr); - - int result; - -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - expression->re_magic = wmagic_value; - static_cast(expression->guts)->set_expression(ptr, p2, flags); - expression->re_nsub = static_cast(expression->guts)->mark_count(); - result = static_cast(expression->guts)->error_code(); -#ifndef BOOST_NO_EXCEPTIONS - } - catch(const boost::regex_error& be) - { - result = be.code(); - } - catch(...) - { - result = REG_E_UNKNOWN; - } -#endif - if(result) - regfreeW(expression); - return result; - -} - -BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int code, const regex_tW* e, wchar_t* buf, regsize_t buf_size) -{ - std::size_t result = 0; - if(code & REG_ITOA) - { - code &= ~REG_ITOA; - if((code <= (int)REG_E_UNKNOWN) && (code >= 0)) - { - result = std::wcslen(wnames[code]) + 1; - if(buf_size >= result) -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE) - ::wcscpy_s(buf, buf_size, wnames[code]); -#else - std::wcscpy(buf, wnames[code]); -#endif - return result; - } - return result; - } -#if !defined(BOOST_NO_SWPRINTF) - if(code == REG_ATOI) - { - wchar_t localbuf[5]; - if(e == 0) - return 0; - for(int i = 0; i <= (int)REG_E_UNKNOWN; ++i) - { - if(std::wcscmp(e->re_endp, wnames[i]) == 0) - { -#if defined(_WIN32_WCE) && !defined(UNDER_CE) - (std::swprintf)(localbuf, L"%d", i); -#else - (std::swprintf)(localbuf, 5, L"%d", i); -#endif - if(std::wcslen(localbuf) < buf_size) -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE) - ::wcscpy_s(buf, buf_size, localbuf); -#else - std::wcscpy(buf, localbuf); -#endif - return std::wcslen(localbuf) + 1; - } - } -#if defined(_WIN32_WCE) && !defined(UNDER_CE) - (std::swprintf)(localbuf, L"%d", 0); -#else - (std::swprintf)(localbuf, 5, L"%d", 0); -#endif - if(std::wcslen(localbuf) < buf_size) -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE) - ::wcscpy_s(buf, buf_size, localbuf); -#else - std::wcscpy(buf, localbuf); -#endif - return std::wcslen(localbuf) + 1; - } -#endif - if(code <= (int)REG_E_UNKNOWN) - { - std::string p; - if((e) && (e->re_magic == wmagic_value)) - p = static_cast(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code)); - else - { - p = BOOST_REGEX_DETAIL_NS::get_default_error_string(static_cast< ::boost::regex_constants::error_type>(code)); - } - std::size_t len = p.size(); - if(len < buf_size) - { - BOOST_REGEX_DETAIL_NS::copy(p.c_str(), p.c_str() + p.size() + 1, buf); - } - return len + 1; - } - if(buf_size) - *buf = 0; - return 0; -} - -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecW(const regex_tW* expression, const wchar_t* buf, regsize_t n, regmatch_t* array, int eflags) -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4267) -#endif - bool result = false; - match_flag_type flags = match_default | expression->eflags; - const wchar_t* end; - const wchar_t* start; - wcmatch m; - - if(eflags & REG_NOTBOL) - flags |= match_not_bol; - if(eflags & REG_NOTEOL) - flags |= match_not_eol; - if(eflags & REG_STARTEND) - { - start = buf + array[0].rm_so; - end = buf + array[0].rm_eo; - } - else - { - start = buf; - end = buf + std::wcslen(buf); - } - -#ifndef BOOST_NO_EXCEPTIONS - try{ -#endif - if(expression->re_magic == wmagic_value) - { - result = regex_search(start, end, m, *static_cast(expression->guts), flags); - } - else - return result; -#ifndef BOOST_NO_EXCEPTIONS - } catch(...) - { - return REG_E_UNKNOWN; - } -#endif - if(result) - { - // extract what matched: - std::size_t i; - for(i = 0; (i < n) && (i < expression->re_nsub + 1); ++i) - { - array[i].rm_so = (m[i].matched == false) ? -1 : (m[i].first - buf); - array[i].rm_eo = (m[i].matched == false) ? -1 : (m[i].second - buf); - } - // and set anything else to -1: - for(i = expression->re_nsub + 1; i < n; ++i) - { - array[i].rm_so = -1; - array[i].rm_eo = -1; - } - return 0; - } - return REG_NOMATCH; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeW(regex_tW* expression) -{ - if(expression->re_magic == wmagic_value) - { - delete static_cast(expression->guts); - } - expression->re_magic = 0; -} - -} // namespace boost; - -#endif - - - - diff --git a/src/boost/libs/regex/src/winstances.cpp b/src/boost/libs/regex/src/winstances.cpp deleted file mode 100644 index 81ee85e31..000000000 --- a/src/boost/libs/regex/src/winstances.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - - /* - * LOCATION: see http://www.boost.org for most recent version. - * FILE: winstances.cpp - * VERSION: see - * DESCRIPTION: regex wide character template instances. - */ - -#define BOOST_REGEX_SOURCE - -#include - -#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES) -#define BOOST_REGEX_WIDE_INSTANTIATE - -#ifdef __BORLANDC__ -#pragma hrdstop -#endif - -#include - -#endif - - - diff --git a/src/boost/libs/regex/test/config_info/regex_config_info.cpp b/src/boost/libs/regex/test/config_info/regex_config_info.cpp deleted file mode 100644 index e653a6b29..000000000 --- a/src/boost/libs/regex/test/config_info/regex_config_info.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - * - */ - -// -// This program extends config_info to print out regex library -// configuration information. We do this by redfining the main -// provided by config_info, our real main will call it later: -// -#ifndef OLD_MAIN -# define OLD_MAIN info_main -#endif - -#define main OLD_MAIN -#include -#undef main -#ifndef NEW_MAIN -# define NEW_MAIN main -#endif -#include - -int NEW_MAIN() -{ - OLD_MAIN(); - - print_separator(); - PRINT_MACRO(BOOST_REGEX_USER_CONFIG); - PRINT_MACRO(BOOST_REGEX_USE_C_LOCALE); - PRINT_MACRO(BOOST_REGEX_USE_CPP_LOCALE); - PRINT_MACRO(BOOST_REGEX_HAS_DLL_RUNTIME); - PRINT_MACRO(BOOST_REGEX_DYN_LINK); - PRINT_MACRO(BOOST_REGEX_NO_LIB); - PRINT_MACRO(BOOST_REGEX_NO_TEMPLATE_SWITCH_MERGE); - PRINT_MACRO(BOOST_REGEX_NO_W32); - PRINT_MACRO(BOOST_REGEX_NO_BOOL); - PRINT_MACRO(BOOST_REGEX_NO_EXTERNAL_TEMPLATES); - PRINT_MACRO(BOOST_REGEX_NO_FWD); - PRINT_MACRO(BOOST_REGEX_V3); - PRINT_MACRO(BOOST_REGEX_HAS_MS_STACK_GUARD); - PRINT_MACRO(BOOST_REGEX_RECURSIVE); - PRINT_MACRO(BOOST_REGEX_NON_RECURSIVE); - PRINT_MACRO(BOOST_REGEX_BLOCKSIZE); - PRINT_MACRO(BOOST_REGEX_MAX_BLOCKS); - PRINT_MACRO(BOOST_REGEX_MAX_CACHE_BLOCKS); - PRINT_MACRO(BOOST_NO_WREGEX); - PRINT_MACRO(BOOST_REGEX_NO_FILEITER); - PRINT_MACRO(BOOST_REGEX_STATIC_LINK); - PRINT_MACRO(BOOST_REGEX_DYN_LINK); - PRINT_MACRO(BOOST_REGEX_DECL); - PRINT_MACRO(BOOST_REGEX_CALL); - PRINT_MACRO(BOOST_REGEX_CCALL); - PRINT_MACRO(BOOST_REGEX_MAX_STATE_COUNT); - PRINT_MACRO(BOOST_REGEX_BUGGY_CTYPE_FACET); - PRINT_MACRO(BOOST_REGEX_MATCH_EXTRA); - PRINT_MACRO(BOOST_HAS_ICU); - PRINT_MACRO(BOOST_REGEX_HAS_OTHER_WCHAR_T); - -#if defined(BOOST_REGEX_CONFIG_INFO) && !defined(NO_RECURSE) - print_regex_library_info(); -#endif - - return 0; -} - - - diff --git a/src/boost/libs/system/src/error_code.cpp b/src/boost/libs/system/src/error_code.cpp deleted file mode 100644 index c1a1c670f..000000000 --- a/src/boost/libs/system/src/error_code.cpp +++ /dev/null @@ -1,31 +0,0 @@ -// error_code stub implementation, for compatibility only - -// Copyright Beman Dawes 2002, 2006 -// Copyright Peter Dimov 2018 - -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -// See library home page at http://www.boost.org/libs/system - -//----------------------------------------------------------------------------// - -// define BOOST_SYSTEM_SOURCE so that knows -// the library is being built (possibly exporting rather than importing code) -#define BOOST_SYSTEM_SOURCE - -#include - -namespace boost -{ - -namespace system -{ - -BOOST_SYSTEM_DECL void dummy_exported_function() -{ -} - -} // namespace system - -} // namespace boost diff --git a/src/cbang/Application.cpp b/src/cbang/Application.cpp index b65eb54ce..094f930a5 100644 --- a/src/cbang/Application.cpp +++ b/src/cbang/Application.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,7 +32,6 @@ #include "Application.h" -#include #include #include @@ -40,20 +39,12 @@ #include #include -#include #include -#include - -#include - +#include #include #include -#include -#include -#include -#include -#include -#include +#include +#include #include #include @@ -65,12 +56,10 @@ using namespace std; using namespace cb; -using namespace cb::Script; namespace cb { - extern const DirectoryResource resource0; - + extern void loadResources(); namespace BuildInfo { void addBuildInfo(const char *category); } @@ -78,10 +67,10 @@ namespace cb { Application::Application(const string &name, hasFeature_t hasFeature) : - Features(hasFeature), Environment(name), logger(Logger::instance()), - enumMan(new EnumerationManager(*this)), name(name), configRotate(true), - configRotateMax(16), configRotateDir("configs"), initialized(false), - configured(false), quit(false), startTime(Timer::now()) { + Features(hasFeature), logger(Logger::instance()), name(name), + quit(false), startTime(Time::now()) { + + loadResources(); // Core dumps #if defined(DEBUG) && !defined(_WIN32) @@ -110,8 +99,6 @@ Application::Application(const string &name, hasFeature_t hasFeature) : options.addTarget("exception-locations", Exception::printLocations, "Enable or disable exception location printing."); options.popCategory(); - - SocketDebugger::instance().addOptions(options); } if (hasFeature(FEATURE_PROCESS_CONTROL)) { @@ -124,20 +111,6 @@ Application::Application(const string &name, hasFeature_t hasFeature) : options.popCategory(); } - if (hasFeature(FEATURE_CONFIG_FILE) && hasFeature(FEATURE_SCRIPT_SERVER)) { - options.pushCategory("Configuration"); - options.addTarget("config-rotate", configRotate, "Rotate the " - "configuration file to a backup when saving would " - "overwrite the previous configuration."); - options.addTarget("config-rotate-dir", configRotateDir, - "Put rotated configs in this directory."); - options.addTarget("config-rotate-max", configRotateMax, "The maximum " - "number of rotated configuration files to keep. A " - "value of zero will keep all configuration file " - "backups."); - options.popCategory(); - } - logger.addOptions(options); // Command line @@ -173,65 +146,19 @@ Application::Application(const string &name, hasFeature_t hasFeature) : // Add to info SystemInfo::instance().add(info); info.add("System", "UTC Offset", String(Time::offset() / 3600)); - info.add("System", "PID", String(SystemUtilities::getPID())); - info.add("System", "CWD", SystemUtilities::getcwd()); - } - - // Script functions - typedef Application A; - typedef Script::MemberFunctor MF; - - add(new MF("uptime", this, &A::evalUptime, 0, 0, - "Print application uptime")); - add(new MF("option", this, &A::evalOption, 1, 2, - "Get or set a configuration option", " [value]")); - - if (hasFeature(FEATURE_SCRIPT_SERVER)) { - if (hasFeature(FEATURE_INFO)) { - add(new MF("get-info", this, &A::evalGetInfo, 2, 2, - "Print application information", " ")); - add(new MF("info", this, &A::evalInfo, 0, 0, - "Print application information in PyON format")); - } - add(new MF("options", this, &A::evalOptions, 0, ~0, - "List or set options with their values.\n" - "If no name arguments are given then all options with " - "non-default values will be listed. If the '-d' argument is " - "given then even defaulted options will be listed. If the " - "'-a' option is given then unset options will also be listed. " - "Otherwise, if option names are provided only those options " - "will be listed.\n" - "The special name '*' lists all options which have not yet been " - "listed and is affected by the '-d' and '-a' options.\n" - "If a name argument is followed directly by an equal sign then " - "the rest of the arugment will be used to set the option's " - "value. If instead a name argument is followed immediately by " - "a '!' then the option will be reset to its default value.\n" - "Options which are set or reset will also be listed.\n" - "Options are listed as a PyON format dictionary." - "[-d | -a] | [[! | =]]...")); - add(new MF("shutdown", this, &A::evalShutdown, 0, 0, - "Shutdown the application")); - add(new MF("save", this, &A::evalSave, 0, 1, - "Save the configuration either to the specified file or to the " - "file the configuration was last loaded from.", "[file]")); - - if (hasFeature(FEATURE_DEBUGGING)) - SocketDebugger::instance().addCommands(*this); + info.add("System", "PID", String(SystemUtilities::getPID())); + info.add("System", "CWD", SystemUtilities::getcwd()); + info.add("System", "Exec", SystemUtilities::getExecutablePath()); } // Load licenses - const Resource *licenses = resource0.find("licenses"); - if (licenses) - for (unsigned i = 0; licenses->getChild(i); i++) - cmdLine.addLicenseText(licenses->getChild(i)->getData()); - else LOG_ERROR("Error loading licenses"); + auto &licenses = ResourceManager::instance().get("cb/licenses"); + for (unsigned i = 0; licenses.getChild(i); i++) + cmdLine.addLicenseText(licenses.getChild(i)->getData()); } Application::~Application() { - zap(enumMan); - #ifdef DEBUG_LEAKS // Deallocate singletons SingletonDealloc::instance().deallocate(); @@ -252,7 +179,7 @@ bool Application::_hasFeature(int feature) { } -double Application::getUptime() const {return Timer::now() - startTime;} +uint64_t Application::getUptime() const {return Time::now() - startTime;} int Application::init(int argc, char *argv[]) { @@ -307,14 +234,13 @@ int Application::init(int argc, char *argv[]) { !configured && SystemUtilities::exists(cmdLine["--config"])) configAction(cmdLine["--config"]); - logger.setOptions(options); - LOG_DEBUG(3, "Initializing " << name); + if (options["log"].hasValue()) logger.startLogFile(options["log"]); if (hasFeature(FEATURE_PROCESS_CONTROL)) try { if (options["priority"].hasValue()) - SystemUtilities::setPriority(ProcessPriority::parse - (options["priority"])); + SystemUtilities::setPriority( + ProcessPriority::parse(options["priority"])); } CBANG_CATCH_WARNING; if (hasFeature(FEATURE_SIGNAL_HANDLER)) @@ -330,8 +256,8 @@ int Application::init(int argc, char *argv[]) { void Application::printInfo() const { // Print Info if (hasFeature(FEATURE_INFO)) - Info::instance().print - (*LOG_INFO_STREAM(1), 80 - Logger::instance().getHeaderWidth()); + Info::instance().print( + *LOG_INFO_STREAM(1), 80 - Logger::instance().getHeaderWidth()); // Write config to log if (hasFeature(FEATURE_CONFIG_FILE)) @@ -340,7 +266,7 @@ void Application::printInfo() const { } -void Application::write(XMLWriter &writer, uint32_t flags) const { +void Application::write(XML::Writer &writer, uint32_t flags) const { getOptions().write(writer, flags); } @@ -376,7 +302,7 @@ void Application::saveConfig(const string &_filename) const { if (configRotate) SystemUtilities::rotate(filename, configRotateDir, configRotateMax); - LOG_INFO(1, "Saving configuration to " << filename); + LOG_INFO(2, "Saving configuration to " << filename); writeConfig(*LOG_INFO_STREAM(2)); writeConfig(*SystemUtilities::open(filename, ios::out), Option::OBSCURED_FLAG); @@ -384,128 +310,13 @@ void Application::saveConfig(const string &_filename) const { void Application::writeConfig(ostream &stream, uint32_t flags) const { - XMLWriter writer(stream, true); + XML::Writer writer(stream, true); writer.startElement("config"); write(writer, flags); writer.endElement("config"); } -void Application::evalShutdown(const Context &ctx) { - requestExit(); -} - - -void Application::evalUptime(const Context &ctx) { - ctx.stream << HumanTime((uint64_t)getUptime()); -} - - -void Application::evalGetInfo(const Context &ctx) { - ctx.stream << Info::instance().get(ctx.args[1], ctx.args[2]); -} - - -void Application::evalInfo(const Context &ctx) { - ctx.stream << PyON::Message("info", Info::instance().getJSONList()); -} - - -void Application::evalOption(const Script::Context &ctx) { - string name = ctx.args[1]; - - if (options.has(name)) { - if (ctx.args.size() > 2) options[name].set(ctx.args[2]); - else if (options[name].hasValue()) ctx.stream << options[name]; - - } else THROW("Invalid option '" << name << "'"); -} - - -void Application::evalOptions(const Context &ctx) { - evalOptions(ctx, options); -} - - -void Application::evalOptions(const Context &ctx, Options &options) { - bool defaults = false; - bool all = false; - vector names; - cb::SmartPointer dict = new JSON::Dict; - - // Process args - for (unsigned i = 1; i < ctx.args.size(); i++) { - if (ctx.args[i] == "-d") defaults = true; - else if (ctx.args[i] == "-a") all = true; - else names.push_back(ctx.args[i]); - } - - std::set added; - - if (names.empty()) names.push_back("*"); - - for (unsigned i = 0; i < names.size(); i++) { - string name = names[i]; - - if (name == "*") { - Options::const_iterator it; - for (it = options.begin(); it != options.end(); it++) { - Option &option = *it->second; - - if (!all && !option.isSet() && (!defaults || !option.hasValue())) - continue; - - // Avoid duplicates - if (added.find(option.getName()) != added.end()) continue; - added.insert(option.getName()); - - // Add to dictionary - if (option.hasValue()) - dict->insert(option.getName(), option.toString()); - else dict->insertNull(option.getName()); - } - - } else { - size_t equal = name.find('='); - - // Set - if (equal != string::npos) { - string value = name.substr(equal + 1); - name = name.substr(0, equal); - - options.localize(name)->set(value); - // TODO validate value for Option type - } - - // Reset - if (name.length() && name[name.length() - 1] == '!') { - name = name.substr(0, name.length() - 1); - if (options.local(name)) options[name].reset(); - } - - added.insert(name); - if (options.has(name)) { - // Add to dictionary - Option &option = options[name]; - if (option.hasValue()) - dict->insert(option.getName(), option.toString()); - else dict->insertNull(option.getName()); - } - // TODO else report error - } - } - - // Output - if (!dict->empty()) ctx.stream << PyON::Message(ctx.args[0], dict); -} - - -void Application::evalSave(const Script::Context &ctx) { - if (ctx.args.size() == 2) saveConfig(ctx.args[1]); - else saveConfig(); -} - - int Application::printAction() { print(*LOG_RAW_STREAM()); exit(0); @@ -536,7 +347,7 @@ int Application::configAction(Option &option) { void Application::handleSignal(int sig) { if (hasFeature(FEATURE_PROCESS_CONTROL) && options["service"].toBoolean() && sig == SIGHUP) { - LOG_INFO(1, "Service ignoring hangup/logoff signal"); + LOG_INFO(2, "Service ignoring hangup/logoff signal"); return; } diff --git a/src/cbang/Application.h b/src/cbang/Application.h index 136acf9bc..26f32655a 100644 --- a/src/cbang/Application.h +++ b/src/cbang/Application.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -37,15 +37,14 @@ #include #include -#include +#include #include #include #include -#include - +#include #include namespace cb { @@ -55,44 +54,39 @@ namespace cb { namespace cb { - class EnumerationManager; - class XMLWriter; + namespace XML {class Writer;} - class Application : - public Features, protected ExitSignalHandler, public Script::Environment { + class Application : public Features, protected ExitSignalHandler { public: enum { - FEATURE_ENUMERATION_MANAGER, FEATURE_PROCESS_CONTROL, FEATURE_CONFIG_FILE, FEATURE_DEBUGGING, FEATURE_INFO, FEATURE_PRINT_INFO, - FEATURE_SCRIPT_SERVER, FEATURE_SIGNAL_HANDLER, FEATURE_LAST, }; protected: Options options; // Must be first - CommandLine cmdLine; - XMLReader configReader; + XML::Reader configReader; Logger &logger; - EnumerationManager *enumMan; + CommandLine cmdLine; const std::string name; Version version; std::string runDirectoryRegKey; - bool configRotate; - uint32_t configRotateMax; - std::string configRotateDir; + bool configRotate = true; + uint32_t configRotateMax = 16; + std::string configRotateDir = "configs"; - bool initialized; - bool configured; - volatile mutable bool quit; + bool initialized = false; + bool configured = false; + std::atomic quit; - double startTime; + uint64_t startTime; public: Application(const std::string &name, @@ -105,8 +99,7 @@ namespace cb { const Options &getOptions() const {return options;} CommandLine &getCommandLine() {return cmdLine;} Logger &getLogger() {return logger;} - XMLReader &getXMLReader() {return configReader;} - EnumerationManager &getEnumerationManager() {return *enumMan;} + XML::Reader &getXMLReader() {return configReader;} const std::string &getName() const {return name;} const Version &getVersion() const {return version;} @@ -116,14 +109,15 @@ namespace cb { virtual bool shouldQuit() const {return quit;} virtual void requestExit() {quit = true;} - double getUptime() const; + uint64_t getStartTime() const {return startTime;} + uint64_t getUptime() const; virtual int init(int argc, char *argv[]); virtual void afterCommandLineParse() {} virtual void initialize() {} virtual void run() {} virtual void printInfo() const; - virtual void write(XMLWriter &writer, uint32_t flags = 0) const; + virtual void write(XML::Writer &writer, uint32_t flags = 0) const; virtual std::ostream &print(std::ostream &stream) const; virtual void usage(std::ostream &stream, const std::string &name) const; virtual void openConfig(const std::string &filename = std::string()); @@ -131,15 +125,6 @@ namespace cb { virtual void writeConfig(std::ostream &stream, uint32_t flags = 0) const; - virtual void evalShutdown(const Script::Context &ctx); - virtual void evalUptime(const Script::Context &ctx); - virtual void evalGetInfo(const Script::Context &ctx); - virtual void evalInfo(const Script::Context &ctx); - virtual void evalOption(const Script::Context &ctx); - virtual void evalOptions(const Script::Context &ctx); - virtual void evalOptions(const Script::Context &ctx, Options &options); - virtual void evalSave(const Script::Context &ctx); - protected: // Command line actions virtual int printAction(); @@ -148,6 +133,6 @@ namespace cb { virtual int configAction(Option &option); // From SignalHandler - void handleSignal(int sig); + void handleSignal(int sig) override; }; } diff --git a/src/cbang/ApplicationMain.h b/src/cbang/ApplicationMain.h index bc85f8063..5441127bf 100644 --- a/src/cbang/ApplicationMain.h +++ b/src/cbang/ApplicationMain.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -35,7 +35,11 @@ #include #include -#include +#include + +#ifdef _WIN32 +#include +#endif namespace cb { @@ -46,6 +50,7 @@ namespace cb { template static int WINAPI doApplication(int argc, char *argv[]) { try { + SSL::init(); T app; int i = app.init(argc, argv); diff --git a/src/cbang/Catch.h b/src/cbang/Catch.h index e29b15f6e..10da3b954 100644 --- a/src/cbang/Catch.h +++ b/src/cbang/Catch.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -42,33 +42,37 @@ #endif // DEBUG +// NOTE, the variable ``msg`` is made available in all cases during CATCH +// evaluation. ``MSG`` may contain expressions that use this variable. + #define CBANG_CATCH_CBANG(LEVEL, MSG) \ catch (const cb::Exception &e) { \ - CBANG_LOG_LEVEL(LEVEL, "Exception" << MSG << ": " \ - << e CBANG_CATCH_LOCATION); \ + std::string msg = e.toString(); \ + const char *filename = e.getLocation().getFilename().c_str(); \ + CBANG_LOG_LEVEL_LOCATION( \ + LEVEL, "Exception" << MSG << ": " << msg CBANG_CATCH_LOCATION, \ + filename, e.getLocation().getLine()); \ } #define CBANG_CATCH_STD(LEVEL, MSG) \ catch (const std::exception &e) { \ - CBANG_LOG_LEVEL(LEVEL, "std::exception" << MSG << ": " << e.what() \ + const char *msg = e.what(); \ + CBANG_LOG_LEVEL(LEVEL, "std::exception" << MSG << ": " << msg \ CBANG_CATCH_LOCATION); \ } #define CBANG_CATCH_UNKNOWN(LEVEL, MSG) \ catch (...) { \ - CBANG_LOG_LEVEL(LEVEL, "unknown exception" << MSG CBANG_CATCH_LOCATION); \ + const char *msg = "unknown exception"; \ + CBANG_LOG_LEVEL(LEVEL, msg << MSG CBANG_CATCH_LOCATION); \ } -#define CBANG_CATCH_ALL(LEVEL, MSG) \ - CBANG_CATCH_CBANG(LEVEL, MSG) \ - CBANG_CATCH_STD(LEVEL, MSG) \ +#define CBANG_CATCH_ALL(LEVEL, MSG) \ + CBANG_CATCH_CBANG(LEVEL, MSG) \ + CBANG_CATCH_STD(LEVEL, MSG) \ CBANG_CATCH_UNKNOWN(LEVEL, MSG) -#define CBANG_CATCH_CS(LEVEL, MSG) \ - CBANG_CATCH_CBANG(LEVEL, MSG) \ - CBANG_CATCH_STD(LEVEL, MSG) - #ifdef DEBUG #define CBANG_CATCH(LEVEL, MSG) CBANG_CATCH_CBANG(LEVEL, MSG) @@ -76,7 +80,8 @@ #define CBANG_CATCH(LEVEL, MSG) CBANG_CATCH_ALL(LEVEL, MSG) #endif // DEBUG -#define CBANG_TRY_CATCH(LEVEL, EXPR, MSG) try {EXPR;} CBANG_CATCH(LEVEL, MSG) +#define CBANG_TRY_CATCH(LEVEL, EXPR, MSG) \ + do {try {EXPR;} CBANG_CATCH(LEVEL, MSG)} while (0) #define CBANG_CATCH_ERROR CBANG_CATCH(CBANG_LOG_ERROR_LEVEL, "") #define CBANG_CATCH_WARNING CBANG_CATCH(CBANG_LOG_WARNING_LEVEL, "") @@ -91,18 +96,19 @@ catch (...) {} #endif -#define CBANG_TRY_CATCH_ERROR(EXPR) \ +#define CBANG_TRY_CATCH_ERROR(EXPR) \ CBANG_TRY_CATCH(CBANG_LOG_ERROR_LEVEL, EXPR, "") -#define CBANG_TRY_CATCH_WARNING(EXPR) \ +#define CBANG_TRY_CATCH_WARNING(EXPR) \ CBANG_TRY_CATCH(CBANG_LOG_WARNING_LEVEL, EXPR, "") -#define CBANG_TRY_CATCH_INFO(LEVEL, EXPR) \ +#define CBANG_TRY_CATCH_INFO(LEVEL, EXPR) \ CBANG_TRY_CATCH(CBANG_LOG_INFO_LEVEL(LEVEL), EXPR, "") #ifdef DEBUG -#define CBANG_TRY_CATCH_DEBUG(LEVEL, EXPR) \ +#define CBANG_TRY_CATCH_DEBUG(LEVEL, EXPR) \ CBANG_TRY_CATCH(CBANG_LOG_DEBUG_LEVEL(LEVEL), EXPR, "") #else -#define CBANG_TRY_CATCH_DEBUG(LEVEL, EXPR) try {EXPR} CBANG_CATCH_DEBUG(LEVEL) +#define CBANG_TRY_CATCH_DEBUG(LEVEL, EXPR) \ + do {try {EXPR;} CBANG_CATCH_DEBUG(LEVEL)} while (0) #endif #ifdef USING_CBANG diff --git a/src/cbang/Deallocators.h b/src/cbang/Deallocators.h index 1ab32c2eb..8583b1b90 100644 --- a/src/cbang/Deallocators.h +++ b/src/cbang/Deallocators.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,7 +32,7 @@ #pragma once -#include // free() +#include // free() namespace cb { diff --git a/src/cbang/Errors.h b/src/cbang/Errors.h index 1d38ef54b..ff743debb 100644 --- a/src/cbang/Errors.h +++ b/src/cbang/Errors.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or diff --git a/src/cbang/Exception.cpp b/src/cbang/Exception.cpp index 66ad20fad..e0e40a550 100644 --- a/src/cbang/Exception.cpp +++ b/src/cbang/Exception.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -33,54 +33,17 @@ #include "Exception.h" #include "String.h" +#include + #include #include +#include using namespace std; using namespace cb; -#if defined(_WIN32) && !defined(__MINGW32__) -#define WIN32_LEAN_AND_MEAN // Avoid including winsock.h -#include - -extern "C" void convert_win32_exception(unsigned x, EXCEPTION_POINTERS *e){ - const char *msg; - switch (e->ExceptionRecord->ExceptionCode) { - case EXCEPTION_ACCESS_VIOLATION: msg = "Exception access violation"; break; - case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: msg = "Array bounds exceeded"; break; - case EXCEPTION_BREAKPOINT: msg = "Breakpoint"; break; - case EXCEPTION_DATATYPE_MISALIGNMENT: msg = "Datatype misalignment"; break; - case EXCEPTION_FLT_DENORMAL_OPERAND: - msg = "Floating-point denormal operand"; break; - case EXCEPTION_FLT_DIVIDE_BY_ZERO: - msg = "Floating-point divide by zero"; break; - case EXCEPTION_FLT_INEXACT_RESULT: - msg = "Floating-point inexact result"; break; - case EXCEPTION_FLT_INVALID_OPERATION: - msg = "Floating-point invalid operation"; break; - case EXCEPTION_FLT_OVERFLOW: msg = "Floating-point overflow"; break; - case EXCEPTION_FLT_STACK_CHECK: msg = "Floating-point stack check"; break; - case EXCEPTION_FLT_UNDERFLOW: msg = "Floating-point underflow"; break; - case EXCEPTION_ILLEGAL_INSTRUCTION: msg = "Illegal instruction"; break; - case EXCEPTION_IN_PAGE_ERROR: msg = "In page error"; break; - case EXCEPTION_INT_DIVIDE_BY_ZERO: msg = "Tnteger divide by zero"; break; - case EXCEPTION_INT_OVERFLOW: msg = "Integer overflow"; break; - case EXCEPTION_INVALID_DISPOSITION: msg = "Invalid disposition"; break; - case EXCEPTION_NONCONTINUABLE_EXCEPTION: - msg = "Noncontinuable exception"; break; - case EXCEPTION_PRIV_INSTRUCTION: msg = "Private instruction"; break; - case EXCEPTION_SINGLE_STEP: msg = "Single step"; break; - case EXCEPTION_STACK_OVERFLOW: msg = "Stack overflow"; break; - default: msg = "Unknown"; break; - } - - THROW("Win32: 0x" << hex << x << ": " << msg); -} -#endif // _WIN32 - - #ifdef DEBUG bool Exception::enableStackTraces = true; #else @@ -96,14 +59,10 @@ Exception::Exception(const string &message, int code, const SmartPointer &cause) : message(message), code(code), location(location), cause(cause) { -#if defined(_WIN32) && !defined(__MINGW32__) - _set_se_translator(convert_win32_exception); -#endif - -#ifdef HAVE_DEBUGGER +#ifdef HAVE_CBANG_BACKTRACE if (enableStackTraces) { trace = new StackTrace(); - Debugger::instance().getStackTrace(*trace); + Debugger::instance().getStackTrace(*trace, false); } #endif } @@ -117,20 +76,21 @@ ostream &Exception::print(ostream &stream, unsigned level) const { if (printLocations && !location.isEmpty()) stream << "\n At: " << location; - if (!trace.isNull()) { + if (trace.isSet()) { + Debugger::instance().resolve(*trace); + unsigned count = 0; unsigned i = 0; - StackTrace::iterator it; - for (it = trace->begin(); it != trace->end(); it++, i++) { - if (i < 3 && (it->getFunction().find("Debugger") || - it->getFunction().find("Exception"))) + for (auto &frame: *trace) { + if (i++ < 3 && (frame.getFunction().find("Debugger") || + frame.getFunction().find("Exception"))) continue; - else stream << "\n #" << ++count << ' ' << *it; + else stream << "\n #" << ++count << ' ' << frame; } } - if (!cause.isNull()) { + if (cause.isSet()) { stream << endl; if (level > causePrintLevel) { @@ -145,3 +105,34 @@ ostream &Exception::print(ostream &stream, unsigned level) const { return stream; } + + +string Exception::toString() const {return SSTR(*this);} + + +void Exception::write(JSON::Sink &sink, bool withDebugInfo) const { + sink.beginDict(); + + if (!message.empty()) sink.insert("message", message); + if (code) sink.insert("code", code); + + if (withDebugInfo) { + if (!location.isEmpty()) { + sink.beginInsert("location"); + location.write(sink); + } + + if (trace.isSet()) { + Debugger::instance().resolve(*trace); + sink.beginInsert("trace"); + trace->write(sink); + } + } + + if (cause.isSet()) { + sink.beginInsert("cause"); + cause->write(sink, withDebugInfo); + } + + sink.endDict(); +} diff --git a/src/cbang/Exception.h b/src/cbang/Exception.h index dbcfb0966..aa4c45c1e 100644 --- a/src/cbang/Exception.h +++ b/src/cbang/Exception.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -46,7 +46,7 @@ namespace cb { // Forward Declarations - template + template class SmartPointer; /** @@ -54,9 +54,9 @@ namespace cb { * * - A text message * - A numeric code - * - FileLocation indicating where the exception occured. - * - A pointer to an exception which was the original cause. - * - A stack trace. + * - FileLocation indicating where the exception occurred + * - A pointer to an exception which was the original cause + * - A stack trace */ class Exception : public std::exception { private: @@ -94,14 +94,28 @@ namespace cb { virtual ~Exception() {} // From std::exception - virtual const char *what() const throw() {return message.c_str();} + virtual const char *what() const throw() override {return message.c_str();} const std::string &getMessage() const {return message;} void setMessage(const std::string &message) {this->message = message;} + + std::string getMessages() const { + if (cause.isNull()) return message; + return message + ": " + cause->getMessages(); + } + + int getCode() const {return code;} void setCode(int code) {this->code = code;} + + int getTopCode() const { + if (code || cause.isNull()) return code; + return cause->getTopCode(); + } + + const FileLocation &getLocation() const {return location;} void setLocation(const FileLocation &location) {this->location = location;} @@ -115,7 +129,7 @@ namespace cb { void setStackTrace(SmartPointer trace) {this->trace = trace;} /** - * Prints the complete exception recuring down to the cause exception if + * Prints the complete exception recurring down to the cause exception if * not null. WARNING: If there are many layers of causes this function * could print a very large amount of data. This can be limited by * setting the causePrintLevel variable. @@ -126,6 +140,10 @@ namespace cb { * @return A reference to the passed stream. */ std::ostream &print(std::ostream &stream, unsigned level = 0) const; + + std::string toString() const; + + void write(cb::JSON::Sink &sink, bool withDebugInfo = true) const; }; /** @@ -135,7 +153,6 @@ namespace cb { * . . . * } catch (Exception &e) { * cout << e << endl; - * return 0; * } */ inline std::ostream &operator<<(std::ostream &stream, const Exception &e) { diff --git a/src/cbang/FileLocation.cpp b/src/cbang/FileLocation.cpp index 0699e5018..a3386a4f9 100644 --- a/src/cbang/FileLocation.cpp +++ b/src/cbang/FileLocation.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -31,29 +31,51 @@ \******************************************************************************/ #include "FileLocation.h" +#include "String.h" + +#include #include using namespace std; using namespace cb; + +string FileLocation::getFileLineColumn() const { + string s = filename; + + if (0 <= line) { + s += ":" + String(line); + if (0 <= col) s += ":" + String(col); + } + + return s; +} + + +bool FileLocation::isEmpty() const { + return filename.empty() && function.empty() && line < 0 && col < 0; +} + + bool FileLocation::operator==(const FileLocation &o) const { return filename == o.filename && line == o.line && col == o.col && function == o.function; } -ostream &cb::operator<<(ostream &stream, const FileLocation &fl) { - if (!fl.isEmpty()) { - stream << fl.filename; - if (fl.line >= 0) { - stream << ':' << fl.line; - - if (fl.col >= 0) stream << ':' << fl.col; - } +void FileLocation::print(ostream &stream) const { + if (isEmpty()) return; + stream << getFileLineColumn(); + if (!function.empty()) stream << ':' << function << "()"; +} - if (fl.function != "") stream << ':' << fl.function << "()"; - } - return stream; +void FileLocation::write(JSON::Sink &sink) const { + sink.beginDict(); + if (!filename.empty()) sink.insert("filename", filename); + if (!function.empty()) sink.insert("function", function); + if (0 <= line) sink.insert("line", line); + if (0 <= col) sink.insert("column", col); + sink.endDict(); } diff --git a/src/cbang/FileLocation.h b/src/cbang/FileLocation.h index 14c567fe2..ae9543937 100644 --- a/src/cbang/FileLocation.h +++ b/src/cbang/FileLocation.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -34,8 +34,11 @@ #include #include +#include + namespace cb { + namespace JSON {class Sink;} /** * This class is mainly used by Exception, but can be used @@ -46,65 +49,62 @@ namespace cb { protected: std::string filename; std::string function; - long line; - long col; - bool empty; + int32_t line; + int32_t col; public: /** * Construct a default FileLocation with an empty value. */ - FileLocation() : line(-1), col(-1), empty(true) {} + FileLocation() : line(-1), col(-1) {} /** * Copy constructor. */ FileLocation(const FileLocation &x) : - filename(x.filename), function(x.function), line(x.line), col(x.col), - empty(x.empty) {} + filename(x.filename), function(x.function), line(x.line), col(x.col) {} /** * @param filename The name of the file. * @param line The line with that file. * @param col The column on that line. */ - FileLocation(const std::string &filename, const long line = -1, - const long col = -1) : - filename(filename), line(line), col(col), empty(false) {} + FileLocation(const std::string &filename, const int32_t line = -1, + const int32_t col = -1) : + filename(filename), line(line), col(col) {} FileLocation(const std::string &filename, const std::string &function, - const long line = -1, const long col = -1) : - filename(filename), function(function), line(line), col(col), - empty(false) {} + const int32_t line = -1, const int32_t col = -1) : + filename(filename), function(function), line(line), col(col) {} virtual ~FileLocation() {} const std::string &getFilename() const {return filename;} - void setFilename(const std::string &filename) - {this->filename = filename; empty = false;} + void setFilename(const std::string &filename) {this->filename = filename;} const std::string &getFunction() const {return function;} - void setFunction(const std::string &function) - {this->function = function; empty = false;} + void setFunction(const std::string &function) {this->function = function;} + + std::string getFileLineColumn() const; /// @return -1 if no line was set the line number otherwise - long getLine() const {return line;} - void setLine(long line) {this->line = line; empty = false;} - void incLine() {line++; empty = false;} + int32_t getLine() const {return line;} + void setLine(int32_t line) {this->line = line;} + void incLine() {line++;} /// @return -1 of no column was set the column number otherwise - long getCol() const {return col;} - void setCol(long col) {this->col = col; empty = false;} - void incCol() {col++; empty = false;} + int32_t getCol() const {return col;} + void setCol(int32_t col) {this->col = col;} + void incCol() {col++;} - /// @return True of no filename, line, or column have been set - bool isEmpty() const {return empty;} + /// @return True of nothing set + bool isEmpty() const; bool operator==(const FileLocation &o) const; bool operator!=(const FileLocation &o) const {return *this == o;} - friend std::ostream &operator<<(std::ostream &stream, - const FileLocation &fl); + void print(std::ostream &stream) const; + void write(cb::JSON::Sink &sink) const; }; /** @@ -116,19 +116,31 @@ namespace cb { * * @return A reference to the passed stream. */ - std::ostream &operator<<(std::ostream &stream, const FileLocation &fl); + static inline + std::ostream &operator<<(std::ostream &stream, const FileLocation &fl) { + fl.print(stream); + return stream; + } + + + static inline std::string functionName(const std::string &fsig) { + size_t p = fsig.find('('); + size_t s = fsig.find_last_of(' ', p); + size_t start = s == std::string::npos ? 0 : (s + 1); + size_t end = p == std::string::npos ? fsig.length() : p; + + return fsig.substr(start, end - start); + } } -#if __STDC_VERSION__ < 199901L -# if __GNUC__ >= 2 -# define __func__ __FUNCTION__ -# else -# define __func__ "" -# endif +#ifdef _WIN32 +#define CBANG_FUNC __func__ +#else +#define CBANG_FUNC cb::functionName(__PRETTY_FUNCTION__) #endif #ifdef DEBUG -#define CBANG_FILE_LOCATION cb::FileLocation(__FILE__, __func__, __LINE__, -1) +#define CBANG_FILE_LOCATION cb::FileLocation(__FILE__, CBANG_FUNC, __LINE__, -1) #else // DEBUG #define CBANG_FILE_LOCATION cb::FileLocation() diff --git a/src/cbang/Info.cpp b/src/cbang/Info.cpp index fd6742d01..f3886438b 100644 --- a/src/cbang/Info.cpp +++ b/src/cbang/Info.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -34,10 +34,7 @@ #include #include -#include - -#include - +#include #include #include @@ -47,77 +44,57 @@ using namespace cb; Info::category_t &Info::add(const string &category, bool prepend) { - pair insert = - categories.insert(categories_t::value_type(category, category_t())); - - category_t &cat = insert.first->second; - - if (insert.second) { - if (prepend) categories.push_front(&*insert.first); - else categories.push_back(&*insert.first); - } - - return cat; + auto it = categories.find(category); + if (it == categories.end()) + it = categories.insert(category, category_t(), prepend); + return it.value(); } void Info::add(const string &category, const string &key, const string &value, bool prepend) { category_t &cat = add(category, prepend); - - pair insert2 = - cat.insert(category_t::value_type(key, value)); - - if (insert2.second) { - if (prepend) cat.push_front(&*insert2.first); - else cat.push_back(&*insert2.first); - - } else insert2.first->second = value; - + cat.insert(key, value, prepend); if (maxKeyLength < key.length()) maxKeyLength = key.length(); } const string &Info::get(const string &category, const string &key) const { - categories_t::const_map_iterator it = categories.find(category); - if (it == categories.map_end()) + auto it = categories.find(category); + if (it == categories.end()) THROW("Info category '" << category << "' does not exist."); - const category_t &cat = it->second; + const category_t &cat = it.value(); - category_t::const_map_iterator it2 = cat.find(key); - if (it2 == cat.map_end()) + auto it2 = cat.find(key); + if (it2 == cat.end()) THROW("Info category '" << category << "' does have key '" << key << "'."); - return it2->second; + return it2.value(); } bool Info::has(const string &category, const string &key) const { - categories_t::const_map_iterator it = categories.find(category); - if (it == categories.map_end()) return false; + auto it = categories.find(category); + if (it == categories.end()) return false; - const category_t &cat = it->second; + const category_t &cat = it.value(); - return cat.find(key) != cat.map_end(); + return cat.find(key) != cat.end(); } ostream &Info::print(ostream &stream, unsigned width, bool wrap) const { - categories_t::const_iterator it; - for (it = categories.begin(); it != categories.end(); it++) { - if ((*it)->first != "") stream << String::bar((*it)->first, width) << '\n'; + for (auto it: categories) { + if (it.key() != "") stream << String::bar(it.key(), width) << '\n'; - const category_t &cat = (*it)->second; + for (auto it2: it.value()) { + if (it2.value().empty()) continue; // Don't print empty values - category_t::const_iterator it2; - for (it2 = cat.begin(); it2 != cat.end(); it2++) { - if ((*it2)->second.empty()) continue; // Don't print empty values - - stream << setw(maxKeyLength) << (*it2)->first << ": "; - if (wrap) String::fill(stream, (*it2)->second, maxKeyLength + 2, - maxKeyLength + 2); - else stream << (*it2)->second; + stream << setw(maxKeyLength) << it2.key() << ": "; + if (wrap) + String::fill(stream, it2.value(), maxKeyLength + 2, maxKeyLength + 2); + else stream << it2.value(); stream << '\n'; } } @@ -128,36 +105,33 @@ ostream &Info::print(ostream &stream, unsigned width, bool wrap) const { } -void Info::write(XMLWriter &writer) const { - XMLAttributes attrs; +void Info::write(XML::Writer &writer) const { + XML::Attributes attrs; attrs["class"] = "info"; writer.startElement("table", attrs); - categories_t::const_iterator it; - for (it = categories.begin(); it != categories.end(); it++) { - if ((*it)->first != "") { + for (auto it: categories) { + if (it.key() != "") { writer.startElement("tr"); - XMLAttributes attrs; + XML::Attributes attrs; attrs["colspan"] = "2"; attrs["class"] = "category"; writer.startElement("th", attrs); - writer.text((*it)->first); + writer.text(it.key()); writer.endElement("th"); writer.endElement("tr"); } - const category_t &cat = (*it)->second; - - category_t::const_iterator it2; - for (it2 = cat.begin(); it2 != cat.end(); it2++) { + for (auto it2: it.value()) { + if (it2.value().empty()) continue; writer.startElement("tr"); writer.startElement("th"); - writer.text((*it2)->first); + writer.text(it2.key()); writer.endElement("th"); writer.startElement("td"); - writer.text((*it2)->second); + writer.text(it2.value()); writer.endElement("td"); writer.endElement("tr"); } @@ -167,40 +141,36 @@ void Info::write(XMLWriter &writer) const { } -SmartPointer Info::getJSONList() const { - SmartPointer list = new JSON::List; +void Info::writeList(JSON::Sink &sink) const { + sink.beginList(); - categories_t::const_iterator it; - for (it = categories.begin(); it != categories.end(); it++) { - SmartPointer category = new JSON::List; - category->append((*it)->first); - list->append(category); + for (auto it: categories) { + sink.appendList(); + sink.append(it.key()); - const category_t &cat = (*it)->second; - category_t::const_iterator it2; - for (it2 = cat.begin(); it2 != cat.end(); it2++) { - SmartPointer entry = new JSON::List; - entry->append((*it2)->first); - entry->append((*it2)->second); - category->append(entry); + for (auto &it2: it.value()) { + if (it2.value().empty()) continue; + sink.appendList(true); + sink.append(it2.key()); + sink.append(it2.value()); + sink.endList(); } + + sink.endList(); } - return list; + sink.endList(); } void Info::write(JSON::Sink &sink) const { sink.beginDict(); - categories_t::const_iterator it; - for (it = categories.begin(); it != categories.end(); it++) { - sink.insertDict((*it)->first); + for (auto it: categories) { + sink.insertDict(it.key()); - const category_t &cat = (*it)->second; - category_t::const_iterator it2; - for (it2 = cat.begin(); it2 != cat.end(); it2++) - sink.insert((*it2)->first, (*it2)->second); + for (auto it2: it.value()) + sink.insert(it2.key(), it2.value()); sink.endDict(); } diff --git a/src/cbang/Info.h b/src/cbang/Info.h index 438d0edad..1a3debd17 100644 --- a/src/cbang/Info.h +++ b/src/cbang/Info.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -33,47 +33,19 @@ #pragma once #include +#include #include #include -#include -#include namespace cb { - namespace JSON {class List; class Sink;} - - class XMLWriter; + namespace JSON {class Value; class Sink;} + namespace XML {class Writer;} class Info : public Singleton { - // TODO Could probably replace this with cb::OrderedDict<> - template - class ordered_map : - public std::map, - public std::list::value_type *> { - public: - typedef std::map map_t; - typedef std::list list_t; - - typedef typename list_t::iterator iterator; - typedef typename list_t::const_iterator const_iterator; - typedef typename map_t::iterator map_iterator; - typedef typename map_t::const_iterator const_map_iterator; - typedef typename map_t::value_type value_type; - - using list_t::begin; - using list_t::end; - - map_iterator map_begin() {return map_t::begin();} - const_map_iterator map_begin() const {return map_t::begin();} - map_iterator map_end() {return map_t::end();} - const_map_iterator map_end() const {return map_t::end();} - - using map_t::insert; - }; - - typedef ordered_map category_t; - typedef ordered_map categories_t; + typedef OrderedDict category_t; + typedef OrderedDict categories_t; unsigned maxKeyLength; categories_t categories; @@ -91,8 +63,8 @@ namespace cb { std::ostream &print(std::ostream &stream, unsigned width = 80, bool wrap = true) const; - void write(XMLWriter &writer) const; - SmartPointer getJSONList() const; + void write(XML::Writer &writer) const; + void writeList(JSON::Sink &sink) const; void write(JSON::Sink &sink) const; }; diff --git a/src/cbang/LocationRange.cpp b/src/cbang/LocationRange.cpp index 9953a414a..aabdbb7c1 100644 --- a/src/cbang/LocationRange.cpp +++ b/src/cbang/LocationRange.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or diff --git a/src/cbang/LocationRange.h b/src/cbang/LocationRange.h index 6c9b2ddf0..cbd398042 100644 --- a/src/cbang/LocationRange.h +++ b/src/cbang/LocationRange.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or diff --git a/src/cbang/Math.h b/src/cbang/Math.h index 01934daa5..4f07bfdc0 100644 --- a/src/cbang/Math.h +++ b/src/cbang/Math.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,52 +32,21 @@ #pragma once -#include -#include #include +#include namespace cb { namespace Math { -#if defined(_WIN32) && !defined(__MINGW32__) -#include - - // Windows doesn't have round() - inline static double round(double x) {return floor(x + 0.5);} - inline static float round(float x) {return floorf(x + 0.5);} - - // Or isnan - inline static bool isnan(double x) {return _isnan(x);} - inline static bool isnan(float x) {return _isnan(x);} - - // Or isinf - inline static bool isinf(double x) {return !_finite(x) && !_isnan(x);} - inline static bool isinf(float x) {return !_finite(x) && !_isnan(x);} - -#else - inline static double round(double x) {return ::round(x);} - inline static float round(float x) {return roundf(x);} - inline static bool isnan(double x) {return std::isnan(x);} - inline static bool isnan(float x) {return std::isnan(x);} - inline static bool isinf(double x) {return std::isinf(x);} - inline static bool isinf(float x) {return std::isinf(x);} -#endif - - inline static bool isfinite(double x) {return !(isnan(x) || isinf(x));} - inline static bool isfinite(float x) {return !(isnan(x) || isinf(x));} - + constexpr double PI = 3.14159265358979323846; inline static double nextUp(double x) { - return nextafter(x, std::numeric_limits::infinity()); + return std::nextafter(x, std::numeric_limits::infinity()); } inline static double nextDown(double x) { - return nextafter(x, -std::numeric_limits::infinity()); + return std::nextafter(x, -std::numeric_limits::infinity()); } } } - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif diff --git a/src/cbang/Packed.h b/src/cbang/Packed.h deleted file mode 100644 index f6e0650b9..000000000 --- a/src/cbang/Packed.h +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#pragma once - -#if defined(_WIN32) -#define PACK(DECL) __pragma(pack(push, 1)) DECL __pragma(pack(pop)) -#else -#define PACK(DECL) DECL __attribute__((packed)) -#endif diff --git a/src/cbang/RefCounter.cpp b/src/cbang/RefCounter.cpp index b2fba59d3..bc5cc0d2f 100644 --- a/src/cbang/RefCounter.cpp +++ b/src/cbang/RefCounter.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -33,6 +33,12 @@ #include "RefCounter.h" #include "Errors.h" +#include +#include +#include + +#include + using namespace cb; using namespace std; @@ -40,4 +46,24 @@ using namespace std; RefCounterPhonyImpl RefCounterPhonyImpl::singleton; +RefCounter *RefCounter::getCounter(const RefCounted *ptr) {return ptr->counter;} + + +void RefCounter::setCounter( + const RefCounted *ptr, RefCounter *counter) { + if (ptr->counter && counter) raise("RefCounted::counter already set"); + const_cast(ptr)->counter = counter; +} + void RefCounter::raise(const string &msg) {REFERENCE_ERROR(msg);} + + +void RefCounter::log(unsigned level, const char *fmt, ...) { + if (!level) return; + + va_list ap; + va_start(ap, fmt); + LOG_DEBUG(level, this << ' ' << String::vprintf(fmt, ap) << '\n' + << Debugger::getStackTrace()); + va_end(ap); +} diff --git a/src/cbang/RefCounter.h b/src/cbang/RefCounter.h index d98fcac96..72ad971df 100644 --- a/src/cbang/RefCounter.h +++ b/src/cbang/RefCounter.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -34,120 +34,130 @@ #include "Deallocators.h" -#include +#include +#include namespace cb { + class RefCounted; + + /// This class is used by SmartPointer to count pointer references class RefCounter { protected: virtual ~RefCounter() {} // Prevent deallocation by others public: - virtual unsigned getCount() const = 0; - virtual void incCount() = 0; - virtual void decCount(const void *ptr) = 0; - virtual bool isSelfRef() const {return false;} + static RefCounter *getCounter(const void *ptr) {return 0;} + static RefCounter *getCounter(const RefCounted *ptr); + static void setCounter(const void *ptr, RefCounter *counter) {} + static void setCounter(const RefCounted *ptr, RefCounter *counter); + + virtual bool isActive() const = 0; + virtual unsigned getCount(bool weak) const = 0; + virtual void incCount(bool weak) = 0; + virtual void decCount(bool weak) = 0; + virtual void adopted() = 0; static void raise(const std::string &msg); + + [[gnu::format(printf, 3, 4)]] + void log(unsigned level, const char *fmt, ...); }; - class SelfRefCounter : public RefCounter { + class RefCounted { + RefCounter *counter = 0; + friend class RefCounter; + }; + + + template + class RefCounterImpl : public RefCounter { protected: - bool engaged; + T *ptr; + std::atomic count; + std::atomic weakCount; + + RefCounterImpl(T *ptr) : ptr(ptr), count(0), weakCount(0) {} public: - SelfRefCounter() : engaged(false) {} + static unsigned trace; + + static RefCounter *getCounter(T *ptr) { + RefCounter *counter = RefCounter::getCounter(ptr); - bool isSelfRefEngaged() const {return engaged;} - void selfRef() {if (!engaged) {engaged = true; incCount();}} - void selfDeref() {if (engaged) {engaged = false; decCount(this);}} + if (!counter) { + counter = new RefCounterImpl(ptr); + setCounter(ptr, counter); + } + + return counter; + } // From RefCounter - bool isSelfRef() const {return true;} - - // Only SelfRefCounter should access SelfRef base classes. These functions - // make it possible to access the SelfRefCounter base in a safe way. - static RefCounter *_get(SelfRefCounter *ptr) {return ptr;} - static RefCounter *_get(const void *) {return 0;} - template - static RefCounter *get(T *ptr) {return _get(ptr);} - }; + bool isActive() const override {return ptr;} + unsigned getCount(bool weak) const override { + return weak ? weakCount : count; + } - class RefCounterPhonyImpl : public RefCounter { - static RefCounterPhonyImpl singleton; - RefCounterPhonyImpl() {} + void incCount(bool weak) override { + unsigned c = getCount(weak); - public: - static RefCounter *create() {return &singleton;} + while (!(weak ? weakCount : count).compare_exchange_weak(c, c + 1)) + continue; - // From RefCounter - unsigned getCount() const {return 1;} - void incCount() {}; - void decCount(const void *ptr) {} - }; + log(trace, "incCount() count=%u", c + 1); + } + void decCount(bool weak) override { + unsigned c = getCount(weak); - template, - class Base_T = RefCounter> - class RefCounterImpl : public Base_T { - protected: - unsigned count; + if (!c) raise("Already zero!"); - public: - RefCounterImpl(unsigned count = 0) : count(count) {} - static RefCounter *create() {return new RefCounterImpl;} + while (!(weak ? weakCount : count).compare_exchange_weak(c, c - 1)) + if (!c) raise("Already zero!"); - // From RefCounter - unsigned getCount() const {return count;} - void incCount() {count++;} + log(trace, "decCount() count=%u", c - 1); - void decCount(const void *ptr) { - if (!count) Base_T::raise("Already zero!"); - if (!--count) release(ptr); + if (c == 1) { + if (weak && count == 0) delete this; + + if (!weak) { + T *_ptr = ptr; + if (weakCount == 0) delete this; + else ptr = 0; // Deactivate + if (_ptr) DeallocT::dealloc(_ptr); + } + } } - void release(const void *ptr) { - if (!Base_T::isSelfRef()) delete this; // Only deallocate once - if (ptr) Dealloc_T::dealloc((T *)ptr); + void adopted() override { + if (1 < getCount(true) + getCount(false)) + raise("Can't adopt pointer with multiple references!"); + setCounter(ptr, 0); + delete this; } }; - template, - class Base_T = RefCounter> - class ProtectedRefCounterImpl : - public RefCounterImpl, public Mutex { - protected: - typedef RefCounterImpl Super_T; - using Super_T::count; + template + unsigned RefCounterImpl::trace = 0; - public: - ProtectedRefCounterImpl(unsigned count = 0) : Super_T(count) {} - static RefCounter *create() {return new ProtectedRefCounterImpl;} - - // From RefCounterImpl - unsigned getCount() const { - lock(); - unsigned x = count; - unlock(); - return x; - } - void incCount() {lock(); count++; unlock();} - - void decCount(const void *ptr) { - lock(); - - if (!count) {unlock(); Super_T::raise("Already zero!");} + class RefCounterPhonyImpl : public RefCounter { + static RefCounterPhonyImpl singleton; + RefCounterPhonyImpl() {} - if (!--count) { - unlock(); - Super_T::release(ptr); + public: + static RefCounter *getCounter(const void *ptr) {return &singleton;} - } else unlock(); - } + // From RefCounter + bool isActive() const override {return true;} + unsigned getCount(bool weak) const override {return 1;} + void incCount(bool weak) override {} + void decCount(bool weak) override {} + void adopted() override {} }; } diff --git a/src/cbang/SStream.h b/src/cbang/SStream.h index 451e74755..4e6983cd3 100644 --- a/src/cbang/SStream.h +++ b/src/cbang/SStream.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or diff --git a/src/cbang/ServerApplication.cpp b/src/cbang/ServerApplication.cpp index 0cc85a141..02cc7c689 100644 --- a/src/cbang/ServerApplication.cpp +++ b/src/cbang/ServerApplication.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,23 +32,17 @@ #include "ServerApplication.h" +#include #include #include #include #include - #include #include #include -#include #include - -#include - -#ifndef _WIN32 -#include -#endif +#include using namespace cb; using namespace cb; @@ -62,7 +56,7 @@ ServerApplication::ServerApplication(const string &name, if (hasFeature(FEATURE_LIFELINE)) cmdLine.addTarget("lifeline", lifeline, "The application will watch for " "this process ID and exit if it goes away. Usually the " - "calling process' PID.")->setType(Option::INTEGER_TYPE); + "calling process' PID."); if (!hasFeature(FEATURE_SERVER)) return; @@ -70,7 +64,7 @@ ServerApplication::ServerApplication(const string &name, "Change directory before starting server. All files opened " "after this point, such as the configuration file, must have " "paths relative to the new directory." - )->setType(Option::STRING_TYPE); + )->setType(Option::TYPE_STRING); options.pushCategory("Process Control"); #ifndef _WIN32 @@ -104,68 +98,62 @@ bool ServerApplication::_hasFeature(int feature) { } -int ServerApplication::init(int argc, char *argv[]) { - int ret = Application::init(argc, argv); - if (ret == -1) return -1; - - if (!hasFeature(FEATURE_SERVER)) return ret; +void ServerApplication::afterCommandLineParse() { + if (!hasFeature(FEATURE_SERVER)) return; if (!options["child"].toBoolean()) { #ifndef _WIN32 - if (options["fork"].toBoolean()) { - // Note, all threads must be stopped before daemonize() forks and - // SignalManager runs in a thread. - if (hasFeature(FEATURE_SIGNAL_HANDLER)) - SignalManager::instance().setEnabled(false); + if (options["fork"].toBoolean()) + // Note no threads should be started before daemonize() forks SystemUtilities::daemonize(); - if (hasFeature(FEATURE_SIGNAL_HANDLER)) - SignalManager::instance().setEnabled(true); - } #endif if (options["pid"].toBoolean() || options["pid-file"].isSet()) { // Try to acquire an exclusive lock new ProcessLock(options["pid-file"], 10); // OK to leak - LOG_INFO(1, "Acquired exclusive lock on " << options["pid-file"]); + LOG_INFO(2, "Acquired exclusive lock on " << options["pid-file"]); } } #ifndef _WIN32 if (hasFeature(FEATURE_CHECK_OPEN_FILE_LIMIT)) { // Check maximum number of open files - struct rlimit rlim; unsigned noFilesRec = 10000; - if (getrlimit(RLIMIT_NOFILE, &rlim) == 0 && - rlim.rlim_cur != RLIM_INFINITY) { - // Set to maximum - if (rlim.rlim_cur != rlim.rlim_max) { - rlim.rlim_cur = rlim.rlim_max; - setrlimit(RLIMIT_NOFILE, &rlim); - getrlimit(RLIMIT_NOFILE, &rlim); - } - - if (rlim.rlim_cur != RLIM_INFINITY && rlim.rlim_cur < noFilesRec) - LOG_WARNING("Open file limit of " << rlim.rlim_cur - << " is less than recommended value of " << noFilesRec - << ", you can increase this value in " - "'/etc/security/limits.conf'"); + unsigned noFiles = SystemUtilities::getMaxFiles(); + if (noFiles < noFilesRec) { + SystemUtilities::setMaxFiles(noFilesRec); + noFiles = SystemUtilities::getMaxFiles(); } + + if (noFiles < noFilesRec) + LOG_WARNING("Open file limit of " << noFiles + << " is less than recommended value of " << noFilesRec + << ", you can increase this value in " + "'/etc/security/limits.conf'"); } - // Set group and user. + // Set group and user beforeDroppingPrivileges(); if (!options["respawn"].toBoolean() || options["child"].toBoolean()) { if (options["set-group"].hasValue()) { - LOG_INFO(1, "Switching to group " << options["set-group"]); + LOG_INFO(2, "Switching to group " << options["set-group"]); SystemUtilities::setGroup(options["set-group"]); } if (options["run-as"].hasValue()) { - LOG_INFO(1, "Switching to user " << options["run-as"]); + LOG_INFO(2, "Switching to user " << options["run-as"]); SystemUtilities::setUser(options["run-as"]); } } #endif +} + + +int ServerApplication::init(int argc, char *argv[]) { + int ret = Application::init(argc, argv); + if (ret == -1) return -1; + + if (!hasFeature(FEATURE_SERVER)) return ret; if (!options["child"].toBoolean() && options["respawn"].toBoolean()) { #ifndef _WIN32 @@ -206,7 +194,7 @@ int ServerApplication::init(int argc, char *argv[]) { uint64_t killTime = 0; while (child.isRunning()) { if (!killTime && (restartChild || shouldQuit())) { - LOG_INFO(1, "Shutting down child at PID=" << child.getPID()); + LOG_INFO(2, "Shutting down child at PID=" << child.getPID()); child.interrupt(); restartChild = false; @@ -214,7 +202,7 @@ int ServerApplication::init(int argc, char *argv[]) { } if (killTime && killTime < Time::now()) { - LOG_INFO(1, "Child failed to shutdown cleanly, killing"); + LOG_INFO(2, "Child failed to shutdown cleanly, killing"); killTime = 0; child.kill(); @@ -223,7 +211,7 @@ int ServerApplication::init(int argc, char *argv[]) { Timer::sleep(0.1); } - LOG_INFO(1, "Child exited with return code " << child.getReturnCode()); + LOG_INFO(2, "Child exited with return code " << child.getReturnCode()); } exit(0); @@ -246,7 +234,7 @@ bool ServerApplication::lostLifeline() const { if (!lifeline || SystemUtilities::pidAlive(lifeline)) return false; - LOG_INFO(1, "Lost lifeline PID " << lifeline << ", exiting"); + LOG_INFO(2, "Lost lifeline PID " << lifeline << ", exiting"); return true; } diff --git a/src/cbang/ServerApplication.h b/src/cbang/ServerApplication.h index b1654d7ed..f17f7a198 100644 --- a/src/cbang/ServerApplication.h +++ b/src/cbang/ServerApplication.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -55,9 +55,10 @@ namespace cb { virtual void beforeDroppingPrivileges() {} // From Application - int init(int argc, char *argv[]); - void run() {} - bool shouldQuit() const; + void afterCommandLineParse() override; + int init(int argc, char *argv[]) override; + void run() override {} + bool shouldQuit() const override; uint64_t getLifeline() const {return lifeline;} bool lostLifeline() const; @@ -69,6 +70,6 @@ namespace cb { int daemonAction(); // From SignalHandler - void handleSignal(int sig); + void handleSignal(int sig) override; }; } diff --git a/src/cbang/SmartPointer.cpp b/src/cbang/SmartPointer.cpp index 357675fec..a1a70c2b8 100644 --- a/src/cbang/SmartPointer.cpp +++ b/src/cbang/SmartPointer.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or diff --git a/src/cbang/SmartPointer.h b/src/cbang/SmartPointer.h index 27d948562..9ca870e33 100644 --- a/src/cbang/SmartPointer.h +++ b/src/cbang/SmartPointer.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -40,8 +40,7 @@ namespace cb { /** - * This is an implementation of a smart pointer. It is ONLY THREAD - * SAFE IF you create a protected smart pointer. + * This is a thread-safe implementation of a smart pointer. * * You can use a SmartPointer on a dynamically allocated instance * of a class A like this: @@ -72,16 +71,10 @@ namespace cb { * deallocators can be created to handle other resources. The managed * resources need not even be memory. * - * Note that you cannot access non-protected SmartPointers to the - * same data from different threads. Even if you make a new copy of - * the SmartPointer. This is because the copies will still share the - * same RefCounter. However, non-protected SmartPointers are faster. - * - * Protected SmartPointers are only protected in the sense that - * multiple threads can safely access different copies of the same - * SmartPointer concurrently. Accessing the data pointed to by the - * SmartPointer from multiple threads safely requires futher - * synchronization. + * SmartPointers are only thread safe in the sense that multiple threads + * can safely access different copies of the same SmartPointer + * concurrently. Accessing the data pointed to by the SmartPointer + * from multiple threads safely requires further synchronization. * * See http://ootips.org/yonat/4dev/smart-pointers.html for more * information about smart pointers and why to use them. @@ -93,36 +86,26 @@ namespace cb { }; - template , - typename CounterT = RefCounterImpl > + template , + typename CounterT = RefCounterImpl> class SmartPointer : public SmartPointerBase { protected: /// A pointer to the reference counter. - RefCounter *refCounter; + RefCounter *refCounter = 0; /// The actual pointer. - T *ptr; + T *ptr = 0; public: - typedef SmartPointer SmartPointerT; - typedef T Type; - typedef DeallocT Dealloc; - typedef CounterT Counter; - typedef RefCounterImpl SelfRef; - typedef ProtectedRefCounterImpl - ProtectedSelfRef; - - typedef SmartPointer Phony; - typedef SmartPointer Malloc; - typedef SmartPointer > Array; - typedef SmartPointer, - ProtectedRefCounterImpl > > Protected; - typedef SmartPointer > - ProtectedMalloc; - typedef SmartPointer, - ProtectedRefCounterImpl > > - ProtectedArray; + using CounterPhony = RefCounterPhonyImpl; + using CounterMalloc = RefCounterImpl; + using CounterArray = RefCounterImpl>; + + using PointerT = SmartPointer; + using Weak = SmartPointer; + using Phony = SmartPointer; + using Malloc = SmartPointer; + using Array = SmartPointer, CounterArray>; /** * The copy constructor. If the smart pointer being copied @@ -130,9 +113,7 @@ namespace cb { * * @param smartPtr The pointer to copy. */ - SmartPointer(const SmartPointerT &smartPtr) : refCounter(0), ptr(0) { - *this = smartPtr; - } + SmartPointer(const PointerT &smartPtr) {*this = smartPtr;} /** * Create a smart pointer from a pointer value. If ptr is @@ -144,18 +125,23 @@ namespace cb { * more than once. To create a copy of a smart pointer either use * the copy constructor or smart pointer assignment. * - * If the pointer has SmartPointer::SelfRef as a base class, then - * it will become it's own reference counter. + * If the pointer has RefCounted as a base class, then it will store + * a pointer to it's own reference counter which can be reused by + * future SmartPointers. * * @param ptr The pointer to point to. - * @param refCounter The reference counter. */ SmartPointer(T *_ptr = 0, RefCounter *_refCounter = 0) : refCounter(_refCounter), ptr(_ptr) { - if (ptr) { - if (!refCounter) refCounter = SelfRefCounter::get(ptr); - if (!refCounter) refCounter = CounterT::create(); - refCounter->incCount(); + if (!ptr) return; + + // Get RefCounter + if (!refCounter) refCounter = CounterT::getCounter(ptr); + refCounter->incCount(weak); + + if (weak && isPhony()) { + release(); + referenceError("Weak pointer cannot have phony reference"); } } @@ -174,8 +160,8 @@ namespace cb { * * @return True if the smart pointers are equal, false otherwise. */ - bool operator==(const SmartPointerT &smartPtr) const { - return ptr == smartPtr.ptr; + bool operator==(const PointerT &smartPtr) const { + return get() == smartPtr.get(); } /** @@ -186,8 +172,8 @@ namespace cb { * * @return True if the smart pointers are not equal, false otherwise. */ - bool operator!=(const SmartPointerT &smartPtr) const { - return ptr != smartPtr.ptr; + bool operator!=(const PointerT &smartPtr) const { + return get() != smartPtr.get(); } /** @@ -197,8 +183,8 @@ namespace cb { * * @return True if less than @param smartPtr, false otherwise. */ - bool operator<(const SmartPointerT &smartPtr) const { - return ptr < smartPtr.ptr; + bool operator<(const PointerT &smartPtr) const { + return get() < smartPtr.get(); } /** @@ -209,7 +195,7 @@ namespace cb { * @return True if this smart pointers internal pointer equals ptr, * false otherwise. */ - bool operator==(const T *ptr) const {return this->ptr == ptr;} + bool operator==(const T *ptr) const {return get() == ptr;} /** * Compare this smart pointer to an actual pointer value. @@ -219,7 +205,7 @@ namespace cb { * @return False if this smart pointers internal pointer equals ptr. * True otherwise. */ - bool operator!=(const T *ptr) const {return this->ptr != ptr;} + bool operator!=(const T *ptr) const {return get() != ptr;} /** * Compare this smart pointer to an actual pointer value. @@ -228,7 +214,7 @@ namespace cb { * * @return True if less than @param ptr, false otherwise. */ - bool operator<(const T *ptr) const {return this->ptr < ptr;} + bool operator<(const T *ptr) const {return get() < ptr;} /** * Assign this smart pointer to another. If the passed smart pointer @@ -238,14 +224,18 @@ namespace cb { * * @return A reference to this smart pointer. */ - SmartPointerT &operator=(const SmartPointerT &smartPtr) { + PointerT &operator=(const PointerT &smartPtr) { if (*this == smartPtr) return *this; release(); - refCounter = smartPtr.refCounter; - if (refCounter) refCounter->incCount(); - ptr = smartPtr.ptr; + if (smartPtr.isSet()) { + if (weak && smartPtr.isPhony()) + referenceError("Weak pointer cannot have phony reference"); + refCounter = smartPtr.refCounter; + refCounter->incCount(weak); + ptr = smartPtr.ptr; + } return *this; } @@ -280,41 +270,40 @@ namespace cb { * * @return The value of the internal object pointer. */ - T *get() const {return ptr;} + T *get() const {return isSet() ? ptr : 0;} /** * Access this smart pointer's internal object pointer but check for NULL. * * @return The value of the internal object pointer. */ - T *access() const {check(); return ptr;} + T *access() const {check(); return get();} /** * Not operator * @return true if the pointer is NULL. */ - bool operator!() const {return !ptr;} + bool operator!() const {return isNull();} - - /// Convert to a base type. - template - operator SmartPointer<_BaseT, _DeallocT, _CounterT> () const { - return SmartPointer<_BaseT, _DeallocT, _CounterT>(ptr, refCounter); + /// Convert to a base type or weak pointer. + template + + operator SmartPointer<_BaseT, _weak, _DeallocT, _CounterT> () const { + return SmartPointer<_BaseT, _weak, _DeallocT, _CounterT>(ptr, refCounter); } /// Dynamic cast template CastT *castPtr() const { - CastT *ptr = dynamic_cast(this->ptr); - if (!ptr && this->ptr) castError(); + CastT *ptr = dynamic_cast(get()); + if (!ptr && isSet()) castError(); return ptr; } template - SmartPointer cast() const { - return SmartPointer - (castPtr(), refCounter); + SmartPointer cast() const { + return SmartPointer(castPtr(), refCounter); } // Type check @@ -327,13 +316,12 @@ namespace cb { * smart pointer points will be deleted. */ void release() { - T *_ptr = ptr; RefCounter *_refCounter = refCounter; ptr = 0; refCounter = 0; - if (_refCounter) _refCounter->decCount(_ptr); + if (_refCounter) _refCounter->decCount(weak); } /** @@ -344,10 +332,9 @@ namespace cb { * @return The value of the internal pointer. */ T *adopt() { - if (refCounter && 1 < refCounter->getCount()) - referenceError("Can't adopt pointer with multiple references!"); + if (isNull()) return 0; - if (refCounter) refCounter->decCount(0); + refCounter->adopted(); refCounter = 0; T *tmp = ptr; @@ -364,8 +351,8 @@ namespace cb { * * @return The reference count. */ - unsigned getRefCount() const { - return refCounter ? refCounter->getCount() : 0; + unsigned getRefCount(bool _weak = false) const { + return refCounter ? refCounter->getCount(_weak) : 0; } /** @@ -373,31 +360,54 @@ namespace cb { * * @return True if the pointer is NULL, false otherwise. */ - bool isNull() const {return !ptr;} + bool isNull() const {return !isSet();} /// @return True if the pointer is non-NULL, false otherwise. - bool isSet() const {return ptr;} + bool isSet() const {return refCounter && refCounter->isActive() && ptr;} + + bool isPhony() const {return dynamic_cast(refCounter);} protected: void check() const { - if (!ptr) referenceError("Can't dereference NULL pointer!"); + if (!isSet()) referenceError("Can't dereference NULL pointer!"); } }; + + + template inline static SmartPointer SmartPtr(T *ptr) + {return ptr;} + + template inline static SmartPointer + SmartPtr(const typename SmartPointer::Weak &ptr) {return ptr;} + + template inline static typename SmartPointer::Weak + WeakPtr(T *ptr) {return ptr;} + + template inline static typename SmartPointer::Weak + WeakPtr(const SmartPointer &ptr) {return ptr;} + + template inline static SmartPointer PhonyPtr(T *ptr) + {return typename SmartPointer::Phony(ptr);} + + template inline static SmartPointer MallocPtr(T *ptr) + {return typename SmartPointer::Malloc(ptr);} + + template inline static SmartPointer ArrayPtr(T *ptr) + {return typename SmartPointer::Array(ptr);} } -#define CBANG_SP(T) cb::SmartPointer -#define CBANG_SP_PHONY(T) cb::SmartPointer::Phony +#define CBANG_SP(T) cb::SmartPointer +#define CBANG_SP_WEAK(T) cb::SmartPointer::Weak +#define CBANG_SP_PHONY(T) cb::SmartPointer::Phony #define CBANG_SP_MALLOC(T) cb::SmartPointer::Malloc -#define CBANG_SP_ARRAY(T) cb::SmartPointer::Array -#define CBANG_SP_DEALLOC(T, DEALLOC) \ - cb::SmartPointer > +#define CBANG_SP_ARRAY(T) cb::SmartPointer::Array #ifdef USING_CBANG -#define SP(T) CBANG_SP(T) -#define SP_PHONY(T) CBANG_SP_PHONY(T) +#define SP(T) CBANG_SP(T) +#define SP_WEAK(T) CBANG_SP_WEAK(T) +#define SP_PHONY(T) CBANG_SP_PHONY(T) #define SP_MALLOC(T) CBANG_SP_MALLOC(T) -#define SP_ARRAY(T) CBANG_SP_ARRAY(T) -#define SP_DEALLOC(T, DEALLOC) CBANG_SP_DEALLOC(T, DEALLOC) +#define SP_ARRAY(T) CBANG_SP_ARRAY(T) #endif #endif // CBANG_SMART_POINTER_H diff --git a/src/cbang/StdTypes.h b/src/cbang/StdTypes.h deleted file mode 100644 index 0f6d5a242..000000000 --- a/src/cbang/StdTypes.h +++ /dev/null @@ -1,130 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#pragma once - -#if defined(_WIN32) && !defined(__MINGW32__) && _MSC_VER < 1600 -#include - -namespace { -#if !defined(int8_t) - typedef __int8 int8_t; -#endif - -#if !defined(int16_t) - typedef __int16 int16_t; -#endif - -#if !defined(int32_t) - typedef __int32 int32_t; -#endif - -#if !defined(int64_t) - typedef __int64 int64_t; -#endif - -#if !defined(uint8_t) - typedef unsigned __int8 uint8_t; -#endif - -#if !defined(uint26_t) - typedef unsigned __int16 uint16_t; -#endif - -#if !defined(uint32_t) - typedef unsigned __int32 uint32_t; -#endif - -#if !defined(uint64_t) - typedef unsigned __int64 uint64_t; -#endif -} - -#else -#include -#endif - -struct uint128_t { - uint64_t hi; - uint64_t lo; - -#ifdef __cplusplus - uint128_t() : hi(0), lo(0) {} - uint128_t(const uint64_t &lo) : hi(0), lo(lo) {} - uint128_t(const uint64_t &hi, const uint64_t &lo) : hi(hi), lo(lo) {} - operator bool () {return hi || lo;} -#endif // __cplusplus -}; - -#ifdef __cplusplus -#include -#include - -inline std::ostream &operator<<(std::ostream &stream, const uint128_t &x) { - char fill = stream.fill(); - std::ios::fmtflags flags = stream.flags(); - - stream.fill('0'); - stream.flags(std::ios::right | std::ios::hex); - - stream << "0x" << std::setw(16) << x.hi << std::setw(16) << x.lo; - - stream.fill(fill); - stream.flags(flags); - return stream; -} - -inline bool operator<(const uint128_t &i1, const uint128_t &i2) { - return i1.hi < i2.hi || (i1.hi == i2.hi && i1.lo < i2.lo); -} - -inline bool operator>(const uint128_t &i1, const uint128_t &i2) { - return i1.hi > i2.hi || (i1.hi == i2.hi && i1.lo > i2.lo); -} - -inline bool operator<=(const uint128_t &i1, const uint128_t &i2) { - return !(i1 > i2); -} - -inline bool operator>=(const uint128_t &i1, const uint128_t &i2) { - return !(i1 < i2); -} - -inline bool operator==(const uint128_t &i1, const uint128_t &i2) { - return i1.hi == i2.hi && i1.lo == i2.lo; -} - -inline bool operator!=(const uint128_t &i1, const uint128_t &i2) { - return !(i1 == i2); -} - -#endif // __cplusplus diff --git a/src/cbang/String.cpp b/src/cbang/String.cpp index e1c40257c..474a1a08a 100644 --- a/src/cbang/String.cpp +++ b/src/cbang/String.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -31,32 +31,39 @@ \******************************************************************************/ #include "String.h" - -#include "Math.h" #include "SStream.h" -#include "Exception.h" +#include "Errors.h" #include -#include -#include -#include -#include -#include - #include #include #include +#include +#include +#include +#include +#include +#include +#include using namespace std; using namespace cb; +#ifndef va_copy +#ifdef __va_copy +#define va_copy __va_copy +#endif +#endif + #if defined(_WIN32) && !defined(__MINGW32__) #define strtoll(p, e, b) _strtoi64(p, e, b) #define strtoull(p, e, b) _strtoui64(p, e, b) #define strtof(p, e) (float)strtod(p, e) #define vsnprintf _vsnprintf -#define __va_copy(x, y) (x = y) +#ifndef va_copy +#define va_copy(x, y) (x = y) +#endif #endif const string String::DEFAULT_DELIMS = " \t\n\r"; @@ -69,38 +76,50 @@ const string String::NUMBERS = "0123456789"; const string String::ALPHA_NUMERIC = String::LETTERS + String::NUMBERS; -String::String(const char *s, size_type n) { - size_type len; - for (len = 0; len < n && s[len]; len++) continue; +namespace { + string toString(const char *s, string::size_type n) { + string::size_type len = 0; + while (len < n && s[len]) len++; - if (len) assign(s, len); -} + return len ? string(s, len) : string(); + } -String::String(int32_t x) : string(printf("%i", x)) {} -String::String(uint32_t x) : string(printf("%u", x)) {} -String::String(int64_t x) : string(printf("%lli", (long long int)x)) {} -String::String(uint64_t x) : string(printf("%llu", (long long unsigned)x)) {} -String::String(uint128_t x) : string(SSTR(x)) {} + string toString(double x, int precision = 6) { + bool big = x < -1e20 || 1e20 < x; + string s = String::printf(big ? "%.*e" : "%.*f", precision, x); + int chop = 0; + char point = use_facet >(cout.getloc()).decimal_point(); -String::String(double x, int precision) : string(printf("%.*f", precision, x)) { - int chop = 0; - char point = use_facet >(cout.getloc()).decimal_point(); + for (auto it = s.rbegin(); it != s.rend(); it++) + if (*it == '0' || *it == point) { + chop++; + if (*it == point) break; - for (reverse_iterator it = rbegin(); it != rend(); it++) - if (*it == '0' || *it == point) { - chop++; - if (*it == point) break; + } else break; - } else break; + if (chop) s = s.substr(0, s.length() - chop); - if (chop) *this = substr(0, length() - chop); - if (*this == "-0") *this = "0"; + return s == "-0" ? "0" : s; + } } -String::String(bool x) : string(x ? "true" : "false") {} +String::String(const char *s, size_type n) : string(toString(s, n)) {} +String::String(double x, int precision) : string(toString(x, precision)) {} + +String::String(int8_t x) : string(printf("%i", (int)x)) {} +String::String(uint8_t x) : string(printf("%u", (unsigned)x)) {} +String::String(int16_t x) : string(printf("%i", (int)x)) {} +String::String(uint16_t x) : string(printf("%u", (unsigned)x)) {} +String::String(int32_t x) : string(printf("%i", x)) {} +String::String(uint32_t x) : string(printf("%u", x)) {} +String::String(int64_t x) : string(printf("%lli", (long long int)x)) {} +String::String(uint64_t x) : string(printf("%llu", (long long unsigned)x)) {} +String::String(double x) : string(toString(x)) {} +String::String(float x) : string(toString((double)x)) {} +String::String(bool x) : string(x ? "true" : "false") {} string String::printf(const char *format, ...) { @@ -116,7 +135,7 @@ string String::printf(const char *format, ...) { string String::vprintf(const char *format, va_list ap) { va_list copy; - __va_copy(copy, ap); + va_copy(copy, ap); int length = vsnprintf(0, 0, format, copy); va_end(copy); @@ -134,21 +153,27 @@ string String::vprintf(const char *format, va_list ap) { unsigned String::tokenize(const string &s, vector &tokens, - const string &delims, bool allowEmpty) { + const string &delims, bool allowEmpty, + unsigned maxTokens) { size_t i = 0; unsigned count = 0; - while (true) { - size_t lastEnd = i; - if ((i = s.find_first_not_of(delims, i)) == string::npos) i = s.length(); + while (i < s.length()) { + if (count == maxTokens - 1) { + tokens.push_back(s.substr(i)); + count++; + break; + } - if (allowEmpty) - for (size_t j = lastEnd + 1; j < i; j++) { + if (delims.find(s[i]) != string::npos) { + if (allowEmpty) { tokens.push_back(string()); count++; } - if (i == s.length()) return count; + i++; + continue; + } size_t end = s.find_first_of(delims, i); if (end == string::npos) end = s.length(); @@ -156,7 +181,7 @@ unsigned String::tokenize(const string &s, vector &tokens, tokens.push_back(s.substr(i, end - i)); count++; - i = end; + i = end + 1; } return count; @@ -182,183 +207,174 @@ unsigned String::tokenizeLine(istream &stream, vector &tokens, } -bool String::isInteger(const string &s) { - char *endptr = 0; - - errno = 0; - strtoll(s.c_str(), &endptr, 0); - - while (isspace(*endptr)) endptr++; - - return !errno && !*endptr; -} - - -bool String::isNumber(const string &s) { - char *endptr = 0; - - errno = 0; - strtold(s.c_str(), &endptr); - - while (isspace(*endptr)) endptr++; - - return !errno && !*endptr; -} - - -uint8_t String::parseU8(const string &s) { - uint32_t v = parseU32(s); - if (v > 255) THROW("Unsigned 8-bit value '" << s << "' out of range"); - - return (uint8_t)v; -} - - -int8_t String::parseS8(const string &s) { - int32_t v = parseS32(s); - if (v < -127 || 127 < v) - THROW("Signed 8-bit value '" << s << "' out of range"); - - return (int8_t)v; -} - - -uint16_t String::parseU16(const string &s) { - uint32_t v = parseU32(s); - if (65535 < v) THROW("Unsigned 16-bit value '" << s << "' out of range"); - - return (uint16_t)v; -} - - -int16_t String::parseS16(const string &s) { - int32_t v = parseS32(s); - if (v < -32767 || 32767 < v) - THROW("Signed 16-bit value '" << s << "' out of range"); - - return (int16_t)v; -} +namespace cb { + template <> + bool String::parse(const string &s, int64_t &value, bool full) { + errno = 0; + char *end = 0; + long long v = strtoll(s.c_str(), &end, 0); + if (errno || v < -numeric_limits::max() || + numeric_limits::max() < v || (full && end && *end)) + return false; + + value = (int64_t)v; + return true; + } -uint32_t String::parseU32(const string &s) { - errno = 0; - unsigned long v = strtoul(s.c_str(), 0, 0); - if (errno || numeric_limits::max() < v) - THROW("Invalid unsigned 32-bit value '" << s << "'"); + template <> + bool String::parse(const string &s, uint64_t &value, bool full) { + if (!s.length() || s[0] == '-') return false; + errno = 0; + char *end = 0; + unsigned long long v = strtoull(s.c_str(), &end, 0); + if (errno || numeric_limits::max() < v || (full && end && *end)) + return false; + value = (uint64_t)v; + return true; + } - return (uint32_t)v; -} + template <> + bool String::parse(const string &s, int32_t &value, bool full) { + errno = 0; + char *end = 0; + long v = strtol(s.c_str(), &end, 0); + if (errno || v < -numeric_limits::max() || + numeric_limits::max() < v || (full && end && *end)) + return false; + + value = (int32_t)v; + return true; + } -int32_t String::parseS32(const string &s) { - errno = 0; - long v = strtol(s.c_str(), 0, 0); - if (errno|| v < -numeric_limits::max() || - numeric_limits::max() < v) - THROW("Invalid signed 32-bit value '" << s << "'"); - return (int32_t)v; -} + template <> + bool String::parse(const string &s, uint32_t &value, bool full) { + if (!s.length() || s[0] == '-') return false; + errno = 0; + char *end = 0; + unsigned long v = strtoul(s.c_str(), &end, 0); + if (errno || numeric_limits::max() < v || (full && end && *end)) + return false; + value = (uint32_t)v; + return true; + } -uint64_t String::parseU64(const string &s) { - errno = 0; - unsigned long long v = strtoull(s.c_str(), 0, 0); - if (errno) THROW("Invalid unsigned 64-bit value '" << s << "'"); + template <> + bool String::parse(const string &s, int16_t &value, bool full) { + int32_t v; + if (!parse(s, v, full) || v < -32767 || 32767 < v) return false; + value = (int16_t)v; + return true; + } - return (uint64_t)v; -} + template <> + bool String::parse(const string &s, uint16_t &value, bool full) { + uint32_t v; + if (!parse(s, v, full) || 65535 < v) return false; + value = (uint16_t)v; + return true; + } -int64_t String::parseS64(const string &s) { - errno = 0; - long long int v = strtoll(s.c_str(), 0, 0); - if (errno) THROW("Invalid signed 64-bit value '" << s << "'"); - return (int64_t)v; -} + template <> + bool String::parse(const string &s, int8_t &value, bool full) { + int32_t v; + if (!parse(s, v, full) || v < -127 || 127 < v) return false; + value = (int8_t)v; + return true; + } -uint128_t String::parseU128(const string &s) { - int len = s.length(); + template <> + bool String::parse(const string &s, uint8_t &value, bool full) { + uint32_t v; + if (!parse(s, v, full) || 255 < v) return false; + value = (uint8_t)v; + return true; + } - if (!startsWith(s, "0x") || len < 3 || 34 < len) - THROW("Invalid 128-bit format '" << s << "'"); - uint128_t v; - int loLen = min(len - 2, 16); - v.lo = parseU64(string("0x") + s.substr(len - loLen)); - if (18 < len) v.hi = parseU64(s.substr(0, len - loLen)); + template <> + bool String::parse(const string &s, double &value, bool full) { + errno = 0; + char *end = 0; + double v = strtod(s.c_str(), &end); + if (errno || (full && end && *end)) return false; + value = v; + return true; + } - return v; -} + template <> + bool String::parse(const string &s, float &value, bool full) { + errno = 0; + char *end = 0; + float v = strtof(s.c_str(), &end); + if (errno || (full && end && *end)) return false; + value = v; + return false; + } -double String::parseDouble(const string &s) { - errno = 0; - double v = strtod(s.c_str(), 0); - if (errno) THROW("Invalid double '" << s << "'"); - return v; -} + template <> + bool String::parse(const string &s, bool &value, bool full) { + string v = toLower(trim(s)); -float String::parseFloat(const string &s) { - errno = 0; - float v = strtof(s.c_str(), 0); - if (errno) THROW("Invalid float '" << s << "'"); - return v; -} + if (v == "true" || v == "t" || v == "1" || v == "yes" || v == "y") { + value = true; + return true; + } -bool String::parseBool(const string &s) { - string v = toLower(trim(s)); + if (v == "false" || v == "f" || v == "0" || v == "no" || v == "n") { + value = false; + return true; + } - if (v == "true" || v == "t" || v == "1" || v == "yes" || v == "y") - return true; - if (v == "false" || v == "f" || v == "0" || v == "no" || v == "n") return false; + } - THROW("Invalid bool '" << s << "'"); -} - - -namespace cb { - template <> - uint8_t String::parse(const string &s) {return parseU8(s);} - - template <> - int8_t String::parse(const string &s) {return parseS8(s);} - template <> - uint16_t String::parse(const string &s) {return parseU16(s);} - - template <> - int16_t String::parse(const string &s) {return parseS16(s);} +#define CBANG_STRING_PT(NAME, TYPE, DESC) \ + template <> \ + TYPE String::parse(const string &s, bool full) { \ + TYPE v = 0; \ + if (!parse(s, v, full)) \ + TYPE_ERROR("Invalid " DESC " value '" << s << "'"); \ + return v; \ + } +#include "StringParseTypes.def" +} - template <> - uint32_t String::parse(const string &s) {return parseU32(s);} - template <> - int32_t String::parse(const string &s) {return parseS32(s);} +#define CBANG_STRING_PT(NAME, TYPE, DESC) \ + TYPE String::parse##NAME(const string &s, TYPE &value, bool full) { \ + return parse(s, value, full); \ + } +#include "StringParseTypes.def" - template <> - uint64_t String::parse(const string &s) {return parseU64(s);} - template <> - int64_t String::parse(const string &s) {return parseS64(s);} +#define CBANG_STRING_PT(NAME, TYPE, DESC) \ + TYPE String::parse##NAME(const string &s, bool full) { \ + return parse(s, full); \ + } +#include "StringParseTypes.def" - template <> - uint128_t String::parse(const string &s) {return parseU128(s);} - template <> - double String::parse(const string &s) {return parseDouble(s);} +#define CBANG_STRING_PT(NAME, TYPE, DESC) \ + TYPE String::is##NAME(const string &s, bool full) { \ + TYPE v; \ + return parse##NAME(s, v, full); \ + } +#include "StringParseTypes.def" - template <> - float String::parse(const string &s) {return parseFloat(s);} - template <> - bool String::parse(const string &s) {return parseBool(s);} -} +bool String::isInteger(const string &s) {return isU64(s, true);} +bool String::isNumber(const string &s) {return isDouble(s, true);} string String::trimLeft(const string &s, const string &delims) { @@ -535,7 +551,8 @@ string String::bar(const string &title, unsigned width, const string &chars) { string String::hexdump(const char *data, unsigned size) { - unsigned width = (unsigned)ceil(log((double)size) / log(2.0) / 4); + unsigned width = + (unsigned)std::ceil(std::log((double)size) / std::log(2.0) / 4); string result; string chars; unsigned i; @@ -564,7 +581,7 @@ string String::hexdump(const char *data, unsigned size) { case '\t': chars.append("\\t"); break; case '\v': chars.append("\\v"); break; default: - if (isprint(data[i])) { + if (0x19 < data[i] && data[i] < 0x7f) { chars.append(1, ' '); chars.append(1, data[i]); @@ -587,15 +604,14 @@ string String::hexdump(const char *data, unsigned size) { } -string String::hexdump(const string &s) { -#ifdef _WIN32 - return hexdump(s.c_str(), s.length()); -#else - return hexdump(s.data(), s.length()); -#endif +string String::hexdump(const uint8_t *data, unsigned size) { + return hexdump((char *)data, size); } +string String::hexdump(const string &s) {return hexdump(s.data(), s.length());} + + char String::hexNibble(int x, bool lower) { x &= 0xf; return (x < 0xa ? '0' + x : (lower ? 'a' : 'A') + x - 0xa); @@ -606,23 +622,32 @@ string String::hexEncode(const string &s) { string result; result.reserve(s.length() * 2); - for (string::const_iterator it = s.begin(); it != s.end(); it++) { - result.append(1, hexNibble(*it >> 4)); - result.append(1, hexNibble(*it)); + for (auto c: s) { + result.append(1, hexNibble(c >> 4)); + result.append(1, hexNibble(c)); } return result; } -string String::escapeRE(const string &s) { - static const Regex re("[\\^\\.\\$\\|\\(\\)\\[\\]\\*\\+\\?\\/\\\\]"); - static const string rep("\\\\\\1&"); - return re.replace(s, rep); +string String::hexEncode(const char *data, unsigned length) { + string result; + result.reserve(length * 2); + + for (unsigned i = 0; i < length; i++) { + result.append(1, hexNibble(data[i] >> 4)); + result.append(1, hexNibble(data[i])); + } + + return result; } -void String::escapeC(string &result, int c) { +string String::escapeRE(const string &s) {return Regex::escape(s);} + + +void String::escapeC(string &result, char c) { switch (c) { case '\"': result.append("\\\""); break; case '\\': result.append("\\\\"); break; @@ -633,20 +658,21 @@ void String::escapeC(string &result, int c) { case '\r': result.append("\\r"); break; case '\t': result.append("\\t"); break; case '\v': result.append("\\v"); break; - default: - if (!isprint(c)) { - uint32_t x = c; - if (x <= 0xffff) result.append(printf("\\x%02x", x)); - else if (x <= 0xffffffff) result.append(printf("\\u%04x", x)); - else result.append(printf("\\U%08x", x)); + default: { + uint8_t x = c; + + if (x < 0x20 || 0x7e < x) { // Non-printable + if (x <= 0xff) result.append(printf("\\x%02x", x)); + else result.append(printf("\\u%04x", x)); } else result.push_back(c); break; } + } } -string String::escapeC(int c) { +string String::escapeC(char c) { string result; escapeC(result, c); return result; @@ -657,8 +683,7 @@ string String::escapeC(const string &s) { string result; result.reserve(s.length()); - for (string::const_iterator it = s.begin(); it != s.end(); it++) - escapeC(result, *it); + for (auto c: s) escapeC(result, c); return result; } @@ -678,10 +703,10 @@ namespace { } - string::const_iterator parseOctalEscape(string &result, - string::const_iterator start, - string::const_iterator end) { - string::const_iterator it = start + 1; + string::const_iterator parseOctalEscape( + string &result, string::const_iterator start, + string::const_iterator end) { + auto it = start + 1; string s; while (it != end && is_oct(*it) && s.length() < 3) s.push_back(*it++); @@ -694,10 +719,10 @@ namespace { } - string::const_iterator parseHexEscape(string &result, - string::const_iterator start, - string::const_iterator end) { - string::const_iterator it = start + 1; + string::const_iterator parseHexEscape( + string &result, string::const_iterator start, + string::const_iterator end) { + auto it = start + 1; string s; while (it != end && is_hex(*it) && s.length() < 2) s.push_back(*it++); @@ -710,10 +735,10 @@ namespace { } - string::const_iterator parseUnicodeEscape(string &result, - string::const_iterator start, - string::const_iterator end) { - string::const_iterator it = start + 1; + string::const_iterator parseUnicodeEscape( + string &result, string::const_iterator start, + string::const_iterator end) { + auto it = start + 1; string s; while (it != end && is_hex(*it) && s.length() < 4) s.push_back(*it++); @@ -745,7 +770,7 @@ string String::unescapeC(const string &s) { bool escape = false; - for (string::const_iterator it = s.begin(); it != s.end();) { + for (auto it = s.begin(); it != s.end();) { if (escape) { escape = false; @@ -783,15 +808,12 @@ string String::ellipsis(const string &s, unsigned width) { size_t String::find(const string &s, const string &pattern, vector *groups) { - Regex e(pattern); + Regex e(pattern, true); Regex::Match m; if (e.search(s, m)) { - if (groups) - for (unsigned i = 0; i < m.size(); i++) - groups->push_back(m[i]); - - return m.position(); + if (groups) groups->insert(groups->end(), m.begin(), m.end()); + return m.offsets.at(0); } return string::npos; @@ -801,8 +823,8 @@ size_t String::find(const string &s, const string &pattern, string String::replace(const string &s, char search, char replace) { string result(s); - for (string::iterator it = result.begin(); it != result.end(); it++) - if (*it == search) *it = replace; + for (auto &c: result) + if (c == search) c = replace; return result; } @@ -810,66 +832,85 @@ string String::replace(const string &s, char search, char replace) { string String::replace(const string &s, const string &search, const string &replace) { - Regex exp(search); + Regex exp(search, true); return exp.replace(s, replace); } -string String::transcode(const string &s, const string &search, - const string &replace) { +string String::transcode( + const string &s, const string &search, const string &replace) { if (search.length() != replace.length()) THROW("Search string must be the same length as the replace string"); string result(s.length(), ' '); unsigned i = 0; - for (string::const_iterator it = s.begin(); it != s.end(); it++) { - size_t pos = search.find(*it); + for (auto c: s) { + size_t pos = search.find(c); if (pos != string::npos) result[i++] = replace[pos]; - else result[i++] = *it; + else result[i++] = c; } return result; } -string String::format(const FormatCB &cb) { +string String::format(format_cb_t cb) { string result; result.reserve(length()); - int index = 0; - bool escape = false; - - for (string::const_iterator it = begin(); it != end(); it++) { - if (escape) { - escape = false; + for (auto it = begin(); it != end(); it++) + try { switch (*it) { - case '(': { - string::const_iterator it2 = it + 1; + case '{': + if (++it == end()) THROW("Unmatched '{'"); + + if (*it == '{') result.push_back('{'); + else { + string fmt; + + while (true) { + if (*it == '}') { + if ((it + 1) != end() && *(it + 1) == '}') fmt.push_back(*it++); + else { + string id = fmt; + string spec; + + auto semi = fmt.find_last_of(':'); + if (semi != string::npos) { + id = fmt.substr(0, semi); + spec = fmt.substr(semi + 1); + } + + if (id.empty() && index != -1) id = String(index++); + else index = -1; + + result.append(cb(id, spec)); + break; + } + + } else if (*it == '{') { + if (it + 1 != end() && *(it + 1) == '{') fmt.push_back(*it++); + else THROW("Unexpected '{'"); - string name; - while (it2 != end() && *it2 != ')') name.push_back(*it2++); + } else fmt.push_back(*it); - if (it2 != end() && ++it2 != end()) { - result.append(cb(*it2, -1, name)); - it = it2; - continue; + if (++it == end()) THROW("Unmatched '}'"); + } } break; - } - case '%': it++; break; - default: result.append(cb(*it++, index++, "")); continue; - } + case '}': + if ((it + 1) != end() && *(it + 1) == '}') result.push_back(*it++); + else THROW("Unmatched '}'"); + break; - } else if (*it == '%') { - escape = true; - continue; + default: result.push_back(*it); break; + } + } catch (const Exception &e) { + THROWC("String format error at character " << int(it - begin()), e); } - result.push_back(*it); - } - return result; -} +} \ No newline at end of file diff --git a/src/cbang/String.h b/src/cbang/String.h index fc50a0573..8750027fb 100644 --- a/src/cbang/String.h +++ b/src/cbang/String.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,14 +32,16 @@ #pragma once -#include +#include "Exception.h" #include #include #include #include +#include +#include +#include -#include namespace cb { /// Used for convenient conversion of basic data types to and from std::string @@ -71,34 +73,23 @@ namespace cb { String(size_type n, char c) : std::string(n, c) {} // Conversion constructors - /// Convert a 32-bit signed value to a string. - explicit String(int32_t x); + explicit String(double x, int precision); - /// Convert a 32-bit unsigned value to a string. - explicit String(uint32_t x); - - /// Convert a 64-bit signed value a string. - explicit String(int64_t x); - - /// Convert a 64-bit unsigned value to a string. - explicit String(uint64_t x); - - /// Convert a 128-bit unsigned value to a string. - explicit String(uint128_t x); - - /// Convert a double value to a string. - explicit String(double x, int precision = 6); - - /// Convert a boolean value to a string. - explicit String(bool x); +#define CBANG_STRING_PT(NAME, TYPE, DESC) explicit String(TYPE x); +#include "StringParseTypes.def" + // Formatting + [[gnu::format(printf, 1, 2)]] static std::string printf(const char *format, ...); + [[gnu::format(printf, 1, 0)]] static std::string vprintf(const char *format, va_list ap); + // Tokenizing static unsigned tokenize(const std::string &s, std::vector &tokens, const std::string &delims = DEFAULT_DELIMS, - bool allowEmpty = false); + bool allowEmpty = false, + unsigned maxTokens = ~0); static unsigned tokenizeLine(std::istream &stream, std::vector &tokens, const std::string &delims = DEFAULT_DELIMS, @@ -106,24 +97,29 @@ namespace cb { DEFAULT_LINE_DELIMS, unsigned maxLength = 1024); + // Parsing + template static bool parse(const std::string &s, T &value, + bool full); + +#define CBANG_STRING_PT(NAME, TYPE, DESC) \ + static TYPE parse##NAME(const std::string &s, TYPE &value, bool full); +#include "StringParseTypes.def" + +#define CBANG_STRING_PT(NAME, TYPE, DESC) \ + static TYPE parse##NAME(const std::string &s, bool full = false); +#include "StringParseTypes.def" + + template static T parse(const std::string &s, bool full); + + // Type tests +#define CBANG_STRING_PT(NAME, TYPE, DESC) \ + static TYPE is##NAME(const std::string &s, bool full); +#include "StringParseTypes.def" + static bool isInteger(const std::string &s); static bool isNumber(const std::string &s); - static uint8_t parseU8(const std::string &s); - static int8_t parseS8(const std::string &s); - static uint16_t parseU16(const std::string &s); - static int16_t parseS16(const std::string &s); - static uint32_t parseU32(const std::string &s); - static int32_t parseS32(const std::string &s); - static uint64_t parseU64(const std::string &s); - static int64_t parseS64(const std::string &s); - static uint128_t parseU128(const std::string &s); - static double parseDouble(const std::string &s); - static float parseFloat(const std::string &s); - static bool parseBool(const std::string &s); - - template static T parse(const std::string &s); - + // Transformations static std::string trimLeft(const std::string &s, const std::string &delims = DEFAULT_DELIMS); static std::string trimRight(const std::string &s, @@ -147,12 +143,14 @@ namespace cb { static std::string bar(const std::string &title = "", unsigned width = 80, const std::string &chars = "*"); static std::string hexdump(const char *data, unsigned size); + static std::string hexdump(const uint8_t *data, unsigned size); static std::string hexdump(const std::string &s); static char hexNibble(int x, bool lower = true); static std::string hexEncode(const std::string &s); + static std::string hexEncode(const char *data, unsigned length); static std::string escapeRE(const std::string &s); - static std::string escapeC(int c); - static void escapeC(std::string &result, int c); + static std::string escapeC(char c); + static void escapeC(std::string &result, char c); static std::string escapeC(const std::string &s); static std::string unescapeC(const std::string &s); @@ -203,39 +201,8 @@ namespace cb { const std::string &replace); // Formatting - class FormatCB { - public: - virtual ~FormatCB() {} - - virtual std::string - operator()(char type, int index, const std::string &name) const = 0; - }; - - - class DefaultFormatCB : public FormatCB { - std::string defaultValue; - - public: - DefaultFormatCB(const std::string &defaultValue) : - defaultValue(defaultValue) {} - - std::string operator()(char type, int index, - const std::string &name) const { - return defaultValue; - } - }; - - std::string format(const FormatCB &cb); + using format_cb_t = std::function; + std::string format(format_cb_t cb); }; } - - -#if defined(_WIN32) && !defined(__MINGW32__) -#define CBANG_CPP_TO_C_STR(x) (x).c_str() -#else -#define CBANG_CPP_TO_C_STR(x) (x).data() -#endif - -#ifdef USING_CBANG -#define CPP_TO_C_STR(x) CBANG_CPP_TO_C_STR(x) -#endif diff --git a/src/cbang/StringParseTypes.def b/src/cbang/StringParseTypes.def new file mode 100644 index 000000000..6adcb1e3a --- /dev/null +++ b/src/cbang/StringParseTypes.def @@ -0,0 +1,45 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +CBANG_STRING_PT(S8, int8_t, "signed 8-bit"); +CBANG_STRING_PT(U8, uint8_t, "unsigned 8-bit"); +CBANG_STRING_PT(S16, int16_t, "signed 16-bit"); +CBANG_STRING_PT(U16, uint16_t, "unsigned 16-bit"); +CBANG_STRING_PT(S32, int32_t, "signed 32-bit"); +CBANG_STRING_PT(U32, uint32_t, "unsigned 32-bit"); +CBANG_STRING_PT(S64, int64_t, "signed 64-bit"); +CBANG_STRING_PT(U64, uint64_t, "unsigned 64-bit"); +CBANG_STRING_PT(Double, double, "64-bit floating-point"); +CBANG_STRING_PT(Float, float, "32-bit floating-point"); +CBANG_STRING_PT(Bool, bool, "boolean"); + +#undef CBANG_STRING_PT diff --git a/src/cbang/Throw.h b/src/cbang/Throw.h index 3be63d890..71195f11d 100644 --- a/src/cbang/Throw.h +++ b/src/cbang/Throw.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,8 +32,8 @@ /* * Hear you will find several preprocessor macros that can be used as a - * convient way to add the current file, line and column where an exception - * occured. These are: + * convenient way to add the current file, line and column where an exception + * occurred. These are: * * THROW() * THROWC(, Exception &cause) @@ -64,25 +64,23 @@ #define CBANG_EXCEPTION cb::Exception #endif -#define CBANG_DEFINE_EXCEPTION_SUPER(NAME, SUPER) \ - struct NAME : public SUPER { \ - NAME(const cb::Exception &e) : SUPER(e) {} \ - } +#define CBANG_DEFINE_EXCEPTION_SUPER(NAME, SUPER) \ + struct NAME : public SUPER {using cb::Exception::Exception;} #define CBANG_DEFINE_EXCEPTION_SUBCLASS(NAME) \ CBANG_DEFINE_EXCEPTION_SUPER(NAME, cb::Exception) // Exception type throws -#define CBANG_THROWT(TYPE, MSG) \ - throw (TYPE)cb::Exception(CBANG_SSTR(MSG), CBANG_FILE_LOCATION) -#define CBANG_THROWTC(TYPE, MSG, CAUSE) \ - throw (TYPE)cb::Exception(CBANG_SSTR(MSG), CBANG_FILE_LOCATION, CAUSE) -#define CBANG_THROWTX(TYPE, MSG, CODE) \ - throw (TYPE)cb::Exception(CBANG_SSTR(MSG), CBANG_FILE_LOCATION, CODE) -#define CBANG_THROWTCX(TYPE, MSG, CAUSE, CODE) \ - throw (TYPE)cb::Exception(CBANG_SSTR(MSG), CBANG_FILE_LOCATION, CAUSE, CODE) +#define CBANG_THROWT(TYPE, MSG) \ + throw TYPE(CBANG_SSTR(MSG), CBANG_FILE_LOCATION) +#define CBANG_THROWTC(TYPE, MSG, CAUSE) \ + throw TYPE(CBANG_SSTR(MSG), CBANG_FILE_LOCATION, CAUSE) +#define CBANG_THROWTX(TYPE, MSG, CODE) \ + throw TYPE(CBANG_SSTR(MSG), CBANG_FILE_LOCATION, CODE) +#define CBANG_THROWTCX(TYPE, MSG, CAUSE, CODE) \ + throw TYPE(CBANG_SSTR(MSG), CBANG_FILE_LOCATION, CAUSE, CODE) // Throws #define CBANG_THROW(MSG) CBANG_THROWT(CBANG_EXCEPTION, MSG) diff --git a/src/cbang/Zap.h b/src/cbang/Zap.h deleted file mode 100644 index 419cc8346..000000000 --- a/src/cbang/Zap.h +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#pragma once - -#define zap(x) do {if (x) {delete x; x = 0;}} while (false) diff --git a/src/cbang/acmev2/Account.cpp b/src/cbang/acmev2/Account.cpp index a46a06ce3..c560d054c 100644 --- a/src/cbang/acmev2/Account.cpp +++ b/src/cbang/acmev2/Account.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -39,59 +39,95 @@ #include #include #include +#include + +#include +#include +#include #include -#include #include #include #include -#include +#include +#include using namespace cb; using namespace cb::ACMEv2; using namespace std; -Account::Account(Event::Client &client, const KeyPair &key) : - client(client), key(key), - uriBase("https://acme-staging-v02.api.letsencrypt.org"), retryWait(5), - maxRetries(5), renewPeriod(15), state(STATE_IDLE), retries(0), - currentKeyCert(0), currentAuth(0) {} +Account::Account(HTTP::Client &client) : + client(client), + retryEvent(client.getBase().newEvent(this, &Account::next)) {} void Account::addOptions(Options &options) { options.pushCategory("ACME v2"); - options.addTarget("acmev2-base-uri", uriBase, "The ACME v2 URI base."); - options.addTarget("acmev2-contact-emails", emails, "Space separated list of " - "certificate contact emails." - )->setType(Option::STRINGS_TYPE); - options.addTarget("acmev2-max-retries", maxRetries, "Maximum number of times " - "to retry an operation before giving up."); + options.addTarget("acmev2-base", uriBase, "The ACME v2 URI base."); + options.addTarget("acmev2-emails", emails, "Space separated list of " + "certificate contact emails."); options.addTarget("acmev2-retry-wait", retryWait, "The time in seconds to " "wait between retries."); options.addTarget("acmev2-renewal-period", renewPeriod, "Renew certificates " "this many days before expiration."); - options.addTarget("acmev2-cert-org", certOrg, "Certificate organization."); - options.addTarget("acmev2-cert-unit", certUnit, - "Certificate organizational unit."); - options.addTarget("acmev2-cert-location", certLocation, - "Certificate city or town."); - options.addTarget("acmev2-cert-state", certState, - "Certificate state or province."); - options.addTarget("acmev2-cert-country", certCountry, - "Certificate two-letter ISO country code."); options.popCategory(); } -void Account::addKeyCert(const SmartPointer &keyCert) { +void Account::simpleInit(const KeyPair &key, const KeyPair &clientKey, + const string &domains, const string &clientChain, HTTP::HandlerGroup &group, + listener_t cb, unsigned updateRate) { + + SmartPointer keyCert = new KeyCert(domains, clientKey); + if (!clientChain.empty()) keyCert->getChain().parse(clientChain); + + if (cb) addListener(cb); + setKey(key); + addHandler(group); + add(keyCert); + + // Check for renewals at updateRate starting now + auto wcb = WeakCallback(lifetime, [this] () {update();}); + auto e = client.getBase().newEvent(wcb); + e->add(updateRate); + e->activate(); +} + + +void Account::addListener(listener_t listener) {listeners.push_back(listener);} + + +void Account::addHandler(HTTP::HandlerGroup &group) { + group.addMember(HTTP_GET, "^/\\.well-known/acme-challenge/.*", this, + &Account::challengeRequest); +} + + +bool Account::needsRenewal(const KeyCert &keyCert) const { + return keyCert.expiredIn(renewPeriod * Time::SEC_PER_DAY) && + keyCert.getWaitUntil() < Time::now(); +} + + +unsigned Account::certsReadyForRenewal() const { + unsigned count = 0; + + for (auto &keyCert: keyCerts) + if (needsRenewal(*keyCert)) count++; + + return count; +} + + +void Account::add(const SmartPointer &keyCert) { keyCerts.push_back(keyCert); } void Account::update() { - if (state != STATE_IDLE) return; + if (state != STATE_IDLE || !certsReadyForRenewal()) return; if (directory.isNull()) state = STATE_GET_DIR; else if (kid.empty()) state = STATE_REGISTER; @@ -110,7 +146,7 @@ void Account::update() { bool Account::matchChallengePath(const string &path) const { const string prefix = "/.well-known/acme-challenge/"; - return state == STATE_CHALLENGE && String::startsWith(path, prefix) && + return String::startsWith(path, prefix) && challengeToken == path.substr(prefix.length()); } @@ -152,9 +188,10 @@ void Account::writeJWK(JSON::Sink &sink) const { sink.beginDict(); if (key.isRSA()) { + // Insert order matters + sink.insert("e", URLBase64().encode(key.getRSA_E().toBinString())); sink.insert("kty", "RSA"); - sink.insert("e", URLBase64().encode(key.getRSA().getE().toBinString())); - sink.insert("n", URLBase64().encode(key.getRSA().getN().toBinString())); + sink.insert("n", URLBase64().encode(key.getRSA_N().toBinString())); } else THROW("Unsupported key type"); @@ -171,7 +208,7 @@ string Account::getProtected(const URI &uri) const { writer.beginDict(); writer.insert("alg", "RS256"); - if (kid.empty()) writer.insert("kid", kid); + if (!kid.empty()) writer.insert("kid", kid); else { writer.beginInsert("jwk"); writeJWK(writer); @@ -181,6 +218,7 @@ string Account::getProtected(const URI &uri) const { writer.insert("nonce", nonce); writer.insert("url", uri.toString()); writer.endDict(); + writer.flush(); return writer.toString(); } @@ -189,10 +227,8 @@ string Account::getProtected(const URI &uri) const { string Account::getSignedRequest(const URI &uri, const string &payload) const { string protected64 = URLBase64().encode(getProtected(uri)); string payload64 = URLBase64().encode(payload); - - KeyContext ctx(key); - ctx.setSignatureMD("sha256"); - string signed64 = URLBase64().encode(ctx.sign(protected64 + "." + payload64)); + string signed64 = + URLBase64().encode(key.signSHA256(protected64 + "." + payload64)); JSON::BufferWriter writer(0, true); @@ -201,6 +237,7 @@ string Account::getSignedRequest(const URI &uri, const string &payload) const { writer.insert("payload", payload64); writer.insert("signature", signed64); writer.endDict(); + writer.flush(); return writer.toString(); } @@ -217,12 +254,12 @@ string Account::getNewAcctPayload() const { String::tokenize(emails, list); writer.insertList("contact"); - for (unsigned i = 0; i < list.size(); i++) - writer.append("mailto:" + list[i]); + for (auto &item: list) writer.append("mailto:" + item); writer.endList(); } writer.endDict(); + writer.flush(); return writer.toString(); } @@ -234,92 +271,72 @@ string Account::getNewOrderPayload() const { writer.beginDict(); writer.insertList("identifiers"); - const vector &domains = getCurrentDomains(); - for (unsigned i = 0; i < domains.size(); i++) { + auto &domains = getCurrentDomains(); + for (auto &domain: domains) { writer.appendDict(); writer.insert("type", "dns"); - writer.insert("value", domains[i]); + writer.insert("value", domain); writer.endDict(); } writer.endList(); writer.endDict(); + writer.flush(); return writer.toString(); } -string Account::getCheckChallengePayload() const { +string Account::getFinalizePayload() const { + auto csr = getCurrentKeyCert().makeCSR(); + JSON::BufferWriter writer(0, true); writer.beginDict(); - writer.insert("resource", "challenge"); - writer.insert("keyAuthorization", getKeyAuthorization()); + writer.insert("csr", URLBase64().encode(csr->toDER())); writer.endDict(); + writer.flush(); return writer.toString(); } -string Account::getFinalizePayload() const { - CSR csr; - const vector &domains = getCurrentDomains(); - - if (domains.empty()) THROW("No domains set"); - - csr.addNameEntry("CN", domains[0]); - - if (!certOrg.empty()) csr.addNameEntry("O", certOrg); - if (!certUnit.empty()) csr.addNameEntry("OU", certUnit); - if (!certLocation.empty()) csr.addNameEntry("L", certLocation); - if (!certState.empty()) csr.addNameEntry("ST", certState); - if (!certCountry.empty()) csr.addNameEntry("C", certCountry); - - if (1 < domains.size()) { - string subjectAltName; - - for (unsigned i = 1; i < domains.size(); i++) { - if (1 < i) subjectAltName += ", "; - subjectAltName += "DNS:" + domains[i]; - } - - csr.addExtension("subjectAltName", subjectAltName); +bool Account::challengeRequest(HTTP::Request &req) { + if (matchChallengePath(req.getURI().getPath())) { + req.reply(getKeyAuthorization()); + if (retryEvent->isPending()) retryEvent->activate(); + return true; } - csr.sign(getCurrentKeyCert().getKey(), "sha256"); - - JSON::BufferWriter writer(0, true); - - writer.beginDict(); - writer.insert("csr", URLBase64().encode(csr.toDER())); - writer.endDict(); - - return writer.toString(); + return false; } -string Account::getProblemString(const JSON::ValuePtr &problem) const { - string s = problem->getString("type"); +string Account::getProblemString(const JSON::Value &problem) const { + string s = problem.getString("type"); - if (problem->hasDict("identifier")) { - JSON::ValuePtr _id = problem->get("identifier"); - s += " id: " + _id->getString("type") + " " + _id->getString("value"); + if (problem.hasDict("identifier")) { + auto &id = *problem.get("identifier"); + s += " id: " + id.getString("type") + " " + id.getString("value"); } - s += " " + problem->getString("detail"); + s += " " + problem.getString("detail"); - if (problem->hasList("subproblems")) { - JSON::ValuePtr list = problem->get("subproblems"); - for (unsigned i = 0; i < list->size(); i++) - s += "\n " + getProblemString(list->get(i)); + if (problem.hasList("subproblems")) { + auto &list = *problem.get("subproblems"); + for (auto &item: list) + s += "\n " + getProblemString(*item); } return s; } -void Account::call(const string &url, unsigned method) { - client.call(getURL(url), method, this, &Account::responseHandler)->send(); +void Account::call(const string &url, HTTP::Method method) { + HTTP::Client::callback_t cb = + [this] (HTTP::Request &req) {responseHandler(req);}; + pr = client.call(getURL(url), method, WeakCall(lifetime.get(), cb)); + pr->send(); } @@ -328,14 +345,24 @@ void Account::post(const string &url, const string &payload) { string data = getSignedRequest(uri, payload); nonce.clear(); // Nonce used - SmartPointer pr = - client.call(uri, HTTP_POST, data, this, &Account::responseHandler); + LOG_DEBUG(5, "Posting " << data); - pr->outSet("Content-Type", "application/jose+json"); + HTTP::Client::callback_t cb = + [this] (HTTP::Request &req) {responseHandler(req);}; + pr = client.call(uri, HTTP_POST, data, WeakCall(lifetime.get(), cb)); + pr->getRequest()->outSet("Content-Type", "application/jose+json"); pr->send(); } +void Account::error(const string &msg, const JSON::Value &json) { + string err = json.hasDict("error") ? + getProblemString(*json.get("error")) : json.toString(); + LOG_ERROR(msg << ": " << err); + getCurrentKeyCert().setWaitUntil(Time::now() + retryWait); +} + + void Account::nextKeyCert() { currentKeyCert++; state = STATE_NEW_ORDER; @@ -344,15 +371,14 @@ void Account::nextKeyCert() { void Account::nextAuth() { - currentAuth++; - state = STATE_GET_AUTH; + auto &auths = *order->get("authorizations"); + if (++currentAuth < auths.size()) state = STATE_GET_AUTH; + else state = STATE_FINALIZE; next(); } void Account::next() { - retries = 0; // Reset retry count - if (STATE_GET_DIR < state && nonce.empty()) { head("newNonce"); return; @@ -360,12 +386,12 @@ void Account::next() { switch (state) { case STATE_IDLE: break; - case STATE_GET_DIR: get(uriBase + "/directory"); break; + case STATE_GET_DIR: get(uriBase); break; case STATE_REGISTER: post("newAccount", getNewAcctPayload()); break; case STATE_NEW_ORDER: for (; currentKeyCert < keyCerts.size(); currentKeyCert++) - if (getCurrentKeyCert().expiredIn(renewPeriod * Time::SEC_PER_DAY)) { + if (needsRenewal(getCurrentKeyCert())) { post("newOrder", getNewOrderPayload()); return; } @@ -374,24 +400,24 @@ void Account::next() { break; case STATE_GET_AUTH: { - JSON::ValuePtr authz = order->get("authorizations"); - if (currentAuth < authz->size()) get(authz->getString(currentAuth)); + auto &auths = *order->get("authorizations", new JSON::Dict); + if (currentAuth < auths.size()) get(auths.getString(currentAuth)); else nextKeyCert(); break; } case STATE_CHALLENGE: { - JSON::ValuePtr challenges = order->get("challenges"); + auto &challenges = *authorization->get("challenges"); - for (unsigned i = 0; i < challenges->size(); i++) - if (challenges->get(i)->getString("type", "") == "http-01") { - JSON::ValuePtr challenge = challenges->get(i); - string uri = challenge->getString("uri"); + for (auto &challenge: challenges) { + if (challenge->getString("type", "") == "http-01") { + string uri = challenge->getString("url"); challengeToken = challenge->getString("token"); - post(uri, getCheckChallengePayload()); + post(uri, "{}"); break; } + } break; } @@ -406,68 +432,101 @@ void Account::next() { } -void Account::retry() { - if (retries++ < maxRetries) - client.getBase().newEvent(this, &Account::next)->add(retryWait); +void Account::retry(HTTP::Request &req, double delay) { + // Check for rate limit + if (req.inHas("Retry-After")) { + string s = req.inGet("Retry-After"); - else - switch (state) { - case STATE_NEW_ORDER: - case STATE_GET_AUTH: - nextKeyCert(); - break; - - case STATE_CHALLENGE: - case STATE_FINALIZE: - case STATE_GET_ORDER: - case STATE_GET_CERT: - nextAuth(); - break; + try { + delay = String::parseDouble(s); + } catch (...) { + try { + delay = Time::parse(s, Time::httpFormat) - Time::now(); + } catch (...) { + LOG_ERROR("Failed to parse HTTP header Retry-After: " << s); + } + } - default: state = STATE_IDLE; break; // Give up } + + LOG_DEBUG(3, "Retrying certificate operation in " << HumanDuration(delay)); + retryEvent->add(delay); } +void Account::fail(double delay) { + LOG_DEBUG(3, "Failed, retrying certificate in " << HumanDuration(delay)); + getCurrentKeyCert().setWaitUntil(Time::now() + delay); + nextKeyCert(); +} -void Account::responseHandler(Event::Request *req, int err) { - if (!err && req) - try { - if (req->inHas("Replay-Nonce")) nonce = req->inGet("Replay-Nonce"); + + +void Account::responseHandler(HTTP::Request &req) { + if (!req.isOk()) LOG_ERROR(req.getInput()); + else try { + LOG_DEBUG(5, "state=" << state << " response=" << req.getInput()); + + if (req.inHas("Replay-Nonce")) nonce = req.inGet("Replay-Nonce"); // Check if this was a nonce request - if (req->getMethod() == HTTP_HEAD) { + if (req.getMethod() == HTTP_HEAD) { next(); return; } - if (req->inGet("Content-Type") == "application/problem+json") { - LOG_WARNING("Account: " << getProblemString(req->getInputJSON())); - // TODO handle rate limits and Retry-After header - retry(); + if (req.inGet("Content-Type") == "application/problem+json") { + LOG_WARNING("Account: " << getProblemString(*req.getInputJSON())); + fail(retryWait); return; } + if (req.getResponseCode() == HTTP::Status::HTTP_TOO_MANY_REQUESTS) + return fail(Time::SEC_PER_HOUR); + switch (state) { case STATE_IDLE: return; - case STATE_GET_DIR: directory = req->getInputJSON(); break; - case STATE_REGISTER: kid = req->inGet("Location"); break; + case STATE_GET_DIR: directory = req.getInputJSON(); break; + case STATE_REGISTER: kid = req.inGet("Location"); break; case STATE_NEW_ORDER: - orderLink = req->inGet("Location"); - order = req->getInputJSON(); + orderLink = req.inGet("Location"); + order = req.getInputJSON(); currentAuth = 0; break; - case STATE_GET_AUTH: authorization = req->getInputJSON(); break; + case STATE_GET_AUTH: { + authorization = req.getInputJSON(); + string status = authorization->getString("status"); + + if (status == "pending") break; + if (status == "processing") return retry(req, 5); + if (status == "valid") return nextAuth(); + + // status == invalid or revoked + auto &challenges = *authorization->get("challenges"); + + for (auto &challenge: challenges) + if (challenge->getString("type", "") == "http-01") { + error("Failed to complete certificate challenge", *challenge); + break; + } + + return nextKeyCert(); + } case STATE_CHALLENGE: { - string status = req->getInputJSON()->getString("status"); + string status = req.getInputJSON()->getString("status"); + + if (status == "valid") nextAuth(); + + else if (status == "pending") { + state = STATE_GET_AUTH; + retry(req, 5); + + } else nextKeyCert(); - if (status == "valid") break; - else if (status == "pending") retry(); - else nextAuth(); return; } @@ -475,23 +534,26 @@ void Account::responseHandler(Event::Request *req, int err) { // Fall through, finalize returns order case STATE_GET_ORDER: { - order = req->getInputJSON(); + order = req.getInputJSON(); string status = order->getString("status"); - if (status == "processing") { - retry(); - return; - - } else if (status != "valid") { - nextAuth(); - return; - } + if (status == "processing") return retry(req, 5); + if (status == "valid") break; - break; + error("Unexpected certificate order status", *order); + return nextKeyCert(); } case STATE_GET_CERT: { - getCurrentKeyCert().updateChain(req->getInput()); + auto &keyCert = getCurrentKeyCert(); + auto &chain = keyCert.getChain(); + + chain.clear(); + chain.parse(req.getInput()); + + for (auto &listener: listeners) + TRY_CATCH_ERROR(listener(keyCert)); + nextKeyCert(); return; } @@ -504,5 +566,5 @@ void Account::responseHandler(Event::Request *req, int err) { } CATCH_ERROR; - retry(); + fail(retryWait); } diff --git a/src/cbang/acmev2/Account.h b/src/cbang/acmev2/Account.h index a8292a223..c1ac5193a 100644 --- a/src/cbang/acmev2/Account.h +++ b/src/cbang/acmev2/Account.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,38 +32,42 @@ #pragma once +/// Based on https://tools.ietf.org/html/draft-ietf-acme-acme-09 + #include "KeyCert.h" -#include -#include +#include +#include #include #include #include #include #include +#include namespace cb { class Options; + namespace Event {class Event;} + namespace HTTP {class HandlerGroup;} namespace ACMEv2 { - class Account : public Event::RequestMethod { - Event::Client &client; + static std::string letsencrypt_base = + "https://acme-v02.api.letsencrypt.org/directory"; + static std::string letsencrypt_staging = + "https://acme-staging-v02.api.letsencrypt.org/directory"; + + class Account : public HTTP::Method::Enum { + SmartPointer lifetime; + HTTP::Client &client; KeyPair key; - std::string uriBase; + std::string uriBase = letsencrypt_staging; std::string emails; - double retryWait; - int maxRetries; - double renewPeriod; - - std::string certOrg; - std::string certUnit; - std::string certLocation; - std::string certState; - std::string certCountry; + double retryWait = 60 * 20; + double renewPeriod = 15; typedef enum { STATE_IDLE, @@ -76,11 +80,9 @@ namespace cb { STATE_GET_ORDER, STATE_GET_CERT, } state_t; - state_t state; - - int retries; + state_t state = STATE_IDLE; - unsigned currentKeyCert; + unsigned currentKeyCert = 0; std::vector > keyCerts; JSON::ValuePtr directory; @@ -89,22 +91,43 @@ namespace cb { std::string orderLink; JSON::ValuePtr order; - unsigned currentAuth; + unsigned currentAuth = 0; JSON::ValuePtr authorization; std::string challengeToken; + cb::HTTP::Client::RequestPtr pr; + public: - Account(Event::Client &client, const KeyPair &key); + typedef std::function listener_t; + + protected: + std::vector listeners; + + SmartPointer retryEvent; + + public: + Account(HTTP::Client &client); + + const KeyPair &getKey() const {return key;} + void setKey(const KeyPair &key) {this->key = key;} void setURIBase(const std::string &uriBase) {this->uriBase = uriBase;} void setContactEmails(const std::string &emails) {this->emails = emails;} void setRetryWait(double retryWait) {this->retryWait = retryWait;} - void setMaxRetries(int maxRetries) {this->maxRetries = maxRetries;} void setRenewPeriod(double renewPeriod) {this->renewPeriod = renewPeriod;} void addOptions(Options &options); - void addKeyCert(const SmartPointer &keyCert); + void simpleInit(const KeyPair &key, const KeyPair &clientKey, + const std::string &domains, + const std::string &clientChain, + HTTP::HandlerGroup &group, listener_t cb, + unsigned updateRate = 60); + void addListener(listener_t listener); + void addHandler(HTTP::HandlerGroup &group); + bool needsRenewal(const KeyCert &keyCert) const; + unsigned certsReadyForRenewal() const; + void add(const SmartPointer &keyCert); void update(); bool matchChallengePath(const std::string &path) const; @@ -122,22 +145,25 @@ namespace cb { const std::string &payload) const; std::string getNewAcctPayload() const; std::string getNewOrderPayload() const; - std::string getCheckChallengePayload() const; std::string getFinalizePayload() const; + bool challengeRequest(HTTP::Request &req); + protected: - std::string getProblemString(const JSON::ValuePtr &problem) const; + std::string getProblemString(const JSON::Value &problem) const; - void call(const std::string &url, unsigned method); + void call(const std::string &url, HTTP::Method method); void head(const std::string &url) {call(url, HTTP_HEAD);} void get(const std::string &url) {call(url, HTTP_GET);} void post(const std::string &url, const std::string &payload); + void error(const std::string &msg, const JSON::Value &json); void nextKeyCert(); void nextAuth(); void next(); - void retry(); - void responseHandler(Event::Request *req, int err); + void retry(HTTP::Request &req, double delay); + void fail(double delay); + void responseHandler(HTTP::Request &req); }; } } diff --git a/src/cbang/acmev2/KeyCert.cpp b/src/cbang/acmev2/KeyCert.cpp index d0010ca22..eed249931 100644 --- a/src/cbang/acmev2/KeyCert.cpp +++ b/src/cbang/acmev2/KeyCert.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,24 +32,44 @@ #include "KeyCert.h" +#include #include +#include +using namespace cb; using namespace cb::ACMEv2; using namespace std; -void KeyCert::updateChain(const string &pem) { - chain.clear(); - chain.parse(pem); +KeyCert::KeyCert(const string &domains, const KeyPair &key, + const CertificateChain &chain) : + key(key), chain(chain) { + String::tokenize(domains, this->domains); +} + + +bool KeyCert::expiredIn(unsigned secs) const { + // Expired if certificate empty, expired or does not match key + if (!hasCert() || chain.get(0).expiredIn(secs) || + chain.get(0).getPublicKey() != key) return true; - for (unsigned i = 0; i < listeners.size(); i++) - listeners[i](*this); + // Check cert applies to all domains + auto cert = chain.get(0); + for (auto &domain: domains) + if (!cert.checkHost(domain)) return true; + + return false; } -void KeyCert::addListener(listener_t listener) {listeners.push_back(listener);} +SmartPointer KeyCert::makeCSR() const { + if (domains.empty()) THROW("No domains set"); + SmartPointer csr = new CSR; -bool KeyCert::expiredIn(unsigned secs) const { - return !hasCert() || chain.get(0).expiredIn(secs); + csr->addNameEntry("CN", domains[0]); + csr->addExtension("subjectAltName", "DNS:" + String::join(domains, ", DNS:")); + csr->sign(key, "sha256"); + + return csr; } diff --git a/src/cbang/acmev2/KeyCert.h b/src/cbang/acmev2/KeyCert.h index 2a9e4f76e..40a617bbf 100644 --- a/src/cbang/acmev2/KeyCert.h +++ b/src/cbang/acmev2/KeyCert.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -39,34 +39,34 @@ namespace cb { + class CSR; + namespace ACMEv2 { class KeyCert { KeyPair key; CertificateChain chain; std::vector domains; + double waitUntil = 0; public: - typedef std::function listener_t; - - protected: - std::vector listeners; - - public: - KeyCert(const std::string &domain, const KeyPair &key, - const CertificateChain &chain = CertificateChain()) : - key(key), chain(chain) {addDomain(domain);} + KeyCert(const std::string &domains, const KeyPair &key, + const CertificateChain &chain = CertificateChain()); + virtual ~KeyCert() {} const KeyPair &getKey() const {return key;} CertificateChain &getChain() {return chain;} - void updateChain(const std::string &pem); + const CertificateChain &getChain() const {return chain;} void addDomain(const std::string &domain) {domains.push_back(domain);} const std::vector &getDomains() const {return domains;} - void addListener(listener_t listener); + double getWaitUntil() const {return waitUntil;} + void setWaitUntil(double waitUntil) {this->waitUntil = waitUntil;} bool hasCert() const {return chain.size();} bool expiredIn(unsigned secs) const; + + virtual SmartPointer makeCSR() const; }; } } diff --git a/src/cbang/api/API.cpp b/src/cbang/api/API.cpp new file mode 100644 index 000000000..a77a0f08e --- /dev/null +++ b/src/cbang/api/API.cpp @@ -0,0 +1,560 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "API.h" + +#include "Resolver.h" +#include "QueryDef.h" +#include "HandlerGroup.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +using namespace cb; +using namespace std; +using namespace cb::API; + + +namespace { + unsigned parseMethods(const string &s) { + unsigned methods = HTTP::Method::HTTP_UNKNOWN; + vector tokens; + + String::tokenize(s, tokens, "|"); + for (auto &token: tokens) + methods |= HTTP::Method::parse(token, HTTP::Method::HTTP_UNKNOWN); + + return methods; + } +} + + +cb::API::API::API(Options &options) : options(options) {} +cb::API::API::~API() {} + + +void cb::API::API::load(const JSON::ValuePtr &config) { + if (this->config.isSet()) THROW("API already loaded"); + this->config = config; + + optionValues = options.getConfigJSON(); + + // Resolve variables + Resolver(*this).resolve(*config); + + // Check JmpAPI version + const Version minVer("1.1.0"); + Version version(config->getString("jmpapi", "0.0.0")); + if (version < minVer) THROW("API version must be at least " << minVer); + + // Create Spec + spec = config->createDict(); + spec->insert("openapi", "3.1.0"); + if (config->hasDict("info")) spec->insert("info", config->get("info")); + spec->insert("tags", config->createList()); + spec->insert("paths", config->createDict()); + + // Get list of APIs + JSON::ValuePtr apis; + if (config->hasDict("apis")) apis = config->get("apis"); + else { + apis = new JSON::Dict; + apis->insert("", config->get("api")); + } + + // Pass 1: Register args + for (auto e: apis->entries()) { + auto api = e.value(); + category = e.key(); + + if (api->hasDict("args")) + for (auto e2: api->get("args")->entries()) + addArgs(e2.key(), e2.value()); + } + + // Pass 2: Register queries + for (auto e: apis->entries()) { + auto api = e.value(); + category = e.key(); + + if (api->hasDict("queries")) + for (auto e2: api->get("queries")->entries()) { + HandlerPtr handler = new QueryHandler(*this, e2.value()); + handler = wrapEndpoint(handler, new Config(*this, e2.value())); + addQuery(e2.key(), handler); + } + } + + // Pass 3: Register timeseries + for (auto e: apis->entries()) { + auto api = e.value(); + category = e.key(); + + if (api->hasDict("timeseries")) + for (auto e2: api->get("timeseries")->entries()) { + string name = category + "." + e2.key(); + HandlerPtr handler = new TimeseriesHandler(*this, name, e2.value()); + handler = wrapEndpoint(handler, new Config(*this, e2.value())); + addTimeseries(e2.key(), handler); + } + } + + // Pass 4: Register endpoints and create spec + for (auto e: apis->entries()) { + auto api = e.value(); + category = e.key(); + + addTagSpec(e.key(), api); + + if (api->hasDict("endpoints")) + add(createAPIHandler(new Config(*this, api->get("endpoints")))); + } + + category.clear(); +} + + +void cb::API::API::bind(const string &key, const RequestHandlerPtr &handler) { + if (!callbacks.insert(decltype(callbacks)::value_type(key, handler)).second) + THROW("API binding for '" << key << "' already exists"); +} + + +string cb::API::API::resolve(const string &category, const string &name) { + if (category.empty()) return name; + return name.find('.') == string::npos ? (category + "." + name) : name; +} + + +string cb::API::API::resolve(const string &name) const { + return resolve(category, name); +} + + +void cb::API::API::addArgs(const string &name, const JSON::ValuePtr &_args) { + if (!_args->isDict()) + THROW("Args def is not a dictionary: " << _args->toString()); + + string _name = resolve(name); + auto result = args.insert(decltype(args)::value_type(_name, _args)); + if (!result.second) THROW("Args '" << _name << "' already exists"); + + LOG_INFO(3, "Adding args " << _name); +} + + +const JSON::ValuePtr &cb::API::API::getArgs(const string &name) const { + string _name = resolve(name); + auto it = args.find(_name); + + if (it == args.end()) + THROWX("Args '" << _name << "' not found", HTTP_NOT_FOUND); + + return it->second; +} + + +void cb::API::API::addQuery(const string &name, const HandlerPtr &handler) { + string _name = resolve(name); + auto result = queries.insert(decltype(queries)::value_type(_name, handler)); + if (!result.second) THROW("Query '" << _name << "' already exists"); + + LOG_INFO(3, "Adding query " << _name); +} + + +cb::API::HandlerPtr cb::API::API::getQuery( + const string &category, const string &name) const { + + string _name = resolve(category, name); + auto it = queries.find(_name); + + if (it == queries.end()) + THROWX("Query '" << _name << "' not found", HTTP_NOT_FOUND); + + return it->second; +} + + +cb::API::HandlerPtr cb::API::API::getQuery(const string &name) const { + return getQuery(category, name); +} + + +cb::API::HandlerPtr cb::API::API::getQuery(const JSON::ValuePtr &config) { + if (config->hasString("query")) { + if (config->has("sql")) THROW("Cannot define both 'query' and 'sql'"); + return getQuery(config->getString("query")); + } + + return new QueryHandler(*this, config); +} + + +void cb::API::API::addTimeseries( + const string &name, const HandlerPtr &handler) { + + if (timeseriesDB.isNull()) + THROW("Cannot configure timeseries with out timeseries DB"); + + string _name = resolve(name); + auto result = + timeseries.insert(decltype(timeseries)::value_type(_name, handler)); + if (!result.second) THROW("Timeseries '" << _name << "' already exists"); + LOG_INFO(3, "Adding timeseries " << _name); +} + + +cb::API::HandlerPtr cb::API::API::getTimeseries( + const string &category, const string &name) const { + string _name = resolve(category, name); + auto it = timeseries.find(_name); + + if (it == timeseries.end()) + THROWX("Timeseries '" << _name << "' not found", HTTP_NOT_FOUND); + + return it->second; +} + + +cb::API::HandlerPtr cb::API::API::getTimeseries(const string &name) const { + return getTimeseries(category, name); +} + + +string cb::API::API::getEndpointType(const JSON::ValuePtr &config) const { + if (config->has("handlers")) THROW("Nested handlers not allowed"); + + string type = config->getString("handler", ""); + if (!type.empty()) return type; + + if (config->has("bind")) return "bind"; + if (config->has("timeseries")) return "timeseries"; + if (config->has("sql")) return "query"; + if (config->has("query")) return "query"; + if (config->has("path")) return "file"; + if (config->has("resource")) return "resource"; + + return "pass"; +} + + +JSON::ValuePtr cb::API::API::getEndpointTypes( + const JSON::ValuePtr &config) const { + if (config->has("handlers")) { + if (config->has("handler")) + THROW("Cannot define both 'handler' and 'handlers'"); + + auto types = config->createList(); + + auto &handlers = config->getList("handlers"); + for (auto &handler: handlers) + types->append(getEndpointType(handler)); + + return types; + } + + return config->create(getEndpointType(config)); +} + + +cb::API::HandlerPtr cb::API::API::createEndpointHandler( + const JSON::ValuePtr &types, const CfgPtr &cfg) { + auto config = cfg->getConfig(); + + // Multiple handlers + if (types->isList()) { + auto group = SmartPtr(new HandlerGroup); + auto &handlers = config->getList("handlers"); + + for (unsigned i = 0; i < types->size(); i++) { + auto childCfg = cfg->createChild(handlers.get(i)); + group->add(createEndpointHandler(types->get(i), childCfg)); + } + + return group; + } + + // A single handler + string type = types->asString(); + + if (type == "bind") { + auto key = config->getString("bind", ""); + auto it = callbacks.find(key); + if (it == callbacks.end()) THROW("Bind callback '" << key << "' not found"); + return new HTTPHandler(it->second); + } + + if (type == "pass") return new PassHandler; + if (type == "cors") return new CORSHandler(config); + if (type == "status") return new StatusHandler(config); + if (type == "redirect") return new RedirectHandler(config); + if (type == "spec") return new SpecHandler(*this, config); + if (type == "websocket") return new WebsocketHandler(*this, config); + if (type == "file") + return new HTTPHandler(new HTTP::FileHandler(config)); + if (type == "resource") + return new HTTPHandler( + new HTTP::ResourceHandler(config->getString("resource"))); + + if (client.isSet() && oauth2Providers.isSet() && sessionManager.isSet()) { + if (config->hasString("sql") && connector.isNull()) + THROW("Cannot have 'sql' in API without a DB connector"); + + if (type == "login") return new LoginHandler (*this, config); + if (type == "logout") return new LogoutHandler (*this, config); + if (type == "session") return new SessionHandler(*this, config); + } + + if (connector.isSet()) { + if (type == "query") { + if (config->has("query")) { + if (config->has("sql")) THROW("Cannot define both 'query' and 'sql'"); + return getQuery(config->getString("query")); + } + + return new QueryHandler(*this, config); + } + + if (type == "timeseries") { + if (config->has("timeseries")) { + if (config->has("query") || config->has("sql")) + THROW("Cannot define both 'timeseries' and 'query' or 'sql'"); + + return getTimeseries(config->getString("timeseries")); + } + + string name = category + "." + cfg->getPattern(); + return new TimeseriesHandler(*this, name, config); + } + } + + THROW("Unsupported handler '" << type << "'"); +} + + +cb::API::HandlerPtr cb::API::API::wrapEndpoint( + const HandlerPtr &handler, const CfgPtr &cfg) { + auto group = SmartPtr(new HandlerGroup); + + // Headers + if (config->has("headers")) + group->add(new HeadersHandler(config->get("headers"))); + + // Arg filter + if (config->has("arg-filter")) { + if (procPool.isNull()) + THROW("API cannot have 'arg-filter' without Event::SubprocessPool"); + + auto filter = config->get("arg-filter"); + group->add(new ArgFilterHandler(*this, filter, handler)); + + } else group->add(handler); + + // Validation + return cfg->addValidation(group); +} + + +cb::API::HandlerPtr cb::API::API::createMethodsHandler( + const string &methods, const CfgPtr &cfg) { + auto config = cfg->getConfig(); + auto types = getEndpointTypes(config); + + LOG_INFO(3, "Adding endpoint " << methods << " " << cfg->getPattern() + << " (" << types->toString(0, true) << ")"); + + addToSpec(methods, cfg); + + return wrapEndpoint(createEndpointHandler(types, cfg), cfg); +} + + +cb::API::HandlerPtr cb::API::API::createAPIHandler(const CfgPtr &cfg) { + auto children = SmartPtr(new HandlerGroup); + auto methods = SmartPtr(new HandlerGroup); + auto api = cfg->getConfig(); + auto pattern = cfg->getPattern(); + + // Children + for (auto e: api->entries()) { + auto &key = e.key(); + auto config = e.value(); + + if (config->isString()) { + string bind = config->getString(); + config = config->createDict(); + config->insert("bind", bind); + } + + // Child + if (!key.empty() && key[0] == '/') { + children->add(createAPIHandler(cfg->createChild(config, key))); + continue; + } + + // Methods + unsigned methodTypes = parseMethods(key); + if (methodTypes) { + auto handler = createMethodsHandler(key, cfg->createChild(config)); + methods->add(new MethodHandler(methodTypes, handler)); + } + } + + auto group = SmartPtr(new HandlerGroup); + + if (!methods->isEmpty()) { + if (pattern.empty()) group->add(methods); + else group->add(new URLHandler(pattern, methods)); + } + + if (!children->isEmpty()) { + if (pattern.empty()) group->add(children); + else group->add(new URLHandler(pattern + ".+", children)); + } + + return group; +} + + +void cb::API::API::addTagSpec(const string &tag, const JSON::ValuePtr &config) { + hideCategory = config->getBoolean("hide", false); + if (hideCategory) return; + + auto tags = spec->get("tags"); + auto tagSpec = config->createDict(); + tags->append(tagSpec); + + tagSpec->insert("name", tag); + if (config->hasString("help")) + tagSpec->insert("description", config->get("help")); +} + + +void cb::API::API::addToSpec(const string &methods, const CfgPtr &cfg) { + if (hideCategory) return; + + auto config = cfg->getConfig(); + if (config->getBoolean("hide", false)) return; + + auto paths = spec->get("paths"); + auto path = cfg->getPattern(); + + if (!paths->hasDict(path)) paths->insert(path, config->createDict()); + auto pathSpec = paths->get(path); + + vector methodNames; + String::tokenize(methods, methodNames, "|"); + for (auto &method: methodNames) { + auto methodSpec = config->createDict(); + pathSpec->insert(String::toLower(method), methodSpec); + + // Add tag from category + if (!category.empty()) { + auto tags = config->createList(); + methodSpec->insert("tags", tags); + tags->append(category); + } + + // Add description from help + if (config->hasString("help")) + methodSpec->insert("description", config->get("help")); + + // Add parameter spec from path and args handlers + set foundArgs; + Regex re(HTTP::URLPatternMatcher::toRE2Pattern(path), false); + auto &urlArgs = re.getGroupNameMap(); + JSON::ValuePtr paramSpec = config->createList(); + methodSpec->insert("parameters", paramSpec); + + auto args = cfg->getArgs(); + if (args.isSet()) { + args->appendSpecs(*paramSpec); + + // Determine arg "in" type + for (auto &spec: *paramSpec) { + string name = spec->getString("name"); + bool isURLArg = urlArgs.find(name) != urlArgs.end(); + spec->insert("in", isURLArg ? "path" : "query"); + foundArgs.insert(name); + } + } + + // Add missing URL args to spec + for (auto &arg: urlArgs) + if (foundArgs.find(arg.first) == foundArgs.end()) { + auto argSpec = config->createDict(); + argSpec->insert("name", arg.first); + argSpec->insert("in", "path"); + argSpec->insertBoolean("required", true); + auto schema = config->createDict(); + argSpec->insert("schema", schema); + schema->insert("type", "string"); + paramSpec->append(argSpec); + } + + // TODO Add security spec from access handlers + // TODO add response schemas + } +} + + +bool cb::API::API::operator()(HTTP::Request &req) { + auto ctx = SmartPtr(new Context(*this, req)); + ctx->setArgs(req.parseArgs()); + return operator()(ctx); +} diff --git a/src/cbang/api/API.h b/src/cbang/api/API.h new file mode 100644 index 000000000..20107ad31 --- /dev/null +++ b/src/cbang/api/API.h @@ -0,0 +1,160 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Config.h" +#include "HandlerGroup.h" + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include + + +namespace cb { + class Options; + + namespace API { + class API : public HTTP::RequestHandler, public HandlerGroup { + Options &options; + JSON::ValuePtr config; + + JSON::ValuePtr spec; + std::string category; + bool hideCategory = false; + + SmartPointer client; + SmartPointer oauth2Providers; + SmartPointer sessionManager; + SmartPointer connector; + SmartPointer procPool; + SmartPointer timeseriesDB; + JSON::ValuePtr optionValues; + + using RequestHandlerPtr = HTTP::RequestHandlerPtr; + std::map callbacks; + std::map args; + std::map queries; + std::map timeseries; + + public: + API(Options &options); + ~API(); + + const JSON::ValuePtr &getOptions() const {return optionValues;} + const JSON::ValuePtr &getConfig() const {return config;} + JSON::ValuePtr getSpec() const {return spec;} + const std::string &getCategory() const {return category;} + + void setClient(const SmartPointer &x) {client = x;} + void setOAuth2Providers(const SmartPointer &x) + {oauth2Providers = x;} + void setSessionManager(const SmartPointer &x) + {sessionManager = x;} + void setDBConnector(const SmartPointer &x) + {connector = x;} + void setProcPool(const SmartPointer &x) + {procPool = x;} + void setTimeseriesDB(const SmartPointer &x) + {timeseriesDB = x;} + + HTTP::Client &getClient() {return *client;} + OAuth2::Providers &getOAuth2Providers() {return *oauth2Providers;} + HTTP::SessionManager &getSessionManager() {return *sessionManager;} + MariaDB::Connector &getDBConnector() {return *connector;} + Event::SubprocessPool &getProcPool() {return *procPool;} + EventLevelDB &getTimeseriesDB() {return *timeseriesDB;} + + void load(const JSON::ValuePtr &config); + + void bind(const std::string &key, const RequestHandlerPtr &handler); + + template + void bind(const std::string &key, T *obj, METHOD_T method) { + bind(key, HTTP::RequestHandlerFactory::create(obj, method)); + } + + template + void bind(const std::string &key, METHOD_T method) { + bind(key, HTTP::RequestHandlerFactory::create(method)); + } + + static std::string resolve(const std::string &category, + const std::string &name); + std::string resolve(const std::string &name) const; + + void addArgs(const std::string &name, const JSON::ValuePtr &args); + const JSON::ValuePtr &getArgs(const std::string &name) const; + + void addQuery(const std::string &name, const HandlerPtr &handler); + HandlerPtr getQuery( + const std::string &category, const std::string &name) const; + HandlerPtr getQuery(const std::string &name) const; + HandlerPtr getQuery(const JSON::ValuePtr &config); + + void addTimeseries(const std::string &name, const HandlerPtr &handler); + HandlerPtr getTimeseries( + const std::string &category, const std::string &name) const; + HandlerPtr getTimeseries(const std::string &name) const; + + virtual std::string getEndpointType(const JSON::ValuePtr &config) const; + virtual JSON::ValuePtr getEndpointTypes( + const JSON::ValuePtr &config) const; + virtual HandlerPtr createEndpointHandler( + const JSON::ValuePtr &types, const CfgPtr &cfg); + virtual HandlerPtr wrapEndpoint( + const HandlerPtr &handler, const CfgPtr &cfg); + virtual HandlerPtr createMethodsHandler( + const std::string &methods, const CfgPtr &cfg); + virtual HandlerPtr createAPIHandler(const CfgPtr &cfg); + + virtual void addTagSpec( + const std::string &tag, const JSON::ValuePtr &config); + virtual void addToSpec(const std::string &methods, const CfgPtr &cfg); + + // From HTTP::RequestHandler + bool operator()(HTTP::Request &req) override; + + using HandlerGroup::operator(); + }; + } +} diff --git a/src/cbang/api/Config.cpp b/src/cbang/api/Config.cpp new file mode 100644 index 000000000..18bc86445 --- /dev/null +++ b/src/cbang/api/Config.cpp @@ -0,0 +1,89 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Config.h" + +#include +#include +#include +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +Config::Config(API &api, const JSON::ValuePtr &config, const string &pattern, + SmartPointer parent) : + api(api), config(config), pattern(pattern), parent(parent), + access(parent.isSet() ? parent->access : 0), + args(parent.isSet() ? parent->args : 0) { + + if (!config->isDict()) return; + + if (config->has("args")) { + args = args.isSet() ? new ArgDict(*args) : new ArgDict(api); + args->load(config->get("args")); + } + + if (config->has("allow") || config->has("deny")) { + access = access.isSet() ? + new HTTP::AccessHandler(*access) : new HTTP::AccessHandler; + access->read(config); + } +} + + +Config::~Config() {} + + +CfgPtr Config::createChild( + const JSON::ValuePtr &config, const string &pattern) { + return new Config(api, config, this->pattern + pattern, this); +} + + +HandlerPtr Config::addValidation(const HandlerPtr &_handler) const { + HandlerPtr handler = _handler; + + if (args.isSet()) handler = new ArgsHandler(*args, handler); + + if (access.isSet()) { + auto group = SmartPtr(new HandlerGroup); + group->add(new HTTPHandler(access)); + group->add(handler); + return group; + } + + return handler; +} diff --git a/src/cbang/api/Config.h b/src/cbang/api/Config.h new file mode 100644 index 000000000..0ecb095dc --- /dev/null +++ b/src/cbang/api/Config.h @@ -0,0 +1,74 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Handler.h" + +#include + +namespace cb { + namespace HTTP {class AccessHandler;} + + namespace API { + class API; + class ArgDict; + + class Config : public RefCounted { + API &api; + JSON::ValuePtr config; + std::string pattern; + SmartPointer parent; + + SmartPointer access; + SmartPointer args; + + public: + Config(API &api, const JSON::ValuePtr &config, + const std::string &pattern = "", SmartPointer parent = 0); + virtual ~Config(); + + const std::string &getPattern() const {return pattern;} + const JSON::ValuePtr &getConfig() const {return config;} + + const SmartPointer &getAccessHandler() const + {return access;} + const SmartPointer &getArgs() const {return args;} + + SmartPointer createChild( + const JSON::ValuePtr &config, const std::string &pattern = ""); + HandlerPtr addValidation(const HandlerPtr &handler) const; + }; + + using CfgPtr = SmartPointer; + } +} diff --git a/src/cbang/api/Context.cpp b/src/cbang/api/Context.cpp new file mode 100644 index 000000000..1ab12eeab --- /dev/null +++ b/src/cbang/api/Context.cpp @@ -0,0 +1,120 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Context.h" + +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +Context::Context(API &api, HTTP::Request &req) : + api(api), req(req), args(new JSON::Dict), resolver(new Resolver(api, req)) {} + + +Context::Context(API &api, const WebsocketPtr &ws) : + Context(api, ws->getRequest()) {this->ws = ws;} + + +void Context::reply(HTTP::Status code, const JSON::ValuePtr &msg) const { + reply(code, [&] (JSON::Sink &sink) {msg->write(sink);}); +} + + +void Context::reply(const JSON::ValuePtr &msg) const {reply(HTTP_OK, msg);} + + +void Context::reply( + HTTP::Status code, function cb) const { + + if (ws.isSet()) { + auto ref = resolver->select("msg.$ref"); + + if (ref.isNull()) ws->send(cb); + else ws->send([&] (JSON::Sink &sink) { + sink.beginDict(); + sink.insert("$ref", *ref); + sink.beginInsert("data"); + cb(sink); + sink.endDict(); + }); + + } else req.reply(code, cb); +} + + +void Context::reply(function cb) const { + reply(HTTP_OK, cb); +} + + +void Context::reply(HTTP::Status code, const string &text) const { + string msg = text.empty() ? code.toString() : text; + + if (ws.isNull()) req.reply(code, msg); + + else reply([&] (JSON::Sink &sink) { + sink.beginDict(); + sink.insert("error", code); + sink.insert("message", msg); + sink.endDict(); + }); +} + + +void Context::reply(const std::exception &e) const { + LOG_ERROR(e.what()); + reply(HTTP_INTERNAL_SERVER_ERROR, e.what()); +} + + +void Context::reply(const Exception &e) const { + if (400 <= e.getCode() && e.getCode() < 600) + LOG_WARNING("REQ" << req.getID() << ':' << req.getClientAddr() << ':' + << e.getMessages()); + + else { + if (!CBANG_LOG_DEBUG_ENABLED(3)) LOG_WARNING(e.getMessages()); + LOG_DEBUG(3, e); + } + + reply([&] (JSON::Sink &sink) {e.write(sink);}); +} + + +void Context::errorHandler(function cb) const { + try {cb();} + catch (Exception &e) {reply(e);} + catch (exception &e) {reply(e);} +} diff --git a/src/cbang/api/Context.h b/src/cbang/api/Context.h new file mode 100644 index 000000000..ae38a6620 --- /dev/null +++ b/src/cbang/api/Context.h @@ -0,0 +1,82 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include +#include + +#include + +namespace cb { + namespace API { + class API; + class Websocket; + + class Context : public cb::HTTP::Status::Enum { + API &api; + HTTP::Request &req; + WebsocketPtr ws; + JSON::ValuePtr args; + SmartPointer resolver; + + public: + Context(API &api, HTTP::Request &req); + Context(API &api, const WebsocketPtr &ws); + + HTTP::Request &getRequest() const {return req;} + const WebsocketPtr &getWebsocket() const {return ws;} + + const SmartPointer &getResolver() const {return resolver;} + void setResolver(const SmartPointer &resolver) + {this->resolver = resolver;} + + const JSON::ValuePtr &getArgs() const {return args;} + void setArgs(const JSON::ValuePtr &args) {this->args = args;} + + void reply(HTTP::Status code, const JSON::ValuePtr &msg) const; + void reply(const JSON::ValuePtr &msg) const; + void reply(HTTP::Status code, + std::function cb) const; + void reply(std::function cb) const; + void reply(HTTP::Status code = HTTP_OK, + const std::string &text = "") const; + void reply(const std::exception &e) const; + void reply(const Exception &e) const; + + void errorHandler(std::function cb) const; + }; + + using CtxPtr = SmartPointer; + } +} diff --git a/src/cbang/api/Handler.h b/src/cbang/api/Handler.h new file mode 100644 index 000000000..6fc02e2b1 --- /dev/null +++ b/src/cbang/api/Handler.h @@ -0,0 +1,49 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Context.h" + +#include + +namespace cb { + namespace API { + class Handler : public HTTP::Status::Enum { + public: + virtual ~Handler() {} + virtual bool operator()(const CtxPtr &ctx) = 0; + }; + + using HandlerPtr = SmartPointer; + } +} diff --git a/src/cbang/api/HandlerGroup.cpp b/src/cbang/api/HandlerGroup.cpp new file mode 100644 index 000000000..2573c4c94 --- /dev/null +++ b/src/cbang/api/HandlerGroup.cpp @@ -0,0 +1,51 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "HandlerGroup.h" + +using namespace std; +using namespace cb; +using namespace cb::API; + + +void HandlerGroup::add(const SmartPointer &handler) { + handlers.push_back(handler); +} + + +bool HandlerGroup::operator()(const CtxPtr &ctx) { + for (auto &handler: handlers) + if ((*handler)(ctx)) + return true; + + return false; +} diff --git a/src/cbang/api/HandlerGroup.h b/src/cbang/api/HandlerGroup.h new file mode 100644 index 000000000..995bdc478 --- /dev/null +++ b/src/cbang/api/HandlerGroup.h @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Handler.h" + +#include + +#include + +namespace cb { + namespace API { + class HandlerGroup : public Handler { + std::vector> handlers; + + public: + bool isEmpty() const {return handlers.empty();} + void add(const SmartPointer &handler); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/Headers.cpp b/src/cbang/api/Headers.cpp new file mode 100644 index 000000000..ec77a93ba --- /dev/null +++ b/src/cbang/api/Headers.cpp @@ -0,0 +1,56 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Headers.h" + +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +Headers::Headers(const JSON::ValuePtr &hdrs) { + for (auto e: hdrs->entries()) + add(e.key(), e->getString()); +} + + +void Headers::add(const string &key, const string &value) { + push_back(pair(String::trim(key), String::trim(value))); +} + + +void Headers::set(HTTP::Request &req) { + for (auto &p: *this) req.outSet(p.first, p.second); +} diff --git a/src/cbang/api/Headers.h b/src/cbang/api/Headers.h new file mode 100644 index 000000000..43e3ca081 --- /dev/null +++ b/src/cbang/api/Headers.h @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + +#include +#include +#include + + +namespace cb { + namespace API { + class Headers : public std::vector > { + public: + Headers() {} + Headers(const JSON::ValuePtr &hdrs); + + void add(const std::string &key, const std::string &value); + void set(HTTP::Request &req); + }; + } +} diff --git a/src/cbang/api/JSONResponse.cpp b/src/cbang/api/JSONResponse.cpp new file mode 100644 index 000000000..bfc255a23 --- /dev/null +++ b/src/cbang/api/JSONResponse.cpp @@ -0,0 +1,35 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "JSONResponse.h" + +using namespace cb::API; diff --git a/src/cbang/api/JSONResponse.h b/src/cbang/api/JSONResponse.h new file mode 100644 index 000000000..8dfc01d37 --- /dev/null +++ b/src/cbang/api/JSONResponse.h @@ -0,0 +1,53 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + +#include + + +namespace cb { + namespace API { + class JSONResponse : public JSON::ProxySink { + std::function cb; + + public: + JSONResponse( + const SmartPointer &target, std::function cb) : + JSON::ProxySink(target), cb(cb) {} + ~JSONResponse() {CBANG_TRY_CATCH_ERROR(cb());} + }; + } +} diff --git a/src/cbang/api/Login.cpp b/src/cbang/api/Login.cpp new file mode 100644 index 000000000..7b64d5831 --- /dev/null +++ b/src/cbang/api/Login.cpp @@ -0,0 +1,157 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Login.h" +#include "QueryDef.h" +#include "API.h" + +#include +#include +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +Login::Login(const QueryDef &def, callback_t cb, + const ResolverPtr &resolver, HTTP::Request &req, const string &provider, + const string &redirectURI) : Query(def, cb), resolver(resolver), + provider(provider), redirectURI(redirectURI), session(req.getSession()), + uri(req.getURI()) {} + + +void Login::loginComplete() { + auto origCB = cb; + + cb = [this, origCB] (HTTP::Status status, const JSON::ValuePtr &result) { + if (status == HTTP_OK) { + // Authenticate Session + session->addGroup("authenticated"); + + // Respond with session + return origCB(status, session); + } + + origCB(status, result); + }; + + if (def.sql.empty()) cb(HTTP_OK, 0); + else exec(resolver->resolve(def.getSQL(), true)); +} + + +void Login::login() { + if (provider == "none") return loginComplete(); + + // Get OAuth2 provider + auto oauth2 = def.api.getOAuth2Providers().get(provider); + if (oauth2.isNull() || !oauth2->isConfigured()) + return errorReply( + HTTP_BAD_REQUEST, "Unsupported login provider: " + provider); + + // Handle OAuth login response + if (uri.has("state")) { + if (!redirectURI.empty()) session->insert("redirect_uri", redirectURI); + auto self = SmartPtr(this); + auto cb = [self] (const JSON::ValuePtr &profile) { + self->processProfile(profile); + }; + return oauth2->verify(def.api.getClient(), *session, uri, cb); + } + + // Respond with Session ID and redirect URL + string sid = session->getID(); + URI redirect = oauth2->getRedirectURL(uri.getPath(), sid); + if (!redirectURI.empty()) { + redirect.set("redirect_uri", redirectURI); + session->insert("redirect_uri", redirectURI); + } + + sink.beginDict(); + sink.insert("id", sid); + sink.insert("redirect", redirect); + sink.endDict(); + + reply(HTTP_OK); +} + + +void Login::processProfile(const JSON::ValuePtr &profile) { + if (profile.isSet()) { + try { + string provider = profile->getString("provider"); + + // Fix up Facebook avatar + if (provider == "facebook") + profile->insert("avatar", "http://graph.facebook.com/" + + profile->getString("id") + "/picture?type=small"); + + // Fix up for GitHub name + if ((!profile->hasString("name") || + String::trim(profile->getString("name")).empty()) && + profile->hasString("login")) + profile->insert("name", profile->getString("login")); + + // Fill session + session->setUser(profile->getString("email")); + session->insert("provider", provider); + session->insert("provider_id", profile->getString("id")); + session->insert("name", profile->getString("name")); + session->insert("avatar", profile->getString("avatar")); + + return loginComplete(); + } CATCH_ERROR; + + LOG_ERROR("Invalid login profile: " << *profile); + } + + errorReply(HTTP_UNAUTHORIZED); +} + + +void Login::callback(state_t state) { + switch (state) { + case MariaDB::EventDB::EVENTDB_END_RESULT: resultCount++; break; + + case MariaDB::EventDB::EVENTDB_ROW: { + if (resultCount) session->addGroup(db->getString(0)); // Groups + else if (db->getField(1).isNumber()) // Session vars + session->insert(db->getString(0), db->getDouble(1)); + else session->insert(db->getString(0), db->getString(1)); + break; + } + + default: return returnOk(state); + } +} diff --git a/src/cbang/api/Login.h b/src/cbang/api/Login.h new file mode 100644 index 000000000..cd2163927 --- /dev/null +++ b/src/cbang/api/Login.h @@ -0,0 +1,71 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Query.h" +#include "Resolver.h" + +#include + + +namespace cb { + class URI; + + namespace API { + class API; + + class Login : public Query { + ResolverPtr resolver; + std::string provider; + std::string redirectURI; + + SmartPointer session; + URI uri; + unsigned resultCount = 0; + + public: + Login(const QueryDef &def, callback_t cb, const ResolverPtr &resolver, + HTTP::Request &req, const std::string &provider, + const std::string &redirectURI); + + void login(); + + protected: + void loginComplete(); + void processProfile(const JSON::ValuePtr &profile); + + // From Query + void callback(state_t state) override; + }; + } +} diff --git a/src/cbang/api/Query.cpp b/src/cbang/api/Query.cpp new file mode 100644 index 000000000..9de98c55f --- /dev/null +++ b/src/cbang/api/Query.cpp @@ -0,0 +1,287 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Query.h" +#include "QueryDef.h" + +#include + +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +Query::Query(const QueryDef &def, callback_t cb) : + def(def), cb(cb), db(def.getDBConnection()) { + if (!cb) THROW("Callback not set"); +} + + +void Query::exec(const string &sql) { + // Stay alive until DB callbacks are complete + auto self = SmartPtr(this); + auto cb = [self] (state_t state) {self->callback(state);}; + db->query(cb, sql); +} + + +Query::return_t Query::getReturnType(const string &name) { + if (name == "ok") return &Query::returnOk; + if (name == "hlist") return &Query::returnHList; + if (name == "list") return &Query::returnList; + if (name == "fields") return &Query::returnFields; + if (name == "dict") return &Query::returnDict; + if (name == "one") return &Query::returnOne; + if (name == "bool") return &Query::returnBool; + if (name == "u64") return &Query::returnU64; + if (name == "s64") return &Query::returnS64; + + THROW("Unsupported query return type '" << name << "'"); +} + + +void Query::callback(state_t state) { + auto retCB = getReturnType(def.ret); + (*this.*retCB)(state); +} + + +void Query::reply(HTTP::Status code) { + sink.close(); + cb(code, sink.getRoot()); +} + + +void Query::errorReply(HTTP::Status code, const string &msg) { + sink.reset(); + + sink.beginDict(); + sink.insert("error", msg.empty() ? code.toString() : msg); + if (code) sink.insert("code", code); + sink.endDict(); + + reply(code); +} + + +void Query::returnHList(MariaDB::EventDB::state_t state) { + if (state == MariaDB::EventDB::EVENTDB_ROW) { + if (!rowCount++) { + sink.beginList(); + + // Write list header + sink.appendList(); + for (unsigned i = 0; i < db->getFieldCount(); i++) + sink.append(db->getField(i).getName()); + sink.endList(); + } + + sink.beginAppend(); + db->writeRowList(sink); + + } else returnList(state); +} + + + +void Query::returnList(MariaDB::EventDB::state_t state) { + switch (state) { + case MariaDB::EventDB::EVENTDB_ROW: + if (!rowCount++) sink.beginList(); + + sink.beginAppend(); + + if (db->getFieldCount() == 1) db->writeField(sink, 0); + else db->writeRowDict(sink); + break; + + case MariaDB::EventDB::EVENTDB_DONE: + if (!rowCount) sink.beginList(); // Empty list + sink.endList(); + returnOk(state); + break; + + default: returnOk(state); break; + } +} + + +void Query::returnBool(MariaDB::EventDB::state_t state) { + if (checkOne(state)) sink.writeBoolean(db->getBoolean(0)); +} + + +void Query::returnU64(MariaDB::EventDB::state_t state) { + if (checkOne(state)) sink.write(db->getU64(0)); +} + + +void Query::returnS64(MariaDB::EventDB::state_t state) { + if (checkOne(state)) sink.write(db->getS64(0)); +} + + +void Query::returnFields(MariaDB::EventDB::state_t state) { + switch (state) { + case MariaDB::EventDB::EVENTDB_ROW: + if (!rowCount++) sink.beginDict(); + + if (!nextField.empty()) { + closeField = true; + if (nextField[0] == '*') { + if (nextField.length() != 1) sink.insertDict(nextField.substr(1)); + else closeField = false; + } else sink.insertList(nextField); + nextField.clear(); + } + + if (sink.inDict()) db->insertRow(sink, 0, -1, false); + + else if (db->getFieldCount() == 1) { + sink.beginAppend(); + db->writeField(sink, 0); + + } else { + sink.appendDict(); + db->insertRow(sink, 0, -1, false); + sink.endDict(); + } + break; + + case MariaDB::EventDB::EVENTDB_BEGIN_RESULT: { + closeField = false; + if (def.fields.isNull()) THROW("Fields cannot be null"); + if (currentField == def.fields->size()) THROW("Unexpected DB result"); + nextField = def.fields->getString(currentField++); + if (nextField.empty()) THROW("Empty field name"); + break; + } + + case MariaDB::EventDB::EVENTDB_END_RESULT: + if (closeField) sink.end(); + break; + + case MariaDB::EventDB::EVENTDB_DONE: + if (!rowCount) errorReply(HTTP_NOT_FOUND); + else { + sink.endDict(); + return returnOk(state); // Success + } + break; + + default: return returnOk(state); + } +} + + +void Query::returnDict(MariaDB::EventDB::state_t state) { + if (state == MariaDB::EventDB::EVENTDB_ROW) { + if (!rowCount++) db->writeRowDict(sink); + else returnOk(state); // Error + + } else checkOne(state); +} + + +void Query::returnOne(MariaDB::EventDB::state_t state) { + if (checkOne(state)) db->writeField(sink, 0); +} + + +bool Query::checkOne(MariaDB::EventDB::state_t state) { + switch (state) { + case MariaDB::EventDB::EVENTDB_ROW: + if (!rowCount++ && db->getFieldCount() == 1) return true; + returnOk(state); // Error + break; + + case MariaDB::EventDB::EVENTDB_DONE: + if (!rowCount) errorReply(HTTP_NOT_FOUND); + else returnOk(state); // Success + break; + + default: returnOk(state); + } + + return false; +} + + +void Query::returnOk(MariaDB::EventDB::state_t state) { + switch (state) { + case MariaDB::EventDB::EVENTDB_BEGIN_RESULT: break; + case MariaDB::EventDB::EVENTDB_END_RESULT: break; + case MariaDB::EventDB::EVENTDB_DONE: reply(); break; + case MariaDB::EventDB::EVENTDB_RETRY: sink.reset(); break; + + case MariaDB::EventDB::EVENTDB_ERROR: { + HTTP::Status error = HTTP_INTERNAL_SERVER_ERROR; + + switch (db->getErrorNumber()) { + case ER_SIGNAL_NOT_FOUND: case ER_FILE_NOT_FOUND: + error = HTTP_NOT_FOUND; + break; + + case ER_DUP_ENTRY: error = HTTP_CONFLICT; break; + case ER_SIGNAL_EXCEPTION: error = HTTP_BAD_REQUEST; break; + + case ER_ACCESS_DENIED_ERROR: case ER_DBACCESS_DENIED_ERROR: + error = HTTP_UNAUTHORIZED; + break; + + default: break; + } + + string errMsg = + SSTR("DB:" << db->getErrorNumber() << ": " << db->getError()); + errorReply(error, errMsg); + if (error == HTTP_INTERNAL_SERVER_ERROR) THROW(errMsg); + LOG_WARNING(errMsg); + + break; + } + + case MariaDB::EventDB::EVENTDB_ROW: { + string msg = + SSTR("DB row unexpected with query return type '" << def.ret << "'"); + LOG_ERROR(msg); + errorReply(HTTP_INTERNAL_SERVER_ERROR, msg); + break; + } + + default: + errorReply(HTTP_INTERNAL_SERVER_ERROR, "Unexpected DB response"); + THROW("Unexpected DB response: " << state); + } +} diff --git a/src/cbang/api/Query.h b/src/cbang/api/Query.h new file mode 100644 index 000000000..e8f492e6b --- /dev/null +++ b/src/cbang/api/Query.h @@ -0,0 +1,92 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include +#include +#include + + +namespace cb { + namespace API { + class API; + class QueryDef; + + class Query : public RefCounted, public HTTP::Status { + public: + using state_t = MariaDB::EventDB::state_t; + using return_t = void (Query::*)(state_t); + using callback_t = + std::function; + + protected: + const QueryDef &def; + callback_t cb; + + SmartPointer db; + + std::string nextField; + unsigned currentField = 0; + bool closeField = true; + unsigned rowCount = 0; + + JSON::Builder sink; + + public: + Query(const QueryDef &def, callback_t cb); + virtual ~Query() {} + + void exec(const std::string &sql); + static return_t getReturnType(const std::string &name); + + protected: + virtual void callback(state_t state); + + void reply(HTTP::Status code = HTTP_OK); + void errorReply(HTTP::Status code, const std::string &msg = ""); + + // MariaDB::EventDB callbacks + void returnHList (state_t state); + void returnList (state_t state); + void returnBool (state_t state); + void returnU64 (state_t state); + void returnS64 (state_t state); + void returnFields(state_t state); + void returnDict (state_t state); + void returnOne (state_t state); + bool checkOne (state_t state); + void returnOk (state_t state); + }; + } +} diff --git a/src/cbang/api/QueryDef.cpp b/src/cbang/api/QueryDef.cpp new file mode 100644 index 000000000..2c35843a0 --- /dev/null +++ b/src/cbang/api/QueryDef.cpp @@ -0,0 +1,72 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "QueryDef.h" +#include "API.h" +#include "Resolver.h" + +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +QueryDef::QueryDef(API &api, const JSON::ValuePtr &config) : + api(api), sql(String::trim(config->getString("sql", ""))) { + + if (sql.empty()) THROW("Query must have 'sql'"); + + if (config->hasList("fields")) fields = config->get("fields"); + ret = config->getString("return", fields.isNull() ? "ok" : "fields"); + Query::getReturnType(ret); // Check that return type is valid +} + + +SmartPointer QueryDef::getDBConnection() const { + return api.getDBConnector().getConnection(); +} + + +SmartPointer QueryDef::query( + const string &sql, Query::callback_t cb) const { + + auto query = SmartPtr(new Query(*this, cb)); + query->exec(sql); + return query; +} + + +SmartPointer QueryDef::query( + const ResolverPtr &resolver, Query::callback_t cb) const { + return query(resolver->resolve(sql, true), cb); +} diff --git a/src/cbang/api/QueryDef.h b/src/cbang/api/QueryDef.h new file mode 100644 index 000000000..0b2cb09a9 --- /dev/null +++ b/src/cbang/api/QueryDef.h @@ -0,0 +1,64 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Query.h" +#include "Resolver.h" + + +namespace cb { + namespace API { + class API; + + class QueryDef : public RefCounted { + public: + API &api; + std::string sql; + std::string ret; + JSON::ValuePtr fields; + + QueryDef(API &api, const JSON::ValuePtr &config); + virtual ~QueryDef() {} + + const std::string &getSQL() const {return sql;} + virtual SmartPointer getDBConnection() const; + + SmartPointer query(const std::string &sql, + Query::callback_t cb) const; + SmartPointer query(const ResolverPtr &resolver, + Query::callback_t cb) const; + }; + + using QueryDefPtr = SmartPointer; + } +} diff --git a/src/cbang/api/Resolver.cpp b/src/cbang/api/Resolver.cpp new file mode 100644 index 000000000..ee69352fd --- /dev/null +++ b/src/cbang/api/Resolver.cpp @@ -0,0 +1,146 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Resolver.h" +#include "API.h" + +#include +#include +#include +#include +#include +#include + +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +Resolver::Resolver(API &api) { + vars.insert("options", api.getOptions()); +} + + +Resolver::Resolver(API &api, const HTTP::Request &req) : Resolver(api) { + setSession(req.getSession()); +} + + +void Resolver::set(const string &key, const JSON::ValuePtr &values) { + vars.insert(key, values); +} + + +void Resolver::setSession(const SmartPointer &session) { + if (session.isSet()) { + set("session", session); + set("group", session->select("group")); + } +} + + +JSON::ValuePtr Resolver::select(const string &path) const { + if (path.empty()) return 0; + + // Return ``null`` if not found + if (path[0] == '~') { + auto result = select(path.substr(1)); + if (result.isNull()) return JSON::Null::instancePtr(); + return result; + } + + auto result = vars.select(path, 0); + if (result.isSet()) return result; + return parent.isSet() ? parent->select(path) : 0; +} + + +string Resolver::selectString(const string &path) const { + auto value = select(path); + if (value.isNull()) THROW("String value '" << path << "' not found"); + return value->asString(); +} + + +string Resolver::selectString( + const string &path, const string &defaultValue) const { + auto value = select(path); + return value.isNull() ? defaultValue : value->asString(); +} + + +uint64_t Resolver::selectU64(const string &path, uint64_t defaultValue) const { + auto value = select(path); + return value.isNull() ? defaultValue : value->getU64(); +} + + +uint64_t Resolver::selectTime(const string &path, uint64_t defaultValue) const { + auto value = select(path); + return value.isNull() ? defaultValue : Time::parse(value->asString()); +} + + +string Resolver::resolve(const string &s, bool sql) const { + auto cb = [&] (const string &id, const string &spec) -> string { + auto value = select(id); + + if (value.isSet()) { + if ((sql && spec.empty() && value->isString()) || spec == "S") + return MariaDB::DB::format(value->asString()); + + return value->formatAs(spec); + } + + if (sql) return "NULL"; + + return "{" + id + (spec.empty() ? string() : (":" + spec)) + "}"; + }; + + return String(s).format(cb); +} + + +void Resolver::resolve(JSON::Value &value, bool sql) const { + if (value.isString()) { + auto sPtr = dynamic_cast(&value); + if (!sPtr) THROW("Expected JSON::String"); + + string &s = sPtr->getValue(); + if (s.find('{') != string::npos) s = resolve(s, sql); + + } else if (value.isList() || value.isDict()) + for (auto e: value.entries()) + resolve(*e.value(), sql); +} diff --git a/src/cbang/api/Resolver.h b/src/cbang/api/Resolver.h new file mode 100644 index 000000000..11ed50821 --- /dev/null +++ b/src/cbang/api/Resolver.h @@ -0,0 +1,76 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + + +namespace cb { + namespace HTTP { + class Request; + class Session; + } + + namespace API { + class API; + class Resolver; + using ResolverPtr = SmartPointer; + + class Resolver : virtual public RefCounted { + SmartPointer parent; + JSON::Dict vars; + + public: + Resolver(const SmartPointer parent = 0) : parent(parent) {} + Resolver(API &api); + Resolver(API &api, const HTTP::Request &req); + virtual ~Resolver() {} + + void set(const std::string &key, const JSON::ValuePtr &values); + void setSession(const SmartPointer &session); + + virtual JSON::ValuePtr select(const std::string &path) const; + std::string selectString(const std::string &path) const; + std::string selectString( + const std::string &path, const std::string &defaultValue) const; + uint64_t selectU64(const std::string &path, uint64_t defaultValue) const; + uint64_t selectTime(const std::string &path, uint64_t defaultValue) const; + + std::string resolve(const std::string &s, bool sql = false) const; + void resolve(JSON::Value &value, bool sql = false) const; + }; + + using ResolverPtr = SmartPointer; + } +} diff --git a/src/cbang/api/SessionQuery.cpp b/src/cbang/api/SessionQuery.cpp new file mode 100644 index 000000000..c169a498f --- /dev/null +++ b/src/cbang/api/SessionQuery.cpp @@ -0,0 +1,58 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "SessionQuery.h" +#include "QueryDef.h" + +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +SessionQuery::SessionQuery( + const QueryDef &def, const SmartPointer &session, + callback_t cb) : Query(def, cb), session(session) {} + + +void SessionQuery::callback(state_t state) { + switch (state) { + case MariaDB::EventDB::EVENTDB_ROW: { + if (!session->hasString("user")) session->read(*db->getRowDict()); + else session->addGroup(db->getString(0)); + break; + } + + default: return returnOk(state); // For error handling + } +} diff --git a/src/cbang/api/SessionQuery.h b/src/cbang/api/SessionQuery.h new file mode 100644 index 000000000..daa258c15 --- /dev/null +++ b/src/cbang/api/SessionQuery.h @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Query.h" + +#include + + +namespace cb { + namespace API { + class SessionQuery : public Query { + SmartPointer session; + + public: + SessionQuery(const QueryDef &def, + const SmartPointer &session, callback_t cb); + + protected: + // From Query + void callback(state_t state) override; + }; + } +} diff --git a/src/cbang/api/Subscriber.cpp b/src/cbang/api/Subscriber.cpp new file mode 100644 index 000000000..a574ffaaf --- /dev/null +++ b/src/cbang/api/Subscriber.cpp @@ -0,0 +1,62 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Subscriber.h" +#include "Timeseries.h" + +#include + +using namespace cb; +using namespace cb::API; + + +Subscriber::~Subscriber() {TRY_CATCH_ERROR(timeseries->unsubscribe(id));} + + +void Subscriber::error(const SmartPointer &e) {cb(e, 0);} + + +void Subscriber::first(const JSON::ValuePtr &results) { + cb(0, results); + + for (auto result: pending) + cb(0, result); + + pending.clear(); + init = true; +} + + +void Subscriber::next(const JSON::ValuePtr &result) { + if (init) cb(0, result); + else pending.push_back(result); +} \ No newline at end of file diff --git a/src/cbang/api/Subscriber.h b/src/cbang/api/Subscriber.h new file mode 100644 index 000000000..a43e22272 --- /dev/null +++ b/src/cbang/api/Subscriber.h @@ -0,0 +1,66 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include + +#include +#include + +namespace cb { + namespace API { + class Timeseries; + + class Subscriber { + public: + using cb_t = std::function &err, const JSON::ValuePtr &data)>; + + protected: + cb_t cb; + SmartPointer timeseries; + uint64_t id; + bool init = true; + std::vector pending; + + public: + Subscriber(cb_t cb, const SmartPointer ×eries, + uint64_t id) : cb(cb), timeseries(timeseries), id(id) {} + ~Subscriber(); + + void error(const SmartPointer &e); + void first(const JSON::ValuePtr &results); + void next(const JSON::ValuePtr &results); + }; + } +} diff --git a/src/cbang/api/Timeseries.cpp b/src/cbang/api/Timeseries.cpp new file mode 100644 index 000000000..2258db939 --- /dev/null +++ b/src/cbang/api/Timeseries.cpp @@ -0,0 +1,132 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Timeseries.h" +#include "Subscriber.h" +#include "API.h" +#include "Resolver.h" + +#include +#include +#include + +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + +#undef CBANG_LOG_PREFIX +#define CBANG_LOG_PREFIX "TS:" << handler.name << ":" << key << ":" +#define TIME_FMT "%Y%m%d%H%M%S" + + +namespace { + JSON::ValuePtr makeEntry(uint64_t ts, const JSON::ValuePtr &value) { + JSON::ValuePtr d = new JSON::Dict; + d->insert("value", value); + d->insert("time", Time(ts).toString()); + return d; + } +} + + +Timeseries::Timeseries(TimeseriesHandler &handler, const string &key) : + handler(handler), key(key), db(handler.db.ns(key + "\0"s)) {} + + +void Timeseries::query(uint64_t since, unsigned maxResults, const cb_t &cb) { + auto _cb = [this, cb] ( + const EventLevelDB::Status &status, + const SmartPointer &results) { + if (!status.isOk()) return cb(status.getException(), 0); + + JSON::ValuePtr data = new JSON::List; + + for (auto &result: *results) { + auto time = Time::parse(result.first, TIME_FMT); + auto value = JSON::Reader::parse(result.second); + data->append(makeEntry(time, value)); + } + + LOG_DEBUG(5, data->size() << " results"); + + cb(0, data); + }; + + string last = since ? Time(since).toString(TIME_FMT) : "00000000000000"; + LOG_DEBUG(5, "getting max " << maxResults << " results since " << last); + db.range(_cb, "99999999999999", last, true, 0, maxResults); +} + + +void Timeseries::broadcast(uint64_t time, const JSON::ValuePtr &value) { + if (subscribers.empty()) return; + + auto entry = makeEntry(time, value); + for (auto p: subscribers) + if (p.second.isSet()) p.second->next(entry); +} + + +SmartPointer Timeseries::subscribe( + uint64_t id, uint64_t since, unsigned maxResults, const cb_t &cb) { + + auto it = subscribers.find(id); + if (it != subscribers.end() && it->second.isSet()) + THROWX("Timeseries already has subscriber with id " << id, + HTTP::Status::HTTP_CONFLICT); + + auto subscriber = SmartPtr(new Subscriber(cb, this, id)); + subscribers[id] = subscriber; // Save weak pointer + + auto _cb = [this, cb, id] (const SmartPointer &err, + const JSON::ValuePtr &results) { + + auto it = subscribers.find(id); + if (it != subscribers.end() && it->second.isSet()) { + if (err.isNull()) it->second->first(results); + else LOG_WARNING("Error loading data: " << *err); + } + }; + + query(since, maxResults, _cb); + + return subscriber; +} + + +void Timeseries::unsubscribe(uint64_t id) { + if (!subscribers.erase(id)) + THROWX("Timeseries does not have subscriber with id " << id, + HTTP::Status::HTTP_NOT_FOUND); +} diff --git a/src/cbang/api/Timeseries.h b/src/cbang/api/Timeseries.h new file mode 100644 index 000000000..ef02c84d5 --- /dev/null +++ b/src/cbang/api/Timeseries.h @@ -0,0 +1,74 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Subscriber.h" + +#include +#include + +#include + + +namespace cb { + namespace API { + class API; + class TimeseriesHandler; + + class Timeseries : public RefCounted { + public: + using cb_t = Subscriber::cb_t; + + protected: + TimeseriesHandler &handler; + std::string key; + EventLevelDB db; + JSON::ValuePtr last; + std::map::Weak> subscribers; + + public: + Timeseries(TimeseriesHandler &handler, const std::string &key); + + void query(uint64_t since, unsigned maxResults, const cb_t &cb); + void broadcast(uint64_t time, const JSON::ValuePtr &value); + + SmartPointer subscribe( + uint64_t id, uint64_t since, unsigned maxResults, const cb_t &cb); + void unsubscribe(uint64_t id); + + protected: + void query(uint64_t ts); + void query(); + }; + } +} diff --git a/src/cbang/api/Websocket.cpp b/src/cbang/api/Websocket.cpp new file mode 100644 index 000000000..79f5d118b --- /dev/null +++ b/src/cbang/api/Websocket.cpp @@ -0,0 +1,78 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Websocket.h" +#include "Subscriber.h" +#include "Timeseries.h" + +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +Websocket::~Websocket() {LOG_DEBUG(3, "~Websocket() ID " << getID());} + + +void Websocket::subscribe(Timeseries &ts, uint64_t since, + unsigned maxCount, Timeseries::cb_t cb) { + + auto _cb = [&, cb] (const SmartPointer &err, + const JSON::ValuePtr &data) { + try { + cb(err, data); + } catch (const Exception &e) { + unsubscribe(ts); // Cannot reply so unsubscribe + } + }; + + subscriptions[&ts] = ts.subscribe(getID(), since, maxCount, _cb); +} + + +void Websocket::unsubscribe(Timeseries ×eries) { + subscriptions.erase(×eries); +} + + +void Websocket::onShutdown() { + subscriptions.clear(); + handler.remove(*this); +} + + +void Websocket::onMessage(const JSON::ValuePtr &msg) { + LOG_DEBUG(3, "Websocket id=" << getID() << " msg=" << msg->toString()); + handler.onMessage(this, msg); +} diff --git a/src/cbang/api/Websocket.h b/src/cbang/api/Websocket.h new file mode 100644 index 000000000..37744acab --- /dev/null +++ b/src/cbang/api/Websocket.h @@ -0,0 +1,75 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Timeseries.h" + +#include + +#include + + +namespace cb { + namespace API { + class WebsocketHandler; + class Subscriber; + + class Websocket : public WS::JSONWebsocket { + WebsocketHandler &handler; + SmartPointer req; + std::map> subscriptions; + + public: + Websocket(WebsocketHandler &handler, HTTP::Request &req) : + handler(handler), req(&req) {} + virtual ~Websocket(); + + HTTP::Request &getRequest() const {return *req;} + + void subscribe(Timeseries ×eries, uint64_t since, unsigned maxCount, + Timeseries::cb_t cb); + void unsubscribe(Timeseries ×eries); + + using WS::Websocket::send; + using WS::JSONWebsocket::send; + + // From WS:Websocket + void onShutdown() override; + + // From WS:JSONWebsocket + void onMessage(const JSON::ValuePtr &msg) override; + }; + + using WebsocketPtr = SmartPointer; + } +} diff --git a/src/cbang/api/arg/ArgAuth.cpp b/src/cbang/api/arg/ArgAuth.cpp new file mode 100644 index 000000000..7e3d502f5 --- /dev/null +++ b/src/cbang/api/arg/ArgAuth.cpp @@ -0,0 +1,88 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "ArgAuth.h" + +#include +#include + +using namespace cb::API; +using namespace cb; +using namespace std; + + +namespace { + void unauthorized() { + THROWX("Unauthorized", HTTP::Status::HTTP_UNAUTHORIZED); + } +} + + +ArgAuth::ArgAuth(bool allow, const JSON::ValuePtr &config) : allow(allow) { + const char *type = allow ? "allow" : "deny"; + + for (auto &value: *config) { + string constraint = value->getString(); + if (constraint.empty()) THROW("Empty arg" << type << " constraint"); + + if (constraint[0] == '$') groups.push_back(constraint.substr(1)); + else if (constraint[0] == '=') + sessionVars.push_back(constraint.substr(1)); + else THROW("Invalid arg " << type << " constraint. Must start with " + "'$' for group or '=' for session variable."); + } +} + + +JSON::ValuePtr ArgAuth::operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const { + + auto session = ctx->getRequest().getSession(); + if (session.isNull()) unauthorized(); + + for (auto &group: groups) + if (session->getBoolean(group, false)) { + if (allow) return value; + unauthorized(); + } + + string s = value->asString(); + for (auto &var: sessionVars) + if (session->has(var) && session->getAsString(var) == s) { + if (allow) return value; + unauthorized(); + } + + if (allow) unauthorized(); + + return value; +} diff --git a/src/cbang/api/arg/ArgAuth.h b/src/cbang/api/arg/ArgAuth.h new file mode 100644 index 000000000..18af0ee41 --- /dev/null +++ b/src/cbang/api/arg/ArgAuth.h @@ -0,0 +1,55 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "ArgConstraint.h" + +#include + + +namespace cb { + namespace API { + class ArgAuth : public ArgConstraint { + bool allow; + std::vector groups; + std::vector sessionVars; + + public: + ArgAuth(bool allow, const JSON::ValuePtr &config); + + // From ArgConstraint + JSON::ValuePtr operator()(const CtxPtr &ctx, const JSON::ValuePtr &value) const override; + void addSchema(JSON::Value &schema) const override {} + }; + } +} diff --git a/src/cbang/api/arg/ArgBoolean.h b/src/cbang/api/arg/ArgBoolean.h new file mode 100644 index 000000000..671d6688e --- /dev/null +++ b/src/cbang/api/arg/ArgBoolean.h @@ -0,0 +1,61 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "ArgConstraint.h" + +#include + + +namespace cb { + namespace API { + class ArgBoolean : public ArgConstraint { + + public: + // From ArgConstraint + JSON::ValuePtr operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const override { + + if (value->isString() || value->isNumber()) + return value->createBoolean(value->toBoolean()); + else if (!value->isBoolean()) CBANG_THROW("Not a boolean"); + return value; + } + + + void addSchema(JSON::Value &schema) const override { + schema.insert("type", "boolean"); + } + }; + } +} diff --git a/src/cbang/api/arg/ArgConstraint.h b/src/cbang/api/arg/ArgConstraint.h new file mode 100644 index 000000000..134fe9e9b --- /dev/null +++ b/src/cbang/api/arg/ArgConstraint.h @@ -0,0 +1,51 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include + +#include +#include + + +namespace cb { + namespace API { + class ArgConstraint { + public: + virtual ~ArgConstraint() {} + virtual JSON::ValuePtr operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const = 0; + virtual void addSchema(JSON::Value &schema) const = 0; + }; + } +} diff --git a/src/cbang/api/arg/ArgDict.cpp b/src/cbang/api/arg/ArgDict.cpp new file mode 100644 index 000000000..cc12491fa --- /dev/null +++ b/src/cbang/api/arg/ArgDict.cpp @@ -0,0 +1,139 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "ArgDict.h" + +#include + +using namespace cb; +using namespace std; +using namespace cb::API; + + +void ArgDict::load(const JSON::ValuePtr &def) { + if (def->isString()) load(api.getArgs(def->getString())); + + else if (def->isList()) + for (auto &e: *def) + load(e); + + else if (def->isDict()) + for (auto e: def->entries()) + add(e.key(), e.value()); + + else THROW("Invalid arg def type " << def->getType()); +} + + +void ArgDict::add(const string &name, const JSON::ValuePtr &_arg) { + JSON::ValuePtr arg = _arg; + set inherited; + + if (!arg->isDict()) THROW("Arg def is not a dictionary: " << arg->toString()); + + while (arg->hasString("inherit")) { + auto parentName = arg->getString("inherit"); + if (!inherited.insert(parentName).second) + THROW("Recursive arg inheritance with arg '" << parentName << "'"); + + auto parent = api.getArgs(parentName); + auto tmp = arg->copy(); + tmp->erase("inherit"); + tmp->merge(*parent); + arg = tmp; + } + + validators[name] = new ArgValidator(api, arg); +} + + +void ArgDict::appendSpecs(JSON::Value &spec) const { + for (auto &p: validators) { + auto argSpec = p.second->getSpec(); + argSpec->insert("name", p.first); + spec.append(argSpec); + } +} + + +JSON::ValuePtr ArgDict::operator()( + const CtxPtr &ctx, const JSON::ValuePtr &args) const { + + if (!args->isDict()) THROWX("Invalid arguments", HTTP_BAD_REQUEST); + + JSON::ValuePtr result = new JSON::Dict; + vector errors; + + for (auto &p: validators) { + const ArgValidator &av = *p.second; + auto name = p.first; + auto source = av.hasSource() ? av.getSource() : name; + auto value = args->get(source, 0); + + if (value.isNull()) { + if (av.hasDefault()) result->insert(name, av.getDefault()); + else if (!av.isOptional()) + errors.push_back(SSTR("Missing argument '" << source << "'")); + + } else + try { + result->insert(name, av(ctx, value)); + + } catch (const Exception &ex) { + string msg = SSTR("Invalid argument '" << source << "'='" + << value->asString() << "' " << ex.getMessages()); + + if (ex.getCode() && ex.getCode() != HTTP_BAD_REQUEST) + THROWX(msg, ex.getCode()); + + errors.push_back(msg); + } + } + + if (!errors.empty()) THROWX(String::join(errors, ", "), HTTP_BAD_REQUEST); + + return result; +} + + +void ArgDict::addSchema(JSON::Value &schema) const { + schema.insert("type", "object"); + + auto props = schema.createDict(); + schema.insert("properties", props); + + for (auto &p: validators) { + auto propSchema = schema.createDict(); + props->insert(p.first, propSchema); + p.second->addSchema(*propSchema); + } +} diff --git a/src/cbang/api/arg/ArgDict.h b/src/cbang/api/arg/ArgDict.h new file mode 100644 index 000000000..00b58b358 --- /dev/null +++ b/src/cbang/api/arg/ArgDict.h @@ -0,0 +1,62 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "ArgValidator.h" + +#include + +#include + + +namespace cb { + namespace API { + class ArgDict : public ArgConstraint, public HTTP::Enum { + API &api; + std::map > validators; + + public: + ArgDict(API &api) : api(api) {} + ArgDict(API &api, const JSON::ValuePtr &def) : api(api) {load(def);} + + void load(const JSON::ValuePtr &def); + void add(const std::string &name, const JSON::ValuePtr &arg); + void appendSpecs(JSON::Value &spec) const; + + // From ArgConstraint + JSON::ValuePtr operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const override; + void addSchema(JSON::Value &schema) const override; + }; + } +} diff --git a/src/cbang/api/arg/ArgEnum.cpp b/src/cbang/api/arg/ArgEnum.cpp new file mode 100644 index 000000000..fbb0d883d --- /dev/null +++ b/src/cbang/api/arg/ArgEnum.cpp @@ -0,0 +1,64 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "ArgEnum.h" + +#include + +using namespace cb::API; +using namespace cb; +using namespace std; + + +ArgEnum::ArgEnum(const JSON::ValuePtr &config) : + values(config->get("enum")) { + if (!values->isList()) THROW("Arg enum must be list"); +} + + +JSON::ValuePtr ArgEnum::operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const { + + for (auto v: *values) + if (*v == *value) return value; + + THROW("Must be one of: " << values->toString()); +} + + +void ArgEnum::addSchema(JSON::Value &schema) const { + schema.insert("type", "string"); + + JSON::ValuePtr list = new JSON::List; + for (auto v: *values) list->append(v); + schema.insert("enum", list); +} diff --git a/src/cbang/api/arg/ArgEnum.h b/src/cbang/api/arg/ArgEnum.h new file mode 100644 index 000000000..7f749c4f9 --- /dev/null +++ b/src/cbang/api/arg/ArgEnum.h @@ -0,0 +1,56 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "ArgConstraint.h" + +#include + +#include + + +namespace cb { + namespace API { + class ArgEnum : public ArgConstraint { + JSON::ValuePtr values; + + public: + ArgEnum(const JSON::ValuePtr &config); + + // From ArgConstraint + JSON::ValuePtr operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const override; + void addSchema(JSON::Value &schema) const override; + }; + } +} diff --git a/src/cbang/api/arg/ArgMaxLength.h b/src/cbang/api/arg/ArgMaxLength.h new file mode 100644 index 000000000..76f931f6f --- /dev/null +++ b/src/cbang/api/arg/ArgMaxLength.h @@ -0,0 +1,63 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "ArgConstraint.h" + +#include + + +namespace cb { + namespace API { + class ArgMaxLength : public ArgConstraint { + unsigned max; + + public: + ArgMaxLength(const JSON::ValuePtr &config) : + max(config->getU32("max")) {} + + // From ArgConstraint + JSON::ValuePtr operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const override { + if (max < value->asString().length()) + CBANG_THROW("Must be no more than " << max << " chars long"); + return value; + } + + + void addSchema(JSON::Value &schema) const override { + schema.insert("maxLength", max); + } + }; + } +} diff --git a/src/cbang/api/arg/ArgMinLength.h b/src/cbang/api/arg/ArgMinLength.h new file mode 100644 index 000000000..cb9045a78 --- /dev/null +++ b/src/cbang/api/arg/ArgMinLength.h @@ -0,0 +1,63 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "ArgConstraint.h" + +#include + + +namespace cb { + namespace API { + class ArgMinLength : public ArgConstraint { + unsigned min; + + public: + ArgMinLength(const JSON::ValuePtr &config) : + min(config->getU32("min")) {} + + // From ArgConstraint + JSON::ValuePtr operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const override { + if (value->asString().length() < min) + CBANG_THROW("Must be at least " << min << " chars long"); + return value; + } + + + void addSchema(JSON::Value &schema) const override { + schema.insert("minLength", min); + } + }; + } +} diff --git a/src/cbang/api/arg/ArgNumber.h b/src/cbang/api/arg/ArgNumber.h new file mode 100644 index 000000000..9237d36f6 --- /dev/null +++ b/src/cbang/api/arg/ArgNumber.h @@ -0,0 +1,121 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "ArgConstraint.h" + +#include +#include + +#include + + +namespace cb { + namespace API { + template + class ArgNumber : public ArgConstraint { + double min; + double max; + + public: + ArgNumber(const JSON::ValuePtr &config) : + min(config->getNumber("min", NAN)), + max(config->getNumber("max", NAN)) {} + + const char *getFormat() const; + + // From ArgConstraint + JSON::ValuePtr operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const override { + T n; + + if (value->isNumber()) n = (T)value->getNumber(); + else if (value->isString()) + n = String::parse(value->getString(), true); + else CBANG_THROW("Must be a number or string"); + + if (!std::isnan(min) && n < (T)min) + CBANG_THROW("Must be greater than or equal to " << (T)min); + if (!std::isnan(max) && (T)max < n) + CBANG_THROW("Must be less than or equal to " << (T)max); + + if (value->isNumber()) { + double x = value->getNumber(); + + if (x < (double)std::numeric_limits::lowest()) + CBANG_THROW("Less than minimum value " << + (double)std::numeric_limits::lowest() + << " for numeric type"); + + if ((double)std::numeric_limits::max() < x) + CBANG_THROW("Greater than maximum value " + << (double)std::numeric_limits::max() + << " for numeric type"); + } + + return value->create(n); + } + + + void addSchema(JSON::Value &schema) const override { + schema.insert("type", "number"); + schema.insert("format", getFormat()); + + if (!std::isnan(min)) schema.insert("minimum", min); + if (!std::isnan(max)) schema.insert("maximum", max); + } + }; + + + template<> + const char *ArgNumber::getFormat() const {return "double";} + template<> + const char *ArgNumber::getFormat() const {return "float";} + template<> + const char *ArgNumber::getFormat() const {return "int64";} + template<> + const char *ArgNumber::getFormat() const {return "uint64";} + template<> + const char *ArgNumber::getFormat() const {return "int32";} + template<> + const char *ArgNumber::getFormat() const {return "uint32";} + template<> + const char *ArgNumber::getFormat() const {return "int16";} + template<> + const char *ArgNumber::getFormat() const {return "uint16";} + template<> + const char *ArgNumber::getFormat() const {return "int8";} + template<> + const char *ArgNumber::getFormat() const {return "uint8";} + } +} diff --git a/src/cbang/api/arg/ArgPattern.cpp b/src/cbang/api/arg/ArgPattern.cpp new file mode 100644 index 000000000..6f21d9d16 --- /dev/null +++ b/src/cbang/api/arg/ArgPattern.cpp @@ -0,0 +1,50 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "ArgPattern.h" + +using namespace cb::API; +using namespace cb; +using namespace std; + + +JSON::ValuePtr ArgPattern::operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const { + if (!regex.match(value->asString())) + THROW("Must match regex pattern: " << regex.toString()); + return value; +} + + +void ArgPattern::addSchema(JSON::Value &schema) const { + schema.insert("pattern", regex.toString()); +} diff --git a/src/cbang/api/arg/ArgPattern.h b/src/cbang/api/arg/ArgPattern.h new file mode 100644 index 000000000..a21f5e547 --- /dev/null +++ b/src/cbang/api/arg/ArgPattern.h @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "ArgConstraint.h" + +#include + + +namespace cb { + namespace API { + class ArgPattern : public ArgConstraint { + Regex regex; + + public: + ArgPattern(const std::string &pattern) : regex(pattern) {} + + // From ArgConstraint + JSON::ValuePtr operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const override; + void addSchema(JSON::Value &schema) const override; + }; + } +} diff --git a/src/cbang/api/arg/ArgURI.h b/src/cbang/api/arg/ArgURI.h new file mode 100644 index 000000000..d0d95279f --- /dev/null +++ b/src/cbang/api/arg/ArgURI.h @@ -0,0 +1,56 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "ArgConstraint.h" + +#include + + +namespace cb { + namespace API { + class ArgURI : public ArgConstraint { + public: + // From ArgConstraint + JSON::ValuePtr operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const override { + URI(value->asString()); + return value; + } + + + void addSchema(JSON::Value &schema) const override { + } + }; + } +} diff --git a/src/cbang/api/arg/ArgValidator.cpp b/src/cbang/api/arg/ArgValidator.cpp new file mode 100644 index 000000000..99e842227 --- /dev/null +++ b/src/cbang/api/arg/ArgValidator.cpp @@ -0,0 +1,176 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "ArgValidator.h" + +#include "ArgDict.h" +#include "ArgPattern.h" +#include "ArgEnum.h" +#include "ArgNumber.h" +#include "ArgMinLength.h" +#include "ArgMaxLength.h" +#include "ArgBoolean.h" +#include "ArgAuth.h" +#include "ArgURI.h" + +#include + + +using namespace cb::API; +using namespace cb; +using namespace std; + + +#define EMAIL_CHARS "\\w!#$%&*+/=?^`{|}~-" +#define EMAIL_RE \ + "^[" EMAIL_CHARS "][." EMAIL_CHARS "]*@[." EMAIL_CHARS "]*[" EMAIL_CHARS "]$" + +#define DATE_RE "\\d{4}-\\d{2}-\\d{2}" +#define TIME_RE "\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,6})?" +#define ZONE_RE "(Z|([+-]\\d{2}:\\d{2}))" +#define ISO8601_RE DATE_RE "T" TIME_RE ZONE_RE + + +ArgValidator::ArgValidator(API &api, const JSON::ValuePtr &config) : + api(api), config(config), defaultValue(config->get("default", 0)), + source(config->getString("source", "")) { + + optional = config->getBoolean("optional", defaultValue.isSet()); + if (!optional && defaultValue.isSet()) + THROW("It does not make sense for a required option to have a default"); + + type = config->getString("type", ""); + + // Implicit types + if (type.empty()) { + if (config->has("dict")) type = "dict"; + else if (config->has("enum")) type = "enum"; + else type = "string"; + + config->insert("type", type); + } + + if (type == "dict") add(new ArgDict(api, config->get("dict"))); + else if (type == "enum") add(new ArgEnum(config)); + else if (type == "number") add(new ArgNumber(config)); + else if (type == "float") add(new ArgNumber(config)); + else if (type == "int") add(new ArgNumber(config)); + else if (type == "s64") add(new ArgNumber(config)); + else if (type == "u64") add(new ArgNumber(config)); + else if (type == "s32") add(new ArgNumber(config)); + else if (type == "u32") add(new ArgNumber(config)); + else if (type == "s16") add(new ArgNumber(config)); + else if (type == "u16") add(new ArgNumber(config)); + else if (type == "s8") add(new ArgNumber(config)); + else if (type == "u8") add(new ArgNumber(config)); + else if (type == "bool") add(new ArgBoolean); + else if (type == "email") add(new ArgPattern(EMAIL_RE)); + else if (type == "time") add(new ArgPattern(ISO8601_RE)); + else if (type == "date") add(new ArgPattern(DATE_RE)); + else if (type == "uri") add(new ArgURI); + else if (type != "string") + THROW("Unsupported argument type '" << type << "'"); + + if (type == "string" || type == "email" || type == "uri") { + if (config->hasNumber("min")) add(new ArgMinLength(config)); + if (config->hasNumber("max")) add(new ArgMaxLength(config)); + } + + if (config->has("pattern")) add(new ArgPattern(config->getString("pattern"))); + if (config->has("allow")) add(new ArgAuth(true, config->get("allow"))); + if (config->has("deny")) add(new ArgAuth(false, config->get("deny"))); +} + + +JSON::ValuePtr ArgValidator::getSpec() const { + JSON::ValuePtr spec = new JSON::Dict; + + if (config->hasString("help")) + spec->insert("description", config->get("help")); + if (!isOptional()) spec->insertBoolean("required", true); + + spec->insert("schema", getSchema()); + + return spec; +} + + +JSON::ValuePtr ArgValidator::getSchema() const { + JSON::ValuePtr schema = new JSON::Dict; + + addSchema(*schema); + + if (type == "email") { + schema->insert("type", "string"); + schema->insert("format", "email"); + schema->insert("pattern", EMAIL_RE); + + } else if (type == "time") { + schema->insert("type", "string"); + schema->insert("format", "date-time"); + schema->insert("pattern", ISO8601_RE); + + } else if (type == "date") { + schema->insert("type", "string"); + schema->insert("format", "date"); + schema->insert("pattern", DATE_RE); + + } else if (type == "uri") { + schema->insert("type", "string"); + schema->insert("format", "uri"); + + } else if (type == "string") + schema->insert("type", "string"); + + return schema; +} + + +void ArgValidator::add(const SmartPointer &constraint) { + constraints.push_back(constraint); +} + + +JSON::ValuePtr ArgValidator::operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const { + auto v = value; + + for (auto &c: constraints) + v = (*c)(ctx, v); + + return v; +} + + +void ArgValidator::addSchema(JSON::Value &schema) const { + for (auto &c: constraints) c->addSchema(schema); +} diff --git a/src/cbang/api/arg/ArgValidator.h b/src/cbang/api/arg/ArgValidator.h new file mode 100644 index 000000000..12bc95955 --- /dev/null +++ b/src/cbang/api/arg/ArgValidator.h @@ -0,0 +1,74 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "ArgConstraint.h" + +#include +#include + + +namespace cb { + namespace Event {class Request;} + + namespace API { + class ArgValidator : public ArgConstraint { + API &api; + JSON::ValuePtr config; + bool optional = false; + JSON::ValuePtr defaultValue; + std::string type; + std::string source; + std::vector > constraints; + + public: + ArgValidator(API &api, const JSON::ValuePtr &config); + + bool isOptional() const {return optional;} + bool hasDefault() const {return !defaultValue.isNull();} + const JSON::ValuePtr &getDefault() const {return defaultValue;} + JSON::ValuePtr getSpec() const; + JSON::ValuePtr getSchema() const; + + bool hasSource() const {return !source.empty();} + const std::string &getSource() const {return source;} + + void add(const SmartPointer &constraint); + + // From ArgConstraint + JSON::ValuePtr operator()( + const CtxPtr &ctx, const JSON::ValuePtr &value) const override; + void addSchema(JSON::Value &schema) const override; + }; + } +} diff --git a/src/cbang/api/handler/ArgFilterHandler.cpp b/src/cbang/api/handler/ArgFilterHandler.cpp new file mode 100644 index 000000000..984ebad0e --- /dev/null +++ b/src/cbang/api/handler/ArgFilterHandler.cpp @@ -0,0 +1,59 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "ArgFilterHandler.h" +#include "ArgFilterProcess.h" + +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +ArgFilterHandler::ArgFilterHandler( + API &api, const JSON::ValuePtr &config, const SmartPointer &child) : + api(api), child(child) { + + if (config->isString()) Subprocess::parse(config->toString(), cmd); + else { + if (!config->isList()) THROW("Invalid arg-filter config"); + for (auto &v: *config) cmd.push_back(v->asString()); + } +} + + +bool ArgFilterHandler::operator()(const CtxPtr &ctx) { + auto &pool = api.getProcPool(); + pool.enqueue(new ArgFilterProcess(pool.getBase(), child, cmd, ctx)); + return true; +} diff --git a/src/cbang/api/handler/ArgFilterHandler.h b/src/cbang/api/handler/ArgFilterHandler.h new file mode 100644 index 000000000..987083d38 --- /dev/null +++ b/src/cbang/api/handler/ArgFilterHandler.h @@ -0,0 +1,57 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include + +#include + + +namespace cb { + namespace API { + class API; + + class ArgFilterHandler : public Handler { + API &api; + SmartPointer child; + std::vector cmd; + + public: + ArgFilterHandler(API &api, const JSON::ValuePtr &config, + const SmartPointer &child); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/ArgFilterProcess.cpp b/src/cbang/api/handler/ArgFilterProcess.cpp new file mode 100644 index 000000000..0f65b7747 --- /dev/null +++ b/src/cbang/api/handler/ArgFilterProcess.cpp @@ -0,0 +1,98 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "ArgFilterProcess.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace cb; +using namespace Event; +using namespace cb::API; + + +void ArgFilterProcess::exec() { + Subprocess::exec(cmd, Subprocess::SHELL | Subprocess::REDIR_STDERR | + Subprocess::REDIR_STDOUT | Subprocess::REDIR_STDIN); + + // Make pipes non-blocking + for (unsigned i = 0; i < 3; i++) + getPipe(i).setBlocking(false); + + inStr = new PipeEventBuffer(base, getPipeIn(), Enum::EVENT_WRITE); + outStr = new PipeEventBuffer(base, getPipeOut(), Enum::EVENT_READ); + errStr = new StreamLogger( + base, getPipeErr(), SSTR("PID:" << getPID() << ':'), + CBANG_LOG_DOMAIN, CBANG_LOG_WARNING_LEVEL); + + inStr->add(ctx->getArgs()->toString()); + inStr->write(); +} + + +void ArgFilterProcess::done() { + try { + outStr->read(); + errStr->flush(); + + string output = outStr->toString(); + if (output.empty()) THROW("No output from arg-filter"); + + auto results = JSON::Reader::parse(output); + unsigned code = results->getU32("code", 200); + + if (code == 200) { + if (results->hasDict("data")) + ctx->getArgs()->merge(results->getDict("data")); + + ctx->errorHandler([&] { + if (!(*child)(ctx)) ctx->reply(HTTP::Status::HTTP_NOT_FOUND); + }); + return; + } + + if (results->hasString("error")) LOG_WARNING(results->getString("error")); + ctx->reply((HTTP::Status::enum_t)code); + return; + + } CATCH_ERROR; + + ctx->reply(HTTP::Enum::HTTP_INTERNAL_SERVER_ERROR); +} diff --git a/src/cbang/api/handler/ArgFilterProcess.h b/src/cbang/api/handler/ArgFilterProcess.h new file mode 100644 index 000000000..9171c5088 --- /dev/null +++ b/src/cbang/api/handler/ArgFilterProcess.h @@ -0,0 +1,75 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include +#include +#include + +#include + + +namespace cb { + namespace Event { + class Base; + class Request; + } + + namespace API { + class Context; + class Handler; + + class ArgFilterProcess : public Event::AsyncSubprocess { + Event::Base &base; + SmartPointer child; + std::vector cmd; + const CtxPtr &ctx; + + SmartPointer inStr; + SmartPointer outStr; + SmartPointer errStr; + + public: + ArgFilterProcess( + Event::Base &base, + SmartPointer child, + const std::vector &cmd, const CtxPtr &ctx) : + base(base), child(child), cmd(cmd), ctx(ctx) {} + + // From AsyncSubprocess + void exec() override; + void done() override; + }; + } +} diff --git a/src/cbang/api/handler/ArgsHandler.cpp b/src/cbang/api/handler/ArgsHandler.cpp new file mode 100644 index 000000000..9201619b2 --- /dev/null +++ b/src/cbang/api/handler/ArgsHandler.cpp @@ -0,0 +1,49 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "ArgsHandler.h" + +#include + +using namespace cb; +using namespace cb::API; + + +bool ArgsHandler::operator()(const CtxPtr &ctx) { + CtxPtr childCtx = new Context(*ctx); + + auto resolver = SmartPtr(new Resolver(ctx->getResolver())); + resolver->set("args", validator(ctx, ctx->getArgs())); + childCtx->setResolver(resolver); + + return child->operator()(childCtx); +} diff --git a/src/cbang/api/handler/ArgsHandler.h b/src/cbang/api/handler/ArgsHandler.h new file mode 100644 index 000000000..0e877f934 --- /dev/null +++ b/src/cbang/api/handler/ArgsHandler.h @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + + +namespace cb { + namespace API { + class ArgsHandler : public Handler { + ArgDict validator; + SmartPointer child; + + public: + ArgsHandler( + const ArgDict &validator, const SmartPointer &child) : + validator(validator), child(child) {} + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/CORSHandler.cpp b/src/cbang/api/handler/CORSHandler.cpp new file mode 100644 index 000000000..7534abc12 --- /dev/null +++ b/src/cbang/api/handler/CORSHandler.cpp @@ -0,0 +1,106 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "CORSHandler.h" + +#include +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +CORSHandler::CORSHandler(const JSON::ValuePtr &config) : + Headers(config->get("headers", new JSON::Dict)) { + + // Explicit origins + if (config->has("origins")) + for (auto &v: *config->get("origins")) + origins.insert(String::toLower(v->getString())); + + // Origin regex patterns + if (config->has("patterns")) + for (auto &v: *config->get("patterns")) + patterns.push_back(v->getString()); + + // Add defaults + auto hdrs = config->get("headers", new JSON::Dict); + + const char *name = "Access-Control-Allow-Origin"; + if (config->has("origin") && !hdrs->has(name)) + add(name, config->getAsString("origin")); + + name = "Access-Control-Allow-Methods"; + if (!hdrs->has(name)) + add(name, config->getString("methods", "POST,PUT,GET,OPTIONS,DELETE")); + + name = "Access-Control-Allow-Headers"; + if (!hdrs->has(name)) + add(name, "DNT,User-Agent,X-Requested-With,If-Modified-Since," + "Cache-Control,Content-Type,Range,Set-Cookie,Authorization"); + + name = "Access-Control-Allow-Credentials"; + if (config->getBoolean("credentials", false) && !hdrs->has(name)) + add(name, "true"); + + name = "Access-Control-Max-Age"; + if (config->has("max-age") && !hdrs->has(name)) + add(name, config->getAsString("max-age")); +} + + +bool CORSHandler::operator()(const CtxPtr &ctx) { + // Add headers + Headers::set(ctx->getRequest()); + + // Copy Origin if it matches + auto &req = ctx->getRequest(); + if (req.inHas("Origin")) { + string origin = String::toLower(req.inGet("Origin")); + + bool match = origins.find(origin) != origins.end(); + for (auto &pattern: patterns) + if (match || (match = pattern.match(origin))) break; + + if (match) req.outSet("Access-Control-Allow-Origin", req.inGet("Origin")); + } + + // OPTIONS are done here + if (req.getMethod() == HTTP::Method::HTTP_OPTIONS) { + req.reply(); + return true; + } + + return false; +} diff --git a/src/cbang/api/handler/CORSHandler.h b/src/cbang/api/handler/CORSHandler.h new file mode 100644 index 000000000..19f87ea4c --- /dev/null +++ b/src/cbang/api/handler/CORSHandler.h @@ -0,0 +1,57 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include +#include +#include +#include + +#include + + +namespace cb { + namespace API { + class CORSHandler : public Handler, public Headers { + std::set origins; + std::vector patterns; + + public: + CORSHandler(const JSON::ValuePtr &config); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/HTTPHandler.cpp b/src/cbang/api/handler/HTTPHandler.cpp new file mode 100644 index 000000000..c7678ef2f --- /dev/null +++ b/src/cbang/api/handler/HTTPHandler.cpp @@ -0,0 +1,41 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "HTTPHandler.h" + +using namespace cb; +using namespace cb::API; + + +bool HTTPHandler::operator()(const CtxPtr &ctx) { + return child->operator()(ctx->getRequest()); +} diff --git a/src/cbang/event/HTTPHandler.h b/src/cbang/api/handler/HTTPHandler.h similarity index 75% rename from src/cbang/event/HTTPHandler.h rename to src/cbang/api/handler/HTTPHandler.h index 2ce0cc477..cbce20e35 100644 --- a/src/cbang/event/HTTPHandler.h +++ b/src/cbang/api/handler/HTTPHandler.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,18 +32,20 @@ #pragma once -#include "HTTPRequestHandler.h" - -struct evhttp_request; +#include +#include namespace cb { - namespace Event { - struct HTTPHandler { - virtual ~HTTPHandler() {} - virtual Request *createRequest(evhttp_request *) = 0; - virtual bool handleRequest(Request &req) = 0; - virtual void endRequest(Request *) = 0; + namespace API { + class HTTPHandler : public Handler { + SmartPointer child; + public: + HTTPHandler(const SmartPointer &child) : + child(child) {} + + // From Handler + bool operator()(const CtxPtr &ctx) override; }; } } diff --git a/src/cbang/api/handler/HeadersHandler.h b/src/cbang/api/handler/HeadersHandler.h new file mode 100644 index 000000000..b54393b13 --- /dev/null +++ b/src/cbang/api/handler/HeadersHandler.h @@ -0,0 +1,53 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + + +namespace cb { + namespace API { + class HeadersHandler : public Handler, public Headers { + public: + HeadersHandler() {} + HeadersHandler(const JSON::ValuePtr &config) : Headers(config) {} + + // From Handler + bool operator()(const CtxPtr &ctx) override { + set(ctx->getRequest()); + return false; + } + }; + } +} diff --git a/src/cbang/api/handler/LoginHandler.cpp b/src/cbang/api/handler/LoginHandler.cpp new file mode 100644 index 000000000..d13b99323 --- /dev/null +++ b/src/cbang/api/handler/LoginHandler.cpp @@ -0,0 +1,93 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "LoginHandler.h" + +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +LoginHandler::LoginHandler(API &api, const JSON::ValuePtr &config) : + QueryHandler(api, config), provider(config->getString("provider", "")), + redirect(config->getString("redirect", "")) {} + + +void LoginHandler::reportSession(const CtxPtr &ctx) { + auto session = ctx->getRequest().getSession(); + + if (session.isNull() || !session->hasGroup("authenticated")) + ctx->reply(HTTP_UNAUTHORIZED, "Not logged in"); + + else ctx->reply(session); // Respond with session JSON +} + + +void LoginHandler::listProviders(const CtxPtr &ctx) { + ctx->reply([&] (JSON::Sink &sink) { + auto &providers = api.getOAuth2Providers(); + + sink.beginList(); + for (auto &p: providers) + if (p.second->isConfigured()) sink.append(p.first); + sink.endList(); + }); +} + + +bool LoginHandler::operator()(const CtxPtr &ctx) { + auto resolver = ctx->getResolver(); + string provider = resolver->selectString("provider", ""); + string redirectURI = resolver->selectString("redirect_uri", ""); + + if (!this->provider.empty()) provider = this->provider; + + if (provider.empty()) reportSession(ctx); + else if (provider == "providers") listProviders(ctx); + + else { + auto cb = [this, ctx] (HTTP::Status status, const JSON::ValuePtr &result) { + // Respond with JSON or redirect + if (status != HTTP_OK || redirect.empty()) reply(ctx, status, result); + else ctx->getRequest().redirect(redirect); + }; + + auto login = SmartPtr(new Login( + *queryDef, cb, resolver, ctx->getRequest(), provider, redirectURI)); + login->login(); + } + + return true; +} diff --git a/src/cbang/api/handler/LoginHandler.h b/src/cbang/api/handler/LoginHandler.h new file mode 100644 index 000000000..9c48aefe8 --- /dev/null +++ b/src/cbang/api/handler/LoginHandler.h @@ -0,0 +1,58 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "QueryHandler.h" + +#include + + +namespace cb { + namespace API { + class API; + + class LoginHandler : public QueryHandler { + std::string provider; + std::string redirect; + + public: + LoginHandler(API &api, const JSON::ValuePtr &config); + + void reportSession(const CtxPtr &ctx); + void listProviders(const CtxPtr &ctx); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/LogoutHandler.cpp b/src/cbang/api/handler/LogoutHandler.cpp new file mode 100644 index 000000000..e80244e18 --- /dev/null +++ b/src/cbang/api/handler/LogoutHandler.cpp @@ -0,0 +1,67 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "LogoutHandler.h" + +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +LogoutHandler::LogoutHandler(API &api, const JSON::ValuePtr &config) : + QueryHandler(api, config) {} + + +bool LogoutHandler::operator()(const CtxPtr &ctx) { + auto &req = ctx->getRequest(); + + auto cb = [this, &req] (HTTP::Status status, const JSON::ValuePtr &result) { + if (status == HTTP_OK) { + auto &sessionMan = api.getSessionManager(); + + // Close session + auto session = req.getSession(); + if (session.isSet()) sessionMan.closeSession(session->getID()); + + // Clear session cookie + req.setCookie(sessionMan.getSessionCookie(), "", "", "/", 1); + } + + req.reply(status); + }; + + queryDef->query(ctx->getResolver(), cb); + return true; +} diff --git a/src/cbang/api/handler/LogoutHandler.h b/src/cbang/api/handler/LogoutHandler.h new file mode 100644 index 000000000..b8c65474a --- /dev/null +++ b/src/cbang/api/handler/LogoutHandler.h @@ -0,0 +1,48 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "QueryHandler.h" + + +namespace cb { + namespace API { + class LogoutHandler : public QueryHandler { + public: + LogoutHandler(API &api, const JSON::ValuePtr &config); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/MethodHandler.cpp b/src/cbang/api/handler/MethodHandler.cpp new file mode 100644 index 000000000..554d52a42 --- /dev/null +++ b/src/cbang/api/handler/MethodHandler.cpp @@ -0,0 +1,40 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "MethodHandler.h" + +using namespace cb::API; + + +bool MethodHandler::operator()(const CtxPtr &ctx) { + return (ctx->getRequest().getMethod() & methods) && child->operator()(ctx); +} diff --git a/src/cbang/api/handler/MethodHandler.h b/src/cbang/api/handler/MethodHandler.h new file mode 100644 index 000000000..8dc5baac4 --- /dev/null +++ b/src/cbang/api/handler/MethodHandler.h @@ -0,0 +1,52 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include + + +namespace cb { + namespace API { + class MethodHandler : public Handler { + unsigned methods; + SmartPointer child; + + public: + MethodHandler(unsigned methods, const SmartPointer &child) : + methods(methods), child(child) {} + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/PassHandler.h b/src/cbang/api/handler/PassHandler.h new file mode 100644 index 000000000..cf38da806 --- /dev/null +++ b/src/cbang/api/handler/PassHandler.h @@ -0,0 +1,46 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include + + +namespace cb { + namespace API { + class PassHandler : public Handler { + public: + // From Handler + bool operator()(const CtxPtr &ctx) override {return false;} + }; + } +} diff --git a/src/cbang/api/handler/QueryHandler.cpp b/src/cbang/api/handler/QueryHandler.cpp new file mode 100644 index 000000000..b9f027743 --- /dev/null +++ b/src/cbang/api/handler/QueryHandler.cpp @@ -0,0 +1,61 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "QueryHandler.h" + +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +QueryHandler::QueryHandler(API &api, const JSON::ValuePtr &config) : + api(api), queryDef(new QueryDef(api, config)) {} + + +void QueryHandler::reply( + const CtxPtr &ctx, HTTP::Status status, const JSON::ValuePtr &result) { + if (result.isSet()) ctx->reply(result); + else ctx->reply(status); +} + + +bool QueryHandler::operator()(const CtxPtr &ctx) { + auto cb = [this, ctx] (HTTP::Status status, const JSON::ValuePtr &result) { + reply(ctx, status, result); + }; + + queryDef->query(ctx->getResolver(), cb); + return true; +} diff --git a/src/cbang/api/handler/QueryHandler.h b/src/cbang/api/handler/QueryHandler.h new file mode 100644 index 000000000..8fa871490 --- /dev/null +++ b/src/cbang/api/handler/QueryHandler.h @@ -0,0 +1,58 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + + +namespace cb { + namespace API { + class API; + + class QueryHandler : public Handler { + protected: + API &api; + SmartPointer queryDef; + + public: + QueryHandler(API &api, const JSON::ValuePtr &config); + + void reply( + const CtxPtr &ctx, HTTP::Status status, const JSON::ValuePtr &result); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/RedirectHandler.cpp b/src/cbang/api/handler/RedirectHandler.cpp new file mode 100644 index 000000000..222e9165e --- /dev/null +++ b/src/cbang/api/handler/RedirectHandler.cpp @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "RedirectHandler.h" + +#include + +using namespace cb::API; +using namespace cb; +using namespace std; + + +RedirectHandler::RedirectHandler(const string &location, HTTP::Status code) : + StatusHandler(code), location(location) {} + + +RedirectHandler::RedirectHandler(const JSON::ValuePtr &config) : + StatusHandler((HTTP::Status::enum_t)config->getU32("code", 307)), + location(config->getString("location")) {} + + +bool RedirectHandler::operator()(const CtxPtr &ctx) { + ctx->getRequest().outSet("Location", location); + return StatusHandler::operator()(ctx); +} diff --git a/src/cbang/api/handler/RedirectHandler.h b/src/cbang/api/handler/RedirectHandler.h new file mode 100644 index 000000000..101b40d17 --- /dev/null +++ b/src/cbang/api/handler/RedirectHandler.h @@ -0,0 +1,52 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "StatusHandler.h" + + +namespace cb { + namespace API { + class RedirectHandler : public StatusHandler { + std::string location; + + public: + RedirectHandler(const std::string &location, + HTTP::Status code = HTTP_TEMPORARY_REDIRECT); + RedirectHandler(const JSON::ValuePtr &config); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/SessionHandler.cpp b/src/cbang/api/handler/SessionHandler.cpp new file mode 100644 index 000000000..ffb4f36f8 --- /dev/null +++ b/src/cbang/api/handler/SessionHandler.cpp @@ -0,0 +1,110 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "SessionHandler.h" + +#include +#include +#include + +#include +#include +#include +#include + +using namespace cb::API; +using namespace cb; +using namespace std; + + +SessionHandler::SessionHandler(API &api, const JSON::ValuePtr &config) : + QueryHandler(api, config) {} + + +void SessionHandler::createSession(HTTP::Request &req) { + // Create a session + auto session = api.getSessionManager().openSession(req.getClientAddr()); + req.setSession(session); + + // Set session cookie + string cookie = api.getSessionManager().getSessionCookie(); + string sid = session->getID(); + req.setCookie(cookie, sid, "", "/", 0, 0, false, true, "None"); +} + + +bool SessionHandler::operator()(const CtxPtr &ctx) { + // Check if Session is already loaded + auto &req = ctx->getRequest(); + if (req.getSession().isSet()) return false; + + // Check if we have a session ID + string cookie = api.getSessionManager().getSessionCookie(); + string sid = req.getSessionID(cookie); + if (sid.empty()) { + createSession(req); + return false; + } + + // Lookup Session in SessionManager + if (api.getSessionManager().hasSession(sid)) { + req.setSession(api.getSessionManager().lookupSession(sid)); + return false; + } + + // Create session + auto session = SmartPtr(new HTTP::Session(sid, req.getClientAddr())); + req.setSession(session); + api.getSessionManager().addSession(session); + + // Lookup Session in DB + if (queryDef->sql.empty()) return false; + + auto cb = [this, session, &req, ctx] ( + HTTP::Status status, const JSON::ValuePtr &result) { + if (status == HTTP_OK) { + if (session->hasString("user")) { + LOG_DEBUG(3, "Authenticated: " << session->getString("user")); + session->addGroup("authenticated"); + } + + // Restart API request processing + req.getConnection().cast()->getServer().dispatch(req); + + } else reply(ctx, status, result); + }; + + auto query = SmartPtr(new SessionQuery(*queryDef, req.getSession(), cb)); + query->exec(ctx->getResolver()->resolve(queryDef->getSQL(), true)); + + return true; +} diff --git a/src/cbang/api/handler/SessionHandler.h b/src/cbang/api/handler/SessionHandler.h new file mode 100644 index 000000000..d7467913b --- /dev/null +++ b/src/cbang/api/handler/SessionHandler.h @@ -0,0 +1,50 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "QueryHandler.h" + + +namespace cb { + namespace API { + class SessionHandler : public QueryHandler { + public: + SessionHandler(API &api, const JSON::ValuePtr &config); + + void createSession(HTTP::Request &req); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/SpecHandler.cpp b/src/cbang/api/handler/SpecHandler.cpp new file mode 100644 index 000000000..11ddf963e --- /dev/null +++ b/src/cbang/api/handler/SpecHandler.cpp @@ -0,0 +1,50 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "SpecHandler.h" + +#include +#include + +using namespace cb::API; +using namespace cb; +using namespace std; + + +SpecHandler::SpecHandler(API &api, const JSON::ValuePtr &config) : + api(api), config(config) {} + + +bool SpecHandler::operator()(const CtxPtr &ctx) { + ctx->reply(api.getSpec()); + return true; +} diff --git a/src/cbang/api/handler/SpecHandler.h b/src/cbang/api/handler/SpecHandler.h new file mode 100644 index 000000000..6a125900d --- /dev/null +++ b/src/cbang/api/handler/SpecHandler.h @@ -0,0 +1,56 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + +#include + + +namespace cb { + namespace API { + class API; + + class SpecHandler : public Handler { + API &api; + JSON::ValuePtr config; + + public: + SpecHandler(API &api, const JSON::ValuePtr &config); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/StatusHandler.cpp b/src/cbang/api/handler/StatusHandler.cpp new file mode 100644 index 000000000..b0bf7593c --- /dev/null +++ b/src/cbang/api/handler/StatusHandler.cpp @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "StatusHandler.h" + +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +StatusHandler::StatusHandler(const JSON::ValuePtr &config) : + text(config->getString("text", "")) { + if (config->hasNumber("code")) + code = (HTTP::Status::enum_t)config->getU16("code"); + else code = HTTP::Status::parse(config->getString("code")); +} + + +bool StatusHandler::operator()(const CtxPtr &ctx) { + ctx->reply(code, text); + return true; +} diff --git a/src/cbang/api/handler/StatusHandler.h b/src/cbang/api/handler/StatusHandler.h new file mode 100644 index 000000000..c367ed835 --- /dev/null +++ b/src/cbang/api/handler/StatusHandler.h @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + + +namespace cb { + namespace API { + class StatusHandler : public Handler { + HTTP::Status code; + std::string text; + + public: + StatusHandler(HTTP::Status code, const std::string &text = "") : + code(code), text(text) {} + StatusHandler(const JSON::ValuePtr &config); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/TimeseriesHandler.cpp b/src/cbang/api/handler/TimeseriesHandler.cpp new file mode 100644 index 000000000..131af5033 --- /dev/null +++ b/src/cbang/api/handler/TimeseriesHandler.cpp @@ -0,0 +1,311 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ +/* + This class handles the storing and recalling of timeseries data. Queries + are made to the SQL DB and those results are stored as a timeseries in + LevelDB. + + Timeseries data may either be a single value or a list of values keyed by + one or more variables. The key or keys are specified via the ``key`` + configuration option. The key value(s) are removed from the timeseries + data to save space. If the resulting data is a dictionary with a single + value then only the value is stored. + + Clients may subscribe to the timeseries via Websocket. Subscribers will + first receive a list of all the recent timeseries data limited by time + and total number of results. Subsequently, new results will be broadcast + to all subscribers for as long as they stay connected. + + The last result is tracked in LevelDB. If a new result is the same as the + last result it is not added to the timeseries. In this way, gaps in the time + series are assumed to be repeats of the previous value. + + The "last" result is stored at key "\0". If the timeseries is a list of + values then "last" will be dictionary of key, value pairs, otherwise just the + one value. The "last" value is reloaded when the server is restarted before + making further queries. + + The implementation is complicated because care is taken to not dominate the + main thread when processing large lists of data. A low priority event is + used, repetitive operations are spread across multiple event callbacks and + LevelDB writes are batched. +*/ + + +#include "TimeseriesHandler.h" + +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + +#undef CBANG_LOG_PREFIX +#define CBANG_LOG_PREFIX "TS:" << name << ":" +#define TIME_FMT "%Y%m%d%H%M%S" + + +TimeseriesHandler::TimeseriesHandler( + API &api, const string &name, const JSON::ValuePtr &config) : + QueryDef(api, config), name(name), db(api.getTimeseriesDB().ns(name + "\0"s)), + period(HumanDuration::parse(config->getAsString("period"))), + event(db.getPool()->getEventBase().newEvent( + this, &TimeseriesHandler::process, 0)) { + + if (name.empty()) THROW("Timeseries requires a name"); + if (!period) THROW("Timeseries period cannot be zero"); + + // Query return type + if (!config->hasString("return")) ret = "list"; + if (ret == "hlist") THROW("Timeseries return type cannot be 'hlist'"); + + // Key + if (config->has("key")) { + key = config->get("key"); + + if (!key->isList()) { + auto l = config->createList(); + l->append(key); + key = l; + } + + } else { + if (ret == "list") + THROW("Timeseries with 'list' return type must provided a 'key'"); + + key = config->createList(); // Empty key + } + + event->setPriority(7); + + schedule(); +} + + +string TimeseriesHandler::resolveKey(const JSON::Value &dict) const { + string result; + + for (auto it: *key) { + if (!result.empty()) result += "\0"s; + result += dict.getAsString(it->asString()); + } + + return result; +} + + +double TimeseriesHandler::getNext() const { + auto now = Timer::now(); + double next = getTimePeriod(ceil(now)) + period - now; + + LOG_DEBUG(4, "Querying in " << next << " seconds " + << " current=" << Time(getTimePeriod(ceil(now))).toString() + << " period=" << period + << " now=" << Time(now).toString()); + + return next; +} + + +SmartPointer TimeseriesHandler::get( + const string &key, bool create) { + + auto it = series.find(key); + if (it != series.end()) return it->second; + if (!create) return 0; + + LOG_DEBUG(5, "Adding key `" << key << "`"); + return series[key] = new Timeseries(*this, key); +} + + +void TimeseriesHandler::schedule() { + if (last.isNull() || results.isSet()) event->add(0); + else event->add(getNext()); +} + + +void TimeseriesHandler::process() { + if (last.isNull()) { + // Try to load the last value + LOG_DEBUG(3, "Querying last value"); + + auto cb = [this] (bool success, const string &value) { + LOG_DEBUG(3, "Last value success=" << (success ? "true" : "false")); + + last = new JSON::Dict; + schedule(); + + try { + if (success) last = JSON::Reader::parse(value); + } catch (const Exception &e) { + LOG_ERROR("Failed to parse last timeseries result: " << e); + } + }; + + db.get("\0"s, cb); + + } else if (results.isSet()) { + // Process a batch of results + LOG_DEBUG(4, "Processing result batch"); + + try { + for (unsigned i = 0; i < 1000; i++) { + if (it == results->end()) { + if (batch.isSet()) { + LOG_DEBUG(3, "Writing to DB " << name); + + auto cb = [batch = batch, last = last, name = name] () { + batch->set("\0"s, last->toString()); + batch->commit(); + LOG_DEBUG(3, "Done " << name); + }; + + batch.release(); + db.getPool()->submit(0, cb); + + } else LOG_DEBUG(3, "No results, done " << name); + + results.release(); + break; + } + + auto result = *it++; + string key = resolveKey(*result); + + // Don't store key data + for (auto it: *this->key) + result->erase(it->asString()); + + // If there's only one key, store just its value + if (result->size() == 1) result = *result->begin(); + + // Don't record if result is unchanged + auto it = last->find(key); + if (it != last->end() && **it == *result) continue; + last->insert(key, result); + + if (batch.isNull()) batch = new LevelDB::Batch(db.batch()); + batch->set(key + "\0"s + resultsTimeKey, result->toString()); + get(key)->broadcast(resultsTime, result); + } + } catch (const Exception &e) { + LOG_ERROR(e); + LOG_DEBUG(3, "Failed " << name); + results.release(); + } + + schedule(); + + } else query(getTimePeriod(Time::now())); // Load next timeseries result +} + + +void TimeseriesHandler::query(uint64_t time) { + auto cb = [=] (HTTP::Status status, const JSON::ValuePtr &results) { + if (status == HTTP::Status::HTTP_OK) try { + resultsTimeKey = Time(getTimePeriod(time)).toString(TIME_FMT); + + if (ret != "list") { + if (*last != *results) { + last = results; + db.set("\0"s, last->toString()); + db.set("\0"s + resultsTimeKey, results->toString()); + get("")->broadcast(time, results); + } + + } else { + LOG_DEBUG(3, "Storing results"); + this->results = results; + resultsTime = time; + it = results->begin(); + } + } CATCH_ERROR; + + schedule(); + }; + + LOG_DEBUG(3, "Querying"); + LOG_DEBUG(5, "query: " << sql); + + query(sql, cb); +} + + +void TimeseriesHandler::action(const CtxPtr &ctx) { + // Resolve variables + auto resolver = ctx->getResolver(); + auto action = resolver->selectString("args.action", "query"); + auto since = resolver->selectTime("args.since", 0); + auto maxCount = resolver->selectU64("args.max_count", 0); + + // Get Timeseries + auto key = ret == "list" ? resolveKey(*resolver->select("args")) : ""; + auto ts = get(key, action != "unsubscribe"); + if (ts.isNull()) return; + + // Execute action + auto cb = [this, ctx] ( + const SmartPointer &err, const JSON::ValuePtr &data) { + if (err.isNull()) ctx->reply(data); + else ctx->reply(*err); + }; + + if (action == "query") return ts->query(since, maxCount, cb); + + auto ws = ctx->getWebsocket(); + if (ws.isSet()) { + if (action == "subscribe") return ws->subscribe(*ts, since, maxCount, cb); + if (action == "unsubscribe") return ws->unsubscribe(*ts); + } + + THROW("Unrecognized timeseries action '" << action << "'"); +} + + +SmartPointer TimeseriesHandler::getDBConnection() const { + auto db = QueryDef::getDBConnection(); + db->setPriority(8); // Lower priority to avoid blocking regular API requests + return db; +} + + +bool TimeseriesHandler::operator()(const CtxPtr &ctx) { + action(ctx); + return true; +} \ No newline at end of file diff --git a/src/cbang/api/handler/TimeseriesHandler.h b/src/cbang/api/handler/TimeseriesHandler.h new file mode 100644 index 000000000..b656e221b --- /dev/null +++ b/src/cbang/api/handler/TimeseriesHandler.h @@ -0,0 +1,87 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include +#include + + +namespace cb { + namespace API { + class API; + class TimeseriesDef; + + class TimeseriesHandler : public Handler, public QueryDef { + public: + std::string name; + EventLevelDB db; + uint64_t period; + JSON::ValuePtr key; + Event::EventPtr event; + + std::map> series; + + JSON::ValuePtr last; + JSON::ValuePtr results; + JSON::Value::iterator it; + uint64_t resultsTime = 0; + std::string resultsTimeKey; + SmartPointer batch; + + TimeseriesHandler( + API &api, const std::string &name, const JSON::ValuePtr &config); + + const std::string &getName() const {return name;} + + protected: + std::string resolveKey(const JSON::Value &dict) const; + uint64_t getTimePeriod(uint64_t ts) const {return (ts / period) * period;} + double getNext() const; + SmartPointer get(const std::string &key, bool create = true); + + void schedule(); + void process(); + + using QueryDef::query; + void query(uint64_t time); + void action(const CtxPtr &ctx); + + // From QueryDef + SmartPointer getDBConnection() const override; + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/URLHandler.cpp b/src/cbang/api/handler/URLHandler.cpp new file mode 100644 index 000000000..4f8ca4521 --- /dev/null +++ b/src/cbang/api/handler/URLHandler.cpp @@ -0,0 +1,77 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "URLHandler.h" + +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +URLHandler::URLHandler( + const string &pattern, const SmartPointer &child) : + re(HTTP::URLPatternMatcher::toRE2Pattern(pattern), false), child(child) {} + + +bool URLHandler::operator()(const CtxPtr &ctx) { + Regex::Match m; + string path = ctx->getRequest().getURI().getPath(); + + if (!re.match(path, m)) return false; + + // Handle URL args + auto &names = re.getGroupIndexMap(); + if (!names.empty()) { + auto args = ctx->getArgs()->copy(); + + // Look up the indices of named groups and get their matched values + // Note, URL args are always strings but they may be later converted to + // other types by the ArgValidator. + for (unsigned i = 0; i < re.getGroupCount(); i++) { + auto it = names.find(i + 1); + + // TODO Currently, if an arg name already exists it is not overwritten. + // The consequence is that the API caller can override URL args with + // JSON or query args. This is intentional but may not be ideal. + if (it != names.end() && !args->has(it->second)) + args->insert(it->second, m[i]); + } + + CtxPtr childCtx = new Context(*ctx); + childCtx->setArgs(args); + return child->operator()(childCtx); + } + + return child->operator()(ctx); +} diff --git a/src/cbang/api/handler/URLHandler.h b/src/cbang/api/handler/URLHandler.h new file mode 100644 index 000000000..cfa2b22de --- /dev/null +++ b/src/cbang/api/handler/URLHandler.h @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include + +#include + + +namespace cb { + namespace API { + class URLHandler : public Handler { + Regex re; + SmartPointer child; + + public: + URLHandler( + const std::string &pattern, const SmartPointer &child); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/handler/WebsocketHandler.cpp b/src/cbang/api/handler/WebsocketHandler.cpp new file mode 100644 index 000000000..50ac2183b --- /dev/null +++ b/src/cbang/api/handler/WebsocketHandler.cpp @@ -0,0 +1,129 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "WebsocketHandler.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace cb; +using namespace cb::API; + + +WebsocketHandler::WebsocketHandler(API &api, const JSON::ValuePtr &config) : + api(api) { + if (config->has("on-message")) loadHandlers(config->get("on-message")); +} + + +void WebsocketHandler::onMessage(const WebsocketPtr &ws, + const JSON::ValuePtr &msg) { + + CtxPtr ctx = new Context(api, ws); + ctx->setArgs(msg); + ctx->getResolver()->set("msg", msg); + + ctx->errorHandler([&] () { + for (auto handler: handlers) + if (handler->operator()(ctx)) return; + + THROW("Unhandled Websocket message " << msg->toString()); + }); +} + + +void WebsocketHandler::add(const WebsocketPtr &ws) { + LOG_DEBUG(3, "Adding Websocket client with ID " << ws->getID()); + websockets[ws->getID()] = ws; +} + + +void WebsocketHandler::remove(const Websocket &ws) { + LOG_DEBUG(3, "Removing Websocket client with ID " << ws.getID()); + websockets.erase(ws.getID()); +} + + +SmartPointer WebsocketHandler::createHandler( + const JSON::ValuePtr &config) { + + auto type = config->getString("handler", ""); + + if (type.empty()) { + if (config->has("map")) type = "map"; + else if (config->has("timeseries")) type = "timeseries"; + else if (config->has("query")) type = "query"; + else THROW("Must specify websocket message handler type"); + } + + SmartPointer handler; + if (type == "map") handler = new WSMapHandler(*this, config); + else if (type == "timeseries") + handler = new WSTimeseriesHandler(api, config); + else if (type == "query") handler = new WSQueryHandler(api, config); + else THROW("Unsupported websocket message handler type '" << type << "'"); + + if (config->has("args")) + handler = new ArgsHandler(ArgDict(api, config->get("args")), handler); + + if (config->has("match")) + handler = new WSMatchHandler(config->get("match"), handler); + + return handler; +} + + +void WebsocketHandler::loadHandlers(const JSON::ValuePtr &list) { + if (!list->isList()) + THROW("Websocket `on-message` must be a list of handlers"); + + for (auto config: *list) + handlers.push_back(createHandler(config)); +} + + +bool WebsocketHandler::operator()(const CtxPtr &ctx) { + auto &req = ctx->getRequest(); + if (String::toLower(req.inFind("Upgrade")) != "websocket") return false; + + auto ws = SmartPtr(new Websocket(*this, req)); + ws->upgrade(req); + add(ws); + + return true; +} diff --git a/src/cbang/api/handler/WebsocketHandler.h b/src/cbang/api/handler/WebsocketHandler.h new file mode 100644 index 000000000..01d44fda8 --- /dev/null +++ b/src/cbang/api/handler/WebsocketHandler.h @@ -0,0 +1,66 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + + +namespace cb { + namespace API { + class API; + class WSMessageHandler; + + class WebsocketHandler : public Handler { + API &api; + std::map websockets; + std::vector> handlers; + + public: + WebsocketHandler(API &api, const JSON::ValuePtr &config); + + API &getAPI() const {return api;} + + void onMessage(const WebsocketPtr &ws, const JSON::ValuePtr &msg); + + void add(const WebsocketPtr &ws); + void remove(const Websocket &ws); + + SmartPointer createHandler(const JSON::ValuePtr &config); + void loadHandlers(const JSON::ValuePtr &list); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/ws/WSMapHandler.cpp b/src/cbang/api/ws/WSMapHandler.cpp new file mode 100644 index 000000000..185df4d60 --- /dev/null +++ b/src/cbang/api/ws/WSMapHandler.cpp @@ -0,0 +1,55 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "WSMapHandler.h" + +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +WSMapHandler::WSMapHandler(WebsocketHandler &handler, + const JSON::ValuePtr &config) : key(config->getString("map")) { + + auto &map = config->getDict("to"); + for (auto e: map.entries()) + handlers[e.key()] = handler.createHandler(e.value()); +} + + +bool WSMapHandler::operator()(const CtxPtr &ctx) { + auto it = handlers.find(ctx->getResolver()->selectString(key)); + if (it == handlers.end()) return false; + return it->second->operator()(ctx); +} diff --git a/src/cbang/api/ws/WSMapHandler.h b/src/cbang/api/ws/WSMapHandler.h new file mode 100644 index 000000000..7c63f946e --- /dev/null +++ b/src/cbang/api/ws/WSMapHandler.h @@ -0,0 +1,55 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include + +#include + + +namespace cb { + namespace API { + class WebsocketHandler; + + class WSMapHandler : public Handler { + std::string key; + std::map> handlers; + + public: + WSMapHandler(WebsocketHandler &handler, const JSON::ValuePtr &config); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/ws/WSMatchHandler.cpp b/src/cbang/api/ws/WSMatchHandler.cpp new file mode 100644 index 000000000..4d235131a --- /dev/null +++ b/src/cbang/api/ws/WSMatchHandler.cpp @@ -0,0 +1,52 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "WSMatchHandler.h" + +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +WSMatchHandler::WSMatchHandler(const JSON::ValuePtr &config, + const SmartPointer &child) : + schema(new JSON::Schema::RootSchema(*config)), child(child) {} + + +bool WSMatchHandler::operator()(const CtxPtr &ctx) { + auto msg = ctx->getResolver()->select("msg"); + if (msg.isNull() || !schema->match(*msg)) return false; + return child->operator()(ctx); +} diff --git a/src/cbang/api/ws/WSMatchHandler.h b/src/cbang/api/ws/WSMatchHandler.h new file mode 100644 index 000000000..f7ec63456 --- /dev/null +++ b/src/cbang/api/ws/WSMatchHandler.h @@ -0,0 +1,55 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + + +namespace cb { + namespace API { + class WebsocketHandler; + + class WSMatchHandler : public Handler { + JSON::SchemaPtr schema; + SmartPointer child; + + public: + WSMatchHandler(const JSON::ValuePtr &config, + const SmartPointer &child); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/ws/WSQueryHandler.cpp b/src/cbang/api/ws/WSQueryHandler.cpp new file mode 100644 index 000000000..63a2b25f8 --- /dev/null +++ b/src/cbang/api/ws/WSQueryHandler.cpp @@ -0,0 +1,52 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "WSQueryHandler.h" + +#include +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +WSQueryHandler::WSQueryHandler(API &api, const JSON::ValuePtr &config) : + api(api), category(api.getCategory()), query(config->getString("query")) {} + + +bool WSQueryHandler::operator()(const CtxPtr &ctx) { + string name = ctx->getResolver()->resolve(query); + auto handler = api.getQuery(category, name); + return handler->operator()(ctx); +} diff --git a/src/cbang/api/ws/WSQueryHandler.h b/src/cbang/api/ws/WSQueryHandler.h new file mode 100644 index 000000000..89e42d693 --- /dev/null +++ b/src/cbang/api/ws/WSQueryHandler.h @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include + + +namespace cb { + namespace API { + class API; + + class WSQueryHandler : public Handler { + API &api; + std::string category; + std::string query; + + public: + WSQueryHandler(API &api, const JSON::ValuePtr &config); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/api/ws/WSTimeseriesHandler.cpp b/src/cbang/api/ws/WSTimeseriesHandler.cpp new file mode 100644 index 000000000..47e7e42e4 --- /dev/null +++ b/src/cbang/api/ws/WSTimeseriesHandler.cpp @@ -0,0 +1,52 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "WSTimeseriesHandler.h" + +#include +#include + +using namespace std; +using namespace cb; +using namespace cb::API; + + +WSTimeseriesHandler::WSTimeseriesHandler(API &api, + const JSON::ValuePtr &config) : api(api), category(api.getCategory()), + timeseries(config->getString("timeseries")) {} + + +bool WSTimeseriesHandler::operator()(const CtxPtr &ctx) { + string name = ctx->getResolver()->resolve(timeseries); + auto handler = api.getTimeseries(category, name); + return handler->operator()(ctx); +} diff --git a/src/cbang/api/ws/WSTimeseriesHandler.h b/src/cbang/api/ws/WSTimeseriesHandler.h new file mode 100644 index 000000000..bd2f957f6 --- /dev/null +++ b/src/cbang/api/ws/WSTimeseriesHandler.h @@ -0,0 +1,54 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include + + +namespace cb { + namespace API { + class WebsocketHandler; + + class WSTimeseriesHandler : public Handler { + API &api; + std::string category; + std::string timeseries; + + public: + WSTimeseriesHandler(API &api, const JSON::ValuePtr &config); + + // From Handler + bool operator()(const CtxPtr &ctx) override; + }; + } +} diff --git a/src/cbang/auth/FacebookOAuth2.cpp b/src/cbang/auth/FacebookOAuth2.cpp deleted file mode 100644 index 931d37abe..000000000 --- a/src/cbang/auth/FacebookOAuth2.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#include "FacebookOAuth2.h" - -#include -#include -#include -#include - -using namespace cb; -using namespace std; - - -FacebookOAuth2::FacebookOAuth2(Options &options) : - OAuth2(options, "facebook", - "https://graph.facebook.com/oauth/authorize", - "https://graph.facebook.com/oauth/access_token", - "https://graph.facebook.com/me?fields=id,name,email,picture,verified", - "email") {} - - -SmartPointer -FacebookOAuth2::processProfile(const SmartPointer &profile) const { - SmartPointer p = new JSON::Dict; - - p->insert("provider", getProvider()); - p->insert("id", profile->getString("id")); - p->insert("name", profile->getString("name")); - p->insert("email", profile->getString("email")); - p->insert("avatar", - profile->getDict("picture").getDict("data").getString("url")); - p->insertBoolean("verified", profile->getBoolean("verified")); - p->insert("raw", profile); - - return p; -} diff --git a/src/cbang/auth/FacebookOAuth2.h b/src/cbang/auth/FacebookOAuth2.h deleted file mode 100644 index da9428ff2..000000000 --- a/src/cbang/auth/FacebookOAuth2.h +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#pragma once - -#include "OAuth2.h" - - -namespace cb { - class FacebookOAuth2 : public OAuth2 { - public: - FacebookOAuth2(Options &options); - - // From OAuth2 - const char *getProvider() const {return "facebook";} - SmartPointer - processProfile(const SmartPointer &profile) const; - }; -} diff --git a/src/cbang/auth/GitHubOAuth2.cpp b/src/cbang/auth/GitHubOAuth2.cpp deleted file mode 100644 index ea9aae9a8..000000000 --- a/src/cbang/auth/GitHubOAuth2.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#include "GitHubOAuth2.h" - -#include -#include -#include -#include - -using namespace cb; -using namespace std; - - -GitHubOAuth2::GitHubOAuth2(Options &options) : - OAuth2(options, "github", - "https://github.com/login/oauth/authorize", - "https://github.com/login/oauth/access_token", - "https://api.github.com/user", "user:email") {} - - -SmartPointer -GitHubOAuth2::processProfile(const SmartPointer &profile) const { - SmartPointer p = new JSON::Dict; - - p->insert("provider", getProvider()); - p->insert("id", String(profile->getNumber("id"))); - p->insert("name", profile->getString("name")); - p->insert("email", profile->getString("email")); - p->insert("avatar", profile->getString("avatar_url")); - p->insertBoolean("verified", true); // TODO Has the email been verified? - p->insert("raw", profile); - - return p; -} diff --git a/src/cbang/auth/GitHubOAuth2.h b/src/cbang/auth/GitHubOAuth2.h deleted file mode 100644 index c7ede28b8..000000000 --- a/src/cbang/auth/GitHubOAuth2.h +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#pragma once - -#include "OAuth2.h" - - -namespace cb { - class GitHubOAuth2 : public OAuth2 { - public: - GitHubOAuth2(Options &options); - - // From OAuth2 - const char *getProvider() const {return "github";} - SmartPointer - processProfile(const SmartPointer &profile) const; - }; -} diff --git a/src/cbang/auth/GoogleOAuth2.cpp b/src/cbang/auth/GoogleOAuth2.cpp deleted file mode 100644 index 01d40b46e..000000000 --- a/src/cbang/auth/GoogleOAuth2.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#include "GoogleOAuth2.h" - -#include -#include -#include - -using namespace cb; -using namespace std; - - -GoogleOAuth2::GoogleOAuth2(Options &options) : - OAuth2(options, "google", - "https://accounts.google.com/o/oauth2/v2/auth", - "https://www.googleapis.com/oauth2/v4/token", - "https://www.googleapis.com/oauth2/v3/userinfo", - "openid email profile") {} - - -SmartPointer -GoogleOAuth2::processProfile(const SmartPointer &profile) const { - SmartPointer p = new JSON::Dict; - - p->insert("provider", getProvider()); - p->insert("id", profile->getString("sub")); - p->insert("name", profile->getString("name")); - p->insert("email", profile->getString("email")); - p->insert("avatar", profile->getString("picture")); - p->insertBoolean("verified", profile->getBoolean("email_verified")); - p->insert("raw", profile); - - return p; -} diff --git a/src/cbang/auth/GoogleOAuth2.h b/src/cbang/auth/GoogleOAuth2.h deleted file mode 100644 index 4ad287276..000000000 --- a/src/cbang/auth/GoogleOAuth2.h +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#pragma once - -#include "OAuth2.h" - - -namespace cb { - class GoogleOAuth2 : public OAuth2 { - public: - GoogleOAuth2(Options &options); - - // From OAuth2 - const char *getProvider() const {return "google";} - SmartPointer - processProfile(const SmartPointer &profile) const; - }; -} diff --git a/src/cbang/auth/OAuth2.cpp b/src/cbang/auth/OAuth2.cpp deleted file mode 100644 index cf5c273b7..000000000 --- a/src/cbang/auth/OAuth2.cpp +++ /dev/null @@ -1,160 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#include "OAuth2.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace cb; - - -OAuth2::OAuth2(Options &options, const string &provider, - const string &authURL, const string &tokenURL, - const string &profileURL, const string &scope) : - provider(provider), authURL(authURL), tokenURL(tokenURL), - profileURL(profileURL), scope(scope) { - - options.pushCategory(String::capitalize(provider) + " OAuth2 Login"); - options.addTarget(provider + "-auth-url", this->authURL, "OAuth2 auth URL"); - options.addTarget(provider + "-token-url", this->tokenURL, - "OAuth2 token URL"); - options.addTarget(provider + "-scope", this->scope, "OAuth2 API scope"); - options.addTarget(provider + "-redirect-base", redirectBase, - "OAuth2 redirect base URL"); - options.addTarget(provider + "-client-id", clientID, "OAuth2 API client ID"); - options.addTarget(provider + "-client-secret", clientSecret, - "OAuth2 API client secret")->setObscured(); - options.popCategory(); -} - - -OAuth2::~OAuth2() {} // Hide destructor - - -bool OAuth2::isConfigured() const { - return !(authURL.empty() || tokenURL.empty() || scope.empty() || - redirectBase.empty() || clientID.empty() || clientSecret.empty()); -} - - -URI OAuth2::getRedirectURL(const string &path, const string &state) const { - // Check config - validateOption(clientID, "client-id"); - validateOption(redirectBase, "redirect-base"); - validateOption(authURL, "auth-url"); - validateOption(scope, "scope"); - - // Build redirect URL - URI uri(authURL); - uri.set("client_id", clientID); - uri.set("response_type", "code"); - uri.set("scope", scope); - uri.set("redirect_uri", redirectBase + path); - uri.set("state", state); - - LOG_DEBUG(5, __func__ << ": " << uri); - - return uri; -} - - -URI OAuth2::getVerifyURL(const URI &uri, const string &state) const { - // Check that SID matches state (Confirm anti-forgery state token) - if (!uri.has("code") || !uri.has("state") || uri.get("state") != state) { - LOG_DEBUG(3, "Failed anti-forgery check: uri code=" - << (uri.has("code") ? uri.get("code") : "") << " uri state=" - << (uri.has("state") ? uri.get("state") : "") - << " server state=" << state); - THROWC("Failed anti-forgery check", Event::HTTPStatus::HTTP_UNAUTHORIZED); - } - - // Check config - validateOption(clientID, "client-id"); - validateOption(clientSecret, "client-secret"); - validateOption(redirectBase, "redirect-base"); - validateOption(tokenURL, "token-url"); - - // Exchange code for access token and ID token - URI postURI(tokenURL); - - // Setup Query data - postURI.set("code", uri.get("code")); - postURI.set("client_id", clientID); - postURI.set("client_secret", clientSecret); - postURI.set("redirect_uri", redirectBase + uri.getPath()); - postURI.set("grant_type", "authorization_code"); - - LOG_DEBUG(5, __func__ << ": " << postURI); - - return postURI; -} - - -URI OAuth2::getProfileURL(const string &accessToken) const { - validateOption(profileURL, "profile-url"); - - URI url(profileURL); - url.set("access_token", accessToken); - return url; -} - - -string OAuth2::verifyToken(const string &data) const { - if (String::startsWith(data, "access_token=")) { - URI uri("http://x.com/?" + data); - return uri.get("access_token"); - } - - return verifyToken(JSON::Reader(StringInputSource(data)).parse()); -} - - -string OAuth2::verifyToken(const SmartPointer &json) const { - LOG_DEBUG(5, __func__ << ": " << *json); - return json->getString("access_token"); -} - - -void OAuth2::validateOption(const string &option, const string &name) const { - if (option.empty()) - THROWC(provider + "-" + name + " not configured", - Event::HTTPStatus::HTTP_UNAUTHORIZED); -} diff --git a/src/cbang/auth/OAuth2.h b/src/cbang/auth/OAuth2.h deleted file mode 100644 index 60683447d..000000000 --- a/src/cbang/auth/OAuth2.h +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#pragma once - -#include -#include - -#include - - -namespace cb { - class URI; - class Options; - namespace JSON {class Value;} - - class OAuth2 { - std::string provider; - std::string authURL; - std::string tokenURL; - std::string profileURL; - std::string scope; - std::string redirectBase; - std::string clientID; - std::string clientSecret; - - public: - OAuth2(Options &options, const std::string &provider, - const std::string &authURL = "", const std::string &tokenURL = "", - const std::string &profileURL = "", const std::string &scope = ""); - virtual ~OAuth2(); - - bool isConfigured() const; - - virtual URI getRedirectURL(const std::string &path, - const std::string &state) const; - virtual URI getVerifyURL(const URI &uri, const std::string &state) const; - virtual URI getProfileURL(const std::string &token) const; - - virtual std::string verifyToken(const std::string &data) const; - virtual std::string - verifyToken(const SmartPointer &json) const; - - virtual SmartPointer - processProfile(const SmartPointer &profile) const = 0; - - protected: - void validateOption(const std::string &option, - const std::string &name) const; - }; -} diff --git a/src/cbang/boost/EndInclude.h b/src/cbang/boost/EndInclude.h new file mode 100644 index 000000000..2e7027e23 --- /dev/null +++ b/src/cbang/boost/EndInclude.h @@ -0,0 +1,35 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#if __GNUC__ +#pragma GCC diagnostic pop +#endif diff --git a/src/cbang/boost/IOStreams.h b/src/cbang/boost/IOStreams.h new file mode 100644 index 000000000..11619a172 --- /dev/null +++ b/src/cbang/boost/IOStreams.h @@ -0,0 +1,51 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "StartInclude.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "EndInclude.h" + +#include // streamsize + +namespace cb { + namespace io = boost::iostreams; +} diff --git a/src/cbang/boost/StartInclude.h b/src/cbang/boost/StartInclude.h new file mode 100644 index 000000000..78ac231df --- /dev/null +++ b/src/cbang/boost/StartInclude.h @@ -0,0 +1,36 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#if __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsuggest-override" +#endif diff --git a/src/cbang/buffer/Buffer.cpp b/src/cbang/buffer/Buffer.cpp deleted file mode 100644 index 5936cd8ff..000000000 --- a/src/cbang/buffer/Buffer.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#include "Buffer.h" - -using namespace cb; -using namespace std; - - -static const unsigned BUFFER_SIZE = 4096; - - -unsigned Buffer::writeTo(ostream &stream) { - char buf[BUFFER_SIZE]; - streamsize total = 0; - - while (!isEmpty() && stream) { - streamsize size = read(buf, BUFFER_SIZE); - if (size) { - stream.write(buf, size); - if (stream) total += size; - else break; - } - } - - return total; -} - - -unsigned Buffer::readFrom(istream &stream) { - char buf[BUFFER_SIZE]; - streamsize total = 0; - - while (!isFull() && stream) { - stream.read(buf, BUFFER_SIZE); - streamsize size = stream.gcount(); - - if (size) { - write(buf, size); - total += size; - } - } - - return total; -} diff --git a/src/cbang/buffer/Buffer.h b/src/cbang/buffer/Buffer.h deleted file mode 100644 index 6ba658c85..000000000 --- a/src/cbang/buffer/Buffer.h +++ /dev/null @@ -1,73 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#pragma once - -#include - -#include -#include - -namespace cb { - class Buffer { - public: - virtual ~Buffer() {} - - virtual bool isFull() const {return !getSpace();} - virtual bool isEmpty() const {return !getFill();} - - virtual unsigned getFill() const {return 0;} - virtual unsigned getSpace() const {return 0;} - - virtual unsigned read(char *dst, unsigned length) - {CBANG_THROW("Not implemented");} - virtual unsigned write(const char *src, unsigned length) - {CBANG_THROW("Not implemented");} - - virtual unsigned writeTo(std::ostream &stream); - virtual unsigned readFrom(std::istream &stream); - }; - - - static inline - std::ostream &operator<<(std::ostream &stream, Buffer &b) { - b.writeTo(stream); - return stream; - } - - - static inline - std::istream &operator>>(std::istream &stream, Buffer &b) { - b.readFrom(stream); - return stream; - } -} diff --git a/src/cbang/buffer/BufferDevice.h b/src/cbang/buffer/BufferDevice.h deleted file mode 100644 index 0bcd786a3..000000000 --- a/src/cbang/buffer/BufferDevice.h +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#pragma once - -#include "Buffer.h" - -#include // bidirectional_device_tag -#include // stream_offset -#include - - -namespace cb { - class BufferDevice { - Buffer &buffer; - - public: - typedef char char_type; - typedef boost::iostreams::bidirectional_device_tag category; - - BufferDevice(Buffer &buffer) : buffer(buffer) {} - - std::streamsize read(char *s, std::streamsize n) - {return (std::streamsize)buffer.read(s, n);} - std::streamsize write(const char *s, std::streamsize n) - {return (std::streamsize)buffer.write(s, n);} - }; - - typedef boost::iostreams::stream BufferStream; -} diff --git a/src/cbang/buffer/MemoryBuffer.cpp b/src/cbang/buffer/MemoryBuffer.cpp deleted file mode 100644 index a353adbde..000000000 --- a/src/cbang/buffer/MemoryBuffer.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#include "MemoryBuffer.h" - -#include - -#include -#include - -using namespace cb; -using namespace std; - - -MemoryBuffer::MemoryBuffer(unsigned capacity, char *buffer, bool deallocate) : - capacity(capacity), position(0), fill(0), buffer(buffer), - deallocate(deallocate) { - - if (buffer) fill = capacity; - - if (!buffer && capacity) { - this->buffer = (char *)malloc(capacity); - if (!this->buffer) THROW("Failed to allocate memory"); - this->deallocate = true; - } -} - - -MemoryBuffer::~MemoryBuffer() { - if (buffer && deallocate) { - free(buffer); - buffer = 0; - } -} - - -unsigned MemoryBuffer::read(char *dst, unsigned size) { - if (getFill() < size) size = getFill(); - if (!size) return 0; - - memcpy(dst, begin(), size); - incPosition(size); - - return size; -} - - -unsigned MemoryBuffer::write(const char *src, unsigned size) { - if (getSpace() < size) size = getSpace(); - if (!size) return 0; - - memcpy(end(), src, size); - incFill(size); - - return size; -} - - -unsigned MemoryBuffer::writeTo(ostream &stream) { - unsigned total = 0; - - while (!isEmpty() && stream) { - unsigned fill = getFill(); - stream.write(begin(), fill); - if (stream) { - incPosition(fill); - total += fill; - } - } - - return total; -} - - -unsigned MemoryBuffer::readFrom(istream &stream) { - unsigned total = 0; - - while (!isFull() && stream) { - stream.read(end(), getSpace()); - unsigned count = stream.gcount(); - if (!count) break; - incFill(count); - total += count; - } - - return total; -} - - -void MemoryBuffer::shiftToFront() { - if (isEmpty()) clear(); - - else if (position) { - memmove(buffer, buffer + position, getFill()); - fill -= position; - position = 0; - } -} - - -unsigned MemoryBuffer::increase(unsigned size) { - if (capacity < size) { - if (!buffer) deallocate = true; - if (!deallocate) THROW("Cannot increase buffer"); - - unsigned newCapacity = capacity + (capacity >> 2); // At least this much - if (newCapacity < size) newCapacity = size; - - char *newBuffer = (char *)realloc(buffer, newCapacity); - if (!newBuffer) THROW("Failed to reallocate memory"); - - capacity = newCapacity; - buffer = newBuffer; - } - - return capacity; -} diff --git a/src/cbang/buffer/MemoryBuffer.h b/src/cbang/buffer/MemoryBuffer.h deleted file mode 100644 index f23f53cc4..000000000 --- a/src/cbang/buffer/MemoryBuffer.h +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************\ - - This file is part of the C! library. A.K.A the cbang library. - - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University - All rights reserved. - - The C! library is free software: you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public License - as published by the Free Software Foundation, either version 2.1 of - the License, or (at your option) any later version. - - The C! library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the C! library. If not, see - . - - In addition, BSD licensing may be granted on a case by case basis - by written permission from at least one of the copyright holders. - You may request written permission by emailing the authors. - - For information regarding this software email: - Joseph Coffland - joseph@cauldrondevelopment.com - -\******************************************************************************/ - -#pragma once - -#include "Buffer.h" - -namespace cb { - class MemoryBuffer : public Buffer { - unsigned capacity; - unsigned position; - unsigned fill; - char *buffer; - bool deallocate; - - public: - MemoryBuffer(unsigned capacity = 0, char *buffer = 0, - bool deallocate = false); - ~MemoryBuffer(); - - // From Buffer - unsigned getFill() const {return fill - position;} - unsigned getSpace() const {return capacity - fill;} - unsigned read(char *dst, unsigned size); - unsigned write(const char *src, unsigned size); - unsigned writeTo(std::ostream &stream); - unsigned readFrom(std::istream &stream); - - bool isClear() const {return fill == 0 && position == 0;} - - unsigned getPosition() const {return position;} - unsigned getCapacity() const {return capacity;} - - void incPosition(unsigned count) {position += count;} - void incFill(unsigned count) {fill += count;} - void seek(unsigned position) {this->position = position;} - void shiftToFront(); - - const char *begin() const {return buffer + position;} - char *begin() {return buffer + position;} - - const char *end() const {return buffer + fill;} - char *end() {return buffer + fill;} - - unsigned increase(unsigned size); - void clear() {position = fill = 0;} - }; -} diff --git a/src/cbang/iostream/BZip2Compressor.h b/src/cbang/comp/BZip2Compressor.h similarity index 92% rename from src/cbang/iostream/BZip2Compressor.h rename to src/cbang/comp/BZip2Compressor.h index 5a9504910..b1c3d0612 100644 --- a/src/cbang/iostream/BZip2Compressor.h +++ b/src/cbang/comp/BZip2Compressor.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,17 +32,12 @@ #pragma once -#include // streamsize -#include -#include -#include -#include -namespace io = boost::iostreams; - #include +#include + +#include #include -#include namespace cb { diff --git a/src/cbang/iostream/BZip2Decompressor.h b/src/cbang/comp/BZip2Decompressor.h similarity index 92% rename from src/cbang/iostream/BZip2Decompressor.h rename to src/cbang/comp/BZip2Decompressor.h index 2f0e35e4f..3331f6790 100644 --- a/src/cbang/iostream/BZip2Decompressor.h +++ b/src/cbang/comp/BZip2Decompressor.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,17 +32,12 @@ #pragma once -#include // streamsize -#include -#include -#include -#include -namespace io = boost::iostreams; - #include +#include + +#include #include -#include namespace cb { diff --git a/src/cbang/comp/Compression.cpp b/src/cbang/comp/Compression.cpp new file mode 100644 index 000000000..0f766f01b --- /dev/null +++ b/src/cbang/comp/Compression.cpp @@ -0,0 +1,67 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#define CBANG_ENUM_IMPL +#include "Compression.h" +#include +#include + +using namespace cb; +using namespace std; + + +namespace cb { + Compression compressionFromPath(const string &path) { + if (String::endsWith(path, ".bz2") || String::endsWith(path, ".bzip2")) + return Compression::COMPRESSION_BZIP2; + if (String::endsWith(path, ".zlib")) return Compression::COMPRESSION_ZLIB; + if (String::endsWith(path, ".gz") || String::endsWith(path, ".gzip")) + return Compression::COMPRESSION_GZIP; + if (String::endsWith(path, ".lz4")) return Compression::COMPRESSION_LZ4; + + return Compression::COMPRESSION_NONE; + } + + + const char *compressionExtension(Compression compression) { + switch (compression) { + case Compression::COMPRESSION_BZIP2: return ".bz2"; + case Compression::COMPRESSION_ZLIB: return ".zlib"; + case Compression::COMPRESSION_GZIP: return ".gz"; + case Compression::COMPRESSION_LZ4: return ".lz4"; + case Compression::COMPRESSION_NONE: return ""; + case Compression::COMPRESSION_AUTO: break; + } + + THROW("Invalid compression type " << (unsigned)compression); + } +} diff --git a/src/cbang/comp/Compression.h b/src/cbang/comp/Compression.h new file mode 100644 index 000000000..45515765d --- /dev/null +++ b/src/cbang/comp/Compression.h @@ -0,0 +1,61 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#ifndef CBANG_ENUM +#ifndef CBANG_COMPRESSION_H +#define CBANG_COMPRESSION_H + +#define CBANG_ENUM_NAME Compression +#define CBANG_ENUM_NAMESPACE cb +#define CBANG_ENUM_PATH cbang/comp +#define CBANG_ENUM_PREFIX 12 +#include + +#include + +namespace cb { + Compression compressionFromPath(const std::string &path); + const char *compressionExtension(Compression compression); +} + +#endif // CBANG_COMPRESSION_H +#else // CBANG_ENUM + +// NOTE, don't change these values +CBANG_ENUM_VALUE(COMPRESSION_NONE, 0) +CBANG_ENUM_VALUE(COMPRESSION_BZIP2, 1) +CBANG_ENUM_VALUE(COMPRESSION_ZLIB, 2) +CBANG_ENUM_VALUE(COMPRESSION_GZIP, 3) +CBANG_ENUM_VALUE(COMPRESSION_LZ4, 4) +CBANG_ENUM_VALUE(COMPRESSION_AUTO, 255) + +#endif // CBANG_ENUM diff --git a/src/cbang/comp/CompressionFilter.h b/src/cbang/comp/CompressionFilter.h new file mode 100644 index 000000000..5cba941c5 --- /dev/null +++ b/src/cbang/comp/CompressionFilter.h @@ -0,0 +1,84 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Compression.h" +#include "BZip2Compressor.h" +#include "BZip2Decompressor.h" +#include "LZ4Compressor.h" +#include "LZ4Decompressor.h" + +#include +#include +#include +#include + + +namespace cb { + template + static inline void pushCompression(Compression compression, T &filter) { + switch (compression) { + case Compression::COMPRESSION_NONE: return; + case Compression::COMPRESSION_BZIP2: + return filter.push(BZip2Compressor()); + case Compression::COMPRESSION_GZIP: + return filter.push(io::gzip_compressor()); + case Compression::COMPRESSION_ZLIB: + return filter.push(io::zlib_compressor()); + case Compression::COMPRESSION_LZ4: + return filter.push(LZ4Compressor()); + case Compression::COMPRESSION_AUTO: break; + } + + CBANG_THROW("Invalid compression type " << compression); + } + + + template + static inline void pushDecompression(Compression compression, T &filter) { + switch (compression) { + case Compression::COMPRESSION_NONE: return; + case Compression::COMPRESSION_BZIP2: + return filter.push(BZip2Decompressor()); + case Compression::COMPRESSION_GZIP: + return filter.push(io::gzip_decompressor()); + case Compression::COMPRESSION_ZLIB: + return filter.push(io::zlib_decompressor()); + case Compression::COMPRESSION_LZ4: + return filter.push(LZ4Decompressor()); + case Compression::COMPRESSION_AUTO: break; + } + + CBANG_THROW("Invalid compression type " << compression); + } +} diff --git a/src/cbang/comp/LZ4Compressor.h b/src/cbang/comp/LZ4Compressor.h new file mode 100644 index 000000000..cbf165ecf --- /dev/null +++ b/src/cbang/comp/LZ4Compressor.h @@ -0,0 +1,175 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + +#include + + +namespace cb { + class LZ4Compressor { + class LZ4CompressorImpl { + LZ4F_cctx *ctx = 0; + + std::streamsize capacity = 4096; + std::streamsize fill = 0; + char *buffer = 0; + + public: + LZ4CompressorImpl() : buffer(new char[capacity]) { + auto err = LZ4F_createCompressionContext(&ctx, LZ4F_VERSION); + if (LZ4F_isError(err)) + CBANG_THROW("LZ4 error: " << LZ4F_getErrorName(err)); + + fill += LZ4F_compressBegin(ctx, buffer, capacity, 0); + } + + + ~LZ4CompressorImpl() { + if (buffer) delete [] buffer; + if (ctx) LZ4F_freeCompressionContext(ctx); + } + + + void reserve(std::streamsize space) { + if (capacity - fill < space) { + capacity = fill + space; + char *newBuf = new char[capacity]; + memcpy(newBuf, buffer, fill); + delete [] buffer; + buffer = newBuf; + } + } + + + template + std::streamsize read(Source &src, char *s, std::streamsize n) { + if (!n) return 0; + + while (fill < n) { + char in[4096]; + auto bytes = io::read(src, in, 4096); + + // Check for EOF + if (bytes < 0) { + std::streamsize space = LZ4F_compressBound(0, 0); + reserve(space); + fill += LZ4F_compressEnd(ctx, buffer + fill, space, 0); + break; + } + + // Make sure we have enough space to compress data + std::streamsize space = LZ4F_compressBound(bytes, 0); + reserve(space); + + // Compress + fill += LZ4F_compressUpdate(ctx, buffer + fill, space, in, bytes, 0); + } + + std::streamsize bytes = fill < n ? fill : n; + if (bytes) { + memcpy(s, buffer, bytes); + if (bytes < fill) memmove(buffer, buffer + fill, fill - bytes); + fill -= bytes; + } + + return bytes; + } + + + template + std::streamsize write(Sink &dest, const char *s, std::streamsize n) { + // Make sure we have enough space to compress data + std::streamsize space = LZ4F_compressBound(n, 0); + reserve(space); + + // Compress + fill += LZ4F_compressUpdate(ctx, buffer + fill, space, s, n, 0); + + // Write compressed data + std::streamsize bytes = io::write(dest, buffer, fill); + if (bytes < fill) memmove(buffer, buffer + bytes, fill - bytes); + fill -= bytes; + + return n; + } + + + template + void close(Sink &dest, BOOST_IOS::openmode m) { + if (!(m & BOOST_IOS::out)) return; + + // Make sure we have enough space + std::streamsize space = LZ4F_compressBound(0, 0); + reserve(space); + + // End compression + fill += LZ4F_compressEnd(ctx, buffer + fill, space, 0); + + std::streamsize bytes = io::write(dest, buffer, fill); + if (bytes < fill) + CBANG_THROW("Failed to write final LZ4 compression data"); + } + }; + + + SmartPointer impl; + + public: + typedef char char_type; + struct category : + io::dual_use, io::filter_tag, io::multichar_tag, io::closable_tag {}; + + + LZ4Compressor() : impl(new LZ4CompressorImpl) {} + + + template + std::streamsize read(Source &src, char *s, std::streamsize n) { + return impl->read(src, s, n); + } + + + template + std::streamsize write(Sink &dest, const char *s, std::streamsize n) { + return impl->write(dest, s, n); + } + + + template void close(Sink &dest, BOOST_IOS::openmode m) { + impl->close(dest, m); + } + }; +} diff --git a/src/cbang/comp/LZ4Decompressor.h b/src/cbang/comp/LZ4Decompressor.h new file mode 100644 index 000000000..9ed4f1363 --- /dev/null +++ b/src/cbang/comp/LZ4Decompressor.h @@ -0,0 +1,167 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include +#include + +#include + +#include + + +namespace cb { + class LZ4Decompressor { + class LZ4DecompressorImpl { + LZ4F_dctx *ctx = 0; + + std::streamsize capacity = 4096; + std::streamsize fill = 0; + char *buffer = 0; + bool done = false; + + public: + LZ4DecompressorImpl() : buffer(new char[capacity]) { + auto err = LZ4F_createDecompressionContext(&ctx, LZ4F_VERSION); + if (LZ4F_isError(err)) + CBANG_THROW("LZ4 error: " << LZ4F_getErrorName(err)); + } + + + ~LZ4DecompressorImpl() { + if (buffer) delete [] buffer; + if (ctx) LZ4F_freeDecompressionContext(ctx); + } + + + template + std::streamsize read(Source &src, char *s, std::streamsize n) { + if (!n) return 0; + + std::streamsize bytes = 0; + + while (n) { + // Read some data + std::streamsize space = capacity - fill; + if (space && !done) { + std::streamsize count = io::read(src, buffer + fill, space); + if (count == -1) done = true; + else fill += count; + } + + if (!fill) break; + + // Decompress + size_t bytesIn = fill; + size_t bytesOut = n; + LZ4F_decompress(ctx, s, &bytesOut, buffer, &bytesIn, 0); + + s += bytesOut; + n -= bytesOut; + bytes += bytesOut; + + fill -= bytesIn; + if (fill) memmove(buffer, buffer + bytesIn, fill); + } + + return bytes; + } + + + template + std::streamsize write(Sink &dest, const char *s, std::streamsize n) { + std::streamsize bytes = 0; + + while (n) { + // Decompress + size_t bytesIn = n; + size_t bytesOut = capacity - fill; + LZ4F_decompress(ctx, buffer + fill, &bytesOut, s, &bytesIn, 0); + + s += bytesIn; + n -= bytesIn; + bytes += bytesIn; + fill += bytesOut; + + // Write data + if (fill) { + std::streamsize count = io::write(dest, buffer, fill); + fill -= count; + if (fill) memmove(buffer, buffer + count, fill); + } + } + + return bytes; + } + + + template void close(Sink &dest, BOOST_IOS::openmode m) { + if (!(m & BOOST_IOS::out)) return; + + if (fill) { + std::streamsize count = io::write(dest, buffer, fill); + if (count < fill) + CBANG_THROW("Failed to write final LZ4 decompression data"); + } + } + }; + + SmartPointer impl; + + + public: + typedef char char_type; + struct category : + io::dual_use, io::filter_tag, io::multichar_tag, io::closable_tag {}; + + + LZ4Decompressor() : impl(new LZ4DecompressorImpl) {} + + + template + std::streamsize read(Source &src, char *s, std::streamsize n) { + return impl->read(src, s, n); + } + + + template + std::streamsize write(Sink &dest, const char *s, std::streamsize n) { + return impl->write(dest, s, n); + } + + + template void close(Sink &dest, BOOST_IOS::openmode m) { + impl->close(dest, m); + } + }; +} diff --git a/src/cbang/comp/Press.cpp b/src/cbang/comp/Press.cpp new file mode 100644 index 000000000..3630f1e63 --- /dev/null +++ b/src/cbang/comp/Press.cpp @@ -0,0 +1,64 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Press.h" +#include "CompressionFilter.h" + +#include + +#include + +using namespace cb; +using namespace std; + + +Press::Press(const string &type) : type(Compression::parse(type)) {} + + +string Press::operator()(const string &s, bool compress) const { + ostringstream ostr; + io::filtering_ostream filter; + + if (compress) pushCompression(type, filter); + else pushDecompression(type, filter); + + filter.push(ostr); + + filter << s; + filter.reset(); + + return ostr.str(); +} + + +string Press::compress (const string &s) const {return (*this)(s, true);} +string Press::decompress(const string &s) const {return (*this)(s, false);} diff --git a/src/cbang/comp/Press.h b/src/cbang/comp/Press.h new file mode 100644 index 000000000..209ca3161 --- /dev/null +++ b/src/cbang/comp/Press.h @@ -0,0 +1,51 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#pragma once + +#include "Compression.h" + + +namespace cb { + class Press { + Compression type; + + public: + Press(const std::string &type); + Press(Compression type) : type(type) {} + + std::string operator()(const std::string &s, bool compress = true) const; + + std::string compress (const std::string &s) const; + std::string decompress(const std::string &s) const; + }; +} diff --git a/src/cbang/comp/Tar.cpp b/src/cbang/comp/Tar.cpp new file mode 100644 index 000000000..f2f313a8c --- /dev/null +++ b/src/cbang/comp/Tar.cpp @@ -0,0 +1,167 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "Tar.h" + +#include + +#include + +using namespace std; +using namespace cb; + + +const char Tar::zero_block[512] = {0, }; + + +namespace { + streamsize compute_padding(streamsize size) { + return (size & 511) ? 512 - (size & 511) : 0; + } +} + + + +Tar::Tar(unsigned bufferSize) : + bufferSize(bufferSize), buf(new char[bufferSize]) {} + + +unsigned Tar::writeFile(const string &filename, ostream &dst, istream &src, + uint32_t mode) { + // Get stream size + src.seekg(0, ios::end); + streampos size = src.tellg(); + src.seekg(0, ios::beg); + + // Write header + setFilename(filename); + setSize(size); + setType(TarHeader::NORMAL_FILE); + setMode(mode); + writeHeader(dst); + + // Write data + return writeFileData(dst, src, (streamsize)size); +} + + +unsigned Tar::writeFile(const string &filename, ostream &dst, const char *data, + streamsize size, uint32_t mode) { + // Write header + setFilename(filename); + setSize(size); + setType(TarHeader::NORMAL_FILE); + setMode(mode); + writeHeader(dst); + + // Write data + return writeFileData(dst, data, size); +} + + +unsigned Tar::writeFileData(std::ostream &dst, std::istream &src, + streamsize size) { + streamsize n; + + while (true) { + src.read(buf.get(), bufferSize); + n = src.gcount(); + if (n) dst.write(buf.get(), n); + else break; + } + + // Pad with zeros + streamsize padding = compute_padding(size); + if (padding) dst.write(zero_block, padding); + + return size + padding; +} + + +unsigned Tar::writeFileData(std::ostream &dst, const char *data, + streamsize size) { + dst.write(data, size); + + // Pad with zeros + streamsize padding = compute_padding(size); + if (padding) dst.write(zero_block, padding); + + return size + padding; +} + + +unsigned Tar::writeDir(const string &name, ostream &dst, uint32_t mode) { + if (!name.length() || name[name.length() - 1] != '/') + setFilename(name + '/'); + else setFilename(name); + + setSize(0); + setType(TarHeader::DIRECTORY); + setMode(mode); + writeHeader(dst); + + return 512; +} + + +unsigned Tar::writeFooter(ostream &dst) { + dst.write(zero_block, 512); + dst.write(zero_block, 512); + + return 1024; +} + + +void Tar::readFile(ostream &dst, istream &src) { + streamsize size = getSize(); + streamsize padding = compute_padding(size); + streamsize n; + + while (size) { + unsigned bytes = min((unsigned)size, bufferSize); + src.read(buf.get(), bytes); + if (!(n = src.gcount())) + THROW("Error reading " << bytes << " bytes from tar file"); + + size -= n; + + dst.write(buf.get(), n); + if (dst.fail()) THROW(string("Failed to write '") + getFilename() + "'"); + } + + src.ignore(padding); +} + + +void Tar::skipFile(istream &src) { + src.ignore(getSize() + compute_padding(getSize())); +} diff --git a/src/cbang/tar/Tar.h b/src/cbang/comp/Tar.h similarity index 88% rename from src/cbang/tar/Tar.h rename to src/cbang/comp/Tar.h index 475254408..0ae9a43d2 100644 --- a/src/cbang/tar/Tar.h +++ b/src/cbang/comp/Tar.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -33,16 +33,21 @@ #pragma once #include "TarHeader.h" +#include "Compression.h" + +#include #include #include namespace cb { - class Tar : public TarHeader { + class Tar : public TarHeader, public Compression { public: static const char zero_block[512]; + unsigned bufferSize; + SmartPointer::Array buf; - Tar() {} + Tar(unsigned bufferSize = 1024 * 1024); /// NOTE: Automatically calls writeHeader() unsigned writeFile(const std::string &filename, std::ostream &dst, diff --git a/src/cbang/comp/TarFileReader.cpp b/src/cbang/comp/TarFileReader.cpp new file mode 100644 index 000000000..94116f0e2 --- /dev/null +++ b/src/cbang/comp/TarFileReader.cpp @@ -0,0 +1,138 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "TarFileReader.h" +#include "CompressionFilter.h" + +#include +#include +#include + +using namespace cb; +using namespace std; + + +struct TarFileReader::private_t { + io::filtering_istream filter; +}; + + +TarFileReader::TarFileReader(const string &path, Compression compression) : + pri(new private_t), stream(SystemUtilities::iopen(path)), + didReadHeader(false) { + + if (compression == COMPRESSION_AUTO) compression = compressionFromPath(path); + pushDecompression(compression, pri->filter); + pri->filter.push(*this->stream); +} + + +TarFileReader::TarFileReader(istream &stream, Compression compression) : + pri(new private_t), stream(SmartPointer::Phony(&stream)), + didReadHeader(false) { + + pushDecompression(compression, pri->filter); + pri->filter.push(*this->stream); +} + + +TarFileReader::~TarFileReader() {delete pri;} + + +bool TarFileReader::hasMore() { + if (!didReadHeader) { + SysError::clear(); + if (!readHeader(pri->filter)) + THROW("Tar file read failed: " << SysError()); + didReadHeader = true; + } + + return !isEOF(); +} + + +bool TarFileReader::next() { + if (didReadHeader) { + skipFile(pri->filter); + didReadHeader = false; + } + + return hasMore(); +} + + +std::string TarFileReader::extract(const string &_path) { + if (_path.empty()) THROW("path cannot be empty"); + if (!hasMore()) THROW("No more tar files"); + + string path = _path; + if (SystemUtilities::isDirectory(path)) { + path += "/" + getFilename(); + + // Check that path is under the target directory + string a = SystemUtilities::getCanonicalPath(_path); + string b = SystemUtilities::getCanonicalPath(path); + if (!String::startsWith(b, a + "/")) + THROW("Tar path points outside of the extraction directory: " << path); + } + + LOG_DEBUG(5, "Extracting: " << path); + + switch (getType()) { + case REG_FILE: case NORMAL_FILE: case CONTIGUOUS_FILE: + return extract(*SystemUtilities::oopen(path, getMode())); + + case DIRECTORY: + SystemUtilities::ensureDirectory(path); + didReadHeader = false; + break; + + default: THROW("Unsupported tar file type " << getType()); + } + + return getFilename(); +} + + +string TarFileReader::extract(ostream &out) { + if (!hasMore()) THROW("No more tar files"); + + readFile(out, pri->filter); + didReadHeader = false; + + return getFilename(); +} + + +void TarFileReader::extractAll(const string &path) { + while (next()) extract(path); +} diff --git a/src/cbang/tar/TarFileReader.h b/src/cbang/comp/TarFileReader.h similarity index 82% rename from src/cbang/tar/TarFileReader.h rename to src/cbang/comp/TarFileReader.h index 5bdd488ff..e1161e737 100644 --- a/src/cbang/tar/TarFileReader.h +++ b/src/cbang/comp/TarFileReader.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,7 +32,7 @@ #pragma once -#include "TarFile.h" +#include "Tar.h" #include @@ -41,7 +41,7 @@ namespace cb { - class TarFileReader : public TarFile { + class TarFileReader : public Tar { struct private_t; private_t *pri; SmartPointer stream; @@ -49,8 +49,9 @@ namespace cb { public: TarFileReader(const std::string &path, - compression_t compression = TARFILE_AUTO); - TarFileReader(std::istream &stream, compression_t compression); + Compression compression = COMPRESSION_AUTO); + TarFileReader(std::istream &stream, + Compression compression = COMPRESSION_NONE); ~TarFileReader(); bool hasMore(); @@ -58,8 +59,6 @@ namespace cb { std::string extract(const std::string &path = "."); std::string extract(std::ostream &out); - - protected: - void addCompression(compression_t compression); + void extractAll(const std::string &path = "."); }; } diff --git a/src/cbang/comp/TarFileWriter.cpp b/src/cbang/comp/TarFileWriter.cpp new file mode 100644 index 000000000..c00e43b35 --- /dev/null +++ b/src/cbang/comp/TarFileWriter.cpp @@ -0,0 +1,101 @@ +/******************************************************************************\ + + This file is part of the C! library. A.K.A the cbang library. + + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC + All rights reserved. + + The C! library is free software: you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation, either version 2.1 of + the License, or (at your option) any later version. + + The C! library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the C! library. If not, see + . + + In addition, BSD licensing may be granted on a case by case basis + by written permission from at least one of the copyright holders. + You may request written permission by emailing the authors. + + For information regarding this software email: + Joseph Coffland + joseph@cauldrondevelopment.com + +\******************************************************************************/ + +#include "TarFileWriter.h" +#include "CompressionFilter.h" + +#include + +using namespace cb; +using namespace std; + + +struct TarFileWriter::private_t { + io::filtering_ostream filter; +}; + + +TarFileWriter::TarFileWriter(const string &path, ios::openmode mode, + Compression compression) : + pri(new private_t), + stream(SystemUtilities::open(path, mode | ios::out)) { + + if (compression == COMPRESSION_AUTO) compression = compressionFromPath(path); + pushCompression(compression, pri->filter); + pri->filter.push(*this->stream); +} + + +TarFileWriter::TarFileWriter(ostream &stream, Compression compression) : + pri(new private_t), stream(SmartPointer::Phony(&stream)) { + + pushCompression(compression, pri->filter); + pri->filter.push(*this->stream); +} + + +TarFileWriter::~TarFileWriter() {delete pri;} + + +void TarFileWriter::add(const string &path, const string &filename, + uint32_t mode) { + uint64_t size = SystemUtilities::getFileSize(path); + + // TODO handle other file types (e.g. symlinks) + + add(*SystemUtilities::iopen(path), filename.empty() ? path : filename, size, + mode); +} + + +void TarFileWriter::add(istream &in, const string &filename, uint64_t size, + uint32_t mode) { + writeHeader(TarHeader::NORMAL_FILE, filename, size, mode); + writeFileData(pri->filter, in, size); +} + + +void TarFileWriter::add(const char *data, size_t size, const string &filename, + uint32_t mode) { + writeHeader(TarHeader::NORMAL_FILE, filename, size, mode); + writeFileData(pri->filter, data, size); +} + + +void TarFileWriter::writeHeader(type_t type, const string &filename, + uint64_t size, uint32_t mode) { + setType(type); + setFilename(filename); + setSize(size); + setMode(mode); + writeHeader(pri->filter); +} diff --git a/src/cbang/tar/TarFileWriter.h b/src/cbang/comp/TarFileWriter.h similarity index 83% rename from src/cbang/tar/TarFileWriter.h rename to src/cbang/comp/TarFileWriter.h index ad80df372..957693156 100644 --- a/src/cbang/tar/TarFileWriter.h +++ b/src/cbang/comp/TarFileWriter.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,25 +32,23 @@ #pragma once -#include "TarFile.h" - -#include -#include +#include "Tar.h" #include #include +#include namespace cb { - class TarFileWriter : public TarFile { + class TarFileWriter : public Tar { struct private_t; private_t *pri; SmartPointer stream; public: TarFileWriter(const std::string &path, std::ios::openmode mode, - int perm = 0644, compression_t compression = TARFILE_AUTO); - TarFileWriter(std::ostream &stream, compression_t compression); + Compression compression = COMPRESSION_AUTO); + TarFileWriter(std::ostream &stream, Compression compression); ~TarFileWriter(); void add(const std::string &path, @@ -65,6 +63,5 @@ namespace cb { protected: void writeHeader(type_t type, const std::string &filename, uint64_t size, uint32_t mode); - void addCompression(compression_t compression); }; } diff --git a/src/cbang/tar/TarHeader.cpp b/src/cbang/comp/TarHeader.cpp similarity index 83% rename from src/cbang/tar/TarHeader.cpp rename to src/cbang/comp/TarHeader.cpp index 203125528..e20138ec5 100644 --- a/src/cbang/tar/TarHeader.cpp +++ b/src/cbang/comp/TarHeader.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -34,24 +34,11 @@ #include -#include -#include -#include -#include -#include - -#ifndef PRIo32 -#define PRIo32 "o" -#endif - -#ifndef PRIo64 -#if defined(_M_X64) || (defined(__x86_64__) && !defined(__ILP32__)) || \ - defined(__aarch64__) || defined(__ppc64__) || defined(__PPC64__) -#define PRIo64 "lo" -#else -#define PRIo64 "llo" -#endif -#endif +#include +#include +#include +#include +#include using namespace std; @@ -69,6 +56,7 @@ static size_t __strnlen(const char *s, size_t limit) { TarHeader::TarHeader(const string &filename, uint64_t size) { + memset(this->filename, 0, 512); setFilename(filename); setMode(0644); setOwner(0); @@ -77,7 +65,8 @@ TarHeader::TarHeader(const string &filename, uint64_t size) { setModTime(time(0)); setType(NORMAL_FILE); setLinkName(""); - memset(reserved, 0, 255); + writeString("ustar", magic, 6); + writeNumber((uint32_t)0, version, 2); } @@ -119,7 +108,7 @@ void TarHeader::setModTime(uint64_t mod_time) { void TarHeader::setType(type_t type) { checksum_valid = false; - this->type[0] = (type & 7) + '0'; + this->type[0] = (char)type; } @@ -159,9 +148,7 @@ uint64_t TarHeader::getModTime() const { } -TarHeader::type_t TarHeader::getType() const { - return (type_t)(type[0] - '0'); -} +TarHeader::type_t TarHeader::getType() const {return (type_t)type[0];} const string TarHeader::getLinkName() const { @@ -207,6 +194,19 @@ bool TarHeader::read(istream &stream) { << " expected=" << sum); } + // Skip over PAX extended headers + if (getType() == PAX_EXTENDED || getType() == PAX_GLOBAL) { + unsigned blocks = (getSize() + 511) / 512; + + for (unsigned i = 0; i < blocks; i++) { + stream.read(filename, 512); + if (stream.gcount() != 512) + THROW("Tar file expected extended block"); + } + + return read(stream); + } + return true; } @@ -219,22 +219,20 @@ void TarHeader::write(ostream &stream) { void TarHeader::writeNumber(uint32_t n, char *buf, unsigned length) { - sprintf(buf, "%0*" PRIo32, length - 1, n); + snprintf(buf, length, "%0*" PRIo32, length - 1, n); } void TarHeader::writeNumber(uint64_t n, char *buf, unsigned length) { - sprintf(buf, "%0*" PRIo64, length - 1, n); + snprintf(buf, length, "%0*" PRIo64, length - 1, n); } -bool TarHeader::isEOF() const { - return readNumber(checksum, 6) == 0; -} +bool TarHeader::isEOF() const {return readNumber(checksum, 6) == 0;} void TarHeader::writeString(const string &s, char *buf, unsigned length) { - strncpy(buf, s.c_str(), length); + strncpy(buf, s.data(), length); for (unsigned i = s.length(); i < length; i++) buf[i] = 0; } diff --git a/src/cbang/tar/TarHeader.h b/src/cbang/comp/TarHeader.h similarity index 80% rename from src/cbang/tar/TarHeader.h rename to src/cbang/comp/TarHeader.h index a2f64d4da..48c629a3a 100644 --- a/src/cbang/tar/TarHeader.h +++ b/src/cbang/comp/TarHeader.h @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -32,21 +32,27 @@ #pragma once -#include #include #include +#include + + +// https://www.gnu.org/software/tar/manual/html_node/Standard.html namespace cb { struct TarHeader { enum type_t { - NORMAL_FILE, - HARD_LINK, - SYMBOLIC_LINK, - CHARACTER_DEV, - BLOCK_DEV, - DIRECTORY, - FIFO, - CONTIGUOUS_FILE, + REG_FILE = 0, + NORMAL_FILE = '0', + HARD_LINK = '1', + SYMBOLIC_LINK = '2', + CHARACTER_DEV = '3', + BLOCK_DEV = '4', + DIRECTORY = '5', + FIFO = '6', + CONTIGUOUS_FILE = '7', + PAX_EXTENDED = 'x', + PAX_GLOBAL = 'g', }; char filename[100]; @@ -58,7 +64,14 @@ namespace cb { char checksum[8]; char type[1]; char link_name[100]; - char reserved[255]; + char magic[6]; + char version[2]; + char uname[32]; + char gname[32]; + char devmajor[8]; + char devminor[8]; + char prefix[155]; + char reserved[12]; bool checksum_valid; diff --git a/src/cbang/config/CommandLine.cpp b/src/cbang/config/CommandLine.cpp index 9168e33d0..b133cd66e 100644 --- a/src/cbang/config/CommandLine.cpp +++ b/src/cbang/config/CommandLine.cpp @@ -2,8 +2,8 @@ This file is part of the C! library. A.K.A the cbang library. - Copyright (c) 2003-2019, Cauldron Development LLC - Copyright (c) 2003-2017, Stanford University + Copyright (c) 2021-2025, Cauldron Development Oy + Copyright (c) 2003-2021, Cauldron Development LLC All rights reserved. The C! library is free software: you can redistribute it and/or @@ -30,35 +30,30 @@ \******************************************************************************/ -#include +#include "CommandLine.h" #include - -#include +#include #include -#include +#include using namespace std; using namespace cb; -CommandLine::CommandLine() : - keywords(0), allowConfigAsFirstArg(false), allowSingleDashLongOpts(false), - allowExtraOpts(false), allowPositionalArgs(true), warnOnInvalidArgs(false), - showKeywordOpts(true) { - +CommandLine::CommandLine() { SmartPointer